class DenoStdInternalError extends Error { constructor(message){ super(message); this.name = "DenoStdInternalError"; } } function assert(expr, msg = "") { if (!expr) { throw new DenoStdInternalError(msg); } } function createLiteralTestFunction(value) { return (string)=>{ return string.startsWith(value) ? { value, length: value.length } : undefined; }; } function createMatchTestFunction(match) { return (string)=>{ const result = match.exec(string); if (result) return { value: result, length: result[0].length }; }; } [ { test: createLiteralTestFunction("yyyy"), fn: ()=>({ type: "year", value: "numeric" }) }, { test: createLiteralTestFunction("yy"), fn: ()=>({ type: "year", value: "2-digit" }) }, { test: createLiteralTestFunction("MM"), fn: ()=>({ type: "month", value: "2-digit" }) }, { test: createLiteralTestFunction("M"), fn: ()=>({ type: "month", value: "numeric" }) }, { test: createLiteralTestFunction("dd"), fn: ()=>({ type: "day", value: "2-digit" }) }, { test: createLiteralTestFunction("d"), fn: ()=>({ type: "day", value: "numeric" }) }, { test: createLiteralTestFunction("HH"), fn: ()=>({ type: "hour", value: "2-digit" }) }, { test: createLiteralTestFunction("H"), fn: ()=>({ type: "hour", value: "numeric" }) }, { test: createLiteralTestFunction("hh"), fn: ()=>({ type: "hour", value: "2-digit", hour12: true }) }, { test: createLiteralTestFunction("h"), fn: ()=>({ type: "hour", value: "numeric", hour12: true }) }, { test: createLiteralTestFunction("mm"), fn: ()=>({ type: "minute", value: "2-digit" }) }, { test: createLiteralTestFunction("m"), fn: ()=>({ type: "minute", value: "numeric" }) }, { test: createLiteralTestFunction("ss"), fn: ()=>({ type: "second", value: "2-digit" }) }, { test: createLiteralTestFunction("s"), fn: ()=>({ type: "second", value: "numeric" }) }, { test: createLiteralTestFunction("SSS"), fn: ()=>({ type: "fractionalSecond", value: 3 }) }, { test: createLiteralTestFunction("SS"), fn: ()=>({ type: "fractionalSecond", value: 2 }) }, { test: createLiteralTestFunction("S"), fn: ()=>({ type: "fractionalSecond", value: 1 }) }, { test: createLiteralTestFunction("a"), fn: (value)=>({ type: "dayPeriod", value: value }) }, { test: createMatchTestFunction(/^(')(?\\.|[^\']*)\1/), fn: (match)=>({ type: "literal", value: match.groups.value }) }, { test: createMatchTestFunction(/^.+?\s*/), fn: (match)=>({ type: "literal", value: match[0] }) }, ]; var Day; (function(Day) { Day[Day["Sun"] = 0] = "Sun"; Day[Day["Mon"] = 1] = "Mon"; Day[Day["Tue"] = 2] = "Tue"; Day[Day["Wed"] = 3] = "Wed"; Day[Day["Thu"] = 4] = "Thu"; Day[Day["Fri"] = 5] = "Fri"; Day[Day["Sat"] = 6] = "Sat"; })(Day || (Day = {})); var Status; (function(Status) { Status[Status["Continue"] = 100] = "Continue"; Status[Status["SwitchingProtocols"] = 101] = "SwitchingProtocols"; Status[Status["Processing"] = 102] = "Processing"; Status[Status["EarlyHints"] = 103] = "EarlyHints"; Status[Status["OK"] = 200] = "OK"; Status[Status["Created"] = 201] = "Created"; Status[Status["Accepted"] = 202] = "Accepted"; Status[Status["NonAuthoritativeInfo"] = 203] = "NonAuthoritativeInfo"; Status[Status["NoContent"] = 204] = "NoContent"; Status[Status["ResetContent"] = 205] = "ResetContent"; Status[Status["PartialContent"] = 206] = "PartialContent"; Status[Status["MultiStatus"] = 207] = "MultiStatus"; Status[Status["AlreadyReported"] = 208] = "AlreadyReported"; Status[Status["IMUsed"] = 226] = "IMUsed"; Status[Status["MultipleChoices"] = 300] = "MultipleChoices"; Status[Status["MovedPermanently"] = 301] = "MovedPermanently"; Status[Status["Found"] = 302] = "Found"; Status[Status["SeeOther"] = 303] = "SeeOther"; Status[Status["NotModified"] = 304] = "NotModified"; Status[Status["UseProxy"] = 305] = "UseProxy"; Status[Status["TemporaryRedirect"] = 307] = "TemporaryRedirect"; Status[Status["PermanentRedirect"] = 308] = "PermanentRedirect"; Status[Status["BadRequest"] = 400] = "BadRequest"; Status[Status["Unauthorized"] = 401] = "Unauthorized"; Status[Status["PaymentRequired"] = 402] = "PaymentRequired"; Status[Status["Forbidden"] = 403] = "Forbidden"; Status[Status["NotFound"] = 404] = "NotFound"; Status[Status["MethodNotAllowed"] = 405] = "MethodNotAllowed"; Status[Status["NotAcceptable"] = 406] = "NotAcceptable"; Status[Status["ProxyAuthRequired"] = 407] = "ProxyAuthRequired"; Status[Status["RequestTimeout"] = 408] = "RequestTimeout"; Status[Status["Conflict"] = 409] = "Conflict"; Status[Status["Gone"] = 410] = "Gone"; Status[Status["LengthRequired"] = 411] = "LengthRequired"; Status[Status["PreconditionFailed"] = 412] = "PreconditionFailed"; Status[Status["RequestEntityTooLarge"] = 413] = "RequestEntityTooLarge"; Status[Status["RequestURITooLong"] = 414] = "RequestURITooLong"; Status[Status["UnsupportedMediaType"] = 415] = "UnsupportedMediaType"; Status[Status["RequestedRangeNotSatisfiable"] = 416] = "RequestedRangeNotSatisfiable"; Status[Status["ExpectationFailed"] = 417] = "ExpectationFailed"; Status[Status["Teapot"] = 418] = "Teapot"; Status[Status["MisdirectedRequest"] = 421] = "MisdirectedRequest"; Status[Status["UnprocessableEntity"] = 422] = "UnprocessableEntity"; Status[Status["Locked"] = 423] = "Locked"; Status[Status["FailedDependency"] = 424] = "FailedDependency"; Status[Status["TooEarly"] = 425] = "TooEarly"; Status[Status["UpgradeRequired"] = 426] = "UpgradeRequired"; Status[Status["PreconditionRequired"] = 428] = "PreconditionRequired"; Status[Status["TooManyRequests"] = 429] = "TooManyRequests"; Status[Status["RequestHeaderFieldsTooLarge"] = 431] = "RequestHeaderFieldsTooLarge"; Status[Status["UnavailableForLegalReasons"] = 451] = "UnavailableForLegalReasons"; Status[Status["InternalServerError"] = 500] = "InternalServerError"; Status[Status["NotImplemented"] = 501] = "NotImplemented"; Status[Status["BadGateway"] = 502] = "BadGateway"; Status[Status["ServiceUnavailable"] = 503] = "ServiceUnavailable"; Status[Status["GatewayTimeout"] = 504] = "GatewayTimeout"; Status[Status["HTTPVersionNotSupported"] = 505] = "HTTPVersionNotSupported"; Status[Status["VariantAlsoNegotiates"] = 506] = "VariantAlsoNegotiates"; Status[Status["InsufficientStorage"] = 507] = "InsufficientStorage"; Status[Status["LoopDetected"] = 508] = "LoopDetected"; Status[Status["NotExtended"] = 510] = "NotExtended"; Status[Status["NetworkAuthenticationRequired"] = 511] = "NetworkAuthenticationRequired"; })(Status || (Status = {})); const STATUS_TEXT = { [Status.Accepted]: "Accepted", [Status.AlreadyReported]: "Already Reported", [Status.BadGateway]: "Bad Gateway", [Status.BadRequest]: "Bad Request", [Status.Conflict]: "Conflict", [Status.Continue]: "Continue", [Status.Created]: "Created", [Status.EarlyHints]: "Early Hints", [Status.ExpectationFailed]: "Expectation Failed", [Status.FailedDependency]: "Failed Dependency", [Status.Forbidden]: "Forbidden", [Status.Found]: "Found", [Status.GatewayTimeout]: "Gateway Timeout", [Status.Gone]: "Gone", [Status.HTTPVersionNotSupported]: "HTTP Version Not Supported", [Status.IMUsed]: "IM Used", [Status.InsufficientStorage]: "Insufficient Storage", [Status.InternalServerError]: "Internal Server Error", [Status.LengthRequired]: "Length Required", [Status.Locked]: "Locked", [Status.LoopDetected]: "Loop Detected", [Status.MethodNotAllowed]: "Method Not Allowed", [Status.MisdirectedRequest]: "Misdirected Request", [Status.MovedPermanently]: "Moved Permanently", [Status.MultiStatus]: "Multi Status", [Status.MultipleChoices]: "Multiple Choices", [Status.NetworkAuthenticationRequired]: "Network Authentication Required", [Status.NoContent]: "No Content", [Status.NonAuthoritativeInfo]: "Non Authoritative Info", [Status.NotAcceptable]: "Not Acceptable", [Status.NotExtended]: "Not Extended", [Status.NotFound]: "Not Found", [Status.NotImplemented]: "Not Implemented", [Status.NotModified]: "Not Modified", [Status.OK]: "OK", [Status.PartialContent]: "Partial Content", [Status.PaymentRequired]: "Payment Required", [Status.PermanentRedirect]: "Permanent Redirect", [Status.PreconditionFailed]: "Precondition Failed", [Status.PreconditionRequired]: "Precondition Required", [Status.Processing]: "Processing", [Status.ProxyAuthRequired]: "Proxy Auth Required", [Status.RequestEntityTooLarge]: "Request Entity Too Large", [Status.RequestHeaderFieldsTooLarge]: "Request Header Fields Too Large", [Status.RequestTimeout]: "Request Timeout", [Status.RequestURITooLong]: "Request URI Too Long", [Status.RequestedRangeNotSatisfiable]: "Requested Range Not Satisfiable", [Status.ResetContent]: "Reset Content", [Status.SeeOther]: "See Other", [Status.ServiceUnavailable]: "Service Unavailable", [Status.SwitchingProtocols]: "Switching Protocols", [Status.Teapot]: "I'm a teapot", [Status.TemporaryRedirect]: "Temporary Redirect", [Status.TooEarly]: "Too Early", [Status.TooManyRequests]: "Too Many Requests", [Status.Unauthorized]: "Unauthorized", [Status.UnavailableForLegalReasons]: "Unavailable For Legal Reasons", [Status.UnprocessableEntity]: "Unprocessable Entity", [Status.UnsupportedMediaType]: "Unsupported Media Type", [Status.UpgradeRequired]: "Upgrade Required", [Status.UseProxy]: "Use Proxy", [Status.VariantAlsoNegotiates]: "Variant Also Negotiates" }; function isClientErrorStatus(status) { return status >= 400 && status < 500; } const ERROR_STATUS_MAP = { "BadRequest": 400, "Unauthorized": 401, "PaymentRequired": 402, "Forbidden": 403, "NotFound": 404, "MethodNotAllowed": 405, "NotAcceptable": 406, "ProxyAuthRequired": 407, "RequestTimeout": 408, "Conflict": 409, "Gone": 410, "LengthRequired": 411, "PreconditionFailed": 412, "RequestEntityTooLarge": 413, "RequestURITooLong": 414, "UnsupportedMediaType": 415, "RequestedRangeNotSatisfiable": 416, "ExpectationFailed": 417, "Teapot": 418, "MisdirectedRequest": 421, "UnprocessableEntity": 422, "Locked": 423, "FailedDependency": 424, "UpgradeRequired": 426, "PreconditionRequired": 428, "TooManyRequests": 429, "RequestHeaderFieldsTooLarge": 431, "UnavailableForLegalReasons": 451, "InternalServerError": 500, "NotImplemented": 501, "BadGateway": 502, "ServiceUnavailable": 503, "GatewayTimeout": 504, "HTTPVersionNotSupported": 505, "VariantAlsoNegotiates": 506, "InsufficientStorage": 507, "LoopDetected": 508, "NotExtended": 510, "NetworkAuthenticationRequired": 511 }; class HttpError extends Error { constructor(message = "Http Error", options){ super(message, options); } get expose() { return false; } get status() { return Status.InternalServerError; } } function createHttpErrorConstructor(status) { const name = `${Status[status]}Error`; const ErrorCtor = class extends HttpError { #expose = isClientErrorStatus(status); constructor(message = STATUS_TEXT[status], options){ super(message, options); if (options?.expose) { this.#expose = true; } if (options?.expose === false) { this.#expose = false; } Object.defineProperty(this, "name", { configurable: true, enumerable: false, value: name, writable: true }); } get expose() { return this.#expose; } get status() { return status; } }; return ErrorCtor; } const errors = {}; for (const [key, value] of Object.entries(ERROR_STATUS_MAP)){ errors[key] = createHttpErrorConstructor(value); } function delay(ms, options = {}) { const { signal } = options; if (signal?.aborted) { return Promise.reject(new DOMException("Delay was aborted.", "AbortError")); } return new Promise((resolve, reject)=>{ const abort = ()=>{ clearTimeout(i); reject(new DOMException("Delay was aborted.", "AbortError")); }; const done = ()=>{ signal?.removeEventListener("abort", abort); resolve(); }; const i = setTimeout(done, ms); signal?.addEventListener("abort", abort, { once: true }); }); } const ERROR_SERVER_CLOSED = "Server closed"; const INITIAL_ACCEPT_BACKOFF_DELAY = 5; const MAX_ACCEPT_BACKOFF_DELAY = 1000; class Server { #port; #host; #handler; #closed = false; #listeners = new Set(); #httpConnections = new Set(); #onError; constructor(serverInit){ this.#port = serverInit.port; this.#host = serverInit.hostname; this.#handler = serverInit.handler; this.#onError = serverInit.onError ?? function(error) { console.error(error); return new Response("Internal Server Error", { status: 500 }); }; } async serve(listener) { if (this.#closed) { throw new Deno.errors.Http(ERROR_SERVER_CLOSED); } this.#trackListener(listener); try { return await this.#accept(listener); } finally{ this.#untrackListener(listener); try { listener.close(); } catch {} } } async listenAndServe() { if (this.#closed) { throw new Deno.errors.Http(ERROR_SERVER_CLOSED); } const listener = Deno.listen({ port: this.#port ?? 80, hostname: this.#host ?? "0.0.0.0", transport: "tcp" }); return await this.serve(listener); } async listenAndServeTls(certFile, keyFile) { if (this.#closed) { throw new Deno.errors.Http(ERROR_SERVER_CLOSED); } const listener = Deno.listenTls({ port: this.#port ?? 443, hostname: this.#host ?? "0.0.0.0", certFile, keyFile, transport: "tcp" }); return await this.serve(listener); } close() { if (this.#closed) { throw new Deno.errors.Http(ERROR_SERVER_CLOSED); } this.#closed = true; for (const listener of this.#listeners){ try { listener.close(); } catch {} } this.#listeners.clear(); for (const httpConn of this.#httpConnections){ this.#closeHttpConn(httpConn); } this.#httpConnections.clear(); } get closed() { return this.#closed; } get addrs() { return Array.from(this.#listeners).map((listener)=>listener.addr); } async #respond(requestEvent, httpConn, connInfo) { let response; try { response = await this.#handler(requestEvent.request, connInfo); } catch (error) { response = await this.#onError(error); } try { await requestEvent.respondWith(response); } catch { return this.#closeHttpConn(httpConn); } } async #serveHttp(httpConn1, connInfo1) { while(!this.#closed){ let requestEvent1; try { requestEvent1 = await httpConn1.nextRequest(); } catch { break; } if (requestEvent1 === null) { break; } this.#respond(requestEvent1, httpConn1, connInfo1); } this.#closeHttpConn(httpConn1); } async #accept(listener) { let acceptBackoffDelay; while(!this.#closed){ let conn; try { conn = await listener.accept(); } catch (error1) { if (error1 instanceof Deno.errors.BadResource || error1 instanceof Deno.errors.InvalidData || error1 instanceof Deno.errors.UnexpectedEof || error1 instanceof Deno.errors.ConnectionReset || error1 instanceof Deno.errors.NotConnected) { if (!acceptBackoffDelay) { acceptBackoffDelay = INITIAL_ACCEPT_BACKOFF_DELAY; } else { acceptBackoffDelay *= 2; } if (acceptBackoffDelay >= 1000) { acceptBackoffDelay = MAX_ACCEPT_BACKOFF_DELAY; } await delay(acceptBackoffDelay); continue; } throw error1; } acceptBackoffDelay = undefined; let httpConn2; try { httpConn2 = Deno.serveHttp(conn); } catch { continue; } this.#trackHttpConnection(httpConn2); const connInfo2 = { localAddr: conn.localAddr, remoteAddr: conn.remoteAddr }; this.#serveHttp(httpConn2, connInfo2); } } #closeHttpConn(httpConn3) { this.#untrackHttpConnection(httpConn3); try { httpConn3.close(); } catch {} } #trackListener(listener1) { this.#listeners.add(listener1); } #untrackListener(listener2) { this.#listeners.delete(listener2); } #trackHttpConnection(httpConn4) { this.#httpConnections.add(httpConn4); } #untrackHttpConnection(httpConn5) { this.#httpConnections.delete(httpConn5); } } function hostnameForDisplay(hostname) { return hostname === "0.0.0.0" ? "localhost" : hostname; } async function serve(handler, options = {}) { let port = options.port ?? 8000; const hostname = options.hostname ?? "0.0.0.0"; const server = new Server({ port, hostname, handler, onError: options.onError }); options?.signal?.addEventListener("abort", ()=>server.close(), { once: true }); const s = server.listenAndServe(); port = server.addrs[0].port; if ("onListen" in options) { options.onListen?.({ port, hostname }); } else { console.log(`Listening on http://${hostnameForDisplay(hostname)}:${port}/`); } return await s; } const __default = { "application/1d-interleaved-parityfec": { "source": "iana" }, "application/3gpdash-qoe-report+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/3gpp-ims+xml": { "source": "iana", "compressible": true }, "application/3gpphal+json": { "source": "iana", "compressible": true }, "application/3gpphalforms+json": { "source": "iana", "compressible": true }, "application/a2l": { "source": "iana" }, "application/ace+cbor": { "source": "iana" }, "application/activemessage": { "source": "iana" }, "application/activity+json": { "source": "iana", "compressible": true }, "application/alto-costmap+json": { "source": "iana", "compressible": true }, "application/alto-costmapfilter+json": { "source": "iana", "compressible": true }, "application/alto-directory+json": { "source": "iana", "compressible": true }, "application/alto-endpointcost+json": { "source": "iana", "compressible": true }, "application/alto-endpointcostparams+json": { "source": "iana", "compressible": true }, "application/alto-endpointprop+json": { "source": "iana", "compressible": true }, "application/alto-endpointpropparams+json": { "source": "iana", "compressible": true }, "application/alto-error+json": { "source": "iana", "compressible": true }, "application/alto-networkmap+json": { "source": "iana", "compressible": true }, "application/alto-networkmapfilter+json": { "source": "iana", "compressible": true }, "application/alto-updatestreamcontrol+json": { "source": "iana", "compressible": true }, "application/alto-updatestreamparams+json": { "source": "iana", "compressible": true }, "application/aml": { "source": "iana" }, "application/andrew-inset": { "source": "iana", "extensions": [ "ez" ] }, "application/applefile": { "source": "iana" }, "application/applixware": { "source": "apache", "extensions": [ "aw" ] }, "application/at+jwt": { "source": "iana" }, "application/atf": { "source": "iana" }, "application/atfx": { "source": "iana" }, "application/atom+xml": { "source": "iana", "compressible": true, "extensions": [ "atom" ] }, "application/atomcat+xml": { "source": "iana", "compressible": true, "extensions": [ "atomcat" ] }, "application/atomdeleted+xml": { "source": "iana", "compressible": true, "extensions": [ "atomdeleted" ] }, "application/atomicmail": { "source": "iana" }, "application/atomsvc+xml": { "source": "iana", "compressible": true, "extensions": [ "atomsvc" ] }, "application/atsc-dwd+xml": { "source": "iana", "compressible": true, "extensions": [ "dwd" ] }, "application/atsc-dynamic-event-message": { "source": "iana" }, "application/atsc-held+xml": { "source": "iana", "compressible": true, "extensions": [ "held" ] }, "application/atsc-rdt+json": { "source": "iana", "compressible": true }, "application/atsc-rsat+xml": { "source": "iana", "compressible": true, "extensions": [ "rsat" ] }, "application/atxml": { "source": "iana" }, "application/auth-policy+xml": { "source": "iana", "compressible": true }, "application/bacnet-xdd+zip": { "source": "iana", "compressible": false }, "application/batch-smtp": { "source": "iana" }, "application/bdoc": { "compressible": false, "extensions": [ "bdoc" ] }, "application/beep+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/calendar+json": { "source": "iana", "compressible": true }, "application/calendar+xml": { "source": "iana", "compressible": true, "extensions": [ "xcs" ] }, "application/call-completion": { "source": "iana" }, "application/cals-1840": { "source": "iana" }, "application/captive+json": { "source": "iana", "compressible": true }, "application/cbor": { "source": "iana" }, "application/cbor-seq": { "source": "iana" }, "application/cccex": { "source": "iana" }, "application/ccmp+xml": { "source": "iana", "compressible": true }, "application/ccxml+xml": { "source": "iana", "compressible": true, "extensions": [ "ccxml" ] }, "application/cdfx+xml": { "source": "iana", "compressible": true, "extensions": [ "cdfx" ] }, "application/cdmi-capability": { "source": "iana", "extensions": [ "cdmia" ] }, "application/cdmi-container": { "source": "iana", "extensions": [ "cdmic" ] }, "application/cdmi-domain": { "source": "iana", "extensions": [ "cdmid" ] }, "application/cdmi-object": { "source": "iana", "extensions": [ "cdmio" ] }, "application/cdmi-queue": { "source": "iana", "extensions": [ "cdmiq" ] }, "application/cdni": { "source": "iana" }, "application/cea": { "source": "iana" }, "application/cea-2018+xml": { "source": "iana", "compressible": true }, "application/cellml+xml": { "source": "iana", "compressible": true }, "application/cfw": { "source": "iana" }, "application/city+json": { "source": "iana", "compressible": true }, "application/clr": { "source": "iana" }, "application/clue+xml": { "source": "iana", "compressible": true }, "application/clue_info+xml": { "source": "iana", "compressible": true }, "application/cms": { "source": "iana" }, "application/cnrp+xml": { "source": "iana", "compressible": true }, "application/coap-group+json": { "source": "iana", "compressible": true }, "application/coap-payload": { "source": "iana" }, "application/commonground": { "source": "iana" }, "application/conference-info+xml": { "source": "iana", "compressible": true }, "application/cose": { "source": "iana" }, "application/cose-key": { "source": "iana" }, "application/cose-key-set": { "source": "iana" }, "application/cpl+xml": { "source": "iana", "compressible": true, "extensions": [ "cpl" ] }, "application/csrattrs": { "source": "iana" }, "application/csta+xml": { "source": "iana", "compressible": true }, "application/cstadata+xml": { "source": "iana", "compressible": true }, "application/csvm+json": { "source": "iana", "compressible": true }, "application/cu-seeme": { "source": "apache", "extensions": [ "cu" ] }, "application/cwt": { "source": "iana" }, "application/cybercash": { "source": "iana" }, "application/dart": { "compressible": true }, "application/dash+xml": { "source": "iana", "compressible": true, "extensions": [ "mpd" ] }, "application/dash-patch+xml": { "source": "iana", "compressible": true, "extensions": [ "mpp" ] }, "application/dashdelta": { "source": "iana" }, "application/davmount+xml": { "source": "iana", "compressible": true, "extensions": [ "davmount" ] }, "application/dca-rft": { "source": "iana" }, "application/dcd": { "source": "iana" }, "application/dec-dx": { "source": "iana" }, "application/dialog-info+xml": { "source": "iana", "compressible": true }, "application/dicom": { "source": "iana" }, "application/dicom+json": { "source": "iana", "compressible": true }, "application/dicom+xml": { "source": "iana", "compressible": true }, "application/dii": { "source": "iana" }, "application/dit": { "source": "iana" }, "application/dns": { "source": "iana" }, "application/dns+json": { "source": "iana", "compressible": true }, "application/dns-message": { "source": "iana" }, "application/docbook+xml": { "source": "apache", "compressible": true, "extensions": [ "dbk" ] }, "application/dots+cbor": { "source": "iana" }, "application/dskpp+xml": { "source": "iana", "compressible": true }, "application/dssc+der": { "source": "iana", "extensions": [ "dssc" ] }, "application/dssc+xml": { "source": "iana", "compressible": true, "extensions": [ "xdssc" ] }, "application/dvcs": { "source": "iana" }, "application/ecmascript": { "source": "iana", "compressible": true, "extensions": [ "es", "ecma" ] }, "application/edi-consent": { "source": "iana" }, "application/edi-x12": { "source": "iana", "compressible": false }, "application/edifact": { "source": "iana", "compressible": false }, "application/efi": { "source": "iana" }, "application/elm+json": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/elm+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.cap+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/emergencycalldata.comment+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.control+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.deviceinfo+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.ecall.msd": { "source": "iana" }, "application/emergencycalldata.providerinfo+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.serviceinfo+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.subscriberinfo+xml": { "source": "iana", "compressible": true }, "application/emergencycalldata.veds+xml": { "source": "iana", "compressible": true }, "application/emma+xml": { "source": "iana", "compressible": true, "extensions": [ "emma" ] }, "application/emotionml+xml": { "source": "iana", "compressible": true, "extensions": [ "emotionml" ] }, "application/encaprtp": { "source": "iana" }, "application/epp+xml": { "source": "iana", "compressible": true }, "application/epub+zip": { "source": "iana", "compressible": false, "extensions": [ "epub" ] }, "application/eshop": { "source": "iana" }, "application/exi": { "source": "iana", "extensions": [ "exi" ] }, "application/expect-ct-report+json": { "source": "iana", "compressible": true }, "application/express": { "source": "iana", "extensions": [ "exp" ] }, "application/fastinfoset": { "source": "iana" }, "application/fastsoap": { "source": "iana" }, "application/fdt+xml": { "source": "iana", "compressible": true, "extensions": [ "fdt" ] }, "application/fhir+json": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/fhir+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/fido.trusted-apps+json": { "compressible": true }, "application/fits": { "source": "iana" }, "application/flexfec": { "source": "iana" }, "application/font-sfnt": { "source": "iana" }, "application/font-tdpfr": { "source": "iana", "extensions": [ "pfr" ] }, "application/font-woff": { "source": "iana", "compressible": false }, "application/framework-attributes+xml": { "source": "iana", "compressible": true }, "application/geo+json": { "source": "iana", "compressible": true, "extensions": [ "geojson" ] }, "application/geo+json-seq": { "source": "iana" }, "application/geopackage+sqlite3": { "source": "iana" }, "application/geoxacml+xml": { "source": "iana", "compressible": true }, "application/gltf-buffer": { "source": "iana" }, "application/gml+xml": { "source": "iana", "compressible": true, "extensions": [ "gml" ] }, "application/gpx+xml": { "source": "apache", "compressible": true, "extensions": [ "gpx" ] }, "application/gxf": { "source": "apache", "extensions": [ "gxf" ] }, "application/gzip": { "source": "iana", "compressible": false, "extensions": [ "gz" ] }, "application/h224": { "source": "iana" }, "application/held+xml": { "source": "iana", "compressible": true }, "application/hjson": { "extensions": [ "hjson" ] }, "application/http": { "source": "iana" }, "application/hyperstudio": { "source": "iana", "extensions": [ "stk" ] }, "application/ibe-key-request+xml": { "source": "iana", "compressible": true }, "application/ibe-pkg-reply+xml": { "source": "iana", "compressible": true }, "application/ibe-pp-data": { "source": "iana" }, "application/iges": { "source": "iana" }, "application/im-iscomposing+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/index": { "source": "iana" }, "application/index.cmd": { "source": "iana" }, "application/index.obj": { "source": "iana" }, "application/index.response": { "source": "iana" }, "application/index.vnd": { "source": "iana" }, "application/inkml+xml": { "source": "iana", "compressible": true, "extensions": [ "ink", "inkml" ] }, "application/iotp": { "source": "iana" }, "application/ipfix": { "source": "iana", "extensions": [ "ipfix" ] }, "application/ipp": { "source": "iana" }, "application/isup": { "source": "iana" }, "application/its+xml": { "source": "iana", "compressible": true, "extensions": [ "its" ] }, "application/java-archive": { "source": "apache", "compressible": false, "extensions": [ "jar", "war", "ear" ] }, "application/java-serialized-object": { "source": "apache", "compressible": false, "extensions": [ "ser" ] }, "application/java-vm": { "source": "apache", "compressible": false, "extensions": [ "class" ] }, "application/javascript": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "js", "mjs" ] }, "application/jf2feed+json": { "source": "iana", "compressible": true }, "application/jose": { "source": "iana" }, "application/jose+json": { "source": "iana", "compressible": true }, "application/jrd+json": { "source": "iana", "compressible": true }, "application/jscalendar+json": { "source": "iana", "compressible": true }, "application/json": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "json", "map" ] }, "application/json-patch+json": { "source": "iana", "compressible": true }, "application/json-seq": { "source": "iana" }, "application/json5": { "extensions": [ "json5" ] }, "application/jsonml+json": { "source": "apache", "compressible": true, "extensions": [ "jsonml" ] }, "application/jwk+json": { "source": "iana", "compressible": true }, "application/jwk-set+json": { "source": "iana", "compressible": true }, "application/jwt": { "source": "iana" }, "application/kpml-request+xml": { "source": "iana", "compressible": true }, "application/kpml-response+xml": { "source": "iana", "compressible": true }, "application/ld+json": { "source": "iana", "compressible": true, "extensions": [ "jsonld" ] }, "application/lgr+xml": { "source": "iana", "compressible": true, "extensions": [ "lgr" ] }, "application/link-format": { "source": "iana" }, "application/load-control+xml": { "source": "iana", "compressible": true }, "application/lost+xml": { "source": "iana", "compressible": true, "extensions": [ "lostxml" ] }, "application/lostsync+xml": { "source": "iana", "compressible": true }, "application/lpf+zip": { "source": "iana", "compressible": false }, "application/lxf": { "source": "iana" }, "application/mac-binhex40": { "source": "iana", "extensions": [ "hqx" ] }, "application/mac-compactpro": { "source": "apache", "extensions": [ "cpt" ] }, "application/macwriteii": { "source": "iana" }, "application/mads+xml": { "source": "iana", "compressible": true, "extensions": [ "mads" ] }, "application/manifest+json": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "webmanifest" ] }, "application/marc": { "source": "iana", "extensions": [ "mrc" ] }, "application/marcxml+xml": { "source": "iana", "compressible": true, "extensions": [ "mrcx" ] }, "application/mathematica": { "source": "iana", "extensions": [ "ma", "nb", "mb" ] }, "application/mathml+xml": { "source": "iana", "compressible": true, "extensions": [ "mathml" ] }, "application/mathml-content+xml": { "source": "iana", "compressible": true }, "application/mathml-presentation+xml": { "source": "iana", "compressible": true }, "application/mbms-associated-procedure-description+xml": { "source": "iana", "compressible": true }, "application/mbms-deregister+xml": { "source": "iana", "compressible": true }, "application/mbms-envelope+xml": { "source": "iana", "compressible": true }, "application/mbms-msk+xml": { "source": "iana", "compressible": true }, "application/mbms-msk-response+xml": { "source": "iana", "compressible": true }, "application/mbms-protection-description+xml": { "source": "iana", "compressible": true }, "application/mbms-reception-report+xml": { "source": "iana", "compressible": true }, "application/mbms-register+xml": { "source": "iana", "compressible": true }, "application/mbms-register-response+xml": { "source": "iana", "compressible": true }, "application/mbms-schedule+xml": { "source": "iana", "compressible": true }, "application/mbms-user-service-description+xml": { "source": "iana", "compressible": true }, "application/mbox": { "source": "iana", "extensions": [ "mbox" ] }, "application/media-policy-dataset+xml": { "source": "iana", "compressible": true, "extensions": [ "mpf" ] }, "application/media_control+xml": { "source": "iana", "compressible": true }, "application/mediaservercontrol+xml": { "source": "iana", "compressible": true, "extensions": [ "mscml" ] }, "application/merge-patch+json": { "source": "iana", "compressible": true }, "application/metalink+xml": { "source": "apache", "compressible": true, "extensions": [ "metalink" ] }, "application/metalink4+xml": { "source": "iana", "compressible": true, "extensions": [ "meta4" ] }, "application/mets+xml": { "source": "iana", "compressible": true, "extensions": [ "mets" ] }, "application/mf4": { "source": "iana" }, "application/mikey": { "source": "iana" }, "application/mipc": { "source": "iana" }, "application/missing-blocks+cbor-seq": { "source": "iana" }, "application/mmt-aei+xml": { "source": "iana", "compressible": true, "extensions": [ "maei" ] }, "application/mmt-usd+xml": { "source": "iana", "compressible": true, "extensions": [ "musd" ] }, "application/mods+xml": { "source": "iana", "compressible": true, "extensions": [ "mods" ] }, "application/moss-keys": { "source": "iana" }, "application/moss-signature": { "source": "iana" }, "application/mosskey-data": { "source": "iana" }, "application/mosskey-request": { "source": "iana" }, "application/mp21": { "source": "iana", "extensions": [ "m21", "mp21" ] }, "application/mp4": { "source": "iana", "extensions": [ "mp4s", "m4p" ] }, "application/mpeg4-generic": { "source": "iana" }, "application/mpeg4-iod": { "source": "iana" }, "application/mpeg4-iod-xmt": { "source": "iana" }, "application/mrb-consumer+xml": { "source": "iana", "compressible": true }, "application/mrb-publish+xml": { "source": "iana", "compressible": true }, "application/msc-ivr+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/msc-mixer+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/msword": { "source": "iana", "compressible": false, "extensions": [ "doc", "dot" ] }, "application/mud+json": { "source": "iana", "compressible": true }, "application/multipart-core": { "source": "iana" }, "application/mxf": { "source": "iana", "extensions": [ "mxf" ] }, "application/n-quads": { "source": "iana", "extensions": [ "nq" ] }, "application/n-triples": { "source": "iana", "extensions": [ "nt" ] }, "application/nasdata": { "source": "iana" }, "application/news-checkgroups": { "source": "iana", "charset": "US-ASCII" }, "application/news-groupinfo": { "source": "iana", "charset": "US-ASCII" }, "application/news-transmission": { "source": "iana" }, "application/nlsml+xml": { "source": "iana", "compressible": true }, "application/node": { "source": "iana", "extensions": [ "cjs" ] }, "application/nss": { "source": "iana" }, "application/oauth-authz-req+jwt": { "source": "iana" }, "application/oblivious-dns-message": { "source": "iana" }, "application/ocsp-request": { "source": "iana" }, "application/ocsp-response": { "source": "iana" }, "application/octet-stream": { "source": "iana", "compressible": false, "extensions": [ "bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer" ] }, "application/oda": { "source": "iana", "extensions": [ "oda" ] }, "application/odm+xml": { "source": "iana", "compressible": true }, "application/odx": { "source": "iana" }, "application/oebps-package+xml": { "source": "iana", "compressible": true, "extensions": [ "opf" ] }, "application/ogg": { "source": "iana", "compressible": false, "extensions": [ "ogx" ] }, "application/omdoc+xml": { "source": "apache", "compressible": true, "extensions": [ "omdoc" ] }, "application/onenote": { "source": "apache", "extensions": [ "onetoc", "onetoc2", "onetmp", "onepkg" ] }, "application/opc-nodeset+xml": { "source": "iana", "compressible": true }, "application/oscore": { "source": "iana" }, "application/oxps": { "source": "iana", "extensions": [ "oxps" ] }, "application/p21": { "source": "iana" }, "application/p21+zip": { "source": "iana", "compressible": false }, "application/p2p-overlay+xml": { "source": "iana", "compressible": true, "extensions": [ "relo" ] }, "application/parityfec": { "source": "iana" }, "application/passport": { "source": "iana" }, "application/patch-ops-error+xml": { "source": "iana", "compressible": true, "extensions": [ "xer" ] }, "application/pdf": { "source": "iana", "compressible": false, "extensions": [ "pdf" ] }, "application/pdx": { "source": "iana" }, "application/pem-certificate-chain": { "source": "iana" }, "application/pgp-encrypted": { "source": "iana", "compressible": false, "extensions": [ "pgp" ] }, "application/pgp-keys": { "source": "iana", "extensions": [ "asc" ] }, "application/pgp-signature": { "source": "iana", "extensions": [ "asc", "sig" ] }, "application/pics-rules": { "source": "apache", "extensions": [ "prf" ] }, "application/pidf+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/pidf-diff+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/pkcs10": { "source": "iana", "extensions": [ "p10" ] }, "application/pkcs12": { "source": "iana" }, "application/pkcs7-mime": { "source": "iana", "extensions": [ "p7m", "p7c" ] }, "application/pkcs7-signature": { "source": "iana", "extensions": [ "p7s" ] }, "application/pkcs8": { "source": "iana", "extensions": [ "p8" ] }, "application/pkcs8-encrypted": { "source": "iana" }, "application/pkix-attr-cert": { "source": "iana", "extensions": [ "ac" ] }, "application/pkix-cert": { "source": "iana", "extensions": [ "cer" ] }, "application/pkix-crl": { "source": "iana", "extensions": [ "crl" ] }, "application/pkix-pkipath": { "source": "iana", "extensions": [ "pkipath" ] }, "application/pkixcmp": { "source": "iana", "extensions": [ "pki" ] }, "application/pls+xml": { "source": "iana", "compressible": true, "extensions": [ "pls" ] }, "application/poc-settings+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/postscript": { "source": "iana", "compressible": true, "extensions": [ "ai", "eps", "ps" ] }, "application/ppsp-tracker+json": { "source": "iana", "compressible": true }, "application/problem+json": { "source": "iana", "compressible": true }, "application/problem+xml": { "source": "iana", "compressible": true }, "application/provenance+xml": { "source": "iana", "compressible": true, "extensions": [ "provx" ] }, "application/prs.alvestrand.titrax-sheet": { "source": "iana" }, "application/prs.cww": { "source": "iana", "extensions": [ "cww" ] }, "application/prs.cyn": { "source": "iana", "charset": "7-BIT" }, "application/prs.hpub+zip": { "source": "iana", "compressible": false }, "application/prs.nprend": { "source": "iana" }, "application/prs.plucker": { "source": "iana" }, "application/prs.rdf-xml-crypt": { "source": "iana" }, "application/prs.xsf+xml": { "source": "iana", "compressible": true }, "application/pskc+xml": { "source": "iana", "compressible": true, "extensions": [ "pskcxml" ] }, "application/pvd+json": { "source": "iana", "compressible": true }, "application/qsig": { "source": "iana" }, "application/raml+yaml": { "compressible": true, "extensions": [ "raml" ] }, "application/raptorfec": { "source": "iana" }, "application/rdap+json": { "source": "iana", "compressible": true }, "application/rdf+xml": { "source": "iana", "compressible": true, "extensions": [ "rdf", "owl" ] }, "application/reginfo+xml": { "source": "iana", "compressible": true, "extensions": [ "rif" ] }, "application/relax-ng-compact-syntax": { "source": "iana", "extensions": [ "rnc" ] }, "application/remote-printing": { "source": "iana" }, "application/reputon+json": { "source": "iana", "compressible": true }, "application/resource-lists+xml": { "source": "iana", "compressible": true, "extensions": [ "rl" ] }, "application/resource-lists-diff+xml": { "source": "iana", "compressible": true, "extensions": [ "rld" ] }, "application/rfc+xml": { "source": "iana", "compressible": true }, "application/riscos": { "source": "iana" }, "application/rlmi+xml": { "source": "iana", "compressible": true }, "application/rls-services+xml": { "source": "iana", "compressible": true, "extensions": [ "rs" ] }, "application/route-apd+xml": { "source": "iana", "compressible": true, "extensions": [ "rapd" ] }, "application/route-s-tsid+xml": { "source": "iana", "compressible": true, "extensions": [ "sls" ] }, "application/route-usd+xml": { "source": "iana", "compressible": true, "extensions": [ "rusd" ] }, "application/rpki-ghostbusters": { "source": "iana", "extensions": [ "gbr" ] }, "application/rpki-manifest": { "source": "iana", "extensions": [ "mft" ] }, "application/rpki-publication": { "source": "iana" }, "application/rpki-roa": { "source": "iana", "extensions": [ "roa" ] }, "application/rpki-updown": { "source": "iana" }, "application/rsd+xml": { "source": "apache", "compressible": true, "extensions": [ "rsd" ] }, "application/rss+xml": { "source": "apache", "compressible": true, "extensions": [ "rss" ] }, "application/rtf": { "source": "iana", "compressible": true, "extensions": [ "rtf" ] }, "application/rtploopback": { "source": "iana" }, "application/rtx": { "source": "iana" }, "application/samlassertion+xml": { "source": "iana", "compressible": true }, "application/samlmetadata+xml": { "source": "iana", "compressible": true }, "application/sarif+json": { "source": "iana", "compressible": true }, "application/sarif-external-properties+json": { "source": "iana", "compressible": true }, "application/sbe": { "source": "iana" }, "application/sbml+xml": { "source": "iana", "compressible": true, "extensions": [ "sbml" ] }, "application/scaip+xml": { "source": "iana", "compressible": true }, "application/scim+json": { "source": "iana", "compressible": true }, "application/scvp-cv-request": { "source": "iana", "extensions": [ "scq" ] }, "application/scvp-cv-response": { "source": "iana", "extensions": [ "scs" ] }, "application/scvp-vp-request": { "source": "iana", "extensions": [ "spq" ] }, "application/scvp-vp-response": { "source": "iana", "extensions": [ "spp" ] }, "application/sdp": { "source": "iana", "extensions": [ "sdp" ] }, "application/secevent+jwt": { "source": "iana" }, "application/senml+cbor": { "source": "iana" }, "application/senml+json": { "source": "iana", "compressible": true }, "application/senml+xml": { "source": "iana", "compressible": true, "extensions": [ "senmlx" ] }, "application/senml-etch+cbor": { "source": "iana" }, "application/senml-etch+json": { "source": "iana", "compressible": true }, "application/senml-exi": { "source": "iana" }, "application/sensml+cbor": { "source": "iana" }, "application/sensml+json": { "source": "iana", "compressible": true }, "application/sensml+xml": { "source": "iana", "compressible": true, "extensions": [ "sensmlx" ] }, "application/sensml-exi": { "source": "iana" }, "application/sep+xml": { "source": "iana", "compressible": true }, "application/sep-exi": { "source": "iana" }, "application/session-info": { "source": "iana" }, "application/set-payment": { "source": "iana" }, "application/set-payment-initiation": { "source": "iana", "extensions": [ "setpay" ] }, "application/set-registration": { "source": "iana" }, "application/set-registration-initiation": { "source": "iana", "extensions": [ "setreg" ] }, "application/sgml": { "source": "iana" }, "application/sgml-open-catalog": { "source": "iana" }, "application/shf+xml": { "source": "iana", "compressible": true, "extensions": [ "shf" ] }, "application/sieve": { "source": "iana", "extensions": [ "siv", "sieve" ] }, "application/simple-filter+xml": { "source": "iana", "compressible": true }, "application/simple-message-summary": { "source": "iana" }, "application/simplesymbolcontainer": { "source": "iana" }, "application/sipc": { "source": "iana" }, "application/slate": { "source": "iana" }, "application/smil": { "source": "iana" }, "application/smil+xml": { "source": "iana", "compressible": true, "extensions": [ "smi", "smil" ] }, "application/smpte336m": { "source": "iana" }, "application/soap+fastinfoset": { "source": "iana" }, "application/soap+xml": { "source": "iana", "compressible": true }, "application/sparql-query": { "source": "iana", "extensions": [ "rq" ] }, "application/sparql-results+xml": { "source": "iana", "compressible": true, "extensions": [ "srx" ] }, "application/spdx+json": { "source": "iana", "compressible": true }, "application/spirits-event+xml": { "source": "iana", "compressible": true }, "application/sql": { "source": "iana" }, "application/srgs": { "source": "iana", "extensions": [ "gram" ] }, "application/srgs+xml": { "source": "iana", "compressible": true, "extensions": [ "grxml" ] }, "application/sru+xml": { "source": "iana", "compressible": true, "extensions": [ "sru" ] }, "application/ssdl+xml": { "source": "apache", "compressible": true, "extensions": [ "ssdl" ] }, "application/ssml+xml": { "source": "iana", "compressible": true, "extensions": [ "ssml" ] }, "application/stix+json": { "source": "iana", "compressible": true }, "application/swid+xml": { "source": "iana", "compressible": true, "extensions": [ "swidtag" ] }, "application/tamp-apex-update": { "source": "iana" }, "application/tamp-apex-update-confirm": { "source": "iana" }, "application/tamp-community-update": { "source": "iana" }, "application/tamp-community-update-confirm": { "source": "iana" }, "application/tamp-error": { "source": "iana" }, "application/tamp-sequence-adjust": { "source": "iana" }, "application/tamp-sequence-adjust-confirm": { "source": "iana" }, "application/tamp-status-query": { "source": "iana" }, "application/tamp-status-response": { "source": "iana" }, "application/tamp-update": { "source": "iana" }, "application/tamp-update-confirm": { "source": "iana" }, "application/tar": { "compressible": true }, "application/taxii+json": { "source": "iana", "compressible": true }, "application/td+json": { "source": "iana", "compressible": true }, "application/tei+xml": { "source": "iana", "compressible": true, "extensions": [ "tei", "teicorpus" ] }, "application/tetra_isi": { "source": "iana" }, "application/thraud+xml": { "source": "iana", "compressible": true, "extensions": [ "tfi" ] }, "application/timestamp-query": { "source": "iana" }, "application/timestamp-reply": { "source": "iana" }, "application/timestamped-data": { "source": "iana", "extensions": [ "tsd" ] }, "application/tlsrpt+gzip": { "source": "iana" }, "application/tlsrpt+json": { "source": "iana", "compressible": true }, "application/tnauthlist": { "source": "iana" }, "application/token-introspection+jwt": { "source": "iana" }, "application/toml": { "compressible": true, "extensions": [ "toml" ] }, "application/trickle-ice-sdpfrag": { "source": "iana" }, "application/trig": { "source": "iana", "extensions": [ "trig" ] }, "application/ttml+xml": { "source": "iana", "compressible": true, "extensions": [ "ttml" ] }, "application/tve-trigger": { "source": "iana" }, "application/tzif": { "source": "iana" }, "application/tzif-leap": { "source": "iana" }, "application/ubjson": { "compressible": false, "extensions": [ "ubj" ] }, "application/ulpfec": { "source": "iana" }, "application/urc-grpsheet+xml": { "source": "iana", "compressible": true }, "application/urc-ressheet+xml": { "source": "iana", "compressible": true, "extensions": [ "rsheet" ] }, "application/urc-targetdesc+xml": { "source": "iana", "compressible": true, "extensions": [ "td" ] }, "application/urc-uisocketdesc+xml": { "source": "iana", "compressible": true }, "application/vcard+json": { "source": "iana", "compressible": true }, "application/vcard+xml": { "source": "iana", "compressible": true }, "application/vemmi": { "source": "iana" }, "application/vividence.scriptfile": { "source": "apache" }, "application/vnd.1000minds.decision-model+xml": { "source": "iana", "compressible": true, "extensions": [ "1km" ] }, "application/vnd.3gpp-prose+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp-prose-pc3ch+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp-v2x-local-service-information": { "source": "iana" }, "application/vnd.3gpp.5gnas": { "source": "iana" }, "application/vnd.3gpp.access-transfer-events+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.bsf+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.gmop+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.gtpc": { "source": "iana" }, "application/vnd.3gpp.interworking-data": { "source": "iana" }, "application/vnd.3gpp.lpp": { "source": "iana" }, "application/vnd.3gpp.mc-signalling-ear": { "source": "iana" }, "application/vnd.3gpp.mcdata-affiliation-command+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcdata-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcdata-payload": { "source": "iana" }, "application/vnd.3gpp.mcdata-service-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcdata-signalling": { "source": "iana" }, "application/vnd.3gpp.mcdata-ue-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcdata-user-profile+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-affiliation-command+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-floor-request+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-location-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-service-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-signed+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-ue-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-ue-init-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcptt-user-profile+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-affiliation-command+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-affiliation-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-location-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-service-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-transmission-request+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-ue-config+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mcvideo-user-profile+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.mid-call+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.ngap": { "source": "iana" }, "application/vnd.3gpp.pfcp": { "source": "iana" }, "application/vnd.3gpp.pic-bw-large": { "source": "iana", "extensions": [ "plb" ] }, "application/vnd.3gpp.pic-bw-small": { "source": "iana", "extensions": [ "psb" ] }, "application/vnd.3gpp.pic-bw-var": { "source": "iana", "extensions": [ "pvb" ] }, "application/vnd.3gpp.s1ap": { "source": "iana" }, "application/vnd.3gpp.sms": { "source": "iana" }, "application/vnd.3gpp.sms+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.srvcc-ext+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.srvcc-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.state-and-event-info+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp.ussd+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp2.bcmcsinfo+xml": { "source": "iana", "compressible": true }, "application/vnd.3gpp2.sms": { "source": "iana" }, "application/vnd.3gpp2.tcap": { "source": "iana", "extensions": [ "tcap" ] }, "application/vnd.3lightssoftware.imagescal": { "source": "iana" }, "application/vnd.3m.post-it-notes": { "source": "iana", "extensions": [ "pwn" ] }, "application/vnd.accpac.simply.aso": { "source": "iana", "extensions": [ "aso" ] }, "application/vnd.accpac.simply.imp": { "source": "iana", "extensions": [ "imp" ] }, "application/vnd.acucobol": { "source": "iana", "extensions": [ "acu" ] }, "application/vnd.acucorp": { "source": "iana", "extensions": [ "atc", "acutc" ] }, "application/vnd.adobe.air-application-installer-package+zip": { "source": "apache", "compressible": false, "extensions": [ "air" ] }, "application/vnd.adobe.flash.movie": { "source": "iana" }, "application/vnd.adobe.formscentral.fcdt": { "source": "iana", "extensions": [ "fcdt" ] }, "application/vnd.adobe.fxp": { "source": "iana", "extensions": [ "fxp", "fxpl" ] }, "application/vnd.adobe.partial-upload": { "source": "iana" }, "application/vnd.adobe.xdp+xml": { "source": "iana", "compressible": true, "extensions": [ "xdp" ] }, "application/vnd.adobe.xfdf": { "source": "iana", "extensions": [ "xfdf" ] }, "application/vnd.aether.imp": { "source": "iana" }, "application/vnd.afpc.afplinedata": { "source": "iana" }, "application/vnd.afpc.afplinedata-pagedef": { "source": "iana" }, "application/vnd.afpc.cmoca-cmresource": { "source": "iana" }, "application/vnd.afpc.foca-charset": { "source": "iana" }, "application/vnd.afpc.foca-codedfont": { "source": "iana" }, "application/vnd.afpc.foca-codepage": { "source": "iana" }, "application/vnd.afpc.modca": { "source": "iana" }, "application/vnd.afpc.modca-cmtable": { "source": "iana" }, "application/vnd.afpc.modca-formdef": { "source": "iana" }, "application/vnd.afpc.modca-mediummap": { "source": "iana" }, "application/vnd.afpc.modca-objectcontainer": { "source": "iana" }, "application/vnd.afpc.modca-overlay": { "source": "iana" }, "application/vnd.afpc.modca-pagesegment": { "source": "iana" }, "application/vnd.age": { "source": "iana", "extensions": [ "age" ] }, "application/vnd.ah-barcode": { "source": "iana" }, "application/vnd.ahead.space": { "source": "iana", "extensions": [ "ahead" ] }, "application/vnd.airzip.filesecure.azf": { "source": "iana", "extensions": [ "azf" ] }, "application/vnd.airzip.filesecure.azs": { "source": "iana", "extensions": [ "azs" ] }, "application/vnd.amadeus+json": { "source": "iana", "compressible": true }, "application/vnd.amazon.ebook": { "source": "apache", "extensions": [ "azw" ] }, "application/vnd.amazon.mobi8-ebook": { "source": "iana" }, "application/vnd.americandynamics.acc": { "source": "iana", "extensions": [ "acc" ] }, "application/vnd.amiga.ami": { "source": "iana", "extensions": [ "ami" ] }, "application/vnd.amundsen.maze+xml": { "source": "iana", "compressible": true }, "application/vnd.android.ota": { "source": "iana" }, "application/vnd.android.package-archive": { "source": "apache", "compressible": false, "extensions": [ "apk" ] }, "application/vnd.anki": { "source": "iana" }, "application/vnd.anser-web-certificate-issue-initiation": { "source": "iana", "extensions": [ "cii" ] }, "application/vnd.anser-web-funds-transfer-initiation": { "source": "apache", "extensions": [ "fti" ] }, "application/vnd.antix.game-component": { "source": "iana", "extensions": [ "atx" ] }, "application/vnd.apache.arrow.file": { "source": "iana" }, "application/vnd.apache.arrow.stream": { "source": "iana" }, "application/vnd.apache.thrift.binary": { "source": "iana" }, "application/vnd.apache.thrift.compact": { "source": "iana" }, "application/vnd.apache.thrift.json": { "source": "iana" }, "application/vnd.api+json": { "source": "iana", "compressible": true }, "application/vnd.aplextor.warrp+json": { "source": "iana", "compressible": true }, "application/vnd.apothekende.reservation+json": { "source": "iana", "compressible": true }, "application/vnd.apple.installer+xml": { "source": "iana", "compressible": true, "extensions": [ "mpkg" ] }, "application/vnd.apple.keynote": { "source": "iana", "extensions": [ "key" ] }, "application/vnd.apple.mpegurl": { "source": "iana", "extensions": [ "m3u8" ] }, "application/vnd.apple.numbers": { "source": "iana", "extensions": [ "numbers" ] }, "application/vnd.apple.pages": { "source": "iana", "extensions": [ "pages" ] }, "application/vnd.apple.pkpass": { "compressible": false, "extensions": [ "pkpass" ] }, "application/vnd.arastra.swi": { "source": "iana" }, "application/vnd.aristanetworks.swi": { "source": "iana", "extensions": [ "swi" ] }, "application/vnd.artisan+json": { "source": "iana", "compressible": true }, "application/vnd.artsquare": { "source": "iana" }, "application/vnd.astraea-software.iota": { "source": "iana", "extensions": [ "iota" ] }, "application/vnd.audiograph": { "source": "iana", "extensions": [ "aep" ] }, "application/vnd.autopackage": { "source": "iana" }, "application/vnd.avalon+json": { "source": "iana", "compressible": true }, "application/vnd.avistar+xml": { "source": "iana", "compressible": true }, "application/vnd.balsamiq.bmml+xml": { "source": "iana", "compressible": true, "extensions": [ "bmml" ] }, "application/vnd.balsamiq.bmpr": { "source": "iana" }, "application/vnd.banana-accounting": { "source": "iana" }, "application/vnd.bbf.usp.error": { "source": "iana" }, "application/vnd.bbf.usp.msg": { "source": "iana" }, "application/vnd.bbf.usp.msg+json": { "source": "iana", "compressible": true }, "application/vnd.bekitzur-stech+json": { "source": "iana", "compressible": true }, "application/vnd.bint.med-content": { "source": "iana" }, "application/vnd.biopax.rdf+xml": { "source": "iana", "compressible": true }, "application/vnd.blink-idb-value-wrapper": { "source": "iana" }, "application/vnd.blueice.multipass": { "source": "iana", "extensions": [ "mpm" ] }, "application/vnd.bluetooth.ep.oob": { "source": "iana" }, "application/vnd.bluetooth.le.oob": { "source": "iana" }, "application/vnd.bmi": { "source": "iana", "extensions": [ "bmi" ] }, "application/vnd.bpf": { "source": "iana" }, "application/vnd.bpf3": { "source": "iana" }, "application/vnd.businessobjects": { "source": "iana", "extensions": [ "rep" ] }, "application/vnd.byu.uapi+json": { "source": "iana", "compressible": true }, "application/vnd.cab-jscript": { "source": "iana" }, "application/vnd.canon-cpdl": { "source": "iana" }, "application/vnd.canon-lips": { "source": "iana" }, "application/vnd.capasystems-pg+json": { "source": "iana", "compressible": true }, "application/vnd.cendio.thinlinc.clientconf": { "source": "iana" }, "application/vnd.century-systems.tcp_stream": { "source": "iana" }, "application/vnd.chemdraw+xml": { "source": "iana", "compressible": true, "extensions": [ "cdxml" ] }, "application/vnd.chess-pgn": { "source": "iana" }, "application/vnd.chipnuts.karaoke-mmd": { "source": "iana", "extensions": [ "mmd" ] }, "application/vnd.ciedi": { "source": "iana" }, "application/vnd.cinderella": { "source": "iana", "extensions": [ "cdy" ] }, "application/vnd.cirpack.isdn-ext": { "source": "iana" }, "application/vnd.citationstyles.style+xml": { "source": "iana", "compressible": true, "extensions": [ "csl" ] }, "application/vnd.claymore": { "source": "iana", "extensions": [ "cla" ] }, "application/vnd.cloanto.rp9": { "source": "iana", "extensions": [ "rp9" ] }, "application/vnd.clonk.c4group": { "source": "iana", "extensions": [ "c4g", "c4d", "c4f", "c4p", "c4u" ] }, "application/vnd.cluetrust.cartomobile-config": { "source": "iana", "extensions": [ "c11amc" ] }, "application/vnd.cluetrust.cartomobile-config-pkg": { "source": "iana", "extensions": [ "c11amz" ] }, "application/vnd.coffeescript": { "source": "iana" }, "application/vnd.collabio.xodocuments.document": { "source": "iana" }, "application/vnd.collabio.xodocuments.document-template": { "source": "iana" }, "application/vnd.collabio.xodocuments.presentation": { "source": "iana" }, "application/vnd.collabio.xodocuments.presentation-template": { "source": "iana" }, "application/vnd.collabio.xodocuments.spreadsheet": { "source": "iana" }, "application/vnd.collabio.xodocuments.spreadsheet-template": { "source": "iana" }, "application/vnd.collection+json": { "source": "iana", "compressible": true }, "application/vnd.collection.doc+json": { "source": "iana", "compressible": true }, "application/vnd.collection.next+json": { "source": "iana", "compressible": true }, "application/vnd.comicbook+zip": { "source": "iana", "compressible": false }, "application/vnd.comicbook-rar": { "source": "iana" }, "application/vnd.commerce-battelle": { "source": "iana" }, "application/vnd.commonspace": { "source": "iana", "extensions": [ "csp" ] }, "application/vnd.contact.cmsg": { "source": "iana", "extensions": [ "cdbcmsg" ] }, "application/vnd.coreos.ignition+json": { "source": "iana", "compressible": true }, "application/vnd.cosmocaller": { "source": "iana", "extensions": [ "cmc" ] }, "application/vnd.crick.clicker": { "source": "iana", "extensions": [ "clkx" ] }, "application/vnd.crick.clicker.keyboard": { "source": "iana", "extensions": [ "clkk" ] }, "application/vnd.crick.clicker.palette": { "source": "iana", "extensions": [ "clkp" ] }, "application/vnd.crick.clicker.template": { "source": "iana", "extensions": [ "clkt" ] }, "application/vnd.crick.clicker.wordbank": { "source": "iana", "extensions": [ "clkw" ] }, "application/vnd.criticaltools.wbs+xml": { "source": "iana", "compressible": true, "extensions": [ "wbs" ] }, "application/vnd.cryptii.pipe+json": { "source": "iana", "compressible": true }, "application/vnd.crypto-shade-file": { "source": "iana" }, "application/vnd.cryptomator.encrypted": { "source": "iana" }, "application/vnd.cryptomator.vault": { "source": "iana" }, "application/vnd.ctc-posml": { "source": "iana", "extensions": [ "pml" ] }, "application/vnd.ctct.ws+xml": { "source": "iana", "compressible": true }, "application/vnd.cups-pdf": { "source": "iana" }, "application/vnd.cups-postscript": { "source": "iana" }, "application/vnd.cups-ppd": { "source": "iana", "extensions": [ "ppd" ] }, "application/vnd.cups-raster": { "source": "iana" }, "application/vnd.cups-raw": { "source": "iana" }, "application/vnd.curl": { "source": "iana" }, "application/vnd.curl.car": { "source": "apache", "extensions": [ "car" ] }, "application/vnd.curl.pcurl": { "source": "apache", "extensions": [ "pcurl" ] }, "application/vnd.cyan.dean.root+xml": { "source": "iana", "compressible": true }, "application/vnd.cybank": { "source": "iana" }, "application/vnd.cyclonedx+json": { "source": "iana", "compressible": true }, "application/vnd.cyclonedx+xml": { "source": "iana", "compressible": true }, "application/vnd.d2l.coursepackage1p0+zip": { "source": "iana", "compressible": false }, "application/vnd.d3m-dataset": { "source": "iana" }, "application/vnd.d3m-problem": { "source": "iana" }, "application/vnd.dart": { "source": "iana", "compressible": true, "extensions": [ "dart" ] }, "application/vnd.data-vision.rdz": { "source": "iana", "extensions": [ "rdz" ] }, "application/vnd.datapackage+json": { "source": "iana", "compressible": true }, "application/vnd.dataresource+json": { "source": "iana", "compressible": true }, "application/vnd.dbf": { "source": "iana", "extensions": [ "dbf" ] }, "application/vnd.debian.binary-package": { "source": "iana" }, "application/vnd.dece.data": { "source": "iana", "extensions": [ "uvf", "uvvf", "uvd", "uvvd" ] }, "application/vnd.dece.ttml+xml": { "source": "iana", "compressible": true, "extensions": [ "uvt", "uvvt" ] }, "application/vnd.dece.unspecified": { "source": "iana", "extensions": [ "uvx", "uvvx" ] }, "application/vnd.dece.zip": { "source": "iana", "extensions": [ "uvz", "uvvz" ] }, "application/vnd.denovo.fcselayout-link": { "source": "iana", "extensions": [ "fe_launch" ] }, "application/vnd.desmume.movie": { "source": "iana" }, "application/vnd.dir-bi.plate-dl-nosuffix": { "source": "iana" }, "application/vnd.dm.delegation+xml": { "source": "iana", "compressible": true }, "application/vnd.dna": { "source": "iana", "extensions": [ "dna" ] }, "application/vnd.document+json": { "source": "iana", "compressible": true }, "application/vnd.dolby.mlp": { "source": "apache", "extensions": [ "mlp" ] }, "application/vnd.dolby.mobile.1": { "source": "iana" }, "application/vnd.dolby.mobile.2": { "source": "iana" }, "application/vnd.doremir.scorecloud-binary-document": { "source": "iana" }, "application/vnd.dpgraph": { "source": "iana", "extensions": [ "dpg" ] }, "application/vnd.dreamfactory": { "source": "iana", "extensions": [ "dfac" ] }, "application/vnd.drive+json": { "source": "iana", "compressible": true }, "application/vnd.ds-keypoint": { "source": "apache", "extensions": [ "kpxx" ] }, "application/vnd.dtg.local": { "source": "iana" }, "application/vnd.dtg.local.flash": { "source": "iana" }, "application/vnd.dtg.local.html": { "source": "iana" }, "application/vnd.dvb.ait": { "source": "iana", "extensions": [ "ait" ] }, "application/vnd.dvb.dvbisl+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.dvbj": { "source": "iana" }, "application/vnd.dvb.esgcontainer": { "source": "iana" }, "application/vnd.dvb.ipdcdftnotifaccess": { "source": "iana" }, "application/vnd.dvb.ipdcesgaccess": { "source": "iana" }, "application/vnd.dvb.ipdcesgaccess2": { "source": "iana" }, "application/vnd.dvb.ipdcesgpdd": { "source": "iana" }, "application/vnd.dvb.ipdcroaming": { "source": "iana" }, "application/vnd.dvb.iptv.alfec-base": { "source": "iana" }, "application/vnd.dvb.iptv.alfec-enhancement": { "source": "iana" }, "application/vnd.dvb.notif-aggregate-root+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.notif-container+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.notif-generic+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.notif-ia-msglist+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.notif-ia-registration-request+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.notif-ia-registration-response+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.notif-init+xml": { "source": "iana", "compressible": true }, "application/vnd.dvb.pfr": { "source": "iana" }, "application/vnd.dvb.service": { "source": "iana", "extensions": [ "svc" ] }, "application/vnd.dxr": { "source": "iana" }, "application/vnd.dynageo": { "source": "iana", "extensions": [ "geo" ] }, "application/vnd.dzr": { "source": "iana" }, "application/vnd.easykaraoke.cdgdownload": { "source": "iana" }, "application/vnd.ecdis-update": { "source": "iana" }, "application/vnd.ecip.rlp": { "source": "iana" }, "application/vnd.eclipse.ditto+json": { "source": "iana", "compressible": true }, "application/vnd.ecowin.chart": { "source": "iana", "extensions": [ "mag" ] }, "application/vnd.ecowin.filerequest": { "source": "iana" }, "application/vnd.ecowin.fileupdate": { "source": "iana" }, "application/vnd.ecowin.series": { "source": "iana" }, "application/vnd.ecowin.seriesrequest": { "source": "iana" }, "application/vnd.ecowin.seriesupdate": { "source": "iana" }, "application/vnd.efi.img": { "source": "iana" }, "application/vnd.efi.iso": { "source": "iana" }, "application/vnd.emclient.accessrequest+xml": { "source": "iana", "compressible": true }, "application/vnd.enliven": { "source": "iana", "extensions": [ "nml" ] }, "application/vnd.enphase.envoy": { "source": "iana" }, "application/vnd.eprints.data+xml": { "source": "iana", "compressible": true }, "application/vnd.epson.esf": { "source": "iana", "extensions": [ "esf" ] }, "application/vnd.epson.msf": { "source": "iana", "extensions": [ "msf" ] }, "application/vnd.epson.quickanime": { "source": "iana", "extensions": [ "qam" ] }, "application/vnd.epson.salt": { "source": "iana", "extensions": [ "slt" ] }, "application/vnd.epson.ssf": { "source": "iana", "extensions": [ "ssf" ] }, "application/vnd.ericsson.quickcall": { "source": "iana" }, "application/vnd.espass-espass+zip": { "source": "iana", "compressible": false }, "application/vnd.eszigno3+xml": { "source": "iana", "compressible": true, "extensions": [ "es3", "et3" ] }, "application/vnd.etsi.aoc+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.asic-e+zip": { "source": "iana", "compressible": false }, "application/vnd.etsi.asic-s+zip": { "source": "iana", "compressible": false }, "application/vnd.etsi.cug+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvcommand+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvdiscovery+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvprofile+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvsad-bc+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvsad-cod+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvsad-npvr+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvservice+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvsync+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.iptvueprofile+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.mcid+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.mheg5": { "source": "iana" }, "application/vnd.etsi.overload-control-policy-dataset+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.pstn+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.sci+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.simservs+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.timestamp-token": { "source": "iana" }, "application/vnd.etsi.tsl+xml": { "source": "iana", "compressible": true }, "application/vnd.etsi.tsl.der": { "source": "iana" }, "application/vnd.eu.kasparian.car+json": { "source": "iana", "compressible": true }, "application/vnd.eudora.data": { "source": "iana" }, "application/vnd.evolv.ecig.profile": { "source": "iana" }, "application/vnd.evolv.ecig.settings": { "source": "iana" }, "application/vnd.evolv.ecig.theme": { "source": "iana" }, "application/vnd.exstream-empower+zip": { "source": "iana", "compressible": false }, "application/vnd.exstream-package": { "source": "iana" }, "application/vnd.ezpix-album": { "source": "iana", "extensions": [ "ez2" ] }, "application/vnd.ezpix-package": { "source": "iana", "extensions": [ "ez3" ] }, "application/vnd.f-secure.mobile": { "source": "iana" }, "application/vnd.familysearch.gedcom+zip": { "source": "iana", "compressible": false }, "application/vnd.fastcopy-disk-image": { "source": "iana" }, "application/vnd.fdf": { "source": "iana", "extensions": [ "fdf" ] }, "application/vnd.fdsn.mseed": { "source": "iana", "extensions": [ "mseed" ] }, "application/vnd.fdsn.seed": { "source": "iana", "extensions": [ "seed", "dataless" ] }, "application/vnd.ffsns": { "source": "iana" }, "application/vnd.ficlab.flb+zip": { "source": "iana", "compressible": false }, "application/vnd.filmit.zfc": { "source": "iana" }, "application/vnd.fints": { "source": "iana" }, "application/vnd.firemonkeys.cloudcell": { "source": "iana" }, "application/vnd.flographit": { "source": "iana", "extensions": [ "gph" ] }, "application/vnd.fluxtime.clip": { "source": "iana", "extensions": [ "ftc" ] }, "application/vnd.font-fontforge-sfd": { "source": "iana" }, "application/vnd.framemaker": { "source": "iana", "extensions": [ "fm", "frame", "maker", "book" ] }, "application/vnd.frogans.fnc": { "source": "iana", "extensions": [ "fnc" ] }, "application/vnd.frogans.ltf": { "source": "iana", "extensions": [ "ltf" ] }, "application/vnd.fsc.weblaunch": { "source": "iana", "extensions": [ "fsc" ] }, "application/vnd.fujifilm.fb.docuworks": { "source": "iana" }, "application/vnd.fujifilm.fb.docuworks.binder": { "source": "iana" }, "application/vnd.fujifilm.fb.docuworks.container": { "source": "iana" }, "application/vnd.fujifilm.fb.jfi+xml": { "source": "iana", "compressible": true }, "application/vnd.fujitsu.oasys": { "source": "iana", "extensions": [ "oas" ] }, "application/vnd.fujitsu.oasys2": { "source": "iana", "extensions": [ "oa2" ] }, "application/vnd.fujitsu.oasys3": { "source": "iana", "extensions": [ "oa3" ] }, "application/vnd.fujitsu.oasysgp": { "source": "iana", "extensions": [ "fg5" ] }, "application/vnd.fujitsu.oasysprs": { "source": "iana", "extensions": [ "bh2" ] }, "application/vnd.fujixerox.art-ex": { "source": "iana" }, "application/vnd.fujixerox.art4": { "source": "iana" }, "application/vnd.fujixerox.ddd": { "source": "iana", "extensions": [ "ddd" ] }, "application/vnd.fujixerox.docuworks": { "source": "iana", "extensions": [ "xdw" ] }, "application/vnd.fujixerox.docuworks.binder": { "source": "iana", "extensions": [ "xbd" ] }, "application/vnd.fujixerox.docuworks.container": { "source": "iana" }, "application/vnd.fujixerox.hbpl": { "source": "iana" }, "application/vnd.fut-misnet": { "source": "iana" }, "application/vnd.futoin+cbor": { "source": "iana" }, "application/vnd.futoin+json": { "source": "iana", "compressible": true }, "application/vnd.fuzzysheet": { "source": "iana", "extensions": [ "fzs" ] }, "application/vnd.genomatix.tuxedo": { "source": "iana", "extensions": [ "txd" ] }, "application/vnd.gentics.grd+json": { "source": "iana", "compressible": true }, "application/vnd.geo+json": { "source": "iana", "compressible": true }, "application/vnd.geocube+xml": { "source": "iana", "compressible": true }, "application/vnd.geogebra.file": { "source": "iana", "extensions": [ "ggb" ] }, "application/vnd.geogebra.slides": { "source": "iana" }, "application/vnd.geogebra.tool": { "source": "iana", "extensions": [ "ggt" ] }, "application/vnd.geometry-explorer": { "source": "iana", "extensions": [ "gex", "gre" ] }, "application/vnd.geonext": { "source": "iana", "extensions": [ "gxt" ] }, "application/vnd.geoplan": { "source": "iana", "extensions": [ "g2w" ] }, "application/vnd.geospace": { "source": "iana", "extensions": [ "g3w" ] }, "application/vnd.gerber": { "source": "iana" }, "application/vnd.globalplatform.card-content-mgt": { "source": "iana" }, "application/vnd.globalplatform.card-content-mgt-response": { "source": "iana" }, "application/vnd.gmx": { "source": "iana", "extensions": [ "gmx" ] }, "application/vnd.google-apps.document": { "compressible": false, "extensions": [ "gdoc" ] }, "application/vnd.google-apps.presentation": { "compressible": false, "extensions": [ "gslides" ] }, "application/vnd.google-apps.spreadsheet": { "compressible": false, "extensions": [ "gsheet" ] }, "application/vnd.google-earth.kml+xml": { "source": "iana", "compressible": true, "extensions": [ "kml" ] }, "application/vnd.google-earth.kmz": { "source": "iana", "compressible": false, "extensions": [ "kmz" ] }, "application/vnd.gov.sk.e-form+xml": { "source": "iana", "compressible": true }, "application/vnd.gov.sk.e-form+zip": { "source": "iana", "compressible": false }, "application/vnd.gov.sk.xmldatacontainer+xml": { "source": "iana", "compressible": true }, "application/vnd.grafeq": { "source": "iana", "extensions": [ "gqf", "gqs" ] }, "application/vnd.gridmp": { "source": "iana" }, "application/vnd.groove-account": { "source": "iana", "extensions": [ "gac" ] }, "application/vnd.groove-help": { "source": "iana", "extensions": [ "ghf" ] }, "application/vnd.groove-identity-message": { "source": "iana", "extensions": [ "gim" ] }, "application/vnd.groove-injector": { "source": "iana", "extensions": [ "grv" ] }, "application/vnd.groove-tool-message": { "source": "iana", "extensions": [ "gtm" ] }, "application/vnd.groove-tool-template": { "source": "iana", "extensions": [ "tpl" ] }, "application/vnd.groove-vcard": { "source": "iana", "extensions": [ "vcg" ] }, "application/vnd.hal+json": { "source": "iana", "compressible": true }, "application/vnd.hal+xml": { "source": "iana", "compressible": true, "extensions": [ "hal" ] }, "application/vnd.handheld-entertainment+xml": { "source": "iana", "compressible": true, "extensions": [ "zmm" ] }, "application/vnd.hbci": { "source": "iana", "extensions": [ "hbci" ] }, "application/vnd.hc+json": { "source": "iana", "compressible": true }, "application/vnd.hcl-bireports": { "source": "iana" }, "application/vnd.hdt": { "source": "iana" }, "application/vnd.heroku+json": { "source": "iana", "compressible": true }, "application/vnd.hhe.lesson-player": { "source": "iana", "extensions": [ "les" ] }, "application/vnd.hl7cda+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/vnd.hl7v2+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/vnd.hp-hpgl": { "source": "iana", "extensions": [ "hpgl" ] }, "application/vnd.hp-hpid": { "source": "iana", "extensions": [ "hpid" ] }, "application/vnd.hp-hps": { "source": "iana", "extensions": [ "hps" ] }, "application/vnd.hp-jlyt": { "source": "iana", "extensions": [ "jlt" ] }, "application/vnd.hp-pcl": { "source": "iana", "extensions": [ "pcl" ] }, "application/vnd.hp-pclxl": { "source": "iana", "extensions": [ "pclxl" ] }, "application/vnd.httphone": { "source": "iana" }, "application/vnd.hydrostatix.sof-data": { "source": "iana", "extensions": [ "sfd-hdstx" ] }, "application/vnd.hyper+json": { "source": "iana", "compressible": true }, "application/vnd.hyper-item+json": { "source": "iana", "compressible": true }, "application/vnd.hyperdrive+json": { "source": "iana", "compressible": true }, "application/vnd.hzn-3d-crossword": { "source": "iana" }, "application/vnd.ibm.afplinedata": { "source": "iana" }, "application/vnd.ibm.electronic-media": { "source": "iana" }, "application/vnd.ibm.minipay": { "source": "iana", "extensions": [ "mpy" ] }, "application/vnd.ibm.modcap": { "source": "iana", "extensions": [ "afp", "listafp", "list3820" ] }, "application/vnd.ibm.rights-management": { "source": "iana", "extensions": [ "irm" ] }, "application/vnd.ibm.secure-container": { "source": "iana", "extensions": [ "sc" ] }, "application/vnd.iccprofile": { "source": "iana", "extensions": [ "icc", "icm" ] }, "application/vnd.ieee.1905": { "source": "iana" }, "application/vnd.igloader": { "source": "iana", "extensions": [ "igl" ] }, "application/vnd.imagemeter.folder+zip": { "source": "iana", "compressible": false }, "application/vnd.imagemeter.image+zip": { "source": "iana", "compressible": false }, "application/vnd.immervision-ivp": { "source": "iana", "extensions": [ "ivp" ] }, "application/vnd.immervision-ivu": { "source": "iana", "extensions": [ "ivu" ] }, "application/vnd.ims.imsccv1p1": { "source": "iana" }, "application/vnd.ims.imsccv1p2": { "source": "iana" }, "application/vnd.ims.imsccv1p3": { "source": "iana" }, "application/vnd.ims.lis.v2.result+json": { "source": "iana", "compressible": true }, "application/vnd.ims.lti.v2.toolconsumerprofile+json": { "source": "iana", "compressible": true }, "application/vnd.ims.lti.v2.toolproxy+json": { "source": "iana", "compressible": true }, "application/vnd.ims.lti.v2.toolproxy.id+json": { "source": "iana", "compressible": true }, "application/vnd.ims.lti.v2.toolsettings+json": { "source": "iana", "compressible": true }, "application/vnd.ims.lti.v2.toolsettings.simple+json": { "source": "iana", "compressible": true }, "application/vnd.informedcontrol.rms+xml": { "source": "iana", "compressible": true }, "application/vnd.informix-visionary": { "source": "iana" }, "application/vnd.infotech.project": { "source": "iana" }, "application/vnd.infotech.project+xml": { "source": "iana", "compressible": true }, "application/vnd.innopath.wamp.notification": { "source": "iana" }, "application/vnd.insors.igm": { "source": "iana", "extensions": [ "igm" ] }, "application/vnd.intercon.formnet": { "source": "iana", "extensions": [ "xpw", "xpx" ] }, "application/vnd.intergeo": { "source": "iana", "extensions": [ "i2g" ] }, "application/vnd.intertrust.digibox": { "source": "iana" }, "application/vnd.intertrust.nncp": { "source": "iana" }, "application/vnd.intu.qbo": { "source": "iana", "extensions": [ "qbo" ] }, "application/vnd.intu.qfx": { "source": "iana", "extensions": [ "qfx" ] }, "application/vnd.iptc.g2.catalogitem+xml": { "source": "iana", "compressible": true }, "application/vnd.iptc.g2.conceptitem+xml": { "source": "iana", "compressible": true }, "application/vnd.iptc.g2.knowledgeitem+xml": { "source": "iana", "compressible": true }, "application/vnd.iptc.g2.newsitem+xml": { "source": "iana", "compressible": true }, "application/vnd.iptc.g2.newsmessage+xml": { "source": "iana", "compressible": true }, "application/vnd.iptc.g2.packageitem+xml": { "source": "iana", "compressible": true }, "application/vnd.iptc.g2.planningitem+xml": { "source": "iana", "compressible": true }, "application/vnd.ipunplugged.rcprofile": { "source": "iana", "extensions": [ "rcprofile" ] }, "application/vnd.irepository.package+xml": { "source": "iana", "compressible": true, "extensions": [ "irp" ] }, "application/vnd.is-xpr": { "source": "iana", "extensions": [ "xpr" ] }, "application/vnd.isac.fcs": { "source": "iana", "extensions": [ "fcs" ] }, "application/vnd.iso11783-10+zip": { "source": "iana", "compressible": false }, "application/vnd.jam": { "source": "iana", "extensions": [ "jam" ] }, "application/vnd.japannet-directory-service": { "source": "iana" }, "application/vnd.japannet-jpnstore-wakeup": { "source": "iana" }, "application/vnd.japannet-payment-wakeup": { "source": "iana" }, "application/vnd.japannet-registration": { "source": "iana" }, "application/vnd.japannet-registration-wakeup": { "source": "iana" }, "application/vnd.japannet-setstore-wakeup": { "source": "iana" }, "application/vnd.japannet-verification": { "source": "iana" }, "application/vnd.japannet-verification-wakeup": { "source": "iana" }, "application/vnd.jcp.javame.midlet-rms": { "source": "iana", "extensions": [ "rms" ] }, "application/vnd.jisp": { "source": "iana", "extensions": [ "jisp" ] }, "application/vnd.joost.joda-archive": { "source": "iana", "extensions": [ "joda" ] }, "application/vnd.jsk.isdn-ngn": { "source": "iana" }, "application/vnd.kahootz": { "source": "iana", "extensions": [ "ktz", "ktr" ] }, "application/vnd.kde.karbon": { "source": "iana", "extensions": [ "karbon" ] }, "application/vnd.kde.kchart": { "source": "iana", "extensions": [ "chrt" ] }, "application/vnd.kde.kformula": { "source": "iana", "extensions": [ "kfo" ] }, "application/vnd.kde.kivio": { "source": "iana", "extensions": [ "flw" ] }, "application/vnd.kde.kontour": { "source": "iana", "extensions": [ "kon" ] }, "application/vnd.kde.kpresenter": { "source": "iana", "extensions": [ "kpr", "kpt" ] }, "application/vnd.kde.kspread": { "source": "iana", "extensions": [ "ksp" ] }, "application/vnd.kde.kword": { "source": "iana", "extensions": [ "kwd", "kwt" ] }, "application/vnd.kenameaapp": { "source": "iana", "extensions": [ "htke" ] }, "application/vnd.kidspiration": { "source": "iana", "extensions": [ "kia" ] }, "application/vnd.kinar": { "source": "iana", "extensions": [ "kne", "knp" ] }, "application/vnd.koan": { "source": "iana", "extensions": [ "skp", "skd", "skt", "skm" ] }, "application/vnd.kodak-descriptor": { "source": "iana", "extensions": [ "sse" ] }, "application/vnd.las": { "source": "iana" }, "application/vnd.las.las+json": { "source": "iana", "compressible": true }, "application/vnd.las.las+xml": { "source": "iana", "compressible": true, "extensions": [ "lasxml" ] }, "application/vnd.laszip": { "source": "iana" }, "application/vnd.leap+json": { "source": "iana", "compressible": true }, "application/vnd.liberty-request+xml": { "source": "iana", "compressible": true }, "application/vnd.llamagraphics.life-balance.desktop": { "source": "iana", "extensions": [ "lbd" ] }, "application/vnd.llamagraphics.life-balance.exchange+xml": { "source": "iana", "compressible": true, "extensions": [ "lbe" ] }, "application/vnd.logipipe.circuit+zip": { "source": "iana", "compressible": false }, "application/vnd.loom": { "source": "iana" }, "application/vnd.lotus-1-2-3": { "source": "iana", "extensions": [ "123" ] }, "application/vnd.lotus-approach": { "source": "iana", "extensions": [ "apr" ] }, "application/vnd.lotus-freelance": { "source": "iana", "extensions": [ "pre" ] }, "application/vnd.lotus-notes": { "source": "iana", "extensions": [ "nsf" ] }, "application/vnd.lotus-organizer": { "source": "iana", "extensions": [ "org" ] }, "application/vnd.lotus-screencam": { "source": "iana", "extensions": [ "scm" ] }, "application/vnd.lotus-wordpro": { "source": "iana", "extensions": [ "lwp" ] }, "application/vnd.macports.portpkg": { "source": "iana", "extensions": [ "portpkg" ] }, "application/vnd.mapbox-vector-tile": { "source": "iana", "extensions": [ "mvt" ] }, "application/vnd.marlin.drm.actiontoken+xml": { "source": "iana", "compressible": true }, "application/vnd.marlin.drm.conftoken+xml": { "source": "iana", "compressible": true }, "application/vnd.marlin.drm.license+xml": { "source": "iana", "compressible": true }, "application/vnd.marlin.drm.mdcf": { "source": "iana" }, "application/vnd.mason+json": { "source": "iana", "compressible": true }, "application/vnd.maxar.archive.3tz+zip": { "source": "iana", "compressible": false }, "application/vnd.maxmind.maxmind-db": { "source": "iana" }, "application/vnd.mcd": { "source": "iana", "extensions": [ "mcd" ] }, "application/vnd.medcalcdata": { "source": "iana", "extensions": [ "mc1" ] }, "application/vnd.mediastation.cdkey": { "source": "iana", "extensions": [ "cdkey" ] }, "application/vnd.meridian-slingshot": { "source": "iana" }, "application/vnd.mfer": { "source": "iana", "extensions": [ "mwf" ] }, "application/vnd.mfmp": { "source": "iana", "extensions": [ "mfm" ] }, "application/vnd.micro+json": { "source": "iana", "compressible": true }, "application/vnd.micrografx.flo": { "source": "iana", "extensions": [ "flo" ] }, "application/vnd.micrografx.igx": { "source": "iana", "extensions": [ "igx" ] }, "application/vnd.microsoft.portable-executable": { "source": "iana" }, "application/vnd.microsoft.windows.thumbnail-cache": { "source": "iana" }, "application/vnd.miele+json": { "source": "iana", "compressible": true }, "application/vnd.mif": { "source": "iana", "extensions": [ "mif" ] }, "application/vnd.minisoft-hp3000-save": { "source": "iana" }, "application/vnd.mitsubishi.misty-guard.trustweb": { "source": "iana" }, "application/vnd.mobius.daf": { "source": "iana", "extensions": [ "daf" ] }, "application/vnd.mobius.dis": { "source": "iana", "extensions": [ "dis" ] }, "application/vnd.mobius.mbk": { "source": "iana", "extensions": [ "mbk" ] }, "application/vnd.mobius.mqy": { "source": "iana", "extensions": [ "mqy" ] }, "application/vnd.mobius.msl": { "source": "iana", "extensions": [ "msl" ] }, "application/vnd.mobius.plc": { "source": "iana", "extensions": [ "plc" ] }, "application/vnd.mobius.txf": { "source": "iana", "extensions": [ "txf" ] }, "application/vnd.mophun.application": { "source": "iana", "extensions": [ "mpn" ] }, "application/vnd.mophun.certificate": { "source": "iana", "extensions": [ "mpc" ] }, "application/vnd.motorola.flexsuite": { "source": "iana" }, "application/vnd.motorola.flexsuite.adsi": { "source": "iana" }, "application/vnd.motorola.flexsuite.fis": { "source": "iana" }, "application/vnd.motorola.flexsuite.gotap": { "source": "iana" }, "application/vnd.motorola.flexsuite.kmr": { "source": "iana" }, "application/vnd.motorola.flexsuite.ttc": { "source": "iana" }, "application/vnd.motorola.flexsuite.wem": { "source": "iana" }, "application/vnd.motorola.iprm": { "source": "iana" }, "application/vnd.mozilla.xul+xml": { "source": "iana", "compressible": true, "extensions": [ "xul" ] }, "application/vnd.ms-3mfdocument": { "source": "iana" }, "application/vnd.ms-artgalry": { "source": "iana", "extensions": [ "cil" ] }, "application/vnd.ms-asf": { "source": "iana" }, "application/vnd.ms-cab-compressed": { "source": "iana", "extensions": [ "cab" ] }, "application/vnd.ms-color.iccprofile": { "source": "apache" }, "application/vnd.ms-excel": { "source": "iana", "compressible": false, "extensions": [ "xls", "xlm", "xla", "xlc", "xlt", "xlw" ] }, "application/vnd.ms-excel.addin.macroenabled.12": { "source": "iana", "extensions": [ "xlam" ] }, "application/vnd.ms-excel.sheet.binary.macroenabled.12": { "source": "iana", "extensions": [ "xlsb" ] }, "application/vnd.ms-excel.sheet.macroenabled.12": { "source": "iana", "extensions": [ "xlsm" ] }, "application/vnd.ms-excel.template.macroenabled.12": { "source": "iana", "extensions": [ "xltm" ] }, "application/vnd.ms-fontobject": { "source": "iana", "compressible": true, "extensions": [ "eot" ] }, "application/vnd.ms-htmlhelp": { "source": "iana", "extensions": [ "chm" ] }, "application/vnd.ms-ims": { "source": "iana", "extensions": [ "ims" ] }, "application/vnd.ms-lrm": { "source": "iana", "extensions": [ "lrm" ] }, "application/vnd.ms-office.activex+xml": { "source": "iana", "compressible": true }, "application/vnd.ms-officetheme": { "source": "iana", "extensions": [ "thmx" ] }, "application/vnd.ms-opentype": { "source": "apache", "compressible": true }, "application/vnd.ms-outlook": { "compressible": false, "extensions": [ "msg" ] }, "application/vnd.ms-package.obfuscated-opentype": { "source": "apache" }, "application/vnd.ms-pki.seccat": { "source": "apache", "extensions": [ "cat" ] }, "application/vnd.ms-pki.stl": { "source": "apache", "extensions": [ "stl" ] }, "application/vnd.ms-playready.initiator+xml": { "source": "iana", "compressible": true }, "application/vnd.ms-powerpoint": { "source": "iana", "compressible": false, "extensions": [ "ppt", "pps", "pot" ] }, "application/vnd.ms-powerpoint.addin.macroenabled.12": { "source": "iana", "extensions": [ "ppam" ] }, "application/vnd.ms-powerpoint.presentation.macroenabled.12": { "source": "iana", "extensions": [ "pptm" ] }, "application/vnd.ms-powerpoint.slide.macroenabled.12": { "source": "iana", "extensions": [ "sldm" ] }, "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { "source": "iana", "extensions": [ "ppsm" ] }, "application/vnd.ms-powerpoint.template.macroenabled.12": { "source": "iana", "extensions": [ "potm" ] }, "application/vnd.ms-printdevicecapabilities+xml": { "source": "iana", "compressible": true }, "application/vnd.ms-printing.printticket+xml": { "source": "apache", "compressible": true }, "application/vnd.ms-printschematicket+xml": { "source": "iana", "compressible": true }, "application/vnd.ms-project": { "source": "iana", "extensions": [ "mpp", "mpt" ] }, "application/vnd.ms-tnef": { "source": "iana" }, "application/vnd.ms-windows.devicepairing": { "source": "iana" }, "application/vnd.ms-windows.nwprinting.oob": { "source": "iana" }, "application/vnd.ms-windows.printerpairing": { "source": "iana" }, "application/vnd.ms-windows.wsd.oob": { "source": "iana" }, "application/vnd.ms-wmdrm.lic-chlg-req": { "source": "iana" }, "application/vnd.ms-wmdrm.lic-resp": { "source": "iana" }, "application/vnd.ms-wmdrm.meter-chlg-req": { "source": "iana" }, "application/vnd.ms-wmdrm.meter-resp": { "source": "iana" }, "application/vnd.ms-word.document.macroenabled.12": { "source": "iana", "extensions": [ "docm" ] }, "application/vnd.ms-word.template.macroenabled.12": { "source": "iana", "extensions": [ "dotm" ] }, "application/vnd.ms-works": { "source": "iana", "extensions": [ "wps", "wks", "wcm", "wdb" ] }, "application/vnd.ms-wpl": { "source": "iana", "extensions": [ "wpl" ] }, "application/vnd.ms-xpsdocument": { "source": "iana", "compressible": false, "extensions": [ "xps" ] }, "application/vnd.msa-disk-image": { "source": "iana" }, "application/vnd.mseq": { "source": "iana", "extensions": [ "mseq" ] }, "application/vnd.msign": { "source": "iana" }, "application/vnd.multiad.creator": { "source": "iana" }, "application/vnd.multiad.creator.cif": { "source": "iana" }, "application/vnd.music-niff": { "source": "iana" }, "application/vnd.musician": { "source": "iana", "extensions": [ "mus" ] }, "application/vnd.muvee.style": { "source": "iana", "extensions": [ "msty" ] }, "application/vnd.mynfc": { "source": "iana", "extensions": [ "taglet" ] }, "application/vnd.nacamar.ybrid+json": { "source": "iana", "compressible": true }, "application/vnd.ncd.control": { "source": "iana" }, "application/vnd.ncd.reference": { "source": "iana" }, "application/vnd.nearst.inv+json": { "source": "iana", "compressible": true }, "application/vnd.nebumind.line": { "source": "iana" }, "application/vnd.nervana": { "source": "iana" }, "application/vnd.netfpx": { "source": "iana" }, "application/vnd.neurolanguage.nlu": { "source": "iana", "extensions": [ "nlu" ] }, "application/vnd.nimn": { "source": "iana" }, "application/vnd.nintendo.nitro.rom": { "source": "iana" }, "application/vnd.nintendo.snes.rom": { "source": "iana" }, "application/vnd.nitf": { "source": "iana", "extensions": [ "ntf", "nitf" ] }, "application/vnd.noblenet-directory": { "source": "iana", "extensions": [ "nnd" ] }, "application/vnd.noblenet-sealer": { "source": "iana", "extensions": [ "nns" ] }, "application/vnd.noblenet-web": { "source": "iana", "extensions": [ "nnw" ] }, "application/vnd.nokia.catalogs": { "source": "iana" }, "application/vnd.nokia.conml+wbxml": { "source": "iana" }, "application/vnd.nokia.conml+xml": { "source": "iana", "compressible": true }, "application/vnd.nokia.iptv.config+xml": { "source": "iana", "compressible": true }, "application/vnd.nokia.isds-radio-presets": { "source": "iana" }, "application/vnd.nokia.landmark+wbxml": { "source": "iana" }, "application/vnd.nokia.landmark+xml": { "source": "iana", "compressible": true }, "application/vnd.nokia.landmarkcollection+xml": { "source": "iana", "compressible": true }, "application/vnd.nokia.n-gage.ac+xml": { "source": "iana", "compressible": true, "extensions": [ "ac" ] }, "application/vnd.nokia.n-gage.data": { "source": "iana", "extensions": [ "ngdat" ] }, "application/vnd.nokia.n-gage.symbian.install": { "source": "iana", "extensions": [ "n-gage" ] }, "application/vnd.nokia.ncd": { "source": "iana" }, "application/vnd.nokia.pcd+wbxml": { "source": "iana" }, "application/vnd.nokia.pcd+xml": { "source": "iana", "compressible": true }, "application/vnd.nokia.radio-preset": { "source": "iana", "extensions": [ "rpst" ] }, "application/vnd.nokia.radio-presets": { "source": "iana", "extensions": [ "rpss" ] }, "application/vnd.novadigm.edm": { "source": "iana", "extensions": [ "edm" ] }, "application/vnd.novadigm.edx": { "source": "iana", "extensions": [ "edx" ] }, "application/vnd.novadigm.ext": { "source": "iana", "extensions": [ "ext" ] }, "application/vnd.ntt-local.content-share": { "source": "iana" }, "application/vnd.ntt-local.file-transfer": { "source": "iana" }, "application/vnd.ntt-local.ogw_remote-access": { "source": "iana" }, "application/vnd.ntt-local.sip-ta_remote": { "source": "iana" }, "application/vnd.ntt-local.sip-ta_tcp_stream": { "source": "iana" }, "application/vnd.oasis.opendocument.chart": { "source": "iana", "extensions": [ "odc" ] }, "application/vnd.oasis.opendocument.chart-template": { "source": "iana", "extensions": [ "otc" ] }, "application/vnd.oasis.opendocument.database": { "source": "iana", "extensions": [ "odb" ] }, "application/vnd.oasis.opendocument.formula": { "source": "iana", "extensions": [ "odf" ] }, "application/vnd.oasis.opendocument.formula-template": { "source": "iana", "extensions": [ "odft" ] }, "application/vnd.oasis.opendocument.graphics": { "source": "iana", "compressible": false, "extensions": [ "odg" ] }, "application/vnd.oasis.opendocument.graphics-template": { "source": "iana", "extensions": [ "otg" ] }, "application/vnd.oasis.opendocument.image": { "source": "iana", "extensions": [ "odi" ] }, "application/vnd.oasis.opendocument.image-template": { "source": "iana", "extensions": [ "oti" ] }, "application/vnd.oasis.opendocument.presentation": { "source": "iana", "compressible": false, "extensions": [ "odp" ] }, "application/vnd.oasis.opendocument.presentation-template": { "source": "iana", "extensions": [ "otp" ] }, "application/vnd.oasis.opendocument.spreadsheet": { "source": "iana", "compressible": false, "extensions": [ "ods" ] }, "application/vnd.oasis.opendocument.spreadsheet-template": { "source": "iana", "extensions": [ "ots" ] }, "application/vnd.oasis.opendocument.text": { "source": "iana", "compressible": false, "extensions": [ "odt" ] }, "application/vnd.oasis.opendocument.text-master": { "source": "iana", "extensions": [ "odm" ] }, "application/vnd.oasis.opendocument.text-template": { "source": "iana", "extensions": [ "ott" ] }, "application/vnd.oasis.opendocument.text-web": { "source": "iana", "extensions": [ "oth" ] }, "application/vnd.obn": { "source": "iana" }, "application/vnd.ocf+cbor": { "source": "iana" }, "application/vnd.oci.image.manifest.v1+json": { "source": "iana", "compressible": true }, "application/vnd.oftn.l10n+json": { "source": "iana", "compressible": true }, "application/vnd.oipf.contentaccessdownload+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.contentaccessstreaming+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.cspg-hexbinary": { "source": "iana" }, "application/vnd.oipf.dae.svg+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.dae.xhtml+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.mippvcontrolmessage+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.pae.gem": { "source": "iana" }, "application/vnd.oipf.spdiscovery+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.spdlist+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.ueprofile+xml": { "source": "iana", "compressible": true }, "application/vnd.oipf.userprofile+xml": { "source": "iana", "compressible": true }, "application/vnd.olpc-sugar": { "source": "iana", "extensions": [ "xo" ] }, "application/vnd.oma-scws-config": { "source": "iana" }, "application/vnd.oma-scws-http-request": { "source": "iana" }, "application/vnd.oma-scws-http-response": { "source": "iana" }, "application/vnd.oma.bcast.associated-procedure-parameter+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.drm-trigger+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.imd+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.ltkm": { "source": "iana" }, "application/vnd.oma.bcast.notification+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.provisioningtrigger": { "source": "iana" }, "application/vnd.oma.bcast.sgboot": { "source": "iana" }, "application/vnd.oma.bcast.sgdd+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.sgdu": { "source": "iana" }, "application/vnd.oma.bcast.simple-symbol-container": { "source": "iana" }, "application/vnd.oma.bcast.smartcard-trigger+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.sprov+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.bcast.stkm": { "source": "iana" }, "application/vnd.oma.cab-address-book+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.cab-feature-handler+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.cab-pcc+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.cab-subs-invite+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.cab-user-prefs+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.dcd": { "source": "iana" }, "application/vnd.oma.dcdc": { "source": "iana" }, "application/vnd.oma.dd2+xml": { "source": "iana", "compressible": true, "extensions": [ "dd2" ] }, "application/vnd.oma.drm.risd+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.group-usage-list+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.lwm2m+cbor": { "source": "iana" }, "application/vnd.oma.lwm2m+json": { "source": "iana", "compressible": true }, "application/vnd.oma.lwm2m+tlv": { "source": "iana" }, "application/vnd.oma.pal+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.poc.detailed-progress-report+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.poc.final-report+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.poc.groups+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.poc.invocation-descriptor+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.poc.optimized-progress-report+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.push": { "source": "iana" }, "application/vnd.oma.scidm.messages+xml": { "source": "iana", "compressible": true }, "application/vnd.oma.xcap-directory+xml": { "source": "iana", "compressible": true }, "application/vnd.omads-email+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/vnd.omads-file+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/vnd.omads-folder+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/vnd.omaloc-supl-init": { "source": "iana" }, "application/vnd.onepager": { "source": "iana" }, "application/vnd.onepagertamp": { "source": "iana" }, "application/vnd.onepagertamx": { "source": "iana" }, "application/vnd.onepagertat": { "source": "iana" }, "application/vnd.onepagertatp": { "source": "iana" }, "application/vnd.onepagertatx": { "source": "iana" }, "application/vnd.openblox.game+xml": { "source": "iana", "compressible": true, "extensions": [ "obgx" ] }, "application/vnd.openblox.game-binary": { "source": "iana" }, "application/vnd.openeye.oeb": { "source": "iana" }, "application/vnd.openofficeorg.extension": { "source": "apache", "extensions": [ "oxt" ] }, "application/vnd.openstreetmap.data+xml": { "source": "iana", "compressible": true, "extensions": [ "osm" ] }, "application/vnd.opentimestamps.ots": { "source": "iana" }, "application/vnd.openxmlformats-officedocument.custom-properties+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawing+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.extended-properties+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.presentation": { "source": "iana", "compressible": false, "extensions": [ "pptx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.slide": { "source": "iana", "extensions": [ "sldx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { "source": "iana", "extensions": [ "ppsx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.template": { "source": "iana", "extensions": [ "potx" ] }, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { "source": "iana", "compressible": false, "extensions": [ "xlsx" ] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { "source": "iana", "extensions": [ "xltx" ] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.theme+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.themeoverride+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.vmldrawing": { "source": "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { "source": "iana", "compressible": false, "extensions": [ "docx" ] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { "source": "iana", "extensions": [ "dotx" ] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-package.core-properties+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { "source": "iana", "compressible": true }, "application/vnd.openxmlformats-package.relationships+xml": { "source": "iana", "compressible": true }, "application/vnd.oracle.resource+json": { "source": "iana", "compressible": true }, "application/vnd.orange.indata": { "source": "iana" }, "application/vnd.osa.netdeploy": { "source": "iana" }, "application/vnd.osgeo.mapguide.package": { "source": "iana", "extensions": [ "mgp" ] }, "application/vnd.osgi.bundle": { "source": "iana" }, "application/vnd.osgi.dp": { "source": "iana", "extensions": [ "dp" ] }, "application/vnd.osgi.subsystem": { "source": "iana", "extensions": [ "esa" ] }, "application/vnd.otps.ct-kip+xml": { "source": "iana", "compressible": true }, "application/vnd.oxli.countgraph": { "source": "iana" }, "application/vnd.pagerduty+json": { "source": "iana", "compressible": true }, "application/vnd.palm": { "source": "iana", "extensions": [ "pdb", "pqa", "oprc" ] }, "application/vnd.panoply": { "source": "iana" }, "application/vnd.paos.xml": { "source": "iana" }, "application/vnd.patentdive": { "source": "iana" }, "application/vnd.patientecommsdoc": { "source": "iana" }, "application/vnd.pawaafile": { "source": "iana", "extensions": [ "paw" ] }, "application/vnd.pcos": { "source": "iana" }, "application/vnd.pg.format": { "source": "iana", "extensions": [ "str" ] }, "application/vnd.pg.osasli": { "source": "iana", "extensions": [ "ei6" ] }, "application/vnd.piaccess.application-licence": { "source": "iana" }, "application/vnd.picsel": { "source": "iana", "extensions": [ "efif" ] }, "application/vnd.pmi.widget": { "source": "iana", "extensions": [ "wg" ] }, "application/vnd.poc.group-advertisement+xml": { "source": "iana", "compressible": true }, "application/vnd.pocketlearn": { "source": "iana", "extensions": [ "plf" ] }, "application/vnd.powerbuilder6": { "source": "iana", "extensions": [ "pbd" ] }, "application/vnd.powerbuilder6-s": { "source": "iana" }, "application/vnd.powerbuilder7": { "source": "iana" }, "application/vnd.powerbuilder7-s": { "source": "iana" }, "application/vnd.powerbuilder75": { "source": "iana" }, "application/vnd.powerbuilder75-s": { "source": "iana" }, "application/vnd.preminet": { "source": "iana" }, "application/vnd.previewsystems.box": { "source": "iana", "extensions": [ "box" ] }, "application/vnd.proteus.magazine": { "source": "iana", "extensions": [ "mgz" ] }, "application/vnd.psfs": { "source": "iana" }, "application/vnd.publishare-delta-tree": { "source": "iana", "extensions": [ "qps" ] }, "application/vnd.pvi.ptid1": { "source": "iana", "extensions": [ "ptid" ] }, "application/vnd.pwg-multiplexed": { "source": "iana" }, "application/vnd.pwg-xhtml-print+xml": { "source": "iana", "compressible": true }, "application/vnd.qualcomm.brew-app-res": { "source": "iana" }, "application/vnd.quarantainenet": { "source": "iana" }, "application/vnd.quark.quarkxpress": { "source": "iana", "extensions": [ "qxd", "qxt", "qwd", "qwt", "qxl", "qxb" ] }, "application/vnd.quobject-quoxdocument": { "source": "iana" }, "application/vnd.radisys.moml+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-audit+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-audit-conf+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-audit-conn+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-audit-dialog+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-audit-stream+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-conf+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog-base+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog-fax-detect+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog-group+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog-speech+xml": { "source": "iana", "compressible": true }, "application/vnd.radisys.msml-dialog-transform+xml": { "source": "iana", "compressible": true }, "application/vnd.rainstor.data": { "source": "iana" }, "application/vnd.rapid": { "source": "iana" }, "application/vnd.rar": { "source": "iana", "extensions": [ "rar" ] }, "application/vnd.realvnc.bed": { "source": "iana", "extensions": [ "bed" ] }, "application/vnd.recordare.musicxml": { "source": "iana", "extensions": [ "mxl" ] }, "application/vnd.recordare.musicxml+xml": { "source": "iana", "compressible": true, "extensions": [ "musicxml" ] }, "application/vnd.renlearn.rlprint": { "source": "iana" }, "application/vnd.resilient.logic": { "source": "iana" }, "application/vnd.restful+json": { "source": "iana", "compressible": true }, "application/vnd.rig.cryptonote": { "source": "iana", "extensions": [ "cryptonote" ] }, "application/vnd.rim.cod": { "source": "apache", "extensions": [ "cod" ] }, "application/vnd.rn-realmedia": { "source": "apache", "extensions": [ "rm" ] }, "application/vnd.rn-realmedia-vbr": { "source": "apache", "extensions": [ "rmvb" ] }, "application/vnd.route66.link66+xml": { "source": "iana", "compressible": true, "extensions": [ "link66" ] }, "application/vnd.rs-274x": { "source": "iana" }, "application/vnd.ruckus.download": { "source": "iana" }, "application/vnd.s3sms": { "source": "iana" }, "application/vnd.sailingtracker.track": { "source": "iana", "extensions": [ "st" ] }, "application/vnd.sar": { "source": "iana" }, "application/vnd.sbm.cid": { "source": "iana" }, "application/vnd.sbm.mid2": { "source": "iana" }, "application/vnd.scribus": { "source": "iana" }, "application/vnd.sealed.3df": { "source": "iana" }, "application/vnd.sealed.csf": { "source": "iana" }, "application/vnd.sealed.doc": { "source": "iana" }, "application/vnd.sealed.eml": { "source": "iana" }, "application/vnd.sealed.mht": { "source": "iana" }, "application/vnd.sealed.net": { "source": "iana" }, "application/vnd.sealed.ppt": { "source": "iana" }, "application/vnd.sealed.tiff": { "source": "iana" }, "application/vnd.sealed.xls": { "source": "iana" }, "application/vnd.sealedmedia.softseal.html": { "source": "iana" }, "application/vnd.sealedmedia.softseal.pdf": { "source": "iana" }, "application/vnd.seemail": { "source": "iana", "extensions": [ "see" ] }, "application/vnd.seis+json": { "source": "iana", "compressible": true }, "application/vnd.sema": { "source": "iana", "extensions": [ "sema" ] }, "application/vnd.semd": { "source": "iana", "extensions": [ "semd" ] }, "application/vnd.semf": { "source": "iana", "extensions": [ "semf" ] }, "application/vnd.shade-save-file": { "source": "iana" }, "application/vnd.shana.informed.formdata": { "source": "iana", "extensions": [ "ifm" ] }, "application/vnd.shana.informed.formtemplate": { "source": "iana", "extensions": [ "itp" ] }, "application/vnd.shana.informed.interchange": { "source": "iana", "extensions": [ "iif" ] }, "application/vnd.shana.informed.package": { "source": "iana", "extensions": [ "ipk" ] }, "application/vnd.shootproof+json": { "source": "iana", "compressible": true }, "application/vnd.shopkick+json": { "source": "iana", "compressible": true }, "application/vnd.shp": { "source": "iana" }, "application/vnd.shx": { "source": "iana" }, "application/vnd.sigrok.session": { "source": "iana" }, "application/vnd.simtech-mindmapper": { "source": "iana", "extensions": [ "twd", "twds" ] }, "application/vnd.siren+json": { "source": "iana", "compressible": true }, "application/vnd.smaf": { "source": "iana", "extensions": [ "mmf" ] }, "application/vnd.smart.notebook": { "source": "iana" }, "application/vnd.smart.teacher": { "source": "iana", "extensions": [ "teacher" ] }, "application/vnd.snesdev-page-table": { "source": "iana" }, "application/vnd.software602.filler.form+xml": { "source": "iana", "compressible": true, "extensions": [ "fo" ] }, "application/vnd.software602.filler.form-xml-zip": { "source": "iana" }, "application/vnd.solent.sdkm+xml": { "source": "iana", "compressible": true, "extensions": [ "sdkm", "sdkd" ] }, "application/vnd.spotfire.dxp": { "source": "iana", "extensions": [ "dxp" ] }, "application/vnd.spotfire.sfs": { "source": "iana", "extensions": [ "sfs" ] }, "application/vnd.sqlite3": { "source": "iana" }, "application/vnd.sss-cod": { "source": "iana" }, "application/vnd.sss-dtf": { "source": "iana" }, "application/vnd.sss-ntf": { "source": "iana" }, "application/vnd.stardivision.calc": { "source": "apache", "extensions": [ "sdc" ] }, "application/vnd.stardivision.draw": { "source": "apache", "extensions": [ "sda" ] }, "application/vnd.stardivision.impress": { "source": "apache", "extensions": [ "sdd" ] }, "application/vnd.stardivision.math": { "source": "apache", "extensions": [ "smf" ] }, "application/vnd.stardivision.writer": { "source": "apache", "extensions": [ "sdw", "vor" ] }, "application/vnd.stardivision.writer-global": { "source": "apache", "extensions": [ "sgl" ] }, "application/vnd.stepmania.package": { "source": "iana", "extensions": [ "smzip" ] }, "application/vnd.stepmania.stepchart": { "source": "iana", "extensions": [ "sm" ] }, "application/vnd.street-stream": { "source": "iana" }, "application/vnd.sun.wadl+xml": { "source": "iana", "compressible": true, "extensions": [ "wadl" ] }, "application/vnd.sun.xml.calc": { "source": "apache", "extensions": [ "sxc" ] }, "application/vnd.sun.xml.calc.template": { "source": "apache", "extensions": [ "stc" ] }, "application/vnd.sun.xml.draw": { "source": "apache", "extensions": [ "sxd" ] }, "application/vnd.sun.xml.draw.template": { "source": "apache", "extensions": [ "std" ] }, "application/vnd.sun.xml.impress": { "source": "apache", "extensions": [ "sxi" ] }, "application/vnd.sun.xml.impress.template": { "source": "apache", "extensions": [ "sti" ] }, "application/vnd.sun.xml.math": { "source": "apache", "extensions": [ "sxm" ] }, "application/vnd.sun.xml.writer": { "source": "apache", "extensions": [ "sxw" ] }, "application/vnd.sun.xml.writer.global": { "source": "apache", "extensions": [ "sxg" ] }, "application/vnd.sun.xml.writer.template": { "source": "apache", "extensions": [ "stw" ] }, "application/vnd.sus-calendar": { "source": "iana", "extensions": [ "sus", "susp" ] }, "application/vnd.svd": { "source": "iana", "extensions": [ "svd" ] }, "application/vnd.swiftview-ics": { "source": "iana" }, "application/vnd.sycle+xml": { "source": "iana", "compressible": true }, "application/vnd.syft+json": { "source": "iana", "compressible": true }, "application/vnd.symbian.install": { "source": "apache", "extensions": [ "sis", "sisx" ] }, "application/vnd.syncml+xml": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "xsm" ] }, "application/vnd.syncml.dm+wbxml": { "source": "iana", "charset": "UTF-8", "extensions": [ "bdm" ] }, "application/vnd.syncml.dm+xml": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "xdm" ] }, "application/vnd.syncml.dm.notification": { "source": "iana" }, "application/vnd.syncml.dmddf+wbxml": { "source": "iana" }, "application/vnd.syncml.dmddf+xml": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "ddf" ] }, "application/vnd.syncml.dmtnds+wbxml": { "source": "iana" }, "application/vnd.syncml.dmtnds+xml": { "source": "iana", "charset": "UTF-8", "compressible": true }, "application/vnd.syncml.ds.notification": { "source": "iana" }, "application/vnd.tableschema+json": { "source": "iana", "compressible": true }, "application/vnd.tao.intent-module-archive": { "source": "iana", "extensions": [ "tao" ] }, "application/vnd.tcpdump.pcap": { "source": "iana", "extensions": [ "pcap", "cap", "dmp" ] }, "application/vnd.think-cell.ppttc+json": { "source": "iana", "compressible": true }, "application/vnd.tmd.mediaflex.api+xml": { "source": "iana", "compressible": true }, "application/vnd.tml": { "source": "iana" }, "application/vnd.tmobile-livetv": { "source": "iana", "extensions": [ "tmo" ] }, "application/vnd.tri.onesource": { "source": "iana" }, "application/vnd.trid.tpt": { "source": "iana", "extensions": [ "tpt" ] }, "application/vnd.triscape.mxs": { "source": "iana", "extensions": [ "mxs" ] }, "application/vnd.trueapp": { "source": "iana", "extensions": [ "tra" ] }, "application/vnd.truedoc": { "source": "iana" }, "application/vnd.ubisoft.webplayer": { "source": "iana" }, "application/vnd.ufdl": { "source": "iana", "extensions": [ "ufd", "ufdl" ] }, "application/vnd.uiq.theme": { "source": "iana", "extensions": [ "utz" ] }, "application/vnd.umajin": { "source": "iana", "extensions": [ "umj" ] }, "application/vnd.unity": { "source": "iana", "extensions": [ "unityweb" ] }, "application/vnd.uoml+xml": { "source": "iana", "compressible": true, "extensions": [ "uoml" ] }, "application/vnd.uplanet.alert": { "source": "iana" }, "application/vnd.uplanet.alert-wbxml": { "source": "iana" }, "application/vnd.uplanet.bearer-choice": { "source": "iana" }, "application/vnd.uplanet.bearer-choice-wbxml": { "source": "iana" }, "application/vnd.uplanet.cacheop": { "source": "iana" }, "application/vnd.uplanet.cacheop-wbxml": { "source": "iana" }, "application/vnd.uplanet.channel": { "source": "iana" }, "application/vnd.uplanet.channel-wbxml": { "source": "iana" }, "application/vnd.uplanet.list": { "source": "iana" }, "application/vnd.uplanet.list-wbxml": { "source": "iana" }, "application/vnd.uplanet.listcmd": { "source": "iana" }, "application/vnd.uplanet.listcmd-wbxml": { "source": "iana" }, "application/vnd.uplanet.signal": { "source": "iana" }, "application/vnd.uri-map": { "source": "iana" }, "application/vnd.valve.source.material": { "source": "iana" }, "application/vnd.vcx": { "source": "iana", "extensions": [ "vcx" ] }, "application/vnd.vd-study": { "source": "iana" }, "application/vnd.vectorworks": { "source": "iana" }, "application/vnd.vel+json": { "source": "iana", "compressible": true }, "application/vnd.verimatrix.vcas": { "source": "iana" }, "application/vnd.veritone.aion+json": { "source": "iana", "compressible": true }, "application/vnd.veryant.thin": { "source": "iana" }, "application/vnd.ves.encrypted": { "source": "iana" }, "application/vnd.vidsoft.vidconference": { "source": "iana" }, "application/vnd.visio": { "source": "iana", "extensions": [ "vsd", "vst", "vss", "vsw" ] }, "application/vnd.visionary": { "source": "iana", "extensions": [ "vis" ] }, "application/vnd.vividence.scriptfile": { "source": "iana" }, "application/vnd.vsf": { "source": "iana", "extensions": [ "vsf" ] }, "application/vnd.wap.sic": { "source": "iana" }, "application/vnd.wap.slc": { "source": "iana" }, "application/vnd.wap.wbxml": { "source": "iana", "charset": "UTF-8", "extensions": [ "wbxml" ] }, "application/vnd.wap.wmlc": { "source": "iana", "extensions": [ "wmlc" ] }, "application/vnd.wap.wmlscriptc": { "source": "iana", "extensions": [ "wmlsc" ] }, "application/vnd.webturbo": { "source": "iana", "extensions": [ "wtb" ] }, "application/vnd.wfa.dpp": { "source": "iana" }, "application/vnd.wfa.p2p": { "source": "iana" }, "application/vnd.wfa.wsc": { "source": "iana" }, "application/vnd.windows.devicepairing": { "source": "iana" }, "application/vnd.wmc": { "source": "iana" }, "application/vnd.wmf.bootstrap": { "source": "iana" }, "application/vnd.wolfram.mathematica": { "source": "iana" }, "application/vnd.wolfram.mathematica.package": { "source": "iana" }, "application/vnd.wolfram.player": { "source": "iana", "extensions": [ "nbp" ] }, "application/vnd.wordperfect": { "source": "iana", "extensions": [ "wpd" ] }, "application/vnd.wqd": { "source": "iana", "extensions": [ "wqd" ] }, "application/vnd.wrq-hp3000-labelled": { "source": "iana" }, "application/vnd.wt.stf": { "source": "iana", "extensions": [ "stf" ] }, "application/vnd.wv.csp+wbxml": { "source": "iana" }, "application/vnd.wv.csp+xml": { "source": "iana", "compressible": true }, "application/vnd.wv.ssp+xml": { "source": "iana", "compressible": true }, "application/vnd.xacml+json": { "source": "iana", "compressible": true }, "application/vnd.xara": { "source": "iana", "extensions": [ "xar" ] }, "application/vnd.xfdl": { "source": "iana", "extensions": [ "xfdl" ] }, "application/vnd.xfdl.webform": { "source": "iana" }, "application/vnd.xmi+xml": { "source": "iana", "compressible": true }, "application/vnd.xmpie.cpkg": { "source": "iana" }, "application/vnd.xmpie.dpkg": { "source": "iana" }, "application/vnd.xmpie.plan": { "source": "iana" }, "application/vnd.xmpie.ppkg": { "source": "iana" }, "application/vnd.xmpie.xlim": { "source": "iana" }, "application/vnd.yamaha.hv-dic": { "source": "iana", "extensions": [ "hvd" ] }, "application/vnd.yamaha.hv-script": { "source": "iana", "extensions": [ "hvs" ] }, "application/vnd.yamaha.hv-voice": { "source": "iana", "extensions": [ "hvp" ] }, "application/vnd.yamaha.openscoreformat": { "source": "iana", "extensions": [ "osf" ] }, "application/vnd.yamaha.openscoreformat.osfpvg+xml": { "source": "iana", "compressible": true, "extensions": [ "osfpvg" ] }, "application/vnd.yamaha.remote-setup": { "source": "iana" }, "application/vnd.yamaha.smaf-audio": { "source": "iana", "extensions": [ "saf" ] }, "application/vnd.yamaha.smaf-phrase": { "source": "iana", "extensions": [ "spf" ] }, "application/vnd.yamaha.through-ngn": { "source": "iana" }, "application/vnd.yamaha.tunnel-udpencap": { "source": "iana" }, "application/vnd.yaoweme": { "source": "iana" }, "application/vnd.yellowriver-custom-menu": { "source": "iana", "extensions": [ "cmp" ] }, "application/vnd.youtube.yt": { "source": "iana" }, "application/vnd.zul": { "source": "iana", "extensions": [ "zir", "zirz" ] }, "application/vnd.zzazz.deck+xml": { "source": "iana", "compressible": true, "extensions": [ "zaz" ] }, "application/voicexml+xml": { "source": "iana", "compressible": true, "extensions": [ "vxml" ] }, "application/voucher-cms+json": { "source": "iana", "compressible": true }, "application/vq-rtcpxr": { "source": "iana" }, "application/wasm": { "source": "iana", "compressible": true, "extensions": [ "wasm" ] }, "application/watcherinfo+xml": { "source": "iana", "compressible": true, "extensions": [ "wif" ] }, "application/webpush-options+json": { "source": "iana", "compressible": true }, "application/whoispp-query": { "source": "iana" }, "application/whoispp-response": { "source": "iana" }, "application/widget": { "source": "iana", "extensions": [ "wgt" ] }, "application/winhlp": { "source": "apache", "extensions": [ "hlp" ] }, "application/wita": { "source": "iana" }, "application/wordperfect5.1": { "source": "iana" }, "application/wsdl+xml": { "source": "iana", "compressible": true, "extensions": [ "wsdl" ] }, "application/wspolicy+xml": { "source": "iana", "compressible": true, "extensions": [ "wspolicy" ] }, "application/x-7z-compressed": { "source": "apache", "compressible": false, "extensions": [ "7z" ] }, "application/x-abiword": { "source": "apache", "extensions": [ "abw" ] }, "application/x-ace-compressed": { "source": "apache", "extensions": [ "ace" ] }, "application/x-amf": { "source": "apache" }, "application/x-apple-diskimage": { "source": "apache", "extensions": [ "dmg" ] }, "application/x-arj": { "compressible": false, "extensions": [ "arj" ] }, "application/x-authorware-bin": { "source": "apache", "extensions": [ "aab", "x32", "u32", "vox" ] }, "application/x-authorware-map": { "source": "apache", "extensions": [ "aam" ] }, "application/x-authorware-seg": { "source": "apache", "extensions": [ "aas" ] }, "application/x-bcpio": { "source": "apache", "extensions": [ "bcpio" ] }, "application/x-bdoc": { "compressible": false, "extensions": [ "bdoc" ] }, "application/x-bittorrent": { "source": "apache", "extensions": [ "torrent" ] }, "application/x-blorb": { "source": "apache", "extensions": [ "blb", "blorb" ] }, "application/x-bzip": { "source": "apache", "compressible": false, "extensions": [ "bz" ] }, "application/x-bzip2": { "source": "apache", "compressible": false, "extensions": [ "bz2", "boz" ] }, "application/x-cbr": { "source": "apache", "extensions": [ "cbr", "cba", "cbt", "cbz", "cb7" ] }, "application/x-cdlink": { "source": "apache", "extensions": [ "vcd" ] }, "application/x-cfs-compressed": { "source": "apache", "extensions": [ "cfs" ] }, "application/x-chat": { "source": "apache", "extensions": [ "chat" ] }, "application/x-chess-pgn": { "source": "apache", "extensions": [ "pgn" ] }, "application/x-chrome-extension": { "extensions": [ "crx" ] }, "application/x-cocoa": { "source": "nginx", "extensions": [ "cco" ] }, "application/x-compress": { "source": "apache" }, "application/x-conference": { "source": "apache", "extensions": [ "nsc" ] }, "application/x-cpio": { "source": "apache", "extensions": [ "cpio" ] }, "application/x-csh": { "source": "apache", "extensions": [ "csh" ] }, "application/x-deb": { "compressible": false }, "application/x-debian-package": { "source": "apache", "extensions": [ "deb", "udeb" ] }, "application/x-dgc-compressed": { "source": "apache", "extensions": [ "dgc" ] }, "application/x-director": { "source": "apache", "extensions": [ "dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa" ] }, "application/x-doom": { "source": "apache", "extensions": [ "wad" ] }, "application/x-dtbncx+xml": { "source": "apache", "compressible": true, "extensions": [ "ncx" ] }, "application/x-dtbook+xml": { "source": "apache", "compressible": true, "extensions": [ "dtb" ] }, "application/x-dtbresource+xml": { "source": "apache", "compressible": true, "extensions": [ "res" ] }, "application/x-dvi": { "source": "apache", "compressible": false, "extensions": [ "dvi" ] }, "application/x-envoy": { "source": "apache", "extensions": [ "evy" ] }, "application/x-eva": { "source": "apache", "extensions": [ "eva" ] }, "application/x-font-bdf": { "source": "apache", "extensions": [ "bdf" ] }, "application/x-font-dos": { "source": "apache" }, "application/x-font-framemaker": { "source": "apache" }, "application/x-font-ghostscript": { "source": "apache", "extensions": [ "gsf" ] }, "application/x-font-libgrx": { "source": "apache" }, "application/x-font-linux-psf": { "source": "apache", "extensions": [ "psf" ] }, "application/x-font-pcf": { "source": "apache", "extensions": [ "pcf" ] }, "application/x-font-snf": { "source": "apache", "extensions": [ "snf" ] }, "application/x-font-speedo": { "source": "apache" }, "application/x-font-sunos-news": { "source": "apache" }, "application/x-font-type1": { "source": "apache", "extensions": [ "pfa", "pfb", "pfm", "afm" ] }, "application/x-font-vfont": { "source": "apache" }, "application/x-freearc": { "source": "apache", "extensions": [ "arc" ] }, "application/x-futuresplash": { "source": "apache", "extensions": [ "spl" ] }, "application/x-gca-compressed": { "source": "apache", "extensions": [ "gca" ] }, "application/x-glulx": { "source": "apache", "extensions": [ "ulx" ] }, "application/x-gnumeric": { "source": "apache", "extensions": [ "gnumeric" ] }, "application/x-gramps-xml": { "source": "apache", "extensions": [ "gramps" ] }, "application/x-gtar": { "source": "apache", "extensions": [ "gtar" ] }, "application/x-gzip": { "source": "apache" }, "application/x-hdf": { "source": "apache", "extensions": [ "hdf" ] }, "application/x-httpd-php": { "compressible": true, "extensions": [ "php" ] }, "application/x-install-instructions": { "source": "apache", "extensions": [ "install" ] }, "application/x-iso9660-image": { "source": "apache", "extensions": [ "iso" ] }, "application/x-iwork-keynote-sffkey": { "extensions": [ "key" ] }, "application/x-iwork-numbers-sffnumbers": { "extensions": [ "numbers" ] }, "application/x-iwork-pages-sffpages": { "extensions": [ "pages" ] }, "application/x-java-archive-diff": { "source": "nginx", "extensions": [ "jardiff" ] }, "application/x-java-jnlp-file": { "source": "apache", "compressible": false, "extensions": [ "jnlp" ] }, "application/x-javascript": { "compressible": true }, "application/x-keepass2": { "extensions": [ "kdbx" ] }, "application/x-latex": { "source": "apache", "compressible": false, "extensions": [ "latex" ] }, "application/x-lua-bytecode": { "extensions": [ "luac" ] }, "application/x-lzh-compressed": { "source": "apache", "extensions": [ "lzh", "lha" ] }, "application/x-makeself": { "source": "nginx", "extensions": [ "run" ] }, "application/x-mie": { "source": "apache", "extensions": [ "mie" ] }, "application/x-mobipocket-ebook": { "source": "apache", "extensions": [ "prc", "mobi" ] }, "application/x-mpegurl": { "compressible": false }, "application/x-ms-application": { "source": "apache", "extensions": [ "application" ] }, "application/x-ms-shortcut": { "source": "apache", "extensions": [ "lnk" ] }, "application/x-ms-wmd": { "source": "apache", "extensions": [ "wmd" ] }, "application/x-ms-wmz": { "source": "apache", "extensions": [ "wmz" ] }, "application/x-ms-xbap": { "source": "apache", "extensions": [ "xbap" ] }, "application/x-msaccess": { "source": "apache", "extensions": [ "mdb" ] }, "application/x-msbinder": { "source": "apache", "extensions": [ "obd" ] }, "application/x-mscardfile": { "source": "apache", "extensions": [ "crd" ] }, "application/x-msclip": { "source": "apache", "extensions": [ "clp" ] }, "application/x-msdos-program": { "extensions": [ "exe" ] }, "application/x-msdownload": { "source": "apache", "extensions": [ "exe", "dll", "com", "bat", "msi" ] }, "application/x-msmediaview": { "source": "apache", "extensions": [ "mvb", "m13", "m14" ] }, "application/x-msmetafile": { "source": "apache", "extensions": [ "wmf", "wmz", "emf", "emz" ] }, "application/x-msmoney": { "source": "apache", "extensions": [ "mny" ] }, "application/x-mspublisher": { "source": "apache", "extensions": [ "pub" ] }, "application/x-msschedule": { "source": "apache", "extensions": [ "scd" ] }, "application/x-msterminal": { "source": "apache", "extensions": [ "trm" ] }, "application/x-mswrite": { "source": "apache", "extensions": [ "wri" ] }, "application/x-netcdf": { "source": "apache", "extensions": [ "nc", "cdf" ] }, "application/x-ns-proxy-autoconfig": { "compressible": true, "extensions": [ "pac" ] }, "application/x-nzb": { "source": "apache", "extensions": [ "nzb" ] }, "application/x-perl": { "source": "nginx", "extensions": [ "pl", "pm" ] }, "application/x-pilot": { "source": "nginx", "extensions": [ "prc", "pdb" ] }, "application/x-pkcs12": { "source": "apache", "compressible": false, "extensions": [ "p12", "pfx" ] }, "application/x-pkcs7-certificates": { "source": "apache", "extensions": [ "p7b", "spc" ] }, "application/x-pkcs7-certreqresp": { "source": "apache", "extensions": [ "p7r" ] }, "application/x-pki-message": { "source": "iana" }, "application/x-rar-compressed": { "source": "apache", "compressible": false, "extensions": [ "rar" ] }, "application/x-redhat-package-manager": { "source": "nginx", "extensions": [ "rpm" ] }, "application/x-research-info-systems": { "source": "apache", "extensions": [ "ris" ] }, "application/x-sea": { "source": "nginx", "extensions": [ "sea" ] }, "application/x-sh": { "source": "apache", "compressible": true, "extensions": [ "sh" ] }, "application/x-shar": { "source": "apache", "extensions": [ "shar" ] }, "application/x-shockwave-flash": { "source": "apache", "compressible": false, "extensions": [ "swf" ] }, "application/x-silverlight-app": { "source": "apache", "extensions": [ "xap" ] }, "application/x-sql": { "source": "apache", "extensions": [ "sql" ] }, "application/x-stuffit": { "source": "apache", "compressible": false, "extensions": [ "sit" ] }, "application/x-stuffitx": { "source": "apache", "extensions": [ "sitx" ] }, "application/x-subrip": { "source": "apache", "extensions": [ "srt" ] }, "application/x-sv4cpio": { "source": "apache", "extensions": [ "sv4cpio" ] }, "application/x-sv4crc": { "source": "apache", "extensions": [ "sv4crc" ] }, "application/x-t3vm-image": { "source": "apache", "extensions": [ "t3" ] }, "application/x-tads": { "source": "apache", "extensions": [ "gam" ] }, "application/x-tar": { "source": "apache", "compressible": true, "extensions": [ "tar" ] }, "application/x-tcl": { "source": "apache", "extensions": [ "tcl", "tk" ] }, "application/x-tex": { "source": "apache", "extensions": [ "tex" ] }, "application/x-tex-tfm": { "source": "apache", "extensions": [ "tfm" ] }, "application/x-texinfo": { "source": "apache", "extensions": [ "texinfo", "texi" ] }, "application/x-tgif": { "source": "apache", "extensions": [ "obj" ] }, "application/x-ustar": { "source": "apache", "extensions": [ "ustar" ] }, "application/x-virtualbox-hdd": { "compressible": true, "extensions": [ "hdd" ] }, "application/x-virtualbox-ova": { "compressible": true, "extensions": [ "ova" ] }, "application/x-virtualbox-ovf": { "compressible": true, "extensions": [ "ovf" ] }, "application/x-virtualbox-vbox": { "compressible": true, "extensions": [ "vbox" ] }, "application/x-virtualbox-vbox-extpack": { "compressible": false, "extensions": [ "vbox-extpack" ] }, "application/x-virtualbox-vdi": { "compressible": true, "extensions": [ "vdi" ] }, "application/x-virtualbox-vhd": { "compressible": true, "extensions": [ "vhd" ] }, "application/x-virtualbox-vmdk": { "compressible": true, "extensions": [ "vmdk" ] }, "application/x-wais-source": { "source": "apache", "extensions": [ "src" ] }, "application/x-web-app-manifest+json": { "compressible": true, "extensions": [ "webapp" ] }, "application/x-www-form-urlencoded": { "source": "iana", "compressible": true }, "application/x-x509-ca-cert": { "source": "iana", "extensions": [ "der", "crt", "pem" ] }, "application/x-x509-ca-ra-cert": { "source": "iana" }, "application/x-x509-next-ca-cert": { "source": "iana" }, "application/x-xfig": { "source": "apache", "extensions": [ "fig" ] }, "application/x-xliff+xml": { "source": "apache", "compressible": true, "extensions": [ "xlf" ] }, "application/x-xpinstall": { "source": "apache", "compressible": false, "extensions": [ "xpi" ] }, "application/x-xz": { "source": "apache", "extensions": [ "xz" ] }, "application/x-zmachine": { "source": "apache", "extensions": [ "z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8" ] }, "application/x400-bp": { "source": "iana" }, "application/xacml+xml": { "source": "iana", "compressible": true }, "application/xaml+xml": { "source": "apache", "compressible": true, "extensions": [ "xaml" ] }, "application/xcap-att+xml": { "source": "iana", "compressible": true, "extensions": [ "xav" ] }, "application/xcap-caps+xml": { "source": "iana", "compressible": true, "extensions": [ "xca" ] }, "application/xcap-diff+xml": { "source": "iana", "compressible": true, "extensions": [ "xdf" ] }, "application/xcap-el+xml": { "source": "iana", "compressible": true, "extensions": [ "xel" ] }, "application/xcap-error+xml": { "source": "iana", "compressible": true }, "application/xcap-ns+xml": { "source": "iana", "compressible": true, "extensions": [ "xns" ] }, "application/xcon-conference-info+xml": { "source": "iana", "compressible": true }, "application/xcon-conference-info-diff+xml": { "source": "iana", "compressible": true }, "application/xenc+xml": { "source": "iana", "compressible": true, "extensions": [ "xenc" ] }, "application/xhtml+xml": { "source": "iana", "compressible": true, "extensions": [ "xhtml", "xht" ] }, "application/xhtml-voice+xml": { "source": "apache", "compressible": true }, "application/xliff+xml": { "source": "iana", "compressible": true, "extensions": [ "xlf" ] }, "application/xml": { "source": "iana", "compressible": true, "extensions": [ "xml", "xsl", "xsd", "rng" ] }, "application/xml-dtd": { "source": "iana", "compressible": true, "extensions": [ "dtd" ] }, "application/xml-external-parsed-entity": { "source": "iana" }, "application/xml-patch+xml": { "source": "iana", "compressible": true }, "application/xmpp+xml": { "source": "iana", "compressible": true }, "application/xop+xml": { "source": "iana", "compressible": true, "extensions": [ "xop" ] }, "application/xproc+xml": { "source": "apache", "compressible": true, "extensions": [ "xpl" ] }, "application/xslt+xml": { "source": "iana", "compressible": true, "extensions": [ "xsl", "xslt" ] }, "application/xspf+xml": { "source": "apache", "compressible": true, "extensions": [ "xspf" ] }, "application/xv+xml": { "source": "iana", "compressible": true, "extensions": [ "mxml", "xhvml", "xvml", "xvm" ] }, "application/yang": { "source": "iana", "extensions": [ "yang" ] }, "application/yang-data+json": { "source": "iana", "compressible": true }, "application/yang-data+xml": { "source": "iana", "compressible": true }, "application/yang-patch+json": { "source": "iana", "compressible": true }, "application/yang-patch+xml": { "source": "iana", "compressible": true }, "application/yin+xml": { "source": "iana", "compressible": true, "extensions": [ "yin" ] }, "application/zip": { "source": "iana", "compressible": false, "extensions": [ "zip" ] }, "application/zlib": { "source": "iana" }, "application/zstd": { "source": "iana" }, "audio/1d-interleaved-parityfec": { "source": "iana" }, "audio/32kadpcm": { "source": "iana" }, "audio/3gpp": { "source": "iana", "compressible": false, "extensions": [ "3gpp" ] }, "audio/3gpp2": { "source": "iana" }, "audio/aac": { "source": "iana" }, "audio/ac3": { "source": "iana" }, "audio/adpcm": { "source": "apache", "extensions": [ "adp" ] }, "audio/amr": { "source": "iana", "extensions": [ "amr" ] }, "audio/amr-wb": { "source": "iana" }, "audio/amr-wb+": { "source": "iana" }, "audio/aptx": { "source": "iana" }, "audio/asc": { "source": "iana" }, "audio/atrac-advanced-lossless": { "source": "iana" }, "audio/atrac-x": { "source": "iana" }, "audio/atrac3": { "source": "iana" }, "audio/basic": { "source": "iana", "compressible": false, "extensions": [ "au", "snd" ] }, "audio/bv16": { "source": "iana" }, "audio/bv32": { "source": "iana" }, "audio/clearmode": { "source": "iana" }, "audio/cn": { "source": "iana" }, "audio/dat12": { "source": "iana" }, "audio/dls": { "source": "iana" }, "audio/dsr-es201108": { "source": "iana" }, "audio/dsr-es202050": { "source": "iana" }, "audio/dsr-es202211": { "source": "iana" }, "audio/dsr-es202212": { "source": "iana" }, "audio/dv": { "source": "iana" }, "audio/dvi4": { "source": "iana" }, "audio/eac3": { "source": "iana" }, "audio/encaprtp": { "source": "iana" }, "audio/evrc": { "source": "iana" }, "audio/evrc-qcp": { "source": "iana" }, "audio/evrc0": { "source": "iana" }, "audio/evrc1": { "source": "iana" }, "audio/evrcb": { "source": "iana" }, "audio/evrcb0": { "source": "iana" }, "audio/evrcb1": { "source": "iana" }, "audio/evrcnw": { "source": "iana" }, "audio/evrcnw0": { "source": "iana" }, "audio/evrcnw1": { "source": "iana" }, "audio/evrcwb": { "source": "iana" }, "audio/evrcwb0": { "source": "iana" }, "audio/evrcwb1": { "source": "iana" }, "audio/evs": { "source": "iana" }, "audio/flexfec": { "source": "iana" }, "audio/fwdred": { "source": "iana" }, "audio/g711-0": { "source": "iana" }, "audio/g719": { "source": "iana" }, "audio/g722": { "source": "iana" }, "audio/g7221": { "source": "iana" }, "audio/g723": { "source": "iana" }, "audio/g726-16": { "source": "iana" }, "audio/g726-24": { "source": "iana" }, "audio/g726-32": { "source": "iana" }, "audio/g726-40": { "source": "iana" }, "audio/g728": { "source": "iana" }, "audio/g729": { "source": "iana" }, "audio/g7291": { "source": "iana" }, "audio/g729d": { "source": "iana" }, "audio/g729e": { "source": "iana" }, "audio/gsm": { "source": "iana" }, "audio/gsm-efr": { "source": "iana" }, "audio/gsm-hr-08": { "source": "iana" }, "audio/ilbc": { "source": "iana" }, "audio/ip-mr_v2.5": { "source": "iana" }, "audio/isac": { "source": "apache" }, "audio/l16": { "source": "iana" }, "audio/l20": { "source": "iana" }, "audio/l24": { "source": "iana", "compressible": false }, "audio/l8": { "source": "iana" }, "audio/lpc": { "source": "iana" }, "audio/melp": { "source": "iana" }, "audio/melp1200": { "source": "iana" }, "audio/melp2400": { "source": "iana" }, "audio/melp600": { "source": "iana" }, "audio/mhas": { "source": "iana" }, "audio/midi": { "source": "apache", "extensions": [ "mid", "midi", "kar", "rmi" ] }, "audio/mobile-xmf": { "source": "iana", "extensions": [ "mxmf" ] }, "audio/mp3": { "compressible": false, "extensions": [ "mp3" ] }, "audio/mp4": { "source": "iana", "compressible": false, "extensions": [ "m4a", "mp4a" ] }, "audio/mp4a-latm": { "source": "iana" }, "audio/mpa": { "source": "iana" }, "audio/mpa-robust": { "source": "iana" }, "audio/mpeg": { "source": "iana", "compressible": false, "extensions": [ "mpga", "mp2", "mp2a", "mp3", "m2a", "m3a" ] }, "audio/mpeg4-generic": { "source": "iana" }, "audio/musepack": { "source": "apache" }, "audio/ogg": { "source": "iana", "compressible": false, "extensions": [ "oga", "ogg", "spx", "opus" ] }, "audio/opus": { "source": "iana" }, "audio/parityfec": { "source": "iana" }, "audio/pcma": { "source": "iana" }, "audio/pcma-wb": { "source": "iana" }, "audio/pcmu": { "source": "iana" }, "audio/pcmu-wb": { "source": "iana" }, "audio/prs.sid": { "source": "iana" }, "audio/qcelp": { "source": "iana" }, "audio/raptorfec": { "source": "iana" }, "audio/red": { "source": "iana" }, "audio/rtp-enc-aescm128": { "source": "iana" }, "audio/rtp-midi": { "source": "iana" }, "audio/rtploopback": { "source": "iana" }, "audio/rtx": { "source": "iana" }, "audio/s3m": { "source": "apache", "extensions": [ "s3m" ] }, "audio/scip": { "source": "iana" }, "audio/silk": { "source": "apache", "extensions": [ "sil" ] }, "audio/smv": { "source": "iana" }, "audio/smv-qcp": { "source": "iana" }, "audio/smv0": { "source": "iana" }, "audio/sofa": { "source": "iana" }, "audio/sp-midi": { "source": "iana" }, "audio/speex": { "source": "iana" }, "audio/t140c": { "source": "iana" }, "audio/t38": { "source": "iana" }, "audio/telephone-event": { "source": "iana" }, "audio/tetra_acelp": { "source": "iana" }, "audio/tetra_acelp_bb": { "source": "iana" }, "audio/tone": { "source": "iana" }, "audio/tsvcis": { "source": "iana" }, "audio/uemclip": { "source": "iana" }, "audio/ulpfec": { "source": "iana" }, "audio/usac": { "source": "iana" }, "audio/vdvi": { "source": "iana" }, "audio/vmr-wb": { "source": "iana" }, "audio/vnd.3gpp.iufp": { "source": "iana" }, "audio/vnd.4sb": { "source": "iana" }, "audio/vnd.audiokoz": { "source": "iana" }, "audio/vnd.celp": { "source": "iana" }, "audio/vnd.cisco.nse": { "source": "iana" }, "audio/vnd.cmles.radio-events": { "source": "iana" }, "audio/vnd.cns.anp1": { "source": "iana" }, "audio/vnd.cns.inf1": { "source": "iana" }, "audio/vnd.dece.audio": { "source": "iana", "extensions": [ "uva", "uvva" ] }, "audio/vnd.digital-winds": { "source": "iana", "extensions": [ "eol" ] }, "audio/vnd.dlna.adts": { "source": "iana" }, "audio/vnd.dolby.heaac.1": { "source": "iana" }, "audio/vnd.dolby.heaac.2": { "source": "iana" }, "audio/vnd.dolby.mlp": { "source": "iana" }, "audio/vnd.dolby.mps": { "source": "iana" }, "audio/vnd.dolby.pl2": { "source": "iana" }, "audio/vnd.dolby.pl2x": { "source": "iana" }, "audio/vnd.dolby.pl2z": { "source": "iana" }, "audio/vnd.dolby.pulse.1": { "source": "iana" }, "audio/vnd.dra": { "source": "iana", "extensions": [ "dra" ] }, "audio/vnd.dts": { "source": "iana", "extensions": [ "dts" ] }, "audio/vnd.dts.hd": { "source": "iana", "extensions": [ "dtshd" ] }, "audio/vnd.dts.uhd": { "source": "iana" }, "audio/vnd.dvb.file": { "source": "iana" }, "audio/vnd.everad.plj": { "source": "iana" }, "audio/vnd.hns.audio": { "source": "iana" }, "audio/vnd.lucent.voice": { "source": "iana", "extensions": [ "lvp" ] }, "audio/vnd.ms-playready.media.pya": { "source": "iana", "extensions": [ "pya" ] }, "audio/vnd.nokia.mobile-xmf": { "source": "iana" }, "audio/vnd.nortel.vbk": { "source": "iana" }, "audio/vnd.nuera.ecelp4800": { "source": "iana", "extensions": [ "ecelp4800" ] }, "audio/vnd.nuera.ecelp7470": { "source": "iana", "extensions": [ "ecelp7470" ] }, "audio/vnd.nuera.ecelp9600": { "source": "iana", "extensions": [ "ecelp9600" ] }, "audio/vnd.octel.sbc": { "source": "iana" }, "audio/vnd.presonus.multitrack": { "source": "iana" }, "audio/vnd.qcelp": { "source": "iana" }, "audio/vnd.rhetorex.32kadpcm": { "source": "iana" }, "audio/vnd.rip": { "source": "iana", "extensions": [ "rip" ] }, "audio/vnd.rn-realaudio": { "compressible": false }, "audio/vnd.sealedmedia.softseal.mpeg": { "source": "iana" }, "audio/vnd.vmx.cvsd": { "source": "iana" }, "audio/vnd.wave": { "compressible": false }, "audio/vorbis": { "source": "iana", "compressible": false }, "audio/vorbis-config": { "source": "iana" }, "audio/wav": { "compressible": false, "extensions": [ "wav" ] }, "audio/wave": { "compressible": false, "extensions": [ "wav" ] }, "audio/webm": { "source": "apache", "compressible": false, "extensions": [ "weba" ] }, "audio/x-aac": { "source": "apache", "compressible": false, "extensions": [ "aac" ] }, "audio/x-aiff": { "source": "apache", "extensions": [ "aif", "aiff", "aifc" ] }, "audio/x-caf": { "source": "apache", "compressible": false, "extensions": [ "caf" ] }, "audio/x-flac": { "source": "apache", "extensions": [ "flac" ] }, "audio/x-m4a": { "source": "nginx", "extensions": [ "m4a" ] }, "audio/x-matroska": { "source": "apache", "extensions": [ "mka" ] }, "audio/x-mpegurl": { "source": "apache", "extensions": [ "m3u" ] }, "audio/x-ms-wax": { "source": "apache", "extensions": [ "wax" ] }, "audio/x-ms-wma": { "source": "apache", "extensions": [ "wma" ] }, "audio/x-pn-realaudio": { "source": "apache", "extensions": [ "ram", "ra" ] }, "audio/x-pn-realaudio-plugin": { "source": "apache", "extensions": [ "rmp" ] }, "audio/x-realaudio": { "source": "nginx", "extensions": [ "ra" ] }, "audio/x-tta": { "source": "apache" }, "audio/x-wav": { "source": "apache", "extensions": [ "wav" ] }, "audio/xm": { "source": "apache", "extensions": [ "xm" ] }, "chemical/x-cdx": { "source": "apache", "extensions": [ "cdx" ] }, "chemical/x-cif": { "source": "apache", "extensions": [ "cif" ] }, "chemical/x-cmdf": { "source": "apache", "extensions": [ "cmdf" ] }, "chemical/x-cml": { "source": "apache", "extensions": [ "cml" ] }, "chemical/x-csml": { "source": "apache", "extensions": [ "csml" ] }, "chemical/x-pdb": { "source": "apache" }, "chemical/x-xyz": { "source": "apache", "extensions": [ "xyz" ] }, "font/collection": { "source": "iana", "extensions": [ "ttc" ] }, "font/otf": { "source": "iana", "compressible": true, "extensions": [ "otf" ] }, "font/sfnt": { "source": "iana" }, "font/ttf": { "source": "iana", "compressible": true, "extensions": [ "ttf" ] }, "font/woff": { "source": "iana", "extensions": [ "woff" ] }, "font/woff2": { "source": "iana", "extensions": [ "woff2" ] }, "image/aces": { "source": "iana", "extensions": [ "exr" ] }, "image/apng": { "compressible": false, "extensions": [ "apng" ] }, "image/avci": { "source": "iana", "extensions": [ "avci" ] }, "image/avcs": { "source": "iana", "extensions": [ "avcs" ] }, "image/avif": { "source": "iana", "compressible": false, "extensions": [ "avif" ] }, "image/bmp": { "source": "iana", "compressible": true, "extensions": [ "bmp" ] }, "image/cgm": { "source": "iana", "extensions": [ "cgm" ] }, "image/dicom-rle": { "source": "iana", "extensions": [ "drle" ] }, "image/emf": { "source": "iana", "extensions": [ "emf" ] }, "image/fits": { "source": "iana", "extensions": [ "fits" ] }, "image/g3fax": { "source": "iana", "extensions": [ "g3" ] }, "image/gif": { "source": "iana", "compressible": false, "extensions": [ "gif" ] }, "image/heic": { "source": "iana", "extensions": [ "heic" ] }, "image/heic-sequence": { "source": "iana", "extensions": [ "heics" ] }, "image/heif": { "source": "iana", "extensions": [ "heif" ] }, "image/heif-sequence": { "source": "iana", "extensions": [ "heifs" ] }, "image/hej2k": { "source": "iana", "extensions": [ "hej2" ] }, "image/hsj2": { "source": "iana", "extensions": [ "hsj2" ] }, "image/ief": { "source": "iana", "extensions": [ "ief" ] }, "image/jls": { "source": "iana", "extensions": [ "jls" ] }, "image/jp2": { "source": "iana", "compressible": false, "extensions": [ "jp2", "jpg2" ] }, "image/jpeg": { "source": "iana", "compressible": false, "extensions": [ "jpeg", "jpg", "jpe" ] }, "image/jph": { "source": "iana", "extensions": [ "jph" ] }, "image/jphc": { "source": "iana", "extensions": [ "jhc" ] }, "image/jpm": { "source": "iana", "compressible": false, "extensions": [ "jpm" ] }, "image/jpx": { "source": "iana", "compressible": false, "extensions": [ "jpx", "jpf" ] }, "image/jxr": { "source": "iana", "extensions": [ "jxr" ] }, "image/jxra": { "source": "iana", "extensions": [ "jxra" ] }, "image/jxrs": { "source": "iana", "extensions": [ "jxrs" ] }, "image/jxs": { "source": "iana", "extensions": [ "jxs" ] }, "image/jxsc": { "source": "iana", "extensions": [ "jxsc" ] }, "image/jxsi": { "source": "iana", "extensions": [ "jxsi" ] }, "image/jxss": { "source": "iana", "extensions": [ "jxss" ] }, "image/ktx": { "source": "iana", "extensions": [ "ktx" ] }, "image/ktx2": { "source": "iana", "extensions": [ "ktx2" ] }, "image/naplps": { "source": "iana" }, "image/pjpeg": { "compressible": false }, "image/png": { "source": "iana", "compressible": false, "extensions": [ "png" ] }, "image/prs.btif": { "source": "iana", "extensions": [ "btif" ] }, "image/prs.pti": { "source": "iana", "extensions": [ "pti" ] }, "image/pwg-raster": { "source": "iana" }, "image/sgi": { "source": "apache", "extensions": [ "sgi" ] }, "image/svg+xml": { "source": "iana", "compressible": true, "extensions": [ "svg", "svgz" ] }, "image/t38": { "source": "iana", "extensions": [ "t38" ] }, "image/tiff": { "source": "iana", "compressible": false, "extensions": [ "tif", "tiff" ] }, "image/tiff-fx": { "source": "iana", "extensions": [ "tfx" ] }, "image/vnd.adobe.photoshop": { "source": "iana", "compressible": true, "extensions": [ "psd" ] }, "image/vnd.airzip.accelerator.azv": { "source": "iana", "extensions": [ "azv" ] }, "image/vnd.cns.inf2": { "source": "iana" }, "image/vnd.dece.graphic": { "source": "iana", "extensions": [ "uvi", "uvvi", "uvg", "uvvg" ] }, "image/vnd.djvu": { "source": "iana", "extensions": [ "djvu", "djv" ] }, "image/vnd.dvb.subtitle": { "source": "iana", "extensions": [ "sub" ] }, "image/vnd.dwg": { "source": "iana", "extensions": [ "dwg" ] }, "image/vnd.dxf": { "source": "iana", "extensions": [ "dxf" ] }, "image/vnd.fastbidsheet": { "source": "iana", "extensions": [ "fbs" ] }, "image/vnd.fpx": { "source": "iana", "extensions": [ "fpx" ] }, "image/vnd.fst": { "source": "iana", "extensions": [ "fst" ] }, "image/vnd.fujixerox.edmics-mmr": { "source": "iana", "extensions": [ "mmr" ] }, "image/vnd.fujixerox.edmics-rlc": { "source": "iana", "extensions": [ "rlc" ] }, "image/vnd.globalgraphics.pgb": { "source": "iana" }, "image/vnd.microsoft.icon": { "source": "iana", "compressible": true, "extensions": [ "ico" ] }, "image/vnd.mix": { "source": "iana" }, "image/vnd.mozilla.apng": { "source": "iana" }, "image/vnd.ms-dds": { "compressible": true, "extensions": [ "dds" ] }, "image/vnd.ms-modi": { "source": "iana", "extensions": [ "mdi" ] }, "image/vnd.ms-photo": { "source": "apache", "extensions": [ "wdp" ] }, "image/vnd.net-fpx": { "source": "iana", "extensions": [ "npx" ] }, "image/vnd.pco.b16": { "source": "iana", "extensions": [ "b16" ] }, "image/vnd.radiance": { "source": "iana" }, "image/vnd.sealed.png": { "source": "iana" }, "image/vnd.sealedmedia.softseal.gif": { "source": "iana" }, "image/vnd.sealedmedia.softseal.jpg": { "source": "iana" }, "image/vnd.svf": { "source": "iana" }, "image/vnd.tencent.tap": { "source": "iana", "extensions": [ "tap" ] }, "image/vnd.valve.source.texture": { "source": "iana", "extensions": [ "vtf" ] }, "image/vnd.wap.wbmp": { "source": "iana", "extensions": [ "wbmp" ] }, "image/vnd.xiff": { "source": "iana", "extensions": [ "xif" ] }, "image/vnd.zbrush.pcx": { "source": "iana", "extensions": [ "pcx" ] }, "image/webp": { "source": "apache", "extensions": [ "webp" ] }, "image/wmf": { "source": "iana", "extensions": [ "wmf" ] }, "image/x-3ds": { "source": "apache", "extensions": [ "3ds" ] }, "image/x-cmu-raster": { "source": "apache", "extensions": [ "ras" ] }, "image/x-cmx": { "source": "apache", "extensions": [ "cmx" ] }, "image/x-freehand": { "source": "apache", "extensions": [ "fh", "fhc", "fh4", "fh5", "fh7" ] }, "image/x-icon": { "source": "apache", "compressible": true, "extensions": [ "ico" ] }, "image/x-jng": { "source": "nginx", "extensions": [ "jng" ] }, "image/x-mrsid-image": { "source": "apache", "extensions": [ "sid" ] }, "image/x-ms-bmp": { "source": "nginx", "compressible": true, "extensions": [ "bmp" ] }, "image/x-pcx": { "source": "apache", "extensions": [ "pcx" ] }, "image/x-pict": { "source": "apache", "extensions": [ "pic", "pct" ] }, "image/x-portable-anymap": { "source": "apache", "extensions": [ "pnm" ] }, "image/x-portable-bitmap": { "source": "apache", "extensions": [ "pbm" ] }, "image/x-portable-graymap": { "source": "apache", "extensions": [ "pgm" ] }, "image/x-portable-pixmap": { "source": "apache", "extensions": [ "ppm" ] }, "image/x-rgb": { "source": "apache", "extensions": [ "rgb" ] }, "image/x-tga": { "source": "apache", "extensions": [ "tga" ] }, "image/x-xbitmap": { "source": "apache", "extensions": [ "xbm" ] }, "image/x-xcf": { "compressible": false }, "image/x-xpixmap": { "source": "apache", "extensions": [ "xpm" ] }, "image/x-xwindowdump": { "source": "apache", "extensions": [ "xwd" ] }, "message/cpim": { "source": "iana" }, "message/delivery-status": { "source": "iana" }, "message/disposition-notification": { "source": "iana", "extensions": [ "disposition-notification" ] }, "message/external-body": { "source": "iana" }, "message/feedback-report": { "source": "iana" }, "message/global": { "source": "iana", "extensions": [ "u8msg" ] }, "message/global-delivery-status": { "source": "iana", "extensions": [ "u8dsn" ] }, "message/global-disposition-notification": { "source": "iana", "extensions": [ "u8mdn" ] }, "message/global-headers": { "source": "iana", "extensions": [ "u8hdr" ] }, "message/http": { "source": "iana", "compressible": false }, "message/imdn+xml": { "source": "iana", "compressible": true }, "message/news": { "source": "iana" }, "message/partial": { "source": "iana", "compressible": false }, "message/rfc822": { "source": "iana", "compressible": true, "extensions": [ "eml", "mime" ] }, "message/s-http": { "source": "iana" }, "message/sip": { "source": "iana" }, "message/sipfrag": { "source": "iana" }, "message/tracking-status": { "source": "iana" }, "message/vnd.si.simp": { "source": "iana" }, "message/vnd.wfa.wsc": { "source": "iana", "extensions": [ "wsc" ] }, "model/3mf": { "source": "iana", "extensions": [ "3mf" ] }, "model/e57": { "source": "iana" }, "model/gltf+json": { "source": "iana", "compressible": true, "extensions": [ "gltf" ] }, "model/gltf-binary": { "source": "iana", "compressible": true, "extensions": [ "glb" ] }, "model/iges": { "source": "iana", "compressible": false, "extensions": [ "igs", "iges" ] }, "model/mesh": { "source": "iana", "compressible": false, "extensions": [ "msh", "mesh", "silo" ] }, "model/mtl": { "source": "iana", "extensions": [ "mtl" ] }, "model/obj": { "source": "iana", "extensions": [ "obj" ] }, "model/step": { "source": "iana" }, "model/step+xml": { "source": "iana", "compressible": true, "extensions": [ "stpx" ] }, "model/step+zip": { "source": "iana", "compressible": false, "extensions": [ "stpz" ] }, "model/step-xml+zip": { "source": "iana", "compressible": false, "extensions": [ "stpxz" ] }, "model/stl": { "source": "iana", "extensions": [ "stl" ] }, "model/vnd.collada+xml": { "source": "iana", "compressible": true, "extensions": [ "dae" ] }, "model/vnd.dwf": { "source": "iana", "extensions": [ "dwf" ] }, "model/vnd.flatland.3dml": { "source": "iana" }, "model/vnd.gdl": { "source": "iana", "extensions": [ "gdl" ] }, "model/vnd.gs-gdl": { "source": "apache" }, "model/vnd.gs.gdl": { "source": "iana" }, "model/vnd.gtw": { "source": "iana", "extensions": [ "gtw" ] }, "model/vnd.moml+xml": { "source": "iana", "compressible": true }, "model/vnd.mts": { "source": "iana", "extensions": [ "mts" ] }, "model/vnd.opengex": { "source": "iana", "extensions": [ "ogex" ] }, "model/vnd.parasolid.transmit.binary": { "source": "iana", "extensions": [ "x_b" ] }, "model/vnd.parasolid.transmit.text": { "source": "iana", "extensions": [ "x_t" ] }, "model/vnd.pytha.pyox": { "source": "iana" }, "model/vnd.rosette.annotated-data-model": { "source": "iana" }, "model/vnd.sap.vds": { "source": "iana", "extensions": [ "vds" ] }, "model/vnd.usdz+zip": { "source": "iana", "compressible": false, "extensions": [ "usdz" ] }, "model/vnd.valve.source.compiled-map": { "source": "iana", "extensions": [ "bsp" ] }, "model/vnd.vtu": { "source": "iana", "extensions": [ "vtu" ] }, "model/vrml": { "source": "iana", "compressible": false, "extensions": [ "wrl", "vrml" ] }, "model/x3d+binary": { "source": "apache", "compressible": false, "extensions": [ "x3db", "x3dbz" ] }, "model/x3d+fastinfoset": { "source": "iana", "extensions": [ "x3db" ] }, "model/x3d+vrml": { "source": "apache", "compressible": false, "extensions": [ "x3dv", "x3dvz" ] }, "model/x3d+xml": { "source": "iana", "compressible": true, "extensions": [ "x3d", "x3dz" ] }, "model/x3d-vrml": { "source": "iana", "extensions": [ "x3dv" ] }, "multipart/alternative": { "source": "iana", "compressible": false }, "multipart/appledouble": { "source": "iana" }, "multipart/byteranges": { "source": "iana" }, "multipart/digest": { "source": "iana" }, "multipart/encrypted": { "source": "iana", "compressible": false }, "multipart/form-data": { "source": "iana", "compressible": false }, "multipart/header-set": { "source": "iana" }, "multipart/mixed": { "source": "iana" }, "multipart/multilingual": { "source": "iana" }, "multipart/parallel": { "source": "iana" }, "multipart/related": { "source": "iana", "compressible": false }, "multipart/report": { "source": "iana" }, "multipart/signed": { "source": "iana", "compressible": false }, "multipart/vnd.bint.med-plus": { "source": "iana" }, "multipart/voice-message": { "source": "iana" }, "multipart/x-mixed-replace": { "source": "iana" }, "text/1d-interleaved-parityfec": { "source": "iana" }, "text/cache-manifest": { "source": "iana", "compressible": true, "extensions": [ "appcache", "manifest" ] }, "text/calendar": { "source": "iana", "extensions": [ "ics", "ifb" ] }, "text/calender": { "compressible": true }, "text/cmd": { "compressible": true }, "text/coffeescript": { "extensions": [ "coffee", "litcoffee" ] }, "text/cql": { "source": "iana" }, "text/cql-expression": { "source": "iana" }, "text/cql-identifier": { "source": "iana" }, "text/css": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "css" ] }, "text/csv": { "source": "iana", "compressible": true, "extensions": [ "csv" ] }, "text/csv-schema": { "source": "iana" }, "text/directory": { "source": "iana" }, "text/dns": { "source": "iana" }, "text/ecmascript": { "source": "iana" }, "text/encaprtp": { "source": "iana" }, "text/enriched": { "source": "iana" }, "text/fhirpath": { "source": "iana" }, "text/flexfec": { "source": "iana" }, "text/fwdred": { "source": "iana" }, "text/gff3": { "source": "iana" }, "text/grammar-ref-list": { "source": "iana" }, "text/html": { "source": "iana", "compressible": true, "extensions": [ "html", "htm", "shtml" ] }, "text/jade": { "extensions": [ "jade" ] }, "text/javascript": { "source": "iana", "compressible": true }, "text/jcr-cnd": { "source": "iana" }, "text/jsx": { "compressible": true, "extensions": [ "jsx" ] }, "text/less": { "compressible": true, "extensions": [ "less" ] }, "text/markdown": { "source": "iana", "compressible": true, "extensions": [ "markdown", "md" ] }, "text/mathml": { "source": "nginx", "extensions": [ "mml" ] }, "text/mdx": { "compressible": true, "extensions": [ "mdx" ] }, "text/mizar": { "source": "iana" }, "text/n3": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "n3" ] }, "text/parameters": { "source": "iana", "charset": "UTF-8" }, "text/parityfec": { "source": "iana" }, "text/plain": { "source": "iana", "compressible": true, "extensions": [ "txt", "text", "conf", "def", "list", "log", "in", "ini" ] }, "text/provenance-notation": { "source": "iana", "charset": "UTF-8" }, "text/prs.fallenstein.rst": { "source": "iana" }, "text/prs.lines.tag": { "source": "iana", "extensions": [ "dsc" ] }, "text/prs.prop.logic": { "source": "iana" }, "text/raptorfec": { "source": "iana" }, "text/red": { "source": "iana" }, "text/rfc822-headers": { "source": "iana" }, "text/richtext": { "source": "iana", "compressible": true, "extensions": [ "rtx" ] }, "text/rtf": { "source": "iana", "compressible": true, "extensions": [ "rtf" ] }, "text/rtp-enc-aescm128": { "source": "iana" }, "text/rtploopback": { "source": "iana" }, "text/rtx": { "source": "iana" }, "text/sgml": { "source": "iana", "extensions": [ "sgml", "sgm" ] }, "text/shaclc": { "source": "iana" }, "text/shex": { "source": "iana", "extensions": [ "shex" ] }, "text/slim": { "extensions": [ "slim", "slm" ] }, "text/spdx": { "source": "iana", "extensions": [ "spdx" ] }, "text/strings": { "source": "iana" }, "text/stylus": { "extensions": [ "stylus", "styl" ] }, "text/t140": { "source": "iana" }, "text/tab-separated-values": { "source": "iana", "compressible": true, "extensions": [ "tsv" ] }, "text/troff": { "source": "iana", "extensions": [ "t", "tr", "roff", "man", "me", "ms" ] }, "text/turtle": { "source": "iana", "charset": "UTF-8", "extensions": [ "ttl" ] }, "text/ulpfec": { "source": "iana" }, "text/uri-list": { "source": "iana", "compressible": true, "extensions": [ "uri", "uris", "urls" ] }, "text/vcard": { "source": "iana", "compressible": true, "extensions": [ "vcard" ] }, "text/vnd.a": { "source": "iana" }, "text/vnd.abc": { "source": "iana" }, "text/vnd.ascii-art": { "source": "iana" }, "text/vnd.curl": { "source": "iana", "extensions": [ "curl" ] }, "text/vnd.curl.dcurl": { "source": "apache", "extensions": [ "dcurl" ] }, "text/vnd.curl.mcurl": { "source": "apache", "extensions": [ "mcurl" ] }, "text/vnd.curl.scurl": { "source": "apache", "extensions": [ "scurl" ] }, "text/vnd.debian.copyright": { "source": "iana", "charset": "UTF-8" }, "text/vnd.dmclientscript": { "source": "iana" }, "text/vnd.dvb.subtitle": { "source": "iana", "extensions": [ "sub" ] }, "text/vnd.esmertec.theme-descriptor": { "source": "iana", "charset": "UTF-8" }, "text/vnd.familysearch.gedcom": { "source": "iana", "extensions": [ "ged" ] }, "text/vnd.ficlab.flt": { "source": "iana" }, "text/vnd.fly": { "source": "iana", "extensions": [ "fly" ] }, "text/vnd.fmi.flexstor": { "source": "iana", "extensions": [ "flx" ] }, "text/vnd.gml": { "source": "iana" }, "text/vnd.graphviz": { "source": "iana", "extensions": [ "gv" ] }, "text/vnd.hans": { "source": "iana" }, "text/vnd.hgl": { "source": "iana" }, "text/vnd.in3d.3dml": { "source": "iana", "extensions": [ "3dml" ] }, "text/vnd.in3d.spot": { "source": "iana", "extensions": [ "spot" ] }, "text/vnd.iptc.newsml": { "source": "iana" }, "text/vnd.iptc.nitf": { "source": "iana" }, "text/vnd.latex-z": { "source": "iana" }, "text/vnd.motorola.reflex": { "source": "iana" }, "text/vnd.ms-mediapackage": { "source": "iana" }, "text/vnd.net2phone.commcenter.command": { "source": "iana" }, "text/vnd.radisys.msml-basic-layout": { "source": "iana" }, "text/vnd.senx.warpscript": { "source": "iana" }, "text/vnd.si.uricatalogue": { "source": "iana" }, "text/vnd.sosi": { "source": "iana" }, "text/vnd.sun.j2me.app-descriptor": { "source": "iana", "charset": "UTF-8", "extensions": [ "jad" ] }, "text/vnd.trolltech.linguist": { "source": "iana", "charset": "UTF-8" }, "text/vnd.wap.si": { "source": "iana" }, "text/vnd.wap.sl": { "source": "iana" }, "text/vnd.wap.wml": { "source": "iana", "extensions": [ "wml" ] }, "text/vnd.wap.wmlscript": { "source": "iana", "extensions": [ "wmls" ] }, "text/vtt": { "source": "iana", "charset": "UTF-8", "compressible": true, "extensions": [ "vtt" ] }, "text/x-asm": { "source": "apache", "extensions": [ "s", "asm" ] }, "text/x-c": { "source": "apache", "extensions": [ "c", "cc", "cxx", "cpp", "h", "hh", "dic" ] }, "text/x-component": { "source": "nginx", "extensions": [ "htc" ] }, "text/x-fortran": { "source": "apache", "extensions": [ "f", "for", "f77", "f90" ] }, "text/x-gwt-rpc": { "compressible": true }, "text/x-handlebars-template": { "extensions": [ "hbs" ] }, "text/x-java-source": { "source": "apache", "extensions": [ "java" ] }, "text/x-jquery-tmpl": { "compressible": true }, "text/x-lua": { "extensions": [ "lua" ] }, "text/x-markdown": { "compressible": true, "extensions": [ "mkd" ] }, "text/x-nfo": { "source": "apache", "extensions": [ "nfo" ] }, "text/x-opml": { "source": "apache", "extensions": [ "opml" ] }, "text/x-org": { "compressible": true, "extensions": [ "org" ] }, "text/x-pascal": { "source": "apache", "extensions": [ "p", "pas" ] }, "text/x-processing": { "compressible": true, "extensions": [ "pde" ] }, "text/x-sass": { "extensions": [ "sass" ] }, "text/x-scss": { "extensions": [ "scss" ] }, "text/x-setext": { "source": "apache", "extensions": [ "etx" ] }, "text/x-sfv": { "source": "apache", "extensions": [ "sfv" ] }, "text/x-suse-ymp": { "compressible": true, "extensions": [ "ymp" ] }, "text/x-uuencode": { "source": "apache", "extensions": [ "uu" ] }, "text/x-vcalendar": { "source": "apache", "extensions": [ "vcs" ] }, "text/x-vcard": { "source": "apache", "extensions": [ "vcf" ] }, "text/xml": { "source": "iana", "compressible": true, "extensions": [ "xml" ] }, "text/xml-external-parsed-entity": { "source": "iana" }, "text/yaml": { "compressible": true, "extensions": [ "yaml", "yml" ] }, "video/1d-interleaved-parityfec": { "source": "iana" }, "video/3gpp": { "source": "iana", "extensions": [ "3gp", "3gpp" ] }, "video/3gpp-tt": { "source": "iana" }, "video/3gpp2": { "source": "iana", "extensions": [ "3g2" ] }, "video/av1": { "source": "iana" }, "video/bmpeg": { "source": "iana" }, "video/bt656": { "source": "iana" }, "video/celb": { "source": "iana" }, "video/dv": { "source": "iana" }, "video/encaprtp": { "source": "iana" }, "video/ffv1": { "source": "iana" }, "video/flexfec": { "source": "iana" }, "video/h261": { "source": "iana", "extensions": [ "h261" ] }, "video/h263": { "source": "iana", "extensions": [ "h263" ] }, "video/h263-1998": { "source": "iana" }, "video/h263-2000": { "source": "iana" }, "video/h264": { "source": "iana", "extensions": [ "h264" ] }, "video/h264-rcdo": { "source": "iana" }, "video/h264-svc": { "source": "iana" }, "video/h265": { "source": "iana" }, "video/iso.segment": { "source": "iana", "extensions": [ "m4s" ] }, "video/jpeg": { "source": "iana", "extensions": [ "jpgv" ] }, "video/jpeg2000": { "source": "iana" }, "video/jpm": { "source": "apache", "extensions": [ "jpm", "jpgm" ] }, "video/jxsv": { "source": "iana" }, "video/mj2": { "source": "iana", "extensions": [ "mj2", "mjp2" ] }, "video/mp1s": { "source": "iana" }, "video/mp2p": { "source": "iana" }, "video/mp2t": { "source": "iana", "extensions": [ "ts" ] }, "video/mp4": { "source": "iana", "compressible": false, "extensions": [ "mp4", "mp4v", "mpg4" ] }, "video/mp4v-es": { "source": "iana" }, "video/mpeg": { "source": "iana", "compressible": false, "extensions": [ "mpeg", "mpg", "mpe", "m1v", "m2v" ] }, "video/mpeg4-generic": { "source": "iana" }, "video/mpv": { "source": "iana" }, "video/nv": { "source": "iana" }, "video/ogg": { "source": "iana", "compressible": false, "extensions": [ "ogv" ] }, "video/parityfec": { "source": "iana" }, "video/pointer": { "source": "iana" }, "video/quicktime": { "source": "iana", "compressible": false, "extensions": [ "qt", "mov" ] }, "video/raptorfec": { "source": "iana" }, "video/raw": { "source": "iana" }, "video/rtp-enc-aescm128": { "source": "iana" }, "video/rtploopback": { "source": "iana" }, "video/rtx": { "source": "iana" }, "video/scip": { "source": "iana" }, "video/smpte291": { "source": "iana" }, "video/smpte292m": { "source": "iana" }, "video/ulpfec": { "source": "iana" }, "video/vc1": { "source": "iana" }, "video/vc2": { "source": "iana" }, "video/vnd.cctv": { "source": "iana" }, "video/vnd.dece.hd": { "source": "iana", "extensions": [ "uvh", "uvvh" ] }, "video/vnd.dece.mobile": { "source": "iana", "extensions": [ "uvm", "uvvm" ] }, "video/vnd.dece.mp4": { "source": "iana" }, "video/vnd.dece.pd": { "source": "iana", "extensions": [ "uvp", "uvvp" ] }, "video/vnd.dece.sd": { "source": "iana", "extensions": [ "uvs", "uvvs" ] }, "video/vnd.dece.video": { "source": "iana", "extensions": [ "uvv", "uvvv" ] }, "video/vnd.directv.mpeg": { "source": "iana" }, "video/vnd.directv.mpeg-tts": { "source": "iana" }, "video/vnd.dlna.mpeg-tts": { "source": "iana" }, "video/vnd.dvb.file": { "source": "iana", "extensions": [ "dvb" ] }, "video/vnd.fvt": { "source": "iana", "extensions": [ "fvt" ] }, "video/vnd.hns.video": { "source": "iana" }, "video/vnd.iptvforum.1dparityfec-1010": { "source": "iana" }, "video/vnd.iptvforum.1dparityfec-2005": { "source": "iana" }, "video/vnd.iptvforum.2dparityfec-1010": { "source": "iana" }, "video/vnd.iptvforum.2dparityfec-2005": { "source": "iana" }, "video/vnd.iptvforum.ttsavc": { "source": "iana" }, "video/vnd.iptvforum.ttsmpeg2": { "source": "iana" }, "video/vnd.motorola.video": { "source": "iana" }, "video/vnd.motorola.videop": { "source": "iana" }, "video/vnd.mpegurl": { "source": "iana", "extensions": [ "mxu", "m4u" ] }, "video/vnd.ms-playready.media.pyv": { "source": "iana", "extensions": [ "pyv" ] }, "video/vnd.nokia.interleaved-multimedia": { "source": "iana" }, "video/vnd.nokia.mp4vr": { "source": "iana" }, "video/vnd.nokia.videovoip": { "source": "iana" }, "video/vnd.objectvideo": { "source": "iana" }, "video/vnd.radgamettools.bink": { "source": "iana" }, "video/vnd.radgamettools.smacker": { "source": "iana" }, "video/vnd.sealed.mpeg1": { "source": "iana" }, "video/vnd.sealed.mpeg4": { "source": "iana" }, "video/vnd.sealed.swf": { "source": "iana" }, "video/vnd.sealedmedia.softseal.mov": { "source": "iana" }, "video/vnd.uvvu.mp4": { "source": "iana", "extensions": [ "uvu", "uvvu" ] }, "video/vnd.vivo": { "source": "iana", "extensions": [ "viv" ] }, "video/vnd.youtube.yt": { "source": "iana" }, "video/vp8": { "source": "iana" }, "video/vp9": { "source": "iana" }, "video/webm": { "source": "apache", "compressible": false, "extensions": [ "webm" ] }, "video/x-f4v": { "source": "apache", "extensions": [ "f4v" ] }, "video/x-fli": { "source": "apache", "extensions": [ "fli" ] }, "video/x-flv": { "source": "apache", "compressible": false, "extensions": [ "flv" ] }, "video/x-m4v": { "source": "apache", "extensions": [ "m4v" ] }, "video/x-matroska": { "source": "apache", "compressible": false, "extensions": [ "mkv", "mk3d", "mks" ] }, "video/x-mng": { "source": "apache", "extensions": [ "mng" ] }, "video/x-ms-asf": { "source": "apache", "extensions": [ "asf", "asx" ] }, "video/x-ms-vob": { "source": "apache", "extensions": [ "vob" ] }, "video/x-ms-wm": { "source": "apache", "extensions": [ "wm" ] }, "video/x-ms-wmv": { "source": "apache", "compressible": false, "extensions": [ "wmv" ] }, "video/x-ms-wmx": { "source": "apache", "extensions": [ "wmx" ] }, "video/x-ms-wvx": { "source": "apache", "extensions": [ "wvx" ] }, "video/x-msvideo": { "source": "apache", "extensions": [ "avi" ] }, "video/x-sgi-movie": { "source": "apache", "extensions": [ "movie" ] }, "video/x-smv": { "source": "apache", "extensions": [ "smv" ] }, "x-conference/x-cooltalk": { "source": "apache", "extensions": [ "ice" ] }, "x-shader/x-fragment": { "compressible": true }, "x-shader/x-vertex": { "compressible": true } }; " ".charCodeAt(0); "~".charCodeAt(0); const extensions = new Map(); const types = new Map(); (function populateMaps() { const preference = [ "nginx", "apache", undefined, "iana" ]; for (const type of Object.keys(__default)){ const mime = __default[type]; const exts = mime.extensions; if (!exts || !exts.length) { continue; } extensions.set(type, exts); for (const ext of exts){ const current = types.get(ext); if (current) { const from = preference.indexOf(__default[current].source); const to = preference.indexOf(mime.source); if (current !== "application/octet-stream" && (from > to || from === to && current.startsWith("application/"))) { continue; } } types.set(ext, type); } } })(); const osType = (()=>{ const { Deno: Deno1 } = globalThis; if (typeof Deno1?.build?.os === "string") { return Deno1.build.os; } const { navigator } = globalThis; if (navigator?.appVersion?.includes?.("Win")) { return "windows"; } return "linux"; })(); const isWindows = osType === "windows"; const CHAR_FORWARD_SLASH = 47; function assertPath(path) { if (typeof path !== "string") { throw new TypeError(`Path must be a string. Received ${JSON.stringify(path)}`); } } function isPosixPathSeparator(code) { return code === 47; } function isPathSeparator(code) { return isPosixPathSeparator(code) || code === 92; } function isWindowsDeviceRoot(code) { return code >= 97 && code <= 122 || code >= 65 && code <= 90; } function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { let res = ""; let lastSegmentLength = 0; let lastSlash = -1; let dots = 0; let code; for(let i = 0, len = path.length; i <= len; ++i){ if (i < len) code = path.charCodeAt(i); else if (isPathSeparator(code)) break; else code = CHAR_FORWARD_SLASH; if (isPathSeparator(code)) { if (lastSlash === i - 1 || dots === 1) {} else if (lastSlash !== i - 1 && dots === 2) { if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { if (res.length > 2) { const lastSlashIndex = res.lastIndexOf(separator); if (lastSlashIndex === -1) { res = ""; lastSegmentLength = 0; } else { res = res.slice(0, lastSlashIndex); lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); } lastSlash = i; dots = 0; continue; } else if (res.length === 2 || res.length === 1) { res = ""; lastSegmentLength = 0; lastSlash = i; dots = 0; continue; } } if (allowAboveRoot) { if (res.length > 0) res += `${separator}..`; else res = ".."; lastSegmentLength = 2; } } else { if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); else res = path.slice(lastSlash + 1, i); lastSegmentLength = i - lastSlash - 1; } lastSlash = i; dots = 0; } else if (code === 46 && dots !== -1) { ++dots; } else { dots = -1; } } return res; } function _format(sep, pathObject) { const dir = pathObject.dir || pathObject.root; const base = pathObject.base || (pathObject.name || "") + (pathObject.ext || ""); if (!dir) return base; if (dir === pathObject.root) return dir + base; return dir + sep + base; } const WHITESPACE_ENCODINGS = { "\u0009": "%09", "\u000A": "%0A", "\u000B": "%0B", "\u000C": "%0C", "\u000D": "%0D", "\u0020": "%20" }; function encodeWhitespace(string) { return string.replaceAll(/[\s]/g, (c)=>{ return WHITESPACE_ENCODINGS[c] ?? c; }); } const sep = "\\"; const delimiter = ";"; function resolve(...pathSegments) { let resolvedDevice = ""; let resolvedTail = ""; let resolvedAbsolute = false; for(let i = pathSegments.length - 1; i >= -1; i--){ let path; const { Deno: Deno1 } = globalThis; if (i >= 0) { path = pathSegments[i]; } else if (!resolvedDevice) { if (typeof Deno1?.cwd !== "function") { throw new TypeError("Resolved a drive-letter-less path without a CWD."); } path = Deno1.cwd(); } else { if (typeof Deno1?.env?.get !== "function" || typeof Deno1?.cwd !== "function") { throw new TypeError("Resolved a relative path without a CWD."); } path = Deno1.cwd(); if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\`) { path = `${resolvedDevice}\\`; } } assertPath(path); const len = path.length; if (len === 0) continue; let rootEnd = 0; let device = ""; let isAbsolute = false; const code = path.charCodeAt(0); if (len > 1) { if (isPathSeparator(code)) { isAbsolute = true; if (isPathSeparator(path.charCodeAt(1))) { let j = 2; let last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { const firstPart = path.slice(last, j); last = j; for(; j < len; ++j){ if (!isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j === len) { device = `\\\\${firstPart}\\${path.slice(last)}`; rootEnd = j; } else if (j !== last) { device = `\\\\${firstPart}\\${path.slice(last, j)}`; rootEnd = j; } } } } else { rootEnd = 1; } } else if (isWindowsDeviceRoot(code)) { if (path.charCodeAt(1) === 58) { device = path.slice(0, 2); rootEnd = 2; if (len > 2) { if (isPathSeparator(path.charCodeAt(2))) { isAbsolute = true; rootEnd = 3; } } } } } else if (isPathSeparator(code)) { rootEnd = 1; isAbsolute = true; } if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) { continue; } if (resolvedDevice.length === 0 && device.length > 0) { resolvedDevice = device; } if (!resolvedAbsolute) { resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; resolvedAbsolute = isAbsolute; } if (resolvedAbsolute && resolvedDevice.length > 0) break; } resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, "\\", isPathSeparator); return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; } function normalize(path) { assertPath(path); const len = path.length; if (len === 0) return "."; let rootEnd = 0; let device; let isAbsolute = false; const code = path.charCodeAt(0); if (len > 1) { if (isPathSeparator(code)) { isAbsolute = true; if (isPathSeparator(path.charCodeAt(1))) { let j = 2; let last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { const firstPart = path.slice(last, j); last = j; for(; j < len; ++j){ if (!isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j === len) { return `\\\\${firstPart}\\${path.slice(last)}\\`; } else if (j !== last) { device = `\\\\${firstPart}\\${path.slice(last, j)}`; rootEnd = j; } } } } else { rootEnd = 1; } } else if (isWindowsDeviceRoot(code)) { if (path.charCodeAt(1) === 58) { device = path.slice(0, 2); rootEnd = 2; if (len > 2) { if (isPathSeparator(path.charCodeAt(2))) { isAbsolute = true; rootEnd = 3; } } } } } else if (isPathSeparator(code)) { return "\\"; } let tail; if (rootEnd < len) { tail = normalizeString(path.slice(rootEnd), !isAbsolute, "\\", isPathSeparator); } else { tail = ""; } if (tail.length === 0 && !isAbsolute) tail = "."; if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { tail += "\\"; } if (device === undefined) { if (isAbsolute) { if (tail.length > 0) return `\\${tail}`; else return "\\"; } else if (tail.length > 0) { return tail; } else { return ""; } } else if (isAbsolute) { if (tail.length > 0) return `${device}\\${tail}`; else return `${device}\\`; } else if (tail.length > 0) { return device + tail; } else { return device; } } function isAbsolute(path) { assertPath(path); const len = path.length; if (len === 0) return false; const code = path.charCodeAt(0); if (isPathSeparator(code)) { return true; } else if (isWindowsDeviceRoot(code)) { if (len > 2 && path.charCodeAt(1) === 58) { if (isPathSeparator(path.charCodeAt(2))) return true; } } return false; } function join(...paths) { const pathsCount = paths.length; if (pathsCount === 0) return "."; let joined; let firstPart = null; for(let i = 0; i < pathsCount; ++i){ const path = paths[i]; assertPath(path); if (path.length > 0) { if (joined === undefined) joined = firstPart = path; else joined += `\\${path}`; } } if (joined === undefined) return "."; let needsReplace = true; let slashCount = 0; assert(firstPart != null); if (isPathSeparator(firstPart.charCodeAt(0))) { ++slashCount; const firstLen = firstPart.length; if (firstLen > 1) { if (isPathSeparator(firstPart.charCodeAt(1))) { ++slashCount; if (firstLen > 2) { if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; else { needsReplace = false; } } } } } if (needsReplace) { for(; slashCount < joined.length; ++slashCount){ if (!isPathSeparator(joined.charCodeAt(slashCount))) break; } if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; } return normalize(joined); } function relative(from, to) { assertPath(from); assertPath(to); if (from === to) return ""; const fromOrig = resolve(from); const toOrig = resolve(to); if (fromOrig === toOrig) return ""; from = fromOrig.toLowerCase(); to = toOrig.toLowerCase(); if (from === to) return ""; let fromStart = 0; let fromEnd = from.length; for(; fromStart < fromEnd; ++fromStart){ if (from.charCodeAt(fromStart) !== 92) break; } for(; fromEnd - 1 > fromStart; --fromEnd){ if (from.charCodeAt(fromEnd - 1) !== 92) break; } const fromLen = fromEnd - fromStart; let toStart = 0; let toEnd = to.length; for(; toStart < toEnd; ++toStart){ if (to.charCodeAt(toStart) !== 92) break; } for(; toEnd - 1 > toStart; --toEnd){ if (to.charCodeAt(toEnd - 1) !== 92) break; } const toLen = toEnd - toStart; const length = fromLen < toLen ? fromLen : toLen; let lastCommonSep = -1; let i = 0; for(; i <= length; ++i){ if (i === length) { if (toLen > length) { if (to.charCodeAt(toStart + i) === 92) { return toOrig.slice(toStart + i + 1); } else if (i === 2) { return toOrig.slice(toStart + i); } } if (fromLen > length) { if (from.charCodeAt(fromStart + i) === 92) { lastCommonSep = i; } else if (i === 2) { lastCommonSep = 3; } } break; } const fromCode = from.charCodeAt(fromStart + i); const toCode = to.charCodeAt(toStart + i); if (fromCode !== toCode) break; else if (fromCode === 92) lastCommonSep = i; } if (i !== length && lastCommonSep === -1) { return toOrig; } let out = ""; if (lastCommonSep === -1) lastCommonSep = 0; for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ if (i === fromEnd || from.charCodeAt(i) === 92) { if (out.length === 0) out += ".."; else out += "\\.."; } } if (out.length > 0) { return out + toOrig.slice(toStart + lastCommonSep, toEnd); } else { toStart += lastCommonSep; if (toOrig.charCodeAt(toStart) === 92) ++toStart; return toOrig.slice(toStart, toEnd); } } function toNamespacedPath(path) { if (typeof path !== "string") return path; if (path.length === 0) return ""; const resolvedPath = resolve(path); if (resolvedPath.length >= 3) { if (resolvedPath.charCodeAt(0) === 92) { if (resolvedPath.charCodeAt(1) === 92) { const code = resolvedPath.charCodeAt(2); if (code !== 63 && code !== 46) { return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; } } } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { if (resolvedPath.charCodeAt(1) === 58 && resolvedPath.charCodeAt(2) === 92) { return `\\\\?\\${resolvedPath}`; } } } return path; } function dirname(path) { assertPath(path); const len = path.length; if (len === 0) return "."; let rootEnd = -1; let end = -1; let matchedSlash = true; let offset = 0; const code = path.charCodeAt(0); if (len > 1) { if (isPathSeparator(code)) { rootEnd = offset = 1; if (isPathSeparator(path.charCodeAt(1))) { let j = 2; let last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { last = j; for(; j < len; ++j){ if (!isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j === len) { return path; } if (j !== last) { rootEnd = offset = j + 1; } } } } } else if (isWindowsDeviceRoot(code)) { if (path.charCodeAt(1) === 58) { rootEnd = offset = 2; if (len > 2) { if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; } } } } else if (isPathSeparator(code)) { return path; } for(let i = len - 1; i >= offset; --i){ if (isPathSeparator(path.charCodeAt(i))) { if (!matchedSlash) { end = i; break; } } else { matchedSlash = false; } } if (end === -1) { if (rootEnd === -1) return "."; else end = rootEnd; } return path.slice(0, end); } function basename(path, ext = "") { if (ext !== undefined && typeof ext !== "string") { throw new TypeError('"ext" argument must be a string'); } assertPath(path); let start = 0; let end = -1; let matchedSlash = true; let i; if (path.length >= 2) { const drive = path.charCodeAt(0); if (isWindowsDeviceRoot(drive)) { if (path.charCodeAt(1) === 58) start = 2; } } if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { if (ext.length === path.length && ext === path) return ""; let extIdx = ext.length - 1; let firstNonSlashEnd = -1; for(i = path.length - 1; i >= start; --i){ const code = path.charCodeAt(i); if (isPathSeparator(code)) { if (!matchedSlash) { start = i + 1; break; } } else { if (firstNonSlashEnd === -1) { matchedSlash = false; firstNonSlashEnd = i + 1; } if (extIdx >= 0) { if (code === ext.charCodeAt(extIdx)) { if (--extIdx === -1) { end = i; } } else { extIdx = -1; end = firstNonSlashEnd; } } } } if (start === end) end = firstNonSlashEnd; else if (end === -1) end = path.length; return path.slice(start, end); } else { for(i = path.length - 1; i >= start; --i){ if (isPathSeparator(path.charCodeAt(i))) { if (!matchedSlash) { start = i + 1; break; } } else if (end === -1) { matchedSlash = false; end = i + 1; } } if (end === -1) return ""; return path.slice(start, end); } } function extname(path) { assertPath(path); let start = 0; let startDot = -1; let startPart = 0; let end = -1; let matchedSlash = true; let preDotState = 0; if (path.length >= 2 && path.charCodeAt(1) === 58 && isWindowsDeviceRoot(path.charCodeAt(0))) { start = startPart = 2; } for(let i = path.length - 1; i >= start; --i){ const code = path.charCodeAt(i); if (isPathSeparator(code)) { if (!matchedSlash) { startPart = i + 1; break; } continue; } if (end === -1) { matchedSlash = false; end = i + 1; } if (code === 46) { if (startDot === -1) startDot = i; else if (preDotState !== 1) preDotState = 1; } else if (startDot !== -1) { preDotState = -1; } } if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { return ""; } return path.slice(startDot, end); } function format(pathObject) { if (pathObject === null || typeof pathObject !== "object") { throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); } return _format("\\", pathObject); } function parse(path) { assertPath(path); const ret = { root: "", dir: "", base: "", ext: "", name: "" }; const len = path.length; if (len === 0) return ret; let rootEnd = 0; let code = path.charCodeAt(0); if (len > 1) { if (isPathSeparator(code)) { rootEnd = 1; if (isPathSeparator(path.charCodeAt(1))) { let j = 2; let last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { last = j; for(; j < len; ++j){ if (!isPathSeparator(path.charCodeAt(j))) break; } if (j < len && j !== last) { last = j; for(; j < len; ++j){ if (isPathSeparator(path.charCodeAt(j))) break; } if (j === len) { rootEnd = j; } else if (j !== last) { rootEnd = j + 1; } } } } } else if (isWindowsDeviceRoot(code)) { if (path.charCodeAt(1) === 58) { rootEnd = 2; if (len > 2) { if (isPathSeparator(path.charCodeAt(2))) { if (len === 3) { ret.root = ret.dir = path; return ret; } rootEnd = 3; } } else { ret.root = ret.dir = path; return ret; } } } } else if (isPathSeparator(code)) { ret.root = ret.dir = path; return ret; } if (rootEnd > 0) ret.root = path.slice(0, rootEnd); let startDot = -1; let startPart = rootEnd; let end = -1; let matchedSlash = true; let i = path.length - 1; let preDotState = 0; for(; i >= rootEnd; --i){ code = path.charCodeAt(i); if (isPathSeparator(code)) { if (!matchedSlash) { startPart = i + 1; break; } continue; } if (end === -1) { matchedSlash = false; end = i + 1; } if (code === 46) { if (startDot === -1) startDot = i; else if (preDotState !== 1) preDotState = 1; } else if (startDot !== -1) { preDotState = -1; } } if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { if (end !== -1) { ret.base = ret.name = path.slice(startPart, end); } } else { ret.name = path.slice(startPart, startDot); ret.base = path.slice(startPart, end); ret.ext = path.slice(startDot, end); } if (startPart > 0 && startPart !== rootEnd) { ret.dir = path.slice(0, startPart - 1); } else ret.dir = ret.root; return ret; } function fromFileUrl(url) { url = url instanceof URL ? url : new URL(url); if (url.protocol != "file:") { throw new TypeError("Must be a file URL."); } let path = decodeURIComponent(url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25")).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); if (url.hostname != "") { path = `\\\\${url.hostname}${path}`; } return path; } function toFileUrl(path) { if (!isAbsolute(path)) { throw new TypeError("Must be an absolute path."); } const [, hostname, pathname] = path.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/); const url = new URL("file:///"); url.pathname = encodeWhitespace(pathname.replace(/%/g, "%25")); if (hostname != null && hostname != "localhost") { url.hostname = hostname; if (!url.hostname) { throw new TypeError("Invalid hostname."); } } return url; } const mod = { sep: sep, delimiter: delimiter, resolve: resolve, normalize: normalize, isAbsolute: isAbsolute, join: join, relative: relative, toNamespacedPath: toNamespacedPath, dirname: dirname, basename: basename, extname: extname, format: format, parse: parse, fromFileUrl: fromFileUrl, toFileUrl: toFileUrl }; const sep1 = "/"; const delimiter1 = ":"; function resolve1(...pathSegments) { let resolvedPath = ""; let resolvedAbsolute = false; for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){ let path; if (i >= 0) path = pathSegments[i]; else { const { Deno: Deno1 } = globalThis; if (typeof Deno1?.cwd !== "function") { throw new TypeError("Resolved a relative path without a CWD."); } path = Deno1.cwd(); } assertPath(path); if (path.length === 0) { continue; } resolvedPath = `${path}/${resolvedPath}`; resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; } resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator); if (resolvedAbsolute) { if (resolvedPath.length > 0) return `/${resolvedPath}`; else return "/"; } else if (resolvedPath.length > 0) return resolvedPath; else return "."; } function normalize1(path) { assertPath(path); if (path.length === 0) return "."; const isAbsolute = path.charCodeAt(0) === 47; const trailingSeparator = path.charCodeAt(path.length - 1) === 47; path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); if (path.length === 0 && !isAbsolute) path = "."; if (path.length > 0 && trailingSeparator) path += "/"; if (isAbsolute) return `/${path}`; return path; } function isAbsolute1(path) { assertPath(path); return path.length > 0 && path.charCodeAt(0) === 47; } function join1(...paths) { if (paths.length === 0) return "."; let joined; for(let i = 0, len = paths.length; i < len; ++i){ const path = paths[i]; assertPath(path); if (path.length > 0) { if (!joined) joined = path; else joined += `/${path}`; } } if (!joined) return "."; return normalize1(joined); } function relative1(from, to) { assertPath(from); assertPath(to); if (from === to) return ""; from = resolve1(from); to = resolve1(to); if (from === to) return ""; let fromStart = 1; const fromEnd = from.length; for(; fromStart < fromEnd; ++fromStart){ if (from.charCodeAt(fromStart) !== 47) break; } const fromLen = fromEnd - fromStart; let toStart = 1; const toEnd = to.length; for(; toStart < toEnd; ++toStart){ if (to.charCodeAt(toStart) !== 47) break; } const toLen = toEnd - toStart; const length = fromLen < toLen ? fromLen : toLen; let lastCommonSep = -1; let i = 0; for(; i <= length; ++i){ if (i === length) { if (toLen > length) { if (to.charCodeAt(toStart + i) === 47) { return to.slice(toStart + i + 1); } else if (i === 0) { return to.slice(toStart + i); } } else if (fromLen > length) { if (from.charCodeAt(fromStart + i) === 47) { lastCommonSep = i; } else if (i === 0) { lastCommonSep = 0; } } break; } const fromCode = from.charCodeAt(fromStart + i); const toCode = to.charCodeAt(toStart + i); if (fromCode !== toCode) break; else if (fromCode === 47) lastCommonSep = i; } let out = ""; for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ if (i === fromEnd || from.charCodeAt(i) === 47) { if (out.length === 0) out += ".."; else out += "/.."; } } if (out.length > 0) return out + to.slice(toStart + lastCommonSep); else { toStart += lastCommonSep; if (to.charCodeAt(toStart) === 47) ++toStart; return to.slice(toStart); } } function toNamespacedPath1(path) { return path; } function dirname1(path) { assertPath(path); if (path.length === 0) return "."; const hasRoot = path.charCodeAt(0) === 47; let end = -1; let matchedSlash = true; for(let i = path.length - 1; i >= 1; --i){ if (path.charCodeAt(i) === 47) { if (!matchedSlash) { end = i; break; } } else { matchedSlash = false; } } if (end === -1) return hasRoot ? "/" : "."; if (hasRoot && end === 1) return "//"; return path.slice(0, end); } function basename1(path, ext = "") { if (ext !== undefined && typeof ext !== "string") { throw new TypeError('"ext" argument must be a string'); } assertPath(path); let start = 0; let end = -1; let matchedSlash = true; let i; if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { if (ext.length === path.length && ext === path) return ""; let extIdx = ext.length - 1; let firstNonSlashEnd = -1; for(i = path.length - 1; i >= 0; --i){ const code = path.charCodeAt(i); if (code === 47) { if (!matchedSlash) { start = i + 1; break; } } else { if (firstNonSlashEnd === -1) { matchedSlash = false; firstNonSlashEnd = i + 1; } if (extIdx >= 0) { if (code === ext.charCodeAt(extIdx)) { if (--extIdx === -1) { end = i; } } else { extIdx = -1; end = firstNonSlashEnd; } } } } if (start === end) end = firstNonSlashEnd; else if (end === -1) end = path.length; return path.slice(start, end); } else { for(i = path.length - 1; i >= 0; --i){ if (path.charCodeAt(i) === 47) { if (!matchedSlash) { start = i + 1; break; } } else if (end === -1) { matchedSlash = false; end = i + 1; } } if (end === -1) return ""; return path.slice(start, end); } } function extname1(path) { assertPath(path); let startDot = -1; let startPart = 0; let end = -1; let matchedSlash = true; let preDotState = 0; for(let i = path.length - 1; i >= 0; --i){ const code = path.charCodeAt(i); if (code === 47) { if (!matchedSlash) { startPart = i + 1; break; } continue; } if (end === -1) { matchedSlash = false; end = i + 1; } if (code === 46) { if (startDot === -1) startDot = i; else if (preDotState !== 1) preDotState = 1; } else if (startDot !== -1) { preDotState = -1; } } if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { return ""; } return path.slice(startDot, end); } function format1(pathObject) { if (pathObject === null || typeof pathObject !== "object") { throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); } return _format("/", pathObject); } function parse1(path) { assertPath(path); const ret = { root: "", dir: "", base: "", ext: "", name: "" }; if (path.length === 0) return ret; const isAbsolute = path.charCodeAt(0) === 47; let start; if (isAbsolute) { ret.root = "/"; start = 1; } else { start = 0; } let startDot = -1; let startPart = 0; let end = -1; let matchedSlash = true; let i = path.length - 1; let preDotState = 0; for(; i >= start; --i){ const code = path.charCodeAt(i); if (code === 47) { if (!matchedSlash) { startPart = i + 1; break; } continue; } if (end === -1) { matchedSlash = false; end = i + 1; } if (code === 46) { if (startDot === -1) startDot = i; else if (preDotState !== 1) preDotState = 1; } else if (startDot !== -1) { preDotState = -1; } } if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { if (end !== -1) { if (startPart === 0 && isAbsolute) { ret.base = ret.name = path.slice(1, end); } else { ret.base = ret.name = path.slice(startPart, end); } } } else { if (startPart === 0 && isAbsolute) { ret.name = path.slice(1, startDot); ret.base = path.slice(1, end); } else { ret.name = path.slice(startPart, startDot); ret.base = path.slice(startPart, end); } ret.ext = path.slice(startDot, end); } if (startPart > 0) ret.dir = path.slice(0, startPart - 1); else if (isAbsolute) ret.dir = "/"; return ret; } function fromFileUrl1(url) { url = url instanceof URL ? url : new URL(url); if (url.protocol != "file:") { throw new TypeError("Must be a file URL."); } return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25")); } function toFileUrl1(path) { if (!isAbsolute1(path)) { throw new TypeError("Must be an absolute path."); } const url = new URL("file:///"); url.pathname = encodeWhitespace(path.replace(/%/g, "%25").replace(/\\/g, "%5C")); return url; } const mod1 = { sep: sep1, delimiter: delimiter1, resolve: resolve1, normalize: normalize1, isAbsolute: isAbsolute1, join: join1, relative: relative1, toNamespacedPath: toNamespacedPath1, dirname: dirname1, basename: basename1, extname: extname1, format: format1, parse: parse1, fromFileUrl: fromFileUrl1, toFileUrl: toFileUrl1 }; const path = isWindows ? mod : mod1; const { join: join2 , normalize: normalize2 } = path; const path1 = isWindows ? mod : mod1; const { basename: basename2 , delimiter: delimiter2 , dirname: dirname2 , extname: extname2 , format: format2 , fromFileUrl: fromFileUrl2 , isAbsolute: isAbsolute2 , join: join3 , normalize: normalize3 , parse: parse2 , relative: relative2 , resolve: resolve2 , sep: sep2 , toFileUrl: toFileUrl2 , toNamespacedPath: toNamespacedPath2 , } = path1; const compressResponse = (handler, options)=>{ const o = { sizeThreshold: 512, preferredAlgorithms: [ "gzip", "deflate" ], ignoredMimetypes: [ (s)=>s.includes("font") ], ...options }; return async (req)=>{ const supportedEncodings = (()=>{ const accepted = req.headers.get("accept-encoding"); if (!accepted) { return null; } const encodings = accepted.split(',').map((s)=>s.trim().split(";")[0]); return encodings; })(); const encoding = (()=>{ if (!supportedEncodings) { return null; } const encoding = o.preferredAlgorithms.find((a)=>supportedEncodings.includes(a)); return encoding ? [ encoding, new CompressionStream(encoding) ] : null; })(); const res = await handler(req); const contentType = res.headers.get("content-type"); const body = res.body; if (contentType && body && encoding) { for (const p of o.ignoredMimetypes){ if (p(contentType)) { return res; } } const contentLength = res.headers.get("content-length"); if (contentLength && Number(contentLength) < o.sizeThreshold) { return res; } const [bestEncoding, bestEncoder] = encoding; res.headers.set("content-encoding", bestEncoding); const body_ = res.body.pipeThrough(bestEncoder); const res_ = new Response(body_, { headers: res.headers, status: res.status, statusText: res.statusText }); return res_; } return res; }; }; const setHeaders = (headers, handler)=>{ return async (req)=>{ const res = await handler(req); for (const [header, value] of headers){ res.headers.set(header, value); } return res; }; }; const orElse = (mh, h)=>{ return async (req)=>{ const mhr = await mh(req); if (mhr) { return mhr; } return h(req); }; }; const filter = (pred, h)=>{ return async (req)=>{ if (!await pred(req)) { return null; } return h(req); }; }; const catching = (h, fallback)=>{ return (req)=>{ try { return h(req); } catch (e) { return fallback(req, e); } }; }; const log = (h)=>{ return async (req)=>{ const start = performance.now(); const res = await h(req); const diff = performance.now() - start; console.log(`${req.method} ${req.url} ${res.status} [${diff}ms]`); return res; }; }; const frontend = "var util;\n(function(util) {\n function assertEqual(_cond) {}\n util.assertEqual = assertEqual;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items)=>{\n const obj = {};\n for (const item of items){\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj)=>{\n const validKeys = objectKeys(obj).filter((k)=>typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys){\n filtered[k] = obj[k];\n }\n return objectValues(filtered);\n };\n var objectValues = util.objectValues = (obj)=>{\n return objectKeys(obj).map(function(e) {\n return obj[e];\n });\n };\n var objectKeys = util.objectKeys = typeof Object.keys === \"function\" ? (obj)=>Object.keys(obj) : (object)=>{\n const keys = [];\n for(const key in object){\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker)=>{\n for (const item of arr){\n if (checker(item)) return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\" ? (val)=>Number.isInteger(val) : (val)=>typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val)=>typeof val === \"string\" ? `'${val}'` : val).join(separator);\n }\n util.joinValues = joinValues;\n})(util || (util = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\", \n]);\nconst getParsedType = (data)=>{\n const t = typeof data;\n switch(t){\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\nconst makeIssue = (params)=>{\n const { data , path , errorMaps , issueData } = params;\n const fullPath = [\n ...path,\n ...issueData.path || []\n ];\n const fullIssue = {\n ...issueData,\n path: fullPath\n };\n let errorMessage = \"\";\n const maps = errorMaps.filter((m)=>!!m).slice().reverse();\n for (const map of maps){\n errorMessage = map(fullIssue, {\n data,\n defaultError: errorMessage\n }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage\n };\n};\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\", \n]);\nfunction getErrorMap() {\n return overrideErrorMap;\n}\nconst jsonStringifyReplacer = (_, value)=>{\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n};\nclass ZodError extends Error {\n issues = [];\n get errors() {\n return this.issues;\n }\n constructor(issues){\n super();\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(this, actualProto);\n } else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const fieldErrors = {\n _errors: []\n };\n const processError = (error)=>{\n for (const issue of error.issues){\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n } else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n } else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n } else {\n let curr = fieldErrors;\n let i = 0;\n while(i < issue.path.length){\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || {\n _errors: []\n };\n } else {\n curr[el] = curr[el] || {\n _errors: []\n };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static create = (issues)=>{\n const error = new ZodError(issues);\n return error;\n };\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n addIssue = (sub)=>{\n this.issues = [\n ...this.issues,\n sub\n ];\n };\n addIssues = (subs = [])=>{\n this.issues = [\n ...this.issues,\n ...subs\n ];\n };\n flatten(mapper = (issue)=>issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues){\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n } else {\n formErrors.push(mapper(sub));\n }\n }\n return {\n formErrors,\n fieldErrors\n };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nconst defaultErrorMap = (issue, _ctx)=>{\n let message;\n switch(issue.code){\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n } else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n } else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n } else {\n util.assertNever(issue.validation);\n }\n } else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n } else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\") message = `Array must contain ${issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\") message = `String must contain ${issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\") message = `Number must be greater than ${issue.inclusive ? `or equal to ` : ``}${issue.minimum}`;\n else if (issue.type === \"date\") message = `Date must be greater than ${issue.inclusive ? `or equal to ` : ``}${new Date(issue.minimum)}`;\n else message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\") message = `Array must contain ${issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\") message = `String must contain ${issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\") message = `Number must be less than ${issue.inclusive ? `or equal to ` : ``}${issue.maximum}`;\n else if (issue.type === \"date\") message = `Date must be smaller than ${issue.inclusive ? `or equal to ` : ``}${new Date(issue.maximum)}`;\n else message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return {\n message\n };\n};\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n defaultErrorMap\n ].filter((x)=>!!x)\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n value = \"valid\";\n dirty() {\n if (this.value === \"valid\") this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\") this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results){\n if (s.status === \"aborted\") return INVALID;\n if (s.status === \"dirty\") status.dirty();\n arrayValue.push(s.value);\n }\n return {\n status: status.value,\n value: arrayValue\n };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs){\n syncPairs.push({\n key: await pair.key,\n value: await pair.value\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs){\n const { key , value } = pair;\n if (key.status === \"aborted\") return INVALID;\n if (value.status === \"aborted\") return INVALID;\n if (key.status === \"dirty\") status.dirty();\n if (value.status === \"dirty\") status.dirty();\n if (typeof value.value !== \"undefined\" || pair.alwaysSet) {\n finalObject[key.value] = value.value;\n }\n }\n return {\n status: status.value,\n value: finalObject\n };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\"\n});\nconst OK = (value)=>({\n status: \"valid\",\n value\n });\nconst isAborted = (x)=>x.status === \"aborted\";\nconst isDirty = (x)=>x.status === \"dirty\";\nconst isValid = (x)=>x.status === \"valid\";\nconst isAsync = (x)=>typeof Promise !== undefined && x instanceof Promise;\nlet overrideErrorMap = defaultErrorMap;\nvar errorUtil;\n(function(errorUtil) {\n errorUtil.errToObj = (message)=>typeof message === \"string\" ? {\n message\n } : message || {};\n errorUtil.toString = (message)=>typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\nclass ParseInputLazyPath {\n parent;\n data;\n _path;\n _key;\n constructor(parent, value, path, key){\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n return this._path.concat(this._key);\n }\n}\nconst handleResult = (ctx, result)=>{\n if (isValid(result)) {\n return {\n success: true,\n data: result.value\n };\n } else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n const error = new ZodError(ctx.common.issues);\n return {\n success: false,\n error\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params) return {};\n const { errorMap , invalid_type_error , required_error , description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid\" or \"required\" in conjunction with custom error map.`);\n }\n if (errorMap) return {\n errorMap: errorMap,\n description\n };\n const customMap = (iss, ctx)=>{\n if (iss.code !== \"invalid_type\") return {\n message: ctx.defaultError\n };\n if (typeof ctx.data === \"undefined\") {\n return {\n message: required_error ?? ctx.defaultError\n };\n }\n return {\n message: invalid_type_error ?? ctx.defaultError\n };\n };\n return {\n errorMap: customMap,\n description\n };\n}\nclass ZodType {\n _type;\n _output;\n _input;\n _def;\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n };\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n }\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success) return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n const result = this._parseSync({\n data,\n path: ctx.path,\n parent: ctx\n });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success) return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data)\n };\n const maybeAsyncResult = this._parse({\n data,\n path: [],\n parent: ctx\n });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n spa = this.safeParseAsync;\n refine(check, message) {\n const getIssueProperties = (val)=>{\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return {\n message\n };\n } else if (typeof message === \"function\") {\n return message(val);\n } else {\n return message;\n }\n };\n return this._refinement((val, ctx)=>{\n const result = check(val);\n const setError = ()=>ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val)\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data)=>{\n if (!data) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx)=>{\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n } else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: {\n type: \"refinement\",\n refinement\n }\n });\n }\n superRefine = this._refinement;\n constructor(def){\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.default = this.default.bind(this);\n this.describe = this.describe.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n optional() {\n return ZodOptional.create(this);\n }\n nullable() {\n return ZodNullable.create(this);\n }\n nullish() {\n return this.optional().nullable();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this);\n }\n or(option) {\n return ZodUnion.create([\n this,\n option\n ]);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming);\n }\n transform(transform) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: {\n type: \"transform\",\n transform\n }\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : ()=>def;\n return new ZodDefault({\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description\n });\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst emailRegex = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\nclass ZodString extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx1 = undefined;\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n } catch {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n } else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.invalid_string,\n validation: {\n startsWith: check.value\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.invalid_string,\n validation: {\n endsWith: check.value\n },\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n _regex = (regex, validation, message)=>this.refinement((data)=>regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message)\n });\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n email(message) {\n return this._addCheck({\n kind: \"email\",\n ...errorUtil.errToObj(message)\n });\n }\n url(message) {\n return this._addCheck({\n kind: \"url\",\n ...errorUtil.errToObj(message)\n });\n }\n uuid(message) {\n return this._addCheck({\n kind: \"uuid\",\n ...errorUtil.errToObj(message)\n });\n }\n cuid(message) {\n return this._addCheck({\n kind: \"cuid\",\n ...errorUtil.errToObj(message)\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message)\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message)\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message)\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message)\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message)\n });\n }\n length(len, message) {\n return this.min(len, message).max(len, message);\n }\n nonempty = (message)=>this.min(1, errorUtil.errToObj(message));\n trim = ()=>new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"trim\"\n }\n ]\n });\n get isEmail() {\n return !!this._def.checks.find((ch)=>ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch)=>ch.kind === \"url\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cuid\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n static create = (params)=>{\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n ...processCreateParams(params)\n });\n };\n}\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return valInt % stepInt / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType\n });\n return INVALID;\n }\n let ctx1 = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks){\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx1 = this._getOrReturnCtx(input, ctx1);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n static create = (params)=>{\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n ...processCreateParams(params)\n });\n };\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n min = this.gte;\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n max = this.lte;\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message)\n }, \n ]\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message)\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message)\n });\n }\n step = this.multipleOf;\n get minValue() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch)=>ch.kind === \"int\");\n }\n}\nclass ZodBigInt extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n static create = (params)=>{\n return new ZodBigInt({\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodBoolean extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n static create = (params)=>{\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodDate extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx1 = this._getOrReturnCtx(input);\n addIssueToContext(ctx1, {\n code: ZodIssueCode.invalid_date\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx2 = undefined;\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx2 = this._getOrReturnCtx(input, ctx2);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n minimum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx2 = this._getOrReturnCtx(input, ctx2);\n addIssueToContext(ctx2, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n maximum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime())\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message)\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message)\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n static create = (params)=>{\n return new ZodDate({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n params;\n static create = (params)=>{\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n static create = (params)=>{\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodAny extends ZodType {\n _any = true;\n _parse(input) {\n return OK(input.data);\n }\n static create = (params)=>{\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodUnknown extends ZodType {\n _unknown = true;\n _parse(input) {\n return OK(input.data);\n }\n static create = (params)=>{\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType\n });\n return INVALID;\n }\n static create = (params)=>{\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return OK(input.data);\n }\n static create = (params)=>{\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx , status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n message: def.minLength.message\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n message: def.maxLength.message\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all(ctx.data.map((item, i)=>{\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result)=>{\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = ctx.data.map((item, i)=>{\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: {\n value: minLength,\n message: errorUtil.toString(message)\n }\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: {\n value: maxLength,\n message: errorUtil.toString(message)\n }\n });\n }\n length(len, message) {\n return this.min(len, message).max(len, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n static create = (schema, params)=>{\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params)\n });\n };\n}\nvar objectUtil;\n(function(objectUtil) {\n objectUtil.mergeShapes = (first, second)=>{\n return {\n ...first,\n ...second\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst AugmentFactory = (def)=>(augmentation)=>{\n return new ZodObject({\n ...def,\n shape: ()=>({\n ...def.shape(),\n ...augmentation\n })\n });\n };\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for(const key in schema.shape){\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: ()=>newShape\n });\n } else if (schema instanceof ZodArray) {\n return ZodArray.create(deepPartialify(schema.element));\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item)=>deepPartialify(item)));\n } else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n _shape;\n _unknownKeys;\n _catchall;\n _cached = null;\n _getCached() {\n if (this._cached !== null) return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return this._cached = {\n shape,\n keys\n };\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const { status , ctx: ctx1 } = this._processInputParams(input);\n const { shape , keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n for(const key in ctx1.data){\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n const pairs = [];\n for (const key1 of shapeKeys){\n const keyValidator = shape[key1];\n const value = ctx1.data[key1];\n pairs.push({\n key: {\n status: \"valid\",\n value: key1\n },\n value: keyValidator._parse(new ParseInputLazyPath(ctx1, value, ctx1.path, key1)),\n alwaysSet: key1 in ctx1.data\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key2 of extraKeys){\n pairs.push({\n key: {\n status: \"valid\",\n value: key2\n },\n value: {\n status: \"valid\",\n value: ctx1.data[key2]\n }\n });\n }\n } else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx1, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys\n });\n status.dirty();\n }\n } else if (unknownKeys === \"strip\") {} else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n } else {\n const catchall = this._def.catchall;\n for (const key3 of extraKeys){\n const value1 = ctx1.data[key3];\n pairs.push({\n key: {\n status: \"valid\",\n value: key3\n },\n value: catchall._parse(new ParseInputLazyPath(ctx1, value1, ctx1.path, key3)),\n alwaysSet: key3 in ctx1.data\n });\n }\n }\n if (ctx1.common.async) {\n return Promise.resolve().then(async ()=>{\n const syncPairs = [];\n for (const pair of pairs){\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet\n });\n }\n return syncPairs;\n }).then((syncPairs)=>{\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n } else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...message !== undefined ? {\n errorMap: (issue, ctx)=>{\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\") return {\n message: errorUtil.errToObj(message).message ?? defaultError\n };\n return {\n message: defaultError\n };\n }\n } : {}\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\"\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\"\n });\n }\n nonstrict = this.passthrough;\n augment = AugmentFactory(this._def);\n extend = AugmentFactory(this._def);\n setKey(key, schema) {\n return this.augment({\n [key]: schema\n });\n }\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: ()=>objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n typeName: ZodFirstPartyTypeKind.ZodObject\n });\n return merged;\n }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).map((key)=>{\n if (this.shape[key]) shape[key] = this.shape[key];\n });\n return new ZodObject({\n ...this._def,\n shape: ()=>shape\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).map((key)=>{\n if (util.objectKeys(mask).indexOf(key) === -1) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: ()=>shape\n });\n }\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n if (mask) {\n util.objectKeys(this.shape).map((key)=>{\n if (util.objectKeys(mask).indexOf(key) === -1) {\n newShape[key] = this.shape[key];\n } else {\n newShape[key] = this.shape[key].optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n } else {\n for(const key in this.shape){\n const fieldSchema = this.shape[key];\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n }\n required() {\n const newShape = {};\n for(const key in this.shape){\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while(newField instanceof ZodOptional){\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n static create = (shape, params)=>{\n return new ZodObject({\n shape: ()=>shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n };\n static strictCreate = (shape, params)=>{\n return new ZodObject({\n shape: ()=>shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n };\n static lazycreate = (shape, params)=>{\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n for (const result of results){\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result1 of results){\n if (result1.result.status === \"dirty\") {\n ctx.common.issues.push(...result1.ctx.common.issues);\n return result1.result;\n }\n }\n const unionErrors = results.map((result)=>new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option)=>{\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n }),\n ctx: childCtx\n };\n })).then(handleResults);\n } else {\n let dirty = undefined;\n const issues = [];\n for (const option of options){\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n });\n if (result.status === \"valid\") {\n return result;\n } else if (result.status === \"dirty\" && !dirty) {\n dirty = {\n result,\n ctx: childCtx\n };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues)=>new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n static create = (types, params)=>{\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.options.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: this.validDiscriminatorValues,\n path: [\n discriminator\n ]\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get validDiscriminatorValues() {\n return Array.from(this.options.keys());\n }\n get options() {\n return this._def.options;\n }\n static create(discriminator, types, params) {\n const options = new Map();\n try {\n types.forEach((type)=>{\n const discriminatorValue = type.shape[discriminator].value;\n options.set(discriminatorValue, type);\n });\n } catch (e) {\n throw new Error(\"The discriminator value could not be extracted from all the provided schemas\");\n }\n if (options.size !== types.length) {\n throw new Error(\"Some of the discriminator values are not unique\");\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n ...processCreateParams(params)\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return {\n valid: true,\n data: a\n };\n } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key)=>bKeys.indexOf(key) !== -1);\n const newObj = {\n ...a,\n ...b\n };\n for (const key of sharedKeys){\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false\n };\n }\n newObj[key] = sharedValue.data;\n }\n return {\n valid: true,\n data: newObj\n };\n } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return {\n valid: false\n };\n }\n const newArray = [];\n for(let index = 0; index < a.length; index++){\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue1 = mergeValues(itemA, itemB);\n if (!sharedValue1.valid) {\n return {\n valid: false\n };\n }\n newArray.push(sharedValue1.data);\n }\n return {\n valid: true,\n data: newArray\n };\n } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return {\n valid: true,\n data: a\n };\n } else {\n return {\n valid: false\n };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status , ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight)=>{\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return {\n status: status.value,\n value: merged.data\n };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }), \n ]).then(([left, right])=>handleParsed(left, right));\n } else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }));\n }\n }\n static create = (left, right, params)=>{\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status , ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n type: \"array\"\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n type: \"array\"\n });\n status.dirty();\n }\n const items = ctx.data.map((item, itemIndex)=>{\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema) return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n }).filter((x)=>!!x);\n if (ctx.common.async) {\n return Promise.all(items).then((results)=>{\n return ParseStatus.mergeArray(status, results);\n });\n } else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest\n });\n }\n static create = (schemas, params)=>{\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status , ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for(const key in ctx.data){\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key))\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n } else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third)\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second)\n });\n }\n}\nclass ZodMap extends ZodType {\n _parse(input) {\n const { status , ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [\n ...ctx.data.entries()\n ].map(([key, value], index)=>{\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [\n index,\n \"key\"\n ])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [\n index,\n \"value\"\n ]))\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async ()=>{\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return {\n status: status.value,\n value: finalMap\n };\n });\n } else {\n const finalMap1 = new Map();\n for (const pair of pairs){\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap1.set(key.value, value.value);\n }\n return {\n status: status.value,\n value: finalMap1\n };\n }\n }\n static create = (keyType, valueType, params)=>{\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status , ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n message: def.minSize.message\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n message: def.maxSize.message\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements){\n if (element.status === \"aborted\") return INVALID;\n if (element.status === \"dirty\") status.dirty();\n parsedSet.add(element.value);\n }\n return {\n status: status.value,\n value: parsedSet\n };\n }\n const elements = [\n ...ctx.data.values()\n ].map((item, i)=>valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements)=>finalizeSet(elements));\n } else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: {\n value: minSize,\n message: errorUtil.toString(message)\n }\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: {\n value: maxSize,\n message: errorUtil.toString(message)\n }\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n static create = (valueType, params)=>{\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodFunction extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n defaultErrorMap, \n ].filter((x)=>!!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error\n }\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n defaultErrorMap, \n ].filter((x)=>!!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error\n }\n });\n }\n const params = {\n errorMap: ctx.common.contextualErrorMap\n };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n return OK(async (...args)=>{\n const error = new ZodError([]);\n const parsedArgs = await this._def.args.parseAsync(args, params).catch((e)=>{\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await fn(...parsedArgs);\n const parsedReturns = await this._def.returns._def.type.parseAsync(result, params).catch((e)=>{\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n } else {\n return OK((...args)=>{\n const parsedArgs = this._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([\n makeArgsIssue(args, parsedArgs.error)\n ]);\n }\n const result = fn(...parsedArgs.data);\n const parsedReturns = this._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([\n makeReturnsIssue(result, parsedReturns.error)\n ]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create())\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n validate = this.implement;\n static create = (args, returns, params)=>{\n return new ZodFunction({\n args: args ? args.rest(ZodUnknown.create()) : ZodTuple.create([]).rest(ZodUnknown.create()),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n static create = (getter, params)=>{\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value\n });\n return INVALID;\n }\n return {\n status: \"valid\",\n value: input.data\n };\n }\n get value() {\n return this._def.value;\n }\n static create = (value, params)=>{\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params)\n });\n };\n}\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params)\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx1 = this._getOrReturnCtx(input);\n const expectedValues1 = this._def.values;\n addIssueToContext(ctx1, {\n received: ctx1.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues1\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n static create = createZodEnum;\n}\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues1 = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues1\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n static create = (values, params)=>{\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodPromise extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data)=>{\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap\n });\n }));\n }\n static create = (schema, params)=>{\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n _parse(input) {\n const { status , ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data);\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed)=>{\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n });\n } else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n const checkCtx = {\n addIssue: (arg)=>{\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n } else {\n status.dirty();\n }\n },\n get path () {\n return ctx.path;\n }\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc)=>{\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inner.status === \"aborted\") return INVALID;\n if (inner.status === \"dirty\") status.dirty();\n executeRefinement(inner.value);\n return {\n status: status.value,\n value: inner.value\n };\n } else {\n return this._def.schema._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }).then((inner)=>{\n if (inner.status === \"aborted\") return INVALID;\n if (inner.status === \"dirty\") status.dirty();\n return executeRefinement(inner.value).then(()=>{\n return {\n status: status.value,\n value: inner.value\n };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (!isValid(base)) return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return {\n status: status.value,\n value: result\n };\n } else {\n return this._def.schema._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }).then((base)=>{\n if (!isValid(base)) return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result)=>({\n status: status.value,\n value: result\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n static create = (schema, effect, params)=>{\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params)\n });\n };\n static createWithPreprocess = (preprocess, schema, params)=>{\n return new ZodEffects({\n schema,\n effect: {\n type: \"preprocess\",\n transform: preprocess\n },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n static create = (type, params)=>{\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n static create = (type, params)=>{\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n static create = (type, params)=>{\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params)\n });\n };\n}\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType\n });\n return INVALID;\n }\n return {\n status: \"valid\",\n value: input.data\n };\n }\n static create = (params)=>{\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params)\n });\n };\n}\n({\n object: ZodObject.lazycreate\n});\nvar ZodFirstPartyTypeKind;\n(function(ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst stringType = ZodString.create;\nZodNumber.create;\nZodNaN.create;\nZodBigInt.create;\nZodBoolean.create;\nZodDate.create;\nZodUndefined.create;\nZodNull.create;\nZodAny.create;\nZodUnknown.create;\nZodNever.create;\nZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nZodDiscriminatedUnion.create;\nZodIntersection.create;\nZodTuple.create;\nZodRecord.create;\nZodMap.create;\nZodSet.create;\nZodFunction.create;\nZodLazy.create;\nZodLiteral.create;\nZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nZodPromise.create;\nZodEffects.create;\nZodOptional.create;\nZodNullable.create;\nZodEffects.createWithPreprocess;\nconst sig = (i, o)=>({\n _sig: true,\n input: i,\n output: o\n });\nconst makeServe_ = (api, handlers, path, paths)=>{\n const a = api;\n Object.entries(handlers).forEach(([k, v])=>{\n const p = `${path}/${k}`;\n if (typeof v === \"function\") {\n paths.set(p, async (req)=>{\n if (a[k].input) {\n const body = await req.json();\n const parsed = a[k].input.parse(body);\n return v(parsed);\n }\n return v();\n });\n }\n makeServe_(a[k], v, p, paths);\n });\n};\nconst makeClient = (api, path)=>{\n return Object.fromEntries(Object.entries(api).map(([k, v])=>{\n const p = `${path}/${k}`;\n if (\"_sig\" in v) {\n const v_ = v;\n return [\n k,\n async (body)=>{\n const b = body ? JSON.stringify(body) : null;\n const re = await fetch(p, {\n body: b,\n method: \"POST\"\n });\n if (!re.ok) {\n return re;\n }\n if (v_.output) {\n const res = await v_.output.safeParseAsync(await re.json());\n if (!res.success) {\n return {\n error: res.error\n };\n }\n return res.data;\n }\n }\n ];\n }\n return [\n k,\n makeClient(v, p)\n ];\n }));\n};\nconst isHttpError = (v)=>{\n return v instanceof Response;\n};\nconst isValidationError = (v)=>{\n return typeof v === \"object\" && v.error instanceof ZodError;\n};\nconst assert = (res)=>{\n if (isHttpError(res) || isValidationError(res)) {\n throw res;\n }\n return res;\n};\nconst swel = (tag, opts, children)=>{\n let o = null;\n if (children) {\n let c;\n if (Array.isArray(children)) {\n c = children;\n } else {\n c = [\n children\n ];\n }\n o = {\n ...opts,\n children: c\n };\n } else if (opts) {\n if (Array.isArray(opts)) {\n o = {\n children: opts\n };\n } else if (typeof opts === \"string\" || opts instanceof Node) {\n o = {\n children: [\n opts\n ]\n };\n } else {\n o = opts;\n }\n }\n let o_ = o;\n if (o_.children) {\n o_.children = o_.children.filter((c)=>!!c);\n }\n return swel_(tag, o);\n};\nconst swel_ = (tag, opts)=>{\n const el = document.createElement(tag);\n if (opts) {\n const { children , on , attributes , ...rest } = opts;\n if (children) {\n el.append(...children);\n }\n if (on) {\n Object.entries(on).forEach(([ev, h])=>{\n el.addEventListener(ev, h);\n });\n }\n if (attributes) {\n Object.entries(attributes).map(([k, v])=>{\n el.setAttribute(k, v);\n });\n }\n Object.assign(el, rest);\n }\n return el;\n};\nconst GetConfigurationResponseV1 = objectType({\n hosts: arrayType(stringType()),\n services: arrayType(objectType({\n name: stringType(),\n publicUrl: stringType().optional()\n }))\n});\nvar StatusV1;\n(function(StatusV1) {\n StatusV1[\"Down\"] = \"down\";\n StatusV1[\"Up\"] = \"up\";\n})(StatusV1 || (StatusV1 = {}));\nconst StatusResponseV1 = unionType([\n nativeEnumType(StatusV1),\n objectType({\n error: stringType()\n }), \n]);\nconst api = {\n v1: {\n configuration: {\n get: sig(undefined, GetConfigurationResponseV1)\n },\n host: {\n getStatus: sig(stringType(), StatusResponseV1)\n },\n service: {\n getStatus: sig(stringType(), StatusResponseV1)\n }\n }\n};\nconst client = (()=>{\n const l = window.location;\n const url = `${l.protocol}//${l.host}/api`;\n return makeClient(api, url);\n})();\nconst ServiceInfo = (name, getStatus, publicUrl)=>{\n const nameEl = swel(\"div\", {\n className: \"name\"\n }, name);\n const status = swel(\"div\", {\n className: \"status\"\n }, \"loading\");\n const go = publicUrl ? swel(\"a\", {\n className: \"go\",\n href: publicUrl,\n target: \"_blank\",\n on: {\n mouseenter: (e)=>e.preventDefault()\n }\n }, \"Go\") : null;\n const button = swel(\"button\", {\n className: \"status-button\",\n tabIndex: 0\n }, [\n nameEl,\n status\n ]);\n const refresh = async ()=>{\n button.removeEventListener(\"click\", refresh);\n button.disabled = true;\n status.textContent = \"loading\";\n button.className = \"status-button\";\n const st = await getStatus();\n if (isHttpError(st)) {\n status.textContent = \"error\";\n button.classList.add(\"error\");\n } else if (isValidationError(st)) {\n status.textContent = st.error.toString();\n button.classList.add(\"error\");\n } else if (typeof st === \"object\") {\n status.textContent = st.error;\n button.classList.add(\"error\");\n } else {\n status.textContent = st;\n button.classList.add(st);\n }\n button.addEventListener(\"click\", refresh);\n button.disabled = false;\n };\n refresh();\n return swel(\"div\", {\n className: \"status-container\"\n }, [\n button,\n go\n ]);\n};\nconst main = async ()=>{\n const resp = await client.v1.configuration.get().then(assert);\n const hostsSection = swel(\"section\", [\n swel(\"h1\", \"Hosts\"),\n swel(\"div\", {\n className: \"hosts\"\n }, resp.hosts.map((h)=>ServiceInfo(h, ()=>client.v1.host.getStatus(h)))), \n ]);\n const servicesSection = swel(\"section\", [\n swel(\"h1\", \"Services\"),\n swel(\"div\", {\n className: \"services\"\n }, resp.services.map((si)=>ServiceInfo(si.name, ()=>client.v1.service.getStatus(si.name), si.publicUrl))), \n ]);\n document.body.replaceChildren(hostsSection, servicesSection);\n};\nmain();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3gvem9kQHYzLjE3LjEwL2hlbHBlcnMvdXRpbC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3gvem9kQHYzLjE3LjEwL2hlbHBlcnMvcGFyc2VVdGlsLnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQveC96b2RAdjMuMTcuMTAvWm9kRXJyb3IudHMiLCJodHRwczovL2Rlbm8ubGFuZC94L3pvZEB2My4xNy4xMC9oZWxwZXJzL2Vycm9yVXRpbC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3gvem9kQHYzLjE3LjEwL3R5cGVzLnRzIiwiaHR0cHM6Ly9naXQuaWR5bGxzLm5ldC9pZHlsbHMveWF5cGkvcmF3L2JyYW5jaC9tYWluL21vZC50cyIsImh0dHBzOi8vZ2l0LmlkeWxscy5uZXQvaWR5bGxzL3N3ZWwvcmF3L2JyYW5jaC9tYWluL21vZC50cyIsImZpbGU6Ly8vaG9tZS9pZHlsbHMvZWx5c2l1bS9zdGF0dWUvY29tbW9uL2FwaS50cyIsImZpbGU6Ly8vaG9tZS9pZHlsbHMvZWx5c2l1bS9zdGF0dWUvZnJvbnRlbmQvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbmFtZXNwYWNlIHV0aWwge1xuICBleHBvcnQgdHlwZSBBc3NlcnRFcXVhbDxULCBFeHBlY3RlZD4gPSBbVF0gZXh0ZW5kcyBbRXhwZWN0ZWRdXG4gICAgPyBbRXhwZWN0ZWRdIGV4dGVuZHMgW1RdXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlO1xuICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWw8QSwgQj4oX2NvbmQ6IEFzc2VydEVxdWFsPEEsIEI+KSB7fVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBhc3NlcnROZXZlcihfeDogbmV2ZXIpOiBuZXZlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gIH1cblxuICBleHBvcnQgdHlwZSBPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj47XG4gIGV4cG9ydCB0eXBlIE9taXRLZXlzPFQsIEsgZXh0ZW5kcyBzdHJpbmc+ID0gUGljazxULCBFeGNsdWRlPGtleW9mIFQsIEs+PjtcbiAgZXhwb3J0IHR5cGUgTWFrZVBhcnRpYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPiAmXG4gICAgUGFydGlhbDxQaWNrPFQsIEs+PjtcblxuICBleHBvcnQgY29uc3QgYXJyYXlUb0VudW0gPSA8VCBleHRlbmRzIHN0cmluZywgVSBleHRlbmRzIFtULCAuLi5UW11dPihcbiAgICBpdGVtczogVVxuICApOiB7IFtrIGluIFVbbnVtYmVyXV06IGsgfSA9PiB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIG9ialtpdGVtXSA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiBvYmogYXMgYW55O1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBnZXRWYWxpZEVudW1WYWx1ZXMgPSAob2JqOiBhbnkpID0+IHtcbiAgICBjb25zdCB2YWxpZEtleXMgPSBvYmplY3RLZXlzKG9iaikuZmlsdGVyKFxuICAgICAgKGs6IGFueSkgPT4gdHlwZW9mIG9ialtvYmpba11dICE9PSBcIm51bWJlclwiXG4gICAgKTtcbiAgICBjb25zdCBmaWx0ZXJlZDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIHZhbGlkS2V5cykge1xuICAgICAgZmlsdGVyZWRba10gPSBvYmpba107XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RWYWx1ZXMoZmlsdGVyZWQpO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBvYmplY3RWYWx1ZXMgPSAob2JqOiBhbnkpID0+IHtcbiAgICByZXR1cm4gb2JqZWN0S2V5cyhvYmopLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIG9ialtlXTtcbiAgICB9KTtcbiAgfTtcblxuICBleHBvcnQgY29uc3Qgb2JqZWN0S2V5czogT2JqZWN0Q29uc3RydWN0b3JbXCJrZXlzXCJdID1cbiAgICB0eXBlb2YgT2JqZWN0LmtleXMgPT09IFwiZnVuY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgID8gKG9iajogYW55KSA9PiBPYmplY3Qua2V5cyhvYmopIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgOiAob2JqZWN0OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZpbmQgPSA8VD4oXG4gICAgYXJyOiBUW10sXG4gICAgY2hlY2tlcjogKGFyZzogVCkgPT4gYW55XG4gICk6IFQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgIGlmIChjaGVja2VyKGl0ZW0pKSByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBpZGVudGl0eTxUPiA9IFQ7XG4gIGV4cG9ydCB0eXBlIGZsYXR0ZW48VCBleHRlbmRzIG9iamVjdD4gPSBpZGVudGl0eTx7IFtrIGluIGtleW9mIFRdOiBUW2tdIH0+O1xuICBleHBvcnQgdHlwZSBub1VuZGVmaW5lZDxUPiA9IFQgZXh0ZW5kcyB1bmRlZmluZWQgPyBuZXZlciA6IFQ7XG5cbiAgZXhwb3J0IGNvbnN0IGlzSW50ZWdlcjogTnVtYmVyQ29uc3RydWN0b3JbXCJpc0ludGVnZXJcIl0gPVxuICAgIHR5cGVvZiBOdW1iZXIuaXNJbnRlZ2VyID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gKHZhbCkgPT4gTnVtYmVyLmlzSW50ZWdlcih2YWwpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgOiAodmFsKSA9PlxuICAgICAgICAgIHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIgJiYgaXNGaW5pdGUodmFsKSAmJiBNYXRoLmZsb29yKHZhbCkgPT09IHZhbDtcblxuICBleHBvcnQgZnVuY3Rpb24gam9pblZhbHVlczxUIGV4dGVuZHMgYW55W10+KFxuICAgIGFycmF5OiBULFxuICAgIHNlcGFyYXRvciA9IFwiIHwgXCJcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgIC5tYXAoKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIgPyBgJyR7dmFsfSdgIDogdmFsKSlcbiAgICAgIC5qb2luKHNlcGFyYXRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFpvZFBhcnNlZFR5cGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgXCJzdHJpbmdcIixcbiAgXCJuYW5cIixcbiAgXCJudW1iZXJcIixcbiAgXCJpbnRlZ2VyXCIsXG4gIFwiZmxvYXRcIixcbiAgXCJib29sZWFuXCIsXG4gIFwiZGF0ZVwiLFxuICBcImJpZ2ludFwiLFxuICBcInN5bWJvbFwiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwidW5kZWZpbmVkXCIsXG4gIFwibnVsbFwiLFxuICBcImFycmF5XCIsXG4gIFwib2JqZWN0XCIsXG4gIFwidW5rbm93blwiLFxuICBcInByb21pc2VcIixcbiAgXCJ2b2lkXCIsXG4gIFwibmV2ZXJcIixcbiAgXCJtYXBcIixcbiAgXCJzZXRcIixcbl0pO1xuXG5leHBvcnQgdHlwZSBab2RQYXJzZWRUeXBlID0ga2V5b2YgdHlwZW9mIFpvZFBhcnNlZFR5cGU7XG5cbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGE6IGFueSk6IFpvZFBhcnNlZFR5cGUgPT4ge1xuICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG5cbiAgc3dpdGNoICh0KSB7XG4gICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkO1xuXG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3RyaW5nO1xuXG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgcmV0dXJuIGlzTmFOKGRhdGEpID8gWm9kUGFyc2VkVHlwZS5uYW4gOiBab2RQYXJzZWRUeXBlLm51bWJlcjtcblxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5ib29sZWFuO1xuXG4gICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5mdW5jdGlvbjtcblxuICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJpZ2ludDtcblxuICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmFycmF5O1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUubnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS50aGVuICYmXG4gICAgICAgIHR5cGVvZiBkYXRhLnRoZW4gPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICBkYXRhLmNhdGNoICYmXG4gICAgICAgIHR5cGVvZiBkYXRhLmNhdGNoID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5wcm9taXNlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBNYXAgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5tYXA7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnNldDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgRGF0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5kYXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUub2JqZWN0O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVua25vd247XG4gIH1cbn07XG4iLCJpbXBvcnQgdHlwZSB7IElzc3VlRGF0YSwgWm9kRXJyb3JNYXAsIFpvZElzc3VlIH0gZnJvbSBcIi4uL1pvZEVycm9yLnRzXCI7XG5pbXBvcnQgeyBkZWZhdWx0RXJyb3JNYXAsIGdldEVycm9yTWFwIH0gZnJvbSBcIi4uL1pvZEVycm9yLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFpvZFBhcnNlZFR5cGUgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBtYWtlSXNzdWUgPSAocGFyYW1zOiB7XG4gIGRhdGE6IGFueTtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgZXJyb3JNYXBzOiBab2RFcnJvck1hcFtdO1xuICBpc3N1ZURhdGE6IElzc3VlRGF0YTtcbn0pOiBab2RJc3N1ZSA9PiB7XG4gIGNvbnN0IHsgZGF0YSwgcGF0aCwgZXJyb3JNYXBzLCBpc3N1ZURhdGEgfSA9IHBhcmFtcztcbiAgY29uc3QgZnVsbFBhdGggPSBbLi4ucGF0aCwgLi4uKGlzc3VlRGF0YS5wYXRoIHx8IFtdKV07XG4gIGNvbnN0IGZ1bGxJc3N1ZSA9IHtcbiAgICAuLi5pc3N1ZURhdGEsXG4gICAgcGF0aDogZnVsbFBhdGgsXG4gIH07XG5cbiAgbGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG4gIGNvbnN0IG1hcHMgPSBlcnJvck1hcHNcbiAgICAuZmlsdGVyKChtKSA9PiAhIW0pXG4gICAgLnNsaWNlKClcbiAgICAucmV2ZXJzZSgpIGFzIFpvZEVycm9yTWFwW107XG4gIGZvciAoY29uc3QgbWFwIG9mIG1hcHMpIHtcbiAgICBlcnJvck1lc3NhZ2UgPSBtYXAoZnVsbElzc3VlLCB7IGRhdGEsIGRlZmF1bHRFcnJvcjogZXJyb3JNZXNzYWdlIH0pLm1lc3NhZ2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmlzc3VlRGF0YSxcbiAgICBwYXRoOiBmdWxsUGF0aCxcbiAgICBtZXNzYWdlOiBpc3N1ZURhdGEubWVzc2FnZSB8fCBlcnJvck1lc3NhZ2UsXG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBQYXJzZVBhcmFtcyA9IHtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgZXJyb3JNYXA6IFpvZEVycm9yTWFwO1xuICBhc3luYzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlUGF0aENvbXBvbmVudCA9IHN0cmluZyB8IG51bWJlcjtcbmV4cG9ydCB0eXBlIFBhcnNlUGF0aCA9IFBhcnNlUGF0aENvbXBvbmVudFtdO1xuZXhwb3J0IGNvbnN0IEVNUFRZX1BBVEg6IFBhcnNlUGF0aCA9IFtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlQ29udGV4dCB7XG4gIHJlYWRvbmx5IGNvbW1vbjoge1xuICAgIHJlYWRvbmx5IGlzc3VlczogWm9kSXNzdWVbXTtcbiAgICByZWFkb25seSBjb250ZXh0dWFsRXJyb3JNYXA/OiBab2RFcnJvck1hcDtcbiAgICByZWFkb25seSBhc3luYzogYm9vbGVhbjtcbiAgfTtcbiAgcmVhZG9ubHkgcGF0aDogUGFyc2VQYXRoO1xuICByZWFkb25seSBzY2hlbWFFcnJvck1hcD86IFpvZEVycm9yTWFwO1xuICByZWFkb25seSBwYXJlbnQ6IFBhcnNlQ29udGV4dCB8IG51bGw7XG4gIHJlYWRvbmx5IGRhdGE6IGFueTtcbiAgcmVhZG9ubHkgcGFyc2VkVHlwZTogWm9kUGFyc2VkVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VJbnB1dCA9IHtcbiAgZGF0YTogYW55O1xuICBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBwYXJlbnQ6IFBhcnNlQ29udGV4dDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRJc3N1ZVRvQ29udGV4dChcbiAgY3R4OiBQYXJzZUNvbnRleHQsXG4gIGlzc3VlRGF0YTogSXNzdWVEYXRhXG4pOiB2b2lkIHtcbiAgY29uc3QgaXNzdWUgPSBtYWtlSXNzdWUoe1xuICAgIGlzc3VlRGF0YTogaXNzdWVEYXRhLFxuICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgIGVycm9yTWFwczogW1xuICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsIC8vIGNvbnRleHR1YWwgZXJyb3IgbWFwIGlzIGZpcnN0IHByaW9yaXR5XG4gICAgICBjdHguc2NoZW1hRXJyb3JNYXAsIC8vIHRoZW4gc2NoZW1hLWJvdW5kIG1hcCBpZiBhdmFpbGFibGVcbiAgICAgIGdldEVycm9yTWFwKCksIC8vIHRoZW4gZ2xvYmFsIG92ZXJyaWRlIG1hcFxuICAgICAgZGVmYXVsdEVycm9yTWFwLCAvLyB0aGVuIGdsb2JhbCBkZWZhdWx0IG1hcFxuICAgIF0uZmlsdGVyKCh4KSA9PiAhIXgpIGFzIFpvZEVycm9yTWFwW10sXG4gIH0pO1xuICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKGlzc3VlKTtcbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFpciA9IHtcbiAga2V5OiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG4gIHZhbHVlOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG59O1xuZXhwb3J0IGNsYXNzIFBhcnNlU3RhdHVzIHtcbiAgdmFsdWU6IFwiYWJvcnRlZFwiIHwgXCJkaXJ0eVwiIHwgXCJ2YWxpZFwiID0gXCJ2YWxpZFwiO1xuICBkaXJ0eSgpIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gXCJ2YWxpZFwiKSB0aGlzLnZhbHVlID0gXCJkaXJ0eVwiO1xuICB9XG4gIGFib3J0KCkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSBcImFib3J0ZWRcIikgdGhpcy52YWx1ZSA9IFwiYWJvcnRlZFwiO1xuICB9XG5cbiAgc3RhdGljIG1lcmdlQXJyYXkoXG4gICAgc3RhdHVzOiBQYXJzZVN0YXR1cyxcbiAgICByZXN1bHRzOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT5bXVxuICApOiBTeW5jUGFyc2VSZXR1cm5UeXBlIHtcbiAgICBjb25zdCBhcnJheVZhbHVlOiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcyBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAocy5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSByZXR1cm4gSU5WQUxJRDtcbiAgICAgIGlmIChzLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSBzdGF0dXMuZGlydHkoKTtcbiAgICAgIGFycmF5VmFsdWUucHVzaChzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGFycmF5VmFsdWUgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKFxuICAgIHN0YXR1czogUGFyc2VTdGF0dXMsXG4gICAgcGFpcnM6IHsga2V5OiBQYXJzZVJldHVyblR5cGU8YW55PjsgdmFsdWU6IFBhcnNlUmV0dXJuVHlwZTxhbnk+IH1bXVxuICApOiBQcm9taXNlPFN5bmNQYXJzZVJldHVyblR5cGU8YW55Pj4ge1xuICAgIGNvbnN0IHN5bmNQYWlyczogT2JqZWN0UGFpcltdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgIGtleTogYXdhaXQgcGFpci5rZXksXG4gICAgICAgIHZhbHVlOiBhd2FpdCBwYWlyLnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBzeW5jUGFpcnMpO1xuICB9XG5cbiAgc3RhdGljIG1lcmdlT2JqZWN0U3luYyhcbiAgICBzdGF0dXM6IFBhcnNlU3RhdHVzLFxuICAgIHBhaXJzOiB7XG4gICAgICBrZXk6IFN5bmNQYXJzZVJldHVyblR5cGU8YW55PjtcbiAgICAgIHZhbHVlOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG4gICAgICBhbHdheXNTZXQ/OiBib29sZWFuO1xuICAgIH1bXVxuICApOiBTeW5jUGFyc2VSZXR1cm5UeXBlIHtcbiAgICBjb25zdCBmaW5hbE9iamVjdDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHBhaXI7XG4gICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiZGlydHlcIikgc3RhdHVzLmRpcnR5KCk7XG4gICAgICBpZiAodmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHN0YXR1cy5kaXJ0eSgpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlLnZhbHVlICE9PSBcInVuZGVmaW5lZFwiIHx8IHBhaXIuYWx3YXlzU2V0KSB7XG4gICAgICAgIGZpbmFsT2JqZWN0W2tleS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGZpbmFsT2JqZWN0IH07XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VSZXN1bHQge1xuICBzdGF0dXM6IFwiYWJvcnRlZFwiIHwgXCJkaXJ0eVwiIHwgXCJ2YWxpZFwiO1xuICBkYXRhOiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIElOVkFMSUQgPSB7IHN0YXR1czogXCJhYm9ydGVkXCIgfTtcbmV4cG9ydCBjb25zdCBJTlZBTElEOiBJTlZBTElEID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHN0YXR1czogXCJhYm9ydGVkXCIsXG59KTtcblxuZXhwb3J0IHR5cGUgRElSVFk8VD4gPSB7IHN0YXR1czogXCJkaXJ0eVwiOyB2YWx1ZTogVCB9O1xuZXhwb3J0IGNvbnN0IERJUlRZID0gPFQ+KHZhbHVlOiBUKTogRElSVFk8VD4gPT4gKHsgc3RhdHVzOiBcImRpcnR5XCIsIHZhbHVlIH0pO1xuXG5leHBvcnQgdHlwZSBPSzxUPiA9IHsgc3RhdHVzOiBcInZhbGlkXCI7IHZhbHVlOiBUIH07XG5leHBvcnQgY29uc3QgT0sgPSA8VD4odmFsdWU6IFQpOiBPSzxUPiA9PiAoeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWUgfSk7XG5cbmV4cG9ydCB0eXBlIFN5bmNQYXJzZVJldHVyblR5cGU8VCA9IGFueT4gPSBPSzxUPiB8IERJUlRZPFQ+IHwgSU5WQUxJRDtcbmV4cG9ydCB0eXBlIEFzeW5jUGFyc2VSZXR1cm5UeXBlPFQ+ID0gUHJvbWlzZTxTeW5jUGFyc2VSZXR1cm5UeXBlPFQ+PjtcbmV4cG9ydCB0eXBlIFBhcnNlUmV0dXJuVHlwZTxUPiA9XG4gIHwgU3luY1BhcnNlUmV0dXJuVHlwZTxUPlxuICB8IEFzeW5jUGFyc2VSZXR1cm5UeXBlPFQ+O1xuXG5leHBvcnQgY29uc3QgaXNBYm9ydGVkID0gKHg6IFBhcnNlUmV0dXJuVHlwZTxhbnk+KTogeCBpcyBJTlZBTElEID0+XG4gICh4IGFzIGFueSkuc3RhdHVzID09PSBcImFib3J0ZWRcIjtcbmV4cG9ydCBjb25zdCBpc0RpcnR5ID0gPFQ+KHg6IFBhcnNlUmV0dXJuVHlwZTxUPik6IHggaXMgT0s8VD4gfCBESVJUWTxUPiA9PlxuICAoeCBhcyBhbnkpLnN0YXR1cyA9PT0gXCJkaXJ0eVwiO1xuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSA8VD4oeDogUGFyc2VSZXR1cm5UeXBlPFQ+KTogeCBpcyBPSzxUPiB8IERJUlRZPFQ+ID0+XG4gICh4IGFzIGFueSkuc3RhdHVzID09PSBcInZhbGlkXCI7XG5leHBvcnQgY29uc3QgaXNBc3luYyA9IDxUPihcbiAgeDogUGFyc2VSZXR1cm5UeXBlPFQ+XG4pOiB4IGlzIEFzeW5jUGFyc2VSZXR1cm5UeXBlPFQ+ID0+XG4gIHR5cGVvZiBQcm9taXNlICE9PSB1bmRlZmluZWQgJiYgeCBpbnN0YW5jZW9mIFByb21pc2U7XG5cbmV4cG9ydCBjb25zdCBqc29uU3RyaW5naWZ5UmVwbGFjZXIgPSAoXzogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IFR5cGVPZiwgWm9kVHlwZSB9IGZyb20gXCIuL2luZGV4LnRzXCI7XG5pbXBvcnQgeyBqc29uU3RyaW5naWZ5UmVwbGFjZXIgfSBmcm9tIFwiLi9oZWxwZXJzL3BhcnNlVXRpbC50c1wiO1xuaW1wb3J0IHsgUHJpbWl0aXZlIH0gZnJvbSBcIi4vaGVscGVycy90eXBlQWxpYXNlcy50c1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC50c1wiO1xuXG50eXBlIGFsbEtleXM8VD4gPSBUIGV4dGVuZHMgYW55ID8ga2V5b2YgVCA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBpbmZlckZsYXR0ZW5lZEVycm9yczxcbiAgVCBleHRlbmRzIFpvZFR5cGU8YW55LCBhbnksIGFueT4sXG4gIFUgPSBzdHJpbmdcbj4gPSB0eXBlVG9GbGF0dGVuZWRFcnJvcjxUeXBlT2Y8VD4sIFU+O1xuZXhwb3J0IHR5cGUgdHlwZVRvRmxhdHRlbmVkRXJyb3I8VCwgVSA9IHN0cmluZz4gPSB7XG4gIGZvcm1FcnJvcnM6IFVbXTtcbiAgZmllbGRFcnJvcnM6IHtcbiAgICBbUCBpbiBhbGxLZXlzPFQ+XT86IFVbXTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBab2RJc3N1ZUNvZGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgXCJpbnZhbGlkX3R5cGVcIixcbiAgXCJpbnZhbGlkX2xpdGVyYWxcIixcbiAgXCJjdXN0b21cIixcbiAgXCJpbnZhbGlkX3VuaW9uXCIsXG4gIFwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yXCIsXG4gIFwiaW52YWxpZF9lbnVtX3ZhbHVlXCIsXG4gIFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgXCJpbnZhbGlkX2FyZ3VtZW50c1wiLFxuICBcImludmFsaWRfcmV0dXJuX3R5cGVcIixcbiAgXCJpbnZhbGlkX2RhdGVcIixcbiAgXCJpbnZhbGlkX3N0cmluZ1wiLFxuICBcInRvb19zbWFsbFwiLFxuICBcInRvb19iaWdcIixcbiAgXCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc1wiLFxuICBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuXSk7XG5cbmV4cG9ydCB0eXBlIFpvZElzc3VlQ29kZSA9IGtleW9mIHR5cGVvZiBab2RJc3N1ZUNvZGU7XG5cbmV4cG9ydCB0eXBlIFpvZElzc3VlQmFzZSA9IHtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZFR5cGVJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlO1xuICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZTtcbiAgcmVjZWl2ZWQ6IFpvZFBhcnNlZFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZExpdGVyYWxJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsO1xuICBleHBlY3RlZDogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RVbnJlY29nbml6ZWRLZXlzSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2Uge1xuICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzO1xuICBrZXlzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RJbnZhbGlkVW5pb25Jc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbjtcbiAgdW5pb25FcnJvcnM6IFpvZEVycm9yW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZFVuaW9uRGlzY3JpbWluYXRvcklzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I7XG4gIG9wdGlvbnM6IFByaW1pdGl2ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWRFbnVtVmFsdWVJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIHJlY2VpdmVkOiBzdHJpbmcgfCBudW1iZXI7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlO1xuICBvcHRpb25zOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWRBcmd1bWVudHNJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHM7XG4gIGFyZ3VtZW50c0Vycm9yOiBab2RFcnJvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RJbnZhbGlkUmV0dXJuVHlwZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlO1xuICByZXR1cm5UeXBlRXJyb3I6IFpvZEVycm9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWREYXRlSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2Uge1xuICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZTtcbn1cblxuZXhwb3J0IHR5cGUgU3RyaW5nVmFsaWRhdGlvbiA9XG4gIHwgXCJlbWFpbFwiXG4gIHwgXCJ1cmxcIlxuICB8IFwidXVpZFwiXG4gIHwgXCJyZWdleFwiXG4gIHwgXCJjdWlkXCJcbiAgfCB7IHN0YXJ0c1dpdGg6IHN0cmluZyB9XG4gIHwgeyBlbmRzV2l0aDogc3RyaW5nIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZFN0cmluZ0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZztcbiAgdmFsaWRhdGlvbjogU3RyaW5nVmFsaWRhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RUb29TbWFsbElzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS50b29fc21hbGw7XG4gIG1pbmltdW06IG51bWJlcjtcbiAgaW5jbHVzaXZlOiBib29sZWFuO1xuICB0eXBlOiBcImFycmF5XCIgfCBcInN0cmluZ1wiIHwgXCJudW1iZXJcIiB8IFwic2V0XCIgfCBcImRhdGVcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RUb29CaWdJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUudG9vX2JpZztcbiAgbWF4aW11bTogbnVtYmVyO1xuICBpbmNsdXNpdmU6IGJvb2xlYW47XG4gIHR5cGU6IFwiYXJyYXlcIiB8IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJzZXRcIiB8IFwiZGF0ZVwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWRJbnRlcnNlY3Rpb25UeXBlc0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2ROb3RNdWx0aXBsZU9mSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2Uge1xuICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjtcbiAgbXVsdGlwbGVPZjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEN1c3RvbUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5jdXN0b207XG4gIHBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgdHlwZSBEZW5vcm1hbGl6ZWRFcnJvciA9IHsgW2s6IHN0cmluZ106IERlbm9ybWFsaXplZEVycm9yIHwgc3RyaW5nW10gfTtcblxuZXhwb3J0IHR5cGUgWm9kSXNzdWVPcHRpb25hbE1lc3NhZ2UgPVxuICB8IFpvZEludmFsaWRUeXBlSXNzdWVcbiAgfCBab2RJbnZhbGlkTGl0ZXJhbElzc3VlXG4gIHwgWm9kVW5yZWNvZ25pemVkS2V5c0lzc3VlXG4gIHwgWm9kSW52YWxpZFVuaW9uSXNzdWVcbiAgfCBab2RJbnZhbGlkVW5pb25EaXNjcmltaW5hdG9ySXNzdWVcbiAgfCBab2RJbnZhbGlkRW51bVZhbHVlSXNzdWVcbiAgfCBab2RJbnZhbGlkQXJndW1lbnRzSXNzdWVcbiAgfCBab2RJbnZhbGlkUmV0dXJuVHlwZUlzc3VlXG4gIHwgWm9kSW52YWxpZERhdGVJc3N1ZVxuICB8IFpvZEludmFsaWRTdHJpbmdJc3N1ZVxuICB8IFpvZFRvb1NtYWxsSXNzdWVcbiAgfCBab2RUb29CaWdJc3N1ZVxuICB8IFpvZEludmFsaWRJbnRlcnNlY3Rpb25UeXBlc0lzc3VlXG4gIHwgWm9kTm90TXVsdGlwbGVPZklzc3VlXG4gIHwgWm9kQ3VzdG9tSXNzdWU7XG5cbmV4cG9ydCB0eXBlIFpvZElzc3VlID0gWm9kSXNzdWVPcHRpb25hbE1lc3NhZ2UgJiB7IG1lc3NhZ2U6IHN0cmluZyB9O1xuXG5leHBvcnQgY29uc3QgcXVvdGVsZXNzSnNvbiA9IChvYmo6IGFueSkgPT4ge1xuICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKTtcbiAgcmV0dXJuIGpzb24ucmVwbGFjZSgvXCIoW15cIl0rKVwiOi9nLCBcIiQxOlwiKTtcbn07XG5cbmV4cG9ydCB0eXBlIFpvZEZvcm1hdHRlZEVycm9yPFQsIFUgPSBzdHJpbmc+ID0ge1xuICBfZXJyb3JzOiBVW107XG59ICYgKFQgZXh0ZW5kcyBbYW55LCAuLi5hbnlbXV1cbiAgPyB7IFtLIGluIGtleW9mIFRdPzogWm9kRm9ybWF0dGVkRXJyb3I8VFtLXT4gfVxuICA6IFQgZXh0ZW5kcyBhbnlbXVxuICA/IHsgW2s6IG51bWJlcl06IFpvZEZvcm1hdHRlZEVycm9yPFRbbnVtYmVyXT4gfVxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgPyB7IFtLIGluIGtleW9mIFRdPzogWm9kRm9ybWF0dGVkRXJyb3I8VFtLXT4gfVxuICA6IHVua25vd24pO1xuXG5leHBvcnQgdHlwZSBpbmZlckZvcm1hdHRlZEVycm9yPFxuICBUIGV4dGVuZHMgWm9kVHlwZTxhbnksIGFueSwgYW55PixcbiAgVSA9IHN0cmluZ1xuPiA9IFpvZEZvcm1hdHRlZEVycm9yPFR5cGVPZjxUPiwgVT47XG5cbmV4cG9ydCBjbGFzcyBab2RFcnJvcjxUID0gYW55PiBleHRlbmRzIEVycm9yIHtcbiAgaXNzdWVzOiBab2RJc3N1ZVtdID0gW107XG5cbiAgZ2V0IGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc3N1ZXM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihpc3N1ZXM6IFpvZElzc3VlW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgYWN0dWFsUHJvdG8gPSBuZXcudGFyZ2V0LnByb3RvdHlwZTtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYmFuL2JhblxuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIGFjdHVhbFByb3RvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgKHRoaXMgYXMgYW55KS5fX3Byb3RvX18gPSBhY3R1YWxQcm90bztcbiAgICB9XG4gICAgdGhpcy5uYW1lID0gXCJab2RFcnJvclwiO1xuICAgIHRoaXMuaXNzdWVzID0gaXNzdWVzO1xuICB9XG5cbiAgZm9ybWF0KCk6IFpvZEZvcm1hdHRlZEVycm9yPFQ+O1xuICBmb3JtYXQ8VT4obWFwcGVyOiAoaXNzdWU6IFpvZElzc3VlKSA9PiBVKTogWm9kRm9ybWF0dGVkRXJyb3I8VCwgVT47XG4gIGZvcm1hdChfbWFwcGVyPzogYW55KSB7XG4gICAgY29uc3QgbWFwcGVyOiAoaXNzdWU6IFpvZElzc3VlKSA9PiBhbnkgPVxuICAgICAgX21hcHBlciB8fFxuICAgICAgZnVuY3Rpb24gKGlzc3VlOiBab2RJc3N1ZSkge1xuICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcbiAgICAgIH07XG4gICAgY29uc3QgZmllbGRFcnJvcnM6IFpvZEZvcm1hdHRlZEVycm9yPFQ+ID0geyBfZXJyb3JzOiBbXSB9IGFzIGFueTtcbiAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3I6IFpvZEVycm9yKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX3VuaW9uXCIpIHtcbiAgICAgICAgICBpc3N1ZS51bmlvbkVycm9ycy5tYXAocHJvY2Vzc0Vycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfcmV0dXJuX3R5cGVcIikge1xuICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5yZXR1cm5UeXBlRXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9hcmd1bWVudHNcIikge1xuICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5hcmd1bWVudHNFcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNzdWUucGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAoZmllbGRFcnJvcnMgYXMgYW55KS5fZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGN1cnI6IGFueSA9IGZpZWxkRXJyb3JzO1xuICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICB3aGlsZSAoaSA8IGlzc3VlLnBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IGlzc3VlLnBhdGhbaV07XG4gICAgICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IGkgPT09IGlzc3VlLnBhdGgubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgaWYgKCF0ZXJtaW5hbCkge1xuICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgLy8gaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAvLyAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHR5cGVvZiBlbCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAvLyAgIGNvbnN0IGVycm9yQXJyYXk6IGFueSA9IFtdO1xuICAgICAgICAgICAgICAvLyAgIGVycm9yQXJyYXkuX2Vycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAvLyAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgZXJyb3JBcnJheTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgIGN1cnJbZWxdLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBwcm9jZXNzRXJyb3IodGhpcyk7XG4gICAgcmV0dXJuIGZpZWxkRXJyb3JzO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChpc3N1ZXM6IFpvZElzc3VlW10pID0+IHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihpc3N1ZXMpO1xuICAgIHJldHVybiBlcnJvcjtcbiAgfTtcblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICB9XG4gIGdldCBtZXNzYWdlKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlzc3VlcywganNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBhZGRJc3N1ZSA9IChzdWI6IFpvZElzc3VlKSA9PiB7XG4gICAgdGhpcy5pc3N1ZXMgPSBbLi4udGhpcy5pc3N1ZXMsIHN1Yl07XG4gIH07XG5cbiAgYWRkSXNzdWVzID0gKHN1YnM6IFpvZElzc3VlW10gPSBbXSkgPT4ge1xuICAgIHRoaXMuaXNzdWVzID0gWy4uLnRoaXMuaXNzdWVzLCAuLi5zdWJzXTtcbiAgfTtcblxuICBmbGF0dGVuKCk6IHR5cGVUb0ZsYXR0ZW5lZEVycm9yPFQ+O1xuICBmbGF0dGVuPFU+KG1hcHBlcj86IChpc3N1ZTogWm9kSXNzdWUpID0+IFUpOiB0eXBlVG9GbGF0dGVuZWRFcnJvcjxULCBVPjtcbiAgZmxhdHRlbjxVID0gc3RyaW5nPihcbiAgICBtYXBwZXI6IChpc3N1ZTogWm9kSXNzdWUpID0+IFUgPSAoaXNzdWU6IFpvZElzc3VlKSA9PiBpc3N1ZS5tZXNzYWdlIGFzIGFueVxuICApOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkRXJyb3JzOiBhbnkgPSB7fTtcbiAgICBjb25zdCBmb3JtRXJyb3JzOiBVW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLmlzc3Vlcykge1xuICAgICAgaWYgKHN1Yi5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dID0gZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dIHx8IFtdO1xuICAgICAgICBmaWVsZEVycm9yc1tzdWIucGF0aFswXV0ucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtRXJyb3JzLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmb3JtRXJyb3JzLCBmaWVsZEVycm9ycyB9O1xuICB9XG5cbiAgZ2V0IGZvcm1FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhdHRlbigpO1xuICB9XG59XG5cbnR5cGUgc3RyaXBQYXRoPFQgZXh0ZW5kcyBvYmplY3Q+ID0gVCBleHRlbmRzIGFueVxuICA/IHV0aWwuT21pdEtleXM8VCwgXCJwYXRoXCI+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIElzc3VlRGF0YSA9IHN0cmlwUGF0aDxab2RJc3N1ZU9wdGlvbmFsTWVzc2FnZT4gJiB7XG4gIHBhdGg/OiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBmYXRhbD86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgTWFrZUVycm9yRGF0YSA9IElzc3VlRGF0YTtcblxudHlwZSBFcnJvck1hcEN0eCA9IHtcbiAgZGVmYXVsdEVycm9yOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIFpvZEVycm9yTWFwID0gdHlwZW9mIGRlZmF1bHRFcnJvck1hcDtcbmV4cG9ydCBjb25zdCBkZWZhdWx0RXJyb3JNYXAgPSAoXG4gIGlzc3VlOiBab2RJc3N1ZU9wdGlvbmFsTWVzc2FnZSxcbiAgX2N0eDogRXJyb3JNYXBDdHhcbik6IHsgbWVzc2FnZTogc3RyaW5nIH0gPT4ge1xuICBsZXQgbWVzc2FnZTogc3RyaW5nO1xuICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGU6XG4gICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBcIlJlcXVpcmVkXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gYEV4cGVjdGVkICR7aXNzdWUuZXhwZWN0ZWR9LCByZWNlaXZlZCAke2lzc3VlLnJlY2VpdmVkfWA7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWw6XG4gICAgICBtZXNzYWdlID0gYEludmFsaWQgbGl0ZXJhbCB2YWx1ZSwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgaXNzdWUuZXhwZWN0ZWQsXG4gICAgICAgIGpzb25TdHJpbmdpZnlSZXBsYWNlclxuICAgICAgKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXM6XG4gICAgICBtZXNzYWdlID0gYFVucmVjb2duaXplZCBrZXkocykgaW4gb2JqZWN0OiAke3V0aWwuam9pblZhbHVlcyhcbiAgICAgICAgaXNzdWUua2V5cyxcbiAgICAgICAgXCIsIFwiXG4gICAgICApfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uOlxuICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcjpcbiAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke3V0aWwuam9pblZhbHVlcyhcbiAgICAgICAgaXNzdWUub3B0aW9uc1xuICAgICAgKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlOlxuICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGVudW0gdmFsdWUuIEV4cGVjdGVkICR7dXRpbC5qb2luVmFsdWVzKFxuICAgICAgICBpc3N1ZS5vcHRpb25zXG4gICAgICApfSwgcmVjZWl2ZWQgJyR7aXNzdWUucmVjZWl2ZWR9J2A7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50czpcbiAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHNgO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZTpcbiAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiByZXR1cm4gdHlwZWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGU6XG4gICAgICBtZXNzYWdlID0gYEludmFsaWQgZGF0ZWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZzpcbiAgICAgIGlmICh0eXBlb2YgaXNzdWUudmFsaWRhdGlvbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoXCJzdGFydHNXaXRoXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dDogbXVzdCBzdGFydCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLnN0YXJ0c1dpdGh9XCJgO1xuICAgICAgICB9IGVsc2UgaWYgKFwiZW5kc1dpdGhcIiBpbiBpc3N1ZS52YWxpZGF0aW9uKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLmVuZHNXaXRofVwiYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlLnZhbGlkYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzc3VlLnZhbGlkYXRpb24gIT09IFwicmVnZXhcIikge1xuICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgJHtpc3N1ZS52YWxpZGF0aW9ufWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gXCJJbnZhbGlkXCI7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS50b29fc21hbGw6XG4gICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICBtZXNzYWdlID0gYEFycmF5IG11c3QgY29udGFpbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBsZWFzdGAgOiBgbW9yZSB0aGFuYFxuICAgICAgICB9ICR7aXNzdWUubWluaW11bX0gZWxlbWVudChzKWA7XG4gICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICBtZXNzYWdlID0gYFN0cmluZyBtdXN0IGNvbnRhaW4gJHtcbiAgICAgICAgICBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbGVhc3RgIDogYG92ZXJgXG4gICAgICAgIH0gJHtpc3N1ZS5taW5pbXVtfSBjaGFyYWN0ZXIocylgO1xuICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gJHtcbiAgICAgICAgICBpc3N1ZS5pbmNsdXNpdmUgPyBgb3IgZXF1YWwgdG8gYCA6IGBgXG4gICAgICAgIH0ke2lzc3VlLm1pbmltdW19YDtcbiAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiZGF0ZVwiKVxuICAgICAgICBtZXNzYWdlID0gYERhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJHtcbiAgICAgICAgICBpc3N1ZS5pbmNsdXNpdmUgPyBgb3IgZXF1YWwgdG8gYCA6IGBgXG4gICAgICAgIH0ke25ldyBEYXRlKGlzc3VlLm1pbmltdW0pfWA7XG4gICAgICBlbHNlIG1lc3NhZ2UgPSBcIkludmFsaWQgaW5wdXRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19iaWc6XG4gICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICBtZXNzYWdlID0gYEFycmF5IG11c3QgY29udGFpbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBtb3N0YCA6IGBsZXNzIHRoYW5gXG4gICAgICAgIH0gJHtpc3N1ZS5tYXhpbXVtfSBlbGVtZW50KHMpYDtcbiAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIG1lc3NhZ2UgPSBgU3RyaW5nIG11c3QgY29udGFpbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBtb3N0YCA6IGB1bmRlcmBcbiAgICAgICAgfSAke2lzc3VlLm1heGltdW19IGNoYXJhY3RlcihzKWA7XG4gICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcIm51bWJlclwiKVxuICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlIGxlc3MgdGhhbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBvciBlcXVhbCB0byBgIDogYGBcbiAgICAgICAgfSR7aXNzdWUubWF4aW11bX1gO1xuICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJkYXRlXCIpXG4gICAgICAgIG1lc3NhZ2UgPSBgRGF0ZSBtdXN0IGJlIHNtYWxsZXIgdGhhbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBvciBlcXVhbCB0byBgIDogYGBcbiAgICAgICAgfSR7bmV3IERhdGUoaXNzdWUubWF4aW11bSl9YDtcbiAgICAgIGVsc2UgbWVzc2FnZSA9IFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUuY3VzdG9tOlxuICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzOlxuICAgICAgbWVzc2FnZSA9IGBJbnRlcnNlY3Rpb24gcmVzdWx0cyBjb3VsZCBub3QgYmUgbWVyZ2VkYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjpcbiAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2lzc3VlLm11bHRpcGxlT2Z9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtZXNzYWdlID0gX2N0eC5kZWZhdWx0RXJyb3I7XG4gICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlKTtcbiAgfVxuICByZXR1cm4geyBtZXNzYWdlIH07XG59O1xuXG5sZXQgb3ZlcnJpZGVFcnJvck1hcCA9IGRlZmF1bHRFcnJvck1hcDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWFwKG1hcDogWm9kRXJyb3JNYXApIHtcbiAgb3ZlcnJpZGVFcnJvck1hcCA9IG1hcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTWFwKCkge1xuICByZXR1cm4gb3ZlcnJpZGVFcnJvck1hcDtcbn1cbiIsImV4cG9ydCBuYW1lc3BhY2UgZXJyb3JVdGlsIHtcbiAgZXhwb3J0IHR5cGUgRXJyTWVzc2FnZSA9IHN0cmluZyB8IHsgbWVzc2FnZT86IHN0cmluZyB9O1xuICBleHBvcnQgY29uc3QgZXJyVG9PYmogPSAobWVzc2FnZT86IEVyck1lc3NhZ2UpID0+XG4gICAgdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2UgfSA6IG1lc3NhZ2UgfHwge307XG4gIGV4cG9ydCBjb25zdCB0b1N0cmluZyA9IChtZXNzYWdlPzogRXJyTWVzc2FnZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICAgIHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IG1lc3NhZ2U/Lm1lc3NhZ2U7XG59XG4iLCJpbXBvcnQgeyBlbnVtVXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvZW51bVV0aWwudHNcIjtcbmltcG9ydCB7IGVycm9yVXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvZXJyb3JVdGlsLnRzXCI7XG5pbXBvcnQge1xuICBhZGRJc3N1ZVRvQ29udGV4dCxcbiAgQXN5bmNQYXJzZVJldHVyblR5cGUsXG4gIERJUlRZLFxuICBJTlZBTElELFxuICBpc0Fib3J0ZWQsXG4gIGlzQXN5bmMsXG4gIGlzRGlydHksXG4gIGlzVmFsaWQsXG4gIG1ha2VJc3N1ZSxcbiAgT0ssXG4gIFBhcnNlQ29udGV4dCxcbiAgUGFyc2VJbnB1dCxcbiAgUGFyc2VQYXJhbXMsXG4gIFBhcnNlUGF0aCxcbiAgUGFyc2VSZXR1cm5UeXBlLFxuICBQYXJzZVN0YXR1cyxcbiAgU3luY1BhcnNlUmV0dXJuVHlwZSxcbn0gZnJvbSBcIi4vaGVscGVycy9wYXJzZVV0aWwudHNcIjtcbmltcG9ydCB7IHBhcnRpYWxVdGlsIH0gZnJvbSBcIi4vaGVscGVycy9wYXJ0aWFsVXRpbC50c1wiO1xuaW1wb3J0IHsgUHJpbWl0aXZlIH0gZnJvbSBcIi4vaGVscGVycy90eXBlQWxpYXNlcy50c1wiO1xuaW1wb3J0IHsgZ2V0UGFyc2VkVHlwZSwgdXRpbCwgWm9kUGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC50c1wiO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEVycm9yTWFwLFxuICBnZXRFcnJvck1hcCxcbiAgSXNzdWVEYXRhLFxuICBTdHJpbmdWYWxpZGF0aW9uLFxuICBab2RDdXN0b21Jc3N1ZSxcbiAgWm9kRXJyb3IsXG4gIFpvZEVycm9yTWFwLFxuICBab2RJc3N1ZSxcbiAgWm9kSXNzdWVDb2RlLFxufSBmcm9tIFwiLi9ab2RFcnJvci50c1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVHlwZSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IHR5cGUgUmVmaW5lbWVudEN0eCA9IHtcbiAgYWRkSXNzdWU6IChhcmc6IElzc3VlRGF0YSkgPT4gdm9pZDtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbn07XG5leHBvcnQgdHlwZSBab2RSYXdTaGFwZSA9IHsgW2s6IHN0cmluZ106IFpvZFR5cGVBbnkgfTtcbmV4cG9ydCB0eXBlIFpvZFR5cGVBbnkgPSBab2RUeXBlPGFueSwgYW55LCBhbnk+O1xuZXhwb3J0IHR5cGUgVHlwZU9mPFQgZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55LCBhbnk+PiA9IFRbXCJfb3V0cHV0XCJdO1xuZXhwb3J0IHR5cGUgaW5wdXQ8VCBleHRlbmRzIFpvZFR5cGU8YW55LCBhbnksIGFueT4+ID0gVFtcIl9pbnB1dFwiXTtcbmV4cG9ydCB0eXBlIG91dHB1dDxUIGV4dGVuZHMgWm9kVHlwZTxhbnksIGFueSwgYW55Pj4gPSBUW1wiX291dHB1dFwiXTtcbmV4cG9ydCB0eXBlIHsgVHlwZU9mIGFzIGluZmVyIH07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUVycm9yUGFyYW1zID0gUGFydGlhbDx1dGlsLk9taXQ8Wm9kQ3VzdG9tSXNzdWUsIFwiY29kZVwiPj47XG5leHBvcnQgaW50ZXJmYWNlIFpvZFR5cGVEZWYge1xuICBlcnJvck1hcD86IFpvZEVycm9yTWFwO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuY2xhc3MgUGFyc2VJbnB1dExhenlQYXRoIGltcGxlbWVudHMgUGFyc2VJbnB1dCB7XG4gIHBhcmVudDogUGFyc2VDb250ZXh0O1xuICBkYXRhOiBhbnk7XG4gIF9wYXRoOiBQYXJzZVBhdGg7XG4gIF9rZXk6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHBhcmVudDogUGFyc2VDb250ZXh0LFxuICAgIHZhbHVlOiBhbnksXG4gICAgcGF0aDogUGFyc2VQYXRoLFxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXVxuICApIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgICB0aGlzLl9wYXRoID0gcGF0aDtcbiAgICB0aGlzLl9rZXkgPSBrZXk7XG4gIH1cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGguY29uY2F0KHRoaXMuX2tleSk7XG4gIH1cbn1cblxuY29uc3QgaGFuZGxlUmVzdWx0ID0gPElucHV0LCBPdXRwdXQ+KFxuICBjdHg6IFBhcnNlQ29udGV4dCxcbiAgcmVzdWx0OiBTeW5jUGFyc2VSZXR1cm5UeXBlPE91dHB1dD5cbik6XG4gIHwgeyBzdWNjZXNzOiB0cnVlOyBkYXRhOiBPdXRwdXQgfVxuICB8IHsgc3VjY2VzczogZmFsc2U7IGVycm9yOiBab2RFcnJvcjxJbnB1dD4gfSA9PiB7XG4gIGlmIChpc1ZhbGlkKHJlc3VsdCkpIHtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQudmFsdWUgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWN0eC5jb21tb24uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVmFsaWRhdGlvbiBmYWlsZWQgYnV0IG5vIGlzc3VlcyBkZXRlY3RlZC5cIik7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yID0gbmV3IFpvZEVycm9yKGN0eC5jb21tb24uaXNzdWVzKTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3IgfTtcbiAgfVxufTtcblxudHlwZSBSYXdDcmVhdGVQYXJhbXMgPVxuICB8IHtcbiAgICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXA7XG4gICAgICBpbnZhbGlkX3R5cGVfZXJyb3I/OiBzdHJpbmc7XG4gICAgICByZXF1aXJlZF9lcnJvcj86IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH1cbiAgfCB1bmRlZmluZWQ7XG50eXBlIFByb2Nlc3NlZENyZWF0ZVBhcmFtcyA9IHsgZXJyb3JNYXA/OiBab2RFcnJvck1hcDsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfTtcbmZ1bmN0aW9uIHByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zOiBSYXdDcmVhdGVQYXJhbXMpOiBQcm9jZXNzZWRDcmVhdGVQYXJhbXMge1xuICBpZiAoIXBhcmFtcykgcmV0dXJuIHt9O1xuICBjb25zdCB7IGVycm9yTWFwLCBpbnZhbGlkX3R5cGVfZXJyb3IsIHJlcXVpcmVkX2Vycm9yLCBkZXNjcmlwdGlvbiB9ID0gcGFyYW1zO1xuICBpZiAoZXJyb3JNYXAgJiYgKGludmFsaWRfdHlwZV9lcnJvciB8fCByZXF1aXJlZF9lcnJvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2FuJ3QgdXNlIFwiaW52YWxpZFwiIG9yIFwicmVxdWlyZWRcIiBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSBlcnJvciBtYXAuYFxuICAgICk7XG4gIH1cbiAgaWYgKGVycm9yTWFwKSByZXR1cm4geyBlcnJvck1hcDogZXJyb3JNYXAsIGRlc2NyaXB0aW9uIH07XG4gIGNvbnN0IGN1c3RvbU1hcDogWm9kRXJyb3JNYXAgPSAoaXNzLCBjdHgpID0+IHtcbiAgICBpZiAoaXNzLmNvZGUgIT09IFwiaW52YWxpZF90eXBlXCIpIHJldHVybiB7IG1lc3NhZ2U6IGN0eC5kZWZhdWx0RXJyb3IgfTtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlOiByZXF1aXJlZF9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgfVxuICAgIHJldHVybiB7IG1lc3NhZ2U6IGludmFsaWRfdHlwZV9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gIH07XG4gIHJldHVybiB7IGVycm9yTWFwOiBjdXN0b21NYXAsIGRlc2NyaXB0aW9uIH07XG59XG5cbmV4cG9ydCB0eXBlIFNhZmVQYXJzZVN1Y2Nlc3M8T3V0cHV0PiA9IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogT3V0cHV0IH07XG5leHBvcnQgdHlwZSBTYWZlUGFyc2VFcnJvcjxJbnB1dD4gPSB7IHN1Y2Nlc3M6IGZhbHNlOyBlcnJvcjogWm9kRXJyb3I8SW5wdXQ+IH07XG5cbmV4cG9ydCB0eXBlIFNhZmVQYXJzZVJldHVyblR5cGU8SW5wdXQsIE91dHB1dD4gPVxuICB8IFNhZmVQYXJzZVN1Y2Nlc3M8T3V0cHV0PlxuICB8IFNhZmVQYXJzZUVycm9yPElucHV0PjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFpvZFR5cGU8XG4gIE91dHB1dCA9IGFueSxcbiAgRGVmIGV4dGVuZHMgWm9kVHlwZURlZiA9IFpvZFR5cGVEZWYsXG4gIElucHV0ID0gT3V0cHV0XG4+IHtcbiAgcmVhZG9ubHkgX3R5cGUhOiBPdXRwdXQ7XG4gIHJlYWRvbmx5IF9vdXRwdXQhOiBPdXRwdXQ7XG4gIHJlYWRvbmx5IF9pbnB1dCE6IElucHV0O1xuICByZWFkb25seSBfZGVmITogRGVmO1xuXG4gIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgYWJzdHJhY3QgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPE91dHB1dD47XG5cbiAgX2dldFR5cGUoaW5wdXQ6IFBhcnNlSW5wdXQpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpO1xuICB9XG5cbiAgX2dldE9yUmV0dXJuQ3R4KFxuICAgIGlucHV0OiBQYXJzZUlucHV0LFxuICAgIGN0eD86IFBhcnNlQ29udGV4dCB8IHVuZGVmaW5lZFxuICApOiBQYXJzZUNvbnRleHQge1xuICAgIHJldHVybiAoXG4gICAgICBjdHggfHwge1xuICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG5cbiAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcblxuICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICBwYXRoOiBpbnB1dC5wYXRoLFxuICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dDogUGFyc2VJbnB1dCk6IHtcbiAgICBzdGF0dXM6IFBhcnNlU3RhdHVzO1xuICAgIGN0eDogUGFyc2VDb250ZXh0O1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBuZXcgUGFyc2VTdGF0dXMoKSxcbiAgICAgIGN0eDoge1xuICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG5cbiAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcblxuICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICBwYXRoOiBpbnB1dC5wYXRoLFxuICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIF9wYXJzZVN5bmMoaW5wdXQ6IFBhcnNlSW5wdXQpOiBTeW5jUGFyc2VSZXR1cm5UeXBlPE91dHB1dD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlKGlucHV0KTtcbiAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF9wYXJzZUFzeW5jKGlucHV0OiBQYXJzZUlucHV0KTogQXN5bmNQYXJzZVJldHVyblR5cGU8T3V0cHV0PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICB9XG5cbiAgcGFyc2UoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pOiBPdXRwdXQge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2FmZVBhcnNlKGRhdGEsIHBhcmFtcyk7XG4gICAgaWYgKHJlc3VsdC5zdWNjZXNzKSByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgc2FmZVBhcnNlKFxuICAgIGRhdGE6IHVua25vd24sXG4gICAgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz5cbiAgKTogU2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0PiB7XG4gICAgY29uc3QgY3R4OiBQYXJzZUNvbnRleHQgPSB7XG4gICAgICBjb21tb246IHtcbiAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgYXN5bmM6IHBhcmFtcz8uYXN5bmMgPz8gZmFsc2UsXG4gICAgICAgIGNvbnRleHR1YWxFcnJvck1hcDogcGFyYW1zPy5lcnJvck1hcCxcbiAgICAgIH0sXG4gICAgICBwYXRoOiBwYXJhbXM/LnBhdGggfHwgW10sXG4gICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgZGF0YSxcbiAgICAgIHBhcnNlZFR5cGU6IGdldFBhcnNlZFR5cGUoZGF0YSksXG4gICAgfTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZVN5bmMoeyBkYXRhLCBwYXRoOiBjdHgucGF0aCwgcGFyZW50OiBjdHggfSk7XG5cbiAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIHBhcnNlQXN5bmMoXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBwYXJhbXM/OiBQYXJ0aWFsPFBhcnNlUGFyYW1zPlxuICApOiBQcm9taXNlPE91dHB1dD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2FmZVBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKTtcbiAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBhc3luYyBzYWZlUGFyc2VBc3luYyhcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIHBhcmFtcz86IFBhcnRpYWw8UGFyc2VQYXJhbXM+XG4gICk6IFByb21pc2U8U2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0Pj4ge1xuICAgIGNvbnN0IGN0eDogUGFyc2VDb250ZXh0ID0ge1xuICAgICAgY29tbW9uOiB7XG4gICAgICAgIGlzc3VlczogW10sXG4gICAgICAgIGNvbnRleHR1YWxFcnJvck1hcDogcGFyYW1zPy5lcnJvck1hcCxcbiAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICB9LFxuICAgICAgcGF0aDogcGFyYW1zPy5wYXRoIHx8IFtdLFxuICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcbiAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgIGRhdGEsXG4gICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGRhdGEpLFxuICAgIH07XG5cbiAgICBjb25zdCBtYXliZUFzeW5jUmVzdWx0ID0gdGhpcy5fcGFyc2UoeyBkYXRhLCBwYXRoOiBbXSwgcGFyZW50OiBjdHggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGlzQXN5bmMobWF5YmVBc3luY1Jlc3VsdClcbiAgICAgID8gbWF5YmVBc3luY1Jlc3VsdFxuICAgICAgOiBQcm9taXNlLnJlc29sdmUobWF5YmVBc3luY1Jlc3VsdCkpO1xuICAgIHJldHVybiBoYW5kbGVSZXN1bHQoY3R4LCByZXN1bHQpO1xuICB9XG5cbiAgLyoqIEFsaWFzIG9mIHNhZmVQYXJzZUFzeW5jICovXG4gIHNwYSA9IHRoaXMuc2FmZVBhcnNlQXN5bmM7XG5cbiAgcmVmaW5lPFJlZmluZWRPdXRwdXQgZXh0ZW5kcyBPdXRwdXQ+KFxuICAgIGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IGFyZyBpcyBSZWZpbmVkT3V0cHV0LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBDdXN0b21FcnJvclBhcmFtcyB8ICgoYXJnOiBPdXRwdXQpID0+IEN1c3RvbUVycm9yUGFyYW1zKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIFJlZmluZWRPdXRwdXQsIFJlZmluZWRPdXRwdXQ+O1xuICByZWZpbmUoXG4gICAgY2hlY2s6IChhcmc6IE91dHB1dCkgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4sXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IEN1c3RvbUVycm9yUGFyYW1zIHwgKChhcmc6IE91dHB1dCkgPT4gQ3VzdG9tRXJyb3JQYXJhbXMpXG4gICk6IFpvZEVmZmVjdHM8dGhpcywgT3V0cHV0LCBJbnB1dD47XG4gIHJlZmluZShcbiAgICBjaGVjazogKGFyZzogT3V0cHV0KSA9PiB1bmtub3duLFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBDdXN0b21FcnJvclBhcmFtcyB8ICgoYXJnOiBPdXRwdXQpID0+IEN1c3RvbUVycm9yUGFyYW1zKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+IHtcbiAgICBjb25zdCBnZXRJc3N1ZVByb3BlcnRpZXM6IGFueSA9ICh2YWw6IE91dHB1dCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBtZXNzYWdlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gbWVzc2FnZSh2YWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgodmFsLCBjdHgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNoZWNrKHZhbCk7XG4gICAgICBjb25zdCBzZXRFcnJvciA9ICgpID0+XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgICAuLi5nZXRJc3N1ZVByb3BlcnRpZXModmFsKSxcbiAgICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHNldEVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBzZXRFcnJvcigpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlZmluZW1lbnQ8UmVmaW5lZE91dHB1dCBleHRlbmRzIE91dHB1dD4oXG4gICAgY2hlY2s6IChhcmc6IE91dHB1dCkgPT4gYXJnIGlzIFJlZmluZWRPdXRwdXQsXG4gICAgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIFJlZmluZWRPdXRwdXQsIFJlZmluZWRPdXRwdXQ+O1xuICByZWZpbmVtZW50KFxuICAgIGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IGJvb2xlYW4sXG4gICAgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+O1xuICByZWZpbmVtZW50KFxuICAgIGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IHVua25vd24sXG4gICAgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgodmFsLCBjdHgpID0+IHtcbiAgICAgIGlmICghY2hlY2sodmFsKSkge1xuICAgICAgICBjdHguYWRkSXNzdWUoXG4gICAgICAgICAgdHlwZW9mIHJlZmluZW1lbnREYXRhID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgID8gcmVmaW5lbWVudERhdGEodmFsLCBjdHgpXG4gICAgICAgICAgICA6IHJlZmluZW1lbnREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgX3JlZmluZW1lbnQoXG4gICAgcmVmaW5lbWVudDogUmVmaW5lbWVudEVmZmVjdDxPdXRwdXQ+W1wicmVmaW5lbWVudFwiXVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgZWZmZWN0OiB7IHR5cGU6IFwicmVmaW5lbWVudFwiLCByZWZpbmVtZW50IH0sXG4gICAgfSk7XG4gIH1cbiAgc3VwZXJSZWZpbmUgPSB0aGlzLl9yZWZpbmVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGRlZjogRGVmKSB7XG4gICAgdGhpcy5fZGVmID0gZGVmO1xuICAgIHRoaXMucGFyc2UgPSB0aGlzLnBhcnNlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zYWZlUGFyc2UgPSB0aGlzLnNhZmVQYXJzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucGFyc2VBc3luYyA9IHRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2FmZVBhcnNlQXN5bmMgPSB0aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zcGEgPSB0aGlzLnNwYS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVmaW5lID0gdGhpcy5yZWZpbmUuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZmluZW1lbnQgPSB0aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnN1cGVyUmVmaW5lID0gdGhpcy5zdXBlclJlZmluZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMub3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5udWxsYWJsZSA9IHRoaXMubnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICB0aGlzLm51bGxpc2ggPSB0aGlzLm51bGxpc2guYmluZCh0aGlzKTtcbiAgICB0aGlzLmFycmF5ID0gdGhpcy5hcnJheS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucHJvbWlzZSA9IHRoaXMucHJvbWlzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMub3IgPSB0aGlzLm9yLmJpbmQodGhpcyk7XG4gICAgdGhpcy5hbmQgPSB0aGlzLmFuZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlZmF1bHQgPSB0aGlzLmRlZmF1bHQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlc2NyaWJlID0gdGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNOdWxsYWJsZSA9IHRoaXMuaXNOdWxsYWJsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNPcHRpb25hbCA9IHRoaXMuaXNPcHRpb25hbC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgb3B0aW9uYWwoKTogWm9kT3B0aW9uYWw8dGhpcz4ge1xuICAgIHJldHVybiBab2RPcHRpb25hbC5jcmVhdGUodGhpcykgYXMgYW55O1xuICB9XG4gIG51bGxhYmxlKCk6IFpvZE51bGxhYmxlPHRoaXM+IHtcbiAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKHRoaXMpIGFzIGFueTtcbiAgfVxuICBudWxsaXNoKCk6IFpvZE51bGxhYmxlPFpvZE9wdGlvbmFsPHRoaXM+PiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWwoKS5udWxsYWJsZSgpO1xuICB9XG4gIGFycmF5KCk6IFpvZEFycmF5PHRoaXM+IHtcbiAgICByZXR1cm4gWm9kQXJyYXkuY3JlYXRlKHRoaXMpO1xuICB9XG4gIHByb21pc2UoKTogWm9kUHJvbWlzZTx0aGlzPiB7XG4gICAgcmV0dXJuIFpvZFByb21pc2UuY3JlYXRlKHRoaXMpO1xuICB9XG5cbiAgb3I8VCBleHRlbmRzIFpvZFR5cGVBbnk+KG9wdGlvbjogVCk6IFpvZFVuaW9uPFt0aGlzLCBUXT4ge1xuICAgIHJldHVybiBab2RVbmlvbi5jcmVhdGUoW3RoaXMsIG9wdGlvbl0pIGFzIGFueTtcbiAgfVxuXG4gIGFuZDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oaW5jb21pbmc6IFQpOiBab2RJbnRlcnNlY3Rpb248dGhpcywgVD4ge1xuICAgIHJldHVybiBab2RJbnRlcnNlY3Rpb24uY3JlYXRlKHRoaXMsIGluY29taW5nKTtcbiAgfVxuXG4gIHRyYW5zZm9ybTxOZXdPdXQ+KFxuICAgIHRyYW5zZm9ybTogKGFyZzogT3V0cHV0LCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IE5ld091dCB8IFByb21pc2U8TmV3T3V0PlxuICApOiBab2RFZmZlY3RzPHRoaXMsIE5ld091dD4ge1xuICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XG4gICAgICBzY2hlbWE6IHRoaXMsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICBlZmZlY3Q6IHsgdHlwZTogXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtIH0sXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgZGVmYXVsdChkZWY6IHV0aWwubm9VbmRlZmluZWQ8SW5wdXQ+KTogWm9kRGVmYXVsdDx0aGlzPjtcbiAgZGVmYXVsdChkZWY6ICgpID0+IHV0aWwubm9VbmRlZmluZWQ8SW5wdXQ+KTogWm9kRGVmYXVsdDx0aGlzPjtcbiAgZGVmYXVsdChkZWY6IGFueSkge1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZ1bmMgPSB0eXBlb2YgZGVmID09PSBcImZ1bmN0aW9uXCIgPyBkZWYgOiAoKSA9PiBkZWY7XG5cbiAgICByZXR1cm4gbmV3IFpvZERlZmF1bHQoe1xuICAgICAgaW5uZXJUeXBlOiB0aGlzLFxuICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVGdW5jLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REZWZhdWx0LFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIGRlc2NyaWJlKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBUaGlzID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gbmV3IFRoaXMoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gIH1cblxuICBpc09wdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNhZmVQYXJzZSh1bmRlZmluZWQpLnN1Y2Nlc3M7XG4gIH1cbiAgaXNOdWxsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYWZlUGFyc2UobnVsbCkuc3VjY2VzcztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kU3RyaW5nICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xudHlwZSBab2RTdHJpbmdDaGVjayA9XG4gIHwgeyBraW5kOiBcIm1pblwiOyB2YWx1ZTogbnVtYmVyOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwibWF4XCI7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJlbWFpbFwiOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwidXJsXCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJ1dWlkXCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJjdWlkXCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJzdGFydHNXaXRoXCI7IHZhbHVlOiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJlbmRzV2l0aFwiOyB2YWx1ZTogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwicmVnZXhcIjsgcmVnZXg6IFJlZ0V4cDsgbWVzc2FnZT86IHN0cmluZyB9XG4gIHwgeyBraW5kOiBcInRyaW1cIjsgbWVzc2FnZT86IHN0cmluZyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvZFN0cmluZ0RlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICBjaGVja3M6IFpvZFN0cmluZ0NoZWNrW107XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3RyaW5nO1xufVxuXG5jb25zdCBjdWlkUmVnZXggPSAvXmNbXlxccy1dezgsfSQvaTtcbmNvbnN0IHV1aWRSZWdleCA9XG4gIC9eKFthLWYwLTldezh9LVthLWYwLTldezR9LVsxLTVdW2EtZjAtOV17M30tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7XG4vLyBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80NjE4MS8xNTUwMTU1XG4vLyBvbGQgdmVyc2lvbjogdG9vIHNsb3csIGRpZG4ndCBzdXBwb3J0IHVuaWNvZGVcbi8vIGNvbnN0IGVtYWlsUmVnZXggPSAvXigoKFthLXpdfFxcZHxbISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSsoXFwuKFthLXpdfFxcZHxbISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSspKil8KChcXHgyMikoKCgoXFx4MjB8XFx4MDkpKihcXHgwZFxceDBhKSk/KFxceDIwfFxceDA5KSspPygoW1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4N2ZdfFxceDIxfFtcXHgyMy1cXHg1Yl18W1xceDVkLVxceDdlXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KFxcXFwoW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBkLVxceDdmXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKSkqKCgoXFx4MjB8XFx4MDkpKihcXHgwZFxceDBhKSk/KFxceDIwfFxceDA5KSspPyhcXHgyMikpKUAoKChbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKShbYS16XXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSooW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpXFwuKSsoKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKShbYS16XXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSooW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkkL2k7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmNvbnN0IGVtYWlsUmVnZXggPVxuICAvXigoW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rXFwuKStbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdezIsfSkkL2k7XG5cbmV4cG9ydCBjbGFzcyBab2RTdHJpbmcgZXh0ZW5kcyBab2RUeXBlPHN0cmluZywgWm9kU3RyaW5nRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG5cbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zdHJpbmcpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KFxuICAgICAgICBjdHgsXG4gICAgICAgIHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnN0cmluZyxcbiAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgIH1cbiAgICAgICAgLy9cbiAgICAgICk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICBsZXQgY3R4OiB1bmRlZmluZWQgfCBQYXJzZUNvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhLmxlbmd0aCA8IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhLmxlbmd0aCA+IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbWFpbFwiKSB7XG4gICAgICAgIGlmICghZW1haWxSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBcImVtYWlsXCIsXG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidXVpZFwiKSB7XG4gICAgICAgIGlmICghdXVpZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb246IFwidXVpZFwiLFxuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImN1aWRcIikge1xuICAgICAgICBpZiAoIWN1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBcImN1aWRcIixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ1cmxcIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG5ldyBVUkwoaW5wdXQuZGF0YSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJ1cmxcIixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJyZWdleFwiKSB7XG4gICAgICAgIGNoZWNrLnJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBjaGVjay5yZWdleC50ZXN0KGlucHV0LmRhdGEpO1xuICAgICAgICBpZiAoIXRlc3RSZXN1bHQpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb246IFwicmVnZXhcIixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0cmltXCIpIHtcbiAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudHJpbSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInN0YXJ0c1dpdGhcIikge1xuICAgICAgICBpZiAoIShpbnB1dC5kYXRhIGFzIHN0cmluZykuc3RhcnRzV2l0aChjaGVjay52YWx1ZSkpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIHZhbGlkYXRpb246IHsgc3RhcnRzV2l0aDogY2hlY2sudmFsdWUgfSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbmRzV2l0aFwiKSB7XG4gICAgICAgIGlmICghKGlucHV0LmRhdGEgYXMgc3RyaW5nKS5lbmRzV2l0aChjaGVjay52YWx1ZSkpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIHZhbGlkYXRpb246IHsgZW5kc1dpdGg6IGNoZWNrLnZhbHVlIH0sXG4gICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfcmVnZXggPSAoXG4gICAgcmVnZXg6IFJlZ0V4cCxcbiAgICB2YWxpZGF0aW9uOiBTdHJpbmdWYWxpZGF0aW9uLFxuICAgIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZVxuICApID0+XG4gICAgdGhpcy5yZWZpbmVtZW50KChkYXRhKSA9PiByZWdleC50ZXN0KGRhdGEpLCB7XG4gICAgICB2YWxpZGF0aW9uLFxuICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgIH0pO1xuXG4gIF9hZGRDaGVjayhjaGVjazogWm9kU3RyaW5nQ2hlY2spIHtcbiAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgfSk7XG4gIH1cblxuICBlbWFpbChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImVtYWlsXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgfVxuICB1cmwobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1cmxcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICB9XG4gIHV1aWQobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1dWlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgfVxuICBjdWlkKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY3VpZFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gIH1cbiAgcmVnZXgocmVnZXg6IFJlZ0V4cCwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwicmVnZXhcIixcbiAgICAgIHJlZ2V4OiByZWdleCxcbiAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0c1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwic3RhcnRzV2l0aFwiLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgZW5kc1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwiZW5kc1dpdGhcIixcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG1pbihtaW5MZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICB2YWx1ZTogbWluTGVuZ3RoLFxuICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgbWF4KG1heExlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAga2luZDogXCJtYXhcIixcbiAgICAgIHZhbHVlOiBtYXhMZW5ndGgsXG4gICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgfSk7XG4gIH1cblxuICBsZW5ndGgobGVuOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLm1pbihsZW4sIG1lc3NhZ2UpLm1heChsZW4sIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB6LnN0cmluZygpLm1pbigxKSBpbnN0ZWFkLlxuICAgKiBAc2VlIHtAbGluayBab2RTdHJpbmcubWlufVxuICAgKi9cbiAgbm9uZW1wdHkgPSAobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSA9PlxuICAgIHRoaXMubWluKDEsIGVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSk7XG5cbiAgdHJpbSA9ICgpID0+XG4gICAgbmV3IFpvZFN0cmluZyh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCB7IGtpbmQ6IFwidHJpbVwiIH1dLFxuICAgIH0pO1xuXG4gIGdldCBpc0VtYWlsKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZW1haWxcIik7XG4gIH1cbiAgZ2V0IGlzVVJMKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwidXJsXCIpO1xuICB9XG4gIGdldCBpc1VVSUQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ1dWlkXCIpO1xuICB9XG4gIGdldCBpc0NVSUQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkXCIpO1xuICB9XG4gIGdldCBtaW5MZW5ndGgoKSB7XG4gICAgbGV0IG1pbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKSBtaW4gPSBjaC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuICBnZXQgbWF4TGVuZ3RoKCkge1xuICAgIGxldCBtYXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heCkgbWF4ID0gY2gudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyk6IFpvZFN0cmluZyA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgY2hlY2tzOiBbXSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3RyaW5nLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTnVtYmVyICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xudHlwZSBab2ROdW1iZXJDaGVjayA9XG4gIHwgeyBraW5kOiBcIm1pblwiOyB2YWx1ZTogbnVtYmVyOyBpbmNsdXNpdmU6IGJvb2xlYW47IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJtYXhcIjsgdmFsdWU6IG51bWJlcjsgaW5jbHVzaXZlOiBib29sZWFuOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwiaW50XCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJtdWx0aXBsZU9mXCI7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzk2NjQ4NC93aHktZG9lcy1tb2R1bHVzLW9wZXJhdG9yLXJldHVybi1mcmFjdGlvbmFsLW51bWJlci1pbi1qYXZhc2NyaXB0LzMxNzExMDM0IzMxNzExMDM0XG5mdW5jdGlvbiBmbG9hdFNhZmVSZW1haW5kZXIodmFsOiBudW1iZXIsIHN0ZXA6IG51bWJlcikge1xuICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICBjb25zdCBzdGVwRGVjQ291bnQgPSAoc3RlcC50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSB8fCBcIlwiKS5sZW5ndGg7XG4gIGNvbnN0IGRlY0NvdW50ID0gdmFsRGVjQ291bnQgPiBzdGVwRGVjQ291bnQgPyB2YWxEZWNDb3VudCA6IHN0ZXBEZWNDb3VudDtcbiAgY29uc3QgdmFsSW50ID0gcGFyc2VJbnQodmFsLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgY29uc3Qgc3RlcEludCA9IHBhcnNlSW50KHN0ZXAudG9GaXhlZChkZWNDb3VudCkucmVwbGFjZShcIi5cIiwgXCJcIikpO1xuICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gTWF0aC5wb3coMTAsIGRlY0NvdW50KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2ROdW1iZXJEZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgY2hlY2tzOiBab2ROdW1iZXJDaGVja1tdO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZE51bWJlciBleHRlbmRzIFpvZFR5cGU8bnVtYmVyLCBab2ROdW1iZXJEZWY+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPG51bWJlcj4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udW1iZXIpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5udW1iZXIsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgbGV0IGN0eDogdW5kZWZpbmVkIHwgUGFyc2VDb250ZXh0ID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuXG4gICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJpbnRcIikge1xuICAgICAgICBpZiAoIXV0aWwuaXNJbnRlZ2VyKGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgcmVjZWl2ZWQ6IFwiZmxvYXRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICBjb25zdCB0b29TbWFsbCA9IGNoZWNrLmluY2x1c2l2ZVxuICAgICAgICAgID8gaW5wdXQuZGF0YSA8IGNoZWNrLnZhbHVlXG4gICAgICAgICAgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICBpZiAodG9vU21hbGwpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGNoZWNrLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICBjb25zdCB0b29CaWcgPSBjaGVjay5pbmNsdXNpdmVcbiAgICAgICAgICA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZVxuICAgICAgICAgIDogaW5wdXQuZGF0YSA+PSBjaGVjay52YWx1ZTtcbiAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGNoZWNrLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtdWx0aXBsZU9mXCIpIHtcbiAgICAgICAgaWYgKGZsb2F0U2FmZVJlbWFpbmRlcihpbnB1dC5kYXRhLCBjaGVjay52YWx1ZSkgIT09IDApIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXG4gICAgICAgICAgICBtdWx0aXBsZU9mOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2ROdW1iZXIgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgIGNoZWNrczogW10sXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcblxuICBndGUodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gIH1cbiAgbWluID0gdGhpcy5ndGU7XG5cbiAgZ3QodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICB9XG5cbiAgbHRlKHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICB9XG4gIG1heCA9IHRoaXMubHRlO1xuXG4gIGx0KHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCBmYWxzZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRMaW1pdChcbiAgICBraW5kOiBcIm1pblwiIHwgXCJtYXhcIixcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGluY2x1c2l2ZTogYm9vbGVhbixcbiAgICBtZXNzYWdlPzogc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgIGNoZWNrczogW1xuICAgICAgICAuLi50aGlzLl9kZWYuY2hlY2tzLFxuICAgICAgICB7XG4gICAgICAgICAga2luZCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBpbmNsdXNpdmUsXG4gICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIF9hZGRDaGVjayhjaGVjazogWm9kTnVtYmVyQ2hlY2spIHtcbiAgICByZXR1cm4gbmV3IFpvZE51bWJlcih7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgfSk7XG4gIH1cblxuICBpbnQobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwiaW50XCIsXG4gICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgfSk7XG4gIH1cblxuICBwb3NpdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAga2luZDogXCJtaW5cIixcbiAgICAgIHZhbHVlOiAwLFxuICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgdmFsdWU6IDAsXG4gICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgbm9ucG9zaXRpdmUobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICB2YWx1ZTogMCxcbiAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5vbm5lZ2F0aXZlKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgdmFsdWU6IDAsXG4gICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgfSk7XG4gIH1cblxuICBtdWx0aXBsZU9mKHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm11bHRpcGxlT2ZcIixcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0ZXAgPSB0aGlzLm11bHRpcGxlT2Y7XG5cbiAgZ2V0IG1pblZhbHVlKCkge1xuICAgIGxldCBtaW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbikgbWluID0gY2gudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgbGV0IG1heDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KSBtYXggPSBjaC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIGdldCBpc0ludCgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImludFwiKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kQmlnSW50ICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEJpZ0ludERlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJpZ0ludDtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZEJpZ0ludCBleHRlbmRzIFpvZFR5cGU8YmlnaW50LCBab2RCaWdJbnREZWY+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPGJpZ2ludD4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5iaWdpbnQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5iaWdpbnQsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kQmlnSW50ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEJpZ0ludCh7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJpZ0ludCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZEJvb2xlYW4gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZEJvb2xlYW5EZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kQm9vbGVhbiBleHRlbmRzIFpvZFR5cGU8Ym9vbGVhbiwgWm9kQm9vbGVhbkRlZj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5ib29sZWFuKSB7XG4gICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYm9vbGVhbixcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2RCb29sZWFuID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEJvb2xlYW4oe1xuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kRGF0ZSAgICAgICAgLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbnR5cGUgWm9kRGF0ZUNoZWNrID1cbiAgfCB7IGtpbmQ6IFwibWluXCI7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJtYXhcIjsgdmFsdWU6IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9O1xuZXhwb3J0IGludGVyZmFjZSBab2REYXRlRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGNoZWNrczogWm9kRGF0ZUNoZWNrW107XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZERhdGUgZXh0ZW5kcyBab2RUeXBlPERhdGUsIFpvZERhdGVEZWY+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuXG4gICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuZGF0ZSkge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmRhdGUsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKGlucHV0LmRhdGEuZ2V0VGltZSgpKSkge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgIGxldCBjdHg6IHVuZGVmaW5lZCB8IFBhcnNlQ29udGV4dCA9IHVuZGVmaW5lZDtcblxuICAgIGZvciAoY29uc3QgY2hlY2sgb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoZWNrLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgaWYgKGlucHV0LmRhdGEuZ2V0VGltZSgpIDwgY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhLmdldFRpbWUoKSA+IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXG4gICAgICB2YWx1ZTogbmV3IERhdGUoKGlucHV0LmRhdGEgYXMgRGF0ZSkuZ2V0VGltZSgpKSxcbiAgICB9O1xuICB9XG5cbiAgX2FkZENoZWNrKGNoZWNrOiBab2REYXRlQ2hlY2spIHtcbiAgICByZXR1cm4gbmV3IFpvZERhdGUoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgIH0pO1xuICB9XG5cbiAgbWluKG1pbkRhdGU6IERhdGUsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgdmFsdWU6IG1pbkRhdGUuZ2V0VGltZSgpLFxuICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgbWF4KG1heERhdGU6IERhdGUsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgdmFsdWU6IG1heERhdGUuZ2V0VGltZSgpLFxuICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgbGV0IG1pbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKSBtaW4gPSBjaC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWluICE9IG51bGwgPyBuZXcgRGF0ZShtaW4pIDogbnVsbDtcbiAgfVxuXG4gIGdldCBtYXhEYXRlKCkge1xuICAgIGxldCBtYXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heCkgbWF4ID0gY2gudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heCAhPSBudWxsID8gbmV3IERhdGUobWF4KSA6IG51bGw7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyk6IFpvZERhdGUgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICBjaGVja3M6IFtdLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REYXRlLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVW5kZWZpbmVkICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RVbmRlZmluZWREZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBab2RVbmRlZmluZWQgZXh0ZW5kcyBab2RUeXBlPHVuZGVmaW5lZCwgWm9kVW5kZWZpbmVkRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS51bmRlZmluZWQsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgfVxuICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXM7XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2RVbmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVW5kZWZpbmVkKHtcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5kZWZpbmVkLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTnVsbCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTnVsbERlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBab2ROdWxsIGV4dGVuZHMgWm9kVHlwZTxudWxsLCBab2ROdWxsRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udWxsKSB7XG4gICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubnVsbCxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kTnVsbCA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsKHtcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZEFueSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kQW55RGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQW55O1xufVxuXG5leHBvcnQgY2xhc3MgWm9kQW55IGV4dGVuZHMgWm9kVHlwZTxhbnksIFpvZEFueURlZj4ge1xuICAvLyB0byBwcmV2ZW50IGluc3RhbmNlcyBvZiBvdGhlciBjbGFzc2VzIGZyb20gZXh0ZW5kaW5nIFpvZEFueS4gdGhpcyBjYXVzZXMgaXNzdWVzIHdpdGggY2F0Y2hhbGwgaW4gWm9kT2JqZWN0LlxuICBfYW55OiB0cnVlID0gdHJ1ZTtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kQW55ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEFueSh7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFueSxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZFVua25vd24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZFVua25vd25EZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmtub3duO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kVW5rbm93biBleHRlbmRzIFpvZFR5cGU8dW5rbm93biwgWm9kVW5rbm93bkRlZj4ge1xuICAvLyByZXF1aXJlZFxuICBfdW5rbm93bjogdHJ1ZSA9IHRydWU7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kVW5rbm93biA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmtub3duKHtcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5rbm93bixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZE5ldmVyICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2ROZXZlckRlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5ldmVyO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kTmV2ZXIgZXh0ZW5kcyBab2RUeXBlPG5ldmVyLCBab2ROZXZlckRlZj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmV2ZXIsXG4gICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgfSk7XG4gICAgcmV0dXJuIElOVkFMSUQ7XG4gIH1cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2ROZXZlciA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROZXZlcih7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5ldmVyLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVm9pZCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kVm9pZERlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBab2RWb2lkIGV4dGVuZHMgWm9kVHlwZTx2b2lkLCBab2RWb2lkRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS52b2lkLFxuICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyk6IFpvZFZvaWQgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVm9pZCh7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFZvaWQsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RBcnJheSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kQXJyYXlEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PlxuICBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5O1xuICBtaW5MZW5ndGg6IHsgdmFsdWU6IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9IHwgbnVsbDtcbiAgbWF4TGVuZ3RoOiB7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIEFycmF5Q2FyZGluYWxpdHkgPSBcIm1hbnlcIiB8IFwiYXRsZWFzdG9uZVwiO1xudHlwZSBhcnJheU91dHB1dFR5cGU8XG4gIFQgZXh0ZW5kcyBab2RUeXBlQW55LFxuICBDYXJkaW5hbGl0eSBleHRlbmRzIEFycmF5Q2FyZGluYWxpdHkgPSBcIm1hbnlcIlxuPiA9IENhcmRpbmFsaXR5IGV4dGVuZHMgXCJhdGxlYXN0b25lXCJcbiAgPyBbVFtcIl9vdXRwdXRcIl0sIC4uLlRbXCJfb3V0cHV0XCJdW11dXG4gIDogVFtcIl9vdXRwdXRcIl1bXTtcblxuZXhwb3J0IGNsYXNzIFpvZEFycmF5PFxuICBUIGV4dGVuZHMgWm9kVHlwZUFueSxcbiAgQ2FyZGluYWxpdHkgZXh0ZW5kcyBBcnJheUNhcmRpbmFsaXR5ID0gXCJtYW55XCJcbj4gZXh0ZW5kcyBab2RUeXBlPFxuICBhcnJheU91dHB1dFR5cGU8VCwgQ2FyZGluYWxpdHk+LFxuICBab2RBcnJheURlZjxUPixcbiAgQ2FyZGluYWxpdHkgZXh0ZW5kcyBcImF0bGVhc3RvbmVcIlxuICAgID8gW1RbXCJfaW5wdXRcIl0sIC4uLlRbXCJfaW5wdXRcIl1bXV1cbiAgICA6IFRbXCJfaW5wdXRcIl1bXVxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgY3R4LCBzdGF0dXMgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG5cbiAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWY7XG5cbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5hcnJheSxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoZGVmLm1pbkxlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA8IGRlZi5taW5MZW5ndGgudmFsdWUpIHtcbiAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICBtaW5pbXVtOiBkZWYubWluTGVuZ3RoLnZhbHVlLFxuICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTogZGVmLm1pbkxlbmd0aC5tZXNzYWdlLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZi5tYXhMZW5ndGggIT09IG51bGwpIHtcbiAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPiBkZWYubWF4TGVuZ3RoLnZhbHVlKSB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgIG1heGltdW06IGRlZi5tYXhMZW5ndGgudmFsdWUsXG4gICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4TGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAoY3R4LmRhdGEgYXMgYW55W10pLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkZWYudHlwZS5fcGFyc2VBc3luYyhcbiAgICAgICAgICAgIG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gKGN0eC5kYXRhIGFzIGFueVtdKS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgIHJldHVybiBkZWYudHlwZS5fcGFyc2VTeW5jKFxuICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHQpO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlO1xuICB9XG5cbiAgbWluKG1pbkxlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgIG1pbkxlbmd0aDogeyB2YWx1ZTogbWluTGVuZ3RoLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBtYXgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IHRoaXMge1xuICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgbWF4TGVuZ3RoOiB7IHZhbHVlOiBtYXhMZW5ndGgsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIGxlbmd0aChsZW46IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMubWluKGxlbiwgbWVzc2FnZSkubWF4KGxlbiwgbWVzc2FnZSkgYXMgYW55O1xuICB9XG5cbiAgbm9uZW1wdHkobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kQXJyYXk8VCwgXCJhdGxlYXN0b25lXCI+IHtcbiAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSkgYXMgYW55O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgc2NoZW1hOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RBcnJheTxUPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICB0eXBlOiBzY2hlbWEsXG4gICAgICBtaW5MZW5ndGg6IG51bGwsXG4gICAgICBtYXhMZW5ndGg6IG51bGwsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBab2ROb25FbXB0eUFycmF5PFQgZXh0ZW5kcyBab2RUeXBlQW55PiA9IFpvZEFycmF5PFQsIFwiYXRsZWFzdG9uZVwiPjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZE9iamVjdCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IG5hbWVzcGFjZSBvYmplY3RVdGlsIHtcbiAgZXhwb3J0IHR5cGUgTWVyZ2VTaGFwZXM8VSBleHRlbmRzIFpvZFJhd1NoYXBlLCBWIGV4dGVuZHMgWm9kUmF3U2hhcGU+ID0ge1xuICAgIFtrIGluIEV4Y2x1ZGU8a2V5b2YgVSwga2V5b2YgVj5dOiBVW2tdO1xuICB9ICYgVjtcblxuICB0eXBlIG9wdGlvbmFsS2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgICBbayBpbiBrZXlvZiBUXTogdW5kZWZpbmVkIGV4dGVuZHMgVFtrXSA/IGsgOiBuZXZlcjtcbiAgfVtrZXlvZiBUXTtcblxuICB0eXBlIHJlcXVpcmVkS2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgICBbayBpbiBrZXlvZiBUXTogdW5kZWZpbmVkIGV4dGVuZHMgVFtrXSA/IG5ldmVyIDogaztcbiAgfVtrZXlvZiBUXTtcblxuICBleHBvcnQgdHlwZSBhZGRRdWVzdGlvbk1hcmtzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gUGFydGlhbDxcbiAgICBQaWNrPFQsIG9wdGlvbmFsS2V5czxUPj5cbiAgPiAmXG4gICAgUGljazxULCByZXF1aXJlZEtleXM8VD4+O1xuXG4gIGV4cG9ydCB0eXBlIGlkZW50aXR5PFQ+ID0gVDtcbiAgZXhwb3J0IHR5cGUgZmxhdHRlbjxUIGV4dGVuZHMgb2JqZWN0PiA9IGlkZW50aXR5PHsgW2sgaW4ga2V5b2YgVF06IFRba10gfT47XG5cbiAgZXhwb3J0IHR5cGUgbm9OZXZlcktleXM8VCBleHRlbmRzIFpvZFJhd1NoYXBlPiA9IHtcbiAgICBbayBpbiBrZXlvZiBUXTogW1Rba11dIGV4dGVuZHMgW25ldmVyXSA/IG5ldmVyIDogaztcbiAgfVtrZXlvZiBUXTtcblxuICBleHBvcnQgdHlwZSBub05ldmVyPFQgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSBpZGVudGl0eTx7XG4gICAgW2sgaW4gbm9OZXZlcktleXM8VD5dOiBrIGV4dGVuZHMga2V5b2YgVCA/IFRba10gOiBuZXZlcjtcbiAgfT47XG5cbiAgZXhwb3J0IGNvbnN0IG1lcmdlU2hhcGVzID0gPFUgZXh0ZW5kcyBab2RSYXdTaGFwZSwgVCBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICBmaXJzdDogVSxcbiAgICBzZWNvbmQ6IFRcbiAgKTogVCAmIFUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5maXJzdCxcbiAgICAgIC4uLnNlY29uZCwgLy8gc2Vjb25kIG92ZXJ3cml0ZXMgZmlyc3RcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBleHRlbmRTaGFwZTxBLCBCPiA9IE9taXQ8QSwga2V5b2YgQj4gJiBCO1xuXG5jb25zdCBBdWdtZW50RmFjdG9yeSA9XG4gIDxEZWYgZXh0ZW5kcyBab2RPYmplY3REZWY+KGRlZjogRGVmKSA9PlxuICA8QXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIGF1Z21lbnRhdGlvbjogQXVnbWVudGF0aW9uXG4gICk6IFpvZE9iamVjdDxcbiAgICBleHRlbmRTaGFwZTxSZXR1cm5UeXBlPERlZltcInNoYXBlXCJdPiwgQXVnbWVudGF0aW9uPixcbiAgICBEZWZbXCJ1bmtub3duS2V5c1wiXSxcbiAgICBEZWZbXCJjYXRjaGFsbFwiXVxuICA+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi5kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAgICAgLi4uZGVmLnNoYXBlKCksXG4gICAgICAgIC4uLmF1Z21lbnRhdGlvbixcbiAgICAgIH0pLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcblxudHlwZSBVbmtub3duS2V5c1BhcmFtID0gXCJwYXNzdGhyb3VnaFwiIHwgXCJzdHJpY3RcIiB8IFwic3RyaXBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBab2RPYmplY3REZWY8XG4gIFQgZXh0ZW5kcyBab2RSYXdTaGFwZSA9IFpvZFJhd1NoYXBlLFxuICBVbmtub3duS2V5cyBleHRlbmRzIFVua25vd25LZXlzUGFyYW0gPSBVbmtub3duS2V5c1BhcmFtLFxuICBDYXRjaGFsbCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0O1xuICBzaGFwZTogKCkgPT4gVDtcbiAgY2F0Y2hhbGw6IENhdGNoYWxsO1xuICB1bmtub3duS2V5czogVW5rbm93bktleXM7XG59XG5cbmV4cG9ydCB0eXBlIGJhc2VPYmplY3RPdXRwdXRUeXBlPFNoYXBlIGV4dGVuZHMgWm9kUmF3U2hhcGU+ID1cbiAgb2JqZWN0VXRpbC5mbGF0dGVuPFxuICAgIG9iamVjdFV0aWwuYWRkUXVlc3Rpb25NYXJrczx7XG4gICAgICBbayBpbiBrZXlvZiBTaGFwZV06IFNoYXBlW2tdW1wiX291dHB1dFwiXTtcbiAgICB9PlxuICA+O1xuXG5leHBvcnQgdHlwZSBvYmplY3RPdXRwdXRUeXBlPFxuICBTaGFwZSBleHRlbmRzIFpvZFJhd1NoYXBlLFxuICBDYXRjaGFsbCBleHRlbmRzIFpvZFR5cGVBbnlcbj4gPSBab2RUeXBlQW55IGV4dGVuZHMgQ2F0Y2hhbGxcbiAgPyBiYXNlT2JqZWN0T3V0cHV0VHlwZTxTaGFwZT5cbiAgOiBvYmplY3RVdGlsLmZsYXR0ZW48XG4gICAgICBiYXNlT2JqZWN0T3V0cHV0VHlwZTxTaGFwZT4gJiB7IFtrOiBzdHJpbmddOiBDYXRjaGFsbFtcIl9vdXRwdXRcIl0gfVxuICAgID47XG5cbmV4cG9ydCB0eXBlIGJhc2VPYmplY3RJbnB1dFR5cGU8U2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSBvYmplY3RVdGlsLmZsYXR0ZW48XG4gIG9iamVjdFV0aWwuYWRkUXVlc3Rpb25NYXJrczx7XG4gICAgW2sgaW4ga2V5b2YgU2hhcGVdOiBTaGFwZVtrXVtcIl9pbnB1dFwiXTtcbiAgfT5cbj47XG5cbmV4cG9ydCB0eXBlIG9iamVjdElucHV0VHlwZTxcbiAgU2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZSxcbiAgQ2F0Y2hhbGwgZXh0ZW5kcyBab2RUeXBlQW55XG4+ID0gWm9kVHlwZUFueSBleHRlbmRzIENhdGNoYWxsXG4gID8gYmFzZU9iamVjdElucHV0VHlwZTxTaGFwZT5cbiAgOiBvYmplY3RVdGlsLmZsYXR0ZW48XG4gICAgICBiYXNlT2JqZWN0SW5wdXRUeXBlPFNoYXBlPiAmIHsgW2s6IHN0cmluZ106IENhdGNoYWxsW1wiX2lucHV0XCJdIH1cbiAgICA+O1xuXG50eXBlIGRlb3B0aW9uYWw8VCBleHRlbmRzIFpvZFR5cGVBbnk+ID0gVCBleHRlbmRzIFpvZE9wdGlvbmFsPGluZmVyIFU+XG4gID8gZGVvcHRpb25hbDxVPlxuICA6IFQ7XG5cbmV4cG9ydCB0eXBlIFNvbWVab2RPYmplY3QgPSBab2RPYmplY3Q8XG4gIFpvZFJhd1NoYXBlLFxuICBVbmtub3duS2V5c1BhcmFtLFxuICBab2RUeXBlQW55LFxuICBhbnksXG4gIGFueVxuPjtcblxuZnVuY3Rpb24gZGVlcFBhcnRpYWxpZnkoc2NoZW1hOiBab2RUeXBlQW55KTogYW55IHtcbiAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9iamVjdCkge1xuICAgIGNvbnN0IG5ld1NoYXBlOiBhbnkgPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5zaGFwZSkge1xuICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBzY2hlbWEuc2hhcGVba2V5XTtcbiAgICAgIG5ld1NoYXBlW2tleV0gPSBab2RPcHRpb25hbC5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoZmllbGRTY2hlbWEpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4uc2NoZW1hLl9kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgfSkgYXMgYW55O1xuICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZEFycmF5KSB7XG4gICAgcmV0dXJuIFpvZEFycmF5LmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEuZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9wdGlvbmFsKSB7XG4gICAgcmV0dXJuIFpvZE9wdGlvbmFsLmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEudW53cmFwKCkpKTtcbiAgfSBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2ROdWxsYWJsZSkge1xuICAgIHJldHVybiBab2ROdWxsYWJsZS5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoc2NoZW1hLnVud3JhcCgpKSk7XG4gIH0gZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kVHVwbGUpIHtcbiAgICByZXR1cm4gWm9kVHVwbGUuY3JlYXRlKFxuICAgICAgc2NoZW1hLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiBkZWVwUGFydGlhbGlmeShpdGVtKSlcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFpvZE9iamVjdDxcbiAgVCBleHRlbmRzIFpvZFJhd1NoYXBlLFxuICBVbmtub3duS2V5cyBleHRlbmRzIFVua25vd25LZXlzUGFyYW0gPSBcInN0cmlwXCIsXG4gIENhdGNoYWxsIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksXG4gIE91dHB1dCA9IG9iamVjdE91dHB1dFR5cGU8VCwgQ2F0Y2hhbGw+LFxuICBJbnB1dCA9IG9iamVjdElucHV0VHlwZTxULCBDYXRjaGFsbD5cbj4gZXh0ZW5kcyBab2RUeXBlPE91dHB1dCwgWm9kT2JqZWN0RGVmPFQsIFVua25vd25LZXlzLCBDYXRjaGFsbD4sIElucHV0PiB7XG4gIHJlYWRvbmx5IF9zaGFwZSE6IFQ7XG4gIHJlYWRvbmx5IF91bmtub3duS2V5cyE6IFVua25vd25LZXlzO1xuICByZWFkb25seSBfY2F0Y2hhbGwhOiBDYXRjaGFsbDtcbiAgcHJpdmF0ZSBfY2FjaGVkOiB7IHNoYXBlOiBUOyBrZXlzOiBzdHJpbmdbXSB9IHwgbnVsbCA9IG51bGw7XG5cbiAgX2dldENhY2hlZCgpOiB7IHNoYXBlOiBUOyBrZXlzOiBzdHJpbmdbXSB9IHtcbiAgICBpZiAodGhpcy5fY2FjaGVkICE9PSBudWxsKSByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fZGVmLnNoYXBlKCk7XG4gICAgY29uc3Qga2V5cyA9IHV0aWwub2JqZWN0S2V5cyhzaGFwZSk7XG4gICAgcmV0dXJuICh0aGlzLl9jYWNoZWQgPSB7IHNoYXBlLCBrZXlzIH0pO1xuICB9XG5cbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuXG4gICAgY29uc3QgeyBzaGFwZSwga2V5czogc2hhcGVLZXlzIH0gPSB0aGlzLl9nZXRDYWNoZWQoKTtcbiAgICBjb25zdCBleHRyYUtleXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY3R4LmRhdGEpIHtcbiAgICAgIGlmICghc2hhcGVLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgZXh0cmFLZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYWlyczoge1xuICAgICAga2V5OiBQYXJzZVJldHVyblR5cGU8YW55PjtcbiAgICAgIHZhbHVlOiBQYXJzZVJldHVyblR5cGU8YW55PjtcbiAgICAgIGFsd2F5c1NldD86IGJvb2xlYW47XG4gICAgfVtdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2hhcGVLZXlzKSB7XG4gICAgICBjb25zdCBrZXlWYWxpZGF0b3IgPSBzaGFwZVtrZXldO1xuICAgICAgY29uc3QgdmFsdWUgPSBjdHguZGF0YVtrZXldO1xuICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICB2YWx1ZToga2V5VmFsaWRhdG9yLl9wYXJzZShcbiAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBrZXkpXG4gICAgICAgICksXG4gICAgICAgIGFsd2F5c1NldDoga2V5IGluIGN0eC5kYXRhLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyKSB7XG4gICAgICBjb25zdCB1bmtub3duS2V5cyA9IHRoaXMuX2RlZi51bmtub3duS2V5cztcblxuICAgICAgaWYgKHVua25vd25LZXlzID09PSBcInBhc3N0aHJvdWdoXCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgICAgICBrZXk6IHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBrZXkgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZTogY3R4LmRhdGFba2V5XSB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHVua25vd25LZXlzID09PSBcInN0cmljdFwiKSB7XG4gICAgICAgIGlmIChleHRyYUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzLFxuICAgICAgICAgICAga2V5czogZXh0cmFLZXlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHVua25vd25LZXlzID09PSBcInN0cmlwXCIpIHtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW50ZXJuYWwgWm9kT2JqZWN0IGVycm9yOiBpbnZhbGlkIHVua25vd25LZXlzIHZhbHVlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBydW4gY2F0Y2hhbGwgdmFsaWRhdGlvblxuICAgICAgY29uc3QgY2F0Y2hhbGwgPSB0aGlzLl9kZWYuY2F0Y2hhbGw7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGN0eC5kYXRhW2tleV07XG4gICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgIHZhbHVlOiBjYXRjaGFsbC5fcGFyc2UoXG4gICAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBrZXkpIC8vLCBjdHguY2hpbGQoa2V5KSwgdmFsdWUsIGdldFBhcnNlZFR5cGUodmFsdWUpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3luY1BhaXJzOiBhbnlbXSA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgdmFsdWU6IGF3YWl0IHBhaXIudmFsdWUsXG4gICAgICAgICAgICAgIGFsd2F5c1NldDogcGFpci5hbHdheXNTZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN5bmNQYWlycztcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHN5bmNQYWlycykgPT4ge1xuICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBzeW5jUGFpcnMpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzIGFzIGFueSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNoYXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYuc2hhcGUoKTtcbiAgfVxuXG4gIHN0cmljdChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RPYmplY3Q8VCwgXCJzdHJpY3RcIiwgQ2F0Y2hhbGw+IHtcbiAgICBlcnJvclV0aWwuZXJyVG9PYmo7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAuLi4obWVzc2FnZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZXJyb3JNYXA6IChpc3N1ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRFcnJvciA9XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmLmVycm9yTWFwPy4oaXNzdWUsIGN0eCkubWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJ1bnJlY29nbml6ZWRfa2V5c1wiKVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkubWVzc2FnZSA/PyBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgc3RyaXAoKTogWm9kT2JqZWN0PFQsIFwic3RyaXBcIiwgQ2F0Y2hhbGw+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICB1bmtub3duS2V5czogXCJzdHJpcFwiLFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIHBhc3N0aHJvdWdoKCk6IFpvZE9iamVjdDxULCBcInBhc3N0aHJvdWdoXCIsIENhdGNoYWxsPiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgdW5rbm93bktleXM6IFwicGFzc3Rocm91Z2hcIixcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgSW4gbW9zdCBjYXNlcywgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVkIC0gdW5rbm93biBwcm9wZXJ0aWVzIGFyZSBub3cgc2lsZW50bHkgc3RyaXBwZWQuXG4gICAqIElmIHlvdSB3YW50IHRvIHBhc3MgdGhyb3VnaCB1bmtub3duIHByb3BlcnRpZXMsIHVzZSBgLnBhc3N0aHJvdWdoKClgIGluc3RlYWQuXG4gICAqL1xuICBub25zdHJpY3QgPSB0aGlzLnBhc3N0aHJvdWdoO1xuXG4gIGF1Z21lbnQgPSBBdWdtZW50RmFjdG9yeTxab2RPYmplY3REZWY8VCwgVW5rbm93bktleXMsIENhdGNoYWxsPj4odGhpcy5fZGVmKTtcbiAgZXh0ZW5kID0gQXVnbWVudEZhY3Rvcnk8Wm9kT2JqZWN0RGVmPFQsIFVua25vd25LZXlzLCBDYXRjaGFsbD4+KHRoaXMuX2RlZik7XG5cbiAgc2V0S2V5PEtleSBleHRlbmRzIHN0cmluZywgU2NoZW1hIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAga2V5OiBLZXksXG4gICAgc2NoZW1hOiBTY2hlbWFcbiAgKTogWm9kT2JqZWN0PFQgJiB7IFtrIGluIEtleV06IFNjaGVtYSB9LCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+IHtcbiAgICByZXR1cm4gdGhpcy5hdWdtZW50KHsgW2tleV06IHNjaGVtYSB9KSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogUHJpb3IgdG8gem9kQDEuMC4xMiB0aGVyZSB3YXMgYSBidWcgaW4gdGhlXG4gICAqIGluZmVycmVkIHR5cGUgb2YgbWVyZ2VkIG9iamVjdHMuIFBsZWFzZVxuICAgKiB1cGdyYWRlIGlmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGlzc3Vlcy5cbiAgICovXG4gIG1lcmdlPEluY29taW5nIGV4dGVuZHMgQW55Wm9kT2JqZWN0PihcbiAgICBtZXJnaW5nOiBJbmNvbWluZ1xuICApOiAvL1pvZE9iamVjdDxUICYgSW5jb21pbmdbXCJfc2hhcGVcIl0sIFVua25vd25LZXlzLCBDYXRjaGFsbD4gPSAobWVyZ2luZykgPT4ge1xuICBab2RPYmplY3Q8ZXh0ZW5kU2hhcGU8VCwgSW5jb21pbmdbXCJfc2hhcGVcIl0+LCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+IHtcbiAgICAvLyBjb25zdCBtZXJnZWRTaGFwZSA9IG9iamVjdFV0aWwubWVyZ2VTaGFwZXMoXG4gICAgLy8gICB0aGlzLl9kZWYuc2hhcGUoKSxcbiAgICAvLyAgIG1lcmdpbmcuX2RlZi5zaGFwZSgpXG4gICAgLy8gKTtcbiAgICBjb25zdCBtZXJnZWQ6IGFueSA9IG5ldyBab2RPYmplY3Qoe1xuICAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgICBzaGFwZTogKCkgPT5cbiAgICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgfSkgYXMgYW55O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH1cblxuICBjYXRjaGFsbDxJbmRleCBleHRlbmRzIFpvZFR5cGVBbnk+KFxuICAgIGluZGV4OiBJbmRleFxuICApOiBab2RPYmplY3Q8VCwgVW5rbm93bktleXMsIEluZGV4PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgY2F0Y2hhbGw6IGluZGV4LFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIHBpY2s8TWFzayBleHRlbmRzIHsgW2sgaW4ga2V5b2YgVF0/OiB0cnVlIH0+KFxuICAgIG1hc2s6IE1hc2tcbiAgKTogWm9kT2JqZWN0PFBpY2s8VCwgRXh0cmFjdDxrZXlvZiBULCBrZXlvZiBNYXNrPj4sIFVua25vd25LZXlzLCBDYXRjaGFsbD4ge1xuICAgIGNvbnN0IHNoYXBlOiBhbnkgPSB7fTtcbiAgICB1dGlsLm9iamVjdEtleXMobWFzaykubWFwKChrZXkpID0+IHtcbiAgICAgIC8vIG9ubHkgYWRkIHRvIHNoYXBlIGlmIGtleSBjb3JyZXNwb25kcyB0byBhbiBlbGVtZW50IG9mIHRoZSBjdXJyZW50IHNoYXBlXG4gICAgICBpZiAodGhpcy5zaGFwZVtrZXldKSBzaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgIHNoYXBlOiAoKSA9PiBzaGFwZSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBvbWl0PE1hc2sgZXh0ZW5kcyB7IFtrIGluIGtleW9mIFRdPzogdHJ1ZSB9PihcbiAgICBtYXNrOiBNYXNrXG4gICk6IFpvZE9iamVjdDxPbWl0PFQsIGtleW9mIE1hc2s+LCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+IHtcbiAgICBjb25zdCBzaGFwZTogYW55ID0ge307XG4gICAgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpLm1hcCgoa2V5KSA9PiB7XG4gICAgICBpZiAodXRpbC5vYmplY3RLZXlzKG1hc2spLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgZGVlcFBhcnRpYWwoKTogcGFydGlhbFV0aWwuRGVlcFBhcnRpYWw8dGhpcz4ge1xuICAgIHJldHVybiBkZWVwUGFydGlhbGlmeSh0aGlzKSBhcyBhbnk7XG4gIH1cblxuICBwYXJ0aWFsKCk6IFpvZE9iamVjdDxcbiAgICB7IFtrIGluIGtleW9mIFRdOiBab2RPcHRpb25hbDxUW2tdPiB9LFxuICAgIFVua25vd25LZXlzLFxuICAgIENhdGNoYWxsXG4gID47XG4gIHBhcnRpYWw8TWFzayBleHRlbmRzIHsgW2sgaW4ga2V5b2YgVF0/OiB0cnVlIH0+KFxuICAgIG1hc2s6IE1hc2tcbiAgKTogWm9kT2JqZWN0PFxuICAgIG9iamVjdFV0aWwubm9OZXZlcjx7XG4gICAgICBbayBpbiBrZXlvZiBUXTogayBleHRlbmRzIGtleW9mIE1hc2sgPyBab2RPcHRpb25hbDxUW2tdPiA6IFRba107XG4gICAgfT4sXG4gICAgVW5rbm93bktleXMsXG4gICAgQ2F0Y2hhbGxcbiAgPjtcbiAgcGFydGlhbChtYXNrPzogYW55KSB7XG4gICAgY29uc3QgbmV3U2hhcGU6IGFueSA9IHt9O1xuICAgIGlmIChtYXNrKSB7XG4gICAgICB1dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkubWFwKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHV0aWwub2JqZWN0S2V5cyhtYXNrKS5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgICAgbmV3U2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdTaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldLm9wdGlvbmFsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgIHNoYXBlOiAoKSA9PiBuZXdTaGFwZSxcbiAgICAgIH0pIGFzIGFueTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zaGFwZSkge1xuICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgbmV3U2hhcGVba2V5XSA9IGZpZWxkU2NoZW1hLm9wdGlvbmFsKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgc2hhcGU6ICgpID0+IG5ld1NoYXBlLFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIHJlcXVpcmVkKCk6IFpvZE9iamVjdDxcbiAgICB7IFtrIGluIGtleW9mIFRdOiBkZW9wdGlvbmFsPFRba10+IH0sXG4gICAgVW5rbm93bktleXMsXG4gICAgQ2F0Y2hhbGxcbiAgPiB7XG4gICAgY29uc3QgbmV3U2hhcGU6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc2hhcGUpIHtcbiAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gdGhpcy5zaGFwZVtrZXldO1xuICAgICAgbGV0IG5ld0ZpZWxkID0gZmllbGRTY2hlbWE7XG4gICAgICB3aGlsZSAobmV3RmllbGQgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICBuZXdGaWVsZCA9IChuZXdGaWVsZCBhcyBab2RPcHRpb25hbDxhbnk+KS5fZGVmLmlubmVyVHlwZTtcbiAgICAgIH1cblxuICAgICAgbmV3U2hhcGVba2V5XSA9IG5ld0ZpZWxkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAga2V5b2YoKTogWm9kRW51bTxlbnVtVXRpbC5VbmlvblRvVHVwbGVTdHJpbmc8a2V5b2YgVD4+IHtcbiAgICByZXR1cm4gY3JlYXRlWm9kRW51bShcbiAgICAgIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV1cbiAgICApIGFzIGFueTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICBzaGFwZTogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kT2JqZWN0PFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICB1bmtub3duS2V5czogXCJzdHJpcFwiLFxuICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSkgYXMgYW55O1xuICB9O1xuXG4gIHN0YXRpYyBzdHJpY3RDcmVhdGUgPSA8VCBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICBzaGFwZTogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kT2JqZWN0PFQsIFwic3RyaWN0XCI+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICB1bmtub3duS2V5czogXCJzdHJpY3RcIixcbiAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcblxuICBzdGF0aWMgbGF6eWNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIHNoYXBlOiAoKSA9PiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RPYmplY3Q8VD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgIHNoYXBlLFxuICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQW55Wm9kT2JqZWN0ID0gWm9kT2JqZWN0PGFueSwgYW55LCBhbnk+O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVW5pb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG50eXBlIFpvZFVuaW9uT3B0aW9ucyA9IFJlYWRvbmx5PFtab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPjtcbmV4cG9ydCBpbnRlcmZhY2UgWm9kVW5pb25EZWY8XG4gIFQgZXh0ZW5kcyBab2RVbmlvbk9wdGlvbnMgPSBSZWFkb25seTxcbiAgICBbWm9kVHlwZUFueSwgWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXVxuICA+XG4+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIG9wdGlvbnM6IFQ7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5pb247XG59XG5cbmV4cG9ydCBjbGFzcyBab2RVbmlvbjxUIGV4dGVuZHMgWm9kVW5pb25PcHRpb25zPiBleHRlbmRzIFpvZFR5cGU8XG4gIFRbbnVtYmVyXVtcIl9vdXRwdXRcIl0sXG4gIFpvZFVuaW9uRGVmPFQ+LFxuICBUW251bWJlcl1bXCJfaW5wdXRcIl1cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZGVmLm9wdGlvbnM7XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSZXN1bHRzKFxuICAgICAgcmVzdWx0czogeyBjdHg6IFBhcnNlQ29udGV4dDsgcmVzdWx0OiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT4gfVtdXG4gICAgKSB7XG4gICAgICAvLyByZXR1cm4gZmlyc3QgaXNzdWUtZnJlZSB2YWxpZGF0aW9uIGlmIGl0IGV4aXN0c1xuICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICBpZiAocmVzdWx0LnJlc3VsdC5zdGF0dXMgPT09IFwidmFsaWRcIikge1xuICAgICAgICAgIHJldHVybiByZXN1bHQucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5yZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAvLyBhZGQgaXNzdWVzIGZyb20gZGlydHkgb3B0aW9uXG5cbiAgICAgICAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKC4uLnJlc3VsdC5jdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcmV0dXJuIGludmFsaWRcbiAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gcmVzdWx0cy5tYXAoXG4gICAgICAgIChyZXN1bHQpID0+IG5ldyBab2RFcnJvcihyZXN1bHQuY3R4LmNvbW1vbi5pc3N1ZXMpXG4gICAgICApO1xuXG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sXG4gICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLm1hcChhc3luYyAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hpbGRDdHg6IFBhcnNlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIC4uLmN0eCxcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN1bHQ6IGF3YWl0IG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgcGFyZW50OiBjaGlsZEN0eCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY3R4OiBjaGlsZEN0eCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKS50aGVuKGhhbmRsZVJlc3VsdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGlydHk6IHVuZGVmaW5lZCB8IHsgcmVzdWx0OiBESVJUWTxhbnk+OyBjdHg6IFBhcnNlQ29udGV4dCB9ID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaXNzdWVzOiBab2RJc3N1ZVtdW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgY2hpbGRDdHg6IFBhcnNlQ29udGV4dCA9IHtcbiAgICAgICAgICAuLi5jdHgsXG4gICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9uLl9wYXJzZVN5bmMoe1xuICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgIHBhcmVudDogY2hpbGRDdHgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIiAmJiAhZGlydHkpIHtcbiAgICAgICAgICBkaXJ0eSA9IHsgcmVzdWx0LCBjdHg6IGNoaWxkQ3R4IH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGRDdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpc3N1ZXMucHVzaChjaGlsZEN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5kaXJ0eS5jdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgIHJldHVybiBkaXJ0eS5yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gaXNzdWVzLm1hcCgoaXNzdWVzKSA9PiBuZXcgWm9kRXJyb3IoaXNzdWVzKSk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sXG4gICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9ucztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8XG4gICAgVCBleHRlbmRzIFJlYWRvbmx5PFtab2RUeXBlQW55LCBab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPlxuICA+KFxuICAgIHR5cGVzOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RVbmlvbjxUPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmlvbih7XG4gICAgICBvcHRpb25zOiB0eXBlcyxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5pb24sXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2REaXNjcmltaW5hdGVkVW5pb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFpvZERpc2NyaW1pbmF0ZWRVbmlvbk9wdGlvbjxcbiAgRGlzY3JpbWluYXRvciBleHRlbmRzIHN0cmluZyxcbiAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlXG4+ID0gWm9kT2JqZWN0PFxuICB7IFtrZXkgaW4gRGlzY3JpbWluYXRvcl06IFpvZExpdGVyYWw8RGlzY3JpbWluYXRvclZhbHVlPiB9ICYgWm9kUmF3U2hhcGUsXG4gIGFueSxcbiAgYW55XG4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvZERpc2NyaW1pbmF0ZWRVbmlvbkRlZjxcbiAgRGlzY3JpbWluYXRvciBleHRlbmRzIHN0cmluZyxcbiAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlLFxuICBPcHRpb24gZXh0ZW5kcyBab2REaXNjcmltaW5hdGVkVW5pb25PcHRpb248RGlzY3JpbWluYXRvciwgRGlzY3JpbWluYXRvclZhbHVlPlxuPiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICBkaXNjcmltaW5hdG9yOiBEaXNjcmltaW5hdG9yO1xuICBvcHRpb25zOiBNYXA8RGlzY3JpbWluYXRvclZhbHVlLCBPcHRpb24+O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZERpc2NyaW1pbmF0ZWRVbmlvbjxcbiAgRGlzY3JpbWluYXRvciBleHRlbmRzIHN0cmluZyxcbiAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlLFxuICBPcHRpb24gZXh0ZW5kcyBab2REaXNjcmltaW5hdGVkVW5pb25PcHRpb248RGlzY3JpbWluYXRvciwgRGlzY3JpbWluYXRvclZhbHVlPlxuPiBleHRlbmRzIFpvZFR5cGU8XG4gIE9wdGlvbltcIl9vdXRwdXRcIl0sXG4gIFpvZERpc2NyaW1pbmF0ZWRVbmlvbkRlZjxEaXNjcmltaW5hdG9yLCBEaXNjcmltaW5hdG9yVmFsdWUsIE9wdGlvbj4sXG4gIE9wdGlvbltcIl9pbnB1dFwiXVxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuXG4gICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gdGhpcy5kaXNjcmltaW5hdG9yO1xuICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZTogRGlzY3JpbWluYXRvclZhbHVlID0gY3R4LmRhdGFbZGlzY3JpbWluYXRvcl07XG4gICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zLmdldChkaXNjcmltaW5hdG9yVmFsdWUpO1xuXG4gICAgaWYgKCFvcHRpb24pIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yLFxuICAgICAgICBvcHRpb25zOiB0aGlzLnZhbGlkRGlzY3JpbWluYXRvclZhbHVlcyxcbiAgICAgICAgcGF0aDogW2Rpc2NyaW1pbmF0b3JdLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VTeW5jKHtcbiAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNjcmltaW5hdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYuZGlzY3JpbWluYXRvcjtcbiAgfVxuXG4gIGdldCB2YWxpZERpc2NyaW1pbmF0b3JWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5vcHRpb25zLmtleXMoKSk7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBkaXNjcmltaW5hdGVkIHVuaW9uIHNjaGVtYS4gSXRzIGJlaGF2aW91ciBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgbm9ybWFsIHoudW5pb24oKSBjb25zdHJ1Y3Rvci5cbiAgICogSG93ZXZlciwgaXQgb25seSBhbGxvd3MgYSB1bmlvbiBvZiBvYmplY3RzLCBhbGwgb2Ygd2hpY2ggbmVlZCB0byBzaGFyZSBhIGRpc2NyaW1pbmF0b3IgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgbXVzdFxuICAgKiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIG9iamVjdCBpbiB0aGUgdW5pb24uXG4gICAqIEBwYXJhbSBkaXNjcmltaW5hdG9yIHRoZSBuYW1lIG9mIHRoZSBkaXNjcmltaW5hdG9yIHByb3BlcnR5XG4gICAqIEBwYXJhbSB0eXBlcyBhbiBhcnJheSBvZiBvYmplY3Qgc2NoZW1hc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlPFxuICAgIERpc2NyaW1pbmF0b3IgZXh0ZW5kcyBzdHJpbmcsXG4gICAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlLFxuICAgIFR5cGVzIGV4dGVuZHMgW1xuICAgICAgWm9kRGlzY3JpbWluYXRlZFVuaW9uT3B0aW9uPERpc2NyaW1pbmF0b3IsIERpc2NyaW1pbmF0b3JWYWx1ZT4sXG4gICAgICBab2REaXNjcmltaW5hdGVkVW5pb25PcHRpb248RGlzY3JpbWluYXRvciwgRGlzY3JpbWluYXRvclZhbHVlPixcbiAgICAgIC4uLlpvZERpc2NyaW1pbmF0ZWRVbmlvbk9wdGlvbjxEaXNjcmltaW5hdG9yLCBEaXNjcmltaW5hdG9yVmFsdWU+W11cbiAgICBdXG4gID4oXG4gICAgZGlzY3JpbWluYXRvcjogRGlzY3JpbWluYXRvcixcbiAgICB0eXBlczogVHlwZXMsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZERpc2NyaW1pbmF0ZWRVbmlvbjxEaXNjcmltaW5hdG9yLCBEaXNjcmltaW5hdG9yVmFsdWUsIFR5cGVzW251bWJlcl0+IHtcbiAgICAvLyBHZXQgYWxsIHRoZSB2YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlc1xuICAgIGNvbnN0IG9wdGlvbnM6IE1hcDxEaXNjcmltaW5hdG9yVmFsdWUsIFR5cGVzW251bWJlcl0+ID0gbmV3IE1hcCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHR5cGVzLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvclZhbHVlID0gdHlwZS5zaGFwZVtkaXNjcmltaW5hdG9yXS52YWx1ZTtcbiAgICAgICAgb3B0aW9ucy5zZXQoZGlzY3JpbWluYXRvclZhbHVlLCB0eXBlKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgZGlzY3JpbWluYXRvciB2YWx1ZSBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHRoZSBwcm92aWRlZCBzY2hlbWFzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQXNzZXJ0IHRoYXQgYWxsIHRoZSBkaXNjcmltaW5hdG9yIHZhbHVlcyBhcmUgdW5pcXVlXG4gICAgaWYgKG9wdGlvbnMuc2l6ZSAhPT0gdHlwZXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb21lIG9mIHRoZSBkaXNjcmltaW5hdG9yIHZhbHVlcyBhcmUgbm90IHVuaXF1ZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbjxcbiAgICAgIERpc2NyaW1pbmF0b3IsXG4gICAgICBEaXNjcmltaW5hdG9yVmFsdWUsXG4gICAgICBUeXBlc1tudW1iZXJdXG4gICAgPih7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixcbiAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICBvcHRpb25zLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RJbnRlcnNlY3Rpb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludGVyc2VjdGlvbkRlZjxcbiAgVCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55LFxuICBVIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgbGVmdDogVDtcbiAgcmlnaHQ6IFU7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uO1xufVxuXG5mdW5jdGlvbiBtZXJnZVZhbHVlcyhcbiAgYTogYW55LFxuICBiOiBhbnlcbik6IHsgdmFsaWQ6IHRydWU7IGRhdGE6IGFueSB9IHwgeyB2YWxpZDogZmFsc2UgfSB7XG4gIGNvbnN0IGFUeXBlID0gZ2V0UGFyc2VkVHlwZShhKTtcbiAgY29uc3QgYlR5cGUgPSBnZXRQYXJzZWRUeXBlKGIpO1xuXG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgfSBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5vYmplY3QgJiYgYlR5cGUgPT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgY29uc3QgYktleXMgPSB1dGlsLm9iamVjdEtleXMoYik7XG4gICAgY29uc3Qgc2hhcmVkS2V5cyA9IHV0aWxcbiAgICAgIC5vYmplY3RLZXlzKGEpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGJLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEpO1xuXG4gICAgY29uc3QgbmV3T2JqOiBhbnkgPSB7IC4uLmEsIC4uLmIgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKSB7XG4gICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcbiAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBuZXdPYmpba2V5XSA9IHNoYXJlZFZhbHVlLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IG5ld09iaiB9O1xuICB9IGVsc2UgaWYgKGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGl0ZW1BID0gYVtpbmRleF07XG4gICAgICBjb25zdCBpdGVtQiA9IGJbaW5kZXhdO1xuICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhpdGVtQSwgaXRlbUIpO1xuXG4gICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBuZXdBcnJheS5wdXNoKHNoYXJlZFZhbHVlLmRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBuZXdBcnJheSB9O1xuICB9IGVsc2UgaWYgKFxuICAgIGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmRhdGUgJiZcbiAgICBiVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmXG4gICAgK2EgPT09ICtiXG4gICkge1xuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFpvZEludGVyc2VjdGlvbjxcbiAgVCBleHRlbmRzIFpvZFR5cGVBbnksXG4gIFUgZXh0ZW5kcyBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZTxcbiAgVFtcIl9vdXRwdXRcIl0gJiBVW1wiX291dHB1dFwiXSxcbiAgWm9kSW50ZXJzZWN0aW9uRGVmPFQsIFU+LFxuICBUW1wiX2lucHV0XCJdICYgVVtcIl9pbnB1dFwiXVxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgY29uc3QgaGFuZGxlUGFyc2VkID0gKFxuICAgICAgcGFyc2VkTGVmdDogU3luY1BhcnNlUmV0dXJuVHlwZSxcbiAgICAgIHBhcnNlZFJpZ2h0OiBTeW5jUGFyc2VSZXR1cm5UeXBlXG4gICAgKTogU3luY1BhcnNlUmV0dXJuVHlwZTxUICYgVT4gPT4ge1xuICAgICAgaWYgKGlzQWJvcnRlZChwYXJzZWRMZWZ0KSB8fCBpc0Fib3J0ZWQocGFyc2VkUmlnaHQpKSB7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhwYXJzZWRMZWZ0LnZhbHVlLCBwYXJzZWRSaWdodC52YWx1ZSk7XG5cbiAgICAgIGlmICghbWVyZ2VkLnZhbGlkKSB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNEaXJ0eShwYXJzZWRMZWZ0KSB8fCBpc0RpcnR5KHBhcnNlZFJpZ2h0KSkge1xuICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBtZXJnZWQuZGF0YSBhcyBhbnkgfTtcbiAgICB9O1xuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMuX2RlZi5sZWZ0Ll9wYXJzZUFzeW5jKHtcbiAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuX2RlZi5yaWdodC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pLFxuICAgICAgXSkudGhlbigoW2xlZnQsIHJpZ2h0XTogYW55KSA9PiBoYW5kbGVQYXJzZWQobGVmdCwgcmlnaHQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGhhbmRsZVBhcnNlZChcbiAgICAgICAgdGhpcy5fZGVmLmxlZnQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFpvZFR5cGVBbnksIFUgZXh0ZW5kcyBab2RUeXBlQW55PihcbiAgICBsZWZ0OiBULFxuICAgIHJpZ2h0OiBVLFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RJbnRlcnNlY3Rpb248VCwgVT4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kSW50ZXJzZWN0aW9uKHtcbiAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICByaWdodDogcmlnaHQsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEludGVyc2VjdGlvbixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZFR1cGxlICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IHR5cGUgWm9kVHVwbGVJdGVtcyA9IFtab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dO1xuZXhwb3J0IHR5cGUgQXNzZXJ0QXJyYXk8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBUIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBPdXRwdXRUeXBlT2ZUdXBsZTxUIGV4dGVuZHMgWm9kVHVwbGVJdGVtcyB8IFtdPiA9IEFzc2VydEFycmF5PHtcbiAgW2sgaW4ga2V5b2YgVF06IFRba10gZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55PiA/IFRba11bXCJfb3V0cHV0XCJdIDogbmV2ZXI7XG59PjtcbmV4cG9ydCB0eXBlIE91dHB1dFR5cGVPZlR1cGxlV2l0aFJlc3Q8XG4gIFQgZXh0ZW5kcyBab2RUdXBsZUl0ZW1zIHwgW10sXG4gIFJlc3QgZXh0ZW5kcyBab2RUeXBlQW55IHwgbnVsbCA9IG51bGxcbj4gPSBSZXN0IGV4dGVuZHMgWm9kVHlwZUFueVxuICA/IFsuLi5PdXRwdXRUeXBlT2ZUdXBsZTxUPiwgLi4uUmVzdFtcIl9vdXRwdXRcIl1bXV1cbiAgOiBPdXRwdXRUeXBlT2ZUdXBsZTxUPjtcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlT2ZUdXBsZTxUIGV4dGVuZHMgWm9kVHVwbGVJdGVtcyB8IFtdPiA9IEFzc2VydEFycmF5PHtcbiAgW2sgaW4ga2V5b2YgVF06IFRba10gZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55PiA/IFRba11bXCJfaW5wdXRcIl0gOiBuZXZlcjtcbn0+O1xuZXhwb3J0IHR5cGUgSW5wdXRUeXBlT2ZUdXBsZVdpdGhSZXN0PFxuICBUIGV4dGVuZHMgWm9kVHVwbGVJdGVtcyB8IFtdLFxuICBSZXN0IGV4dGVuZHMgWm9kVHlwZUFueSB8IG51bGwgPSBudWxsXG4+ID0gUmVzdCBleHRlbmRzIFpvZFR5cGVBbnlcbiAgPyBbLi4uSW5wdXRUeXBlT2ZUdXBsZTxUPiwgLi4uUmVzdFtcIl9pbnB1dFwiXVtdXVxuICA6IElucHV0VHlwZU9mVHVwbGU8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kVHVwbGVEZWY8XG4gIFQgZXh0ZW5kcyBab2RUdXBsZUl0ZW1zIHwgW10gPSBab2RUdXBsZUl0ZW1zLFxuICBSZXN0IGV4dGVuZHMgWm9kVHlwZUFueSB8IG51bGwgPSBudWxsXG4+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGl0ZW1zOiBUO1xuICByZXN0OiBSZXN0O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kVHVwbGU8XG4gIFQgZXh0ZW5kcyBbWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXSB8IFtdID0gW1pvZFR5cGVBbnksIC4uLlpvZFR5cGVBbnlbXV0sXG4gIFJlc3QgZXh0ZW5kcyBab2RUeXBlQW55IHwgbnVsbCA9IG51bGxcbj4gZXh0ZW5kcyBab2RUeXBlPFxuICBPdXRwdXRUeXBlT2ZUdXBsZVdpdGhSZXN0PFQsIFJlc3Q+LFxuICBab2RUdXBsZURlZjxULCBSZXN0PixcbiAgSW5wdXRUeXBlT2ZUdXBsZVdpdGhSZXN0PFQsIFJlc3Q+XG4+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5hcnJheSxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoY3R4LmRhdGEubGVuZ3RoIDwgdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCkge1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgIG1pbmltdW06IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3QgPSB0aGlzLl9kZWYucmVzdDtcblxuICAgIGlmICghcmVzdCAmJiBjdHguZGF0YS5sZW5ndGggPiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgIG1heGltdW06IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgfSk7XG4gICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9IChjdHguZGF0YSBhcyBhbnlbXSlcbiAgICAgIC5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLl9kZWYuaXRlbXNbaXRlbUluZGV4XSB8fCB0aGlzLl9kZWYucmVzdDtcbiAgICAgICAgaWYgKCFzY2hlbWEpIHJldHVybiBudWxsIGFzIGFueSBhcyBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG4gICAgICAgIHJldHVybiBzY2hlbWEuX3BhcnNlKFxuICAgICAgICAgIG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaXRlbUluZGV4KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHgpID0+ICEheCk7IC8vIGZpbHRlciBudWxsc1xuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChpdGVtcykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgaXRlbXMgYXMgU3luY1BhcnNlUmV0dXJuVHlwZVtdKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5pdGVtcztcbiAgfVxuXG4gIHJlc3Q8UmVzdCBleHRlbmRzIFpvZFR5cGVBbnk+KHJlc3Q6IFJlc3QpOiBab2RUdXBsZTxULCBSZXN0PiB7XG4gICAgcmV0dXJuIG5ldyBab2RUdXBsZSh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICByZXN0LFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgW1pvZFR5cGVBbnksIC4uLlpvZFR5cGVBbnlbXV0gfCBbXT4oXG4gICAgc2NoZW1hczogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kVHVwbGU8VCwgbnVsbD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgaXRlbXM6IHNjaGVtYXMsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlLFxuICAgICAgcmVzdDogbnVsbCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZFJlY29yZCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kUmVjb3JkRGVmPFxuICBLZXkgZXh0ZW5kcyBLZXlTY2hlbWEgPSBab2RTdHJpbmcsXG4gIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVUeXBlOiBWYWx1ZTtcbiAga2V5VHlwZTogS2V5O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFJlY29yZDtcbn1cblxudHlwZSBLZXlTY2hlbWEgPSBab2RUeXBlPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55LCBhbnk+O1xudHlwZSBSZWNvcmRUeXBlPEsgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIFY+ID0gW3N0cmluZ10gZXh0ZW5kcyBbS11cbiAgPyBSZWNvcmQ8SywgVj5cbiAgOiBbbnVtYmVyXSBleHRlbmRzIFtLXVxuICA/IFJlY29yZDxLLCBWPlxuICA6IFtzeW1ib2xdIGV4dGVuZHMgW0tdXG4gID8gUmVjb3JkPEssIFY+XG4gIDogUGFydGlhbDxSZWNvcmQ8SywgVj4+O1xuZXhwb3J0IGNsYXNzIFpvZFJlY29yZDxcbiAgS2V5IGV4dGVuZHMgS2V5U2NoZW1hID0gWm9kU3RyaW5nLFxuICBWYWx1ZSBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZTxcbiAgUmVjb3JkVHlwZTxLZXlbXCJfb3V0cHV0XCJdLCBWYWx1ZVtcIl9vdXRwdXRcIl0+LFxuICBab2RSZWNvcmREZWY8S2V5LCBWYWx1ZT4sXG4gIFJlY29yZFR5cGU8S2V5W1wiX2lucHV0XCJdLCBWYWx1ZVtcIl9pbnB1dFwiXT5cbj4ge1xuICBnZXQga2V5U2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYua2V5VHlwZTtcbiAgfVxuICBnZXQgdmFsdWVTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gIH1cbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGNvbnN0IHBhaXJzOiB7XG4gICAgICBrZXk6IFBhcnNlUmV0dXJuVHlwZTxhbnk+O1xuICAgICAgdmFsdWU6IFBhcnNlUmV0dXJuVHlwZTxhbnk+O1xuICAgIH1bXSA9IFtdO1xuXG4gICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHRoaXMuX2RlZi52YWx1ZVR5cGU7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdHguZGF0YSkge1xuICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgIGtleToga2V5VHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGtleSwgY3R4LnBhdGgsIGtleSkpLFxuICAgICAgICB2YWx1ZTogdmFsdWVUeXBlLl9wYXJzZShcbiAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgY3R4LmRhdGFba2V5XSwgY3R4LnBhdGgsIGtleSlcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RBc3luYyhzdGF0dXMsIHBhaXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzIGFzIGFueSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlPFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgdmFsdWVUeXBlOiBWYWx1ZSxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kUmVjb3JkPFpvZFN0cmluZywgVmFsdWU+O1xuICBzdGF0aWMgY3JlYXRlPEtleXMgZXh0ZW5kcyBLZXlTY2hlbWEsIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAga2V5U2NoZW1hOiBLZXlzLFxuICAgIHZhbHVlVHlwZTogVmFsdWUsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZFJlY29yZDxLZXlzLCBWYWx1ZT47XG4gIHN0YXRpYyBjcmVhdGUoZmlyc3Q6IGFueSwgc2Vjb25kPzogYW55LCB0aGlyZD86IGFueSk6IFpvZFJlY29yZDxhbnksIGFueT4ge1xuICAgIGlmIChzZWNvbmQgaW5zdGFuY2VvZiBab2RUeXBlKSB7XG4gICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgIGtleVR5cGU6IGZpcnN0LFxuICAgICAgICB2YWx1ZVR5cGU6IHNlY29uZCxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcmQpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBab2RSZWNvcmQoe1xuICAgICAga2V5VHlwZTogWm9kU3RyaW5nLmNyZWF0ZSgpLFxuICAgICAgdmFsdWVUeXBlOiBmaXJzdCxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVjb3JkLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhzZWNvbmQpLFxuICAgIH0pO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RNYXAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZE1hcERlZjxcbiAgS2V5IGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksXG4gIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVUeXBlOiBWYWx1ZTtcbiAga2V5VHlwZTogS2V5O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE1hcDtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZE1hcDxcbiAgS2V5IGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksXG4gIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlPFxuICBNYXA8S2V5W1wiX291dHB1dFwiXSwgVmFsdWVbXCJfb3V0cHV0XCJdPixcbiAgWm9kTWFwRGVmPEtleSwgVmFsdWU+LFxuICBNYXA8S2V5W1wiX2lucHV0XCJdLCBWYWx1ZVtcIl9pbnB1dFwiXT5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5tYXApIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5tYXAsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHRoaXMuX2RlZi52YWx1ZVR5cGU7XG5cbiAgICBjb25zdCBwYWlycyA9IFsuLi4oY3R4LmRhdGEgYXMgTWFwPHVua25vd24sIHVua25vd24+KS5lbnRyaWVzKCldLm1hcChcbiAgICAgIChba2V5LCB2YWx1ZV0sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShcbiAgICAgICAgICAgIG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBrZXksIGN0eC5wYXRoLCBbaW5kZXgsIFwia2V5XCJdKVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVHlwZS5fcGFyc2UoXG4gICAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBbaW5kZXgsIFwidmFsdWVcIl0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIGNvbnN0IGZpbmFsTWFwID0gbmV3IE1hcCgpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHBhaXIudmFsdWU7XG4gICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJkaXJ0eVwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmaW5hbE1hcC5zZXQoa2V5LnZhbHVlLCB2YWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbmFsTWFwID0gbmV3IE1hcCgpO1xuICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHBhaXIua2V5IGFzIFN5bmNQYXJzZVJldHVyblR5cGU7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGFpci52YWx1ZSBhcyBTeW5jUGFyc2VSZXR1cm5UeXBlO1xuICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImRpcnR5XCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbmFsTWFwLnNldChrZXkudmFsdWUsIHZhbHVlLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogZmluYWxNYXAgfTtcbiAgICB9XG4gIH1cbiAgc3RhdGljIGNyZWF0ZSA9IDxcbiAgICBLZXkgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueSxcbiAgICBWYWx1ZSBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55XG4gID4oXG4gICAga2V5VHlwZTogS2V5LFxuICAgIHZhbHVlVHlwZTogVmFsdWUsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZE1hcDxLZXksIFZhbHVlPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RNYXAoe1xuICAgICAgdmFsdWVUeXBlLFxuICAgICAga2V5VHlwZSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTWFwLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kU2V0ICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RTZXREZWY8VmFsdWUgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVUeXBlOiBWYWx1ZTtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTZXQ7XG4gIG1pblNpemU6IHsgdmFsdWU6IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9IHwgbnVsbDtcbiAgbWF4U2l6ZTogeyB2YWx1ZTogbnVtYmVyOyBtZXNzYWdlPzogc3RyaW5nIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kU2V0PFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZTxcbiAgU2V0PFZhbHVlW1wiX291dHB1dFwiXT4sXG4gIFpvZFNldERlZjxWYWx1ZT4sXG4gIFNldDxWYWx1ZVtcIl9pbnB1dFwiXT5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zZXQpIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5zZXQsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmID0gdGhpcy5fZGVmO1xuXG4gICAgaWYgKGRlZi5taW5TaXplICE9PSBudWxsKSB7XG4gICAgICBpZiAoY3R4LmRhdGEuc2l6ZSA8IGRlZi5taW5TaXplLnZhbHVlKSB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgbWluaW11bTogZGVmLm1pblNpemUudmFsdWUsXG4gICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTogZGVmLm1pblNpemUubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWYubWF4U2l6ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKGN0eC5kYXRhLnNpemUgPiBkZWYubWF4U2l6ZS52YWx1ZSkge1xuICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4U2l6ZS52YWx1ZSxcbiAgICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4U2l6ZS5tZXNzYWdlLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcblxuICAgIGZ1bmN0aW9uIGZpbmFsaXplU2V0KGVsZW1lbnRzOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT5bXSkge1xuICAgICAgY29uc3QgcGFyc2VkU2V0ID0gbmV3IFNldCgpO1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT09IFwiZGlydHlcIikgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIHBhcnNlZFNldC5hZGQoZWxlbWVudC52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IHBhcnNlZFNldCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLihjdHguZGF0YSBhcyBTZXQ8dW5rbm93bj4pLnZhbHVlcygpXS5tYXAoKGl0ZW0sIGkpID0+XG4gICAgICB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpXG4gICAgKTtcblxuICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZWxlbWVudHMpLnRoZW4oKGVsZW1lbnRzKSA9PiBmaW5hbGl6ZVNldChlbGVtZW50cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmluYWxpemVTZXQoZWxlbWVudHMgYXMgU3luY1BhcnNlUmV0dXJuVHlwZVtdKTtcbiAgICB9XG4gIH1cblxuICBtaW4obWluU2l6ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBtaW5TaXplOiB7IHZhbHVlOiBtaW5TaXplLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBtYXgobWF4U2l6ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBtYXhTaXplOiB7IHZhbHVlOiBtYXhTaXplLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBzaXplKHNpemU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMubWluKHNpemUsIG1lc3NhZ2UpLm1heChzaXplLCBtZXNzYWdlKSBhcyBhbnk7XG4gIH1cblxuICBub25lbXB0eShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTZXQ8VmFsdWU+IHtcbiAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSkgYXMgYW55O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxWYWx1ZSBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PihcbiAgICB2YWx1ZVR5cGU6IFZhbHVlLFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RTZXQ8VmFsdWU+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICB2YWx1ZVR5cGUsXG4gICAgICBtaW5TaXplOiBudWxsLFxuICAgICAgbWF4U2l6ZTogbnVsbCxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU2V0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kRnVuY3Rpb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZEZ1bmN0aW9uRGVmPFxuICBBcmdzIGV4dGVuZHMgWm9kVHVwbGU8YW55LCBhbnk+ID0gWm9kVHVwbGU8YW55LCBhbnk+LFxuICBSZXR1cm5zIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgYXJnczogQXJncztcbiAgcmV0dXJuczogUmV0dXJucztcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RGdW5jdGlvbjtcbn1cblxuZXhwb3J0IHR5cGUgT3V0ZXJUeXBlT2ZGdW5jdGlvbjxcbiAgQXJncyBleHRlbmRzIFpvZFR1cGxlPGFueSwgYW55PixcbiAgUmV0dXJucyBleHRlbmRzIFpvZFR5cGVBbnlcbj4gPSBBcmdzW1wiX2lucHV0XCJdIGV4dGVuZHMgQXJyYXk8YW55PlxuICA/ICguLi5hcmdzOiBBcmdzW1wiX2lucHV0XCJdKSA9PiBSZXR1cm5zW1wiX291dHB1dFwiXVxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBJbm5lclR5cGVPZkZ1bmN0aW9uPFxuICBBcmdzIGV4dGVuZHMgWm9kVHVwbGU8YW55LCBhbnk+LFxuICBSZXR1cm5zIGV4dGVuZHMgWm9kVHlwZUFueVxuPiA9IEFyZ3NbXCJfb3V0cHV0XCJdIGV4dGVuZHMgQXJyYXk8YW55PlxuICA/ICguLi5hcmdzOiBBcmdzW1wiX291dHB1dFwiXSkgPT4gUmV0dXJuc1tcIl9pbnB1dFwiXVxuICA6IG5ldmVyO1xuXG5leHBvcnQgY2xhc3MgWm9kRnVuY3Rpb248XG4gIEFyZ3MgZXh0ZW5kcyBab2RUdXBsZTxhbnksIGFueT4sXG4gIFJldHVybnMgZXh0ZW5kcyBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZTxcbiAgT3V0ZXJUeXBlT2ZGdW5jdGlvbjxBcmdzLCBSZXR1cm5zPixcbiAgWm9kRnVuY3Rpb25EZWY8QXJncywgUmV0dXJucz4sXG4gIElubmVyVHlwZU9mRnVuY3Rpb248QXJncywgUmV0dXJucz5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8YW55PiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uKSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZnVuY3Rpb24sXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFyZ3NJc3N1ZShhcmdzOiBhbnksIGVycm9yOiBab2RFcnJvcik6IFpvZElzc3VlIHtcbiAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICBkYXRhOiBhcmdzLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgZXJyb3JNYXBzOiBbXG4gICAgICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLFxuICAgICAgICAgIGdldEVycm9yTWFwKCksXG4gICAgICAgICAgZGVmYXVsdEVycm9yTWFwLFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSBhcyBab2RFcnJvck1hcFtdLFxuICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHMsXG4gICAgICAgICAgYXJndW1lbnRzRXJyb3I6IGVycm9yLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVJldHVybnNJc3N1ZShyZXR1cm5zOiBhbnksIGVycm9yOiBab2RFcnJvcik6IFpvZElzc3VlIHtcbiAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICBkYXRhOiByZXR1cm5zLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgZXJyb3JNYXBzOiBbXG4gICAgICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLFxuICAgICAgICAgIGdldEVycm9yTWFwKCksXG4gICAgICAgICAgZGVmYXVsdEVycm9yTWFwLFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSBhcyBab2RFcnJvck1hcFtdLFxuICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZSxcbiAgICAgICAgICByZXR1cm5UeXBlRXJyb3I6IGVycm9yLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0geyBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAgfTtcbiAgICBjb25zdCBmbiA9IGN0eC5kYXRhO1xuXG4gICAgaWYgKHRoaXMuX2RlZi5yZXR1cm5zIGluc3RhbmNlb2YgWm9kUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIE9LKGFzeW5jICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihbXSk7XG4gICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBhd2FpdCB0aGlzLl9kZWYuYXJnc1xuICAgICAgICAgIC5wYXJzZUFzeW5jKGFyZ3MsIHBhcmFtcylcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VBcmdzSXNzdWUoYXJncywgZSkpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKC4uLihwYXJzZWRBcmdzIGFzIGFueSkpO1xuICAgICAgICBjb25zdCBwYXJzZWRSZXR1cm5zID0gYXdhaXQgKFxuICAgICAgICAgIHRoaXMuX2RlZi5yZXR1cm5zIGFzIFpvZFByb21pc2U8Wm9kVHlwZUFueT5cbiAgICAgICAgKS5fZGVmLnR5cGVcbiAgICAgICAgICAucGFyc2VBc3luYyhyZXN1bHQsIHBhcmFtcylcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VSZXR1cm5zSXNzdWUocmVzdWx0LCBlKSk7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhcnNlZFJldHVybnM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE9LKCguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWRBcmdzID0gdGhpcy5fZGVmLmFyZ3Muc2FmZVBhcnNlKGFyZ3MsIHBhcmFtcyk7XG4gICAgICAgIGlmICghcGFyc2VkQXJncy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlQXJnc0lzc3VlKGFyZ3MsIHBhcnNlZEFyZ3MuZXJyb3IpXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4oLi4uKHBhcnNlZEFyZ3MuZGF0YSBhcyBhbnkpKTtcbiAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IHRoaXMuX2RlZi5yZXR1cm5zLnNhZmVQYXJzZShyZXN1bHQsIHBhcmFtcyk7XG4gICAgICAgIGlmICghcGFyc2VkUmV0dXJucy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlUmV0dXJuc0lzc3VlKHJlc3VsdCwgcGFyc2VkUmV0dXJucy5lcnJvcildKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VkUmV0dXJucy5kYXRhO1xuICAgICAgfSkgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5hcmdzO1xuICB9XG5cbiAgcmV0dXJuVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLnJldHVybnM7XG4gIH1cblxuICBhcmdzPEl0ZW1zIGV4dGVuZHMgUGFyYW1ldGVyczx0eXBlb2YgWm9kVHVwbGVbXCJjcmVhdGVcIl0+WzBdPihcbiAgICAuLi5pdGVtczogSXRlbXNcbiAgKTogWm9kRnVuY3Rpb248Wm9kVHVwbGU8SXRlbXMsIFpvZFVua25vd24+LCBSZXR1cm5zPiB7XG4gICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBhcmdzOiBab2RUdXBsZS5jcmVhdGUoaXRlbXMpLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkgYXMgYW55LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuczxOZXdSZXR1cm5UeXBlIGV4dGVuZHMgWm9kVHlwZTxhbnksIGFueT4+KFxuICAgIHJldHVyblR5cGU6IE5ld1JldHVyblR5cGVcbiAgKTogWm9kRnVuY3Rpb248QXJncywgTmV3UmV0dXJuVHlwZT4ge1xuICAgIHJldHVybiBuZXcgWm9kRnVuY3Rpb24oe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgcmV0dXJuczogcmV0dXJuVHlwZSxcbiAgICB9KTtcbiAgfVxuXG4gIGltcGxlbWVudDxGIGV4dGVuZHMgSW5uZXJUeXBlT2ZGdW5jdGlvbjxBcmdzLCBSZXR1cm5zPj4oXG4gICAgZnVuYzogRlxuICApOiBSZXR1cm5UeXBlPEY+IGV4dGVuZHMgUmV0dXJuc1tcIl9vdXRwdXRcIl1cbiAgICA/ICguLi5hcmdzOiBBcmdzW1wiX2lucHV0XCJdKSA9PiBSZXR1cm5UeXBlPEY+XG4gICAgOiBPdXRlclR5cGVPZkZ1bmN0aW9uPEFyZ3MsIFJldHVybnM+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICByZXR1cm4gdmFsaWRhdGVkRnVuYyBhcyBhbnk7XG4gIH1cblxuICBzdHJpY3RJbXBsZW1lbnQoXG4gICAgZnVuYzogSW5uZXJUeXBlT2ZGdW5jdGlvbjxBcmdzLCBSZXR1cm5zPlxuICApOiBJbm5lclR5cGVPZkZ1bmN0aW9uPEFyZ3MsIFJldHVybnM+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICByZXR1cm4gdmFsaWRhdGVkRnVuYyBhcyBhbnk7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHRoaXMuaW1wbGVtZW50O1xuXG4gIHN0YXRpYyBjcmVhdGUgPSA8XG4gICAgVCBleHRlbmRzIFpvZFR1cGxlPGFueSwgYW55PiA9IFpvZFR1cGxlPFtdLCBab2RVbmtub3duPixcbiAgICBVIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFVua25vd25cbiAgPihcbiAgICBhcmdzPzogVCxcbiAgICByZXR1cm5zPzogVSxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kRnVuY3Rpb248VCwgVT4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRnVuY3Rpb24oe1xuICAgICAgYXJnczogKGFyZ3NcbiAgICAgICAgPyBhcmdzLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSlcbiAgICAgICAgOiBab2RUdXBsZS5jcmVhdGUoW10pLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkpIGFzIGFueSxcbiAgICAgIHJldHVybnM6IHJldHVybnMgfHwgWm9kVW5rbm93bi5jcmVhdGUoKSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRnVuY3Rpb24sXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSkgYXMgYW55O1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTGF6eSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTGF6eURlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+XG4gIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGdldHRlcjogKCkgPT4gVDtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMYXp5O1xufVxuXG5leHBvcnQgY2xhc3MgWm9kTGF6eTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBvdXRwdXQ8VD4sXG4gIFpvZExhenlEZWY8VD4sXG4gIGlucHV0PFQ+XG4+IHtcbiAgZ2V0IHNjaGVtYSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpO1xuICB9XG5cbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgY29uc3QgbGF6eVNjaGVtYSA9IHRoaXMuX2RlZi5nZXR0ZXIoKTtcbiAgICByZXR1cm4gbGF6eVNjaGVtYS5fcGFyc2UoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgZ2V0dGVyOiAoKSA9PiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RMYXp5PFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZExhenkoe1xuICAgICAgZ2V0dGVyOiBnZXR0ZXIsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExhenksXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RMaXRlcmFsICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RMaXRlcmFsRGVmPFQgPSBhbnk+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHZhbHVlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWw7XG59XG5cbmV4cG9ydCBjbGFzcyBab2RMaXRlcmFsPFQ+IGV4dGVuZHMgWm9kVHlwZTxULCBab2RMaXRlcmFsRGVmPFQ+PiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGlmIChpbnB1dC5kYXRhICE9PSB0aGlzLl9kZWYudmFsdWUpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsLFxuICAgICAgICBleHBlY3RlZDogdGhpcy5fZGVmLnZhbHVlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFByaW1pdGl2ZT4oXG4gICAgdmFsdWU6IFQsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZExpdGVyYWw8VD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTGl0ZXJhbCh7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWwsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RFbnVtICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IHR5cGUgQXJyYXlLZXlzID0ga2V5b2YgYW55W107XG5leHBvcnQgdHlwZSBJbmRpY2VzPFQ+ID0gRXhjbHVkZTxrZXlvZiBULCBBcnJheUtleXM+O1xuXG50eXBlIEVudW1WYWx1ZXMgPSBbc3RyaW5nLCAuLi5zdHJpbmdbXV07XG5cbnR5cGUgVmFsdWVzPFQgZXh0ZW5kcyBFbnVtVmFsdWVzPiA9IHtcbiAgW2sgaW4gVFtudW1iZXJdXTogaztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kRW51bURlZjxUIGV4dGVuZHMgRW51bVZhbHVlcyA9IEVudW1WYWx1ZXM+XG4gIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHZhbHVlczogVDtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFbnVtO1xufVxuXG50eXBlIFdyaXRlYWJsZTxUPiA9IHsgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBUW1BdIH07XG5cbmZ1bmN0aW9uIGNyZWF0ZVpvZEVudW08VSBleHRlbmRzIHN0cmluZywgVCBleHRlbmRzIFJlYWRvbmx5PFtVLCAuLi5VW11dPj4oXG4gIHZhbHVlczogVCxcbiAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4pOiBab2RFbnVtPFdyaXRlYWJsZTxUPj47XG5mdW5jdGlvbiBjcmVhdGVab2RFbnVtPFUgZXh0ZW5kcyBzdHJpbmcsIFQgZXh0ZW5kcyBbVSwgLi4uVVtdXT4oXG4gIHZhbHVlczogVCxcbiAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4pOiBab2RFbnVtPFQ+O1xuZnVuY3Rpb24gY3JlYXRlWm9kRW51bSh2YWx1ZXM6IGFueSwgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKSB7XG4gIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgdmFsdWVzOiB2YWx1ZXMgYXMgYW55LFxuICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRW51bSxcbiAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gIH0pIGFzIGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZEVudW08VCBleHRlbmRzIFtzdHJpbmcsIC4uLnN0cmluZ1tdXT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW251bWJlcl0sXG4gIFpvZEVudW1EZWY8VD5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBpZiAodHlwZW9mIGlucHV0LmRhdGEgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdGhpcy5fZGVmLnZhbHVlcztcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBleHBlY3RlZDogdXRpbC5qb2luVmFsdWVzKGV4cGVjdGVkVmFsdWVzKSBhcyBcInN0cmluZ1wiLFxuICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kZWYudmFsdWVzLmluZGV4T2YoaW5wdXQuZGF0YSkgPT09IC0xKSB7XG4gICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IHRoaXMuX2RlZi52YWx1ZXM7XG5cbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICByZWNlaXZlZDogY3R4LmRhdGEsXG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IGV4cGVjdGVkVmFsdWVzLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZXM7XG4gIH1cblxuICBnZXQgZW51bSgpOiBWYWx1ZXM8VD4ge1xuICAgIGNvbnN0IGVudW1WYWx1ZXM6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuX2RlZi52YWx1ZXMpIHtcbiAgICAgIGVudW1WYWx1ZXNbdmFsXSA9IHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGVudW1WYWx1ZXMgYXMgYW55O1xuICB9XG5cbiAgZ2V0IFZhbHVlcygpOiBWYWx1ZXM8VD4ge1xuICAgIGNvbnN0IGVudW1WYWx1ZXM6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuX2RlZi52YWx1ZXMpIHtcbiAgICAgIGVudW1WYWx1ZXNbdmFsXSA9IHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGVudW1WYWx1ZXMgYXMgYW55O1xuICB9XG5cbiAgZ2V0IEVudW0oKTogVmFsdWVzPFQ+IHtcbiAgICBjb25zdCBlbnVtVmFsdWVzOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgfVxuICAgIHJldHVybiBlbnVtVmFsdWVzIGFzIGFueTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSBjcmVhdGVab2RFbnVtO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTmF0aXZlRW51bSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTmF0aXZlRW51bURlZjxUIGV4dGVuZHMgRW51bUxpa2UgPSBFbnVtTGlrZT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVzOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hdGl2ZUVudW07XG59XG5cbnR5cGUgRW51bUxpa2UgPSB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXI7IFtudTogbnVtYmVyXTogc3RyaW5nIH07XG5cbmV4cG9ydCBjbGFzcyBab2ROYXRpdmVFbnVtPFQgZXh0ZW5kcyBFbnVtTGlrZT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW2tleW9mIFRdLFxuICBab2ROYXRpdmVFbnVtRGVmPFQ+XG4+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPFRba2V5b2YgVF0+IHtcbiAgICBjb25zdCBuYXRpdmVFbnVtVmFsdWVzID0gdXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcyk7XG5cbiAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgaWYgKFxuICAgICAgY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nICYmXG4gICAgICBjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udW1iZXJcbiAgICApIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdXRpbC5vYmplY3RWYWx1ZXMobmF0aXZlRW51bVZhbHVlcyk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgZXhwZWN0ZWQ6IHV0aWwuam9pblZhbHVlcyhleHBlY3RlZFZhbHVlcykgYXMgXCJzdHJpbmdcIixcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAobmF0aXZlRW51bVZhbHVlcy5pbmRleE9mKGlucHV0LmRhdGEpID09PSAtMSkge1xuICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcblxuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIHJlY2VpdmVkOiBjdHguZGF0YSxcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZSxcbiAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICByZXR1cm4gT0soaW5wdXQuZGF0YSBhcyBhbnkpO1xuICB9XG5cbiAgZ2V0IGVudW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZXM7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gPFQgZXh0ZW5kcyBFbnVtTGlrZT4oXG4gICAgdmFsdWVzOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2ROYXRpdmVFbnVtPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hdGl2ZUVudW0oe1xuICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hdGl2ZUVudW0sXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RQcm9taXNlICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RQcm9taXNlRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZTogVDtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kUHJvbWlzZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBQcm9taXNlPFRbXCJfb3V0cHV0XCJdPixcbiAgWm9kUHJvbWlzZURlZjxUPixcbiAgUHJvbWlzZTxUW1wiX2lucHV0XCJdPlxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgIGlmIChcbiAgICAgIGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnByb21pc2UgJiZcbiAgICAgIGN0eC5jb21tb24uYXN5bmMgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUucHJvbWlzZSxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNpZmllZCA9XG4gICAgICBjdHgucGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5wcm9taXNlXG4gICAgICAgID8gY3R4LmRhdGFcbiAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoY3R4LmRhdGEpO1xuXG4gICAgcmV0dXJuIE9LKFxuICAgICAgcHJvbWlzaWZpZWQudGhlbigoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKGRhdGEsIHtcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgc2NoZW1hOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RQcm9taXNlPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFByb21pc2Uoe1xuICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICBab2RFZmZlY3RzICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJlZmluZW1lbnQ8VD4gPSAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTtcbmV4cG9ydCB0eXBlIFN1cGVyUmVmaW5lbWVudDxUPiA9IChhcmc6IFQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgUmVmaW5lbWVudEVmZmVjdDxUPiA9IHtcbiAgdHlwZTogXCJyZWZpbmVtZW50XCI7XG4gIHJlZmluZW1lbnQ6IChhcmc6IFQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gYW55O1xufTtcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUVmZmVjdDxUPiA9IHtcbiAgdHlwZTogXCJ0cmFuc2Zvcm1cIjtcbiAgdHJhbnNmb3JtOiAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTtcbn07XG5leHBvcnQgdHlwZSBQcmVwcm9jZXNzRWZmZWN0PFQ+ID0ge1xuICB0eXBlOiBcInByZXByb2Nlc3NcIjtcbiAgdHJhbnNmb3JtOiAoYXJnOiBUKSA9PiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgRWZmZWN0PFQ+ID1cbiAgfCBSZWZpbmVtZW50RWZmZWN0PFQ+XG4gIHwgVHJhbnNmb3JtRWZmZWN0PFQ+XG4gIHwgUHJlcHJvY2Vzc0VmZmVjdDxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBab2RFZmZlY3RzRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgc2NoZW1hOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHM7XG4gIGVmZmVjdDogRWZmZWN0PGFueT47XG59XG5cbmV4cG9ydCBjbGFzcyBab2RFZmZlY3RzPFxuICBUIGV4dGVuZHMgWm9kVHlwZUFueSxcbiAgT3V0cHV0ID0gVFtcIl9vdXRwdXRcIl0sXG4gIElucHV0ID0gVFtcIl9pbnB1dFwiXVxuPiBleHRlbmRzIFpvZFR5cGU8T3V0cHV0LCBab2RFZmZlY3RzRGVmPFQ+LCBJbnB1dD4ge1xuICBpbm5lclR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWE7XG4gIH1cblxuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuXG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5fZGVmLmVmZmVjdCB8fCBudWxsO1xuXG4gICAgaWYgKGVmZmVjdC50eXBlID09PSBcInByZXByb2Nlc3NcIikge1xuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gZWZmZWN0LnRyYW5zZm9ybShjdHguZGF0YSk7XG5cbiAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvY2Vzc2VkKS50aGVuKChwcm9jZXNzZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWQsXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe1xuICAgICAgICAgIGRhdGE6IHByb2Nlc3NlZCxcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tDdHg6IFJlZmluZW1lbnRDdHggPSB7XG4gICAgICBhZGRJc3N1ZTogKGFyZzogSXNzdWVEYXRhKSA9PiB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwgYXJnKTtcbiAgICAgICAgaWYgKGFyZy5mYXRhbCkge1xuICAgICAgICAgIHN0YXR1cy5hYm9ydCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0IHBhdGgoKSB7XG4gICAgICAgIHJldHVybiBjdHgucGF0aDtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNoZWNrQ3R4LmFkZElzc3VlID0gY2hlY2tDdHguYWRkSXNzdWUuYmluZChjaGVja0N0eCk7XG4gICAgaWYgKGVmZmVjdC50eXBlID09PSBcInJlZmluZW1lbnRcIikge1xuICAgICAgY29uc3QgZXhlY3V0ZVJlZmluZW1lbnQgPSAoXG4gICAgICAgIGFjYzogdW5rbm93blxuICAgICAgICAvLyBlZmZlY3Q6IFJlZmluZW1lbnRFZmZlY3Q8YW55PlxuICAgICAgKTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnJlZmluZW1lbnQoYWNjLCBjaGVja0N0eCk7XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfTtcblxuICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtcbiAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSBzdGF0dXMuZGlydHkoKTtcblxuICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgaWdub3JlZFxuICAgICAgICBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSk7XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5uZXIudmFsdWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hXG4gICAgICAgICAgLl9wYXJzZUFzeW5jKHsgZGF0YTogY3R4LmRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KVxuICAgICAgICAgIC50aGVuKChpbm5lcikgPT4ge1xuICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSBzdGF0dXMuZGlydHkoKTtcblxuICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGVSZWZpbmVtZW50KGlubmVyLnZhbHVlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVmZmVjdC50eXBlID09PSBcInRyYW5zZm9ybVwiKSB7XG4gICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpZiAoYmFzZS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgLy8gaWYgKGJhc2Uuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgLy8gICByZXR1cm4geyBzdGF0dXM6IFwiZGlydHlcIiwgdmFsdWU6IGJhc2UudmFsdWUgfTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoIWlzVmFsaWQoYmFzZSkpIHJldHVybiBiYXNlO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGVmZmVjdC50cmFuc2Zvcm0oYmFzZS52YWx1ZSwgY2hlY2tDdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiByZXN1bHQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hXG4gICAgICAgICAgLl9wYXJzZUFzeW5jKHsgZGF0YTogY3R4LmRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KVxuICAgICAgICAgIC50aGVuKChiYXNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQoYmFzZSkpIHJldHVybiBiYXNlO1xuICAgICAgICAgICAgLy8gaWYgKGJhc2Uuc3RhdHVzID09PSBcImFib3J0ZWRcIikgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAvLyBpZiAoYmFzZS5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgLy8gICByZXR1cm4geyBzdGF0dXM6IFwiZGlydHlcIiwgdmFsdWU6IGJhc2UudmFsdWUgfTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCkpLnRoZW4oXG4gICAgICAgICAgICAgIChyZXN1bHQpID0+ICh7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogcmVzdWx0IH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHV0aWwuYXNzZXJ0TmV2ZXIoZWZmZWN0KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8SSBleHRlbmRzIFpvZFR5cGVBbnk+KFxuICAgIHNjaGVtYTogSSxcbiAgICBlZmZlY3Q6IEVmZmVjdDxJW1wiX291dHB1dFwiXT4sXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZEVmZmVjdHM8SSwgSVtcIl9vdXRwdXRcIl0+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgc2NoZW1hLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgZWZmZWN0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xuXG4gIHN0YXRpYyBjcmVhdGVXaXRoUHJlcHJvY2VzcyA9IDxJIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgcHJlcHJvY2VzczogKGFyZzogdW5rbm93bikgPT4gdW5rbm93bixcbiAgICBzY2hlbWE6IEksXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZEVmZmVjdHM8SSwgSVtcIl9vdXRwdXRcIl0+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgc2NoZW1hLFxuICAgICAgZWZmZWN0OiB7IHR5cGU6IFwicHJlcHJvY2Vzc1wiLCB0cmFuc2Zvcm06IHByZXByb2Nlc3MgfSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgWm9kRWZmZWN0cyBhcyBab2RUcmFuc2Zvcm1lciB9O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kT3B0aW9uYWwgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZE9wdGlvbmFsRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgaW5uZXJUeXBlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9wdGlvbmFsO1xufVxuXG5leHBvcnQgdHlwZSBab2RPcHRpb25hbFR5cGU8VCBleHRlbmRzIFpvZFR5cGVBbnk+ID0gWm9kT3B0aW9uYWw8VD47XG5cbmV4cG9ydCBjbGFzcyBab2RPcHRpb25hbDxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW1wiX291dHB1dFwiXSB8IHVuZGVmaW5lZCxcbiAgWm9kT3B0aW9uYWxEZWY8VD4sXG4gIFRbXCJfaW5wdXRcIl0gfCB1bmRlZmluZWRcbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgaWYgKHBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gT0sodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgfVxuXG4gIHVud3JhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFpvZFR5cGVBbnk+KFxuICAgIHR5cGU6IFQsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZE9wdGlvbmFsPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9wdGlvbmFsKHtcbiAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT3B0aW9uYWwsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSkgYXMgYW55O1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTnVsbGFibGUgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZE51bGxhYmxlRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgaW5uZXJUeXBlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlO1xufVxuXG5leHBvcnQgdHlwZSBab2ROdWxsYWJsZVR5cGU8VCBleHRlbmRzIFpvZFR5cGVBbnk+ID0gWm9kTnVsbGFibGU8VD47XG5cbmV4cG9ydCBjbGFzcyBab2ROdWxsYWJsZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW1wiX291dHB1dFwiXSB8IG51bGwsXG4gIFpvZE51bGxhYmxlRGVmPFQ+LFxuICBUW1wiX2lucHV0XCJdIHwgbnVsbFxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5udWxsKSB7XG4gICAgICByZXR1cm4gT0sobnVsbCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShpbnB1dCk7XG4gIH1cblxuICB1bndyYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gPFQgZXh0ZW5kcyBab2RUeXBlQW55PihcbiAgICB0eXBlOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2ROdWxsYWJsZTxUPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsYWJsZSh7XG4gICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICBab2REZWZhdWx0ICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kRGVmYXVsdERlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+XG4gIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGlubmVyVHlwZTogVDtcbiAgZGVmYXVsdFZhbHVlOiAoKSA9PiB1dGlsLm5vVW5kZWZpbmVkPFRbXCJfaW5wdXRcIl0+O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHQ7XG59XG5cbmV4cG9ydCBjbGFzcyBab2REZWZhdWx0PFQgZXh0ZW5kcyBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGU8XG4gIHV0aWwubm9VbmRlZmluZWQ8VFtcIl9vdXRwdXRcIl0+LFxuICBab2REZWZhdWx0RGVmPFQ+LFxuICBUW1wiX2lucHV0XCJdIHwgdW5kZWZpbmVkXG4+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgbGV0IGRhdGEgPSBjdHguZGF0YTtcbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICBkYXRhID0gdGhpcy5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe1xuICAgICAgZGF0YSxcbiAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgcGFyZW50OiBjdHgsXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVEZWZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgdHlwZTogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kT3B0aW9uYWw8VD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT3B0aW9uYWwoe1xuICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KSBhcyBhbnk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2ROYU4gICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTmFORGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmFOO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kTmFOIGV4dGVuZHMgWm9kVHlwZTxudW1iZXIsIFpvZE5hTkRlZj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8YW55PiB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm5hbikge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm5hbixcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kTmFOID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hTih7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hTixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGN1c3RvbSA9IDxUPihcbiAgY2hlY2s/OiAoZGF0YTogdW5rbm93bikgPT4gYW55LFxuICBwYXJhbXM6IFBhcmFtZXRlcnM8Wm9kVHlwZUFueVtcInJlZmluZVwiXT5bMV0gPSB7fSxcbiAgZmF0YWw/OiBib29sZWFuXG4pOiBab2RUeXBlPFQ+ID0+IHtcbiAgaWYgKGNoZWNrKVxuICAgIHJldHVybiBab2RBbnkuY3JlYXRlKCkuc3VwZXJSZWZpbmUoKGRhdGEsIGN0eCkgPT4ge1xuICAgICAgaWYgKCFjaGVjayhkYXRhKSkge1xuICAgICAgICBjb25zdCBwID0gdHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiID8gcGFyYW1zKGRhdGEpIDogcGFyYW1zO1xuICAgICAgICBjb25zdCBwMiA9IHR5cGVvZiBwID09PSBcInN0cmluZ1wiID8geyBtZXNzYWdlOiBwIH0gOiBwO1xuICAgICAgICBjdHguYWRkSXNzdWUoeyBjb2RlOiBcImN1c3RvbVwiLCAuLi5wMiwgZmF0YWwgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiBab2RBbnkuY3JlYXRlKCk7XG59O1xuXG5leHBvcnQgeyBab2RUeXBlIGFzIFNjaGVtYSwgWm9kVHlwZSBhcyBab2RTY2hlbWEgfTtcblxuZXhwb3J0IGNvbnN0IGxhdGUgPSB7XG4gIG9iamVjdDogWm9kT2JqZWN0LmxhenljcmVhdGUsXG59O1xuXG5leHBvcnQgZW51bSBab2RGaXJzdFBhcnR5VHlwZUtpbmQge1xuICBab2RTdHJpbmcgPSBcIlpvZFN0cmluZ1wiLFxuICBab2ROdW1iZXIgPSBcIlpvZE51bWJlclwiLFxuICBab2ROYU4gPSBcIlpvZE5hTlwiLFxuICBab2RCaWdJbnQgPSBcIlpvZEJpZ0ludFwiLFxuICBab2RCb29sZWFuID0gXCJab2RCb29sZWFuXCIsXG4gIFpvZERhdGUgPSBcIlpvZERhdGVcIixcbiAgWm9kVW5kZWZpbmVkID0gXCJab2RVbmRlZmluZWRcIixcbiAgWm9kTnVsbCA9IFwiWm9kTnVsbFwiLFxuICBab2RBbnkgPSBcIlpvZEFueVwiLFxuICBab2RVbmtub3duID0gXCJab2RVbmtub3duXCIsXG4gIFpvZE5ldmVyID0gXCJab2ROZXZlclwiLFxuICBab2RWb2lkID0gXCJab2RWb2lkXCIsXG4gIFpvZEFycmF5ID0gXCJab2RBcnJheVwiLFxuICBab2RPYmplY3QgPSBcIlpvZE9iamVjdFwiLFxuICBab2RVbmlvbiA9IFwiWm9kVW5pb25cIixcbiAgWm9kRGlzY3JpbWluYXRlZFVuaW9uID0gXCJab2REaXNjcmltaW5hdGVkVW5pb25cIixcbiAgWm9kSW50ZXJzZWN0aW9uID0gXCJab2RJbnRlcnNlY3Rpb25cIixcbiAgWm9kVHVwbGUgPSBcIlpvZFR1cGxlXCIsXG4gIFpvZFJlY29yZCA9IFwiWm9kUmVjb3JkXCIsXG4gIFpvZE1hcCA9IFwiWm9kTWFwXCIsXG4gIFpvZFNldCA9IFwiWm9kU2V0XCIsXG4gIFpvZEZ1bmN0aW9uID0gXCJab2RGdW5jdGlvblwiLFxuICBab2RMYXp5ID0gXCJab2RMYXp5XCIsXG4gIFpvZExpdGVyYWwgPSBcIlpvZExpdGVyYWxcIixcbiAgWm9kRW51bSA9IFwiWm9kRW51bVwiLFxuICBab2RFZmZlY3RzID0gXCJab2RFZmZlY3RzXCIsXG4gIFpvZE5hdGl2ZUVudW0gPSBcIlpvZE5hdGl2ZUVudW1cIixcbiAgWm9kT3B0aW9uYWwgPSBcIlpvZE9wdGlvbmFsXCIsXG4gIFpvZE51bGxhYmxlID0gXCJab2ROdWxsYWJsZVwiLFxuICBab2REZWZhdWx0ID0gXCJab2REZWZhdWx0XCIsXG4gIFpvZFByb21pc2UgPSBcIlpvZFByb21pc2VcIixcbn1cbmV4cG9ydCB0eXBlIFpvZEZpcnN0UGFydHlTY2hlbWFUeXBlcyA9XG4gIHwgWm9kU3RyaW5nXG4gIHwgWm9kTnVtYmVyXG4gIHwgWm9kTmFOXG4gIHwgWm9kQmlnSW50XG4gIHwgWm9kQm9vbGVhblxuICB8IFpvZERhdGVcbiAgfCBab2RVbmRlZmluZWRcbiAgfCBab2ROdWxsXG4gIHwgWm9kQW55XG4gIHwgWm9kVW5rbm93blxuICB8IFpvZE5ldmVyXG4gIHwgWm9kVm9pZFxuICB8IFpvZEFycmF5PGFueSwgYW55PlxuICB8IFpvZE9iamVjdDxhbnksIGFueSwgYW55LCBhbnksIGFueT5cbiAgfCBab2RVbmlvbjxhbnk+XG4gIHwgWm9kRGlzY3JpbWluYXRlZFVuaW9uPGFueSwgYW55LCBhbnk+XG4gIHwgWm9kSW50ZXJzZWN0aW9uPGFueSwgYW55PlxuICB8IFpvZFR1cGxlPGFueSwgYW55PlxuICB8IFpvZFJlY29yZDxhbnksIGFueT5cbiAgfCBab2RNYXA8YW55PlxuICB8IFpvZFNldDxhbnk+XG4gIHwgWm9kRnVuY3Rpb248YW55LCBhbnk+XG4gIHwgWm9kTGF6eTxhbnk+XG4gIHwgWm9kTGl0ZXJhbDxhbnk+XG4gIHwgWm9kRW51bTxhbnk+XG4gIHwgWm9kRWZmZWN0czxhbnksIGFueSwgYW55PlxuICB8IFpvZE5hdGl2ZUVudW08YW55PlxuICB8IFpvZE9wdGlvbmFsPGFueT5cbiAgfCBab2ROdWxsYWJsZTxhbnk+XG4gIHwgWm9kRGVmYXVsdDxhbnk+XG4gIHwgWm9kUHJvbWlzZTxhbnk+O1xuXG5jb25zdCBpbnN0YW5jZU9mVHlwZSA9IDxUIGV4dGVuZHMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgY2xzOiBULFxuICBwYXJhbXM6IFBhcmFtZXRlcnM8Wm9kVHlwZUFueVtcInJlZmluZVwiXT5bMV0gPSB7XG4gICAgbWVzc2FnZTogYElucHV0IG5vdCBpbnN0YW5jZSBvZiAke2Nscy5uYW1lfWAsXG4gIH1cbikgPT4gY3VzdG9tPEluc3RhbmNlVHlwZTxUPj4oKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsIHBhcmFtcywgdHJ1ZSk7XG5cbmNvbnN0IHN0cmluZ1R5cGUgPSBab2RTdHJpbmcuY3JlYXRlO1xuY29uc3QgbnVtYmVyVHlwZSA9IFpvZE51bWJlci5jcmVhdGU7XG5jb25zdCBuYW5UeXBlID0gWm9kTmFOLmNyZWF0ZTtcbmNvbnN0IGJpZ0ludFR5cGUgPSBab2RCaWdJbnQuY3JlYXRlO1xuY29uc3QgYm9vbGVhblR5cGUgPSBab2RCb29sZWFuLmNyZWF0ZTtcbmNvbnN0IGRhdGVUeXBlID0gWm9kRGF0ZS5jcmVhdGU7XG5jb25zdCB1bmRlZmluZWRUeXBlID0gWm9kVW5kZWZpbmVkLmNyZWF0ZTtcbmNvbnN0IG51bGxUeXBlID0gWm9kTnVsbC5jcmVhdGU7XG5jb25zdCBhbnlUeXBlID0gWm9kQW55LmNyZWF0ZTtcbmNvbnN0IHVua25vd25UeXBlID0gWm9kVW5rbm93bi5jcmVhdGU7XG5jb25zdCBuZXZlclR5cGUgPSBab2ROZXZlci5jcmVhdGU7XG5jb25zdCB2b2lkVHlwZSA9IFpvZFZvaWQuY3JlYXRlO1xuY29uc3QgYXJyYXlUeXBlID0gWm9kQXJyYXkuY3JlYXRlO1xuY29uc3Qgb2JqZWN0VHlwZSA9IFpvZE9iamVjdC5jcmVhdGU7XG5jb25zdCBzdHJpY3RPYmplY3RUeXBlID0gWm9kT2JqZWN0LnN0cmljdENyZWF0ZTtcbmNvbnN0IHVuaW9uVHlwZSA9IFpvZFVuaW9uLmNyZWF0ZTtcbmNvbnN0IGRpc2NyaW1pbmF0ZWRVbmlvblR5cGUgPSBab2REaXNjcmltaW5hdGVkVW5pb24uY3JlYXRlO1xuY29uc3QgaW50ZXJzZWN0aW9uVHlwZSA9IFpvZEludGVyc2VjdGlvbi5jcmVhdGU7XG5jb25zdCB0dXBsZVR5cGUgPSBab2RUdXBsZS5jcmVhdGU7XG5jb25zdCByZWNvcmRUeXBlID0gWm9kUmVjb3JkLmNyZWF0ZTtcbmNvbnN0IG1hcFR5cGUgPSBab2RNYXAuY3JlYXRlO1xuY29uc3Qgc2V0VHlwZSA9IFpvZFNldC5jcmVhdGU7XG5jb25zdCBmdW5jdGlvblR5cGUgPSBab2RGdW5jdGlvbi5jcmVhdGU7XG5jb25zdCBsYXp5VHlwZSA9IFpvZExhenkuY3JlYXRlO1xuY29uc3QgbGl0ZXJhbFR5cGUgPSBab2RMaXRlcmFsLmNyZWF0ZTtcbmNvbnN0IGVudW1UeXBlID0gWm9kRW51bS5jcmVhdGU7XG5jb25zdCBuYXRpdmVFbnVtVHlwZSA9IFpvZE5hdGl2ZUVudW0uY3JlYXRlO1xuY29uc3QgcHJvbWlzZVR5cGUgPSBab2RQcm9taXNlLmNyZWF0ZTtcbmNvbnN0IGVmZmVjdHNUeXBlID0gWm9kRWZmZWN0cy5jcmVhdGU7XG5jb25zdCBvcHRpb25hbFR5cGUgPSBab2RPcHRpb25hbC5jcmVhdGU7XG5jb25zdCBudWxsYWJsZVR5cGUgPSBab2ROdWxsYWJsZS5jcmVhdGU7XG5jb25zdCBwcmVwcm9jZXNzVHlwZSA9IFpvZEVmZmVjdHMuY3JlYXRlV2l0aFByZXByb2Nlc3M7XG5jb25zdCBvc3RyaW5nID0gKCkgPT4gc3RyaW5nVHlwZSgpLm9wdGlvbmFsKCk7XG5jb25zdCBvbnVtYmVyID0gKCkgPT4gbnVtYmVyVHlwZSgpLm9wdGlvbmFsKCk7XG5jb25zdCBvYm9vbGVhbiA9ICgpID0+IGJvb2xlYW5UeXBlKCkub3B0aW9uYWwoKTtcblxuZXhwb3J0IHtcbiAgYW55VHlwZSBhcyBhbnksXG4gIGFycmF5VHlwZSBhcyBhcnJheSxcbiAgYmlnSW50VHlwZSBhcyBiaWdpbnQsXG4gIGJvb2xlYW5UeXBlIGFzIGJvb2xlYW4sXG4gIGRhdGVUeXBlIGFzIGRhdGUsXG4gIGRpc2NyaW1pbmF0ZWRVbmlvblR5cGUgYXMgZGlzY3JpbWluYXRlZFVuaW9uLFxuICBlZmZlY3RzVHlwZSBhcyBlZmZlY3QsXG4gIGVudW1UeXBlIGFzIGVudW0sXG4gIGZ1bmN0aW9uVHlwZSBhcyBmdW5jdGlvbixcbiAgaW5zdGFuY2VPZlR5cGUgYXMgaW5zdGFuY2VvZixcbiAgaW50ZXJzZWN0aW9uVHlwZSBhcyBpbnRlcnNlY3Rpb24sXG4gIGxhenlUeXBlIGFzIGxhenksXG4gIGxpdGVyYWxUeXBlIGFzIGxpdGVyYWwsXG4gIG1hcFR5cGUgYXMgbWFwLFxuICBuYW5UeXBlIGFzIG5hbixcbiAgbmF0aXZlRW51bVR5cGUgYXMgbmF0aXZlRW51bSxcbiAgbmV2ZXJUeXBlIGFzIG5ldmVyLFxuICBudWxsVHlwZSBhcyBudWxsLFxuICBudWxsYWJsZVR5cGUgYXMgbnVsbGFibGUsXG4gIG51bWJlclR5cGUgYXMgbnVtYmVyLFxuICBvYmplY3RUeXBlIGFzIG9iamVjdCxcbiAgb2Jvb2xlYW4sXG4gIG9udW1iZXIsXG4gIG9wdGlvbmFsVHlwZSBhcyBvcHRpb25hbCxcbiAgb3N0cmluZyxcbiAgcHJlcHJvY2Vzc1R5cGUgYXMgcHJlcHJvY2VzcyxcbiAgcHJvbWlzZVR5cGUgYXMgcHJvbWlzZSxcbiAgcmVjb3JkVHlwZSBhcyByZWNvcmQsXG4gIHNldFR5cGUgYXMgc2V0LFxuICBzdHJpY3RPYmplY3RUeXBlIGFzIHN0cmljdE9iamVjdCxcbiAgc3RyaW5nVHlwZSBhcyBzdHJpbmcsXG4gIGVmZmVjdHNUeXBlIGFzIHRyYW5zZm9ybWVyLFxuICB0dXBsZVR5cGUgYXMgdHVwbGUsXG4gIHVuZGVmaW5lZFR5cGUgYXMgdW5kZWZpbmVkLFxuICB1bmlvblR5cGUgYXMgdW5pb24sXG4gIHVua25vd25UeXBlIGFzIHVua25vd24sXG4gIHZvaWRUeXBlIGFzIHZvaWQsXG59O1xuIiwiaW1wb3J0IHsgVHlwZU9mLCBTY2hlbWEsIFpvZEVycm9yIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3gvem9kQHYzLjE3LjEwL21vZC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZzxJIGV4dGVuZHMgU2NoZW1hPGFueT4gfCB1bmRlZmluZWQsIE8gZXh0ZW5kcyBTY2hlbWE8YW55PiB8IHVuZGVmaW5lZD4ge1xuXHRfc2lnOiB0cnVlLFxuXHRpbnB1dDogSSxcblx0b3V0cHV0OiBPLFxufVxuZXhwb3J0IGNvbnN0IHNpZyA9IDxJIGV4dGVuZHMgU2NoZW1hPGFueT4gfCB1bmRlZmluZWQsIE8gZXh0ZW5kcyBTY2hlbWE8YW55PiB8IHVuZGVmaW5lZD4oaTogSSwgbzogTyk6IFNpZzxJLCBPPiA9PiAoe1xuXHRfc2lnOiB0cnVlLFxuXHRpbnB1dDogaSxcblx0b3V0cHV0OiBvLFxufSk7XG5cbnR5cGUgTWFrZUhhbmRsZXJzT2JqZWN0PFQ+ID0ge1xuXHRbSyBpbiBrZXlvZiBUXTogTWFrZUhhbmRsZXJzPFRbS10+XG59O1xuXG50eXBlIE1ha2VIYW5kbGVyc1NpZzxUIGV4dGVuZHMgU2lnPGFueSwgYW55Pj4gPVxuXHRUW1wiaW5wdXRcIl0gZXh0ZW5kcyB1bmRlZmluZWQgPyAoXG5cdFx0VFtcIm91dHB1dFwiXSBleHRlbmRzIHVuZGVmaW5lZFxuXHRcdD8gKCkgPT4gUHJvbWlzZTx2b2lkPlxuXHRcdDogKCkgPT4gUHJvbWlzZTxUeXBlT2Y8VFtcIm91dHB1dFwiXT4+XG5cdCkgOiAoXG5cdFx0VFtcIm91dHB1dFwiXSBleHRlbmRzIHVuZGVmaW5lZFxuXHRcdD8gKGk6IFR5cGVPZjxUW1wiaW5wdXRcIl0+KSA9PiBQcm9taXNlPHZvaWQ+XG5cdFx0OiAoaTogVHlwZU9mPFRbXCJpbnB1dFwiXT4pID0+IFByb21pc2U8VHlwZU9mPFRbXCJvdXRwdXRcIl0+PlxuXHQpO1xuXG5leHBvcnQgdHlwZSBNYWtlSGFuZGxlcnM8VD4gPVxuXHRUIGV4dGVuZHMgU2lnPGFueSwgYW55PlxuXHQ/IE1ha2VIYW5kbGVyc1NpZzxUPlxuXHQ6IE1ha2VIYW5kbGVyc09iamVjdDxUPjtcblxudHlwZSBIYW5kbGVyID0gKHJlcTogUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXNwb25zZT47XG5jb25zdCBtYWtlU2VydmVfID0gPFQ+KFxuXHRhcGk6IFQsXG5cdGhhbmRsZXJzOiBNYWtlSGFuZGxlcnM8VD4sXG5cdHBhdGg6IHN0cmluZyxcblx0cGF0aHM6IE1hcDxzdHJpbmcsIEhhbmRsZXI+LFxuKSA9PiB7XG5cdGNvbnN0IGEgPSBhcGkgYXMgYW55O1xuXHRPYmplY3QuZW50cmllcyhoYW5kbGVycykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG5cdFx0Y29uc3QgcCA9IGAke3BhdGh9LyR7a31gO1xuXG5cdFx0aWYgKHR5cGVvZiB2ID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHBhdGhzLnNldChwLCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG5cdFx0XHRcdGlmIChhW2tdLmlucHV0KSB7XG5cdFx0XHRcdFx0Y29uc3QgYm9keSA9IGF3YWl0IHJlcS5qc29uKCk7XG5cdFx0XHRcdFx0Y29uc3QgcGFyc2VkID0gYVtrXS5pbnB1dC5wYXJzZShib2R5KTtcblxuXHRcdFx0XHRcdHJldHVybiB2KHBhcnNlZCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdigpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0bWFrZVNlcnZlXyhhW2tdLCB2LCBwLCBwYXRocyk7XG5cdH0pO1xufVxuXG5leHBvcnQgY29uc3QgbWFrZVNlcnZlID0gPFQ+KFxuXHRhcGk6IFQsXG5cdGhhbmRsZXJzOiBNYWtlSGFuZGxlcnM8VD4sXG5cdHBhdGg6IHN0cmluZyxcbikgPT4ge1xuXHRjb25zdCBwYXRocyA9IG5ldyBNYXA8c3RyaW5nLCBIYW5kbGVyPigpO1xuXG5cdG1ha2VTZXJ2ZV8oYXBpLCBoYW5kbGVycywgcGF0aCwgcGF0aHMpO1xuXG5cdHJldHVybiBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG5cdFx0Y29uc3QgcGF0aCA9IG5ldyBVUkwocmVxLnVybCkucGF0aG5hbWU7XG5cdFx0Y29uc3QgaGFuZGxlciA9IHBhdGhzLmdldChwYXRoKTtcblxuXHRcdGlmICghaGFuZGxlcikge1xuXHRcdFx0cmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG5cdFx0XHRcdHN0YXR1czogNDA0LFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzID0gYXdhaXQgaGFuZGxlcihyZXEpO1xuXG5cdFx0cmV0dXJuIG5ldyBSZXNwb25zZShyZXMgJiYgSlNPTi5zdHJpbmdpZnkocmVzKSk7XG5cdH07XG59O1xuXG50eXBlIE1ha2VDbGllbnQ8VD4gPVxuXHRUIGV4dGVuZHMgU2lnPGFueSwgYW55PlxuXHQ/IE1ha2VDbGllbnRTaWc8VD5cblx0OiBNYWtlQ2xpZW50T2JqZWN0PFQ+O1xuXG50eXBlIE1ha2VDbGllbnRPYmplY3Q8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBNYWtlQ2xpZW50PFRbS10+XG59O1xuXG50eXBlIENsaWVudEh0dHBFcnJvciA9IFJlc3BvbnNlO1xuaW50ZXJmYWNlIENsaWVudFZhbGlkYXRpb25FcnJvcjxUPiB7XG5cdGVycm9yOiBab2RFcnJvcjxUPixcbn1cbmV4cG9ydCB0eXBlIENsaWVudFJlc3BvbnNlPFQ+ID0gVCB8IENsaWVudEh0dHBFcnJvciB8IENsaWVudFZhbGlkYXRpb25FcnJvcjxUPjtcblxuZXhwb3J0IHR5cGUgTWFrZUNsaWVudFNpZzxUIGV4dGVuZHMgU2lnPGFueSwgYW55Pj4gPVxuXHRUW1wiaW5wdXRcIl0gZXh0ZW5kcyB1bmRlZmluZWQgPyAoXG5cdFx0VFtcIm91dHB1dFwiXSBleHRlbmRzIHVuZGVmaW5lZFxuXHRcdD8gKCkgPT4gUHJvbWlzZTxDbGllbnRSZXNwb25zZTx2b2lkPj5cblx0XHQ6ICgpID0+IFByb21pc2U8Q2xpZW50UmVzcG9uc2U8VHlwZU9mPFRbXCJvdXRwdXRcIl0+Pj5cblx0KSA6IChcblx0XHRUW1wib3V0cHV0XCJdIGV4dGVuZHMgdW5kZWZpbmVkXG5cdFx0PyAoaTogVHlwZU9mPFRbXCJpbnB1dFwiXT4pID0+IFByb21pc2U8Q2xpZW50UmVzcG9uc2U8dm9pZD4+XG5cdFx0OiAoaTogVHlwZU9mPFRbXCJpbnB1dFwiXT4pID0+IFByb21pc2U8Q2xpZW50UmVzcG9uc2U8VHlwZU9mPFRbXCJvdXRwdXRcIl0+Pj5cblx0KTtcblxuZXhwb3J0IGNvbnN0IG1ha2VDbGllbnQgPSA8VD4oYXBpOiBULCBwYXRoOiBzdHJpbmcpOiBNYWtlQ2xpZW50PFQ+ID0+IHtcblx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhcGkpLm1hcCgoW2ssIHZdKSA9PiB7XG5cdFx0Y29uc3QgcCA9IGAke3BhdGh9LyR7a31gIGFzIHN0cmluZztcblxuXHRcdGlmIChcIl9zaWdcIiBpbiB2KSB7XG5cdFx0XHRjb25zdCB2XyA9IHYgYXMgU2lnPFNjaGVtYTxhbnk+IHwgdW5kZWZpbmVkLCBTY2hlbWE8YW55PiB8IHVuZGVmaW5lZD47XG5cdFx0XHRyZXR1cm4gW2ssIGFzeW5jIChib2R5OiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3QgYiA9IGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IG51bGw7XG5cdFx0XHRcdGNvbnN0IHJlID0gYXdhaXQgZmV0Y2gocCwgeyBib2R5OiBiLCBtZXRob2Q6IFwiUE9TVFwiIH0pO1xuXG5cdFx0XHRcdGlmICghcmUub2spIHtcblx0XHRcdFx0XHRyZXR1cm4gcmU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodl8ub3V0cHV0KSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzID0gYXdhaXQgdl8ub3V0cHV0LnNhZmVQYXJzZUFzeW5jKGF3YWl0IHJlLmpzb24oKSk7XG5cdFx0XHRcdFx0aWYgKCFyZXMuc3VjY2Vzcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0ZXJyb3I6IHJlcy5lcnJvcixcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gcmVzLmRhdGE7XG5cdFx0XHRcdH1cblx0XHRcdH1dXG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtrLCBtYWtlQ2xpZW50KHYsIHApXTtcblx0fSkpIGFzIE1ha2VDbGllbnQ8VD47XG59O1xuXG5leHBvcnQgY29uc3QgaXNIdHRwRXJyb3IgPSAodjogYW55KTogdiBpcyBDbGllbnRIdHRwRXJyb3IgPT4ge1xuXHRyZXR1cm4gdiBpbnN0YW5jZW9mIFJlc3BvbnNlO1xufVxuXG5leHBvcnQgY29uc3QgaXNWYWxpZGF0aW9uRXJyb3IgPSAodjogYW55KTogdiBpcyBDbGllbnRWYWxpZGF0aW9uRXJyb3I8YW55PiA9PiB7XG5cdHJldHVybiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdi5lcnJvciBpbnN0YW5jZW9mIFpvZEVycm9yKTtcbn1cblxuZXhwb3J0IGNvbnN0IGFzc2VydCA9IDxUPihyZXM6IENsaWVudFJlc3BvbnNlPFQ+KTogVCA9PiB7XG5cdGlmIChpc0h0dHBFcnJvcihyZXMpIHx8IGlzVmFsaWRhdGlvbkVycm9yKHJlcykpIHtcblx0XHR0aHJvdyByZXM7XG5cdH1cblxuXHRyZXR1cm4gcmVzO1xufVxuIiwiLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxudHlwZSBCYXNpY1Byb3BlcnRpZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFQgYXMgVFtLXSBleHRlbmRzIChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSA/IEsgOiBuZXZlcl06IFRbS11cbn1cblxudHlwZSBDaGlsZCA9IE5vZGUgfCBzdHJpbmcgfCBudWxsO1xudHlwZSBTd2VsT3B0czxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPiA9XG5cdFBhcnRpYWw8QmFzaWNQcm9wZXJ0aWVzPEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXT4+ICYge1xuXHRcdG9uOiBQYXJ0aWFsPHtcblx0XHRcdFtFdiBpbiBrZXlvZiBIVE1MRWxlbWVudEV2ZW50TWFwXTpcblx0XHRcdFx0KHRoaXM6IEhUTUxFbGVtZW50LCBldjogSFRNTEVsZW1lbnRFdmVudE1hcFtFdl0pID0+IGFueVxuXHRcdH0+LFxuXHRcdGNoaWxkcmVuOiAoTm9kZSB8IHN0cmluZylbXSB8IG51bGwsXG5cdFx0YXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgYm9vbGVhbiB8IG51bWJlcj4sXG5cdFx0Y2xhc3NOYW1lOiBzdHJpbmcsXG5cdH07XG5cbmludGVyZmFjZSBTd2VsIHtcblx0PFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuXHRcdHRhZzogVCxcblx0XHRvcHRzPzogUGFydGlhbDxTd2VsT3B0czxUPj4sXG5cdCk6IEhUTUxFbGVtZW50VGFnTmFtZU1hcFtUXTtcblxuXHQ8VCBleHRlbmRzIGtleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcD4oXG5cdFx0dGFnOiBULFxuXHRcdGNoaWxkcmVuPzogQ2hpbGRbXSxcblx0KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdO1xuXG5cdDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcblx0XHR0YWc6IFQsXG5cdFx0Y2hpbGQ/OiBDaGlsZCxcblx0KTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdO1xuXG5cdDxUIGV4dGVuZHMga2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwPihcblx0XHR0YWc6IFQsXG5cdFx0b3B0cz86IFBhcnRpYWw8T21pdDxTd2VsT3B0czxUPiwgXCJjaGlsZHJlblwiPj4sXG5cdFx0Y2hpbGRyZW4/OiBDaGlsZFtdLFxuXHQpOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF07XG5cblx0PFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuXHRcdHRhZzogVCxcblx0XHRvcHRzPzogUGFydGlhbDxPbWl0PFN3ZWxPcHRzPFQ+LCBcImNoaWxkcmVuXCI+Pixcblx0XHRjaGlsZD86IENoaWxkLFxuXHQpOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF07XG59XG5cbmV4cG9ydCBjb25zdCBzd2VsOiBTd2VsID0gPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuXHR0YWc6IFQsXG5cdG9wdHM/OiBQYXJ0aWFsPFN3ZWxPcHRzPFQ+PiB8IENoaWxkIHwgQ2hpbGRbXSxcblx0Y2hpbGRyZW4/OiBDaGlsZCB8IENoaWxkW10sXG4pOiBIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF0gPT4ge1xuXHRsZXQgbzogUGFydGlhbDxTd2VsT3B0czxUPj4gfCBudWxsID0gbnVsbDtcblx0aWYgKGNoaWxkcmVuKSB7XG5cdFx0bGV0IGM6IENoaWxkW10gfCBudWxsO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHRcdFx0YyA9IGNoaWxkcmVuO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjID0gW2NoaWxkcmVuXTtcblx0XHR9XG5cblx0XHRvID0ge1xuXHRcdFx0Li4uKG9wdHMgYXMgYW55KSxcblx0XHRcdGNoaWxkcmVuOiBjLFxuXHRcdH07XG5cdH0gZWxzZSBpZiAob3B0cykge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KG9wdHMpKSB7XG5cdFx0XHRvID0geyBjaGlsZHJlbjogb3B0cyB9IGFzIGFueTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRzID09PSBcInN0cmluZ1wiIHx8IG9wdHMgaW5zdGFuY2VvZiBOb2RlKSB7XG5cdFx0XHRvID0geyBjaGlsZHJlbjogW29wdHNdIH0gYXMgYW55O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvID0gb3B0cztcblx0XHR9XG5cdH1cblx0bGV0IG9fID0gbyE7XG5cdGlmIChvXy5jaGlsZHJlbikge1xuXHRcdG9fLmNoaWxkcmVuID0gb18uY2hpbGRyZW4uZmlsdGVyKGMgPT4gISFjKSBhcyBhbnk7XG5cdH1cblxuXHRyZXR1cm4gc3dlbF8odGFnLCBvKTtcbn07XG5cbmNvbnN0IHN3ZWxfID0gPFQgZXh0ZW5kcyBrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXA+KFxuXHR0YWc6IFQsXG5cdG9wdHM6IFBhcnRpYWw8U3dlbE9wdHM8VD4+IHwgbnVsbFxuKTogSFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdID0+IHtcblx0Y29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZykgYXMgdW5rbm93biBhcyBIVE1MRWxlbWVudFRhZ05hbWVNYXBbVF07XG5cdGlmIChvcHRzKSB7XG5cdFx0Y29uc3QgeyBjaGlsZHJlbiwgb24sIGF0dHJpYnV0ZXMsIC4uLnJlc3QgfSA9IG9wdHM7XG5cblx0XHRpZiAoY2hpbGRyZW4pIHtcblx0XHRcdGVsLmFwcGVuZCguLi5jaGlsZHJlbik7XG5cdFx0fVxuXHRcdGlmIChvbikge1xuXHRcdFx0T2JqZWN0LmVudHJpZXMob24pLmZvckVhY2goKFtldiwgaF0pID0+IHtcblx0XHRcdFx0ZWwuYWRkRXZlbnRMaXN0ZW5lcihldiwgaCBhcyBhbnkpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzKSB7XG5cdFx0XHRPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5tYXAoKFtrLCB2XSkgPT4ge1xuXHRcdFx0XHRlbC5zZXRBdHRyaWJ1dGUoaywgdiBhcyB1bmtub3duIGFzIHN0cmluZyk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRPYmplY3QuYXNzaWduKGVsLCByZXN0KTtcblx0fVxuXG5cdHJldHVybiBlbDtcbn07XG4iLCJpbXBvcnQgeyBvYmplY3QsIGFycmF5LCBzdHJpbmcsIFR5cGVPZiwgbmF0aXZlRW51bSwgdW5pb24gfSBmcm9tIFwiLi4vY29tbW9uL2RlcHMvem9kLnRzXCI7XG5pbXBvcnQgeyBzaWcgfSBmcm9tIFwiLi4vY29tbW9uL2RlcHMveWF5cGkudHNcIjtcblxuZXhwb3J0IGNvbnN0IEdldENvbmZpZ3VyYXRpb25SZXNwb25zZVYxID0gb2JqZWN0KHtcblx0aG9zdHM6IGFycmF5KHN0cmluZygpKSxcblx0c2VydmljZXM6IGFycmF5KG9iamVjdCh7XG5cdFx0bmFtZTogc3RyaW5nKCksXG5cdFx0cHVibGljVXJsOiBzdHJpbmcoKS5vcHRpb25hbCgpLFxuXHR9KSksXG59KTtcbmV4cG9ydCB0eXBlIEdldENvbmZpZ3VyYXRpb25SZXNwb25zZVYxID0gVHlwZU9mPHR5cGVvZiBHZXRDb25maWd1cmF0aW9uUmVzcG9uc2VWMT47XG5cbmV4cG9ydCBlbnVtIFN0YXR1c1YxIHtcblx0RG93biA9IFwiZG93blwiLFxuXHRVcCA9IFwidXBcIixcbn1cbmV4cG9ydCBjb25zdCBTdGF0dXNSZXNwb25zZVYxID0gdW5pb24oW1xuXHRuYXRpdmVFbnVtKFN0YXR1c1YxKSxcblx0b2JqZWN0KHsgZXJyb3I6IHN0cmluZygpIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBTdGF0dXNSZXNwb25zZVYxID0gVHlwZU9mPHR5cGVvZiBTdGF0dXNSZXNwb25zZVYxPjtcblxuZXhwb3J0IGNvbnN0IGFwaSA9IHtcblx0djE6IHtcblx0XHRjb25maWd1cmF0aW9uOiB7XG5cdFx0XHRnZXQ6IHNpZyh1bmRlZmluZWQsIEdldENvbmZpZ3VyYXRpb25SZXNwb25zZVYxKSxcblx0XHR9LFxuXHRcdGhvc3Q6IHtcblx0XHRcdGdldFN0YXR1czogc2lnKHN0cmluZygpLCBTdGF0dXNSZXNwb25zZVYxKSxcblx0XHR9LFxuXHRcdHNlcnZpY2U6IHtcblx0XHRcdGdldFN0YXR1czogc2lnKHN0cmluZygpLCBTdGF0dXNSZXNwb25zZVYxKSxcblx0XHR9LFxuXHR9LFxufTtcbiIsImltcG9ydCB7IG1ha2VDbGllbnQsIGFzc2VydCwgQ2xpZW50UmVzcG9uc2UsIGlzSHR0cEVycm9yLCBpc1ZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuLi9jb21tb24vZGVwcy95YXlwaS50c1wiO1xuaW1wb3J0IHsgc3dlbCB9IGZyb20gXCIuL2RlcHMvc3dlbC50c1wiO1xuXG5pbXBvcnQgeyBhcGksIFN0YXR1c1Jlc3BvbnNlVjEgfSBmcm9tIFwiLi4vY29tbW9uL2FwaS50c1wiO1xuXG5jb25zdCBjbGllbnQgPSAoKCkgPT4ge1xuXHRjb25zdCBsID0gd2luZG93LmxvY2F0aW9uO1xuXHRjb25zdCB1cmwgPSBgJHtsLnByb3RvY29sfS8vJHtsLmhvc3R9L2FwaWA7XG5cdHJldHVybiBtYWtlQ2xpZW50KGFwaSwgdXJsKTtcbn0pKCk7XG5cbmNvbnN0IFNlcnZpY2VJbmZvID0gKFxuXHRuYW1lOiBzdHJpbmcsXG5cdGdldFN0YXR1czogKCkgPT4gUHJvbWlzZTxDbGllbnRSZXNwb25zZTxTdGF0dXNSZXNwb25zZVYxPj4sXG5cdHB1YmxpY1VybD86IHN0cmluZyxcbikgPT4ge1xuXHRjb25zdCBuYW1lRWwgPSBzd2VsKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcIm5hbWVcIiB9LCBuYW1lKTtcblx0Y29uc3Qgc3RhdHVzID0gc3dlbChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJzdGF0dXNcIiB9LCBcImxvYWRpbmdcIik7XG5cdGNvbnN0IGdvID0gcHVibGljVXJsID8gc3dlbChcImFcIiwge1xuXHRcdGNsYXNzTmFtZTogXCJnb1wiLFxuXHRcdGhyZWY6IHB1YmxpY1VybCxcblx0XHR0YXJnZXQ6IFwiX2JsYW5rXCIsXG5cdFx0b246IHsgbW91c2VlbnRlcjogKGUpID0+IGUucHJldmVudERlZmF1bHQoKSB9LFxuXHR9LCBcIkdvXCIpIDogbnVsbDtcblxuXHRjb25zdCBidXR0b24gPSBzd2VsKFwiYnV0dG9uXCIsIHtcblx0XHRjbGFzc05hbWU6IFwic3RhdHVzLWJ1dHRvblwiLFxuXHRcdHRhYkluZGV4OiAwLFxuXHR9LCBbbmFtZUVsLCBzdGF0dXNdKTtcblxuXHRjb25zdCByZWZyZXNoID0gYXN5bmMgKCkgPT4ge1xuXHRcdGJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcmVmcmVzaCk7XG5cdFx0YnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcblx0XHRzdGF0dXMudGV4dENvbnRlbnQgPSBcImxvYWRpbmdcIjtcblx0XHRidXR0b24uY2xhc3NOYW1lID0gXCJzdGF0dXMtYnV0dG9uXCI7XG5cblx0XHRjb25zdCBzdCA9IGF3YWl0IGdldFN0YXR1cygpO1xuXHRcdGlmIChpc0h0dHBFcnJvcihzdCkpIHtcblx0XHRcdHN0YXR1cy50ZXh0Q29udGVudCA9IFwiZXJyb3JcIjtcblx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZXJyb3JcIik7XG5cdFx0fSBlbHNlIGlmIChpc1ZhbGlkYXRpb25FcnJvcihzdCkpIHtcblx0XHRcdHN0YXR1cy50ZXh0Q29udGVudCA9IHN0LmVycm9yLnRvU3RyaW5nKCk7XG5cdFx0XHRidXR0b24uY2xhc3NMaXN0LmFkZChcImVycm9yXCIpO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHN0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRzdGF0dXMudGV4dENvbnRlbnQgPSBzdC5lcnJvcjtcblx0XHRcdGJ1dHRvbi5jbGFzc0xpc3QuYWRkKFwiZXJyb3JcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN0YXR1cy50ZXh0Q29udGVudCA9IHN0O1xuXHRcdFx0YnV0dG9uLmNsYXNzTGlzdC5hZGQoc3QpO1xuXHRcdH1cblxuXHRcdGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgcmVmcmVzaCk7XG5cdFx0YnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XG5cdH07XG5cblx0cmVmcmVzaCgpO1xuXG5cdHJldHVybiBzd2VsKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInN0YXR1cy1jb250YWluZXJcIiwgfSwgW2J1dHRvbiwgZ29dKTtcbn1cblxuY29uc3QgbWFpbiA9IGFzeW5jICgpID0+IHtcblx0Y29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC52MS5jb25maWd1cmF0aW9uLmdldCgpLnRoZW4oYXNzZXJ0KTtcblxuXHRjb25zdCBob3N0c1NlY3Rpb24gPSBzd2VsKFwic2VjdGlvblwiLCBbXG5cdFx0c3dlbChcImgxXCIsIFwiSG9zdHNcIiksXG5cdFx0c3dlbChcblx0XHRcdFwiZGl2XCIsXG5cdFx0XHR7IGNsYXNzTmFtZTogXCJob3N0c1wiIH0sXG5cdFx0XHRyZXNwLmhvc3RzLm1hcChoID0+IFNlcnZpY2VJbmZvKFxuXHRcdFx0XHRoLFxuXHRcdFx0XHQoKSA9PiBjbGllbnQudjEuaG9zdC5nZXRTdGF0dXMoaCksXG5cdFx0XHQpKVxuXHRcdCksXG5cdF0pO1xuXG5cdGNvbnN0IHNlcnZpY2VzU2VjdGlvbiA9IHN3ZWwoXCJzZWN0aW9uXCIsIFtcblx0XHRzd2VsKFwiaDFcIiwgXCJTZXJ2aWNlc1wiKSxcblx0XHRzd2VsKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcInNlcnZpY2VzXCIsIH0sIHJlc3Auc2VydmljZXMubWFwKHNpID0+IFNlcnZpY2VJbmZvKFxuXHRcdFx0c2kubmFtZSxcblx0XHRcdCgpID0+IGNsaWVudC52MS5zZXJ2aWNlLmdldFN0YXR1cyhzaS5uYW1lKSxcblx0XHRcdHNpLnB1YmxpY1VybCxcblx0XHQpKSksXG5cdF0pO1xuXG5cdGRvY3VtZW50LmJvZHkucmVwbGFjZUNoaWxkcmVuKGhvc3RzU2VjdGlvbiwgc2VydmljZXNTZWN0aW9uKTtcbn07XG5cbm1haW4oKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBTyxJQUFVLElBQUksQUFxRnBCOztJQS9FUSxTQUFTLFdBQVcsQ0FBTyxLQUF3QixFQUFFLEVBQUU7U0FBOUMsV0FBVyxHQUFYLFdBQVc7SUFFcEIsU0FBUyxXQUFXLENBQUMsRUFBUyxFQUFTO1FBQzVDLE1BQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztLQUNuQjtTQUZlLFdBQVcsR0FBWCxXQUFXO1NBU2QsV0FBVyxHQUFHLENBQ3pCLEtBQVEsR0FDb0I7UUFDNUIsTUFBTSxHQUFHLEdBQVEsRUFBRSxBQUFDO1FBQ3BCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFFO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDbEI7UUFDRCxPQUFPLEdBQUcsQ0FBUTtLQUNuQjtTQUVZLGtCQUFrQixHQUFHLENBQUMsR0FBUSxHQUFLO1FBQzlDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQ3RDLENBQUMsQ0FBTSxHQUFLLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDNUMsQUFBQztRQUNGLE1BQU0sUUFBUSxHQUFRLEVBQUUsQUFBQztRQUN6QixLQUFLLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBRTtZQUN6QixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RCO1FBQ0QsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDL0I7UUFFWSxZQUFZLFFBQVosWUFBWSxHQUFHLENBQUMsR0FBUSxHQUFLO1FBQ3hDLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFVLENBQUMsRUFBRTtZQUN0QyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNmLENBQUMsQ0FBQztLQUNKLEFBSndCO1FBTVosVUFBVSxRQUFWLFVBQVUsR0FDckIsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsR0FDN0IsQ0FBQyxHQUFRLEdBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FDOUIsQ0FBQyxNQUFXLEdBQUs7UUFDZixNQUFNLElBQUksR0FBRyxFQUFFLEFBQUM7UUFDaEIsSUFBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUU7WUFDeEIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2hCO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztLQUNiLEFBWGdCO1NBYVYsSUFBSSxHQUFHLENBQ2xCLEdBQVEsRUFDUixPQUF3QixHQUNOO1FBQ2xCLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFFO1lBQ3RCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxTQUFTLENBQUM7S0FDbEI7U0FNWSxTQUFTLEdBQ3BCLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEdBQ2xDLENBQUMsR0FBRyxHQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQzlCLENBQUMsR0FBRyxHQUNGLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHO0lBRXBFLFNBQVMsVUFBVSxDQUN4QixLQUFRLEVBQ1IsU0FBUyxHQUFHLEtBQUssRUFDVDtRQUNSLE9BQU8sS0FBSyxDQUNULEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBTSxPQUFPLEdBQUcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQUFBQyxDQUFDLENBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNwQjtTQVBlLFVBQVUsR0FBVixVQUFVO0dBN0VYLElBQUksS0FBSixJQUFJO0FBdUZkLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUMsUUFBUTtJQUNSLEtBQUs7SUFDTCxRQUFRO0lBQ1IsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsTUFBTTtJQUNOLFFBQVE7SUFDUixRQUFRO0lBQ1IsVUFBVTtJQUNWLFdBQVc7SUFDWCxNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7SUFDUixTQUFTO0lBQ1QsU0FBUztJQUNULE1BQU07SUFDTixPQUFPO0lBQ1AsS0FBSztJQUNMLEtBQUs7Q0FDTixDQUFDLEFBQUM7QUFJSSxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQVMsR0FBb0I7SUFDekQsTUFBTSxDQUFDLEdBQUcsT0FBTyxJQUFJLEFBQUM7SUFFdEIsT0FBUSxDQUFDO1FBQ1AsS0FBSyxXQUFXO1lBQ2QsT0FBTyxhQUFhLENBQUMsU0FBUyxDQUFDO1FBRWpDLEtBQUssUUFBUTtZQUNYLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUU5QixLQUFLLFFBQVE7WUFDWCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFFaEUsS0FBSyxTQUFTO1lBQ1osT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBRS9CLEtBQUssVUFBVTtZQUNiLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUVoQyxLQUFLLFFBQVE7WUFDWCxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFFOUIsS0FBSyxRQUFRO1lBQ1gsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2QixPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUM7YUFDNUI7WUFDRCxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2pCLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQzthQUMzQjtZQUNELElBQ0UsSUFBSSxDQUFDLElBQUksSUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUMvQixJQUFJLENBQUMsS0FBSyxJQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQ2hDO2dCQUNBLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQzthQUM5QjtZQUNELElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLElBQUksWUFBWSxHQUFHLEVBQUU7Z0JBQ3JELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQzthQUMxQjtZQUNELElBQUksT0FBTyxHQUFHLEtBQUssV0FBVyxJQUFJLElBQUksWUFBWSxHQUFHLEVBQUU7Z0JBQ3JELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQzthQUMxQjtZQUNELElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksWUFBWSxJQUFJLEVBQUU7Z0JBQ3ZELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQzthQUMzQjtZQUNELE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQztRQUU5QjtZQUNFLE9BQU8sYUFBYSxDQUFDLE9BQU8sQ0FBQztLQUNoQztDQUNGLEFBQUM7QUMvSkssTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUt6QixHQUFlO0lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQSxFQUFFLElBQUksQ0FBQSxFQUFFLFNBQVMsQ0FBQSxFQUFFLFNBQVMsQ0FBQSxFQUFFLEdBQUcsTUFBTSxBQUFDO0lBQ3BELE1BQU0sUUFBUSxHQUFHO1dBQUksSUFBSTtXQUFNLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRTtLQUFFLEFBQUM7SUFDdEQsTUFBTSxTQUFTLEdBQUc7UUFDaEIsR0FBRyxTQUFTO1FBQ1osSUFBSSxFQUFFLFFBQVE7S0FDZixBQUFDO0lBRUYsSUFBSSxZQUFZLEdBQUcsRUFBRSxBQUFDO0lBQ3RCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FDbkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDbEIsS0FBSyxFQUFFLENBQ1AsT0FBTyxFQUFFLEFBQWlCLEFBQUM7SUFDOUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUU7UUFDdEIsWUFBWSxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUU7WUFBRSxJQUFJO1lBQUUsWUFBWSxFQUFFLFlBQVk7U0FBRSxDQUFDLENBQUMsT0FBTyxDQUFDO0tBQzdFO0lBRUQsT0FBTztRQUNMLEdBQUcsU0FBUztRQUNaLElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPLElBQUksWUFBWTtLQUMzQyxDQUFDO0NBQ0gsQUFBQztBQ2JLLE1BQU0sWUFBWSxHQUFHLEtBQUssV0FBVyxDQUFDO0lBQzNDLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsUUFBUTtJQUNSLGVBQWU7SUFDZiw2QkFBNkI7SUFDN0Isb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFNBQVM7SUFDVCw0QkFBNEI7SUFDNUIsaUJBQWlCO0NBQ2xCLENBQUMsQUFBQztBQTJZSSxTQUFTLFdBQVcsR0FBRztJQUM1QixPQUFPLGdCQUFnQixDQUFDO0NBQ3pCO0FEN1BNLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFTLEVBQUUsS0FBVSxHQUFVO0lBQ25FLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0tBQ3pCO0lBQ0QsT0FBTyxLQUFLLENBQUM7Q0FDZCxBQUFDO0FDWEssTUFBTSxRQUFRLFNBQWtCLEtBQUs7SUFDMUMsTUFBTSxHQUFlLEVBQUUsQ0FBQztJQUV4QixJQUFJLE1BQU0sR0FBRztRQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUNwQjtJQUVELFlBQVksTUFBa0IsQ0FBRTtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQUVSLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEFBQUM7UUFDekMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFO1lBRXpCLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzFDLE1BQU07WUFDTCxBQUFDLElBQUksQ0FBUyxTQUFTLEdBQUcsV0FBVyxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7S0FDdEI7SUFJRCxNQUFNLENBQUMsT0FBYSxFQUFFO1FBQ3BCLE1BQU0sTUFBTSxHQUNWLE9BQU8sSUFDUCxTQUFVLEtBQWUsRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEIsQUFBQztRQUNKLE1BQU0sV0FBVyxHQUF5QjtZQUFFLE9BQU8sRUFBRSxFQUFFO1NBQUUsQUFBTyxBQUFDO1FBQ2pFLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBZSxHQUFLO1lBQ3hDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBRTtnQkFDaEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtvQkFDbEMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLHFCQUFxQixFQUFFO29CQUMvQyxZQUFZLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2lCQUNyQyxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBbUIsRUFBRTtvQkFDN0MsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDbEMsQUFBQyxXQUFXLENBQVMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbEQsTUFBTTtvQkFDTCxJQUFJLElBQUksR0FBUSxXQUFXLEFBQUM7b0JBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsQUFBQztvQkFDVixNQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTt3QkFDNUIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQUFBQzt3QkFDekIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQUFBQzt3QkFFN0MsSUFBSSxDQUFDLFFBQVEsRUFBRTs0QkFDYixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJO2dDQUFFLE9BQU8sRUFBRSxFQUFFOzZCQUFFLENBQUM7eUJBUXhDLE1BQU07NEJBQ0wsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSTtnQ0FBRSxPQUFPLEVBQUUsRUFBRTs2QkFBRSxDQUFDOzRCQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzt5QkFDdEM7d0JBRUQsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDaEIsQ0FBQyxFQUFFLENBQUM7cUJBQ0w7aUJBQ0Y7YUFDRjtTQUNGLEFBQUM7UUFFRixZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsT0FBTyxXQUFXLENBQUM7S0FDcEI7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUFDLE1BQWtCLEdBQUs7UUFDdEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEFBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7S0FDZCxDQUFDO0lBRUYsUUFBUSxHQUFHO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQ3JCO0lBQ0QsSUFBSSxPQUFPLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0seUJBQXlCLENBQUMsQ0FBQyxDQUFDO0tBQzlEO0lBRUQsSUFBSSxPQUFPLEdBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7S0FDakM7SUFFRCxRQUFRLEdBQUcsQ0FBQyxHQUFhLEdBQUs7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRztlQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsR0FBRztTQUFDLENBQUM7S0FDckMsQ0FBQztJQUVGLFNBQVMsR0FBRyxDQUFDLElBQWdCLEdBQUcsRUFBRSxHQUFLO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUc7ZUFBSSxJQUFJLENBQUMsTUFBTTtlQUFLLElBQUk7U0FBQyxDQUFDO0tBQ3pDLENBQUM7SUFJRixPQUFPLENBQ0wsTUFBOEIsR0FBRyxDQUFDLEtBQWUsR0FBSyxLQUFLLENBQUMsT0FBTyxBQUFPLEVBQ3JFO1FBQ0wsTUFBTSxXQUFXLEdBQVEsRUFBRSxBQUFDO1FBQzVCLE1BQU0sVUFBVSxHQUFRLEVBQUUsQUFBQztRQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUU7WUFDN0IsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3ZCLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFELFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzVDLE1BQU07Z0JBQ0wsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM5QjtTQUNGO1FBQ0QsT0FBTztZQUFFLFVBQVU7WUFBRSxXQUFXO1NBQUUsQ0FBQztLQUNwQztJQUVELElBQUksVUFBVSxHQUFHO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDdkI7Q0FDRjtBQWtCTSxNQUFNLGVBQWUsR0FBRyxDQUM3QixLQUE4QixFQUM5QixJQUFpQixHQUNPO0lBQ3hCLElBQUksT0FBTyxBQUFRLEFBQUM7SUFDcEIsT0FBUSxLQUFLLENBQUMsSUFBSTtRQUNoQixLQUFLLFlBQVksQ0FBQyxZQUFZO1lBQzVCLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxjQUFjLFNBQVMsRUFBRTtnQkFDOUMsT0FBTyxHQUFHLFVBQVUsQ0FBQzthQUN0QixNQUFNO2dCQUNMLE9BQU8sR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNwRTtZQUNELE1BQU07UUFDUixLQUFLLFlBQVksQ0FBQyxlQUFlO1lBQy9CLE9BQU8sR0FBRyxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3pELEtBQUssQ0FBQyxRQUFRLHdCQUVmLENBQUMsQ0FBQyxDQUFDO1lBQ0osTUFBTTtRQUNSLEtBQUssWUFBWSxDQUFDLGlCQUFpQjtZQUNqQyxPQUFPLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxLQUFLLFVBQVUsQ0FDekQsS0FBSyxDQUFDLElBQUksRUFDVixJQUFJLENBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSixNQUFNO1FBQ1IsS0FBSyxZQUFZLENBQUMsYUFBYTtZQUM3QixPQUFPLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxQixNQUFNO1FBQ1IsS0FBSyxZQUFZLENBQUMsMkJBQTJCO1lBQzNDLE9BQU8sR0FBRyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssVUFBVSxDQUNoRSxLQUFLLENBQUMsT0FBTyxDQUNkLENBQUMsQ0FBQyxDQUFDO1lBQ0osTUFBTTtRQUNSLEtBQUssWUFBWSxDQUFDLGtCQUFrQjtZQUNsQyxPQUFPLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLFVBQVUsQ0FDdkQsS0FBSyxDQUFDLE9BQU8sQ0FDZCxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU07UUFDUixLQUFLLFlBQVksQ0FBQyxpQkFBaUI7WUFDakMsT0FBTyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUN2QyxNQUFNO1FBQ1IsS0FBSyxZQUFZLENBQUMsbUJBQW1CO1lBQ25DLE9BQU8sR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDekMsTUFBTTtRQUNSLEtBQUssWUFBWSxDQUFDLFlBQVk7WUFDNUIsT0FBTyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekIsTUFBTTtRQUNSLEtBQUssWUFBWSxDQUFDLGNBQWM7WUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO2dCQUN4QyxJQUFJLFlBQVksSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO29CQUNwQyxPQUFPLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDN0UsTUFBTSxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO29CQUN6QyxPQUFPLEdBQUcsQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDekUsTUFBTTtvQkFDTCxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3BDO2FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssT0FBTyxFQUFFO2dCQUN2QyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDekMsTUFBTTtnQkFDTCxPQUFPLEdBQUcsU0FBUyxDQUFDO2FBQ3JCO1lBQ0QsTUFBTTtRQUNSLEtBQUssWUFBWSxDQUFDLFNBQVM7WUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFDeEIsT0FBTyxHQUFHLENBQUMsbUJBQW1CLEVBQzVCLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUMzQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFDOUIsT0FBTyxHQUFHLENBQUMsb0JBQW9CLEVBQzdCLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUN0QyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDOUIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFDOUIsT0FBTyxHQUFHLENBQUMsNEJBQTRCLEVBQ3JDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdEMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztpQkFDaEIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFDNUIsT0FBTyxHQUFHLENBQUMsMEJBQTBCLEVBQ25DLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdEMsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxQixPQUFPLEdBQUcsZUFBZSxDQUFDO1lBQy9CLE1BQU07UUFDUixLQUFLLFlBQVksQ0FBQyxPQUFPO1lBQ3ZCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQ3hCLE9BQU8sR0FBRyxDQUFDLG1CQUFtQixFQUM1QixLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FDMUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzVCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQzlCLE9BQU8sR0FBRyxDQUFDLG9CQUFvQixFQUM3QixLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FDdEMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQzlCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQzlCLE9BQU8sR0FBRyxDQUFDLHlCQUF5QixFQUNsQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3RDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ2hCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQzVCLE9BQU8sR0FBRyxDQUFDLDBCQUEwQixFQUNuQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3RDLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDMUIsT0FBTyxHQUFHLGVBQWUsQ0FBQztZQUMvQixNQUFNO1FBQ1IsS0FBSyxZQUFZLENBQUMsTUFBTTtZQUN0QixPQUFPLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxQixNQUFNO1FBQ1IsS0FBSyxZQUFZLENBQUMsMEJBQTBCO1lBQzFDLE9BQU8sR0FBRyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDckQsTUFBTTtRQUNSLEtBQUssWUFBWSxDQUFDLGVBQWU7WUFDL0IsT0FBTyxHQUFHLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsTUFBTTtRQUNSO1lBQ0UsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDNUIsS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDM0I7SUFDRCxPQUFPO1FBQUUsT0FBTztLQUFFLENBQUM7Q0FDcEIsQUFBQztBRHZXSyxTQUFTLGlCQUFpQixDQUMvQixHQUFpQixFQUNqQixTQUFvQixFQUNkO0lBQ04sTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLFNBQVMsRUFBRTtZQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCO1lBQzdCLEdBQUcsQ0FBQyxjQUFjO1lBQ2xCLGFBQWE7O1NBRWQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyQixDQUFDLEFBQUM7SUFDSCxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FDL0I7QUFNTSxNQUFNLFdBQVc7SUFDdEIsS0FBSyxHQUFrQyxPQUFPLENBQUM7SUFDL0MsS0FBSyxHQUFHO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztLQUNsRDtJQUNELEtBQUssR0FBRztRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7S0FDdEQ7SUFFRCxPQUFPLFVBQVUsQ0FDZixNQUFtQixFQUNuQixPQUFtQyxFQUNkO1FBQ3JCLE1BQU0sVUFBVSxHQUFVLEVBQUUsQUFBQztRQUM3QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBRTtZQUN2QixJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLE9BQU8sT0FBTyxDQUFDO1lBQzNDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO1FBRUQsT0FBTztZQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztZQUFFLEtBQUssRUFBRSxVQUFVO1NBQUUsQ0FBQztLQUNwRDtJQUVELGFBQWEsZ0JBQWdCLENBQzNCLE1BQW1CLEVBQ25CLEtBQW1FLEVBQ2hDO1FBQ25DLE1BQU0sU0FBUyxHQUFpQixFQUFFLEFBQUM7UUFDbkMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUU7WUFDeEIsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixHQUFHLEVBQUUsTUFBTSxJQUFJLENBQUMsR0FBRztnQkFDbkIsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLEtBQUs7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsT0FBTyxlQUFlLENBQ3BCLE1BQW1CLEVBQ25CLEtBSUcsRUFDa0I7UUFDckIsTUFBTSxXQUFXLEdBQVEsRUFBRSxBQUFDO1FBQzVCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFHLENBQUEsRUFBRSxLQUFLLENBQUEsRUFBRSxHQUFHLElBQUksQUFBQztZQUM1QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLE9BQU8sT0FBTyxDQUFDO1lBQzdDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsT0FBTyxPQUFPLENBQUM7WUFDL0MsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0MsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFN0MsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3hELFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUN0QztTQUNGO1FBRUQsT0FBTztZQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztZQUFFLEtBQUssRUFBRSxXQUFXO1NBQUUsQ0FBQztLQUNyRDtDQUNGO0FBT00sTUFBTSxPQUFPLEdBQVksTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM1QyxNQUFNLEVBQUUsU0FBUztDQUNsQixDQUFDLEFBQUM7QUFNSSxNQUFNLEVBQUUsR0FBRyxDQUFJLEtBQVEsR0FBWSxDQUFDO1FBQUUsTUFBTSxFQUFFLE9BQU87UUFBRSxLQUFLO0tBQUUsQ0FBQyxBQUFDO0FBUWhFLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBdUIsR0FDL0MsQUFBQyxDQUFDLENBQVMsTUFBTSxLQUFLLFNBQVMsQUFBQztBQUMzQixNQUFNLE9BQU8sR0FBRyxDQUFJLENBQXFCLEdBQzlDLEFBQUMsQ0FBQyxDQUFTLE1BQU0sS0FBSyxPQUFPLEFBQUM7QUFDekIsTUFBTSxPQUFPLEdBQUcsQ0FBSSxDQUFxQixHQUM5QyxBQUFDLENBQUMsQ0FBUyxNQUFNLEtBQUssT0FBTyxBQUFDO0FBQ3pCLE1BQU0sT0FBTyxHQUFHLENBQ3JCLENBQXFCLEdBRXJCLE9BQU8sT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLFlBQVksT0FBTyxBQUFDO0FDdVB2RCxJQUFJLGdCQUFnQixHQUFHLGVBQWUsQUFBQztBQ3ZhaEMsSUFBVSxTQUFTLEFBTXpCOztjQUpjLFFBQVEsR0FBRyxDQUFDLE9BQW9CLEdBQzNDLE9BQU8sT0FBTyxLQUFLLFFBQVEsR0FBRztZQUFFLE9BQU87U0FBRSxHQUFHLE9BQU8sSUFBSSxFQUFFO2NBQzlDLFFBQVEsR0FBRyxDQUFDLE9BQW9CLEdBQzNDLE9BQU8sT0FBTyxLQUFLLFFBQVEsR0FBRyxPQUFPLEdBQUcsT0FBTyxFQUFFLE9BQU87R0FMM0MsU0FBUyxLQUFULFNBQVM7QUM2RDFCLE1BQU0sa0JBQWtCO0lBQ3RCLE1BQU0sQ0FBZTtJQUNyQixJQUFJLENBQU07SUFDVixLQUFLLENBQVk7SUFDakIsSUFBSSxDQUF3QztJQUM1QyxZQUNFLE1BQW9CLEVBQ3BCLEtBQVUsRUFDVixJQUFlLEVBQ2YsR0FBMEMsQ0FDMUM7UUFDQSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztLQUNqQjtJQUNELElBQUksSUFBSSxHQUFHO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDckM7Q0FDRjtBQUVELE1BQU0sWUFBWSxHQUFHLENBQ25CLEdBQWlCLEVBQ2pCLE1BQW1DLEdBR2E7SUFDaEQsSUFBSSxRQUFRLE1BQU0sQ0FBQyxFQUFFO1FBQ25CLE9BQU87WUFBRSxPQUFPLEVBQUUsSUFBSTtZQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSztTQUFFLENBQUM7S0FDOUMsTUFBTTtRQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsTUFBTSxLQUFLLEdBQUcsYUFBYSxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxBQUFDO1FBQzlDLE9BQU87WUFBRSxPQUFPLEVBQUUsS0FBSztZQUFFLEtBQUs7U0FBRSxDQUFDO0tBQ2xDO0NBQ0YsQUFBQztBQVdGLFNBQVMsbUJBQW1CLENBQUMsTUFBdUIsRUFBeUI7SUFDM0UsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN2QixNQUFNLEVBQUUsUUFBUSxDQUFBLEVBQUUsa0JBQWtCLENBQUEsRUFBRSxjQUFjLENBQUEsRUFBRSxXQUFXLENBQUEsRUFBRSxHQUFHLE1BQU0sQUFBQztJQUM3RSxJQUFJLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixJQUFJLGNBQWMsQ0FBQyxFQUFFO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQ2IsQ0FBQyx1RUFBdUUsQ0FBQyxDQUMxRSxDQUFDO0tBQ0g7SUFDRCxJQUFJLFFBQVEsRUFBRSxPQUFPO1FBQUUsUUFBUSxFQUFFLFFBQVE7UUFBRSxXQUFXO0tBQUUsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFLO1FBQzNDLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUUsT0FBTztZQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsWUFBWTtTQUFFLENBQUM7UUFDdEUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ25DLE9BQU87Z0JBQUUsT0FBTyxFQUFFLGNBQWMsSUFBSSxHQUFHLENBQUMsWUFBWTthQUFFLENBQUM7U0FDeEQ7UUFDRCxPQUFPO1lBQUUsT0FBTyxFQUFFLGtCQUFrQixJQUFJLEdBQUcsQ0FBQyxZQUFZO1NBQUUsQ0FBQztLQUM1RCxBQUFDO0lBQ0YsT0FBTztRQUFFLFFBQVEsRUFBRSxTQUFTO1FBQUUsV0FBVztLQUFFLENBQUM7Q0FDN0M7QUFTTSxNQUFlLE9BQU87SUFLM0IsQUFBUyxLQUFLLENBQVU7SUFDeEIsQUFBUyxPQUFPLENBQVU7SUFDMUIsQUFBUyxNQUFNLENBQVM7SUFDeEIsQUFBUyxJQUFJLENBQU87SUFFcEIsSUFBSSxXQUFXLEdBQUc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztLQUM5QjtJQUlELFFBQVEsQ0FBQyxLQUFpQixFQUFVO1FBQ2xDLE9BQU8sY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDbEM7SUFFRCxlQUFlLENBQ2IsS0FBaUIsRUFDakIsR0FBOEIsRUFDaEI7UUFDZCxPQUNFLEdBQUcsSUFBSTtZQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDM0IsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBRWhCLFVBQVUsRUFBRSxjQUFjLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFFckMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUNsQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1NBQ3JCLENBQ0Q7S0FDSDtJQUVELG1CQUFtQixDQUFDLEtBQWlCLEVBR25DO1FBQ0EsT0FBTztZQUNMLE1BQU0sRUFBRSxpQkFBaUI7WUFDekIsR0FBRyxFQUFFO2dCQUNILE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU07Z0JBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFFaEIsVUFBVSxFQUFFLGNBQWMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFFckMsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07YUFDckI7U0FDRixDQUFDO0tBQ0g7SUFFRCxVQUFVLENBQUMsS0FBaUIsRUFBK0I7UUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQUFBQztRQUNsQyxJQUFJLFFBQVEsTUFBTSxDQUFDLEVBQUU7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzNEO1FBQ0QsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELFdBQVcsQ0FBQyxLQUFpQixFQUFnQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxBQUFDO1FBRWxDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNoQztJQUVELEtBQUssQ0FBQyxJQUFhLEVBQUUsTUFBNkIsRUFBVTtRQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQUFBQztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztLQUNwQjtJQUVELFNBQVMsQ0FDUCxJQUFhLEVBQ2IsTUFBNkIsRUFDTztRQUNwQyxNQUFNLEdBQUcsR0FBaUI7WUFDeEIsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxFQUFFO2dCQUNWLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLEtBQUs7Z0JBQzdCLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxRQUFRO2FBQ3JDO1lBQ0QsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRTtZQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ2xDLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSTtZQUNKLFVBQVUsRUFBRSxjQUFjLElBQUksQ0FBQztTQUNoQyxBQUFDO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLElBQUk7WUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFBRSxNQUFNLEVBQUUsR0FBRztTQUFFLENBQUMsQUFBQztRQUV0RSxPQUFPLFlBQVksQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDbEM7SUFFRCxNQUFNLFVBQVUsQ0FDZCxJQUFhLEVBQ2IsTUFBNkIsRUFDWjtRQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxBQUFDO1FBQ3ZELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDdkMsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDO0tBQ3BCO0lBRUQsTUFBTSxjQUFjLENBQ2xCLElBQWEsRUFDYixNQUE2QixFQUNnQjtRQUM3QyxNQUFNLEdBQUcsR0FBaUI7WUFDeEIsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxFQUFFO2dCQUNWLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxRQUFRO2dCQUNwQyxLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0QsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRTtZQUN4QixjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ2xDLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSTtZQUNKLFVBQVUsRUFBRSxjQUFjLElBQUksQ0FBQztTQUNoQyxBQUFDO1FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQUUsSUFBSTtZQUFFLElBQUksRUFBRSxFQUFFO1lBQUUsTUFBTSxFQUFFLEdBQUc7U0FBRSxDQUFDLEFBQUM7UUFDdEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsZ0JBQWdCLENBQUMsR0FDM0MsZ0JBQWdCLEdBQ2hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxBQUFDO1FBQ3ZDLE9BQU8sWUFBWSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNsQztJQUdELEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBVTFCLE1BQU0sQ0FDSixLQUErQixFQUMvQixPQUEyRSxFQUMxQztRQUNqQyxNQUFNLGtCQUFrQixHQUFRLENBQUMsR0FBVyxHQUFLO1lBQy9DLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsRUFBRTtnQkFDakUsT0FBTztvQkFBRSxPQUFPO2lCQUFFLENBQUM7YUFDcEIsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRTtnQkFDeEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckIsTUFBTTtnQkFDTCxPQUFPLE9BQU8sQ0FBQzthQUNoQjtTQUNGLEFBQUM7UUFDRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFLO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQUFBQztZQUMxQixNQUFNLFFBQVEsR0FBRyxJQUNmLEdBQUcsQ0FBQyxRQUFRLENBQUM7b0JBQ1gsSUFBSSxFQUFFLGFBQWEsTUFBTTtvQkFDekIsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7aUJBQzNCLENBQUMsQUFBQztZQUNMLElBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxJQUFJLE1BQU0sWUFBWSxPQUFPLEVBQUU7Z0JBQy9ELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBSztvQkFDM0IsSUFBSSxDQUFDLElBQUksRUFBRTt3QkFDVCxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxPQUFPLEtBQUssQ0FBQztxQkFDZCxNQUFNO3dCQUNMLE9BQU8sSUFBSSxDQUFDO3FCQUNiO2lCQUNGLENBQUMsQ0FBQzthQUNKO1lBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxRQUFRLEVBQUUsQ0FBQztnQkFDWCxPQUFPLEtBQUssQ0FBQzthQUNkLE1BQU07Z0JBQ0wsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGLENBQUMsQ0FBQztLQUNKO0lBVUQsVUFBVSxDQUNSLEtBQStCLEVBQy9CLGNBQTRFLEVBQzNDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUs7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDZixHQUFHLENBQUMsUUFBUSxDQUNWLE9BQU8sY0FBYyxLQUFLLFVBQVUsR0FDaEMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FDeEIsY0FBYyxDQUNuQixDQUFDO2dCQUNGLE9BQU8sS0FBSyxDQUFDO2FBQ2QsTUFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQzthQUNiO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxXQUFXLENBQ1QsVUFBa0QsRUFDakI7UUFDakMsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixNQUFNLEVBQUUsSUFBSTtZQUNaLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO1lBQzFDLE1BQU0sRUFBRTtnQkFBRSxJQUFJLEVBQUUsWUFBWTtnQkFBRSxVQUFVO2FBQUU7U0FDM0MsQ0FBQyxDQUFDO0tBQ0o7SUFDRCxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUUvQixZQUFZLEdBQVEsQ0FBRTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUM7SUFFRCxRQUFRLEdBQXNCO1FBQzVCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBUTtLQUN4QztJQUNELFFBQVEsR0FBc0I7UUFDNUIsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFRO0tBQ3hDO0lBQ0QsT0FBTyxHQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUNuQztJQUNELEtBQUssR0FBbUI7UUFDdEIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCO0lBQ0QsT0FBTyxHQUFxQjtRQUMxQixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDaEM7SUFFRCxFQUFFLENBQXVCLE1BQVMsRUFBdUI7UUFDdkQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQUMsSUFBSTtZQUFFLE1BQU07U0FBQyxDQUFDLENBQVE7S0FDL0M7SUFFRCxHQUFHLENBQXVCLFFBQVcsRUFBNEI7UUFDL0QsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztLQUMvQztJQUVELFNBQVMsQ0FDUCxTQUF3RSxFQUM5QztRQUMxQixPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLHFCQUFxQixDQUFDLFVBQVU7WUFDMUMsTUFBTSxFQUFFO2dCQUFFLElBQUksRUFBRSxXQUFXO2dCQUFFLFNBQVM7YUFBRTtTQUN6QyxDQUFDLENBQVE7S0FDWDtJQUlELE9BQU8sQ0FBQyxHQUFRLEVBQUU7UUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEdBQUcsS0FBSyxVQUFVLEdBQUcsR0FBRyxHQUFHLElBQU0sR0FBRyxBQUFDO1FBRXJFLE9BQU8sSUFBSSxVQUFVLENBQUM7WUFDcEIsU0FBUyxFQUFFLElBQUk7WUFDZixZQUFZLEVBQUUsZ0JBQWdCO1lBQzlCLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO1NBQzNDLENBQUMsQ0FBUTtLQUNYO0lBRUQsUUFBUSxDQUFDLFdBQW1CLEVBQVE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsQUFBQyxJQUFJLENBQVMsV0FBVyxBQUFDO1FBQ3ZDLE9BQU8sSUFBSSxJQUFJLENBQUM7WUFDZCxHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osV0FBVztTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQsVUFBVSxHQUFZO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDMUM7SUFDRCxVQUFVLEdBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztLQUNyQztDQUNGO0FBMEJELE1BQU0sU0FBUyxtQkFBbUIsQUFBQztBQUNuQyxNQUFNLFNBQVMsZ0hBQ2dHLEFBQUM7QUFLaEgsTUFBTSxVQUFVLHlIQUN3RyxBQUFDO0FBRWxILE1BQU0sU0FBUyxTQUFTLE9BQU87SUFDcEMsTUFBTSxDQUFDLEtBQWlCLEVBQTJCO1FBQ2pELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFFeEMsSUFBSSxVQUFVLEtBQUssY0FBYyxNQUFNLEVBQUU7WUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUN4QyxrQkFDRSxHQUFHLEVBQ0g7Z0JBQ0UsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsTUFBTTtnQkFDOUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBRUYsQ0FBQztZQUNGLGVBQWU7U0FDaEI7UUFFRCxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQUFBQztRQUNqQyxJQUFJLElBQUcsR0FBNkIsU0FBUyxBQUFDO1FBRTlDLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUU7WUFDcEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDeEIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFO29CQUNuQyxJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxhQUFhLFNBQVM7d0JBQzVCLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDcEIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3FCQUN2QixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjthQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFO29CQUNuQyxJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxhQUFhLE9BQU87d0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDcEIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3FCQUN2QixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjthQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNoQyxJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLFVBQVUsRUFBRSxPQUFPO3dCQUNuQixJQUFJLEVBQUUsYUFBYSxjQUFjO3dCQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQy9CLElBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFHLENBQUMsQ0FBQztvQkFDdkMsa0JBQWtCLElBQUcsRUFBRTt3QkFDckIsVUFBVSxFQUFFLE1BQU07d0JBQ2xCLElBQUksRUFBRSxhQUFhLGNBQWM7d0JBQ2pDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztxQkFDdkIsQ0FBQyxDQUFDO29CQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDaEI7YUFDRixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsSUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUcsQ0FBQyxDQUFDO29CQUN2QyxrQkFBa0IsSUFBRyxFQUFFO3dCQUNyQixVQUFVLEVBQUUsTUFBTTt3QkFDbEIsSUFBSSxFQUFFLGFBQWEsY0FBYzt3QkFDakMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3FCQUN2QixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjthQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDL0IsSUFBSTtvQkFDRixJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3JCLENBQUMsT0FBTTtvQkFDTixJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLFVBQVUsRUFBRSxLQUFLO3dCQUNqQixJQUFJLEVBQUUsYUFBYSxjQUFjO3dCQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUNqQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQzFCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQUFBQztnQkFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDZixJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLFVBQVUsRUFBRSxPQUFPO3dCQUNuQixJQUFJLEVBQUUsYUFBYSxjQUFjO3dCQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNoQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsQUFBQyxLQUFLLENBQUMsSUFBSSxDQUFZLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ25ELElBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFHLENBQUMsQ0FBQztvQkFDdkMsa0JBQWtCLElBQUcsRUFBRTt3QkFDckIsSUFBSSxFQUFFLGFBQWEsY0FBYzt3QkFDakMsVUFBVSxFQUFFOzRCQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsS0FBSzt5QkFBRTt3QkFDdkMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3FCQUN2QixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjthQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLEFBQUMsS0FBSyxDQUFDLElBQUksQ0FBWSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNqRCxJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxhQUFhLGNBQWM7d0JBQ2pDLFVBQVUsRUFBRTs0QkFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUs7eUJBQUU7d0JBQ3JDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztxQkFDdkIsQ0FBQyxDQUFDO29CQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDaEI7YUFDRixNQUFNO2dCQUNMLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pCO1NBQ0Y7UUFFRCxPQUFPO1lBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQUUsQ0FBQztLQUNwRDtJQUVELEFBQVUsTUFBTSxHQUFHLENBQ2pCLEtBQWEsRUFDYixVQUE0QixFQUM1QixPQUE4QixHQUU5QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxHQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsVUFBVTtZQUNWLElBQUksRUFBRSxhQUFhLGNBQWM7WUFDakMsR0FBRyxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0lBRUwsU0FBUyxDQUFDLEtBQXFCLEVBQUU7UUFDL0IsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osTUFBTSxFQUFFO21CQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxLQUFLO2FBQUM7U0FDckMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxLQUFLLENBQUMsT0FBOEIsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFBRSxJQUFJLEVBQUUsT0FBTztZQUFFLEdBQUcsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQUUsQ0FBQyxDQUFDO0tBQzFFO0lBQ0QsR0FBRyxDQUFDLE9BQThCLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQUUsSUFBSSxFQUFFLEtBQUs7WUFBRSxHQUFHLFVBQVUsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUFFLENBQUMsQ0FBQztLQUN4RTtJQUNELElBQUksQ0FBQyxPQUE4QixFQUFFO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUFFLElBQUksRUFBRSxNQUFNO1lBQUUsR0FBRyxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FBRSxDQUFDLENBQUM7S0FDekU7SUFDRCxJQUFJLENBQUMsT0FBOEIsRUFBRTtRQUNuQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFBRSxJQUFJLEVBQUUsTUFBTTtZQUFFLEdBQUcsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQUUsQ0FBQyxDQUFDO0tBQ3pFO0lBQ0QsS0FBSyxDQUFDLEtBQWEsRUFBRSxPQUE4QixFQUFFO1FBQ25ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSxLQUFLO1lBQ1osR0FBRyxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLE9BQThCLEVBQUU7UUFDeEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUssRUFBRSxLQUFLO1lBQ1osR0FBRyxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxRQUFRLENBQUMsS0FBYSxFQUFFLE9BQThCLEVBQUU7UUFDdEQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSxLQUFLO1lBQ1osR0FBRyxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxHQUFHLENBQUMsU0FBaUIsRUFBRSxPQUE4QixFQUFFO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsS0FBSztZQUNYLEtBQUssRUFBRSxTQUFTO1lBQ2hCLEdBQUcsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKO0lBRUQsR0FBRyxDQUFDLFNBQWlCLEVBQUUsT0FBOEIsRUFBRTtRQUNyRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsU0FBUztZQUNoQixHQUFHLFVBQVUsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSjtJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsT0FBOEIsRUFBRTtRQUNsRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDakQ7SUFNRCxRQUFRLEdBQUcsQ0FBQyxPQUE4QixHQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTNDLElBQUksR0FBRyxJQUNMLElBQUksU0FBUyxDQUFDO1lBQ1osR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLE1BQU0sRUFBRTttQkFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQUU7b0JBQUUsSUFBSSxFQUFFLE1BQU07aUJBQUU7YUFBQztTQUNoRCxDQUFDLENBQUM7SUFFTCxJQUFJLE9BQU8sR0FBRztRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBSyxFQUFFLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxDQUFDO0tBQzdEO0lBQ0QsSUFBSSxLQUFLLEdBQUc7UUFDVixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUssRUFBRSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztLQUMzRDtJQUNELElBQUksTUFBTSxHQUFHO1FBQ1gsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFLLEVBQUUsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7S0FDNUQ7SUFDRCxJQUFJLE1BQU0sR0FBRztRQUNYLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBSyxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0tBQzVEO0lBQ0QsSUFBSSxTQUFTLEdBQUc7UUFDZCxJQUFJLEdBQUcsR0FBa0IsSUFBSSxBQUFDO1FBQzlCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUU7WUFDakMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDckIsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ3BEO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsSUFBSSxTQUFTLEdBQUc7UUFDZCxJQUFJLEdBQUcsR0FBa0IsSUFBSSxBQUFDO1FBQzlCLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUU7WUFDakMsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDckIsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2FBQ3BEO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFnQjtRQUN2RCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLE1BQU0sRUFBRSxFQUFFO1lBQ1YsUUFBUSxFQUFFLHFCQUFxQixDQUFDLFNBQVM7WUFDekMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBZ0JELFNBQVMsa0JBQWtCLENBQUMsR0FBVyxFQUFFLElBQVksRUFBRTtJQUNyRCxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxBQUFDO0lBQ2hFLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEFBQUM7SUFDbEUsTUFBTSxRQUFRLEdBQUcsV0FBVyxHQUFHLFlBQVksR0FBRyxXQUFXLEdBQUcsWUFBWSxBQUFDO0lBQ3pFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQUFBQztJQUNoRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEFBQUM7SUFDbEUsT0FBTyxBQUFDLE1BQU0sR0FBRyxPQUFPLEdBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7Q0FDcEQ7QUFPTSxNQUFNLFNBQVMsU0FBUyxPQUFPO0lBQ3BDLE1BQU0sQ0FBQyxLQUFpQixFQUEyQjtRQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxBQUFDO1FBQ3hDLElBQUksVUFBVSxLQUFLLGNBQWMsTUFBTSxFQUFFO1lBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsTUFBTTtnQkFDOUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxJQUFJLElBQUcsR0FBNkIsU0FBUyxBQUFDO1FBQzlDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixBQUFDO1FBRWpDLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUU7WUFDcEMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtnQkFDeEIsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDL0IsSUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUcsQ0FBQyxDQUFDO29CQUN2QyxrQkFBa0IsSUFBRyxFQUFFO3dCQUNyQixJQUFJLEVBQUUsYUFBYSxZQUFZO3dCQUMvQixRQUFRLEVBQUUsU0FBUzt3QkFDbkIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztxQkFDdkIsQ0FBQyxDQUFDO29CQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDaEI7YUFDRixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQy9CLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQzVCLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssR0FDeEIsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsS0FBSyxBQUFDO2dCQUM5QixJQUFJLFFBQVEsRUFBRTtvQkFDWixJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxhQUFhLFNBQVM7d0JBQzVCLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDcEIsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO3dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUMvQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxHQUMxQixLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQ3hCLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssQUFBQztnQkFDOUIsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsSUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUcsQ0FBQyxDQUFDO29CQUN2QyxrQkFBa0IsSUFBRyxFQUFFO3dCQUNyQixJQUFJLEVBQUUsYUFBYSxPQUFPO3dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUs7d0JBQ3BCLElBQUksRUFBRSxRQUFRO3dCQUNkLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUzt3QkFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO3FCQUN2QixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjthQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRTtnQkFDdEMsSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQ3JELElBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFHLENBQUMsQ0FBQztvQkFDdkMsa0JBQWtCLElBQUcsRUFBRTt3QkFDckIsSUFBSSxFQUFFLGFBQWEsZUFBZTt3QkFDbEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxLQUFLO3dCQUN2QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87cUJBQ3ZCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2FBQ0YsTUFBTTtnQkFDTCxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QjtTQUNGO1FBRUQsT0FBTztZQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztZQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtTQUFFLENBQUM7S0FDcEQ7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUFDLE1BQXdCLEdBQWdCO1FBQ3ZELE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUUscUJBQXFCLENBQUMsU0FBUztZQUN6QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSixDQUFDO0lBRUYsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUE4QixFQUFFO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ3ZFO0lBQ0QsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFFZixFQUFFLENBQUMsS0FBYSxFQUFFLE9BQThCLEVBQUU7UUFDaEQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDeEU7SUFFRCxHQUFHLENBQUMsS0FBYSxFQUFFLE9BQThCLEVBQUU7UUFDakQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDdkU7SUFDRCxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUVmLEVBQUUsQ0FBQyxLQUFhLEVBQUUsT0FBOEIsRUFBRTtRQUNoRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztLQUN4RTtJQUVELEFBQVUsUUFBUSxDQUNoQixJQUFtQixFQUNuQixLQUFhLEVBQ2IsU0FBa0IsRUFDbEIsT0FBZ0IsRUFDaEI7UUFDQSxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUU7bUJBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO2dCQUNuQjtvQkFDRSxJQUFJO29CQUNKLEtBQUs7b0JBQ0wsU0FBUztvQkFDVCxPQUFPLEVBQUUsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO2lCQUNyQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxTQUFTLENBQUMsS0FBcUIsRUFBRTtRQUMvQixPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUU7bUJBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO2dCQUFFLEtBQUs7YUFBQztTQUNyQyxDQUFDLENBQUM7S0FDSjtJQUVELEdBQUcsQ0FBQyxPQUE4QixFQUFFO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDckMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxRQUFRLENBQUMsT0FBOEIsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDckMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxRQUFRLENBQUMsT0FBOEIsRUFBRTtRQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDckMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxXQUFXLENBQUMsT0FBOEIsRUFBRTtRQUMxQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBRSxJQUFJO1lBQ2YsT0FBTyxFQUFFLFVBQVUsUUFBUSxDQUFDLE9BQU8sQ0FBQztTQUNyQyxDQUFDLENBQUM7S0FDSjtJQUVELFdBQVcsQ0FBQyxPQUE4QixFQUFFO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsS0FBSztZQUNYLEtBQUssRUFBRSxDQUFDO1lBQ1IsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztLQUNKO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxPQUE4QixFQUFFO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDckMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUV2QixJQUFJLFFBQVEsR0FBRztRQUNiLElBQUksR0FBRyxHQUFrQixJQUFJLEFBQUM7UUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNqQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNyQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDcEQ7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxJQUFJLFFBQVEsR0FBRztRQUNiLElBQUksR0FBRyxHQUFrQixJQUFJLEFBQUM7UUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNqQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNyQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDcEQ7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO0tBQ1o7SUFFRCxJQUFJLEtBQUssR0FBRztRQUNWLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBSyxFQUFFLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO0tBQzNEO0NBQ0Y7QUFjTSxNQUFNLFNBQVMsU0FBUyxPQUFPO0lBQ3BDLE1BQU0sQ0FBQyxLQUFpQixFQUEyQjtRQUNqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxBQUFDO1FBQ3hDLElBQUksVUFBVSxLQUFLLGNBQWMsTUFBTSxFQUFFO1lBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsTUFBTTtnQkFDOUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFDRCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFnQjtRQUN2RCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO1lBQ3pDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQWFNLE1BQU0sVUFBVSxTQUFTLE9BQU87SUFDckMsTUFBTSxDQUFDLEtBQWlCLEVBQTRCO1FBQ2xELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEMsSUFBSSxVQUFVLEtBQUssY0FBYyxPQUFPLEVBQUU7WUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUN4QyxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSxZQUFZO2dCQUMvQixRQUFRLEVBQUUsY0FBYyxPQUFPO2dCQUMvQixRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVU7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUFDLE1BQXdCLEdBQWlCO1FBQ3hELE9BQU8sSUFBSSxVQUFVLENBQUM7WUFDcEIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLFVBQVU7WUFDMUMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBaUJNLE1BQU0sT0FBTyxTQUFTLE9BQU87SUFDbEMsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFFeEMsSUFBSSxVQUFVLEtBQUssY0FBYyxJQUFJLEVBQUU7WUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUN4QyxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSxZQUFZO2dCQUMvQixRQUFRLEVBQUUsY0FBYyxJQUFJO2dCQUM1QixRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVU7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUVELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUMvQixNQUFNLElBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxBQUFDO1lBQ3hDLGtCQUFrQixJQUFHLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxhQUFhLFlBQVk7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUVELE1BQU0sTUFBTSxHQUFHLGlCQUFpQixBQUFDO1FBQ2pDLElBQUksSUFBRyxHQUE2QixTQUFTLEFBQUM7UUFFOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNwQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUN4QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRTtvQkFDdEMsSUFBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUcsQ0FBQyxDQUFDO29CQUN2QyxrQkFBa0IsSUFBRyxFQUFFO3dCQUNyQixJQUFJLEVBQUUsYUFBYSxTQUFTO3dCQUM1QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87d0JBQ3RCLFNBQVMsRUFBRSxJQUFJO3dCQUNmLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSzt3QkFDcEIsSUFBSSxFQUFFLE1BQU07cUJBQ2IsQ0FBQyxDQUFDO29CQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDaEI7YUFDRixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7Z0JBQy9CLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFO29CQUN0QyxJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsSUFBRyxDQUFDLENBQUM7b0JBQ3ZDLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxhQUFhLE9BQU87d0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzt3QkFDdEIsU0FBUyxFQUFFLElBQUk7d0JBQ2YsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLO3dCQUNwQixJQUFJLEVBQUUsTUFBTTtxQkFDYixDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjthQUNGLE1BQU07Z0JBQ0wsS0FBSyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDekI7U0FDRjtRQUVELE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDcEIsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEFBQUMsS0FBSyxDQUFDLElBQUksQ0FBVSxPQUFPLEVBQUUsQ0FBQztTQUNoRCxDQUFDO0tBQ0g7SUFFRCxTQUFTLENBQUMsS0FBbUIsRUFBRTtRQUM3QixPQUFPLElBQUksT0FBTyxDQUFDO1lBQ2pCLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixNQUFNLEVBQUU7bUJBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO2dCQUFFLEtBQUs7YUFBQztTQUNyQyxDQUFDLENBQUM7S0FDSjtJQUVELEdBQUcsQ0FBQyxPQUFhLEVBQUUsT0FBOEIsRUFBRTtRQUNqRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN4QixPQUFPLEVBQUUsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztLQUNKO0lBRUQsR0FBRyxDQUFDLE9BQWEsRUFBRSxPQUE4QixFQUFFO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsS0FBSztZQUNYLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDckMsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxJQUFJLE9BQU8sR0FBRztRQUNaLElBQUksR0FBRyxHQUFrQixJQUFJLEFBQUM7UUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNqQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNyQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDcEQ7U0FDRjtRQUVELE9BQU8sR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDM0M7SUFFRCxJQUFJLE9BQU8sR0FBRztRQUNaLElBQUksR0FBRyxHQUFrQixJQUFJLEFBQUM7UUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNqQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO2dCQUNyQixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDcEQ7U0FDRjtRQUVELE9BQU8sR0FBRyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDM0M7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUFDLE1BQXdCLEdBQWM7UUFDckQsT0FBTyxJQUFJLE9BQU8sQ0FBQztZQUNqQixNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO1lBQ3ZDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQWFNLE1BQU0sWUFBWSxTQUFTLE9BQU87SUFDdkMsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEMsSUFBSSxVQUFVLEtBQUssY0FBYyxTQUFTLEVBQUU7WUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUN4QyxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSxZQUFZO2dCQUMvQixRQUFRLEVBQUUsY0FBYyxTQUFTO2dCQUNqQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVU7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7SUFDRCxNQUFNLENBQW1CO0lBRXpCLE9BQU8sTUFBTSxHQUFHLENBQUMsTUFBd0IsR0FBbUI7UUFDMUQsT0FBTyxJQUFJLFlBQVksQ0FBQztZQUN0QixRQUFRLEVBQUUscUJBQXFCLENBQUMsWUFBWTtZQUM1QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSixDQUFDO0NBQ0g7QUFhTSxNQUFNLE9BQU8sU0FBUyxPQUFPO0lBQ2xDLE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxBQUFDO1FBQ3hDLElBQUksVUFBVSxLQUFLLGNBQWMsSUFBSSxFQUFFO1lBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsSUFBSTtnQkFDNUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFDRCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFjO1FBQ3JELE9BQU8sSUFBSSxPQUFPLENBQUM7WUFDakIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE9BQU87WUFDdkMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBYU0sTUFBTSxNQUFNLFNBQVMsT0FBTztJQUVqQyxJQUFJLEdBQVMsSUFBSSxDQUFDO0lBQ2xCLE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBQ0QsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFhO1FBQ3BELE9BQU8sSUFBSSxNQUFNLENBQUM7WUFDaEIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE1BQU07WUFDdEMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBYU0sTUFBTSxVQUFVLFNBQVMsT0FBTztJQUVyQyxRQUFRLEdBQVMsSUFBSSxDQUFDO0lBQ3RCLE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFpQjtRQUN4RCxPQUFPLElBQUksVUFBVSxDQUFDO1lBQ3BCLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO1lBQzFDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQWFNLE1BQU0sUUFBUSxTQUFTLE9BQU87SUFDbkMsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtZQUNyQixJQUFJLEVBQUUsYUFBYSxZQUFZO1lBQy9CLFFBQVEsRUFBRSxjQUFjLEtBQUs7WUFDN0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO1NBQ3pCLENBQUMsQ0FBQztRQUNILGVBQWU7S0FDaEI7SUFDRCxPQUFPLE1BQU0sR0FBRyxDQUFDLE1BQXdCLEdBQWU7UUFDdEQsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUNsQixRQUFRLEVBQUUscUJBQXFCLENBQUMsUUFBUTtZQUN4QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSixDQUFDO0NBQ0g7QUFhTSxNQUFNLE9BQU8sU0FBUyxPQUFPO0lBQ2xDLE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxBQUFDO1FBQ3hDLElBQUksVUFBVSxLQUFLLGNBQWMsU0FBUyxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsSUFBSTtnQkFDNUIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFDRCxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFjO1FBQ3JELE9BQU8sSUFBSSxPQUFPLENBQUM7WUFDakIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE9BQU87WUFDdkMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBeUJNLE1BQU0sUUFBUSxTQUdYLE9BQU87SUFPZixNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsTUFBTSxFQUFFLEdBQUcsQ0FBQSxFQUFFLE1BQU0sQ0FBQSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxBQUFDO1FBRXhELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEFBQUM7UUFFdEIsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsS0FBSyxFQUFFO1lBQzFDLGtCQUFrQixHQUFHLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxhQUFhLFlBQVk7Z0JBQy9CLFFBQVEsRUFBRSxjQUFjLEtBQUs7Z0JBQzdCLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVTthQUN6QixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBRUQsSUFBSSxHQUFHLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUMxQixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFO2dCQUN6QyxrQkFBa0IsR0FBRyxFQUFFO29CQUNyQixJQUFJLEVBQUUsYUFBYSxTQUFTO29CQUM1QixPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLO29CQUM1QixJQUFJLEVBQUUsT0FBTztvQkFDYixTQUFTLEVBQUUsSUFBSTtvQkFDZixPQUFPLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPO2lCQUMvQixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hCO1NBQ0Y7UUFFRCxJQUFJLEdBQUcsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3pDLGtCQUFrQixHQUFHLEVBQUU7b0JBQ3JCLElBQUksRUFBRSxhQUFhLE9BQU87b0JBQzFCLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUs7b0JBQzVCLElBQUksRUFBRSxPQUFPO29CQUNiLFNBQVMsRUFBRSxJQUFJO29CQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU87aUJBQy9CLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7U0FDRjtRQUVELElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDcEIsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixBQUFDLEdBQUcsQ0FBQyxJQUFJLENBQVcsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBSztnQkFDbkMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FDekIsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQy9DLENBQUM7YUFDSCxDQUFDLENBQ0gsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUs7Z0JBQ2pCLE9BQU8sWUFBWSxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQy9DLENBQUMsQ0FBQztTQUNKO1FBRUQsTUFBTSxNQUFNLEdBQUcsQUFBQyxHQUFHLENBQUMsSUFBSSxDQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUs7WUFDbEQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FDeEIsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQy9DLENBQUM7U0FDSCxDQUFDLEFBQUM7UUFFSCxPQUFPLFlBQVksVUFBVSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztLQUMvQztJQUVELElBQUksT0FBTyxHQUFHO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUN2QjtJQUVELEdBQUcsQ0FBQyxTQUFpQixFQUFFLE9BQThCLEVBQVE7UUFDM0QsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUNsQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osU0FBUyxFQUFFO2dCQUFFLEtBQUssRUFBRSxTQUFTO2dCQUFFLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFBRTtTQUN0RSxDQUFDLENBQVE7S0FDWDtJQUVELEdBQUcsQ0FBQyxTQUFpQixFQUFFLE9BQThCLEVBQVE7UUFDM0QsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUNsQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osU0FBUyxFQUFFO2dCQUFFLEtBQUssRUFBRSxTQUFTO2dCQUFFLE9BQU8sRUFBRSxVQUFVLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFBRTtTQUN0RSxDQUFDLENBQVE7S0FDWDtJQUVELE1BQU0sQ0FBQyxHQUFXLEVBQUUsT0FBOEIsRUFBUTtRQUN4RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQVE7S0FDeEQ7SUFFRCxRQUFRLENBQUMsT0FBOEIsRUFBNkI7UUFDbEUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBUTtLQUNwQztJQUVELE9BQU8sTUFBTSxHQUFHLENBQ2QsTUFBUyxFQUNULE1BQXdCLEdBQ1I7UUFDaEIsT0FBTyxJQUFJLFFBQVEsQ0FBQztZQUNsQixJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUscUJBQXFCLENBQUMsUUFBUTtZQUN4QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSixDQUFDO0NBQ0g7QUFZTSxJQUFVLFVBQVUsQUFzQzFCOztlQVRjLFdBQVcsR0FBRyxDQUN6QixLQUFRLEVBQ1IsTUFBUyxHQUNDO1FBQ1YsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLEdBQUcsTUFBTTtTQUNWLENBQUM7S0FDSDtHQXJDYyxVQUFVLEtBQVYsVUFBVTtBQTBDM0IsTUFBTSxjQUFjLEdBQ2xCLENBQTJCLEdBQVEsR0FDbkMsQ0FDRSxZQUEwQixHQUt2QjtRQUNILE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsR0FBRyxHQUFHO1lBQ04sS0FBSyxFQUFFLElBQU0sQ0FBQztvQkFDWixHQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUU7b0JBQ2QsR0FBRyxZQUFZO2lCQUNoQixDQUFDO1NBQ0gsQ0FBQyxDQUFRO0tBQ1gsQUFBQztBQTBESixTQUFTLGNBQWMsQ0FBQyxNQUFrQixFQUFPO0lBQy9DLElBQUksTUFBTSxZQUFZLFNBQVMsRUFBRTtRQUMvQixNQUFNLFFBQVEsR0FBUSxFQUFFLEFBQUM7UUFFekIsSUFBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFFO1lBQzlCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEFBQUM7WUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDakU7UUFDRCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEdBQUcsTUFBTSxDQUFDLElBQUk7WUFDZCxLQUFLLEVBQUUsSUFBTSxRQUFRO1NBQ3RCLENBQUMsQ0FBUTtLQUNYLE1BQU0sSUFBSSxNQUFNLFlBQVksUUFBUSxFQUFFO1FBQ3JDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDeEQsTUFBTSxJQUFJLE1BQU0sWUFBWSxXQUFXLEVBQUU7UUFDeEMsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQzVELE1BQU0sSUFBSSxNQUFNLFlBQVksV0FBVyxFQUFFO1FBQ3hDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztLQUM1RCxNQUFNLElBQUksTUFBTSxZQUFZLFFBQVEsRUFBRTtRQUNyQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxHQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN0RCxDQUFDO0tBQ0gsTUFBTTtRQUNMLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7Q0FDRjtBQUVNLE1BQU0sU0FBUyxTQU1aLE9BQU87SUFDZixBQUFTLE1BQU0sQ0FBSztJQUNwQixBQUFTLFlBQVksQ0FBZTtJQUNwQyxBQUFTLFNBQVMsQ0FBWTtJQUM5QixBQUFRLE9BQU8sR0FBd0MsSUFBSSxDQUFDO0lBRTVELFVBQVUsR0FBaUM7UUFDekMsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQUFBQztRQUNoQyxNQUFNLElBQUksR0FBRyxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUNwQyxPQUFRLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFBRSxLQUFLO1lBQUUsSUFBSTtTQUFFLENBQUU7S0FDekM7SUFFRCxNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUN4QyxJQUFJLFVBQVUsS0FBSyxjQUFjLE1BQU0sRUFBRTtZQUN2QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxBQUFDO1lBQ3hDLGtCQUFrQixHQUFHLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxhQUFhLFlBQVk7Z0JBQy9CLFFBQVEsRUFBRSxjQUFjLE1BQU07Z0JBQzlCLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVTthQUN6QixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBRUQsTUFBTSxFQUFFLE1BQU0sQ0FBQSxFQUFFLEdBQUcsRUFBSCxJQUFHLENBQUEsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUV4RCxNQUFNLEVBQUUsS0FBSyxDQUFBLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxBQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFhLEVBQUUsQUFBQztRQUMvQixJQUFLLE1BQU0sR0FBRyxJQUFJLElBQUcsQ0FBQyxJQUFJLENBQUU7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckI7U0FDRjtRQUVELE1BQU0sS0FBSyxHQUlMLEVBQUUsQUFBQztRQUNULEtBQUssTUFBTSxJQUFHLElBQUksU0FBUyxDQUFFO1lBQzNCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFHLENBQUMsQUFBQztZQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFHLENBQUMsSUFBSSxDQUFDLElBQUcsQ0FBQyxBQUFDO1lBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsR0FBRyxFQUFFO29CQUFFLE1BQU0sRUFBRSxPQUFPO29CQUFFLEtBQUssRUFBRSxJQUFHO2lCQUFFO2dCQUNwQyxLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FDeEIsSUFBSSxrQkFBa0IsQ0FBQyxJQUFHLEVBQUUsS0FBSyxFQUFFLElBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBRyxDQUFDLENBQ2xEO2dCQUNELFNBQVMsRUFBRSxJQUFHLElBQUksSUFBRyxDQUFDLElBQUk7YUFDM0IsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxZQUFZLFFBQVEsRUFBRTtZQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQUFBQztZQUUxQyxJQUFJLFdBQVcsS0FBSyxhQUFhLEVBQUU7Z0JBQ2pDLEtBQUssTUFBTSxJQUFHLElBQUksU0FBUyxDQUFFO29CQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNULEdBQUcsRUFBRTs0QkFBRSxNQUFNLEVBQUUsT0FBTzs0QkFBRSxLQUFLLEVBQUUsSUFBRzt5QkFBRTt3QkFDcEMsS0FBSyxFQUFFOzRCQUFFLE1BQU0sRUFBRSxPQUFPOzRCQUFFLEtBQUssRUFBRSxJQUFHLENBQUMsSUFBSSxDQUFDLElBQUcsQ0FBQzt5QkFBRTtxQkFDakQsQ0FBQyxDQUFDO2lCQUNKO2FBQ0YsTUFBTSxJQUFJLFdBQVcsS0FBSyxRQUFRLEVBQUU7Z0JBQ25DLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3hCLGtCQUFrQixJQUFHLEVBQUU7d0JBQ3JCLElBQUksRUFBRSxhQUFhLGlCQUFpQjt3QkFDcEMsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCLENBQUMsQ0FBQztvQkFDSCxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO2FBQ0YsTUFBTSxJQUFJLFdBQVcsS0FBSyxPQUFPLEVBQUUsRUFDbkMsTUFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsb0RBQW9ELENBQUMsQ0FBQyxDQUFDO2FBQ3pFO1NBQ0YsTUFBTTtZQUVMLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxBQUFDO1lBRXBDLEtBQUssTUFBTSxJQUFHLElBQUksU0FBUyxDQUFFO2dCQUMzQixNQUFNLE1BQUssR0FBRyxJQUFHLENBQUMsSUFBSSxDQUFDLElBQUcsQ0FBQyxBQUFDO2dCQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNULEdBQUcsRUFBRTt3QkFBRSxNQUFNLEVBQUUsT0FBTzt3QkFBRSxLQUFLLEVBQUUsSUFBRztxQkFBRTtvQkFDcEMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQ3BCLElBQUksa0JBQWtCLENBQUMsSUFBRyxFQUFFLE1BQUssRUFBRSxJQUFHLENBQUMsSUFBSSxFQUFFLElBQUcsQ0FBQyxDQUNsRDtvQkFDRCxTQUFTLEVBQUUsSUFBRyxJQUFJLElBQUcsQ0FBQyxJQUFJO2lCQUMzQixDQUFDLENBQUM7YUFDSjtTQUNGO1FBRUQsSUFBSSxJQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FDckIsSUFBSSxDQUFDLFVBQVk7Z0JBQ2hCLE1BQU0sU0FBUyxHQUFVLEVBQUUsQUFBQztnQkFDNUIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUU7b0JBQ3hCLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQUFBQztvQkFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFDYixHQUFHO3dCQUNILEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLO3dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7cUJBQzFCLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxPQUFPLFNBQVMsQ0FBQzthQUNsQixDQUFDLENBQ0QsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFLO2dCQUNuQixPQUFPLFlBQVksZUFBZSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQzthQUN2RCxDQUFDLENBQUM7U0FDTixNQUFNO1lBQ0wsT0FBTyxZQUFZLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFRLENBQUM7U0FDMUQ7S0FDRjtJQUVELElBQUksS0FBSyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0tBQzFCO0lBRUQsTUFBTSxDQUFDLE9BQThCLEVBQW9DO1FBQ3ZFLFVBQVUsUUFBUSxDQUFDO1FBQ25CLE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLEdBQUksT0FBTyxLQUFLLFNBQVMsR0FDckI7Z0JBQ0UsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBSztvQkFDeEIsTUFBTSxZQUFZLEdBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEFBQUM7b0JBQy9ELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBbUIsRUFDcEMsT0FBTzt3QkFDTCxPQUFPLEVBQUUsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLFlBQVk7cUJBQzdELENBQUM7b0JBQ0osT0FBTzt3QkFDTCxPQUFPLEVBQUUsWUFBWTtxQkFDdEIsQ0FBQztpQkFDSDthQUNGLEdBQ0QsRUFBRTtTQUNQLENBQUMsQ0FBUTtLQUNYO0lBRUQsS0FBSyxHQUFvQztRQUN2QyxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixXQUFXLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQVE7S0FDWDtJQUVELFdBQVcsR0FBMEM7UUFDbkQsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osV0FBVyxFQUFFLGFBQWE7U0FDM0IsQ0FBQyxDQUFRO0tBQ1g7SUFNRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUU3QixPQUFPLEdBQUcsY0FBYyxDQUF5QyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUUsTUFBTSxHQUFHLGNBQWMsQ0FBeUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTNFLE1BQU0sQ0FDSixHQUFRLEVBQ1IsTUFBYyxFQUNnRDtRQUM5RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7WUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU07U0FBRSxDQUFDLENBQVE7S0FDL0M7SUFPRCxLQUFLLENBQ0gsT0FBaUIsRUFFa0Q7UUFLbkUsTUFBTSxNQUFNLEdBQVEsSUFBSSxTQUFTLENBQUM7WUFDaEMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVztZQUNyQyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQy9CLEtBQUssRUFBRSxJQUNMLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pFLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO1NBQzFDLENBQUMsQUFBTyxBQUFDO1FBQ1YsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELFFBQVEsQ0FDTixLQUFZLEVBQ3NCO1FBQ2xDLE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBUTtLQUNYO0lBRUQsSUFBSSxDQUNGLElBQVUsRUFDK0Q7UUFDekUsTUFBTSxLQUFLLEdBQVEsRUFBRSxBQUFDO1FBQ3RCLEtBQUssVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBSztZQUVqQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osS0FBSyxFQUFFLElBQU0sS0FBSztTQUNuQixDQUFDLENBQVE7S0FDWDtJQUVELElBQUksQ0FDRixJQUFVLEVBQzZDO1FBQ3ZELE1BQU0sS0FBSyxHQUFRLEVBQUUsQUFBQztRQUN0QixLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFLO1lBQ3ZDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUM3QyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUM5QjtTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLEtBQUssRUFBRSxJQUFNLEtBQUs7U0FDbkIsQ0FBQyxDQUFRO0tBQ1g7SUFFRCxXQUFXLEdBQWtDO1FBQzNDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFRO0tBQ3BDO0lBZ0JELE9BQU8sQ0FBQyxJQUFVLEVBQUU7UUFDbEIsTUFBTSxRQUFRLEdBQVEsRUFBRSxBQUFDO1FBQ3pCLElBQUksSUFBSSxFQUFFO1lBQ1IsS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBSztnQkFDdkMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQzdDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNqQyxNQUFNO29CQUNMLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUM1QzthQUNGLENBQUMsQ0FBQztZQUNILE9BQU8sSUFBSSxTQUFTLENBQUM7Z0JBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7Z0JBQ1osS0FBSyxFQUFFLElBQU0sUUFBUTthQUN0QixDQUFDLENBQVE7U0FDWCxNQUFNO1lBQ0wsSUFBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFFO2dCQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxBQUFDO2dCQUNwQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixLQUFLLEVBQUUsSUFBTSxRQUFRO1NBQ3RCLENBQUMsQ0FBUTtLQUNYO0lBRUQsUUFBUSxHQUlOO1FBQ0EsTUFBTSxRQUFRLEdBQVEsRUFBRSxBQUFDO1FBQ3pCLElBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBRTtZQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxBQUFDO1lBQ3BDLElBQUksUUFBUSxHQUFHLFdBQVcsQUFBQztZQUMzQixNQUFPLFFBQVEsWUFBWSxXQUFXLENBQUU7Z0JBQ3RDLFFBQVEsR0FBRyxBQUFDLFFBQVEsQ0FBc0IsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUMxRDtZQUVELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7U0FDMUI7UUFDRCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixLQUFLLEVBQUUsSUFBTSxRQUFRO1NBQ3RCLENBQUMsQ0FBUTtLQUNYO0lBRUQsS0FBSyxHQUFrRDtRQUNyRCxPQUFPLGFBQWEsQ0FDbEIsS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUM1QixDQUFRO0tBQ1Y7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUNkLEtBQVEsRUFDUixNQUF3QixHQUNQO1FBQ2pCLE9BQU8sSUFBSSxTQUFTLENBQUM7WUFDbkIsS0FBSyxFQUFFLElBQU0sS0FBSztZQUNsQixXQUFXLEVBQUUsT0FBTztZQUNwQixRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzQixRQUFRLEVBQUUscUJBQXFCLENBQUMsU0FBUztZQUN6QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQVE7S0FDWCxDQUFDO0lBRUYsT0FBTyxZQUFZLEdBQUcsQ0FDcEIsS0FBUSxFQUNSLE1BQXdCLEdBQ0c7UUFDM0IsT0FBTyxJQUFJLFNBQVMsQ0FBQztZQUNuQixLQUFLLEVBQUUsSUFBTSxLQUFLO1lBQ2xCLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLFFBQVEsRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQzNCLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO1lBQ3pDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBUTtLQUNYLENBQUM7SUFFRixPQUFPLFVBQVUsR0FBRyxDQUNsQixLQUFjLEVBQ2QsTUFBd0IsR0FDUDtRQUNqQixPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLEtBQUs7WUFDTCxXQUFXLEVBQUUsT0FBTztZQUNwQixRQUFRLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUMzQixRQUFRLEVBQUUscUJBQXFCLENBQUMsU0FBUztZQUN6QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQVE7S0FDWCxDQUFDO0NBQ0g7QUFxQk0sTUFBTSxRQUFRLFNBQW9DLE9BQU87SUFLOUQsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sRUFBRSxHQUFHLENBQUEsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQUFBQztRQUVsQyxTQUFTLGFBQWEsQ0FDcEIsT0FBa0UsRUFDbEU7WUFFQSxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sQ0FBRTtnQkFDNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7b0JBQ3BDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztpQkFDdEI7YUFDRjtZQUVELEtBQUssTUFBTSxPQUFNLElBQUksT0FBTyxDQUFFO2dCQUM1QixJQUFJLE9BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRTtvQkFHcEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLE9BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwRCxPQUFPLE9BQU0sQ0FBQyxNQUFNLENBQUM7aUJBQ3RCO2FBQ0Y7WUFHRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUM3QixDQUFDLE1BQU0sR0FBSyxhQUFhLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUNuRCxBQUFDO1lBRUYsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsYUFBYTtnQkFDaEMsV0FBVzthQUNaLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLE1BQU0sR0FBSztnQkFDNUIsTUFBTSxRQUFRLEdBQWlCO29CQUM3QixHQUFHLEdBQUc7b0JBQ04sTUFBTSxFQUFFO3dCQUNOLEdBQUcsR0FBRyxDQUFDLE1BQU07d0JBQ2IsTUFBTSxFQUFFLEVBQUU7cUJBQ1g7b0JBQ0QsTUFBTSxFQUFFLElBQUk7aUJBQ2IsQUFBQztnQkFDRixPQUFPO29CQUNMLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUM7d0JBQy9CLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTt3QkFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7d0JBQ2QsTUFBTSxFQUFFLFFBQVE7cUJBQ2pCLENBQUM7b0JBQ0YsR0FBRyxFQUFFLFFBQVE7aUJBQ2QsQ0FBQzthQUNILENBQUMsQ0FDSCxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN2QixNQUFNO1lBQ0wsSUFBSSxLQUFLLEdBQ1AsU0FBUyxBQUFDO1lBQ1osTUFBTSxNQUFNLEdBQWlCLEVBQUUsQUFBQztZQUNoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sQ0FBRTtnQkFDNUIsTUFBTSxRQUFRLEdBQWlCO29CQUM3QixHQUFHLEdBQUc7b0JBQ04sTUFBTSxFQUFFO3dCQUNOLEdBQUcsR0FBRyxDQUFDLE1BQU07d0JBQ2IsTUFBTSxFQUFFLEVBQUU7cUJBQ1g7b0JBQ0QsTUFBTSxFQUFFLElBQUk7aUJBQ2IsQUFBQztnQkFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO29CQUMvQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLE1BQU0sRUFBRSxRQUFRO2lCQUNqQixDQUFDLEFBQUM7Z0JBRUgsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRTtvQkFDN0IsT0FBTyxNQUFNLENBQUM7aUJBQ2YsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUM5QyxLQUFLLEdBQUc7d0JBQUUsTUFBTTt3QkFBRSxHQUFHLEVBQUUsUUFBUTtxQkFBRSxDQUFDO2lCQUNuQztnQkFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtvQkFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUNyQzthQUNGO1lBRUQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7YUFDckI7WUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFLLGFBQWEsTUFBTSxDQUFDLENBQUMsQUFBQztZQUNqRSxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSxhQUFhO2dCQUNoQyxXQUFXO2FBQ1osQ0FBQyxDQUFDO1lBRUgsZUFBZTtTQUNoQjtLQUNGO0lBRUQsSUFBSSxPQUFPLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQzFCO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FHZCxLQUFRLEVBQ1IsTUFBd0IsR0FDUjtRQUNoQixPQUFPLElBQUksUUFBUSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsUUFBUSxFQUFFLHFCQUFxQixDQUFDLFFBQVE7WUFDeEMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBNkJNLE1BQU0scUJBQXFCLFNBSXhCLE9BQU87SUFLZixNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsTUFBTSxFQUFFLEdBQUcsQ0FBQSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxBQUFDO1FBRWhELElBQUksR0FBRyxDQUFDLFVBQVUsS0FBSyxjQUFjLE1BQU0sRUFBRTtZQUMzQyxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSxZQUFZO2dCQUMvQixRQUFRLEVBQUUsY0FBYyxNQUFNO2dCQUM5QixRQUFRLEVBQUUsR0FBRyxDQUFDLFVBQVU7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEFBQUM7UUFDekMsTUFBTSxrQkFBa0IsR0FBdUIsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQUFBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxBQUFDO1FBRXBELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSwyQkFBMkI7Z0JBQzlDLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCO2dCQUN0QyxJQUFJLEVBQUU7b0JBQUMsYUFBYTtpQkFBQzthQUN0QixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBRUQsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ3hCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsTUFBTSxFQUFFLEdBQUc7YUFDWixDQUFDLENBQUM7U0FDSixNQUFNO1lBQ0wsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO2dCQUN2QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLE1BQU0sRUFBRSxHQUFHO2FBQ1osQ0FBQyxDQUFDO1NBQ0o7S0FDRjtJQUVELElBQUksYUFBYSxHQUFHO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7S0FDaEM7SUFFRCxJQUFJLHdCQUF3QixHQUFHO1FBQzdCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7S0FDeEM7SUFFRCxJQUFJLE9BQU8sR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDMUI7SUFVRCxPQUFPLE1BQU0sQ0FTWCxhQUE0QixFQUM1QixLQUFZLEVBQ1osTUFBd0IsRUFDaUQ7UUFFekUsTUFBTSxPQUFPLEdBQTJDLElBQUksR0FBRyxFQUFFLEFBQUM7UUFFbEUsSUFBSTtZQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUs7Z0JBQ3RCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLEFBQUM7Z0JBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdkMsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2IsOEVBQThFLENBQy9FLENBQUM7U0FDSDtRQUdELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sSUFBSSxxQkFBcUIsQ0FJOUI7WUFDQSxRQUFRLEVBQUUscUJBQXFCLENBQUMscUJBQXFCO1lBQ3JELGFBQWE7WUFDYixPQUFPO1lBQ1AsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0o7Q0FDRjtBQWtCRCxTQUFTLFdBQVcsQ0FDbEIsQ0FBTSxFQUNOLENBQU0sRUFDeUM7SUFDL0MsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLENBQUMsQUFBQztJQUMvQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxBQUFDO0lBRS9CLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNYLE9BQU87WUFBRSxLQUFLLEVBQUUsSUFBSTtZQUFFLElBQUksRUFBRSxDQUFDO1NBQUUsQ0FBQztLQUNqQyxNQUFNLElBQUksS0FBSyxLQUFLLGNBQWMsTUFBTSxJQUFJLEtBQUssS0FBSyxjQUFjLE1BQU0sRUFBRTtRQUMzRSxNQUFNLEtBQUssR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQUFBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxLQUNoQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQ2IsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQUFBQztRQUU5QyxNQUFNLE1BQU0sR0FBUTtZQUFFLEdBQUcsQ0FBQztZQUFFLEdBQUcsQ0FBQztTQUFFLEFBQUM7UUFDbkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUU7WUFDNUIsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQUFBQztZQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtnQkFDdEIsT0FBTztvQkFBRSxLQUFLLEVBQUUsS0FBSztpQkFBRSxDQUFDO2FBQ3pCO1lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7U0FDaEM7UUFFRCxPQUFPO1lBQUUsS0FBSyxFQUFFLElBQUk7WUFBRSxJQUFJLEVBQUUsTUFBTTtTQUFFLENBQUM7S0FDdEMsTUFBTSxJQUFJLEtBQUssS0FBSyxjQUFjLEtBQUssSUFBSSxLQUFLLEtBQUssY0FBYyxLQUFLLEVBQUU7UUFDekUsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUU7WUFDekIsT0FBTztnQkFBRSxLQUFLLEVBQUUsS0FBSzthQUFFLENBQUM7U0FDekI7UUFFRCxNQUFNLFFBQVEsR0FBRyxFQUFFLEFBQUM7UUFDcEIsSUFBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUU7WUFDN0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxBQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUN2QixNQUFNLFlBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxBQUFDO1lBRTlDLElBQUksQ0FBQyxZQUFXLENBQUMsS0FBSyxFQUFFO2dCQUN0QixPQUFPO29CQUFFLEtBQUssRUFBRSxLQUFLO2lCQUFFLENBQUM7YUFDekI7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqQztRQUVELE9BQU87WUFBRSxLQUFLLEVBQUUsSUFBSTtZQUFFLElBQUksRUFBRSxRQUFRO1NBQUUsQ0FBQztLQUN4QyxNQUFNLElBQ0wsS0FBSyxLQUFLLGNBQWMsSUFBSSxJQUM1QixLQUFLLEtBQUssY0FBYyxJQUFJLElBQzVCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNUO1FBQ0EsT0FBTztZQUFFLEtBQUssRUFBRSxJQUFJO1lBQUUsSUFBSSxFQUFFLENBQUM7U0FBRSxDQUFDO0tBQ2pDLE1BQU07UUFDTCxPQUFPO1lBQUUsS0FBSyxFQUFFLEtBQUs7U0FBRSxDQUFDO0tBQ3pCO0NBQ0Y7QUFFTSxNQUFNLGVBQWUsU0FHbEIsT0FBTztJQUtmLE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFBLEVBQUUsR0FBRyxDQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEQsTUFBTSxZQUFZLEdBQUcsQ0FDbkIsVUFBK0IsRUFDL0IsV0FBZ0MsR0FDRDtZQUMvQixJQUFJLFVBQVUsVUFBVSxDQUFDLElBQUksVUFBVSxXQUFXLENBQUMsRUFBRTtnQkFDbkQsZUFBZTthQUNoQjtZQUVELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUVoRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDakIsa0JBQWtCLEdBQUcsRUFBRTtvQkFDckIsSUFBSSxFQUFFLGFBQWEsMEJBQTBCO2lCQUM5QyxDQUFDLENBQUM7Z0JBQ0gsZUFBZTthQUNoQjtZQUVELElBQUksUUFBUSxVQUFVLENBQUMsSUFBSSxRQUFRLFdBQVcsQ0FBQyxFQUFFO2dCQUMvQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7WUFFRCxPQUFPO2dCQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSztnQkFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFBUyxDQUFDO1NBQzVELEFBQUM7UUFFRixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQztnQkFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO29CQUN6QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO29CQUMxQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQUM7YUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFNLEdBQUssWUFBWSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzVELE1BQU07WUFDTCxPQUFPLFlBQVksQ0FDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUN4QixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLE1BQU0sRUFBRSxHQUFHO2FBQ1osQ0FBQyxFQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDekIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxNQUFNLEVBQUUsR0FBRzthQUNaLENBQUMsQ0FDSCxDQUFDO1NBQ0g7S0FDRjtJQUVELE9BQU8sTUFBTSxHQUFHLENBQ2QsSUFBTyxFQUNQLEtBQVEsRUFDUixNQUF3QixHQUNFO1FBQzFCLE9BQU8sSUFBSSxlQUFlLENBQUM7WUFDekIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxlQUFlO1lBQy9DLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQXdDTSxNQUFNLFFBQVEsU0FHWCxPQUFPO0lBS2YsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sRUFBRSxNQUFNLENBQUEsRUFBRSxHQUFHLENBQUEsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUN4RCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssY0FBYyxLQUFLLEVBQUU7WUFDMUMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsS0FBSztnQkFDN0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUM1QyxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsYUFBYSxTQUFTO2dCQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTTtnQkFDL0IsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLE9BQU87YUFDZCxDQUFDLENBQUM7WUFFSCxlQUFlO1NBQ2hCO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEFBQUM7UUFFNUIsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDckQsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsT0FBTztnQkFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07Z0JBQy9CLFNBQVMsRUFBRSxJQUFJO2dCQUNmLElBQUksRUFBRSxPQUFPO2FBQ2QsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO1FBRUQsTUFBTSxLQUFLLEdBQUcsQUFBQyxHQUFHLENBQUMsSUFBSSxDQUNwQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFLO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxBQUFDO1lBQzVELElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLENBQW9DO1lBQzVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQ3ZELENBQUM7U0FDSCxDQUFDLENBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQUFBQztRQUV0QixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEdBQUs7Z0JBQzFDLE9BQU8sWUFBWSxVQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ2hELENBQUMsQ0FBQztTQUNKLE1BQU07WUFDTCxPQUFPLFlBQVksVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQTBCLENBQUM7U0FDdkU7S0FDRjtJQUVELElBQUksS0FBSyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUN4QjtJQUVELElBQUksQ0FBMEIsSUFBVSxFQUFxQjtRQUMzRCxPQUFPLElBQUksUUFBUSxDQUFDO1lBQ2xCLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixJQUFJO1NBQ0wsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUNkLE9BQVUsRUFDVixNQUF3QixHQUNGO1FBQ3RCLE9BQU8sSUFBSSxRQUFRLENBQUM7WUFDbEIsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUscUJBQXFCLENBQUMsUUFBUTtZQUN4QyxJQUFJLEVBQUUsSUFBSTtZQUNWLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQTBCTSxNQUFNLFNBQVMsU0FHWixPQUFPO0lBS2YsSUFBSSxTQUFTLEdBQUc7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0tBQzFCO0lBQ0QsSUFBSSxXQUFXLEdBQUc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztLQUM1QjtJQUNELE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFBLEVBQUUsR0FBRyxDQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEQsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsTUFBTSxFQUFFO1lBQzNDLGtCQUFrQixHQUFHLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxhQUFhLFlBQVk7Z0JBQy9CLFFBQVEsRUFBRSxjQUFjLE1BQU07Z0JBQzlCLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVTthQUN6QixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBRUQsTUFBTSxLQUFLLEdBR0wsRUFBRSxBQUFDO1FBRVQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEFBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEFBQUM7UUFFdEMsSUFBSyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFFO1lBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1QsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BFLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxDQUNyQixJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQzFEO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3BCLE9BQU8sWUFBWSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDcEQsTUFBTTtZQUNMLE9BQU8sWUFBWSxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBUSxDQUFDO1NBQzFEO0tBQ0Y7SUFFRCxJQUFJLE9BQU8sR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDNUI7SUFXRCxPQUFPLE1BQU0sQ0FBQyxLQUFVLEVBQUUsTUFBWSxFQUFFLEtBQVcsRUFBdUI7UUFDeEUsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFO1lBQzdCLE9BQU8sSUFBSSxTQUFTLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFNBQVMsRUFBRSxNQUFNO2dCQUNqQixRQUFRLEVBQUUscUJBQXFCLENBQUMsU0FBUztnQkFDekMsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7YUFDOUIsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLElBQUksU0FBUyxDQUFDO1lBQ25CLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFO1lBQzNCLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxTQUFTO1lBQ3pDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKO0NBQ0Y7QUFrQk0sTUFBTSxNQUFNLFNBR1QsT0FBTztJQUtmLE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFBLEVBQUUsR0FBRyxDQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEQsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsR0FBRyxFQUFFO1lBQ3hDLGtCQUFrQixHQUFHLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxhQUFhLFlBQVk7Z0JBQy9CLFFBQVEsRUFBRSxjQUFjLEdBQUc7Z0JBQzNCLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVTthQUN6QixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEFBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEFBQUM7UUFFdEMsTUFBTSxLQUFLLEdBQUc7ZUFBSSxBQUFDLEdBQUcsQ0FBQyxJQUFJLENBQTJCLE9BQU8sRUFBRTtTQUFDLENBQUMsR0FBRyxDQUNsRSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEtBQUssR0FBSztZQUN2QixPQUFPO2dCQUNMLEdBQUcsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUNqQixJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRTtvQkFBQyxLQUFLO29CQUFFLEtBQUs7aUJBQUMsQ0FBQyxDQUMzRDtnQkFDRCxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FDckIsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUU7b0JBQUMsS0FBSztvQkFBRSxPQUFPO2lCQUFDLENBQUMsQ0FDL0Q7YUFDRixDQUFDO1NBQ0gsQ0FDRixBQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBRSxBQUFDO1lBQzNCLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFZO2dCQUN4QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBRTtvQkFDeEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxBQUFDO29CQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLEFBQUM7b0JBQy9CLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7d0JBQzFELGVBQWU7cUJBQ2hCO29CQUNELElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7d0JBQ3RELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDaEI7b0JBRUQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsT0FBTztvQkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQUUsS0FBSyxFQUFFLFFBQVE7aUJBQUUsQ0FBQzthQUNsRCxDQUFDLENBQUM7U0FDSixNQUFNO1lBQ0wsTUFBTSxTQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQUFBQztZQUMzQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBRTtnQkFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQUFBdUIsQUFBQztnQkFDNUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQUFBdUIsQUFBQztnQkFDaEQsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRTtvQkFDMUQsZUFBZTtpQkFDaEI7Z0JBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRTtvQkFDdEQsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQjtnQkFFRCxTQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsT0FBTztnQkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQUUsS0FBSyxFQUFFLFNBQVE7YUFBRSxDQUFDO1NBQ2xEO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sR0FBRyxDQUlkLE9BQVksRUFDWixTQUFnQixFQUNoQixNQUF3QixHQUNEO1FBQ3ZCLE9BQU8sSUFBSSxNQUFNLENBQUM7WUFDaEIsU0FBUztZQUNULE9BQU87WUFDUCxRQUFRLEVBQUUscUJBQXFCLENBQUMsTUFBTTtZQUN0QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSixDQUFDO0NBQ0g7QUFpQk0sTUFBTSxNQUFNLFNBQWdELE9BQU87SUFLeEUsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sRUFBRSxNQUFNLENBQUEsRUFBRSxHQUFHLENBQUEsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUN4RCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssY0FBYyxHQUFHLEVBQUU7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsR0FBRztnQkFDM0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxBQUFDO1FBRXRCLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUU7WUFDeEIsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDckMsa0JBQWtCLEdBQUcsRUFBRTtvQkFDckIsSUFBSSxFQUFFLGFBQWEsU0FBUztvQkFDNUIsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSztvQkFDMUIsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsU0FBUyxFQUFFLElBQUk7b0JBQ2YsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTztpQkFDN0IsQ0FBQyxDQUFDO2dCQUNILE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNoQjtTQUNGO1FBRUQsSUFBSSxHQUFHLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtZQUN4QixJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNyQyxrQkFBa0IsR0FBRyxFQUFFO29CQUNyQixJQUFJLEVBQUUsYUFBYSxPQUFPO29CQUMxQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLO29CQUMxQixJQUFJLEVBQUUsS0FBSztvQkFDWCxTQUFTLEVBQUUsSUFBSTtvQkFDZixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPO2lCQUM3QixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2hCO1NBQ0Y7UUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQUFBQztRQUV0QyxTQUFTLFdBQVcsQ0FBQyxRQUFvQyxFQUFFO1lBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxFQUFFLEFBQUM7WUFDNUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLENBQUU7Z0JBQzlCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsZUFBZTtnQkFDakQsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQy9DLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsT0FBTztnQkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQUUsS0FBSyxFQUFFLFNBQVM7YUFBRSxDQUFDO1NBQ25EO1FBRUQsTUFBTSxRQUFRLEdBQUc7ZUFBSSxBQUFDLEdBQUcsQ0FBQyxJQUFJLENBQWtCLE1BQU0sRUFBRTtTQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FDcEUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNqRSxBQUFDO1FBRUYsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNwQixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3hFLE1BQU07WUFDTCxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQTBCLENBQUM7U0FDdkQ7S0FDRjtJQUVELEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBOEIsRUFBUTtRQUN6RCxPQUFPLElBQUksTUFBTSxDQUFDO1lBQ2hCLEdBQUcsSUFBSSxDQUFDLElBQUk7WUFDWixPQUFPLEVBQUU7Z0JBQUUsS0FBSyxFQUFFLE9BQU87Z0JBQUUsT0FBTyxFQUFFLFVBQVUsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUFFO1NBQ2xFLENBQUMsQ0FBUTtLQUNYO0lBRUQsR0FBRyxDQUFDLE9BQWUsRUFBRSxPQUE4QixFQUFRO1FBQ3pELE9BQU8sSUFBSSxNQUFNLENBQUM7WUFDaEIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLE9BQU8sRUFBRTtnQkFBRSxLQUFLLEVBQUUsT0FBTztnQkFBRSxPQUFPLEVBQUUsVUFBVSxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQUU7U0FDbEUsQ0FBQyxDQUFRO0tBQ1g7SUFFRCxJQUFJLENBQUMsSUFBWSxFQUFFLE9BQThCLEVBQVE7UUFDdkQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFRO0tBQzFEO0lBRUQsUUFBUSxDQUFDLE9BQThCLEVBQWlCO1FBQ3RELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQVE7S0FDcEM7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUNkLFNBQWdCLEVBQ2hCLE1BQXdCLEdBQ047UUFDbEIsT0FBTyxJQUFJLE1BQU0sQ0FBQztZQUNoQixTQUFTO1lBQ1QsT0FBTyxFQUFFLElBQUk7WUFDYixPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNO1lBQ3RDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQWdDTSxNQUFNLFdBQVcsU0FHZCxPQUFPO0lBS2YsTUFBTSxDQUFDLEtBQWlCLEVBQXdCO1FBQzlDLE1BQU0sRUFBRSxHQUFHLENBQUEsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUNoRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssY0FBYyxRQUFRLEVBQUU7WUFDN0Msa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsUUFBUTtnQkFDaEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFTLEVBQUUsS0FBZSxFQUFZO1lBQzNELE9BQU8sVUFBVTtnQkFDZixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsU0FBUyxFQUFFO29CQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCO29CQUM3QixHQUFHLENBQUMsY0FBYztvQkFDbEIsYUFBYTs7aUJBRWQsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxhQUFhLGlCQUFpQjtvQkFDcEMsY0FBYyxFQUFFLEtBQUs7aUJBQ3RCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxTQUFTLGdCQUFnQixDQUFDLE9BQVksRUFBRSxLQUFlLEVBQVk7WUFDakUsT0FBTyxVQUFVO2dCQUNmLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxTQUFTLEVBQUU7b0JBQ1QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0I7b0JBQzdCLEdBQUcsQ0FBQyxjQUFjO29CQUNsQixhQUFhOztpQkFFZCxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLGFBQWEsbUJBQW1CO29CQUN0QyxlQUFlLEVBQUUsS0FBSztpQkFDdkI7YUFDRixDQUFDLENBQUM7U0FDSjtRQUVELE1BQU0sTUFBTSxHQUFHO1lBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCO1NBQUUsQUFBQztRQUMzRCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxBQUFDO1FBRXBCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLFlBQVksVUFBVSxFQUFFO1lBQzNDLE9BQU8sR0FBRyxPQUFPLEdBQUcsSUFBSSxBQUFPLEdBQUs7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLGFBQWEsRUFBRSxDQUFDLEFBQUM7Z0JBQy9CLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ3BDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQ3hCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBSztvQkFDWixLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkMsTUFBTSxLQUFLLENBQUM7aUJBQ2IsQ0FBQyxBQUFDO2dCQUNMLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxJQUFLLFVBQVUsQ0FBUyxBQUFDO2dCQUNoRCxNQUFNLGFBQWEsR0FBRyxNQUFNLEFBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUNqQixJQUFJLENBQUMsSUFBSSxDQUNSLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQzFCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBSztvQkFDWixLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1QyxNQUFNLEtBQUssQ0FBQztpQkFDYixDQUFDLEFBQUM7Z0JBQ0wsT0FBTyxhQUFhLENBQUM7YUFDdEIsQ0FBQyxDQUFDO1NBQ0osTUFBTTtZQUNMLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxBQUFPLEdBQUs7Z0JBQzVCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEFBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO29CQUN2QixNQUFNLGFBQWE7d0JBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDO3FCQUFDLENBQUMsQ0FBQztpQkFDN0Q7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFLLFVBQVUsQ0FBQyxJQUFJLENBQVMsQUFBQztnQkFDL0MsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQUFBQztnQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUU7b0JBQzFCLE1BQU0sYUFBYTt3QkFBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLEtBQUssQ0FBQztxQkFBQyxDQUFDLENBQUM7aUJBQ3JFO2dCQUNELE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQzthQUMzQixDQUFDLENBQVE7U0FDWDtLQUNGO0lBRUQsVUFBVSxHQUFHO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUN2QjtJQUVELFVBQVUsR0FBRztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDMUI7SUFFRCxJQUFJLENBQ0YsR0FBRyxLQUFLLEFBQU8sRUFDb0M7UUFDbkQsT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixHQUFHLElBQUksQ0FBQyxJQUFJO1lBQ1osSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN2RCxDQUFDLENBQUM7S0FDSjtJQUVELE9BQU8sQ0FDTCxVQUF5QixFQUNTO1FBQ2xDLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDckIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLE9BQU8sRUFBRSxVQUFVO1NBQ3BCLENBQUMsQ0FBQztLQUNKO0lBRUQsU0FBUyxDQUNQLElBQU8sRUFHOEI7UUFDckMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQUFBQztRQUN2QyxPQUFPLGFBQWEsQ0FBUTtLQUM3QjtJQUVELGVBQWUsQ0FDYixJQUF3QyxFQUNKO1FBQ3BDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEFBQUM7UUFDdkMsT0FBTyxhQUFhLENBQVE7S0FDN0I7SUFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUUxQixPQUFPLE1BQU0sR0FBRyxDQUlkLElBQVEsRUFDUixPQUFXLEVBQ1gsTUFBd0IsR0FDRjtRQUN0QixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLElBQUksRUFBRyxJQUFJLEdBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsR0FDOUIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pELE9BQU8sRUFBRSxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUN2QyxRQUFRLEVBQUUscUJBQXFCLENBQUMsV0FBVztZQUMzQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQVE7S0FDWCxDQUFDO0NBQ0g7QUFlTSxNQUFNLE9BQU8sU0FBK0IsT0FBTztJQUt4RCxJQUFJLE1BQU0sR0FBTTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUMzQjtJQUVELE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLEVBQUUsR0FBRyxDQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDaEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQUFBQztRQUN0QyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFBRSxNQUFNLEVBQUUsR0FBRztTQUFFLENBQUMsQ0FBQztLQUMzRTtJQUVELE9BQU8sTUFBTSxHQUFHLENBQ2QsTUFBZSxFQUNmLE1BQXdCLEdBQ1Q7UUFDZixPQUFPLElBQUksT0FBTyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE9BQU87WUFDdkMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBY00sTUFBTSxVQUFVLFNBQVksT0FBTztJQUN4QyxNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsZUFBZTtnQkFDbEMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSzthQUMxQixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBQ0QsT0FBTztZQUFFLE1BQU0sRUFBRSxPQUFPO1lBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQUUsQ0FBQztLQUMvQztJQUVELElBQUksS0FBSyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUN4QjtJQUVELE9BQU8sTUFBTSxHQUFHLENBQ2QsS0FBUSxFQUNSLE1BQXdCLEdBQ047UUFDbEIsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixLQUFLLEVBQUUsS0FBSztZQUNaLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO1lBQzFDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQWtDRCxTQUFTLGFBQWEsQ0FBQyxNQUFXLEVBQUUsTUFBd0IsRUFBRTtJQUM1RCxPQUFPLElBQUksT0FBTyxDQUFDO1FBQ2pCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE9BQU87UUFDdkMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7S0FDL0IsQ0FBQyxDQUFRO0NBQ1g7QUFFTSxNQUFNLE9BQU8sU0FBMEMsT0FBTztJQUluRSxNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsUUFBUSxFQUFFLEtBQUssVUFBVSxDQUFDLGNBQWMsQ0FBQztnQkFDekMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2dCQUN4QixJQUFJLEVBQUUsYUFBYSxZQUFZO2FBQ2hDLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDL0MsTUFBTSxJQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQUFBQztZQUN4QyxNQUFNLGVBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQUFBQztZQUV4QyxrQkFBa0IsSUFBRyxFQUFFO2dCQUNyQixRQUFRLEVBQUUsSUFBRyxDQUFDLElBQUk7Z0JBQ2xCLElBQUksRUFBRSxhQUFhLGtCQUFrQjtnQkFDckMsT0FBTyxFQUFFLGVBQWM7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7SUFFRCxJQUFJLE9BQU8sR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDekI7SUFFRCxJQUFJLElBQUksR0FBYztRQUNwQixNQUFNLFVBQVUsR0FBUSxFQUFFLEFBQUM7UUFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNsQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxVQUFVLENBQVE7S0FDMUI7SUFFRCxJQUFJLE1BQU0sR0FBYztRQUN0QixNQUFNLFVBQVUsR0FBUSxFQUFFLEFBQUM7UUFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNsQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxVQUFVLENBQVE7S0FDMUI7SUFFRCxJQUFJLElBQUksR0FBYztRQUNwQixNQUFNLFVBQVUsR0FBUSxFQUFFLEFBQUM7UUFDM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRTtZQUNsQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxVQUFVLENBQVE7S0FDMUI7SUFFRCxPQUFPLE1BQU0sR0FBRyxhQUFhLENBQUM7Q0FDL0I7QUFpQk0sTUFBTSxhQUFhLFNBQTZCLE9BQU87SUFJNUQsTUFBTSxDQUFDLEtBQWlCLEVBQStCO1FBQ3JELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxBQUFDO1FBRW5FLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEMsSUFDRSxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsTUFBTSxJQUN2QyxHQUFHLENBQUMsVUFBVSxLQUFLLGNBQWMsTUFBTSxFQUN2QztZQUNBLE1BQU0sY0FBYyxHQUFHLEtBQUssWUFBWSxDQUFDLGdCQUFnQixDQUFDLEFBQUM7WUFDM0Qsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsUUFBUSxFQUFFLEtBQUssVUFBVSxDQUFDLGNBQWMsQ0FBQztnQkFDekMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2dCQUN4QixJQUFJLEVBQUUsYUFBYSxZQUFZO2FBQ2hDLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDL0MsTUFBTSxlQUFjLEdBQUcsS0FBSyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQUFBQztZQUUzRCxrQkFBa0IsR0FBRyxFQUFFO2dCQUNyQixRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2xCLElBQUksRUFBRSxhQUFhLGtCQUFrQjtnQkFDckMsT0FBTyxFQUFFLGVBQWM7YUFDeEIsQ0FBQyxDQUFDO1lBQ0gsZUFBZTtTQUNoQjtRQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFRLENBQUM7S0FDOUI7SUFFRCxJQUFJLElBQUksR0FBRztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDekI7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUNkLE1BQVMsRUFDVCxNQUF3QixHQUNIO1FBQ3JCLE9BQU8sSUFBSSxhQUFhLENBQUM7WUFDdkIsTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUscUJBQXFCLENBQUMsYUFBYTtZQUM3QyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQUM7S0FDSixDQUFDO0NBQ0g7QUFlTSxNQUFNLFVBQVUsU0FBK0IsT0FBTztJQUszRCxNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsTUFBTSxFQUFFLEdBQUcsQ0FBQSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxBQUFDO1FBQ2hELElBQ0UsR0FBRyxDQUFDLFVBQVUsS0FBSyxjQUFjLE9BQU8sSUFDeEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUMxQjtZQUNBLGtCQUFrQixHQUFHLEVBQUU7Z0JBQ3JCLElBQUksRUFBRSxhQUFhLFlBQVk7Z0JBQy9CLFFBQVEsRUFBRSxjQUFjLE9BQU87Z0JBQy9CLFFBQVEsRUFBRSxHQUFHLENBQUMsVUFBVTthQUN6QixDQUFDLENBQUM7WUFDSCxlQUFlO1NBQ2hCO1FBRUQsTUFBTSxXQUFXLEdBQ2YsR0FBRyxDQUFDLFVBQVUsS0FBSyxjQUFjLE9BQU8sR0FDcEMsR0FBRyxDQUFDLElBQUksR0FDUixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQUFBQztRQUVoQyxPQUFPLEdBQ0wsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsR0FBSztZQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtnQkFDZCxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0I7YUFDeEMsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUNILENBQUM7S0FDSDtJQUVELE9BQU8sTUFBTSxHQUFHLENBQ2QsTUFBUyxFQUNULE1BQXdCLEdBQ047UUFDbEIsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixJQUFJLEVBQUUsTUFBTTtZQUNaLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO1lBQzFDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQXFDTSxNQUFNLFVBQVUsU0FJYixPQUFPO0lBQ2YsU0FBUyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztLQUN6QjtJQUVELE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFBLEVBQUUsR0FBRyxDQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFFeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxBQUFDO1FBRXhDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDaEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEFBQUM7WUFFN0MsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtnQkFDcEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBSztvQkFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7d0JBQ2xDLElBQUksRUFBRSxTQUFTO3dCQUNmLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTt3QkFDZCxNQUFNLEVBQUUsR0FBRztxQkFDWixDQUFDLENBQUM7aUJBQ0osQ0FBQyxDQUFDO2FBQ0osTUFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztvQkFDakMsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFFRCxNQUFNLFFBQVEsR0FBa0I7WUFDOUIsUUFBUSxFQUFFLENBQUMsR0FBYyxHQUFLO2dCQUM1QixrQkFBa0IsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1QixJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7b0JBQ2IsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUNoQixNQUFNO29CQUNMLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztpQkFDaEI7YUFDRjtZQUNELElBQUksSUFBSSxJQUFHO2dCQUNULE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQzthQUNqQjtTQUNGLEFBQUM7UUFFRixRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixHQUFZLEdBRUo7Z0JBQ1IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEFBQUM7Z0JBQ2hELElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7b0JBQ3BCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDaEM7Z0JBQ0QsSUFBSSxNQUFNLFlBQVksT0FBTyxFQUFFO29CQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDJGQUEyRixDQUM1RixDQUFDO2lCQUNIO2dCQUNELE9BQU8sR0FBRyxDQUFDO2FBQ1osQUFBQztZQUVGLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO2dCQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7b0JBQ3hDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsTUFBTSxFQUFFLEdBQUc7aUJBQ1osQ0FBQyxBQUFDO2dCQUNILElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsZUFBZTtnQkFDL0MsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLE9BQU8sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBRzdDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsT0FBTztvQkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2lCQUFFLENBQUM7YUFDckQsTUFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNwQixXQUFXLENBQUM7b0JBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFBRSxNQUFNLEVBQUUsR0FBRztpQkFBRSxDQUFDLENBQzVELElBQUksQ0FBQyxDQUFDLEtBQUssR0FBSztvQkFDZixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLGVBQWU7b0JBQy9DLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUU3QyxPQUFPLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBTTt3QkFDL0MsT0FBTzs0QkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7NEJBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO3lCQUFFLENBQUM7cUJBQ3JELENBQUMsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDTjtTQUNGO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtZQUMvQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtnQkFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO29CQUN2QyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNkLE1BQU0sRUFBRSxHQUFHO2lCQUNaLENBQUMsQUFBQztnQkFLSCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztnQkFFaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxBQUFDO2dCQUN0RCxJQUFJLE1BQU0sWUFBWSxPQUFPLEVBQUU7b0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2IsQ0FBQywrRkFBK0YsQ0FBQyxDQUNsRyxDQUFDO2lCQUNIO2dCQUVELE9BQU87b0JBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUFFLEtBQUssRUFBRSxNQUFNO2lCQUFFLENBQUM7YUFDaEQsTUFBTTtnQkFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUNwQixXQUFXLENBQUM7b0JBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUFFLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFBRSxNQUFNLEVBQUUsR0FBRztpQkFBRSxDQUFDLENBQzVELElBQUksQ0FBQyxDQUFDLElBQUksR0FBSztvQkFDZCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztvQkFLaEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakUsQ0FBQyxNQUFNLEdBQUssQ0FBQzs0QkFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7NEJBQUUsS0FBSyxFQUFFLE1BQU07eUJBQUUsQ0FBQyxDQUN0RCxDQUFDO2lCQUNILENBQUMsQ0FBQzthQUNOO1NBQ0Y7UUFFRCxLQUFLLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMxQjtJQUVELE9BQU8sTUFBTSxHQUFHLENBQ2QsTUFBUyxFQUNULE1BQTRCLEVBQzVCLE1BQXdCLEdBQ1E7UUFDaEMsT0FBTyxJQUFJLFVBQVUsQ0FBQztZQUNwQixNQUFNO1lBQ04sUUFBUSxFQUFFLHFCQUFxQixDQUFDLFVBQVU7WUFDMUMsTUFBTTtZQUNOLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7SUFFRixPQUFPLG9CQUFvQixHQUFHLENBQzVCLFVBQXFDLEVBQ3JDLE1BQVMsRUFDVCxNQUF3QixHQUNRO1FBQ2hDLE9BQU8sSUFBSSxVQUFVLENBQUM7WUFDcEIsTUFBTTtZQUNOLE1BQU0sRUFBRTtnQkFBRSxJQUFJLEVBQUUsWUFBWTtnQkFBRSxTQUFTLEVBQUUsVUFBVTthQUFFO1lBQ3JELFFBQVEsRUFBRSxxQkFBcUIsQ0FBQyxVQUFVO1lBQzFDLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1NBQy9CLENBQUMsQ0FBQztLQUNKLENBQUM7Q0FDSDtBQW1CTSxNQUFNLFdBQVcsU0FBK0IsT0FBTztJQUs1RCxNQUFNLENBQUMsS0FBaUIsRUFBb0M7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQUFBQztRQUN4QyxJQUFJLFVBQVUsS0FBSyxjQUFjLFNBQVMsRUFBRTtZQUMxQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUM7U0FDdEI7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMxQztJQUVELE1BQU0sR0FBRztRQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDNUI7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUNkLElBQU8sRUFDUCxNQUF3QixHQUNMO1FBQ25CLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUscUJBQXFCLENBQUMsV0FBVztZQUMzQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQVE7S0FDWCxDQUFDO0NBQ0g7QUFpQk0sTUFBTSxXQUFXLFNBQStCLE9BQU87SUFLNUQsTUFBTSxDQUFDLEtBQWlCLEVBQW9DO1FBQzFELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDeEMsSUFBSSxVQUFVLEtBQUssY0FBYyxJQUFJLEVBQUU7WUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUM7SUFFRCxNQUFNLEdBQUc7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0tBQzVCO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FDZCxJQUFPLEVBQ1AsTUFBd0IsR0FDTDtRQUNuQixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLHFCQUFxQixDQUFDLFdBQVc7WUFDM0MsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFRO0tBQ1gsQ0FBQztDQUNIO0FBZ0JNLE1BQU0sVUFBVSxTQUErQixPQUFPO0lBSzNELE1BQU0sQ0FBQyxLQUFpQixFQUFvQztRQUMxRCxNQUFNLEVBQUUsR0FBRyxDQUFBLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEFBQUM7UUFDaEQsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQUFBQztRQUNwQixJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssY0FBYyxTQUFTLEVBQUU7WUFDOUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDakM7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUNoQyxJQUFJO1lBQ0osSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsTUFBTSxFQUFFLEdBQUc7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVELGFBQWEsR0FBRztRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7S0FDNUI7SUFFRCxPQUFPLE1BQU0sR0FBRyxDQUNkLElBQU8sRUFDUCxNQUF3QixHQUNMO1FBQ25CLE9BQU8sSUFBSSxXQUFXLENBQUM7WUFDckIsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUscUJBQXFCLENBQUMsV0FBVztZQUMzQyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztTQUMvQixDQUFDLENBQVE7S0FDWCxDQUFDO0NBQ0g7QUFjTSxNQUFNLE1BQU0sU0FBUyxPQUFPO0lBQ2pDLE1BQU0sQ0FBQyxLQUFpQixFQUF3QjtRQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxBQUFDO1FBQ3hDLElBQUksVUFBVSxLQUFLLGNBQWMsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEFBQUM7WUFDeEMsa0JBQWtCLEdBQUcsRUFBRTtnQkFDckIsSUFBSSxFQUFFLGFBQWEsWUFBWTtnQkFDL0IsUUFBUSxFQUFFLGNBQWMsR0FBRztnQkFDM0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3pCLENBQUMsQ0FBQztZQUNILGVBQWU7U0FDaEI7UUFFRCxPQUFPO1lBQUUsTUFBTSxFQUFFLE9BQU87WUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FBRSxDQUFDO0tBQy9DO0lBRUQsT0FBTyxNQUFNLEdBQUcsQ0FBQyxNQUF3QixHQUFhO1FBQ3BELE9BQU8sSUFBSSxNQUFNLENBQUM7WUFDaEIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLE1BQU07WUFDdEMsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0tBQ0osQ0FBQztDQUNIO0FBb0JtQixDQUFBO0lBQ2xCLE1BQU0sRUFBRSxTQUFTLENBQUMsVUFBVTtDQUM3QixDQUFBLENBQUM7SUFFSyxxQkFnQ047VUFoQ1cscUJBQXFCO0lBQXJCLHFCQUFxQixDQUMvQixXQUFTLElBQVQsV0FBUztJQURDLHFCQUFxQixDQUUvQixXQUFTLElBQVQsV0FBUztJQUZDLHFCQUFxQixDQUcvQixRQUFNLElBQU4sUUFBTTtJQUhJLHFCQUFxQixDQUkvQixXQUFTLElBQVQsV0FBUztJQUpDLHFCQUFxQixDQUsvQixZQUFVLElBQVYsWUFBVTtJQUxBLHFCQUFxQixDQU0vQixTQUFPLElBQVAsU0FBTztJQU5HLHFCQUFxQixDQU8vQixjQUFZLElBQVosY0FBWTtJQVBGLHFCQUFxQixDQVEvQixTQUFPLElBQVAsU0FBTztJQVJHLHFCQUFxQixDQVMvQixRQUFNLElBQU4sUUFBTTtJQVRJLHFCQUFxQixDQVUvQixZQUFVLElBQVYsWUFBVTtJQVZBLHFCQUFxQixDQVcvQixVQUFRLElBQVIsVUFBUTtJQVhFLHFCQUFxQixDQVkvQixTQUFPLElBQVAsU0FBTztJQVpHLHFCQUFxQixDQWEvQixVQUFRLElBQVIsVUFBUTtJQWJFLHFCQUFxQixDQWMvQixXQUFTLElBQVQsV0FBUztJQWRDLHFCQUFxQixDQWUvQixVQUFRLElBQVIsVUFBUTtJQWZFLHFCQUFxQixDQWdCL0IsdUJBQXFCLElBQXJCLHVCQUFxQjtJQWhCWCxxQkFBcUIsQ0FpQi9CLGlCQUFlLElBQWYsaUJBQWU7SUFqQkwscUJBQXFCLENBa0IvQixVQUFRLElBQVIsVUFBUTtJQWxCRSxxQkFBcUIsQ0FtQi9CLFdBQVMsSUFBVCxXQUFTO0lBbkJDLHFCQUFxQixDQW9CL0IsUUFBTSxJQUFOLFFBQU07SUFwQkkscUJBQXFCLENBcUIvQixRQUFNLElBQU4sUUFBTTtJQXJCSSxxQkFBcUIsQ0FzQi9CLGFBQVcsSUFBWCxhQUFXO0lBdEJELHFCQUFxQixDQXVCL0IsU0FBTyxJQUFQLFNBQU87SUF2QkcscUJBQXFCLENBd0IvQixZQUFVLElBQVYsWUFBVTtJQXhCQSxxQkFBcUIsQ0F5Qi9CLFNBQU8sSUFBUCxTQUFPO0lBekJHLHFCQUFxQixDQTBCL0IsWUFBVSxJQUFWLFlBQVU7SUExQkEscUJBQXFCLENBMkIvQixlQUFhLElBQWIsZUFBYTtJQTNCSCxxQkFBcUIsQ0E0Qi9CLGFBQVcsSUFBWCxhQUFXO0lBNUJELHFCQUFxQixDQTZCL0IsYUFBVyxJQUFYLGFBQVc7SUE3QkQscUJBQXFCLENBOEIvQixZQUFVLElBQVYsWUFBVTtJQTlCQSxxQkFBcUIsQ0ErQi9CLFlBQVUsSUFBVixZQUFVO0dBL0JBLHFCQUFxQixLQUFyQixxQkFBcUI7QUF5RWpDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEFBQUM7QUFDakIsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ1gsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNoQixVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ3JCLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDVixZQUFZLENBQUMsTUFBTSxDQUFDO0FBQ3pCLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNWLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ2hDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEFBQUM7QUFDbEMsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU0sQUFBQztBQUNYLFNBQVMsQ0FBQyxZQUFZLENBQUM7QUFDaEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQUFBQztBQUNILHFCQUFxQixDQUFDLE1BQU0sQ0FBQztBQUNuQyxlQUFlLENBQUMsTUFBTSxDQUFDO0FBQzlCLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDZixTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDZCxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ1QsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUN2QixPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ1osVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNyQixPQUFPLENBQUMsTUFBTSxDQUFDO0FBQ2hDLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEFBQUM7QUFDeEIsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUNsQixVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ2pCLFdBQVcsQ0FBQyxNQUFNLENBQUM7QUFDbkIsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUNqQixVQUFVLENBQUMsb0JBQW9CLENBQUM7QUM5dkhoRCxNQUFNLEdBQUcsR0FBRyxDQUF1RSxDQUFJLEVBQUUsQ0FBSSxHQUFnQixDQUFDO1FBQ3BILElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQztLQUNULENBQUMsQUFBQztBQXVCSCxNQUFNLFVBQVUsR0FBRyxDQUNsQixHQUFNLEVBQ04sUUFBeUIsRUFDekIsSUFBWSxFQUNaLEtBQTJCLEdBQ3ZCO0lBQ0osTUFBTSxDQUFDLEdBQUcsR0FBRyxBQUFPLEFBQUM7SUFDckIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBSztRQUM1QyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxBQUFDO1FBRXpCLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQzVCLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sR0FBWSxHQUFLO2dCQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7b0JBQ2YsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEFBQUM7b0JBQzlCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxBQUFDO29CQUV0QyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDakI7Z0JBRUQsT0FBTyxDQUFDLEVBQUUsQ0FBQzthQUNYLENBQUMsQ0FBQztTQUNIO1FBRUQsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0tBQzlCLENBQUMsQ0FBQztDQUNIO0FBcURNLE1BQU0sVUFBVSxHQUFHLENBQUksR0FBTSxFQUFFLElBQVksR0FBb0I7SUFDckUsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUs7UUFDN0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQUFBVSxBQUFDO1FBRW5DLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRTtZQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLEFBQXlELEFBQUM7WUFDdEUsT0FBTztnQkFBQyxDQUFDO2dCQUFFLE9BQU8sSUFBUyxHQUFLO29CQUMvQixNQUFNLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLEFBQUM7b0JBQzdDLE1BQU0sRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFBRSxJQUFJLEVBQUUsQ0FBQzt3QkFBRSxNQUFNLEVBQUUsTUFBTTtxQkFBRSxDQUFDLEFBQUM7b0JBRXZELElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUNYLE9BQU8sRUFBRSxDQUFDO3FCQUNWO29CQUVELElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTt3QkFDZCxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEFBQUM7d0JBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFOzRCQUNqQixPQUFPO2dDQUNOLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSzs2QkFDaEIsQ0FBQTt5QkFDRDt3QkFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7cUJBQ2hCO2lCQUNEO2FBQUMsQ0FBQTtTQUNGO1FBRUQsT0FBTztZQUFDLENBQUM7WUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUFDLENBQUM7S0FDN0IsQ0FBQyxDQUFDLENBQWtCO0NBQ3JCLEFBQUM7QUFFSyxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQU0sR0FBMkI7SUFDNUQsT0FBTyxDQUFDLFlBQVksUUFBUSxDQUFDO0NBQzdCO0FBRU0sTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQU0sR0FBc0M7SUFDN0UsT0FBUSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssb0JBQW9CLENBQUU7Q0FDOUQ7QUFFTSxNQUFNLE1BQU0sR0FBRyxDQUFJLEdBQXNCLEdBQVE7SUFDdkQsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDL0MsTUFBTSxHQUFHLENBQUM7S0FDVjtJQUVELE9BQU8sR0FBRyxDQUFDO0NBQ1g7QUM5R00sTUFBTSxJQUFJLEdBQVMsQ0FDekIsR0FBTSxFQUNOLElBQTZDLEVBQzdDLFFBQTBCLEdBQ0k7SUFDOUIsSUFBSSxDQUFDLEdBQWdDLElBQUksQUFBQztJQUMxQyxJQUFJLFFBQVEsRUFBRTtRQUNiLElBQUksQ0FBQyxBQUFnQixBQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM1QixDQUFDLEdBQUcsUUFBUSxDQUFDO1NBQ2IsTUFBTTtZQUNOLENBQUMsR0FBRztnQkFBQyxRQUFRO2FBQUMsQ0FBQztTQUNmO1FBRUQsQ0FBQyxHQUFHO1lBQ0gsR0FBSSxJQUFJO1lBQ1IsUUFBUSxFQUFFLENBQUM7U0FDWCxDQUFDO0tBQ0YsTUFBTSxJQUFJLElBQUksRUFBRTtRQUNoQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsQ0FBQyxHQUFHO2dCQUFFLFFBQVEsRUFBRSxJQUFJO2FBQUUsQUFBTyxDQUFDO1NBQzlCLE1BQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxZQUFZLElBQUksRUFBRTtZQUM1RCxDQUFDLEdBQUc7Z0JBQUUsUUFBUSxFQUFFO29CQUFDLElBQUk7aUJBQUM7YUFBRSxBQUFPLENBQUM7U0FDaEMsTUFBTTtZQUNOLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDVDtLQUNEO0lBQ0QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxBQUFDLEFBQUM7SUFDWixJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDaEIsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsR0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEFBQU8sQ0FBQztLQUNsRDtJQUVELE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztDQUNyQixBQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsQ0FDYixHQUFNLEVBQ04sSUFBaUMsR0FDSDtJQUM5QixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxBQUF1QyxBQUFDO0lBQzlFLElBQUksSUFBSSxFQUFFO1FBQ1QsTUFBTSxFQUFFLFFBQVEsQ0FBQSxFQUFFLEVBQUUsQ0FBQSxFQUFFLFVBQVUsQ0FBQSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxBQUFDO1FBRW5ELElBQUksUUFBUSxFQUFFO1lBQ2IsRUFBRSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUNELElBQUksRUFBRSxFQUFFO1lBQ1AsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBSztnQkFDdkMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQVEsQ0FBQzthQUNsQyxDQUFDLENBQUM7U0FDSDtRQUNELElBQUksVUFBVSxFQUFFO1lBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBSztnQkFDMUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFzQixDQUFDO2FBQzNDLENBQUMsQ0FBQztTQUNIO1FBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDeEI7SUFFRCxPQUFPLEVBQUUsQ0FBQztDQUNWLEFBQUM7QUN6R0ssTUFBTSwwQkFBMEIsR0FBRyxXQUFPO0lBQ2hELEtBQUssRUFBRSxVQUFNLFlBQVEsQ0FBQztJQUN0QixRQUFRLEVBQUUsVUFBTSxXQUFPO1FBQ3RCLElBQUksRUFBRSxZQUFRO1FBQ2QsU0FBUyxFQUFFLFlBQVEsQ0FBQyxRQUFRLEVBQUU7S0FDOUIsQ0FBQyxDQUFDO0NBQ0gsQ0FBQyxBQUFDO0lBR0ksUUFHTjtVQUhXLFFBQVE7SUFBUixRQUFRLENBQ25CLE1BQUksSUFBRyxNQUFNO0lBREYsUUFBUSxDQUVuQixJQUFFLElBQUcsSUFBSTtHQUZFLFFBQVEsS0FBUixRQUFRO0FBSWIsTUFBTSxnQkFBZ0IsR0FBRyxVQUFNO0lBQ3JDLGVBQVcsUUFBUSxDQUFDO0lBQ3BCLFdBQU87UUFBRSxLQUFLLEVBQUUsWUFBUTtLQUFFLENBQUM7Q0FDM0IsQ0FBQyxBQUFDO0FBR0ksTUFBTSxHQUFHLEdBQUc7SUFDbEIsRUFBRSxFQUFFO1FBQ0gsYUFBYSxFQUFFO1lBQ2QsR0FBRyxFQUFFLElBQUksU0FBUyxFQUFFLDBCQUEwQixDQUFDO1NBQy9DO1FBQ0QsSUFBSSxFQUFFO1lBQ0wsU0FBUyxFQUFFLElBQUksWUFBUSxFQUFFLGdCQUFnQixDQUFDO1NBQzFDO1FBQ0QsT0FBTyxFQUFFO1lBQ1IsU0FBUyxFQUFFLElBQUksWUFBUSxFQUFFLGdCQUFnQixDQUFDO1NBQzFDO0tBQ0Q7Q0FDRCxBQUFDO0FDN0JGLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBTTtJQUNyQixNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsUUFBUSxBQUFDO0lBQzFCLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxBQUFDO0lBQzNDLE9BQU8sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0NBQzVCLENBQUMsRUFBRSxBQUFDO0FBRUwsTUFBTSxXQUFXLEdBQUcsQ0FDbkIsSUFBWSxFQUNaLFNBQTBELEVBQzFELFNBQWtCLEdBQ2Q7SUFDSixNQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssRUFBRTtRQUFFLFNBQVMsRUFBRSxNQUFNO0tBQUUsRUFBRSxJQUFJLENBQUMsQUFBQztJQUN4RCxNQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssRUFBRTtRQUFFLFNBQVMsRUFBRSxRQUFRO0tBQUUsRUFBRSxTQUFTLENBQUMsQUFBQztJQUMvRCxNQUFNLEVBQUUsR0FBRyxTQUFTLEdBQUcsS0FBSyxHQUFHLEVBQUU7UUFDaEMsU0FBUyxFQUFFLElBQUk7UUFDZixJQUFJLEVBQUUsU0FBUztRQUNmLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLEVBQUUsRUFBRTtZQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFO1NBQUU7S0FDN0MsRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLEFBQUM7SUFFaEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxRQUFRLEVBQUU7UUFDN0IsU0FBUyxFQUFFLGVBQWU7UUFDMUIsUUFBUSxFQUFFLENBQUM7S0FDWCxFQUFFO1FBQUMsTUFBTTtRQUFFLE1BQU07S0FBQyxDQUFDLEFBQUM7SUFFckIsTUFBTSxPQUFPLEdBQUcsVUFBWTtRQUMzQixNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDO1FBRW5DLE1BQU0sRUFBRSxHQUFHLE1BQU0sU0FBUyxFQUFFLEFBQUM7UUFDN0IsSUFBSSxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCLE1BQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDLEVBQUU7WUFDakMsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCLE1BQU0sSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7WUFDbEMsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCLE1BQU07WUFDTixNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUN4QixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN6QjtRQUVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7S0FDeEIsQUFBQztJQUVGLE9BQU8sRUFBRSxDQUFDO0lBRVYsT0FBTyxLQUFLLEtBQUssRUFBRTtRQUFFLFNBQVMsRUFBRSxrQkFBa0I7S0FBRyxFQUFFO1FBQUMsTUFBTTtRQUFFLEVBQUU7S0FBQyxDQUFDLENBQUM7Q0FDckU7QUFFRCxNQUFNLElBQUksR0FBRyxVQUFZO0lBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxRQUFRLEFBQUM7SUFFOUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFDcEMsS0FBSyxJQUFJLEVBQUUsT0FBTyxDQUFDO1FBQ25CLEtBQ0MsS0FBSyxFQUNMO1lBQUUsU0FBUyxFQUFFLE9BQU87U0FBRSxFQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsR0FBSSxXQUFXLENBQzlCLENBQUMsRUFDRCxJQUFNLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDakMsQ0FBQyxDQUNGO0tBQ0QsQ0FBQyxBQUFDO0lBRUgsTUFBTSxlQUFlLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFDdkMsS0FBSyxJQUFJLEVBQUUsVUFBVSxDQUFDO1FBQ3RCLEtBQUssS0FBSyxFQUFFO1lBQUUsU0FBUyxFQUFFLFVBQVU7U0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsRUFBRSxHQUFJLFdBQVcsQ0FDMUUsRUFBRSxDQUFDLElBQUksRUFDUCxJQUFNLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQzFDLEVBQUUsQ0FBQyxTQUFTLENBQ1osQ0FBQyxDQUFDO0tBQ0gsQ0FBQyxBQUFDO0lBRUgsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0NBQzdELEFBQUM7QUFFRixJQUFJLEVBQUUsQ0FBQyJ9\n"; const style = "/* Global Element Resets */\n\n*, *::before, *::after {\n\tbox-sizing: border-box;\n\tmargin: 0;\n\tpadding: 0;\n}\n\nul {\n\tlist-style: none;\n}\n\nimg {\n\tmax-width: 100%;\n}\n\nh1 {\n\tmargin-top: 0.5em;\n\tmargin-bottom: 0.5em;\n}\n\n:root {\n\tfont-family: sans;\n\tfont-size: 24px;\n\tfont-stretch: expanded;\n}\n\n:root {\n\tdisplay: flex;\n\tflex-direction: column;\n\tjustify-content: center;\n\talign-items: center;\n\theight: 100vh;\n}\n\nbody {\n\tpadding: 1rem;\n\twidth: 100%;\n\tmax-width: 80ch;\n}\n\n.refresh {\n\tbackground: #137752;\n\tcolor: white;\n\tfont-size: inherit;\n\tpadding: 0.25em;\n\tborder: none;\n\tborder-radius: 7px;\n}\n\n.refresh[disabled] {\n\tbackground: gray;\n}\n\n.status-container {\n\tdisplay: flex;\n\talign-items: stretch;\n}\n\n.status-container > * {\n\tmargin-left: -1px;\n\tmargin-top: -1px;\n}\n\n.status-button {\n\tfont-size: inherit;\n\ttext-align: unset;\n\tflex: 1 1 max-content;\n\n\tborder: 1px solid black;\n\tpadding: 0.5em;\n\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.status-button:hover {\n\tcursor: pointer;\n}\n\n.status-button.up:not(:hover) {\n\tbackground: #DCF9CD;\n}\n\n.status-button.down:not(:hover) {\n\tbackground: #F9CDCD;\n}\n\n.status-button.error:not(:hover) {\n\tbackground: #F9CDCD;\n}\n\n.status-button.up .status {\n\tcolor: green;\n}\n\n.status-button.down .status {\n\tcolor: red;\n}\n\n.status-button.error .status {\n\tcolor: red;\n}\n\n.status-button .name {\n\tflex: 1 1 max-content;\n}\n\n.go {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0.5em;\n\n\tborder: 1px solid black;\n\tcolor: inherit;\n\ttext-decoration: none;\n\tbackground: #C6D4FF;\n}\n\n.go:hover {\n\tfilter: brightness(0.9);\n}\n"; var util; (function(util) { function assertEqual(_cond) {} util.assertEqual = assertEqual; function assertNever(_x) { throw new Error(); } util.assertNever = assertNever; util.arrayToEnum = (items)=>{ const obj = {}; for (const item of items){ obj[item] = item; } return obj; }; util.getValidEnumValues = (obj)=>{ const validKeys = objectKeys(obj).filter((k)=>typeof obj[obj[k]] !== "number"); const filtered = {}; for (const k of validKeys){ filtered[k] = obj[k]; } return objectValues(filtered); }; var objectValues = util.objectValues = (obj)=>{ return objectKeys(obj).map(function(e) { return obj[e]; }); }; var objectKeys = util.objectKeys = typeof Object.keys === "function" ? (obj)=>Object.keys(obj) : (object)=>{ const keys = []; for(const key in object){ if (Object.prototype.hasOwnProperty.call(object, key)) { keys.push(key); } } return keys; }; util.find = (arr, checker)=>{ for (const item of arr){ if (checker(item)) return item; } return undefined; }; util.isInteger = typeof Number.isInteger === "function" ? (val)=>Number.isInteger(val) : (val)=>typeof val === "number" && isFinite(val) && Math.floor(val) === val; function joinValues(array, separator = " | ") { return array.map((val)=>typeof val === "string" ? `'${val}'` : val).join(separator); } util.joinValues = joinValues; })(util || (util = {})); const ZodParsedType = util.arrayToEnum([ "string", "nan", "number", "integer", "float", "boolean", "date", "bigint", "symbol", "function", "undefined", "null", "array", "object", "unknown", "promise", "void", "never", "map", "set", ]); const getParsedType = (data)=>{ const t = typeof data; switch(t){ case "undefined": return ZodParsedType.undefined; case "string": return ZodParsedType.string; case "number": return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number; case "boolean": return ZodParsedType.boolean; case "function": return ZodParsedType.function; case "bigint": return ZodParsedType.bigint; case "object": if (Array.isArray(data)) { return ZodParsedType.array; } if (data === null) { return ZodParsedType.null; } if (data.then && typeof data.then === "function" && data.catch && typeof data.catch === "function") { return ZodParsedType.promise; } if (typeof Map !== "undefined" && data instanceof Map) { return ZodParsedType.map; } if (typeof Set !== "undefined" && data instanceof Set) { return ZodParsedType.set; } if (typeof Date !== "undefined" && data instanceof Date) { return ZodParsedType.date; } return ZodParsedType.object; default: return ZodParsedType.unknown; } }; const makeIssue = (params)=>{ const { data , path , errorMaps , issueData } = params; const fullPath = [ ...path, ...issueData.path || [] ]; const fullIssue = { ...issueData, path: fullPath }; let errorMessage = ""; const maps = errorMaps.filter((m)=>!!m).slice().reverse(); for (const map of maps){ errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message; } return { ...issueData, path: fullPath, message: issueData.message || errorMessage }; }; const ZodIssueCode = util.arrayToEnum([ "invalid_type", "invalid_literal", "custom", "invalid_union", "invalid_union_discriminator", "invalid_enum_value", "unrecognized_keys", "invalid_arguments", "invalid_return_type", "invalid_date", "invalid_string", "too_small", "too_big", "invalid_intersection_types", "not_multiple_of", ]); function getErrorMap() { return overrideErrorMap; } const jsonStringifyReplacer = (_, value)=>{ if (typeof value === "bigint") { return value.toString(); } return value; }; class ZodError extends Error { issues = []; get errors() { return this.issues; } constructor(issues){ super(); const actualProto = new.target.prototype; if (Object.setPrototypeOf) { Object.setPrototypeOf(this, actualProto); } else { this.__proto__ = actualProto; } this.name = "ZodError"; this.issues = issues; } format(_mapper) { const mapper = _mapper || function(issue) { return issue.message; }; const fieldErrors = { _errors: [] }; const processError = (error)=>{ for (const issue of error.issues){ if (issue.code === "invalid_union") { issue.unionErrors.map(processError); } else if (issue.code === "invalid_return_type") { processError(issue.returnTypeError); } else if (issue.code === "invalid_arguments") { processError(issue.argumentsError); } else if (issue.path.length === 0) { fieldErrors._errors.push(mapper(issue)); } else { let curr = fieldErrors; let i = 0; while(i < issue.path.length){ const el = issue.path[i]; const terminal = i === issue.path.length - 1; if (!terminal) { curr[el] = curr[el] || { _errors: [] }; } else { curr[el] = curr[el] || { _errors: [] }; curr[el]._errors.push(mapper(issue)); } curr = curr[el]; i++; } } } }; processError(this); return fieldErrors; } static create = (issues)=>{ const error = new ZodError(issues); return error; }; toString() { return this.message; } get message() { return JSON.stringify(this.issues, jsonStringifyReplacer, 2); } get isEmpty() { return this.issues.length === 0; } addIssue = (sub)=>{ this.issues = [ ...this.issues, sub ]; }; addIssues = (subs = [])=>{ this.issues = [ ...this.issues, ...subs ]; }; flatten(mapper = (issue)=>issue.message) { const fieldErrors = {}; const formErrors = []; for (const sub of this.issues){ if (sub.path.length > 0) { fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || []; fieldErrors[sub.path[0]].push(mapper(sub)); } else { formErrors.push(mapper(sub)); } } return { formErrors, fieldErrors }; } get formErrors() { return this.flatten(); } } const defaultErrorMap = (issue, _ctx)=>{ let message; switch(issue.code){ case ZodIssueCode.invalid_type: if (issue.received === ZodParsedType.undefined) { message = "Required"; } else { message = `Expected ${issue.expected}, received ${issue.received}`; } break; case ZodIssueCode.invalid_literal: message = `Invalid literal value, expected ${JSON.stringify(issue.expected, jsonStringifyReplacer)}`; break; case ZodIssueCode.unrecognized_keys: message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, ", ")}`; break; case ZodIssueCode.invalid_union: message = `Invalid input`; break; case ZodIssueCode.invalid_union_discriminator: message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`; break; case ZodIssueCode.invalid_enum_value: message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`; break; case ZodIssueCode.invalid_arguments: message = `Invalid function arguments`; break; case ZodIssueCode.invalid_return_type: message = `Invalid function return type`; break; case ZodIssueCode.invalid_date: message = `Invalid date`; break; case ZodIssueCode.invalid_string: if (typeof issue.validation === "object") { if ("startsWith" in issue.validation) { message = `Invalid input: must start with "${issue.validation.startsWith}"`; } else if ("endsWith" in issue.validation) { message = `Invalid input: must end with "${issue.validation.endsWith}"`; } else { util.assertNever(issue.validation); } } else if (issue.validation !== "regex") { message = `Invalid ${issue.validation}`; } else { message = "Invalid"; } break; case ZodIssueCode.too_small: if (issue.type === "array") message = `Array must contain ${issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`; else if (issue.type === "string") message = `String must contain ${issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`; else if (issue.type === "number") message = `Number must be greater than ${issue.inclusive ? `or equal to ` : ``}${issue.minimum}`; else if (issue.type === "date") message = `Date must be greater than ${issue.inclusive ? `or equal to ` : ``}${new Date(issue.minimum)}`; else message = "Invalid input"; break; case ZodIssueCode.too_big: if (issue.type === "array") message = `Array must contain ${issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`; else if (issue.type === "string") message = `String must contain ${issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`; else if (issue.type === "number") message = `Number must be less than ${issue.inclusive ? `or equal to ` : ``}${issue.maximum}`; else if (issue.type === "date") message = `Date must be smaller than ${issue.inclusive ? `or equal to ` : ``}${new Date(issue.maximum)}`; else message = "Invalid input"; break; case ZodIssueCode.custom: message = `Invalid input`; break; case ZodIssueCode.invalid_intersection_types: message = `Intersection results could not be merged`; break; case ZodIssueCode.not_multiple_of: message = `Number must be a multiple of ${issue.multipleOf}`; break; default: message = _ctx.defaultError; util.assertNever(issue); } return { message }; }; function addIssueToContext(ctx, issueData) { const issue = makeIssue({ issueData: issueData, data: ctx.data, path: ctx.path, errorMaps: [ ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap ].filter((x)=>!!x) }); ctx.common.issues.push(issue); } class ParseStatus { value = "valid"; dirty() { if (this.value === "valid") this.value = "dirty"; } abort() { if (this.value !== "aborted") this.value = "aborted"; } static mergeArray(status, results) { const arrayValue = []; for (const s of results){ if (s.status === "aborted") return INVALID; if (s.status === "dirty") status.dirty(); arrayValue.push(s.value); } return { status: status.value, value: arrayValue }; } static async mergeObjectAsync(status, pairs) { const syncPairs = []; for (const pair of pairs){ syncPairs.push({ key: await pair.key, value: await pair.value }); } return ParseStatus.mergeObjectSync(status, syncPairs); } static mergeObjectSync(status, pairs) { const finalObject = {}; for (const pair of pairs){ const { key , value } = pair; if (key.status === "aborted") return INVALID; if (value.status === "aborted") return INVALID; if (key.status === "dirty") status.dirty(); if (value.status === "dirty") status.dirty(); if (typeof value.value !== "undefined" || pair.alwaysSet) { finalObject[key.value] = value.value; } } return { status: status.value, value: finalObject }; } } const INVALID = Object.freeze({ status: "aborted" }); const OK = (value)=>({ status: "valid", value }); const isAborted = (x)=>x.status === "aborted"; const isDirty = (x)=>x.status === "dirty"; const isValid = (x)=>x.status === "valid"; const isAsync = (x)=>typeof Promise !== undefined && x instanceof Promise; let overrideErrorMap = defaultErrorMap; var errorUtil; (function(errorUtil) { errorUtil.errToObj = (message)=>typeof message === "string" ? { message } : message || {}; errorUtil.toString = (message)=>typeof message === "string" ? message : message?.message; })(errorUtil || (errorUtil = {})); class ParseInputLazyPath { parent; data; _path; _key; constructor(parent, value, path, key){ this.parent = parent; this.data = value; this._path = path; this._key = key; } get path() { return this._path.concat(this._key); } } const handleResult = (ctx, result)=>{ if (isValid(result)) { return { success: true, data: result.value }; } else { if (!ctx.common.issues.length) { throw new Error("Validation failed but no issues detected."); } const error = new ZodError(ctx.common.issues); return { success: false, error }; } }; function processCreateParams(params) { if (!params) return {}; const { errorMap , invalid_type_error , required_error , description } = params; if (errorMap && (invalid_type_error || required_error)) { throw new Error(`Can't use "invalid" or "required" in conjunction with custom error map.`); } if (errorMap) return { errorMap: errorMap, description }; const customMap = (iss, ctx)=>{ if (iss.code !== "invalid_type") return { message: ctx.defaultError }; if (typeof ctx.data === "undefined") { return { message: required_error ?? ctx.defaultError }; } return { message: invalid_type_error ?? ctx.defaultError }; }; return { errorMap: customMap, description }; } class ZodType { _type; _output; _input; _def; get description() { return this._def.description; } _getType(input) { return getParsedType(input.data); } _getOrReturnCtx(input, ctx) { return ctx || { common: input.parent.common, data: input.data, parsedType: getParsedType(input.data), schemaErrorMap: this._def.errorMap, path: input.path, parent: input.parent }; } _processInputParams(input) { return { status: new ParseStatus(), ctx: { common: input.parent.common, data: input.data, parsedType: getParsedType(input.data), schemaErrorMap: this._def.errorMap, path: input.path, parent: input.parent } }; } _parseSync(input) { const result = this._parse(input); if (isAsync(result)) { throw new Error("Synchronous parse encountered promise."); } return result; } _parseAsync(input) { const result = this._parse(input); return Promise.resolve(result); } parse(data, params) { const result = this.safeParse(data, params); if (result.success) return result.data; throw result.error; } safeParse(data, params) { const ctx = { common: { issues: [], async: params?.async ?? false, contextualErrorMap: params?.errorMap }, path: params?.path || [], schemaErrorMap: this._def.errorMap, parent: null, data, parsedType: getParsedType(data) }; const result = this._parseSync({ data, path: ctx.path, parent: ctx }); return handleResult(ctx, result); } async parseAsync(data, params) { const result = await this.safeParseAsync(data, params); if (result.success) return result.data; throw result.error; } async safeParseAsync(data, params) { const ctx = { common: { issues: [], contextualErrorMap: params?.errorMap, async: true }, path: params?.path || [], schemaErrorMap: this._def.errorMap, parent: null, data, parsedType: getParsedType(data) }; const maybeAsyncResult = this._parse({ data, path: [], parent: ctx }); const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult)); return handleResult(ctx, result); } spa = this.safeParseAsync; refine(check, message) { const getIssueProperties = (val)=>{ if (typeof message === "string" || typeof message === "undefined") { return { message }; } else if (typeof message === "function") { return message(val); } else { return message; } }; return this._refinement((val, ctx)=>{ const result = check(val); const setError = ()=>ctx.addIssue({ code: ZodIssueCode.custom, ...getIssueProperties(val) }); if (typeof Promise !== "undefined" && result instanceof Promise) { return result.then((data)=>{ if (!data) { setError(); return false; } else { return true; } }); } if (!result) { setError(); return false; } else { return true; } }); } refinement(check, refinementData) { return this._refinement((val, ctx)=>{ if (!check(val)) { ctx.addIssue(typeof refinementData === "function" ? refinementData(val, ctx) : refinementData); return false; } else { return true; } }); } _refinement(refinement) { return new ZodEffects({ schema: this, typeName: ZodFirstPartyTypeKind.ZodEffects, effect: { type: "refinement", refinement } }); } superRefine = this._refinement; constructor(def){ this._def = def; this.parse = this.parse.bind(this); this.safeParse = this.safeParse.bind(this); this.parseAsync = this.parseAsync.bind(this); this.safeParseAsync = this.safeParseAsync.bind(this); this.spa = this.spa.bind(this); this.refine = this.refine.bind(this); this.refinement = this.refinement.bind(this); this.superRefine = this.superRefine.bind(this); this.optional = this.optional.bind(this); this.nullable = this.nullable.bind(this); this.nullish = this.nullish.bind(this); this.array = this.array.bind(this); this.promise = this.promise.bind(this); this.or = this.or.bind(this); this.and = this.and.bind(this); this.transform = this.transform.bind(this); this.default = this.default.bind(this); this.describe = this.describe.bind(this); this.isNullable = this.isNullable.bind(this); this.isOptional = this.isOptional.bind(this); } optional() { return ZodOptional.create(this); } nullable() { return ZodNullable.create(this); } nullish() { return this.optional().nullable(); } array() { return ZodArray.create(this); } promise() { return ZodPromise.create(this); } or(option) { return ZodUnion.create([ this, option ]); } and(incoming) { return ZodIntersection.create(this, incoming); } transform(transform) { return new ZodEffects({ schema: this, typeName: ZodFirstPartyTypeKind.ZodEffects, effect: { type: "transform", transform } }); } default(def) { const defaultValueFunc = typeof def === "function" ? def : ()=>def; return new ZodDefault({ innerType: this, defaultValue: defaultValueFunc, typeName: ZodFirstPartyTypeKind.ZodDefault }); } describe(description) { const This = this.constructor; return new This({ ...this._def, description }); } isOptional() { return this.safeParse(undefined).success; } isNullable() { return this.safeParse(null).success; } } const cuidRegex = /^c[^\s-]{8,}$/i; const uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i; const emailRegex = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i; class ZodString extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.string) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.string, received: ctx.parsedType }); return INVALID; } const status = new ParseStatus(); let ctx1 = undefined; for (const check of this._def.checks){ if (check.kind === "min") { if (input.data.length < check.value) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.too_small, minimum: check.value, type: "string", inclusive: true, message: check.message }); status.dirty(); } } else if (check.kind === "max") { if (input.data.length > check.value) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.too_big, maximum: check.value, type: "string", inclusive: true, message: check.message }); status.dirty(); } } else if (check.kind === "email") { if (!emailRegex.test(input.data)) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { validation: "email", code: ZodIssueCode.invalid_string, message: check.message }); status.dirty(); } } else if (check.kind === "uuid") { if (!uuidRegex.test(input.data)) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { validation: "uuid", code: ZodIssueCode.invalid_string, message: check.message }); status.dirty(); } } else if (check.kind === "cuid") { if (!cuidRegex.test(input.data)) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { validation: "cuid", code: ZodIssueCode.invalid_string, message: check.message }); status.dirty(); } } else if (check.kind === "url") { try { new URL(input.data); } catch { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { validation: "url", code: ZodIssueCode.invalid_string, message: check.message }); status.dirty(); } } else if (check.kind === "regex") { check.regex.lastIndex = 0; const testResult = check.regex.test(input.data); if (!testResult) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { validation: "regex", code: ZodIssueCode.invalid_string, message: check.message }); status.dirty(); } } else if (check.kind === "trim") { input.data = input.data.trim(); } else if (check.kind === "startsWith") { if (!input.data.startsWith(check.value)) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.invalid_string, validation: { startsWith: check.value }, message: check.message }); status.dirty(); } } else if (check.kind === "endsWith") { if (!input.data.endsWith(check.value)) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.invalid_string, validation: { endsWith: check.value }, message: check.message }); status.dirty(); } } else { util.assertNever(check); } } return { status: status.value, value: input.data }; } _regex = (regex, validation, message)=>this.refinement((data)=>regex.test(data), { validation, code: ZodIssueCode.invalid_string, ...errorUtil.errToObj(message) }); _addCheck(check) { return new ZodString({ ...this._def, checks: [ ...this._def.checks, check ] }); } email(message) { return this._addCheck({ kind: "email", ...errorUtil.errToObj(message) }); } url(message) { return this._addCheck({ kind: "url", ...errorUtil.errToObj(message) }); } uuid(message) { return this._addCheck({ kind: "uuid", ...errorUtil.errToObj(message) }); } cuid(message) { return this._addCheck({ kind: "cuid", ...errorUtil.errToObj(message) }); } regex(regex, message) { return this._addCheck({ kind: "regex", regex: regex, ...errorUtil.errToObj(message) }); } startsWith(value, message) { return this._addCheck({ kind: "startsWith", value: value, ...errorUtil.errToObj(message) }); } endsWith(value, message) { return this._addCheck({ kind: "endsWith", value: value, ...errorUtil.errToObj(message) }); } min(minLength, message) { return this._addCheck({ kind: "min", value: minLength, ...errorUtil.errToObj(message) }); } max(maxLength, message) { return this._addCheck({ kind: "max", value: maxLength, ...errorUtil.errToObj(message) }); } length(len, message) { return this.min(len, message).max(len, message); } nonempty = (message)=>this.min(1, errorUtil.errToObj(message)); trim = ()=>new ZodString({ ...this._def, checks: [ ...this._def.checks, { kind: "trim" } ] }); get isEmail() { return !!this._def.checks.find((ch)=>ch.kind === "email"); } get isURL() { return !!this._def.checks.find((ch)=>ch.kind === "url"); } get isUUID() { return !!this._def.checks.find((ch)=>ch.kind === "uuid"); } get isCUID() { return !!this._def.checks.find((ch)=>ch.kind === "cuid"); } get minLength() { let min = null; for (const ch of this._def.checks){ if (ch.kind === "min") { if (min === null || ch.value > min) min = ch.value; } } return min; } get maxLength() { let max = null; for (const ch of this._def.checks){ if (ch.kind === "max") { if (max === null || ch.value < max) max = ch.value; } } return max; } static create = (params)=>{ return new ZodString({ checks: [], typeName: ZodFirstPartyTypeKind.ZodString, ...processCreateParams(params) }); }; } function floatSafeRemainder(val, step) { const valDecCount = (val.toString().split(".")[1] || "").length; const stepDecCount = (step.toString().split(".")[1] || "").length; const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount; const valInt = parseInt(val.toFixed(decCount).replace(".", "")); const stepInt = parseInt(step.toFixed(decCount).replace(".", "")); return valInt % stepInt / Math.pow(10, decCount); } class ZodNumber extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.number) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.number, received: ctx.parsedType }); return INVALID; } let ctx1 = undefined; const status = new ParseStatus(); for (const check of this._def.checks){ if (check.kind === "int") { if (!util.isInteger(input.data)) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.invalid_type, expected: "integer", received: "float", message: check.message }); status.dirty(); } } else if (check.kind === "min") { const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value; if (tooSmall) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.too_small, minimum: check.value, type: "number", inclusive: check.inclusive, message: check.message }); status.dirty(); } } else if (check.kind === "max") { const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value; if (tooBig) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.too_big, maximum: check.value, type: "number", inclusive: check.inclusive, message: check.message }); status.dirty(); } } else if (check.kind === "multipleOf") { if (floatSafeRemainder(input.data, check.value) !== 0) { ctx1 = this._getOrReturnCtx(input, ctx1); addIssueToContext(ctx1, { code: ZodIssueCode.not_multiple_of, multipleOf: check.value, message: check.message }); status.dirty(); } } else { util.assertNever(check); } } return { status: status.value, value: input.data }; } static create = (params)=>{ return new ZodNumber({ checks: [], typeName: ZodFirstPartyTypeKind.ZodNumber, ...processCreateParams(params) }); }; gte(value, message) { return this.setLimit("min", value, true, errorUtil.toString(message)); } min = this.gte; gt(value, message) { return this.setLimit("min", value, false, errorUtil.toString(message)); } lte(value, message) { return this.setLimit("max", value, true, errorUtil.toString(message)); } max = this.lte; lt(value, message) { return this.setLimit("max", value, false, errorUtil.toString(message)); } setLimit(kind, value, inclusive, message) { return new ZodNumber({ ...this._def, checks: [ ...this._def.checks, { kind, value, inclusive, message: errorUtil.toString(message) }, ] }); } _addCheck(check) { return new ZodNumber({ ...this._def, checks: [ ...this._def.checks, check ] }); } int(message) { return this._addCheck({ kind: "int", message: errorUtil.toString(message) }); } positive(message) { return this._addCheck({ kind: "min", value: 0, inclusive: false, message: errorUtil.toString(message) }); } negative(message) { return this._addCheck({ kind: "max", value: 0, inclusive: false, message: errorUtil.toString(message) }); } nonpositive(message) { return this._addCheck({ kind: "max", value: 0, inclusive: true, message: errorUtil.toString(message) }); } nonnegative(message) { return this._addCheck({ kind: "min", value: 0, inclusive: true, message: errorUtil.toString(message) }); } multipleOf(value, message) { return this._addCheck({ kind: "multipleOf", value: value, message: errorUtil.toString(message) }); } step = this.multipleOf; get minValue() { let min = null; for (const ch of this._def.checks){ if (ch.kind === "min") { if (min === null || ch.value > min) min = ch.value; } } return min; } get maxValue() { let max = null; for (const ch of this._def.checks){ if (ch.kind === "max") { if (max === null || ch.value < max) max = ch.value; } } return max; } get isInt() { return !!this._def.checks.find((ch)=>ch.kind === "int"); } } class ZodBigInt extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.bigint) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.bigint, received: ctx.parsedType }); return INVALID; } return OK(input.data); } static create = (params)=>{ return new ZodBigInt({ typeName: ZodFirstPartyTypeKind.ZodBigInt, ...processCreateParams(params) }); }; } class ZodBoolean extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.boolean) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.boolean, received: ctx.parsedType }); return INVALID; } return OK(input.data); } static create = (params)=>{ return new ZodBoolean({ typeName: ZodFirstPartyTypeKind.ZodBoolean, ...processCreateParams(params) }); }; } class ZodDate extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.date) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.date, received: ctx.parsedType }); return INVALID; } if (isNaN(input.data.getTime())) { const ctx1 = this._getOrReturnCtx(input); addIssueToContext(ctx1, { code: ZodIssueCode.invalid_date }); return INVALID; } const status = new ParseStatus(); let ctx2 = undefined; for (const check of this._def.checks){ if (check.kind === "min") { if (input.data.getTime() < check.value) { ctx2 = this._getOrReturnCtx(input, ctx2); addIssueToContext(ctx2, { code: ZodIssueCode.too_small, message: check.message, inclusive: true, minimum: check.value, type: "date" }); status.dirty(); } } else if (check.kind === "max") { if (input.data.getTime() > check.value) { ctx2 = this._getOrReturnCtx(input, ctx2); addIssueToContext(ctx2, { code: ZodIssueCode.too_big, message: check.message, inclusive: true, maximum: check.value, type: "date" }); status.dirty(); } } else { util.assertNever(check); } } return { status: status.value, value: new Date(input.data.getTime()) }; } _addCheck(check) { return new ZodDate({ ...this._def, checks: [ ...this._def.checks, check ] }); } min(minDate, message) { return this._addCheck({ kind: "min", value: minDate.getTime(), message: errorUtil.toString(message) }); } max(maxDate, message) { return this._addCheck({ kind: "max", value: maxDate.getTime(), message: errorUtil.toString(message) }); } get minDate() { let min = null; for (const ch of this._def.checks){ if (ch.kind === "min") { if (min === null || ch.value > min) min = ch.value; } } return min != null ? new Date(min) : null; } get maxDate() { let max = null; for (const ch of this._def.checks){ if (ch.kind === "max") { if (max === null || ch.value < max) max = ch.value; } } return max != null ? new Date(max) : null; } static create = (params)=>{ return new ZodDate({ checks: [], typeName: ZodFirstPartyTypeKind.ZodDate, ...processCreateParams(params) }); }; } class ZodUndefined extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.undefined) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.undefined, received: ctx.parsedType }); return INVALID; } return OK(input.data); } params; static create = (params)=>{ return new ZodUndefined({ typeName: ZodFirstPartyTypeKind.ZodUndefined, ...processCreateParams(params) }); }; } class ZodNull extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.null) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.null, received: ctx.parsedType }); return INVALID; } return OK(input.data); } static create = (params)=>{ return new ZodNull({ typeName: ZodFirstPartyTypeKind.ZodNull, ...processCreateParams(params) }); }; } class ZodAny extends ZodType { _any = true; _parse(input) { return OK(input.data); } static create = (params)=>{ return new ZodAny({ typeName: ZodFirstPartyTypeKind.ZodAny, ...processCreateParams(params) }); }; } class ZodUnknown extends ZodType { _unknown = true; _parse(input) { return OK(input.data); } static create = (params)=>{ return new ZodUnknown({ typeName: ZodFirstPartyTypeKind.ZodUnknown, ...processCreateParams(params) }); }; } class ZodNever extends ZodType { _parse(input) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.never, received: ctx.parsedType }); return INVALID; } static create = (params)=>{ return new ZodNever({ typeName: ZodFirstPartyTypeKind.ZodNever, ...processCreateParams(params) }); }; } class ZodVoid extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.undefined) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.void, received: ctx.parsedType }); return INVALID; } return OK(input.data); } static create = (params)=>{ return new ZodVoid({ typeName: ZodFirstPartyTypeKind.ZodVoid, ...processCreateParams(params) }); }; } class ZodArray extends ZodType { _parse(input) { const { ctx , status } = this._processInputParams(input); const def = this._def; if (ctx.parsedType !== ZodParsedType.array) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.array, received: ctx.parsedType }); return INVALID; } if (def.minLength !== null) { if (ctx.data.length < def.minLength.value) { addIssueToContext(ctx, { code: ZodIssueCode.too_small, minimum: def.minLength.value, type: "array", inclusive: true, message: def.minLength.message }); status.dirty(); } } if (def.maxLength !== null) { if (ctx.data.length > def.maxLength.value) { addIssueToContext(ctx, { code: ZodIssueCode.too_big, maximum: def.maxLength.value, type: "array", inclusive: true, message: def.maxLength.message }); status.dirty(); } } if (ctx.common.async) { return Promise.all(ctx.data.map((item, i)=>{ return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i)); })).then((result)=>{ return ParseStatus.mergeArray(status, result); }); } const result = ctx.data.map((item, i)=>{ return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i)); }); return ParseStatus.mergeArray(status, result); } get element() { return this._def.type; } min(minLength, message) { return new ZodArray({ ...this._def, minLength: { value: minLength, message: errorUtil.toString(message) } }); } max(maxLength, message) { return new ZodArray({ ...this._def, maxLength: { value: maxLength, message: errorUtil.toString(message) } }); } length(len, message) { return this.min(len, message).max(len, message); } nonempty(message) { return this.min(1, message); } static create = (schema, params)=>{ return new ZodArray({ type: schema, minLength: null, maxLength: null, typeName: ZodFirstPartyTypeKind.ZodArray, ...processCreateParams(params) }); }; } var objectUtil; (function(objectUtil) { objectUtil.mergeShapes = (first, second)=>{ return { ...first, ...second }; }; })(objectUtil || (objectUtil = {})); const AugmentFactory = (def)=>(augmentation)=>{ return new ZodObject({ ...def, shape: ()=>({ ...def.shape(), ...augmentation }) }); }; function deepPartialify(schema) { if (schema instanceof ZodObject) { const newShape = {}; for(const key in schema.shape){ const fieldSchema = schema.shape[key]; newShape[key] = ZodOptional.create(deepPartialify(fieldSchema)); } return new ZodObject({ ...schema._def, shape: ()=>newShape }); } else if (schema instanceof ZodArray) { return ZodArray.create(deepPartialify(schema.element)); } else if (schema instanceof ZodOptional) { return ZodOptional.create(deepPartialify(schema.unwrap())); } else if (schema instanceof ZodNullable) { return ZodNullable.create(deepPartialify(schema.unwrap())); } else if (schema instanceof ZodTuple) { return ZodTuple.create(schema.items.map((item)=>deepPartialify(item))); } else { return schema; } } class ZodObject extends ZodType { _shape; _unknownKeys; _catchall; _cached = null; _getCached() { if (this._cached !== null) return this._cached; const shape = this._def.shape(); const keys = util.objectKeys(shape); return this._cached = { shape, keys }; } _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.object) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.object, received: ctx.parsedType }); return INVALID; } const { status , ctx: ctx1 } = this._processInputParams(input); const { shape , keys: shapeKeys } = this._getCached(); const extraKeys = []; for(const key in ctx1.data){ if (!shapeKeys.includes(key)) { extraKeys.push(key); } } const pairs = []; for (const key1 of shapeKeys){ const keyValidator = shape[key1]; const value = ctx1.data[key1]; pairs.push({ key: { status: "valid", value: key1 }, value: keyValidator._parse(new ParseInputLazyPath(ctx1, value, ctx1.path, key1)), alwaysSet: key1 in ctx1.data }); } if (this._def.catchall instanceof ZodNever) { const unknownKeys = this._def.unknownKeys; if (unknownKeys === "passthrough") { for (const key2 of extraKeys){ pairs.push({ key: { status: "valid", value: key2 }, value: { status: "valid", value: ctx1.data[key2] } }); } } else if (unknownKeys === "strict") { if (extraKeys.length > 0) { addIssueToContext(ctx1, { code: ZodIssueCode.unrecognized_keys, keys: extraKeys }); status.dirty(); } } else if (unknownKeys === "strip") {} else { throw new Error(`Internal ZodObject error: invalid unknownKeys value.`); } } else { const catchall = this._def.catchall; for (const key3 of extraKeys){ const value1 = ctx1.data[key3]; pairs.push({ key: { status: "valid", value: key3 }, value: catchall._parse(new ParseInputLazyPath(ctx1, value1, ctx1.path, key3)), alwaysSet: key3 in ctx1.data }); } } if (ctx1.common.async) { return Promise.resolve().then(async ()=>{ const syncPairs = []; for (const pair of pairs){ const key = await pair.key; syncPairs.push({ key, value: await pair.value, alwaysSet: pair.alwaysSet }); } return syncPairs; }).then((syncPairs)=>{ return ParseStatus.mergeObjectSync(status, syncPairs); }); } else { return ParseStatus.mergeObjectSync(status, pairs); } } get shape() { return this._def.shape(); } strict(message) { errorUtil.errToObj; return new ZodObject({ ...this._def, unknownKeys: "strict", ...message !== undefined ? { errorMap: (issue, ctx)=>{ const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError; if (issue.code === "unrecognized_keys") return { message: errorUtil.errToObj(message).message ?? defaultError }; return { message: defaultError }; } } : {} }); } strip() { return new ZodObject({ ...this._def, unknownKeys: "strip" }); } passthrough() { return new ZodObject({ ...this._def, unknownKeys: "passthrough" }); } nonstrict = this.passthrough; augment = AugmentFactory(this._def); extend = AugmentFactory(this._def); setKey(key, schema) { return this.augment({ [key]: schema }); } merge(merging) { const merged = new ZodObject({ unknownKeys: merging._def.unknownKeys, catchall: merging._def.catchall, shape: ()=>objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), typeName: ZodFirstPartyTypeKind.ZodObject }); return merged; } catchall(index) { return new ZodObject({ ...this._def, catchall: index }); } pick(mask) { const shape = {}; util.objectKeys(mask).map((key)=>{ if (this.shape[key]) shape[key] = this.shape[key]; }); return new ZodObject({ ...this._def, shape: ()=>shape }); } omit(mask) { const shape = {}; util.objectKeys(this.shape).map((key)=>{ if (util.objectKeys(mask).indexOf(key) === -1) { shape[key] = this.shape[key]; } }); return new ZodObject({ ...this._def, shape: ()=>shape }); } deepPartial() { return deepPartialify(this); } partial(mask) { const newShape = {}; if (mask) { util.objectKeys(this.shape).map((key)=>{ if (util.objectKeys(mask).indexOf(key) === -1) { newShape[key] = this.shape[key]; } else { newShape[key] = this.shape[key].optional(); } }); return new ZodObject({ ...this._def, shape: ()=>newShape }); } else { for(const key in this.shape){ const fieldSchema = this.shape[key]; newShape[key] = fieldSchema.optional(); } } return new ZodObject({ ...this._def, shape: ()=>newShape }); } required() { const newShape = {}; for(const key in this.shape){ const fieldSchema = this.shape[key]; let newField = fieldSchema; while(newField instanceof ZodOptional){ newField = newField._def.innerType; } newShape[key] = newField; } return new ZodObject({ ...this._def, shape: ()=>newShape }); } keyof() { return createZodEnum(util.objectKeys(this.shape)); } static create = (shape, params)=>{ return new ZodObject({ shape: ()=>shape, unknownKeys: "strip", catchall: ZodNever.create(), typeName: ZodFirstPartyTypeKind.ZodObject, ...processCreateParams(params) }); }; static strictCreate = (shape, params)=>{ return new ZodObject({ shape: ()=>shape, unknownKeys: "strict", catchall: ZodNever.create(), typeName: ZodFirstPartyTypeKind.ZodObject, ...processCreateParams(params) }); }; static lazycreate = (shape, params)=>{ return new ZodObject({ shape, unknownKeys: "strip", catchall: ZodNever.create(), typeName: ZodFirstPartyTypeKind.ZodObject, ...processCreateParams(params) }); }; } class ZodUnion extends ZodType { _parse(input) { const { ctx } = this._processInputParams(input); const options = this._def.options; function handleResults(results) { for (const result of results){ if (result.result.status === "valid") { return result.result; } } for (const result1 of results){ if (result1.result.status === "dirty") { ctx.common.issues.push(...result1.ctx.common.issues); return result1.result; } } const unionErrors = results.map((result)=>new ZodError(result.ctx.common.issues)); addIssueToContext(ctx, { code: ZodIssueCode.invalid_union, unionErrors }); return INVALID; } if (ctx.common.async) { return Promise.all(options.map(async (option)=>{ const childCtx = { ...ctx, common: { ...ctx.common, issues: [] }, parent: null }; return { result: await option._parseAsync({ data: ctx.data, path: ctx.path, parent: childCtx }), ctx: childCtx }; })).then(handleResults); } else { let dirty = undefined; const issues = []; for (const option of options){ const childCtx = { ...ctx, common: { ...ctx.common, issues: [] }, parent: null }; const result = option._parseSync({ data: ctx.data, path: ctx.path, parent: childCtx }); if (result.status === "valid") { return result; } else if (result.status === "dirty" && !dirty) { dirty = { result, ctx: childCtx }; } if (childCtx.common.issues.length) { issues.push(childCtx.common.issues); } } if (dirty) { ctx.common.issues.push(...dirty.ctx.common.issues); return dirty.result; } const unionErrors = issues.map((issues)=>new ZodError(issues)); addIssueToContext(ctx, { code: ZodIssueCode.invalid_union, unionErrors }); return INVALID; } } get options() { return this._def.options; } static create = (types, params)=>{ return new ZodUnion({ options: types, typeName: ZodFirstPartyTypeKind.ZodUnion, ...processCreateParams(params) }); }; } class ZodDiscriminatedUnion extends ZodType { _parse(input) { const { ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.object) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.object, received: ctx.parsedType }); return INVALID; } const discriminator = this.discriminator; const discriminatorValue = ctx.data[discriminator]; const option = this.options.get(discriminatorValue); if (!option) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_union_discriminator, options: this.validDiscriminatorValues, path: [ discriminator ] }); return INVALID; } if (ctx.common.async) { return option._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }); } else { return option._parseSync({ data: ctx.data, path: ctx.path, parent: ctx }); } } get discriminator() { return this._def.discriminator; } get validDiscriminatorValues() { return Array.from(this.options.keys()); } get options() { return this._def.options; } static create(discriminator, types, params) { const options = new Map(); try { types.forEach((type)=>{ const discriminatorValue = type.shape[discriminator].value; options.set(discriminatorValue, type); }); } catch (e) { throw new Error("The discriminator value could not be extracted from all the provided schemas"); } if (options.size !== types.length) { throw new Error("Some of the discriminator values are not unique"); } return new ZodDiscriminatedUnion({ typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion, discriminator, options, ...processCreateParams(params) }); } } function mergeValues(a, b) { const aType = getParsedType(a); const bType = getParsedType(b); if (a === b) { return { valid: true, data: a }; } else if (aType === ZodParsedType.object && bType === ZodParsedType.object) { const bKeys = util.objectKeys(b); const sharedKeys = util.objectKeys(a).filter((key)=>bKeys.indexOf(key) !== -1); const newObj = { ...a, ...b }; for (const key of sharedKeys){ const sharedValue = mergeValues(a[key], b[key]); if (!sharedValue.valid) { return { valid: false }; } newObj[key] = sharedValue.data; } return { valid: true, data: newObj }; } else if (aType === ZodParsedType.array && bType === ZodParsedType.array) { if (a.length !== b.length) { return { valid: false }; } const newArray = []; for(let index = 0; index < a.length; index++){ const itemA = a[index]; const itemB = b[index]; const sharedValue1 = mergeValues(itemA, itemB); if (!sharedValue1.valid) { return { valid: false }; } newArray.push(sharedValue1.data); } return { valid: true, data: newArray }; } else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) { return { valid: true, data: a }; } else { return { valid: false }; } } class ZodIntersection extends ZodType { _parse(input) { const { status , ctx } = this._processInputParams(input); const handleParsed = (parsedLeft, parsedRight)=>{ if (isAborted(parsedLeft) || isAborted(parsedRight)) { return INVALID; } const merged = mergeValues(parsedLeft.value, parsedRight.value); if (!merged.valid) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_intersection_types }); return INVALID; } if (isDirty(parsedLeft) || isDirty(parsedRight)) { status.dirty(); } return { status: status.value, value: merged.data }; }; if (ctx.common.async) { return Promise.all([ this._def.left._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }), this._def.right._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }), ]).then(([left, right])=>handleParsed(left, right)); } else { return handleParsed(this._def.left._parseSync({ data: ctx.data, path: ctx.path, parent: ctx }), this._def.right._parseSync({ data: ctx.data, path: ctx.path, parent: ctx })); } } static create = (left, right, params)=>{ return new ZodIntersection({ left: left, right: right, typeName: ZodFirstPartyTypeKind.ZodIntersection, ...processCreateParams(params) }); }; } class ZodTuple extends ZodType { _parse(input) { const { status , ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.array) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.array, received: ctx.parsedType }); return INVALID; } if (ctx.data.length < this._def.items.length) { addIssueToContext(ctx, { code: ZodIssueCode.too_small, minimum: this._def.items.length, inclusive: true, type: "array" }); return INVALID; } const rest = this._def.rest; if (!rest && ctx.data.length > this._def.items.length) { addIssueToContext(ctx, { code: ZodIssueCode.too_big, maximum: this._def.items.length, inclusive: true, type: "array" }); status.dirty(); } const items = ctx.data.map((item, itemIndex)=>{ const schema = this._def.items[itemIndex] || this._def.rest; if (!schema) return null; return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex)); }).filter((x)=>!!x); if (ctx.common.async) { return Promise.all(items).then((results)=>{ return ParseStatus.mergeArray(status, results); }); } else { return ParseStatus.mergeArray(status, items); } } get items() { return this._def.items; } rest(rest) { return new ZodTuple({ ...this._def, rest }); } static create = (schemas, params)=>{ return new ZodTuple({ items: schemas, typeName: ZodFirstPartyTypeKind.ZodTuple, rest: null, ...processCreateParams(params) }); }; } class ZodRecord extends ZodType { get keySchema() { return this._def.keyType; } get valueSchema() { return this._def.valueType; } _parse(input) { const { status , ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.object) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.object, received: ctx.parsedType }); return INVALID; } const pairs = []; const keyType = this._def.keyType; const valueType = this._def.valueType; for(const key in ctx.data){ pairs.push({ key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)), value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)) }); } if (ctx.common.async) { return ParseStatus.mergeObjectAsync(status, pairs); } else { return ParseStatus.mergeObjectSync(status, pairs); } } get element() { return this._def.valueType; } static create(first, second, third) { if (second instanceof ZodType) { return new ZodRecord({ keyType: first, valueType: second, typeName: ZodFirstPartyTypeKind.ZodRecord, ...processCreateParams(third) }); } return new ZodRecord({ keyType: ZodString.create(), valueType: first, typeName: ZodFirstPartyTypeKind.ZodRecord, ...processCreateParams(second) }); } } class ZodMap extends ZodType { _parse(input) { const { status , ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.map) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.map, received: ctx.parsedType }); return INVALID; } const keyType = this._def.keyType; const valueType = this._def.valueType; const pairs = [ ...ctx.data.entries() ].map(([key, value], index)=>{ return { key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [ index, "key" ])), value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [ index, "value" ])) }; }); if (ctx.common.async) { const finalMap = new Map(); return Promise.resolve().then(async ()=>{ for (const pair of pairs){ const key = await pair.key; const value = await pair.value; if (key.status === "aborted" || value.status === "aborted") { return INVALID; } if (key.status === "dirty" || value.status === "dirty") { status.dirty(); } finalMap.set(key.value, value.value); } return { status: status.value, value: finalMap }; }); } else { const finalMap1 = new Map(); for (const pair of pairs){ const key = pair.key; const value = pair.value; if (key.status === "aborted" || value.status === "aborted") { return INVALID; } if (key.status === "dirty" || value.status === "dirty") { status.dirty(); } finalMap1.set(key.value, value.value); } return { status: status.value, value: finalMap1 }; } } static create = (keyType, valueType, params)=>{ return new ZodMap({ valueType, keyType, typeName: ZodFirstPartyTypeKind.ZodMap, ...processCreateParams(params) }); }; } class ZodSet extends ZodType { _parse(input) { const { status , ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.set) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.set, received: ctx.parsedType }); return INVALID; } const def = this._def; if (def.minSize !== null) { if (ctx.data.size < def.minSize.value) { addIssueToContext(ctx, { code: ZodIssueCode.too_small, minimum: def.minSize.value, type: "set", inclusive: true, message: def.minSize.message }); status.dirty(); } } if (def.maxSize !== null) { if (ctx.data.size > def.maxSize.value) { addIssueToContext(ctx, { code: ZodIssueCode.too_big, maximum: def.maxSize.value, type: "set", inclusive: true, message: def.maxSize.message }); status.dirty(); } } const valueType = this._def.valueType; function finalizeSet(elements) { const parsedSet = new Set(); for (const element of elements){ if (element.status === "aborted") return INVALID; if (element.status === "dirty") status.dirty(); parsedSet.add(element.value); } return { status: status.value, value: parsedSet }; } const elements = [ ...ctx.data.values() ].map((item, i)=>valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i))); if (ctx.common.async) { return Promise.all(elements).then((elements)=>finalizeSet(elements)); } else { return finalizeSet(elements); } } min(minSize, message) { return new ZodSet({ ...this._def, minSize: { value: minSize, message: errorUtil.toString(message) } }); } max(maxSize, message) { return new ZodSet({ ...this._def, maxSize: { value: maxSize, message: errorUtil.toString(message) } }); } size(size, message) { return this.min(size, message).max(size, message); } nonempty(message) { return this.min(1, message); } static create = (valueType, params)=>{ return new ZodSet({ valueType, minSize: null, maxSize: null, typeName: ZodFirstPartyTypeKind.ZodSet, ...processCreateParams(params) }); }; } class ZodFunction extends ZodType { _parse(input) { const { ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.function) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.function, received: ctx.parsedType }); return INVALID; } function makeArgsIssue(args, error) { return makeIssue({ data: args, path: ctx.path, errorMaps: [ ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap, ].filter((x)=>!!x), issueData: { code: ZodIssueCode.invalid_arguments, argumentsError: error } }); } function makeReturnsIssue(returns, error) { return makeIssue({ data: returns, path: ctx.path, errorMaps: [ ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap, ].filter((x)=>!!x), issueData: { code: ZodIssueCode.invalid_return_type, returnTypeError: error } }); } const params = { errorMap: ctx.common.contextualErrorMap }; const fn = ctx.data; if (this._def.returns instanceof ZodPromise) { return OK(async (...args)=>{ const error = new ZodError([]); const parsedArgs = await this._def.args.parseAsync(args, params).catch((e)=>{ error.addIssue(makeArgsIssue(args, e)); throw error; }); const result = await fn(...parsedArgs); const parsedReturns = await this._def.returns._def.type.parseAsync(result, params).catch((e)=>{ error.addIssue(makeReturnsIssue(result, e)); throw error; }); return parsedReturns; }); } else { return OK((...args)=>{ const parsedArgs = this._def.args.safeParse(args, params); if (!parsedArgs.success) { throw new ZodError([ makeArgsIssue(args, parsedArgs.error) ]); } const result = fn(...parsedArgs.data); const parsedReturns = this._def.returns.safeParse(result, params); if (!parsedReturns.success) { throw new ZodError([ makeReturnsIssue(result, parsedReturns.error) ]); } return parsedReturns.data; }); } } parameters() { return this._def.args; } returnType() { return this._def.returns; } args(...items) { return new ZodFunction({ ...this._def, args: ZodTuple.create(items).rest(ZodUnknown.create()) }); } returns(returnType) { return new ZodFunction({ ...this._def, returns: returnType }); } implement(func) { const validatedFunc = this.parse(func); return validatedFunc; } strictImplement(func) { const validatedFunc = this.parse(func); return validatedFunc; } validate = this.implement; static create = (args, returns, params)=>{ return new ZodFunction({ args: args ? args.rest(ZodUnknown.create()) : ZodTuple.create([]).rest(ZodUnknown.create()), returns: returns || ZodUnknown.create(), typeName: ZodFirstPartyTypeKind.ZodFunction, ...processCreateParams(params) }); }; } class ZodLazy extends ZodType { get schema() { return this._def.getter(); } _parse(input) { const { ctx } = this._processInputParams(input); const lazySchema = this._def.getter(); return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx }); } static create = (getter, params)=>{ return new ZodLazy({ getter: getter, typeName: ZodFirstPartyTypeKind.ZodLazy, ...processCreateParams(params) }); }; } class ZodLiteral extends ZodType { _parse(input) { if (input.data !== this._def.value) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_literal, expected: this._def.value }); return INVALID; } return { status: "valid", value: input.data }; } get value() { return this._def.value; } static create = (value, params)=>{ return new ZodLiteral({ value: value, typeName: ZodFirstPartyTypeKind.ZodLiteral, ...processCreateParams(params) }); }; } function createZodEnum(values, params) { return new ZodEnum({ values: values, typeName: ZodFirstPartyTypeKind.ZodEnum, ...processCreateParams(params) }); } class ZodEnum extends ZodType { _parse(input) { if (typeof input.data !== "string") { const ctx = this._getOrReturnCtx(input); const expectedValues = this._def.values; addIssueToContext(ctx, { expected: util.joinValues(expectedValues), received: ctx.parsedType, code: ZodIssueCode.invalid_type }); return INVALID; } if (this._def.values.indexOf(input.data) === -1) { const ctx1 = this._getOrReturnCtx(input); const expectedValues1 = this._def.values; addIssueToContext(ctx1, { received: ctx1.data, code: ZodIssueCode.invalid_enum_value, options: expectedValues1 }); return INVALID; } return OK(input.data); } get options() { return this._def.values; } get enum() { const enumValues = {}; for (const val of this._def.values){ enumValues[val] = val; } return enumValues; } get Values() { const enumValues = {}; for (const val of this._def.values){ enumValues[val] = val; } return enumValues; } get Enum() { const enumValues = {}; for (const val of this._def.values){ enumValues[val] = val; } return enumValues; } static create = createZodEnum; } class ZodNativeEnum extends ZodType { _parse(input) { const nativeEnumValues = util.getValidEnumValues(this._def.values); const ctx = this._getOrReturnCtx(input); if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) { const expectedValues = util.objectValues(nativeEnumValues); addIssueToContext(ctx, { expected: util.joinValues(expectedValues), received: ctx.parsedType, code: ZodIssueCode.invalid_type }); return INVALID; } if (nativeEnumValues.indexOf(input.data) === -1) { const expectedValues1 = util.objectValues(nativeEnumValues); addIssueToContext(ctx, { received: ctx.data, code: ZodIssueCode.invalid_enum_value, options: expectedValues1 }); return INVALID; } return OK(input.data); } get enum() { return this._def.values; } static create = (values, params)=>{ return new ZodNativeEnum({ values: values, typeName: ZodFirstPartyTypeKind.ZodNativeEnum, ...processCreateParams(params) }); }; } class ZodPromise extends ZodType { _parse(input) { const { ctx } = this._processInputParams(input); if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) { addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.promise, received: ctx.parsedType }); return INVALID; } const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data); return OK(promisified.then((data)=>{ return this._def.type.parseAsync(data, { path: ctx.path, errorMap: ctx.common.contextualErrorMap }); })); } static create = (schema, params)=>{ return new ZodPromise({ type: schema, typeName: ZodFirstPartyTypeKind.ZodPromise, ...processCreateParams(params) }); }; } class ZodEffects extends ZodType { innerType() { return this._def.schema; } _parse(input) { const { status , ctx } = this._processInputParams(input); const effect = this._def.effect || null; if (effect.type === "preprocess") { const processed = effect.transform(ctx.data); if (ctx.common.async) { return Promise.resolve(processed).then((processed)=>{ return this._def.schema._parseAsync({ data: processed, path: ctx.path, parent: ctx }); }); } else { return this._def.schema._parseSync({ data: processed, path: ctx.path, parent: ctx }); } } const checkCtx = { addIssue: (arg)=>{ addIssueToContext(ctx, arg); if (arg.fatal) { status.abort(); } else { status.dirty(); } }, get path () { return ctx.path; } }; checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx); if (effect.type === "refinement") { const executeRefinement = (acc)=>{ const result = effect.refinement(acc, checkCtx); if (ctx.common.async) { return Promise.resolve(result); } if (result instanceof Promise) { throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); } return acc; }; if (ctx.common.async === false) { const inner = this._def.schema._parseSync({ data: ctx.data, path: ctx.path, parent: ctx }); if (inner.status === "aborted") return INVALID; if (inner.status === "dirty") status.dirty(); executeRefinement(inner.value); return { status: status.value, value: inner.value }; } else { return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner)=>{ if (inner.status === "aborted") return INVALID; if (inner.status === "dirty") status.dirty(); return executeRefinement(inner.value).then(()=>{ return { status: status.value, value: inner.value }; }); }); } } if (effect.type === "transform") { if (ctx.common.async === false) { const base = this._def.schema._parseSync({ data: ctx.data, path: ctx.path, parent: ctx }); if (!isValid(base)) return base; const result = effect.transform(base.value, checkCtx); if (result instanceof Promise) { throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`); } return { status: status.value, value: result }; } else { return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base)=>{ if (!isValid(base)) return base; return Promise.resolve(effect.transform(base.value, checkCtx)).then((result)=>({ status: status.value, value: result })); }); } } util.assertNever(effect); } static create = (schema, effect, params)=>{ return new ZodEffects({ schema, typeName: ZodFirstPartyTypeKind.ZodEffects, effect, ...processCreateParams(params) }); }; static createWithPreprocess = (preprocess, schema, params)=>{ return new ZodEffects({ schema, effect: { type: "preprocess", transform: preprocess }, typeName: ZodFirstPartyTypeKind.ZodEffects, ...processCreateParams(params) }); }; } class ZodOptional extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType === ZodParsedType.undefined) { return OK(undefined); } return this._def.innerType._parse(input); } unwrap() { return this._def.innerType; } static create = (type, params)=>{ return new ZodOptional({ innerType: type, typeName: ZodFirstPartyTypeKind.ZodOptional, ...processCreateParams(params) }); }; } class ZodNullable extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType === ZodParsedType.null) { return OK(null); } return this._def.innerType._parse(input); } unwrap() { return this._def.innerType; } static create = (type, params)=>{ return new ZodNullable({ innerType: type, typeName: ZodFirstPartyTypeKind.ZodNullable, ...processCreateParams(params) }); }; } class ZodDefault extends ZodType { _parse(input) { const { ctx } = this._processInputParams(input); let data = ctx.data; if (ctx.parsedType === ZodParsedType.undefined) { data = this._def.defaultValue(); } return this._def.innerType._parse({ data, path: ctx.path, parent: ctx }); } removeDefault() { return this._def.innerType; } static create = (type, params)=>{ return new ZodOptional({ innerType: type, typeName: ZodFirstPartyTypeKind.ZodOptional, ...processCreateParams(params) }); }; } class ZodNaN extends ZodType { _parse(input) { const parsedType = this._getType(input); if (parsedType !== ZodParsedType.nan) { const ctx = this._getOrReturnCtx(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, expected: ZodParsedType.nan, received: ctx.parsedType }); return INVALID; } return { status: "valid", value: input.data }; } static create = (params)=>{ return new ZodNaN({ typeName: ZodFirstPartyTypeKind.ZodNaN, ...processCreateParams(params) }); }; } ({ object: ZodObject.lazycreate }); var ZodFirstPartyTypeKind; (function(ZodFirstPartyTypeKind) { ZodFirstPartyTypeKind["ZodString"] = "ZodString"; ZodFirstPartyTypeKind["ZodNumber"] = "ZodNumber"; ZodFirstPartyTypeKind["ZodNaN"] = "ZodNaN"; ZodFirstPartyTypeKind["ZodBigInt"] = "ZodBigInt"; ZodFirstPartyTypeKind["ZodBoolean"] = "ZodBoolean"; ZodFirstPartyTypeKind["ZodDate"] = "ZodDate"; ZodFirstPartyTypeKind["ZodUndefined"] = "ZodUndefined"; ZodFirstPartyTypeKind["ZodNull"] = "ZodNull"; ZodFirstPartyTypeKind["ZodAny"] = "ZodAny"; ZodFirstPartyTypeKind["ZodUnknown"] = "ZodUnknown"; ZodFirstPartyTypeKind["ZodNever"] = "ZodNever"; ZodFirstPartyTypeKind["ZodVoid"] = "ZodVoid"; ZodFirstPartyTypeKind["ZodArray"] = "ZodArray"; ZodFirstPartyTypeKind["ZodObject"] = "ZodObject"; ZodFirstPartyTypeKind["ZodUnion"] = "ZodUnion"; ZodFirstPartyTypeKind["ZodDiscriminatedUnion"] = "ZodDiscriminatedUnion"; ZodFirstPartyTypeKind["ZodIntersection"] = "ZodIntersection"; ZodFirstPartyTypeKind["ZodTuple"] = "ZodTuple"; ZodFirstPartyTypeKind["ZodRecord"] = "ZodRecord"; ZodFirstPartyTypeKind["ZodMap"] = "ZodMap"; ZodFirstPartyTypeKind["ZodSet"] = "ZodSet"; ZodFirstPartyTypeKind["ZodFunction"] = "ZodFunction"; ZodFirstPartyTypeKind["ZodLazy"] = "ZodLazy"; ZodFirstPartyTypeKind["ZodLiteral"] = "ZodLiteral"; ZodFirstPartyTypeKind["ZodEnum"] = "ZodEnum"; ZodFirstPartyTypeKind["ZodEffects"] = "ZodEffects"; ZodFirstPartyTypeKind["ZodNativeEnum"] = "ZodNativeEnum"; ZodFirstPartyTypeKind["ZodOptional"] = "ZodOptional"; ZodFirstPartyTypeKind["ZodNullable"] = "ZodNullable"; ZodFirstPartyTypeKind["ZodDefault"] = "ZodDefault"; ZodFirstPartyTypeKind["ZodPromise"] = "ZodPromise"; })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {})); const stringType = ZodString.create; const numberType = ZodNumber.create; ZodNaN.create; ZodBigInt.create; ZodBoolean.create; ZodDate.create; ZodUndefined.create; ZodNull.create; ZodAny.create; ZodUnknown.create; ZodNever.create; ZodVoid.create; const arrayType = ZodArray.create; const objectType = ZodObject.create; ZodObject.strictCreate; const unionType = ZodUnion.create; ZodDiscriminatedUnion.create; ZodIntersection.create; ZodTuple.create; const recordType = ZodRecord.create; ZodMap.create; ZodSet.create; ZodFunction.create; ZodLazy.create; const literalType = ZodLiteral.create; ZodEnum.create; const nativeEnumType = ZodNativeEnum.create; ZodPromise.create; ZodEffects.create; ZodOptional.create; ZodNullable.create; ZodEffects.createWithPreprocess; const sig = (i, o)=>({ _sig: true, input: i, output: o }); const makeServe_ = (api, handlers, path, paths)=>{ const a = api; Object.entries(handlers).forEach(([k, v])=>{ const p = `${path}/${k}`; if (typeof v === "function") { paths.set(p, async (req)=>{ if (a[k].input) { const body = await req.json(); const parsed = a[k].input.parse(body); return v(parsed); } return v(); }); } makeServe_(a[k], v, p, paths); }); }; const makeServe = (api, handlers, path)=>{ const paths = new Map(); makeServe_(api, handlers, path, paths); return async (req)=>{ const path = new URL(req.url).pathname; const handler = paths.get(path); if (!handler) { return new Response(null, { status: 404 }); } const res = await handler(req); return new Response(res && JSON.stringify(res)); }; }; const makeClient = (api, path)=>{ return Object.fromEntries(Object.entries(api).map(([k, v])=>{ const p = `${path}/${k}`; if ("_sig" in v) { const v_ = v; return [ k, async (body)=>{ const b = body ? JSON.stringify(body) : null; const re = await fetch(p, { body: b, method: "POST" }); if (!re.ok) { return re; } if (v_.output) { const res = await v_.output.safeParseAsync(await re.json()); if (!res.success) { return { error: res.error }; } return res.data; } } ]; } return [ k, makeClient(v, p) ]; })); }; const GetConfigurationResponseV1 = objectType({ hosts: arrayType(stringType()), services: arrayType(objectType({ name: stringType(), publicUrl: stringType().optional() })) }); var StatusV1; (function(StatusV1) { StatusV1["Down"] = "down"; StatusV1["Up"] = "up"; })(StatusV1 || (StatusV1 = {})); const StatusResponseV1 = unionType([ nativeEnumType(StatusV1), objectType({ error: stringType() }), ]); const api = { v1: { configuration: { get: sig(undefined, GetConfigurationResponseV1) }, host: { getStatus: sig(stringType(), StatusResponseV1) }, service: { getStatus: sig(stringType(), StatusResponseV1) } } }; const HttpService = objectType({ type: literalType("http"), url: stringType(), publicUrl: stringType().optional() }); const Configuration = objectType({ hostname: stringType().optional(), port: numberType().optional(), hosts: recordType(stringType()), services: recordType(HttpService) }); const load = async ()=>{ const contents = await Deno.readTextFile("./config.json"); const json = JSON.parse(contents); const config = await Configuration.parseAsync(json); return config; }; const handlers = { v1: { configuration: { get: async ()=>{ const config = await load(); const res = { hosts: Object.keys(config.hosts), services: Object.entries(config.services).map(([k, v])=>({ name: k, publicUrl: v.publicUrl })) }; return res; } }, host: { getStatus: async (hostname)=>{ const config = await load(); if (!(hostname in config.hosts)) { return { error: "unknown host" }; } const status = await Deno.run({ cmd: [ "ping", "-c1", "-W2", config.hosts[hostname] ], stdout: "null", stdin: "null", stderr: "null" }).status(); if (!status.success) { return StatusV1.Down; } return StatusV1.Up; } }, service: { getStatus: async (serviceName)=>{ const config = await load(); return getServiceStatus(serviceName, config); } } } }; const serve1 = makeServe(api, handlers, "/api"); const getServiceStatus = async (serviceName, config)=>{ const sc = config.services[serviceName]; if (!sc) { return { error: "unknown service" }; } switch(sc.type){ case "http": { const status = await fetch(sc.url); return status.ok ? StatusV1.Up : StatusV1.Down; } } }; const notFound = (_req)=>{ return new Response("Not found", { status: 404 }); }; const internalServerError = (_req, e)=>{ console.error(e); return new Response("Something went wrong", { status: 500 }); }; const apiHandler = filter((req)=>new URL(req.url).pathname.split("/")[1] === "api", setHeaders([ [ "content-type", "application/json" ] ], serve1)); const root = (req)=>{ if (!req.url.endsWith("/")) { return null; } return new Response(` Statue `, { headers: { "content-type": "text/html" } }); }; const listener3 = log(compressResponse(catching(orElse(apiHandler, orElse(root, notFound)), internalServerError))); const config = await load(); const port = config.port ?? 8888; const host = config.hostname ?? "localhost"; const server = serve(listener3, { hostname: host, port }); await server; export { notFound as notFound }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL191dGlsL2Fzc2VydC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL2RhdGV0aW1lL2Zvcm1hdHRlci50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL2RhdGV0aW1lL21vZC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL2h0dHAvaHR0cF9zdGF0dXMudHMiLCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDkuMC9odHRwL2h0dHBfZXJyb3JzLnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQ5LjAvYXN5bmMvZGVsYXkudHMiLCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDkuMC9odHRwL3NlcnZlci50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL21lZGlhX3R5cGVzL3ZlbmRvci9taW1lLWRiLnYxLjUyLjAudHMiLCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDkuMC9tZWRpYV90eXBlcy9fdXRpbC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL21lZGlhX3R5cGVzL21vZC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL191dGlsL29zLnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQ5LjAvcGF0aC9fY29uc3RhbnRzLnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQ5LjAvcGF0aC9fdXRpbC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAwLjE0OS4wL3BhdGgvd2luMzIudHMiLCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNDkuMC9wYXRoL3Bvc2l4LnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQ5LjAvcGF0aC9nbG9iLnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQDAuMTQ5LjAvcGF0aC9tb2QudHMiLCJodHRwczovL2dpdC5pZHlsbHMubmV0L2lkeWxscy9zaGlydC9yYXcvYnJhbmNoL21haW4vbW9kLnRzIiwiZmlsZTovLy9ob21lL2lkeWxscy9lbHlzaXVtL3N0YXR1ZS9idWlsZC9mcm9udGVuZC50cyIsImZpbGU6Ly8vaG9tZS9pZHlsbHMvZWx5c2l1bS9zdGF0dWUvYnVpbGQvc3R5bGUudHMiLCJodHRwczovL2Rlbm8ubGFuZC94L3pvZEB2My4xNy4xMC9oZWxwZXJzL3V0aWwudHMiLCJodHRwczovL2Rlbm8ubGFuZC94L3pvZEB2My4xNy4xMC9oZWxwZXJzL3BhcnNlVXRpbC50cyIsImh0dHBzOi8vZGVuby5sYW5kL3gvem9kQHYzLjE3LjEwL1pvZEVycm9yLnRzIiwiaHR0cHM6Ly9kZW5vLmxhbmQveC96b2RAdjMuMTcuMTAvaGVscGVycy9lcnJvclV0aWwudHMiLCJodHRwczovL2Rlbm8ubGFuZC94L3pvZEB2My4xNy4xMC90eXBlcy50cyIsImh0dHBzOi8vZ2l0LmlkeWxscy5uZXQvaWR5bGxzL3lheXBpL3Jhdy9icmFuY2gvbWFpbi9tb2QudHMiLCJmaWxlOi8vL2hvbWUvaWR5bGxzL2VseXNpdW0vc3RhdHVlL2NvbW1vbi9hcGkudHMiLCJmaWxlOi8vL2hvbWUvaWR5bGxzL2VseXNpdW0vc3RhdHVlL2JhY2tlbmQvY29uZmlnLnRzIiwiZmlsZTovLy9ob21lL2lkeWxscy9lbHlzaXVtL3N0YXR1ZS9iYWNrZW5kL2FwaS50cyIsImZpbGU6Ly8vaG9tZS9pZHlsbHMvZWx5c2l1bS9zdGF0dWUvYmFja2VuZC9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCBjbGFzcyBEZW5vU3RkSW50ZXJuYWxFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gXCJEZW5vU3RkSW50ZXJuYWxFcnJvclwiO1xuICB9XG59XG5cbi8qKiBNYWtlIGFuIGFzc2VydGlvbiwgaWYgbm90IGB0cnVlYCwgdGhlbiB0aHJvdy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoZXhwcjogdW5rbm93biwgbXNnID0gXCJcIik6IGFzc2VydHMgZXhwciB7XG4gIGlmICghZXhwcikge1xuICAgIHRocm93IG5ldyBEZW5vU3RkSW50ZXJuYWxFcnJvcihtc2cpO1xuICB9XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQge1xuICBDYWxsYmFja1Jlc3VsdCxcbiAgUmVjZWl2ZXJSZXN1bHQsXG4gIFJ1bGUsXG4gIFRlc3RGdW5jdGlvbixcbiAgVGVzdFJlc3VsdCxcbiAgVG9rZW5pemVyLFxufSBmcm9tIFwiLi90b2tlbml6ZXIudHNcIjtcblxuZnVuY3Rpb24gZGlnaXRzKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIGNvdW50ID0gMik6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmcodmFsdWUpLnBhZFN0YXJ0KGNvdW50LCBcIjBcIik7XG59XG5cbi8vIGFzIGRlY2xhcmVkIGFzIGluIG5hbWVzcGFjZSBJbnRsXG50eXBlIERhdGVUaW1lRm9ybWF0UGFydFR5cGVzID1cbiAgfCBcImRheVwiXG4gIHwgXCJkYXlQZXJpb2RcIlxuICAvLyB8IFwiZXJhXCJcbiAgfCBcImhvdXJcIlxuICB8IFwibGl0ZXJhbFwiXG4gIHwgXCJtaW51dGVcIlxuICB8IFwibW9udGhcIlxuICB8IFwic2Vjb25kXCJcbiAgfCBcInRpbWVab25lTmFtZVwiXG4gIC8vIHwgXCJ3ZWVrZGF5XCJcbiAgfCBcInllYXJcIlxuICB8IFwiZnJhY3Rpb25hbFNlY29uZFwiO1xuXG5pbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXRQYXJ0IHtcbiAgdHlwZTogRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXM7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbnR5cGUgVGltZVpvbmUgPSBcIlVUQ1wiO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIHRpbWVab25lPzogVGltZVpvbmU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpdGVyYWxUZXN0RnVuY3Rpb24odmFsdWU6IHN0cmluZyk6IFRlc3RGdW5jdGlvbiB7XG4gIHJldHVybiAoc3RyaW5nOiBzdHJpbmcpOiBUZXN0UmVzdWx0ID0+IHtcbiAgICByZXR1cm4gc3RyaW5nLnN0YXJ0c1dpdGgodmFsdWUpXG4gICAgICA/IHsgdmFsdWUsIGxlbmd0aDogdmFsdWUubGVuZ3RoIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXRjaFRlc3RGdW5jdGlvbihtYXRjaDogUmVnRXhwKTogVGVzdEZ1bmN0aW9uIHtcbiAgcmV0dXJuIChzdHJpbmc6IHN0cmluZyk6IFRlc3RSZXN1bHQgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IG1hdGNoLmV4ZWMoc3RyaW5nKTtcbiAgICBpZiAocmVzdWx0KSByZXR1cm4geyB2YWx1ZTogcmVzdWx0LCBsZW5ndGg6IHJlc3VsdFswXS5sZW5ndGggfTtcbiAgfTtcbn1cblxuLy8gYWNjb3JkaW5nIHRvIHVuaWNvZGUgc3ltYm9scyAoaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlKVxuY29uc3QgZGVmYXVsdFJ1bGVzID0gW1xuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcInl5eXlcIiksXG4gICAgZm46ICgpOiBDYWxsYmFja1Jlc3VsdCA9PiAoeyB0eXBlOiBcInllYXJcIiwgdmFsdWU6IFwibnVtZXJpY1wiIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcInl5XCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJ5ZWFyXCIsIHZhbHVlOiBcIjItZGlnaXRcIiB9KSxcbiAgfSxcblxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcIk1NXCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJtb250aFwiLCB2YWx1ZTogXCIyLWRpZ2l0XCIgfSksXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiBjcmVhdGVMaXRlcmFsVGVzdEZ1bmN0aW9uKFwiTVwiKSxcbiAgICBmbjogKCk6IENhbGxiYWNrUmVzdWx0ID0+ICh7IHR5cGU6IFwibW9udGhcIiwgdmFsdWU6IFwibnVtZXJpY1wiIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcImRkXCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJkYXlcIiwgdmFsdWU6IFwiMi1kaWdpdFwiIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcImRcIiksXG4gICAgZm46ICgpOiBDYWxsYmFja1Jlc3VsdCA9PiAoeyB0eXBlOiBcImRheVwiLCB2YWx1ZTogXCJudW1lcmljXCIgfSksXG4gIH0sXG5cbiAge1xuICAgIHRlc3Q6IGNyZWF0ZUxpdGVyYWxUZXN0RnVuY3Rpb24oXCJISFwiKSxcbiAgICBmbjogKCk6IENhbGxiYWNrUmVzdWx0ID0+ICh7IHR5cGU6IFwiaG91clwiLCB2YWx1ZTogXCIyLWRpZ2l0XCIgfSksXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiBjcmVhdGVMaXRlcmFsVGVzdEZ1bmN0aW9uKFwiSFwiKSxcbiAgICBmbjogKCk6IENhbGxiYWNrUmVzdWx0ID0+ICh7IHR5cGU6IFwiaG91clwiLCB2YWx1ZTogXCJudW1lcmljXCIgfSksXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiBjcmVhdGVMaXRlcmFsVGVzdEZ1bmN0aW9uKFwiaGhcIiksXG4gICAgZm46ICgpOiBDYWxsYmFja1Jlc3VsdCA9PiAoe1xuICAgICAgdHlwZTogXCJob3VyXCIsXG4gICAgICB2YWx1ZTogXCIyLWRpZ2l0XCIsXG4gICAgICBob3VyMTI6IHRydWUsXG4gICAgfSksXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiBjcmVhdGVMaXRlcmFsVGVzdEZ1bmN0aW9uKFwiaFwiKSxcbiAgICBmbjogKCk6IENhbGxiYWNrUmVzdWx0ID0+ICh7XG4gICAgICB0eXBlOiBcImhvdXJcIixcbiAgICAgIHZhbHVlOiBcIm51bWVyaWNcIixcbiAgICAgIGhvdXIxMjogdHJ1ZSxcbiAgICB9KSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IGNyZWF0ZUxpdGVyYWxUZXN0RnVuY3Rpb24oXCJtbVwiKSxcbiAgICBmbjogKCk6IENhbGxiYWNrUmVzdWx0ID0+ICh7IHR5cGU6IFwibWludXRlXCIsIHZhbHVlOiBcIjItZGlnaXRcIiB9KSxcbiAgfSxcbiAge1xuICAgIHRlc3Q6IGNyZWF0ZUxpdGVyYWxUZXN0RnVuY3Rpb24oXCJtXCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJtaW51dGVcIiwgdmFsdWU6IFwibnVtZXJpY1wiIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcInNzXCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJzZWNvbmRcIiwgdmFsdWU6IFwiMi1kaWdpdFwiIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcInNcIiksXG4gICAgZm46ICgpOiBDYWxsYmFja1Jlc3VsdCA9PiAoeyB0eXBlOiBcInNlY29uZFwiLCB2YWx1ZTogXCJudW1lcmljXCIgfSksXG4gIH0sXG4gIHtcbiAgICB0ZXN0OiBjcmVhdGVMaXRlcmFsVGVzdEZ1bmN0aW9uKFwiU1NTXCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJmcmFjdGlvbmFsU2Vjb25kXCIsIHZhbHVlOiAzIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcIlNTXCIpLFxuICAgIGZuOiAoKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHsgdHlwZTogXCJmcmFjdGlvbmFsU2Vjb25kXCIsIHZhbHVlOiAyIH0pLFxuICB9LFxuICB7XG4gICAgdGVzdDogY3JlYXRlTGl0ZXJhbFRlc3RGdW5jdGlvbihcIlNcIiksXG4gICAgZm46ICgpOiBDYWxsYmFja1Jlc3VsdCA9PiAoeyB0eXBlOiBcImZyYWN0aW9uYWxTZWNvbmRcIiwgdmFsdWU6IDEgfSksXG4gIH0sXG5cbiAge1xuICAgIHRlc3Q6IGNyZWF0ZUxpdGVyYWxUZXN0RnVuY3Rpb24oXCJhXCIpLFxuICAgIGZuOiAodmFsdWU6IHVua25vd24pOiBDYWxsYmFja1Jlc3VsdCA9PiAoe1xuICAgICAgdHlwZTogXCJkYXlQZXJpb2RcIixcbiAgICAgIHZhbHVlOiB2YWx1ZSBhcyBzdHJpbmcsXG4gICAgfSksXG4gIH0sXG5cbiAgLy8gcXVvdGVkIGxpdGVyYWxcbiAge1xuICAgIHRlc3Q6IGNyZWF0ZU1hdGNoVGVzdEZ1bmN0aW9uKC9eKCcpKD88dmFsdWU+XFxcXC58W15cXCddKilcXDEvKSxcbiAgICBmbjogKG1hdGNoOiB1bmtub3duKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHtcbiAgICAgIHR5cGU6IFwibGl0ZXJhbFwiLFxuICAgICAgdmFsdWU6IChtYXRjaCBhcyBSZWdFeHBFeGVjQXJyYXkpLmdyb3VwcyEudmFsdWUgYXMgc3RyaW5nLFxuICAgIH0pLFxuICB9LFxuICAvLyBsaXRlcmFsXG4gIHtcbiAgICB0ZXN0OiBjcmVhdGVNYXRjaFRlc3RGdW5jdGlvbigvXi4rP1xccyovKSxcbiAgICBmbjogKG1hdGNoOiB1bmtub3duKTogQ2FsbGJhY2tSZXN1bHQgPT4gKHtcbiAgICAgIHR5cGU6IFwibGl0ZXJhbFwiLFxuICAgICAgdmFsdWU6IChtYXRjaCBhcyBSZWdFeHBFeGVjQXJyYXkpWzBdLFxuICAgIH0pLFxuICB9LFxuXTtcblxudHlwZSBGb3JtYXRQYXJ0ID0ge1xuICB0eXBlOiBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgaG91cjEyPzogYm9vbGVhbjtcbn07XG50eXBlIEZvcm1hdCA9IEZvcm1hdFBhcnRbXTtcblxuZXhwb3J0IGNsYXNzIERhdGVUaW1lRm9ybWF0dGVyIHtcbiAgI2Zvcm1hdDogRm9ybWF0O1xuXG4gIGNvbnN0cnVjdG9yKGZvcm1hdFN0cmluZzogc3RyaW5nLCBydWxlczogUnVsZVtdID0gZGVmYXVsdFJ1bGVzKSB7XG4gICAgY29uc3QgdG9rZW5pemVyID0gbmV3IFRva2VuaXplcihydWxlcyk7XG4gICAgdGhpcy4jZm9ybWF0ID0gdG9rZW5pemVyLnRva2VuaXplKFxuICAgICAgZm9ybWF0U3RyaW5nLFxuICAgICAgKHsgdHlwZSwgdmFsdWUsIGhvdXIxMiB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICB9IGFzIHVua25vd24gYXMgUmVjZWl2ZXJSZXN1bHQ7XG4gICAgICAgIGlmIChob3VyMTIpIHJlc3VsdC5ob3VyMTIgPSBob3VyMTIgYXMgYm9vbGVhbjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgKSBhcyBGb3JtYXQ7XG4gIH1cblxuICBmb3JtYXQoZGF0ZTogRGF0ZSwgb3B0aW9uczogT3B0aW9ucyA9IHt9KTogc3RyaW5nIHtcbiAgICBsZXQgc3RyaW5nID0gXCJcIjtcblxuICAgIGNvbnN0IHV0YyA9IG9wdGlvbnMudGltZVpvbmUgPT09IFwiVVRDXCI7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMuI2Zvcm1hdCkge1xuICAgICAgY29uc3QgdHlwZSA9IHRva2VuLnR5cGU7XG5cbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwieWVhclwiOiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB1dGMgPyBkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgOiBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bWVyaWNcIjoge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gdmFsdWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIjItZGlnaXRcIjoge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gZGlnaXRzKHZhbHVlLCAyKS5zbGljZSgtMik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZvcm1hdHRlckVycm9yOiB2YWx1ZSBcIiR7dG9rZW4udmFsdWV9XCIgaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtb250aFwiOiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSAodXRjID8gZGF0ZS5nZXRVVENNb250aCgpIDogZGF0ZS5nZXRNb250aCgpKSArIDE7XG4gICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bWVyaWNcIjoge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gdmFsdWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIjItZGlnaXRcIjoge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gZGlnaXRzKHZhbHVlLCAyKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgRm9ybWF0dGVyRXJyb3I6IHZhbHVlIFwiJHt0b2tlbi52YWx1ZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImRheVwiOiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSB1dGMgPyBkYXRlLmdldFVUQ0RhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpO1xuICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IHZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCIyLWRpZ2l0XCI6IHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IGRpZ2l0cyh2YWx1ZSwgMik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZvcm1hdHRlckVycm9yOiB2YWx1ZSBcIiR7dG9rZW4udmFsdWV9XCIgaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJob3VyXCI6IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSB1dGMgPyBkYXRlLmdldFVUQ0hvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgdmFsdWUgLT0gdG9rZW4uaG91cjEyICYmIGRhdGUuZ2V0SG91cnMoKSA+IDEyID8gMTIgOiAwO1xuICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IHZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCIyLWRpZ2l0XCI6IHtcbiAgICAgICAgICAgICAgc3RyaW5nICs9IGRpZ2l0cyh2YWx1ZSwgMik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYEZvcm1hdHRlckVycm9yOiB2YWx1ZSBcIiR7dG9rZW4udmFsdWV9XCIgaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtaW51dGVcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdXRjID8gZGF0ZS5nZXRVVENNaW51dGVzKCkgOiBkYXRlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIFwibnVtZXJpY1wiOiB7XG4gICAgICAgICAgICAgIHN0cmluZyArPSB2YWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiMi1kaWdpdFwiOiB7XG4gICAgICAgICAgICAgIHN0cmluZyArPSBkaWdpdHModmFsdWUsIDIpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIGBGb3JtYXR0ZXJFcnJvcjogdmFsdWUgXCIke3Rva2VuLnZhbHVlfVwiIGlzIG5vdCBzdXBwb3J0ZWRgLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic2Vjb25kXCI6IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IHV0YyA/IGRhdGUuZ2V0VVRDU2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bWVyaWNcIjoge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gdmFsdWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIjItZGlnaXRcIjoge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gZGlnaXRzKHZhbHVlLCAyKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgRm9ybWF0dGVyRXJyb3I6IHZhbHVlIFwiJHt0b2tlbi52YWx1ZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImZyYWN0aW9uYWxTZWNvbmRcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gdXRjXG4gICAgICAgICAgICA/IGRhdGUuZ2V0VVRDTWlsbGlzZWNvbmRzKClcbiAgICAgICAgICAgIDogZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcbiAgICAgICAgICBzdHJpbmcgKz0gZGlnaXRzKHZhbHVlLCBOdW1iZXIodG9rZW4udmFsdWUpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBGSVhNRShiYXJ0bG9taWVqdSlcbiAgICAgICAgY2FzZSBcInRpbWVab25lTmFtZVwiOiB7XG4gICAgICAgICAgLy8gc3RyaW5nICs9IHV0YyA/IFwiWlwiIDogdG9rZW4udmFsdWVcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZGF5UGVyaW9kXCI6IHtcbiAgICAgICAgICBzdHJpbmcgKz0gdG9rZW4udmFsdWUgPyAoZGF0ZS5nZXRIb3VycygpID49IDEyID8gXCJQTVwiIDogXCJBTVwiKSA6IFwiXCI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImxpdGVyYWxcIjoge1xuICAgICAgICAgIHN0cmluZyArPSB0b2tlbi52YWx1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgRXJyb3IoYEZvcm1hdHRlckVycm9yOiB7ICR7dG9rZW4udHlwZX0gJHt0b2tlbi52YWx1ZX0gfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cblxuICBwYXJzZVRvUGFydHMoc3RyaW5nOiBzdHJpbmcpOiBEYXRlVGltZUZvcm1hdFBhcnRbXSB7XG4gICAgY29uc3QgcGFydHM6IERhdGVUaW1lRm9ybWF0UGFydFtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRoaXMuI2Zvcm1hdCkge1xuICAgICAgY29uc3QgdHlwZSA9IHRva2VuLnR5cGU7XG5cbiAgICAgIGxldCB2YWx1ZSA9IFwiXCI7XG4gICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInllYXJcIjoge1xuICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSAvXlxcZHsxLDR9Ly5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIjItZGlnaXRcIjoge1xuICAgICAgICAgICAgICB2YWx1ZSA9IC9eXFxkezEsMn0vLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtb250aFwiOiB7XG4gICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bWVyaWNcIjoge1xuICAgICAgICAgICAgICB2YWx1ZSA9IC9eXFxkezEsMn0vLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiMi1kaWdpdFwiOiB7XG4gICAgICAgICAgICAgIHZhbHVlID0gL15cXGR7Mn0vLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibmFycm93XCI6IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSAvXlthLXpBLVpdKy8uZXhlYyhzdHJpbmcpPy5bMF0gYXMgc3RyaW5nO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgXCJzaG9ydFwiOiB7XG4gICAgICAgICAgICAgIHZhbHVlID0gL15bYS16QS1aXSsvLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwibG9uZ1wiOiB7XG4gICAgICAgICAgICAgIHZhbHVlID0gL15bYS16QS1aXSsvLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgUGFyc2VyRXJyb3I6IHZhbHVlIFwiJHt0b2tlbi52YWx1ZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImRheVwiOiB7XG4gICAgICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBcIm51bWVyaWNcIjoge1xuICAgICAgICAgICAgICB2YWx1ZSA9IC9eXFxkezEsMn0vLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiMi1kaWdpdFwiOiB7XG4gICAgICAgICAgICAgIHZhbHVlID0gL15cXGR7Mn0vLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgUGFyc2VyRXJyb3I6IHZhbHVlIFwiJHt0b2tlbi52YWx1ZX1cIiBpcyBub3Qgc3VwcG9ydGVkYCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImhvdXJcIjoge1xuICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSAvXlxcZHsxLDJ9Ly5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGlmICh0b2tlbi5ob3VyMTIgJiYgcGFyc2VJbnQodmFsdWUpID4gMTIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgYFRyeWluZyB0byBwYXJzZSBob3VyIGdyZWF0ZXIgdGhhbiAxMi4gVXNlICdIJyBpbnN0ZWFkIG9mICdoJy5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiMi1kaWdpdFwiOiB7XG4gICAgICAgICAgICAgIHZhbHVlID0gL15cXGR7Mn0vLmV4ZWMoc3RyaW5nKT8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICAgICAgaWYgKHRva2VuLmhvdXIxMiAmJiBwYXJzZUludCh2YWx1ZSkgPiAxMikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICBgVHJ5aW5nIHRvIHBhcnNlIGhvdXIgZ3JlYXRlciB0aGFuIDEyLiBVc2UgJ0hIJyBpbnN0ZWFkIG9mICdoaCcuYCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFBhcnNlckVycm9yOiB2YWx1ZSBcIiR7dG9rZW4udmFsdWV9XCIgaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJtaW51dGVcIjoge1xuICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSAvXlxcZHsxLDJ9Ly5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIjItZGlnaXRcIjoge1xuICAgICAgICAgICAgICB2YWx1ZSA9IC9eXFxkezJ9Ly5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFBhcnNlckVycm9yOiB2YWx1ZSBcIiR7dG9rZW4udmFsdWV9XCIgaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZWNvbmRcIjoge1xuICAgICAgICAgIHN3aXRjaCAodG9rZW4udmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJudW1lcmljXCI6IHtcbiAgICAgICAgICAgICAgdmFsdWUgPSAvXlxcZHsxLDJ9Ly5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIjItZGlnaXRcIjoge1xuICAgICAgICAgICAgICB2YWx1ZSA9IC9eXFxkezJ9Ly5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFBhcnNlckVycm9yOiB2YWx1ZSBcIiR7dG9rZW4udmFsdWV9XCIgaXMgbm90IHN1cHBvcnRlZGAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJmcmFjdGlvbmFsU2Vjb25kXCI6IHtcbiAgICAgICAgICB2YWx1ZSA9IG5ldyBSZWdFeHAoYF5cXFxcZHske3Rva2VuLnZhbHVlfX1gKS5leGVjKHN0cmluZylcbiAgICAgICAgICAgID8uWzBdIGFzIHN0cmluZztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidGltZVpvbmVOYW1lXCI6IHtcbiAgICAgICAgICB2YWx1ZSA9IHRva2VuLnZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZGF5UGVyaW9kXCI6IHtcbiAgICAgICAgICB2YWx1ZSA9IC9eKEF8UClNLy5leGVjKHN0cmluZyk/LlswXSBhcyBzdHJpbmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImxpdGVyYWxcIjoge1xuICAgICAgICAgIGlmICghc3RyaW5nLnN0YXJ0c1dpdGgodG9rZW4udmFsdWUgYXMgc3RyaW5nKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIGBMaXRlcmFsIFwiJHt0b2tlbi52YWx1ZX1cIiBub3QgZm91bmQgXCIke3N0cmluZy5zbGljZSgwLCAyNSl9XCJgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFsdWUgPSB0b2tlbi52YWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IEVycm9yKGAke3Rva2VuLnR5cGV9ICR7dG9rZW4udmFsdWV9YCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgYHZhbHVlIG5vdCB2YWxpZCBmb3IgdG9rZW4geyAke3R5cGV9ICR7dmFsdWV9IH0gJHtcbiAgICAgICAgICAgIHN0cmluZy5zbGljZShcbiAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgMjUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwYXJ0cy5wdXNoKHsgdHlwZSwgdmFsdWUgfSk7XG5cbiAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZSh2YWx1ZS5sZW5ndGgpO1xuICAgIH1cblxuICAgIGlmIChzdHJpbmcubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYGRhdGV0aW1lIHN0cmluZyB3YXMgbm90IGZ1bGx5IHBhcnNlZCEgJHtzdHJpbmcuc2xpY2UoMCwgMjUpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuXG4gIC8qKiBzb3J0ICYgZmlsdGVyIGRhdGVUaW1lRm9ybWF0UGFydCAqL1xuICBzb3J0RGF0ZVRpbWVGb3JtYXRQYXJ0KHBhcnRzOiBEYXRlVGltZUZvcm1hdFBhcnRbXSk6IERhdGVUaW1lRm9ybWF0UGFydFtdIHtcbiAgICBsZXQgcmVzdWx0OiBEYXRlVGltZUZvcm1hdFBhcnRbXSA9IFtdO1xuICAgIGNvbnN0IHR5cGVBcnJheSA9IFtcbiAgICAgIFwieWVhclwiLFxuICAgICAgXCJtb250aFwiLFxuICAgICAgXCJkYXlcIixcbiAgICAgIFwiaG91clwiLFxuICAgICAgXCJtaW51dGVcIixcbiAgICAgIFwic2Vjb25kXCIsXG4gICAgICBcImZyYWN0aW9uYWxTZWNvbmRcIixcbiAgICBdO1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiB0eXBlQXJyYXkpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBwYXJ0cy5maW5kSW5kZXgoKGVsKSA9PiBlbC50eXBlID09PSB0eXBlKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSAtMSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHBhcnRzLnNwbGljZShjdXJyZW50LCAxKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocGFydHMpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwYXJ0c1RvRGF0ZShwYXJ0czogRGF0ZVRpbWVGb3JtYXRQYXJ0W10pOiBEYXRlIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB1dGMgPSBwYXJ0cy5maW5kKFxuICAgICAgKHBhcnQpID0+IHBhcnQudHlwZSA9PT0gXCJ0aW1lWm9uZU5hbWVcIiAmJiBwYXJ0LnZhbHVlID09PSBcIlVUQ1wiLFxuICAgICk7XG5cbiAgICBjb25zdCBkYXlQYXJ0ID0gcGFydHMuZmluZCgocGFydCkgPT4gcGFydC50eXBlID09PSBcImRheVwiKTtcblxuICAgIHV0YyA/IGRhdGUuc2V0VVRDSG91cnMoMCwgMCwgMCwgMCkgOiBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgICAgc3dpdGNoIChwYXJ0LnR5cGUpIHtcbiAgICAgICAgY2FzZSBcInllYXJcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKHBhcnQudmFsdWUucGFkU3RhcnQoNCwgXCIyMFwiKSk7XG4gICAgICAgICAgdXRjID8gZGF0ZS5zZXRVVENGdWxsWWVhcih2YWx1ZSkgOiBkYXRlLnNldEZ1bGxZZWFyKHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibW9udGhcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKHBhcnQudmFsdWUpIC0gMTtcbiAgICAgICAgICBpZiAoZGF5UGFydCkge1xuICAgICAgICAgICAgdXRjXG4gICAgICAgICAgICAgID8gZGF0ZS5zZXRVVENNb250aCh2YWx1ZSwgTnVtYmVyKGRheVBhcnQudmFsdWUpKVxuICAgICAgICAgICAgICA6IGRhdGUuc2V0TW9udGgodmFsdWUsIE51bWJlcihkYXlQYXJ0LnZhbHVlKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHV0YyA/IGRhdGUuc2V0VVRDTW9udGgodmFsdWUpIDogZGF0ZS5zZXRNb250aCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJkYXlcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKHBhcnQudmFsdWUpO1xuICAgICAgICAgIHV0YyA/IGRhdGUuc2V0VVRDRGF0ZSh2YWx1ZSkgOiBkYXRlLnNldERhdGUodmFsdWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJob3VyXCI6IHtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBOdW1iZXIocGFydC52YWx1ZSk7XG4gICAgICAgICAgY29uc3QgZGF5UGVyaW9kID0gcGFydHMuZmluZChcbiAgICAgICAgICAgIChwYXJ0OiBEYXRlVGltZUZvcm1hdFBhcnQpID0+IHBhcnQudHlwZSA9PT0gXCJkYXlQZXJpb2RcIixcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChkYXlQZXJpb2Q/LnZhbHVlID09PSBcIlBNXCIpIHZhbHVlICs9IDEyO1xuICAgICAgICAgIHV0YyA/IGRhdGUuc2V0VVRDSG91cnModmFsdWUpIDogZGF0ZS5zZXRIb3Vycyh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcIm1pbnV0ZVwiOiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBOdW1iZXIocGFydC52YWx1ZSk7XG4gICAgICAgICAgdXRjID8gZGF0ZS5zZXRVVENNaW51dGVzKHZhbHVlKSA6IGRhdGUuc2V0TWludXRlcyh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNlY29uZFwiOiB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBOdW1iZXIocGFydC52YWx1ZSk7XG4gICAgICAgICAgdXRjID8gZGF0ZS5zZXRVVENTZWNvbmRzKHZhbHVlKSA6IGRhdGUuc2V0U2Vjb25kcyh2YWx1ZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImZyYWN0aW9uYWxTZWNvbmRcIjoge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gTnVtYmVyKHBhcnQudmFsdWUpO1xuICAgICAgICAgIHV0YyA/IGRhdGUuc2V0VVRDTWlsbGlzZWNvbmRzKHZhbHVlKSA6IGRhdGUuc2V0TWlsbGlzZWNvbmRzKHZhbHVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIHBhcnNlKHN0cmluZzogc3RyaW5nKTogRGF0ZSB7XG4gICAgY29uc3QgcGFydHMgPSB0aGlzLnBhcnNlVG9QYXJ0cyhzdHJpbmcpO1xuICAgIGNvbnN0IHNvcnRQYXJ0cyA9IHRoaXMuc29ydERhdGVUaW1lRm9ybWF0UGFydChwYXJ0cyk7XG4gICAgcmV0dXJuIHRoaXMucGFydHNUb0RhdGUoc29ydFBhcnRzKTtcbiAgfVxufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8qKlxuICogVXRpbGl0aWVzIGZvciBkZWFsaW5nIHdpdGggYERhdGVgIG9iamVjdHMuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IERhdGVUaW1lRm9ybWF0dGVyIH0gZnJvbSBcIi4vZm9ybWF0dGVyLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBTRUNPTkQgPSAxZTM7XG5leHBvcnQgY29uc3QgTUlOVVRFID0gU0VDT05EICogNjA7XG5leHBvcnQgY29uc3QgSE9VUiA9IE1JTlVURSAqIDYwO1xuZXhwb3J0IGNvbnN0IERBWSA9IEhPVVIgKiAyNDtcbmV4cG9ydCBjb25zdCBXRUVLID0gREFZICogNztcbmNvbnN0IERBWVNfUEVSX1dFRUsgPSA3O1xuXG5lbnVtIERheSB7XG4gIFN1bixcbiAgTW9uLFxuICBUdWUsXG4gIFdlZCxcbiAgVGh1LFxuICBGcmksXG4gIFNhdCxcbn1cblxuLyoqXG4gKiBQYXJzZSBkYXRlIGZyb20gc3RyaW5nIHVzaW5nIGZvcm1hdCBzdHJpbmdcbiAqIEBwYXJhbSBkYXRlU3RyaW5nIERhdGUgc3RyaW5nXG4gKiBAcGFyYW0gZm9ybWF0IEZvcm1hdCBzdHJpbmdcbiAqIEByZXR1cm4gUGFyc2VkIGRhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGRhdGVTdHJpbmc6IHN0cmluZywgZm9ybWF0U3RyaW5nOiBzdHJpbmcpOiBEYXRlIHtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IERhdGVUaW1lRm9ybWF0dGVyKGZvcm1hdFN0cmluZyk7XG4gIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLnBhcnNlVG9QYXJ0cyhkYXRlU3RyaW5nKTtcbiAgY29uc3Qgc29ydFBhcnRzID0gZm9ybWF0dGVyLnNvcnREYXRlVGltZUZvcm1hdFBhcnQocGFydHMpO1xuICByZXR1cm4gZm9ybWF0dGVyLnBhcnRzVG9EYXRlKHNvcnRQYXJ0cyk7XG59XG5cbi8qKlxuICogRm9ybWF0IGRhdGUgdXNpbmcgZm9ybWF0IHN0cmluZ1xuICogQHBhcmFtIGRhdGUgRGF0ZVxuICogQHBhcmFtIGZvcm1hdCBGb3JtYXQgc3RyaW5nXG4gKiBAcmV0dXJuIGZvcm1hdHRlZCBkYXRlIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KGRhdGU6IERhdGUsIGZvcm1hdFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IERhdGVUaW1lRm9ybWF0dGVyKGZvcm1hdFN0cmluZyk7XG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpO1xufVxuXG4vKipcbiAqIEdldCBudW1iZXIgb2YgdGhlIGRheSBpbiB0aGUgeWVhclxuICogQHJldHVybiBOdW1iZXIgb2YgdGhlIGRheSBpbiB5ZWFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gIC8vIFZhbHVlcyBmcm9tIDAgdG8gOTkgbWFwIHRvIHRoZSB5ZWFycyAxOTAwIHRvIDE5OTkuIEFsbCBvdGhlciB2YWx1ZXMgYXJlIHRoZSBhY3R1YWwgeWVhci4gKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGUvRGF0ZSlcbiAgLy8gVXNpbmcgc2V0RnVsbFllYXIgYXMgYSB3b3JrYXJvdW5kXG5cbiAgY29uc3QgeWVhclN0YXJ0ID0gbmV3IERhdGUoZGF0ZSk7XG5cbiAgeWVhclN0YXJ0LnNldFVUQ0Z1bGxZZWFyKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMCk7XG4gIGNvbnN0IGRpZmYgPSBkYXRlLmdldFRpbWUoKSAtXG4gICAgeWVhclN0YXJ0LmdldFRpbWUoKTtcblxuICByZXR1cm4gTWF0aC5mbG9vcihkaWZmIC8gREFZKTtcbn1cbi8qKlxuICogR2V0IG51bWJlciBvZiB0aGUgd2VlayBpbiB0aGUgeWVhciAoSVNPLTg2MDEpXG4gKiBAcmV0dXJuIE51bWJlciBvZiB0aGUgd2VlayBpbiB5ZWFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICBjb25zdCB3b3JraW5nRGF0ZSA9IG5ldyBEYXRlKFxuICAgIERhdGUuVVRDKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCBkYXRlLmdldERhdGUoKSksXG4gICk7XG5cbiAgY29uc3QgZGF5ID0gd29ya2luZ0RhdGUuZ2V0VVRDRGF5KCk7XG5cbiAgY29uc3QgbmVhcmVzdFRodXJzZGF5ID0gd29ya2luZ0RhdGUuZ2V0VVRDRGF0ZSgpICtcbiAgICBEYXkuVGh1IC1cbiAgICAoZGF5ID09PSBEYXkuU3VuID8gREFZU19QRVJfV0VFSyA6IGRheSk7XG5cbiAgd29ya2luZ0RhdGUuc2V0VVRDRGF0ZShuZWFyZXN0VGh1cnNkYXkpO1xuXG4gIC8vIEdldCBmaXJzdCBkYXkgb2YgeWVhclxuICBjb25zdCB5ZWFyU3RhcnQgPSBuZXcgRGF0ZShEYXRlLlVUQyh3b3JraW5nRGF0ZS5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSk7XG5cbiAgLy8gcmV0dXJuIHRoZSBjYWxjdWxhdGVkIGZ1bGwgd2Vla3MgdG8gbmVhcmVzdCBUaHVyc2RheVxuICByZXR1cm4gTWF0aC5jZWlsKCh3b3JraW5nRGF0ZS5nZXRUaW1lKCkgLSB5ZWFyU3RhcnQuZ2V0VGltZSgpICsgREFZKSAvIFdFRUspO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgZGF0ZSB0byByZXR1cm4gYSBJTUYgZm9ybWF0dGVkIHN0cmluZyBkYXRlXG4gKiBSRkM6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNy4xLjEuMVxuICogSU1GIGlzIHRoZSB0aW1lIGZvcm1hdCB0byB1c2Ugd2hlbiBnZW5lcmF0aW5nIHRpbWVzIGluIEhUVFBcbiAqIGhlYWRlcnMuIFRoZSB0aW1lIGJlaW5nIGZvcm1hdHRlZCBtdXN0IGJlIGluIFVUQyBmb3IgRm9ybWF0IHRvXG4gKiBnZW5lcmF0ZSB0aGUgY29ycmVjdCBmb3JtYXQuXG4gKiBAcGFyYW0gZGF0ZSBEYXRlIHRvIHBhcnNlXG4gKiBAcmV0dXJuIElNRiBkYXRlIGZvcm1hdHRlZCBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSU1GKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICBmdW5jdGlvbiBkdFBhZCh2OiBzdHJpbmcsIGxQYWQgPSAyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdi5wYWRTdGFydChsUGFkLCBcIjBcIik7XG4gIH1cbiAgY29uc3QgZCA9IGR0UGFkKGRhdGUuZ2V0VVRDRGF0ZSgpLnRvU3RyaW5nKCkpO1xuICBjb25zdCBoID0gZHRQYWQoZGF0ZS5nZXRVVENIb3VycygpLnRvU3RyaW5nKCkpO1xuICBjb25zdCBtaW4gPSBkdFBhZChkYXRlLmdldFVUQ01pbnV0ZXMoKS50b1N0cmluZygpKTtcbiAgY29uc3QgcyA9IGR0UGFkKGRhdGUuZ2V0VVRDU2Vjb25kcygpLnRvU3RyaW5nKCkpO1xuICBjb25zdCB5ID0gZGF0ZS5nZXRVVENGdWxsWWVhcigpO1xuICBjb25zdCBkYXlzID0gW1wiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsIFwiVGh1XCIsIFwiRnJpXCIsIFwiU2F0XCJdO1xuICBjb25zdCBtb250aHMgPSBbXG4gICAgXCJKYW5cIixcbiAgICBcIkZlYlwiLFxuICAgIFwiTWFyXCIsXG4gICAgXCJBcHJcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuXCIsXG4gICAgXCJKdWxcIixcbiAgICBcIkF1Z1wiLFxuICAgIFwiU2VwXCIsXG4gICAgXCJPY3RcIixcbiAgICBcIk5vdlwiLFxuICAgIFwiRGVjXCIsXG4gIF07XG4gIHJldHVybiBgJHtkYXlzW2RhdGUuZ2V0VVRDRGF5KCldfSwgJHtkfSAke1xuICAgIG1vbnRoc1tkYXRlLmdldFVUQ01vbnRoKCldXG4gIH0gJHt5fSAke2h9OiR7bWlufToke3N9IEdNVGA7XG59XG5cbi8qKlxuICogQ2hlY2sgZ2l2ZW4geWVhciBpcyBhIGxlYXAgeWVhciBvciBub3QuXG4gKiBiYXNlZCBvbiA6IGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL29mZmljZS90cm91Ymxlc2hvb3QvZXhjZWwvZGV0ZXJtaW5lLWEtbGVhcC15ZWFyXG4gKiBAcGFyYW0geWVhciB5ZWFyIGluIG51bWJlciBvciBEYXRlIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMZWFwKHllYXI6IERhdGUgfCBudW1iZXIpOiBib29sZWFuIHtcbiAgY29uc3QgeWVhck51bWJlciA9IHllYXIgaW5zdGFuY2VvZiBEYXRlID8geWVhci5nZXRGdWxsWWVhcigpIDogeWVhcjtcbiAgcmV0dXJuIChcbiAgICAoeWVhck51bWJlciAlIDQgPT09IDAgJiYgeWVhck51bWJlciAlIDEwMCAhPT0gMCkgfHwgeWVhck51bWJlciAlIDQwMCA9PT0gMFxuICApO1xufVxuXG5leHBvcnQgdHlwZSBVbml0ID1cbiAgfCBcIm1pbGxpc2Vjb25kc1wiXG4gIHwgXCJzZWNvbmRzXCJcbiAgfCBcIm1pbnV0ZXNcIlxuICB8IFwiaG91cnNcIlxuICB8IFwiZGF5c1wiXG4gIHwgXCJ3ZWVrc1wiXG4gIHwgXCJtb250aHNcIlxuICB8IFwicXVhcnRlcnNcIlxuICB8IFwieWVhcnNcIjtcblxuZXhwb3J0IHR5cGUgRGlmZmVyZW5jZUZvcm1hdCA9IFBhcnRpYWw8UmVjb3JkPFVuaXQsIG51bWJlcj4+O1xuXG5leHBvcnQgdHlwZSBEaWZmZXJlbmNlT3B0aW9ucyA9IHtcbiAgdW5pdHM/OiBVbml0W107XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGVzLlxuICogQHBhcmFtIGZyb20gWWVhciB0byBjYWxjdWxhdGUgZGlmZmVyZW5jZVxuICogQHBhcmFtIHRvIFllYXIgdG8gY2FsY3VsYXRlIGRpZmZlcmVuY2Ugd2l0aFxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZGV0ZXJtaW5pbmcgaG93IHRvIHJlc3BvbmRcbiAqXG4gKiBleGFtcGxlIDpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgKiBhcyBkYXRldGltZSBmcm9tIFwiLi9tb2QudHNcIjtcbiAqXG4gKiBkYXRldGltZS5kaWZmZXJlbmNlKG5ldyBEYXRlKFwiMjAyMC8xLzFcIiksbmV3IERhdGUoXCIyMDIwLzIvMlwiKSx7IHVuaXRzIDogW1wiZGF5c1wiLFwibW9udGhzXCJdIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2UoXG4gIGZyb206IERhdGUsXG4gIHRvOiBEYXRlLFxuICBvcHRpb25zPzogRGlmZmVyZW5jZU9wdGlvbnMsXG4pOiBEaWZmZXJlbmNlRm9ybWF0IHtcbiAgY29uc3QgdW5pcXVlVW5pdHMgPSBvcHRpb25zPy51bml0cyA/IFsuLi5uZXcgU2V0KG9wdGlvbnM/LnVuaXRzKV0gOiBbXG4gICAgXCJtaWxsaXNlY29uZHNcIixcbiAgICBcInNlY29uZHNcIixcbiAgICBcIm1pbnV0ZXNcIixcbiAgICBcImhvdXJzXCIsXG4gICAgXCJkYXlzXCIsXG4gICAgXCJ3ZWVrc1wiLFxuICAgIFwibW9udGhzXCIsXG4gICAgXCJxdWFydGVyc1wiLFxuICAgIFwieWVhcnNcIixcbiAgXTtcblxuICBjb25zdCBiaWdnZXIgPSBNYXRoLm1heChmcm9tLmdldFRpbWUoKSwgdG8uZ2V0VGltZSgpKTtcbiAgY29uc3Qgc21hbGxlciA9IE1hdGgubWluKGZyb20uZ2V0VGltZSgpLCB0by5nZXRUaW1lKCkpO1xuICBjb25zdCBkaWZmZXJlbmNlSW5NcyA9IGJpZ2dlciAtIHNtYWxsZXI7XG5cbiAgY29uc3QgZGlmZmVyZW5jZXM6IERpZmZlcmVuY2VGb3JtYXQgPSB7fTtcblxuICBmb3IgKGNvbnN0IHVuaXF1ZVVuaXQgb2YgdW5pcXVlVW5pdHMpIHtcbiAgICBzd2l0Y2ggKHVuaXF1ZVVuaXQpIHtcbiAgICAgIGNhc2UgXCJtaWxsaXNlY29uZHNcIjpcbiAgICAgICAgZGlmZmVyZW5jZXMubWlsbGlzZWNvbmRzID0gZGlmZmVyZW5jZUluTXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInNlY29uZHNcIjpcbiAgICAgICAgZGlmZmVyZW5jZXMuc2Vjb25kcyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyBTRUNPTkQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJtaW51dGVzXCI6XG4gICAgICAgIGRpZmZlcmVuY2VzLm1pbnV0ZXMgPSBNYXRoLmZsb29yKGRpZmZlcmVuY2VJbk1zIC8gTUlOVVRFKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaG91cnNcIjpcbiAgICAgICAgZGlmZmVyZW5jZXMuaG91cnMgPSBNYXRoLmZsb29yKGRpZmZlcmVuY2VJbk1zIC8gSE9VUik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRheXNcIjpcbiAgICAgICAgZGlmZmVyZW5jZXMuZGF5cyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyBEQVkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ3ZWVrc1wiOlxuICAgICAgICBkaWZmZXJlbmNlcy53ZWVrcyA9IE1hdGguZmxvb3IoZGlmZmVyZW5jZUluTXMgLyBXRUVLKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibW9udGhzXCI6XG4gICAgICAgIGRpZmZlcmVuY2VzLm1vbnRocyA9IGNhbGN1bGF0ZU1vbnRoc0RpZmZlcmVuY2UoYmlnZ2VyLCBzbWFsbGVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicXVhcnRlcnNcIjpcbiAgICAgICAgZGlmZmVyZW5jZXMucXVhcnRlcnMgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICh0eXBlb2YgZGlmZmVyZW5jZXMubW9udGhzICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgICAgICBkaWZmZXJlbmNlcy5tb250aHMgLyA0KSB8fFxuICAgICAgICAgICAgY2FsY3VsYXRlTW9udGhzRGlmZmVyZW5jZShiaWdnZXIsIHNtYWxsZXIpIC8gNCxcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwieWVhcnNcIjpcbiAgICAgICAgZGlmZmVyZW5jZXMueWVhcnMgPSBNYXRoLmZsb29yKFxuICAgICAgICAgICh0eXBlb2YgZGlmZmVyZW5jZXMubW9udGhzICE9PSBcInVuZGVmaW5lZFwiICYmXG4gICAgICAgICAgICBkaWZmZXJlbmNlcy5tb250aHMgLyAxMikgfHxcbiAgICAgICAgICAgIGNhbGN1bGF0ZU1vbnRoc0RpZmZlcmVuY2UoYmlnZ2VyLCBzbWFsbGVyKSAvIDEyLFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGlmZmVyZW5jZXM7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZU1vbnRoc0RpZmZlcmVuY2UoYmlnZ2VyOiBudW1iZXIsIHNtYWxsZXI6IG51bWJlcik6IG51bWJlciB7XG4gIGNvbnN0IGJpZ2dlckRhdGUgPSBuZXcgRGF0ZShiaWdnZXIpO1xuICBjb25zdCBzbWFsbGVyRGF0ZSA9IG5ldyBEYXRlKHNtYWxsZXIpO1xuICBjb25zdCB5ZWFyc0RpZmYgPSBiaWdnZXJEYXRlLmdldEZ1bGxZZWFyKCkgLSBzbWFsbGVyRGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aHNEaWZmID0gYmlnZ2VyRGF0ZS5nZXRNb250aCgpIC0gc21hbGxlckRhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3QgY2FsZW5kYXJEaWZmZXJlbmNlcyA9IE1hdGguYWJzKHllYXJzRGlmZiAqIDEyICsgbW9udGhzRGlmZik7XG4gIGNvbnN0IGNvbXBhcmVSZXN1bHQgPSBiaWdnZXJEYXRlID4gc21hbGxlckRhdGUgPyAxIDogLTE7XG4gIGJpZ2dlckRhdGUuc2V0TW9udGgoXG4gICAgYmlnZ2VyRGF0ZS5nZXRNb250aCgpIC0gY29tcGFyZVJlc3VsdCAqIGNhbGVuZGFyRGlmZmVyZW5jZXMsXG4gICk7XG4gIGNvbnN0IGlzTGFzdE1vbnRoTm90RnVsbCA9IGJpZ2dlckRhdGUgPiBzbWFsbGVyRGF0ZVxuICAgID8gMVxuICAgIDogLTEgPT09IC1jb21wYXJlUmVzdWx0XG4gICAgPyAxXG4gICAgOiAwO1xuICBjb25zdCBtb250aHMgPSBjb21wYXJlUmVzdWx0ICogKGNhbGVuZGFyRGlmZmVyZW5jZXMgLSBpc0xhc3RNb250aE5vdEZ1bGwpO1xuICByZXR1cm4gbW9udGhzID09PSAwID8gMCA6IG1vbnRocztcbn1cbiIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbi8qKlxuICogQ29udGFpbnMgdGhlIGVudW0ge0BsaW5rY29kZSBTdGF0dXN9IHdoaWNoIGVudW1lcmF0ZXMgc3RhbmRhcmQgSFRUUCBzdGF0dXNcbiAqIGNvZGVzIGFuZCBwcm92aWRlcyBzZXZlcmFsIHR5cGUgZ3VhcmRzIGZvciBoYW5kbGluZyBzdGF0dXMgY29kZXMgd2l0aCB0eXBlXG4gKiBzYWZldHkuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7XG4gKiAgIFN0YXR1cyxcbiAqICAgU1RBVFVTX1RFWFQsXG4gKiB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvaHR0cF9zdGF0dXMudHNcIjtcbiAqXG4gKiBjb25zb2xlLmxvZyhTdGF0dXMuTm90Rm91bmQpOyAvLz0+IDQwNFxuICogY29uc29sZS5sb2coU1RBVFVTX1RFWFRbU3RhdHVzLk5vdEZvdW5kXSk7IC8vPT4gXCJOb3QgRm91bmRcIlxuICogYGBgXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGlzRXJyb3JTdGF0dXMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9odHRwL2h0dHBfc3RhdHVzLnRzXCI7XG4gKlxuICogY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2V4YW1wbGUuY29tL1wiKTtcbiAqXG4gKiBpZiAoaXNFcnJvclN0YXR1cyhyZXMuc3RhdHVzKSkge1xuICogICAvLyBlcnJvciBoYW5kbGluZyBoZXJlLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuLyoqIFN0YW5kYXJkIEhUVFAgc3RhdHVzIGNvZGVzLiAqL1xuZXhwb3J0IGVudW0gU3RhdHVzIHtcbiAgLyoqIFJGQyA3MjMxLCA2LjIuMSAqL1xuICBDb250aW51ZSA9IDEwMCxcbiAgLyoqIFJGQyA3MjMxLCA2LjIuMiAqL1xuICBTd2l0Y2hpbmdQcm90b2NvbHMgPSAxMDEsXG4gIC8qKiBSRkMgMjUxOCwgMTAuMSAqL1xuICBQcm9jZXNzaW5nID0gMTAyLFxuICAvKiogUkZDIDgyOTcgKiovXG4gIEVhcmx5SGludHMgPSAxMDMsXG5cbiAgLyoqIFJGQyA3MjMxLCA2LjMuMSAqL1xuICBPSyA9IDIwMCxcbiAgLyoqIFJGQyA3MjMxLCA2LjMuMiAqL1xuICBDcmVhdGVkID0gMjAxLFxuICAvKiogUkZDIDcyMzEsIDYuMy4zICovXG4gIEFjY2VwdGVkID0gMjAyLFxuICAvKiogUkZDIDcyMzEsIDYuMy40ICovXG4gIE5vbkF1dGhvcml0YXRpdmVJbmZvID0gMjAzLFxuICAvKiogUkZDIDcyMzEsIDYuMy41ICovXG4gIE5vQ29udGVudCA9IDIwNCxcbiAgLyoqIFJGQyA3MjMxLCA2LjMuNiAqL1xuICBSZXNldENvbnRlbnQgPSAyMDUsXG4gIC8qKiBSRkMgNzIzMywgNC4xICovXG4gIFBhcnRpYWxDb250ZW50ID0gMjA2LFxuICAvKiogUkZDIDQ5MTgsIDExLjEgKi9cbiAgTXVsdGlTdGF0dXMgPSAyMDcsXG4gIC8qKiBSRkMgNTg0MiwgNy4xICovXG4gIEFscmVhZHlSZXBvcnRlZCA9IDIwOCxcbiAgLyoqIFJGQyAzMjI5LCAxMC40LjEgKi9cbiAgSU1Vc2VkID0gMjI2LFxuXG4gIC8qKiBSRkMgNzIzMSwgNi40LjEgKi9cbiAgTXVsdGlwbGVDaG9pY2VzID0gMzAwLFxuICAvKiogUkZDIDcyMzEsIDYuNC4yICovXG4gIE1vdmVkUGVybWFuZW50bHkgPSAzMDEsXG4gIC8qKiBSRkMgNzIzMSwgNi40LjMgKi9cbiAgRm91bmQgPSAzMDIsXG4gIC8qKiBSRkMgNzIzMSwgNi40LjQgKi9cbiAgU2VlT3RoZXIgPSAzMDMsXG4gIC8qKiBSRkMgNzIzMiwgNC4xICovXG4gIE5vdE1vZGlmaWVkID0gMzA0LFxuICAvKiogUkZDIDcyMzEsIDYuNC41ICovXG4gIFVzZVByb3h5ID0gMzA1LFxuICAvKiogUkZDIDcyMzEsIDYuNC43ICovXG4gIFRlbXBvcmFyeVJlZGlyZWN0ID0gMzA3LFxuICAvKiogUkZDIDc1MzgsIDMgKi9cbiAgUGVybWFuZW50UmVkaXJlY3QgPSAzMDgsXG5cbiAgLyoqIFJGQyA3MjMxLCA2LjUuMSAqL1xuICBCYWRSZXF1ZXN0ID0gNDAwLFxuICAvKiogUkZDIDcyMzUsIDMuMSAqL1xuICBVbmF1dGhvcml6ZWQgPSA0MDEsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjIgKi9cbiAgUGF5bWVudFJlcXVpcmVkID0gNDAyLFxuICAvKiogUkZDIDcyMzEsIDYuNS4zICovXG4gIEZvcmJpZGRlbiA9IDQwMyxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuNCAqL1xuICBOb3RGb3VuZCA9IDQwNCxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuNSAqL1xuICBNZXRob2ROb3RBbGxvd2VkID0gNDA1LFxuICAvKiogUkZDIDcyMzEsIDYuNS42ICovXG4gIE5vdEFjY2VwdGFibGUgPSA0MDYsXG4gIC8qKiBSRkMgNzIzNSwgMy4yICovXG4gIFByb3h5QXV0aFJlcXVpcmVkID0gNDA3LFxuICAvKiogUkZDIDcyMzEsIDYuNS43ICovXG4gIFJlcXVlc3RUaW1lb3V0ID0gNDA4LFxuICAvKiogUkZDIDcyMzEsIDYuNS44ICovXG4gIENvbmZsaWN0ID0gNDA5LFxuICAvKiogUkZDIDcyMzEsIDYuNS45ICovXG4gIEdvbmUgPSA0MTAsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjEwICovXG4gIExlbmd0aFJlcXVpcmVkID0gNDExLFxuICAvKiogUkZDIDcyMzIsIDQuMiAqL1xuICBQcmVjb25kaXRpb25GYWlsZWQgPSA0MTIsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjExICovXG4gIFJlcXVlc3RFbnRpdHlUb29MYXJnZSA9IDQxMyxcbiAgLyoqIFJGQyA3MjMxLCA2LjUuMTIgKi9cbiAgUmVxdWVzdFVSSVRvb0xvbmcgPSA0MTQsXG4gIC8qKiBSRkMgNzIzMSwgNi41LjEzICovXG4gIFVuc3VwcG9ydGVkTWVkaWFUeXBlID0gNDE1LFxuICAvKiogUkZDIDcyMzMsIDQuNCAqL1xuICBSZXF1ZXN0ZWRSYW5nZU5vdFNhdGlzZmlhYmxlID0gNDE2LFxuICAvKiogUkZDIDcyMzEsIDYuNS4xNCAqL1xuICBFeHBlY3RhdGlvbkZhaWxlZCA9IDQxNyxcbiAgLyoqIFJGQyA3MTY4LCAyLjMuMyAqL1xuICBUZWFwb3QgPSA0MTgsXG4gIC8qKiBSRkMgNzU0MCwgOS4xLjIgKi9cbiAgTWlzZGlyZWN0ZWRSZXF1ZXN0ID0gNDIxLFxuICAvKiogUkZDIDQ5MTgsIDExLjIgKi9cbiAgVW5wcm9jZXNzYWJsZUVudGl0eSA9IDQyMixcbiAgLyoqIFJGQyA0OTE4LCAxMS4zICovXG4gIExvY2tlZCA9IDQyMyxcbiAgLyoqIFJGQyA0OTE4LCAxMS40ICovXG4gIEZhaWxlZERlcGVuZGVuY3kgPSA0MjQsXG4gIC8qKiBSRkMgODQ3MCwgNS4yICovXG4gIFRvb0Vhcmx5ID0gNDI1LFxuICAvKiogUkZDIDcyMzEsIDYuNS4xNSAqL1xuICBVcGdyYWRlUmVxdWlyZWQgPSA0MjYsXG4gIC8qKiBSRkMgNjU4NSwgMyAqL1xuICBQcmVjb25kaXRpb25SZXF1aXJlZCA9IDQyOCxcbiAgLyoqIFJGQyA2NTg1LCA0ICovXG4gIFRvb01hbnlSZXF1ZXN0cyA9IDQyOSxcbiAgLyoqIFJGQyA2NTg1LCA1ICovXG4gIFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZSA9IDQzMSxcbiAgLyoqIFJGQyA3NzI1LCAzICovXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zID0gNDUxLFxuXG4gIC8qKiBSRkMgNzIzMSwgNi42LjEgKi9cbiAgSW50ZXJuYWxTZXJ2ZXJFcnJvciA9IDUwMCxcbiAgLyoqIFJGQyA3MjMxLCA2LjYuMiAqL1xuICBOb3RJbXBsZW1lbnRlZCA9IDUwMSxcbiAgLyoqIFJGQyA3MjMxLCA2LjYuMyAqL1xuICBCYWRHYXRld2F5ID0gNTAyLFxuICAvKiogUkZDIDcyMzEsIDYuNi40ICovXG4gIFNlcnZpY2VVbmF2YWlsYWJsZSA9IDUwMyxcbiAgLyoqIFJGQyA3MjMxLCA2LjYuNSAqL1xuICBHYXRld2F5VGltZW91dCA9IDUwNCxcbiAgLyoqIFJGQyA3MjMxLCA2LjYuNiAqL1xuICBIVFRQVmVyc2lvbk5vdFN1cHBvcnRlZCA9IDUwNSxcbiAgLyoqIFJGQyAyMjk1LCA4LjEgKi9cbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzID0gNTA2LFxuICAvKiogUkZDIDQ5MTgsIDExLjUgKi9cbiAgSW5zdWZmaWNpZW50U3RvcmFnZSA9IDUwNyxcbiAgLyoqIFJGQyA1ODQyLCA3LjIgKi9cbiAgTG9vcERldGVjdGVkID0gNTA4LFxuICAvKiogUkZDIDI3NzQsIDcgKi9cbiAgTm90RXh0ZW5kZWQgPSA1MTAsXG4gIC8qKiBSRkMgNjU4NSwgNiAqL1xuICBOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZCA9IDUxMSxcbn1cblxuLyoqIEEgcmVjb3JkIG9mIGFsbCB0aGUgc3RhdHVzIGNvZGVzIHRleHQuICovXG5leHBvcnQgY29uc3QgU1RBVFVTX1RFWFQ6IFJlYWRvbmx5PFJlY29yZDxTdGF0dXMsIHN0cmluZz4+ID0ge1xuICBbU3RhdHVzLkFjY2VwdGVkXTogXCJBY2NlcHRlZFwiLFxuICBbU3RhdHVzLkFscmVhZHlSZXBvcnRlZF06IFwiQWxyZWFkeSBSZXBvcnRlZFwiLFxuICBbU3RhdHVzLkJhZEdhdGV3YXldOiBcIkJhZCBHYXRld2F5XCIsXG4gIFtTdGF0dXMuQmFkUmVxdWVzdF06IFwiQmFkIFJlcXVlc3RcIixcbiAgW1N0YXR1cy5Db25mbGljdF06IFwiQ29uZmxpY3RcIixcbiAgW1N0YXR1cy5Db250aW51ZV06IFwiQ29udGludWVcIixcbiAgW1N0YXR1cy5DcmVhdGVkXTogXCJDcmVhdGVkXCIsXG4gIFtTdGF0dXMuRWFybHlIaW50c106IFwiRWFybHkgSGludHNcIixcbiAgW1N0YXR1cy5FeHBlY3RhdGlvbkZhaWxlZF06IFwiRXhwZWN0YXRpb24gRmFpbGVkXCIsXG4gIFtTdGF0dXMuRmFpbGVkRGVwZW5kZW5jeV06IFwiRmFpbGVkIERlcGVuZGVuY3lcIixcbiAgW1N0YXR1cy5Gb3JiaWRkZW5dOiBcIkZvcmJpZGRlblwiLFxuICBbU3RhdHVzLkZvdW5kXTogXCJGb3VuZFwiLFxuICBbU3RhdHVzLkdhdGV3YXlUaW1lb3V0XTogXCJHYXRld2F5IFRpbWVvdXRcIixcbiAgW1N0YXR1cy5Hb25lXTogXCJHb25lXCIsXG4gIFtTdGF0dXMuSFRUUFZlcnNpb25Ob3RTdXBwb3J0ZWRdOiBcIkhUVFAgVmVyc2lvbiBOb3QgU3VwcG9ydGVkXCIsXG4gIFtTdGF0dXMuSU1Vc2VkXTogXCJJTSBVc2VkXCIsXG4gIFtTdGF0dXMuSW5zdWZmaWNpZW50U3RvcmFnZV06IFwiSW5zdWZmaWNpZW50IFN0b3JhZ2VcIixcbiAgW1N0YXR1cy5JbnRlcm5hbFNlcnZlckVycm9yXTogXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIixcbiAgW1N0YXR1cy5MZW5ndGhSZXF1aXJlZF06IFwiTGVuZ3RoIFJlcXVpcmVkXCIsXG4gIFtTdGF0dXMuTG9ja2VkXTogXCJMb2NrZWRcIixcbiAgW1N0YXR1cy5Mb29wRGV0ZWN0ZWRdOiBcIkxvb3AgRGV0ZWN0ZWRcIixcbiAgW1N0YXR1cy5NZXRob2ROb3RBbGxvd2VkXTogXCJNZXRob2QgTm90IEFsbG93ZWRcIixcbiAgW1N0YXR1cy5NaXNkaXJlY3RlZFJlcXVlc3RdOiBcIk1pc2RpcmVjdGVkIFJlcXVlc3RcIixcbiAgW1N0YXR1cy5Nb3ZlZFBlcm1hbmVudGx5XTogXCJNb3ZlZCBQZXJtYW5lbnRseVwiLFxuICBbU3RhdHVzLk11bHRpU3RhdHVzXTogXCJNdWx0aSBTdGF0dXNcIixcbiAgW1N0YXR1cy5NdWx0aXBsZUNob2ljZXNdOiBcIk11bHRpcGxlIENob2ljZXNcIixcbiAgW1N0YXR1cy5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZF06IFwiTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwiLFxuICBbU3RhdHVzLk5vQ29udGVudF06IFwiTm8gQ29udGVudFwiLFxuICBbU3RhdHVzLk5vbkF1dGhvcml0YXRpdmVJbmZvXTogXCJOb24gQXV0aG9yaXRhdGl2ZSBJbmZvXCIsXG4gIFtTdGF0dXMuTm90QWNjZXB0YWJsZV06IFwiTm90IEFjY2VwdGFibGVcIixcbiAgW1N0YXR1cy5Ob3RFeHRlbmRlZF06IFwiTm90IEV4dGVuZGVkXCIsXG4gIFtTdGF0dXMuTm90Rm91bmRdOiBcIk5vdCBGb3VuZFwiLFxuICBbU3RhdHVzLk5vdEltcGxlbWVudGVkXTogXCJOb3QgSW1wbGVtZW50ZWRcIixcbiAgW1N0YXR1cy5Ob3RNb2RpZmllZF06IFwiTm90IE1vZGlmaWVkXCIsXG4gIFtTdGF0dXMuT0tdOiBcIk9LXCIsXG4gIFtTdGF0dXMuUGFydGlhbENvbnRlbnRdOiBcIlBhcnRpYWwgQ29udGVudFwiLFxuICBbU3RhdHVzLlBheW1lbnRSZXF1aXJlZF06IFwiUGF5bWVudCBSZXF1aXJlZFwiLFxuICBbU3RhdHVzLlBlcm1hbmVudFJlZGlyZWN0XTogXCJQZXJtYW5lbnQgUmVkaXJlY3RcIixcbiAgW1N0YXR1cy5QcmVjb25kaXRpb25GYWlsZWRdOiBcIlByZWNvbmRpdGlvbiBGYWlsZWRcIixcbiAgW1N0YXR1cy5QcmVjb25kaXRpb25SZXF1aXJlZF06IFwiUHJlY29uZGl0aW9uIFJlcXVpcmVkXCIsXG4gIFtTdGF0dXMuUHJvY2Vzc2luZ106IFwiUHJvY2Vzc2luZ1wiLFxuICBbU3RhdHVzLlByb3h5QXV0aFJlcXVpcmVkXTogXCJQcm94eSBBdXRoIFJlcXVpcmVkXCIsXG4gIFtTdGF0dXMuUmVxdWVzdEVudGl0eVRvb0xhcmdlXTogXCJSZXF1ZXN0IEVudGl0eSBUb28gTGFyZ2VcIixcbiAgW1N0YXR1cy5SZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2VdOiBcIlJlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2VcIixcbiAgW1N0YXR1cy5SZXF1ZXN0VGltZW91dF06IFwiUmVxdWVzdCBUaW1lb3V0XCIsXG4gIFtTdGF0dXMuUmVxdWVzdFVSSVRvb0xvbmddOiBcIlJlcXVlc3QgVVJJIFRvbyBMb25nXCIsXG4gIFtTdGF0dXMuUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZV06IFwiUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZVwiLFxuICBbU3RhdHVzLlJlc2V0Q29udGVudF06IFwiUmVzZXQgQ29udGVudFwiLFxuICBbU3RhdHVzLlNlZU90aGVyXTogXCJTZWUgT3RoZXJcIixcbiAgW1N0YXR1cy5TZXJ2aWNlVW5hdmFpbGFibGVdOiBcIlNlcnZpY2UgVW5hdmFpbGFibGVcIixcbiAgW1N0YXR1cy5Td2l0Y2hpbmdQcm90b2NvbHNdOiBcIlN3aXRjaGluZyBQcm90b2NvbHNcIixcbiAgW1N0YXR1cy5UZWFwb3RdOiBcIkknbSBhIHRlYXBvdFwiLFxuICBbU3RhdHVzLlRlbXBvcmFyeVJlZGlyZWN0XTogXCJUZW1wb3JhcnkgUmVkaXJlY3RcIixcbiAgW1N0YXR1cy5Ub29FYXJseV06IFwiVG9vIEVhcmx5XCIsXG4gIFtTdGF0dXMuVG9vTWFueVJlcXVlc3RzXTogXCJUb28gTWFueSBSZXF1ZXN0c1wiLFxuICBbU3RhdHVzLlVuYXV0aG9yaXplZF06IFwiVW5hdXRob3JpemVkXCIsXG4gIFtTdGF0dXMuVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnNdOiBcIlVuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zXCIsXG4gIFtTdGF0dXMuVW5wcm9jZXNzYWJsZUVudGl0eV06IFwiVW5wcm9jZXNzYWJsZSBFbnRpdHlcIixcbiAgW1N0YXR1cy5VbnN1cHBvcnRlZE1lZGlhVHlwZV06IFwiVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZVwiLFxuICBbU3RhdHVzLlVwZ3JhZGVSZXF1aXJlZF06IFwiVXBncmFkZSBSZXF1aXJlZFwiLFxuICBbU3RhdHVzLlVzZVByb3h5XTogXCJVc2UgUHJveHlcIixcbiAgW1N0YXR1cy5WYXJpYW50QWxzb05lZ290aWF0ZXNdOiBcIlZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzXCIsXG59O1xuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIGluZm9ybWF0aW9uYWwgKDFYWCkuICovXG5leHBvcnQgdHlwZSBJbmZvcm1hdGlvbmFsU3RhdHVzID1cbiAgfCBTdGF0dXMuQ29udGludWVcbiAgfCBTdGF0dXMuU3dpdGNoaW5nUHJvdG9jb2xzXG4gIHwgU3RhdHVzLlByb2Nlc3NpbmdcbiAgfCBTdGF0dXMuRWFybHlIaW50cztcblxuLyoqIEFuIEhUVFAgc3RhdHVzIHRoYXQgaXMgYSBzdWNjZXNzICgyWFgpLiAqL1xuZXhwb3J0IHR5cGUgU3VjY2Vzc2Z1bFN0YXR1cyA9XG4gIHwgU3RhdHVzLk9LXG4gIHwgU3RhdHVzLkNyZWF0ZWRcbiAgfCBTdGF0dXMuQWNjZXB0ZWRcbiAgfCBTdGF0dXMuTm9uQXV0aG9yaXRhdGl2ZUluZm9cbiAgfCBTdGF0dXMuTm9Db250ZW50XG4gIHwgU3RhdHVzLlJlc2V0Q29udGVudFxuICB8IFN0YXR1cy5QYXJ0aWFsQ29udGVudFxuICB8IFN0YXR1cy5NdWx0aVN0YXR1c1xuICB8IFN0YXR1cy5BbHJlYWR5UmVwb3J0ZWRcbiAgfCBTdGF0dXMuSU1Vc2VkO1xuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIHJlZGlyZWN0ICgzWFgpLiAqL1xuZXhwb3J0IHR5cGUgUmVkaXJlY3RTdGF0dXMgPVxuICB8IFN0YXR1cy5NdWx0aXBsZUNob2ljZXMgLy8gMzAwXG4gIHwgU3RhdHVzLk1vdmVkUGVybWFuZW50bHkgLy8gMzAxXG4gIHwgU3RhdHVzLkZvdW5kIC8vIDMwMlxuICB8IFN0YXR1cy5TZWVPdGhlciAvLyAzMDNcbiAgfCBTdGF0dXMuVXNlUHJveHkgLy8gMzA1IC0gREVQUkVDQVRFRFxuICB8IFN0YXR1cy5UZW1wb3JhcnlSZWRpcmVjdCAvLyAzMDdcbiAgfCBTdGF0dXMuUGVybWFuZW50UmVkaXJlY3Q7IC8vIDMwOFxuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIGNsaWVudCBlcnJvciAoNFhYKS4gKi9cbmV4cG9ydCB0eXBlIENsaWVudEVycm9yU3RhdHVzID1cbiAgfCBTdGF0dXMuQmFkUmVxdWVzdFxuICB8IFN0YXR1cy5VbmF1dGhvcml6ZWRcbiAgfCBTdGF0dXMuUGF5bWVudFJlcXVpcmVkXG4gIHwgU3RhdHVzLkZvcmJpZGRlblxuICB8IFN0YXR1cy5Ob3RGb3VuZFxuICB8IFN0YXR1cy5NZXRob2ROb3RBbGxvd2VkXG4gIHwgU3RhdHVzLk5vdEFjY2VwdGFibGVcbiAgfCBTdGF0dXMuUHJveHlBdXRoUmVxdWlyZWRcbiAgfCBTdGF0dXMuUmVxdWVzdFRpbWVvdXRcbiAgfCBTdGF0dXMuQ29uZmxpY3RcbiAgfCBTdGF0dXMuR29uZVxuICB8IFN0YXR1cy5MZW5ndGhSZXF1aXJlZFxuICB8IFN0YXR1cy5QcmVjb25kaXRpb25GYWlsZWRcbiAgfCBTdGF0dXMuUmVxdWVzdEVudGl0eVRvb0xhcmdlXG4gIHwgU3RhdHVzLlJlcXVlc3RVUklUb29Mb25nXG4gIHwgU3RhdHVzLlVuc3VwcG9ydGVkTWVkaWFUeXBlXG4gIHwgU3RhdHVzLlJlcXVlc3RlZFJhbmdlTm90U2F0aXNmaWFibGVcbiAgfCBTdGF0dXMuRXhwZWN0YXRpb25GYWlsZWRcbiAgfCBTdGF0dXMuVGVhcG90XG4gIHwgU3RhdHVzLk1pc2RpcmVjdGVkUmVxdWVzdFxuICB8IFN0YXR1cy5VbnByb2Nlc3NhYmxlRW50aXR5XG4gIHwgU3RhdHVzLkxvY2tlZFxuICB8IFN0YXR1cy5GYWlsZWREZXBlbmRlbmN5XG4gIHwgU3RhdHVzLlVwZ3JhZGVSZXF1aXJlZFxuICB8IFN0YXR1cy5QcmVjb25kaXRpb25SZXF1aXJlZFxuICB8IFN0YXR1cy5Ub29NYW55UmVxdWVzdHNcbiAgfCBTdGF0dXMuUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlXG4gIHwgU3RhdHVzLlVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zO1xuXG4vKiogQW4gSFRUUCBzdGF0dXMgdGhhdCBpcyBhIHNlcnZlciBlcnJvciAoNVhYKS4gKi9cbmV4cG9ydCB0eXBlIFNlcnZlckVycm9yU3RhdHVzID1cbiAgfCBTdGF0dXMuSW50ZXJuYWxTZXJ2ZXJFcnJvclxuICB8IFN0YXR1cy5Ob3RJbXBsZW1lbnRlZFxuICB8IFN0YXR1cy5CYWRHYXRld2F5XG4gIHwgU3RhdHVzLlNlcnZpY2VVbmF2YWlsYWJsZVxuICB8IFN0YXR1cy5HYXRld2F5VGltZW91dFxuICB8IFN0YXR1cy5IVFRQVmVyc2lvbk5vdFN1cHBvcnRlZFxuICB8IFN0YXR1cy5WYXJpYW50QWxzb05lZ290aWF0ZXNcbiAgfCBTdGF0dXMuSW5zdWZmaWNpZW50U3RvcmFnZVxuICB8IFN0YXR1cy5Mb29wRGV0ZWN0ZWRcbiAgfCBTdGF0dXMuTm90RXh0ZW5kZWRcbiAgfCBTdGF0dXMuTmV0d29ya0F1dGhlbnRpY2F0aW9uUmVxdWlyZWQ7XG5cbi8qKiBBbiBIVFRQIHN0YXR1cyB0aGF0IGlzIGFuIGVycm9yICg0WFggYW5kIDVYWCkuICovXG5leHBvcnQgdHlwZSBFcnJvclN0YXR1cyA9IENsaWVudEVycm9yU3RhdHVzIHwgU2VydmVyRXJyb3JTdGF0dXM7XG5cbi8qKiBBIHR5cGUgZ3VhcmQgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBzdGF0dXMgY29kZSBpcyBpbmZvcm1hdGlvbmFsLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5mb3JtYXRpb25hbFN0YXR1cyhcbiAgc3RhdHVzOiBTdGF0dXMsXG4pOiBzdGF0dXMgaXMgSW5mb3JtYXRpb25hbFN0YXR1cyB7XG4gIHJldHVybiBzdGF0dXMgPj0gMTAwICYmIHN0YXR1cyA8IDIwMDtcbn1cblxuLyoqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHN0YXR1cyBjb2RlIGlzIHN1Y2Nlc3NmdWwuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdWNjZXNzZnVsU3RhdHVzKHN0YXR1czogU3RhdHVzKTogc3RhdHVzIGlzIFN1Y2Nlc3NmdWxTdGF0dXMge1xuICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XG59XG5cbi8qKiBBIHR5cGUgZ3VhcmQgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBzdGF0dXMgY29kZSBpcyBhIHJlZGlyZWN0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVkaXJlY3RTdGF0dXMoc3RhdHVzOiBTdGF0dXMpOiBzdGF0dXMgaXMgUmVkaXJlY3RTdGF0dXMge1xuICByZXR1cm4gc3RhdHVzID49IDMwMCAmJiBzdGF0dXMgPCA0MDA7XG59XG5cbi8qKiBBIHR5cGUgZ3VhcmQgdGhhdCBkZXRlcm1pbmVzIGlmIHRoZSBzdGF0dXMgY29kZSBpcyBhIGNsaWVudCBlcnJvci4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NsaWVudEVycm9yU3RhdHVzKFxuICBzdGF0dXM6IFN0YXR1cyxcbik6IHN0YXR1cyBpcyBDbGllbnRFcnJvclN0YXR1cyB7XG4gIHJldHVybiBzdGF0dXMgPj0gNDAwICYmIHN0YXR1cyA8IDUwMDtcbn1cblxuLyoqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHN0YXR1cyBjb2RlIGlzIGEgc2VydmVyIGVycm9yLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2VydmVyRXJyb3JTdGF0dXMoXG4gIHN0YXR1czogU3RhdHVzLFxuKTogc3RhdHVzIGlzIFNlcnZlckVycm9yU3RhdHVzIHtcbiAgcmV0dXJuIHN0YXR1cyA+PSA1MDAgJiYgc3RhdHVzIDwgNjAwO1xufVxuXG4vKiogQSB0eXBlIGd1YXJkIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGUgc3RhdHVzIGNvZGUgaXMgYW4gZXJyb3IuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvclN0YXR1cyhzdGF0dXM6IFN0YXR1cyk6IHN0YXR1cyBpcyBFcnJvclN0YXR1cyB7XG4gIHJldHVybiBzdGF0dXMgPj0gNDAwICYmIHN0YXR1cyA8IDYwMDtcbn1cbiIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbi8qKiBBIGNvbGxlY3Rpb24gb2YgSFRUUCBlcnJvcnMgYW5kIHV0aWxpdGllcy5cbiAqXG4gKiBUaGUgZXhwb3J0IHtAbGlua2NvZGUgZXJyb3JzfSBjb250YWlucyBhbiBpbmRpdmlkdWFsIGNsYXNzIHRoYXQgZXh0ZW5kc1xuICoge0BsaW5rY29kZSBIdHRwRXJyb3J9IHdoaWNoIG1ha2VzIGhhbmRsaW5nIEhUVFAgZXJyb3JzIGluIGEgc3RydWN0dXJlZCB3YXkuXG4gKlxuICogVGhlIGZ1bmN0aW9uIHtAbGlua2NvZGUgY3JlYXRlSHR0cEVycm9yfSBwcm92aWRlcyBhIHdheSB0byBjcmVhdGUgaW5zdGFuY2VzXG4gKiBvZiBlcnJvcnMgaW4gYSBmYWN0b3J5IHBhdHRlcm4uXG4gKlxuICogVGhlIGZ1bmN0aW9uIHtAbGlua2NvZGUgaXNIdHRwRXJyb3J9IGlzIGEgdHlwZSBndWFyZCB0aGF0IHdpbGwgbmFycm93IGEgdmFsdWVcbiAqIHRvIGFuIGBIdHRwRXJyb3JgIGluc3RhbmNlLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBlcnJvcnMsIGlzSHR0cEVycm9yIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9odHRwX2Vycm9ycy50c1wiO1xuICpcbiAqIHRyeSB7XG4gKiAgIHRocm93IG5ldyBlcnJvcnMuTm90Rm91bmQoKTtcbiAqIH0gY2F0Y2ggKGUpIHtcbiAqICAgaWYgKGlzSHR0cEVycm9yKGUpKSB7XG4gKiAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoZS5tZXNzYWdlLCB7IHN0YXR1czogZS5zdGF0dXMgfSk7XG4gKiAgIH0gZWxzZSB7XG4gKiAgICAgdGhyb3cgZTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGNyZWF0ZUh0dHBFcnJvciB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvaHR0cF9lcnJvcnMudHNcIjtcbiAqIGltcG9ydCB7IFN0YXR1cyB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvaHR0cF9zdGF0dXMudHNcIjtcbiAqXG4gKiB0cnkge1xuICogICB0aHJvdyBjcmVhdGVIdHRwRXJyb3IoXG4gKiAgICAgU3RhdHVzLkJhZFJlcXVlc3QsXG4gKiAgICAgXCJUaGUgcmVxdWVzdCB3YXMgYmFkLlwiLFxuICogICAgIHsgZXhwb3NlOiBmYWxzZSB9XG4gKiAgICk7XG4gKiB9IGNhdGNoIChlKSB7XG4gKiAgIC8vIGhhbmRsZSBlcnJvcnNcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQge1xuICB0eXBlIEVycm9yU3RhdHVzLFxuICBpc0NsaWVudEVycm9yU3RhdHVzLFxuICBTdGF0dXMsXG4gIFNUQVRVU19URVhULFxufSBmcm9tIFwiLi9odHRwX3N0YXR1cy50c1wiO1xuXG5jb25zdCBFUlJPUl9TVEFUVVNfTUFQID0ge1xuICBcIkJhZFJlcXVlc3RcIjogNDAwLFxuICBcIlVuYXV0aG9yaXplZFwiOiA0MDEsXG4gIFwiUGF5bWVudFJlcXVpcmVkXCI6IDQwMixcbiAgXCJGb3JiaWRkZW5cIjogNDAzLFxuICBcIk5vdEZvdW5kXCI6IDQwNCxcbiAgXCJNZXRob2ROb3RBbGxvd2VkXCI6IDQwNSxcbiAgXCJOb3RBY2NlcHRhYmxlXCI6IDQwNixcbiAgXCJQcm94eUF1dGhSZXF1aXJlZFwiOiA0MDcsXG4gIFwiUmVxdWVzdFRpbWVvdXRcIjogNDA4LFxuICBcIkNvbmZsaWN0XCI6IDQwOSxcbiAgXCJHb25lXCI6IDQxMCxcbiAgXCJMZW5ndGhSZXF1aXJlZFwiOiA0MTEsXG4gIFwiUHJlY29uZGl0aW9uRmFpbGVkXCI6IDQxMixcbiAgXCJSZXF1ZXN0RW50aXR5VG9vTGFyZ2VcIjogNDEzLFxuICBcIlJlcXVlc3RVUklUb29Mb25nXCI6IDQxNCxcbiAgXCJVbnN1cHBvcnRlZE1lZGlhVHlwZVwiOiA0MTUsXG4gIFwiUmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZVwiOiA0MTYsXG4gIFwiRXhwZWN0YXRpb25GYWlsZWRcIjogNDE3LFxuICBcIlRlYXBvdFwiOiA0MTgsXG4gIFwiTWlzZGlyZWN0ZWRSZXF1ZXN0XCI6IDQyMSxcbiAgXCJVbnByb2Nlc3NhYmxlRW50aXR5XCI6IDQyMixcbiAgXCJMb2NrZWRcIjogNDIzLFxuICBcIkZhaWxlZERlcGVuZGVuY3lcIjogNDI0LFxuICBcIlVwZ3JhZGVSZXF1aXJlZFwiOiA0MjYsXG4gIFwiUHJlY29uZGl0aW9uUmVxdWlyZWRcIjogNDI4LFxuICBcIlRvb01hbnlSZXF1ZXN0c1wiOiA0MjksXG4gIFwiUmVxdWVzdEhlYWRlckZpZWxkc1Rvb0xhcmdlXCI6IDQzMSxcbiAgXCJVbmF2YWlsYWJsZUZvckxlZ2FsUmVhc29uc1wiOiA0NTEsXG4gIFwiSW50ZXJuYWxTZXJ2ZXJFcnJvclwiOiA1MDAsXG4gIFwiTm90SW1wbGVtZW50ZWRcIjogNTAxLFxuICBcIkJhZEdhdGV3YXlcIjogNTAyLFxuICBcIlNlcnZpY2VVbmF2YWlsYWJsZVwiOiA1MDMsXG4gIFwiR2F0ZXdheVRpbWVvdXRcIjogNTA0LFxuICBcIkhUVFBWZXJzaW9uTm90U3VwcG9ydGVkXCI6IDUwNSxcbiAgXCJWYXJpYW50QWxzb05lZ290aWF0ZXNcIjogNTA2LFxuICBcIkluc3VmZmljaWVudFN0b3JhZ2VcIjogNTA3LFxuICBcIkxvb3BEZXRlY3RlZFwiOiA1MDgsXG4gIFwiTm90RXh0ZW5kZWRcIjogNTEwLFxuICBcIk5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkXCI6IDUxMSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yU3RhdHVzS2V5cyA9IGtleW9mIHR5cGVvZiBFUlJPUl9TVEFUVVNfTUFQO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBFcnJvck9wdGlvbnMgZXh0ZW5kcyBFcnJvck9wdGlvbnMge1xuICBleHBvc2U/OiBib29sZWFuO1xufVxuXG4vKiogVGhlIGJhc2UgY2xhc3MgdGhhdCBhbGwgZGVyaXZhdGl2ZSBIVFRQIGV4dGVuZCwgcHJvdmlkaW5nIGEgYHN0YXR1c2AgYW5kIGFuXG4gKiBgZXhwb3NlYCBwcm9wZXJ0eS4gKi9cbmV4cG9ydCBjbGFzcyBIdHRwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UgPSBcIkh0dHAgRXJyb3JcIiwgb3B0aW9ucz86IEh0dHBFcnJvck9wdGlvbnMpIHtcbiAgICBzdXBlcihtZXNzYWdlLCBvcHRpb25zKTtcbiAgfVxuICAvKiogQSBmbGFnIHRvIGluZGljYXRlIGlmIHRoZSBpbnRlcm5hbHMgb2YgdGhlIGVycm9yLCBsaWtlIHRoZSBzdGFjaywgc2hvdWxkXG4gICAqIGJlIGV4cG9zZWQgdG8gYSBjbGllbnQsIG9yIGlmIHRoZXkgYXJlIFwicHJpdmF0ZVwiIGFuZCBzaG91bGQgbm90IGJlIGxlYWtlZC5cbiAgICogQnkgZGVmYXVsdCwgYWxsIGNsaWVudCBlcnJvcnMgYXJlIGB0cnVlYCBhbmQgYWxsIHNlcnZlciBlcnJvcnMgYXJlXG4gICAqIGBmYWxzZWAuICovXG4gIGdldCBleHBvc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKiBUaGUgZXJyb3Igc3RhdHVzIHRoYXQgaXMgc2V0IG9uIHRoZSBlcnJvci4gKi9cbiAgZ2V0IHN0YXR1cygpOiBFcnJvclN0YXR1cyB7XG4gICAgcmV0dXJuIFN0YXR1cy5JbnRlcm5hbFNlcnZlckVycm9yO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUh0dHBFcnJvckNvbnN0cnVjdG9yKHN0YXR1czogRXJyb3JTdGF0dXMpOiB0eXBlb2YgSHR0cEVycm9yIHtcbiAgY29uc3QgbmFtZSA9IGAke1N0YXR1c1tzdGF0dXNdfUVycm9yYDtcbiAgY29uc3QgRXJyb3JDdG9yID0gY2xhc3MgZXh0ZW5kcyBIdHRwRXJyb3Ige1xuICAgICNleHBvc2UgPSBpc0NsaWVudEVycm9yU3RhdHVzKHN0YXR1cyk7XG5cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gU1RBVFVTX1RFWFRbc3RhdHVzXSwgb3B0aW9ucz86IEh0dHBFcnJvck9wdGlvbnMpIHtcbiAgICAgIHN1cGVyKG1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnM/LmV4cG9zZSkge1xuICAgICAgICB0aGlzLiNleHBvc2UgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnM/LmV4cG9zZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy4jZXhwb3NlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IG5hbWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IGV4cG9zZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLiNleHBvc2U7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgZ2V0IHN0YXR1cygpIHtcbiAgICAgIHJldHVybiBzdGF0dXM7XG4gICAgfVxuICB9O1xuICByZXR1cm4gRXJyb3JDdG9yO1xufVxuXG4vKiogQSBtYXAgb2YgSHR0cEVycm9ycyB0aGF0IGFyZSB1bmlxdWUgaW5zdGFuY2VzIGZvciBlYWNoIEhUVFAgZXJyb3Igc3RhdHVzXG4gKiBjb2RlLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGVycm9ycyB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvaHR0cF9lcnJvcnMudHNcIjtcbiAqXG4gKiB0aHJvdyBuZXcgZXJyb3JzLkludGVybmFsU2VydmVyRXJyb3IoXCJPb29wcyFcIik7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IGVycm9yczogUmVjb3JkPEVycm9yU3RhdHVzS2V5cywgdHlwZW9mIEh0dHBFcnJvcj4gPSB7fSBhcyBSZWNvcmQ8XG4gIEVycm9yU3RhdHVzS2V5cyxcbiAgdHlwZW9mIEh0dHBFcnJvclxuPjtcblxuZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoRVJST1JfU1RBVFVTX01BUCkpIHtcbiAgZXJyb3JzW2tleSBhcyBFcnJvclN0YXR1c0tleXNdID0gY3JlYXRlSHR0cEVycm9yQ29uc3RydWN0b3IodmFsdWUpO1xufVxuXG4vKiogQ3JlYXRlIGFuIGluc3RhbmNlIG9mIGFuIEh0dHBFcnJvciBiYXNlZCBvbiB0aGUgc3RhdHVzIGNvZGUgcHJvdmlkZWQuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSHR0cEVycm9yKFxuICBzdGF0dXM6IEVycm9yU3RhdHVzID0gU3RhdHVzLkludGVybmFsU2VydmVyRXJyb3IsXG4gIG1lc3NhZ2U/OiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBIdHRwRXJyb3JPcHRpb25zLFxuKTogSHR0cEVycm9yIHtcbiAgcmV0dXJuIG5ldyBlcnJvcnNbU3RhdHVzW3N0YXR1c10gYXMgRXJyb3JTdGF0dXNLZXlzXShtZXNzYWdlLCBvcHRpb25zKTtcbn1cblxuLyoqIEEgdHlwZSBndWFyZCB0aGF0IGRldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGFuIEh0dHBFcnJvciBvciBub3QuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdHRwRXJyb3IodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBIdHRwRXJyb3Ige1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBIdHRwRXJyb3I7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5leHBvcnQgaW50ZXJmYWNlIERlbGF5T3B0aW9ucyB7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKiBSZXNvbHZlcyBhZnRlciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxheShtczogbnVtYmVyLCBvcHRpb25zOiBEZWxheU9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0aW9ucztcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRE9NRXhjZXB0aW9uKFwiRGVsYXkgd2FzIGFib3J0ZWQuXCIsIFwiQWJvcnRFcnJvclwiKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICBjb25zdCBhYm9ydCA9ICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChpKTtcbiAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKFwiRGVsYXkgd2FzIGFib3J0ZWQuXCIsIFwiQWJvcnRFcnJvclwiKSk7XG4gICAgfTtcbiAgICBjb25zdCBkb25lID0gKCkgPT4ge1xuICAgICAgc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgYWJvcnQpO1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH07XG4gICAgY29uc3QgaSA9IHNldFRpbWVvdXQoZG9uZSwgbXMpO1xuICAgIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIGFib3J0LCB7IG9uY2U6IHRydWUgfSk7XG4gIH0pO1xufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbmltcG9ydCB7IGRlbGF5IH0gZnJvbSBcIi4uL2FzeW5jL21vZC50c1wiO1xuXG4vKiogVGhyb3duIGJ5IFNlcnZlciBhZnRlciBpdCBoYXMgYmVlbiBjbG9zZWQuICovXG5jb25zdCBFUlJPUl9TRVJWRVJfQ0xPU0VEID0gXCJTZXJ2ZXIgY2xvc2VkXCI7XG5cbi8qKiBEZWZhdWx0IHBvcnQgZm9yIHNlcnZpbmcgSFRUUC4gKi9cbmNvbnN0IEhUVFBfUE9SVCA9IDgwO1xuXG4vKiogRGVmYXVsdCBwb3J0IGZvciBzZXJ2aW5nIEhUVFBTLiAqL1xuY29uc3QgSFRUUFNfUE9SVCA9IDQ0MztcblxuLyoqIEluaXRpYWwgYmFja29mZiBkZWxheSBvZiA1bXMgZm9sbG93aW5nIGEgdGVtcG9yYXJ5IGFjY2VwdCBmYWlsdXJlLiAqL1xuY29uc3QgSU5JVElBTF9BQ0NFUFRfQkFDS09GRl9ERUxBWSA9IDU7XG5cbi8qKiBNYXggYmFja29mZiBkZWxheSBvZiAxcyBmb2xsb3dpbmcgYSB0ZW1wb3JhcnkgYWNjZXB0IGZhaWx1cmUuICovXG5jb25zdCBNQVhfQUNDRVBUX0JBQ0tPRkZfREVMQVkgPSAxMDAwO1xuXG4vKiogSW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbm5lY3Rpb24gYSByZXF1ZXN0IGFycml2ZWQgb24uICovXG5leHBvcnQgaW50ZXJmYWNlIENvbm5JbmZvIHtcbiAgLyoqIFRoZSBsb2NhbCBhZGRyZXNzIG9mIHRoZSBjb25uZWN0aW9uLiAqL1xuICByZWFkb25seSBsb2NhbEFkZHI6IERlbm8uQWRkcjtcbiAgLyoqIFRoZSByZW1vdGUgYWRkcmVzcyBvZiB0aGUgY29ubmVjdGlvbi4gKi9cbiAgcmVhZG9ubHkgcmVtb3RlQWRkcjogRGVuby5BZGRyO1xufVxuXG4vKipcbiAqIEEgaGFuZGxlciBmb3IgSFRUUCByZXF1ZXN0cy4gQ29uc3VtZXMgYSByZXF1ZXN0IGFuZCBjb25uZWN0aW9uIGluZm9ybWF0aW9uXG4gKiBhbmQgcmV0dXJucyBhIHJlc3BvbnNlLlxuICpcbiAqIElmIGEgaGFuZGxlciB0aHJvd3MsIHRoZSBzZXJ2ZXIgY2FsbGluZyB0aGUgaGFuZGxlciB3aWxsIGFzc3VtZSB0aGUgaW1wYWN0XG4gKiBvZiB0aGUgZXJyb3IgaXMgaXNvbGF0ZWQgdG8gdGhlIGluZGl2aWR1YWwgcmVxdWVzdC4gSXQgd2lsbCBjYXRjaCB0aGUgZXJyb3JcbiAqIGFuZCBjbG9zZSB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uLlxuICovXG5leHBvcnQgdHlwZSBIYW5kbGVyID0gKFxuICByZXF1ZXN0OiBSZXF1ZXN0LFxuICBjb25uSW5mbzogQ29ubkluZm8sXG4pID0+IFJlc3BvbnNlIHwgUHJvbWlzZTxSZXNwb25zZT47XG5cbi8qKiBPcHRpb25zIGZvciBydW5uaW5nIGFuIEhUVFAgc2VydmVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJJbml0IGV4dGVuZHMgUGFydGlhbDxEZW5vLkxpc3Rlbk9wdGlvbnM+IHtcbiAgLyoqIFRoZSBoYW5kbGVyIHRvIGludm9rZSBmb3IgaW5kaXZpZHVhbCBIVFRQIHJlcXVlc3RzLiAqL1xuICBoYW5kbGVyOiBIYW5kbGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgaGFuZGxlciB0byBpbnZva2Ugd2hlbiByb3V0ZSBoYW5kbGVycyB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlciBsb2dzIGFuZCByZXR1cm5zIHRoZSBlcnJvciBpbiBKU09OIGZvcm1hdC5cbiAgICovXG4gIG9uRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IFJlc3BvbnNlIHwgUHJvbWlzZTxSZXNwb25zZT47XG59XG5cbi8qKiBVc2VkIHRvIGNvbnN0cnVjdCBhbiBIVFRQIHNlcnZlci4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2ZXIge1xuICAjcG9ydD86IG51bWJlcjtcbiAgI2hvc3Q/OiBzdHJpbmc7XG4gICNoYW5kbGVyOiBIYW5kbGVyO1xuICAjY2xvc2VkID0gZmFsc2U7XG4gICNsaXN0ZW5lcnM6IFNldDxEZW5vLkxpc3RlbmVyPiA9IG5ldyBTZXQoKTtcbiAgI2h0dHBDb25uZWN0aW9uczogU2V0PERlbm8uSHR0cENvbm4+ID0gbmV3IFNldCgpO1xuICAjb25FcnJvcjogKGVycm9yOiB1bmtub3duKSA9PiBSZXNwb25zZSB8IFByb21pc2U8UmVzcG9uc2U+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEhUVFAgU2VydmVyIGluc3RhbmNlLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBpbXBvcnQgeyBTZXJ2ZXIgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9odHRwL3NlcnZlci50c1wiO1xuICAgKlxuICAgKiBjb25zdCBwb3J0ID0gNDUwNTtcbiAgICogY29uc3QgaGFuZGxlciA9IChyZXF1ZXN0OiBSZXF1ZXN0KSA9PiB7XG4gICAqICAgY29uc3QgYm9keSA9IGBZb3VyIHVzZXItYWdlbnQgaXM6XFxuXFxuJHtyZXF1ZXN0LmhlYWRlcnMuZ2V0KFxuICAgKiAgICBcInVzZXItYWdlbnRcIixcbiAgICogICApID8/IFwiVW5rbm93blwifWA7XG4gICAqXG4gICAqICAgcmV0dXJuIG5ldyBSZXNwb25zZShib2R5LCB7IHN0YXR1czogMjAwIH0pO1xuICAgKiB9O1xuICAgKlxuICAgKiBjb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKHsgcG9ydCwgaGFuZGxlciB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBzZXJ2ZXJJbml0IE9wdGlvbnMgZm9yIHJ1bm5pbmcgYW4gSFRUUCBzZXJ2ZXIuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzZXJ2ZXJJbml0OiBTZXJ2ZXJJbml0KSB7XG4gICAgdGhpcy4jcG9ydCA9IHNlcnZlckluaXQucG9ydDtcbiAgICB0aGlzLiNob3N0ID0gc2VydmVySW5pdC5ob3N0bmFtZTtcbiAgICB0aGlzLiNoYW5kbGVyID0gc2VydmVySW5pdC5oYW5kbGVyO1xuICAgIHRoaXMuI29uRXJyb3IgPSBzZXJ2ZXJJbml0Lm9uRXJyb3IgPz9cbiAgICAgIGZ1bmN0aW9uIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShcIkludGVybmFsIFNlcnZlciBFcnJvclwiLCB7IHN0YXR1czogNTAwIH0pO1xuICAgICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY2NlcHQgaW5jb21pbmcgY29ubmVjdGlvbnMgb24gdGhlIGdpdmVuIGxpc3RlbmVyLCBhbmQgaGFuZGxlIHJlcXVlc3RzIG9uXG4gICAqIHRoZXNlIGNvbm5lY3Rpb25zIHdpdGggdGhlIGdpdmVuIGhhbmRsZXIuXG4gICAqXG4gICAqIEhUVFAvMiBzdXBwb3J0IGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgcHJvdmlkZWQgRGVuby5MaXN0ZW5lciByZXR1cm5zIFRMU1xuICAgKiBjb25uZWN0aW9ucyBhbmQgd2FzIGNvbmZpZ3VyZWQgd2l0aCBcImgyXCIgaW4gdGhlIEFMUE4gcHJvdG9jb2xzLlxuICAgKlxuICAgKiBUaHJvd3MgYSBzZXJ2ZXIgY2xvc2VkIGVycm9yIGlmIGNhbGxlZCBhZnRlciB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC5cbiAgICpcbiAgICogV2lsbCBhbHdheXMgY2xvc2UgdGhlIGNyZWF0ZWQgbGlzdGVuZXIuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGltcG9ydCB7IFNlcnZlciB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvc2VydmVyLnRzXCI7XG4gICAqXG4gICAqIGNvbnN0IGhhbmRsZXIgPSAocmVxdWVzdDogUmVxdWVzdCkgPT4ge1xuICAgKiAgIGNvbnN0IGJvZHkgPSBgWW91ciB1c2VyLWFnZW50IGlzOlxcblxcbiR7cmVxdWVzdC5oZWFkZXJzLmdldChcbiAgICogICAgXCJ1c2VyLWFnZW50XCIsXG4gICAqICAgKSA/PyBcIlVua25vd25cIn1gO1xuICAgKlxuICAgKiAgIHJldHVybiBuZXcgUmVzcG9uc2UoYm9keSwgeyBzdGF0dXM6IDIwMCB9KTtcbiAgICogfTtcbiAgICpcbiAgICogY29uc3Qgc2VydmVyID0gbmV3IFNlcnZlcih7IGhhbmRsZXIgfSk7XG4gICAqIGNvbnN0IGxpc3RlbmVyID0gRGVuby5saXN0ZW4oeyBwb3J0OiA0NTA1IH0pO1xuICAgKlxuICAgKiBjb25zb2xlLmxvZyhcInNlcnZlciBsaXN0ZW5pbmcgb24gaHR0cDovL2xvY2FsaG9zdDo0NTA1XCIpO1xuICAgKlxuICAgKiBhd2FpdCBzZXJ2ZXIuc2VydmUobGlzdGVuZXIpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGxpc3RlbmVyIFRoZSBsaXN0ZW5lciB0byBhY2NlcHQgY29ubmVjdGlvbnMgZnJvbS5cbiAgICovXG4gIGFzeW5jIHNlcnZlKGxpc3RlbmVyOiBEZW5vLkxpc3RlbmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuI2Nsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkh0dHAoRVJST1JfU0VSVkVSX0NMT1NFRCk7XG4gICAgfVxuXG4gICAgdGhpcy4jdHJhY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuI2FjY2VwdChsaXN0ZW5lcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuI3VudHJhY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxpc3RlbmVyLmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gTGlzdGVuZXIgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGxpc3RlbmVyIG9uIHRoZSBzZXJ2ZXIsIGFjY2VwdCBpbmNvbWluZyBjb25uZWN0aW9ucywgYW5kIGhhbmRsZVxuICAgKiByZXF1ZXN0cyBvbiB0aGVzZSBjb25uZWN0aW9ucyB3aXRoIHRoZSBnaXZlbiBoYW5kbGVyLlxuICAgKlxuICAgKiBJZiB0aGUgc2VydmVyIHdhcyBjb25zdHJ1Y3RlZCB3aXRob3V0IGEgc3BlY2lmaWVkIHBvcnQsIDgwIGlzIHVzZWQuXG4gICAqXG4gICAqIElmIHRoZSBzZXJ2ZXIgd2FzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGhvc3RuYW1lIG9taXR0ZWQgZnJvbSB0aGUgb3B0aW9ucywgdGhlXG4gICAqIG5vbi1yb3V0YWJsZSBtZXRhLWFkZHJlc3MgYDAuMC4wLjBgIGlzIHVzZWQuXG4gICAqXG4gICAqIFRocm93cyBhIHNlcnZlciBjbG9zZWQgZXJyb3IgaWYgdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGltcG9ydCB7IFNlcnZlciB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvc2VydmVyLnRzXCI7XG4gICAqXG4gICAqIGNvbnN0IHBvcnQgPSA0NTA1O1xuICAgKiBjb25zdCBoYW5kbGVyID0gKHJlcXVlc3Q6IFJlcXVlc3QpID0+IHtcbiAgICogICBjb25zdCBib2R5ID0gYFlvdXIgdXNlci1hZ2VudCBpczpcXG5cXG4ke3JlcXVlc3QuaGVhZGVycy5nZXQoXG4gICAqICAgIFwidXNlci1hZ2VudFwiLFxuICAgKiAgICkgPz8gXCJVbmtub3duXCJ9YDtcbiAgICpcbiAgICogICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHksIHsgc3RhdHVzOiAyMDAgfSk7XG4gICAqIH07XG4gICAqXG4gICAqIGNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoeyBwb3J0LCBoYW5kbGVyIH0pO1xuICAgKlxuICAgKiBjb25zb2xlLmxvZyhcInNlcnZlciBsaXN0ZW5pbmcgb24gaHR0cDovL2xvY2FsaG9zdDo0NTA1XCIpO1xuICAgKlxuICAgKiBhd2FpdCBzZXJ2ZXIubGlzdGVuQW5kU2VydmUoKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBsaXN0ZW5BbmRTZXJ2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy4jY2xvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRGVuby5lcnJvcnMuSHR0cChFUlJPUl9TRVJWRVJfQ0xPU0VEKTtcbiAgICB9XG5cbiAgICBjb25zdCBsaXN0ZW5lciA9IERlbm8ubGlzdGVuKHtcbiAgICAgIHBvcnQ6IHRoaXMuI3BvcnQgPz8gSFRUUF9QT1JULFxuICAgICAgaG9zdG5hbWU6IHRoaXMuI2hvc3QgPz8gXCIwLjAuMC4wXCIsXG4gICAgICB0cmFuc3BvcnQ6IFwidGNwXCIsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2ZShsaXN0ZW5lcik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbGlzdGVuZXIgb24gdGhlIHNlcnZlciwgYWNjZXB0IGluY29taW5nIGNvbm5lY3Rpb25zLCB1cGdyYWRlIHRoZW1cbiAgICogdG8gVExTLCBhbmQgaGFuZGxlIHJlcXVlc3RzIG9uIHRoZXNlIGNvbm5lY3Rpb25zIHdpdGggdGhlIGdpdmVuIGhhbmRsZXIuXG4gICAqXG4gICAqIElmIHRoZSBzZXJ2ZXIgd2FzIGNvbnN0cnVjdGVkIHdpdGhvdXQgYSBzcGVjaWZpZWQgcG9ydCwgNDQzIGlzIHVzZWQuXG4gICAqXG4gICAqIElmIHRoZSBzZXJ2ZXIgd2FzIGNvbnN0cnVjdGVkIHdpdGggdGhlIGhvc3RuYW1lIG9taXR0ZWQgZnJvbSB0aGUgb3B0aW9ucywgdGhlXG4gICAqIG5vbi1yb3V0YWJsZSBtZXRhLWFkZHJlc3MgYDAuMC4wLjBgIGlzIHVzZWQuXG4gICAqXG4gICAqIFRocm93cyBhIHNlcnZlciBjbG9zZWQgZXJyb3IgaWYgdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGltcG9ydCB7IFNlcnZlciB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL2h0dHAvc2VydmVyLnRzXCI7XG4gICAqXG4gICAqIGNvbnN0IHBvcnQgPSA0NTA1O1xuICAgKiBjb25zdCBoYW5kbGVyID0gKHJlcXVlc3Q6IFJlcXVlc3QpID0+IHtcbiAgICogICBjb25zdCBib2R5ID0gYFlvdXIgdXNlci1hZ2VudCBpczpcXG5cXG4ke3JlcXVlc3QuaGVhZGVycy5nZXQoXG4gICAqICAgIFwidXNlci1hZ2VudFwiLFxuICAgKiAgICkgPz8gXCJVbmtub3duXCJ9YDtcbiAgICpcbiAgICogICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHksIHsgc3RhdHVzOiAyMDAgfSk7XG4gICAqIH07XG4gICAqXG4gICAqIGNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoeyBwb3J0LCBoYW5kbGVyIH0pO1xuICAgKlxuICAgKiBjb25zdCBjZXJ0RmlsZSA9IFwiL3BhdGgvdG8vY2VydEZpbGUuY3J0XCI7XG4gICAqIGNvbnN0IGtleUZpbGUgPSBcIi9wYXRoL3RvL2tleUZpbGUua2V5XCI7XG4gICAqXG4gICAqIGNvbnNvbGUubG9nKFwic2VydmVyIGxpc3RlbmluZyBvbiBodHRwczovL2xvY2FsaG9zdDo0NTA1XCIpO1xuICAgKlxuICAgKiBhd2FpdCBzZXJ2ZXIubGlzdGVuQW5kU2VydmVUbHMoY2VydEZpbGUsIGtleUZpbGUpO1xuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGNlcnRGaWxlIFRoZSBwYXRoIHRvIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIFRMUyBjZXJ0aWZpY2F0ZS5cbiAgICogQHBhcmFtIGtleUZpbGUgVGhlIHBhdGggdG8gdGhlIGZpbGUgY29udGFpbmluZyB0aGUgVExTIHByaXZhdGUga2V5LlxuICAgKi9cbiAgYXN5bmMgbGlzdGVuQW5kU2VydmVUbHMoY2VydEZpbGU6IHN0cmluZywga2V5RmlsZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuI2Nsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IERlbm8uZXJyb3JzLkh0dHAoRVJST1JfU0VSVkVSX0NMT1NFRCk7XG4gICAgfVxuXG4gICAgY29uc3QgbGlzdGVuZXIgPSBEZW5vLmxpc3RlblRscyh7XG4gICAgICBwb3J0OiB0aGlzLiNwb3J0ID8/IEhUVFBTX1BPUlQsXG4gICAgICBob3N0bmFtZTogdGhpcy4jaG9zdCA/PyBcIjAuMC4wLjBcIixcbiAgICAgIGNlcnRGaWxlLFxuICAgICAga2V5RmlsZSxcbiAgICAgIHRyYW5zcG9ydDogXCJ0Y3BcIixcbiAgICAgIC8vIEFMUE4gcHJvdG9jb2wgc3VwcG9ydCBub3QgeWV0IHN0YWJsZS5cbiAgICAgIC8vIGFscG5Qcm90b2NvbHM6IFtcImgyXCIsIFwiaHR0cC8xLjFcIl0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zZXJ2ZShsaXN0ZW5lcik7XG4gIH1cblxuICAvKipcbiAgICogSW1tZWRpYXRlbHkgY2xvc2UgdGhlIHNlcnZlciBsaXN0ZW5lcnMgYW5kIGFzc29jaWF0ZWQgSFRUUCBjb25uZWN0aW9ucy5cbiAgICpcbiAgICogVGhyb3dzIGEgc2VydmVyIGNsb3NlZCBlcnJvciBpZiBjYWxsZWQgYWZ0ZXIgdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuXG4gICAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY2xvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRGVuby5lcnJvcnMuSHR0cChFUlJPUl9TRVJWRVJfQ0xPU0VEKTtcbiAgICB9XG5cbiAgICB0aGlzLiNjbG9zZWQgPSB0cnVlO1xuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLiNsaXN0ZW5lcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxpc3RlbmVyLmNsb3NlKCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gTGlzdGVuZXIgaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jbGlzdGVuZXJzLmNsZWFyKCk7XG5cbiAgICBmb3IgKGNvbnN0IGh0dHBDb25uIG9mIHRoaXMuI2h0dHBDb25uZWN0aW9ucykge1xuICAgICAgdGhpcy4jY2xvc2VIdHRwQ29ubihodHRwQ29ubik7XG4gICAgfVxuXG4gICAgdGhpcy4jaHR0cENvbm5lY3Rpb25zLmNsZWFyKCk7XG4gIH1cblxuICAvKiogR2V0IHdoZXRoZXIgdGhlIHNlcnZlciBpcyBjbG9zZWQuICovXG4gIGdldCBjbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuI2Nsb3NlZDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGxpc3Qgb2YgbmV0d29yayBhZGRyZXNzZXMgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb24uICovXG4gIGdldCBhZGRycygpOiBEZW5vLkFkZHJbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy4jbGlzdGVuZXJzKS5tYXAoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lci5hZGRyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNwb25kcyB0byBhbiBIVFRQIHJlcXVlc3QuXG4gICAqXG4gICAqIEBwYXJhbSByZXF1ZXN0RXZlbnQgVGhlIEhUVFAgcmVxdWVzdCB0byByZXNwb25kIHRvLlxuICAgKiBAcGFyYW0gaHR0cENvbiBUaGUgSFRUUCBjb25uZWN0aW9uIHRvIHlpZWxkIHJlcXVlc3RzIGZyb20uXG4gICAqIEBwYXJhbSBjb25uSW5mbyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uLlxuICAgKi9cbiAgYXN5bmMgI3Jlc3BvbmQoXG4gICAgcmVxdWVzdEV2ZW50OiBEZW5vLlJlcXVlc3RFdmVudCxcbiAgICBodHRwQ29ubjogRGVuby5IdHRwQ29ubixcbiAgICBjb25uSW5mbzogQ29ubkluZm8sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEhhbmRsZSB0aGUgcmVxdWVzdCBldmVudCwgZ2VuZXJhdGluZyBhIHJlc3BvbnNlLlxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLiNoYW5kbGVyKHJlcXVlc3RFdmVudC5yZXF1ZXN0LCBjb25uSW5mbyk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIC8vIEludm9rZSBvbkVycm9yIGhhbmRsZXIgd2hlbiByZXF1ZXN0IGhhbmRsZXIgdGhyb3dzLlxuICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLiNvbkVycm9yKGVycm9yKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gU2VuZCB0aGUgcmVzcG9uc2UuXG4gICAgICBhd2FpdCByZXF1ZXN0RXZlbnQucmVzcG9uZFdpdGgocmVzcG9uc2UpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gcmVzcG9uZFdpdGgoKSBmYWlscyB3aGVuIHRoZSBjb25uZWN0aW9uIGhhcyBhbHJlYWR5IGJlZW4gY2xvc2VkLCBvciB0aGVyZSBpcyBzb21lXG4gICAgICAvLyBvdGhlciBlcnJvciB3aXRoIHJlc3BvbmRpbmcgb24gdGhpcyBjb25uZWN0aW9uIHRoYXQgcHJvbXB0cyB1cyB0b1xuICAgICAgLy8gY2xvc2UgaXQgYW5kIG9wZW4gYSBuZXcgY29ubmVjdGlvbi5cbiAgICAgIHJldHVybiB0aGlzLiNjbG9zZUh0dHBDb25uKGh0dHBDb25uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VydmVzIGFsbCBIVFRQIHJlcXVlc3RzIG9uIGEgc2luZ2xlIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBodHRwQ29ubiBUaGUgSFRUUCBjb25uZWN0aW9uIHRvIHlpZWxkIHJlcXVlc3RzIGZyb20uXG4gICAqIEBwYXJhbSBjb25uSW5mbyBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uLlxuICAgKi9cbiAgYXN5bmMgI3NlcnZlSHR0cChodHRwQ29ubjogRGVuby5IdHRwQ29ubiwgY29ubkluZm86IENvbm5JbmZvKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgd2hpbGUgKCF0aGlzLiNjbG9zZWQpIHtcbiAgICAgIGxldCByZXF1ZXN0RXZlbnQ6IERlbm8uUmVxdWVzdEV2ZW50IHwgbnVsbDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gWWllbGQgdGhlIG5ldyBIVFRQIHJlcXVlc3Qgb24gdGhlIGNvbm5lY3Rpb24uXG4gICAgICAgIHJlcXVlc3RFdmVudCA9IGF3YWl0IGh0dHBDb25uLm5leHRSZXF1ZXN0KCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gQ29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVxdWVzdEV2ZW50ID09PSBudWxsKSB7XG4gICAgICAgIC8vIENvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkLlxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gUmVzcG9uZCB0byB0aGUgcmVxdWVzdC4gTm90ZSB3ZSBkbyBub3QgYXdhaXQgdGhpcyBhc3luYyBtZXRob2QgdG9cbiAgICAgIC8vIGFsbG93IHRoZSBjb25uZWN0aW9uIHRvIGhhbmRsZSBtdWx0aXBsZSByZXF1ZXN0cyBpbiB0aGUgY2FzZSBvZiBoMi5cbiAgICAgIHRoaXMuI3Jlc3BvbmQocmVxdWVzdEV2ZW50LCBodHRwQ29ubiwgY29ubkluZm8pO1xuICAgIH1cblxuICAgIHRoaXMuI2Nsb3NlSHR0cENvbm4oaHR0cENvbm4pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjY2VwdHMgYWxsIGNvbm5lY3Rpb25zIG9uIGEgc2luZ2xlIG5ldHdvcmsgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSBsaXN0ZW5lciBUaGUgbGlzdGVuZXIgdG8gYWNjZXB0IGNvbm5lY3Rpb25zIGZyb20uXG4gICAqL1xuICBhc3luYyAjYWNjZXB0KGxpc3RlbmVyOiBEZW5vLkxpc3RlbmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGFjY2VwdEJhY2tvZmZEZWxheTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgd2hpbGUgKCF0aGlzLiNjbG9zZWQpIHtcbiAgICAgIGxldCBjb25uOiBEZW5vLkNvbm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFdhaXQgZm9yIGEgbmV3IGNvbm5lY3Rpb24uXG4gICAgICAgIGNvbm4gPSBhd2FpdCBsaXN0ZW5lci5hY2NlcHQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAvLyBUaGUgbGlzdGVuZXIgaXMgY2xvc2VkLlxuICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgRGVuby5lcnJvcnMuQmFkUmVzb3VyY2UgfHxcbiAgICAgICAgICAvLyBUTFMgaGFuZHNoYWtlIGVycm9ycy5cbiAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLkludmFsaWREYXRhIHx8XG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5VbmV4cGVjdGVkRW9mIHx8XG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBEZW5vLmVycm9ycy5Db25uZWN0aW9uUmVzZXQgfHxcbiAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIERlbm8uZXJyb3JzLk5vdENvbm5lY3RlZFxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBCYWNrb2ZmIGFmdGVyIHRyYW5zaWVudCBlcnJvcnMgdG8gYWxsb3cgdGltZSBmb3IgdGhlIHN5c3RlbSB0b1xuICAgICAgICAgIC8vIHJlY292ZXIsIGFuZCBhdm9pZCBibG9ja2luZyB1cCB0aGUgZXZlbnQgbG9vcCB3aXRoIGEgY29udGludW91c2x5XG4gICAgICAgICAgLy8gcnVubmluZyBsb29wLlxuICAgICAgICAgIGlmICghYWNjZXB0QmFja29mZkRlbGF5KSB7XG4gICAgICAgICAgICBhY2NlcHRCYWNrb2ZmRGVsYXkgPSBJTklUSUFMX0FDQ0VQVF9CQUNLT0ZGX0RFTEFZO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY2NlcHRCYWNrb2ZmRGVsYXkgKj0gMjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWNjZXB0QmFja29mZkRlbGF5ID49IE1BWF9BQ0NFUFRfQkFDS09GRl9ERUxBWSkge1xuICAgICAgICAgICAgYWNjZXB0QmFja29mZkRlbGF5ID0gTUFYX0FDQ0VQVF9CQUNLT0ZGX0RFTEFZO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IGRlbGF5KGFjY2VwdEJhY2tvZmZEZWxheSk7XG5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICBhY2NlcHRCYWNrb2ZmRGVsYXkgPSB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIFwiVXBncmFkZVwiIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24gaW50byBhbiBIVFRQIGNvbm5lY3Rpb24uXG4gICAgICBsZXQgaHR0cENvbm46IERlbm8uSHR0cENvbm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGh0dHBDb25uID0gRGVuby5zZXJ2ZUh0dHAoY29ubik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gQ29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBDbG9zaW5nIHRoZSB1bmRlcmx5aW5nIGxpc3RlbmVyIHdpbGwgbm90IGNsb3NlIEhUVFAgY29ubmVjdGlvbnMsIHNvIHdlXG4gICAgICAvLyB0cmFjayBmb3IgY2xvc3VyZSB1cG9uIHNlcnZlciBjbG9zZS5cbiAgICAgIHRoaXMuI3RyYWNrSHR0cENvbm5lY3Rpb24oaHR0cENvbm4pO1xuXG4gICAgICBjb25zdCBjb25uSW5mbzogQ29ubkluZm8gPSB7XG4gICAgICAgIGxvY2FsQWRkcjogY29ubi5sb2NhbEFkZHIsXG4gICAgICAgIHJlbW90ZUFkZHI6IGNvbm4ucmVtb3RlQWRkcixcbiAgICAgIH07XG5cbiAgICAgIC8vIFNlcnZlIHRoZSByZXF1ZXN0cyB0aGF0IGFycml2ZSBvbiB0aGUganVzdC1hY2NlcHRlZCBjb25uZWN0aW9uLiBOb3RlXG4gICAgICAvLyB3ZSBkbyBub3QgYXdhaXQgdGhpcyBhc3luYyBtZXRob2QgdG8gYWxsb3cgdGhlIHNlcnZlciB0byBhY2NlcHQgbmV3XG4gICAgICAvLyBjb25uZWN0aW9ucy5cbiAgICAgIHRoaXMuI3NlcnZlSHR0cChodHRwQ29ubiwgY29ubkluZm8pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVbnRyYWNrcyBhbmQgY2xvc2VzIGFuIEhUVFAgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIGh0dHBDb25uIFRoZSBIVFRQIGNvbm5lY3Rpb24gdG8gY2xvc2UuXG4gICAqL1xuICAjY2xvc2VIdHRwQ29ubihodHRwQ29ubjogRGVuby5IdHRwQ29ubik6IHZvaWQge1xuICAgIHRoaXMuI3VudHJhY2tIdHRwQ29ubmVjdGlvbihodHRwQ29ubik7XG5cbiAgICB0cnkge1xuICAgICAgaHR0cENvbm4uY2xvc2UoKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIENvbm5lY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQuXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGxpc3RlbmVyIHRvIHRoZSBpbnRlcm5hbCB0cmFja2luZyBsaXN0LlxuICAgKlxuICAgKiBAcGFyYW0gbGlzdGVuZXIgTGlzdGVuZXIgdG8gdHJhY2suXG4gICAqL1xuICAjdHJhY2tMaXN0ZW5lcihsaXN0ZW5lcjogRGVuby5MaXN0ZW5lcik6IHZvaWQge1xuICAgIHRoaXMuI2xpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGxpc3RlbmVyIGZyb20gdGhlIGludGVybmFsIHRyYWNraW5nIGxpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBsaXN0ZW5lciBMaXN0ZW5lciB0byB1bnRyYWNrLlxuICAgKi9cbiAgI3VudHJhY2tMaXN0ZW5lcihsaXN0ZW5lcjogRGVuby5MaXN0ZW5lcik6IHZvaWQge1xuICAgIHRoaXMuI2xpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIEhUVFAgY29ubmVjdGlvbiB0byB0aGUgaW50ZXJuYWwgdHJhY2tpbmcgbGlzdC5cbiAgICpcbiAgICogQHBhcmFtIGh0dHBDb25uIEhUVFAgY29ubmVjdGlvbiB0byB0cmFjay5cbiAgICovXG4gICN0cmFja0h0dHBDb25uZWN0aW9uKGh0dHBDb25uOiBEZW5vLkh0dHBDb25uKTogdm9pZCB7XG4gICAgdGhpcy4jaHR0cENvbm5lY3Rpb25zLmFkZChodHRwQ29ubik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgSFRUUCBjb25uZWN0aW9uIGZyb20gdGhlIGludGVybmFsIHRyYWNraW5nIGxpc3QuXG4gICAqXG4gICAqIEBwYXJhbSBodHRwQ29ubiBIVFRQIGNvbm5lY3Rpb24gdG8gdW50cmFjay5cbiAgICovXG4gICN1bnRyYWNrSHR0cENvbm5lY3Rpb24oaHR0cENvbm46IERlbm8uSHR0cENvbm4pOiB2b2lkIHtcbiAgICB0aGlzLiNodHRwQ29ubmVjdGlvbnMuZGVsZXRlKGh0dHBDb25uKTtcbiAgfVxufVxuXG4vKiogQWRkaXRpb25hbCBzZXJ2ZSBvcHRpb25zLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZUluaXQgZXh0ZW5kcyBQYXJ0aWFsPERlbm8uTGlzdGVuT3B0aW9ucz4ge1xuICAvKiogQW4gQWJvcnRTaWduYWwgdG8gY2xvc2UgdGhlIHNlcnZlciBhbmQgYWxsIGNvbm5lY3Rpb25zLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcblxuICAvKiogVGhlIGhhbmRsZXIgdG8gaW52b2tlIHdoZW4gcm91dGUgaGFuZGxlcnMgdGhyb3cgYW4gZXJyb3IuICovXG4gIG9uRXJyb3I/OiAoZXJyb3I6IHVua25vd24pID0+IFJlc3BvbnNlIHwgUHJvbWlzZTxSZXNwb25zZT47XG5cbiAgLyoqIFRoZSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgc2VydmVyIHN0YXJ0ZWQgbGlzdGVuaW5nICovXG4gIG9uTGlzdGVuPzogKHBhcmFtczogeyBob3N0bmFtZTogc3RyaW5nOyBwb3J0OiBudW1iZXIgfSkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgc2VydmVyLCBhY2NlcHRzIGluY29taW5nIGNvbm5lY3Rpb25zIG9uIHRoZSBnaXZlbiBsaXN0ZW5lciwgYW5kXG4gKiBoYW5kbGVzIHJlcXVlc3RzIG9uIHRoZXNlIGNvbm5lY3Rpb25zIHdpdGggdGhlIGdpdmVuIGhhbmRsZXIuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNlcnZlTGlzdGVuZXIgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9odHRwL3NlcnZlci50c1wiO1xuICpcbiAqIGNvbnN0IGxpc3RlbmVyID0gRGVuby5saXN0ZW4oeyBwb3J0OiA0NTA1IH0pO1xuICpcbiAqIGNvbnNvbGUubG9nKFwic2VydmVyIGxpc3RlbmluZyBvbiBodHRwOi8vbG9jYWxob3N0OjQ1MDVcIik7XG4gKlxuICogYXdhaXQgc2VydmVMaXN0ZW5lcihsaXN0ZW5lciwgKHJlcXVlc3QpID0+IHtcbiAqICAgY29uc3QgYm9keSA9IGBZb3VyIHVzZXItYWdlbnQgaXM6XFxuXFxuJHtyZXF1ZXN0LmhlYWRlcnMuZ2V0KFxuICogICAgIFwidXNlci1hZ2VudFwiLFxuICogICApID8/IFwiVW5rbm93blwifWA7XG4gKlxuICogICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHksIHsgc3RhdHVzOiAyMDAgfSk7XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBsaXN0ZW5lciBUaGUgbGlzdGVuZXIgdG8gYWNjZXB0IGNvbm5lY3Rpb25zIGZyb20uXG4gKiBAcGFyYW0gaGFuZGxlciBUaGUgaGFuZGxlciBmb3IgaW5kaXZpZHVhbCBIVFRQIHJlcXVlc3RzLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgc2VydmUgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlcnZlTGlzdGVuZXIoXG4gIGxpc3RlbmVyOiBEZW5vLkxpc3RlbmVyLFxuICBoYW5kbGVyOiBIYW5kbGVyLFxuICBvcHRpb25zPzogT21pdDxTZXJ2ZUluaXQsIFwicG9ydFwiIHwgXCJob3N0bmFtZVwiPixcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKHsgaGFuZGxlciwgb25FcnJvcjogb3B0aW9ucz8ub25FcnJvciB9KTtcblxuICBvcHRpb25zPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiBzZXJ2ZXIuY2xvc2UoKSwge1xuICAgIG9uY2U6IHRydWUsXG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCBzZXJ2ZXIuc2VydmUobGlzdGVuZXIpO1xufVxuXG5mdW5jdGlvbiBob3N0bmFtZUZvckRpc3BsYXkoaG9zdG5hbWU6IHN0cmluZykge1xuICAvLyBJZiB0aGUgaG9zdG5hbWUgaXMgXCIwLjAuMC4wXCIsIHdlIGRpc3BsYXkgXCJsb2NhbGhvc3RcIiBpbiBjb25zb2xlXG4gIC8vIGJlY2F1c2UgYnJvd3NlcnMgaW4gV2luZG93cyBkb24ndCByZXNvbHZlIFwiMC4wLjAuMFwiLlxuICAvLyBTZWUgdGhlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2Rlbm9sYW5kL2Rlbm9fc3RkL2lzc3Vlcy8xMTY1XG4gIHJldHVybiBob3N0bmFtZSA9PT0gXCIwLjAuMC4wXCIgPyBcImxvY2FsaG9zdFwiIDogaG9zdG5hbWU7XG59XG5cbi8qKiBTZXJ2ZXMgSFRUUCByZXF1ZXN0cyB3aXRoIHRoZSBnaXZlbiBoYW5kbGVyLlxuICpcbiAqIFlvdSBjYW4gc3BlY2lmeSBhbiBvYmplY3Qgd2l0aCBhIHBvcnQgYW5kIGhvc3RuYW1lIG9wdGlvbiwgd2hpY2ggaXMgdGhlXG4gKiBhZGRyZXNzIHRvIGxpc3RlbiBvbi4gVGhlIGRlZmF1bHQgaXMgcG9ydCA4MDAwIG9uIGhvc3RuYW1lIFwiMC4wLjAuMFwiLlxuICpcbiAqIFRoZSBiZWxvdyBleGFtcGxlIHNlcnZlcyB3aXRoIHRoZSBwb3J0IDgwMDAuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNlcnZlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqIHNlcnZlKChfcmVxKSA9PiBuZXcgUmVzcG9uc2UoXCJIZWxsbywgd29ybGRcIikpO1xuICogYGBgXG4gKlxuICogWW91IGNhbiBjaGFuZ2UgdGhlIGxpc3RlbmluZyBhZGRyZXNzIGJ5IHRoZSBgaG9zdG5hbWVgIGFuZCBgcG9ydGAgb3B0aW9ucy5cbiAqIFRoZSBiZWxvdyBleGFtcGxlIHNlcnZlcyB3aXRoIHRoZSBwb3J0IDMwMDAuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNlcnZlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqIHNlcnZlKChfcmVxKSA9PiBuZXcgUmVzcG9uc2UoXCJIZWxsbywgd29ybGRcIiksIHsgcG9ydDogMzAwMCB9KTtcbiAqIGBgYFxuICpcbiAqIGBzZXJ2ZWAgZnVuY3Rpb24gcHJpbnRzIHRoZSBtZXNzYWdlIGBMaXN0ZW5pbmcgb24gaHR0cDovLzxob3N0bmFtZT46PHBvcnQ+L2BcbiAqIG9uIHN0YXJ0LXVwIGJ5IGRlZmF1bHQuIElmIHlvdSBsaWtlIHRvIGNoYW5nZSB0aGlzIG1lc3NhZ2UsIHlvdSBjYW4gc3BlY2lmeVxuICogYG9uTGlzdGVuYCBvcHRpb24gdG8gb3ZlcnJpZGUgaXQuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNlcnZlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqIHNlcnZlKChfcmVxKSA9PiBuZXcgUmVzcG9uc2UoXCJIZWxsbywgd29ybGRcIiksIHtcbiAqICAgb25MaXN0ZW4oeyBwb3J0LCBob3N0bmFtZSB9KSB7XG4gKiAgICAgY29uc29sZS5sb2coYFNlcnZlciBzdGFydGVkIGF0IGh0dHA6Ly8ke2hvc3RuYW1lfToke3BvcnR9YCk7XG4gKiAgICAgLy8gLi4uIG1vcmUgaW5mbyBzcGVjaWZpYyB0byB5b3VyIHNlcnZlciAuLlxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gc3BlY2lmeSBgdW5kZWZpbmVkYCBvciBgbnVsbGAgdG8gc3RvcCB0aGUgbG9nZ2luZyBiZWhhdmlvci5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2VydmUgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9odHRwL3NlcnZlci50c1wiO1xuICogc2VydmUoKF9yZXEpID0+IG5ldyBSZXNwb25zZShcIkhlbGxvLCB3b3JsZFwiKSwgeyBvbkxpc3RlbjogdW5kZWZpbmVkIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZm9yIGluZGl2aWR1YWwgSFRUUCByZXF1ZXN0cy5cbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zLiBTZWUgYFNlcnZlSW5pdGAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlcnZlKFxuICBoYW5kbGVyOiBIYW5kbGVyLFxuICBvcHRpb25zOiBTZXJ2ZUluaXQgPSB7fSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBsZXQgcG9ydCA9IG9wdGlvbnMucG9ydCA/PyA4MDAwO1xuICBjb25zdCBob3N0bmFtZSA9IG9wdGlvbnMuaG9zdG5hbWUgPz8gXCIwLjAuMC4wXCI7XG4gIGNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoe1xuICAgIHBvcnQsXG4gICAgaG9zdG5hbWUsXG4gICAgaGFuZGxlcixcbiAgICBvbkVycm9yOiBvcHRpb25zLm9uRXJyb3IsXG4gIH0pO1xuXG4gIG9wdGlvbnM/LnNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IHNlcnZlci5jbG9zZSgpLCB7XG4gICAgb25jZTogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgcyA9IHNlcnZlci5saXN0ZW5BbmRTZXJ2ZSgpO1xuXG4gIHBvcnQgPSAoc2VydmVyLmFkZHJzWzBdIGFzIERlbm8uTmV0QWRkcikucG9ydDtcblxuICBpZiAoXCJvbkxpc3RlblwiIGluIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zLm9uTGlzdGVuPy4oeyBwb3J0LCBob3N0bmFtZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgTGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2hvc3RuYW1lRm9yRGlzcGxheShob3N0bmFtZSl9OiR7cG9ydH0vYCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZVRsc0luaXQgZXh0ZW5kcyBTZXJ2ZUluaXQge1xuICAvKiogVGhlIHBhdGggdG8gdGhlIGZpbGUgY29udGFpbmluZyB0aGUgVExTIHByaXZhdGUga2V5LiAqL1xuICBrZXlGaWxlOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBwYXRoIHRvIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIFRMUyBjZXJ0aWZpY2F0ZSAqL1xuICBjZXJ0RmlsZTogc3RyaW5nO1xufVxuXG4vKiogU2VydmVzIEhUVFBTIHJlcXVlc3RzIHdpdGggdGhlIGdpdmVuIGhhbmRsZXIuXG4gKlxuICogWW91IG11c3Qgc3BlY2lmeSBga2V5RmlsZWAgYW5kIGBjZXJ0RmlsZWAgb3B0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIHNwZWNpZnkgYW4gb2JqZWN0IHdpdGggYSBwb3J0IGFuZCBob3N0bmFtZSBvcHRpb24sIHdoaWNoIGlzIHRoZVxuICogYWRkcmVzcyB0byBsaXN0ZW4gb24uIFRoZSBkZWZhdWx0IGlzIHBvcnQgODQ0MyBvbiBob3N0bmFtZSBcIjAuMC4wLjBcIi5cbiAqXG4gKiBUaGUgYmVsb3cgZXhhbXBsZSBzZXJ2ZXMgd2l0aCB0aGUgZGVmYXVsdCBwb3J0IDg0NDMuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNlcnZlVGxzIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqIGNvbnN0IGNlcnRGaWxlID0gXCIvcGF0aC90by9jZXJ0RmlsZS5jcnRcIjtcbiAqIGNvbnN0IGtleUZpbGUgPSBcIi9wYXRoL3RvL2tleUZpbGUua2V5XCI7XG4gKiBzZXJ2ZVRscygoX3JlcSkgPT4gbmV3IFJlc3BvbnNlKFwiSGVsbG8sIHdvcmxkXCIpLCB7IGNlcnRGaWxlLCBrZXlGaWxlIH0pO1xuICogYGBgXG4gKlxuICogYHNlcnZlVGxzYCBmdW5jdGlvbiBwcmludHMgdGhlIG1lc3NhZ2UgYExpc3RlbmluZyBvbiBodHRwczovLzxob3N0bmFtZT46PHBvcnQ+L2BcbiAqIG9uIHN0YXJ0LXVwIGJ5IGRlZmF1bHQuIElmIHlvdSBsaWtlIHRvIGNoYW5nZSB0aGlzIG1lc3NhZ2UsIHlvdSBjYW4gc3BlY2lmeVxuICogYG9uTGlzdGVuYCBvcHRpb24gdG8gb3ZlcnJpZGUgaXQuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHNlcnZlVGxzIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqIGNvbnN0IGNlcnRGaWxlID0gXCIvcGF0aC90by9jZXJ0RmlsZS5jcnRcIjtcbiAqIGNvbnN0IGtleUZpbGUgPSBcIi9wYXRoL3RvL2tleUZpbGUua2V5XCI7XG4gKiBzZXJ2ZVRscygoX3JlcSkgPT4gbmV3IFJlc3BvbnNlKFwiSGVsbG8sIHdvcmxkXCIpLCB7XG4gKiAgIGNlcnRGaWxlLFxuICogICBrZXlGaWxlLFxuICogICBvbkxpc3Rlbih7IHBvcnQsIGhvc3RuYW1lIH0pIHtcbiAqICAgICBjb25zb2xlLmxvZyhgU2VydmVyIHN0YXJ0ZWQgYXQgaHR0cHM6Ly8ke2hvc3RuYW1lfToke3BvcnR9YCk7XG4gKiAgICAgLy8gLi4uIG1vcmUgaW5mbyBzcGVjaWZpYyB0byB5b3VyIHNlcnZlciAuLlxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBZb3UgY2FuIGFsc28gc3BlY2lmeSBgdW5kZWZpbmVkYCBvciBgbnVsbGAgdG8gc3RvcCB0aGUgbG9nZ2luZyBiZWhhdmlvci5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2VydmVUbHMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9odHRwL3NlcnZlci50c1wiO1xuICogY29uc3QgY2VydEZpbGUgPSBcIi9wYXRoL3RvL2NlcnRGaWxlLmNydFwiO1xuICogY29uc3Qga2V5RmlsZSA9IFwiL3BhdGgvdG8va2V5RmlsZS5rZXlcIjtcbiAqIHNlcnZlVGxzKChfcmVxKSA9PiBuZXcgUmVzcG9uc2UoXCJIZWxsbywgd29ybGRcIiksIHtcbiAqICAgY2VydEZpbGUsXG4gKiAgIGtleUZpbGUsXG4gKiAgIG9uTGlzdGVuOiB1bmRlZmluZWQsXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIGZvciBpbmRpdmlkdWFsIEhUVFBTIHJlcXVlc3RzLlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMuIFNlZSBgU2VydmVUbHNJbml0YCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNlcnZlVGxzKFxuICBoYW5kbGVyOiBIYW5kbGVyLFxuICBvcHRpb25zOiBTZXJ2ZVRsc0luaXQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFvcHRpb25zLmtleUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUTFMgY29uZmlnIGlzIGdpdmVuLCBidXQgJ2tleUZpbGUnIGlzIG1pc3NpbmcuXCIpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zLmNlcnRGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVExTIGNvbmZpZyBpcyBnaXZlbiwgYnV0ICdjZXJ0RmlsZScgaXMgbWlzc2luZy5cIik7XG4gIH1cblxuICBsZXQgcG9ydCA9IG9wdGlvbnMucG9ydCA/PyA4NDQzO1xuICBjb25zdCBob3N0bmFtZSA9IG9wdGlvbnMuaG9zdG5hbWUgPz8gXCIwLjAuMC4wXCI7XG4gIGNvbnN0IHNlcnZlciA9IG5ldyBTZXJ2ZXIoe1xuICAgIHBvcnQsXG4gICAgaG9zdG5hbWUsXG4gICAgaGFuZGxlcixcbiAgICBvbkVycm9yOiBvcHRpb25zLm9uRXJyb3IsXG4gIH0pO1xuXG4gIG9wdGlvbnM/LnNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IHNlcnZlci5jbG9zZSgpLCB7XG4gICAgb25jZTogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgcyA9IHNlcnZlci5saXN0ZW5BbmRTZXJ2ZVRscyhvcHRpb25zLmNlcnRGaWxlLCBvcHRpb25zLmtleUZpbGUpO1xuXG4gIHBvcnQgPSAoc2VydmVyLmFkZHJzWzBdIGFzIERlbm8uTmV0QWRkcikucG9ydDtcblxuICBpZiAoXCJvbkxpc3RlblwiIGluIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zLm9uTGlzdGVuPy4oeyBwb3J0LCBob3N0bmFtZSB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGBMaXN0ZW5pbmcgb24gaHR0cHM6Ly8ke2hvc3RuYW1lRm9yRGlzcGxheShob3N0bmFtZSl9OiR7cG9ydH0vYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHM7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBzZXJ2ZWAgaW5zdGVhZC5cbiAqXG4gKiBDb25zdHJ1Y3RzIGEgc2VydmVyLCBjcmVhdGVzIGEgbGlzdGVuZXIgb24gdGhlIGdpdmVuIGFkZHJlc3MsIGFjY2VwdHNcbiAqIGluY29taW5nIGNvbm5lY3Rpb25zLCBhbmQgaGFuZGxlcyByZXF1ZXN0cyBvbiB0aGVzZSBjb25uZWN0aW9ucyB3aXRoIHRoZVxuICogZ2l2ZW4gaGFuZGxlci5cbiAqXG4gKiBJZiB0aGUgcG9ydCBpcyBvbWl0dGVkIGZyb20gdGhlIExpc3Rlbk9wdGlvbnMsIDgwIGlzIHVzZWQuXG4gKlxuICogSWYgdGhlIGhvc3QgaXMgb21pdHRlZCBmcm9tIHRoZSBMaXN0ZW5PcHRpb25zLCB0aGUgbm9uLXJvdXRhYmxlIG1ldGEtYWRkcmVzc1xuICogYDAuMC4wLjBgIGlzIHVzZWQuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxpc3RlbkFuZFNlcnZlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqXG4gKiBjb25zdCBwb3J0ID0gNDUwNTtcbiAqXG4gKiBjb25zb2xlLmxvZyhcInNlcnZlciBsaXN0ZW5pbmcgb24gaHR0cDovL2xvY2FsaG9zdDo0NTA1XCIpO1xuICpcbiAqIGF3YWl0IGxpc3RlbkFuZFNlcnZlKHsgcG9ydCB9LCAocmVxdWVzdCkgPT4ge1xuICogICBjb25zdCBib2R5ID0gYFlvdXIgdXNlci1hZ2VudCBpczpcXG5cXG4ke3JlcXVlc3QuaGVhZGVycy5nZXQoXG4gKiAgICAgXCJ1c2VyLWFnZW50XCIsXG4gKiAgICkgPz8gXCJVbmtub3duXCJ9YDtcbiAqXG4gKiAgIHJldHVybiBuZXcgUmVzcG9uc2UoYm9keSwgeyBzdGF0dXM6IDIwMCB9KTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbmZpZyBUaGUgRGVuby5MaXN0ZW5PcHRpb25zIHRvIHNwZWNpZnkgdGhlIGhvc3RuYW1lIGFuZCBwb3J0LlxuICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZm9yIGluZGl2aWR1YWwgSFRUUCByZXF1ZXN0cy5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHNlcnZlIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0ZW5BbmRTZXJ2ZShcbiAgY29uZmlnOiBQYXJ0aWFsPERlbm8uTGlzdGVuT3B0aW9ucz4sXG4gIGhhbmRsZXI6IEhhbmRsZXIsXG4gIG9wdGlvbnM/OiBTZXJ2ZUluaXQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qgc2VydmVyID0gbmV3IFNlcnZlcih7IC4uLmNvbmZpZywgaGFuZGxlciB9KTtcblxuICBvcHRpb25zPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiBzZXJ2ZXIuY2xvc2UoKSwge1xuICAgIG9uY2U6IHRydWUsXG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCBzZXJ2ZXIubGlzdGVuQW5kU2VydmUoKTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHNlcnZlVGxzYCBpbnN0ZWFkLlxuICpcbiAqIENvbnN0cnVjdHMgYSBzZXJ2ZXIsIGNyZWF0ZXMgYSBsaXN0ZW5lciBvbiB0aGUgZ2l2ZW4gYWRkcmVzcywgYWNjZXB0c1xuICogaW5jb21pbmcgY29ubmVjdGlvbnMsIHVwZ3JhZGVzIHRoZW0gdG8gVExTLCBhbmQgaGFuZGxlcyByZXF1ZXN0cyBvbiB0aGVzZVxuICogY29ubmVjdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaGFuZGxlci5cbiAqXG4gKiBJZiB0aGUgcG9ydCBpcyBvbWl0dGVkIGZyb20gdGhlIExpc3Rlbk9wdGlvbnMsIHBvcnQgNDQzIGlzIHVzZWQuXG4gKlxuICogSWYgdGhlIGhvc3QgaXMgb21pdHRlZCBmcm9tIHRoZSBMaXN0ZW5PcHRpb25zLCB0aGUgbm9uLXJvdXRhYmxlIG1ldGEtYWRkcmVzc1xuICogYDAuMC4wLjBgIGlzIHVzZWQuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGxpc3RlbkFuZFNlcnZlVGxzIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vaHR0cC9zZXJ2ZXIudHNcIjtcbiAqXG4gKiBjb25zdCBwb3J0ID0gNDUwNTtcbiAqIGNvbnN0IGNlcnRGaWxlID0gXCIvcGF0aC90by9jZXJ0RmlsZS5jcnRcIjtcbiAqIGNvbnN0IGtleUZpbGUgPSBcIi9wYXRoL3RvL2tleUZpbGUua2V5XCI7XG4gKlxuICogY29uc29sZS5sb2coXCJzZXJ2ZXIgbGlzdGVuaW5nIG9uIGh0dHA6Ly9sb2NhbGhvc3Q6NDUwNVwiKTtcbiAqXG4gKiBhd2FpdCBsaXN0ZW5BbmRTZXJ2ZVRscyh7IHBvcnQgfSwgY2VydEZpbGUsIGtleUZpbGUsIChyZXF1ZXN0KSA9PiB7XG4gKiAgIGNvbnN0IGJvZHkgPSBgWW91ciB1c2VyLWFnZW50IGlzOlxcblxcbiR7cmVxdWVzdC5oZWFkZXJzLmdldChcbiAqICAgICBcInVzZXItYWdlbnRcIixcbiAqICAgKSA/PyBcIlVua25vd25cIn1gO1xuICpcbiAqICAgcmV0dXJuIG5ldyBSZXNwb25zZShib2R5LCB7IHN0YXR1czogMjAwIH0pO1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBEZW5vLkxpc3Rlbk9wdGlvbnMgdG8gc3BlY2lmeSB0aGUgaG9zdG5hbWUgYW5kIHBvcnQuXG4gKiBAcGFyYW0gY2VydEZpbGUgVGhlIHBhdGggdG8gdGhlIGZpbGUgY29udGFpbmluZyB0aGUgVExTIGNlcnRpZmljYXRlLlxuICogQHBhcmFtIGtleUZpbGUgVGhlIHBhdGggdG8gdGhlIGZpbGUgY29udGFpbmluZyB0aGUgVExTIHByaXZhdGUga2V5LlxuICogQHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgZm9yIGluZGl2aWR1YWwgSFRUUCByZXF1ZXN0cy5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIHNlcnZlIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0ZW5BbmRTZXJ2ZVRscyhcbiAgY29uZmlnOiBQYXJ0aWFsPERlbm8uTGlzdGVuT3B0aW9ucz4sXG4gIGNlcnRGaWxlOiBzdHJpbmcsXG4gIGtleUZpbGU6IHN0cmluZyxcbiAgaGFuZGxlcjogSGFuZGxlcixcbiAgb3B0aW9ucz86IFNlcnZlSW5pdCxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzZXJ2ZXIgPSBuZXcgU2VydmVyKHsgLi4uY29uZmlnLCBoYW5kbGVyIH0pO1xuXG4gIG9wdGlvbnM/LnNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IHNlcnZlci5jbG9zZSgpLCB7XG4gICAgb25jZTogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIGF3YWl0IHNlcnZlci5saXN0ZW5BbmRTZXJ2ZVRscyhjZXJ0RmlsZSwga2V5RmlsZSk7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuLy8gZGVuby1mbXQtaWdub3JlLWZpbGVcblxuZXhwb3J0IGRlZmF1bHQge1xuICBcImFwcGxpY2F0aW9uLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BkYXNoLXFvZS1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BwLWltcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BwaGFsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi8zZ3BwaGFsZm9ybXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2EybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hY2UrY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hY3RpdmVtZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FjdGl2aXR5K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWNvc3RtYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tY29zdG1hcGZpbHRlcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1kaXJlY3RvcnkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRjb3N0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVuZHBvaW50Y29zdHBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by1lbmRwb2ludHByb3AranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tZW5kcG9pbnRwcm9wcGFyYW1zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLWVycm9yK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLW5ldHdvcmttYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FsdG8tbmV0d29ya21hcGZpbHRlcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYWx0by11cGRhdGVzdHJlYW1jb250cm9sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hbHRvLXVwZGF0ZXN0cmVhbXBhcmFtcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYW1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXBwbGVmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2FwcGxpeHdhcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXQrand0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdGZ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0b20reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdG9tXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWNhdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0b21jYXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9tZGVsZXRlZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0b21kZWxldGVkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRvbWljbWFpbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdG9tc3ZjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXRvbXN2Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0c2MtZHdkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHdkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRzYy1keW5hbWljLWV2ZW50LW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXRzYy1oZWxkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGVsZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2F0c2MtcmR0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9hdHNjLXJzYXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc2F0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXR4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYXV0aC1wb2xpY3kreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmFjbmV0LXhkZCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vYmF0Y2gtc210cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9iZG9jXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRvY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2JlZXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxlbmRhcitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2FsZW5kYXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Y3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jYWxsLWNvbXBsZXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2Fscy0xODQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NhcHRpdmUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2Jvci1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2NjZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2NtcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jY3htbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNjeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RmeCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkZnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLWNhcGFiaWxpdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RtaWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZG1pLWRvbWFpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkbWlkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2RtaS1vYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbWktcXVldWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZG1pcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NkbmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2VhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlYS0yMDE4K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NlbGxtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jZndcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2l0eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2xyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NsdWUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY2x1ZV9pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Ntc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jbnJwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NvYXAtZ3JvdXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NvYXAtcGF5bG9hZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9jb21tb25ncm91bmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29uZmVyZW5jZS1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Nvc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29zZS1rZXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY29zZS1rZXktc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NwbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNwbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzcmF0dHJzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2NzdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3N0YWRhdGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3N2bStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3Utc2VlbWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vY3d0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2N5YmVyY2FzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXJ0XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGFzaCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2Rhc2gtcGF0Y2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kYXNoZGVsdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGF2bW91bnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYXZtb3VudFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RjYS1yZnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RlYy1keFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWFsb2ctaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWNvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kaWNvbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGljb20reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZGlpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2RpdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kbnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZG5zK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kbnMtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kb2Nib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9kb3RzK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNrcHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNzYytkZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkc3NjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHNzYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkc3NjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZHZjc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlc1wiLCBcImVjbWFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGktY29uc2VudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lZGkteDEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VkaWZhY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZWZpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VsbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbG0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY2FwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuY29tbWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5jb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLmRldmljZWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1lcmdlbmN5Y2FsbGRhdGEuZWNhbGwubXNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtZXJnZW5jeWNhbGxkYXRhLnByb3ZpZGVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zZXJ2aWNlaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS5zdWJzY3JpYmVyaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9lbWVyZ2VuY3ljYWxsZGF0YS52ZWRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VtbWEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlbW1hXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW1vdGlvbm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZW5jYXBydHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZXBwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VwdWIremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXB1YlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2VzaG9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2V4aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2V4cGVjdC1jdC1yZXBvcnQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2V4cHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0aW5mb3NldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mYXN0c29hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mZHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9maGlyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZoaXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9maWRvLnRydXN0ZWQtYXBwcytqc29uXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZml0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mbGV4ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZvbnQtc2ZudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9mb250LXRkcGZyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGZyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZm9udC13b2ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2ZyYW1ld29yay1hdHRyaWJ1dGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dlbytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZW9qc29uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ2VvK2pzb24tc2VxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2dlb3BhY2thZ2Urc3FsaXRlM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nZW94YWNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nbHRmLWJ1ZmZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9nbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ncHgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdweFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2d4ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3hmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaDIyNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9oZWxkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2hqc29uXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGpzb25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9odHRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2h5cGVyc3R1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWJlLWtleS1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2liZS1wa2ctcmVwbHkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWJlLXBwLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaWdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbS1pc2NvbXBvc2luZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2luZGV4LmNtZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pbmRleC5vYmpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgucmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaW5kZXgudm5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lua21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW5rXCIsIFwiaW5rbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pb3RwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL2lwZml4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXBmaXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vaXN1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9pdHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphclwiLCBcIndhclwiLCBcImVhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2phdmEtdm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNsYXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc1wiLCBcIm1qc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pmMmZlZWQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2pvc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vam9zZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanJkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc2NhbGVuZGFyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb25cIiwgXCJtYXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uLXBhdGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uLXNlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qc29uNVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpzb241XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vanNvbm1sK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vandrK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd2stc2V0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9qd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24va3BtbC1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2twbWwtcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianNvbmxkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGdyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibGdyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbGluay1mb3JtYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9hZC1jb250cm9sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL2xvc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsb3N0eG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbG9zdHN5bmMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbHBmK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9seGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjLWJpbmhleDQwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHF4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNwdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hY3dyaXRlaWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFkcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hZHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYW5pZmVzdCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYm1hbmlmZXN0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWFyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1yY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21hcmN4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcmN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWF0aGVtYXRpY2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYVwiLCBcIm5iXCIsIFwibWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYXRobWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwtY29udGVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYXRobWwtcHJlc2VudGF0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtYXNzb2NpYXRlZC1wcm9jZWR1cmUtZGVzY3JpcHRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1kZXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtZW52ZWxvcGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1tc2sreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1tc2stcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1wcm90ZWN0aW9uLWRlc2NyaXB0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcmVjZXB0aW9uLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXJlZ2lzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ibXMtcmVnaXN0ZXItcmVzcG9uc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWJtcy1zY2hlZHVsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm1zLXVzZXItc2VydmljZS1kZXNjcmlwdGlvbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tYm94XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWJveFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21lZGlhLXBvbGljeS1kYXRhc2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWVkaWFfY29udHJvbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2NtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21lcmdlLXBhdGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRhbGluayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWV0YWxpbmtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZXRhNFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21ldHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZXRzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWY0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21pa2V5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21pcGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbWlzc2luZy1ibG9ja3MrY2Jvci1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW10LWFlaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1hZWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tbXQtdXNkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtb2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbW9zcy1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3Mtc2lnbmF0dXJlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL21vc3NrZXktZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tb3Nza2V5LXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXAyMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm0yMVwiLCBcIm1wMjFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcDRzXCIsIFwibTRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXBlZzQtZ2VuZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcGVnNC1pb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXBlZzQtaW9kLXhtdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9tcmItY29uc3VtZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXJiLXB1Ymxpc2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXNjLWl2cit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zYy1taXhlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL21zd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvY1wiLCBcImRvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL211ZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXVsdGlwYXJ0LWNvcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbXhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbi1xdWFkc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5xXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vbi10cmlwbGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uYXNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtY2hlY2tncm91cHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVTLUFTQ0lJXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uZXdzLWdyb3VwaW5mb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVMtQVNDSUlcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25ld3MtdHJhbnNtaXNzaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL25sc21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL25vZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjanNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9uc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2F1dGgtYXV0aHotcmVxK2p3dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vYmxpdmlvdXMtZG5zLW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2NzcC1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29jc3AtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1xuICAgICAgXCJiaW5cIixcbiAgICAgIFwiZG1zXCIsXG4gICAgICBcImxyZlwiLFxuICAgICAgXCJtYXJcIixcbiAgICAgIFwic29cIixcbiAgICAgIFwiZGlzdFwiLFxuICAgICAgXCJkaXN0elwiLFxuICAgICAgXCJwa2dcIixcbiAgICAgIFwiYnBrXCIsXG4gICAgICBcImR1bXBcIixcbiAgICAgIFwiZWxjXCIsXG4gICAgICBcImRlcGxveVwiLFxuICAgICAgXCJleGVcIixcbiAgICAgIFwiZGxsXCIsXG4gICAgICBcImRlYlwiLFxuICAgICAgXCJkbWdcIixcbiAgICAgIFwiaXNvXCIsXG4gICAgICBcImltZ1wiLFxuICAgICAgXCJtc2lcIixcbiAgICAgIFwibXNwXCIsXG4gICAgICBcIm1zbVwiLFxuICAgICAgXCJidWZmZXJcIlxuICAgIF1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZG0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb2R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL29lYnBzLXBhY2thZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vZ2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZ3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vbWRvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib21kb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9vbmVub3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvbmV0b2NcIiwgXCJvbmV0b2MyXCIsIFwib25ldG1wXCIsIFwib25lcGtnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb3BjLW5vZGVzZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vb3Njb3JlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL294cHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJveHBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcDIxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3AyMSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZWxvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bhc3Nwb3J0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BkeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wZW0tY2VydGlmaWNhdGUtY2hhaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBncFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BncC1rZXlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGdwLXNpZ25hdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzY1wiLCBcInNpZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpY3MtcnVsZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BpZGYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9waWRmLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzMTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwMTBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtjczctbWltZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3bVwiLCBcInA3Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInA3c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BrY3M4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicDhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wa2NzOC1lbmNyeXB0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1hdHRyLWNlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNlclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXgtY3JsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3JsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcGtpeC1wa2lwYXRoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGtpcGF0aFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3BraXhjbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwa2lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wbHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wb2Mtc2V0dGluZ3MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaVwiLCBcImVwc1wiLCBcInBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHBzcC10cmFja2VyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcm9ibGVtK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcm9ibGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Byb3ZlbmFuY2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcm92eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5hbHZlc3RyYW5kLnRpdHJheC1zaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMuY3d3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3d3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHJzLmN5blwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiNy1CSVRcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5ocHViK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wcnMubnByZW5kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5wbHVja2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy5yZGYteG1sLWNyeXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Bycy54c2YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcHNrYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBza2N4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9wdmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3FzaWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmFtbCt5YW1sXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYW1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JkYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JkZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJkZlwiLCBcIm93bFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlZ2luZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyaWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZWxheC1uZy1jb21wYWN0LXN5bnRheFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJuY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JlbW90ZS1wcmludGluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXB1dG9uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yZXNvdXJjZS1saXN0cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJsZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JmYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yaXNjb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcmxtaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ybHMtc2VydmljZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JvdXRlLWFwZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhcGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yb3V0ZS1zLXRzaWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9yb3V0ZS11c2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydXNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS1naG9zdGJ1c3RlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnYnJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLW1hbmlmZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWZ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnBraS1wdWJsaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ycGtpLXJvYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJvYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3Jwa2ktdXBkb3duXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3JzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vcnNzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyc3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9ydGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJ0ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYW1sYXNzZXJ0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NhbWxtZXRhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zYXJpZitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2FyaWYtZXh0ZXJuYWwtcHJvcGVydGllcytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2JlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NibWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzYm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2NhaXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2NpbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2N2cC1jdi1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwcVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NjdnAtdnAtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZWNldmVudCtqd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwrY2JvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZW5tbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZW5tbHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZW5tbC1ldGNoK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwtZXRjaCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VubWwtZXhpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlbnNtbCtjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlbnNtbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2Vuc21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2Vuc21seFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlbnNtbC1leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2VwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NlcC1leGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2Vzc2lvbi1pbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1wYXltZW50LWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZXRwYXlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zZXQtcmVnaXN0cmF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NldC1yZWdpc3RyYXRpb24taW5pdGlhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNldHJlZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NnbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2dtbC1vcGVuLWNhdGFsb2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2hmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2hmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2lldmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXZcIiwgXCJzaWV2ZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NpbXBsZS1maWx0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2ltcGxlLW1lc3NhZ2Utc3VtbWFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zaW1wbGVzeW1ib2xjb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc2lwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zbWlsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NtaWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbWlcIiwgXCJzbWlsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc21wdGUzMzZtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NvYXArZmFzdGluZm9zZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc29hcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3NwYXJxbC1yZXN1bHRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3J4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3BkeCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Bpcml0cy1ldmVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3Jnc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdyYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3J4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zcnUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zc2RsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc2RsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vc3NtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNzbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zdGl4K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi9zd2lkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3dpZHRhZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtYXBleC11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1hcGV4LXVwZGF0ZS1jb25maXJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtY29tbXVuaXR5LXVwZGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWNvbW11bml0eS11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YW1wLWVycm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RhbXAtc2VxdWVuY2UtYWRqdXN0LWNvbmZpcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC1zdGF0dXMtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGFtcC11cGRhdGUtY29uZmlybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YXJcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90YXhpaStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RlaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRlaVwiLCBcInRlaWNvcnB1c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RldHJhX2lzaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aHJhdWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90aW1lc3RhbXAtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdGltZXN0YW1wLXJlcGx5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0c2RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90bHNycHQrZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90bHNycHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RuYXV0aGxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdG9rZW4taW50cm9zcGVjdGlvbitqd3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdG9tbFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widG9tbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3RyaWNrbGUtaWNlLXNkcGZyYWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHJpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRyaWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi90dG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRtbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3R2ZS10cmlnZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3R6aWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdHppZi1sZWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VianNvblwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVialwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi91cmMtZ3Jwc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnNoZWV0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdXJjLXRhcmdldGRlc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3VyYy11aXNvY2tldGRlc2MreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdmNhcmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZjYXJkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZlbW1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZpdmlkZW5jZS5zY3JpcHRmaWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjFrbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXByb3NlLXBjM2NoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLXYyeC1sb2NhbC1zZXJ2aWNlLWluZm9ybWF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLjVnbmFzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmFjY2Vzcy10cmFuc2Zlci1ldmVudHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuYnNmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLmdtb3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuZ3RwY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5pbnRlcndvcmtpbmctZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5scHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWMtc2lnbmFsbGluZy1lYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLWFmZmlsaWF0aW9uLWNvbW1hbmQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLXBheWxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLXNlcnZpY2UtY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jZGF0YS1zaWduYWxsaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jZGF0YS11ZS1jb25maWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNkYXRhLXVzZXItcHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1hZmZpbGlhdGlvbi1jb21tYW5kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LWZsb29yLXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1sb2NhdGlvbi1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LW1ibXMtdXNhZ2UtaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1zZXJ2aWNlLWNvbmZpZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3B0dC1zaWduZWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWNwdHQtdWUtY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LXVlLWluaXQtY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jcHR0LXVzZXItcHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3ZpZGVvLWFmZmlsaWF0aW9uLWNvbW1hbmQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby1hZmZpbGlhdGlvbi1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jdmlkZW8taW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3ZpZGVvLWxvY2F0aW9uLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby1tYm1zLXVzYWdlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAubWN2aWRlby1zZXJ2aWNlLWNvbmZpZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5tY3ZpZGVvLXRyYW5zbWlzc2lvbi1yZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jdmlkZW8tdWUtY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1jdmlkZW8tdXNlci1wcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm1pZC1jYWxsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLm5nYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAucGZjcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctbGFyZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctc21hbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwc2JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHZiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuczFhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zbXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAuc21zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnNydmNjLWV4dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcC5zcnZjYy1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnN0YXRlLWFuZC1ldmVudC1pbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwLnVzc2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLjNncHAyLmJjbWNzaW5mbyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuM2dwcDIuc21zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zZ3BwMi50Y2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGNhcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zbGlnaHRzc29mdHdhcmUuaW1hZ2VzY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC4zbS5wb3N0LWl0LW5vdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHduXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuYXNvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXNvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjY3BhYy5zaW1wbHkuaW1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW1wXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjdWNvYm9sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWN1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFjdWNvcnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdGNcIiwgXCJhY3V0Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5haXItYXBwbGljYXRpb24taW5zdGFsbGVyLXBhY2thZ2UremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhaXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUuZmxhc2gubW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmNkdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmeHBcIiwgXCJmeHBsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFkb2JlLnBhcnRpYWwtdXBsb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhmZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWV0aGVyLmltcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5hZnBsaW5lZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5hZnBsaW5lZGF0YS1wYWdlZGVmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmNtb2NhLWNtcmVzb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMuZm9jYS1jaGFyc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmZvY2EtY29kZWRmb250XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLmZvY2EtY29kZXBhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMubW9kY2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMubW9kY2EtY210YWJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5tb2RjYS1mb3JtZGVmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hZnBjLm1vZGNhLW1lZGl1bW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5tb2RjYS1vYmplY3Rjb250YWluZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFmcGMubW9kY2Etb3ZlcmxheVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWZwYy5tb2RjYS1wYWdlc2VnbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWdlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFoLWJhcmNvZGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFoZWFkLnNwYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWhlYWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYWlyemlwLmZpbGVzZWN1cmUuYXpmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXpmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF6c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWFkZXVzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLmVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhendcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW1hem9uLm1vYmk4LWVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWVyaWNhbmR5bmFtaWNzLmFjY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFjY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbWlnYS5hbWlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhbWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW11bmRzZW4ubWF6ZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5vdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFuZHJvaWQucGFja2FnZS1hcmNoaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcGtcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5raVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWZ1bmRzLXRyYW5zZmVyLWluaXRpYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ0aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hbnRpeC5nYW1lLWNvbXBvbmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUuYXJyb3cuZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLmFycm93LnN0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5iaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwYWNoZS50aHJpZnQuY29tcGFjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnRocmlmdC5qc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcGxleHRvci53YXJycCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwb3RoZWtlbmRlLnJlc2VydmF0aW9uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBrZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5rZXlub3RlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2V5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtM3U4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLm51bWJlcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJudW1iZXJzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFwcGxlLnBhZ2VzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGFnZXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXBwbGUucGtwYXNzXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGtwYXNzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFyYXN0cmEuc3dpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzd2lcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXJ0aXNhbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmFydHNxdWFyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW90YVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdWRpb2dyYXBoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWVwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmF1dG9wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdmFsb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5hdmlzdGFyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibW1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1tbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYWxzYW1pcS5ibXByXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iYW5hbmEtYWNjb3VudGluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmJmLnVzcC5lcnJvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmJmLnVzcC5tc2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJiZi51c3AubXNnK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmVraXR6dXItc3RlY2granNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iaW50Lm1lZC1jb250ZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5iaW9wYXgucmRmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ibGluay1pZGItdmFsdWUtd3JhcHBlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZWljZS5tdWx0aXBhc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZXRvb3RoLmVwLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYmx1ZXRvb3RoLmxlLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYm1pXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1pXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJwZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnBmM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuYnVzaW5lc3NvYmplY3RzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmVwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmJ5dS51YXBpK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2FiLWpzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWNwZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhbm9uLWxpcHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNhcGFzeXN0ZW1zLXBnK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2VuZGlvLnRoaW5saW5jLmNsaWVudGNvbmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNlbnR1cnktc3lzdGVtcy50Y3Bfc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNoZXNzLXBnblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2hpcG51dHMua2FyYW9rZS1tbWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2llZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNpbmRlcmVsbGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjZHlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2lycGFjay5pc2RuLWV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2l0YXRpb25zdHlsZXMuc3R5bGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xheW1vcmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xvYW50by5ycDlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycDlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImM0Z1wiLCBcImM0ZFwiLCBcImM0ZlwiLCBcImM0cFwiLCBcImM0dVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzExYW1jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYzExYW16XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvZmZlZXNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMuZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLmRvY3VtZW50LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsYWJpby54b2RvY3VtZW50cy5wcmVzZW50YXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLnByZXNlbnRhdGlvbi10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGFiaW8ueG9kb2N1bWVudHMuc3ByZWFkc2hlZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNvbGxhYmlvLnhvZG9jdW1lbnRzLnNwcmVhZHNoZWV0LXRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29sbGVjdGlvbi5kb2MranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb2xsZWN0aW9uLm5leHQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21pY2Jvb2sremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21pY2Jvb2stcmFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb21tZXJjZS1iYXR0ZWxsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29tbW9uc3BhY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY29udGFjdC5jbXNnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2RiY21zZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb3Jlb3MuaWduaXRpb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jb3Ntb2NhbGxlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNtY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xreFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLmtleWJvYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2xra1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnBhbGV0dGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGtwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaWNrLmNsaWNrZXIud29yZGJhbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbGt3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyaXRpY2FsdG9vbHMud2JzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2JzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyeXB0aWkucGlwZStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyeXB0by1zaGFkZS1maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jcnlwdG9tYXRvci5lbmNyeXB0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmNyeXB0b21hdG9yLnZhdWx0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3RjdC53cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuY3Vwcy1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cHMtcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2FyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN1cmwucGN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjdXJsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5YW4uZGVhbi5yb290K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5jeWJhbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5Y2xvbmVkeCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmN5Y2xvbmVkeCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZDJsLmNvdXJzZXBhY2thZ2UxcDAremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kM20tZGF0YXNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZDNtLXByb2JsZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhcnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGF0YS12aXNpb24ucmR6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmR6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRhdGFwYWNrYWdlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGF0YXJlc291cmNlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGJmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGJmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRlYmlhbi5iaW5hcnktcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS5kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZmXCIsIFwidXZ2ZlwiLCBcInV2ZFwiLCBcInV2dmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVjZS50dG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ0XCIsIFwidXZ2dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnVuc3BlY2lmaWVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ4XCIsIFwidXZ2eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2elwiLCBcInV2dnpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZGVub3ZvLmZjc2VsYXlvdXQtbGlua1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZlX2xhdW5jaFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kZXNtdW1lLm1vdmllXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kaXItYmkucGxhdGUtZGwtbm9zdWZmaXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRtLmRlbGVnYXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRuYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRuYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2N1bWVudCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWxwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1vYmlsZS4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kb2xieS5tb2JpbGUuMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZG9yZW1pci5zY29yZWNsb3VkLWJpbmFyeS1kb2N1bWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHBncmFwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRwZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZmFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmRyaXZlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHMta2V5cG9pbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtweHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHRnLmxvY2FsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdGcubG9jYWwuZmxhc2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR0Zy5sb2NhbC5odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWl0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5kdmJpc2wreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5kdmJqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuZXNnY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2RmdG5vdGlmYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ2FjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNlc2dhY2Nlc3MyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXBkY2VzZ3BkZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLmlwZGNyb2FtaW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1iYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIuaXB0di5hbGZlYy1lbmhhbmNlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWFnZ3JlZ2F0ZS1yb290K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtY29udGFpbmVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kdmIubm90aWYtZ2VuZXJpYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLW1zZ2xpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5ub3RpZi1pYS1yZWdpc3RyYXRpb24tcmVxdWVzdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWlhLXJlZ2lzdHJhdGlvbi1yZXNwb25zZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHZiLm5vdGlmLWluaXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5wZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ZjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmR4clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZHluYWdlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdlb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5kenJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVhc3lrYXJhb2tlLmNkZ2Rvd25sb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY2Rpcy11cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjaXAucmxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY2xpcHNlLmRpdHRvK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWFnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5maWxlcmVxdWVzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZWNvd2luLmZpbGV1cGRhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVjb3dpbi5zZXJpZXNyZXF1ZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lY293aW4uc2VyaWVzdXBkYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lZmkuaW1nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lZmkuaXNvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbWNsaWVudC5hY2Nlc3NyZXF1ZXN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVucGhhc2UuZW52b3lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwcmludHMuZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uZXNmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXNmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLm1zZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5lcHNvbi5xdWlja2FuaW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicWFtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVwc29uLnNhbHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXBzb24uc3NmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3NmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVyaWNzc29uLnF1aWNrY2FsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXNwYXNzLWVzcGFzcyt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXMzXCIsIFwiZXQzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYW9jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmFzaWMtZSt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuYXNpYy1zK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5jdWcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dmNvbW1hbmQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kuaXB0dmRpc2NvdmVyeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2cHJvZmlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2FkLWJjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtY29kK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLmlwdHZzYWQtbnB2cit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c2VydmljZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2c3luYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5pcHR2dWVwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLm1jaWQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kubWhlZzVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kub3ZlcmxvYWQtY29udHJvbC1wb2xpY3ktZGF0YXNldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5wc3RuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnNjaSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS5zaW1zZXJ2cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXRzaS50aW1lc3RhbXAtdG9rZW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV0c2kudHNsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldHNpLnRzbC5kZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmV1Lmthc3Bhcmlhbi5jYXIranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldWRvcmEuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXZvbHYuZWNpZy5wcm9maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldm9sdi5lY2lnLnNldHRpbmdzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ldm9sdi5lY2lnLnRoZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5leHN0cmVhbS1lbXBvd2VyK3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXhzdHJlYW0tcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtYWxidW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlejJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZXpwaXgtcGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV6M1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mLXNlY3VyZS5tb2JpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZhbWlseXNlYXJjaC5nZWRjb20remlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mYXN0Y29weS1kaXNrLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmRzbi5tc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zZWVkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZkc24uc2VlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNlZWRcIiwgXCJkYXRhbGVzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mZnNuc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmljbGFiLmZsYit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZpbG1pdC56ZmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZpbnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5maXJlbW9ua2V5cy5jbG91ZGNlbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJncGhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZmx1eHRpbWUuY2xpcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ0Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mb250LWZvbnRmb3JnZS1zZmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbVwiLCBcImZyYW1lXCIsIFwibWFrZXJcIiwgXCJib29rXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZm5jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZyb2dhbnMubHRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZzYy53ZWJsYXVuY2hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmc2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaWZpbG0uZmIuZG9jdXdvcmtzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppZmlsbS5mYi5kb2N1d29ya3MuYmluZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppZmlsbS5mYi5kb2N1d29ya3MuY29udGFpbmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppZmlsbS5mYi5qZmkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYTNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c2dwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmc1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNwcnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiaDJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydC1leFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmFydDRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmRvY3V3b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhkd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmJpbmRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhiZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdWppeGVyb3guZG9jdXdvcmtzLmNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZnVqaXhlcm94LmhicGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1dC1taXNuZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmZ1dG9pbitjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdXRvaW4ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnpzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlbm9tYXRpeC50dXhlZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VudGljcy5ncmQranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW8ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9jdWJlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2diXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLnNsaWRlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VvZ2VicmEudG9vbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdndFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9tZXRyeS1leHBsb3JlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdleFwiLCBcImdyZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3h0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdlb3BsYW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnMndcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2Vvc3BhY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnM3dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ2VyYmVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbG9iYWxwbGF0Zm9ybS5jYXJkLWNvbnRlbnQtbWd0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbG9iYWxwbGF0Zm9ybS5jYXJkLWNvbnRlbnQtbWd0LXJlc3BvbnNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nbXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnbXhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZG9jXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLnByZXNlbnRhdGlvblwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdzbGlkZXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc3ByZWFkc2hlZXRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnc2hlZXRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImttbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb29nbGUtZWFydGgua216XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia216XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay5lLWZvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdvdi5zay5lLWZvcm0remlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5nb3Yuc2sueG1sZGF0YWNvbnRhaW5lcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3JhZmVxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3FmXCIsIFwiZ3FzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyaWRtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWFjY291bnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnYWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWhlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnaGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWlkZW50aXR5LW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnaW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLWluamVjdG9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3J2XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJndG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXRvb2wtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuZ3Jvb3ZlLXZjYXJkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhhbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhhbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhhbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oYW5kaGVsZC1lbnRlcnRhaW5tZW50K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiem1tXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhiY2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoYmNpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhjK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGNsLWJpcmVwb3J0c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGR0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oZXJva3UranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oaGUubGVzc29uLXBsYXllclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5obDdjZGEreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaGw3djIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBnbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhwZ2xcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBpZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhwaWRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtaHBzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHBzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLWpseXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqbHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHAtcGNsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmhwLXBjbHhsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNseGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHR0cGhvbmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2ZkLWhkc3R4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5cGVyK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaHlwZXItaXRlbStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmh5cGVyZHJpdmUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5oem4tM2QtY3Jvc3N3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uYWZwbGluZWRhdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5lbGVjdHJvbmljLW1lZGlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubWluaXBheVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1weVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWZwXCIsIFwibGlzdGFmcFwiLCBcImxpc3QzODIwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlibS5yaWdodHMtbWFuYWdlbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlybVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pYm0uc2VjdXJlLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmljY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2NcIiwgXCJpY21cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaWVlZS4xOTA1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pZ2xvYWRlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlnbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbWFnZW1ldGVyLmZvbGRlcit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltYWdlbWV0ZXIuaW1hZ2UremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbW1lcnZpc2lvbi1pdnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpdnBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZ1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXZ1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5pbXNjY3YxcDNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5saXMudjIucmVzdWx0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sY29uc3VtZXJwcm9maWxlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29scHJveHkranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbXMubHRpLnYyLnRvb2xwcm94eS5pZCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmltcy5sdGkudjIudG9vbHNldHRpbmdzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW1zLmx0aS52Mi50b29sc2V0dGluZ3Muc2ltcGxlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtZWRjb250cm9sLnJtcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5mb3JtaXgtdmlzaW9uYXJ5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbmZvdGVjaC5wcm9qZWN0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbm5vcGF0aC53YW1wLm5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW5zb3JzLmlnbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlnbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnRlcmNvbi5mb3JtbmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHB3XCIsIFwieHB4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVyZ2VvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaTJnXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmludGVydHJ1c3QuZGlnaWJveFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaW50ZXJ0cnVzdC5ubmNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFib1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFib1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInFmeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNhdGFsb2dpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmNvbmNlcHRpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHRjLmcyLmtub3dsZWRnZWl0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c2l0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIubmV3c21lc3NhZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGFja2FnZWl0ZW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmlwdGMuZzIucGxhbm5pbmdpdGVtK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcHVucGx1Z2dlZC5yY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyY3Byb2ZpbGVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXJlcG9zaXRvcnkucGFja2FnZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlycFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5pcy14cHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXNhYy5mY3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmY3NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuaXNvMTE3ODMtMTAremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtZGlyZWN0b3J5LXNlcnZpY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LWpwbnN0b3JlLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcGF5bWVudC13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXJlZ2lzdHJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtcmVnaXN0cmF0aW9uLXdha2V1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuamFwYW5uZXQtc2V0c3RvcmUtd2FrZXVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qYXBhbm5ldC12ZXJpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmphcGFubmV0LXZlcmlmaWNhdGlvbi13YWtldXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qaXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamlzcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqb2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmpzay5pc2RuLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2Fob290elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt0elwiLCBcImt0clwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2FyYm9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2FyYm9uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaHJ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtkZS5rZm9ybXVsYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtmb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rZGUua2l2aW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtvbnRvdXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrb25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtwcmVzZW50ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrcHJcIiwgXCJrcHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJrc3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3dkXCIsIFwia3d0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtlbmFtZWFhcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodGtlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtpZHNwaXJhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtpYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5raW5hclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtuZVwiLCBcImtucFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5rb2FuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2twXCIsIFwic2tkXCIsIFwic2t0XCIsIFwic2ttXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmtvZGFrLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzc2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGFzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGFzLmxhcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxhc3htbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sYXN6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxlYXAranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5saWJlcnR5LXJlcXVlc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmRlc2t0b3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubGxhbWFncmFwaGljcy5saWZlLWJhbGFuY2UuZXhjaGFuZ2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsYmVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG9naXBpcGUuY2lyY3VpdCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiMTIzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWFwcHJvYWNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXByXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInByZVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1ub3Rlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5zZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5sb3R1cy1vcmdhbml6ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubG90dXMtc2NyZWVuY2FtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2NtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLmxvdHVzLXdvcmRwcm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsd3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFjcG9ydHMucG9ydHBrZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvcnRwa2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFwYm94LXZlY3Rvci10aWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXZ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uYWN0aW9udG9rZW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0uY29uZnRva2VuK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXJsaW4uZHJtLmxpY2Vuc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1hcmxpbi5kcm0ubWRjZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWFzb24ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tYXhhci5hcmNoaXZlLjN0eit6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1heG1pbmQubWF4bWluZC1kYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWNkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGNhbGNkYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWMxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNka2V5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1lcmlkaWFuLXNsaW5nc2hvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWZlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm13ZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tZm1wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3JvK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbG9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpZ3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWljcm9zb2Z0LnBvcnRhYmxlLWV4ZWN1dGFibGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pY3Jvc29mdC53aW5kb3dzLnRodW1ibmFpbC1jYWNoZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWllbGUranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5taWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtaWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubWluaXNvZnQtaHAzMDAwLXNhdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1pdHN1YmlzaGkubWlzdHktZ3VhcmQudHJ1c3R3ZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5kYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkYWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLmRpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRpc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMubWJrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWJrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtcXlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9iaXVzLm1zbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1zbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb2JpdXMucGxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0eGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubW9waHVuLmFwcGxpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBuXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vcGh1bi5jZXJ0aWZpY2F0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5hZHNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZmlzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tb3Rvcm9sYS5mbGV4c3VpdGUuZ290YXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS5rbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS50dGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmZsZXhzdWl0ZS53ZW1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vdG9yb2xhLmlwcm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHVsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLTNtZmRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1hcnRnYWxyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNpbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1hc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2FiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWNvbG9yLmljY3Byb2ZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNcIiwgXCJ4bG1cIiwgXCJ4bGFcIiwgXCJ4bGNcIiwgXCJ4bHRcIiwgXCJ4bHdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxhbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bHNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZW90XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2htXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLWltc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImltc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1scm1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJscm1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZXgreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZXRoZW1lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGhteFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vcGVudHlwZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLW91dGxvb2tcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2dcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGFja2FnZS5vYmZ1c2NhdGVkLW9wZW50eXBlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXBraS5zZWNjYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc3RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcGxheXJlYWR5LmluaXRpYXRvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwdFwiLCBcInBwc1wiLCBcInBvdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LmFkZGluLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5wcmVzZW50YXRpb24ubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5zbGlkZXNob3cubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBvdG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtcHJpbnRkZXZpY2VjYXBhYmlsaXRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50aW5nLnByaW50dGlja2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXByaW50c2NoZW1hdGlja2V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBwXCIsIFwibXB0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXRuZWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5ud3ByaW50aW5nLm9vYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy5wcmludGVycGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd2luZG93cy53c2Qub29iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5saWMtY2hsZy1yZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdtZHJtLmxpYy1yZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13bWRybS5tZXRlci1jaGxnLXJlcVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd21kcm0ubWV0ZXItcmVzcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMtd29yZC5kb2N1bWVudC5tYWNyb2VuYWJsZWQuMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkb2NtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zLXdvcmQudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG90bVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13b3Jrc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndwc1wiLCBcIndrc1wiLCBcIndjbVwiLCBcIndkYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tcy13cGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4cHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubXNhLWRpc2staW1hZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zZXFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtc2VxXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm1zaWduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5tdWx0aWFkLmNyZWF0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11bHRpYWQuY3JlYXRvci5jaWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljLW5pZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11c2ljaWFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXN0eVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5teW5mY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRhZ2xldFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uYWNhbWFyLnlicmlkK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmNkLmNvbnRyb2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5jZC5yZWZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5lYXJzdC5pbnYranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZWJ1bWluZC5saW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZXJ2YW5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5uZXRmcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5ldXJvbGFuZ3VhZ2Uubmx1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmx1XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pbW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pbnRlbmRvLm5pdHJvLnJvbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubmludGVuZG8uc25lcy5yb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5pdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJudGZcIiwgXCJuaXRmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5uZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJubnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibm53XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmNhdGFsb2dzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5jb25tbCt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEuY29ubWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmlwdHYuY29uZmlnK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5pc2RzLXJhZGlvLXByZXNldHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLmxhbmRtYXJrK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5sYW5kbWFyayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubGFuZG1hcmtjb2xsZWN0aW9uK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuYWMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5nZGF0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLm4tZ2FnZS5zeW1iaWFuLmluc3RhbGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuLWdhZ2VcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEubmNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5wY2Qrd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5va2lhLnBjZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnBzdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub2tpYS5yYWRpby1wcmVzZXRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnBzc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ub3ZhZGlnbS5lZG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWR4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4dFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5udHQtbG9jYWwuY29udGVudC1zaGFyZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLmZpbGUtdHJhbnNmZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5vZ3dfcmVtb3RlLWFjY2Vzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQubnR0LWxvY2FsLnNpcC10YV9yZW1vdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm50dC1sb2NhbC5zaXAtdGFfdGNwX3N0cmVhbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmNoYXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5jaGFydC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90Y1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZGF0YWJhc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZGZ0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kZ1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdGdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24tdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2RzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldC10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90c1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9kdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC1tYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvZG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtdGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtd2ViXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3RoXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9iblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2NmK2Nib3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9jaS5pbWFnZS5tYW5pZmVzdC52MStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9mdG4ubDEwbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY29udGVudGFjY2Vzc2Rvd25sb2FkK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLmNvbnRlbnRhY2Nlc3NzdHJlYW1pbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuY3NwZy1oZXhiaW5hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYuZGFlLnN2Zyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5kYWUueGh0bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYubWlwcHZjb250cm9sbWVzc2FnZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub2lwZi5wYWUuZ2VtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGlzY292ZXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnNwZGxpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9pcGYudWVwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vaXBmLnVzZXJwcm9maWxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbHBjLXN1Z2FyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLXNjd3MtY29uZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEtc2N3cy1odHRwLXJlcXVlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS1zY3dzLWh0dHAtcmVzcG9uc2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5hc3NvY2lhdGVkLXByb2NlZHVyZS1wYXJhbWV0ZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5kcm0tdHJpZ2dlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LmltZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0Lmx0a21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5ub3RpZmljYXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5wcm92aXNpb25pbmd0cmlnZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2dib290XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc2dkZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNnZHVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zaW1wbGUtc3ltYm9sLWNvbnRhaW5lclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmJjYXN0LnNtYXJ0Y2FyZC10cmlnZ2VyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuYmNhc3Quc3Byb3YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5iY2FzdC5zdGttXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLWFkZHJlc3MtYm9vayt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmNhYi1mZWF0dXJlLWhhbmRsZXIreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5jYWItcGNjK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXN1YnMtaW52aXRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuY2FiLXVzZXItcHJlZnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kY2RjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEuZGQyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGQyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5kcm0ucmlzZCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLmdyb3VwLXVzYWdlLWxpc3QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5sd20ybStjYm9yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEubHdtMm0ranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEubHdtMm0rdGx2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucGFsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmRldGFpbGVkLXByb2dyZXNzLXJlcG9ydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5maW5hbC1yZXBvcnQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYS5wb2MuZ3JvdXBzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucG9jLmludm9jYXRpb24tZGVzY3JpcHRvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnBvYy5vcHRpbWl6ZWQtcHJvZ3Jlc3MtcmVwb3J0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEucHVzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hLnNjaWRtLm1lc3NhZ2VzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbWEueGNhcC1kaXJlY3RvcnkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWVtYWlsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWRzLWZpbGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub21hZHMtZm9sZGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9tYWxvYy1zdXBsLWluaXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vbmVwYWdlcnRhbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VydGFteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9uZXBhZ2VydGF0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub25lcGFnZXJ0YXR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JneFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVuYmxveC5nYW1lLWJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbmV5ZS5vZWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW5vZmZpY2VvcmcuZXh0ZW5zaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJveHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3NtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW50aW1lc3RhbXBzLm90c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuY3VzdG9tLXByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbXhtbHByb3BlcnRpZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0c2hhcGVzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWNvbG9ycyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1kYXRhK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbWxheW91dCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1zdHlsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZXh0ZW5kZWQtcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuY29tbWVudGF1dGhvcnMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5oYW5kb3V0bWFzdGVyK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5ub3Rlc21hc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwubm90ZXNzbGlkZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHB0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24ubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc3Byb3BzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNsZHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlbGF5b3V0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZW1hc3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGVzaG93XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHBzeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZXNob3cubWFpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwuc2xpZGV1cGRhdGVpbmZvK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC50YWJsZXN0eWxlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGFncyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwb3R4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnRlbXBsYXRlLm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnZpZXdwcm9wcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jYWxjY2hhaW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb21tZW50cyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jb25uZWN0aW9ucyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5leHRlcm5hbGxpbmsreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RjYWNoZWRlZmluaXRpb24reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3RjYWNoZXJlY29yZHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucGl2b3R0YWJsZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeXRhYmxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uaGVhZGVycyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5yZXZpc2lvbmxvZyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGFyZWRzdHJpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxzeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRtZXRhZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGVzaW5nbGVjZWxscyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhsdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJuYW1lcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZWRlcGVuZGVuY2llcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC50aGVtZW92ZXJyaWRlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC52bWxkcmF3aW5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmNvbW1lbnRzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG9jeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50Lmdsb3NzYXJ5K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50Lm1haW4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZW5kbm90ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZm9udHRhYmxlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmZvb3Rlcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5mb290bm90ZXMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwubnVtYmVyaW5nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnNldHRpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnN0eWxlcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRvdHhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC50ZW1wbGF0ZS5tYWluK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLndlYnNldHRpbmdzK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5kaWdpdGFsLXNpZ25hdHVyZS14bWxzaWduYXR1cmUreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3JhY2xlLnJlc291cmNlK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3JhbmdlLmluZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NhLm5ldGRlcGxveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnZW8ubWFwZ3VpZGUucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1ncFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5vc2dpLmJ1bmRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQub3NnaS5kcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm9zZ2kuc3Vic3lzdGVtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXNhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLm90cHMuY3Qta2lwK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5veGxpLmNvdW50Z3JhcGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhZ2VyZHV0eStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhbG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGJcIiwgXCJwcWFcIiwgXCJvcHJjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhbm9wbHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBhb3MueG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYXRlbnRkaXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYXRpZW50ZWNvbW1zZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wYXdhYWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYXdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGNvc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBnLm9zYXNsaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVpNlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5waWFjY2Vzcy5hcHBsaWNhdGlvbi1saWNlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5waWNzZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlZmlmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb2MuZ3JvdXAtYWR2ZXJ0aXNlbWVudCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG9ja2V0bGVhcm5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwbGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBiZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjctc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucG93ZXJidWlsZGVyNzVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnBvd2VyYnVpbGRlcjc1LXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnByZW1pbmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wcmV2aWV3c3lzdGVtcy5ib3hcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJib3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHJvdGV1cy5tYWdhemluZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1nelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wc2ZzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxcHNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucHZpLnB0aWQxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHRpZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5wd2ctbXVsdGlwbGV4ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnB3Zy14aHRtbC1wcmludCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVhbGNvbW0uYnJldy1hcHAtcmVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5xdWFyYW50YWluZW5ldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVhcmsucXVhcmt4cHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJxeGRcIiwgXCJxeHRcIiwgXCJxd2RcIiwgXCJxd3RcIiwgXCJxeGxcIiwgXCJxeGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucXVvYmplY3QtcXVveGRvY3VtZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1vbWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0K3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtYXVkaXQtY29uZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWF1ZGl0LWNvbm4reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1kaWFsb2creG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1hdWRpdC1zdHJlYW0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1jb25mK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLWJhc2UreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZmF4LWRldGVjdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFkaXN5cy5tc21sLWRpYWxvZy1mYXgtc2VuZHJlY3YreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctZ3JvdXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhZGlzeXMubXNtbC1kaWFsb2ctc3BlZWNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yYWRpc3lzLm1zbWwtZGlhbG9nLXRyYW5zZm9ybSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFpbnN0b3IuZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmFwaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWFsdm5jLmJlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJlZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZWNvcmRhcmUubXVzaWN4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVjb3JkYXJlLm11c2ljeG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXVzaWN4bWxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVubGVhcm4ucmxwcmludFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmVzaWxpZW50LmxvZ2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5yZXN0ZnVsK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucmlnLmNyeXB0b25vdGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcnlwdG9ub3RlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJpbS5jb2RcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNvZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnJuLXJlYWxtZWRpYS12YnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtdmJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucm91dGU2Ni5saW5rNjYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsaW5rNjZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucnMtMjc0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQucnVja3VzLmRvd25sb2FkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zM3Ntc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2FpbGluZ3RyYWNrZXIudHJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zYXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNibS5jaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNibS5taWQyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zY3JpYnVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuM2RmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuY3NmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuZG9jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQuZW1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubWh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQubmV0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQucHB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWFsZWQudGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkLnhsc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuaHRtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwucGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZWVtYWlsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNlaXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtYVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zZW1mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VtZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFkZS1zYXZlLWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm10ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIml0cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5pbnRlcmNoYW5nZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlpZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXBrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNob290cHJvb2YranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaG9wa2ljaytqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNocFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2h4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaWdyb2suc2Vzc2lvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc2ltdGVjaC1taW5kbWFwcGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHdkXCIsIFwidHdkc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zaXJlbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc21hcnQubm90ZWJvb2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNtYXJ0LnRlYWNoZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZWFjaGVyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNuZXNkZXYtcGFnZS10YWJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2Z0d2FyZTYwMi5maWxsZXIuZm9ybS14bWwtemlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zb2xlbnQuc2RrbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNka21cIiwgXCJzZGtkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLmR4cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR4cFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5zZnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3FsaXRlM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWNvZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLWR0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3NzLW50ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNkY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24uZHJhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2RhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5pbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLm1hdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGFyZGl2aXNpb24ud3JpdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZHdcIiwgXCJ2b3JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlci1nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNnbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEucGFja2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtemlwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5zdGVwY2hhcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdHJlZXQtc3RyZWFtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndhZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5kcmF3LnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5tYXRoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzeG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC53cml0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4d1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN4Z1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci50ZW1wbGF0ZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3R3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1c1wiLCBcInN1c3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3ZkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN3aWZ0dmlldy1pY3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5Y2xlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeWZ0K2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaXNcIiwgXCJzaXN4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYmRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGRtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbS5ub3RpZmljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnN5bmNtbC5kbWRkZit3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtZGRmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt3YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtdG5kcyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZHMubm90aWZpY2F0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50YWJsZXNjaGVtYStqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRhby5pbnRlbnQtbW9kdWxlLWFyY2hpdmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudGNwZHVtcC5wY2FwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGNhcFwiLCBcImNhcFwiLCBcImRtcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC50aGluay1jZWxsLnBwdHRjK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1kLm1lZGlhZmxleC5hcGkreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudG1vYmlsZS1saXZldHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0bW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJpLm9uZXNvdXJjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJpZC50cHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJpc2NhcGUubXhzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnRydWVhcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0cmFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudHJ1ZWRvY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudWJpc29mdC53ZWJwbGF5ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVmZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1ZmRcIiwgXCJ1ZmRsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVpcS50aGVtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV0elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51bWFqaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bWpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudW5pdHlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1bml0eXdlYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51b21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widW9tbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmFsZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmFsZXJ0LXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmJlYXJlci1jaG9pY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuYmVhcmVyLWNob2ljZS13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jYWNoZW9wXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0LmNhY2hlb3Atd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuY2hhbm5lbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5jaGFubmVsLXdieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQubGlzdC13YnhtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudXBsYW5ldC5saXN0Y21kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cGxhbmV0Lmxpc3RjbWQtd2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnVwbGFuZXQuc2lnbmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC51cmktbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52YWx2ZS5zb3VyY2UubWF0ZXJpYWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZjeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52ZC1zdHVkeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVjdG9yd29ya3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlbCtqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlcmltYXRyaXgudmNhc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVyaXRvbmUuYWlvbitqc29uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZlcnlhbnQudGhpblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmVzLmVuY3J5cHRlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudmlkc29mdC52aWRjb25mZXJlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZzZFwiLCBcInZzdFwiLCBcInZzc1wiLCBcInZzd1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQudml2aWRlbmNlLnNjcmlwdGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnZzZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAuc2ljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAuc2xjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAud2J4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndieG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndhcC53bWxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21sY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0Y1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbHNjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndlYnR1cmJvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3RiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS5kcHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS5wMnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndmYS53c2NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndpbmRvd3MuZGV2aWNlcGFpcmluZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud21jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53bWYuYm9vdHN0cmFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLm1hdGhlbWF0aWNhLnBhY2thZ2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvbGZyYW0ucGxheWVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmJwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid3BkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLndxZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndxZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53cnEtaHAzMDAwLWxhYmVsbGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53dC5zdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQud3YuY3NwK3dieG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC53di5jc3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnd2LnNzcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueGFjbWwranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54YXJhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhmZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZmRsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnhmZGwud2ViZm9ybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueG1pK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5jcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5kcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wbGFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS5wcGtnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC54bXBpZS54bGltXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtZGljXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5odi1zY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodnNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXZvaWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHZwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS5vcGVuc2NvcmVmb3JtYXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvc2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdC5vc2ZwdmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvc2ZwdmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnJlbW90ZS1zZXR1cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzYWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm5kLnlhbWFoYS50aHJvdWdoLW5nblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFtYWhhLnR1bm5lbC11ZHBlbmNhcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWFvd2VtZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueWVsbG93cml2ZXItY3VzdG9tLW1lbnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQueW91dHViZS55dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi92bmQuenVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiemlyXCIsIFwiemlyelwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZuZC56emF6ei5kZWNrK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiemF6XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm9pY2V4bWwreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2eG1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vdm91Y2hlci1jbXMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ZxLXJ0Y3B4clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93YXNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXNtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2F0Y2hlcmluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3aWZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93ZWJwdXNoLW9wdGlvbnMranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dob2lzcHAtcXVlcnlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd2hvaXNwcC1yZXNwb25zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aWRnZXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Z3RcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93aW5obHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhscFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3dpdGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd29yZHBlcmZlY3Q1LjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24vd3NkbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndzZGxcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi93c3BvbGljeSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndzcG9saWN5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCI3elwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYWJpd29yZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWJ3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYWNlXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hbWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWFwcGxlLWRpc2tpbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZG1nXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1hcmpcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcmpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYWJcIiwgXCJ4MzJcIiwgXCJ1MzJcIiwgXCJ2b3hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYW1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtc2VnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJjcGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiY3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYmRvY1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkb2NcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRvcnJlbnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJsb3JiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibGJcIiwgXCJibG9yYlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtYnppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWJ6aXAyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJiejJcIiwgXCJib3pcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNiclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2JyXCIsIFwiY2JhXCIsIFwiY2J0XCIsIFwiY2J6XCIsIFwiY2I3XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1jZGxpbmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNmc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hhdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2hhdFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZ25cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNocm9tZS1leHRlbnNpb25cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjcnhcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvY29hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNjb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY29tcHJlc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5zY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3Bpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3Bpb1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtY3NoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc2hcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZWJcIiwgXCJ1ZGViXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kZ2MtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZGdjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kaXJlY3RvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1xuICAgICAgXCJkaXJcIixcbiAgICAgIFwiZGNyXCIsXG4gICAgICBcImR4clwiLFxuICAgICAgXCJjc3RcIixcbiAgICAgIFwiY2N0XCIsXG4gICAgICBcImN4dFwiLFxuICAgICAgXCJ3M2RcIixcbiAgICAgIFwiZmdkXCIsXG4gICAgICBcInN3YVwiXG4gICAgXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZG9vbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2FkXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1kdGJuY3greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5jeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZHRib29rK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR0YnJlc291cmNlK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZXNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWR2aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHZpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1lbnZveVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZXZ5XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1ldmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV2YVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1iZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImJkZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1kb3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtZnJhbWVtYWtlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1naG9zdHNjcmlwdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3NmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LWxpYmdyeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBzZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1wY2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zbmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNuZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC1zcGVlZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZvbnQtc3Vub3MtbmV3c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZm9udC10eXBlMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGZhXCIsIFwicGZiXCIsIFwicGZtXCIsIFwiYWZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mb250LXZmb250XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1mcmVlYXJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhcmNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nY2EtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2NhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nbHVseFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widWx4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1nbnVtZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ251bWVyaWNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWdyYW1wcy14bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdyYW1wc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3RhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ3RhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtZ3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaGRmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWh0dHBkLXBocFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGhwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9uc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaW5zdGFsbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaXNvOTY2MC1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaXNvXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1pd29yay1rZXlub3RlLXNmZmtleVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImtleVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaXdvcmstbnVtYmVycy1zZmZudW1iZXJzXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibnVtYmVyc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtaXdvcmstcGFnZXMtc2ZmcGFnZXNcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwYWdlc1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlLWRpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamFyZGlmZlwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtamF2YS1qbmxwLWZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpubHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHRcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LWtlZXBhc3MyXCI6IHtcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia2RieFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbGF0ZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxhdGV4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1sdWEtYnl0ZWNvZGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdWFjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibHpoXCIsIFwibGhhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tYWtlc2VsZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydW5cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1pZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibWllXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tb2JpcG9ja2V0LWVib29rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwcmNcIiwgXCJtb2JpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcGVndXJsXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtYXBwbGljYXRpb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGxpY2F0aW9uXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy1zaG9ydGN1dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibG5rXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tcy13bWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXMtd216XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zLXhiYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhiYXBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYWNjZXNzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtZGJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zYmluZGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYmRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zY2FyZGZpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNyZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNjbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjbHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zZG9zLXByb2dyYW1cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleGVcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImV4ZVwiLCBcImRsbFwiLCBcImNvbVwiLCBcImJhdFwiLCBcIm1zaVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtZWRpYXZpZXdcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm12YlwiLCBcIm0xM1wiLCBcIm0xNFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid21mXCIsIFwid216XCIsIFwiZW1mXCIsIFwiZW16XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc21vbmV5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtbnlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwdWJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW1zc2NoZWR1bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjZFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbXN0ZXJtaW5hbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHJtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1tc3dyaXRlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cmlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW5ldGNkZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibmNcIiwgXCJjZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWdcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBhY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtbnpiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuemJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBlcmxcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGxcIiwgXCJwbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGlsb3RcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHJjXCIsIFwicGRiXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1wa2NzMTJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInAxMlwiLCBcInBmeFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN2JcIiwgXCJzcGNcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRyZXFyZXNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwN3JcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXBraS1tZXNzYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtcmVkaGF0LXBhY2thZ2UtbWFuYWdlclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJuZ2lueFwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJycG1cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmlzXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zZWFcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2VhXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzaFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2hhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2hhclwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzd2ZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXNpbHZlcmxpZ2h0LWFwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGFwXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zcWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNxbFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3R1ZmZpdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2l0XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC1zdHVmZml0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2l0eFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtc3VicmlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzcnRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN2NGNwaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN2NGNwaW9cIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXN2NGNyY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3Y0Y3JjXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10M3ZtLWltYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0M1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGFkc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2FtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGFyXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10Y2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRjbFwiLCBcInRrXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRleFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGV4LXRmbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC10ZXhpbmZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0ZXhpbmZvXCIsIFwidGV4aVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdGdpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib2JqXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC11c3RhclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXN0YXJcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtaGRkXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoZGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZhXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdmFcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZmXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvdmZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmJveFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94LWV4dHBhY2tcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Ym94LWV4dHBhY2tcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmRpXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2ZGlcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmhkXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2aGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdm1ka1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widm1ka1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2VcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNyY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJhcHBcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRlclwiLCBcImNydFwiLCBcInBlbVwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteDUwOS1jYS1yYS1jZXJ0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImFwcGxpY2F0aW9uL3gteDUwOS1uZXh0LWNhLWNlcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14ZmlnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmaWdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhsaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBpXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veC14elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHpcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94LXptYWNoaW5lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ6MVwiLCBcInoyXCIsIFwiejNcIiwgXCJ6NFwiLCBcIno1XCIsIFwiejZcIiwgXCJ6N1wiLCBcIno4XCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veDQwMC1icFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94YWNtbCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94YW1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YW1sXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1hdHQreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4YXZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWNhcHMreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Y2FcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWRpZmYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4ZGZcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLWVsK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGVsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNhcC1lcnJvcit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94Y2FwLW5zK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieG5zXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8reG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veGNvbi1jb25mZXJlbmNlLWluZm8tZGlmZit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94ZW5jK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGVuY1wiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGh0bWxcIiwgXCJ4aHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94aHRtbC12b2ljZSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3hsaWZmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieGxmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIiwgXCJ4c2xcIiwgXCJ4c2RcIiwgXCJybmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtZHRkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkdGRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtZXh0ZXJuYWwtcGFyc2VkLWVudGl0eVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94bWwtcGF0Y2greG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veG1wcCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94b3AreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4b3BcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94cHJvYyt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHBsXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHNsdCt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhzbFwiLCBcInhzbHRcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi94c3BmK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4c3BmXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veHYreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteG1sXCIsIFwieGh2bWxcIiwgXCJ4dm1sXCIsIFwieHZtXCJdXG4gIH0sXG4gIFwiYXBwbGljYXRpb24veWFuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlhbmdcIl1cbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nLWRhdGEranNvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3lhbmctZGF0YSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nLXBhdGNoK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJhcHBsaWNhdGlvbi95YW5nLXBhdGNoK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3lpbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInlpblwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3ppcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInppcFwiXVxuICB9LFxuICBcImFwcGxpY2F0aW9uL3psaWJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXBwbGljYXRpb24venN0ZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby8xZC1pbnRlcmxlYXZlZC1wYXJpdHlmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vMzJrYWRwY21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vM2dwcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNncHBcIl1cbiAgfSxcbiAgXCJhdWRpby8zZ3BwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hYWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYWMzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhZHBcIl1cbiAgfSxcbiAgXCJhdWRpby9hbXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhbXJcIl1cbiAgfSxcbiAgXCJhdWRpby9hbXItd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vYW1yLXdiK1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hcHR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2FzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hdHJhYy1hZHZhbmNlZC1sb3NzbGVzc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9hdHJhYy14XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2F0cmFjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9iYXNpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF1XCIsIFwic25kXCJdXG4gIH0sXG4gIFwiYXVkaW8vYnYxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9idjMyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2NsZWFybW9kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9jblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kYXQxMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kbHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAxMTA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Rzci1lczIwMjA1MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9kc3ItZXMyMDIyMTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZHNyLWVzMjAyMjEyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2R2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2R2aTRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZWFjM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMtcWNwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmMxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNiMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjYjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2cmNudzBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY253MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZXZyY3diMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ldnJjd2IxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2V2c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9mbGV4ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2Z3ZHJlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzExLTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcxOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzIyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjIxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi0xNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI2LTI0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjYtMzJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyNi00MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9nNzI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2c3MjlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOTFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZzcyOWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZ3NtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2dzbS1lZnJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vZ3NtLWhyLTA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2lsYmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vaXAtbXJfdjIuNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9pc2FjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiXG4gIH0sXG4gIFwiYXVkaW8vbDE2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL2wyMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9sMjRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vbDhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbHBjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21lbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbWVscDEyMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbWVscDI0MDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbWVscDYwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9taGFzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21pZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1pZFwiLCBcIm1pZGlcIiwgXCJrYXJcIiwgXCJybWlcIl1cbiAgfSxcbiAgXCJhdWRpby9tb2JpbGUteG1mXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXhtZlwiXVxuICB9LFxuICBcImF1ZGlvL21wM1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wM1wiXVxuICB9LFxuICBcImF1ZGlvL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00YVwiLCBcIm1wNGFcIl1cbiAgfSxcbiAgXCJhdWRpby9tcDRhLWxhdG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL21wYS1yb2J1c3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vbXBlZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wZ2FcIiwgXCJtcDJcIiwgXCJtcDJhXCIsIFwibXAzXCIsIFwibTJhXCIsIFwibTNhXCJdXG4gIH0sXG4gIFwiYXVkaW8vbXBlZzQtZ2VuZXJpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9tdXNlcGFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcImF1ZGlvL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9nYVwiLCBcIm9nZ1wiLCBcInNweFwiLCBcIm9wdXNcIl1cbiAgfSxcbiAgXCJhdWRpby9vcHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY21hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3BjbWEtd2JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcGNtdVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9wY211LXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Bycy5zaWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3JlZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0cC1taWRpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zM21cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInMzbVwiXVxuICB9LFxuICBcImF1ZGlvL3NjaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc2lsa1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2lsXCJdXG4gIH0sXG4gIFwiYXVkaW8vc212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3Ntdi1xY3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc212MFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby9zb2ZhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3NwLW1pZGlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vc3BlZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdDE0MGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdDM4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3RlbGVwaG9uZS1ldmVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90ZXRyYV9hY2VscFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90ZXRyYV9hY2VscF9iYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby90b25lXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3RzdmNpc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby91ZW1jbGlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3VscGZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby91c2FjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZkdmlcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm1yLXdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC4zZ3BwLml1ZnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLjRzYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuYXVkaW9rb3pcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmNpc2NvLm5zZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY21sZXMucmFkaW8tZXZlbnRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5jbnMuYW5wMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuY25zLmluZjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRlY2UuYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dmFcIiwgXCJ1dnZhXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRpZ2l0YWwtd2luZHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlb2xcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZGxuYS5hZHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5oZWFhYy4yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5tbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmRvbGJ5Lm1wc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQuZG9sYnkucGwyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wbDJ6XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kb2xieS5wdWxzZS4xXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5kcmFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkcmFcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQuZHRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHRzXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR0cy5oZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImR0c2hkXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR0cy51aGRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmR2Yi5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5ldmVyYWQucGxqXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5obnMuYXVkaW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLmx1Y2VudC52b2ljZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImx2cFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5tcy1wbGF5cmVhZHkubWVkaWEucHlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHlhXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm5va2lhLm1vYmlsZS14bWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm5vcnRlbC52YmtcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm51ZXJhLmVjZWxwNDgwMFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVjZWxwNDgwMFwiXVxuICB9LFxuICBcImF1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlY2VscDc0NzBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZWNlbHA5NjAwXCJdXG4gIH0sXG4gIFwiYXVkaW8vdm5kLm9jdGVsLnNiY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQucHJlc29udXMubXVsdGl0cmFja1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQucWNlbHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiYXVkaW8vdm5kLnJoZXRvcmV4LjMya2FkcGNtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC5yaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyaXBcIl1cbiAgfSxcbiAgXCJhdWRpby92bmQucm4tcmVhbGF1ZGlvXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcImF1ZGlvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImF1ZGlvL3ZuZC52bXguY3ZzZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby92bmQud2F2ZVwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJhdWRpby92b3JiaXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiYXVkaW8vdm9yYmlzLWNvbmZpZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJhdWRpby93YXZcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3YXZcIl1cbiAgfSxcbiAgXCJhdWRpby93YXZlXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdXG4gIH0sXG4gIFwiYXVkaW8vd2VibVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2ViYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtYWFjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhYWNcIl1cbiAgfSxcbiAgXCJhdWRpby94LWFpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFpZlwiLCBcImFpZmZcIiwgXCJhaWZjXCJdXG4gIH0sXG4gIFwiYXVkaW8veC1jYWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNhZlwiXVxuICB9LFxuICBcImF1ZGlvL3gtZmxhY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmxhY1wiXVxuICB9LFxuICBcImF1ZGlvL3gtbTRhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00YVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbWF0cm9za2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rYVwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXBlZ3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibTN1XCJdXG4gIH0sXG4gIFwiYXVkaW8veC1tcy13YXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndheFwiXVxuICB9LFxuICBcImF1ZGlvL3gtbXMtd21hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXBuLXJlYWxhdWRpb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmFtXCIsIFwicmFcIl1cbiAgfSxcbiAgXCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJtcFwiXVxuICB9LFxuICBcImF1ZGlvL3gtcmVhbGF1ZGlvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInJhXCJdXG4gIH0sXG4gIFwiYXVkaW8veC10dGFcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJhdWRpby94LXdhdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2F2XCJdXG4gIH0sXG4gIFwiYXVkaW8veG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhtXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jZHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNkeFwiXVxuICB9LFxuICBcImNoZW1pY2FsL3gtY2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjaWZcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNtZGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNtZGZcIl1cbiAgfSxcbiAgXCJjaGVtaWNhbC94LWNtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY21sXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1jc21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjc21sXCJdXG4gIH0sXG4gIFwiY2hlbWljYWwveC1wZGJcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCJcbiAgfSxcbiAgXCJjaGVtaWNhbC94LXh5elwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieHl6XCJdXG4gIH0sXG4gIFwiZm9udC9jb2xsZWN0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRjXCJdXG4gIH0sXG4gIFwiZm9udC9vdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm90ZlwiXVxuICB9LFxuICBcImZvbnQvc2ZudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJmb250L3R0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHRmXCJdXG4gIH0sXG4gIFwiZm9udC93b2ZmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid29mZlwiXVxuICB9LFxuICBcImZvbnQvd29mZjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3b2ZmMlwiXVxuICB9LFxuICBcImltYWdlL2FjZXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJleHJcIl1cbiAgfSxcbiAgXCJpbWFnZS9hcG5nXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXBuZ1wiXVxuICB9LFxuICBcImltYWdlL2F2Y2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhdmNpXCJdXG4gIH0sXG4gIFwiaW1hZ2UvYXZjc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImF2Y3NcIl1cbiAgfSxcbiAgXCJpbWFnZS9hdmlmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXZpZlwiXVxuICB9LFxuICBcImltYWdlL2JtcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYm1wXCJdXG4gIH0sXG4gIFwiaW1hZ2UvY2dtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY2dtXCJdXG4gIH0sXG4gIFwiaW1hZ2UvZGljb20tcmxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHJsZVwiXVxuICB9LFxuICBcImltYWdlL2VtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImVtZlwiXVxuICB9LFxuICBcImltYWdlL2ZpdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmaXRzXCJdXG4gIH0sXG4gIFwiaW1hZ2UvZzNmYXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnM1wiXVxuICB9LFxuICBcImltYWdlL2dpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdpZlwiXVxuICB9LFxuICBcImltYWdlL2hlaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJoZWljXCJdXG4gIH0sXG4gIFwiaW1hZ2UvaGVpYy1zZXF1ZW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhlaWNzXCJdXG4gIH0sXG4gIFwiaW1hZ2UvaGVpZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhlaWZcIl1cbiAgfSxcbiAgXCJpbWFnZS9oZWlmLXNlcXVlbmNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaGVpZnNcIl1cbiAgfSxcbiAgXCJpbWFnZS9oZWoya1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhlajJcIl1cbiAgfSxcbiAgXCJpbWFnZS9oc2oyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaHNqMlwiXVxuICB9LFxuICBcImltYWdlL2llZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImllZlwiXVxuICB9LFxuICBcImltYWdlL2psc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpsc1wiXVxuICB9LFxuICBcImltYWdlL2pwMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpwMlwiLCBcImpwZzJcIl1cbiAgfSxcbiAgXCJpbWFnZS9qcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianBlZ1wiLCBcImpwZ1wiLCBcImpwZVwiXVxuICB9LFxuICBcImltYWdlL2pwaFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImpwaFwiXVxuICB9LFxuICBcImltYWdlL2pwaGNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqaGNcIl1cbiAgfSxcbiAgXCJpbWFnZS9qcG1cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcG1cIl1cbiAgfSxcbiAgXCJpbWFnZS9qcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcHhcIiwgXCJqcGZcIl1cbiAgfSxcbiAgXCJpbWFnZS9qeHJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqeHJcIl1cbiAgfSxcbiAgXCJpbWFnZS9qeHJhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhyYVwiXVxuICB9LFxuICBcImltYWdlL2p4cnNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqeHJzXCJdXG4gIH0sXG4gIFwiaW1hZ2UvanhzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhzXCJdXG4gIH0sXG4gIFwiaW1hZ2UvanhzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImp4c2NcIl1cbiAgfSxcbiAgXCJpbWFnZS9qeHNpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wianhzaVwiXVxuICB9LFxuICBcImltYWdlL2p4c3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqeHNzXCJdXG4gIH0sXG4gIFwiaW1hZ2Uva3R4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wia3R4XCJdXG4gIH0sXG4gIFwiaW1hZ2Uva3R4MlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImt0eDJcIl1cbiAgfSxcbiAgXCJpbWFnZS9uYXBscHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2UvcGpwZWdcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwiaW1hZ2UvcG5nXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5nXCJdXG4gIH0sXG4gIFwiaW1hZ2UvcHJzLmJ0aWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJidGlmXCJdXG4gIH0sXG4gIFwiaW1hZ2UvcHJzLnB0aVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB0aVwiXVxuICB9LFxuICBcImltYWdlL3B3Zy1yYXN0ZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvc2dpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZ2lcIl1cbiAgfSxcbiAgXCJpbWFnZS9zdmcreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdmdcIiwgXCJzdmd6XCJdXG4gIH0sXG4gIFwiaW1hZ2UvdDM4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widDM4XCJdXG4gIH0sXG4gIFwiaW1hZ2UvdGlmZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRpZlwiLCBcInRpZmZcIl1cbiAgfSxcbiAgXCJpbWFnZS90aWZmLWZ4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGZ4XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicHNkXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmFpcnppcC5hY2NlbGVyYXRvci5henZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJhenZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuY25zLmluZjJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2aVwiLCBcInV2dmlcIiwgXCJ1dmdcIiwgXCJ1dnZnXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmRqdnVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkanZ1XCIsIFwiZGp2XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmR2Yi5zdWJ0aXRsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN1YlwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5kd2dcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2dcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZHhmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHhmXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZic1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5mcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmcHhcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuZnN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZnN0XCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtbW1yXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1yXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicmxjXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLmdsb2JhbGdyYXBoaWNzLnBnYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubWljcm9zb2Z0Lmljb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImljb1wiXVxuICB9LFxuICBcImltYWdlL3ZuZC5taXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm1vemlsbGEuYXBuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtZGRzXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkZHNcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQubXMtbW9kaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1kaVwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5tcy1waG90b1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid2RwXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLm5ldC1mcHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJucHhcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQucGNvLmIxNlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImIxNlwiXVxuICB9LFxuICBcImltYWdlL3ZuZC5yYWRpYW5jZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkLnBuZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQuc2VhbGVkbWVkaWEuc29mdHNlYWwuZ2lmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcImltYWdlL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5qcGdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnN2ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJpbWFnZS92bmQudGVuY2VudC50YXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0YXBcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQudmFsdmUuc291cmNlLnRleHR1cmVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2dGZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQud2FwLndibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3Ym1wXCJdXG4gIH0sXG4gIFwiaW1hZ2Uvdm5kLnhpZmZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4aWZcIl1cbiAgfSxcbiAgXCJpbWFnZS92bmQuemJydXNoLnBjeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBjeFwiXVxuICB9LFxuICBcImltYWdlL3dlYnBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndlYnBcIl1cbiAgfSxcbiAgXCJpbWFnZS93bWZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWZcIl1cbiAgfSxcbiAgXCJpbWFnZS94LTNkc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2RzXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1jbXUtcmFzdGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyYXNcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWNteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY214XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1mcmVlaGFuZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmhcIiwgXCJmaGNcIiwgXCJmaDRcIiwgXCJmaDVcIiwgXCJmaDdcIl1cbiAgfSxcbiAgXCJpbWFnZS94LWljb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNvXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1qbmdcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiam5nXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1tcnNpZC1pbWFnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2lkXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1tcy1ibXBcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJibXBcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBjeFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGN4XCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1waWN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwaWNcIiwgXCJwY3RcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXBvcnRhYmxlLWFueW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicG5tXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBibVwiXVxuICB9LFxuICBcImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicGdtXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInBwbVwiXVxuICB9LFxuICBcImltYWdlL3gtcmdiXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJyZ2JcIl1cbiAgfSxcbiAgXCJpbWFnZS94LXRnYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widGdhXCJdXG4gIH0sXG4gIFwiaW1hZ2UveC14Yml0bWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4Ym1cIl1cbiAgfSxcbiAgXCJpbWFnZS94LXhjZlwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJpbWFnZS94LXhwaXhtYXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhwbVwiXVxuICB9LFxuICBcImltYWdlL3gteHdpbmRvd2R1bXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInh3ZFwiXVxuICB9LFxuICBcIm1lc3NhZ2UvY3BpbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcbiAgICAgIFwiZGlzcG9zaXRpb24tbm90aWZpY2F0aW9uXCJcbiAgICBdXG4gIH0sXG4gIFwibWVzc2FnZS9leHRlcm5hbC1ib2R5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZmVlZGJhY2stcmVwb3J0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widThtc2dcIl1cbiAgfSxcbiAgXCJtZXNzYWdlL2dsb2JhbC1kZWxpdmVyeS1zdGF0dXNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1OGRzblwiXVxuICB9LFxuICBcIm1lc3NhZ2UvZ2xvYmFsLWRpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvblwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInU4bWRuXCJdXG4gIH0sXG4gIFwibWVzc2FnZS9nbG9iYWwtaGVhZGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInU4aGRyXCJdXG4gIH0sXG4gIFwibWVzc2FnZS9odHRwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm1lc3NhZ2UvaW1kbit4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJtZXNzYWdlL25ld3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9wYXJ0aWFsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm1lc3NhZ2UvcmZjODIyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJlbWxcIiwgXCJtaW1lXCJdXG4gIH0sXG4gIFwibWVzc2FnZS9zLWh0dHBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS9zaXBmcmFnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2UvdHJhY2tpbmctc3RhdHVzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1lc3NhZ2Uvdm5kLnNpLnNpbXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibWVzc2FnZS92bmQud2ZhLndzY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndzY1wiXVxuICB9LFxuICBcIm1vZGVsLzNtZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIjNtZlwiXVxuICB9LFxuICBcIm1vZGVsL2U1N1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC9nbHRmK2pzb25cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImdsdGZcIl1cbiAgfSxcbiAgXCJtb2RlbC9nbHRmLWJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2xiXCJdXG4gIH0sXG4gIFwibW9kZWwvaWdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImlnc1wiLCBcImlnZXNcIl1cbiAgfSxcbiAgXCJtb2RlbC9tZXNoXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXNoXCIsIFwibWVzaFwiLCBcInNpbG9cIl1cbiAgfSxcbiAgXCJtb2RlbC9tdGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdGxcIl1cbiAgfSxcbiAgXCJtb2RlbC9vYmpcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvYmpcIl1cbiAgfSxcbiAgXCJtb2RlbC9zdGVwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3N0ZXAreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdHB4XCJdXG4gIH0sXG4gIFwibW9kZWwvc3RlcCt6aXBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdHB6XCJdXG4gIH0sXG4gIFwibW9kZWwvc3RlcC14bWwremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3RweHpcIl1cbiAgfSxcbiAgXCJtb2RlbC9zdGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzdGxcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuY29sbGFkYSt4bWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRhZVwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5kd2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkd2ZcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQuZmxhdGxhbmQuM2RtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtb2RlbC92bmQuZ2RsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZ2RsXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLmdzLWdkbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5ncy5nZGxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibW9kZWwvdm5kLmd0d1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd0d1wiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5tb21sK3htbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcIm1vZGVsL3ZuZC5tdHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtdHNcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQub3BlbmdleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9nZXhcIl1cbiAgfSxcbiAgXCJtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LmJpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhfYlwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQudGV4dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInhfdFwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC5weXRoYS5weW94XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5yb3NldHRlLmFubm90YXRlZC1kYXRhLW1vZGVsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm1vZGVsL3ZuZC5zYXAudmRzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmRzXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLnVzZHoremlwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXNkelwiXVxuICB9LFxuICBcIm1vZGVsL3ZuZC52YWx2ZS5zb3VyY2UuY29tcGlsZWQtbWFwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYnNwXCJdXG4gIH0sXG4gIFwibW9kZWwvdm5kLnZ0dVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZ0dVwiXVxuICB9LFxuICBcIm1vZGVsL3ZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3cmxcIiwgXCJ2cm1sXCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK2JpbmFyeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkYlwiLCBcIngzZGJ6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkK2Zhc3RpbmZvc2V0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieDNkYlwiXVxuICB9LFxuICBcIm1vZGVsL3gzZCt2cm1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2R2XCIsIFwieDNkdnpcIl1cbiAgfSxcbiAgXCJtb2RlbC94M2QreG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2RcIiwgXCJ4M2R6XCJdXG4gIH0sXG4gIFwibW9kZWwveDNkLXZybWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4M2R2XCJdXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2FsdGVybmF0aXZlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC9hcHBsZWRvdWJsZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvYnl0ZXJhbmdlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvZGlnZXN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcIm11bHRpcGFydC9lbmNyeXB0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2VcbiAgfSxcbiAgXCJtdWx0aXBhcnQvaGVhZGVyLXNldFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvbWl4ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L211bHRpbGluZ3VhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvcGFyYWxsZWxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3JlbGF0ZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlXG4gIH0sXG4gIFwibXVsdGlwYXJ0L3JlcG9ydFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvc2lnbmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZVxuICB9LFxuICBcIm11bHRpcGFydC92bmQuYmludC5tZWQtcGx1c1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQvdm9pY2UtbWVzc2FnZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvMWQtaW50ZXJsZWF2ZWQtcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvY2FjaGUtbWFuaWZlc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFwcGNhY2hlXCIsIFwibWFuaWZlc3RcIl1cbiAgfSxcbiAgXCJ0ZXh0L2NhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaWNzXCIsIFwiaWZiXCJdXG4gIH0sXG4gIFwidGV4dC9jYWxlbmRlclwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQvY21kXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC9jb2ZmZWVzY3JpcHRcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjb2ZmZWVcIiwgXCJsaXRjb2ZmZWVcIl1cbiAgfSxcbiAgXCJ0ZXh0L2NxbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2NxbC1leHByZXNzaW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvY3FsLWlkZW50aWZpZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9jc3NcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiY3NzXCJdXG4gIH0sXG4gIFwidGV4dC9jc3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImNzdlwiXVxuICB9LFxuICBcInRleHQvY3N2LXNjaGVtYVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2RpcmVjdG9yeVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2Ruc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VjbWFzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2VucmljaGVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZmhpcnBhdGhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9mbGV4ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZndkcmVkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvZ2ZmM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L2dyYW1tYXItcmVmLWxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9odG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJodG1sXCIsIFwiaHRtXCIsIFwic2h0bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L2phZGVcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqYWRlXCJdXG4gIH0sXG4gIFwidGV4dC9qYXZhc2NyaXB0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwidGV4dC9qY3ItY25kXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvanN4XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqc3hcIl1cbiAgfSxcbiAgXCJ0ZXh0L2xlc3NcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImxlc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L21hcmtkb3duXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtYXJrZG93blwiLCBcIm1kXCJdXG4gIH0sXG4gIFwidGV4dC9tYXRobWxcIjoge1xuICAgIFwic291cmNlXCI6IFwibmdpbnhcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW1sXCJdXG4gIH0sXG4gIFwidGV4dC9tZHhcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1keFwiXVxuICB9LFxuICBcInRleHQvbWl6YXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9uM1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJuM1wiXVxuICB9LFxuICBcInRleHQvcGFyYW1ldGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIlxuICB9LFxuICBcInRleHQvcGFyaXR5ZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcGxhaW5cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR4dFwiLCBcInRleHRcIiwgXCJjb25mXCIsIFwiZGVmXCIsIFwibGlzdFwiLCBcImxvZ1wiLCBcImluXCIsIFwiaW5pXCJdXG4gIH0sXG4gIFwidGV4dC9wcm92ZW5hbmNlLW5vdGF0aW9uXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiXG4gIH0sXG4gIFwidGV4dC9wcnMuZmFsbGVuc3RlaW4ucnN0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcHJzLmxpbmVzLnRhZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImRzY1wiXVxuICB9LFxuICBcInRleHQvcHJzLnByb3AubG9naWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yYXB0b3JmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yZWRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9yZmM4MjItaGVhZGVyc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3JpY2h0ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJydHhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3J0ZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicnRmXCJdXG4gIH0sXG4gIFwidGV4dC9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvcnRwbG9vcGJhY2tcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9ydHhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC9zZ21sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2dtbFwiLCBcInNnbVwiXVxuICB9LFxuICBcInRleHQvc2hhY2xjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvc2hleFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNoZXhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3NsaW1cIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzbGltXCIsIFwic2xtXCJdXG4gIH0sXG4gIFwidGV4dC9zcGR4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3BkeFwiXVxuICB9LFxuICBcInRleHQvc3RyaW5nc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3N0eWx1c1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInN0eWx1c1wiLCBcInN0eWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3QxNDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widHN2XCJdXG4gIH0sXG4gIFwidGV4dC90cm9mZlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInRcIiwgXCJ0clwiLCBcInJvZmZcIiwgXCJtYW5cIiwgXCJtZVwiLCBcIm1zXCJdXG4gIH0sXG4gIFwidGV4dC90dXJ0bGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInR0bFwiXVxuICB9LFxuICBcInRleHQvdWxwZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdXJpLWxpc3RcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInVyaVwiLCBcInVyaXNcIiwgXCJ1cmxzXCJdXG4gIH0sXG4gIFwidGV4dC92Y2FyZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widmNhcmRcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmFiY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5hc2NpaS1hcnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImN1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5jdXJsLmRjdXJsXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJkY3VybFwiXVxuICB9LFxuICBcInRleHQvdm5kLmN1cmwubWN1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1jdXJsXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuY3VybC5zY3VybFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic2N1cmxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5kZWJpYW4uY29weXJpZ2h0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNoYXJzZXRcIjogXCJVVEYtOFwiXG4gIH0sXG4gIFwidGV4dC92bmQuZG1jbGllbnRzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuZHZiLnN1YnRpdGxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic3ViXCJdXG4gIH0sXG4gIFwidGV4dC92bmQuZXNtZXJ0ZWMudGhlbWUtZGVzY3JpcHRvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIlxuICB9LFxuICBcInRleHQvdm5kLmZhbWlseXNlYXJjaC5nZWRjb21cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJnZWRcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5maWNsYWIuZmx0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLmZseVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZseVwiXVxuICB9LFxuICBcInRleHQvdm5kLmZtaS5mbGV4c3RvclwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZseFwiXVxuICB9LFxuICBcInRleHQvdm5kLmdtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5ncmFwaHZpelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImd2XCJdXG4gIH0sXG4gIFwidGV4dC92bmQuaGFuc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5oZ2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuaW4zZC4zZG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2RtbFwiXVxuICB9LFxuICBcInRleHQvdm5kLmluM2Quc3BvdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNwb3RcIl1cbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pcHRjLm5ld3NtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5pcHRjLm5pdGZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubGF0ZXgtelwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5tb3Rvcm9sYS5yZWZsZXhcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQubXMtbWVkaWFwYWNrYWdlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLm5ldDJwaG9uZS5jb21tY2VudGVyLmNvbW1hbmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQucmFkaXN5cy5tc21sLWJhc2ljLWxheW91dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC5zZW54LndhcnBzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuc2kudXJpY2F0YWxvZ3VlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQvdm5kLnNvc2lcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQuc3VuLmoybWUuYXBwLWRlc2NyaXB0b3JcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImphZFwiXVxuICB9LFxuICBcInRleHQvdm5kLnRyb2xsdGVjaC5saW5ndWlzdFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjaGFyc2V0XCI6IFwiVVRGLThcIlxuICB9LFxuICBcInRleHQvdm5kLndhcC5zaVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ0ZXh0L3ZuZC53YXAuc2xcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidGV4dC92bmQud2FwLndtbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIndtbFwiXVxuICB9LFxuICBcInRleHQvdm5kLndhcC53bWxzY3JpcHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bWxzXCJdXG4gIH0sXG4gIFwidGV4dC92dHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiY2hhcnNldFwiOiBcIlVURi04XCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1widnR0XCJdXG4gIH0sXG4gIFwidGV4dC94LWFzbVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wic1wiLCBcImFzbVwiXVxuICB9LFxuICBcInRleHQveC1jXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJjXCIsIFwiY2NcIiwgXCJjeHhcIiwgXCJjcHBcIiwgXCJoXCIsIFwiaGhcIiwgXCJkaWNcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtY29tcG9uZW50XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcIm5naW54XCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImh0Y1wiXVxuICB9LFxuICBcInRleHQveC1mb3J0cmFuXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmXCIsIFwiZm9yXCIsIFwiZjc3XCIsIFwiZjkwXCJdXG4gIH0sXG4gIFwidGV4dC94LWd3dC1ycGNcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfSxcbiAgXCJ0ZXh0L3gtaGFuZGxlYmFycy10ZW1wbGF0ZVwiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcImhic1wiXVxuICB9LFxuICBcInRleHQveC1qYXZhLXNvdXJjZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiamF2YVwiXVxuICB9LFxuICBcInRleHQveC1qcXVlcnktdG1wbFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZVxuICB9LFxuICBcInRleHQveC1sdWFcIjoge1xuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJsdWFcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtbWFya2Rvd25cIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rZFwiXVxuICB9LFxuICBcInRleHQveC1uZm9cIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm5mb1wiXVxuICB9LFxuICBcInRleHQveC1vcG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJvcG1sXCJdXG4gIH0sXG4gIFwidGV4dC94LW9yZ1wiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wib3JnXCJdXG4gIH0sXG4gIFwidGV4dC94LXBhc2NhbFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wicFwiLCBcInBhc1wiXVxuICB9LFxuICBcInRleHQveC1wcm9jZXNzaW5nXCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJwZGVcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Fzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNhc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Nzc1wiOiB7XG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNjc3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2V0ZXh0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJldHhcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc2Z2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJzZnZcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtc3VzZS15bXBcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWUsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInltcFwiXVxuICB9LFxuICBcInRleHQveC11dWVuY29kZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXVcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdmNhbGVuZGFyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2Y3NcIl1cbiAgfSxcbiAgXCJ0ZXh0L3gtdmNhcmRcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInZjZlwiXVxuICB9LFxuICBcInRleHQveG1sXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ4bWxcIl1cbiAgfSxcbiAgXCJ0ZXh0L3htbC1leHRlcm5hbC1wYXJzZWQtZW50aXR5XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInRleHQveWFtbFwiOiB7XG4gICAgXCJjb21wcmVzc2libGVcIjogdHJ1ZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wieWFtbFwiLCBcInltbFwiXVxuICB9LFxuICBcInZpZGVvLzFkLWludGVybGVhdmVkLXBhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby8zZ3BwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiM2dwXCIsIFwiM2dwcFwiXVxuICB9LFxuICBcInZpZGVvLzNncHAtdHRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vM2dwcDJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCIzZzJcIl1cbiAgfSxcbiAgXCJ2aWRlby9hdjFcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vYm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vYnQ2NTZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vY2VsYlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9kdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9lbmNhcHJ0cFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9mZnYxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL2ZsZXhmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2MVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjFcIl1cbiAgfSxcbiAgXCJ2aWRlby9oMjYzXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiaDI2M1wiXVxuICB9LFxuICBcInZpZGVvL2gyNjMtMTk5OFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9oMjYzLTIwMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2NFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImgyNjRcIl1cbiAgfSxcbiAgXCJ2aWRlby9oMjY0LXJjZG9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2NC1zdmNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vaDI2NVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9pc28uc2VnbWVudFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00c1wiXVxuICB9LFxuICBcInZpZGVvL2pwZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcGd2XCJdXG4gIH0sXG4gIFwidmlkZW8vanBlZzIwMDBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vanBtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJqcG1cIiwgXCJqcGdtXCJdXG4gIH0sXG4gIFwidmlkZW8vanhzdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9tajJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJtajJcIiwgXCJtanAyXCJdXG4gIH0sXG4gIFwidmlkZW8vbXAxc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9tcDJwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL21wMnRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ0c1wiXVxuICB9LFxuICBcInZpZGVvL21wNFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1wNFwiLCBcIm1wNHZcIiwgXCJtcGc0XCJdXG4gIH0sXG4gIFwidmlkZW8vbXA0di1lc1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9tcGVnXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibXBlZ1wiLCBcIm1wZ1wiLCBcIm1wZVwiLCBcIm0xdlwiLCBcIm0ydlwiXVxuICB9LFxuICBcInZpZGVvL21wZWc0LWdlbmVyaWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vbXB2XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL252XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL29nZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm9ndlwiXVxuICB9LFxuICBcInZpZGVvL3Bhcml0eWZlY1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9wb2ludGVyXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3F1aWNrdGltZVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInF0XCIsIFwibW92XCJdXG4gIH0sXG4gIFwidmlkZW8vcmFwdG9yZmVjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3Jhd1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9ydHAtZW5jLWFlc2NtMTI4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3J0cGxvb3BiYWNrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3J0eFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby9zY2lwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3NtcHRlMjkxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3NtcHRlMjkybVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby91bHBmZWNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdmMxXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZjMlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuY2N0dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5oZFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInV2aFwiLCBcInV2dmhcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQuZGVjZS5tb2JpbGVcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ1dm1cIiwgXCJ1dnZtXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRlY2UubXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnBkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZwXCIsIFwidXZ2cFwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnNkXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZzXCIsIFwidXZ2c1wiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kZWNlLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ2XCIsIFwidXZ2dlwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5kaXJlY3R2Lm1wZWdcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRpcmVjdHYubXBlZy10dHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmRsbmEubXBlZy10dHNcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmR2Yi5maWxlXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZHZiXCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLmZ2dFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImZ2dFwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5obnMudmlkZW9cIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4xZHBhcml0eWZlYy0xMDEwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0uMWRwYXJpdHlmZWMtMjAwNVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuaXB0dmZvcnVtLjJkcGFyaXR5ZmVjLTEwMTBcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLmlwdHZmb3J1bS4yZHBhcml0eWZlYy0yMDA1XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzYXZjXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5pcHR2Zm9ydW0udHRzbXBlZzJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm1vdG9yb2xhLnZpZGVvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5tb3Rvcm9sYS52aWRlb3BcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLm1wZWd1cmxcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJteHVcIiwgXCJtNHVcIl1cbiAgfSxcbiAgXCJ2aWRlby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5dlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInB5dlwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC5ub2tpYS5pbnRlcmxlYXZlZC1tdWx0aW1lZGlhXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5ub2tpYS5tcDR2clwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQubm9raWEudmlkZW92b2lwXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5vYmplY3R2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQucmFkZ2FtZXR0b29scy5iaW5rXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5yYWRnYW1ldHRvb2xzLnNtYWNrZXJcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnNlYWxlZC5tcGVnMVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby92bmQuc2VhbGVkLm1wZWc0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWQuc3dmXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZuZC5zZWFsZWRtZWRpYS5zb2Z0c2VhbC5tb3ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdm5kLnV2dnUubXA0XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widXZ1XCIsIFwidXZ2dVwiXVxuICB9LFxuICBcInZpZGVvL3ZuZC52aXZvXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1widml2XCJdXG4gIH0sXG4gIFwidmlkZW8vdm5kLnlvdXR1YmUueXRcIjoge1xuICAgIFwic291cmNlXCI6IFwiaWFuYVwiXG4gIH0sXG4gIFwidmlkZW8vdnA4XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImlhbmFcIlxuICB9LFxuICBcInZpZGVvL3ZwOVwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJpYW5hXCJcbiAgfSxcbiAgXCJ2aWRlby93ZWJtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3ZWJtXCJdXG4gIH0sXG4gIFwidmlkZW8veC1mNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImY0dlwiXVxuICB9LFxuICBcInZpZGVvL3gtZmxpXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJmbGlcIl1cbiAgfSxcbiAgXCJ2aWRlby94LWZsdlwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImNvbXByZXNzaWJsZVwiOiBmYWxzZSxcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiZmx2XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tNHZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm00dlwiXVxuICB9LFxuICBcInZpZGVvL3gtbWF0cm9za2FcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJjb21wcmVzc2libGVcIjogZmFsc2UsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1rdlwiLCBcIm1rM2RcIiwgXCJta3NcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1uZ1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wibW5nXCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy1hc2ZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcImFzZlwiLCBcImFzeFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtdm9iXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ2b2JcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdtXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bVwiXVxuICB9LFxuICBcInZpZGVvL3gtbXMtd212XCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiY29tcHJlc3NpYmxlXCI6IGZhbHNlLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJ3bXZcIl1cbiAgfSxcbiAgXCJ2aWRlby94LW1zLXdteFwiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wid214XCJdXG4gIH0sXG4gIFwidmlkZW8veC1tcy13dnhcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInd2eFwiXVxuICB9LFxuICBcInZpZGVvL3gtbXN2aWRlb1wiOiB7XG4gICAgXCJzb3VyY2VcIjogXCJhcGFjaGVcIixcbiAgICBcImV4dGVuc2lvbnNcIjogW1wiYXZpXCJdXG4gIH0sXG4gIFwidmlkZW8veC1zZ2ktbW92aWVcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcIm1vdmllXCJdXG4gIH0sXG4gIFwidmlkZW8veC1zbXZcIjoge1xuICAgIFwic291cmNlXCI6IFwiYXBhY2hlXCIsXG4gICAgXCJleHRlbnNpb25zXCI6IFtcInNtdlwiXVxuICB9LFxuICBcIngtY29uZmVyZW5jZS94LWNvb2x0YWxrXCI6IHtcbiAgICBcInNvdXJjZVwiOiBcImFwYWNoZVwiLFxuICAgIFwiZXh0ZW5zaW9uc1wiOiBbXCJpY2VcIl1cbiAgfSxcbiAgXCJ4LXNoYWRlci94LWZyYWdtZW50XCI6IHtcbiAgICBcImNvbXByZXNzaWJsZVwiOiB0cnVlXG4gIH0sXG4gIFwieC1zaGFkZXIveC12ZXJ0ZXhcIjoge1xuICAgIFwiY29tcHJlc3NpYmxlXCI6IHRydWVcbiAgfVxufSBhcyBjb25zdDtcbiIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG5cbi8qKiBTdXBwb3J0aW5nIGZ1bmN0aW9ucyBmb3IgbWVkaWFfdHlwZXMgdGhhdCBkbyBub3QgbWFrZSBwYXJ0IG9mIHRoZSBwdWJsaWNcbiAqIEFQSS5cbiAqXG4gKiBAbW9kdWxlXG4gKiBAcHJpdmF0ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lVG9rZW4odjogc3RyaW5nKTogW3Rva2VuOiBzdHJpbmcsIHJlc3Q6IHN0cmluZ10ge1xuICBjb25zdCBub3RQb3MgPSBpbmRleE9mKHYsIGlzTm90VG9rZW5DaGFyKTtcbiAgaWYgKG5vdFBvcyA9PSAtMSkge1xuICAgIHJldHVybiBbdiwgXCJcIl07XG4gIH1cbiAgaWYgKG5vdFBvcyA9PSAwKSB7XG4gICAgcmV0dXJuIFtcIlwiLCB2XTtcbiAgfVxuICByZXR1cm4gW3Yuc2xpY2UoMCwgbm90UG9zKSwgdi5zbGljZShub3RQb3MpXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN1bWVWYWx1ZSh2OiBzdHJpbmcpOiBbdmFsdWU6IHN0cmluZywgcmVzdDogc3RyaW5nXSB7XG4gIGlmICghdikge1xuICAgIHJldHVybiBbXCJcIiwgdl07XG4gIH1cbiAgaWYgKHZbMF0gIT09IGBcImApIHtcbiAgICByZXR1cm4gY29uc3VtZVRva2VuKHYpO1xuICB9XG4gIGxldCB2YWx1ZSA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgdi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHIgPSB2W2ldO1xuICAgIGlmIChyID09PSBgXCJgKSB7XG4gICAgICByZXR1cm4gW3ZhbHVlLCB2LnNsaWNlKGkgKyAxKV07XG4gICAgfVxuICAgIGlmIChyID09PSBcIlxcXFxcIiAmJiBpICsgMSA8IHYubGVuZ3RoICYmIGlzVFNwZWNpYWwodltpICsgMV0pKSB7XG4gICAgICB2YWx1ZSArPSB2W2kgKyAxXTtcbiAgICAgIGkrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAociA9PT0gXCJcXHJcIiB8fCByID09PSBcIlxcblwiKSB7XG4gICAgICByZXR1cm4gW1wiXCIsIHZdO1xuICAgIH1cbiAgICB2YWx1ZSArPSB2W2ldO1xuICB9XG4gIHJldHVybiBbXCJcIiwgdl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdW1lTWVkaWFQYXJhbShcbiAgdjogc3RyaW5nLFxuKTogW2tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCByZXN0OiBzdHJpbmddIHtcbiAgbGV0IHJlc3QgPSB2LnRyaW1TdGFydCgpO1xuICBpZiAoIXJlc3Quc3RhcnRzV2l0aChcIjtcIikpIHtcbiAgICByZXR1cm4gW1wiXCIsIFwiXCIsIHZdO1xuICB9XG4gIHJlc3QgPSByZXN0LnNsaWNlKDEpO1xuICByZXN0ID0gcmVzdC50cmltU3RhcnQoKTtcbiAgbGV0IHBhcmFtOiBzdHJpbmc7XG4gIFtwYXJhbSwgcmVzdF0gPSBjb25zdW1lVG9rZW4ocmVzdCk7XG4gIHBhcmFtID0gcGFyYW0udG9Mb3dlckNhc2UoKTtcbiAgaWYgKCFwYXJhbSkge1xuICAgIHJldHVybiBbXCJcIiwgXCJcIiwgdl07XG4gIH1cbiAgcmVzdCA9IHJlc3Quc2xpY2UoMSk7XG4gIHJlc3QgPSByZXN0LnRyaW1TdGFydCgpO1xuICBjb25zdCBbdmFsdWUsIHJlc3QyXSA9IGNvbnN1bWVWYWx1ZShyZXN0KTtcbiAgaWYgKHZhbHVlID09IFwiXCIgJiYgcmVzdDIgPT09IHJlc3QpIHtcbiAgICByZXR1cm4gW1wiXCIsIFwiXCIsIHZdO1xuICB9XG4gIHJlc3QgPSByZXN0MjtcbiAgcmV0dXJuIFtwYXJhbSwgdmFsdWUsIHJlc3RdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlMjMzMUVuY29kaW5nKHY6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN2ID0gdi5zcGxpdChgJ2AsIDMpO1xuICBpZiAoc3YubGVuZ3RoICE9PSAzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBjaGFyc2V0ID0gc3ZbMF0udG9Mb3dlckNhc2UoKTtcbiAgaWYgKCFjaGFyc2V0KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoY2hhcnNldCAhPSBcInVzLWFzY2lpXCIgJiYgY2hhcnNldCAhPSBcInV0Zi04XCIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGVuY3YgPSBkZWNvZGVVUkkoc3ZbMl0pO1xuICBpZiAoIWVuY3YpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBlbmN2O1xufVxuXG5mdW5jdGlvbiBpbmRleE9mPFQ+KHM6IEl0ZXJhYmxlPFQ+LCBmbjogKHM6IFQpID0+IGJvb2xlYW4pOiBudW1iZXIge1xuICBsZXQgaSA9IC0xO1xuICBmb3IgKGNvbnN0IHYgb2Ygcykge1xuICAgIGkrKztcbiAgICBpZiAoZm4odikpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0l0ZXJhdG9yPFQ+KG9iajogdW5rbm93bik6IG9iaiBpcyBJdGVyYWJsZTxUPiB7XG4gIGlmIChvYmogPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBkZW5vLWxpbnQtaWdub3JlIG5vLWV4cGxpY2l0LWFueVxuICByZXR1cm4gdHlwZW9mIChvYmogYXMgYW55KVtTeW1ib2wuaXRlcmF0b3JdID09PSBcImZ1bmN0aW9uXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Rva2VuKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGluZGV4T2YocywgaXNOb3RUb2tlbkNoYXIpIDwgMDtcbn1cblxuZnVuY3Rpb24gaXNOb3RUb2tlbkNoYXIocjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNUb2tlbkNoYXIocik7XG59XG5cbmZ1bmN0aW9uIGlzVG9rZW5DaGFyKHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjb2RlID0gci5jaGFyQ29kZUF0KDApO1xuICByZXR1cm4gY29kZSA+IDB4MjAgJiYgY29kZSA8IDB4N2YgJiYgIWlzVFNwZWNpYWwocik7XG59XG5cbmZ1bmN0aW9uIGlzVFNwZWNpYWwocjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBgKCk8PkAsOzpcXFxcXCIvW10/PWAuaW5jbHVkZXMoclswXSk7XG59XG5cbmNvbnN0IENIQVJfQ09ERV9TUEFDRSA9IFwiIFwiLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDSEFSX0NPREVfVElMREUgPSBcIn5cIi5jaGFyQ29kZUF0KDApO1xuXG5leHBvcnQgZnVuY3Rpb24gbmVlZHNFbmNvZGluZyhzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgZm9yIChjb25zdCBiIG9mIHMpIHtcbiAgICBjb25zdCBjaGFyQ29kZSA9IGIuY2hhckNvZGVBdCgwKTtcbiAgICBpZiAoXG4gICAgICAoY2hhckNvZGUgPCBDSEFSX0NPREVfU1BBQ0UgfHwgY2hhckNvZGUgPiBDSEFSX0NPREVfVElMREUpICYmIGIgIT09IFwiXFx0XCJcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vKiogUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIG1lZGlhIHR5cGVzLlxuICpcbiAqIFRoaXMgQVBJIGlzIGluc3BpcmVkIGJ5IHRoZSBHb0xhbmcgW2BtaW1lYF0oaHR0cHM6Ly9wa2cuZ28uZGV2L21pbWUpIHBhY2thZ2VcbiAqIGFuZCBbanNodHRwL21pbWUtdHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvbWltZS10eXBlcykuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCBkYiBmcm9tIFwiLi92ZW5kb3IvbWltZS1kYi52MS41Mi4wLnRzXCI7XG5pbXBvcnQge1xuICBjb25zdW1lTWVkaWFQYXJhbSxcbiAgZGVjb2RlMjMzMUVuY29kaW5nLFxuICBpc0l0ZXJhdG9yLFxuICBpc1Rva2VuLFxuICBuZWVkc0VuY29kaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG50eXBlIERCID0gdHlwZW9mIGRiO1xudHlwZSBDb250ZW50VHlwZVRvRXh0ZW5zaW9uID0ge1xuICBbSyBpbiBrZXlvZiBEQl06IERCW0tdIGV4dGVuZHMgeyBcImV4dGVuc2lvbnNcIjogcmVhZG9ubHkgc3RyaW5nW10gfVxuICAgID8gREJbS11bXCJleHRlbnNpb25zXCJdW251bWJlcl1cbiAgICA6IG5ldmVyO1xufTtcbnR5cGUgS25vd25FeHRlbnNpb25PclR5cGUgPVxuICB8IGtleW9mIENvbnRlbnRUeXBlVG9FeHRlbnNpb25cbiAgfCBDb250ZW50VHlwZVRvRXh0ZW5zaW9uW2tleW9mIENvbnRlbnRUeXBlVG9FeHRlbnNpb25dXG4gIHwgYC4ke0NvbnRlbnRUeXBlVG9FeHRlbnNpb25ba2V5b2YgQ29udGVudFR5cGVUb0V4dGVuc2lvbl19YDtcblxuaW50ZXJmYWNlIERCRW50cnkge1xuICBzb3VyY2U6IHN0cmluZztcbiAgY29tcHJlc3NpYmxlPzogYm9vbGVhbjtcbiAgY2hhcnNldD86IHN0cmluZztcbiAgZXh0ZW5zaW9ucz86IHN0cmluZ1tdO1xufVxuXG50eXBlIEtleU9mRGIgPSBrZXlvZiB0eXBlb2YgZGI7XG5cbi8qKiBBIG1hcCBvZiBleHRlbnNpb25zIGZvciBhIGdpdmVuIG1lZGlhIHR5cGUuICovXG5leHBvcnQgY29uc3QgZXh0ZW5zaW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcblxuLyoqIEEgbWFwIG9mIHRoZSBtZWRpYSB0eXBlIGZvciBhIGdpdmVuIGV4dGVuc2lvbiAqL1xuZXhwb3J0IGNvbnN0IHR5cGVzID0gbmV3IE1hcDxzdHJpbmcsIEtleU9mRGI+KCk7XG5cbi8qKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBwb3B1bGF0ZSB0aGUgbWFwcyBiYXNlZCBvbiB0aGUgTWltZSBEQi4gKi9cbihmdW5jdGlvbiBwb3B1bGF0ZU1hcHMoKTogdm9pZCB7XG4gIGNvbnN0IHByZWZlcmVuY2UgPSBbXCJuZ2lueFwiLCBcImFwYWNoZVwiLCB1bmRlZmluZWQsIFwiaWFuYVwiXTtcblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXMoZGIpIGFzIEtleU9mRGJbXSkge1xuICAgIGNvbnN0IG1pbWUgPSBkYlt0eXBlXSBhcyBEQkVudHJ5O1xuICAgIGNvbnN0IGV4dHMgPSBtaW1lLmV4dGVuc2lvbnM7XG5cbiAgICBpZiAoIWV4dHMgfHwgIWV4dHMubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlIHdvcmsgYXJvdW5kIGRlbm9sYW5kL2RudCMxNDhcbiAgICBleHRlbnNpb25zLnNldCh0eXBlLCBleHRzKTtcblxuICAgIGZvciAoY29uc3QgZXh0IG9mIGV4dHMpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB0eXBlcy5nZXQoZXh0KTtcbiAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGZyb20gPSBwcmVmZXJlbmNlLmluZGV4T2YoKGRiW2N1cnJlbnRdIGFzIERCRW50cnkpLnNvdXJjZSk7XG4gICAgICAgIGNvbnN0IHRvID0gcHJlZmVyZW5jZS5pbmRleE9mKG1pbWUuc291cmNlKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY3VycmVudCAhPT0gXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiAmJlxuICAgICAgICAgIChmcm9tID4gdG8gfHxcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgd29yayBhcm91bmQgZGVub2xhbmQvZG50IzE0OFxuICAgICAgICAgICAgKGZyb20gPT09IHRvICYmIGN1cnJlbnQuc3RhcnRzV2l0aChcImFwcGxpY2F0aW9uL1wiKSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHR5cGVzLnNldChleHQsIHR5cGUpO1xuICAgIH1cbiAgfVxufSkoKTtcblxuLyoqIEdpdmVuIGFuIGV4dGVuc2lvbiBvciBtZWRpYSB0eXBlLCByZXR1cm4gYSBmdWxsIGBDb250ZW50LVR5cGVgIG9yXG4gKiBgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIHZhbHVlLlxuICpcbiAqIFRoZSBmdW5jdGlvbiB3aWxsIHRyZWF0IHRoZSBgZXh0ZW5zaW9uT3JUeXBlYCBhcyBhIG1lZGlhIHR5cGUgd2hlbiBpdFxuICogY29udGFpbnMgYSBgL2AsIG90aGVyd2lzZSBpdCB3aWxsIHByb2Nlc3MgaXQgYXMgYW4gZXh0ZW5zaW9uLCB3aXRoIG9yIHdpdGhvdXRcbiAqIHRoZSBsZWFkaW5nIGAuYC5cbiAqXG4gKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHVuYWJsZSB0byByZXNvbHZlIHRoZSBtZWRpYSB0eXBlLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBjb250ZW50VHlwZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL21lZGlhX3R5cGVzL21vZC50c1wiO1xuICpcbiAqIGNvbnRlbnRUeXBlKFwiLmpzb25cIik7IC8vIGBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04YFxuICogY29udGVudFR5cGUoXCJ0ZXh0L2h0bWxcIik7IC8vIGB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThgXG4gKiBjb250ZW50VHlwZShcInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiKTsgLy8gYHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOGBcbiAqIGNvbnRlbnRUeXBlKFwidHh0XCIpOyAvLyBgdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOGBcbiAqIGNvbnRlbnRUeXBlKFwiZm9vXCIpOyAvLyB1bmRlZmluZWRcbiAqIGNvbnRlbnRUeXBlKFwiZmlsZS5qc29uXCIpOyAvLyB1bmRlZmluZWRcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udGVudFR5cGU8XG4gIC8vIFdvcmthcm91bmQgdG8gYXV0b2NvbXBsZXRlIGZvciBwYXJhbWV0ZXJzOiBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzI5NzI5I2lzc3VlY29tbWVudC01Njc4NzE5MzlcbiAgLy8gZGVuby1saW50LWlnbm9yZSBiYW4tdHlwZXNcbiAgVCBleHRlbmRzIChzdHJpbmcgJiB7fSkgfCBLbm93bkV4dGVuc2lvbk9yVHlwZSxcbj4oXG4gIGV4dGVuc2lvbk9yVHlwZTogVCxcbik6IExvd2VyY2FzZTxUPiBleHRlbmRzIEtub3duRXh0ZW5zaW9uT3JUeXBlID8gc3RyaW5nIDogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBbbWVkaWFUeXBlLCBwYXJhbXMgPSB7fV0gPSBleHRlbnNpb25PclR5cGUuaW5jbHVkZXMoXCIvXCIpXG4gICAgICA/IHBhcnNlTWVkaWFUeXBlKGV4dGVuc2lvbk9yVHlwZSlcbiAgICAgIDogW3R5cGVCeUV4dGVuc2lvbihleHRlbnNpb25PclR5cGUpLCB1bmRlZmluZWRdO1xuICAgIGlmICghbWVkaWFUeXBlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkIGFzIExvd2VyY2FzZTxUPiBleHRlbmRzIEtub3duRXh0ZW5zaW9uT3JUeXBlID8gc3RyaW5nXG4gICAgICAgIDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoIShcImNoYXJzZXRcIiBpbiBwYXJhbXMpKSB7XG4gICAgICBjb25zdCBjaGFyc2V0ID0gZ2V0Q2hhcnNldChtZWRpYVR5cGUpO1xuICAgICAgaWYgKGNoYXJzZXQpIHtcbiAgICAgICAgcGFyYW1zLmNoYXJzZXQgPSBjaGFyc2V0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0TWVkaWFUeXBlKG1lZGlhVHlwZSwgcGFyYW1zKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8ganVzdCBzd2FsbG93IHJldHVybmluZyB1bmRlZmluZWRcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkIGFzIExvd2VyY2FzZTxUPiBleHRlbmRzIEtub3duRXh0ZW5zaW9uT3JUeXBlID8gc3RyaW5nXG4gICAgOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKiBGb3IgYSBnaXZlbiBtZWRpYSB0eXBlLCByZXR1cm4gdGhlIG1vc3QgcmVsZXZhbnQgZXh0ZW5zaW9uLCBvciBgdW5kZWZpbmVkYFxuICogaWYgbm8gZXh0ZW5zaW9uIGNhbiBiZSBmb3VuZC5cbiAqXG4gKiBFeHRlbnNpb25zIGFyZSByZXR1cm5lZCB3aXRob3V0IGEgbGVhZGluZyBgLmAuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGV4dGVuc2lvbiB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL21lZGlhX3R5cGVzL21vZC50c1wiO1xuICpcbiAqIGV4dGVuc2lvbihcInRleHQvcGxhaW5cIik7IC8vIGB0eHRgXG4gKiBleHRlbnNpb24oXCJhcHBsaWNhdGlvbi9qc29uXCIpOyAvLyBganNvbmBcbiAqIGV4dGVuc2lvbihcInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOFwiKTsgLy8gYGh0bWxgXG4gKiBleHRlbnNpb24oXCJhcHBsaWNhdGlvbi9mb29cIik7IC8vIHVuZGVmaW5lZFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbnNpb24odHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXh0cyA9IGV4dGVuc2lvbnNCeVR5cGUodHlwZSk7XG4gIGlmIChleHRzKSB7XG4gICAgcmV0dXJuIGV4dHNbMF07XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqIFJldHVybnMgdGhlIGV4dGVuc2lvbnMga25vd24gdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZWRpYSB0eXBlIGB0eXBlYC5cbiAqIFRoZSByZXR1cm5lZCBleHRlbnNpb25zIHdpbGwgZWFjaCBiZWdpbiB3aXRoIGEgbGVhZGluZyBkb3QsIGFzIGluIGAuaHRtbGAuXG4gKlxuICogV2hlbiBgdHlwZWAgaGFzIG5vIGFzc29jaWF0ZWQgZXh0ZW5zaW9ucywgdGhlIGZ1bmN0aW9uIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogRXh0ZW5zaW9ucyBhcmUgcmV0dXJuZWQgd2l0aG91dCBhIGxlYWRpbmcgYC5gLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBleHRlbnNpb25zQnlUeXBlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vbWVkaWFfdHlwZXMvbW9kLnRzXCI7XG4gKlxuICogZXh0ZW5zaW9uc0J5VHlwZShcImFwcGxpY2F0aW9uL2pzb25cIik7IC8vIFtcImpzXCIsIFwibWpzXCJdXG4gKiBleHRlbnNpb25zQnlUeXBlKFwidGV4dC9odG1sOyBjaGFyc2V0PVVURi04XCIpOyAvLyBbXCJodG1sXCIsIFwiaHRtXCIsIFwic2h0bWxcIl1cbiAqIGV4dGVuc2lvbnNCeVR5cGUoXCJhcHBsaWNhdGlvbi9mb29cIik7IC8vIHVuZGVmaW5lZFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbnNpb25zQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBbbWVkaWFUeXBlXSA9IHBhcnNlTWVkaWFUeXBlKHR5cGUpO1xuICAgIHJldHVybiBleHRlbnNpb25zLmdldChtZWRpYVR5cGUpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBqdXN0IHN3YWxsb3cgZXJyb3JzLCByZXR1cm5pbmcgdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqIFNlcmlhbGl6ZXMgdGhlIG1lZGlhIHR5cGUgYW5kIHRoZSBvcHRpb25hbCBwYXJhbWV0ZXJzIGFzIGEgbWVkaWEgdHlwZVxuICogY29uZm9ybWluZyB0byBSRkMgMjA0NSBhbmQgUkZDIDI2MTYuXG4gKlxuICogVGhlIHR5cGUgYW5kIHBhcmFtZXRlciBuYW1lcyBhcmUgd3JpdHRlbiBpbiBsb3dlci1jYXNlLlxuICpcbiAqIFdoZW4gYW55IG9mIHRoZSBhcmd1bWVudHMgcmVzdWx0cyBpbiBhIHN0YW5kYXJkIHZpb2xhdGlvbiB0aGVuIHRoZSByZXR1cm5cbiAqIHZhbHVlIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nIChgXCJcImApLlxuICpcbiAqICMjIyBFeGFtcGxlXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGZvcm1hdE1lZGlhVHlwZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL21lZGlhX3R5cGVzL21vZC50c1wiO1xuICpcbiAqIGZvcm1hdE1lZGlhVHlwZShcInRleHQvcGxhaW5cIiwgeyBjaGFyc2V0OiBcIlVURi04XCIgfSk7IC8vIGB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04YFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRNZWRpYVR5cGUoXG4gIHR5cGU6IHN0cmluZyxcbiAgcGFyYW0/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgSXRlcmFibGU8W3N0cmluZywgc3RyaW5nXT4sXG4pOiBzdHJpbmcge1xuICBsZXQgYiA9IFwiXCI7XG4gIGNvbnN0IFttYWpvciwgc3ViXSA9IHR5cGUuc3BsaXQoXCIvXCIpO1xuICBpZiAoIXN1Yikge1xuICAgIGlmICghaXNUb2tlbih0eXBlKSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGIgKz0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICB9IGVsc2Uge1xuICAgIGlmICghaXNUb2tlbihtYWpvcikgfHwgIWlzVG9rZW4oc3ViKSkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGIgKz0gYCR7bWFqb3IudG9Mb3dlckNhc2UoKX0vJHtzdWIudG9Mb3dlckNhc2UoKX1gO1xuICB9XG5cbiAgaWYgKHBhcmFtKSB7XG4gICAgcGFyYW0gPSBpc0l0ZXJhdG9yKHBhcmFtKSA/IE9iamVjdC5mcm9tRW50cmllcyhwYXJhbSkgOiBwYXJhbTtcbiAgICBjb25zdCBhdHRycyA9IE9iamVjdC5rZXlzKHBhcmFtKTtcbiAgICBhdHRycy5zb3J0KCk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRycykge1xuICAgICAgaWYgKCFpc1Rva2VuKGF0dHJpYnV0ZSkpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtW2F0dHJpYnV0ZV07XG4gICAgICBiICs9IGA7ICR7YXR0cmlidXRlLnRvTG93ZXJDYXNlKCl9YDtcblxuICAgICAgY29uc3QgbmVlZEVuYyA9IG5lZWRzRW5jb2RpbmcodmFsdWUpO1xuICAgICAgaWYgKG5lZWRFbmMpIHtcbiAgICAgICAgYiArPSBcIipcIjtcbiAgICAgIH1cbiAgICAgIGIgKz0gXCI9XCI7XG5cbiAgICAgIGlmIChuZWVkRW5jKSB7XG4gICAgICAgIGIgKz0gYHV0Zi04Jycke2VuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSl9YDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1Rva2VuKHZhbHVlKSkge1xuICAgICAgICBiICs9IHZhbHVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGIgKz0gYFwiJHt2YWx1ZS5yZXBsYWNlKC9bXCJcXFxcXS9naSwgKG0pID0+IGBcXFxcJHttfWApfVwiYDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGI7XG59XG5cbi8qKiBHaXZlbiBhIG1lZGlhIHR5cGUgb3IgaGVhZGVyIHZhbHVlLCBpZGVudGlmeSB0aGUgZW5jb2RpbmcgY2hhcnNldC4gSWYgdGhlXG4gKiBjaGFyc2V0IGNhbm5vdCBiZSBkZXRlcm1pbmVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgZ2V0Q2hhcnNldCB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAJFNURF9WRVJTSU9OL21lZGlhX3R5cGVzL21vZC50c1wiO1xuICpcbiAqIGdldENoYXJzZXQoXCJ0ZXh0L3BsYWluXCIpOyAvLyBgVVRGLThgXG4gKiBnZXRDaGFyc2V0KFwiYXBwbGljYXRpb24vZm9vXCIpOyAvLyB1bmRlZmluZWRcbiAqIGdldENoYXJzZXQoXCJhcHBsaWNhdGlvbi9uZXdzLWNoZWNrZ3JvdXBzXCIpOyAvLyBgVVMtQVNDSUlgXG4gKiBnZXRDaGFyc2V0KFwiYXBwbGljYXRpb24vbmV3cy1jaGVja2dyb3VwczsgY2hhcnNldD1VVEYtOFwiKTsgLy8gYFVURi04YFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFyc2V0KHR5cGU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgW21lZGlhVHlwZSwgcGFyYW1zXSA9IHBhcnNlTWVkaWFUeXBlKHR5cGUpO1xuICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zW1wiY2hhcnNldFwiXSkge1xuICAgICAgcmV0dXJuIHBhcmFtc1tcImNoYXJzZXRcIl07XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5ID0gZGJbbWVkaWFUeXBlIGFzIEtleU9mRGJdIGFzIERCRW50cnk7XG4gICAgaWYgKGVudHJ5ICYmIGVudHJ5LmNoYXJzZXQpIHtcbiAgICAgIHJldHVybiBlbnRyeS5jaGFyc2V0O1xuICAgIH1cbiAgICBpZiAobWVkaWFUeXBlLnN0YXJ0c1dpdGgoXCJ0ZXh0L1wiKSkge1xuICAgICAgcmV0dXJuIFwiVVRGLThcIjtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIGp1c3Qgc3dhbGxvdyBlcnJvcnMsIHJldHVybmluZyB1bmRlZmluZWRcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogUGFyc2VzIHRoZSBtZWRpYSB0eXBlIGFuZCBhbnkgb3B0aW9uYWwgcGFyYW1ldGVycywgcGVyXG4gKiBbUkZDIDE1MjFdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMTUyMSkuIE1lZGlhIHR5cGVzIGFyZVxuICogdGhlIHZhbHVlcyBpbiBgQ29udGVudC1UeXBlYCBhbmQgYENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlcnMuIE9uIHN1Y2Nlc3NcbiAqIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgdHVwbGUgd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhlIG1lZGlhIHR5cGUgYW5kXG4gKiB0aGUgc2Vjb25kIGVsZW1lbnQgaXMgdGhlIG9wdGlvbmFsIHBhcmFtZXRlcnMgb3IgYHVuZGVmaW5lZGAgaWYgdGhlcmUgYXJlXG4gKiBub25lLlxuICpcbiAqIFRoZSBmdW5jdGlvbiB3aWxsIHRocm93IGlmIHRoZSBwYXJzZWQgdmFsdWUgaXMgaW52YWxpZC5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgbWVkaWEgdHlwZSB3aWxsIGJlIG5vcm1hbGl6ZWQgdG8gYmUgbG93ZXIgY2FzZSwgYW5kIHJldHVybmVkXG4gKiBwYXJhbXMga2V5cyB3aWxsIGJlIG5vcm1hbGl6ZWQgdG8gbG93ZXIgY2FzZSwgYnV0IHByZXNlcnZlcyB0aGUgY2FzaW5nIG9mXG4gKiB0aGUgdmFsdWUuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IHBhcnNlTWVkaWFUeXBlIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3N0ZEAkU1REX1ZFUlNJT04vbWVkaWFfdHlwZXMvbW9kLnRzXCI7XG4gKiBpbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi90ZXN0aW5nL2Fzc2VydHMudHNcIjtcbiAqXG4gKiBhc3NlcnRFcXVhbHMoXG4gKiAgIHBhcnNlTWVkaWFUeXBlKFwiYXBwbGljYXRpb24vSlNPTlwiKSxcbiAqICAgW1xuICogICAgIFwiYXBwbGljYXRpb24vanNvblwiLFxuICogICAgIHVuZGVmaW5lZFxuICogICBdXG4gKiApO1xuICpcbiAqIGFzc2VydEVxdWFscyhcbiAqICAgcGFyc2VNZWRpYVR5cGUoXCJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLThcIiksXG4gKiAgIFtcbiAqICAgICBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAqICAgICB7IGNoYXJzZXQ6IFwiVVRGLThcIiB9LFxuICogICBdXG4gKiApO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1lZGlhVHlwZShcbiAgdjogc3RyaW5nLFxuKTogW21lZGlhVHlwZTogc3RyaW5nLCBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRdIHtcbiAgY29uc3QgW2Jhc2VdID0gdi5zcGxpdChcIjtcIik7XG4gIGNvbnN0IG1lZGlhVHlwZSA9IGJhc2UudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgY29uc3QgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIC8vIE1hcCBvZiBiYXNlIHBhcmFtZXRlciBuYW1lIC0+IHBhcmFtZXRlciBuYW1lIC0+IHZhbHVlXG4gIC8vIGZvciBwYXJhbWV0ZXJzIGNvbnRhaW5pbmcgYSAnKicgY2hhcmFjdGVyLlxuICBjb25zdCBjb250aW51YXRpb24gPSBuZXcgTWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKTtcblxuICB2ID0gdi5zbGljZShiYXNlLmxlbmd0aCk7XG4gIHdoaWxlICh2Lmxlbmd0aCkge1xuICAgIHYgPSB2LnRyaW1TdGFydCgpO1xuICAgIGlmICh2Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IFtrZXksIHZhbHVlLCByZXN0XSA9IGNvbnN1bWVNZWRpYVBhcmFtKHYpO1xuICAgIGlmICgha2V5KSB7XG4gICAgICBpZiAocmVzdC50cmltKCkgPT09IFwiO1wiKSB7XG4gICAgICAgIC8vIGlnbm9yZSB0cmFpbGluZyBzZW1pY29sb25zXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgbWVkaWEgcGFyYW1ldGVyLlwiKTtcbiAgICB9XG5cbiAgICBsZXQgcG1hcCA9IHBhcmFtcztcbiAgICBjb25zdCBbYmFzZU5hbWUsIHJlc3QyXSA9IGtleS5zcGxpdChcIipcIik7XG4gICAgaWYgKGJhc2VOYW1lICYmIHJlc3QyICE9IG51bGwpIHtcbiAgICAgIGlmICghY29udGludWF0aW9uLmhhcyhiYXNlTmFtZSkpIHtcbiAgICAgICAgY29udGludWF0aW9uLnNldChiYXNlTmFtZSwge30pO1xuICAgICAgfVxuICAgICAgcG1hcCA9IGNvbnRpbnVhdGlvbi5nZXQoYmFzZU5hbWUpITtcbiAgICB9XG4gICAgaWYgKGtleSBpbiBwbWFwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRHVwbGljYXRlIGtleSBwYXJzZWQuXCIpO1xuICAgIH1cbiAgICBwbWFwW2tleV0gPSB2YWx1ZTtcbiAgICB2ID0gcmVzdDtcbiAgfVxuXG4gIC8vIFN0aXRjaCB0b2dldGhlciBhbnkgY29udGludWF0aW9ucyBvciB0aGluZ3Mgd2l0aCBzdGFyc1xuICAvLyAoaS5lLiBSRkMgMjIzMSB0aGluZ3Mgd2l0aCBzdGFyczogXCJmb28qMFwiIG9yIFwiZm9vKlwiKVxuICBsZXQgc3RyID0gXCJcIjtcbiAgZm9yIChjb25zdCBba2V5LCBwaWVjZU1hcF0gb2YgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc2luZ2xlUGFydEtleSA9IGAke2tleX0qYDtcbiAgICBjb25zdCB2ID0gcGllY2VNYXBbc2luZ2xlUGFydEtleV07XG4gICAgaWYgKHYpIHtcbiAgICAgIGNvbnN0IGRlY3YgPSBkZWNvZGUyMzMxRW5jb2Rpbmcodik7XG4gICAgICBpZiAoZGVjdikge1xuICAgICAgICBwYXJhbXNba2V5XSA9IGRlY3Y7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBzdHIgPSBcIlwiO1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IG4gPSAwOzsgbisrKSB7XG4gICAgICBjb25zdCBzaW1wbGVQYXJ0ID0gYCR7a2V5fSoke259YDtcbiAgICAgIGxldCB2ID0gcGllY2VNYXBbc2ltcGxlUGFydF07XG4gICAgICBpZiAodikge1xuICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgIHN0ciArPSB2O1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVuY29kZWRQYXJ0ID0gYCR7c2ltcGxlUGFydH0qYDtcbiAgICAgIHYgPSBwaWVjZU1hcFtlbmNvZGVkUGFydF07XG4gICAgICBpZiAoIXYpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB2YWxpZCA9IHRydWU7XG4gICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICBjb25zdCBkZWN2ID0gZGVjb2RlMjMzMUVuY29kaW5nKHYpO1xuICAgICAgICBpZiAoZGVjdikge1xuICAgICAgICAgIHN0ciArPSBkZWN2O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkZWN2ID0gZGVjb2RlVVJJKHYpO1xuICAgICAgICBzdHIgKz0gZGVjdjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHZhbGlkKSB7XG4gICAgICBwYXJhbXNba2V5XSA9IHN0cjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGhcbiAgICA/IFttZWRpYVR5cGUsIHBhcmFtc11cbiAgICA6IFttZWRpYVR5cGUsIHVuZGVmaW5lZF07XG59XG5cbi8qKiBSZXR1cm5zIHRoZSBtZWRpYSB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBleHRlbnNpb24uIFZhbHVlcyBhcmVcbiAqIG5vcm1hbGl6ZWQgdG8gbG93ZXIgY2FzZSBhbmQgbWF0Y2hlZCBpcnJlc3BlY3RpdmUgb2YgYSBsZWFkaW5nIGAuYC5cbiAqXG4gKiBXaGVuIGBleHRlbnNpb25gIGhhcyBubyBhc3NvY2lhdGVkIHR5cGUsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqICMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyB0eXBlQnlFeHRlbnNpb24gfSBmcm9tIFwiaHR0cHM6Ly9kZW5vLmxhbmQvc3RkQCRTVERfVkVSU0lPTi9tZWRpYV90eXBlcy9tb2QudHNcIjtcbiAqXG4gKiB0eXBlQnlFeHRlbnNpb24oXCJqc1wiKTsgLy8gYGFwcGxpY2F0aW9uL2pzb25gXG4gKiB0eXBlQnlFeHRlbnNpb24oXCIuSFRNTFwiKTsgLy8gYHRleHQvaHRtbGBcbiAqIHR5cGVCeUV4dGVuc2lvbihcImZvb1wiKTsgLy8gdW5kZWZpbmVkXG4gKiB0eXBlQnlFeHRlbnNpb24oXCJmaWxlLmpzb25cIik7IC8vIHVuZGVmaW5lZFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlQnlFeHRlbnNpb24oZXh0ZW5zaW9uOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBleHRlbnNpb24gPSBleHRlbnNpb24uc3RhcnRzV2l0aChcIi5cIikgPyBleHRlbnNpb24uc2xpY2UoMSkgOiBleHRlbnNpb247XG4gIC8vIEB0cy1pZ25vcmUgd29ya2Fyb3VuZCBhcm91bmQgZGVub2xhbmQvZG50IzE0OFxuICByZXR1cm4gdHlwZXMuZ2V0KGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKTtcbn1cbiIsIi8vIENvcHlyaWdodCAyMDE4LTIwMjIgdGhlIERlbm8gYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gTUlUIGxpY2Vuc2UuXG4vLyBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG5cbmV4cG9ydCB0eXBlIE9TVHlwZSA9IFwid2luZG93c1wiIHwgXCJsaW51eFwiIHwgXCJkYXJ3aW5cIjtcblxuZXhwb3J0IGNvbnN0IG9zVHlwZTogT1NUeXBlID0gKCgpID0+IHtcbiAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgaWYgKHR5cGVvZiBEZW5vPy5idWlsZD8ub3MgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gRGVuby5idWlsZC5vcztcbiAgfVxuXG4gIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gIGNvbnN0IHsgbmF2aWdhdG9yIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgaWYgKG5hdmlnYXRvcj8uYXBwVmVyc2lvbj8uaW5jbHVkZXM/LihcIldpblwiKSkge1xuICAgIHJldHVybiBcIndpbmRvd3NcIjtcbiAgfVxuXG4gIHJldHVybiBcImxpbnV4XCI7XG59KSgpO1xuXG5leHBvcnQgY29uc3QgaXNXaW5kb3dzID0gb3NUeXBlID09PSBcIndpbmRvd3NcIjtcbmV4cG9ydCBjb25zdCBpc0xpbnV4ID0gb3NUeXBlID09PSBcImxpbnV4XCI7XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gQ29weXJpZ2h0IHRoZSBCcm93c2VyaWZ5IGF1dGhvcnMuIE1JVCBMaWNlbnNlLlxuLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5L1xuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG4vLyBBbHBoYWJldCBjaGFycy5cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9BID0gNjU7IC8qIEEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9BID0gOTc7IC8qIGEgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1VQUEVSQ0FTRV9aID0gOTA7IC8qIFogKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xPV0VSQ0FTRV9aID0gMTIyOyAvKiB6ICovXG5cbi8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuZXhwb3J0IGNvbnN0IENIQVJfRE9UID0gNDY7IC8qIC4gKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUldBUkRfU0xBU0ggPSA0NzsgLyogLyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQkFDS1dBUkRfU0xBU0ggPSA5MjsgLyogXFwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1ZFUlRJQ0FMX0xJTkUgPSAxMjQ7IC8qIHwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0NPTE9OID0gNTg7IC8qIDogKi9cbmV4cG9ydCBjb25zdCBDSEFSX1FVRVNUSU9OX01BUksgPSA2MzsgLyogPyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfVU5ERVJTQ09SRSA9IDk1OyAvKiBfICovXG5leHBvcnQgY29uc3QgQ0hBUl9MSU5FX0ZFRUQgPSAxMDsgLyogXFxuICovXG5leHBvcnQgY29uc3QgQ0hBUl9DQVJSSUFHRV9SRVRVUk4gPSAxMzsgLyogXFxyICovXG5leHBvcnQgY29uc3QgQ0hBUl9UQUIgPSA5OyAvKiBcXHQgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0ZPUk1fRkVFRCA9IDEyOyAvKiBcXGYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VYQ0xBTUFUSU9OX01BUksgPSAzMzsgLyogISAqL1xuZXhwb3J0IGNvbnN0IENIQVJfSEFTSCA9IDM1OyAvKiAjICovXG5leHBvcnQgY29uc3QgQ0hBUl9TUEFDRSA9IDMyOyAvKiAgICovXG5leHBvcnQgY29uc3QgQ0hBUl9OT19CUkVBS19TUEFDRSA9IDE2MDsgLyogXFx1MDBBMCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFID0gNjUyNzk7IC8qIFxcdUZFRkYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQgPSA5MTsgLyogWyAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgPSA5MzsgLyogXSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9BTkdMRV9CUkFDS0VUID0gNjA7IC8qIDwgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1JJR0hUX0FOR0xFX0JSQUNLRVQgPSA2MjsgLyogPiAqL1xuZXhwb3J0IGNvbnN0IENIQVJfTEVGVF9DVVJMWV9CUkFDS0VUID0gMTIzOyAvKiB7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDS0VUID0gMTI1OyAvKiB9ICovXG5leHBvcnQgY29uc3QgQ0hBUl9IWVBIRU5fTUlOVVMgPSA0NTsgLyogLSAqL1xuZXhwb3J0IGNvbnN0IENIQVJfUExVUyA9IDQzOyAvKiArICovXG5leHBvcnQgY29uc3QgQ0hBUl9ET1VCTEVfUVVPVEUgPSAzNDsgLyogXCIgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NJTkdMRV9RVU9URSA9IDM5OyAvKiAnICovXG5leHBvcnQgY29uc3QgQ0hBUl9QRVJDRU5UID0gMzc7IC8qICUgKi9cbmV4cG9ydCBjb25zdCBDSEFSX1NFTUlDT0xPTiA9IDU5OyAvKiA7ICovXG5leHBvcnQgY29uc3QgQ0hBUl9DSVJDVU1GTEVYX0FDQ0VOVCA9IDk0OyAvKiBeICovXG5leHBvcnQgY29uc3QgQ0hBUl9HUkFWRV9BQ0NFTlQgPSA5NjsgLyogYCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQVQgPSA2NDsgLyogQCAqL1xuZXhwb3J0IGNvbnN0IENIQVJfQU1QRVJTQU5EID0gMzg7IC8qICYgKi9cbmV4cG9ydCBjb25zdCBDSEFSX0VRVUFMID0gNjE7IC8qID0gKi9cblxuLy8gRGlnaXRzXG5leHBvcnQgY29uc3QgQ0hBUl8wID0gNDg7IC8qIDAgKi9cbmV4cG9ydCBjb25zdCBDSEFSXzkgPSA1NzsgLyogOSAqL1xuIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QgfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9GT1JXQVJEX1NMQVNILFxuICBDSEFSX0xPV0VSQ0FTRV9BLFxuICBDSEFSX0xPV0VSQ0FTRV9aLFxuICBDSEFSX1VQUEVSQ0FTRV9BLFxuICBDSEFSX1VQUEVSQ0FTRV9aLFxufSBmcm9tIFwiLi9fY29uc3RhbnRzLnRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgYFBhdGggbXVzdCBiZSBhIHN0cmluZy4gUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShwYXRoKX1gLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9zaXhQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQYXRoU2VwYXJhdG9yKGNvZGU6IG51bWJlcik6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNQb3NpeFBhdGhTZXBhcmF0b3IoY29kZSkgfHwgY29kZSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2luZG93c0RldmljZVJvb3QoY29kZTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgKGNvZGUgPj0gQ0hBUl9MT1dFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfTE9XRVJDQVNFX1opIHx8XG4gICAgKGNvZGUgPj0gQ0hBUl9VUFBFUkNBU0VfQSAmJiBjb2RlIDw9IENIQVJfVVBQRVJDQVNFX1opXG4gICk7XG59XG5cbi8vIFJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCB3aXRoIGRpcmVjdG9yeSBuYW1lc1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyhcbiAgcGF0aDogc3RyaW5nLFxuICBhbGxvd0Fib3ZlUm9vdDogYm9vbGVhbixcbiAgc2VwYXJhdG9yOiBzdHJpbmcsXG4gIGlzUGF0aFNlcGFyYXRvcjogKGNvZGU6IG51bWJlcikgPT4gYm9vbGVhbixcbik6IHN0cmluZyB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNvZGU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGgubGVuZ3RoOyBpIDw9IGxlbjsgKytpKSB7XG4gICAgaWYgKGkgPCBsZW4pIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgZWxzZSBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUhKSkgYnJlYWs7XG4gICAgZWxzZSBjb2RlID0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xuXG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlISkpIHtcbiAgICAgIGlmIChsYXN0U2xhc2ggPT09IGkgLSAxIHx8IGRvdHMgPT09IDEpIHtcbiAgICAgICAgLy8gTk9PUFxuICAgICAgfSBlbHNlIGlmIChsYXN0U2xhc2ggIT09IGkgLSAxICYmIGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcy5sZW5ndGggPCAyIHx8XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggIT09IDIgfHxcbiAgICAgICAgICByZXMuY2hhckNvZGVBdChyZXMubGVuZ3RoIC0gMSkgIT09IENIQVJfRE9UIHx8XG4gICAgICAgICAgcmVzLmNoYXJDb2RlQXQocmVzLmxlbmd0aCAtIDIpICE9PSBDSEFSX0RPVFxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gcmVzLmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICAgICAgICBkb3RzID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmxlbmd0aCA9PT0gMiB8fCByZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIGlmIChyZXMubGVuZ3RoID4gMCkgcmVzICs9IGAke3NlcGFyYXRvcn0uLmA7XG4gICAgICAgICAgZWxzZSByZXMgPSBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHJlcyArPSBzZXBhcmF0b3IgKyBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpO1xuICAgICAgICBlbHNlIHJlcyA9IHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaSAtIGxhc3RTbGFzaCAtIDE7XG4gICAgICB9XG4gICAgICBsYXN0U2xhc2ggPSBpO1xuICAgICAgZG90cyA9IDA7XG4gICAgfSBlbHNlIGlmIChjb2RlID09PSBDSEFSX0RPVCAmJiBkb3RzICE9PSAtMSkge1xuICAgICAgKytkb3RzO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb3RzID0gLTE7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBfZm9ybWF0KFxuICBzZXA6IHN0cmluZyxcbiAgcGF0aE9iamVjdDogRm9ybWF0SW5wdXRQYXRoT2JqZWN0LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBwYXRoT2JqZWN0LmRpciB8fCBwYXRoT2JqZWN0LnJvb3Q7XG4gIGNvbnN0IGJhc2U6IHN0cmluZyA9IHBhdGhPYmplY3QuYmFzZSB8fFxuICAgIChwYXRoT2JqZWN0Lm5hbWUgfHwgXCJcIikgKyAocGF0aE9iamVjdC5leHQgfHwgXCJcIik7XG4gIGlmICghZGlyKSByZXR1cm4gYmFzZTtcbiAgaWYgKGRpciA9PT0gcGF0aE9iamVjdC5yb290KSByZXR1cm4gZGlyICsgYmFzZTtcbiAgcmV0dXJuIGRpciArIHNlcCArIGJhc2U7XG59XG5cbmNvbnN0IFdISVRFU1BBQ0VfRU5DT0RJTkdTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBcIlxcdTAwMDlcIjogXCIlMDlcIixcbiAgXCJcXHUwMDBBXCI6IFwiJTBBXCIsXG4gIFwiXFx1MDAwQlwiOiBcIiUwQlwiLFxuICBcIlxcdTAwMENcIjogXCIlMENcIixcbiAgXCJcXHUwMDBEXCI6IFwiJTBEXCIsXG4gIFwiXFx1MDAyMFwiOiBcIiUyMFwiLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVdoaXRlc3BhY2Uoc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyaW5nLnJlcGxhY2VBbGwoL1tcXHNdL2csIChjKSA9PiB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0VfRU5DT0RJTkdTW2NdID8/IGM7XG4gIH0pO1xufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QsIFBhcnNlZFBhdGggfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQge1xuICBDSEFSX0JBQ0tXQVJEX1NMQVNILFxuICBDSEFSX0NPTE9OLFxuICBDSEFSX0RPVCxcbiAgQ0hBUl9RVUVTVElPTl9NQVJLLFxufSBmcm9tIFwiLi9fY29uc3RhbnRzLnRzXCI7XG5cbmltcG9ydCB7XG4gIF9mb3JtYXQsXG4gIGFzc2VydFBhdGgsXG4gIGVuY29kZVdoaXRlc3BhY2UsXG4gIGlzUGF0aFNlcGFyYXRvcixcbiAgaXNXaW5kb3dzRGV2aWNlUm9vdCxcbiAgbm9ybWFsaXplU3RyaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL191dGlsL2Fzc2VydC50c1wiO1xuXG5leHBvcnQgY29uc3Qgc2VwID0gXCJcXFxcXCI7XG5leHBvcnQgY29uc3QgZGVsaW1pdGVyID0gXCI7XCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCBzZWdtZW50cyBpbnRvIGEgYHBhdGhgXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIHRvIHByb2Nlc3MgdG8gcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZSguLi5wYXRoU2VnbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgbGV0IHJlc29sdmVkRGV2aWNlID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkVGFpbCA9IFwiXCI7XG4gIGxldCByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IHBhdGhTZWdtZW50cy5sZW5ndGggLSAxOyBpID49IC0xOyBpLS0pIHtcbiAgICBsZXQgcGF0aDogc3RyaW5nO1xuICAgIC8vIGRlbm8tbGludC1pZ25vcmUgbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgeyBEZW5vIH0gPSBnbG9iYWxUaGlzIGFzIGFueTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICBwYXRoID0gcGF0aFNlZ21lbnRzW2ldO1xuICAgIH0gZWxzZSBpZiAoIXJlc29sdmVkRGV2aWNlKSB7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSZXNvbHZlZCBhIGRyaXZlLWxldHRlci1sZXNzIHBhdGggd2l0aG91dCBhIENXRC5cIik7XG4gICAgICB9XG4gICAgICBwYXRoID0gRGVuby5jd2QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgRGVubz8uZW52Py5nZXQgIT09IFwiZnVuY3Rpb25cIiB8fCB0eXBlb2YgRGVubz8uY3dkICE9PSBcImZ1bmN0aW9uXCJcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmVzb2x2ZWQgYSByZWxhdGl2ZSBwYXRoIHdpdGhvdXQgYSBDV0QuXCIpO1xuICAgICAgfVxuICAgICAgcGF0aCA9IERlbm8uY3dkKCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGF0IGEgY3dkIHdhcyBmb3VuZCBhbmQgdGhhdCBpdCBhY3R1YWxseSBwb2ludHNcbiAgICAgIC8vIHRvIG91ciBkcml2ZS4gSWYgbm90LCBkZWZhdWx0IHRvIHRoZSBkcml2ZSdzIHJvb3QuXG4gICAgICBpZiAoXG4gICAgICAgIHBhdGggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICBwYXRoLnNsaWNlKDAsIDMpLnRvTG93ZXJDYXNlKCkgIT09IGAke3Jlc29sdmVkRGV2aWNlLnRvTG93ZXJDYXNlKCl9XFxcXGBcbiAgICAgICkge1xuICAgICAgICBwYXRoID0gYCR7cmVzb2x2ZWREZXZpY2V9XFxcXGA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICAgIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgaWYgKGxlbiA9PT0gMCkgY29udGludWU7XG5cbiAgICBsZXQgcm9vdEVuZCA9IDA7XG4gICAgbGV0IGRldmljZSA9IFwiXCI7XG4gICAgbGV0IGlzQWJzb2x1dGUgPSBmYWxzZTtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gICAgLy8gVHJ5IHRvIG1hdGNoIGEgcm9vdFxuICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgICAgLy8gSWYgd2Ugc3RhcnRlZCB3aXRoIGEgc2VwYXJhdG9yLCB3ZSBrbm93IHdlIGF0IGxlYXN0IGhhdmUgYW5cbiAgICAgICAgLy8gYWJzb2x1dGUgcGF0aCBvZiBzb21lIGtpbmQgKFVOQyBvciBvdGhlcndpc2UpXG4gICAgICAgIGlzQWJzb2x1dGUgPSB0cnVlO1xuXG4gICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICAgIC8vIE1hdGNoZWQgZG91YmxlIHBhdGggc2VwYXJhdG9yIGF0IGJlZ2lubmluZ1xuICAgICAgICAgIGxldCBqID0gMjtcbiAgICAgICAgICBsZXQgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFBhcnQgPSBwYXRoLnNsaWNlKGxhc3QsIGopO1xuICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgIGxhc3QgPSBqO1xuICAgICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoIWlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChqID09PSBsZW4pIHtcbiAgICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuICAgICAgICAgICAgICAgIGRldmljZSA9IGBcXFxcXFxcXCR7Zmlyc3RQYXJ0fVxcXFwke3BhdGguc2xpY2UobGFzdCl9YDtcbiAgICAgICAgICAgICAgICByb290RW5kID0gajtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IHdpdGggbGVmdG92ZXJzXG5cbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QsIGopfWA7XG4gICAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNXaW5kb3dzRGV2aWNlUm9vdChjb2RlKSkge1xuICAgICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgICBkZXZpY2UgPSBwYXRoLnNsaWNlKDAsIDIpO1xuICAgICAgICAgIHJvb3RFbmQgPSAyO1xuICAgICAgICAgIGlmIChsZW4gPiAyKSB7XG4gICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgyKSkpIHtcbiAgICAgICAgICAgICAgLy8gVHJlYXQgc2VwYXJhdG9yIGZvbGxvd2luZyBkcml2ZSBuYW1lIGFzIGFuIGFic29sdXRlIHBhdGhcbiAgICAgICAgICAgICAgLy8gaW5kaWNhdG9yXG4gICAgICAgICAgICAgIGlzQWJzb2x1dGUgPSB0cnVlO1xuICAgICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUGF0aFNlcGFyYXRvcihjb2RlKSkge1xuICAgICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBwYXRoIHNlcGFyYXRvclxuICAgICAgcm9vdEVuZCA9IDE7XG4gICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBkZXZpY2UubGVuZ3RoID4gMCAmJlxuICAgICAgcmVzb2x2ZWREZXZpY2UubGVuZ3RoID4gMCAmJlxuICAgICAgZGV2aWNlLnRvTG93ZXJDYXNlKCkgIT09IHJlc29sdmVkRGV2aWNlLnRvTG93ZXJDYXNlKClcbiAgICApIHtcbiAgICAgIC8vIFRoaXMgcGF0aCBwb2ludHMgdG8gYW5vdGhlciBkZXZpY2Ugc28gaXQgaXMgbm90IGFwcGxpY2FibGVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChyZXNvbHZlZERldmljZS5sZW5ndGggPT09IDAgJiYgZGV2aWNlLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc29sdmVkRGV2aWNlID0gZGV2aWNlO1xuICAgIH1cbiAgICBpZiAoIXJlc29sdmVkQWJzb2x1dGUpIHtcbiAgICAgIHJlc29sdmVkVGFpbCA9IGAke3BhdGguc2xpY2Uocm9vdEVuZCl9XFxcXCR7cmVzb2x2ZWRUYWlsfWA7XG4gICAgICByZXNvbHZlZEFic29sdXRlID0gaXNBYnNvbHV0ZTtcbiAgICB9XG5cbiAgICBpZiAocmVzb2x2ZWRBYnNvbHV0ZSAmJiByZXNvbHZlZERldmljZS5sZW5ndGggPiAwKSBicmVhaztcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLFxuICAvLyBidXQgaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKClcbiAgLy8gZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSB0YWlsIHBhdGhcbiAgcmVzb2x2ZWRUYWlsID0gbm9ybWFsaXplU3RyaW5nKFxuICAgIHJlc29sdmVkVGFpbCxcbiAgICAhcmVzb2x2ZWRBYnNvbHV0ZSxcbiAgICBcIlxcXFxcIixcbiAgICBpc1BhdGhTZXBhcmF0b3IsXG4gICk7XG5cbiAgcmV0dXJuIHJlc29sdmVkRGV2aWNlICsgKHJlc29sdmVkQWJzb2x1dGUgPyBcIlxcXFxcIiA6IFwiXCIpICsgcmVzb2x2ZWRUYWlsIHx8IFwiLlwiO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBgcGF0aGBcbiAqIEBwYXJhbSBwYXRoIHRvIG5vcm1hbGl6ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG4gIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCByb290RW5kID0gMDtcbiAgbGV0IGRldmljZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgaXNBYnNvbHV0ZSA9IGZhbHNlO1xuICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuXG4gIC8vIFRyeSB0byBtYXRjaCBhIHJvb3RcbiAgaWYgKGxlbiA+IDEpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBVTkMgcm9vdFxuXG4gICAgICAvLyBJZiB3ZSBzdGFydGVkIHdpdGggYSBzZXBhcmF0b3IsIHdlIGtub3cgd2UgYXQgbGVhc3QgaGF2ZSBhbiBhYnNvbHV0ZVxuICAgICAgLy8gcGF0aCBvZiBzb21lIGtpbmQgKFVOQyBvciBvdGhlcndpc2UpXG4gICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcblxuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZG91YmxlIHBhdGggc2VwYXJhdG9yIGF0IGJlZ2lubmluZ1xuICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgIGxldCBsYXN0ID0gajtcbiAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgIGNvbnN0IGZpcnN0UGFydCA9IHBhdGguc2xpY2UobGFzdCwgaik7XG4gICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCBvbmx5XG4gICAgICAgICAgICAgIC8vIFJldHVybiB0aGUgbm9ybWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBVTkMgcm9vdCBzaW5jZSB0aGVyZVxuICAgICAgICAgICAgICAvLyBpcyBub3RoaW5nIGxlZnQgdG8gcHJvY2Vzc1xuXG4gICAgICAgICAgICAgIHJldHVybiBgXFxcXFxcXFwke2ZpcnN0UGFydH1cXFxcJHtwYXRoLnNsaWNlKGxhc3QpfVxcXFxgO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgIGRldmljZSA9IGBcXFxcXFxcXCR7Zmlyc3RQYXJ0fVxcXFwke3BhdGguc2xpY2UobGFzdCwgail9YDtcbiAgICAgICAgICAgICAgcm9vdEVuZCA9IGo7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290RW5kID0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgZGV2aWNlID0gcGF0aC5zbGljZSgwLCAyKTtcbiAgICAgICAgcm9vdEVuZCA9IDI7XG4gICAgICAgIGlmIChsZW4gPiAyKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICAvLyBUcmVhdCBzZXBhcmF0b3IgZm9sbG93aW5nIGRyaXZlIG5hbWUgYXMgYW4gYWJzb2x1dGUgcGF0aFxuICAgICAgICAgICAgLy8gaW5kaWNhdG9yXG4gICAgICAgICAgICBpc0Fic29sdXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHJvb3RFbmQgPSAzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIHBhdGggc2VwYXJhdG9yLCBleGl0IGVhcmx5IHRvIGF2b2lkIHVubmVjZXNzYXJ5XG4gICAgLy8gd29ya1xuICAgIHJldHVybiBcIlxcXFxcIjtcbiAgfVxuXG4gIGxldCB0YWlsOiBzdHJpbmc7XG4gIGlmIChyb290RW5kIDwgbGVuKSB7XG4gICAgdGFpbCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICAgIHBhdGguc2xpY2Uocm9vdEVuZCksXG4gICAgICAhaXNBYnNvbHV0ZSxcbiAgICAgIFwiXFxcXFwiLFxuICAgICAgaXNQYXRoU2VwYXJhdG9yLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgdGFpbCA9IFwiXCI7XG4gIH1cbiAgaWYgKHRhaWwubGVuZ3RoID09PSAwICYmICFpc0Fic29sdXRlKSB0YWlsID0gXCIuXCI7XG4gIGlmICh0YWlsLmxlbmd0aCA+IDAgJiYgaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChsZW4gLSAxKSkpIHtcbiAgICB0YWlsICs9IFwiXFxcXFwiO1xuICB9XG4gIGlmIChkZXZpY2UgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChpc0Fic29sdXRlKSB7XG4gICAgICBpZiAodGFpbC5sZW5ndGggPiAwKSByZXR1cm4gYFxcXFwke3RhaWx9YDtcbiAgICAgIGVsc2UgcmV0dXJuIFwiXFxcXFwiO1xuICAgIH0gZWxzZSBpZiAodGFpbC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdGFpbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQWJzb2x1dGUpIHtcbiAgICBpZiAodGFpbC5sZW5ndGggPiAwKSByZXR1cm4gYCR7ZGV2aWNlfVxcXFwke3RhaWx9YDtcbiAgICBlbHNlIHJldHVybiBgJHtkZXZpY2V9XFxcXGA7XG4gIH0gZWxzZSBpZiAodGFpbC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRldmljZSArIHRhaWw7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRldmljZTtcbiAgfVxufVxuXG4vKipcbiAqIFZlcmlmaWVzIHdoZXRoZXIgcGF0aCBpcyBhYnNvbHV0ZVxuICogQHBhcmFtIHBhdGggdG8gdmVyaWZ5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBjb25zdCBsZW4gPSBwYXRoLmxlbmd0aDtcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGNvZGUpKSB7XG4gICAgLy8gUG9zc2libGUgZGV2aWNlIHJvb3RcblxuICAgIGlmIChsZW4gPiAyICYmIHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEpvaW4gYWxsIGdpdmVuIGEgc2VxdWVuY2Ugb2YgYHBhdGhzYCx0aGVuIG5vcm1hbGl6ZXMgdGhlIHJlc3VsdGluZyBwYXRoLlxuICogQHBhcmFtIHBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gam9pbiguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBwYXRoc0NvdW50ID0gcGF0aHMubGVuZ3RoO1xuICBpZiAocGF0aHNDb3VudCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IGZpcnN0UGFydDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aHNDb3VudDsgKytpKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGpvaW5lZCA9PT0gdW5kZWZpbmVkKSBqb2luZWQgPSBmaXJzdFBhcnQgPSBwYXRoO1xuICAgICAgZWxzZSBqb2luZWQgKz0gYFxcXFwke3BhdGh9YDtcbiAgICB9XG4gIH1cblxuICBpZiAoam9pbmVkID09PSB1bmRlZmluZWQpIHJldHVybiBcIi5cIjtcblxuICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgam9pbmVkIHBhdGggZG9lc24ndCBzdGFydCB3aXRoIHR3byBzbGFzaGVzLCBiZWNhdXNlXG4gIC8vIG5vcm1hbGl6ZSgpIHdpbGwgbWlzdGFrZSBpdCBmb3IgYW4gVU5DIHBhdGggdGhlbi5cbiAgLy9cbiAgLy8gVGhpcyBzdGVwIGlzIHNraXBwZWQgd2hlbiBpdCBpcyB2ZXJ5IGNsZWFyIHRoYXQgdGhlIHVzZXIgYWN0dWFsbHlcbiAgLy8gaW50ZW5kZWQgdG8gcG9pbnQgYXQgYW4gVU5DIHBhdGguIFRoaXMgaXMgYXNzdW1lZCB3aGVuIHRoZSBmaXJzdFxuICAvLyBub24tZW1wdHkgc3RyaW5nIGFyZ3VtZW50cyBzdGFydHMgd2l0aCBleGFjdGx5IHR3byBzbGFzaGVzIGZvbGxvd2VkIGJ5XG4gIC8vIGF0IGxlYXN0IG9uZSBtb3JlIG5vbi1zbGFzaCBjaGFyYWN0ZXIuXG4gIC8vXG4gIC8vIE5vdGUgdGhhdCBmb3Igbm9ybWFsaXplKCkgdG8gdHJlYXQgYSBwYXRoIGFzIGFuIFVOQyBwYXRoIGl0IG5lZWRzIHRvXG4gIC8vIGhhdmUgYXQgbGVhc3QgMiBjb21wb25lbnRzLCBzbyB3ZSBkb24ndCBmaWx0ZXIgZm9yIHRoYXQgaGVyZS5cbiAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSB1c2VyIGNhbiB1c2Ugam9pbiB0byBjb25zdHJ1Y3QgVU5DIHBhdGhzIGZyb21cbiAgLy8gYSBzZXJ2ZXIgbmFtZSBhbmQgYSBzaGFyZSBuYW1lOyBmb3IgZXhhbXBsZTpcbiAgLy8gICBwYXRoLmpvaW4oJy8vc2VydmVyJywgJ3NoYXJlJykgLT4gJ1xcXFxcXFxcc2VydmVyXFxcXHNoYXJlXFxcXCcpXG4gIGxldCBuZWVkc1JlcGxhY2UgPSB0cnVlO1xuICBsZXQgc2xhc2hDb3VudCA9IDA7XG4gIGFzc2VydChmaXJzdFBhcnQgIT0gbnVsbCk7XG4gIGlmIChpc1BhdGhTZXBhcmF0b3IoZmlyc3RQYXJ0LmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgKytzbGFzaENvdW50O1xuICAgIGNvbnN0IGZpcnN0TGVuID0gZmlyc3RQYXJ0Lmxlbmd0aDtcbiAgICBpZiAoZmlyc3RMZW4gPiAxKSB7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDEpKSkge1xuICAgICAgICArK3NsYXNoQ291bnQ7XG4gICAgICAgIGlmIChmaXJzdExlbiA+IDIpIHtcbiAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGZpcnN0UGFydC5jaGFyQ29kZUF0KDIpKSkgKytzbGFzaENvdW50O1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyBwYXRoIGluIHRoZSBmaXJzdCBwYXJ0XG4gICAgICAgICAgICBuZWVkc1JlcGxhY2UgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKG5lZWRzUmVwbGFjZSkge1xuICAgIC8vIEZpbmQgYW55IG1vcmUgY29uc2VjdXRpdmUgc2xhc2hlcyB3ZSBuZWVkIHRvIHJlcGxhY2VcbiAgICBmb3IgKDsgc2xhc2hDb3VudCA8IGpvaW5lZC5sZW5ndGg7ICsrc2xhc2hDb3VudCkge1xuICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3Ioam9pbmVkLmNoYXJDb2RlQXQoc2xhc2hDb3VudCkpKSBicmVhaztcbiAgICB9XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBzbGFzaGVzIGlmIG5lZWRlZFxuICAgIGlmIChzbGFzaENvdW50ID49IDIpIGpvaW5lZCA9IGBcXFxcJHtqb2luZWQuc2xpY2Uoc2xhc2hDb3VudCl9YDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemUoam9pbmVkKTtcbn1cblxuLyoqXG4gKiBJdCB3aWxsIHNvbHZlIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AsIGZvciBpbnN0YW5jZTpcbiAqICBmcm9tID0gJ0M6XFxcXG9yYW5kZWFcXFxcdGVzdFxcXFxhYWEnXG4gKiAgdG8gPSAnQzpcXFxcb3JhbmRlYVxcXFxpbXBsXFxcXGJiYidcbiAqIFRoZSBvdXRwdXQgb2YgdGhlIGZ1bmN0aW9uIHNob3VsZCBiZTogJy4uXFxcXC4uXFxcXGltcGxcXFxcYmJiJ1xuICogQHBhcmFtIGZyb20gcmVsYXRpdmUgcGF0aFxuICogQHBhcmFtIHRvIHJlbGF0aXZlIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbGF0aXZlKGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XG4gIGFzc2VydFBhdGgoZnJvbSk7XG4gIGFzc2VydFBhdGgodG8pO1xuXG4gIGlmIChmcm9tID09PSB0bykgcmV0dXJuIFwiXCI7XG5cbiAgY29uc3QgZnJvbU9yaWcgPSByZXNvbHZlKGZyb20pO1xuICBjb25zdCB0b09yaWcgPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbU9yaWcgPT09IHRvT3JpZykgcmV0dXJuIFwiXCI7XG5cbiAgZnJvbSA9IGZyb21PcmlnLnRvTG93ZXJDYXNlKCk7XG4gIHRvID0gdG9PcmlnLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICAvLyBUcmltIGFueSBsZWFkaW5nIGJhY2tzbGFzaGVzXG4gIGxldCBmcm9tU3RhcnQgPSAwO1xuICBsZXQgZnJvbUVuZCA9IGZyb20ubGVuZ3RoO1xuICBmb3IgKDsgZnJvbVN0YXJ0IDwgZnJvbUVuZDsgKytmcm9tU3RhcnQpIHtcbiAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIC8vIFRyaW0gdHJhaWxpbmcgYmFja3NsYXNoZXMgKGFwcGxpY2FibGUgdG8gVU5DIHBhdGhzIG9ubHkpXG4gIGZvciAoOyBmcm9tRW5kIC0gMSA+IGZyb21TdGFydDsgLS1mcm9tRW5kKSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tRW5kIC0gMSkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAwO1xuICBsZXQgdG9FbmQgPSB0by5sZW5ndGg7XG4gIGZvciAoOyB0b1N0YXJ0IDwgdG9FbmQ7ICsrdG9TdGFydCkge1xuICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQpICE9PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBicmVhaztcbiAgfVxuICAvLyBUcmltIHRyYWlsaW5nIGJhY2tzbGFzaGVzIChhcHBsaWNhYmxlIHRvIFVOQyBwYXRocyBvbmx5KVxuICBmb3IgKDsgdG9FbmQgLSAxID4gdG9TdGFydDsgLS10b0VuZCkge1xuICAgIGlmICh0by5jaGFyQ29kZUF0KHRvRW5kIC0gMSkgIT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IHRvTGVuID0gdG9FbmQgLSB0b1N0YXJ0O1xuXG4gIC8vIENvbXBhcmUgcGF0aHMgdG8gZmluZCB0aGUgbG9uZ2VzdCBjb21tb24gcGF0aCBmcm9tIHJvb3RcbiAgY29uc3QgbGVuZ3RoID0gZnJvbUxlbiA8IHRvTGVuID8gZnJvbUxlbiA6IHRvTGVuO1xuICBsZXQgbGFzdENvbW1vblNlcCA9IC0xO1xuICBsZXQgaSA9IDA7XG4gIGZvciAoOyBpIDw9IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPT09IGxlbmd0aCkge1xuICAgICAgaWYgKHRvTGVuID4gbGVuZ3RoKSB7XG4gICAgICAgIGlmICh0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGBmcm9tYCBpcyB0aGUgZXhhY3QgYmFzZSBwYXRoIGZvciBgdG9gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXGZvb1xcXFxiYXJcXFxcYmF6J1xuICAgICAgICAgIHJldHVybiB0b09yaWcuc2xpY2UodG9TdGFydCArIGkgKyAxKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYGZyb21gIGlzIHRoZSBkZXZpY2Ugcm9vdC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nQzpcXFxcJzsgdG89J0M6XFxcXGZvbydcbiAgICAgICAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQgKyBpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZyb21MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgICAgIC8vIFdlIGdldCBoZXJlIGlmIGB0b2AgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYGZyb21gLlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPSdDOlxcXFxmb29cXFxcYmFyJzsgdG89J0M6XFxcXGZvbydcbiAgICAgICAgICBsYXN0Q29tbW9uU2VwID0gaTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSAyKSB7XG4gICAgICAgICAgLy8gV2UgZ2V0IGhlcmUgaWYgYHRvYCBpcyB0aGUgZGV2aWNlIHJvb3QuXG4gICAgICAgICAgLy8gRm9yIGV4YW1wbGU6IGZyb209J0M6XFxcXGZvb1xcXFxiYXInOyB0bz0nQzpcXFxcJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSAzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgZnJvbUNvZGUgPSBmcm9tLmNoYXJDb2RlQXQoZnJvbVN0YXJ0ICsgaSk7XG4gICAgY29uc3QgdG9Db2RlID0gdG8uY2hhckNvZGVBdCh0b1N0YXJ0ICsgaSk7XG4gICAgaWYgKGZyb21Db2RlICE9PSB0b0NvZGUpIGJyZWFrO1xuICAgIGVsc2UgaWYgKGZyb21Db2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSBsYXN0Q29tbW9uU2VwID0gaTtcbiAgfVxuXG4gIC8vIFdlIGZvdW5kIGEgbWlzbWF0Y2ggYmVmb3JlIHRoZSBmaXJzdCBjb21tb24gcGF0aCBzZXBhcmF0b3Igd2FzIHNlZW4sIHNvXG4gIC8vIHJldHVybiB0aGUgb3JpZ2luYWwgYHRvYC5cbiAgaWYgKGkgIT09IGxlbmd0aCAmJiBsYXN0Q29tbW9uU2VwID09PSAtMSkge1xuICAgIHJldHVybiB0b09yaWc7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgaWYgKGxhc3RDb21tb25TZXAgPT09IC0xKSBsYXN0Q29tbW9uU2VwID0gMDtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2AgYW5kXG4gIC8vIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIGlmIChvdXQubGVuZ3RoID09PSAwKSBvdXQgKz0gXCIuLlwiO1xuICAgICAgZWxzZSBvdXQgKz0gXCJcXFxcLi5cIjtcbiAgICB9XG4gIH1cblxuICAvLyBMYXN0bHksIGFwcGVuZCB0aGUgcmVzdCBvZiB0aGUgZGVzdGluYXRpb24gKGB0b2ApIHBhdGggdGhhdCBjb21lcyBhZnRlclxuICAvLyB0aGUgY29tbW9uIHBhdGggcGFydHNcbiAgaWYgKG91dC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIG91dCArIHRvT3JpZy5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCwgdG9FbmQpO1xuICB9IGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG9PcmlnLmNoYXJDb2RlQXQodG9TdGFydCkgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpICsrdG9TdGFydDtcbiAgICByZXR1cm4gdG9PcmlnLnNsaWNlKHRvU3RhcnQsIHRvRW5kKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlc29sdmVzIHBhdGggdG8gYSBuYW1lc3BhY2UgcGF0aFxuICogQHBhcmFtIHBhdGggdG8gcmVzb2x2ZSB0byBuYW1lc3BhY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvTmFtZXNwYWNlZFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gTm90ZTogdGhpcyB3aWxsICpwcm9iYWJseSogdGhyb3cgc29tZXdoZXJlLlxuICBpZiAodHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIpIHJldHVybiBwYXRoO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiBcIlwiO1xuXG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmUocGF0aCk7XG5cbiAgaWYgKHJlc29sdmVkUGF0aC5sZW5ndGggPj0gMykge1xuICAgIGlmIChyZXNvbHZlZFBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9CQUNLV0FSRF9TTEFTSCkge1xuICAgICAgLy8gUG9zc2libGUgVU5DIHJvb3RcblxuICAgICAgaWYgKHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSByZXNvbHZlZFBhdGguY2hhckNvZGVBdCgyKTtcbiAgICAgICAgaWYgKGNvZGUgIT09IENIQVJfUVVFU1RJT05fTUFSSyAmJiBjb2RlICE9PSBDSEFSX0RPVCkge1xuICAgICAgICAgIC8vIE1hdGNoZWQgbm9uLWxvbmcgVU5DIHJvb3QsIGNvbnZlcnQgdGhlIHBhdGggdG8gYSBsb25nIFVOQyBwYXRoXG4gICAgICAgICAgcmV0dXJuIGBcXFxcXFxcXD9cXFxcVU5DXFxcXCR7cmVzb2x2ZWRQYXRoLnNsaWNlKDIpfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QocmVzb2x2ZWRQYXRoLmNoYXJDb2RlQXQoMCkpKSB7XG4gICAgICAvLyBQb3NzaWJsZSBkZXZpY2Ugcm9vdFxuXG4gICAgICBpZiAoXG4gICAgICAgIHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDEpID09PSBDSEFSX0NPTE9OICYmXG4gICAgICAgIHJlc29sdmVkUGF0aC5jaGFyQ29kZUF0KDIpID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIXG4gICAgICApIHtcbiAgICAgICAgLy8gTWF0Y2hlZCBkZXZpY2Ugcm9vdCwgY29udmVydCB0aGUgcGF0aCB0byBhIGxvbmcgVU5DIHBhdGhcbiAgICAgICAgcmV0dXJuIGBcXFxcXFxcXD9cXFxcJHtyZXNvbHZlZFBhdGh9YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGRpcmVjdG9yeSBwYXRoIG9mIGEgYHBhdGhgLlxuICogQHBhcmFtIHBhdGggdG8gZGV0ZXJtaW5lIHRoZSBkaXJlY3RvcnkgcGF0aCBmb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgY29uc3QgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPT09IDApIHJldHVybiBcIi5cIjtcbiAgbGV0IHJvb3RFbmQgPSAtMTtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG5cbiAgLy8gVHJ5IHRvIG1hdGNoIGEgcm9vdFxuICBpZiAobGVuID4gMSkge1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIHJvb3RFbmQgPSBvZmZzZXQgPSAxO1xuXG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdCgxKSkpIHtcbiAgICAgICAgLy8gTWF0Y2hlZCBkb3VibGUgcGF0aCBzZXBhcmF0b3IgYXQgYmVnaW5uaW5nXG4gICAgICAgIGxldCBqID0gMjtcbiAgICAgICAgbGV0IGxhc3QgPSBqO1xuICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaikpKSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgLy8gTWF0Y2hlZCFcbiAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChqIDwgbGVuICYmIGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgICBsYXN0ID0gajtcbiAgICAgICAgICAgIC8vIE1hdGNoIDEgb3IgbW9yZSBub24tcGF0aCBzZXBhcmF0b3JzXG4gICAgICAgICAgICBmb3IgKDsgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaiA9PT0gbGVuKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCBvbmx5XG4gICAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogIT09IGxhc3QpIHtcbiAgICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCBhIFVOQyByb290IHdpdGggbGVmdG92ZXJzXG5cbiAgICAgICAgICAgICAgLy8gT2Zmc2V0IGJ5IDEgdG8gaW5jbHVkZSB0aGUgc2VwYXJhdG9yIGFmdGVyIHRoZSBVTkMgcm9vdCB0b1xuICAgICAgICAgICAgICAvLyB0cmVhdCBpdCBhcyBhIFwibm9ybWFsIHJvb3RcIiBvbiB0b3Agb2YgYSAoVU5DKSByb290XG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBvZmZzZXQgPSBqICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgcm9vdEVuZCA9IG9mZnNldCA9IDI7XG4gICAgICAgIGlmIChsZW4gPiAyKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSByb290RW5kID0gb2Zmc2V0ID0gMztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIHBhdGggc2VwYXJhdG9yLCBleGl0IGVhcmx5IHRvIGF2b2lkXG4gICAgLy8gdW5uZWNlc3Nhcnkgd29ya1xuICAgIHJldHVybiBwYXRoO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IGxlbiAtIDE7IGkgPj0gb2Zmc2V0OyAtLWkpIHtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChpKSkpIHtcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIGVuZCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICBpZiAocm9vdEVuZCA9PT0gLTEpIHJldHVybiBcIi5cIjtcbiAgICBlbHNlIGVuZCA9IHJvb3RFbmQ7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2UoMCwgZW5kKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxhc3QgcG9ydGlvbiBvZiBhIGBwYXRoYC4gVHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcnMgYXJlIGlnbm9yZWQuXG4gKiBAcGFyYW0gcGF0aCB0byBwcm9jZXNzXG4gKiBAcGFyYW0gZXh0IG9mIHBhdGggZGlyZWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbmFtZShwYXRoOiBzdHJpbmcsIGV4dCA9IFwiXCIpOiBzdHJpbmcge1xuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gXCJzdHJpbmdcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpO1xuICB9XG5cbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaTogbnVtYmVyO1xuXG4gIC8vIENoZWNrIGZvciBhIGRyaXZlIGxldHRlciBwcmVmaXggc28gYXMgbm90IHRvIG1pc3Rha2UgdGhlIGZvbGxvd2luZ1xuICAvLyBwYXRoIHNlcGFyYXRvciBhcyBhbiBleHRyYSBzZXBhcmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB0aGF0IGNhbiBiZVxuICAvLyBkaXNyZWdhcmRlZFxuICBpZiAocGF0aC5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGRyaXZlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICAgIGlmIChpc1dpbmRvd3NEZXZpY2VSb290KGRyaXZlKSkge1xuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTikgc3RhcnQgPSAyO1xuICAgIH1cbiAgfVxuXG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgaWYgKGV4dC5sZW5ndGggPT09IHBhdGgubGVuZ3RoICYmIGV4dCA9PT0gcGF0aCkgcmV0dXJuIFwiXCI7XG4gICAgbGV0IGV4dElkeCA9IGV4dC5sZW5ndGggLSAxO1xuICAgIGxldCBmaXJzdE5vblNsYXNoRW5kID0gLTE7XG4gICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kID09PSAtMSkge1xuICAgICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCByZW1lbWJlciB0aGlzIGluZGV4IGluIGNhc2VcbiAgICAgICAgICAvLyB3ZSBuZWVkIGl0IGlmIHRoZSBleHRlbnNpb24gZW5kcyB1cCBub3QgbWF0Y2hpbmdcbiAgICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgICBmaXJzdE5vblNsYXNoRW5kID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV4dElkeCA+PSAwKSB7XG4gICAgICAgICAgLy8gVHJ5IHRvIG1hdGNoIHRoZSBleHBsaWNpdCBleHRlbnNpb25cbiAgICAgICAgICBpZiAoY29kZSA9PT0gZXh0LmNoYXJDb2RlQXQoZXh0SWR4KSkge1xuICAgICAgICAgICAgaWYgKC0tZXh0SWR4ID09PSAtMSkge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIHRoZSBleHRlbnNpb24sIHNvIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91ciBwYXRoXG4gICAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgIGV4dElkeCA9IC0xO1xuICAgICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPT09IGVuZCkgZW5kID0gZmlyc3ROb25TbGFzaEVuZDtcbiAgICBlbHNlIGlmIChlbmQgPT09IC0xKSBlbmQgPSBwYXRoLmxlbmd0aDtcbiAgICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IC0taSkge1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoaSkpKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kID09PSAtMSkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICBlbmQgPSBpICsgMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIFwiXCI7XG4gICAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGV4dGVuc2lvbiBvZiB0aGUgYHBhdGhgIHdpdGggbGVhZGluZyBwZXJpb2QuXG4gKiBAcGFyYW0gcGF0aCB3aXRoIGV4dGVuc2lvblxuICogQHJldHVybnMgZXh0ZW5zaW9uIChleC4gZm9yIGBmaWxlLnRzYCByZXR1cm5zIGAudHNgKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0bmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcblxuICAvLyBDaGVjayBmb3IgYSBkcml2ZSBsZXR0ZXIgcHJlZml4IHNvIGFzIG5vdCB0byBtaXN0YWtlIHRoZSBmb2xsb3dpbmdcbiAgLy8gcGF0aCBzZXBhcmF0b3IgYXMgYW4gZXh0cmEgc2VwYXJhdG9yIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGggdGhhdCBjYW4gYmVcbiAgLy8gZGlzcmVnYXJkZWRcblxuICBpZiAoXG4gICAgcGF0aC5sZW5ndGggPj0gMiAmJlxuICAgIHBhdGguY2hhckNvZGVBdCgxKSA9PT0gQ0hBUl9DT0xPTiAmJlxuICAgIGlzV2luZG93c0RldmljZVJvb3QocGF0aC5jaGFyQ29kZUF0KDApKVxuICApIHtcbiAgICBzdGFydCA9IHN0YXJ0UGFydCA9IDI7XG4gIH1cblxuICBmb3IgKGxldCBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGEgcGF0aCBmcm9tIGBGb3JtYXRJbnB1dFBhdGhPYmplY3RgIG9iamVjdC5cbiAqIEBwYXJhbSBwYXRoT2JqZWN0IHdpdGggcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KHBhdGhPYmplY3Q6IEZvcm1hdElucHV0UGF0aE9iamVjdCk6IHN0cmluZyB7XG4gIGlmIChwYXRoT2JqZWN0ID09PSBudWxsIHx8IHR5cGVvZiBwYXRoT2JqZWN0ICE9PSBcIm9iamVjdFwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIGBUaGUgXCJwYXRoT2JqZWN0XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBwYXRoT2JqZWN0fWAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gX2Zvcm1hdChcIlxcXFxcIiwgcGF0aE9iamVjdCk7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgYFBhcnNlZFBhdGhgIG9iamVjdCBvZiB0aGUgYHBhdGhgLlxuICogQHBhcmFtIHBhdGggdG8gcHJvY2Vzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UocGF0aDogc3RyaW5nKTogUGFyc2VkUGF0aCB7XG4gIGFzc2VydFBhdGgocGF0aCk7XG5cbiAgY29uc3QgcmV0OiBQYXJzZWRQYXRoID0geyByb290OiBcIlwiLCBkaXI6IFwiXCIsIGJhc2U6IFwiXCIsIGV4dDogXCJcIiwgbmFtZTogXCJcIiB9O1xuXG4gIGNvbnN0IGxlbiA9IHBhdGgubGVuZ3RoO1xuICBpZiAobGVuID09PSAwKSByZXR1cm4gcmV0O1xuXG4gIGxldCByb290RW5kID0gMDtcbiAgbGV0IGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG5cbiAgLy8gVHJ5IHRvIG1hdGNoIGEgcm9vdFxuICBpZiAobGVuID4gMSkge1xuICAgIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIC8vIFBvc3NpYmxlIFVOQyByb290XG5cbiAgICAgIHJvb3RFbmQgPSAxO1xuICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMSkpKSB7XG4gICAgICAgIC8vIE1hdGNoZWQgZG91YmxlIHBhdGggc2VwYXJhdG9yIGF0IGJlZ2lubmluZ1xuICAgICAgICBsZXQgaiA9IDI7XG4gICAgICAgIGxldCBsYXN0ID0gajtcbiAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIG5vbi1wYXRoIHNlcGFyYXRvcnNcbiAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgIGlmIChpc1BhdGhTZXBhcmF0b3IocGF0aC5jaGFyQ29kZUF0KGopKSkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGogPCBsZW4gJiYgaiAhPT0gbGFzdCkge1xuICAgICAgICAgIC8vIE1hdGNoZWQhXG4gICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgLy8gTWF0Y2ggMSBvciBtb3JlIHBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgIGZvciAoOyBqIDwgbGVuOyArK2opIHtcbiAgICAgICAgICAgIGlmICghaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaiA8IGxlbiAmJiBqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAvLyBNYXRjaGVkIVxuICAgICAgICAgICAgbGFzdCA9IGo7XG4gICAgICAgICAgICAvLyBNYXRjaCAxIG9yIG1vcmUgbm9uLXBhdGggc2VwYXJhdG9yc1xuICAgICAgICAgICAgZm9yICg7IGogPCBsZW47ICsraikge1xuICAgICAgICAgICAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKHBhdGguY2hhckNvZGVBdChqKSkpIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGogPT09IGxlbikge1xuICAgICAgICAgICAgICAvLyBXZSBtYXRjaGVkIGEgVU5DIHJvb3Qgb25seVxuXG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChqICE9PSBsYXN0KSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgYSBVTkMgcm9vdCB3aXRoIGxlZnRvdmVyc1xuXG4gICAgICAgICAgICAgIHJvb3RFbmQgPSBqICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2luZG93c0RldmljZVJvb3QoY29kZSkpIHtcbiAgICAgIC8vIFBvc3NpYmxlIGRldmljZSByb290XG5cbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoMSkgPT09IENIQVJfQ09MT04pIHtcbiAgICAgICAgcm9vdEVuZCA9IDI7XG4gICAgICAgIGlmIChsZW4gPiAyKSB7XG4gICAgICAgICAgaWYgKGlzUGF0aFNlcGFyYXRvcihwYXRoLmNoYXJDb2RlQXQoMikpKSB7XG4gICAgICAgICAgICBpZiAobGVuID09PSAzKSB7XG4gICAgICAgICAgICAgIC8vIGBwYXRoYCBjb250YWlucyBqdXN0IGEgZHJpdmUgcm9vdCwgZXhpdCBlYXJseSB0byBhdm9pZFxuICAgICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSB3b3JrXG4gICAgICAgICAgICAgIHJldC5yb290ID0gcmV0LmRpciA9IHBhdGg7XG4gICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByb290RW5kID0gMztcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gYHBhdGhgIGNvbnRhaW5zIGp1c3QgYSBkcml2ZSByb290LCBleGl0IGVhcmx5IHRvIGF2b2lkXG4gICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgd29ya1xuICAgICAgICAgIHJldC5yb290ID0gcmV0LmRpciA9IHBhdGg7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAvLyBgcGF0aGAgY29udGFpbnMganVzdCBhIHBhdGggc2VwYXJhdG9yLCBleGl0IGVhcmx5IHRvIGF2b2lkXG4gICAgLy8gdW5uZWNlc3Nhcnkgd29ya1xuICAgIHJldC5yb290ID0gcmV0LmRpciA9IHBhdGg7XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGlmIChyb290RW5kID4gMCkgcmV0LnJvb3QgPSBwYXRoLnNsaWNlKDAsIHJvb3RFbmQpO1xuXG4gIGxldCBzdGFydERvdCA9IC0xO1xuICBsZXQgc3RhcnRQYXJ0ID0gcm9vdEVuZDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgbGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7XG5cbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZFxuICBsZXQgcHJlRG90U3RhdGUgPSAwO1xuXG4gIC8vIEdldCBub24tZGlyIGluZm9cbiAgZm9yICg7IGkgPj0gcm9vdEVuZDsgLS1pKSB7XG4gICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoaXNQYXRoU2VwYXJhdG9yKGNvZGUpKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICBpZiAoZW5kICE9PSAtMSkge1xuICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBlbmQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXQubmFtZSA9IHBhdGguc2xpY2Uoc3RhcnRQYXJ0LCBzdGFydERvdCk7XG4gICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICByZXQuZXh0ID0gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbiAgfVxuXG4gIC8vIElmIHRoZSBkaXJlY3RvcnkgaXMgdGhlIHJvb3QsIHVzZSB0aGUgZW50aXJlIHJvb3QgYXMgdGhlIGBkaXJgIGluY2x1ZGluZ1xuICAvLyB0aGUgdHJhaWxpbmcgc2xhc2ggaWYgYW55IChgQzpcXGFiY2AgLT4gYEM6XFxgKS4gT3RoZXJ3aXNlLCBzdHJpcCBvdXQgdGhlXG4gIC8vIHRyYWlsaW5nIHNsYXNoIChgQzpcXGFiY1xcZGVmYCAtPiBgQzpcXGFiY2ApLlxuICBpZiAoc3RhcnRQYXJ0ID4gMCAmJiBzdGFydFBhcnQgIT09IHJvb3RFbmQpIHtcbiAgICByZXQuZGlyID0gcGF0aC5zbGljZSgwLCBzdGFydFBhcnQgLSAxKTtcbiAgfSBlbHNlIHJldC5kaXIgPSByZXQucm9vdDtcblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsZSBVUkwgdG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyBmcm9tRmlsZVVybCB9IGZyb20gXCIuL3dpbjMyLnRzXCI7XG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovLy9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcaG9tZVxcXFxmb29cIlxuICogICAgICBmcm9tRmlsZVVybChcImZpbGU6Ly8vQzovVXNlcnMvZm9vXCIpOyAvLyBcIkM6XFxcXFVzZXJzXFxcXGZvb1wiXG4gKiAgICAgIGZyb21GaWxlVXJsKFwiZmlsZTovL2xvY2FsaG9zdC9ob21lL2Zvb1wiKTsgLy8gXCJcXFxcXFxcXGxvY2FsaG9zdFxcXFxob21lXFxcXGZvb1wiXG4gKiBgYGBcbiAqIEBwYXJhbSB1cmwgb2YgYSBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbUZpbGVVcmwodXJsOiBzdHJpbmcgfCBVUkwpOiBzdHJpbmcge1xuICB1cmwgPSB1cmwgaW5zdGFuY2VvZiBVUkwgPyB1cmwgOiBuZXcgVVJMKHVybCk7XG4gIGlmICh1cmwucHJvdG9jb2wgIT0gXCJmaWxlOlwiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYSBmaWxlIFVSTC5cIik7XG4gIH1cbiAgbGV0IHBhdGggPSBkZWNvZGVVUklDb21wb25lbnQoXG4gICAgdXJsLnBhdGhuYW1lLnJlcGxhY2UoL1xcLy9nLCBcIlxcXFxcIikucmVwbGFjZSgvJSg/IVswLTlBLUZhLWZdezJ9KS9nLCBcIiUyNVwiKSxcbiAgKS5yZXBsYWNlKC9eXFxcXCooW0EtWmEtel06KShcXFxcfCQpLywgXCIkMVxcXFxcIik7XG4gIGlmICh1cmwuaG9zdG5hbWUgIT0gXCJcIikge1xuICAgIC8vIE5vdGU6IFRoZSBgVVJMYCBpbXBsZW1lbnRhdGlvbiBndWFyYW50ZWVzIHRoYXQgdGhlIGRyaXZlIGxldHRlciBhbmRcbiAgICAvLyBob3N0bmFtZSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiBPdGhlcndpc2UgaXQgd291bGQgbm90IGhhdmUgYmVlbiB2YWxpZFxuICAgIC8vIHRvIGFwcGVuZCB0aGUgaG9zdG5hbWUgYW5kIHBhdGggbGlrZSB0aGlzLlxuICAgIHBhdGggPSBgXFxcXFxcXFwke3VybC5ob3N0bmFtZX0ke3BhdGh9YDtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHBhdGggc3RyaW5nIHRvIGEgZmlsZSBVUkwuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgdG9GaWxlVXJsIH0gZnJvbSBcIi4vd2luMzIudHNcIjtcbiAqICAgICAgdG9GaWxlVXJsKFwiXFxcXGhvbWVcXFxcZm9vXCIpOyAvLyBuZXcgVVJMKFwiZmlsZTovLy9ob21lL2Zvb1wiKVxuICogICAgICB0b0ZpbGVVcmwoXCJDOlxcXFxVc2Vyc1xcXFxmb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL0M6L1VzZXJzL2Zvb1wiKVxuICogICAgICB0b0ZpbGVVcmwoXCJcXFxcXFxcXDEyNy4wLjAuMVxcXFxob21lXFxcXGZvb1wiKTsgLy8gbmV3IFVSTChcImZpbGU6Ly8xMjcuMC4wLjEvaG9tZS9mb29cIilcbiAqIGBgYFxuICogQHBhcmFtIHBhdGggdG8gY29udmVydCB0byBmaWxlIFVSTFxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9GaWxlVXJsKHBhdGg6IHN0cmluZyk6IFVSTCB7XG4gIGlmICghaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXCIpO1xuICB9XG4gIGNvbnN0IFssIGhvc3RuYW1lLCBwYXRobmFtZV0gPSBwYXRoLm1hdGNoKFxuICAgIC9eKD86Wy9cXFxcXXsyfShbXi9cXFxcXSspKD89Wy9cXFxcXSg/OlteL1xcXFxdfCQpKSk/KC4qKS8sXG4gICkhO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKFwiZmlsZTovLy9cIik7XG4gIHVybC5wYXRobmFtZSA9IGVuY29kZVdoaXRlc3BhY2UocGF0aG5hbWUucmVwbGFjZSgvJS9nLCBcIiUyNVwiKSk7XG4gIGlmIChob3N0bmFtZSAhPSBudWxsICYmIGhvc3RuYW1lICE9IFwibG9jYWxob3N0XCIpIHtcbiAgICB1cmwuaG9zdG5hbWUgPSBob3N0bmFtZTtcbiAgICBpZiAoIXVybC5ob3N0bmFtZSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgaG9zdG5hbWUuXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdXJsO1xufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeS9cbi8vIFRoaXMgbW9kdWxlIGlzIGJyb3dzZXIgY29tcGF0aWJsZS5cblxuaW1wb3J0IHR5cGUgeyBGb3JtYXRJbnB1dFBhdGhPYmplY3QsIFBhcnNlZFBhdGggfSBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5pbXBvcnQgeyBDSEFSX0RPVCwgQ0hBUl9GT1JXQVJEX1NMQVNIIH0gZnJvbSBcIi4vX2NvbnN0YW50cy50c1wiO1xuXG5pbXBvcnQge1xuICBfZm9ybWF0LFxuICBhc3NlcnRQYXRoLFxuICBlbmNvZGVXaGl0ZXNwYWNlLFxuICBpc1Bvc2l4UGF0aFNlcGFyYXRvcixcbiAgbm9ybWFsaXplU3RyaW5nLFxufSBmcm9tIFwiLi9fdXRpbC50c1wiO1xuXG5leHBvcnQgY29uc3Qgc2VwID0gXCIvXCI7XG5leHBvcnQgY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8qKlxuICogUmVzb2x2ZXMgYHBhdGhTZWdtZW50c2AgaW50byBhbiBhYnNvbHV0ZSBwYXRoLlxuICogQHBhcmFtIHBhdGhTZWdtZW50cyBhbiBhcnJheSBvZiBwYXRoIHNlZ21lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICBsZXQgcmVzb2x2ZWRQYXRoID0gXCJcIjtcbiAgbGV0IHJlc29sdmVkQWJzb2x1dGUgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDE7IGkgPj0gLTEgJiYgIXJlc29sdmVkQWJzb2x1dGU7IGktLSkge1xuICAgIGxldCBwYXRoOiBzdHJpbmc7XG5cbiAgICBpZiAoaSA+PSAwKSBwYXRoID0gcGF0aFNlZ21lbnRzW2ldO1xuICAgIGVsc2Uge1xuICAgICAgLy8gZGVuby1saW50LWlnbm9yZSBuby1leHBsaWNpdC1hbnlcbiAgICAgIGNvbnN0IHsgRGVubyB9ID0gZ2xvYmFsVGhpcyBhcyBhbnk7XG4gICAgICBpZiAodHlwZW9mIERlbm8/LmN3ZCAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJSZXNvbHZlZCBhIHJlbGF0aXZlIHBhdGggd2l0aG91dCBhIENXRC5cIik7XG4gICAgICB9XG4gICAgICBwYXRoID0gRGVuby5jd2QoKTtcbiAgICB9XG5cbiAgICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gICAgLy8gU2tpcCBlbXB0eSBlbnRyaWVzXG4gICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRofS8ke3Jlc29sdmVkUGF0aH1gO1xuICAgIHJlc29sdmVkQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZVN0cmluZyhcbiAgICByZXNvbHZlZFBhdGgsXG4gICAgIXJlc29sdmVkQWJzb2x1dGUsXG4gICAgXCIvXCIsXG4gICAgaXNQb3NpeFBhdGhTZXBhcmF0b3IsXG4gICk7XG5cbiAgaWYgKHJlc29sdmVkQWJzb2x1dGUpIHtcbiAgICBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiBgLyR7cmVzb2x2ZWRQYXRofWA7XG4gICAgZWxzZSByZXR1cm4gXCIvXCI7XG4gIH0gZWxzZSBpZiAocmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlZFBhdGg7XG4gIGVsc2UgcmV0dXJuIFwiLlwiO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgYHBhdGhgLCByZXNvbHZpbmcgYCcuLidgIGFuZCBgJy4nYCBzZWdtZW50cy5cbiAqIEBwYXJhbSBwYXRoIHRvIGJlIG5vcm1hbGl6ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuXG4gIGNvbnN0IGlzQWJzb2x1dGUgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgY29uc3QgdHJhaWxpbmdTZXBhcmF0b3IgPVxuICAgIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHBhdGggPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWlzQWJzb2x1dGUsIFwiL1wiLCBpc1Bvc2l4UGF0aFNlcGFyYXRvcik7XG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwICYmICFpc0Fic29sdXRlKSBwYXRoID0gXCIuXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgdHJhaWxpbmdTZXBhcmF0b3IpIHBhdGggKz0gXCIvXCI7XG5cbiAgaWYgKGlzQWJzb2x1dGUpIHJldHVybiBgLyR7cGF0aH1gO1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBWZXJpZmllcyB3aGV0aGVyIHByb3ZpZGVkIHBhdGggaXMgYWJzb2x1dGVcbiAqIEBwYXJhbSBwYXRoIHRvIGJlIHZlcmlmaWVkIGFzIGFic29sdXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuICByZXR1cm4gcGF0aC5sZW5ndGggPiAwICYmIHBhdGguY2hhckNvZGVBdCgwKSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIO1xufVxuXG4vKipcbiAqIEpvaW4gYWxsIGdpdmVuIGEgc2VxdWVuY2Ugb2YgYHBhdGhzYCx0aGVuIG5vcm1hbGl6ZXMgdGhlIHJlc3VsdGluZyBwYXRoLlxuICogQHBhcmFtIHBhdGhzIHRvIGJlIGpvaW5lZCBhbmQgbm9ybWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gam9pbiguLi5wYXRoczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGxldCBqb2luZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBhdGhzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgIGFzc2VydFBhdGgocGF0aCk7XG4gICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFqb2luZWQpIGpvaW5lZCA9IHBhdGg7XG4gICAgICBlbHNlIGpvaW5lZCArPSBgLyR7cGF0aH1gO1xuICAgIH1cbiAgfVxuICBpZiAoIWpvaW5lZCkgcmV0dXJuIFwiLlwiO1xuICByZXR1cm4gbm9ybWFsaXplKGpvaW5lZCk7XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gYGZyb21gIHRvIGB0b2AgYmFzZWQgb24gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBmcm9tIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICogQHBhcmFtIHRvIHBhdGggaW4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChmcm9tKTtcbiAgYXNzZXJ0UGF0aCh0byk7XG5cbiAgaWYgKGZyb20gPT09IHRvKSByZXR1cm4gXCJcIjtcblxuICBmcm9tID0gcmVzb2x2ZShmcm9tKTtcbiAgdG8gPSByZXNvbHZlKHRvKTtcblxuICBpZiAoZnJvbSA9PT0gdG8pIHJldHVybiBcIlwiO1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IGZyb21TdGFydCA9IDE7XG4gIGNvbnN0IGZyb21FbmQgPSBmcm9tLmxlbmd0aDtcbiAgZm9yICg7IGZyb21TdGFydCA8IGZyb21FbmQ7ICsrZnJvbVN0YXJ0KSB7XG4gICAgaWYgKGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQpICE9PSBDSEFSX0ZPUldBUkRfU0xBU0gpIGJyZWFrO1xuICB9XG4gIGNvbnN0IGZyb21MZW4gPSBmcm9tRW5kIC0gZnJvbVN0YXJ0O1xuXG4gIC8vIFRyaW0gYW55IGxlYWRpbmcgYmFja3NsYXNoZXNcbiAgbGV0IHRvU3RhcnQgPSAxO1xuICBjb25zdCB0b0VuZCA9IHRvLmxlbmd0aDtcbiAgZm9yICg7IHRvU3RhcnQgPCB0b0VuZDsgKyt0b1N0YXJ0KSB7XG4gICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCkgIT09IENIQVJfRk9SV0FSRF9TTEFTSCkgYnJlYWs7XG4gIH1cbiAgY29uc3QgdG9MZW4gPSB0b0VuZCAtIHRvU3RhcnQ7XG5cbiAgLy8gQ29tcGFyZSBwYXRocyB0byBmaW5kIHRoZSBsb25nZXN0IGNvbW1vbiBwYXRoIGZyb20gcm9vdFxuICBjb25zdCBsZW5ndGggPSBmcm9tTGVuIDwgdG9MZW4gPyBmcm9tTGVuIDogdG9MZW47XG4gIGxldCBsYXN0Q29tbW9uU2VwID0gLTE7XG4gIGxldCBpID0gMDtcbiAgZm9yICg7IGkgPD0gbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gbGVuZ3RoKSB7XG4gICAgICBpZiAodG9MZW4gPiBsZW5ndGgpIHtcbiAgICAgICAgaWYgKHRvLmNoYXJDb2RlQXQodG9TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIGV4YWN0IGJhc2UgcGF0aCBmb3IgYHRvYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXInOyB0bz0nL2Zvby9iYXIvYmF6J1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSArIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgZnJvbWAgaXMgdGhlIHJvb3RcbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nLyc7IHRvPScvZm9vJ1xuICAgICAgICAgIHJldHVybiB0by5zbGljZSh0b1N0YXJ0ICsgaSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZnJvbUxlbiA+IGxlbmd0aCkge1xuICAgICAgICBpZiAoZnJvbS5jaGFyQ29kZUF0KGZyb21TdGFydCArIGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSBleGFjdCBiYXNlIHBhdGggZm9yIGBmcm9tYC5cbiAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogZnJvbT0nL2Zvby9iYXIvYmF6JzsgdG89Jy9mb28vYmFyJ1xuICAgICAgICAgIGxhc3RDb21tb25TZXAgPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAvLyBXZSBnZXQgaGVyZSBpZiBgdG9gIGlzIHRoZSByb290LlxuICAgICAgICAgIC8vIEZvciBleGFtcGxlOiBmcm9tPScvZm9vJzsgdG89Jy8nXG4gICAgICAgICAgbGFzdENvbW1vblNlcCA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBmcm9tQ29kZSA9IGZyb20uY2hhckNvZGVBdChmcm9tU3RhcnQgKyBpKTtcbiAgICBjb25zdCB0b0NvZGUgPSB0by5jaGFyQ29kZUF0KHRvU3RhcnQgKyBpKTtcbiAgICBpZiAoZnJvbUNvZGUgIT09IHRvQ29kZSkgYnJlYWs7XG4gICAgZWxzZSBpZiAoZnJvbUNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkgbGFzdENvbW1vblNlcCA9IGk7XG4gIH1cblxuICBsZXQgb3V0ID0gXCJcIjtcbiAgLy8gR2VuZXJhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmFzZWQgb24gdGhlIHBhdGggZGlmZmVyZW5jZSBiZXR3ZWVuIGB0b2BcbiAgLy8gYW5kIGBmcm9tYFxuICBmb3IgKGkgPSBmcm9tU3RhcnQgKyBsYXN0Q29tbW9uU2VwICsgMTsgaSA8PSBmcm9tRW5kOyArK2kpIHtcbiAgICBpZiAoaSA9PT0gZnJvbUVuZCB8fCBmcm9tLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgaWYgKG91dC5sZW5ndGggPT09IDApIG91dCArPSBcIi4uXCI7XG4gICAgICBlbHNlIG91dCArPSBcIi8uLlwiO1xuICAgIH1cbiAgfVxuXG4gIC8vIExhc3RseSwgYXBwZW5kIHRoZSByZXN0IG9mIHRoZSBkZXN0aW5hdGlvbiAoYHRvYCkgcGF0aCB0aGF0IGNvbWVzIGFmdGVyXG4gIC8vIHRoZSBjb21tb24gcGF0aCBwYXJ0c1xuICBpZiAob3V0Lmxlbmd0aCA+IDApIHJldHVybiBvdXQgKyB0by5zbGljZSh0b1N0YXJ0ICsgbGFzdENvbW1vblNlcCk7XG4gIGVsc2Uge1xuICAgIHRvU3RhcnQgKz0gbGFzdENvbW1vblNlcDtcbiAgICBpZiAodG8uY2hhckNvZGVBdCh0b1N0YXJ0KSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSArK3RvU3RhcnQ7XG4gICAgcmV0dXJuIHRvLnNsaWNlKHRvU3RhcnQpO1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgcGF0aCB0byBhIG5hbWVzcGFjZSBwYXRoXG4gKiBAcGFyYW0gcGF0aCB0byByZXNvbHZlIHRvIG5hbWVzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9OYW1lc3BhY2VkUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBOb24tb3Agb24gcG9zaXggc3lzdGVtc1xuICByZXR1cm4gcGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGRpcmVjdG9yeSBwYXRoIG9mIGEgYHBhdGhgLlxuICogQHBhcmFtIHBhdGggdG8gZGV0ZXJtaW5lIHRoZSBkaXJlY3RvcnkgcGF0aCBmb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcm5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gXCIuXCI7XG4gIGNvbnN0IGhhc1Jvb3QgPSBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IENIQVJfRk9SV0FSRF9TTEFTSDtcbiAgbGV0IGVuZCA9IC0xO1xuICBsZXQgbWF0Y2hlZFNsYXNoID0gdHJ1ZTtcbiAgZm9yIChsZXQgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAxOyAtLWkpIHtcbiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIGVuZCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBoYXNSb290ID8gXCIvXCIgOiBcIi5cIjtcbiAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSByZXR1cm4gXCIvL1wiO1xuICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xufVxuXG4vKipcbiAqIFJldHVybiB0aGUgbGFzdCBwb3J0aW9uIG9mIGEgYHBhdGhgLiBUcmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgaWdub3JlZC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqIEBwYXJhbSBleHQgb2YgcGF0aCBkaXJlY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2VuYW1lKHBhdGg6IHN0cmluZywgZXh0ID0gXCJcIik6IHN0cmluZyB7XG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZXh0ICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJleHRcIiBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7XG4gIH1cbiAgYXNzZXJ0UGF0aChwYXRoKTtcblxuICBsZXQgc3RhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBsZXQgaTogbnVtYmVyO1xuXG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiBleHQubGVuZ3RoID4gMCAmJiBleHQubGVuZ3RoIDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgaWYgKGV4dC5sZW5ndGggPT09IHBhdGgubGVuZ3RoICYmIGV4dCA9PT0gcGF0aCkgcmV0dXJuIFwiXCI7XG4gICAgbGV0IGV4dElkeCA9IGV4dC5sZW5ndGggLSAxO1xuICAgIGxldCBmaXJzdE5vblNsYXNoRW5kID0gLTE7XG4gICAgZm9yIChpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICAgIGlmIChjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZpcnN0Tm9uU2xhc2hFbmQgPT09IC0xKSB7XG4gICAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAgIC8vIHdlIG5lZWQgaXQgaWYgdGhlIGV4dGVuc2lvbiBlbmRzIHVwIG5vdCBtYXRjaGluZ1xuICAgICAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgICAgIGZpcnN0Tm9uU2xhc2hFbmQgPSBpICsgMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXh0SWR4ID49IDApIHtcbiAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvblxuICAgICAgICAgIGlmIChjb2RlID09PSBleHQuY2hhckNvZGVBdChleHRJZHgpKSB7XG4gICAgICAgICAgICBpZiAoLS1leHRJZHggPT09IC0xKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG1hdGNoZWQgdGhlIGV4dGVuc2lvbiwgc28gbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyIHBhdGhcbiAgICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICAgIGVuZCA9IGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCwgc28gb3VyIHJlc3VsdCBpcyB0aGUgZW50aXJlIHBhdGhcbiAgICAgICAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgICAgICAgZXh0SWR4ID0gLTE7XG4gICAgICAgICAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdGFydCA9PT0gZW5kKSBlbmQgPSBmaXJzdE5vblNsYXNoRW5kO1xuICAgIGVsc2UgaWYgKGVuZCA9PT0gLTEpIGVuZCA9IHBhdGgubGVuZ3RoO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaSkgPT09IENIQVJfRk9SV0FSRF9TTEFTSCkge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgICAvLyBwYXRoIGNvbXBvbmVudFxuICAgICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgICAgZW5kID0gaSArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVuZCA9PT0gLTEpIHJldHVybiBcIlwiO1xuICAgIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBleHRlbnNpb24gb2YgdGhlIGBwYXRoYCB3aXRoIGxlYWRpbmcgcGVyaW9kLlxuICogQHBhcmFtIHBhdGggd2l0aCBleHRlbnNpb25cbiAqIEByZXR1cm5zIGV4dGVuc2lvbiAoZXguIGZvciBgZmlsZS50c2AgcmV0dXJucyBgLnRzYClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dG5hbWUocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgYXNzZXJ0UGF0aChwYXRoKTtcbiAgbGV0IHN0YXJ0RG90ID0gLTE7XG4gIGxldCBzdGFydFBhcnQgPSAwO1xuICBsZXQgZW5kID0gLTE7XG4gIGxldCBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIGxldCBwcmVEb3RTdGF0ZSA9IDA7XG4gIGZvciAobGV0IGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpICsgMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IENIQVJfRE9UKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgIGlmIChzdGFydERvdCA9PT0gLTEpIHN0YXJ0RG90ID0gaTtcbiAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSBwcmVEb3RTdGF0ZSA9IDE7XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCAhPT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgYW5kIG5vbi1wYXRoIHNlcGFyYXRvciBiZWZvcmUgb3VyIGRvdCwgc28gd2Ugc2hvdWxkXG4gICAgICAvLyBoYXZlIGEgZ29vZCBjaGFuY2UgYXQgaGF2aW5nIGEgbm9uLWVtcHR5IGV4dGVuc2lvblxuICAgICAgcHJlRG90U3RhdGUgPSAtMTtcbiAgICB9XG4gIH1cblxuICBpZiAoXG4gICAgc3RhcnREb3QgPT09IC0xIHx8XG4gICAgZW5kID09PSAtMSB8fFxuICAgIC8vIFdlIHNhdyBhIG5vbi1kb3QgY2hhcmFjdGVyIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZG90XG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHBhdGggZnJvbSBgRm9ybWF0SW5wdXRQYXRoT2JqZWN0YCBvYmplY3QuXG4gKiBAcGFyYW0gcGF0aE9iamVjdCB3aXRoIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdChwYXRoT2JqZWN0OiBGb3JtYXRJbnB1dFBhdGhPYmplY3QpOiBzdHJpbmcge1xuICBpZiAocGF0aE9iamVjdCA9PT0gbnVsbCB8fCB0eXBlb2YgcGF0aE9iamVjdCAhPT0gXCJvYmplY3RcIikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBgVGhlIFwicGF0aE9iamVjdFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgcGF0aE9iamVjdH1gLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIF9mb3JtYXQoXCIvXCIsIHBhdGhPYmplY3QpO1xufVxuXG4vKipcbiAqIFJldHVybiBhIGBQYXJzZWRQYXRoYCBvYmplY3Qgb2YgdGhlIGBwYXRoYC5cbiAqIEBwYXJhbSBwYXRoIHRvIHByb2Nlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKHBhdGg6IHN0cmluZyk6IFBhcnNlZFBhdGgge1xuICBhc3NlcnRQYXRoKHBhdGgpO1xuXG4gIGNvbnN0IHJldDogUGFyc2VkUGF0aCA9IHsgcm9vdDogXCJcIiwgZGlyOiBcIlwiLCBiYXNlOiBcIlwiLCBleHQ6IFwiXCIsIG5hbWU6IFwiXCIgfTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gcmV0O1xuICBjb25zdCBpc0Fic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSBDSEFSX0ZPUldBUkRfU0xBU0g7XG4gIGxldCBzdGFydDogbnVtYmVyO1xuICBpZiAoaXNBYnNvbHV0ZSkge1xuICAgIHJldC5yb290ID0gXCIvXCI7XG4gICAgc3RhcnQgPSAxO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gMDtcbiAgfVxuICBsZXQgc3RhcnREb3QgPSAtMTtcbiAgbGV0IHN0YXJ0UGFydCA9IDA7XG4gIGxldCBlbmQgPSAtMTtcbiAgbGV0IG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGxldCBpID0gcGF0aC5sZW5ndGggLSAxO1xuXG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgbGV0IHByZURvdFN0YXRlID0gMDtcblxuICAvLyBHZXQgbm9uLWRpciBpbmZvXG4gIGZvciAoOyBpID49IHN0YXJ0OyAtLWkpIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjb2RlID09PSBDSEFSX0ZPUldBUkRfU0xBU0gpIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoZW5kID09PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9ET1QpIHtcbiAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSkgc3RhcnREb3QgPSBpO1xuICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA9PT0gLTEgfHxcbiAgICBlbmQgPT09IC0xIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAocHJlRG90U3RhdGUgPT09IDEgJiYgc3RhcnREb3QgPT09IGVuZCAtIDEgJiYgc3RhcnREb3QgPT09IHN0YXJ0UGFydCArIDEpXG4gICkge1xuICAgIGlmIChlbmQgIT09IC0xKSB7XG4gICAgICBpZiAoc3RhcnRQYXJ0ID09PSAwICYmIGlzQWJzb2x1dGUpIHtcbiAgICAgICAgcmV0LmJhc2UgPSByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgZW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5iYXNlID0gcmV0Lm5hbWUgPSBwYXRoLnNsaWNlKHN0YXJ0UGFydCwgZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXJ0UGFydCA9PT0gMCAmJiBpc0Fic29sdXRlKSB7XG4gICAgICByZXQubmFtZSA9IHBhdGguc2xpY2UoMSwgc3RhcnREb3QpO1xuICAgICAgcmV0LmJhc2UgPSBwYXRoLnNsaWNlKDEsIGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldC5uYW1lID0gcGF0aC5zbGljZShzdGFydFBhcnQsIHN0YXJ0RG90KTtcbiAgICAgIHJldC5iYXNlID0gcGF0aC5zbGljZShzdGFydFBhcnQsIGVuZCk7XG4gICAgfVxuICAgIHJldC5leHQgPSBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xuICB9XG5cbiAgaWYgKHN0YXJ0UGFydCA+IDApIHJldC5kaXIgPSBwYXRoLnNsaWNlKDAsIHN0YXJ0UGFydCAtIDEpO1xuICBlbHNlIGlmIChpc0Fic29sdXRlKSByZXQuZGlyID0gXCIvXCI7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGZpbGUgVVJMIHRvIGEgcGF0aCBzdHJpbmcuXG4gKlxuICogYGBgdHNcbiAqICAgICAgaW1wb3J0IHsgZnJvbUZpbGVVcmwgfSBmcm9tIFwiLi9wb3NpeC50c1wiO1xuICogICAgICBmcm9tRmlsZVVybChcImZpbGU6Ly8vaG9tZS9mb29cIik7IC8vIFwiL2hvbWUvZm9vXCJcbiAqIGBgYFxuICogQHBhcmFtIHVybCBvZiBhIGZpbGUgVVJMXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tRmlsZVVybCh1cmw6IHN0cmluZyB8IFVSTCk6IHN0cmluZyB7XG4gIHVybCA9IHVybCBpbnN0YW5jZW9mIFVSTCA/IHVybCA6IG5ldyBVUkwodXJsKTtcbiAgaWYgKHVybC5wcm90b2NvbCAhPSBcImZpbGU6XCIpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhIGZpbGUgVVJMLlwiKTtcbiAgfVxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KFxuICAgIHVybC5wYXRobmFtZS5yZXBsYWNlKC8lKD8hWzAtOUEtRmEtZl17Mn0pL2csIFwiJTI1XCIpLFxuICApO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgcGF0aCBzdHJpbmcgdG8gYSBmaWxlIFVSTC5cbiAqXG4gKiBgYGB0c1xuICogICAgICBpbXBvcnQgeyB0b0ZpbGVVcmwgfSBmcm9tIFwiLi9wb3NpeC50c1wiO1xuICogICAgICB0b0ZpbGVVcmwoXCIvaG9tZS9mb29cIik7IC8vIG5ldyBVUkwoXCJmaWxlOi8vL2hvbWUvZm9vXCIpXG4gKiBgYGBcbiAqIEBwYXJhbSBwYXRoIHRvIGNvbnZlcnQgdG8gZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRmlsZVVybChwYXRoOiBzdHJpbmcpOiBVUkwge1xuICBpZiAoIWlzQWJzb2x1dGUocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLlwiKTtcbiAgfVxuICBjb25zdCB1cmwgPSBuZXcgVVJMKFwiZmlsZTovLy9cIik7XG4gIHVybC5wYXRobmFtZSA9IGVuY29kZVdoaXRlc3BhY2UoXG4gICAgcGF0aC5yZXBsYWNlKC8lL2csIFwiJTI1XCIpLnJlcGxhY2UoL1xcXFwvZywgXCIlNUNcIiksXG4gICk7XG4gIHJldHVybiB1cmw7XG59XG4iLCIvLyBDb3B5cmlnaHQgMjAxOC0yMDIyIHRoZSBEZW5vIGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIE1JVCBsaWNlbnNlLlxuLy8gVGhpcyBtb2R1bGUgaXMgYnJvd3NlciBjb21wYXRpYmxlLlxuXG5pbXBvcnQgeyBpc1dpbmRvd3MsIG9zVHlwZSB9IGZyb20gXCIuLi9fdXRpbC9vcy50c1wiO1xuaW1wb3J0IHsgU0VQLCBTRVBfUEFUVEVSTiB9IGZyb20gXCIuL3NlcGFyYXRvci50c1wiO1xuaW1wb3J0ICogYXMgX3dpbjMyIGZyb20gXCIuL3dpbjMyLnRzXCI7XG5pbXBvcnQgKiBhcyBfcG9zaXggZnJvbSBcIi4vcG9zaXgudHNcIjtcbmltcG9ydCB0eXBlIHsgT1NUeXBlIH0gZnJvbSBcIi4uL191dGlsL29zLnRzXCI7XG5cbmNvbnN0IHBhdGggPSBpc1dpbmRvd3MgPyBfd2luMzIgOiBfcG9zaXg7XG5jb25zdCB7IGpvaW4sIG5vcm1hbGl6ZSB9ID0gcGF0aDtcblxuZXhwb3J0IGludGVyZmFjZSBHbG9iT3B0aW9ucyB7XG4gIC8qKiBFeHRlbmRlZCBnbG9iIHN5bnRheC5cbiAgICogU2VlIGh0dHBzOi8vd3d3LmxpbnV4am91cm5hbC5jb20vY29udGVudC9iYXNoLWV4dGVuZGVkLWdsb2JiaW5nLiBEZWZhdWx0c1xuICAgKiB0byB0cnVlLiAqL1xuICBleHRlbmRlZD86IGJvb2xlYW47XG4gIC8qKiBHbG9ic3RhciBzeW50YXguXG4gICAqIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvZ2xvYnN0YXItbmV3LWJhc2gtZ2xvYmJpbmctb3B0aW9uLlxuICAgKiBJZiBmYWxzZSwgYCoqYCBpcyB0cmVhdGVkIGxpa2UgYCpgLiBEZWZhdWx0cyB0byB0cnVlLiAqL1xuICBnbG9ic3Rhcj86IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIGdsb2JzdGFyIHNob3VsZCBiZSBjYXNlIGluc2Vuc2l0aXZlLiAqL1xuICBjYXNlSW5zZW5zaXRpdmU/OiBib29sZWFuO1xuICAvKiogT3BlcmF0aW5nIHN5c3RlbS4gRGVmYXVsdHMgdG8gdGhlIG5hdGl2ZSBPUy4gKi9cbiAgb3M/OiBPU1R5cGU7XG59XG5cbmV4cG9ydCB0eXBlIEdsb2JUb1JlZ0V4cE9wdGlvbnMgPSBHbG9iT3B0aW9ucztcblxuY29uc3QgcmVnRXhwRXNjYXBlQ2hhcnMgPSBbXG4gIFwiIVwiLFxuICBcIiRcIixcbiAgXCIoXCIsXG4gIFwiKVwiLFxuICBcIipcIixcbiAgXCIrXCIsXG4gIFwiLlwiLFxuICBcIj1cIixcbiAgXCI/XCIsXG4gIFwiW1wiLFxuICBcIlxcXFxcIixcbiAgXCJeXCIsXG4gIFwie1wiLFxuICBcInxcIixcbl07XG5jb25zdCByYW5nZUVzY2FwZUNoYXJzID0gW1wiLVwiLCBcIlxcXFxcIiwgXCJdXCJdO1xuXG4vKiogQ29udmVydCBhIGdsb2Igc3RyaW5nIHRvIGEgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIFRyaWVzIHRvIG1hdGNoIGJhc2ggZ2xvYiBleHBhbnNpb24gYXMgY2xvc2VseSBhcyBwb3NzaWJsZS5cbiAqXG4gKiBCYXNpYyBnbG9iIHN5bnRheDpcbiAqIC0gYCpgIC0gTWF0Y2hlcyBldmVyeXRoaW5nIHdpdGhvdXQgbGVhdmluZyB0aGUgcGF0aCBzZWdtZW50LlxuICogLSBgP2AgLSBNYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyLlxuICogLSBge2ZvbyxiYXJ9YCAtIE1hdGNoZXMgYGZvb2Agb3IgYGJhcmAuXG4gKiAtIGBbYWJjZF1gIC0gTWF0Y2hlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFthLWRdYCAtIE1hdGNoZXMgYGFgLCBgYmAsIGBjYCBvciBgZGAuXG4gKiAtIGBbIWFiY2RdYCAtIE1hdGNoZXMgYW55IHNpbmdsZSBjaGFyYWN0ZXIgYmVzaWRlcyBgYWAsIGBiYCwgYGNgIG9yIGBkYC5cbiAqIC0gYFtbOjxjbGFzcz46XV1gIC0gTWF0Y2hlcyBhbnkgY2hhcmFjdGVyIGJlbG9uZ2luZyB0byBgPGNsYXNzPmAuXG4gKiAgICAgLSBgW1s6YWxudW06XV1gIC0gTWF0Y2hlcyBhbnkgZGlnaXQgb3IgbGV0dGVyLlxuICogICAgIC0gYFtbOmRpZ2l0Ol1hYmNdYCAtIE1hdGNoZXMgYW55IGRpZ2l0LCBgYWAsIGBiYCBvciBgY2AuXG4gKiAgICAgLSBTZWUgaHR0cHM6Ly9mYWNlbGVzc3VzZXIuZ2l0aHViLmlvL3djbWF0Y2gvZ2xvYi8jcG9zaXgtY2hhcmFjdGVyLWNsYXNzZXNcbiAqICAgICAgIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIGNoYXJhY3RlciBjbGFzc2VzLlxuICogLSBgXFxgIC0gRXNjYXBlcyB0aGUgbmV4dCBjaGFyYWN0ZXIgZm9yIGFuIGBvc2Agb3RoZXIgdGhhbiBgXCJ3aW5kb3dzXCJgLlxuICogLSBcXGAgLSBFc2NhcGVzIHRoZSBuZXh0IGNoYXJhY3RlciBmb3IgYG9zYCBzZXQgdG8gYFwid2luZG93c1wiYC5cbiAqIC0gYC9gIC0gUGF0aCBzZXBhcmF0b3IuXG4gKiAtIGBcXGAgLSBBZGRpdGlvbmFsIHBhdGggc2VwYXJhdG9yIG9ubHkgZm9yIGBvc2Agc2V0IHRvIGBcIndpbmRvd3NcImAuXG4gKlxuICogRXh0ZW5kZWQgc3ludGF4OlxuICogLSBSZXF1aXJlcyBgeyBleHRlbmRlZDogdHJ1ZSB9YC5cbiAqIC0gYD8oZm9vfGJhcilgIC0gTWF0Y2hlcyAwIG9yIDEgaW5zdGFuY2Ugb2YgYHtmb28sYmFyfWAuXG4gKiAtIGBAKGZvb3xiYXIpYCAtIE1hdGNoZXMgMSBpbnN0YW5jZSBvZiBge2ZvbyxiYXJ9YC4gVGhleSBiZWhhdmUgdGhlIHNhbWUuXG4gKiAtIGAqKGZvb3xiYXIpYCAtIE1hdGNoZXMgX25fIGluc3RhbmNlcyBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYCsoZm9vfGJhcilgIC0gTWF0Y2hlcyBfbiA+IDBfIGluc3RhbmNlcyBvZiBge2ZvbyxiYXJ9YC5cbiAqIC0gYCEoZm9vfGJhcilgIC0gTWF0Y2hlcyBhbnl0aGluZyBvdGhlciB0aGFuIGB7Zm9vLGJhcn1gLlxuICogLSBTZWUgaHR0cHM6Ly93d3cubGludXhqb3VybmFsLmNvbS9jb250ZW50L2Jhc2gtZXh0ZW5kZWQtZ2xvYmJpbmcuXG4gKlxuICogR2xvYnN0YXIgc3ludGF4OlxuICogLSBSZXF1aXJlcyBgeyBnbG9ic3RhcjogdHJ1ZSB9YC5cbiAqIC0gYCoqYCAtIE1hdGNoZXMgYW55IG51bWJlciBvZiBhbnkgcGF0aCBzZWdtZW50cy5cbiAqICAgICAtIE11c3QgY29tcHJpc2UgaXRzIGVudGlyZSBwYXRoIHNlZ21lbnQgaW4gdGhlIHByb3ZpZGVkIGdsb2IuXG4gKiAtIFNlZSBodHRwczovL3d3dy5saW51eGpvdXJuYWwuY29tL2NvbnRlbnQvZ2xvYnN0YXItbmV3LWJhc2gtZ2xvYmJpbmctb3B0aW9uLlxuICpcbiAqIE5vdGUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICogLSBUaGUgZ2VuZXJhdGVkIGBSZWdFeHBgIGlzIGFuY2hvcmVkIGF0IGJvdGggc3RhcnQgYW5kIGVuZC5cbiAqIC0gUmVwZWF0aW5nIGFuZCB0cmFpbGluZyBzZXBhcmF0b3JzIGFyZSB0b2xlcmF0ZWQuIFRyYWlsaW5nIHNlcGFyYXRvcnMgaW4gdGhlXG4gKiAgIHByb3ZpZGVkIGdsb2IgaGF2ZSBubyBtZWFuaW5nIGFuZCBhcmUgZGlzY2FyZGVkLlxuICogLSBBYnNvbHV0ZSBnbG9icyB3aWxsIG9ubHkgbWF0Y2ggYWJzb2x1dGUgcGF0aHMsIGV0Yy5cbiAqIC0gRW1wdHkgZ2xvYnMgd2lsbCBtYXRjaCBub3RoaW5nLlxuICogLSBBbnkgc3BlY2lhbCBnbG9iIHN5bnRheCBtdXN0IGJlIGNvbnRhaW5lZCB0byBvbmUgcGF0aCBzZWdtZW50LiBGb3IgZXhhbXBsZSxcbiAqICAgYD8oZm9vfGJhci9iYXopYCBpcyBpbnZhbGlkLiBUaGUgc2VwYXJhdG9yIHdpbGwgdGFrZSBwcmVjZWRlbmNlIGFuZCB0aGVcbiAqICAgZmlyc3Qgc2VnbWVudCBlbmRzIHdpdGggYW4gdW5jbG9zZWQgZ3JvdXAuXG4gKiAtIElmIGEgcGF0aCBzZWdtZW50IGVuZHMgd2l0aCB1bmNsb3NlZCBncm91cHMgb3IgYSBkYW5nbGluZyBlc2NhcGUgcHJlZml4LCBhXG4gKiAgIHBhcnNlIGVycm9yIGhhcyBvY2N1cnJlZC4gRXZlcnkgY2hhcmFjdGVyIGZvciB0aGF0IHNlZ21lbnQgaXMgdGFrZW5cbiAqICAgbGl0ZXJhbGx5IGluIHRoaXMgZXZlbnQuXG4gKlxuICogTGltaXRhdGlvbnM6XG4gKiAtIEEgbmVnYXRpdmUgZ3JvdXAgbGlrZSBgIShmb298YmFyKWAgd2lsbCB3cm9uZ2x5IGJlIGNvbnZlcnRlZCB0byBhIG5lZ2F0aXZlXG4gKiAgIGxvb2stYWhlYWQgZm9sbG93ZWQgYnkgYSB3aWxkY2FyZC4gVGhpcyBtZWFucyB0aGF0IGAhKGZvbykuanNgIHdpbGwgd3JvbmdseVxuICogICBmYWlsIHRvIG1hdGNoIGBmb29iYXIuanNgLCBldmVuIHRob3VnaCBgZm9vYmFyYCBpcyBub3QgYGZvb2AuIEVmZmVjdGl2ZWx5LFxuICogICBgIShmb298YmFyKWAgaXMgdHJlYXRlZCBsaWtlIGAhKEAoZm9vfGJhcikqKWAuIFRoaXMgd2lsbCB3b3JrIGNvcnJlY3RseSBpZlxuICogICB0aGUgZ3JvdXAgb2NjdXJzIG5vdCBuZXN0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgc2VnbWVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnbG9iVG9SZWdFeHAoXG4gIGdsb2I6IHN0cmluZyxcbiAge1xuICAgIGV4dGVuZGVkID0gdHJ1ZSxcbiAgICBnbG9ic3RhcjogZ2xvYnN0YXJPcHRpb24gPSB0cnVlLFxuICAgIG9zID0gb3NUeXBlLFxuICAgIGNhc2VJbnNlbnNpdGl2ZSA9IGZhbHNlLFxuICB9OiBHbG9iVG9SZWdFeHBPcHRpb25zID0ge30sXG4pOiBSZWdFeHAge1xuICBpZiAoZ2xvYiA9PSBcIlwiKSB7XG4gICAgcmV0dXJuIC8oPyEpLztcbiAgfVxuXG4gIGNvbnN0IHNlcCA9IG9zID09IFwid2luZG93c1wiID8gXCIoPzpcXFxcXFxcXHwvKStcIiA6IFwiLytcIjtcbiAgY29uc3Qgc2VwTWF5YmUgPSBvcyA9PSBcIndpbmRvd3NcIiA/IFwiKD86XFxcXFxcXFx8LykqXCIgOiBcIi8qXCI7XG4gIGNvbnN0IHNlcHMgPSBvcyA9PSBcIndpbmRvd3NcIiA/IFtcIlxcXFxcIiwgXCIvXCJdIDogW1wiL1wiXTtcbiAgY29uc3QgZ2xvYnN0YXIgPSBvcyA9PSBcIndpbmRvd3NcIlxuICAgID8gXCIoPzpbXlxcXFxcXFxcL10qKD86XFxcXFxcXFx8L3wkKSspKlwiXG4gICAgOiBcIig/OlteL10qKD86L3wkKSspKlwiO1xuICBjb25zdCB3aWxkY2FyZCA9IG9zID09IFwid2luZG93c1wiID8gXCJbXlxcXFxcXFxcL10qXCIgOiBcIlteL10qXCI7XG4gIGNvbnN0IGVzY2FwZVByZWZpeCA9IG9zID09IFwid2luZG93c1wiID8gXCJgXCIgOiBcIlxcXFxcIjtcblxuICAvLyBSZW1vdmUgdHJhaWxpbmcgc2VwYXJhdG9ycy5cbiAgbGV0IG5ld0xlbmd0aCA9IGdsb2IubGVuZ3RoO1xuICBmb3IgKDsgbmV3TGVuZ3RoID4gMSAmJiBzZXBzLmluY2x1ZGVzKGdsb2JbbmV3TGVuZ3RoIC0gMV0pOyBuZXdMZW5ndGgtLSk7XG4gIGdsb2IgPSBnbG9iLnNsaWNlKDAsIG5ld0xlbmd0aCk7XG5cbiAgbGV0IHJlZ0V4cFN0cmluZyA9IFwiXCI7XG5cbiAgLy8gVGVybWluYXRlcyBjb3JyZWN0bHkuIFRydXN0IHRoYXQgYGpgIGlzIGluY3JlbWVudGVkIGV2ZXJ5IGl0ZXJhdGlvbi5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBnbG9iLmxlbmd0aDspIHtcbiAgICBsZXQgc2VnbWVudCA9IFwiXCI7XG4gICAgY29uc3QgZ3JvdXBTdGFjazogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgaW5SYW5nZSA9IGZhbHNlO1xuICAgIGxldCBpbkVzY2FwZSA9IGZhbHNlO1xuICAgIGxldCBlbmRzV2l0aFNlcCA9IGZhbHNlO1xuICAgIGxldCBpID0gajtcblxuICAgIC8vIFRlcm1pbmF0ZXMgd2l0aCBgaWAgYXQgdGhlIG5vbi1pbmNsdXNpdmUgZW5kIG9mIHRoZSBjdXJyZW50IHNlZ21lbnQuXG4gICAgZm9yICg7IGkgPCBnbG9iLmxlbmd0aCAmJiAhc2Vwcy5pbmNsdWRlcyhnbG9iW2ldKTsgaSsrKSB7XG4gICAgICBpZiAoaW5Fc2NhcGUpIHtcbiAgICAgICAgaW5Fc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgZXNjYXBlQ2hhcnMgPSBpblJhbmdlID8gcmFuZ2VFc2NhcGVDaGFycyA6IHJlZ0V4cEVzY2FwZUNoYXJzO1xuICAgICAgICBzZWdtZW50ICs9IGVzY2FwZUNoYXJzLmluY2x1ZGVzKGdsb2JbaV0pID8gYFxcXFwke2dsb2JbaV19YCA6IGdsb2JbaV07XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBlc2NhcGVQcmVmaXgpIHtcbiAgICAgICAgaW5Fc2NhcGUgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCJbXCIpIHtcbiAgICAgICAgaWYgKCFpblJhbmdlKSB7XG4gICAgICAgICAgaW5SYW5nZSA9IHRydWU7XG4gICAgICAgICAgc2VnbWVudCArPSBcIltcIjtcbiAgICAgICAgICBpZiAoZ2xvYltpICsgMV0gPT0gXCIhXCIpIHtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgIHNlZ21lbnQgKz0gXCJeXCI7XG4gICAgICAgICAgfSBlbHNlIGlmIChnbG9iW2kgKyAxXSA9PSBcIl5cIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgc2VnbWVudCArPSBcIlxcXFxeXCI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGdsb2JbaSArIDFdID09IFwiOlwiKSB7XG4gICAgICAgICAgbGV0IGsgPSBpICsgMTtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgICAgICAgIHdoaWxlIChnbG9iW2sgKyAxXSAhPSBudWxsICYmIGdsb2JbayArIDFdICE9IFwiOlwiKSB7XG4gICAgICAgICAgICB2YWx1ZSArPSBnbG9iW2sgKyAxXTtcbiAgICAgICAgICAgIGsrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGdsb2JbayArIDFdID09IFwiOlwiICYmIGdsb2JbayArIDJdID09IFwiXVwiKSB7XG4gICAgICAgICAgICBpID0gayArIDI7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gXCJhbG51bVwiKSBzZWdtZW50ICs9IFwiXFxcXGRBLVphLXpcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiYWxwaGFcIikgc2VnbWVudCArPSBcIkEtWmEtelwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJhc2NpaVwiKSBzZWdtZW50ICs9IFwiXFx4MDAtXFx4N0ZcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiYmxhbmtcIikgc2VnbWVudCArPSBcIlxcdCBcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiY250cmxcIikgc2VnbWVudCArPSBcIlxceDAwLVxceDFGXFx4N0ZcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwiZGlnaXRcIikgc2VnbWVudCArPSBcIlxcXFxkXCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcImdyYXBoXCIpIHNlZ21lbnQgKz0gXCJcXHgyMS1cXHg3RVwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJsb3dlclwiKSBzZWdtZW50ICs9IFwiYS16XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcInByaW50XCIpIHNlZ21lbnQgKz0gXCJcXHgyMC1cXHg3RVwiO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPT0gXCJwdW5jdFwiKSB7XG4gICAgICAgICAgICAgIHNlZ21lbnQgKz0gXCIhXFxcIiMkJSYnKCkqKyxcXFxcLS4vOjs8PT4/QFtcXFxcXFxcXFxcXFxdXl/igJh7fH1+XCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IFwic3BhY2VcIikgc2VnbWVudCArPSBcIlxcXFxzXFx2XCI7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBcInVwcGVyXCIpIHNlZ21lbnQgKz0gXCJBLVpcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwid29yZFwiKSBzZWdtZW50ICs9IFwiXFxcXHdcIjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IFwieGRpZ2l0XCIpIHNlZ21lbnQgKz0gXCJcXFxcZEEtRmEtZlwiO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiXVwiICYmIGluUmFuZ2UpIHtcbiAgICAgICAgaW5SYW5nZSA9IGZhbHNlO1xuICAgICAgICBzZWdtZW50ICs9IFwiXVwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluUmFuZ2UpIHtcbiAgICAgICAgaWYgKGdsb2JbaV0gPT0gXCJcXFxcXCIpIHtcbiAgICAgICAgICBzZWdtZW50ICs9IGBcXFxcXFxcXGA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCArPSBnbG9iW2ldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGdsb2JbaV0gPT0gXCIpXCIgJiYgZ3JvdXBTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSAhPSBcIkJSQUNFXCJcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50ICs9IFwiKVwiO1xuICAgICAgICBjb25zdCB0eXBlID0gZ3JvdXBTdGFjay5wb3AoKSE7XG4gICAgICAgIGlmICh0eXBlID09IFwiIVwiKSB7XG4gICAgICAgICAgc2VnbWVudCArPSB3aWxkY2FyZDtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlICE9IFwiQFwiKSB7XG4gICAgICAgICAgc2VnbWVudCArPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGdsb2JbaV0gPT0gXCJ8XCIgJiYgZ3JvdXBTdGFjay5sZW5ndGggPiAwICYmXG4gICAgICAgIGdyb3VwU3RhY2tbZ3JvdXBTdGFjay5sZW5ndGggLSAxXSAhPSBcIkJSQUNFXCJcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50ICs9IFwifFwiO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JbaV0gPT0gXCIrXCIgJiYgZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT0gXCIoXCIpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBncm91cFN0YWNrLnB1c2goXCIrXCIpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIkBcIiAmJiBleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICBpKys7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIkBcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwiP1wiKSB7XG4gICAgICAgIGlmIChleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBncm91cFN0YWNrLnB1c2goXCI/XCIpO1xuICAgICAgICAgIHNlZ21lbnQgKz0gXCIoPzpcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiLlwiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIiFcIiAmJiBleHRlbmRlZCAmJiBnbG9iW2kgKyAxXSA9PSBcIihcIikge1xuICAgICAgICBpKys7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIiFcIik7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIoPyFcIjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iW2ldID09IFwie1wiKSB7XG4gICAgICAgIGdyb3VwU3RhY2sucHVzaChcIkJSQUNFXCIpO1xuICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIn1cIiAmJiBncm91cFN0YWNrW2dyb3VwU3RhY2subGVuZ3RoIC0gMV0gPT0gXCJCUkFDRVwiKSB7XG4gICAgICAgIGdyb3VwU3RhY2sucG9wKCk7XG4gICAgICAgIHNlZ21lbnQgKz0gXCIpXCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIixcIiAmJiBncm91cFN0YWNrW2dyb3VwU3RhY2subGVuZ3RoIC0gMV0gPT0gXCJCUkFDRVwiKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gXCJ8XCI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2xvYltpXSA9PSBcIipcIikge1xuICAgICAgICBpZiAoZXh0ZW5kZWQgJiYgZ2xvYltpICsgMV0gPT0gXCIoXCIpIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgZ3JvdXBTdGFjay5wdXNoKFwiKlwiKTtcbiAgICAgICAgICBzZWdtZW50ICs9IFwiKD86XCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcHJldkNoYXIgPSBnbG9iW2kgLSAxXTtcbiAgICAgICAgICBsZXQgbnVtU3RhcnMgPSAxO1xuICAgICAgICAgIHdoaWxlIChnbG9iW2kgKyAxXSA9PSBcIipcIikge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgbnVtU3RhcnMrKztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBnbG9iW2kgKyAxXTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBnbG9ic3Rhck9wdGlvbiAmJiBudW1TdGFycyA9PSAyICYmXG4gICAgICAgICAgICBbLi4uc2VwcywgdW5kZWZpbmVkXS5pbmNsdWRlcyhwcmV2Q2hhcikgJiZcbiAgICAgICAgICAgIFsuLi5zZXBzLCB1bmRlZmluZWRdLmluY2x1ZGVzKG5leHRDaGFyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2VnbWVudCArPSBnbG9ic3RhcjtcbiAgICAgICAgICAgIGVuZHNXaXRoU2VwID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VnbWVudCArPSB3aWxkY2FyZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHNlZ21lbnQgKz0gcmVnRXhwRXNjYXBlQ2hhcnMuaW5jbHVkZXMoZ2xvYltpXSkgPyBgXFxcXCR7Z2xvYltpXX1gIDogZ2xvYltpXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgdW5jbG9zZWQgZ3JvdXBzIG9yIGEgZGFuZ2xpbmcgYmFja3NsYXNoLlxuICAgIGlmIChncm91cFN0YWNrLmxlbmd0aCA+IDAgfHwgaW5SYW5nZSB8fCBpbkVzY2FwZSkge1xuICAgICAgLy8gUGFyc2UgZmFpbHVyZS4gVGFrZSBhbGwgY2hhcmFjdGVycyBmcm9tIHRoaXMgc2VnbWVudCBsaXRlcmFsbHkuXG4gICAgICBzZWdtZW50ID0gXCJcIjtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBnbG9iLnNsaWNlKGosIGkpKSB7XG4gICAgICAgIHNlZ21lbnQgKz0gcmVnRXhwRXNjYXBlQ2hhcnMuaW5jbHVkZXMoYykgPyBgXFxcXCR7Y31gIDogYztcbiAgICAgICAgZW5kc1dpdGhTZXAgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZWdFeHBTdHJpbmcgKz0gc2VnbWVudDtcbiAgICBpZiAoIWVuZHNXaXRoU2VwKSB7XG4gICAgICByZWdFeHBTdHJpbmcgKz0gaSA8IGdsb2IubGVuZ3RoID8gc2VwIDogc2VwTWF5YmU7XG4gICAgICBlbmRzV2l0aFNlcCA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gVGVybWluYXRlcyB3aXRoIGBpYCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc2VnbWVudC5cbiAgICB3aGlsZSAoc2Vwcy5pbmNsdWRlcyhnbG9iW2ldKSkgaSsrO1xuXG4gICAgLy8gQ2hlY2sgdGhhdCB0aGUgbmV4dCB2YWx1ZSBvZiBgamAgaXMgaW5kZWVkIGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50IHZhbHVlLlxuICAgIGlmICghKGkgPiBqKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXNzZXJ0aW9uIGZhaWx1cmU6IGkgPiBqIChwb3RlbnRpYWwgaW5maW5pdGUgbG9vcClcIik7XG4gICAgfVxuICAgIGogPSBpO1xuICB9XG5cbiAgcmVnRXhwU3RyaW5nID0gYF4ke3JlZ0V4cFN0cmluZ30kYDtcbiAgcmV0dXJuIG5ldyBSZWdFeHAocmVnRXhwU3RyaW5nLCBjYXNlSW5zZW5zaXRpdmUgPyBcImlcIiA6IFwiXCIpO1xufVxuXG4vKiogVGVzdCB3aGV0aGVyIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBnbG9iICovXG5leHBvcnQgZnVuY3Rpb24gaXNHbG9iKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNoYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0geyBcIntcIjogXCJ9XCIsIFwiKFwiOiBcIilcIiwgXCJbXCI6IFwiXVwiIH07XG4gIGNvbnN0IHJlZ2V4ID1cbiAgICAvXFxcXCguKXwoXiF8XFwqfFxcP3xbXFxdLispXVxcP3xcXFtbXlxcXFxcXF1dK1xcXXxcXHtbXlxcXFx9XStcXH18XFwoXFw/WzohPV1bXlxcXFwpXStcXCl8XFwoW158XStcXHxbXlxcXFwpXStcXCkpLztcblxuICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuXG4gIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHN0cikpKSB7XG4gICAgaWYgKG1hdGNoWzJdKSByZXR1cm4gdHJ1ZTtcbiAgICBsZXQgaWR4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG5cbiAgICAvLyBpZiBhbiBvcGVuIGJyYWNrZXQvYnJhY2UvcGFyZW4gaXMgZXNjYXBlZCxcbiAgICAvLyBzZXQgdGhlIGluZGV4IHRvIHRoZSBuZXh0IGNsb3NpbmcgY2hhcmFjdGVyXG4gICAgY29uc3Qgb3BlbiA9IG1hdGNoWzFdO1xuICAgIGNvbnN0IGNsb3NlID0gb3BlbiA/IGNoYXJzW29wZW5dIDogbnVsbDtcbiAgICBpZiAob3BlbiAmJiBjbG9zZSkge1xuICAgICAgY29uc3QgbiA9IHN0ci5pbmRleE9mKGNsb3NlLCBpZHgpO1xuICAgICAgaWYgKG4gIT09IC0xKSB7XG4gICAgICAgIGlkeCA9IG4gKyAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0ciA9IHN0ci5zbGljZShpZHgpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKiogTGlrZSBub3JtYWxpemUoKSwgYnV0IGRvZXNuJ3QgY29sbGFwc2UgXCIqKlxcLy4uXCIgd2hlbiBgZ2xvYnN0YXJgIGlzIHRydWUuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplR2xvYihcbiAgZ2xvYjogc3RyaW5nLFxuICB7IGdsb2JzdGFyID0gZmFsc2UgfTogR2xvYk9wdGlvbnMgPSB7fSxcbik6IHN0cmluZyB7XG4gIGlmIChnbG9iLm1hdGNoKC9cXDAvZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEdsb2IgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzOiBcIiR7Z2xvYn1cImApO1xuICB9XG4gIGlmICghZ2xvYnN0YXIpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKGdsb2IpO1xuICB9XG4gIGNvbnN0IHMgPSBTRVBfUEFUVEVSTi5zb3VyY2U7XG4gIGNvbnN0IGJhZFBhcmVudFBhdHRlcm4gPSBuZXcgUmVnRXhwKFxuICAgIGAoPzw9KCR7c318XilcXFxcKlxcXFwqJHtzfSlcXFxcLlxcXFwuKD89JHtzfXwkKWAsXG4gICAgXCJnXCIsXG4gICk7XG4gIHJldHVybiBub3JtYWxpemUoZ2xvYi5yZXBsYWNlKGJhZFBhcmVudFBhdHRlcm4sIFwiXFwwXCIpKS5yZXBsYWNlKC9cXDAvZywgXCIuLlwiKTtcbn1cblxuLyoqIExpa2Ugam9pbigpLCBidXQgZG9lc24ndCBjb2xsYXBzZSBcIioqXFwvLi5cIiB3aGVuIGBnbG9ic3RhcmAgaXMgdHJ1ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luR2xvYnMoXG4gIGdsb2JzOiBzdHJpbmdbXSxcbiAgeyBleHRlbmRlZCA9IHRydWUsIGdsb2JzdGFyID0gZmFsc2UgfTogR2xvYk9wdGlvbnMgPSB7fSxcbik6IHN0cmluZyB7XG4gIGlmICghZ2xvYnN0YXIgfHwgZ2xvYnMubGVuZ3RoID09IDApIHtcbiAgICByZXR1cm4gam9pbiguLi5nbG9icyk7XG4gIH1cbiAgaWYgKGdsb2JzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiLlwiO1xuICBsZXQgam9pbmVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgZ2xvYiBvZiBnbG9icykge1xuICAgIGNvbnN0IHBhdGggPSBnbG9iO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICgham9pbmVkKSBqb2luZWQgPSBwYXRoO1xuICAgICAgZWxzZSBqb2luZWQgKz0gYCR7U0VQfSR7cGF0aH1gO1xuICAgIH1cbiAgfVxuICBpZiAoIWpvaW5lZCkgcmV0dXJuIFwiLlwiO1xuICByZXR1cm4gbm9ybWFsaXplR2xvYihqb2luZWQsIHsgZXh0ZW5kZWQsIGdsb2JzdGFyIH0pO1xufVxuIiwiLy8gQ29weXJpZ2h0IDIwMTgtMjAyMiB0aGUgRGVubyBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBNSVQgbGljZW5zZS5cbi8vIENvcHlyaWdodCB0aGUgQnJvd3NlcmlmeSBhdXRob3JzLiBNSVQgTGljZW5zZS5cbi8vIFBvcnRlZCBtb3N0bHkgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYnJvd3NlcmlmeS9wYXRoLWJyb3dzZXJpZnkvXG5cbi8qKlxuICogVXRpbGl0aWVzIGZvciB3b3JraW5nIHdpdGggT1Mtc3BlY2lmaWMgZmlsZSBwYXRocy5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBicm93c2VyIGNvbXBhdGlibGUuXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgaXNXaW5kb3dzIH0gZnJvbSBcIi4uL191dGlsL29zLnRzXCI7XG5pbXBvcnQgKiBhcyBfd2luMzIgZnJvbSBcIi4vd2luMzIudHNcIjtcbmltcG9ydCAqIGFzIF9wb3NpeCBmcm9tIFwiLi9wb3NpeC50c1wiO1xuXG5jb25zdCBwYXRoID0gaXNXaW5kb3dzID8gX3dpbjMyIDogX3Bvc2l4O1xuXG5leHBvcnQgY29uc3Qgd2luMzIgPSBfd2luMzI7XG5leHBvcnQgY29uc3QgcG9zaXggPSBfcG9zaXg7XG5leHBvcnQgY29uc3Qge1xuICBiYXNlbmFtZSxcbiAgZGVsaW1pdGVyLFxuICBkaXJuYW1lLFxuICBleHRuYW1lLFxuICBmb3JtYXQsXG4gIGZyb21GaWxlVXJsLFxuICBpc0Fic29sdXRlLFxuICBqb2luLFxuICBub3JtYWxpemUsXG4gIHBhcnNlLFxuICByZWxhdGl2ZSxcbiAgcmVzb2x2ZSxcbiAgc2VwLFxuICB0b0ZpbGVVcmwsXG4gIHRvTmFtZXNwYWNlZFBhdGgsXG59ID0gcGF0aDtcblxuZXhwb3J0ICogZnJvbSBcIi4vY29tbW9uLnRzXCI7XG5leHBvcnQgeyBTRVAsIFNFUF9QQVRURVJOIH0gZnJvbSBcIi4vc2VwYXJhdG9yLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9faW50ZXJmYWNlLnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nbG9iLnRzXCI7XG4iLCJpbXBvcnQgeyBjb250ZW50VHlwZSB9IGZyb20gXCIuL2RlcHMvbWVkaWFUeXBlcy50c1wiO1xuaW1wb3J0IHsgZXh0bmFtZSB9IGZyb20gXCIuL2RlcHMvcGF0aC50c1wiO1xuXG5leHBvcnQgdHlwZSBQcm9taXNlXzxUPiA9IFQgfCBQcm9taXNlPFQ+O1xuZXhwb3J0IHR5cGUgTWF5YmVIVFRQSGFuZGxlciA9IChyZXE6IFJlcXVlc3QpID0+IFByb21pc2VfPFJlc3BvbnNlIHwgbnVsbD47XG5leHBvcnQgdHlwZSBIVFRQSGFuZGxlciA9IChyZXE6IFJlcXVlc3QpID0+IFByb21pc2VfPFJlc3BvbnNlPjtcbmV4cG9ydCB0eXBlIEhUVFBIYW5kbGVyV2l0aDxUPiA9IChyZXE6IFJlcXVlc3QsIHQ6IFQpID0+IFByb21pc2VfPFJlc3BvbnNlPjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21wcmVzc09wdGlvbnMge1xuXHRzaXplVGhyZXNob2xkOiBudW1iZXIsXG5cdHByZWZlcnJlZEFsZ29yaXRobXM6IChcImd6aXBcIiB8IFwiZGVmbGF0ZVwiKVtdLFxuXHRpZ25vcmVkTWltZXR5cGVzOiAoKHM6IHN0cmluZykgPT4gYm9vbGVhbilbXSxcbn1cbmV4cG9ydCBjb25zdCBjb21wcmVzc1Jlc3BvbnNlID0gKGhhbmRsZXI6IEhUVFBIYW5kbGVyLCBvcHRpb25zPzogUGFydGlhbDxDb21wcmVzc09wdGlvbnM+KSA9PiB7XG5cdGNvbnN0IG8gPSB7XG5cdFx0c2l6ZVRocmVzaG9sZDogNTEyLFxuXHRcdHByZWZlcnJlZEFsZ29yaXRobXM6IFtcImd6aXBcIiwgXCJkZWZsYXRlXCJdIGFzIENvbXByZXNzT3B0aW9uc1tcInByZWZlcnJlZEFsZ29yaXRobXNcIl0sXG5cdFx0aWdub3JlZE1pbWV0eXBlczogWyhzKSA9PiBzLmluY2x1ZGVzKFwiZm9udFwiKV0sXG5cdFx0Li4ub3B0aW9ucyxcblx0fSBhcyBDb21wcmVzc09wdGlvbnM7XG5cblx0cmV0dXJuIChhc3luYyAocmVxKSA9PiB7XG5cdFx0Y29uc3Qgc3VwcG9ydGVkRW5jb2RpbmdzID0gKCgpID0+IHtcblx0XHRcdGNvbnN0IGFjY2VwdGVkID0gcmVxLmhlYWRlcnMuZ2V0KFwiYWNjZXB0LWVuY29kaW5nXCIpO1xuXHRcdFx0aWYgKCFhY2NlcHRlZCkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZW5jb2RpbmdzID0gYWNjZXB0ZWQuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKS5zcGxpdChcIjtcIilbMF0pO1xuXG5cdFx0XHRyZXR1cm4gZW5jb2RpbmdzO1xuXHRcdH0pKCk7XG5cdFx0Y29uc3QgZW5jb2RpbmcgPSAoKCkgPT4ge1xuXHRcdFx0aWYgKCFzdXBwb3J0ZWRFbmNvZGluZ3MpIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGVuY29kaW5nID0gby5wcmVmZXJyZWRBbGdvcml0aG1zLmZpbmQoYSA9PiBzdXBwb3J0ZWRFbmNvZGluZ3MuaW5jbHVkZXMoYSkpO1xuXG5cdFx0XHRyZXR1cm4gZW5jb2RpbmcgPyBbZW5jb2RpbmcsIG5ldyBDb21wcmVzc2lvblN0cmVhbShlbmNvZGluZyldIGFzIFtzdHJpbmcsIENvbXByZXNzaW9uU3RyZWFtXSA6IG51bGw7XG5cdFx0fSkoKTtcblxuXHRcdGNvbnN0IHJlcyA9IGF3YWl0IGhhbmRsZXIocmVxKTtcblxuXHRcdGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzLmhlYWRlcnMuZ2V0KFwiY29udGVudC10eXBlXCIpO1xuXHRcdGNvbnN0IGJvZHkgPSByZXMuYm9keTtcblx0XHRpZiAoY29udGVudFR5cGUgJiYgYm9keSAmJiBlbmNvZGluZykge1xuXHRcdFx0Zm9yIChjb25zdCBwIG9mIG8uaWdub3JlZE1pbWV0eXBlcykge1xuXHRcdFx0XHRpZiAocChjb250ZW50VHlwZSkpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVzO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbnRlbnRMZW5ndGggPSByZXMuaGVhZGVycy5nZXQoXCJjb250ZW50LWxlbmd0aFwiKTtcblx0XHRcdGlmIChjb250ZW50TGVuZ3RoICYmIE51bWJlcihjb250ZW50TGVuZ3RoKSA8IG8uc2l6ZVRocmVzaG9sZCkge1xuXHRcdFx0XHRyZXR1cm4gcmVzO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBbYmVzdEVuY29kaW5nLCBiZXN0RW5jb2Rlcl0gPSBlbmNvZGluZztcblx0XHRcdHJlcy5oZWFkZXJzLnNldChcImNvbnRlbnQtZW5jb2RpbmdcIiwgYmVzdEVuY29kaW5nKTtcblxuXHRcdFx0Y29uc3QgYm9keV8gPSByZXMuYm9keS5waXBlVGhyb3VnaChiZXN0RW5jb2Rlcik7XG5cdFx0XHRjb25zdCByZXNfID0gbmV3IFJlc3BvbnNlKGJvZHlfLCB7XG5cdFx0XHRcdGhlYWRlcnM6IHJlcy5oZWFkZXJzLFxuXHRcdFx0XHRzdGF0dXM6IHJlcy5zdGF0dXMsXG5cdFx0XHRcdHN0YXR1c1RleHQ6IHJlcy5zdGF0dXNUZXh0LFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gcmVzXztcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9KSBhcyBIVFRQSGFuZGxlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRIZWFkZXJzID0gKGhlYWRlcnM6IFtzdHJpbmcsIHN0cmluZ11bXSwgaGFuZGxlcjogSFRUUEhhbmRsZXIpID0+IHtcblx0cmV0dXJuIChhc3luYyAocmVxKSA9PiB7XG5cdFx0Y29uc3QgcmVzID0gYXdhaXQgaGFuZGxlcihyZXEpO1xuXHRcdGZvciAoY29uc3QgW2hlYWRlciwgdmFsdWVdIG9mIGhlYWRlcnMpIHtcblx0XHRcdHJlcy5oZWFkZXJzLnNldChoZWFkZXIsIHZhbHVlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9KSBhcyBIVFRQSGFuZGxlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBvckVsc2UgPSAobWg6IE1heWJlSFRUUEhhbmRsZXIsIGg6IEhUVFBIYW5kbGVyKSA9PiB7XG5cdHJldHVybiAoYXN5bmMgKHJlcSkgPT4ge1xuXHRcdGNvbnN0IG1ociA9IGF3YWl0IG1oKHJlcSk7XG5cdFx0aWYgKG1ocikge1xuXHRcdFx0cmV0dXJuIG1ocjtcblx0XHR9XG5cblx0XHRyZXR1cm4gaChyZXEpO1xuXHR9KSBhcyBIVFRQSGFuZGxlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXIgPSAocHJlZDogKHI6IFJlcXVlc3QpID0+IFByb21pc2VfPGJvb2xlYW4+LCBoOiBIVFRQSGFuZGxlcikgPT4ge1xuXHRyZXR1cm4gKGFzeW5jIChyZXEpID0+IHtcblx0XHRpZiAoIWF3YWl0IHByZWQocmVxKSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGgocmVxKTtcblx0fSkgYXMgTWF5YmVIVFRQSGFuZGxlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjYXRjaGluZyA9IChoOiBIVFRQSGFuZGxlciwgZmFsbGJhY2s6IEhUVFBIYW5kbGVyV2l0aDx1bmtub3duPikgPT4ge1xuXHRyZXR1cm4gKChyZXEpID0+IHtcblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGgocmVxKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4gZmFsbGJhY2socmVxLCBlKTtcblx0XHR9XG5cdH0pIGFzIEhUVFBIYW5kbGVyO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvZyA9IChoOiBIVFRQSGFuZGxlcikgPT4ge1xuXHRyZXR1cm4gKGFzeW5jIChyZXEpID0+IHtcblx0XHRjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXHRcdGNvbnN0IHJlcyA9IGF3YWl0IGgocmVxKTtcblxuXHRcdGNvbnN0IGRpZmYgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0O1xuXG5cdFx0Y29uc29sZS5sb2coYCR7cmVxLm1ldGhvZH0gJHtyZXEudXJsfSAke3Jlcy5zdGF0dXN9IFske2RpZmZ9bXNdYCk7XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9KSBhcyBIVFRQSGFuZGxlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHNlcnZlRGlyID0gKGRpcjogc3RyaW5nLCBub3RGb3VuZEZhbGxiYWNrOiBIVFRQSGFuZGxlcikgPT4ge1xuXHRyZXR1cm4gKGFzeW5jIChyZXEpID0+IHtcblx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKHJlcS51cmwpO1xuXHRcdGNvbnN0IHBhdGggPSB1cmwucGF0aG5hbWUuc2xpY2UoMSk7XG5cdFx0aWYgKHBhdGguaW5jbHVkZXMoXCIuLlwiKSkge1xuXHRcdFx0cmV0dXJuIG5vdEZvdW5kRmFsbGJhY2socmVxKTtcblx0XHR9XG5cblx0XHRsZXQgam9pbmVkID0gYCR7ZGlyfS8ke3BhdGh9YDtcblx0XHRpZiAoam9pbmVkLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0am9pbmVkID0gYCR7am9pbmVkfWluZGV4Lmh0bWxgO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzdCA9IGF3YWl0IERlbm8uc3RhdChqb2luZWQpO1xuXHRcdFx0Y29uc3QgaWZNb2RpZmllZFNpbmNlID0gcmVxLmhlYWRlcnMuZ2V0KFwiaWYtbW9kaWZpZWQtc2luY2VcIik7XG5cdFx0XHRjb25zdCBsbSA9IG5ldyBEYXRlKHN0Lm10aW1lID8/IDApO1xuXHRcdFx0bG0uc2V0TWlsbGlzZWNvbmRzKDApO1xuXHRcdFx0aWYgKGlmTW9kaWZpZWRTaW5jZSkge1xuXHRcdFx0XHRjb25zdCBpbXNUaW1lID0gbmV3IERhdGUoaWZNb2RpZmllZFNpbmNlKS5nZXRUaW1lKCk7XG5cdFx0XHRcdGNvbnN0IGxtVGltZSA9IGxtLmdldFRpbWUoKTtcblxuXHRcdFx0XHRpZiAoaW1zVGltZSA+PSBsbVRpbWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHsgc3RhdHVzOiAzMDQgfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZiA9IGF3YWl0IERlbm8ub3Blbihqb2luZWQpO1xuXHRcdFx0Y29uc3QgZXh0ID0gZXh0bmFtZShqb2luZWQpO1xuXG5cdFx0XHRyZXR1cm4gbmV3IFJlc3BvbnNlKGYucmVhZGFibGUsIHtcblx0XHRcdFx0aGVhZGVyczoge1xuXHRcdFx0XHRcdFwiY29udGVudC1zaXplXCI6IHN0LnNpemUudG9TdHJpbmcoKSxcblx0XHRcdFx0XHRcImNvbnRlbnQtdHlwZVwiOiBjb250ZW50VHlwZShleHQpIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcImxhc3QtbW9kaWZpZWRcIjogbG0udG9VVENTdHJpbmcoKSxcblx0XHRcdFx0fSxcblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdGlmIChlID09PSBEZW5vLmVycm9ycy5Ob3RGb3VuZCkge1xuXHRcdFx0XHRyZXR1cm4gbm90Rm91bmRGYWxsYmFjayhyZXEpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblx0fSkgYXMgSFRUUEhhbmRsZXI7XG59XG4iLCJleHBvcnQgY29uc3QgZnJvbnRlbmQgPSBcInZhciB1dGlsO1xcbihmdW5jdGlvbih1dGlsKSB7XFxuICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsKF9jb25kKSB7fVxcbiAgICB1dGlsLmFzc2VydEVxdWFsID0gYXNzZXJ0RXF1YWw7XFxuICAgIGZ1bmN0aW9uIGFzc2VydE5ldmVyKF94KSB7XFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcXG4gICAgfVxcbiAgICB1dGlsLmFzc2VydE5ldmVyID0gYXNzZXJ0TmV2ZXI7XFxuICAgIHV0aWwuYXJyYXlUb0VudW0gPSAoaXRlbXMpPT57XFxuICAgICAgICBjb25zdCBvYmogPSB7fTtcXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcyl7XFxuICAgICAgICAgICAgb2JqW2l0ZW1dID0gaXRlbTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBvYmo7XFxuICAgIH07XFxuICAgIHV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzID0gKG9iaik9PntcXG4gICAgICAgIGNvbnN0IHZhbGlkS2V5cyA9IG9iamVjdEtleXMob2JqKS5maWx0ZXIoKGspPT50eXBlb2Ygb2JqW29ialtrXV0gIT09IFxcXCJudW1iZXJcXFwiKTtcXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0ge307XFxuICAgICAgICBmb3IgKGNvbnN0IGsgb2YgdmFsaWRLZXlzKXtcXG4gICAgICAgICAgICBmaWx0ZXJlZFtrXSA9IG9ialtrXTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBvYmplY3RWYWx1ZXMoZmlsdGVyZWQpO1xcbiAgICB9O1xcbiAgICB2YXIgb2JqZWN0VmFsdWVzID0gdXRpbC5vYmplY3RWYWx1ZXMgPSAob2JqKT0+e1xcbiAgICAgICAgcmV0dXJuIG9iamVjdEtleXMob2JqKS5tYXAoZnVuY3Rpb24oZSkge1xcbiAgICAgICAgICAgIHJldHVybiBvYmpbZV07XFxuICAgICAgICB9KTtcXG4gICAgfTtcXG4gICAgdmFyIG9iamVjdEtleXMgPSB1dGlsLm9iamVjdEtleXMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09IFxcXCJmdW5jdGlvblxcXCIgPyAob2JqKT0+T2JqZWN0LmtleXMob2JqKSA6IChvYmplY3QpPT57XFxuICAgICAgICBjb25zdCBrZXlzID0gW107XFxuICAgICAgICBmb3IoY29uc3Qga2V5IGluIG9iamVjdCl7XFxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcXG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGtleXM7XFxuICAgIH07XFxuICAgIHV0aWwuZmluZCA9IChhcnIsIGNoZWNrZXIpPT57XFxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYXJyKXtcXG4gICAgICAgICAgICBpZiAoY2hlY2tlcihpdGVtKSkgcmV0dXJuIGl0ZW07XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xcbiAgICB9O1xcbiAgICB1dGlsLmlzSW50ZWdlciA9IHR5cGVvZiBOdW1iZXIuaXNJbnRlZ2VyID09PSBcXFwiZnVuY3Rpb25cXFwiID8gKHZhbCk9Pk51bWJlci5pc0ludGVnZXIodmFsKSA6ICh2YWwpPT50eXBlb2YgdmFsID09PSBcXFwibnVtYmVyXFxcIiAmJiBpc0Zpbml0ZSh2YWwpICYmIE1hdGguZmxvb3IodmFsKSA9PT0gdmFsO1xcbiAgICBmdW5jdGlvbiBqb2luVmFsdWVzKGFycmF5LCBzZXBhcmF0b3IgPSBcXFwiIHwgXFxcIikge1xcbiAgICAgICAgcmV0dXJuIGFycmF5Lm1hcCgodmFsKT0+dHlwZW9mIHZhbCA9PT0gXFxcInN0cmluZ1xcXCIgPyBgJyR7dmFsfSdgIDogdmFsKS5qb2luKHNlcGFyYXRvcik7XFxuICAgIH1cXG4gICAgdXRpbC5qb2luVmFsdWVzID0gam9pblZhbHVlcztcXG59KSh1dGlsIHx8ICh1dGlsID0ge30pKTtcXG5jb25zdCBab2RQYXJzZWRUeXBlID0gdXRpbC5hcnJheVRvRW51bShbXFxuICAgIFxcXCJzdHJpbmdcXFwiLFxcbiAgICBcXFwibmFuXFxcIixcXG4gICAgXFxcIm51bWJlclxcXCIsXFxuICAgIFxcXCJpbnRlZ2VyXFxcIixcXG4gICAgXFxcImZsb2F0XFxcIixcXG4gICAgXFxcImJvb2xlYW5cXFwiLFxcbiAgICBcXFwiZGF0ZVxcXCIsXFxuICAgIFxcXCJiaWdpbnRcXFwiLFxcbiAgICBcXFwic3ltYm9sXFxcIixcXG4gICAgXFxcImZ1bmN0aW9uXFxcIixcXG4gICAgXFxcInVuZGVmaW5lZFxcXCIsXFxuICAgIFxcXCJudWxsXFxcIixcXG4gICAgXFxcImFycmF5XFxcIixcXG4gICAgXFxcIm9iamVjdFxcXCIsXFxuICAgIFxcXCJ1bmtub3duXFxcIixcXG4gICAgXFxcInByb21pc2VcXFwiLFxcbiAgICBcXFwidm9pZFxcXCIsXFxuICAgIFxcXCJuZXZlclxcXCIsXFxuICAgIFxcXCJtYXBcXFwiLFxcbiAgICBcXFwic2V0XFxcIiwgXFxuXSk7XFxuY29uc3QgZ2V0UGFyc2VkVHlwZSA9IChkYXRhKT0+e1xcbiAgICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XFxuICAgIHN3aXRjaCh0KXtcXG4gICAgICAgIGNhc2UgXFxcInVuZGVmaW5lZFxcXCI6XFxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkO1xcbiAgICAgICAgY2FzZSBcXFwic3RyaW5nXFxcIjpcXG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5zdHJpbmc7XFxuICAgICAgICBjYXNlIFxcXCJudW1iZXJcXFwiOlxcbiAgICAgICAgICAgIHJldHVybiBpc05hTihkYXRhKSA/IFpvZFBhcnNlZFR5cGUubmFuIDogWm9kUGFyc2VkVHlwZS5udW1iZXI7XFxuICAgICAgICBjYXNlIFxcXCJib29sZWFuXFxcIjpcXG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5ib29sZWFuO1xcbiAgICAgICAgY2FzZSBcXFwiZnVuY3Rpb25cXFwiOlxcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uO1xcbiAgICAgICAgY2FzZSBcXFwiYmlnaW50XFxcIjpcXG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5iaWdpbnQ7XFxuICAgICAgICBjYXNlIFxcXCJvYmplY3RcXFwiOlxcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmFycmF5O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoZGF0YSA9PT0gbnVsbCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5udWxsO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoZGF0YS50aGVuICYmIHR5cGVvZiBkYXRhLnRoZW4gPT09IFxcXCJmdW5jdGlvblxcXCIgJiYgZGF0YS5jYXRjaCAmJiB0eXBlb2YgZGF0YS5jYXRjaCA9PT0gXFxcImZ1bmN0aW9uXFxcIikge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5wcm9taXNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodHlwZW9mIE1hcCAhPT0gXFxcInVuZGVmaW5lZFxcXCIgJiYgZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5tYXA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmICh0eXBlb2YgU2V0ICE9PSBcXFwidW5kZWZpbmVkXFxcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnNldDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHR5cGVvZiBEYXRlICE9PSBcXFwidW5kZWZpbmVkXFxcIiAmJiBkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5kYXRlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5vYmplY3Q7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVua25vd247XFxuICAgIH1cXG59O1xcbmNvbnN0IG1ha2VJc3N1ZSA9IChwYXJhbXMpPT57XFxuICAgIGNvbnN0IHsgZGF0YSAsIHBhdGggLCBlcnJvck1hcHMgLCBpc3N1ZURhdGEgIH0gPSBwYXJhbXM7XFxuICAgIGNvbnN0IGZ1bGxQYXRoID0gW1xcbiAgICAgICAgLi4ucGF0aCxcXG4gICAgICAgIC4uLmlzc3VlRGF0YS5wYXRoIHx8IFtdXFxuICAgIF07XFxuICAgIGNvbnN0IGZ1bGxJc3N1ZSA9IHtcXG4gICAgICAgIC4uLmlzc3VlRGF0YSxcXG4gICAgICAgIHBhdGg6IGZ1bGxQYXRoXFxuICAgIH07XFxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSBcXFwiXFxcIjtcXG4gICAgY29uc3QgbWFwcyA9IGVycm9yTWFwcy5maWx0ZXIoKG0pPT4hIW0pLnNsaWNlKCkucmV2ZXJzZSgpO1xcbiAgICBmb3IgKGNvbnN0IG1hcCBvZiBtYXBzKXtcXG4gICAgICAgIGVycm9yTWVzc2FnZSA9IG1hcChmdWxsSXNzdWUsIHtcXG4gICAgICAgICAgICBkYXRhLFxcbiAgICAgICAgICAgIGRlZmF1bHRFcnJvcjogZXJyb3JNZXNzYWdlXFxuICAgICAgICB9KS5tZXNzYWdlO1xcbiAgICB9XFxuICAgIHJldHVybiB7XFxuICAgICAgICAuLi5pc3N1ZURhdGEsXFxuICAgICAgICBwYXRoOiBmdWxsUGF0aCxcXG4gICAgICAgIG1lc3NhZ2U6IGlzc3VlRGF0YS5tZXNzYWdlIHx8IGVycm9yTWVzc2FnZVxcbiAgICB9O1xcbn07XFxuY29uc3QgWm9kSXNzdWVDb2RlID0gdXRpbC5hcnJheVRvRW51bShbXFxuICAgIFxcXCJpbnZhbGlkX3R5cGVcXFwiLFxcbiAgICBcXFwiaW52YWxpZF9saXRlcmFsXFxcIixcXG4gICAgXFxcImN1c3RvbVxcXCIsXFxuICAgIFxcXCJpbnZhbGlkX3VuaW9uXFxcIixcXG4gICAgXFxcImludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvclxcXCIsXFxuICAgIFxcXCJpbnZhbGlkX2VudW1fdmFsdWVcXFwiLFxcbiAgICBcXFwidW5yZWNvZ25pemVkX2tleXNcXFwiLFxcbiAgICBcXFwiaW52YWxpZF9hcmd1bWVudHNcXFwiLFxcbiAgICBcXFwiaW52YWxpZF9yZXR1cm5fdHlwZVxcXCIsXFxuICAgIFxcXCJpbnZhbGlkX2RhdGVcXFwiLFxcbiAgICBcXFwiaW52YWxpZF9zdHJpbmdcXFwiLFxcbiAgICBcXFwidG9vX3NtYWxsXFxcIixcXG4gICAgXFxcInRvb19iaWdcXFwiLFxcbiAgICBcXFwiaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXNcXFwiLFxcbiAgICBcXFwibm90X211bHRpcGxlX29mXFxcIiwgXFxuXSk7XFxuZnVuY3Rpb24gZ2V0RXJyb3JNYXAoKSB7XFxuICAgIHJldHVybiBvdmVycmlkZUVycm9yTWFwO1xcbn1cXG5jb25zdCBqc29uU3RyaW5naWZ5UmVwbGFjZXIgPSAoXywgdmFsdWUpPT57XFxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFxcXCJiaWdpbnRcXFwiKSB7XFxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcXG4gICAgfVxcbiAgICByZXR1cm4gdmFsdWU7XFxufTtcXG5jbGFzcyBab2RFcnJvciBleHRlbmRzIEVycm9yIHtcXG4gICAgaXNzdWVzID0gW107XFxuICAgIGdldCBlcnJvcnMoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5pc3N1ZXM7XFxuICAgIH1cXG4gICAgY29uc3RydWN0b3IoaXNzdWVzKXtcXG4gICAgICAgIHN1cGVyKCk7XFxuICAgICAgICBjb25zdCBhY3R1YWxQcm90byA9IG5ldy50YXJnZXQucHJvdG90eXBlO1xcbiAgICAgICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xcbiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBhY3R1YWxQcm90byk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHRoaXMuX19wcm90b19fID0gYWN0dWFsUHJvdG87XFxuICAgICAgICB9XFxuICAgICAgICB0aGlzLm5hbWUgPSBcXFwiWm9kRXJyb3JcXFwiO1xcbiAgICAgICAgdGhpcy5pc3N1ZXMgPSBpc3N1ZXM7XFxuICAgIH1cXG4gICAgZm9ybWF0KF9tYXBwZXIpIHtcXG4gICAgICAgIGNvbnN0IG1hcHBlciA9IF9tYXBwZXIgfHwgZnVuY3Rpb24oaXNzdWUpIHtcXG4gICAgICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcXG4gICAgICAgIH07XFxuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHtcXG4gICAgICAgICAgICBfZXJyb3JzOiBbXVxcbiAgICAgICAgfTtcXG4gICAgICAgIGNvbnN0IHByb2Nlc3NFcnJvciA9IChlcnJvcik9PntcXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcyl7XFxuICAgICAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcXFwiaW52YWxpZF91bmlvblxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlLnVuaW9uRXJyb3JzLm1hcChwcm9jZXNzRXJyb3IpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFxcXCJpbnZhbGlkX3JldHVybl90eXBlXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKGlzc3VlLnJldHVyblR5cGVFcnJvcik7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXFxcImludmFsaWRfYXJndW1lbnRzXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKGlzc3VlLmFyZ3VtZW50c0Vycm9yKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc3N1ZS5wYXRoLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgZmllbGRFcnJvcnMuX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnIgPSBmaWVsZEVycm9ycztcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gMDtcXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKGkgPCBpc3N1ZS5wYXRoLmxlbmd0aCl7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBpc3N1ZS5wYXRoW2ldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlcm1pbmFsID0gaSA9PT0gaXNzdWUucGF0aC5sZW5ndGggLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGVybWluYWwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZXJyb3JzOiBbXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Vycm9yczogW11cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0uX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3VycltlbF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfTtcXG4gICAgICAgIHByb2Nlc3NFcnJvcih0aGlzKTtcXG4gICAgICAgIHJldHVybiBmaWVsZEVycm9ycztcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKGlzc3Vlcyk9PntcXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFpvZEVycm9yKGlzc3Vlcyk7XFxuICAgICAgICByZXR1cm4gZXJyb3I7XFxuICAgIH07XFxuICAgIHRvU3RyaW5nKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZTtcXG4gICAgfVxcbiAgICBnZXQgbWVzc2FnZSgpIHtcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlzc3VlcywganNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcXG4gICAgfVxcbiAgICBnZXQgaXNFbXB0eSgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGggPT09IDA7XFxuICAgIH1cXG4gICAgYWRkSXNzdWUgPSAoc3ViKT0+e1xcbiAgICAgICAgdGhpcy5pc3N1ZXMgPSBbXFxuICAgICAgICAgICAgLi4udGhpcy5pc3N1ZXMsXFxuICAgICAgICAgICAgc3ViXFxuICAgICAgICBdO1xcbiAgICB9O1xcbiAgICBhZGRJc3N1ZXMgPSAoc3VicyA9IFtdKT0+e1xcbiAgICAgICAgdGhpcy5pc3N1ZXMgPSBbXFxuICAgICAgICAgICAgLi4udGhpcy5pc3N1ZXMsXFxuICAgICAgICAgICAgLi4uc3Vic1xcbiAgICAgICAgXTtcXG4gICAgfTtcXG4gICAgZmxhdHRlbihtYXBwZXIgPSAoaXNzdWUpPT5pc3N1ZS5tZXNzYWdlKSB7XFxuICAgICAgICBjb25zdCBmaWVsZEVycm9ycyA9IHt9O1xcbiAgICAgICAgY29uc3QgZm9ybUVycm9ycyA9IFtdO1xcbiAgICAgICAgZm9yIChjb25zdCBzdWIgb2YgdGhpcy5pc3N1ZXMpe1xcbiAgICAgICAgICAgIGlmIChzdWIucGF0aC5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzW3N1Yi5wYXRoWzBdXSA9IGZpZWxkRXJyb3JzW3N1Yi5wYXRoWzBdXSB8fCBbXTtcXG4gICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dLnB1c2gobWFwcGVyKHN1YikpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGZvcm1FcnJvcnMucHVzaChtYXBwZXIoc3ViKSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBmb3JtRXJyb3JzLFxcbiAgICAgICAgICAgIGZpZWxkRXJyb3JzXFxuICAgICAgICB9O1xcbiAgICB9XFxuICAgIGdldCBmb3JtRXJyb3JzKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZmxhdHRlbigpO1xcbiAgICB9XFxufVxcbmNvbnN0IGRlZmF1bHRFcnJvck1hcCA9IChpc3N1ZSwgX2N0eCk9PntcXG4gICAgbGV0IG1lc3NhZ2U7XFxuICAgIHN3aXRjaChpc3N1ZS5jb2RlKXtcXG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZTpcXG4gICAgICAgICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcXFwiUmVxdWlyZWRcXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgRXhwZWN0ZWQgJHtpc3N1ZS5leHBlY3RlZH0sIHJlY2VpdmVkICR7aXNzdWUucmVjZWl2ZWR9YDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWw6XFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGxpdGVyYWwgdmFsdWUsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkoaXNzdWUuZXhwZWN0ZWQsIGpzb25TdHJpbmdpZnlSZXBsYWNlcil9YDtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzOlxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVW5yZWNvZ25pemVkIGtleShzKSBpbiBvYmplY3Q6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFxcXCIsIFxcXCIpfWA7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uOlxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dGA7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6XFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGRpc2NyaW1pbmF0b3IgdmFsdWUuIEV4cGVjdGVkICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLm9wdGlvbnMpfWA7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWU6XFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGVudW0gdmFsdWUuIEV4cGVjdGVkICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLm9wdGlvbnMpfSwgcmVjZWl2ZWQgJyR7aXNzdWUucmVjZWl2ZWR9J2A7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50czpcXG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZnVuY3Rpb24gYXJndW1lbnRzYDtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfcmV0dXJuX3R5cGU6XFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGZ1bmN0aW9uIHJldHVybiB0eXBlYDtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZTpcXG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZGF0ZWA7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZzpcXG4gICAgICAgICAgICBpZiAodHlwZW9mIGlzc3VlLnZhbGlkYXRpb24gPT09IFxcXCJvYmplY3RcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmIChcXFwic3RhcnRzV2l0aFxcXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IHN0YXJ0IHdpdGggXFxcIiR7aXNzdWUudmFsaWRhdGlvbi5zdGFydHNXaXRofVxcXCJgO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxcXCJlbmRzV2l0aFxcXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFxcXCIke2lzc3VlLnZhbGlkYXRpb24uZW5kc1dpdGh9XFxcImA7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlLnZhbGlkYXRpb24pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc3N1ZS52YWxpZGF0aW9uICE9PSBcXFwicmVnZXhcXFwiKSB7XFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCAke2lzc3VlLnZhbGlkYXRpb259YDtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXFxcIkludmFsaWRcXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19zbWFsbDpcXG4gICAgICAgICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXFxcImFycmF5XFxcIikgbWVzc2FnZSA9IGBBcnJheSBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbGVhc3RgIDogYG1vcmUgdGhhbmB9ICR7aXNzdWUubWluaW11bX0gZWxlbWVudChzKWA7XFxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXFxcInN0cmluZ1xcXCIpIG1lc3NhZ2UgPSBgU3RyaW5nIG11c3QgY29udGFpbiAke2lzc3VlLmluY2x1c2l2ZSA/IGBhdCBsZWFzdGAgOiBgb3ZlcmB9ICR7aXNzdWUubWluaW11bX0gY2hhcmFjdGVyKHMpYDtcXG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcXFwibnVtYmVyXFxcIikgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gJHtpc3N1ZS5pbmNsdXNpdmUgPyBgb3IgZXF1YWwgdG8gYCA6IGBgfSR7aXNzdWUubWluaW11bX1gO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFxcXCJkYXRlXFxcIikgbWVzc2FnZSA9IGBEYXRlIG11c3QgYmUgZ3JlYXRlciB0aGFuICR7aXNzdWUuaW5jbHVzaXZlID8gYG9yIGVxdWFsIHRvIGAgOiBgYH0ke25ldyBEYXRlKGlzc3VlLm1pbmltdW0pfWA7XFxuICAgICAgICAgICAgZWxzZSBtZXNzYWdlID0gXFxcIkludmFsaWQgaW5wdXRcXFwiO1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUudG9vX2JpZzpcXG4gICAgICAgICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXFxcImFycmF5XFxcIikgbWVzc2FnZSA9IGBBcnJheSBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbW9zdGAgOiBgbGVzcyB0aGFuYH0gJHtpc3N1ZS5tYXhpbXVtfSBlbGVtZW50KHMpYDtcXG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcXFwic3RyaW5nXFxcIikgbWVzc2FnZSA9IGBTdHJpbmcgbXVzdCBjb250YWluICR7aXNzdWUuaW5jbHVzaXZlID8gYGF0IG1vc3RgIDogYHVuZGVyYH0gJHtpc3N1ZS5tYXhpbXVtfSBjaGFyYWN0ZXIocylgO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFxcXCJudW1iZXJcXFwiKSBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlIGxlc3MgdGhhbiAke2lzc3VlLmluY2x1c2l2ZSA/IGBvciBlcXVhbCB0byBgIDogYGB9JHtpc3N1ZS5tYXhpbXVtfWA7XFxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXFxcImRhdGVcXFwiKSBtZXNzYWdlID0gYERhdGUgbXVzdCBiZSBzbWFsbGVyIHRoYW4gJHtpc3N1ZS5pbmNsdXNpdmUgPyBgb3IgZXF1YWwgdG8gYCA6IGBgfSR7bmV3IERhdGUoaXNzdWUubWF4aW11bSl9YDtcXG4gICAgICAgICAgICBlbHNlIG1lc3NhZ2UgPSBcXFwiSW52YWxpZCBpbnB1dFxcXCI7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5jdXN0b206XFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzOlxcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZGA7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2Y6XFxuICAgICAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7aXNzdWUubXVsdGlwbGVPZn1gO1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICBtZXNzYWdlID0gX2N0eC5kZWZhdWx0RXJyb3I7XFxuICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihpc3N1ZSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIHtcXG4gICAgICAgIG1lc3NhZ2VcXG4gICAgfTtcXG59O1xcbmZ1bmN0aW9uIGFkZElzc3VlVG9Db250ZXh0KGN0eCwgaXNzdWVEYXRhKSB7XFxuICAgIGNvbnN0IGlzc3VlID0gbWFrZUlzc3VlKHtcXG4gICAgICAgIGlzc3VlRGF0YTogaXNzdWVEYXRhLFxcbiAgICAgICAgZGF0YTogY3R4LmRhdGEsXFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgIGVycm9yTWFwczogW1xcbiAgICAgICAgICAgIGN0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLFxcbiAgICAgICAgICAgIGN0eC5zY2hlbWFFcnJvck1hcCxcXG4gICAgICAgICAgICBnZXRFcnJvck1hcCgpLFxcbiAgICAgICAgICAgIGRlZmF1bHRFcnJvck1hcFxcbiAgICAgICAgXS5maWx0ZXIoKHgpPT4hIXgpXFxuICAgIH0pO1xcbiAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKGlzc3VlKTtcXG59XFxuY2xhc3MgUGFyc2VTdGF0dXMge1xcbiAgICB2YWx1ZSA9IFxcXCJ2YWxpZFxcXCI7XFxuICAgIGRpcnR5KCkge1xcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IFxcXCJ2YWxpZFxcXCIpIHRoaXMudmFsdWUgPSBcXFwiZGlydHlcXFwiO1xcbiAgICB9XFxuICAgIGFib3J0KCkge1xcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgIT09IFxcXCJhYm9ydGVkXFxcIikgdGhpcy52YWx1ZSA9IFxcXCJhYm9ydGVkXFxcIjtcXG4gICAgfVxcbiAgICBzdGF0aWMgbWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdHMpIHtcXG4gICAgICAgIGNvbnN0IGFycmF5VmFsdWUgPSBbXTtcXG4gICAgICAgIGZvciAoY29uc3QgcyBvZiByZXN1bHRzKXtcXG4gICAgICAgICAgICBpZiAocy5zdGF0dXMgPT09IFxcXCJhYm9ydGVkXFxcIikgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICAgICAgaWYgKHMuc3RhdHVzID09PSBcXFwiZGlydHlcXFwiKSBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICBhcnJheVZhbHVlLnB1c2gocy52YWx1ZSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxcbiAgICAgICAgICAgIHZhbHVlOiBhcnJheVZhbHVlXFxuICAgICAgICB9O1xcbiAgICB9XFxuICAgIHN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKHN0YXR1cywgcGFpcnMpIHtcXG4gICAgICAgIGNvbnN0IHN5bmNQYWlycyA9IFtdO1xcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKXtcXG4gICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XFxuICAgICAgICAgICAgICAgIGtleTogYXdhaXQgcGFpci5rZXksXFxuICAgICAgICAgICAgICAgIHZhbHVlOiBhd2FpdCBwYWlyLnZhbHVlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgc3luY1BhaXJzKTtcXG4gICAgfVxcbiAgICBzdGF0aWMgbWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgcGFpcnMpIHtcXG4gICAgICAgIGNvbnN0IGZpbmFsT2JqZWN0ID0ge307XFxuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpe1xcbiAgICAgICAgICAgIGNvbnN0IHsga2V5ICwgdmFsdWUgIH0gPSBwYWlyO1xcbiAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcXFwiYWJvcnRlZFxcXCIpIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zdGF0dXMgPT09IFxcXCJhYm9ydGVkXFxcIikgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFxcXCJkaXJ0eVxcXCIpIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgIGlmICh2YWx1ZS5zdGF0dXMgPT09IFxcXCJkaXJ0eVxcXCIpIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUudmFsdWUgIT09IFxcXCJ1bmRlZmluZWRcXFwiIHx8IHBhaXIuYWx3YXlzU2V0KSB7XFxuICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0W2tleS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxcbiAgICAgICAgICAgIHZhbHVlOiBmaW5hbE9iamVjdFxcbiAgICAgICAgfTtcXG4gICAgfVxcbn1cXG5jb25zdCBJTlZBTElEID0gT2JqZWN0LmZyZWV6ZSh7XFxuICAgIHN0YXR1czogXFxcImFib3J0ZWRcXFwiXFxufSk7XFxuY29uc3QgT0sgPSAodmFsdWUpPT4oe1xcbiAgICAgICAgc3RhdHVzOiBcXFwidmFsaWRcXFwiLFxcbiAgICAgICAgdmFsdWVcXG4gICAgfSk7XFxuY29uc3QgaXNBYm9ydGVkID0gKHgpPT54LnN0YXR1cyA9PT0gXFxcImFib3J0ZWRcXFwiO1xcbmNvbnN0IGlzRGlydHkgPSAoeCk9Pnguc3RhdHVzID09PSBcXFwiZGlydHlcXFwiO1xcbmNvbnN0IGlzVmFsaWQgPSAoeCk9Pnguc3RhdHVzID09PSBcXFwidmFsaWRcXFwiO1xcbmNvbnN0IGlzQXN5bmMgPSAoeCk9PnR5cGVvZiBQcm9taXNlICE9PSB1bmRlZmluZWQgJiYgeCBpbnN0YW5jZW9mIFByb21pc2U7XFxubGV0IG92ZXJyaWRlRXJyb3JNYXAgPSBkZWZhdWx0RXJyb3JNYXA7XFxudmFyIGVycm9yVXRpbDtcXG4oZnVuY3Rpb24oZXJyb3JVdGlsKSB7XFxuICAgIGVycm9yVXRpbC5lcnJUb09iaiA9IChtZXNzYWdlKT0+dHlwZW9mIG1lc3NhZ2UgPT09IFxcXCJzdHJpbmdcXFwiID8ge1xcbiAgICAgICAgICAgIG1lc3NhZ2VcXG4gICAgICAgIH0gOiBtZXNzYWdlIHx8IHt9O1xcbiAgICBlcnJvclV0aWwudG9TdHJpbmcgPSAobWVzc2FnZSk9PnR5cGVvZiBtZXNzYWdlID09PSBcXFwic3RyaW5nXFxcIiA/IG1lc3NhZ2UgOiBtZXNzYWdlPy5tZXNzYWdlO1xcbn0pKGVycm9yVXRpbCB8fCAoZXJyb3JVdGlsID0ge30pKTtcXG5jbGFzcyBQYXJzZUlucHV0TGF6eVBhdGgge1xcbiAgICBwYXJlbnQ7XFxuICAgIGRhdGE7XFxuICAgIF9wYXRoO1xcbiAgICBfa2V5O1xcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHZhbHVlLCBwYXRoLCBrZXkpe1xcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XFxuICAgICAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcXG4gICAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xcbiAgICAgICAgdGhpcy5fa2V5ID0ga2V5O1xcbiAgICB9XFxuICAgIGdldCBwYXRoKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGguY29uY2F0KHRoaXMuX2tleSk7XFxuICAgIH1cXG59XFxuY29uc3QgaGFuZGxlUmVzdWx0ID0gKGN0eCwgcmVzdWx0KT0+e1xcbiAgICBpZiAoaXNWYWxpZChyZXN1bHQpKSB7XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXFxuICAgICAgICAgICAgZGF0YTogcmVzdWx0LnZhbHVlXFxuICAgICAgICB9O1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKCFjdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIlZhbGlkYXRpb24gZmFpbGVkIGJ1dCBubyBpc3N1ZXMgZGV0ZWN0ZWQuXFxcIik7XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihjdHguY29tbW9uLmlzc3Vlcyk7XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxcbiAgICAgICAgICAgIGVycm9yXFxuICAgICAgICB9O1xcbiAgICB9XFxufTtcXG5mdW5jdGlvbiBwcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcykge1xcbiAgICBpZiAoIXBhcmFtcykgcmV0dXJuIHt9O1xcbiAgICBjb25zdCB7IGVycm9yTWFwICwgaW52YWxpZF90eXBlX2Vycm9yICwgcmVxdWlyZWRfZXJyb3IgLCBkZXNjcmlwdGlvbiAgfSA9IHBhcmFtcztcXG4gICAgaWYgKGVycm9yTWFwICYmIChpbnZhbGlkX3R5cGVfZXJyb3IgfHwgcmVxdWlyZWRfZXJyb3IpKSB7XFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IHVzZSBcXFwiaW52YWxpZFxcXCIgb3IgXFxcInJlcXVpcmVkXFxcIiBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSBlcnJvciBtYXAuYCk7XFxuICAgIH1cXG4gICAgaWYgKGVycm9yTWFwKSByZXR1cm4ge1xcbiAgICAgICAgZXJyb3JNYXA6IGVycm9yTWFwLFxcbiAgICAgICAgZGVzY3JpcHRpb25cXG4gICAgfTtcXG4gICAgY29uc3QgY3VzdG9tTWFwID0gKGlzcywgY3R4KT0+e1xcbiAgICAgICAgaWYgKGlzcy5jb2RlICE9PSBcXFwiaW52YWxpZF90eXBlXFxcIikgcmV0dXJuIHtcXG4gICAgICAgICAgICBtZXNzYWdlOiBjdHguZGVmYXVsdEVycm9yXFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YSA9PT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXF1aXJlZF9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgbWVzc2FnZTogaW52YWxpZF90eXBlX2Vycm9yID8/IGN0eC5kZWZhdWx0RXJyb3JcXG4gICAgICAgIH07XFxuICAgIH07XFxuICAgIHJldHVybiB7XFxuICAgICAgICBlcnJvck1hcDogY3VzdG9tTWFwLFxcbiAgICAgICAgZGVzY3JpcHRpb25cXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kVHlwZSB7XFxuICAgIF90eXBlO1xcbiAgICBfb3V0cHV0O1xcbiAgICBfaW5wdXQ7XFxuICAgIF9kZWY7XFxuICAgIGdldCBkZXNjcmlwdGlvbigpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuZGVzY3JpcHRpb247XFxuICAgIH1cXG4gICAgX2dldFR5cGUoaW5wdXQpIHtcXG4gICAgICAgIHJldHVybiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpO1xcbiAgICB9XFxuICAgIF9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KSB7XFxuICAgICAgICByZXR1cm4gY3R4IHx8IHtcXG4gICAgICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXFxuICAgICAgICAgICAgZGF0YTogaW5wdXQuZGF0YSxcXG4gICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXFxuICAgICAgICAgICAgcGF0aDogaW5wdXQucGF0aCxcXG4gICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudFxcbiAgICAgICAgfTtcXG4gICAgfVxcbiAgICBfcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KSB7XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHN0YXR1czogbmV3IFBhcnNlU3RhdHVzKCksXFxuICAgICAgICAgICAgY3R4OiB7XFxuICAgICAgICAgICAgICAgIGNvbW1vbjogaW5wdXQucGFyZW50LmNvbW1vbixcXG4gICAgICAgICAgICAgICAgZGF0YTogaW5wdXQuZGF0YSxcXG4gICAgICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcXG4gICAgICAgICAgICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcXG4gICAgICAgICAgICAgICAgcGF0aDogaW5wdXQucGF0aCxcXG4gICAgICAgICAgICAgICAgcGFyZW50OiBpbnB1dC5wYXJlbnRcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9O1xcbiAgICB9XFxuICAgIF9wYXJzZVN5bmMoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlKGlucHV0KTtcXG4gICAgICAgIGlmIChpc0FzeW5jKHJlc3VsdCkpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIlN5bmNocm9ub3VzIHBhcnNlIGVuY291bnRlcmVkIHByb21pc2UuXFxcIik7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gcmVzdWx0O1xcbiAgICB9XFxuICAgIF9wYXJzZUFzeW5jKGlucHV0KSB7XFxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZShpbnB1dCk7XFxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XFxuICAgIH1cXG4gICAgcGFyc2UoZGF0YSwgcGFyYW1zKSB7XFxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLnNhZmVQYXJzZShkYXRhLCBwYXJhbXMpO1xcbiAgICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSByZXR1cm4gcmVzdWx0LmRhdGE7XFxuICAgICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XFxuICAgIH1cXG4gICAgc2FmZVBhcnNlKGRhdGEsIHBhcmFtcykge1xcbiAgICAgICAgY29uc3QgY3R4ID0ge1xcbiAgICAgICAgICAgIGNvbW1vbjoge1xcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxcbiAgICAgICAgICAgICAgICBhc3luYzogcGFyYW1zPy5hc3luYyA/PyBmYWxzZSxcXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBwYXRoOiBwYXJhbXM/LnBhdGggfHwgW10sXFxuICAgICAgICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXFxuICAgICAgICAgICAgZGF0YSxcXG4gICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGRhdGEpXFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2VTeW5jKHtcXG4gICAgICAgICAgICBkYXRhLFxcbiAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgIHBhcmVudDogY3R4XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBoYW5kbGVSZXN1bHQoY3R4LCByZXN1bHQpO1xcbiAgICB9XFxuICAgIGFzeW5jIHBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKSB7XFxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNhZmVQYXJzZUFzeW5jKGRhdGEsIHBhcmFtcyk7XFxuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiByZXN1bHQuZGF0YTtcXG4gICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcXG4gICAgfVxcbiAgICBhc3luYyBzYWZlUGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpIHtcXG4gICAgICAgIGNvbnN0IGN0eCA9IHtcXG4gICAgICAgICAgICBjb21tb246IHtcXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxcbiAgICAgICAgICAgICAgICBhc3luYzogdHJ1ZVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgcGF0aDogcGFyYW1zPy5wYXRoIHx8IFtdLFxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXFxuICAgICAgICAgICAgcGFyZW50OiBudWxsLFxcbiAgICAgICAgICAgIGRhdGEsXFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKVxcbiAgICAgICAgfTtcXG4gICAgICAgIGNvbnN0IG1heWJlQXN5bmNSZXN1bHQgPSB0aGlzLl9wYXJzZSh7XFxuICAgICAgICAgICAgZGF0YSxcXG4gICAgICAgICAgICBwYXRoOiBbXSxcXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eFxcbiAgICAgICAgfSk7XFxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoaXNBc3luYyhtYXliZUFzeW5jUmVzdWx0KSA/IG1heWJlQXN5bmNSZXN1bHQgOiBQcm9taXNlLnJlc29sdmUobWF5YmVBc3luY1Jlc3VsdCkpO1xcbiAgICAgICAgcmV0dXJuIGhhbmRsZVJlc3VsdChjdHgsIHJlc3VsdCk7XFxuICAgIH1cXG4gICAgc3BhID0gdGhpcy5zYWZlUGFyc2VBc3luYztcXG4gICAgcmVmaW5lKGNoZWNrLCBtZXNzYWdlKSB7XFxuICAgICAgICBjb25zdCBnZXRJc3N1ZVByb3BlcnRpZXMgPSAodmFsKT0+e1xcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXFxcInN0cmluZ1xcXCIgfHwgdHlwZW9mIG1lc3NhZ2UgPT09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXFxcImZ1bmN0aW9uXFxcIikge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZSh2YWwpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgodmFsLCBjdHgpPT57XFxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hlY2sodmFsKTtcXG4gICAgICAgICAgICBjb25zdCBzZXRFcnJvciA9ICgpPT5jdHguYWRkSXNzdWUoe1xcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmN1c3RvbSxcXG4gICAgICAgICAgICAgICAgICAgIC4uLmdldElzc3VlUHJvcGVydGllcyh2YWwpXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmICh0eXBlb2YgUHJvbWlzZSAhPT0gXFxcInVuZGVmaW5lZFxcXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKGRhdGEpPT57XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcigpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoIXJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICBzZXRFcnJvcigpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmVmaW5lbWVudChjaGVjaywgcmVmaW5lbWVudERhdGEpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9yZWZpbmVtZW50KCh2YWwsIGN0eCk9PntcXG4gICAgICAgICAgICBpZiAoIWNoZWNrKHZhbCkpIHtcXG4gICAgICAgICAgICAgICAgY3R4LmFkZElzc3VlKHR5cGVvZiByZWZpbmVtZW50RGF0YSA9PT0gXFxcImZ1bmN0aW9uXFxcIiA/IHJlZmluZW1lbnREYXRhKHZhbCwgY3R4KSA6IHJlZmluZW1lbnREYXRhKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIF9yZWZpbmVtZW50KHJlZmluZW1lbnQpIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XFxuICAgICAgICAgICAgc2NoZW1hOiB0aGlzLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcXG4gICAgICAgICAgICBlZmZlY3Q6IHtcXG4gICAgICAgICAgICAgICAgdHlwZTogXFxcInJlZmluZW1lbnRcXFwiLFxcbiAgICAgICAgICAgICAgICByZWZpbmVtZW50XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc3VwZXJSZWZpbmUgPSB0aGlzLl9yZWZpbmVtZW50O1xcbiAgICBjb25zdHJ1Y3RvcihkZWYpe1xcbiAgICAgICAgdGhpcy5fZGVmID0gZGVmO1xcbiAgICAgICAgdGhpcy5wYXJzZSA9IHRoaXMucGFyc2UuYmluZCh0aGlzKTtcXG4gICAgICAgIHRoaXMuc2FmZVBhcnNlID0gdGhpcy5zYWZlUGFyc2UuYmluZCh0aGlzKTtcXG4gICAgICAgIHRoaXMucGFyc2VBc3luYyA9IHRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5zYWZlUGFyc2VBc3luYyA9IHRoaXMuc2FmZVBhcnNlQXN5bmMuYmluZCh0aGlzKTtcXG4gICAgICAgIHRoaXMuc3BhID0gdGhpcy5zcGEuYmluZCh0aGlzKTtcXG4gICAgICAgIHRoaXMucmVmaW5lID0gdGhpcy5yZWZpbmUuYmluZCh0aGlzKTtcXG4gICAgICAgIHRoaXMucmVmaW5lbWVudCA9IHRoaXMucmVmaW5lbWVudC5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5zdXBlclJlZmluZSA9IHRoaXMuc3VwZXJSZWZpbmUuYmluZCh0aGlzKTtcXG4gICAgICAgIHRoaXMub3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsLmJpbmQodGhpcyk7XFxuICAgICAgICB0aGlzLm51bGxhYmxlID0gdGhpcy5udWxsYWJsZS5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5udWxsaXNoID0gdGhpcy5udWxsaXNoLmJpbmQodGhpcyk7XFxuICAgICAgICB0aGlzLmFycmF5ID0gdGhpcy5hcnJheS5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5wcm9taXNlID0gdGhpcy5wcm9taXNlLmJpbmQodGhpcyk7XFxuICAgICAgICB0aGlzLm9yID0gdGhpcy5vci5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5hbmQgPSB0aGlzLmFuZC5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB0aGlzLnRyYW5zZm9ybS5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5kZWZhdWx0ID0gdGhpcy5kZWZhdWx0LmJpbmQodGhpcyk7XFxuICAgICAgICB0aGlzLmRlc2NyaWJlID0gdGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpO1xcbiAgICAgICAgdGhpcy5pc051bGxhYmxlID0gdGhpcy5pc051bGxhYmxlLmJpbmQodGhpcyk7XFxuICAgICAgICB0aGlzLmlzT3B0aW9uYWwgPSB0aGlzLmlzT3B0aW9uYWwuYmluZCh0aGlzKTtcXG4gICAgfVxcbiAgICBvcHRpb25hbCgpIHtcXG4gICAgICAgIHJldHVybiBab2RPcHRpb25hbC5jcmVhdGUodGhpcyk7XFxuICAgIH1cXG4gICAgbnVsbGFibGUoKSB7XFxuICAgICAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKHRoaXMpO1xcbiAgICB9XFxuICAgIG51bGxpc2goKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25hbCgpLm51bGxhYmxlKCk7XFxuICAgIH1cXG4gICAgYXJyYXkoKSB7XFxuICAgICAgICByZXR1cm4gWm9kQXJyYXkuY3JlYXRlKHRoaXMpO1xcbiAgICB9XFxuICAgIHByb21pc2UoKSB7XFxuICAgICAgICByZXR1cm4gWm9kUHJvbWlzZS5jcmVhdGUodGhpcyk7XFxuICAgIH1cXG4gICAgb3Iob3B0aW9uKSB7XFxuICAgICAgICByZXR1cm4gWm9kVW5pb24uY3JlYXRlKFtcXG4gICAgICAgICAgICB0aGlzLFxcbiAgICAgICAgICAgIG9wdGlvblxcbiAgICAgICAgXSk7XFxuICAgIH1cXG4gICAgYW5kKGluY29taW5nKSB7XFxuICAgICAgICByZXR1cm4gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZSh0aGlzLCBpbmNvbWluZyk7XFxuICAgIH1cXG4gICAgdHJhbnNmb3JtKHRyYW5zZm9ybSkge1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcXG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMsXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxcbiAgICAgICAgICAgIGVmZmVjdDoge1xcbiAgICAgICAgICAgICAgICB0eXBlOiBcXFwidHJhbnNmb3JtXFxcIixcXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZGVmYXVsdChkZWYpIHtcXG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZ1bmMgPSB0eXBlb2YgZGVmID09PSBcXFwiZnVuY3Rpb25cXFwiID8gZGVmIDogKCk9PmRlZjtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kRGVmYXVsdCh7XFxuICAgICAgICAgICAgaW5uZXJUeXBlOiB0aGlzLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlRnVuYyxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHRcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGRlc2NyaWJlKGRlc2NyaXB0aW9uKSB7XFxuICAgICAgICBjb25zdCBUaGlzID0gdGhpcy5jb25zdHJ1Y3RvcjtcXG4gICAgICAgIHJldHVybiBuZXcgVGhpcyh7XFxuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBpc09wdGlvbmFsKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKHVuZGVmaW5lZCkuc3VjY2VzcztcXG4gICAgfVxcbiAgICBpc051bGxhYmxlKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3M7XFxuICAgIH1cXG59XFxuY29uc3QgY3VpZFJlZ2V4ID0gL15jW15cXFxccy1dezgsfSQvaTtcXG5jb25zdCB1dWlkUmVnZXggPSAvXihbYS1mMC05XXs4fS1bYS1mMC05XXs0fS1bMS01XVthLWYwLTldezN9LVthLWYwLTldezR9LVthLWYwLTldezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC9pO1xcbmNvbnN0IGVtYWlsUmVnZXggPSAvXigoW148PigpW1xcXFxdXFxcXC4sOzpcXFxcc0BcXFxcXFxcIl0rKFxcXFwuW148PigpW1xcXFxdXFxcXC4sOzpcXFxcc0BcXFxcXFxcIl0rKSopfChcXFxcXFxcIi4rXFxcXFxcXCIpKUAoKFtePD4oKVtcXFxcXVxcXFwuLDs6XFxcXHNAXFxcXFxcXCJdK1xcXFwuKStbXjw+KClbXFxcXF1cXFxcLiw7OlxcXFxzQFxcXFxcXFwiXXsyLH0pJC9pO1xcbmNsYXNzIFpvZFN0cmluZyBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcXG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnN0cmluZykge1xcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuc3RyaW5nLFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xcbiAgICAgICAgbGV0IGN0eDEgPSB1bmRlZmluZWQ7XFxuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3Mpe1xcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcXFwibWluXFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5sZW5ndGggPCBjaGVjay52YWx1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJzdHJpbmdcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcXFwibWF4XFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5sZW5ndGggPiBjaGVjay52YWx1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwic3RyaW5nXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXFxcImVtYWlsXFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoIWVtYWlsUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcXFwiZW1haWxcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcXFwidXVpZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKCF1dWlkUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcXFwidXVpZFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFxcXCJjdWlkXFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoIWN1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjdHgxID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eDEpO1xcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4MSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFxcXCJjdWlkXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXFxcInVybFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIG5ldyBVUkwoaW5wdXQuZGF0YSk7XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggIHtcXG4gICAgICAgICAgICAgICAgICAgIGN0eDEgPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4MSk7XFxuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgxLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXFxcInVybFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFxcXCJyZWdleFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgY2hlY2sucmVnZXgubGFzdEluZGV4ID0gMDtcXG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdFJlc3VsdCA9IGNoZWNrLnJlZ2V4LnRlc3QoaW5wdXQuZGF0YSk7XFxuICAgICAgICAgICAgICAgIGlmICghdGVzdFJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcXFwicmVnZXhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcXFwidHJpbVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudHJpbSgpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXFxcInN0YXJ0c1dpdGhcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGF0YS5zdGFydHNXaXRoKGNoZWNrLnZhbHVlKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHNXaXRoOiBjaGVjay52YWx1ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXFxcImVuZHNXaXRoXFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmRhdGEuZW5kc1dpdGgoY2hlY2sudmFsdWUpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjdHgxID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eDEpO1xcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4MSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHNXaXRoOiBjaGVjay52YWx1ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmRhdGFcXG4gICAgICAgIH07XFxuICAgIH1cXG4gICAgX3JlZ2V4ID0gKHJlZ2V4LCB2YWxpZGF0aW9uLCBtZXNzYWdlKT0+dGhpcy5yZWZpbmVtZW50KChkYXRhKT0+cmVnZXgudGVzdChkYXRhKSwge1xcbiAgICAgICAgICAgIHZhbGlkYXRpb24sXFxuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKVxcbiAgICAgICAgfSk7XFxuICAgIF9hZGRDaGVjayhjaGVjaykge1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcXG4gICAgICAgICAgICBjaGVja3M6IFtcXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLmNoZWNrcyxcXG4gICAgICAgICAgICAgICAgY2hlY2tcXG4gICAgICAgICAgICBdXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBlbWFpbChtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xcbiAgICAgICAgICAgIGtpbmQ6IFxcXCJlbWFpbFxcXCIsXFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB1cmwobWVzc2FnZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcXG4gICAgICAgICAgICBraW5kOiBcXFwidXJsXFxcIixcXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHV1aWQobWVzc2FnZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcXG4gICAgICAgICAgICBraW5kOiBcXFwidXVpZFxcXCIsXFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBjdWlkKG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcImN1aWRcXFwiLFxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmVnZXgocmVnZXgsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcInJlZ2V4XFxcIixcXG4gICAgICAgICAgICByZWdleDogcmVnZXgsXFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBzdGFydHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xcbiAgICAgICAgICAgIGtpbmQ6IFxcXCJzdGFydHNXaXRoXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBlbmRzV2l0aCh2YWx1ZSwgbWVzc2FnZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcXG4gICAgICAgICAgICBraW5kOiBcXFwiZW5kc1dpdGhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIG1pbihtaW5MZW5ndGgsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcIm1pblxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IG1pbkxlbmd0aCxcXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcIm1heFxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IG1heExlbmd0aCxcXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGxlbmd0aChsZW4sIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLm1pbihsZW4sIG1lc3NhZ2UpLm1heChsZW4sIG1lc3NhZ2UpO1xcbiAgICB9XFxuICAgIG5vbmVtcHR5ID0gKG1lc3NhZ2UpPT50aGlzLm1pbigxLCBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkpO1xcbiAgICB0cmltID0gKCk9Pm5ldyBab2RTdHJpbmcoe1xcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcXG4gICAgICAgICAgICBjaGVja3M6IFtcXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLmNoZWNrcyxcXG4gICAgICAgICAgICAgICAge1xcbiAgICAgICAgICAgICAgICAgICAga2luZDogXFxcInRyaW1cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBdXFxuICAgICAgICB9KTtcXG4gICAgZ2V0IGlzRW1haWwoKSB7XFxuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKT0+Y2gua2luZCA9PT0gXFxcImVtYWlsXFxcIik7XFxuICAgIH1cXG4gICAgZ2V0IGlzVVJMKCkge1xcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCk9PmNoLmtpbmQgPT09IFxcXCJ1cmxcXFwiKTtcXG4gICAgfVxcbiAgICBnZXQgaXNVVUlEKCkge1xcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCk9PmNoLmtpbmQgPT09IFxcXCJ1dWlkXFxcIik7XFxuICAgIH1cXG4gICAgZ2V0IGlzQ1VJRCgpIHtcXG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpPT5jaC5raW5kID09PSBcXFwiY3VpZFxcXCIpO1xcbiAgICB9XFxuICAgIGdldCBtaW5MZW5ndGgoKSB7XFxuICAgICAgICBsZXQgbWluID0gbnVsbDtcXG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcyl7XFxuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFxcXCJtaW5cXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pIG1pbiA9IGNoLnZhbHVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBtaW47XFxuICAgIH1cXG4gICAgZ2V0IG1heExlbmd0aCgpIHtcXG4gICAgICAgIGxldCBtYXggPSBudWxsO1xcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKXtcXG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXFxcIm1heFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heCkgbWF4ID0gY2gudmFsdWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG1heDtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcXG4gICAgICAgICAgICBjaGVja3M6IFtdLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3RyaW5nLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcXG4gICAgY29uc3QgdmFsRGVjQ291bnQgPSAodmFsLnRvU3RyaW5nKCkuc3BsaXQoXFxcIi5cXFwiKVsxXSB8fCBcXFwiXFxcIikubGVuZ3RoO1xcbiAgICBjb25zdCBzdGVwRGVjQ291bnQgPSAoc3RlcC50b1N0cmluZygpLnNwbGl0KFxcXCIuXFxcIilbMV0gfHwgXFxcIlxcXCIpLmxlbmd0aDtcXG4gICAgY29uc3QgZGVjQ291bnQgPSB2YWxEZWNDb3VudCA+IHN0ZXBEZWNDb3VudCA/IHZhbERlY0NvdW50IDogc3RlcERlY0NvdW50O1xcbiAgICBjb25zdCB2YWxJbnQgPSBwYXJzZUludCh2YWwudG9GaXhlZChkZWNDb3VudCkucmVwbGFjZShcXFwiLlxcXCIsIFxcXCJcXFwiKSk7XFxuICAgIGNvbnN0IHN0ZXBJbnQgPSBwYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXFxcIi5cXFwiLCBcXFwiXFxcIikpO1xcbiAgICByZXR1cm4gdmFsSW50ICUgc3RlcEludCAvIE1hdGgucG93KDEwLCBkZWNDb3VudCk7XFxufVxcbmNsYXNzIFpvZE51bWJlciBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcXG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bWJlcikge1xcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubnVtYmVyLFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBjdHgxID0gdW5kZWZpbmVkO1xcbiAgICAgICAgY29uc3Qgc3RhdHVzID0gbmV3IFBhcnNlU3RhdHVzKCk7XFxuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3Mpe1xcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcXFwiaW50XFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoIXV0aWwuaXNJbnRlZ2VyKGlucHV0LmRhdGEpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjdHgxID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eDEpO1xcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4MSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFxcXCJpbnRlZ2VyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZDogXFxcImZsb2F0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcXFwibWluXFxcIikge1xcbiAgICAgICAgICAgICAgICBjb25zdCB0b29TbWFsbCA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPCBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPD0gY2hlY2sudmFsdWU7XFxuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgxKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDEsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJudW1iZXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFxcXCJtYXhcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XFxuICAgICAgICAgICAgICAgIGlmICh0b29CaWcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGN0eDEgPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4MSk7XFxuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgxLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogY2hlY2sudmFsdWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcIm51bWJlclxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXFxcIm11bHRpcGxlT2ZcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmIChmbG9hdFNhZmVSZW1haW5kZXIoaW5wdXQuZGF0YSwgY2hlY2sudmFsdWUpICE9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBjdHgxID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eDEpO1xcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4MSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGVPZjogY2hlY2sudmFsdWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmRhdGFcXG4gICAgICAgIH07XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE51bWJlcih7XFxuICAgICAgICAgICAgY2hlY2tzOiBbXSxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcixcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbiAgICBndGUodmFsdWUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFxcXCJtaW5cXFwiLCB2YWx1ZSwgdHJ1ZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcXG4gICAgfVxcbiAgICBtaW4gPSB0aGlzLmd0ZTtcXG4gICAgZ3QodmFsdWUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFxcXCJtaW5cXFwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XFxuICAgIH1cXG4gICAgbHRlKHZhbHVlLCBtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcXFwibWF4XFxcIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XFxuICAgIH1cXG4gICAgbWF4ID0gdGhpcy5sdGU7XFxuICAgIGx0KHZhbHVlLCBtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcXFwibWF4XFxcIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xcbiAgICB9XFxuICAgIHNldExpbWl0KGtpbmQsIHZhbHVlLCBpbmNsdXNpdmUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgY2hlY2tzOiBbXFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICAgIGtpbmQsXFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZSxcXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKVxcbiAgICAgICAgICAgICAgICB9LCBcXG4gICAgICAgICAgICBdXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBfYWRkQ2hlY2soY2hlY2spIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgY2hlY2tzOiBbXFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXFxuICAgICAgICAgICAgICAgIGNoZWNrXFxuICAgICAgICAgICAgXVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgaW50KG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcImludFxcXCIsXFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xcbiAgICAgICAgICAgIGtpbmQ6IFxcXCJtaW5cXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiAwLFxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBuZWdhdGl2ZShtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xcbiAgICAgICAgICAgIGtpbmQ6IFxcXCJtYXhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiAwLFxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBub25wb3NpdGl2ZShtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xcbiAgICAgICAgICAgIGtpbmQ6IFxcXCJtYXhcXFwiLFxcbiAgICAgICAgICAgIHZhbHVlOiAwLFxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcIm1pblxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IDAsXFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgbXVsdGlwbGVPZih2YWx1ZSwgbWVzc2FnZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcXG4gICAgICAgICAgICBraW5kOiBcXFwibXVsdGlwbGVPZlxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc3RlcCA9IHRoaXMubXVsdGlwbGVPZjtcXG4gICAgZ2V0IG1pblZhbHVlKCkge1xcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XFxuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3Mpe1xcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcXFwibWluXFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKSBtaW4gPSBjaC52YWx1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbWluO1xcbiAgICB9XFxuICAgIGdldCBtYXhWYWx1ZSgpIHtcXG4gICAgICAgIGxldCBtYXggPSBudWxsO1xcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKXtcXG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXFxcIm1heFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heCkgbWF4ID0gY2gudmFsdWU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIG1heDtcXG4gICAgfVxcbiAgICBnZXQgaXNJbnQoKSB7XFxuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKT0+Y2gua2luZCA9PT0gXFxcImludFxcXCIpO1xcbiAgICB9XFxufVxcbmNsYXNzIFpvZEJpZ0ludCBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcXG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmJpZ2ludCkge1xcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYmlnaW50LFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kQmlnSW50KHtcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJpZ0ludCxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2RCb29sZWFuIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYm9vbGVhbikge1xcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYm9vbGVhbixcXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZEJvb2xlYW4oe1xcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQm9vbGVhbixcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2REYXRlIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuZGF0ZSkge1xcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZGF0ZSxcXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaXNOYU4oaW5wdXQuZGF0YS5nZXRUaW1lKCkpKSB7XFxuICAgICAgICAgICAgY29uc3QgY3R4MSA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgxLCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xcbiAgICAgICAgbGV0IGN0eDIgPSB1bmRlZmluZWQ7XFxuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3Mpe1xcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcXFwibWluXFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5nZXRUaW1lKCkgPCBjaGVjay52YWx1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgY3R4MiA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgyKTtcXG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eDIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJkYXRlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXFxcIm1heFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEuZ2V0VGltZSgpID4gY2hlY2sudmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGN0eDIgPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4Mik7XFxuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgyLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogY2hlY2sudmFsdWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcImRhdGVcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihjaGVjayk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcXG4gICAgICAgICAgICB2YWx1ZTogbmV3IERhdGUoaW5wdXQuZGF0YS5nZXRUaW1lKCkpXFxuICAgICAgICB9O1xcbiAgICB9XFxuICAgIF9hZGRDaGVjayhjaGVjaykge1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2REYXRlKHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgY2hlY2tzOiBbXFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXFxuICAgICAgICAgICAgICAgIGNoZWNrXFxuICAgICAgICAgICAgXVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgbWluKG1pbkRhdGUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcIm1pblxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IG1pbkRhdGUuZ2V0VGltZSgpLFxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgbWF4KG1heERhdGUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XFxuICAgICAgICAgICAga2luZDogXFxcIm1heFxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IG1heERhdGUuZ2V0VGltZSgpLFxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZ2V0IG1pbkRhdGUoKSB7XFxuICAgICAgICBsZXQgbWluID0gbnVsbDtcXG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcyl7XFxuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFxcXCJtaW5cXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pIG1pbiA9IGNoLnZhbHVlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBtaW4gIT0gbnVsbCA/IG5ldyBEYXRlKG1pbikgOiBudWxsO1xcbiAgICB9XFxuICAgIGdldCBtYXhEYXRlKCkge1xcbiAgICAgICAgbGV0IG1heCA9IG51bGw7XFxuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3Mpe1xcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcXFwibWF4XFxcIikge1xcbiAgICAgICAgICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KSBtYXggPSBjaC52YWx1ZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbWF4ICE9IG51bGwgPyBuZXcgRGF0ZShtYXgpIDogbnVsbDtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XFxuICAgICAgICAgICAgY2hlY2tzOiBbXSxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERhdGUsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kVW5kZWZpbmVkIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS51bmRlZmluZWQsXFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xcbiAgICB9XFxuICAgIHBhcmFtcztcXG4gICAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZFVuZGVmaW5lZCh7XFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmRlZmluZWQsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kTnVsbCBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcXG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bGwpIHtcXG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XFxuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm51bGwsXFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2ROdWxsKHtcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGwsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kQW55IGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9hbnkgPSB0cnVlO1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kQW55KHtcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFueSxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2RVbmtub3duIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF91bmtub3duID0gdHJ1ZTtcXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZFVua25vd24oe1xcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5rbm93bixcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2ROZXZlciBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmV2ZXIsXFxuICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2ROZXZlcih7XFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROZXZlcixcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2RWb2lkIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS52b2lkLFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kVm9pZCh7XFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RWb2lkLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZEFycmF5IGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgeyBjdHggLCBzdGF0dXMgIH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xcbiAgICAgICAgY29uc3QgZGVmID0gdGhpcy5fZGVmO1xcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XFxuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmFycmF5LFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChkZWYubWluTGVuZ3RoICE9PSBudWxsKSB7XFxuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA8IGRlZi5taW5MZW5ndGgudmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogZGVmLm1pbkxlbmd0aC52YWx1ZSxcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJhcnJheVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWYubWluTGVuZ3RoLm1lc3NhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChkZWYubWF4TGVuZ3RoICE9PSBudWxsKSB7XFxuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA+IGRlZi5tYXhMZW5ndGgudmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhMZW5ndGgudmFsdWUsXFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiYXJyYXlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmLm1heExlbmd0aC5tZXNzYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChjdHguZGF0YS5tYXAoKGl0ZW0sIGkpPT57XFxuICAgICAgICAgICAgICAgIHJldHVybiBkZWYudHlwZS5fcGFyc2VBc3luYyhuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpKTtcXG4gICAgICAgICAgICB9KSkudGhlbigocmVzdWx0KT0+e1xcbiAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCByZXN1bHQgPSBjdHguZGF0YS5tYXAoKGl0ZW0sIGkpPT57XFxuICAgICAgICAgICAgcmV0dXJuIGRlZi50eXBlLl9wYXJzZVN5bmMobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGl0ZW0sIGN0eC5wYXRoLCBpKSk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcXG4gICAgfVxcbiAgICBnZXQgZWxlbWVudCgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZTtcXG4gICAgfVxcbiAgICBtaW4obWluTGVuZ3RoLCBtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgbWluTGVuZ3RoOiB7XFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtaW5MZW5ndGgsXFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcXG4gICAgICAgICAgICBtYXhMZW5ndGg6IHtcXG4gICAgICAgICAgICAgICAgdmFsdWU6IG1heExlbmd0aCxcXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgbGVuZ3RoKGxlbiwgbWVzc2FnZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKGxlbiwgbWVzc2FnZSkubWF4KGxlbiwgbWVzc2FnZSk7XFxuICAgIH1cXG4gICAgbm9uZW1wdHkobWVzc2FnZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKDEsIG1lc3NhZ2UpO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAoc2NoZW1hLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcXG4gICAgICAgICAgICB0eXBlOiBzY2hlbWEsXFxuICAgICAgICAgICAgbWluTGVuZ3RoOiBudWxsLFxcbiAgICAgICAgICAgIG1heExlbmd0aDogbnVsbCxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5LFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbnZhciBvYmplY3RVdGlsO1xcbihmdW5jdGlvbihvYmplY3RVdGlsKSB7XFxuICAgIG9iamVjdFV0aWwubWVyZ2VTaGFwZXMgPSAoZmlyc3QsIHNlY29uZCk9PntcXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgLi4uZmlyc3QsXFxuICAgICAgICAgICAgLi4uc2Vjb25kXFxuICAgICAgICB9O1xcbiAgICB9O1xcbn0pKG9iamVjdFV0aWwgfHwgKG9iamVjdFV0aWwgPSB7fSkpO1xcbmNvbnN0IEF1Z21lbnRGYWN0b3J5ID0gKGRlZik9PihhdWdtZW50YXRpb24pPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XFxuICAgICAgICAgICAgLi4uZGVmLFxcbiAgICAgICAgICAgIHNoYXBlOiAoKT0+KHtcXG4gICAgICAgICAgICAgICAgICAgIC4uLmRlZi5zaGFwZSgpLFxcbiAgICAgICAgICAgICAgICAgICAgLi4uYXVnbWVudGF0aW9uXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG5mdW5jdGlvbiBkZWVwUGFydGlhbGlmeShzY2hlbWEpIHtcXG4gICAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9iamVjdCkge1xcbiAgICAgICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcXG4gICAgICAgIGZvcihjb25zdCBrZXkgaW4gc2NoZW1hLnNoYXBlKXtcXG4gICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHNjaGVtYS5zaGFwZVtrZXldO1xcbiAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSBab2RPcHRpb25hbC5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoZmllbGRTY2hlbWEpKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICAuLi5zY2hlbWEuX2RlZixcXG4gICAgICAgICAgICBzaGFwZTogKCk9Pm5ld1NoYXBlXFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RBcnJheSkge1xcbiAgICAgICAgcmV0dXJuIFpvZEFycmF5LmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEuZWxlbWVudCkpO1xcbiAgICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9wdGlvbmFsKSB7XFxuICAgICAgICByZXR1cm4gWm9kT3B0aW9uYWwuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xcbiAgICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE51bGxhYmxlKSB7XFxuICAgICAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xcbiAgICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZFR1cGxlKSB7XFxuICAgICAgICByZXR1cm4gWm9kVHVwbGUuY3JlYXRlKHNjaGVtYS5pdGVtcy5tYXAoKGl0ZW0pPT5kZWVwUGFydGlhbGlmeShpdGVtKSkpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcXG4gICAgfVxcbn1cXG5jbGFzcyBab2RPYmplY3QgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgX3NoYXBlO1xcbiAgICBfdW5rbm93bktleXM7XFxuICAgIF9jYXRjaGFsbDtcXG4gICAgX2NhY2hlZCA9IG51bGw7XFxuICAgIF9nZXRDYWNoZWQoKSB7XFxuICAgICAgICBpZiAodGhpcy5fY2FjaGVkICE9PSBudWxsKSByZXR1cm4gdGhpcy5fY2FjaGVkO1xcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB0aGlzLl9kZWYuc2hhcGUoKTtcXG4gICAgICAgIGNvbnN0IGtleXMgPSB1dGlsLm9iamVjdEtleXMoc2hhcGUpO1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZCA9IHtcXG4gICAgICAgICAgICBzaGFwZSxcXG4gICAgICAgICAgICBrZXlzXFxuICAgICAgICB9O1xcbiAgICB9XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XFxuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5vYmplY3QsXFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgeyBzdGF0dXMgLCBjdHg6IGN0eDEgIH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xcbiAgICAgICAgY29uc3QgeyBzaGFwZSAsIGtleXM6IHNoYXBlS2V5cyAgfSA9IHRoaXMuX2dldENhY2hlZCgpO1xcbiAgICAgICAgY29uc3QgZXh0cmFLZXlzID0gW107XFxuICAgICAgICBmb3IoY29uc3Qga2V5IGluIGN0eDEuZGF0YSl7XFxuICAgICAgICAgICAgaWYgKCFzaGFwZUtleXMuaW5jbHVkZXMoa2V5KSkge1xcbiAgICAgICAgICAgICAgICBleHRyYUtleXMucHVzaChrZXkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHBhaXJzID0gW107XFxuICAgICAgICBmb3IgKGNvbnN0IGtleTEgb2Ygc2hhcGVLZXlzKXtcXG4gICAgICAgICAgICBjb25zdCBrZXlWYWxpZGF0b3IgPSBzaGFwZVtrZXkxXTtcXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGN0eDEuZGF0YVtrZXkxXTtcXG4gICAgICAgICAgICBwYWlycy5wdXNoKHtcXG4gICAgICAgICAgICAgICAga2V5OiB7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IFxcXCJ2YWxpZFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToga2V5MVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICB2YWx1ZToga2V5VmFsaWRhdG9yLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eDEsIHZhbHVlLCBjdHgxLnBhdGgsIGtleTEpKSxcXG4gICAgICAgICAgICAgICAgYWx3YXlzU2V0OiBrZXkxIGluIGN0eDEuZGF0YVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyKSB7XFxuICAgICAgICAgICAgY29uc3QgdW5rbm93bktleXMgPSB0aGlzLl9kZWYudW5rbm93bktleXM7XFxuICAgICAgICAgICAgaWYgKHVua25vd25LZXlzID09PSBcXFwicGFzc3Rocm91Z2hcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5MiBvZiBleHRyYUtleXMpe1xcbiAgICAgICAgICAgICAgICAgICAgcGFpcnMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogXFxcInZhbGlkXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGtleTJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogXFxcInZhbGlkXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGN0eDEuZGF0YVtrZXkyXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmICh1bmtub3duS2V5cyA9PT0gXFxcInN0cmljdFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKGV4dHJhS2V5cy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgxLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXM6IGV4dHJhS2V5c1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodW5rbm93bktleXMgPT09IFxcXCJzdHJpcFxcXCIpIHt9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIFpvZE9iamVjdCBlcnJvcjogaW52YWxpZCB1bmtub3duS2V5cyB2YWx1ZS5gKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGNvbnN0IGNhdGNoYWxsID0gdGhpcy5fZGVmLmNhdGNoYWxsO1xcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5MyBvZiBleHRyYUtleXMpe1xcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTEgPSBjdHgxLmRhdGFba2V5M107XFxuICAgICAgICAgICAgICAgIHBhaXJzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAga2V5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBcXFwidmFsaWRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBrZXkzXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNhdGNoYWxsLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eDEsIHZhbHVlMSwgY3R4MS5wYXRoLCBrZXkzKSksXFxuICAgICAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleTMgaW4gY3R4MS5kYXRhXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChjdHgxLmNvbW1vbi5hc3luYykge1xcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jICgpPT57XFxuICAgICAgICAgICAgICAgIGNvbnN0IHN5bmNQYWlycyA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpe1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XFxuICAgICAgICAgICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhd2FpdCBwYWlyLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5c1NldDogcGFpci5hbHdheXNTZXRcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBzeW5jUGFpcnM7XFxuICAgICAgICAgICAgfSkudGhlbigoc3luY1BhaXJzKT0+e1xcbiAgICAgICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgc3luY1BhaXJzKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBnZXQgc2hhcGUoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCk7XFxuICAgIH1cXG4gICAgc3RyaWN0KG1lc3NhZ2UpIHtcXG4gICAgICAgIGVycm9yVXRpbC5lcnJUb09iajtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFxcXCJzdHJpY3RcXFwiLFxcbiAgICAgICAgICAgIC4uLm1lc3NhZ2UgIT09IHVuZGVmaW5lZCA/IHtcXG4gICAgICAgICAgICAgICAgZXJyb3JNYXA6IChpc3N1ZSwgY3R4KT0+e1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEVycm9yID0gdGhpcy5fZGVmLmVycm9yTWFwPy4oaXNzdWUsIGN0eCkubWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFxcXCJ1bnJlY29nbml6ZWRfa2V5c1xcXCIpIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLm1lc3NhZ2UgPz8gZGVmYXVsdEVycm9yXFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWZhdWx0RXJyb3JcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IDoge31cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHN0cmlwKCkge1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcXG4gICAgICAgICAgICB1bmtub3duS2V5czogXFxcInN0cmlwXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcGFzc3Rocm91Z2goKSB7XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XFxuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxcbiAgICAgICAgICAgIHVua25vd25LZXlzOiBcXFwicGFzc3Rocm91Z2hcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBub25zdHJpY3QgPSB0aGlzLnBhc3N0aHJvdWdoO1xcbiAgICBhdWdtZW50ID0gQXVnbWVudEZhY3RvcnkodGhpcy5fZGVmKTtcXG4gICAgZXh0ZW5kID0gQXVnbWVudEZhY3RvcnkodGhpcy5fZGVmKTtcXG4gICAgc2V0S2V5KGtleSwgc2NoZW1hKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5hdWdtZW50KHtcXG4gICAgICAgICAgICBba2V5XTogc2NoZW1hXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBtZXJnZShtZXJnaW5nKSB7XFxuICAgICAgICBjb25zdCBtZXJnZWQgPSBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICB1bmtub3duS2V5czogbWVyZ2luZy5fZGVmLnVua25vd25LZXlzLFxcbiAgICAgICAgICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXFxuICAgICAgICAgICAgc2hhcGU6ICgpPT5vYmplY3RVdGlsLm1lcmdlU2hhcGVzKHRoaXMuX2RlZi5zaGFwZSgpLCBtZXJnaW5nLl9kZWYuc2hhcGUoKSksXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3RcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIG1lcmdlZDtcXG4gICAgfVxcbiAgICBjYXRjaGFsbChpbmRleCkge1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcXG4gICAgICAgICAgICBjYXRjaGFsbDogaW5kZXhcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHBpY2sobWFzaykge1xcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB7fTtcXG4gICAgICAgIHV0aWwub2JqZWN0S2V5cyhtYXNrKS5tYXAoKGtleSk9PntcXG4gICAgICAgICAgICBpZiAodGhpcy5zaGFwZVtrZXldKSBzaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldO1xcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XFxuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxcbiAgICAgICAgICAgIHNoYXBlOiAoKT0+c2hhcGVcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIG9taXQobWFzaykge1xcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB7fTtcXG4gICAgICAgIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKS5tYXAoKGtleSk9PntcXG4gICAgICAgICAgICBpZiAodXRpbC5vYmplY3RLZXlzKG1hc2spLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgc2hhcGU6ICgpPT5zaGFwZVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZGVlcFBhcnRpYWwoKSB7XFxuICAgICAgICByZXR1cm4gZGVlcFBhcnRpYWxpZnkodGhpcyk7XFxuICAgIH1cXG4gICAgcGFydGlhbChtYXNrKSB7XFxuICAgICAgICBjb25zdCBuZXdTaGFwZSA9IHt9O1xcbiAgICAgICAgaWYgKG1hc2spIHtcXG4gICAgICAgICAgICB1dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkubWFwKChrZXkpPT57XFxuICAgICAgICAgICAgICAgIGlmICh1dGlsLm9iamVjdEtleXMobWFzaykuaW5kZXhPZihrZXkpID09PSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgbmV3U2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV0ub3B0aW9uYWwoKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxcbiAgICAgICAgICAgICAgICBzaGFwZTogKCk9Pm5ld1NoYXBlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGZvcihjb25zdCBrZXkgaW4gdGhpcy5zaGFwZSl7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gdGhpcy5zaGFwZVtrZXldO1xcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWEub3B0aW9uYWwoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XFxuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxcbiAgICAgICAgICAgIHNoYXBlOiAoKT0+bmV3U2hhcGVcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHJlcXVpcmVkKCkge1xcbiAgICAgICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcXG4gICAgICAgIGZvcihjb25zdCBrZXkgaW4gdGhpcy5zaGFwZSl7XFxuICAgICAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSB0aGlzLnNoYXBlW2tleV07XFxuICAgICAgICAgICAgbGV0IG5ld0ZpZWxkID0gZmllbGRTY2hlbWE7XFxuICAgICAgICAgICAgd2hpbGUobmV3RmllbGQgaW5zdGFuY2VvZiBab2RPcHRpb25hbCl7XFxuICAgICAgICAgICAgICAgIG5ld0ZpZWxkID0gbmV3RmllbGQuX2RlZi5pbm5lclR5cGU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSBuZXdGaWVsZDtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgc2hhcGU6ICgpPT5uZXdTaGFwZVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAga2V5b2YoKSB7XFxuICAgICAgICByZXR1cm4gY3JlYXRlWm9kRW51bSh1dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAoc2hhcGUsIHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcXG4gICAgICAgICAgICBzaGFwZTogKCk9PnNoYXBlLFxcbiAgICAgICAgICAgIHVua25vd25LZXlzOiBcXFwic3RyaXBcXFwiLFxcbiAgICAgICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbiAgICBzdGF0aWMgc3RyaWN0Q3JlYXRlID0gKHNoYXBlLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XFxuICAgICAgICAgICAgc2hhcGU6ICgpPT5zaGFwZSxcXG4gICAgICAgICAgICB1bmtub3duS2V5czogXFxcInN0cmljdFxcXCIsXFxuICAgICAgICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxuICAgIHN0YXRpYyBsYXp5Y3JlYXRlID0gKHNoYXBlLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XFxuICAgICAgICAgICAgc2hhcGUsXFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFxcXCJzdHJpcFxcXCIsXFxuICAgICAgICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZFVuaW9uIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgeyBjdHggIH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2RlZi5vcHRpb25zO1xcbiAgICAgICAgZnVuY3Rpb24gaGFuZGxlUmVzdWx0cyhyZXN1bHRzKSB7XFxuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cyl7XFxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0LnN0YXR1cyA9PT0gXFxcInZhbGlkXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQxIG9mIHJlc3VsdHMpe1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0MS5yZXN1bHQuc3RhdHVzID09PSBcXFwiZGlydHlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKC4uLnJlc3VsdDEuY3R4LmNvbW1vbi5pc3N1ZXMpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDEucmVzdWx0O1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gcmVzdWx0cy5tYXAoKHJlc3VsdCk9Pm5ldyBab2RFcnJvcihyZXN1bHQuY3R4LmNvbW1vbi5pc3N1ZXMpKTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sXFxuICAgICAgICAgICAgICAgIHVuaW9uRXJyb3JzXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcHRpb25zLm1hcChhc3luYyAob3B0aW9uKT0+e1xcbiAgICAgICAgICAgICAgICBjb25zdCBjaGlsZEN0eCA9IHtcXG4gICAgICAgICAgICAgICAgICAgIC4uLmN0eCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmN0eC5jb21tb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXVxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbFxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBhd2FpdCBvcHRpb24uX3BhcnNlQXN5bmMoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY2hpbGRDdHhcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY3R4OiBjaGlsZEN0eFxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0pKS50aGVuKGhhbmRsZVJlc3VsdHMpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsZXQgZGlydHkgPSB1bmRlZmluZWQ7XFxuICAgICAgICAgICAgY29uc3QgaXNzdWVzID0gW107XFxuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucyl7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3R4ID0ge1xcbiAgICAgICAgICAgICAgICAgICAgLi4uY3R4LFxcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fcGFyc2VTeW5jKHtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGNoaWxkQ3R4XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXFxcInZhbGlkXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuc3RhdHVzID09PSBcXFwiZGlydHlcXFwiICYmICFkaXJ0eSkge1xcbiAgICAgICAgICAgICAgICAgICAgZGlydHkgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eDogY2hpbGRDdHhcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkQ3R4LmNvbW1vbi5pc3N1ZXMubGVuZ3RoKSB7XFxuICAgICAgICAgICAgICAgICAgICBpc3N1ZXMucHVzaChjaGlsZEN0eC5jb21tb24uaXNzdWVzKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoZGlydHkpIHtcXG4gICAgICAgICAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5kaXJ0eS5jdHguY29tbW9uLmlzc3Vlcyk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBkaXJ0eS5yZXN1bHQ7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gaXNzdWVzLm1hcCgoaXNzdWVzKT0+bmV3IFpvZEVycm9yKGlzc3VlcykpO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbixcXG4gICAgICAgICAgICAgICAgdW5pb25FcnJvcnNcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBnZXQgb3B0aW9ucygpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9ucztcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHR5cGVzLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZFVuaW9uKHtcXG4gICAgICAgICAgICBvcHRpb25zOiB0eXBlcyxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHsgY3R4ICB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcXG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSB0aGlzLmRpc2NyaW1pbmF0b3I7XFxuICAgICAgICBjb25zdCBkaXNjcmltaW5hdG9yVmFsdWUgPSBjdHguZGF0YVtkaXNjcmltaW5hdG9yXTtcXG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMub3B0aW9ucy5nZXQoZGlzY3JpbWluYXRvclZhbHVlKTtcXG4gICAgICAgIGlmICghb3B0aW9uKSB7XFxuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3IsXFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHRoaXMudmFsaWREaXNjcmltaW5hdG9yVmFsdWVzLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBbXFxuICAgICAgICAgICAgICAgICAgICBkaXNjcmltaW5hdG9yXFxuICAgICAgICAgICAgICAgIF1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XFxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VBc3luYyh7XFxuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VTeW5jKHtcXG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGdldCBkaXNjcmltaW5hdG9yKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kaXNjcmltaW5hdG9yO1xcbiAgICB9XFxuICAgIGdldCB2YWxpZERpc2NyaW1pbmF0b3JWYWx1ZXMoKSB7XFxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm9wdGlvbnMua2V5cygpKTtcXG4gICAgfVxcbiAgICBnZXQgb3B0aW9ucygpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9ucztcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlKGRpc2NyaW1pbmF0b3IsIHR5cGVzLCBwYXJhbXMpIHtcXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgTWFwKCk7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHR5cGVzLmZvckVhY2goKHR5cGUpPT57XFxuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZSA9IHR5cGUuc2hhcGVbZGlzY3JpbWluYXRvcl0udmFsdWU7XFxuICAgICAgICAgICAgICAgIG9wdGlvbnMuc2V0KGRpc2NyaW1pbmF0b3JWYWx1ZSwgdHlwZSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJUaGUgZGlzY3JpbWluYXRvciB2YWx1ZSBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHRoZSBwcm92aWRlZCBzY2hlbWFzXFxcIik7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAob3B0aW9ucy5zaXplICE9PSB0eXBlcy5sZW5ndGgpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIlNvbWUgb2YgdGhlIGRpc2NyaW1pbmF0b3IgdmFsdWVzIGFyZSBub3QgdW5pcXVlXFxcIik7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REaXNjcmltaW5hdGVkVW5pb24sXFxuICAgICAgICAgICAgZGlzY3JpbWluYXRvcixcXG4gICAgICAgICAgICBvcHRpb25zLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xcbiAgICBjb25zdCBhVHlwZSA9IGdldFBhcnNlZFR5cGUoYSk7XFxuICAgIGNvbnN0IGJUeXBlID0gZ2V0UGFyc2VkVHlwZShiKTtcXG4gICAgaWYgKGEgPT09IGIpIHtcXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgdmFsaWQ6IHRydWUsXFxuICAgICAgICAgICAgZGF0YTogYVxcbiAgICAgICAgfTtcXG4gICAgfSBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5vYmplY3QgJiYgYlR5cGUgPT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XFxuICAgICAgICBjb25zdCBiS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhiKTtcXG4gICAgICAgIGNvbnN0IHNoYXJlZEtleXMgPSB1dGlsLm9iamVjdEtleXMoYSkuZmlsdGVyKChrZXkpPT5iS2V5cy5pbmRleE9mKGtleSkgIT09IC0xKTtcXG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHtcXG4gICAgICAgICAgICAuLi5hLFxcbiAgICAgICAgICAgIC4uLmJcXG4gICAgICAgIH07XFxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKXtcXG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcXG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbmV3T2JqW2tleV0gPSBzaGFyZWRWYWx1ZS5kYXRhO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcXG4gICAgICAgICAgICBkYXRhOiBuZXdPYmpcXG4gICAgICAgIH07XFxuICAgIH0gZWxzZSBpZiAoYVR5cGUgPT09IFpvZFBhcnNlZFR5cGUuYXJyYXkgJiYgYlR5cGUgPT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSBbXTtcXG4gICAgICAgIGZvcihsZXQgaW5kZXggPSAwOyBpbmRleCA8IGEubGVuZ3RoOyBpbmRleCsrKXtcXG4gICAgICAgICAgICBjb25zdCBpdGVtQSA9IGFbaW5kZXhdO1xcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CID0gYltpbmRleF07XFxuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUxID0gbWVyZ2VWYWx1ZXMoaXRlbUEsIGl0ZW1CKTtcXG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlMS52YWxpZCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIG5ld0FycmF5LnB1c2goc2hhcmVkVmFsdWUxLmRhdGEpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcXG4gICAgICAgICAgICBkYXRhOiBuZXdBcnJheVxcbiAgICAgICAgfTtcXG4gICAgfSBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmRhdGUgJiYgK2EgPT09ICtiKSB7XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxcbiAgICAgICAgICAgIGRhdGE6IGFcXG4gICAgICAgIH07XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxcbiAgICAgICAgfTtcXG4gICAgfVxcbn1cXG5jbGFzcyBab2RJbnRlcnNlY3Rpb24gZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBjb25zdCB7IHN0YXR1cyAsIGN0eCAgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XFxuICAgICAgICBjb25zdCBoYW5kbGVQYXJzZWQgPSAocGFyc2VkTGVmdCwgcGFyc2VkUmlnaHQpPT57XFxuICAgICAgICAgICAgaWYgKGlzQWJvcnRlZChwYXJzZWRMZWZ0KSB8fCBpc0Fib3J0ZWQocGFyc2VkUmlnaHQpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhwYXJzZWRMZWZ0LnZhbHVlLCBwYXJzZWRSaWdodC52YWx1ZSk7XFxuICAgICAgICAgICAgaWYgKCFtZXJnZWQudmFsaWQpIHtcXG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXNcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoaXNEaXJ0eShwYXJzZWRMZWZ0KSB8fCBpc0RpcnR5KHBhcnNlZFJpZ2h0KSkge1xcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtZXJnZWQuZGF0YVxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIHRoaXMuX2RlZi5yaWdodC5fcGFyc2VBc3luYyh7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICAgICAgfSksIFxcbiAgICAgICAgICAgIF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pPT5oYW5kbGVQYXJzZWQobGVmdCwgcmlnaHQpKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVBhcnNlZCh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtcXG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eFxcbiAgICAgICAgICAgIH0pLCB0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7XFxuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICB9KSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9IChsZWZ0LCByaWdodCwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RJbnRlcnNlY3Rpb24oe1xcbiAgICAgICAgICAgIGxlZnQ6IGxlZnQsXFxuICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0LFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZFR1cGxlIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgeyBzdGF0dXMgLCBjdHggIH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XFxuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmFycmF5LFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPCB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKSB7XFxuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXFxuICAgICAgICAgICAgICAgIG1pbmltdW06IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsXFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgdHlwZTogXFxcImFycmF5XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgcmVzdCA9IHRoaXMuX2RlZi5yZXN0O1xcbiAgICAgICAgaWYgKCFyZXN0ICYmIGN0eC5kYXRhLmxlbmd0aCA+IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgpIHtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXFxuICAgICAgICAgICAgICAgIG1heGltdW06IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsXFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgdHlwZTogXFxcImFycmF5XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgaXRlbXMgPSBjdHguZGF0YS5tYXAoKGl0ZW0sIGl0ZW1JbmRleCk9PntcXG4gICAgICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLl9kZWYuaXRlbXNbaXRlbUluZGV4XSB8fCB0aGlzLl9kZWYucmVzdDtcXG4gICAgICAgICAgICBpZiAoIXNjaGVtYSkgcmV0dXJuIG51bGw7XFxuICAgICAgICAgICAgcmV0dXJuIHNjaGVtYS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGl0ZW0sIGN0eC5wYXRoLCBpdGVtSW5kZXgpKTtcXG4gICAgICAgIH0pLmZpbHRlcigoeCk9PiEheCk7XFxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChpdGVtcykudGhlbigocmVzdWx0cyk9PntcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHRzKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlQXJyYXkoc3RhdHVzLCBpdGVtcyk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgZ2V0IGl0ZW1zKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pdGVtcztcXG4gICAgfVxcbiAgICByZXN0KHJlc3QpIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcXG4gICAgICAgICAgICByZXN0XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHNjaGVtYXMsIHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xcbiAgICAgICAgICAgIGl0ZW1zOiBzY2hlbWFzLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVHVwbGUsXFxuICAgICAgICAgICAgcmVzdDogbnVsbCxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2RSZWNvcmQgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgZ2V0IGtleVNjaGVtYSgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYua2V5VHlwZTtcXG4gICAgfVxcbiAgICBnZXQgdmFsdWVTY2hlbWEoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZTtcXG4gICAgfVxcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHsgc3RhdHVzICwgY3R4ICB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcXG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHBhaXJzID0gW107XFxuICAgICAgICBjb25zdCBrZXlUeXBlID0gdGhpcy5fZGVmLmtleVR5cGU7XFxuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0aGlzLl9kZWYudmFsdWVUeXBlO1xcbiAgICAgICAgZm9yKGNvbnN0IGtleSBpbiBjdHguZGF0YSl7XFxuICAgICAgICAgICAgcGFpcnMucHVzaCh7XFxuICAgICAgICAgICAgICAgIGtleToga2V5VHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGtleSwgY3R4LnBhdGgsIGtleSkpLFxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgY3R4LmRhdGFba2V5XSwgY3R4LnBhdGgsIGtleSkpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdEFzeW5jKHN0YXR1cywgcGFpcnMpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgcGFpcnMpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGdldCBlbGVtZW50KCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZShmaXJzdCwgc2Vjb25kLCB0aGlyZCkge1xcbiAgICAgICAgaWYgKHNlY29uZCBpbnN0YW5jZW9mIFpvZFR5cGUpIHtcXG4gICAgICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XFxuICAgICAgICAgICAgICAgIGtleVR5cGU6IGZpcnN0LFxcbiAgICAgICAgICAgICAgICB2YWx1ZVR5cGU6IHNlY29uZCxcXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXFxuICAgICAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcmQpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XFxuICAgICAgICAgICAga2V5VHlwZTogWm9kU3RyaW5nLmNyZWF0ZSgpLFxcbiAgICAgICAgICAgIHZhbHVlVHlwZTogZmlyc3QsXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhzZWNvbmQpXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5jbGFzcyBab2RNYXAgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBjb25zdCB7IHN0YXR1cyAsIGN0eCAgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XFxuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubWFwKSB7XFxuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm1hcCxcXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCBrZXlUeXBlID0gdGhpcy5fZGVmLmtleVR5cGU7XFxuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0aGlzLl9kZWYudmFsdWVUeXBlO1xcbiAgICAgICAgY29uc3QgcGFpcnMgPSBbXFxuICAgICAgICAgICAgLi4uY3R4LmRhdGEuZW50cmllcygpXFxuICAgICAgICBdLm1hcCgoW2tleSwgdmFsdWVdLCBpbmRleCk9PntcXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBrZXk6IGtleVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBrZXksIGN0eC5wYXRoLCBbXFxuICAgICAgICAgICAgICAgICAgICBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJrZXlcXFwiXFxuICAgICAgICAgICAgICAgIF0pKSxcXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlVHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIHZhbHVlLCBjdHgucGF0aCwgW1xcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICBcXFwidmFsdWVcXFwiXFxuICAgICAgICAgICAgICAgIF0pKVxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XFxuICAgICAgICAgICAgY29uc3QgZmluYWxNYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgKCk9PntcXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKXtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHBhaXIua2V5O1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBwYWlyLnZhbHVlO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFxcXCJhYm9ydGVkXFxcIiB8fCB2YWx1ZS5zdGF0dXMgPT09IFxcXCJhYm9ydGVkXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFxcXCJkaXJ0eVxcXCIgfHwgdmFsdWUuc3RhdHVzID09PSBcXFwiZGlydHlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBmaW5hbE1hcC5zZXQoa2V5LnZhbHVlLCB2YWx1ZS52YWx1ZSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZpbmFsTWFwXFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsTWFwMSA9IG5ldyBNYXAoKTtcXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpe1xcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBwYWlyLmtleTtcXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYWlyLnZhbHVlO1xcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXFxcImFib3J0ZWRcXFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXFxcImFib3J0ZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXFxcImRpcnR5XFxcIiB8fCB2YWx1ZS5zdGF0dXMgPT09IFxcXCJkaXJ0eVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGZpbmFsTWFwMS5zZXQoa2V5LnZhbHVlLCB2YWx1ZS52YWx1ZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZmluYWxNYXAxXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RNYXAoe1xcbiAgICAgICAgICAgIHZhbHVlVHlwZSxcXG4gICAgICAgICAgICBrZXlUeXBlLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTWFwLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZFNldCBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHsgc3RhdHVzICwgY3R4ICB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcXG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zZXQpIHtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuc2V0LFxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGRlZiA9IHRoaXMuX2RlZjtcXG4gICAgICAgIGlmIChkZWYubWluU2l6ZSAhPT0gbnVsbCkge1xcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5zaXplIDwgZGVmLm1pblNpemUudmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogZGVmLm1pblNpemUudmFsdWUsXFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwic2V0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5TaXplLm1lc3NhZ2VcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChkZWYubWF4U2l6ZSAhPT0gbnVsbCkge1xcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5zaXplID4gZGVmLm1heFNpemUudmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhTaXplLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcInNldFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4U2l6ZS5tZXNzYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0aGlzLl9kZWYudmFsdWVUeXBlO1xcbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemVTZXQoZWxlbWVudHMpIHtcXG4gICAgICAgICAgICBjb25zdCBwYXJzZWRTZXQgPSBuZXcgU2V0KCk7XFxuICAgICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKXtcXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuc3RhdHVzID09PSBcXFwiYWJvcnRlZFxcXCIpIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT09IFxcXCJkaXJ0eVxcXCIpIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICBwYXJzZWRTZXQuYWRkKGVsZW1lbnQudmFsdWUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcXG4gICAgICAgICAgICAgICAgdmFsdWU6IHBhcnNlZFNldFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtcXG4gICAgICAgICAgICAuLi5jdHguZGF0YS52YWx1ZXMoKVxcbiAgICAgICAgXS5tYXAoKGl0ZW0sIGkpPT52YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpKTtcXG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGVsZW1lbnRzKS50aGVuKChlbGVtZW50cyk9PmZpbmFsaXplU2V0KGVsZW1lbnRzKSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiBmaW5hbGl6ZVNldChlbGVtZW50cyk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbWluKG1pblNpemUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kU2V0KHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgbWluU2l6ZToge1xcbiAgICAgICAgICAgICAgICB2YWx1ZTogbWluU2l6ZSxcXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgbWF4KG1heFNpemUsIG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiBuZXcgWm9kU2V0KHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgbWF4U2l6ZToge1xcbiAgICAgICAgICAgICAgICB2YWx1ZTogbWF4U2l6ZSxcXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc2l6ZShzaXplLCBtZXNzYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5taW4oc2l6ZSwgbWVzc2FnZSkubWF4KHNpemUsIG1lc3NhZ2UpO1xcbiAgICB9XFxuICAgIG5vbmVtcHR5KG1lc3NhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLm1pbigxLCBtZXNzYWdlKTtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHZhbHVlVHlwZSwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTZXQoe1xcbiAgICAgICAgICAgIHZhbHVlVHlwZSxcXG4gICAgICAgICAgICBtaW5TaXplOiBudWxsLFxcbiAgICAgICAgICAgIG1heFNpemU6IG51bGwsXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTZXQsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kRnVuY3Rpb24gZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBjb25zdCB7IGN0eCAgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XFxuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuZnVuY3Rpb24pIHtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZnVuY3Rpb24sXFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgZnVuY3Rpb24gbWFrZUFyZ3NJc3N1ZShhcmdzLCBlcnJvcikge1xcbiAgICAgICAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xcbiAgICAgICAgICAgICAgICBkYXRhOiBhcmdzLFxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgICAgICAgICAgZXJyb3JNYXBzOiBbXFxuICAgICAgICAgICAgICAgICAgICBjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCxcXG4gICAgICAgICAgICAgICAgICAgIGN0eC5zY2hlbWFFcnJvck1hcCxcXG4gICAgICAgICAgICAgICAgICAgIGdldEVycm9yTWFwKCksXFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RXJyb3JNYXAsIFxcbiAgICAgICAgICAgICAgICBdLmZpbHRlcigoeCk9PiEheCksXFxuICAgICAgICAgICAgICAgIGlzc3VlRGF0YToge1xcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzLFxcbiAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzRXJyb3I6IGVycm9yXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGZ1bmN0aW9uIG1ha2VSZXR1cm5zSXNzdWUocmV0dXJucywgZXJyb3IpIHtcXG4gICAgICAgICAgICByZXR1cm4gbWFrZUlzc3VlKHtcXG4gICAgICAgICAgICAgICAgZGF0YTogcmV0dXJucyxcXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXFxuICAgICAgICAgICAgICAgIGVycm9yTWFwczogW1xcbiAgICAgICAgICAgICAgICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXFxuICAgICAgICAgICAgICAgICAgICBjdHguc2NoZW1hRXJyb3JNYXAsXFxuICAgICAgICAgICAgICAgICAgICBnZXRFcnJvck1hcCgpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEVycm9yTWFwLCBcXG4gICAgICAgICAgICAgICAgXS5maWx0ZXIoKHgpPT4hIXgpLFxcbiAgICAgICAgICAgICAgICBpc3N1ZURhdGE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlLFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZUVycm9yOiBlcnJvclxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XFxuICAgICAgICAgICAgZXJyb3JNYXA6IGN0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwXFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgZm4gPSBjdHguZGF0YTtcXG4gICAgICAgIGlmICh0aGlzLl9kZWYucmV0dXJucyBpbnN0YW5jZW9mIFpvZFByb21pc2UpIHtcXG4gICAgICAgICAgICByZXR1cm4gT0soYXN5bmMgKC4uLmFyZ3MpPT57XFxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFpvZEVycm9yKFtdKTtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IGF3YWl0IHRoaXMuX2RlZi5hcmdzLnBhcnNlQXN5bmMoYXJncywgcGFyYW1zKS5jYXRjaCgoZSk9PntcXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VBcmdzSXNzdWUoYXJncywgZSkpO1xcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbiguLi5wYXJzZWRBcmdzKTtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IGF3YWl0IHRoaXMuX2RlZi5yZXR1cm5zLl9kZWYudHlwZS5wYXJzZUFzeW5jKHJlc3VsdCwgcGFyYW1zKS5jYXRjaCgoZSk9PntcXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VSZXR1cm5zSXNzdWUocmVzdWx0LCBlKSk7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvcjtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRSZXR1cm5zO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gT0soKC4uLmFyZ3MpPT57XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSB0aGlzLl9kZWYuYXJncy5zYWZlUGFyc2UoYXJncywgcGFyYW1zKTtcXG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdzLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBab2RFcnJvcihbXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFrZUFyZ3NJc3N1ZShhcmdzLCBwYXJzZWRBcmdzLmVycm9yKVxcbiAgICAgICAgICAgICAgICAgICAgXSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4oLi4ucGFyc2VkQXJncy5kYXRhKTtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IHRoaXMuX2RlZi5yZXR1cm5zLnNhZmVQYXJzZShyZXN1bHQsIHBhcmFtcyk7XFxuICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUmV0dXJucy5zdWNjZXNzKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgWm9kRXJyb3IoW1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VSZXR1cm5zSXNzdWUocmVzdWx0LCBwYXJzZWRSZXR1cm5zLmVycm9yKVxcbiAgICAgICAgICAgICAgICAgICAgXSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFJldHVybnMuZGF0YTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBwYXJhbWV0ZXJzKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5hcmdzO1xcbiAgICB9XFxuICAgIHJldHVyblR5cGUoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnJldHVybnM7XFxuICAgIH1cXG4gICAgYXJncyguLi5pdGVtcykge1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XFxuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxcbiAgICAgICAgICAgIGFyZ3M6IFpvZFR1cGxlLmNyZWF0ZShpdGVtcykucmVzdChab2RVbmtub3duLmNyZWF0ZSgpKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmV0dXJucyhyZXR1cm5UeXBlKSB7XFxuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcXG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXFxuICAgICAgICAgICAgcmV0dXJuczogcmV0dXJuVHlwZVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgaW1wbGVtZW50KGZ1bmMpIHtcXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZ1bmMgPSB0aGlzLnBhcnNlKGZ1bmMpO1xcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1bmM7XFxuICAgIH1cXG4gICAgc3RyaWN0SW1wbGVtZW50KGZ1bmMpIHtcXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZ1bmMgPSB0aGlzLnBhcnNlKGZ1bmMpO1xcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1bmM7XFxuICAgIH1cXG4gICAgdmFsaWRhdGUgPSB0aGlzLmltcGxlbWVudDtcXG4gICAgc3RhdGljIGNyZWF0ZSA9IChhcmdzLCByZXR1cm5zLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcXG4gICAgICAgICAgICBhcmdzOiBhcmdzID8gYXJncy5yZXN0KFpvZFVua25vd24uY3JlYXRlKCkpIDogWm9kVHVwbGUuY3JlYXRlKFtdKS5yZXN0KFpvZFVua25vd24uY3JlYXRlKCkpLFxcbiAgICAgICAgICAgIHJldHVybnM6IHJldHVybnMgfHwgWm9kVW5rbm93bi5jcmVhdGUoKSxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEZ1bmN0aW9uLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZExhenkgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgZ2V0IHNjaGVtYSgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuZ2V0dGVyKCk7XFxuICAgIH1cXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBjb25zdCB7IGN0eCAgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XFxuICAgICAgICBjb25zdCBsYXp5U2NoZW1hID0gdGhpcy5fZGVmLmdldHRlcigpO1xcbiAgICAgICAgcmV0dXJuIGxhenlTY2hlbWEuX3BhcnNlKHtcXG4gICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eFxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9IChnZXR0ZXIsIHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kTGF6eSh7XFxuICAgICAgICAgICAgZ2V0dGVyOiBnZXR0ZXIsXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMYXp5LFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZExpdGVyYWwgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBpZiAoaW5wdXQuZGF0YSAhPT0gdGhpcy5fZGVmLnZhbHVlKSB7XFxuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsLFxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogdGhpcy5fZGVmLnZhbHVlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgIHN0YXR1czogXFxcInZhbGlkXFxcIixcXG4gICAgICAgICAgICB2YWx1ZTogaW5wdXQuZGF0YVxcbiAgICAgICAgfTtcXG4gICAgfVxcbiAgICBnZXQgdmFsdWUoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAodmFsdWUsIHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kTGl0ZXJhbCh7XFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTGl0ZXJhbCxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5mdW5jdGlvbiBjcmVhdGVab2RFbnVtKHZhbHVlcywgcGFyYW1zKSB7XFxuICAgIHJldHVybiBuZXcgWm9kRW51bSh7XFxuICAgICAgICB2YWx1ZXM6IHZhbHVlcyxcXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRW51bSxcXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICB9KTtcXG59XFxuY2xhc3MgWm9kRW51bSBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQuZGF0YSAhPT0gXFxcInN0cmluZ1xcXCIpIHtcXG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XFxuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogdXRpbC5qb2luVmFsdWVzKGV4cGVjdGVkVmFsdWVzKSxcXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodGhpcy5fZGVmLnZhbHVlcy5pbmRleE9mKGlucHV0LmRhdGEpID09PSAtMSkge1xcbiAgICAgICAgICAgIGNvbnN0IGN0eDEgPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XFxuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMxID0gdGhpcy5fZGVmLnZhbHVlcztcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgxLCB7XFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgxLmRhdGEsXFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IGV4cGVjdGVkVmFsdWVzMVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xcbiAgICB9XFxuICAgIGdldCBvcHRpb25zKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZXM7XFxuICAgIH1cXG4gICAgZ2V0IGVudW0oKSB7XFxuICAgICAgICBjb25zdCBlbnVtVmFsdWVzID0ge307XFxuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKXtcXG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZW51bVZhbHVlcztcXG4gICAgfVxcbiAgICBnZXQgVmFsdWVzKCkge1xcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdGhpcy5fZGVmLnZhbHVlcyl7XFxuICAgICAgICAgICAgZW51bVZhbHVlc1t2YWxdID0gdmFsO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XFxuICAgIH1cXG4gICAgZ2V0IEVudW0oKSB7XFxuICAgICAgICBjb25zdCBlbnVtVmFsdWVzID0ge307XFxuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKXtcXG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZW51bVZhbHVlcztcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gY3JlYXRlWm9kRW51bTtcXG59XFxuY2xhc3MgWm9kTmF0aXZlRW51bSBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IG5hdGl2ZUVudW1WYWx1ZXMgPSB1dGlsLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKTtcXG4gICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcXG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zdHJpbmcgJiYgY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVtYmVyKSB7XFxuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHV0aWwuam9pblZhbHVlcyhleHBlY3RlZFZhbHVlcyksXFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKG5hdGl2ZUVudW1WYWx1ZXMuaW5kZXhPZihpbnB1dC5kYXRhKSA9PT0gLTEpIHtcXG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlczEgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlLFxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiBleHBlY3RlZFZhbHVlczFcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcXG4gICAgfVxcbiAgICBnZXQgZW51bSgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAodmFsdWVzLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE5hdGl2ZUVudW0oe1xcbiAgICAgICAgICAgIHZhbHVlczogdmFsdWVzLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmF0aXZlRW51bSxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2RQcm9taXNlIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgeyBjdHggIH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnByb21pc2UgJiYgY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcXG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcXG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUucHJvbWlzZSxcXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCBwcm9taXNpZmllZCA9IGN0eC5wYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLnByb21pc2UgPyBjdHguZGF0YSA6IFByb21pc2UucmVzb2x2ZShjdHguZGF0YSk7XFxuICAgICAgICByZXR1cm4gT0socHJvbWlzaWZpZWQudGhlbigoZGF0YSk9PntcXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnR5cGUucGFyc2VBc3luYyhkYXRhLCB7XFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXBcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pKTtcXG4gICAgfVxcbiAgICBzdGF0aWMgY3JlYXRlID0gKHNjaGVtYSwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RQcm9taXNlKHtcXG4gICAgICAgICAgICB0eXBlOiBzY2hlbWEsXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlLFxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKVxcbiAgICAgICAgfSk7XFxuICAgIH07XFxufVxcbmNsYXNzIFpvZEVmZmVjdHMgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgaW5uZXJUeXBlKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWE7XFxuICAgIH1cXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBjb25zdCB7IHN0YXR1cyAsIGN0eCAgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XFxuICAgICAgICBjb25zdCBlZmZlY3QgPSB0aGlzLl9kZWYuZWZmZWN0IHx8IG51bGw7XFxuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFxcXCJwcmVwcm9jZXNzXFxcIikge1xcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IGVmZmVjdC50cmFuc2Zvcm0oY3R4LmRhdGEpO1xcbiAgICAgICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvY2Vzc2VkKS50aGVuKChwcm9jZXNzZWQpPT57XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWQsXFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGNoZWNrQ3R4ID0ge1xcbiAgICAgICAgICAgIGFkZElzc3VlOiAoYXJnKT0+e1xcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIGFyZyk7XFxuICAgICAgICAgICAgICAgIGlmIChhcmcuZmF0YWwpIHtcXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5hYm9ydCgpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGdldCBwYXRoICgpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXRoO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH07XFxuICAgICAgICBjaGVja0N0eC5hZGRJc3N1ZSA9IGNoZWNrQ3R4LmFkZElzc3VlLmJpbmQoY2hlY2tDdHgpO1xcbiAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBcXFwicmVmaW5lbWVudFxcXCIpIHtcXG4gICAgICAgICAgICBjb25zdCBleGVjdXRlUmVmaW5lbWVudCA9IChhY2MpPT57XFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGVmZmVjdC5yZWZpbmVtZW50KGFjYywgY2hlY2tDdHgpO1xcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkFzeW5jIHJlZmluZW1lbnQgZW5jb3VudGVyZWQgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlIG9wZXJhdGlvbi4gVXNlIC5wYXJzZUFzeW5jIGluc3RlYWQuXFxcIik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jID09PSBmYWxzZSkge1xcbiAgICAgICAgICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFxcXCJhYm9ydGVkXFxcIikgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFxcXCJkaXJ0eVxcXCIpIHN0YXR1cy5kaXJ0eSgpO1xcbiAgICAgICAgICAgICAgICBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBpbm5lci52YWx1ZVxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eFxcbiAgICAgICAgICAgICAgICB9KS50aGVuKChpbm5lcik9PntcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFxcXCJhYm9ydGVkXFxcIikgcmV0dXJuIElOVkFMSUQ7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5uZXIuc3RhdHVzID09PSBcXFwiZGlydHlcXFwiKSBzdGF0dXMuZGlydHkoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSkudGhlbigoKT0+e1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5uZXIudmFsdWVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChlZmZlY3QudHlwZSA9PT0gXFxcInRyYW5zZm9ybVxcXCIpIHtcXG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChiYXNlKSkgcmV0dXJuIGJhc2U7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGVmZmVjdC50cmFuc2Zvcm0oYmFzZS52YWx1ZSwgY2hlY2tDdHgpO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLmApO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZXN1bHRcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHhcXG4gICAgICAgICAgICAgICAgfSkudGhlbigoYmFzZSk9PntcXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChiYXNlKSkgcmV0dXJuIGJhc2U7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVmZmVjdC50cmFuc2Zvcm0oYmFzZS52YWx1ZSwgY2hlY2tDdHgpKS50aGVuKChyZXN1bHQpPT4oe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cy52YWx1ZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgdXRpbC5hc3NlcnROZXZlcihlZmZlY3QpO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAoc2NoZW1hLCBlZmZlY3QsIHBhcmFtcyk9PntcXG4gICAgICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XFxuICAgICAgICAgICAgc2NoZW1hLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcXG4gICAgICAgICAgICBlZmZlY3QsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG4gICAgc3RhdGljIGNyZWF0ZVdpdGhQcmVwcm9jZXNzID0gKHByZXByb2Nlc3MsIHNjaGVtYSwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcXG4gICAgICAgICAgICBzY2hlbWEsXFxuICAgICAgICAgICAgZWZmZWN0OiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJwcmVwcm9jZXNzXFxcIixcXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBwcmVwcm9jZXNzXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kT3B0aW9uYWwgZXh0ZW5kcyBab2RUeXBlIHtcXG4gICAgX3BhcnNlKGlucHV0KSB7XFxuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XFxuICAgICAgICBpZiAocGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcXG4gICAgICAgICAgICByZXR1cm4gT0sodW5kZWZpbmVkKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShpbnB1dCk7XFxuICAgIH1cXG4gICAgdW53cmFwKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9ICh0eXBlLCBwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE9wdGlvbmFsKHtcXG4gICAgICAgICAgICBpbm5lclR5cGU6IHR5cGUsXFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbCxcXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcylcXG4gICAgICAgIH0pO1xcbiAgICB9O1xcbn1cXG5jbGFzcyBab2ROdWxsYWJsZSBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcXG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLm51bGwpIHtcXG4gICAgICAgICAgICByZXR1cm4gT0sobnVsbCk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoaW5wdXQpO1xcbiAgICB9XFxuICAgIHVud3JhcCgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAodHlwZSwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2ROdWxsYWJsZSh7XFxuICAgICAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbGFibGUsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kRGVmYXVsdCBleHRlbmRzIFpvZFR5cGUge1xcbiAgICBfcGFyc2UoaW5wdXQpIHtcXG4gICAgICAgIGNvbnN0IHsgY3R4ICB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcXG4gICAgICAgIGxldCBkYXRhID0gY3R4LmRhdGE7XFxuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgZGF0YSA9IHRoaXMuX2RlZi5kZWZhdWx0VmFsdWUoKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZSh7XFxuICAgICAgICAgICAgZGF0YSxcXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eFxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgcmVtb3ZlRGVmYXVsdCgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xcbiAgICB9XFxuICAgIHN0YXRpYyBjcmVhdGUgPSAodHlwZSwgcGFyYW1zKT0+e1xcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XFxuICAgICAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT3B0aW9uYWwsXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuY2xhc3MgWm9kTmFOIGV4dGVuZHMgWm9kVHlwZSB7XFxuICAgIF9wYXJzZShpbnB1dCkge1xcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubmFuKSB7XFxuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5uYW4sXFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBzdGF0dXM6IFxcXCJ2YWxpZFxcXCIsXFxuICAgICAgICAgICAgdmFsdWU6IGlucHV0LmRhdGFcXG4gICAgICAgIH07XFxuICAgIH1cXG4gICAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXMpPT57XFxuICAgICAgICByZXR1cm4gbmV3IFpvZE5hTih7XFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROYU4sXFxuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpXFxuICAgICAgICB9KTtcXG4gICAgfTtcXG59XFxuKHtcXG4gICAgb2JqZWN0OiBab2RPYmplY3QubGF6eWNyZWF0ZVxcbn0pO1xcbnZhciBab2RGaXJzdFBhcnR5VHlwZUtpbmQ7XFxuKGZ1bmN0aW9uKFpvZEZpcnN0UGFydHlUeXBlS2luZCkge1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZFN0cmluZ1xcXCJdID0gXFxcIlpvZFN0cmluZ1xcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kTnVtYmVyXFxcIl0gPSBcXFwiWm9kTnVtYmVyXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2ROYU5cXFwiXSA9IFxcXCJab2ROYU5cXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZEJpZ0ludFxcXCJdID0gXFxcIlpvZEJpZ0ludFxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kQm9vbGVhblxcXCJdID0gXFxcIlpvZEJvb2xlYW5cXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZERhdGVcXFwiXSA9IFxcXCJab2REYXRlXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RVbmRlZmluZWRcXFwiXSA9IFxcXCJab2RVbmRlZmluZWRcXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZE51bGxcXFwiXSA9IFxcXCJab2ROdWxsXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RBbnlcXFwiXSA9IFxcXCJab2RBbnlcXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZFVua25vd25cXFwiXSA9IFxcXCJab2RVbmtub3duXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2ROZXZlclxcXCJdID0gXFxcIlpvZE5ldmVyXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RWb2lkXFxcIl0gPSBcXFwiWm9kVm9pZFxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kQXJyYXlcXFwiXSA9IFxcXCJab2RBcnJheVxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kT2JqZWN0XFxcIl0gPSBcXFwiWm9kT2JqZWN0XFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RVbmlvblxcXCJdID0gXFxcIlpvZFVuaW9uXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2REaXNjcmltaW5hdGVkVW5pb25cXFwiXSA9IFxcXCJab2REaXNjcmltaW5hdGVkVW5pb25cXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZEludGVyc2VjdGlvblxcXCJdID0gXFxcIlpvZEludGVyc2VjdGlvblxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kVHVwbGVcXFwiXSA9IFxcXCJab2RUdXBsZVxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kUmVjb3JkXFxcIl0gPSBcXFwiWm9kUmVjb3JkXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RNYXBcXFwiXSA9IFxcXCJab2RNYXBcXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZFNldFxcXCJdID0gXFxcIlpvZFNldFxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kRnVuY3Rpb25cXFwiXSA9IFxcXCJab2RGdW5jdGlvblxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kTGF6eVxcXCJdID0gXFxcIlpvZExhenlcXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZExpdGVyYWxcXFwiXSA9IFxcXCJab2RMaXRlcmFsXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RFbnVtXFxcIl0gPSBcXFwiWm9kRW51bVxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kRWZmZWN0c1xcXCJdID0gXFxcIlpvZEVmZmVjdHNcXFwiO1xcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXFxcIlpvZE5hdGl2ZUVudW1cXFwiXSA9IFxcXCJab2ROYXRpdmVFbnVtXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2RPcHRpb25hbFxcXCJdID0gXFxcIlpvZE9wdGlvbmFsXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2ROdWxsYWJsZVxcXCJdID0gXFxcIlpvZE51bGxhYmxlXFxcIjtcXG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1xcXCJab2REZWZhdWx0XFxcIl0gPSBcXFwiWm9kRGVmYXVsdFxcXCI7XFxuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcXFwiWm9kUHJvbWlzZVxcXCJdID0gXFxcIlpvZFByb21pc2VcXFwiO1xcbn0pKFpvZEZpcnN0UGFydHlUeXBlS2luZCB8fCAoWm9kRmlyc3RQYXJ0eVR5cGVLaW5kID0ge30pKTtcXG5jb25zdCBzdHJpbmdUeXBlID0gWm9kU3RyaW5nLmNyZWF0ZTtcXG5ab2ROdW1iZXIuY3JlYXRlO1xcblpvZE5hTi5jcmVhdGU7XFxuWm9kQmlnSW50LmNyZWF0ZTtcXG5ab2RCb29sZWFuLmNyZWF0ZTtcXG5ab2REYXRlLmNyZWF0ZTtcXG5ab2RVbmRlZmluZWQuY3JlYXRlO1xcblpvZE51bGwuY3JlYXRlO1xcblpvZEFueS5jcmVhdGU7XFxuWm9kVW5rbm93bi5jcmVhdGU7XFxuWm9kTmV2ZXIuY3JlYXRlO1xcblpvZFZvaWQuY3JlYXRlO1xcbmNvbnN0IGFycmF5VHlwZSA9IFpvZEFycmF5LmNyZWF0ZTtcXG5jb25zdCBvYmplY3RUeXBlID0gWm9kT2JqZWN0LmNyZWF0ZTtcXG5ab2RPYmplY3Quc3RyaWN0Q3JlYXRlO1xcbmNvbnN0IHVuaW9uVHlwZSA9IFpvZFVuaW9uLmNyZWF0ZTtcXG5ab2REaXNjcmltaW5hdGVkVW5pb24uY3JlYXRlO1xcblpvZEludGVyc2VjdGlvbi5jcmVhdGU7XFxuWm9kVHVwbGUuY3JlYXRlO1xcblpvZFJlY29yZC5jcmVhdGU7XFxuWm9kTWFwLmNyZWF0ZTtcXG5ab2RTZXQuY3JlYXRlO1xcblpvZEZ1bmN0aW9uLmNyZWF0ZTtcXG5ab2RMYXp5LmNyZWF0ZTtcXG5ab2RMaXRlcmFsLmNyZWF0ZTtcXG5ab2RFbnVtLmNyZWF0ZTtcXG5jb25zdCBuYXRpdmVFbnVtVHlwZSA9IFpvZE5hdGl2ZUVudW0uY3JlYXRlO1xcblpvZFByb21pc2UuY3JlYXRlO1xcblpvZEVmZmVjdHMuY3JlYXRlO1xcblpvZE9wdGlvbmFsLmNyZWF0ZTtcXG5ab2ROdWxsYWJsZS5jcmVhdGU7XFxuWm9kRWZmZWN0cy5jcmVhdGVXaXRoUHJlcHJvY2VzcztcXG5jb25zdCBzaWcgPSAoaSwgbyk9Pih7XFxuICAgICAgICBfc2lnOiB0cnVlLFxcbiAgICAgICAgaW5wdXQ6IGksXFxuICAgICAgICBvdXRwdXQ6IG9cXG4gICAgfSk7XFxuY29uc3QgbWFrZVNlcnZlXyA9IChhcGksIGhhbmRsZXJzLCBwYXRoLCBwYXRocyk9PntcXG4gICAgY29uc3QgYSA9IGFwaTtcXG4gICAgT2JqZWN0LmVudHJpZXMoaGFuZGxlcnMpLmZvckVhY2goKFtrLCB2XSk9PntcXG4gICAgICAgIGNvbnN0IHAgPSBgJHtwYXRofS8ke2t9YDtcXG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXFxcImZ1bmN0aW9uXFxcIikge1xcbiAgICAgICAgICAgIHBhdGhzLnNldChwLCBhc3luYyAocmVxKT0+e1xcbiAgICAgICAgICAgICAgICBpZiAoYVtrXS5pbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHJlcS5qc29uKCk7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWQgPSBhW2tdLmlucHV0LnBhcnNlKGJvZHkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYocGFyc2VkKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gdigpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgbWFrZVNlcnZlXyhhW2tdLCB2LCBwLCBwYXRocyk7XFxuICAgIH0pO1xcbn07XFxuY29uc3QgbWFrZUNsaWVudCA9IChhcGksIHBhdGgpPT57XFxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoYXBpKS5tYXAoKFtrLCB2XSk9PntcXG4gICAgICAgIGNvbnN0IHAgPSBgJHtwYXRofS8ke2t9YDtcXG4gICAgICAgIGlmIChcXFwiX3NpZ1xcXCIgaW4gdikge1xcbiAgICAgICAgICAgIGNvbnN0IHZfID0gdjtcXG4gICAgICAgICAgICByZXR1cm4gW1xcbiAgICAgICAgICAgICAgICBrLFxcbiAgICAgICAgICAgICAgICBhc3luYyAoYm9keSk9PntcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiBudWxsO1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmUgPSBhd2FpdCBmZXRjaChwLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYixcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlLm9rKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZfLm91dHB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHZfLm91dHB1dC5zYWZlUGFyc2VBc3luYyhhd2FpdCByZS5qc29uKCkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVzLnN1Y2Nlc3MpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiByZXMuZXJyb3JcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5kYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgXTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBbXFxuICAgICAgICAgICAgayxcXG4gICAgICAgICAgICBtYWtlQ2xpZW50KHYsIHApXFxuICAgICAgICBdO1xcbiAgICB9KSk7XFxufTtcXG5jb25zdCBpc0h0dHBFcnJvciA9ICh2KT0+e1xcbiAgICByZXR1cm4gdiBpbnN0YW5jZW9mIFJlc3BvbnNlO1xcbn07XFxuY29uc3QgaXNWYWxpZGF0aW9uRXJyb3IgPSAodik9PntcXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcXFwib2JqZWN0XFxcIiAmJiB2LmVycm9yIGluc3RhbmNlb2YgWm9kRXJyb3I7XFxufTtcXG5jb25zdCBhc3NlcnQgPSAocmVzKT0+e1xcbiAgICBpZiAoaXNIdHRwRXJyb3IocmVzKSB8fCBpc1ZhbGlkYXRpb25FcnJvcihyZXMpKSB7XFxuICAgICAgICB0aHJvdyByZXM7XFxuICAgIH1cXG4gICAgcmV0dXJuIHJlcztcXG59O1xcbmNvbnN0IHN3ZWwgPSAodGFnLCBvcHRzLCBjaGlsZHJlbik9PntcXG4gICAgbGV0IG8gPSBudWxsO1xcbiAgICBpZiAoY2hpbGRyZW4pIHtcXG4gICAgICAgIGxldCBjO1xcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XFxuICAgICAgICAgICAgYyA9IGNoaWxkcmVuO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBjID0gW1xcbiAgICAgICAgICAgICAgICBjaGlsZHJlblxcbiAgICAgICAgICAgIF07XFxuICAgICAgICB9XFxuICAgICAgICBvID0ge1xcbiAgICAgICAgICAgIC4uLm9wdHMsXFxuICAgICAgICAgICAgY2hpbGRyZW46IGNcXG4gICAgICAgIH07XFxuICAgIH0gZWxzZSBpZiAob3B0cykge1xcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0cykpIHtcXG4gICAgICAgICAgICBvID0ge1xcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogb3B0c1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRzID09PSBcXFwic3RyaW5nXFxcIiB8fCBvcHRzIGluc3RhbmNlb2YgTm9kZSkge1xcbiAgICAgICAgICAgIG8gPSB7XFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbXFxuICAgICAgICAgICAgICAgICAgICBvcHRzXFxuICAgICAgICAgICAgICAgIF1cXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBvID0gb3B0cztcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBsZXQgb18gPSBvO1xcbiAgICBpZiAob18uY2hpbGRyZW4pIHtcXG4gICAgICAgIG9fLmNoaWxkcmVuID0gb18uY2hpbGRyZW4uZmlsdGVyKChjKT0+ISFjKTtcXG4gICAgfVxcbiAgICByZXR1cm4gc3dlbF8odGFnLCBvKTtcXG59O1xcbmNvbnN0IHN3ZWxfID0gKHRhZywgb3B0cyk9PntcXG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XFxuICAgIGlmIChvcHRzKSB7XFxuICAgICAgICBjb25zdCB7IGNoaWxkcmVuICwgb24gLCBhdHRyaWJ1dGVzICwgLi4ucmVzdCB9ID0gb3B0cztcXG4gICAgICAgIGlmIChjaGlsZHJlbikge1xcbiAgICAgICAgICAgIGVsLmFwcGVuZCguLi5jaGlsZHJlbik7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAob24pIHtcXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhvbikuZm9yRWFjaCgoW2V2LCBoXSk9PntcXG4gICAgICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldiwgaCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAoYXR0cmlidXRlcykge1xcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpLm1hcCgoW2ssIHZdKT0+e1xcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoaywgdik7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBPYmplY3QuYXNzaWduKGVsLCByZXN0KTtcXG4gICAgfVxcbiAgICByZXR1cm4gZWw7XFxufTtcXG5jb25zdCBHZXRDb25maWd1cmF0aW9uUmVzcG9uc2VWMSA9IG9iamVjdFR5cGUoe1xcbiAgICBob3N0czogYXJyYXlUeXBlKHN0cmluZ1R5cGUoKSksXFxuICAgIHNlcnZpY2VzOiBhcnJheVR5cGUob2JqZWN0VHlwZSh7XFxuICAgICAgICBuYW1lOiBzdHJpbmdUeXBlKCksXFxuICAgICAgICBwdWJsaWNVcmw6IHN0cmluZ1R5cGUoKS5vcHRpb25hbCgpXFxuICAgIH0pKVxcbn0pO1xcbnZhciBTdGF0dXNWMTtcXG4oZnVuY3Rpb24oU3RhdHVzVjEpIHtcXG4gICAgU3RhdHVzVjFbXFxcIkRvd25cXFwiXSA9IFxcXCJkb3duXFxcIjtcXG4gICAgU3RhdHVzVjFbXFxcIlVwXFxcIl0gPSBcXFwidXBcXFwiO1xcbn0pKFN0YXR1c1YxIHx8IChTdGF0dXNWMSA9IHt9KSk7XFxuY29uc3QgU3RhdHVzUmVzcG9uc2VWMSA9IHVuaW9uVHlwZShbXFxuICAgIG5hdGl2ZUVudW1UeXBlKFN0YXR1c1YxKSxcXG4gICAgb2JqZWN0VHlwZSh7XFxuICAgICAgICBlcnJvcjogc3RyaW5nVHlwZSgpXFxuICAgIH0pLCBcXG5dKTtcXG5jb25zdCBhcGkgPSB7XFxuICAgIHYxOiB7XFxuICAgICAgICBjb25maWd1cmF0aW9uOiB7XFxuICAgICAgICAgICAgZ2V0OiBzaWcodW5kZWZpbmVkLCBHZXRDb25maWd1cmF0aW9uUmVzcG9uc2VWMSlcXG4gICAgICAgIH0sXFxuICAgICAgICBob3N0OiB7XFxuICAgICAgICAgICAgZ2V0U3RhdHVzOiBzaWcoc3RyaW5nVHlwZSgpLCBTdGF0dXNSZXNwb25zZVYxKVxcbiAgICAgICAgfSxcXG4gICAgICAgIHNlcnZpY2U6IHtcXG4gICAgICAgICAgICBnZXRTdGF0dXM6IHNpZyhzdHJpbmdUeXBlKCksIFN0YXR1c1Jlc3BvbnNlVjEpXFxuICAgICAgICB9XFxuICAgIH1cXG59O1xcbmNvbnN0IGNsaWVudCA9ICgoKT0+e1xcbiAgICBjb25zdCBsID0gd2luZG93LmxvY2F0aW9uO1xcbiAgICBjb25zdCB1cmwgPSBgJHtsLnByb3RvY29sfS8vJHtsLmhvc3R9L2FwaWA7XFxuICAgIHJldHVybiBtYWtlQ2xpZW50KGFwaSwgdXJsKTtcXG59KSgpO1xcbmNvbnN0IFNlcnZpY2VJbmZvID0gKG5hbWUsIGdldFN0YXR1cywgcHVibGljVXJsKT0+e1xcbiAgICBjb25zdCBuYW1lRWwgPSBzd2VsKFxcXCJkaXZcXFwiLCB7XFxuICAgICAgICBjbGFzc05hbWU6IFxcXCJuYW1lXFxcIlxcbiAgICB9LCBuYW1lKTtcXG4gICAgY29uc3Qgc3RhdHVzID0gc3dlbChcXFwiZGl2XFxcIiwge1xcbiAgICAgICAgY2xhc3NOYW1lOiBcXFwic3RhdHVzXFxcIlxcbiAgICB9LCBcXFwibG9hZGluZ1xcXCIpO1xcbiAgICBjb25zdCBnbyA9IHB1YmxpY1VybCA/IHN3ZWwoXFxcImFcXFwiLCB7XFxuICAgICAgICBjbGFzc05hbWU6IFxcXCJnb1xcXCIsXFxuICAgICAgICBocmVmOiBwdWJsaWNVcmwsXFxuICAgICAgICB0YXJnZXQ6IFxcXCJfYmxhbmtcXFwiLFxcbiAgICAgICAgb246IHtcXG4gICAgICAgICAgICBtb3VzZWVudGVyOiAoZSk9PmUucHJldmVudERlZmF1bHQoKVxcbiAgICAgICAgfVxcbiAgICB9LCBcXFwiR29cXFwiKSA6IG51bGw7XFxuICAgIGNvbnN0IGJ1dHRvbiA9IHN3ZWwoXFxcImJ1dHRvblxcXCIsIHtcXG4gICAgICAgIGNsYXNzTmFtZTogXFxcInN0YXR1cy1idXR0b25cXFwiLFxcbiAgICAgICAgdGFiSW5kZXg6IDBcXG4gICAgfSwgW1xcbiAgICAgICAgbmFtZUVsLFxcbiAgICAgICAgc3RhdHVzXFxuICAgIF0pO1xcbiAgICBjb25zdCByZWZyZXNoID0gYXN5bmMgKCk9PntcXG4gICAgICAgIGJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKFxcXCJjbGlja1xcXCIsIHJlZnJlc2gpO1xcbiAgICAgICAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcXG4gICAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IFxcXCJsb2FkaW5nXFxcIjtcXG4gICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSBcXFwic3RhdHVzLWJ1dHRvblxcXCI7XFxuICAgICAgICBjb25zdCBzdCA9IGF3YWl0IGdldFN0YXR1cygpO1xcbiAgICAgICAgaWYgKGlzSHR0cEVycm9yKHN0KSkge1xcbiAgICAgICAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IFxcXCJlcnJvclxcXCI7XFxuICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoXFxcImVycm9yXFxcIik7XFxuICAgICAgICB9IGVsc2UgaWYgKGlzVmFsaWRhdGlvbkVycm9yKHN0KSkge1xcbiAgICAgICAgICAgIHN0YXR1cy50ZXh0Q29udGVudCA9IHN0LmVycm9yLnRvU3RyaW5nKCk7XFxuICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoXFxcImVycm9yXFxcIik7XFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzdCA9PT0gXFxcIm9iamVjdFxcXCIpIHtcXG4gICAgICAgICAgICBzdGF0dXMudGV4dENvbnRlbnQgPSBzdC5lcnJvcjtcXG4gICAgICAgICAgICBidXR0b24uY2xhc3NMaXN0LmFkZChcXFwiZXJyb3JcXFwiKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgc3RhdHVzLnRleHRDb250ZW50ID0gc3Q7XFxuICAgICAgICAgICAgYnV0dG9uLmNsYXNzTGlzdC5hZGQoc3QpO1xcbiAgICAgICAgfVxcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoXFxcImNsaWNrXFxcIiwgcmVmcmVzaCk7XFxuICAgICAgICBidXR0b24uZGlzYWJsZWQgPSBmYWxzZTtcXG4gICAgfTtcXG4gICAgcmVmcmVzaCgpO1xcbiAgICByZXR1cm4gc3dlbChcXFwiZGl2XFxcIiwge1xcbiAgICAgICAgY2xhc3NOYW1lOiBcXFwic3RhdHVzLWNvbnRhaW5lclxcXCJcXG4gICAgfSwgW1xcbiAgICAgICAgYnV0dG9uLFxcbiAgICAgICAgZ29cXG4gICAgXSk7XFxufTtcXG5jb25zdCBtYWluID0gYXN5bmMgKCk9PntcXG4gICAgY29uc3QgcmVzcCA9IGF3YWl0IGNsaWVudC52MS5jb25maWd1cmF0aW9uLmdldCgpLnRoZW4oYXNzZXJ0KTtcXG4gICAgY29uc3QgaG9zdHNTZWN0aW9uID0gc3dlbChcXFwic2VjdGlvblxcXCIsIFtcXG4gICAgICAgIHN3ZWwoXFxcImgxXFxcIiwgXFxcIkhvc3RzXFxcIiksXFxuICAgICAgICBzd2VsKFxcXCJkaXZcXFwiLCB7XFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcXFwiaG9zdHNcXFwiXFxuICAgICAgICB9LCByZXNwLmhvc3RzLm1hcCgoaCk9PlNlcnZpY2VJbmZvKGgsICgpPT5jbGllbnQudjEuaG9zdC5nZXRTdGF0dXMoaCkpKSksIFxcbiAgICBdKTtcXG4gICAgY29uc3Qgc2VydmljZXNTZWN0aW9uID0gc3dlbChcXFwic2VjdGlvblxcXCIsIFtcXG4gICAgICAgIHN3ZWwoXFxcImgxXFxcIiwgXFxcIlNlcnZpY2VzXFxcIiksXFxuICAgICAgICBzd2VsKFxcXCJkaXZcXFwiLCB7XFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBcXFwic2VydmljZXNcXFwiXFxuICAgICAgICB9LCByZXNwLnNlcnZpY2VzLm1hcCgoc2kpPT5TZXJ2aWNlSW5mbyhzaS5uYW1lLCAoKT0+Y2xpZW50LnYxLnNlcnZpY2UuZ2V0U3RhdHVzKHNpLm5hbWUpLCBzaS5wdWJsaWNVcmwpKSksIFxcbiAgICBdKTtcXG4gICAgZG9jdW1lbnQuYm9keS5yZXBsYWNlQ2hpbGRyZW4oaG9zdHNTZWN0aW9uLCBzZXJ2aWNlc1NlY3Rpb24pO1xcbn07XFxubWFpbigpO1xcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWgwZEhCek9pOHZaR1Z1Ynk1c1lXNWtMM2d2ZW05a1FIWXpMakUzTGpFd0wyaGxiSEJsY25NdmRYUnBiQzUwY3lJc0ltaDBkSEJ6T2k4dlpHVnVieTVzWVc1a0wzZ3ZlbTlrUUhZekxqRTNMakV3TDJobGJIQmxjbk12Y0dGeWMyVlZkR2xzTG5Seklpd2lhSFIwY0hNNkx5OWtaVzV2TG14aGJtUXZlQzk2YjJSQWRqTXVNVGN1TVRBdldtOWtSWEp5YjNJdWRITWlMQ0pvZEhSd2N6b3ZMMlJsYm04dWJHRnVaQzk0TDNwdlpFQjJNeTR4Tnk0eE1DOW9aV3h3WlhKekwyVnljbTl5VlhScGJDNTBjeUlzSW1oMGRIQnpPaTh2WkdWdWJ5NXNZVzVrTDNndmVtOWtRSFl6TGpFM0xqRXdMM1I1Y0dWekxuUnpJaXdpYUhSMGNITTZMeTluYVhRdWFXUjViR3h6TG01bGRDOXBaSGxzYkhNdmVXRjVjR2t2Y21GM0wySnlZVzVqYUM5dFlXbHVMMjF2WkM1MGN5SXNJbWgwZEhCek9pOHZaMmwwTG1sa2VXeHNjeTV1WlhRdmFXUjViR3h6TDNOM1pXd3ZjbUYzTDJKeVlXNWphQzl0WVdsdUwyMXZaQzUwY3lJc0ltWnBiR1U2THk4dmFHOXRaUzlwWkhsc2JITXZaV3g1YzJsMWJTOXpkR0YwZFdVdlkyOXRiVzl1TDJGd2FTNTBjeUlzSW1acGJHVTZMeTh2YUc5dFpTOXBaSGxzYkhNdlpXeDVjMmwxYlM5emRHRjBkV1V2Wm5KdmJuUmxibVF2YldGcGJpNTBjeUpkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnYm1GdFpYTndZV05sSUhWMGFXd2dlMXh1SUNCbGVIQnZjblFnZEhsd1pTQkJjM05sY25SRmNYVmhiRHhVTENCRmVIQmxZM1JsWkQ0Z1BTQmJWRjBnWlhoMFpXNWtjeUJiUlhod1pXTjBaV1JkWEc0Z0lDQWdQeUJiUlhod1pXTjBaV1JkSUdWNGRHVnVaSE1nVzFSZFhHNGdJQ0FnSUNBL0lIUnlkV1ZjYmlBZ0lDQWdJRG9nWm1Gc2MyVmNiaUFnSUNBNklHWmhiSE5sTzF4dUlDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYTnpaWEowUlhGMVlXdzhRU3dnUWo0b1gyTnZibVE2SUVGemMyVnlkRVZ4ZFdGc1BFRXNJRUkrS1NCN2ZWeHVYRzRnSUdWNGNHOXlkQ0JtZFc1amRHbHZiaUJoYzNObGNuUk9aWFpsY2loZmVEb2dibVYyWlhJcE9pQnVaWFpsY2lCN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2s3WEc0Z0lIMWNibHh1SUNCbGVIQnZjblFnZEhsd1pTQlBiV2wwUEZRc0lFc2daWGgwWlc1a2N5QnJaWGx2WmlCVVBpQTlJRkJwWTJzOFZDd2dSWGhqYkhWa1pUeHJaWGx2WmlCVUxDQkxQajQ3WEc0Z0lHVjRjRzl5ZENCMGVYQmxJRTl0YVhSTFpYbHpQRlFzSUVzZ1pYaDBaVzVrY3lCemRISnBibWMrSUQwZ1VHbGphenhVTENCRmVHTnNkV1JsUEd0bGVXOW1JRlFzSUVzK1BqdGNiaUFnWlhod2IzSjBJSFI1Y0dVZ1RXRnJaVkJoY25ScFlXdzhWQ3dnU3lCbGVIUmxibVJ6SUd0bGVXOW1JRlErSUQwZ1QyMXBkRHhVTENCTFBpQW1YRzRnSUNBZ1VHRnlkR2xoYkR4UWFXTnJQRlFzSUVzK1BqdGNibHh1SUNCbGVIQnZjblFnWTI5dWMzUWdZWEp5WVhsVWIwVnVkVzBnUFNBOFZDQmxlSFJsYm1SeklITjBjbWx1Wnl3Z1ZTQmxlSFJsYm1SeklGdFVMQ0F1TGk1VVcxMWRQaWhjYmlBZ0lDQnBkR1Z0Y3pvZ1ZWeHVJQ0FwT2lCN0lGdHJJR2x1SUZWYmJuVnRZbVZ5WFYwNklHc2dmU0E5UGlCN1hHNGdJQ0FnWTI5dWMzUWdiMkpxT2lCaGJua2dQU0I3ZlR0Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdsMFpXMGdiMllnYVhSbGJYTXBJSHRjYmlBZ0lDQWdJRzlpYWx0cGRHVnRYU0E5SUdsMFpXMDdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ2WW1vZ1lYTWdZVzU1TzF4dUlDQjlPMXh1WEc0Z0lHVjRjRzl5ZENCamIyNXpkQ0JuWlhSV1lXeHBaRVZ1ZFcxV1lXeDFaWE1nUFNBb2IySnFPaUJoYm5rcElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCMllXeHBaRXRsZVhNZ1BTQnZZbXBsWTNSTFpYbHpLRzlpYWlrdVptbHNkR1Z5S0Z4dUlDQWdJQ0FnS0dzNklHRnVlU2tnUFQ0Z2RIbHdaVzltSUc5aWFsdHZZbXBiYTExZElDRTlQU0JjSW01MWJXSmxjbHdpWEc0Z0lDQWdLVHRjYmlBZ0lDQmpiMjV6ZENCbWFXeDBaWEpsWkRvZ1lXNTVJRDBnZTMwN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCcklHOW1JSFpoYkdsa1MyVjVjeWtnZTF4dUlDQWdJQ0FnWm1sc2RHVnlaV1JiYTEwZ1BTQnZZbXBiYTEwN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnZZbXBsWTNSV1lXeDFaWE1vWm1sc2RHVnlaV1FwTzF4dUlDQjlPMXh1WEc0Z0lHVjRjRzl5ZENCamIyNXpkQ0J2WW1wbFkzUldZV3gxWlhNZ1BTQW9iMkpxT2lCaGJua3BJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiMkpxWldOMFMyVjVjeWh2WW1vcExtMWhjQ2htZFc1amRHbHZiaUFvWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc5aWFsdGxYVHRjYmlBZ0lDQjlLVHRjYmlBZ2ZUdGNibHh1SUNCbGVIQnZjblFnWTI5dWMzUWdiMkpxWldOMFMyVjVjem9nVDJKcVpXTjBRMjl1YzNSeWRXTjBiM0piWENKclpYbHpYQ0pkSUQxY2JpQWdJQ0IwZVhCbGIyWWdUMkpxWldOMExtdGxlWE1nUFQwOUlGd2lablZ1WTNScGIyNWNJaUF2THlCbGMyeHBiblF0WkdsellXSnNaUzFzYVc1bElHSmhiaTlpWVc1Y2JpQWdJQ0FnSUQ4Z0tHOWlham9nWVc1NUtTQTlQaUJQWW1wbFkzUXVhMlY1Y3lodlltb3BJQzh2SUdWemJHbHVkQzFrYVhOaFlteGxMV3hwYm1VZ1ltRnVMMkpoYmx4dUlDQWdJQ0FnT2lBb2IySnFaV04wT2lCaGJua3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCclpYbHpJRDBnVzEwN1hHNGdJQ0FnSUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JyWlhrZ2FXNGdiMkpxWldOMEtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLRzlpYW1WamRDd2dhMlY1S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCclpYbHpMbkIxYzJnb2EyVjVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUd0bGVYTTdYRzRnSUNBZ0lDQWdJSDA3WEc1Y2JpQWdaWGh3YjNKMElHTnZibk4wSUdacGJtUWdQU0E4VkQ0b1hHNGdJQ0FnWVhKeU9pQlVXMTBzWEc0Z0lDQWdZMmhsWTJ0bGNqb2dLR0Z5WnpvZ1ZDa2dQVDRnWVc1NVhHNGdJQ2s2SUZRZ2ZDQjFibVJsWm1sdVpXUWdQVDRnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYVhSbGJTQnZaaUJoY25JcElIdGNiaUFnSUNBZ0lHbG1JQ2hqYUdWamEyVnlLR2wwWlcwcEtTQnlaWFIxY200Z2FYUmxiVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhWdVpHVm1hVzVsWkR0Y2JpQWdmVHRjYmx4dUlDQmxlSEJ2Y25RZ2RIbHdaU0JwWkdWdWRHbDBlVHhVUGlBOUlGUTdYRzRnSUdWNGNHOXlkQ0IwZVhCbElHWnNZWFIwWlc0OFZDQmxlSFJsYm1SeklHOWlhbVZqZEQ0Z1BTQnBaR1Z1ZEdsMGVUeDdJRnRySUdsdUlHdGxlVzltSUZSZE9pQlVXMnRkSUgwK08xeHVJQ0JsZUhCdmNuUWdkSGx3WlNCdWIxVnVaR1ZtYVc1bFpEeFVQaUE5SUZRZ1pYaDBaVzVrY3lCMWJtUmxabWx1WldRZ1B5QnVaWFpsY2lBNklGUTdYRzVjYmlBZ1pYaHdiM0owSUdOdmJuTjBJR2x6U1c1MFpXZGxjam9nVG5WdFltVnlRMjl1YzNSeWRXTjBiM0piWENKcGMwbHVkR1ZuWlhKY0lsMGdQVnh1SUNBZ0lIUjVjR1Z2WmlCT2RXMWlaWEl1YVhOSmJuUmxaMlZ5SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0pjYmlBZ0lDQWdJRDhnS0haaGJDa2dQVDRnVG5WdFltVnlMbWx6U1c1MFpXZGxjaWgyWVd3cElDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXeHBibVVnWW1GdUwySmhibHh1SUNBZ0lDQWdPaUFvZG1Gc0tTQTlQbHh1SUNBZ0lDQWdJQ0FnSUhSNWNHVnZaaUIyWVd3Z1BUMDlJRndpYm5WdFltVnlYQ0lnSmlZZ2FYTkdhVzVwZEdVb2RtRnNLU0FtSmlCTllYUm9MbVpzYjI5eUtIWmhiQ2tnUFQwOUlIWmhiRHRjYmx4dUlDQmxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FtOXBibFpoYkhWbGN6eFVJR1Y0ZEdWdVpITWdZVzU1VzEwK0tGeHVJQ0FnSUdGeWNtRjVPaUJVTEZ4dUlDQWdJSE5sY0dGeVlYUnZjaUE5SUZ3aUlId2dYQ0pjYmlBZ0tUb2djM1J5YVc1bklIdGNiaUFnSUNCeVpYUjFjbTRnWVhKeVlYbGNiaUFnSUNBZ0lDNXRZWEFvS0haaGJDa2dQVDRnS0hSNWNHVnZaaUIyWVd3Z1BUMDlJRndpYzNSeWFXNW5YQ0lnUHlCZ0p5UjdkbUZzZlNkZ0lEb2dkbUZzS1NsY2JpQWdJQ0FnSUM1cWIybHVLSE5sY0dGeVlYUnZjaWs3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJRnB2WkZCaGNuTmxaRlI1Y0dVZ1BTQjFkR2xzTG1GeWNtRjVWRzlGYm5WdEtGdGNiaUFnWENKemRISnBibWRjSWl4Y2JpQWdYQ0p1WVc1Y0lpeGNiaUFnWENKdWRXMWlaWEpjSWl4Y2JpQWdYQ0pwYm5SbFoyVnlYQ0lzWEc0Z0lGd2labXh2WVhSY0lpeGNiaUFnWENKaWIyOXNaV0Z1WENJc1hHNGdJRndpWkdGMFpWd2lMRnh1SUNCY0ltSnBaMmx1ZEZ3aUxGeHVJQ0JjSW5ONWJXSnZiRndpTEZ4dUlDQmNJbVoxYm1OMGFXOXVYQ0lzWEc0Z0lGd2lkVzVrWldacGJtVmtYQ0lzWEc0Z0lGd2liblZzYkZ3aUxGeHVJQ0JjSW1GeWNtRjVYQ0lzWEc0Z0lGd2liMkpxWldOMFhDSXNYRzRnSUZ3aWRXNXJibTkzYmx3aUxGeHVJQ0JjSW5CeWIyMXBjMlZjSWl4Y2JpQWdYQ0oyYjJsa1hDSXNYRzRnSUZ3aWJtVjJaWEpjSWl4Y2JpQWdYQ0p0WVhCY0lpeGNiaUFnWENKelpYUmNJaXhjYmwwcE8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCYWIyUlFZWEp6WldSVWVYQmxJRDBnYTJWNWIyWWdkSGx3Wlc5bUlGcHZaRkJoY25ObFpGUjVjR1U3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JuWlhSUVlYSnpaV1JVZVhCbElEMGdLR1JoZEdFNklHRnVlU2s2SUZwdlpGQmhjbk5sWkZSNWNHVWdQVDRnZTF4dUlDQmpiMjV6ZENCMElEMGdkSGx3Wlc5bUlHUmhkR0U3WEc1Y2JpQWdjM2RwZEdOb0lDaDBLU0I3WEc0Z0lDQWdZMkZ6WlNCY0luVnVaR1ZtYVc1bFpGd2lPbHh1SUNBZ0lDQWdjbVYwZFhKdUlGcHZaRkJoY25ObFpGUjVjR1V1ZFc1a1pXWnBibVZrTzF4dVhHNGdJQ0FnWTJGelpTQmNJbk4wY21sdVoxd2lPbHh1SUNBZ0lDQWdjbVYwZFhKdUlGcHZaRkJoY25ObFpGUjVjR1V1YzNSeWFXNW5PMXh1WEc0Z0lDQWdZMkZ6WlNCY0ltNTFiV0psY2x3aU9seHVJQ0FnSUNBZ2NtVjBkWEp1SUdselRtRk9LR1JoZEdFcElEOGdXbTlrVUdGeWMyVmtWSGx3WlM1dVlXNGdPaUJhYjJSUVlYSnpaV1JVZVhCbExtNTFiV0psY2p0Y2JseHVJQ0FnSUdOaGMyVWdYQ0ppYjI5c1pXRnVYQ0k2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdXbTlrVUdGeWMyVmtWSGx3WlM1aWIyOXNaV0Z1TzF4dVhHNGdJQ0FnWTJGelpTQmNJbVoxYm1OMGFXOXVYQ0k2WEc0Z0lDQWdJQ0J5WlhSMWNtNGdXbTlrVUdGeWMyVmtWSGx3WlM1bWRXNWpkR2x2Ymp0Y2JseHVJQ0FnSUdOaGMyVWdYQ0ppYVdkcGJuUmNJanBjYmlBZ0lDQWdJSEpsZEhWeWJpQmFiMlJRWVhKelpXUlVlWEJsTG1KcFoybHVkRHRjYmx4dUlDQWdJR05oYzJVZ1hDSnZZbXBsWTNSY0lqcGNiaUFnSUNBZ0lHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtHUmhkR0VwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYWIyUlFZWEp6WldSVWVYQmxMbUZ5Y21GNU8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLR1JoZEdFZ1BUMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlGcHZaRkJoY25ObFpGUjVjR1V1Ym5Wc2JEdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHbG1JQ2hjYmlBZ0lDQWdJQ0FnWkdGMFlTNTBhR1Z1SUNZbVhHNGdJQ0FnSUNBZ0lIUjVjR1Z2WmlCa1lYUmhMblJvWlc0Z1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUpseHVJQ0FnSUNBZ0lDQmtZWFJoTG1OaGRHTm9JQ1ltWEc0Z0lDQWdJQ0FnSUhSNWNHVnZaaUJrWVhSaExtTmhkR05vSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0pjYmlBZ0lDQWdJQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnV205a1VHRnljMlZrVkhsd1pTNXdjbTl0YVhObE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQk5ZWEFnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnSmlZZ1pHRjBZU0JwYm5OMFlXNWpaVzltSUUxaGNDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdXbTlrVUdGeWMyVmtWSGx3WlM1dFlYQTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JRk5sZENBaFBUMGdYQ0oxYm1SbFptbHVaV1JjSWlBbUppQmtZWFJoSUdsdWMzUmhibU5sYjJZZ1UyVjBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJhYjJSUVlYSnpaV1JVZVhCbExuTmxkRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnUkdGMFpTQWhQVDBnWENKMWJtUmxabWx1WldSY0lpQW1KaUJrWVhSaElHbHVjM1JoYm1ObGIyWWdSR0YwWlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1dtOWtVR0Z5YzJWa1ZIbHdaUzVrWVhSbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2NtVjBkWEp1SUZwdlpGQmhjbk5sWkZSNWNHVXViMkpxWldOME8xeHVYRzRnSUNBZ1pHVm1ZWFZzZERwY2JpQWdJQ0FnSUhKbGRIVnliaUJhYjJSUVlYSnpaV1JVZVhCbExuVnVhMjV2ZDI0N1hHNGdJSDFjYm4wN1hHNGlMQ0pwYlhCdmNuUWdkSGx3WlNCN0lFbHpjM1ZsUkdGMFlTd2dXbTlrUlhKeWIzSk5ZWEFzSUZwdlpFbHpjM1ZsSUgwZ1puSnZiU0JjSWk0dUwxcHZaRVZ5Y205eUxuUnpYQ0k3WEc1cGJYQnZjblFnZXlCa1pXWmhkV3gwUlhKeWIzSk5ZWEFzSUdkbGRFVnljbTl5VFdGd0lIMGdabkp2YlNCY0lpNHVMMXB2WkVWeWNtOXlMblJ6WENJN1hHNXBiWEJ2Y25RZ2RIbHdaU0I3SUZwdlpGQmhjbk5sWkZSNWNHVWdmU0JtY205dElGd2lMaTkxZEdsc0xuUnpYQ0k3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0J0WVd0bFNYTnpkV1VnUFNBb2NHRnlZVzF6T2lCN1hHNGdJR1JoZEdFNklHRnVlVHRjYmlBZ2NHRjBhRG9nS0hOMGNtbHVaeUI4SUc1MWJXSmxjaWxiWFR0Y2JpQWdaWEp5YjNKTllYQnpPaUJhYjJSRmNuSnZjazFoY0Z0ZE8xeHVJQ0JwYzNOMVpVUmhkR0U2SUVsemMzVmxSR0YwWVR0Y2JuMHBPaUJhYjJSSmMzTjFaU0E5UGlCN1hHNGdJR052Ym5OMElIc2daR0YwWVN3Z2NHRjBhQ3dnWlhKeWIzSk5ZWEJ6TENCcGMzTjFaVVJoZEdFZ2ZTQTlJSEJoY21GdGN6dGNiaUFnWTI5dWMzUWdablZzYkZCaGRHZ2dQU0JiTGk0dWNHRjBhQ3dnTGk0dUtHbHpjM1ZsUkdGMFlTNXdZWFJvSUh4OElGdGRLVjA3WEc0Z0lHTnZibk4wSUdaMWJHeEpjM04xWlNBOUlIdGNiaUFnSUNBdUxpNXBjM04xWlVSaGRHRXNYRzRnSUNBZ2NHRjBhRG9nWm5Wc2JGQmhkR2dzWEc0Z0lIMDdYRzVjYmlBZ2JHVjBJR1Z5Y205eVRXVnpjMkZuWlNBOUlGd2lYQ0k3WEc0Z0lHTnZibk4wSUcxaGNITWdQU0JsY25KdmNrMWhjSE5jYmlBZ0lDQXVabWxzZEdWeUtDaHRLU0E5UGlBaElXMHBYRzRnSUNBZ0xuTnNhV05sS0NsY2JpQWdJQ0F1Y21WMlpYSnpaU2dwSUdGeklGcHZaRVZ5Y205eVRXRndXMTA3WEc0Z0lHWnZjaUFvWTI5dWMzUWdiV0Z3SUc5bUlHMWhjSE1wSUh0Y2JpQWdJQ0JsY25KdmNrMWxjM05oWjJVZ1BTQnRZWEFvWm5Wc2JFbHpjM1ZsTENCN0lHUmhkR0VzSUdSbFptRjFiSFJGY25KdmNqb2daWEp5YjNKTlpYTnpZV2RsSUgwcExtMWxjM05oWjJVN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUM0dUxtbHpjM1ZsUkdGMFlTeGNiaUFnSUNCd1lYUm9PaUJtZFd4c1VHRjBhQ3hjYmlBZ0lDQnRaWE56WVdkbE9pQnBjM04xWlVSaGRHRXViV1Z6YzJGblpTQjhmQ0JsY25KdmNrMWxjM05oWjJVc1hHNGdJSDA3WEc1OU8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCUVlYSnpaVkJoY21GdGN5QTlJSHRjYmlBZ2NHRjBhRG9nS0hOMGNtbHVaeUI4SUc1MWJXSmxjaWxiWFR0Y2JpQWdaWEp5YjNKTllYQTZJRnB2WkVWeWNtOXlUV0Z3TzF4dUlDQmhjM2x1WXpvZ1ltOXZiR1ZoYmp0Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGQmhjbk5sVUdGMGFFTnZiWEJ2Ym1WdWRDQTlJSE4wY21sdVp5QjhJRzUxYldKbGNqdGNibVY0Y0c5eWRDQjBlWEJsSUZCaGNuTmxVR0YwYUNBOUlGQmhjbk5sVUdGMGFFTnZiWEJ2Ym1WdWRGdGRPMXh1Wlhod2IzSjBJR052Ym5OMElFVk5VRlJaWDFCQlZFZzZJRkJoY25ObFVHRjBhQ0E5SUZ0ZE8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRkJoY25ObFEyOXVkR1Y0ZENCN1hHNGdJSEpsWVdSdmJteDVJR052YlcxdmJqb2dlMXh1SUNBZ0lISmxZV1J2Ym14NUlHbHpjM1ZsY3pvZ1dtOWtTWE56ZFdWYlhUdGNiaUFnSUNCeVpXRmtiMjVzZVNCamIyNTBaWGgwZFdGc1JYSnliM0pOWVhBL09pQmFiMlJGY25KdmNrMWhjRHRjYmlBZ0lDQnlaV0ZrYjI1c2VTQmhjM2x1WXpvZ1ltOXZiR1ZoYmp0Y2JpQWdmVHRjYmlBZ2NtVmhaRzl1YkhrZ2NHRjBhRG9nVUdGeWMyVlFZWFJvTzF4dUlDQnlaV0ZrYjI1c2VTQnpZMmhsYldGRmNuSnZjazFoY0Q4NklGcHZaRVZ5Y205eVRXRndPMXh1SUNCeVpXRmtiMjVzZVNCd1lYSmxiblE2SUZCaGNuTmxRMjl1ZEdWNGRDQjhJRzUxYkd3N1hHNGdJSEpsWVdSdmJteDVJR1JoZEdFNklHRnVlVHRjYmlBZ2NtVmhaRzl1YkhrZ2NHRnljMlZrVkhsd1pUb2dXbTlrVUdGeWMyVmtWSGx3WlR0Y2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1VHRnljMlZKYm5CMWRDQTlJSHRjYmlBZ1pHRjBZVG9nWVc1NU8xeHVJQ0J3WVhSb09pQW9jM1J5YVc1bklId2diblZ0WW1WeUtWdGRPMXh1SUNCd1lYSmxiblE2SUZCaGNuTmxRMjl1ZEdWNGREdGNibjA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaFpHUkpjM04xWlZSdlEyOXVkR1Y0ZENoY2JpQWdZM1I0T2lCUVlYSnpaVU52Ym5SbGVIUXNYRzRnSUdsemMzVmxSR0YwWVRvZ1NYTnpkV1ZFWVhSaFhHNHBPaUIyYjJsa0lIdGNiaUFnWTI5dWMzUWdhWE56ZFdVZ1BTQnRZV3RsU1hOemRXVW9lMXh1SUNBZ0lHbHpjM1ZsUkdGMFlUb2dhWE56ZFdWRVlYUmhMRnh1SUNBZ0lHUmhkR0U2SUdOMGVDNWtZWFJoTEZ4dUlDQWdJSEJoZEdnNklHTjBlQzV3WVhSb0xGeHVJQ0FnSUdWeWNtOXlUV0Z3Y3pvZ1cxeHVJQ0FnSUNBZ1kzUjRMbU52YlcxdmJpNWpiMjUwWlhoMGRXRnNSWEp5YjNKTllYQXNJQzh2SUdOdmJuUmxlSFIxWVd3Z1pYSnliM0lnYldGd0lHbHpJR1pwY25OMElIQnlhVzl5YVhSNVhHNGdJQ0FnSUNCamRIZ3VjMk5vWlcxaFJYSnliM0pOWVhBc0lDOHZJSFJvWlc0Z2MyTm9aVzFoTFdKdmRXNWtJRzFoY0NCcFppQmhkbUZwYkdGaWJHVmNiaUFnSUNBZ0lHZGxkRVZ5Y205eVRXRndLQ2tzSUM4dklIUm9aVzRnWjJ4dlltRnNJRzkyWlhKeWFXUmxJRzFoY0Z4dUlDQWdJQ0FnWkdWbVlYVnNkRVZ5Y205eVRXRndMQ0F2THlCMGFHVnVJR2RzYjJKaGJDQmtaV1poZFd4MElHMWhjRnh1SUNBZ0lGMHVabWxzZEdWeUtDaDRLU0E5UGlBaElYZ3BJR0Z6SUZwdlpFVnljbTl5VFdGd1cxMHNYRzRnSUgwcE8xeHVJQ0JqZEhndVkyOXRiVzl1TG1semMzVmxjeTV3ZFhOb0tHbHpjM1ZsS1R0Y2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1QySnFaV04wVUdGcGNpQTlJSHRjYmlBZ2EyVjVPaUJUZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEdGdWVUNDdYRzRnSUhaaGJIVmxPaUJUZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEdGdWVUNDdYRzU5TzF4dVpYaHdiM0owSUdOc1lYTnpJRkJoY25ObFUzUmhkSFZ6SUh0Y2JpQWdkbUZzZFdVNklGd2lZV0p2Y25SbFpGd2lJSHdnWENKa2FYSjBlVndpSUh3Z1hDSjJZV3hwWkZ3aUlEMGdYQ0oyWVd4cFpGd2lPMXh1SUNCa2FYSjBlU2dwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTUyWVd4MVpTQTlQVDBnWENKMllXeHBaRndpS1NCMGFHbHpMblpoYkhWbElEMGdYQ0prYVhKMGVWd2lPMXh1SUNCOVhHNGdJR0ZpYjNKMEtDa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxuWmhiSFZsSUNFOVBTQmNJbUZpYjNKMFpXUmNJaWtnZEdocGN5NTJZV3gxWlNBOUlGd2lZV0p2Y25SbFpGd2lPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJRzFsY21kbFFYSnlZWGtvWEc0Z0lDQWdjM1JoZEhWek9pQlFZWEp6WlZOMFlYUjFjeXhjYmlBZ0lDQnlaWE4xYkhSek9pQlRlVzVqVUdGeWMyVlNaWFIxY201VWVYQmxQR0Z1ZVQ1YlhWeHVJQ0FwT2lCVGVXNWpVR0Z5YzJWU1pYUjFjbTVVZVhCbElIdGNiaUFnSUNCamIyNXpkQ0JoY25KaGVWWmhiSFZsT2lCaGJubGJYU0E5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2N5QnZaaUJ5WlhOMWJIUnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2N5NXpkR0YwZFhNZ1BUMDlJRndpWVdKdmNuUmxaRndpS1NCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQWdJR2xtSUNoekxuTjBZWFIxY3lBOVBUMGdYQ0prYVhKMGVWd2lLU0J6ZEdGMGRYTXVaR2x5ZEhrb0tUdGNiaUFnSUNBZ0lHRnljbUY1Vm1Gc2RXVXVjSFZ6YUNoekxuWmhiSFZsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdleUJ6ZEdGMGRYTTZJSE4wWVhSMWN5NTJZV3gxWlN3Z2RtRnNkV1U2SUdGeWNtRjVWbUZzZFdVZ2ZUdGNiaUFnZlZ4dVhHNGdJSE4wWVhScFl5QmhjM2x1WXlCdFpYSm5aVTlpYW1WamRFRnplVzVqS0Z4dUlDQWdJSE4wWVhSMWN6b2dVR0Z5YzJWVGRHRjBkWE1zWEc0Z0lDQWdjR0ZwY25NNklIc2dhMlY1T2lCUVlYSnpaVkpsZEhWeWJsUjVjR1U4WVc1NVBqc2dkbUZzZFdVNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4aGJuaytJSDFiWFZ4dUlDQXBPaUJRY205dGFYTmxQRk41Ym1OUVlYSnpaVkpsZEhWeWJsUjVjR1U4WVc1NVBqNGdlMXh1SUNBZ0lHTnZibk4wSUhONWJtTlFZV2x5Y3pvZ1QySnFaV04wVUdGcGNsdGRJRDBnVzEwN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCd1lXbHlJRzltSUhCaGFYSnpLU0I3WEc0Z0lDQWdJQ0J6ZVc1alVHRnBjbk11Y0hWemFDaDdYRzRnSUNBZ0lDQWdJR3RsZVRvZ1lYZGhhWFFnY0dGcGNpNXJaWGtzWEc0Z0lDQWdJQ0FnSUhaaGJIVmxPaUJoZDJGcGRDQndZV2x5TG5aaGJIVmxMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCUVlYSnpaVk4wWVhSMWN5NXRaWEpuWlU5aWFtVmpkRk41Ym1Nb2MzUmhkSFZ6TENCemVXNWpVR0ZwY25NcE8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHMWxjbWRsVDJKcVpXTjBVM2x1WXloY2JpQWdJQ0J6ZEdGMGRYTTZJRkJoY25ObFUzUmhkSFZ6TEZ4dUlDQWdJSEJoYVhKek9pQjdYRzRnSUNBZ0lDQnJaWGs2SUZONWJtTlFZWEp6WlZKbGRIVnlibFI1Y0dVOFlXNTVQanRjYmlBZ0lDQWdJSFpoYkhWbE9pQlRlVzVqVUdGeWMyVlNaWFIxY201VWVYQmxQR0Z1ZVQ0N1hHNGdJQ0FnSUNCaGJIZGhlWE5UWlhRL09pQmliMjlzWldGdU8xeHVJQ0FnSUgxYlhWeHVJQ0FwT2lCVGVXNWpVR0Z5YzJWU1pYUjFjbTVVZVhCbElIdGNiaUFnSUNCamIyNXpkQ0JtYVc1aGJFOWlhbVZqZERvZ1lXNTVJRDBnZTMwN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCd1lXbHlJRzltSUhCaGFYSnpLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQjdJR3RsZVN3Z2RtRnNkV1VnZlNBOUlIQmhhWEk3WEc0Z0lDQWdJQ0JwWmlBb2EyVjVMbk4wWVhSMWN5QTlQVDBnWENKaFltOXlkR1ZrWENJcElISmxkSFZ5YmlCSlRsWkJURWxFTzF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsTG5OMFlYUjFjeUE5UFQwZ1hDSmhZbTl5ZEdWa1hDSXBJSEpsZEhWeWJpQkpUbFpCVEVsRU8xeHVJQ0FnSUNBZ2FXWWdLR3RsZVM1emRHRjBkWE1nUFQwOUlGd2laR2x5ZEhsY0lpa2djM1JoZEhWekxtUnBjblI1S0NrN1hHNGdJQ0FnSUNCcFppQW9kbUZzZFdVdWMzUmhkSFZ6SUQwOVBTQmNJbVJwY25SNVhDSXBJSE4wWVhSMWN5NWthWEowZVNncE8xeHVYRzRnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSFpoYkhWbExuWmhiSFZsSUNFOVBTQmNJblZ1WkdWbWFXNWxaRndpSUh4OElIQmhhWEl1WVd4M1lYbHpVMlYwS1NCN1hHNGdJQ0FnSUNBZ0lHWnBibUZzVDJKcVpXTjBXMnRsZVM1MllXeDFaVjBnUFNCMllXeDFaUzUyWVd4MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZXlCemRHRjBkWE02SUhOMFlYUjFjeTUyWVd4MVpTd2dkbUZzZFdVNklHWnBibUZzVDJKcVpXTjBJSDA3WEc0Z0lIMWNibjFjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVUdGeWMyVlNaWE4xYkhRZ2UxeHVJQ0J6ZEdGMGRYTTZJRndpWVdKdmNuUmxaRndpSUh3Z1hDSmthWEowZVZ3aUlId2dYQ0oyWVd4cFpGd2lPMXh1SUNCa1lYUmhPaUJoYm5rN1hHNTlYRzVjYm1WNGNHOXlkQ0IwZVhCbElFbE9Wa0ZNU1VRZ1BTQjdJSE4wWVhSMWN6b2dYQ0poWW05eWRHVmtYQ0lnZlR0Y2JtVjRjRzl5ZENCamIyNXpkQ0JKVGxaQlRFbEVPaUJKVGxaQlRFbEVJRDBnVDJKcVpXTjBMbVp5WldWNlpTaDdYRzRnSUhOMFlYUjFjem9nWENKaFltOXlkR1ZrWENJc1hHNTlLVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdSRWxTVkZrOFZENGdQU0I3SUhOMFlYUjFjem9nWENKa2FYSjBlVndpT3lCMllXeDFaVG9nVkNCOU8xeHVaWGh3YjNKMElHTnZibk4wSUVSSlVsUlpJRDBnUEZRK0tIWmhiSFZsT2lCVUtUb2dSRWxTVkZrOFZENGdQVDRnS0hzZ2MzUmhkSFZ6T2lCY0ltUnBjblI1WENJc0lIWmhiSFZsSUgwcE8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCUFN6eFVQaUE5SUhzZ2MzUmhkSFZ6T2lCY0luWmhiR2xrWENJN0lIWmhiSFZsT2lCVUlIMDdYRzVsZUhCdmNuUWdZMjl1YzNRZ1Qwc2dQU0E4VkQ0b2RtRnNkV1U2SUZRcE9pQlBTenhVUGlBOVBpQW9leUJ6ZEdGMGRYTTZJRndpZG1Gc2FXUmNJaXdnZG1Gc2RXVWdmU2s3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRk41Ym1OUVlYSnpaVkpsZEhWeWJsUjVjR1U4VkNBOUlHRnVlVDRnUFNCUFN6eFVQaUI4SUVSSlVsUlpQRlErSUh3Z1NVNVdRVXhKUkR0Y2JtVjRjRzl5ZENCMGVYQmxJRUZ6ZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEZRK0lEMGdVSEp2YldselpUeFRlVzVqVUdGeWMyVlNaWFIxY201VWVYQmxQRlErUGp0Y2JtVjRjRzl5ZENCMGVYQmxJRkJoY25ObFVtVjBkWEp1Vkhsd1pUeFVQaUE5WEc0Z0lId2dVM2x1WTFCaGNuTmxVbVYwZFhKdVZIbHdaVHhVUGx4dUlDQjhJRUZ6ZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEZRK08xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTkJZbTl5ZEdWa0lEMGdLSGc2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHhoYm5rK0tUb2dlQ0JwY3lCSlRsWkJURWxFSUQwK1hHNGdJQ2g0SUdGeklHRnVlU2t1YzNSaGRIVnpJRDA5UFNCY0ltRmliM0owWldSY0lqdGNibVY0Y0c5eWRDQmpiMjV6ZENCcGMwUnBjblI1SUQwZ1BGUStLSGc2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHhVUGlrNklIZ2dhWE1nVDBzOFZENGdmQ0JFU1ZKVVdUeFVQaUE5UGx4dUlDQW9lQ0JoY3lCaGJua3BMbk4wWVhSMWN5QTlQVDBnWENKa2FYSjBlVndpTzF4dVpYaHdiM0owSUdOdmJuTjBJR2x6Vm1Gc2FXUWdQU0E4VkQ0b2VEb2dVR0Z5YzJWU1pYUjFjbTVVZVhCbFBGUStLVG9nZUNCcGN5QlBTenhVUGlCOElFUkpVbFJaUEZRK0lEMCtYRzRnSUNoNElHRnpJR0Z1ZVNrdWMzUmhkSFZ6SUQwOVBTQmNJblpoYkdsa1hDSTdYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTkJjM2x1WXlBOUlEeFVQaWhjYmlBZ2VEb2dVR0Z5YzJWU1pYUjFjbTVVZVhCbFBGUStYRzRwT2lCNElHbHpJRUZ6ZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEZRK0lEMCtYRzRnSUhSNWNHVnZaaUJRY205dGFYTmxJQ0U5UFNCMWJtUmxabWx1WldRZ0ppWWdlQ0JwYm5OMFlXNWpaVzltSUZCeWIyMXBjMlU3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JxYzI5dVUzUnlhVzVuYVdaNVVtVndiR0ZqWlhJZ1BTQW9Yem9nYzNSeWFXNW5MQ0IyWVd4MVpUb2dZVzU1S1RvZ1lXNTVJRDArSUh0Y2JpQWdhV1lnS0hSNWNHVnZaaUIyWVd4MVpTQTlQVDBnWENKaWFXZHBiblJjSWlrZ2UxeHVJQ0FnSUhKbGRIVnliaUIyWVd4MVpTNTBiMU4wY21sdVp5Z3BPMXh1SUNCOVhHNGdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JuMDdYRzRpTENKcGJYQnZjblFnZEhsd1pTQjdJRlI1Y0dWUFppd2dXbTlrVkhsd1pTQjlJR1p5YjIwZ1hDSXVMMmx1WkdWNExuUnpYQ0k3WEc1cGJYQnZjblFnZXlCcWMyOXVVM1J5YVc1bmFXWjVVbVZ3YkdGalpYSWdmU0JtY205dElGd2lMaTlvWld4d1pYSnpMM0JoY25ObFZYUnBiQzUwYzF3aU8xeHVhVzF3YjNKMElIc2dVSEpwYldsMGFYWmxJSDBnWm5KdmJTQmNJaTR2YUdWc2NHVnljeTkwZVhCbFFXeHBZWE5sY3k1MGMxd2lPMXh1YVcxd2IzSjBJSHNnZFhScGJDd2dXbTlrVUdGeWMyVmtWSGx3WlNCOUlHWnliMjBnWENJdUwyaGxiSEJsY25NdmRYUnBiQzUwYzF3aU8xeHVYRzUwZVhCbElHRnNiRXRsZVhNOFZENGdQU0JVSUdWNGRHVnVaSE1nWVc1NUlEOGdhMlY1YjJZZ1ZDQTZJRzVsZG1WeU8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCcGJtWmxja1pzWVhSMFpXNWxaRVZ5Y205eWN6eGNiaUFnVkNCbGVIUmxibVJ6SUZwdlpGUjVjR1U4WVc1NUxDQmhibmtzSUdGdWVUNHNYRzRnSUZVZ1BTQnpkSEpwYm1kY2JqNGdQU0IwZVhCbFZHOUdiR0YwZEdWdVpXUkZjbkp2Y2p4VWVYQmxUMlk4VkQ0c0lGVStPMXh1Wlhod2IzSjBJSFI1Y0dVZ2RIbHdaVlJ2Um14aGRIUmxibVZrUlhKeWIzSThWQ3dnVlNBOUlITjBjbWx1Wno0Z1BTQjdYRzRnSUdadmNtMUZjbkp2Y25NNklGVmJYVHRjYmlBZ1ptbGxiR1JGY25KdmNuTTZJSHRjYmlBZ0lDQmJVQ0JwYmlCaGJHeExaWGx6UEZRK1hUODZJRlZiWFR0Y2JpQWdmVHRjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCYWIyUkpjM04xWlVOdlpHVWdQU0IxZEdsc0xtRnljbUY1Vkc5RmJuVnRLRnRjYmlBZ1hDSnBiblpoYkdsa1gzUjVjR1ZjSWl4Y2JpQWdYQ0pwYm5aaGJHbGtYMnhwZEdWeVlXeGNJaXhjYmlBZ1hDSmpkWE4wYjIxY0lpeGNiaUFnWENKcGJuWmhiR2xrWDNWdWFXOXVYQ0lzWEc0Z0lGd2lhVzUyWVd4cFpGOTFibWx2Ymw5a2FYTmpjbWx0YVc1aGRHOXlYQ0lzWEc0Z0lGd2lhVzUyWVd4cFpGOWxiblZ0WDNaaGJIVmxYQ0lzWEc0Z0lGd2lkVzV5WldOdloyNXBlbVZrWDJ0bGVYTmNJaXhjYmlBZ1hDSnBiblpoYkdsa1gyRnlaM1Z0Wlc1MGMxd2lMRnh1SUNCY0ltbHVkbUZzYVdSZmNtVjBkWEp1WDNSNWNHVmNJaXhjYmlBZ1hDSnBiblpoYkdsa1gyUmhkR1ZjSWl4Y2JpQWdYQ0pwYm5aaGJHbGtYM04wY21sdVoxd2lMRnh1SUNCY0luUnZiMTl6YldGc2JGd2lMRnh1SUNCY0luUnZiMTlpYVdkY0lpeGNiaUFnWENKcGJuWmhiR2xrWDJsdWRHVnljMlZqZEdsdmJsOTBlWEJsYzF3aUxGeHVJQ0JjSW01dmRGOXRkV3gwYVhCc1pWOXZabHdpTEZ4dVhTazdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGcHZaRWx6YzNWbFEyOWtaU0E5SUd0bGVXOW1JSFI1Y0dWdlppQmFiMlJKYzNOMVpVTnZaR1U3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRnB2WkVsemMzVmxRbUZ6WlNBOUlIdGNiaUFnY0dGMGFEb2dLSE4wY21sdVp5QjhJRzUxYldKbGNpbGJYVHRjYmlBZ2JXVnpjMkZuWlQ4NklITjBjbWx1Wnp0Y2JuMDdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnV205a1NXNTJZV3hwWkZSNWNHVkpjM04xWlNCbGVIUmxibVJ6SUZwdlpFbHpjM1ZsUW1GelpTQjdYRzRnSUdOdlpHVTZJSFI1Y0dWdlppQmFiMlJKYzNOMVpVTnZaR1V1YVc1MllXeHBaRjkwZVhCbE8xeHVJQ0JsZUhCbFkzUmxaRG9nV205a1VHRnljMlZrVkhsd1pUdGNiaUFnY21WalpXbDJaV1E2SUZwdlpGQmhjbk5sWkZSNWNHVTdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtTVzUyWVd4cFpFeHBkR1Z5WVd4SmMzTjFaU0JsZUhSbGJtUnpJRnB2WkVsemMzVmxRbUZ6WlNCN1hHNGdJR052WkdVNklIUjVjR1Z2WmlCYWIyUkpjM04xWlVOdlpHVXVhVzUyWVd4cFpGOXNhWFJsY21Gc08xeHVJQ0JsZUhCbFkzUmxaRG9nZFc1cmJtOTNianRjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQmFiMlJWYm5KbFkyOW5ibWw2WldSTFpYbHpTWE56ZFdVZ1pYaDBaVzVrY3lCYWIyUkpjM04xWlVKaGMyVWdlMXh1SUNCamIyUmxPaUIwZVhCbGIyWWdXbTlrU1hOemRXVkRiMlJsTG5WdWNtVmpiMmR1YVhwbFpGOXJaWGx6TzF4dUlDQnJaWGx6T2lCemRISnBibWRiWFR0Y2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJSSmJuWmhiR2xrVlc1cGIyNUpjM04xWlNCbGVIUmxibVJ6SUZwdlpFbHpjM1ZsUW1GelpTQjdYRzRnSUdOdlpHVTZJSFI1Y0dWdlppQmFiMlJKYzNOMVpVTnZaR1V1YVc1MllXeHBaRjkxYm1sdmJqdGNiaUFnZFc1cGIyNUZjbkp2Y25NNklGcHZaRVZ5Y205eVcxMDdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtTVzUyWVd4cFpGVnVhVzl1UkdselkzSnBiV2x1WVhSdmNrbHpjM1ZsSUdWNGRHVnVaSE1nV205a1NYTnpkV1ZDWVhObElIdGNiaUFnWTI5a1pUb2dkSGx3Wlc5bUlGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM1Z1YVc5dVgyUnBjMk55YVcxcGJtRjBiM0k3WEc0Z0lHOXdkR2x2Ym5NNklGQnlhVzFwZEdsMlpWdGRPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGcHZaRWx1ZG1Gc2FXUkZiblZ0Vm1Gc2RXVkpjM04xWlNCbGVIUmxibVJ6SUZwdlpFbHpjM1ZsUW1GelpTQjdYRzRnSUhKbFkyVnBkbVZrT2lCemRISnBibWNnZkNCdWRXMWlaWEk3WEc0Z0lHTnZaR1U2SUhSNWNHVnZaaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5bGJuVnRYM1poYkhWbE8xeHVJQ0J2Y0hScGIyNXpPaUFvYzNSeWFXNW5JSHdnYm5WdFltVnlLVnRkTzF4dWZWeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkVsdWRtRnNhV1JCY21kMWJXVnVkSE5KYzNOMVpTQmxlSFJsYm1SeklGcHZaRWx6YzNWbFFtRnpaU0I3WEc0Z0lHTnZaR1U2SUhSNWNHVnZaaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5aGNtZDFiV1Z1ZEhNN1hHNGdJR0Z5WjNWdFpXNTBjMFZ5Y205eU9pQmFiMlJGY25KdmNqdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCYWIyUkpiblpoYkdsa1VtVjBkWEp1Vkhsd1pVbHpjM1ZsSUdWNGRHVnVaSE1nV205a1NYTnpkV1ZDWVhObElIdGNiaUFnWTI5a1pUb2dkSGx3Wlc5bUlGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM0psZEhWeWJsOTBlWEJsTzF4dUlDQnlaWFIxY201VWVYQmxSWEp5YjNJNklGcHZaRVZ5Y205eU8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZwdlpFbHVkbUZzYVdSRVlYUmxTWE56ZFdVZ1pYaDBaVzVrY3lCYWIyUkpjM04xWlVKaGMyVWdlMXh1SUNCamIyUmxPaUIwZVhCbGIyWWdXbTlrU1hOemRXVkRiMlJsTG1sdWRtRnNhV1JmWkdGMFpUdGNibjFjYmx4dVpYaHdiM0owSUhSNWNHVWdVM1J5YVc1blZtRnNhV1JoZEdsdmJpQTlYRzRnSUh3Z1hDSmxiV0ZwYkZ3aVhHNGdJSHdnWENKMWNteGNJbHh1SUNCOElGd2lkWFZwWkZ3aVhHNGdJSHdnWENKeVpXZGxlRndpWEc0Z0lId2dYQ0pqZFdsa1hDSmNiaUFnZkNCN0lITjBZWEowYzFkcGRHZzZJSE4wY21sdVp5QjlYRzRnSUh3Z2V5QmxibVJ6VjJsMGFEb2djM1J5YVc1bklIMDdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnV205a1NXNTJZV3hwWkZOMGNtbHVaMGx6YzNWbElHVjRkR1Z1WkhNZ1dtOWtTWE56ZFdWQ1lYTmxJSHRjYmlBZ1kyOWtaVG9nZEhsd1pXOW1JRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDNOMGNtbHVaenRjYmlBZ2RtRnNhV1JoZEdsdmJqb2dVM1J5YVc1blZtRnNhV1JoZEdsdmJqdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCYWIyUlViMjlUYldGc2JFbHpjM1ZsSUdWNGRHVnVaSE1nV205a1NYTnpkV1ZDWVhObElIdGNiaUFnWTI5a1pUb2dkSGx3Wlc5bUlGcHZaRWx6YzNWbFEyOWtaUzUwYjI5ZmMyMWhiR3c3WEc0Z0lHMXBibWx0ZFcwNklHNTFiV0psY2p0Y2JpQWdhVzVqYkhWemFYWmxPaUJpYjI5c1pXRnVPMXh1SUNCMGVYQmxPaUJjSW1GeWNtRjVYQ0lnZkNCY0luTjBjbWx1WjF3aUlId2dYQ0p1ZFcxaVpYSmNJaUI4SUZ3aWMyVjBYQ0lnZkNCY0ltUmhkR1ZjSWp0Y2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJSVWIyOUNhV2RKYzNOMVpTQmxlSFJsYm1SeklGcHZaRWx6YzNWbFFtRnpaU0I3WEc0Z0lHTnZaR1U2SUhSNWNHVnZaaUJhYjJSSmMzTjFaVU52WkdVdWRHOXZYMkpwWnp0Y2JpQWdiV0Y0YVcxMWJUb2diblZ0WW1WeU8xeHVJQ0JwYm1Oc2RYTnBkbVU2SUdKdmIyeGxZVzQ3WEc0Z0lIUjVjR1U2SUZ3aVlYSnlZWGxjSWlCOElGd2ljM1J5YVc1blhDSWdmQ0JjSW01MWJXSmxjbHdpSUh3Z1hDSnpaWFJjSWlCOElGd2laR0YwWlZ3aU8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZwdlpFbHVkbUZzYVdSSmJuUmxjbk5sWTNScGIyNVVlWEJsYzBsemMzVmxJR1Y0ZEdWdVpITWdXbTlrU1hOemRXVkNZWE5sSUh0Y2JpQWdZMjlrWlRvZ2RIbHdaVzltSUZwdlpFbHpjM1ZsUTI5a1pTNXBiblpoYkdsa1gybHVkR1Z5YzJWamRHbHZibDkwZVhCbGN6dGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCYWIyUk9iM1JOZFd4MGFYQnNaVTltU1hOemRXVWdaWGgwWlc1a2N5QmFiMlJKYzNOMVpVSmhjMlVnZTF4dUlDQmpiMlJsT2lCMGVYQmxiMllnV205a1NYTnpkV1ZEYjJSbExtNXZkRjl0ZFd4MGFYQnNaVjl2Wmp0Y2JpQWdiWFZzZEdsd2JHVlBaam9nYm5WdFltVnlPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGcHZaRU4xYzNSdmJVbHpjM1ZsSUdWNGRHVnVaSE1nV205a1NYTnpkV1ZDWVhObElIdGNiaUFnWTI5a1pUb2dkSGx3Wlc5bUlGcHZaRWx6YzNWbFEyOWtaUzVqZFhOMGIyMDdYRzRnSUhCaGNtRnRjejg2SUhzZ1cyczZJSE4wY21sdVoxMDZJR0Z1ZVNCOU8xeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQkVaVzV2Y20xaGJHbDZaV1JGY25KdmNpQTlJSHNnVzJzNklITjBjbWx1WjEwNklFUmxibTl5YldGc2FYcGxaRVZ5Y205eUlId2djM1J5YVc1blcxMGdmVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdXbTlrU1hOemRXVlBjSFJwYjI1aGJFMWxjM05oWjJVZ1BWeHVJQ0I4SUZwdlpFbHVkbUZzYVdSVWVYQmxTWE56ZFdWY2JpQWdmQ0JhYjJSSmJuWmhiR2xrVEdsMFpYSmhiRWx6YzNWbFhHNGdJSHdnV205a1ZXNXlaV052WjI1cGVtVmtTMlY1YzBsemMzVmxYRzRnSUh3Z1dtOWtTVzUyWVd4cFpGVnVhVzl1U1hOemRXVmNiaUFnZkNCYWIyUkpiblpoYkdsa1ZXNXBiMjVFYVhOamNtbHRhVzVoZEc5eVNYTnpkV1ZjYmlBZ2ZDQmFiMlJKYm5aaGJHbGtSVzUxYlZaaGJIVmxTWE56ZFdWY2JpQWdmQ0JhYjJSSmJuWmhiR2xrUVhKbmRXMWxiblJ6U1hOemRXVmNiaUFnZkNCYWIyUkpiblpoYkdsa1VtVjBkWEp1Vkhsd1pVbHpjM1ZsWEc0Z0lId2dXbTlrU1c1MllXeHBaRVJoZEdWSmMzTjFaVnh1SUNCOElGcHZaRWx1ZG1Gc2FXUlRkSEpwYm1kSmMzTjFaVnh1SUNCOElGcHZaRlJ2YjFOdFlXeHNTWE56ZFdWY2JpQWdmQ0JhYjJSVWIyOUNhV2RKYzNOMVpWeHVJQ0I4SUZwdlpFbHVkbUZzYVdSSmJuUmxjbk5sWTNScGIyNVVlWEJsYzBsemMzVmxYRzRnSUh3Z1dtOWtUbTkwVFhWc2RHbHdiR1ZQWmtsemMzVmxYRzRnSUh3Z1dtOWtRM1Z6ZEc5dFNYTnpkV1U3WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRnB2WkVsemMzVmxJRDBnV205a1NYTnpkV1ZQY0hScGIyNWhiRTFsYzNOaFoyVWdKaUI3SUcxbGMzTmhaMlU2SUhOMGNtbHVaeUI5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnY1hWdmRHVnNaWE56U25OdmJpQTlJQ2h2WW1vNklHRnVlU2tnUFQ0Z2UxeHVJQ0JqYjI1emRDQnFjMjl1SUQwZ1NsTlBUaTV6ZEhKcGJtZHBabmtvYjJKcUxDQnVkV3hzTENBeUtUdGNiaUFnY21WMGRYSnVJR3B6YjI0dWNtVndiR0ZqWlNndlhDSW9XMTVjSWwwcktWd2lPaTluTENCY0lpUXhPbHdpS1R0Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGcHZaRVp2Y20xaGRIUmxaRVZ5Y205eVBGUXNJRlVnUFNCemRISnBibWMrSUQwZ2UxeHVJQ0JmWlhKeWIzSnpPaUJWVzEwN1hHNTlJQ1lnS0ZRZ1pYaDBaVzVrY3lCYllXNTVMQ0F1TGk1aGJubGJYVjFjYmlBZ1B5QjdJRnRMSUdsdUlHdGxlVzltSUZSZFB6b2dXbTlrUm05eWJXRjBkR1ZrUlhKeWIzSThWRnRMWFQ0Z2ZWeHVJQ0E2SUZRZ1pYaDBaVzVrY3lCaGJubGJYVnh1SUNBL0lIc2dXMnM2SUc1MWJXSmxjbDA2SUZwdlpFWnZjbTFoZEhSbFpFVnljbTl5UEZSYmJuVnRZbVZ5WFQ0Z2ZWeHVJQ0E2SUZRZ1pYaDBaVzVrY3lCdlltcGxZM1JjYmlBZ1B5QjdJRnRMSUdsdUlHdGxlVzltSUZSZFB6b2dXbTlrUm05eWJXRjBkR1ZrUlhKeWIzSThWRnRMWFQ0Z2ZWeHVJQ0E2SUhWdWEyNXZkMjRwTzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JwYm1abGNrWnZjbTFoZEhSbFpFVnljbTl5UEZ4dUlDQlVJR1Y0ZEdWdVpITWdXbTlrVkhsd1pUeGhibmtzSUdGdWVTd2dZVzU1UGl4Y2JpQWdWU0E5SUhOMGNtbHVaMXh1UGlBOUlGcHZaRVp2Y20xaGRIUmxaRVZ5Y205eVBGUjVjR1ZQWmp4VVBpd2dWVDQ3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJhYjJSRmNuSnZjanhVSUQwZ1lXNTVQaUJsZUhSbGJtUnpJRVZ5Y205eUlIdGNiaUFnYVhOemRXVnpPaUJhYjJSSmMzTjFaVnRkSUQwZ1cxMDdYRzVjYmlBZ1oyVjBJR1Z5Y205eWN5Z3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVwYzNOMVpYTTdYRzRnSUgxY2JseHVJQ0JqYjI1emRISjFZM1J2Y2locGMzTjFaWE02SUZwdlpFbHpjM1ZsVzEwcElIdGNiaUFnSUNCemRYQmxjaWdwTzF4dVhHNGdJQ0FnWTI5dWMzUWdZV04wZFdGc1VISnZkRzhnUFNCdVpYY3VkR0Z5WjJWMExuQnliM1J2ZEhsd1pUdGNiaUFnSUNCcFppQW9UMkpxWldOMExuTmxkRkJ5YjNSdmRIbHdaVTltS1NCN1hHNGdJQ0FnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ1ltRnVMMkpoYmx4dUlDQWdJQ0FnVDJKcVpXTjBMbk5sZEZCeWIzUnZkSGx3WlU5bUtIUm9hWE1zSUdGamRIVmhiRkJ5YjNSdktUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnS0hSb2FYTWdZWE1nWVc1NUtTNWZYM0J5YjNSdlgxOGdQU0JoWTNSMVlXeFFjbTkwYnp0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1dVlXMWxJRDBnWENKYWIyUkZjbkp2Y2x3aU8xeHVJQ0FnSUhSb2FYTXVhWE56ZFdWeklEMGdhWE56ZFdWek8xeHVJQ0I5WEc1Y2JpQWdabTl5YldGMEtDazZJRnB2WkVadmNtMWhkSFJsWkVWeWNtOXlQRlErTzF4dUlDQm1iM0p0WVhROFZUNG9iV0Z3Y0dWeU9pQW9hWE56ZFdVNklGcHZaRWx6YzNWbEtTQTlQaUJWS1RvZ1dtOWtSbTl5YldGMGRHVmtSWEp5YjNJOFZDd2dWVDQ3WEc0Z0lHWnZjbTFoZENoZmJXRndjR1Z5UHpvZ1lXNTVLU0I3WEc0Z0lDQWdZMjl1YzNRZ2JXRndjR1Z5T2lBb2FYTnpkV1U2SUZwdlpFbHpjM1ZsS1NBOVBpQmhibmtnUFZ4dUlDQWdJQ0FnWDIxaGNIQmxjaUI4ZkZ4dUlDQWdJQ0FnWm5WdVkzUnBiMjRnS0dsemMzVmxPaUJhYjJSSmMzTjFaU2tnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnYVhOemRXVXViV1Z6YzJGblpUdGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ1kyOXVjM1FnWm1sbGJHUkZjbkp2Y25NNklGcHZaRVp2Y20xaGRIUmxaRVZ5Y205eVBGUStJRDBnZXlCZlpYSnliM0p6T2lCYlhTQjlJR0Z6SUdGdWVUdGNiaUFnSUNCamIyNXpkQ0J3Y205alpYTnpSWEp5YjNJZ1BTQW9aWEp5YjNJNklGcHZaRVZ5Y205eUtTQTlQaUI3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUdsemMzVmxJRzltSUdWeWNtOXlMbWx6YzNWbGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2FYTnpkV1V1WTI5a1pTQTlQVDBnWENKcGJuWmhiR2xrWDNWdWFXOXVYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBjM04xWlM1MWJtbHZia1Z5Y205eWN5NXRZWEFvY0hKdlkyVnpjMFZ5Y205eUtUdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hwYzNOMVpTNWpiMlJsSUQwOVBTQmNJbWx1ZG1Gc2FXUmZjbVYwZFhKdVgzUjVjR1ZjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTkZjbkp2Y2locGMzTjFaUzV5WlhSMWNtNVVlWEJsUlhKeWIzSXBPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dsemMzVmxMbU52WkdVZ1BUMDlJRndpYVc1MllXeHBaRjloY21kMWJXVnVkSE5jSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEJ5YjJObGMzTkZjbkp2Y2locGMzTjFaUzVoY21kMWJXVnVkSE5GY25KdmNpazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvYVhOemRXVXVjR0YwYUM1c1pXNW5kR2dnUFQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNBb1ptbGxiR1JGY25KdmNuTWdZWE1nWVc1NUtTNWZaWEp5YjNKekxuQjFjMmdvYldGd2NHVnlLR2x6YzNWbEtTazdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnYkdWMElHTjFjbkk2SUdGdWVTQTlJR1pwWld4a1JYSnliM0p6TzF4dUlDQWdJQ0FnSUNBZ0lHeGxkQ0JwSUQwZ01EdGNiaUFnSUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E4SUdsemMzVmxMbkJoZEdndWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emRDQmxiQ0E5SUdsemMzVmxMbkJoZEdoYmFWMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpkQ0IwWlhKdGFXNWhiQ0E5SUdrZ1BUMDlJR2x6YzNWbExuQmhkR2d1YkdWdVozUm9JQzBnTVR0Y2JseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRjBaWEp0YVc1aGJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQmpkWEp5VzJWc1hTQTlJR04xY25KYlpXeGRJSHg4SUhzZ1gyVnljbTl5Y3pvZ1cxMGdmVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnYVdZZ0tIUjVjR1Z2WmlCbGJDQTlQVDBnWENKemRISnBibWRjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QWdJR04xY25KYlpXeGRJRDBnWTNWeWNsdGxiRjBnZkh3Z2V5QmZaWEp5YjNKek9pQmJYU0I5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCbGJDQTlQVDBnWENKdWRXMWlaWEpjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5QWdJR052Ym5OMElHVnljbTl5UVhKeVlYazZJR0Z1ZVNBOUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUFnSUdWeWNtOXlRWEp5WVhrdVgyVnljbTl5Y3lBOUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeUFnSUdOMWNuSmJaV3hkSUQwZ1kzVnljbHRsYkYwZ2ZId2daWEp5YjNKQmNuSmhlVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ1kzVnljbHRsYkYwZ1BTQmpkWEp5VzJWc1hTQjhmQ0I3SUY5bGNuSnZjbk02SUZ0ZElIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHTjFjbkpiWld4ZExsOWxjbkp2Y25NdWNIVnphQ2h0WVhCd1pYSW9hWE56ZFdVcEtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQWdJQ0FnWTNWeWNpQTlJR04xY25KYlpXeGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FTc3JPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwN1hHNWNiaUFnSUNCd2NtOWpaWE56UlhKeWIzSW9kR2hwY3lrN1hHNGdJQ0FnY21WMGRYSnVJR1pwWld4a1JYSnliM0p6TzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOeVpXRjBaU0E5SUNocGMzTjFaWE02SUZwdlpFbHpjM1ZsVzEwcElEMCtJSHRjYmlBZ0lDQmpiMjV6ZENCbGNuSnZjaUE5SUc1bGR5QmFiMlJGY25KdmNpaHBjM04xWlhNcE8xeHVJQ0FnSUhKbGRIVnliaUJsY25KdmNqdGNiaUFnZlR0Y2JseHVJQ0IwYjFOMGNtbHVaeWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1dFpYTnpZV2RsTzF4dUlDQjlYRzRnSUdkbGRDQnRaWE56WVdkbEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCS1UwOU9Mbk4wY21sdVoybG1lU2gwYUdsekxtbHpjM1ZsY3l3Z2FuTnZibE4wY21sdVoybG1lVkpsY0d4aFkyVnlMQ0F5S1R0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0JwYzBWdGNIUjVLQ2s2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1semMzVmxjeTVzWlc1bmRHZ2dQVDA5SURBN1hHNGdJSDFjYmx4dUlDQmhaR1JKYzNOMVpTQTlJQ2h6ZFdJNklGcHZaRWx6YzNWbEtTQTlQaUI3WEc0Z0lDQWdkR2hwY3k1cGMzTjFaWE1nUFNCYkxpNHVkR2hwY3k1cGMzTjFaWE1zSUhOMVlsMDdYRzRnSUgwN1hHNWNiaUFnWVdSa1NYTnpkV1Z6SUQwZ0tITjFZbk02SUZwdlpFbHpjM1ZsVzEwZ1BTQmJYU2tnUFQ0Z2UxeHVJQ0FnSUhSb2FYTXVhWE56ZFdWeklEMGdXeTR1TG5Sb2FYTXVhWE56ZFdWekxDQXVMaTV6ZFdKelhUdGNiaUFnZlR0Y2JseHVJQ0JtYkdGMGRHVnVLQ2s2SUhSNWNHVlViMFpzWVhSMFpXNWxaRVZ5Y205eVBGUStPMXh1SUNCbWJHRjBkR1Z1UEZVK0tHMWhjSEJsY2o4NklDaHBjM04xWlRvZ1dtOWtTWE56ZFdVcElEMCtJRlVwT2lCMGVYQmxWRzlHYkdGMGRHVnVaV1JGY25KdmNqeFVMQ0JWUGp0Y2JpQWdabXhoZEhSbGJqeFZJRDBnYzNSeWFXNW5QaWhjYmlBZ0lDQnRZWEJ3WlhJNklDaHBjM04xWlRvZ1dtOWtTWE56ZFdVcElEMCtJRlVnUFNBb2FYTnpkV1U2SUZwdlpFbHpjM1ZsS1NBOVBpQnBjM04xWlM1dFpYTnpZV2RsSUdGeklHRnVlVnh1SUNBcE9pQmhibmtnZTF4dUlDQWdJR052Ym5OMElHWnBaV3hrUlhKeWIzSnpPaUJoYm5rZ1BTQjdmVHRjYmlBZ0lDQmpiMjV6ZENCbWIzSnRSWEp5YjNKek9pQlZXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElITjFZaUJ2WmlCMGFHbHpMbWx6YzNWbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0hOMVlpNXdZWFJvTG14bGJtZDBhQ0ErSURBcElIdGNiaUFnSUNBZ0lDQWdabWxsYkdSRmNuSnZjbk5iYzNWaUxuQmhkR2hiTUYxZElEMGdabWxsYkdSRmNuSnZjbk5iYzNWaUxuQmhkR2hiTUYxZElIeDhJRnRkTzF4dUlDQWdJQ0FnSUNCbWFXVnNaRVZ5Y205eWMxdHpkV0l1Y0dGMGFGc3dYVjB1Y0hWemFDaHRZWEJ3WlhJb2MzVmlLU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0JtYjNKdFJYSnliM0p6TG5CMWMyZ29iV0Z3Y0dWeUtITjFZaWtwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2V5Qm1iM0p0UlhKeWIzSnpMQ0JtYVdWc1pFVnljbTl5Y3lCOU8xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdadmNtMUZjbkp2Y25Nb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVabXhoZEhSbGJpZ3BPMXh1SUNCOVhHNTlYRzVjYm5SNWNHVWdjM1J5YVhCUVlYUm9QRlFnWlhoMFpXNWtjeUJ2WW1wbFkzUStJRDBnVkNCbGVIUmxibVJ6SUdGdWVWeHVJQ0EvSUhWMGFXd3VUMjFwZEV0bGVYTThWQ3dnWENKd1lYUm9YQ0krWEc0Z0lEb2dibVYyWlhJN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUVsemMzVmxSR0YwWVNBOUlITjBjbWx3VUdGMGFEeGFiMlJKYzNOMVpVOXdkR2x2Ym1Gc1RXVnpjMkZuWlQ0Z0ppQjdYRzRnSUhCaGRHZy9PaUFvYzNSeWFXNW5JSHdnYm5WdFltVnlLVnRkTzF4dUlDQm1ZWFJoYkQ4NklHSnZiMnhsWVc0N1hHNTlPMXh1Wlhod2IzSjBJSFI1Y0dVZ1RXRnJaVVZ5Y205eVJHRjBZU0E5SUVsemMzVmxSR0YwWVR0Y2JseHVkSGx3WlNCRmNuSnZjazFoY0VOMGVDQTlJSHRjYmlBZ1pHVm1ZWFZzZEVWeWNtOXlPaUJ6ZEhKcGJtYzdYRzRnSUdSaGRHRTZJR0Z1ZVR0Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGcHZaRVZ5Y205eVRXRndJRDBnZEhsd1pXOW1JR1JsWm1GMWJIUkZjbkp2Y2sxaGNEdGNibVY0Y0c5eWRDQmpiMjV6ZENCa1pXWmhkV3gwUlhKeWIzSk5ZWEFnUFNBb1hHNGdJR2x6YzNWbE9pQmFiMlJKYzNOMVpVOXdkR2x2Ym1Gc1RXVnpjMkZuWlN4Y2JpQWdYMk4wZURvZ1JYSnliM0pOWVhCRGRIaGNiaWs2SUhzZ2JXVnpjMkZuWlRvZ2MzUnlhVzVuSUgwZ1BUNGdlMXh1SUNCc1pYUWdiV1Z6YzJGblpUb2djM1J5YVc1bk8xeHVJQ0J6ZDJsMFkyZ2dLR2x6YzNWbExtTnZaR1VwSUh0Y2JpQWdJQ0JqWVhObElGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM1I1Y0dVNlhHNGdJQ0FnSUNCcFppQW9hWE56ZFdVdWNtVmpaV2wyWldRZ1BUMDlJRnB2WkZCaGNuTmxaRlI1Y0dVdWRXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQWdJRzFsYzNOaFoyVWdQU0JjSWxKbGNYVnBjbVZrWENJN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCdFpYTnpZV2RsSUQwZ1lFVjRjR1ZqZEdWa0lDUjdhWE56ZFdVdVpYaHdaV04wWldSOUxDQnlaV05sYVhabFpDQWtlMmx6YzNWbExuSmxZMlZwZG1Wa2ZXQTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYMnhwZEdWeVlXdzZYRzRnSUNBZ0lDQnRaWE56WVdkbElEMGdZRWx1ZG1Gc2FXUWdiR2wwWlhKaGJDQjJZV3gxWlN3Z1pYaHdaV04wWldRZ0pIdEtVMDlPTG5OMGNtbHVaMmxtZVNoY2JpQWdJQ0FnSUNBZ2FYTnpkV1V1Wlhod1pXTjBaV1FzWEc0Z0lDQWdJQ0FnSUdwemIyNVRkSEpwYm1kcFpubFNaWEJzWVdObGNseHVJQ0FnSUNBZ0tYMWdPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQmFiMlJKYzNOMVpVTnZaR1V1ZFc1eVpXTnZaMjVwZW1Wa1gydGxlWE02WEc0Z0lDQWdJQ0J0WlhOellXZGxJRDBnWUZWdWNtVmpiMmR1YVhwbFpDQnJaWGtvY3lrZ2FXNGdiMkpxWldOME9pQWtlM1YwYVd3dWFtOXBibFpoYkhWbGN5aGNiaUFnSUNBZ0lDQWdhWE56ZFdVdWEyVjVjeXhjYmlBZ0lDQWdJQ0FnWENJc0lGd2lYRzRnSUNBZ0lDQXBmV0E3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDNWdWFXOXVPbHh1SUNBZ0lDQWdiV1Z6YzJGblpTQTlJR0JKYm5aaGJHbGtJR2x1Y0hWMFlEdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR05oYzJVZ1dtOWtTWE56ZFdWRGIyUmxMbWx1ZG1Gc2FXUmZkVzVwYjI1ZlpHbHpZM0pwYldsdVlYUnZjanBjYmlBZ0lDQWdJRzFsYzNOaFoyVWdQU0JnU1c1MllXeHBaQ0JrYVhOamNtbHRhVzVoZEc5eUlIWmhiSFZsTGlCRmVIQmxZM1JsWkNBa2UzVjBhV3d1YW05cGJsWmhiSFZsY3loY2JpQWdJQ0FnSUNBZ2FYTnpkV1V1YjNCMGFXOXVjMXh1SUNBZ0lDQWdLWDFnTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0JhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5bGJuVnRYM1poYkhWbE9seHVJQ0FnSUNBZ2JXVnpjMkZuWlNBOUlHQkpiblpoYkdsa0lHVnVkVzBnZG1Gc2RXVXVJRVY0Y0dWamRHVmtJQ1I3ZFhScGJDNXFiMmx1Vm1Gc2RXVnpLRnh1SUNBZ0lDQWdJQ0JwYzNOMVpTNXZjSFJwYjI1elhHNGdJQ0FnSUNBcGZTd2djbVZqWldsMlpXUWdKeVI3YVhOemRXVXVjbVZqWldsMlpXUjlKMkE3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDJGeVozVnRaVzUwY3pwY2JpQWdJQ0FnSUcxbGMzTmhaMlVnUFNCZ1NXNTJZV3hwWkNCbWRXNWpkR2x2YmlCaGNtZDFiV1Z1ZEhOZ08xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNCYWIyUkpjM04xWlVOdlpHVXVhVzUyWVd4cFpGOXlaWFIxY201ZmRIbHdaVHBjYmlBZ0lDQWdJRzFsYzNOaFoyVWdQU0JnU1c1MllXeHBaQ0JtZFc1amRHbHZiaUJ5WlhSMWNtNGdkSGx3WldBN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUZwdlpFbHpjM1ZsUTI5a1pTNXBiblpoYkdsa1gyUmhkR1U2WEc0Z0lDQWdJQ0J0WlhOellXZGxJRDBnWUVsdWRtRnNhV1FnWkdGMFpXQTdYRzRnSUNBZ0lDQmljbVZoYXp0Y2JpQWdJQ0JqWVhObElGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM04wY21sdVp6cGNiaUFnSUNBZ0lHbG1JQ2gwZVhCbGIyWWdhWE56ZFdVdWRtRnNhV1JoZEdsdmJpQTlQVDBnWENKdlltcGxZM1JjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWENKemRHRnlkSE5YYVhSb1hDSWdhVzRnYVhOemRXVXVkbUZzYVdSaGRHbHZiaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHMWxjM05oWjJVZ1BTQmdTVzUyWVd4cFpDQnBibkIxZERvZ2JYVnpkQ0J6ZEdGeWRDQjNhWFJvSUZ3aUpIdHBjM04xWlM1MllXeHBaR0YwYVc5dUxuTjBZWEowYzFkcGRHaDlYQ0pnTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tGd2laVzVrYzFkcGRHaGNJaUJwYmlCcGMzTjFaUzUyWVd4cFpHRjBhVzl1S1NCN1hHNGdJQ0FnSUNBZ0lDQWdiV1Z6YzJGblpTQTlJR0JKYm5aaGJHbGtJR2x1Y0hWME9pQnRkWE4wSUdWdVpDQjNhWFJvSUZ3aUpIdHBjM04xWlM1MllXeHBaR0YwYVc5dUxtVnVaSE5YYVhSb2ZWd2lZRHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCMWRHbHNMbUZ6YzJWeWRFNWxkbVZ5S0dsemMzVmxMblpoYkdsa1lYUnBiMjRwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHbHpjM1ZsTG5aaGJHbGtZWFJwYjI0Z0lUMDlJRndpY21WblpYaGNJaWtnZTF4dUlDQWdJQ0FnSUNCdFpYTnpZV2RsSUQwZ1lFbHVkbUZzYVdRZ0pIdHBjM04xWlM1MllXeHBaR0YwYVc5dWZXQTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnRaWE56WVdkbElEMGdYQ0pKYm5aaGJHbGtYQ0k3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJRnB2WkVsemMzVmxRMjlrWlM1MGIyOWZjMjFoYkd3NlhHNGdJQ0FnSUNCcFppQW9hWE56ZFdVdWRIbHdaU0E5UFQwZ1hDSmhjbkpoZVZ3aUtWeHVJQ0FnSUNBZ0lDQnRaWE56WVdkbElEMGdZRUZ5Y21GNUlHMTFjM1FnWTI5dWRHRnBiaUFrZTF4dUlDQWdJQ0FnSUNBZ0lHbHpjM1ZsTG1sdVkyeDFjMmwyWlNBL0lHQmhkQ0JzWldGemRHQWdPaUJnYlc5eVpTQjBhR0Z1WUZ4dUlDQWdJQ0FnSUNCOUlDUjdhWE56ZFdVdWJXbHVhVzExYlgwZ1pXeGxiV1Z1ZENoektXQTdYRzRnSUNBZ0lDQmxiSE5sSUdsbUlDaHBjM04xWlM1MGVYQmxJRDA5UFNCY0luTjBjbWx1WjF3aUtWeHVJQ0FnSUNBZ0lDQnRaWE56WVdkbElEMGdZRk4wY21sdVp5QnRkWE4wSUdOdmJuUmhhVzRnSkh0Y2JpQWdJQ0FnSUNBZ0lDQnBjM04xWlM1cGJtTnNkWE5wZG1VZ1B5QmdZWFFnYkdWaGMzUmdJRG9nWUc5MlpYSmdYRzRnSUNBZ0lDQWdJSDBnSkh0cGMzTjFaUzV0YVc1cGJYVnRmU0JqYUdGeVlXTjBaWElvY3lsZ08xeHVJQ0FnSUNBZ1pXeHpaU0JwWmlBb2FYTnpkV1V1ZEhsd1pTQTlQVDBnWENKdWRXMWlaWEpjSWlsY2JpQWdJQ0FnSUNBZ2JXVnpjMkZuWlNBOUlHQk9kVzFpWlhJZ2JYVnpkQ0JpWlNCbmNtVmhkR1Z5SUhSb1lXNGdKSHRjYmlBZ0lDQWdJQ0FnSUNCcGMzTjFaUzVwYm1Oc2RYTnBkbVVnUHlCZ2IzSWdaWEYxWVd3Z2RHOGdZQ0E2SUdCZ1hHNGdJQ0FnSUNBZ0lIMGtlMmx6YzNWbExtMXBibWx0ZFcxOVlEdGNiaUFnSUNBZ0lHVnNjMlVnYVdZZ0tHbHpjM1ZsTG5SNWNHVWdQVDA5SUZ3aVpHRjBaVndpS1Z4dUlDQWdJQ0FnSUNCdFpYTnpZV2RsSUQwZ1lFUmhkR1VnYlhWemRDQmlaU0JuY21WaGRHVnlJSFJvWVc0Z0pIdGNiaUFnSUNBZ0lDQWdJQ0JwYzNOMVpTNXBibU5zZFhOcGRtVWdQeUJnYjNJZ1pYRjFZV3dnZEc4Z1lDQTZJR0JnWEc0Z0lDQWdJQ0FnSUgwa2UyNWxkeUJFWVhSbEtHbHpjM1ZsTG0xcGJtbHRkVzBwZldBN1hHNGdJQ0FnSUNCbGJITmxJRzFsYzNOaFoyVWdQU0JjSWtsdWRtRnNhV1FnYVc1d2RYUmNJanRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdXbTlrU1hOemRXVkRiMlJsTG5SdmIxOWlhV2M2WEc0Z0lDQWdJQ0JwWmlBb2FYTnpkV1V1ZEhsd1pTQTlQVDBnWENKaGNuSmhlVndpS1Z4dUlDQWdJQ0FnSUNCdFpYTnpZV2RsSUQwZ1lFRnljbUY1SUcxMWMzUWdZMjl1ZEdGcGJpQWtlMXh1SUNBZ0lDQWdJQ0FnSUdsemMzVmxMbWx1WTJ4MWMybDJaU0EvSUdCaGRDQnRiM04wWUNBNklHQnNaWE56SUhSb1lXNWdYRzRnSUNBZ0lDQWdJSDBnSkh0cGMzTjFaUzV0WVhocGJYVnRmU0JsYkdWdFpXNTBLSE1wWUR0Y2JpQWdJQ0FnSUdWc2MyVWdhV1lnS0dsemMzVmxMblI1Y0dVZ1BUMDlJRndpYzNSeWFXNW5YQ0lwWEc0Z0lDQWdJQ0FnSUcxbGMzTmhaMlVnUFNCZ1UzUnlhVzVuSUcxMWMzUWdZMjl1ZEdGcGJpQWtlMXh1SUNBZ0lDQWdJQ0FnSUdsemMzVmxMbWx1WTJ4MWMybDJaU0EvSUdCaGRDQnRiM04wWUNBNklHQjFibVJsY21CY2JpQWdJQ0FnSUNBZ2ZTQWtlMmx6YzNWbExtMWhlR2x0ZFcxOUlHTm9ZWEpoWTNSbGNpaHpLV0E3WEc0Z0lDQWdJQ0JsYkhObElHbG1JQ2hwYzNOMVpTNTBlWEJsSUQwOVBTQmNJbTUxYldKbGNsd2lLVnh1SUNBZ0lDQWdJQ0J0WlhOellXZGxJRDBnWUU1MWJXSmxjaUJ0ZFhOMElHSmxJR3hsYzNNZ2RHaGhiaUFrZTF4dUlDQWdJQ0FnSUNBZ0lHbHpjM1ZsTG1sdVkyeDFjMmwyWlNBL0lHQnZjaUJsY1hWaGJDQjBieUJnSURvZ1lHQmNiaUFnSUNBZ0lDQWdmU1I3YVhOemRXVXViV0Y0YVcxMWJYMWdPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9hWE56ZFdVdWRIbHdaU0E5UFQwZ1hDSmtZWFJsWENJcFhHNGdJQ0FnSUNBZ0lHMWxjM05oWjJVZ1BTQmdSR0YwWlNCdGRYTjBJR0psSUhOdFlXeHNaWElnZEdoaGJpQWtlMXh1SUNBZ0lDQWdJQ0FnSUdsemMzVmxMbWx1WTJ4MWMybDJaU0EvSUdCdmNpQmxjWFZoYkNCMGJ5QmdJRG9nWUdCY2JpQWdJQ0FnSUNBZ2ZTUjdibVYzSUVSaGRHVW9hWE56ZFdVdWJXRjRhVzExYlNsOVlEdGNiaUFnSUNBZ0lHVnNjMlVnYldWemMyRm5aU0E5SUZ3aVNXNTJZV3hwWkNCcGJuQjFkRndpTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0JhYjJSSmMzTjFaVU52WkdVdVkzVnpkRzl0T2x4dUlDQWdJQ0FnYldWemMyRm5aU0E5SUdCSmJuWmhiR2xrSUdsdWNIVjBZRHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdXbTlrU1hOemRXVkRiMlJsTG1sdWRtRnNhV1JmYVc1MFpYSnpaV04wYVc5dVgzUjVjR1Z6T2x4dUlDQWdJQ0FnYldWemMyRm5aU0E5SUdCSmJuUmxjbk5sWTNScGIyNGdjbVZ6ZFd4MGN5QmpiM1ZzWkNCdWIzUWdZbVVnYldWeVoyVmtZRHRjYmlBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUdOaGMyVWdXbTlrU1hOemRXVkRiMlJsTG01dmRGOXRkV3gwYVhCc1pWOXZaanBjYmlBZ0lDQWdJRzFsYzNOaFoyVWdQU0JnVG5WdFltVnlJRzExYzNRZ1ltVWdZU0J0ZFd4MGFYQnNaU0J2WmlBa2UybHpjM1ZsTG0xMWJIUnBjR3hsVDJaOVlEdGNiaUFnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJR1JsWm1GMWJIUTZYRzRnSUNBZ0lDQnRaWE56WVdkbElEMGdYMk4wZUM1a1pXWmhkV3gwUlhKeWIzSTdYRzRnSUNBZ0lDQjFkR2xzTG1GemMyVnlkRTVsZG1WeUtHbHpjM1ZsS1R0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnZXlCdFpYTnpZV2RsSUgwN1hHNTlPMXh1WEc1c1pYUWdiM1psY25KcFpHVkZjbkp2Y2sxaGNDQTlJR1JsWm1GMWJIUkZjbkp2Y2sxaGNEdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE5sZEVWeWNtOXlUV0Z3S0cxaGNEb2dXbTlrUlhKeWIzSk5ZWEFwSUh0Y2JpQWdiM1psY25KcFpHVkZjbkp2Y2sxaGNDQTlJRzFoY0R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVWeWNtOXlUV0Z3S0NrZ2UxeHVJQ0J5WlhSMWNtNGdiM1psY25KcFpHVkZjbkp2Y2sxaGNEdGNibjFjYmlJc0ltVjRjRzl5ZENCdVlXMWxjM0JoWTJVZ1pYSnliM0pWZEdsc0lIdGNiaUFnWlhod2IzSjBJSFI1Y0dVZ1JYSnlUV1Z6YzJGblpTQTlJSE4wY21sdVp5QjhJSHNnYldWemMyRm5aVDg2SUhOMGNtbHVaeUI5TzF4dUlDQmxlSEJ2Y25RZ1kyOXVjM1FnWlhKeVZHOVBZbW9nUFNBb2JXVnpjMkZuWlQ4NklFVnljazFsYzNOaFoyVXBJRDArWEc0Z0lDQWdkSGx3Wlc5bUlHMWxjM05oWjJVZ1BUMDlJRndpYzNSeWFXNW5YQ0lnUHlCN0lHMWxjM05oWjJVZ2ZTQTZJRzFsYzNOaFoyVWdmSHdnZTMwN1hHNGdJR1Y0Y0c5eWRDQmpiMjV6ZENCMGIxTjBjbWx1WnlBOUlDaHRaWE56WVdkbFB6b2dSWEp5VFdWemMyRm5aU2s2SUhOMGNtbHVaeUI4SUhWdVpHVm1hVzVsWkNBOVBseHVJQ0FnSUhSNWNHVnZaaUJ0WlhOellXZGxJRDA5UFNCY0luTjBjbWx1WjF3aUlEOGdiV1Z6YzJGblpTQTZJRzFsYzNOaFoyVS9MbTFsYzNOaFoyVTdYRzU5WEc0aUxDSnBiWEJ2Y25RZ2V5QmxiblZ0VlhScGJDQjlJR1p5YjIwZ1hDSXVMMmhsYkhCbGNuTXZaVzUxYlZWMGFXd3VkSE5jSWp0Y2JtbHRjRzl5ZENCN0lHVnljbTl5VlhScGJDQjlJR1p5YjIwZ1hDSXVMMmhsYkhCbGNuTXZaWEp5YjNKVmRHbHNMblJ6WENJN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ3hjYmlBZ1FYTjVibU5RWVhKelpWSmxkSFZ5YmxSNWNHVXNYRzRnSUVSSlVsUlpMRnh1SUNCSlRsWkJURWxFTEZ4dUlDQnBjMEZpYjNKMFpXUXNYRzRnSUdselFYTjVibU1zWEc0Z0lHbHpSR2x5ZEhrc1hHNGdJR2x6Vm1Gc2FXUXNYRzRnSUcxaGEyVkpjM04xWlN4Y2JpQWdUMHNzWEc0Z0lGQmhjbk5sUTI5dWRHVjRkQ3hjYmlBZ1VHRnljMlZKYm5CMWRDeGNiaUFnVUdGeWMyVlFZWEpoYlhNc1hHNGdJRkJoY25ObFVHRjBhQ3hjYmlBZ1VHRnljMlZTWlhSMWNtNVVlWEJsTEZ4dUlDQlFZWEp6WlZOMFlYUjFjeXhjYmlBZ1UzbHVZMUJoY25ObFVtVjBkWEp1Vkhsd1pTeGNibjBnWm5KdmJTQmNJaTR2YUdWc2NHVnljeTl3WVhKelpWVjBhV3d1ZEhOY0lqdGNibWx0Y0c5eWRDQjdJSEJoY25ScFlXeFZkR2xzSUgwZ1puSnZiU0JjSWk0dmFHVnNjR1Z5Y3k5d1lYSjBhV0ZzVlhScGJDNTBjMXdpTzF4dWFXMXdiM0owSUhzZ1VISnBiV2wwYVhabElIMGdabkp2YlNCY0lpNHZhR1ZzY0dWeWN5OTBlWEJsUVd4cFlYTmxjeTUwYzF3aU8xeHVhVzF3YjNKMElIc2daMlYwVUdGeWMyVmtWSGx3WlN3Z2RYUnBiQ3dnV205a1VHRnljMlZrVkhsd1pTQjlJR1p5YjIwZ1hDSXVMMmhsYkhCbGNuTXZkWFJwYkM1MGMxd2lPMXh1YVcxd2IzSjBJSHRjYmlBZ1pHVm1ZWFZzZEVWeWNtOXlUV0Z3TEZ4dUlDQm5aWFJGY25KdmNrMWhjQ3hjYmlBZ1NYTnpkV1ZFWVhSaExGeHVJQ0JUZEhKcGJtZFdZV3hwWkdGMGFXOXVMRnh1SUNCYWIyUkRkWE4wYjIxSmMzTjFaU3hjYmlBZ1dtOWtSWEp5YjNJc1hHNGdJRnB2WkVWeWNtOXlUV0Z3TEZ4dUlDQmFiMlJKYzNOMVpTeGNiaUFnV205a1NYTnpkV1ZEYjJSbExGeHVmU0JtY205dElGd2lMaTlhYjJSRmNuSnZjaTUwYzF3aU8xeHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ1dtOWtWSGx3WlNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1VtVm1hVzVsYldWdWRFTjBlQ0E5SUh0Y2JpQWdZV1JrU1hOemRXVTZJQ2hoY21jNklFbHpjM1ZsUkdGMFlTa2dQVDRnZG05cFpEdGNiaUFnY0dGMGFEb2dLSE4wY21sdVp5QjhJRzUxYldKbGNpbGJYVHRjYm4wN1hHNWxlSEJ2Y25RZ2RIbHdaU0JhYjJSU1lYZFRhR0Z3WlNBOUlIc2dXMnM2SUhOMGNtbHVaMTA2SUZwdlpGUjVjR1ZCYm5rZ2ZUdGNibVY0Y0c5eWRDQjBlWEJsSUZwdlpGUjVjR1ZCYm5rZ1BTQmFiMlJVZVhCbFBHRnVlU3dnWVc1NUxDQmhibmsrTzF4dVpYaHdiM0owSUhSNWNHVWdWSGx3WlU5bVBGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFBHRnVlU3dnWVc1NUxDQmhibmsrUGlBOUlGUmJYQ0pmYjNWMGNIVjBYQ0pkTzF4dVpYaHdiM0owSUhSNWNHVWdhVzV3ZFhROFZDQmxlSFJsYm1SeklGcHZaRlI1Y0dVOFlXNTVMQ0JoYm5rc0lHRnVlVDQrSUQwZ1ZGdGNJbDlwYm5CMWRGd2lYVHRjYm1WNGNHOXlkQ0IwZVhCbElHOTFkSEIxZER4VUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlR4aGJua3NJR0Z1ZVN3Z1lXNTVQajRnUFNCVVcxd2lYMjkxZEhCMWRGd2lYVHRjYm1WNGNHOXlkQ0IwZVhCbElIc2dWSGx3WlU5bUlHRnpJR2x1Wm1WeUlIMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFTjFjM1J2YlVWeWNtOXlVR0Z5WVcxeklEMGdVR0Z5ZEdsaGJEeDFkR2xzTGs5dGFYUThXbTlrUTNWemRHOXRTWE56ZFdVc0lGd2lZMjlrWlZ3aVBqNDdYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkZSNWNHVkVaV1lnZTF4dUlDQmxjbkp2Y2sxaGNEODZJRnB2WkVWeWNtOXlUV0Z3TzF4dUlDQmtaWE5qY21sd2RHbHZiajg2SUhOMGNtbHVaenRjYm4xY2JseHVZMnhoYzNNZ1VHRnljMlZKYm5CMWRFeGhlbmxRWVhSb0lHbHRjR3hsYldWdWRITWdVR0Z5YzJWSmJuQjFkQ0I3WEc0Z0lIQmhjbVZ1ZERvZ1VHRnljMlZEYjI1MFpYaDBPMXh1SUNCa1lYUmhPaUJoYm5rN1hHNGdJRjl3WVhSb09pQlFZWEp6WlZCaGRHZzdYRzRnSUY5clpYazZJSE4wY21sdVp5QjhJRzUxYldKbGNpQjhJQ2h6ZEhKcGJtY2dmQ0J1ZFcxaVpYSXBXMTA3WEc0Z0lHTnZibk4wY25WamRHOXlLRnh1SUNBZ0lIQmhjbVZ1ZERvZ1VHRnljMlZEYjI1MFpYaDBMRnh1SUNBZ0lIWmhiSFZsT2lCaGJua3NYRzRnSUNBZ2NHRjBhRG9nVUdGeWMyVlFZWFJvTEZ4dUlDQWdJR3RsZVRvZ2MzUnlhVzVuSUh3Z2JuVnRZbVZ5SUh3Z0tITjBjbWx1WnlCOElHNTFiV0psY2lsYlhWeHVJQ0FwSUh0Y2JpQWdJQ0IwYUdsekxuQmhjbVZ1ZENBOUlIQmhjbVZ1ZER0Y2JpQWdJQ0IwYUdsekxtUmhkR0VnUFNCMllXeDFaVHRjYmlBZ0lDQjBhR2x6TGw5d1lYUm9JRDBnY0dGMGFEdGNiaUFnSUNCMGFHbHpMbDlyWlhrZ1BTQnJaWGs3WEc0Z0lIMWNiaUFnWjJWMElIQmhkR2dvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzQmhkR2d1WTI5dVkyRjBLSFJvYVhNdVgydGxlU2s3WEc0Z0lIMWNibjFjYmx4dVkyOXVjM1FnYUdGdVpHeGxVbVZ6ZFd4MElEMGdQRWx1Y0hWMExDQlBkWFJ3ZFhRK0tGeHVJQ0JqZEhnNklGQmhjbk5sUTI5dWRHVjRkQ3hjYmlBZ2NtVnpkV3gwT2lCVGVXNWpVR0Z5YzJWU1pYUjFjbTVVZVhCbFBFOTFkSEIxZEQ1Y2JpazZYRzRnSUh3Z2V5QnpkV05qWlhOek9pQjBjblZsT3lCa1lYUmhPaUJQZFhSd2RYUWdmVnh1SUNCOElIc2djM1ZqWTJWemN6b2dabUZzYzJVN0lHVnljbTl5T2lCYWIyUkZjbkp2Y2p4SmJuQjFkRDRnZlNBOVBpQjdYRzRnSUdsbUlDaHBjMVpoYkdsa0tISmxjM1ZzZENrcElIdGNiaUFnSUNCeVpYUjFjbTRnZXlCemRXTmpaWE56T2lCMGNuVmxMQ0JrWVhSaE9pQnlaWE4xYkhRdWRtRnNkV1VnZlR0Y2JpQWdmU0JsYkhObElIdGNiaUFnSUNCcFppQW9JV04wZUM1amIyMXRiMjR1YVhOemRXVnpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtGd2lWbUZzYVdSaGRHbHZiaUJtWVdsc1pXUWdZblYwSUc1dklHbHpjM1ZsY3lCa1pYUmxZM1JsWkM1Y0lpazdYRzRnSUNBZ2ZWeHVJQ0FnSUdOdmJuTjBJR1Z5Y205eUlEMGdibVYzSUZwdlpFVnljbTl5S0dOMGVDNWpiMjF0YjI0dWFYTnpkV1Z6S1R0Y2JpQWdJQ0J5WlhSMWNtNGdleUJ6ZFdOalpYTnpPaUJtWVd4elpTd2daWEp5YjNJZ2ZUdGNiaUFnZlZ4dWZUdGNibHh1ZEhsd1pTQlNZWGREY21WaGRHVlFZWEpoYlhNZ1BWeHVJQ0I4SUh0Y2JpQWdJQ0FnSUdWeWNtOXlUV0Z3UHpvZ1dtOWtSWEp5YjNKTllYQTdYRzRnSUNBZ0lDQnBiblpoYkdsa1gzUjVjR1ZmWlhKeWIzSS9PaUJ6ZEhKcGJtYzdYRzRnSUNBZ0lDQnlaWEYxYVhKbFpGOWxjbkp2Y2o4NklITjBjbWx1Wnp0Y2JpQWdJQ0FnSUdSbGMyTnlhWEIwYVc5dVB6b2djM1J5YVc1bk8xeHVJQ0FnSUgxY2JpQWdmQ0IxYm1SbFptbHVaV1E3WEc1MGVYQmxJRkJ5YjJObGMzTmxaRU55WldGMFpWQmhjbUZ0Y3lBOUlIc2daWEp5YjNKTllYQS9PaUJhYjJSRmNuSnZjazFoY0RzZ1pHVnpZM0pwY0hScGIyNC9PaUJ6ZEhKcGJtY2dmVHRjYm1aMWJtTjBhVzl1SUhCeWIyTmxjM05EY21WaGRHVlFZWEpoYlhNb2NHRnlZVzF6T2lCU1lYZERjbVZoZEdWUVlYSmhiWE1wT2lCUWNtOWpaWE56WldSRGNtVmhkR1ZRWVhKaGJYTWdlMXh1SUNCcFppQW9JWEJoY21GdGN5a2djbVYwZFhKdUlIdDlPMXh1SUNCamIyNXpkQ0I3SUdWeWNtOXlUV0Z3TENCcGJuWmhiR2xrWDNSNWNHVmZaWEp5YjNJc0lISmxjWFZwY21Wa1gyVnljbTl5TENCa1pYTmpjbWx3ZEdsdmJpQjlJRDBnY0dGeVlXMXpPMXh1SUNCcFppQW9aWEp5YjNKTllYQWdKaVlnS0dsdWRtRnNhV1JmZEhsd1pWOWxjbkp2Y2lCOGZDQnlaWEYxYVhKbFpGOWxjbkp2Y2lrcElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWEc0Z0lDQWdJQ0JnUTJGdUozUWdkWE5sSUZ3aWFXNTJZV3hwWkZ3aUlHOXlJRndpY21WeGRXbHlaV1JjSWlCcGJpQmpiMjVxZFc1amRHbHZiaUIzYVhSb0lHTjFjM1J2YlNCbGNuSnZjaUJ0WVhBdVlGeHVJQ0FnSUNrN1hHNGdJSDFjYmlBZ2FXWWdLR1Z5Y205eVRXRndLU0J5WlhSMWNtNGdleUJsY25KdmNrMWhjRG9nWlhKeWIzSk5ZWEFzSUdSbGMyTnlhWEIwYVc5dUlIMDdYRzRnSUdOdmJuTjBJR04xYzNSdmJVMWhjRG9nV205a1JYSnliM0pOWVhBZ1BTQW9hWE56TENCamRIZ3BJRDArSUh0Y2JpQWdJQ0JwWmlBb2FYTnpMbU52WkdVZ0lUMDlJRndpYVc1MllXeHBaRjkwZVhCbFhDSXBJSEpsZEhWeWJpQjdJRzFsYzNOaFoyVTZJR04wZUM1a1pXWmhkV3gwUlhKeWIzSWdmVHRjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JR04wZUM1a1lYUmhJRDA5UFNCY0luVnVaR1ZtYVc1bFpGd2lLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdleUJ0WlhOellXZGxPaUJ5WlhGMWFYSmxaRjlsY25KdmNpQS9QeUJqZEhndVpHVm1ZWFZzZEVWeWNtOXlJSDA3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCN0lHMWxjM05oWjJVNklHbHVkbUZzYVdSZmRIbHdaVjlsY25KdmNpQS9QeUJqZEhndVpHVm1ZWFZzZEVWeWNtOXlJSDA3WEc0Z0lIMDdYRzRnSUhKbGRIVnliaUI3SUdWeWNtOXlUV0Z3T2lCamRYTjBiMjFOWVhBc0lHUmxjMk55YVhCMGFXOXVJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQjBlWEJsSUZOaFptVlFZWEp6WlZOMVkyTmxjM004VDNWMGNIVjBQaUE5SUhzZ2MzVmpZMlZ6Y3pvZ2RISjFaVHNnWkdGMFlUb2dUM1YwY0hWMElIMDdYRzVsZUhCdmNuUWdkSGx3WlNCVFlXWmxVR0Z5YzJWRmNuSnZjanhKYm5CMWRENGdQU0I3SUhOMVkyTmxjM002SUdaaGJITmxPeUJsY25KdmNqb2dXbTlrUlhKeWIzSThTVzV3ZFhRK0lIMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGTmhabVZRWVhKelpWSmxkSFZ5YmxSNWNHVThTVzV3ZFhRc0lFOTFkSEIxZEQ0Z1BWeHVJQ0I4SUZOaFptVlFZWEp6WlZOMVkyTmxjM004VDNWMGNIVjBQbHh1SUNCOElGTmhabVZRWVhKelpVVnljbTl5UEVsdWNIVjBQanRjYmx4dVpYaHdiM0owSUdGaWMzUnlZV04wSUdOc1lYTnpJRnB2WkZSNWNHVThYRzRnSUU5MWRIQjFkQ0E5SUdGdWVTeGNiaUFnUkdWbUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVSbFppQTlJRnB2WkZSNWNHVkVaV1lzWEc0Z0lFbHVjSFYwSUQwZ1QzVjBjSFYwWEc0K0lIdGNiaUFnY21WaFpHOXViSGtnWDNSNWNHVWhPaUJQZFhSd2RYUTdYRzRnSUhKbFlXUnZibXg1SUY5dmRYUndkWFFoT2lCUGRYUndkWFE3WEc0Z0lISmxZV1J2Ym14NUlGOXBibkIxZENFNklFbHVjSFYwTzF4dUlDQnlaV0ZrYjI1c2VTQmZaR1ZtSVRvZ1JHVm1PMXh1WEc0Z0lHZGxkQ0JrWlhOamNtbHdkR2x2YmlncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtTG1SbGMyTnlhWEIwYVc5dU8xeHVJQ0I5WEc1Y2JpQWdZV0p6ZEhKaFkzUWdYM0JoY25ObEtHbHVjSFYwT2lCUVlYSnpaVWx1Y0hWMEtUb2dVR0Z5YzJWU1pYUjFjbTVVZVhCbFBFOTFkSEIxZEQ0N1hHNWNiaUFnWDJkbGRGUjVjR1VvYVc1d2RYUTZJRkJoY25ObFNXNXdkWFFwT2lCemRISnBibWNnZTF4dUlDQWdJSEpsZEhWeWJpQm5aWFJRWVhKelpXUlVlWEJsS0dsdWNIVjBMbVJoZEdFcE8xeHVJQ0I5WEc1Y2JpQWdYMmRsZEU5eVVtVjBkWEp1UTNSNEtGeHVJQ0FnSUdsdWNIVjBPaUJRWVhKelpVbHVjSFYwTEZ4dUlDQWdJR04wZUQ4NklGQmhjbk5sUTI5dWRHVjRkQ0I4SUhWdVpHVm1hVzVsWkZ4dUlDQXBPaUJRWVhKelpVTnZiblJsZUhRZ2UxeHVJQ0FnSUhKbGRIVnliaUFvWEc0Z0lDQWdJQ0JqZEhnZ2ZId2dlMXh1SUNBZ0lDQWdJQ0JqYjIxdGIyNDZJR2x1Y0hWMExuQmhjbVZ1ZEM1amIyMXRiMjRzWEc0Z0lDQWdJQ0FnSUdSaGRHRTZJR2x1Y0hWMExtUmhkR0VzWEc1Y2JpQWdJQ0FnSUNBZ2NHRnljMlZrVkhsd1pUb2daMlYwVUdGeWMyVmtWSGx3WlNocGJuQjFkQzVrWVhSaEtTeGNibHh1SUNBZ0lDQWdJQ0J6WTJobGJXRkZjbkp2Y2sxaGNEb2dkR2hwY3k1ZlpHVm1MbVZ5Y205eVRXRndMRnh1SUNBZ0lDQWdJQ0J3WVhSb09pQnBibkIxZEM1d1lYUm9MRnh1SUNBZ0lDQWdJQ0J3WVhKbGJuUTZJR2x1Y0hWMExuQmhjbVZ1ZEN4Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ1gzQnliMk5sYzNOSmJuQjFkRkJoY21GdGN5aHBibkIxZERvZ1VHRnljMlZKYm5CMWRDazZJSHRjYmlBZ0lDQnpkR0YwZFhNNklGQmhjbk5sVTNSaGRIVnpPMXh1SUNBZ0lHTjBlRG9nVUdGeWMyVkRiMjUwWlhoME8xeHVJQ0I5SUh0Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdjM1JoZEhWek9pQnVaWGNnVUdGeWMyVlRkR0YwZFhNb0tTeGNiaUFnSUNBZ0lHTjBlRG9nZTF4dUlDQWdJQ0FnSUNCamIyMXRiMjQ2SUdsdWNIVjBMbkJoY21WdWRDNWpiMjF0YjI0c1hHNGdJQ0FnSUNBZ0lHUmhkR0U2SUdsdWNIVjBMbVJoZEdFc1hHNWNiaUFnSUNBZ0lDQWdjR0Z5YzJWa1ZIbHdaVG9nWjJWMFVHRnljMlZrVkhsd1pTaHBibkIxZEM1a1lYUmhLU3hjYmx4dUlDQWdJQ0FnSUNCelkyaGxiV0ZGY25KdmNrMWhjRG9nZEdocGN5NWZaR1ZtTG1WeWNtOXlUV0Z3TEZ4dUlDQWdJQ0FnSUNCd1lYUm9PaUJwYm5CMWRDNXdZWFJvTEZ4dUlDQWdJQ0FnSUNCd1lYSmxiblE2SUdsdWNIVjBMbkJoY21WdWRDeGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ2ZUdGNiaUFnZlZ4dVhHNGdJRjl3WVhKelpWTjVibU1vYVc1d2RYUTZJRkJoY25ObFNXNXdkWFFwT2lCVGVXNWpVR0Z5YzJWU1pYUjFjbTVVZVhCbFBFOTFkSEIxZEQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJSFJvYVhNdVgzQmhjbk5sS0dsdWNIVjBLVHRjYmlBZ0lDQnBaaUFvYVhOQmMzbHVZeWh5WlhOMWJIUXBLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9YQ0pUZVc1amFISnZibTkxY3lCd1lYSnpaU0JsYm1OdmRXNTBaWEpsWkNCd2NtOXRhWE5sTGx3aUtUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJRjl3WVhKelpVRnplVzVqS0dsdWNIVjBPaUJRWVhKelpVbHVjSFYwS1RvZ1FYTjVibU5RWVhKelpWSmxkSFZ5YmxSNWNHVThUM1YwY0hWMFBpQjdYRzRnSUNBZ1kyOXVjM1FnY21WemRXeDBJRDBnZEdocGN5NWZjR0Z5YzJVb2FXNXdkWFFwTzF4dVhHNGdJQ0FnY21WMGRYSnVJRkJ5YjIxcGMyVXVjbVZ6YjJ4MlpTaHlaWE4xYkhRcE8xeHVJQ0I5WEc1Y2JpQWdjR0Z5YzJVb1pHRjBZVG9nZFc1cmJtOTNiaXdnY0dGeVlXMXpQem9nVUdGeWRHbGhiRHhRWVhKelpWQmhjbUZ0Y3o0cE9pQlBkWFJ3ZFhRZ2UxeHVJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJSFJvYVhNdWMyRm1aVkJoY25ObEtHUmhkR0VzSUhCaGNtRnRjeWs3WEc0Z0lDQWdhV1lnS0hKbGMzVnNkQzV6ZFdOalpYTnpLU0J5WlhSMWNtNGdjbVZ6ZFd4MExtUmhkR0U3WEc0Z0lDQWdkR2h5YjNjZ2NtVnpkV3gwTG1WeWNtOXlPMXh1SUNCOVhHNWNiaUFnYzJGbVpWQmhjbk5sS0Z4dUlDQWdJR1JoZEdFNklIVnVhMjV2ZDI0c1hHNGdJQ0FnY0dGeVlXMXpQem9nVUdGeWRHbGhiRHhRWVhKelpWQmhjbUZ0Y3o1Y2JpQWdLVG9nVTJGbVpWQmhjbk5sVW1WMGRYSnVWSGx3WlR4SmJuQjFkQ3dnVDNWMGNIVjBQaUI3WEc0Z0lDQWdZMjl1YzNRZ1kzUjRPaUJRWVhKelpVTnZiblJsZUhRZ1BTQjdYRzRnSUNBZ0lDQmpiMjF0YjI0NklIdGNiaUFnSUNBZ0lDQWdhWE56ZFdWek9pQmJYU3hjYmlBZ0lDQWdJQ0FnWVhONWJtTTZJSEJoY21GdGN6OHVZWE41Ym1NZ1B6OGdabUZzYzJVc1hHNGdJQ0FnSUNBZ0lHTnZiblJsZUhSMVlXeEZjbkp2Y2sxaGNEb2djR0Z5WVcxelB5NWxjbkp2Y2sxaGNDeGNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQndZWFJvT2lCd1lYSmhiWE0vTG5CaGRHZ2dmSHdnVzEwc1hHNGdJQ0FnSUNCelkyaGxiV0ZGY25KdmNrMWhjRG9nZEdocGN5NWZaR1ZtTG1WeWNtOXlUV0Z3TEZ4dUlDQWdJQ0FnY0dGeVpXNTBPaUJ1ZFd4c0xGeHVJQ0FnSUNBZ1pHRjBZU3hjYmlBZ0lDQWdJSEJoY25ObFpGUjVjR1U2SUdkbGRGQmhjbk5sWkZSNWNHVW9aR0YwWVNrc1hHNGdJQ0FnZlR0Y2JpQWdJQ0JqYjI1emRDQnlaWE4xYkhRZ1BTQjBhR2x6TGw5d1lYSnpaVk41Ym1Nb2V5QmtZWFJoTENCd1lYUm9PaUJqZEhndWNHRjBhQ3dnY0dGeVpXNTBPaUJqZEhnZ2ZTazdYRzVjYmlBZ0lDQnlaWFIxY200Z2FHRnVaR3hsVW1WemRXeDBLR04wZUN3Z2NtVnpkV3gwS1R0Y2JpQWdmVnh1WEc0Z0lHRnplVzVqSUhCaGNuTmxRWE41Ym1Nb1hHNGdJQ0FnWkdGMFlUb2dkVzVyYm05M2JpeGNiaUFnSUNCd1lYSmhiWE0vT2lCUVlYSjBhV0ZzUEZCaGNuTmxVR0Z5WVcxelBseHVJQ0FwT2lCUWNtOXRhWE5sUEU5MWRIQjFkRDRnZTF4dUlDQWdJR052Ym5OMElISmxjM1ZzZENBOUlHRjNZV2wwSUhSb2FYTXVjMkZtWlZCaGNuTmxRWE41Ym1Nb1pHRjBZU3dnY0dGeVlXMXpLVHRjYmlBZ0lDQnBaaUFvY21WemRXeDBMbk4xWTJObGMzTXBJSEpsZEhWeWJpQnlaWE4xYkhRdVpHRjBZVHRjYmlBZ0lDQjBhSEp2ZHlCeVpYTjFiSFF1WlhKeWIzSTdYRzRnSUgxY2JseHVJQ0JoYzNsdVl5QnpZV1psVUdGeWMyVkJjM2x1WXloY2JpQWdJQ0JrWVhSaE9pQjFibXR1YjNkdUxGeHVJQ0FnSUhCaGNtRnRjejg2SUZCaGNuUnBZV3c4VUdGeWMyVlFZWEpoYlhNK1hHNGdJQ2s2SUZCeWIyMXBjMlU4VTJGbVpWQmhjbk5sVW1WMGRYSnVWSGx3WlR4SmJuQjFkQ3dnVDNWMGNIVjBQajRnZTF4dUlDQWdJR052Ym5OMElHTjBlRG9nVUdGeWMyVkRiMjUwWlhoMElEMGdlMXh1SUNBZ0lDQWdZMjl0Ylc5dU9pQjdYRzRnSUNBZ0lDQWdJR2x6YzNWbGN6b2dXMTBzWEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFIxWVd4RmNuSnZjazFoY0RvZ2NHRnlZVzF6UHk1bGNuSnZjazFoY0N4Y2JpQWdJQ0FnSUNBZ1lYTjVibU02SUhSeWRXVXNYRzRnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdjR0YwYURvZ2NHRnlZVzF6UHk1d1lYUm9JSHg4SUZ0ZExGeHVJQ0FnSUNBZ2MyTm9aVzFoUlhKeWIzSk5ZWEE2SUhSb2FYTXVYMlJsWmk1bGNuSnZjazFoY0N4Y2JpQWdJQ0FnSUhCaGNtVnVkRG9nYm5Wc2JDeGNiaUFnSUNBZ0lHUmhkR0VzWEc0Z0lDQWdJQ0J3WVhKelpXUlVlWEJsT2lCblpYUlFZWEp6WldSVWVYQmxLR1JoZEdFcExGeHVJQ0FnSUgwN1hHNWNiaUFnSUNCamIyNXpkQ0J0WVhsaVpVRnplVzVqVW1WemRXeDBJRDBnZEdocGN5NWZjR0Z5YzJVb2V5QmtZWFJoTENCd1lYUm9PaUJiWFN3Z2NHRnlaVzUwT2lCamRIZ2dmU2s3WEc0Z0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1lYZGhhWFFnS0dselFYTjVibU1vYldGNVltVkJjM2x1WTFKbGMzVnNkQ2xjYmlBZ0lDQWdJRDhnYldGNVltVkJjM2x1WTFKbGMzVnNkRnh1SUNBZ0lDQWdPaUJRY205dGFYTmxMbkpsYzI5c2RtVW9iV0Y1WW1WQmMzbHVZMUpsYzNWc2RDa3BPMXh1SUNBZ0lISmxkSFZ5YmlCb1lXNWtiR1ZTWlhOMWJIUW9ZM1I0TENCeVpYTjFiSFFwTzF4dUlDQjlYRzVjYmlBZ0x5b3FJRUZzYVdGeklHOW1JSE5oWm1WUVlYSnpaVUZ6ZVc1aklDb3ZYRzRnSUhOd1lTQTlJSFJvYVhNdWMyRm1aVkJoY25ObFFYTjVibU03WEc1Y2JpQWdjbVZtYVc1bFBGSmxabWx1WldSUGRYUndkWFFnWlhoMFpXNWtjeUJQZFhSd2RYUStLRnh1SUNBZ0lHTm9aV05yT2lBb1lYSm5PaUJQZFhSd2RYUXBJRDArSUdGeVp5QnBjeUJTWldacGJtVmtUM1YwY0hWMExGeHVJQ0FnSUcxbGMzTmhaMlUvT2lCemRISnBibWNnZkNCRGRYTjBiMjFGY25KdmNsQmhjbUZ0Y3lCOElDZ29ZWEpuT2lCUGRYUndkWFFwSUQwK0lFTjFjM1J2YlVWeWNtOXlVR0Z5WVcxektWeHVJQ0FwT2lCYWIyUkZabVpsWTNSelBIUm9hWE1zSUZKbFptbHVaV1JQZFhSd2RYUXNJRkpsWm1sdVpXUlBkWFJ3ZFhRK08xeHVJQ0J5WldacGJtVW9YRzRnSUNBZ1kyaGxZMnM2SUNoaGNtYzZJRTkxZEhCMWRDa2dQVDRnZFc1cmJtOTNiaUI4SUZCeWIyMXBjMlU4ZFc1cmJtOTNiajRzWEc0Z0lDQWdiV1Z6YzJGblpUODZJSE4wY21sdVp5QjhJRU4xYzNSdmJVVnljbTl5VUdGeVlXMXpJSHdnS0NoaGNtYzZJRTkxZEhCMWRDa2dQVDRnUTNWemRHOXRSWEp5YjNKUVlYSmhiWE1wWEc0Z0lDazZJRnB2WkVWbVptVmpkSE04ZEdocGN5d2dUM1YwY0hWMExDQkpibkIxZEQ0N1hHNGdJSEpsWm1sdVpTaGNiaUFnSUNCamFHVmphem9nS0dGeVp6b2dUM1YwY0hWMEtTQTlQaUIxYm10dWIzZHVMRnh1SUNBZ0lHMWxjM05oWjJVL09pQnpkSEpwYm1jZ2ZDQkRkWE4wYjIxRmNuSnZjbEJoY21GdGN5QjhJQ2dvWVhKbk9pQlBkWFJ3ZFhRcElEMCtJRU4xYzNSdmJVVnljbTl5VUdGeVlXMXpLVnh1SUNBcE9pQmFiMlJGWm1abFkzUnpQSFJvYVhNc0lFOTFkSEIxZEN3Z1NXNXdkWFErSUh0Y2JpQWdJQ0JqYjI1emRDQm5aWFJKYzNOMVpWQnliM0JsY25ScFpYTTZJR0Z1ZVNBOUlDaDJZV3c2SUU5MWRIQjFkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLSFI1Y0dWdlppQnRaWE56WVdkbElEMDlQU0JjSW5OMGNtbHVaMXdpSUh4OElIUjVjR1Z2WmlCdFpYTnpZV2RsSUQwOVBTQmNJblZ1WkdWbWFXNWxaRndpS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lHMWxjM05oWjJVZ2ZUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHMWxjM05oWjJVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2JXVnpjMkZuWlNoMllXd3BPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHMWxjM05oWjJVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmNtVm1hVzVsYldWdWRDZ29kbUZzTENCamRIZ3BJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJSEpsYzNWc2RDQTlJR05vWldOcktIWmhiQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQnpaWFJGY25KdmNpQTlJQ2dwSUQwK1hHNGdJQ0FnSUNBZ0lHTjBlQzVoWkdSSmMzTjFaU2g3WEc0Z0lDQWdJQ0FnSUNBZ1kyOWtaVG9nV205a1NYTnpkV1ZEYjJSbExtTjFjM1J2YlN4Y2JpQWdJQ0FnSUNBZ0lDQXVMaTVuWlhSSmMzTjFaVkJ5YjNCbGNuUnBaWE1vZG1Gc0tTeGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0JwWmlBb2RIbHdaVzltSUZCeWIyMXBjMlVnSVQwOUlGd2lkVzVrWldacGJtVmtYQ0lnSmlZZ2NtVnpkV3gwSUdsdWMzUmhibU5sYjJZZ1VISnZiV2x6WlNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTG5Sb1pXNG9LR1JoZEdFcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9JV1JoZEdFcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhObGRFVnljbTl5S0NrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwY25WbE8xeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9JWEpsYzNWc2RDa2dlMXh1SUNBZ0lDQWdJQ0J6WlhSRmNuSnZjaWdwTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnWm1Gc2MyVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUhKbFptbHVaVzFsYm5ROFVtVm1hVzVsWkU5MWRIQjFkQ0JsZUhSbGJtUnpJRTkxZEhCMWRENG9YRzRnSUNBZ1kyaGxZMnM2SUNoaGNtYzZJRTkxZEhCMWRDa2dQVDRnWVhKbklHbHpJRkpsWm1sdVpXUlBkWFJ3ZFhRc1hHNGdJQ0FnY21WbWFXNWxiV1Z1ZEVSaGRHRTZJRWx6YzNWbFJHRjBZU0I4SUNnb1lYSm5PaUJQZFhSd2RYUXNJR04wZURvZ1VtVm1hVzVsYldWdWRFTjBlQ2tnUFQ0Z1NYTnpkV1ZFWVhSaEtWeHVJQ0FwT2lCYWIyUkZabVpsWTNSelBIUm9hWE1zSUZKbFptbHVaV1JQZFhSd2RYUXNJRkpsWm1sdVpXUlBkWFJ3ZFhRK08xeHVJQ0J5WldacGJtVnRaVzUwS0Z4dUlDQWdJR05vWldOck9pQW9ZWEpuT2lCUGRYUndkWFFwSUQwK0lHSnZiMnhsWVc0c1hHNGdJQ0FnY21WbWFXNWxiV1Z1ZEVSaGRHRTZJRWx6YzNWbFJHRjBZU0I4SUNnb1lYSm5PaUJQZFhSd2RYUXNJR04wZURvZ1VtVm1hVzVsYldWdWRFTjBlQ2tnUFQ0Z1NYTnpkV1ZFWVhSaEtWeHVJQ0FwT2lCYWIyUkZabVpsWTNSelBIUm9hWE1zSUU5MWRIQjFkQ3dnU1c1d2RYUStPMXh1SUNCeVpXWnBibVZ0Wlc1MEtGeHVJQ0FnSUdOb1pXTnJPaUFvWVhKbk9pQlBkWFJ3ZFhRcElEMCtJSFZ1YTI1dmQyNHNYRzRnSUNBZ2NtVm1hVzVsYldWdWRFUmhkR0U2SUVsemMzVmxSR0YwWVNCOElDZ29ZWEpuT2lCUGRYUndkWFFzSUdOMGVEb2dVbVZtYVc1bGJXVnVkRU4wZUNrZ1BUNGdTWE56ZFdWRVlYUmhLVnh1SUNBcE9pQmFiMlJGWm1abFkzUnpQSFJvYVhNc0lFOTFkSEIxZEN3Z1NXNXdkWFErSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmNtVm1hVzVsYldWdWRDZ29kbUZzTENCamRIZ3BJRDArSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hZMmhsWTJzb2RtRnNLU2tnZTF4dUlDQWdJQ0FnSUNCamRIZ3VZV1JrU1hOemRXVW9YRzRnSUNBZ0lDQWdJQ0FnZEhsd1pXOW1JSEpsWm1sdVpXMWxiblJFWVhSaElEMDlQU0JjSW1aMWJtTjBhVzl1WENKY2JpQWdJQ0FnSUNBZ0lDQWdJRDhnY21WbWFXNWxiV1Z1ZEVSaGRHRW9kbUZzTENCamRIZ3BYRzRnSUNBZ0lDQWdJQ0FnSUNBNklISmxabWx1WlcxbGJuUkVZWFJoWEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ1gzSmxabWx1WlcxbGJuUW9YRzRnSUNBZ2NtVm1hVzVsYldWdWREb2dVbVZtYVc1bGJXVnVkRVZtWm1WamREeFBkWFJ3ZFhRK1cxd2ljbVZtYVc1bGJXVnVkRndpWFZ4dUlDQXBPaUJhYjJSRlptWmxZM1J6UEhSb2FYTXNJRTkxZEhCMWRDd2dTVzV3ZFhRK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRVZtWm1WamRITW9lMXh1SUNBZ0lDQWdjMk5vWlcxaE9pQjBhR2x6TEZ4dUlDQWdJQ0FnZEhsd1pVNWhiV1U2SUZwdlpFWnBjbk4wVUdGeWRIbFVlWEJsUzJsdVpDNWFiMlJGWm1abFkzUnpMRnh1SUNBZ0lDQWdaV1ptWldOME9pQjdJSFI1Y0dVNklGd2ljbVZtYVc1bGJXVnVkRndpTENCeVpXWnBibVZ0Wlc1MElIMHNYRzRnSUNBZ2ZTazdYRzRnSUgxY2JpQWdjM1Z3WlhKU1pXWnBibVVnUFNCMGFHbHpMbDl5WldacGJtVnRaVzUwTzF4dVhHNGdJR052Ym5OMGNuVmpkRzl5S0dSbFpqb2dSR1ZtS1NCN1hHNGdJQ0FnZEdocGN5NWZaR1ZtSUQwZ1pHVm1PMXh1SUNBZ0lIUm9hWE11Y0dGeWMyVWdQU0IwYUdsekxuQmhjbk5sTG1KcGJtUW9kR2hwY3lrN1hHNGdJQ0FnZEdocGN5NXpZV1psVUdGeWMyVWdQU0IwYUdsekxuTmhabVZRWVhKelpTNWlhVzVrS0hSb2FYTXBPMXh1SUNBZ0lIUm9hWE11Y0dGeWMyVkJjM2x1WXlBOUlIUm9hWE11Y0dGeWMyVkJjM2x1WXk1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUhSb2FYTXVjMkZtWlZCaGNuTmxRWE41Ym1NZ1BTQjBhR2x6TG5OaFptVlFZWEp6WlVGemVXNWpMbUpwYm1Rb2RHaHBjeWs3WEc0Z0lDQWdkR2hwY3k1emNHRWdQU0IwYUdsekxuTndZUzVpYVc1a0tIUm9hWE1wTzF4dUlDQWdJSFJvYVhNdWNtVm1hVzVsSUQwZ2RHaHBjeTV5WldacGJtVXVZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQjBhR2x6TG5KbFptbHVaVzFsYm5RZ1BTQjBhR2x6TG5KbFptbHVaVzFsYm5RdVltbHVaQ2gwYUdsektUdGNiaUFnSUNCMGFHbHpMbk4xY0dWeVVtVm1hVzVsSUQwZ2RHaHBjeTV6ZFhCbGNsSmxabWx1WlM1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUhSb2FYTXViM0IwYVc5dVlXd2dQU0IwYUdsekxtOXdkR2x2Ym1Gc0xtSnBibVFvZEdocGN5azdYRzRnSUNBZ2RHaHBjeTV1ZFd4c1lXSnNaU0E5SUhSb2FYTXViblZzYkdGaWJHVXVZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQjBhR2x6TG01MWJHeHBjMmdnUFNCMGFHbHpMbTUxYkd4cGMyZ3VZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQjBhR2x6TG1GeWNtRjVJRDBnZEdocGN5NWhjbkpoZVM1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUhSb2FYTXVjSEp2YldselpTQTlJSFJvYVhNdWNISnZiV2x6WlM1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUhSb2FYTXViM0lnUFNCMGFHbHpMbTl5TG1KcGJtUW9kR2hwY3lrN1hHNGdJQ0FnZEdocGN5NWhibVFnUFNCMGFHbHpMbUZ1WkM1aWFXNWtLSFJvYVhNcE8xeHVJQ0FnSUhSb2FYTXVkSEpoYm5ObWIzSnRJRDBnZEdocGN5NTBjbUZ1YzJadmNtMHVZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQjBhR2x6TG1SbFptRjFiSFFnUFNCMGFHbHpMbVJsWm1GMWJIUXVZbWx1WkNoMGFHbHpLVHRjYmlBZ0lDQjBhR2x6TG1SbGMyTnlhV0psSUQwZ2RHaHBjeTVrWlhOamNtbGlaUzVpYVc1a0tIUm9hWE1wTzF4dUlDQWdJSFJvYVhNdWFYTk9kV3hzWVdKc1pTQTlJSFJvYVhNdWFYTk9kV3hzWVdKc1pTNWlhVzVrS0hSb2FYTXBPMXh1SUNBZ0lIUm9hWE11YVhOUGNIUnBiMjVoYkNBOUlIUm9hWE11YVhOUGNIUnBiMjVoYkM1aWFXNWtLSFJvYVhNcE8xeHVJQ0I5WEc1Y2JpQWdiM0IwYVc5dVlXd29LVG9nV205a1QzQjBhVzl1WVd3OGRHaHBjejRnZTF4dUlDQWdJSEpsZEhWeWJpQmFiMlJQY0hScGIyNWhiQzVqY21WaGRHVW9kR2hwY3lrZ1lYTWdZVzU1TzF4dUlDQjlYRzRnSUc1MWJHeGhZbXhsS0NrNklGcHZaRTUxYkd4aFlteGxQSFJvYVhNK0lIdGNiaUFnSUNCeVpYUjFjbTRnV205a1RuVnNiR0ZpYkdVdVkzSmxZWFJsS0hSb2FYTXBJR0Z6SUdGdWVUdGNiaUFnZlZ4dUlDQnVkV3hzYVhOb0tDazZJRnB2WkU1MWJHeGhZbXhsUEZwdlpFOXdkR2x2Ym1Gc1BIUm9hWE0rUGlCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdWIzQjBhVzl1WVd3b0tTNXVkV3hzWVdKc1pTZ3BPMXh1SUNCOVhHNGdJR0Z5Y21GNUtDazZJRnB2WkVGeWNtRjVQSFJvYVhNK0lIdGNiaUFnSUNCeVpYUjFjbTRnV205a1FYSnlZWGt1WTNKbFlYUmxLSFJvYVhNcE8xeHVJQ0I5WEc0Z0lIQnliMjFwYzJVb0tUb2dXbTlrVUhKdmJXbHpaVHgwYUdselBpQjdYRzRnSUNBZ2NtVjBkWEp1SUZwdlpGQnliMjFwYzJVdVkzSmxZWFJsS0hSb2FYTXBPMXh1SUNCOVhHNWNiaUFnYjNJOFZDQmxlSFJsYm1SeklGcHZaRlI1Y0dWQmJuaytLRzl3ZEdsdmJqb2dWQ2s2SUZwdlpGVnVhVzl1UEZ0MGFHbHpMQ0JVWFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJhYjJSVmJtbHZiaTVqY21WaGRHVW9XM1JvYVhNc0lHOXdkR2x2YmwwcElHRnpJR0Z1ZVR0Y2JpQWdmVnh1WEc0Z0lHRnVaRHhVSUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVQ0b2FXNWpiMjFwYm1jNklGUXBPaUJhYjJSSmJuUmxjbk5sWTNScGIyNDhkR2hwY3l3Z1ZENGdlMXh1SUNBZ0lISmxkSFZ5YmlCYWIyUkpiblJsY25ObFkzUnBiMjR1WTNKbFlYUmxLSFJvYVhNc0lHbHVZMjl0YVc1bktUdGNiaUFnZlZ4dVhHNGdJSFJ5WVc1elptOXliVHhPWlhkUGRYUStLRnh1SUNBZ0lIUnlZVzV6Wm05eWJUb2dLR0Z5WnpvZ1QzVjBjSFYwTENCamRIZzZJRkpsWm1sdVpXMWxiblJEZEhncElEMCtJRTVsZDA5MWRDQjhJRkJ5YjIxcGMyVThUbVYzVDNWMFBseHVJQ0FwT2lCYWIyUkZabVpsWTNSelBIUm9hWE1zSUU1bGQwOTFkRDRnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnV205a1JXWm1aV04wY3loN1hHNGdJQ0FnSUNCelkyaGxiV0U2SUhSb2FYTXNYRzRnSUNBZ0lDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFVm1abVZqZEhNc1hHNGdJQ0FnSUNCbFptWmxZM1E2SUhzZ2RIbHdaVG9nWENKMGNtRnVjMlp2Y20xY0lpd2dkSEpoYm5ObWIzSnRJSDBzWEc0Z0lDQWdmU2tnWVhNZ1lXNTVPMXh1SUNCOVhHNWNiaUFnWkdWbVlYVnNkQ2hrWldZNklIVjBhV3d1Ym05VmJtUmxabWx1WldROFNXNXdkWFErS1RvZ1dtOWtSR1ZtWVhWc2REeDBhR2x6UGp0Y2JpQWdaR1ZtWVhWc2RDaGtaV1k2SUNncElEMCtJSFYwYVd3dWJtOVZibVJsWm1sdVpXUThTVzV3ZFhRK0tUb2dXbTlrUkdWbVlYVnNkRHgwYUdselBqdGNiaUFnWkdWbVlYVnNkQ2hrWldZNklHRnVlU2tnZTF4dUlDQWdJR052Ym5OMElHUmxabUYxYkhSV1lXeDFaVVoxYm1NZ1BTQjBlWEJsYjJZZ1pHVm1JRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdQeUJrWldZZ09pQW9LU0E5UGlCa1pXWTdYRzVjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkVSbFptRjFiSFFvZTF4dUlDQWdJQ0FnYVc1dVpYSlVlWEJsT2lCMGFHbHpMRnh1SUNBZ0lDQWdaR1ZtWVhWc2RGWmhiSFZsT2lCa1pXWmhkV3gwVm1Gc2RXVkdkVzVqTEZ4dUlDQWdJQ0FnZEhsd1pVNWhiV1U2SUZwdlpFWnBjbk4wVUdGeWRIbFVlWEJsUzJsdVpDNWFiMlJFWldaaGRXeDBMRnh1SUNBZ0lIMHBJR0Z6SUdGdWVUdGNiaUFnZlZ4dVhHNGdJR1JsYzJOeWFXSmxLR1JsYzJOeWFYQjBhVzl1T2lCemRISnBibWNwT2lCMGFHbHpJSHRjYmlBZ0lDQmpiMjV6ZENCVWFHbHpJRDBnS0hSb2FYTWdZWE1nWVc1NUtTNWpiMjV6ZEhKMVkzUnZjanRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRlJvYVhNb2UxeHVJQ0FnSUNBZ0xpNHVkR2hwY3k1ZlpHVm1MRnh1SUNBZ0lDQWdaR1Z6WTNKcGNIUnBiMjRzWEc0Z0lDQWdmU2s3WEc0Z0lIMWNibHh1SUNCcGMwOXdkR2x2Ym1Gc0tDazZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbk5oWm1WUVlYSnpaU2gxYm1SbFptbHVaV1FwTG5OMVkyTmxjM003WEc0Z0lIMWNiaUFnYVhOT2RXeHNZV0pzWlNncE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXpZV1psVUdGeWMyVW9iblZzYkNrdWMzVmpZMlZ6Y3p0Y2JpQWdmVnh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrVTNSeWFXNW5JQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1ZEhsd1pTQmFiMlJUZEhKcGJtZERhR1ZqYXlBOVhHNGdJSHdnZXlCcmFXNWtPaUJjSW0xcGJsd2lPeUIyWVd4MVpUb2diblZ0WW1WeU95QnRaWE56WVdkbFB6b2djM1J5YVc1bklIMWNiaUFnZkNCN0lHdHBibVE2SUZ3aWJXRjRYQ0k3SUhaaGJIVmxPaUJ1ZFcxaVpYSTdJRzFsYzNOaFoyVS9PaUJ6ZEhKcGJtY2dmVnh1SUNCOElIc2dhMmx1WkRvZ1hDSmxiV0ZwYkZ3aU95QnRaWE56WVdkbFB6b2djM1J5YVc1bklIMWNiaUFnZkNCN0lHdHBibVE2SUZ3aWRYSnNYQ0k3SUcxbGMzTmhaMlUvT2lCemRISnBibWNnZlZ4dUlDQjhJSHNnYTJsdVpEb2dYQ0oxZFdsa1hDSTdJRzFsYzNOaFoyVS9PaUJ6ZEhKcGJtY2dmVnh1SUNCOElIc2dhMmx1WkRvZ1hDSmpkV2xrWENJN0lHMWxjM05oWjJVL09pQnpkSEpwYm1jZ2ZWeHVJQ0I4SUhzZ2EybHVaRG9nWENKemRHRnlkSE5YYVhSb1hDSTdJSFpoYkhWbE9pQnpkSEpwYm1jN0lHMWxjM05oWjJVL09pQnpkSEpwYm1jZ2ZWeHVJQ0I4SUhzZ2EybHVaRG9nWENKbGJtUnpWMmwwYUZ3aU95QjJZV3gxWlRvZ2MzUnlhVzVuT3lCdFpYTnpZV2RsUHpvZ2MzUnlhVzVuSUgxY2JpQWdmQ0I3SUd0cGJtUTZJRndpY21WblpYaGNJanNnY21WblpYZzZJRkpsWjBWNGNEc2diV1Z6YzJGblpUODZJSE4wY21sdVp5QjlYRzRnSUh3Z2V5QnJhVzVrT2lCY0luUnlhVzFjSWpzZ2JXVnpjMkZuWlQ4NklITjBjbWx1WnlCOU8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkZOMGNtbHVaMFJsWmlCbGVIUmxibVJ6SUZwdlpGUjVjR1ZFWldZZ2UxeHVJQ0JqYUdWamEzTTZJRnB2WkZOMGNtbHVaME5vWldOclcxMDdYRzRnSUhSNWNHVk9ZVzFsT2lCYWIyUkdhWEp6ZEZCaGNuUjVWSGx3WlV0cGJtUXVXbTlrVTNSeWFXNW5PMXh1ZlZ4dVhHNWpiMjV6ZENCamRXbGtVbVZuWlhnZ1BTQXZYbU5iWGx4Y2N5MWRlemdzZlNRdmFUdGNibU52Ym5OMElIVjFhV1JTWldkbGVDQTlYRzRnSUM5ZUtGdGhMV1l3TFRsZGV6aDlMVnRoTFdZd0xUbGRlelI5TFZzeExUVmRXMkV0WmpBdE9WMTdNMzB0VzJFdFpqQXRPVjE3TkgwdFcyRXRaakF0T1YxN01USjlmREF3TURBd01EQXdMVEF3TURBdE1EQXdNQzB3TURBd0xUQXdNREF3TURBd01EQXdNQ2trTDJrN1hHNHZMeUJtY205dElHaDBkSEJ6T2k4dmMzUmhZMnR2ZG1WeVpteHZkeTVqYjIwdllTODBOakU0TVM4eE5UVXdNVFUxWEc0dkx5QnZiR1FnZG1WeWMybHZiam9nZEc5dklITnNiM2NzSUdScFpHNG5kQ0J6ZFhCd2IzSjBJSFZ1YVdOdlpHVmNiaTh2SUdOdmJuTjBJR1Z0WVdsc1VtVm5aWGdnUFNBdlhpZ29LRnRoTFhwZGZGeGNaSHhiSVNOY1hDUWxKaWRjWENwY1hDdGNYQzFjWEM4OVhGdy9YRnhlWDJCN1hGeDhmWDVkZkZ0Y1hIVXdNRUV3TFZ4Y2RVUTNSa1pjWEhWR09UQXdMVnhjZFVaRVEwWmNYSFZHUkVZd0xWeGNkVVpHUlVaZEtTc29YRnd1S0Z0aExYcGRmRnhjWkh4YklTTmNYQ1FsSmlkY1hDcGNYQ3RjWEMxY1hDODlYRncvWEZ4ZVgyQjdYRng4Zlg1ZGZGdGNYSFV3TUVFd0xWeGNkVVEzUmtaY1hIVkdPVEF3TFZ4Y2RVWkVRMFpjWEhWR1JFWXdMVnhjZFVaR1JVWmRLU3NwS2lsOEtDaGNYSGd5TWlrb0tDZ29YRng0TWpCOFhGeDRNRGtwS2loY1hIZ3daRnhjZURCaEtTay9LRnhjZURJd2ZGeGNlREE1S1NzcFB5Z29XMXhjZURBeExWeGNlREE0WEZ4NE1HSmNYSGd3WTF4Y2VEQmxMVnhjZURGbVhGeDROMlpkZkZ4Y2VESXhmRnRjWEhneU15MWNYSGcxWWwxOFcxeGNlRFZrTFZ4Y2VEZGxYWHhiWEZ4MU1EQkJNQzFjWEhWRU4wWkdYRngxUmprd01DMWNYSFZHUkVOR1hGeDFSa1JHTUMxY1hIVkdSa1ZHWFNsOEtGeGNYRndvVzF4Y2VEQXhMVnhjZURBNVhGeDRNR0pjWEhnd1kxeGNlREJrTFZ4Y2VEZG1YWHhiWEZ4MU1EQkJNQzFjWEhWRU4wWkdYRngxUmprd01DMWNYSFZHUkVOR1hGeDFSa1JHTUMxY1hIVkdSa1ZHWFNrcEtTa3FLQ2dvWEZ4NE1qQjhYRng0TURrcEtpaGNYSGd3WkZ4Y2VEQmhLU2svS0Z4Y2VESXdmRnhjZURBNUtTc3BQeWhjWEhneU1pa3BLVUFvS0NoYllTMTZYWHhjWEdSOFcxeGNkVEF3UVRBdFhGeDFSRGRHUmx4Y2RVWTVNREF0WEZ4MVJrUkRSbHhjZFVaRVJqQXRYRngxUmtaRlJsMHBmQ2dvVzJFdGVsMThYRnhrZkZ0Y1hIVXdNRUV3TFZ4Y2RVUTNSa1pjWEhWR09UQXdMVnhjZFVaRVEwWmNYSFZHUkVZd0xWeGNkVVpHUlVaZEtTaGJZUzE2WFh4Y1hHUjhMWHhjWEM1OFgzeCtmRnRjWEhVd01FRXdMVnhjZFVRM1JrWmNYSFZHT1RBd0xWeGNkVVpFUTBaY1hIVkdSRVl3TFZ4Y2RVWkdSVVpkS1Nvb1cyRXRlbDE4WEZ4a2ZGdGNYSFV3TUVFd0xWeGNkVVEzUmtaY1hIVkdPVEF3TFZ4Y2RVWkVRMFpjWEhWR1JFWXdMVnhjZFVaR1JVWmRLU2twWEZ3dUtTc29LRnRoTFhwZGZGdGNYSFV3TUVFd0xWeGNkVVEzUmtaY1hIVkdPVEF3TFZ4Y2RVWkVRMFpjWEhWR1JFWXdMVnhjZFVaR1JVWmRLWHdvS0Z0aExYcGRmRnRjWEhVd01FRXdMVnhjZFVRM1JrWmNYSFZHT1RBd0xWeGNkVVpFUTBaY1hIVkdSRVl3TFZ4Y2RVWkdSVVpkS1NoYllTMTZYWHhjWEdSOExYeGNYQzU4WDN4K2ZGdGNYSFV3TUVFd0xWeGNkVVEzUmtaY1hIVkdPVEF3TFZ4Y2RVWkVRMFpjWEhWR1JFWXdMVnhjZFVaR1JVWmRLU29vVzJFdGVsMThXMXhjZFRBd1FUQXRYRngxUkRkR1JseGNkVVk1TURBdFhGeDFSa1JEUmx4Y2RVWkVSakF0WEZ4MVJrWkZSbDBwS1Nra0wyazdYRzR2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVZjYm1OdmJuTjBJR1Z0WVdsc1VtVm5aWGdnUFZ4dUlDQXZYaWdvVzE0OFBpZ3BXMXhjWFZ4Y0xpdzdPbHhjYzBCY1hGd2lYU3NvWEZ3dVcxNDhQaWdwVzF4Y1hWeGNMaXc3T2x4Y2MwQmNYRndpWFNzcEtpbDhLRnhjWENJdUsxeGNYQ0lwS1VBb0tGdGVQRDRvS1Z0Y1hGMWNYQzRzT3pwY1hITkFYRnhjSWwwclhGd3VLU3RiWGp3K0tDbGJYRnhkWEZ3dUxEczZYRnh6UUZ4Y1hDSmRleklzZlNra0wyazdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QmFiMlJUZEhKcGJtY2daWGgwWlc1a2N5QmFiMlJVZVhCbFBITjBjbWx1Wnl3Z1dtOWtVM1J5YVc1blJHVm1QaUI3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4emRISnBibWMrSUh0Y2JpQWdJQ0JqYjI1emRDQndZWEp6WldSVWVYQmxJRDBnZEdocGN5NWZaMlYwVkhsd1pTaHBibkIxZENrN1hHNWNiaUFnSUNCcFppQW9jR0Z5YzJWa1ZIbHdaU0FoUFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzV6ZEhKcGJtY3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHTjBlQ0E5SUhSb2FYTXVYMmRsZEU5eVVtVjBkWEp1UTNSNEtHbHVjSFYwS1R0Y2JpQWdJQ0FnSUdGa1pFbHpjM1ZsVkc5RGIyNTBaWGgwS0Z4dUlDQWdJQ0FnSUNCamRIZ3NYRzRnSUNBZ0lDQWdJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0FnSUdWNGNHVmpkR1ZrT2lCYWIyUlFZWEp6WldSVWVYQmxMbk4wY21sdVp5eGNiaUFnSUNBZ0lDQWdJQ0J5WldObGFYWmxaRG9nWTNSNExuQmhjbk5sWkZSNWNHVXNYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnTHk5Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCemRHRjBkWE1nUFNCdVpYY2dVR0Z5YzJWVGRHRjBkWE1vS1R0Y2JpQWdJQ0JzWlhRZ1kzUjRPaUIxYm1SbFptbHVaV1FnZkNCUVlYSnpaVU52Ym5SbGVIUWdQU0IxYm1SbFptbHVaV1E3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdOb1pXTnJJRzltSUhSb2FYTXVYMlJsWmk1amFHVmphM01wSUh0Y2JpQWdJQ0FnSUdsbUlDaGphR1ZqYXk1cmFXNWtJRDA5UFNCY0ltMXBibHdpS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYm5CMWRDNWtZWFJoTG14bGJtZDBhQ0E4SUdOb1pXTnJMblpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWTNSNElEMGdkR2hwY3k1ZloyVjBUM0pTWlhSMWNtNURkSGdvYVc1d2RYUXNJR04wZUNrN1hHNGdJQ0FnSUNBZ0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjJSbE9pQmFiMlJKYzNOMVpVTnZaR1V1ZEc5dlgzTnRZV3hzTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdiV2x1YVcxMWJUb2dZMmhsWTJzdWRtRnNkV1VzWEc0Z0lDQWdJQ0FnSUNBZ0lDQjBlWEJsT2lCY0luTjBjbWx1WjF3aUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1amJIVnphWFpsT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JXVnpjMkZuWlRvZ1kyaGxZMnN1YldWemMyRm5aU3hjYmlBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVaR2x5ZEhrb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hqYUdWamF5NXJhVzVrSUQwOVBTQmNJbTFoZUZ3aUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNocGJuQjFkQzVrWVhSaExteGxibWQwYUNBK0lHTm9aV05yTG5aaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kzUjRJRDBnZEdocGN5NWZaMlYwVDNKU1pYUjFjbTVEZEhnb2FXNXdkWFFzSUdOMGVDazdYRzRnSUNBZ0lDQWdJQ0FnWVdSa1NYTnpkV1ZVYjBOdmJuUmxlSFFvWTNSNExDQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWRHOXZYMkpwWnl4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFoZUdsdGRXMDZJR05vWldOckxuWmhiSFZsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdkSGx3WlRvZ1hDSnpkSEpwYm1kY0lpeGNiaUFnSUNBZ0lDQWdJQ0FnSUdsdVkyeDFjMmwyWlRvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWxjM05oWjJVNklHTm9aV05yTG0xbGMzTmhaMlVzWEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbVJwY25SNUtDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJobFkyc3VhMmx1WkNBOVBUMGdYQ0psYldGcGJGd2lLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2haVzFoYVd4U1pXZGxlQzUwWlhOMEtHbHVjSFYwTG1SaGRHRXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kzUjRJRDBnZEdocGN5NWZaMlYwVDNKU1pYUjFjbTVEZEhnb2FXNXdkWFFzSUdOMGVDazdYRzRnSUNBZ0lDQWdJQ0FnWVdSa1NYTnpkV1ZVYjBOdmJuUmxlSFFvWTNSNExDQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCMllXeHBaR0YwYVc5dU9pQmNJbVZ0WVdsc1hDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5emRISnBibWNzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9pQmphR1ZqYXk1dFpYTnpZV2RsTEZ4dUlDQWdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdJQ0FnSUhOMFlYUjFjeTVrYVhKMGVTZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dOb1pXTnJMbXRwYm1RZ1BUMDlJRndpZFhWcFpGd2lLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hkWFZwWkZKbFoyVjRMblJsYzNRb2FXNXdkWFF1WkdGMFlTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamRIZ2dQU0IwYUdsekxsOW5aWFJQY2xKbGRIVnlia04wZUNocGJuQjFkQ3dnWTNSNEtUdGNiaUFnSUNBZ0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGJHbGtZWFJwYjI0NklGd2lkWFZwWkZ3aUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5a1pUb2dXbTlrU1hOemRXVkRiMlJsTG1sdWRtRnNhV1JmYzNSeWFXNW5MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2JXVnpjMkZuWlRvZ1kyaGxZMnN1YldWemMyRm5aU3hjYmlBZ0lDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVaR2x5ZEhrb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hqYUdWamF5NXJhVzVrSUQwOVBTQmNJbU4xYVdSY0lpa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb0lXTjFhV1JTWldkbGVDNTBaWE4wS0dsdWNIVjBMbVJoZEdFcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnWTNSNElEMGdkR2hwY3k1ZloyVjBUM0pTWlhSMWNtNURkSGdvYVc1d2RYUXNJR04wZUNrN1hHNGdJQ0FnSUNBZ0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IyWVd4cFpHRjBhVzl1T2lCY0ltTjFhV1JjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJR052WkdVNklGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM04wY21sdVp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGMzTmhaMlU2SUdOb1pXTnJMbTFsYzNOaFoyVXNYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxtUnBjblI1S0NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMmhsWTJzdWEybHVaQ0E5UFQwZ1hDSjFjbXhjSWlrZ2UxeHVJQ0FnSUNBZ0lDQjBjbmtnZTF4dUlDQWdJQ0FnSUNBZ0lHNWxkeUJWVWt3b2FXNXdkWFF1WkdGMFlTazdYRzRnSUNBZ0lDQWdJSDBnWTJGMFkyZ2dlMXh1SUNBZ0lDQWdJQ0FnSUdOMGVDQTlJSFJvYVhNdVgyZGxkRTl5VW1WMGRYSnVRM1I0S0dsdWNIVjBMQ0JqZEhncE8xeHVJQ0FnSUNBZ0lDQWdJR0ZrWkVsemMzVmxWRzlEYjI1MFpYaDBLR04wZUN3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2FXUmhkR2x2YmpvZ1hDSjFjbXhjSWl4Y2JpQWdJQ0FnSUNBZ0lDQWdJR052WkdVNklGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM04wY21sdVp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGMzTmhaMlU2SUdOb1pXTnJMbTFsYzNOaFoyVXNYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxtUnBjblI1S0NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMmhsWTJzdWEybHVaQ0E5UFQwZ1hDSnlaV2RsZUZ3aUtTQjdYRzRnSUNBZ0lDQWdJR05vWldOckxuSmxaMlY0TG14aGMzUkpibVJsZUNBOUlEQTdYRzRnSUNBZ0lDQWdJR052Ym5OMElIUmxjM1JTWlhOMWJIUWdQU0JqYUdWamF5NXlaV2RsZUM1MFpYTjBLR2x1Y0hWMExtUmhkR0VwTzF4dUlDQWdJQ0FnSUNCcFppQW9JWFJsYzNSU1pYTjFiSFFwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpkSGdnUFNCMGFHbHpMbDluWlhSUGNsSmxkSFZ5YmtOMGVDaHBibkIxZEN3Z1kzUjRLVHRjYmlBZ0lDQWdJQ0FnSUNCaFpHUkpjM04xWlZSdlEyOXVkR1Y0ZENoamRIZ3NJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhiR2xrWVhScGIyNDZJRndpY21WblpYaGNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNXBiblpoYkdsa1gzTjBjbWx1Wnl4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFsYzNOaFoyVTZJR05vWldOckxtMWxjM05oWjJVc1hHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ2MzUmhkSFZ6TG1ScGNuUjVLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyaGxZMnN1YTJsdVpDQTlQVDBnWENKMGNtbHRYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ2FXNXdkWFF1WkdGMFlTQTlJR2x1Y0hWMExtUmhkR0V1ZEhKcGJTZ3BPMXh1SUNBZ0lDQWdmU0JsYkhObElHbG1JQ2hqYUdWamF5NXJhVzVrSUQwOVBTQmNJbk4wWVhKMGMxZHBkR2hjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVNocGJuQjFkQzVrWVhSaElHRnpJSE4wY21sdVp5a3VjM1JoY25SelYybDBhQ2hqYUdWamF5NTJZV3gxWlNrcElIdGNiaUFnSUNBZ0lDQWdJQ0JqZEhnZ1BTQjBhR2x6TGw5blpYUlBjbEpsZEhWeWJrTjBlQ2hwYm5CMWRDd2dZM1I0S1R0Y2JpQWdJQ0FnSUNBZ0lDQmhaR1JKYzNOMVpWUnZRMjl1ZEdWNGRDaGpkSGdzSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052WkdVNklGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYM04wY21sdVp5eGNiaUFnSUNBZ0lDQWdJQ0FnSUhaaGJHbGtZWFJwYjI0NklIc2djM1JoY25SelYybDBhRG9nWTJobFkyc3VkbUZzZFdVZ2ZTeGNiaUFnSUNBZ0lDQWdJQ0FnSUcxbGMzTmhaMlU2SUdOb1pXTnJMbTFsYzNOaFoyVXNYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxtUnBjblI1S0NrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9ZMmhsWTJzdWEybHVaQ0E5UFQwZ1hDSmxibVJ6VjJsMGFGd2lLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hLR2x1Y0hWMExtUmhkR0VnWVhNZ2MzUnlhVzVuS1M1bGJtUnpWMmwwYUNoamFHVmpheTUyWVd4MVpTa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamRIZ2dQU0IwYUdsekxsOW5aWFJQY2xKbGRIVnlia04wZUNocGJuQjFkQ3dnWTNSNEtUdGNiaUFnSUNBZ0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDNOMGNtbHVaeXhjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhiR2xrWVhScGIyNDZJSHNnWlc1a2MxZHBkR2c2SUdOb1pXTnJMblpoYkhWbElIMHNYRzRnSUNBZ0lDQWdJQ0FnSUNCdFpYTnpZV2RsT2lCamFHVmpheTV0WlhOellXZGxMRnh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJSE4wWVhSMWN5NWthWEowZVNncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjFkR2xzTG1GemMyVnlkRTVsZG1WeUtHTm9aV05yS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdleUJ6ZEdGMGRYTTZJSE4wWVhSMWN5NTJZV3gxWlN3Z2RtRnNkV1U2SUdsdWNIVjBMbVJoZEdFZ2ZUdGNiaUFnZlZ4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmY21WblpYZ2dQU0FvWEc0Z0lDQWdjbVZuWlhnNklGSmxaMFY0Y0N4Y2JpQWdJQ0IyWVd4cFpHRjBhVzl1T2lCVGRISnBibWRXWVd4cFpHRjBhVzl1TEZ4dUlDQWdJRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlZ4dUlDQXBJRDArWEc0Z0lDQWdkR2hwY3k1eVpXWnBibVZ0Wlc1MEtDaGtZWFJoS1NBOVBpQnlaV2RsZUM1MFpYTjBLR1JoZEdFcExDQjdYRzRnSUNBZ0lDQjJZV3hwWkdGMGFXOXVMRnh1SUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMbWx1ZG1Gc2FXUmZjM1J5YVc1bkxGeHVJQ0FnSUNBZ0xpNHVaWEp5YjNKVmRHbHNMbVZ5Y2xSdlQySnFLRzFsYzNOaFoyVXBMRnh1SUNBZ0lIMHBPMXh1WEc0Z0lGOWhaR1JEYUdWamF5aGphR1ZqYXpvZ1dtOWtVM1J5YVc1blEyaGxZMnNwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpGTjBjbWx1WnloN1hHNGdJQ0FnSUNBdUxpNTBhR2x6TGw5a1pXWXNYRzRnSUNBZ0lDQmphR1ZqYTNNNklGc3VMaTUwYUdsekxsOWtaV1l1WTJobFkydHpMQ0JqYUdWamExMHNYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0JsYldGcGJDaHRaWE56WVdkbFB6b2daWEp5YjNKVmRHbHNMa1Z5Y2sxbGMzTmhaMlVwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZllXUmtRMmhsWTJzb2V5QnJhVzVrT2lCY0ltVnRZV2xzWENJc0lDNHVMbVZ5Y205eVZYUnBiQzVsY25KVWIwOWlhaWh0WlhOellXZGxLU0I5S1R0Y2JpQWdmVnh1SUNCMWNtd29iV1Z6YzJGblpUODZJR1Z5Y205eVZYUnBiQzVGY25KTlpYTnpZV2RsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyRmtaRU5vWldOcktIc2dhMmx1WkRvZ1hDSjFjbXhjSWl3Z0xpNHVaWEp5YjNKVmRHbHNMbVZ5Y2xSdlQySnFLRzFsYzNOaFoyVXBJSDBwTzF4dUlDQjlYRzRnSUhWMWFXUW9iV1Z6YzJGblpUODZJR1Z5Y205eVZYUnBiQzVGY25KTlpYTnpZV2RsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyRmtaRU5vWldOcktIc2dhMmx1WkRvZ1hDSjFkV2xrWENJc0lDNHVMbVZ5Y205eVZYUnBiQzVsY25KVWIwOWlhaWh0WlhOellXZGxLU0I5S1R0Y2JpQWdmVnh1SUNCamRXbGtLRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWhaR1JEYUdWamF5aDdJR3RwYm1RNklGd2lZM1ZwWkZ3aUxDQXVMaTVsY25KdmNsVjBhV3d1WlhKeVZHOVBZbW9vYldWemMyRm5aU2tnZlNrN1hHNGdJSDFjYmlBZ2NtVm5aWGdvY21WblpYZzZJRkpsWjBWNGNDd2diV1Z6YzJGblpUODZJR1Z5Y205eVZYUnBiQzVGY25KTlpYTnpZV2RsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyRmtaRU5vWldOcktIdGNiaUFnSUNBZ0lHdHBibVE2SUZ3aWNtVm5aWGhjSWl4Y2JpQWdJQ0FnSUhKbFoyVjRPaUJ5WldkbGVDeGNiaUFnSUNBZ0lDNHVMbVZ5Y205eVZYUnBiQzVsY25KVWIwOWlhaWh0WlhOellXZGxLU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYSjBjMWRwZEdnb2RtRnNkV1U2SUhOMGNtbHVaeXdnYldWemMyRm5aVDg2SUdWeWNtOXlWWFJwYkM1RmNuSk5aWE56WVdkbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMkZrWkVOb1pXTnJLSHRjYmlBZ0lDQWdJR3RwYm1RNklGd2ljM1JoY25SelYybDBhRndpTEZ4dUlDQWdJQ0FnZG1Gc2RXVTZJSFpoYkhWbExGeHVJQ0FnSUNBZ0xpNHVaWEp5YjNKVmRHbHNMbVZ5Y2xSdlQySnFLRzFsYzNOaFoyVXBMRnh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnWlc1a2MxZHBkR2dvZG1Gc2RXVTZJSE4wY21sdVp5d2diV1Z6YzJGblpUODZJR1Z5Y205eVZYUnBiQzVGY25KTlpYTnpZV2RsS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyRmtaRU5vWldOcktIdGNiaUFnSUNBZ0lHdHBibVE2SUZ3aVpXNWtjMWRwZEdoY0lpeGNiaUFnSUNBZ0lIWmhiSFZsT2lCMllXeDFaU3hjYmlBZ0lDQWdJQzR1TG1WeWNtOXlWWFJwYkM1bGNuSlViMDlpYWlodFpYTnpZV2RsS1N4Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lHMXBiaWh0YVc1TVpXNW5kR2c2SUc1MWJXSmxjaXdnYldWemMyRm5aVDg2SUdWeWNtOXlWWFJwYkM1RmNuSk5aWE56WVdkbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMkZrWkVOb1pXTnJLSHRjYmlBZ0lDQWdJR3RwYm1RNklGd2liV2x1WENJc1hHNGdJQ0FnSUNCMllXeDFaVG9nYldsdVRHVnVaM1JvTEZ4dUlDQWdJQ0FnTGk0dVpYSnliM0pWZEdsc0xtVnljbFJ2VDJKcUtHMWxjM05oWjJVcExGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdiV0Y0S0cxaGVFeGxibWQwYURvZ2JuVnRZbVZ5TENCdFpYTnpZV2RsUHpvZ1pYSnliM0pWZEdsc0xrVnljazFsYzNOaFoyVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWVdSa1EyaGxZMnNvZTF4dUlDQWdJQ0FnYTJsdVpEb2dYQ0p0WVhoY0lpeGNiaUFnSUNBZ0lIWmhiSFZsT2lCdFlYaE1aVzVuZEdnc1hHNGdJQ0FnSUNBdUxpNWxjbkp2Y2xWMGFXd3VaWEp5Vkc5UFltb29iV1Z6YzJGblpTa3NYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0JzWlc1bmRHZ29iR1Z1T2lCdWRXMWlaWElzSUcxbGMzTmhaMlUvT2lCbGNuSnZjbFYwYVd3dVJYSnlUV1Z6YzJGblpTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbTFwYmloc1pXNHNJRzFsYzNOaFoyVXBMbTFoZUNoc1pXNHNJRzFsYzNOaFoyVXBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa0lGVnpaU0I2TG5OMGNtbHVaeWdwTG0xcGJpZ3hLU0JwYm5OMFpXRmtMbHh1SUNBZ0tpQkFjMlZsSUh0QWJHbHVheUJhYjJSVGRISnBibWN1YldsdWZWeHVJQ0FnS2k5Y2JpQWdibTl1Wlcxd2RIa2dQU0FvYldWemMyRm5aVDg2SUdWeWNtOXlWWFJwYkM1RmNuSk5aWE56WVdkbEtTQTlQbHh1SUNBZ0lIUm9hWE11YldsdUtERXNJR1Z5Y205eVZYUnBiQzVsY25KVWIwOWlhaWh0WlhOellXZGxLU2s3WEc1Y2JpQWdkSEpwYlNBOUlDZ3BJRDArWEc0Z0lDQWdibVYzSUZwdlpGTjBjbWx1WnloN1hHNGdJQ0FnSUNBdUxpNTBhR2x6TGw5a1pXWXNYRzRnSUNBZ0lDQmphR1ZqYTNNNklGc3VMaTUwYUdsekxsOWtaV1l1WTJobFkydHpMQ0I3SUd0cGJtUTZJRndpZEhKcGJWd2lJSDFkTEZ4dUlDQWdJSDBwTzF4dVhHNGdJR2RsZENCcGMwVnRZV2xzS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUFoSVhSb2FYTXVYMlJsWmk1amFHVmphM011Wm1sdVpDZ29ZMmdwSUQwK0lHTm9MbXRwYm1RZ1BUMDlJRndpWlcxaGFXeGNJaWs3WEc0Z0lIMWNiaUFnWjJWMElHbHpWVkpNS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUFoSVhSb2FYTXVYMlJsWmk1amFHVmphM011Wm1sdVpDZ29ZMmdwSUQwK0lHTm9MbXRwYm1RZ1BUMDlJRndpZFhKc1hDSXBPMXh1SUNCOVhHNGdJR2RsZENCcGMxVlZTVVFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ0VoZEdocGN5NWZaR1ZtTG1Ob1pXTnJjeTVtYVc1a0tDaGphQ2tnUFQ0Z1kyZ3VhMmx1WkNBOVBUMGdYQ0oxZFdsa1hDSXBPMXh1SUNCOVhHNGdJR2RsZENCcGMwTlZTVVFvS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ0VoZEdocGN5NWZaR1ZtTG1Ob1pXTnJjeTVtYVc1a0tDaGphQ2tnUFQ0Z1kyZ3VhMmx1WkNBOVBUMGdYQ0pqZFdsa1hDSXBPMXh1SUNCOVhHNGdJR2RsZENCdGFXNU1aVzVuZEdnb0tTQjdYRzRnSUNBZ2JHVjBJRzFwYmpvZ2JuVnRZbVZ5SUh3Z2JuVnNiQ0E5SUc1MWJHdzdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphQ0J2WmlCMGFHbHpMbDlrWldZdVkyaGxZMnR6S1NCN1hHNGdJQ0FnSUNCcFppQW9ZMmd1YTJsdVpDQTlQVDBnWENKdGFXNWNJaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9iV2x1SUQwOVBTQnVkV3hzSUh4OElHTm9MblpoYkhWbElENGdiV2x1S1NCdGFXNGdQU0JqYUM1MllXeDFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUcxcGJqdGNiaUFnZlZ4dUlDQm5aWFFnYldGNFRHVnVaM1JvS0NrZ2UxeHVJQ0FnSUd4bGRDQnRZWGc2SUc1MWJXSmxjaUI4SUc1MWJHd2dQU0J1ZFd4c08xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyZ2diMllnZEdocGN5NWZaR1ZtTG1Ob1pXTnJjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHTm9MbXRwYm1RZ1BUMDlJRndpYldGNFhDSXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhlQ0E5UFQwZ2JuVnNiQ0I4ZkNCamFDNTJZV3gxWlNBOElHMWhlQ2tnYldGNElEMGdZMmd1ZG1Gc2RXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ0WVhnN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1kzSmxZWFJsSUQwZ0tIQmhjbUZ0Y3o4NklGSmhkME55WldGMFpWQmhjbUZ0Y3lrNklGcHZaRk4wY21sdVp5QTlQaUI3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJhYjJSVGRISnBibWNvZTF4dUlDQWdJQ0FnWTJobFkydHpPaUJiWFN4Y2JpQWdJQ0FnSUhSNWNHVk9ZVzFsT2lCYWIyUkdhWEp6ZEZCaGNuUjVWSGx3WlV0cGJtUXVXbTlrVTNSeWFXNW5MRnh1SUNBZ0lDQWdMaTR1Y0hKdlkyVnpjME55WldGMFpWQmhjbUZ0Y3lod1lYSmhiWE1wTEZ4dUlDQWdJSDBwTzF4dUlDQjlPMXh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrVG5WdFltVnlJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1ZEhsd1pTQmFiMlJPZFcxaVpYSkRhR1ZqYXlBOVhHNGdJSHdnZXlCcmFXNWtPaUJjSW0xcGJsd2lPeUIyWVd4MVpUb2diblZ0WW1WeU95QnBibU5zZFhOcGRtVTZJR0p2YjJ4bFlXNDdJRzFsYzNOaFoyVS9PaUJ6ZEhKcGJtY2dmVnh1SUNCOElIc2dhMmx1WkRvZ1hDSnRZWGhjSWpzZ2RtRnNkV1U2SUc1MWJXSmxjanNnYVc1amJIVnphWFpsT2lCaWIyOXNaV0Z1T3lCdFpYTnpZV2RsUHpvZ2MzUnlhVzVuSUgxY2JpQWdmQ0I3SUd0cGJtUTZJRndpYVc1MFhDSTdJRzFsYzNOaFoyVS9PaUJ6ZEhKcGJtY2dmVnh1SUNCOElIc2dhMmx1WkRvZ1hDSnRkV3gwYVhCc1pVOW1YQ0k3SUhaaGJIVmxPaUJ1ZFcxaVpYSTdJRzFsYzNOaFoyVS9PaUJ6ZEhKcGJtY2dmVHRjYmx4dUx5OGdhSFIwY0hNNkx5OXpkR0ZqYTI5MlpYSm1iRzkzTG1OdmJTOXhkV1Z6ZEdsdmJuTXZNemsyTmpRNE5DOTNhSGt0Wkc5bGN5MXRiMlIxYkhWekxXOXdaWEpoZEc5eUxYSmxkSFZ5YmkxbWNtRmpkR2x2Ym1Gc0xXNTFiV0psY2kxcGJpMXFZWFpoYzJOeWFYQjBMek14TnpFeE1ETTBJek14TnpFeE1ETTBYRzVtZFc1amRHbHZiaUJtYkc5aGRGTmhabVZTWlcxaGFXNWtaWElvZG1Gc09pQnVkVzFpWlhJc0lITjBaWEE2SUc1MWJXSmxjaWtnZTF4dUlDQmpiMjV6ZENCMllXeEVaV05EYjNWdWRDQTlJQ2gyWVd3dWRHOVRkSEpwYm1jb0tTNXpjR3hwZENoY0lpNWNJaWxiTVYwZ2ZId2dYQ0pjSWlrdWJHVnVaM1JvTzF4dUlDQmpiMjV6ZENCemRHVndSR1ZqUTI5MWJuUWdQU0FvYzNSbGNDNTBiMU4wY21sdVp5Z3BMbk53YkdsMEtGd2lMbHdpS1ZzeFhTQjhmQ0JjSWx3aUtTNXNaVzVuZEdnN1hHNGdJR052Ym5OMElHUmxZME52ZFc1MElEMGdkbUZzUkdWalEyOTFiblFnUGlCemRHVndSR1ZqUTI5MWJuUWdQeUIyWVd4RVpXTkRiM1Z1ZENBNklITjBaWEJFWldORGIzVnVkRHRjYmlBZ1kyOXVjM1FnZG1Gc1NXNTBJRDBnY0dGeWMyVkpiblFvZG1Gc0xuUnZSbWw0WldRb1pHVmpRMjkxYm5RcExuSmxjR3hoWTJVb1hDSXVYQ0lzSUZ3aVhDSXBLVHRjYmlBZ1kyOXVjM1FnYzNSbGNFbHVkQ0E5SUhCaGNuTmxTVzUwS0hOMFpYQXVkRzlHYVhobFpDaGtaV05EYjNWdWRDa3VjbVZ3YkdGalpTaGNJaTVjSWl3Z1hDSmNJaWtwTzF4dUlDQnlaWFIxY200Z0tIWmhiRWx1ZENBbElITjBaWEJKYm5RcElDOGdUV0YwYUM1d2IzY29NVEFzSUdSbFkwTnZkVzUwS1R0Y2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJST2RXMWlaWEpFWldZZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUkdWbUlIdGNiaUFnWTJobFkydHpPaUJhYjJST2RXMWlaWEpEYUdWamExdGRPMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkU1MWJXSmxjanRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZwdlpFNTFiV0psY2lCbGVIUmxibVJ6SUZwdlpGUjVjR1U4Ym5WdFltVnlMQ0JhYjJST2RXMWlaWEpFWldZK0lIdGNiaUFnWDNCaGNuTmxLR2x1Y0hWME9pQlFZWEp6WlVsdWNIVjBLVG9nVUdGeWMyVlNaWFIxY201VWVYQmxQRzUxYldKbGNqNGdlMXh1SUNBZ0lHTnZibk4wSUhCaGNuTmxaRlI1Y0dVZ1BTQjBhR2x6TGw5blpYUlVlWEJsS0dsdWNIVjBLVHRjYmlBZ0lDQnBaaUFvY0dGeWMyVmtWSGx3WlNBaFBUMGdXbTlrVUdGeWMyVmtWSGx3WlM1dWRXMWlaWElwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR04wZUNBOUlIUm9hWE11WDJkbGRFOXlVbVYwZFhKdVEzUjRLR2x1Y0hWMEtUdGNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0JsZUhCbFkzUmxaRG9nV205a1VHRnljMlZrVkhsd1pTNXVkVzFpWlhJc1hHNGdJQ0FnSUNBZ0lISmxZMlZwZG1Wa09pQmpkSGd1Y0dGeWMyVmtWSGx3WlN4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUVsT1ZrRk1TVVE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUdOMGVEb2dkVzVrWldacGJtVmtJSHdnVUdGeWMyVkRiMjUwWlhoMElEMGdkVzVrWldacGJtVmtPMXh1SUNBZ0lHTnZibk4wSUhOMFlYUjFjeUE5SUc1bGR5QlFZWEp6WlZOMFlYUjFjeWdwTzF4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCamFHVmpheUJ2WmlCMGFHbHpMbDlrWldZdVkyaGxZMnR6S1NCN1hHNGdJQ0FnSUNCcFppQW9ZMmhsWTJzdWEybHVaQ0E5UFQwZ1hDSnBiblJjSWlrZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvSVhWMGFXd3VhWE5KYm5SbFoyVnlLR2x1Y0hWMExtUmhkR0VwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdZM1I0SUQwZ2RHaHBjeTVmWjJWMFQzSlNaWFIxY201RGRIZ29hVzV3ZFhRc0lHTjBlQ2s3WEc0Z0lDQWdJQ0FnSUNBZ1lXUmtTWE56ZFdWVWIwTnZiblJsZUhRb1kzUjRMQ0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMlJsT2lCYWIyUkpjM04xWlVOdlpHVXVhVzUyWVd4cFpGOTBlWEJsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdaWGh3WldOMFpXUTZJRndpYVc1MFpXZGxjbHdpTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdjbVZqWldsMlpXUTZJRndpWm14dllYUmNJaXhjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWxjM05oWjJVNklHTm9aV05yTG0xbGMzTmhaMlVzWEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbVJwY25SNUtDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJobFkyc3VhMmx1WkNBOVBUMGdYQ0p0YVc1Y0lpa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQjBiMjlUYldGc2JDQTlJR05vWldOckxtbHVZMngxYzJsMlpWeHVJQ0FnSUNBZ0lDQWdJRDhnYVc1d2RYUXVaR0YwWVNBOElHTm9aV05yTG5aaGJIVmxYRzRnSUNBZ0lDQWdJQ0FnT2lCcGJuQjFkQzVrWVhSaElEdzlJR05vWldOckxuWmhiSFZsTzF4dUlDQWdJQ0FnSUNCcFppQW9kRzl2VTIxaGJHd3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamRIZ2dQU0IwYUdsekxsOW5aWFJQY2xKbGRIVnlia04wZUNocGJuQjFkQ3dnWTNSNEtUdGNiaUFnSUNBZ0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1MGIyOWZjMjFoYkd3c1hHNGdJQ0FnSUNBZ0lDQWdJQ0J0YVc1cGJYVnRPaUJqYUdWamF5NTJZV3gxWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dVNklGd2liblZ0WW1WeVhDSXNYRzRnSUNBZ0lDQWdJQ0FnSUNCcGJtTnNkWE5wZG1VNklHTm9aV05yTG1sdVkyeDFjMmwyWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFsYzNOaFoyVTZJR05vWldOckxtMWxjM05oWjJVc1hHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ2MzUmhkSFZ6TG1ScGNuUjVLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyaGxZMnN1YTJsdVpDQTlQVDBnWENKdFlYaGNJaWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0IwYjI5Q2FXY2dQU0JqYUdWamF5NXBibU5zZFhOcGRtVmNiaUFnSUNBZ0lDQWdJQ0EvSUdsdWNIVjBMbVJoZEdFZ1BpQmphR1ZqYXk1MllXeDFaVnh1SUNBZ0lDQWdJQ0FnSURvZ2FXNXdkWFF1WkdGMFlTQStQU0JqYUdWamF5NTJZV3gxWlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJ2YjBKcFp5a2dlMXh1SUNBZ0lDQWdJQ0FnSUdOMGVDQTlJSFJvYVhNdVgyZGxkRTl5VW1WMGRYSnVRM1I0S0dsdWNIVjBMQ0JqZEhncE8xeHVJQ0FnSUNBZ0lDQWdJR0ZrWkVsemMzVmxWRzlEYjI1MFpYaDBLR04wZUN3Z2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5a1pUb2dXbTlrU1hOemRXVkRiMlJsTG5SdmIxOWlhV2NzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRZWGhwYlhWdE9pQmphR1ZqYXk1MllXeDFaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1U2SUZ3aWJuVnRZbVZ5WENJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm1Oc2RYTnBkbVU2SUdOb1pXTnJMbWx1WTJ4MWMybDJaU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lHMWxjM05oWjJVNklHTm9aV05yTG0xbGMzTmhaMlVzWEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbVJwY25SNUtDazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTJobFkyc3VhMmx1WkNBOVBUMGdYQ0p0ZFd4MGFYQnNaVTltWENJcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dac2IyRjBVMkZtWlZKbGJXRnBibVJsY2locGJuQjFkQzVrWVhSaExDQmphR1ZqYXk1MllXeDFaU2tnSVQwOUlEQXBJSHRjYmlBZ0lDQWdJQ0FnSUNCamRIZ2dQU0IwYUdsekxsOW5aWFJQY2xKbGRIVnlia04wZUNocGJuQjFkQ3dnWTNSNEtUdGNiaUFnSUNBZ0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1dWIzUmZiWFZzZEdsd2JHVmZiMllzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRkV3gwYVhCc1pVOW1PaUJqYUdWamF5NTJZV3gxWlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFsYzNOaFoyVTZJR05vWldOckxtMWxjM05oWjJVc1hHNGdJQ0FnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUNBZ2MzUmhkSFZ6TG1ScGNuUjVLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhWMGFXd3VZWE56WlhKMFRtVjJaWElvWTJobFkyc3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCN0lITjBZWFIxY3pvZ2MzUmhkSFZ6TG5aaGJIVmxMQ0IyWVd4MVpUb2dhVzV3ZFhRdVpHRjBZU0I5TzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOeVpXRjBaU0E5SUNod1lYSmhiWE0vT2lCU1lYZERjbVZoZEdWUVlYSmhiWE1wT2lCYWIyUk9kVzFpWlhJZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrVG5WdFltVnlLSHRjYmlBZ0lDQWdJR05vWldOcmN6b2dXMTBzWEc0Z0lDQWdJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRTUxYldKbGNpeGNiaUFnSUNBZ0lDNHVMbkJ5YjJObGMzTkRjbVZoZEdWUVlYSmhiWE1vY0dGeVlXMXpLU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZUdGNibHh1SUNCbmRHVW9kbUZzZFdVNklHNTFiV0psY2l3Z2JXVnpjMkZuWlQ4NklHVnljbTl5VlhScGJDNUZjbkpOWlhOellXZGxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YzJWMFRHbHRhWFFvWENKdGFXNWNJaXdnZG1Gc2RXVXNJSFJ5ZFdVc0lHVnljbTl5VlhScGJDNTBiMU4wY21sdVp5aHRaWE56WVdkbEtTazdYRzRnSUgxY2JpQWdiV2x1SUQwZ2RHaHBjeTVuZEdVN1hHNWNiaUFnWjNRb2RtRnNkV1U2SUc1MWJXSmxjaXdnYldWemMyRm5aVDg2SUdWeWNtOXlWWFJwYkM1RmNuSk5aWE56WVdkbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMlYwVEdsdGFYUW9YQ0p0YVc1Y0lpd2dkbUZzZFdVc0lHWmhiSE5sTENCbGNuSnZjbFYwYVd3dWRHOVRkSEpwYm1jb2JXVnpjMkZuWlNrcE8xeHVJQ0I5WEc1Y2JpQWdiSFJsS0haaGJIVmxPaUJ1ZFcxaVpYSXNJRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTmxkRXhwYldsMEtGd2liV0Y0WENJc0lIWmhiSFZsTENCMGNuVmxMQ0JsY25KdmNsVjBhV3d1ZEc5VGRISnBibWNvYldWemMyRm5aU2twTzF4dUlDQjlYRzRnSUcxaGVDQTlJSFJvYVhNdWJIUmxPMXh1WEc0Z0lHeDBLSFpoYkhWbE9pQnVkVzFpWlhJc0lHMWxjM05oWjJVL09pQmxjbkp2Y2xWMGFXd3VSWEp5VFdWemMyRm5aU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5ObGRFeHBiV2wwS0Z3aWJXRjRYQ0lzSUhaaGJIVmxMQ0JtWVd4elpTd2daWEp5YjNKVmRHbHNMblJ2VTNSeWFXNW5LRzFsYzNOaFoyVXBLVHRjYmlBZ2ZWeHVYRzRnSUhCeWIzUmxZM1JsWkNCelpYUk1hVzFwZENoY2JpQWdJQ0JyYVc1a09pQmNJbTFwYmx3aUlId2dYQ0p0WVhoY0lpeGNiaUFnSUNCMllXeDFaVG9nYm5WdFltVnlMRnh1SUNBZ0lHbHVZMngxYzJsMlpUb2dZbTl2YkdWaGJpeGNiaUFnSUNCdFpYTnpZV2RsUHpvZ2MzUnlhVzVuWEc0Z0lDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrVG5WdFltVnlLSHRjYmlBZ0lDQWdJQzR1TG5Sb2FYTXVYMlJsWml4Y2JpQWdJQ0FnSUdOb1pXTnJjem9nVzF4dUlDQWdJQ0FnSUNBdUxpNTBhR2x6TGw5a1pXWXVZMmhsWTJ0ekxGeHVJQ0FnSUNBZ0lDQjdYRzRnSUNBZ0lDQWdJQ0FnYTJsdVpDeGNiaUFnSUNBZ0lDQWdJQ0IyWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0JwYm1Oc2RYTnBkbVVzWEc0Z0lDQWdJQ0FnSUNBZ2JXVnpjMkZuWlRvZ1pYSnliM0pWZEdsc0xuUnZVM1J5YVc1bktHMWxjM05oWjJVcExGeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdYU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZWeHVYRzRnSUY5aFpHUkRhR1ZqYXloamFHVmphem9nV205a1RuVnRZbVZ5UTJobFkyc3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkU1MWJXSmxjaWg3WEc0Z0lDQWdJQ0F1TGk1MGFHbHpMbDlrWldZc1hHNGdJQ0FnSUNCamFHVmphM002SUZzdUxpNTBhR2x6TGw5a1pXWXVZMmhsWTJ0ekxDQmphR1ZqYTEwc1hHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQnBiblFvYldWemMyRm5aVDg2SUdWeWNtOXlWWFJwYkM1RmNuSk5aWE56WVdkbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMkZrWkVOb1pXTnJLSHRjYmlBZ0lDQWdJR3RwYm1RNklGd2lhVzUwWENJc1hHNGdJQ0FnSUNCdFpYTnpZV2RsT2lCbGNuSnZjbFYwYVd3dWRHOVRkSEpwYm1jb2JXVnpjMkZuWlNrc1hHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQndiM05wZEdsMlpTaHRaWE56WVdkbFB6b2daWEp5YjNKVmRHbHNMa1Z5Y2sxbGMzTmhaMlVwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZllXUmtRMmhsWTJzb2UxeHVJQ0FnSUNBZ2EybHVaRG9nWENKdGFXNWNJaXhjYmlBZ0lDQWdJSFpoYkhWbE9pQXdMRnh1SUNBZ0lDQWdhVzVqYkhWemFYWmxPaUJtWVd4elpTeGNiaUFnSUNBZ0lHMWxjM05oWjJVNklHVnljbTl5VlhScGJDNTBiMU4wY21sdVp5aHRaWE56WVdkbEtTeGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJRzVsWjJGMGFYWmxLRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWhaR1JEYUdWamF5aDdYRzRnSUNBZ0lDQnJhVzVrT2lCY0ltMWhlRndpTEZ4dUlDQWdJQ0FnZG1Gc2RXVTZJREFzWEc0Z0lDQWdJQ0JwYm1Oc2RYTnBkbVU2SUdaaGJITmxMRnh1SUNBZ0lDQWdiV1Z6YzJGblpUb2daWEp5YjNKVmRHbHNMblJ2VTNSeWFXNW5LRzFsYzNOaFoyVXBMRnh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnYm05dWNHOXphWFJwZG1Vb2JXVnpjMkZuWlQ4NklHVnljbTl5VlhScGJDNUZjbkpOWlhOellXZGxLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJGa1pFTm9aV05yS0h0Y2JpQWdJQ0FnSUd0cGJtUTZJRndpYldGNFhDSXNYRzRnSUNBZ0lDQjJZV3gxWlRvZ01DeGNiaUFnSUNBZ0lHbHVZMngxYzJsMlpUb2dkSEoxWlN4Y2JpQWdJQ0FnSUcxbGMzTmhaMlU2SUdWeWNtOXlWWFJwYkM1MGIxTjBjbWx1WnlodFpYTnpZV2RsS1N4Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lHNXZibTVsWjJGMGFYWmxLRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWhaR1JEYUdWamF5aDdYRzRnSUNBZ0lDQnJhVzVrT2lCY0ltMXBibHdpTEZ4dUlDQWdJQ0FnZG1Gc2RXVTZJREFzWEc0Z0lDQWdJQ0JwYm1Oc2RYTnBkbVU2SUhSeWRXVXNYRzRnSUNBZ0lDQnRaWE56WVdkbE9pQmxjbkp2Y2xWMGFXd3VkRzlUZEhKcGJtY29iV1Z6YzJGblpTa3NYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0J0ZFd4MGFYQnNaVTltS0haaGJIVmxPaUJ1ZFcxaVpYSXNJRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWhaR1JEYUdWamF5aDdYRzRnSUNBZ0lDQnJhVzVrT2lCY0ltMTFiSFJwY0d4bFQyWmNJaXhjYmlBZ0lDQWdJSFpoYkhWbE9pQjJZV3gxWlN4Y2JpQWdJQ0FnSUcxbGMzTmhaMlU2SUdWeWNtOXlWWFJwYkM1MGIxTjBjbWx1WnlodFpYTnpZV2RsS1N4Y2JpQWdJQ0I5S1R0Y2JpQWdmVnh1WEc0Z0lITjBaWEFnUFNCMGFHbHpMbTExYkhScGNHeGxUMlk3WEc1Y2JpQWdaMlYwSUcxcGJsWmhiSFZsS0NrZ2UxeHVJQ0FnSUd4bGRDQnRhVzQ2SUc1MWJXSmxjaUI4SUc1MWJHd2dQU0J1ZFd4c08xeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyZ2diMllnZEdocGN5NWZaR1ZtTG1Ob1pXTnJjeWtnZTF4dUlDQWdJQ0FnYVdZZ0tHTm9MbXRwYm1RZ1BUMDlJRndpYldsdVhDSXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMXBiaUE5UFQwZ2JuVnNiQ0I4ZkNCamFDNTJZV3gxWlNBK0lHMXBiaWtnYldsdUlEMGdZMmd1ZG1Gc2RXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJ0YVc0N1hHNGdJSDFjYmx4dUlDQm5aWFFnYldGNFZtRnNkV1VvS1NCN1hHNGdJQ0FnYkdWMElHMWhlRG9nYm5WdFltVnlJSHdnYm5Wc2JDQTlJRzUxYkd3N1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCamFDQnZaaUIwYUdsekxsOWtaV1l1WTJobFkydHpLU0I3WEc0Z0lDQWdJQ0JwWmlBb1kyZ3VhMmx1WkNBOVBUMGdYQ0p0WVhoY0lpa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2JXRjRJRDA5UFNCdWRXeHNJSHg4SUdOb0xuWmhiSFZsSUR3Z2JXRjRLU0J0WVhnZ1BTQmphQzUyWVd4MVpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFoZUR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0JwYzBsdWRDZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z0lTRjBhR2x6TGw5a1pXWXVZMmhsWTJ0ekxtWnBibVFvS0dOb0tTQTlQaUJqYUM1cmFXNWtJRDA5UFNCY0ltbHVkRndpS1R0Y2JpQWdmVnh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrUW1sblNXNTBJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZwdlpFSnBaMGx1ZEVSbFppQmxlSFJsYm1SeklGcHZaRlI1Y0dWRVpXWWdlMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkVKcFowbHVkRHRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZwdlpFSnBaMGx1ZENCbGVIUmxibVJ6SUZwdlpGUjVjR1U4WW1sbmFXNTBMQ0JhYjJSQ2FXZEpiblJFWldZK0lIdGNiaUFnWDNCaGNuTmxLR2x1Y0hWME9pQlFZWEp6WlVsdWNIVjBLVG9nVUdGeWMyVlNaWFIxY201VWVYQmxQR0pwWjJsdWRENGdlMXh1SUNBZ0lHTnZibk4wSUhCaGNuTmxaRlI1Y0dVZ1BTQjBhR2x6TGw5blpYUlVlWEJsS0dsdWNIVjBLVHRjYmlBZ0lDQnBaaUFvY0dGeWMyVmtWSGx3WlNBaFBUMGdXbTlrVUdGeWMyVmtWSGx3WlM1aWFXZHBiblFwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR04wZUNBOUlIUm9hWE11WDJkbGRFOXlVbVYwZFhKdVEzUjRLR2x1Y0hWMEtUdGNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0JsZUhCbFkzUmxaRG9nV205a1VHRnljMlZrVkhsd1pTNWlhV2RwYm5Rc1hHNGdJQ0FnSUNBZ0lISmxZMlZwZG1Wa09pQmpkSGd1Y0dGeWMyVmtWSGx3WlN4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUVsT1ZrRk1TVVE3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCUFN5aHBibkIxZEM1a1lYUmhLVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0FvY0dGeVlXMXpQem9nVW1GM1EzSmxZWFJsVUdGeVlXMXpLVG9nV205a1FtbG5TVzUwSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRUpwWjBsdWRDaDdYRzRnSUNBZ0lDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFSnBaMGx1ZEN4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JuMWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lGcHZaRUp2YjJ4bFlXNGdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZwdlpFSnZiMnhsWVc1RVpXWWdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2RIbHdaVTVoYldVNklGcHZaRVpwY25OMFVHRnlkSGxVZVhCbFMybHVaQzVhYjJSQ2IyOXNaV0Z1TzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1dtOWtRbTl2YkdWaGJpQmxlSFJsYm1SeklGcHZaRlI1Y0dVOFltOXZiR1ZoYml3Z1dtOWtRbTl2YkdWaGJrUmxaajRnZTF4dUlDQmZjR0Z5YzJVb2FXNXdkWFE2SUZCaGNuTmxTVzV3ZFhRcE9pQlFZWEp6WlZKbGRIVnlibFI1Y0dVOFltOXZiR1ZoYmo0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJoY25ObFpGUjVjR1VnUFNCMGFHbHpMbDluWlhSVWVYQmxLR2x1Y0hWMEtUdGNiaUFnSUNCcFppQW9jR0Z5YzJWa1ZIbHdaU0FoUFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzVpYjI5c1pXRnVLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmpkSGdnUFNCMGFHbHpMbDluWlhSUGNsSmxkSFZ5YmtOMGVDaHBibkIxZENrN1hHNGdJQ0FnSUNCaFpHUkpjM04xWlZSdlEyOXVkR1Y0ZENoamRIZ3NJSHRjYmlBZ0lDQWdJQ0FnWTI5a1pUb2dXbTlrU1hOemRXVkRiMlJsTG1sdWRtRnNhV1JmZEhsd1pTeGNiaUFnSUNBZ0lDQWdaWGh3WldOMFpXUTZJRnB2WkZCaGNuTmxaRlI1Y0dVdVltOXZiR1ZoYml4Y2JpQWdJQ0FnSUNBZ2NtVmpaV2wyWldRNklHTjBlQzV3WVhKelpXUlVlWEJsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUU5TEtHbHVjSFYwTG1SaGRHRXBPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR055WldGMFpTQTlJQ2h3WVhKaGJYTS9PaUJTWVhkRGNtVmhkR1ZRWVhKaGJYTXBPaUJhYjJSQ2IyOXNaV0Z1SUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRUp2YjJ4bFlXNG9lMXh1SUNBZ0lDQWdkSGx3WlU1aGJXVTZJRnB2WkVacGNuTjBVR0Z5ZEhsVWVYQmxTMmx1WkM1YWIyUkNiMjlzWldGdUxGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh3WVhKaGJYTXBMRnh1SUNBZ0lIMHBPMXh1SUNCOU8xeHVmVnh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrUkdGMFpTQWdJQ0FnSUNBZ0x5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYm5SNWNHVWdXbTlrUkdGMFpVTm9aV05ySUQxY2JpQWdmQ0I3SUd0cGJtUTZJRndpYldsdVhDSTdJSFpoYkhWbE9pQnVkVzFpWlhJN0lHMWxjM05oWjJVL09pQnpkSEpwYm1jZ2ZWeHVJQ0I4SUhzZ2EybHVaRG9nWENKdFlYaGNJanNnZG1Gc2RXVTZJRzUxYldKbGNqc2diV1Z6YzJGblpUODZJSE4wY21sdVp5QjlPMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJSRVlYUmxSR1ZtSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJR05vWldOcmN6b2dXbTlrUkdGMFpVTm9aV05yVzEwN1hHNGdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtSR0YwWlR0Y2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGcHZaRVJoZEdVZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUEVSaGRHVXNJRnB2WkVSaGRHVkVaV1krSUh0Y2JpQWdYM0JoY25ObEtHbHVjSFYwT2lCUVlYSnpaVWx1Y0hWMEtUb2dVR0Z5YzJWU1pYUjFjbTVVZVhCbFBIUm9hWE5iWENKZmIzVjBjSFYwWENKZFBpQjdYRzRnSUNBZ1kyOXVjM1FnY0dGeWMyVmtWSGx3WlNBOUlIUm9hWE11WDJkbGRGUjVjR1VvYVc1d2RYUXBPMXh1WEc0Z0lDQWdhV1lnS0hCaGNuTmxaRlI1Y0dVZ0lUMDlJRnB2WkZCaGNuTmxaRlI1Y0dVdVpHRjBaU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZM1I0SUQwZ2RHaHBjeTVmWjJWMFQzSlNaWFIxY201RGRIZ29hVzV3ZFhRcE8xeHVJQ0FnSUNBZ1lXUmtTWE56ZFdWVWIwTnZiblJsZUhRb1kzUjRMQ0I3WEc0Z0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDNSNWNHVXNYRzRnSUNBZ0lDQWdJR1Y0Y0dWamRHVmtPaUJhYjJSUVlYSnpaV1JVZVhCbExtUmhkR1VzWEc0Z0lDQWdJQ0FnSUhKbFkyVnBkbVZrT2lCamRIZ3VjR0Z5YzJWa1ZIbHdaU3hjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnY21WMGRYSnVJRWxPVmtGTVNVUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR2x6VG1GT0tHbHVjSFYwTG1SaGRHRXVaMlYwVkdsdFpTZ3BLU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZM1I0SUQwZ2RHaHBjeTVmWjJWMFQzSlNaWFIxY201RGRIZ29hVzV3ZFhRcE8xeHVJQ0FnSUNBZ1lXUmtTWE56ZFdWVWIwTnZiblJsZUhRb1kzUjRMQ0I3WEc0Z0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDJSaGRHVXNYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQkpUbFpCVEVsRU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSE4wWVhSMWN5QTlJRzVsZHlCUVlYSnpaVk4wWVhSMWN5Z3BPMXh1SUNBZ0lHeGxkQ0JqZEhnNklIVnVaR1ZtYVc1bFpDQjhJRkJoY25ObFEyOXVkR1Y0ZENBOUlIVnVaR1ZtYVc1bFpEdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdZMmhsWTJzZ2IyWWdkR2hwY3k1ZlpHVm1MbU5vWldOcmN5a2dlMXh1SUNBZ0lDQWdhV1lnS0dOb1pXTnJMbXRwYm1RZ1BUMDlJRndpYldsdVhDSXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHVjSFYwTG1SaGRHRXVaMlYwVkdsdFpTZ3BJRHdnWTJobFkyc3VkbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdJQ0JqZEhnZ1BTQjBhR2x6TGw5blpYUlBjbEpsZEhWeWJrTjBlQ2hwYm5CMWRDd2dZM1I0S1R0Y2JpQWdJQ0FnSUNBZ0lDQmhaR1JKYzNOMVpWUnZRMjl1ZEdWNGRDaGpkSGdzSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR052WkdVNklGcHZaRWx6YzNWbFEyOWtaUzUwYjI5ZmMyMWhiR3dzWEc0Z0lDQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9pQmphR1ZqYXk1dFpYTnpZV2RsTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdhVzVqYkhWemFYWmxPaUIwY25WbExGeHVJQ0FnSUNBZ0lDQWdJQ0FnYldsdWFXMTFiVG9nWTJobFkyc3VkbUZzZFdVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbE9pQmNJbVJoZEdWY0lpeGNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQnpkR0YwZFhNdVpHbHlkSGtvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaGphR1ZqYXk1cmFXNWtJRDA5UFNCY0ltMWhlRndpS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwYm5CMWRDNWtZWFJoTG1kbGRGUnBiV1VvS1NBK0lHTm9aV05yTG5aaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ1kzUjRJRDBnZEdocGN5NWZaMlYwVDNKU1pYUjFjbTVEZEhnb2FXNXdkWFFzSUdOMGVDazdYRzRnSUNBZ0lDQWdJQ0FnWVdSa1NYTnpkV1ZVYjBOdmJuUmxlSFFvWTNSNExDQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWRHOXZYMkpwWnl4Y2JpQWdJQ0FnSUNBZ0lDQWdJRzFsYzNOaFoyVTZJR05vWldOckxtMWxjM05oWjJVc1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwYm1Oc2RYTnBkbVU2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNCdFlYaHBiWFZ0T2lCamFHVmpheTUyWVd4MVpTeGNiaUFnSUNBZ0lDQWdJQ0FnSUhSNWNHVTZJRndpWkdGMFpWd2lMRnh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJSE4wWVhSMWN5NWthWEowZVNncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjFkR2xzTG1GemMyVnlkRTVsZG1WeUtHTm9aV05yS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdlMXh1SUNBZ0lDQWdjM1JoZEhWek9pQnpkR0YwZFhNdWRtRnNkV1VzWEc0Z0lDQWdJQ0IyWVd4MVpUb2dibVYzSUVSaGRHVW9LR2x1Y0hWMExtUmhkR0VnWVhNZ1JHRjBaU2t1WjJWMFZHbHRaU2dwS1N4Y2JpQWdJQ0I5TzF4dUlDQjlYRzVjYmlBZ1gyRmtaRU5vWldOcktHTm9aV05yT2lCYWIyUkVZWFJsUTJobFkyc3BJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkVSaGRHVW9lMXh1SUNBZ0lDQWdMaTR1ZEdocGN5NWZaR1ZtTEZ4dUlDQWdJQ0FnWTJobFkydHpPaUJiTGk0dWRHaHBjeTVmWkdWbUxtTm9aV05yY3l3Z1kyaGxZMnRkTEZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ2JXbHVLRzFwYmtSaGRHVTZJRVJoZEdVc0lHMWxjM05oWjJVL09pQmxjbkp2Y2xWMGFXd3VSWEp5VFdWemMyRm5aU2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5aFpHUkRhR1ZqYXloN1hHNGdJQ0FnSUNCcmFXNWtPaUJjSW0xcGJsd2lMRnh1SUNBZ0lDQWdkbUZzZFdVNklHMXBia1JoZEdVdVoyVjBWR2x0WlNncExGeHVJQ0FnSUNBZ2JXVnpjMkZuWlRvZ1pYSnliM0pWZEdsc0xuUnZVM1J5YVc1bktHMWxjM05oWjJVcExGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdiV0Y0S0cxaGVFUmhkR1U2SUVSaGRHVXNJRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWhaR1JEYUdWamF5aDdYRzRnSUNBZ0lDQnJhVzVrT2lCY0ltMWhlRndpTEZ4dUlDQWdJQ0FnZG1Gc2RXVTZJRzFoZUVSaGRHVXVaMlYwVkdsdFpTZ3BMRnh1SUNBZ0lDQWdiV1Z6YzJGblpUb2daWEp5YjNKVmRHbHNMblJ2VTNSeWFXNW5LRzFsYzNOaFoyVXBMRnh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnWjJWMElHMXBia1JoZEdVb0tTQjdYRzRnSUNBZ2JHVjBJRzFwYmpvZ2JuVnRZbVZ5SUh3Z2JuVnNiQ0E5SUc1MWJHdzdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQmphQ0J2WmlCMGFHbHpMbDlrWldZdVkyaGxZMnR6S1NCN1hHNGdJQ0FnSUNCcFppQW9ZMmd1YTJsdVpDQTlQVDBnWENKdGFXNWNJaWtnZTF4dUlDQWdJQ0FnSUNCcFppQW9iV2x1SUQwOVBTQnVkV3hzSUh4OElHTm9MblpoYkhWbElENGdiV2x1S1NCdGFXNGdQU0JqYUM1MllXeDFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JXbHVJQ0U5SUc1MWJHd2dQeUJ1WlhjZ1JHRjBaU2h0YVc0cElEb2diblZzYkR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0J0WVhoRVlYUmxLQ2tnZTF4dUlDQWdJR3hsZENCdFlYZzZJRzUxYldKbGNpQjhJRzUxYkd3Z1BTQnVkV3hzTzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnWTJnZ2IyWWdkR2hwY3k1ZlpHVm1MbU5vWldOcmN5a2dlMXh1SUNBZ0lDQWdhV1lnS0dOb0xtdHBibVFnUFQwOUlGd2liV0Y0WENJcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0cxaGVDQTlQVDBnYm5Wc2JDQjhmQ0JqYUM1MllXeDFaU0E4SUcxaGVDa2diV0Y0SUQwZ1kyZ3VkbUZzZFdVN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzFoZUNBaFBTQnVkV3hzSUQ4Z2JtVjNJRVJoZEdVb2JXRjRLU0E2SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J6ZEdGMGFXTWdZM0psWVhSbElEMGdLSEJoY21GdGN6ODZJRkpoZDBOeVpXRjBaVkJoY21GdGN5azZJRnB2WkVSaGRHVWdQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnV205a1JHRjBaU2g3WEc0Z0lDQWdJQ0JqYUdWamEzTTZJRnRkTEZ4dUlDQWdJQ0FnZEhsd1pVNWhiV1U2SUZwdlpFWnBjbk4wVUdGeWRIbFVlWEJsUzJsdVpDNWFiMlJFWVhSbExGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh3WVhKaGJYTXBMRnh1SUNBZ0lIMHBPMXh1SUNCOU8xeHVmVnh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ1dtOWtWVzVrWldacGJtVmtJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJSVmJtUmxabWx1WldSRVpXWWdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2RIbHdaVTVoYldVNklGcHZaRVpwY25OMFVHRnlkSGxVZVhCbFMybHVaQzVhYjJSVmJtUmxabWx1WldRN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QmFiMlJWYm1SbFptbHVaV1FnWlhoMFpXNWtjeUJhYjJSVWVYQmxQSFZ1WkdWbWFXNWxaQ3dnV205a1ZXNWtaV1pwYm1Wa1JHVm1QaUI3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4MGFHbHpXMXdpWDI5MWRIQjFkRndpWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJoY25ObFpGUjVjR1VnUFNCMGFHbHpMbDluWlhSVWVYQmxLR2x1Y0hWMEtUdGNiaUFnSUNCcFppQW9jR0Z5YzJWa1ZIbHdaU0FoUFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzUxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR04wZUNBOUlIUm9hWE11WDJkbGRFOXlVbVYwZFhKdVEzUjRLR2x1Y0hWMEtUdGNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0JsZUhCbFkzUmxaRG9nV205a1VHRnljMlZrVkhsd1pTNTFibVJsWm1sdVpXUXNYRzRnSUNBZ0lDQWdJSEpsWTJWcGRtVmtPaUJqZEhndWNHRnljMlZrVkhsd1pTeGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlFbE9Wa0ZNU1VRN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQlBTeWhwYm5CMWRDNWtZWFJoS1R0Y2JpQWdmVnh1SUNCd1lYSmhiWE0vT2lCU1lYZERjbVZoZEdWUVlYSmhiWE03WEc1Y2JpQWdjM1JoZEdsaklHTnlaV0YwWlNBOUlDaHdZWEpoYlhNL09pQlNZWGREY21WaGRHVlFZWEpoYlhNcE9pQmFiMlJWYm1SbFptbHVaV1FnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1dtOWtWVzVrWldacGJtVmtLSHRjYmlBZ0lDQWdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtWVzVrWldacGJtVmtMRnh1SUNBZ0lDQWdMaTR1Y0hKdlkyVnpjME55WldGMFpWQmhjbUZ0Y3lod1lYSmhiWE1wTEZ4dUlDQWdJSDBwTzF4dUlDQjlPMXh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnV205a1RuVnNiQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtUblZzYkVSbFppQmxlSFJsYm1SeklGcHZaRlI1Y0dWRVpXWWdlMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkU1MWJHdzdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJhYjJST2RXeHNJR1Y0ZEdWdVpITWdXbTlrVkhsd1pUeHVkV3hzTENCYWIyUk9kV3hzUkdWbVBpQjdYRzRnSUY5d1lYSnpaU2hwYm5CMWREb2dVR0Z5YzJWSmJuQjFkQ2s2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHgwYUdselcxd2lYMjkxZEhCMWRGd2lYVDRnZTF4dUlDQWdJR052Ym5OMElIQmhjbk5sWkZSNWNHVWdQU0IwYUdsekxsOW5aWFJVZVhCbEtHbHVjSFYwS1R0Y2JpQWdJQ0JwWmlBb2NHRnljMlZrVkhsd1pTQWhQVDBnV205a1VHRnljMlZrVkhsd1pTNXVkV3hzS1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0JqZEhnZ1BTQjBhR2x6TGw5blpYUlBjbEpsZEhWeWJrTjBlQ2hwYm5CMWRDazdYRzRnSUNBZ0lDQmhaR1JKYzNOMVpWUnZRMjl1ZEdWNGRDaGpkSGdzSUh0Y2JpQWdJQ0FnSUNBZ1kyOWtaVG9nV205a1NYTnpkV1ZEYjJSbExtbHVkbUZzYVdSZmRIbHdaU3hjYmlBZ0lDQWdJQ0FnWlhod1pXTjBaV1E2SUZwdlpGQmhjbk5sWkZSNWNHVXViblZzYkN4Y2JpQWdJQ0FnSUNBZ2NtVmpaV2wyWldRNklHTjBlQzV3WVhKelpXUlVlWEJsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUU5TEtHbHVjSFYwTG1SaGRHRXBPMXh1SUNCOVhHNGdJSE4wWVhScFl5QmpjbVZoZEdVZ1BTQW9jR0Z5WVcxelB6b2dVbUYzUTNKbFlYUmxVR0Z5WVcxektUb2dXbTlrVG5Wc2JDQTlQaUI3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJhYjJST2RXeHNLSHRjYmlBZ0lDQWdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtUblZzYkN4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JuMWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUZwdlpFRnVlU0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnV205a1FXNTVSR1ZtSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtRVzU1TzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1dtOWtRVzU1SUdWNGRHVnVaSE1nV205a1ZIbHdaVHhoYm5rc0lGcHZaRUZ1ZVVSbFpqNGdlMXh1SUNBdkx5QjBieUJ3Y21WMlpXNTBJR2x1YzNSaGJtTmxjeUJ2WmlCdmRHaGxjaUJqYkdGemMyVnpJR1p5YjIwZ1pYaDBaVzVrYVc1bklGcHZaRUZ1ZVM0Z2RHaHBjeUJqWVhWelpYTWdhWE56ZFdWeklIZHBkR2dnWTJGMFkyaGhiR3dnYVc0Z1dtOWtUMkpxWldOMExseHVJQ0JmWVc1NU9pQjBjblZsSUQwZ2RISjFaVHRjYmlBZ1gzQmhjbk5sS0dsdWNIVjBPaUJRWVhKelpVbHVjSFYwS1RvZ1VHRnljMlZTWlhSMWNtNVVlWEJsUEhSb2FYTmJYQ0pmYjNWMGNIVjBYQ0pkUGlCN1hHNGdJQ0FnY21WMGRYSnVJRTlMS0dsdWNIVjBMbVJoZEdFcE8xeHVJQ0I5WEc0Z0lITjBZWFJwWXlCamNtVmhkR1VnUFNBb2NHRnlZVzF6UHpvZ1VtRjNRM0psWVhSbFVHRnlZVzF6S1RvZ1dtOWtRVzU1SUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRUZ1ZVNoN1hHNGdJQ0FnSUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkVGdWVTeGNiaUFnSUNBZ0lDNHVMbkJ5YjJObGMzTkRjbVZoZEdWUVlYSmhiWE1vY0dGeVlXMXpLU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZUdGNibjFjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJRnB2WkZWdWEyNXZkMjRnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGcHZaRlZ1YTI1dmQyNUVaV1lnWlhoMFpXNWtjeUJhYjJSVWVYQmxSR1ZtSUh0Y2JpQWdkSGx3WlU1aGJXVTZJRnB2WkVacGNuTjBVR0Z5ZEhsVWVYQmxTMmx1WkM1YWIyUlZibXR1YjNkdU8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdXbTlrVlc1cmJtOTNiaUJsZUhSbGJtUnpJRnB2WkZSNWNHVThkVzVyYm05M2Jpd2dXbTlrVlc1cmJtOTNia1JsWmo0Z2UxeHVJQ0F2THlCeVpYRjFhWEpsWkZ4dUlDQmZkVzVyYm05M2Jqb2dkSEoxWlNBOUlIUnlkV1U3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4MGFHbHpXMXdpWDI5MWRIQjFkRndpWFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJQU3locGJuQjFkQzVrWVhSaEtUdGNiaUFnZlZ4dVhHNGdJSE4wWVhScFl5QmpjbVZoZEdVZ1BTQW9jR0Z5WVcxelB6b2dVbUYzUTNKbFlYUmxVR0Z5WVcxektUb2dXbTlrVlc1cmJtOTNiaUE5UGlCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCYWIyUlZibXR1YjNkdUtIdGNiaUFnSUNBZ0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1ZXNXJibTkzYml4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JuMWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJRnB2WkU1bGRtVnlJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQmFiMlJPWlhabGNrUmxaaUJsZUhSbGJtUnpJRnB2WkZSNWNHVkVaV1lnZTF4dUlDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFNWxkbVZ5TzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1dtOWtUbVYyWlhJZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUEc1bGRtVnlMQ0JhYjJST1pYWmxja1JsWmo0Z2UxeHVJQ0JmY0dGeWMyVW9hVzV3ZFhRNklGQmhjbk5sU1c1d2RYUXBPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThkR2hwYzF0Y0lsOXZkWFJ3ZFhSY0lsMCtJSHRjYmlBZ0lDQmpiMjV6ZENCamRIZ2dQU0IwYUdsekxsOW5aWFJQY2xKbGRIVnlia04wZUNocGJuQjFkQ2s3WEc0Z0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdaWGh3WldOMFpXUTZJRnB2WkZCaGNuTmxaRlI1Y0dVdWJtVjJaWElzWEc0Z0lDQWdJQ0J5WldObGFYWmxaRG9nWTNSNExuQmhjbk5sWkZSNWNHVXNYRzRnSUNBZ2ZTazdYRzRnSUNBZ2NtVjBkWEp1SUVsT1ZrRk1TVVE3WEc0Z0lIMWNiaUFnYzNSaGRHbGpJR055WldGMFpTQTlJQ2h3WVhKaGJYTS9PaUJTWVhkRGNtVmhkR1ZRWVhKaGJYTXBPaUJhYjJST1pYWmxjaUE5UGlCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCYWIyUk9aWFpsY2loN1hHNGdJQ0FnSUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkU1bGRtVnlMRnh1SUNBZ0lDQWdMaTR1Y0hKdlkyVnpjME55WldGMFpWQmhjbUZ0Y3lod1lYSmhiWE1wTEZ4dUlDQWdJSDBwTzF4dUlDQjlPMXh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnV205a1ZtOXBaQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtWbTlwWkVSbFppQmxlSFJsYm1SeklGcHZaRlI1Y0dWRVpXWWdlMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkZadmFXUTdYRzU5WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJhYjJSV2IybGtJR1Y0ZEdWdVpITWdXbTlrVkhsd1pUeDJiMmxrTENCYWIyUldiMmxrUkdWbVBpQjdYRzRnSUY5d1lYSnpaU2hwYm5CMWREb2dVR0Z5YzJWSmJuQjFkQ2s2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHgwYUdselcxd2lYMjkxZEhCMWRGd2lYVDRnZTF4dUlDQWdJR052Ym5OMElIQmhjbk5sWkZSNWNHVWdQU0IwYUdsekxsOW5aWFJVZVhCbEtHbHVjSFYwS1R0Y2JpQWdJQ0JwWmlBb2NHRnljMlZrVkhsd1pTQWhQVDBnV205a1VHRnljMlZrVkhsd1pTNTFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJR052Ym5OMElHTjBlQ0E5SUhSb2FYTXVYMmRsZEU5eVVtVjBkWEp1UTNSNEtHbHVjSFYwS1R0Y2JpQWdJQ0FnSUdGa1pFbHpjM1ZsVkc5RGIyNTBaWGgwS0dOMGVDd2dlMXh1SUNBZ0lDQWdJQ0JqYjJSbE9pQmFiMlJKYzNOMVpVTnZaR1V1YVc1MllXeHBaRjkwZVhCbExGeHVJQ0FnSUNBZ0lDQmxlSEJsWTNSbFpEb2dXbTlrVUdGeWMyVmtWSGx3WlM1MmIybGtMRnh1SUNBZ0lDQWdJQ0J5WldObGFYWmxaRG9nWTNSNExuQmhjbk5sWkZSNWNHVXNYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQkpUbFpCVEVsRU8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdUMHNvYVc1d2RYUXVaR0YwWVNrN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1kzSmxZWFJsSUQwZ0tIQmhjbUZ0Y3o4NklGSmhkME55WldGMFpWQmhjbUZ0Y3lrNklGcHZaRlp2YVdRZ1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrVm05cFpDaDdYRzRnSUNBZ0lDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpGWnZhV1FzWEc0Z0lDQWdJQ0F1TGk1d2NtOWpaWE56UTNKbFlYUmxVR0Z5WVcxektIQmhjbUZ0Y3lrc1hHNGdJQ0FnZlNrN1hHNGdJSDA3WEc1OVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQmFiMlJCY25KaGVTQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtRWEp5WVhsRVpXWThWQ0JsZUhSbGJtUnpJRnB2WkZSNWNHVkJibmtnUFNCYWIyUlVlWEJsUVc1NVBseHVJQ0JsZUhSbGJtUnpJRnB2WkZSNWNHVkVaV1lnZTF4dUlDQjBlWEJsT2lCVU8xeHVJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRUZ5Y21GNU8xeHVJQ0J0YVc1TVpXNW5kR2c2SUhzZ2RtRnNkV1U2SUc1MWJXSmxjanNnYldWemMyRm5aVDg2SUhOMGNtbHVaeUI5SUh3Z2JuVnNiRHRjYmlBZ2JXRjRUR1Z1WjNSb09pQjdJSFpoYkhWbE9pQnVkVzFpWlhJN0lHMWxjM05oWjJVL09pQnpkSEpwYm1jZ2ZTQjhJRzUxYkd3N1hHNTlYRzVjYm1WNGNHOXlkQ0IwZVhCbElFRnljbUY1UTJGeVpHbHVZV3hwZEhrZ1BTQmNJbTFoYm5sY0lpQjhJRndpWVhSc1pXRnpkRzl1WlZ3aU8xeHVkSGx3WlNCaGNuSmhlVTkxZEhCMWRGUjVjR1U4WEc0Z0lGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVMRnh1SUNCRFlYSmthVzVoYkdsMGVTQmxlSFJsYm1SeklFRnljbUY1UTJGeVpHbHVZV3hwZEhrZ1BTQmNJbTFoYm5sY0lseHVQaUE5SUVOaGNtUnBibUZzYVhSNUlHVjRkR1Z1WkhNZ1hDSmhkR3hsWVhOMGIyNWxYQ0pjYmlBZ1B5QmJWRnRjSWw5dmRYUndkWFJjSWwwc0lDNHVMbFJiWENKZmIzVjBjSFYwWENKZFcxMWRYRzRnSURvZ1ZGdGNJbDl2ZFhSd2RYUmNJbDFiWFR0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZwdlpFRnljbUY1UEZ4dUlDQlVJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU3hjYmlBZ1EyRnlaR2x1WVd4cGRIa2daWGgwWlc1a2N5QkJjbkpoZVVOaGNtUnBibUZzYVhSNUlEMGdYQ0p0WVc1NVhDSmNiajRnWlhoMFpXNWtjeUJhYjJSVWVYQmxQRnh1SUNCaGNuSmhlVTkxZEhCMWRGUjVjR1U4VkN3Z1EyRnlaR2x1WVd4cGRIaytMRnh1SUNCYWIyUkJjbkpoZVVSbFpqeFVQaXhjYmlBZ1EyRnlaR2x1WVd4cGRIa2daWGgwWlc1a2N5QmNJbUYwYkdWaGMzUnZibVZjSWx4dUlDQWdJRDhnVzFSYlhDSmZhVzV3ZFhSY0lsMHNJQzR1TGxSYlhDSmZhVzV3ZFhSY0lsMWJYVjFjYmlBZ0lDQTZJRlJiWENKZmFXNXdkWFJjSWwxYlhWeHVQaUI3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4MGFHbHpXMXdpWDI5MWRIQjFkRndpWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnWTNSNExDQnpkR0YwZFhNZ2ZTQTlJSFJvYVhNdVgzQnliMk5sYzNOSmJuQjFkRkJoY21GdGN5aHBibkIxZENrN1hHNWNiaUFnSUNCamIyNXpkQ0JrWldZZ1BTQjBhR2x6TGw5a1pXWTdYRzVjYmlBZ0lDQnBaaUFvWTNSNExuQmhjbk5sWkZSNWNHVWdJVDA5SUZwdlpGQmhjbk5sWkZSNWNHVXVZWEp5WVhrcElIdGNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0JsZUhCbFkzUmxaRG9nV205a1VHRnljMlZrVkhsd1pTNWhjbkpoZVN4Y2JpQWdJQ0FnSUNBZ2NtVmpaV2wyWldRNklHTjBlQzV3WVhKelpXUlVlWEJsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWkdWbUxtMXBia3hsYm1kMGFDQWhQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdhV1lnS0dOMGVDNWtZWFJoTG14bGJtZDBhQ0E4SUdSbFppNXRhVzVNWlc1bmRHZ3VkbUZzZFdVcElIdGNiaUFnSUNBZ0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMblJ2YjE5emJXRnNiQ3hjYmlBZ0lDQWdJQ0FnSUNCdGFXNXBiWFZ0T2lCa1pXWXViV2x1VEdWdVozUm9MblpoYkhWbExGeHVJQ0FnSUNBZ0lDQWdJSFI1Y0dVNklGd2lZWEp5WVhsY0lpeGNiaUFnSUNBZ0lDQWdJQ0JwYm1Oc2RYTnBkbVU2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJQ0FnYldWemMyRm5aVG9nWkdWbUxtMXBia3hsYm1kMGFDNXRaWE56WVdkbExGeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpMbVJwY25SNUtDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLR1JsWmk1dFlYaE1aVzVuZEdnZ0lUMDlJRzUxYkd3cElIdGNiaUFnSUNBZ0lHbG1JQ2hqZEhndVpHRjBZUzVzWlc1bmRHZ2dQaUJrWldZdWJXRjRUR1Z1WjNSb0xuWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNTBiMjlmWW1sbkxGeHVJQ0FnSUNBZ0lDQWdJRzFoZUdsdGRXMDZJR1JsWmk1dFlYaE1aVzVuZEdndWRtRnNkV1VzWEc0Z0lDQWdJQ0FnSUNBZ2RIbHdaVG9nWENKaGNuSmhlVndpTEZ4dUlDQWdJQ0FnSUNBZ0lHbHVZMngxYzJsMlpUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9pQmtaV1l1YldGNFRHVnVaM1JvTG0xbGMzTmhaMlVzWEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQnpkR0YwZFhNdVpHbHlkSGtvS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1kzUjRMbU52YlcxdmJpNWhjM2x1WXlrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUZCeWIyMXBjMlV1WVd4c0tGeHVJQ0FnSUNBZ0lDQW9ZM1I0TG1SaGRHRWdZWE1nWVc1NVcxMHBMbTFoY0Nnb2FYUmxiU3dnYVNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJrWldZdWRIbHdaUzVmY0dGeWMyVkJjM2x1WXloY2JpQWdJQ0FnSUNBZ0lDQWdJRzVsZHlCUVlYSnpaVWx1Y0hWMFRHRjZlVkJoZEdnb1kzUjRMQ0JwZEdWdExDQmpkSGd1Y0dGMGFDd2dhU2xjYmlBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lDQWdLUzUwYUdWdUtDaHlaWE4xYkhRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJRkJoY25ObFUzUmhkSFZ6TG0xbGNtZGxRWEp5WVhrb2MzUmhkSFZ6TENCeVpYTjFiSFFwTzF4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdjbVZ6ZFd4MElEMGdLR04wZUM1a1lYUmhJR0Z6SUdGdWVWdGRLUzV0WVhBb0tHbDBaVzBzSUdrcElEMCtJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQmtaV1l1ZEhsd1pTNWZjR0Z5YzJWVGVXNWpLRnh1SUNBZ0lDQWdJQ0J1WlhjZ1VHRnljMlZKYm5CMWRFeGhlbmxRWVhSb0tHTjBlQ3dnYVhSbGJTd2dZM1I0TG5CaGRHZ3NJR2twWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDBwTzF4dVhHNGdJQ0FnY21WMGRYSnVJRkJoY25ObFUzUmhkSFZ6TG0xbGNtZGxRWEp5WVhrb2MzUmhkSFZ6TENCeVpYTjFiSFFwTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR1ZzWlcxbGJuUW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJSbFppNTBlWEJsTzF4dUlDQjlYRzVjYmlBZ2JXbHVLRzFwYmt4bGJtZDBhRG9nYm5WdFltVnlMQ0J0WlhOellXZGxQem9nWlhKeWIzSlZkR2xzTGtWeWNrMWxjM05oWjJVcE9pQjBhR2x6SUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpFRnljbUY1S0h0Y2JpQWdJQ0FnSUM0dUxuUm9hWE11WDJSbFppeGNiaUFnSUNBZ0lHMXBia3hsYm1kMGFEb2dleUIyWVd4MVpUb2diV2x1VEdWdVozUm9MQ0J0WlhOellXZGxPaUJsY25KdmNsVjBhV3d1ZEc5VGRISnBibWNvYldWemMyRm5aU2tnZlN4Y2JpQWdJQ0I5S1NCaGN5Qmhibms3WEc0Z0lIMWNibHh1SUNCdFlYZ29iV0Y0VEdWdVozUm9PaUJ1ZFcxaVpYSXNJRzFsYzNOaFoyVS9PaUJsY25KdmNsVjBhV3d1UlhKeVRXVnpjMkZuWlNrNklIUm9hWE1nZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnV205a1FYSnlZWGtvZTF4dUlDQWdJQ0FnTGk0dWRHaHBjeTVmWkdWbUxGeHVJQ0FnSUNBZ2JXRjRUR1Z1WjNSb09pQjdJSFpoYkhWbE9pQnRZWGhNWlc1bmRHZ3NJRzFsYzNOaFoyVTZJR1Z5Y205eVZYUnBiQzUwYjFOMGNtbHVaeWh0WlhOellXZGxLU0I5TEZ4dUlDQWdJSDBwSUdGeklHRnVlVHRjYmlBZ2ZWeHVYRzRnSUd4bGJtZDBhQ2hzWlc0NklHNTFiV0psY2l3Z2JXVnpjMkZuWlQ4NklHVnljbTl5VlhScGJDNUZjbkpOWlhOellXZGxLVG9nZEdocGN5QjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXViV2x1S0d4bGJpd2diV1Z6YzJGblpTa3ViV0Y0S0d4bGJpd2diV1Z6YzJGblpTa2dZWE1nWVc1NU8xeHVJQ0I5WEc1Y2JpQWdibTl1Wlcxd2RIa29iV1Z6YzJGblpUODZJR1Z5Y205eVZYUnBiQzVGY25KTlpYTnpZV2RsS1RvZ1dtOWtRWEp5WVhrOFZDd2dYQ0poZEd4bFlYTjBiMjVsWENJK0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXRhVzRvTVN3Z2JXVnpjMkZuWlNrZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOeVpXRjBaU0E5SUR4VUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVUNG9YRzRnSUNBZ2MyTm9aVzFoT2lCVUxGeHVJQ0FnSUhCaGNtRnRjejg2SUZKaGQwTnlaV0YwWlZCaGNtRnRjMXh1SUNBcE9pQmFiMlJCY25KaGVUeFVQaUE5UGlCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCYWIyUkJjbkpoZVNoN1hHNGdJQ0FnSUNCMGVYQmxPaUJ6WTJobGJXRXNYRzRnSUNBZ0lDQnRhVzVNWlc1bmRHZzZJRzUxYkd3c1hHNGdJQ0FnSUNCdFlYaE1aVzVuZEdnNklHNTFiR3dzWEc0Z0lDQWdJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRUZ5Y21GNUxGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh3WVhKaGJYTXBMRnh1SUNBZ0lIMHBPMXh1SUNCOU8xeHVmVnh1WEc1bGVIQnZjblFnZEhsd1pTQmFiMlJPYjI1RmJYQjBlVUZ5Y21GNVBGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVQaUE5SUZwdlpFRnljbUY1UEZRc0lGd2lZWFJzWldGemRHOXVaVndpUGp0Y2JseHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJRnB2WkU5aWFtVmpkQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmx4dVpYaHdiM0owSUc1aGJXVnpjR0ZqWlNCdlltcGxZM1JWZEdsc0lIdGNiaUFnWlhod2IzSjBJSFI1Y0dVZ1RXVnlaMlZUYUdGd1pYTThWU0JsZUhSbGJtUnpJRnB2WkZKaGQxTm9ZWEJsTENCV0lHVjRkR1Z1WkhNZ1dtOWtVbUYzVTJoaGNHVStJRDBnZTF4dUlDQWdJRnRySUdsdUlFVjRZMngxWkdVOGEyVjViMllnVlN3Z2EyVjViMllnVmo1ZE9pQlZXMnRkTzF4dUlDQjlJQ1lnVmp0Y2JseHVJQ0IwZVhCbElHOXdkR2x2Ym1Gc1MyVjVjenhVSUdWNGRHVnVaSE1nYjJKcVpXTjBQaUE5SUh0Y2JpQWdJQ0JiYXlCcGJpQnJaWGx2WmlCVVhUb2dkVzVrWldacGJtVmtJR1Y0ZEdWdVpITWdWRnRyWFNBL0lHc2dPaUJ1WlhabGNqdGNiaUFnZlZ0clpYbHZaaUJVWFR0Y2JseHVJQ0IwZVhCbElISmxjWFZwY21Wa1MyVjVjenhVSUdWNGRHVnVaSE1nYjJKcVpXTjBQaUE5SUh0Y2JpQWdJQ0JiYXlCcGJpQnJaWGx2WmlCVVhUb2dkVzVrWldacGJtVmtJR1Y0ZEdWdVpITWdWRnRyWFNBL0lHNWxkbVZ5SURvZ2F6dGNiaUFnZlZ0clpYbHZaaUJVWFR0Y2JseHVJQ0JsZUhCdmNuUWdkSGx3WlNCaFpHUlJkV1Z6ZEdsdmJrMWhjbXR6UEZRZ1pYaDBaVzVrY3lCdlltcGxZM1ErSUQwZ1VHRnlkR2xoYkR4Y2JpQWdJQ0JRYVdOclBGUXNJRzl3ZEdsdmJtRnNTMlY1Y3p4VVBqNWNiaUFnUGlBbVhHNGdJQ0FnVUdsamF6eFVMQ0J5WlhGMWFYSmxaRXRsZVhNOFZENCtPMXh1WEc0Z0lHVjRjRzl5ZENCMGVYQmxJR2xrWlc1MGFYUjVQRlErSUQwZ1ZEdGNiaUFnWlhod2IzSjBJSFI1Y0dVZ1pteGhkSFJsYmp4VUlHVjRkR1Z1WkhNZ2IySnFaV04wUGlBOUlHbGtaVzUwYVhSNVBIc2dXMnNnYVc0Z2EyVjViMllnVkYwNklGUmJhMTBnZlQ0N1hHNWNiaUFnWlhod2IzSjBJSFI1Y0dVZ2JtOU9aWFpsY2t0bGVYTThWQ0JsZUhSbGJtUnpJRnB2WkZKaGQxTm9ZWEJsUGlBOUlIdGNiaUFnSUNCYmF5QnBiaUJyWlhsdlppQlVYVG9nVzFSYmExMWRJR1Y0ZEdWdVpITWdXMjVsZG1WeVhTQS9JRzVsZG1WeUlEb2dhenRjYmlBZ2ZWdHJaWGx2WmlCVVhUdGNibHh1SUNCbGVIQnZjblFnZEhsd1pTQnViMDVsZG1WeVBGUWdaWGgwWlc1a2N5QmFiMlJTWVhkVGFHRndaVDRnUFNCcFpHVnVkR2wwZVR4N1hHNGdJQ0FnVzJzZ2FXNGdibTlPWlhabGNrdGxlWE04VkQ1ZE9pQnJJR1Y0ZEdWdVpITWdhMlY1YjJZZ1ZDQS9JRlJiYTEwZ09pQnVaWFpsY2p0Y2JpQWdmVDQ3WEc1Y2JpQWdaWGh3YjNKMElHTnZibk4wSUcxbGNtZGxVMmhoY0dWeklEMGdQRlVnWlhoMFpXNWtjeUJhYjJSU1lYZFRhR0Z3WlN3Z1ZDQmxlSFJsYm1SeklGcHZaRkpoZDFOb1lYQmxQaWhjYmlBZ0lDQm1hWEp6ZERvZ1ZTeGNiaUFnSUNCelpXTnZibVE2SUZSY2JpQWdLVG9nVkNBbUlGVWdQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQXVMaTVtYVhKemRDeGNiaUFnSUNBZ0lDNHVMbk5sWTI5dVpDd2dMeThnYzJWamIyNWtJRzkyWlhKM2NtbDBaWE1nWm1seWMzUmNiaUFnSUNCOU8xeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdkSGx3WlNCbGVIUmxibVJUYUdGd1pUeEJMQ0JDUGlBOUlFOXRhWFE4UVN3Z2EyVjViMllnUWo0Z0ppQkNPMXh1WEc1amIyNXpkQ0JCZFdkdFpXNTBSbUZqZEc5eWVTQTlYRzRnSUR4RVpXWWdaWGgwWlc1a2N5QmFiMlJQWW1wbFkzUkVaV1krS0dSbFpqb2dSR1ZtS1NBOVBseHVJQ0E4UVhWbmJXVnVkR0YwYVc5dUlHVjRkR1Z1WkhNZ1dtOWtVbUYzVTJoaGNHVStLRnh1SUNBZ0lHRjFaMjFsYm5SaGRHbHZiam9nUVhWbmJXVnVkR0YwYVc5dVhHNGdJQ2s2SUZwdlpFOWlhbVZqZER4Y2JpQWdJQ0JsZUhSbGJtUlRhR0Z3WlR4U1pYUjFjbTVVZVhCbFBFUmxabHRjSW5Ob1lYQmxYQ0pkUGl3Z1FYVm5iV1Z1ZEdGMGFXOXVQaXhjYmlBZ0lDQkVaV1piWENKMWJtdHViM2R1UzJWNWMxd2lYU3hjYmlBZ0lDQkVaV1piWENKallYUmphR0ZzYkZ3aVhWeHVJQ0ErSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRTlpYW1WamRDaDdYRzRnSUNBZ0lDQXVMaTVrWldZc1hHNGdJQ0FnSUNCemFHRndaVG9nS0NrZ1BUNGdLSHRjYmlBZ0lDQWdJQ0FnTGk0dVpHVm1Mbk5vWVhCbEtDa3NYRzRnSUNBZ0lDQWdJQzR1TG1GMVoyMWxiblJoZEdsdmJpeGNiaUFnSUNBZ0lIMHBMRnh1SUNBZ0lIMHBJR0Z6SUdGdWVUdGNiaUFnZlR0Y2JseHVkSGx3WlNCVmJtdHViM2R1UzJWNWMxQmhjbUZ0SUQwZ1hDSndZWE56ZEdoeWIzVm5hRndpSUh3Z1hDSnpkSEpwWTNSY0lpQjhJRndpYzNSeWFYQmNJanRjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCYWIyUlBZbXBsWTNSRVpXWThYRzRnSUZRZ1pYaDBaVzVrY3lCYWIyUlNZWGRUYUdGd1pTQTlJRnB2WkZKaGQxTm9ZWEJsTEZ4dUlDQlZibXR1YjNkdVMyVjVjeUJsZUhSbGJtUnpJRlZ1YTI1dmQyNUxaWGx6VUdGeVlXMGdQU0JWYm10dWIzZHVTMlY1YzFCaGNtRnRMRnh1SUNCRFlYUmphR0ZzYkNCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5rZ1BTQmFiMlJVZVhCbFFXNTVYRzQrSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtUMkpxWldOME8xeHVJQ0J6YUdGd1pUb2dLQ2tnUFQ0Z1ZEdGNiaUFnWTJGMFkyaGhiR3c2SUVOaGRHTm9ZV3hzTzF4dUlDQjFibXR1YjNkdVMyVjVjem9nVlc1cmJtOTNia3RsZVhNN1hHNTlYRzVjYm1WNGNHOXlkQ0IwZVhCbElHSmhjMlZQWW1wbFkzUlBkWFJ3ZFhSVWVYQmxQRk5vWVhCbElHVjRkR1Z1WkhNZ1dtOWtVbUYzVTJoaGNHVStJRDFjYmlBZ2IySnFaV04wVlhScGJDNW1iR0YwZEdWdVBGeHVJQ0FnSUc5aWFtVmpkRlYwYVd3dVlXUmtVWFZsYzNScGIyNU5ZWEpyY3p4N1hHNGdJQ0FnSUNCYmF5QnBiaUJyWlhsdlppQlRhR0Z3WlYwNklGTm9ZWEJsVzJ0ZFcxd2lYMjkxZEhCMWRGd2lYVHRjYmlBZ0lDQjlQbHh1SUNBK08xeHVYRzVsZUhCdmNuUWdkSGx3WlNCdlltcGxZM1JQZFhSd2RYUlVlWEJsUEZ4dUlDQlRhR0Z3WlNCbGVIUmxibVJ6SUZwdlpGSmhkMU5vWVhCbExGeHVJQ0JEWVhSamFHRnNiQ0JsZUhSbGJtUnpJRnB2WkZSNWNHVkJibmxjYmo0Z1BTQmFiMlJVZVhCbFFXNTVJR1Y0ZEdWdVpITWdRMkYwWTJoaGJHeGNiaUFnUHlCaVlYTmxUMkpxWldOMFQzVjBjSFYwVkhsd1pUeFRhR0Z3WlQ1Y2JpQWdPaUJ2WW1wbFkzUlZkR2xzTG1ac1lYUjBaVzQ4WEc0Z0lDQWdJQ0JpWVhObFQySnFaV04wVDNWMGNIVjBWSGx3WlR4VGFHRndaVDRnSmlCN0lGdHJPaUJ6ZEhKcGJtZGRPaUJEWVhSamFHRnNiRnRjSWw5dmRYUndkWFJjSWwwZ2ZWeHVJQ0FnSUQ0N1hHNWNibVY0Y0c5eWRDQjBlWEJsSUdKaGMyVlBZbXBsWTNSSmJuQjFkRlI1Y0dVOFUyaGhjR1VnWlhoMFpXNWtjeUJhYjJSU1lYZFRhR0Z3WlQ0Z1BTQnZZbXBsWTNSVmRHbHNMbVpzWVhSMFpXNDhYRzRnSUc5aWFtVmpkRlYwYVd3dVlXUmtVWFZsYzNScGIyNU5ZWEpyY3p4N1hHNGdJQ0FnVzJzZ2FXNGdhMlY1YjJZZ1UyaGhjR1ZkT2lCVGFHRndaVnRyWFZ0Y0lsOXBibkIxZEZ3aVhUdGNiaUFnZlQ1Y2JqNDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElHOWlhbVZqZEVsdWNIVjBWSGx3WlR4Y2JpQWdVMmhoY0dVZ1pYaDBaVzVrY3lCYWIyUlNZWGRUYUdGd1pTeGNiaUFnUTJGMFkyaGhiR3dnWlhoMFpXNWtjeUJhYjJSVWVYQmxRVzU1WEc0K0lEMGdXbTlrVkhsd1pVRnVlU0JsZUhSbGJtUnpJRU5oZEdOb1lXeHNYRzRnSUQ4Z1ltRnpaVTlpYW1WamRFbHVjSFYwVkhsd1pUeFRhR0Z3WlQ1Y2JpQWdPaUJ2WW1wbFkzUlZkR2xzTG1ac1lYUjBaVzQ4WEc0Z0lDQWdJQ0JpWVhObFQySnFaV04wU1c1d2RYUlVlWEJsUEZOb1lYQmxQaUFtSUhzZ1cyczZJSE4wY21sdVoxMDZJRU5oZEdOb1lXeHNXMXdpWDJsdWNIVjBYQ0pkSUgxY2JpQWdJQ0ErTzF4dVhHNTBlWEJsSUdSbGIzQjBhVzl1WVd3OFZDQmxlSFJsYm1SeklGcHZaRlI1Y0dWQmJuaytJRDBnVkNCbGVIUmxibVJ6SUZwdlpFOXdkR2x2Ym1Gc1BHbHVabVZ5SUZVK1hHNGdJRDhnWkdWdmNIUnBiMjVoYkR4VlBseHVJQ0E2SUZRN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZOdmJXVmFiMlJQWW1wbFkzUWdQU0JhYjJSUFltcGxZM1E4WEc0Z0lGcHZaRkpoZDFOb1lYQmxMRnh1SUNCVmJtdHViM2R1UzJWNWMxQmhjbUZ0TEZ4dUlDQmFiMlJVZVhCbFFXNTVMRnh1SUNCaGJua3NYRzRnSUdGdWVWeHVQanRjYmx4dVpuVnVZM1JwYjI0Z1pHVmxjRkJoY25ScFlXeHBabmtvYzJOb1pXMWhPaUJhYjJSVWVYQmxRVzU1S1RvZ1lXNTVJSHRjYmlBZ2FXWWdLSE5qYUdWdFlTQnBibk4wWVc1alpXOW1JRnB2WkU5aWFtVmpkQ2tnZTF4dUlDQWdJR052Ym5OMElHNWxkMU5vWVhCbE9pQmhibmtnUFNCN2ZUdGNibHh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdhMlY1SUdsdUlITmphR1Z0WVM1emFHRndaU2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdabWxsYkdSVFkyaGxiV0VnUFNCelkyaGxiV0V1YzJoaGNHVmJhMlY1WFR0Y2JpQWdJQ0FnSUc1bGQxTm9ZWEJsVzJ0bGVWMGdQU0JhYjJSUGNIUnBiMjVoYkM1amNtVmhkR1VvWkdWbGNGQmhjblJwWVd4cFpua29abWxsYkdSVFkyaGxiV0VwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJhYjJSUFltcGxZM1FvZTF4dUlDQWdJQ0FnTGk0dWMyTm9aVzFoTGw5a1pXWXNYRzRnSUNBZ0lDQnphR0Z3WlRvZ0tDa2dQVDRnYm1WM1UyaGhjR1VzWEc0Z0lDQWdmU2tnWVhNZ1lXNTVPMXh1SUNCOUlHVnNjMlVnYVdZZ0tITmphR1Z0WVNCcGJuTjBZVzVqWlc5bUlGcHZaRUZ5Y21GNUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUZwdlpFRnljbUY1TG1OeVpXRjBaU2hrWldWd1VHRnlkR2xoYkdsbWVTaHpZMmhsYldFdVpXeGxiV1Z1ZENrcE8xeHVJQ0I5SUdWc2MyVWdhV1lnS0hOamFHVnRZU0JwYm5OMFlXNWpaVzltSUZwdlpFOXdkR2x2Ym1Gc0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUZwdlpFOXdkR2x2Ym1Gc0xtTnlaV0YwWlNoa1pXVndVR0Z5ZEdsaGJHbG1lU2h6WTJobGJXRXVkVzUzY21Gd0tDa3BLVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaHpZMmhsYldFZ2FXNXpkR0Z1WTJWdlppQmFiMlJPZFd4c1lXSnNaU2tnZTF4dUlDQWdJSEpsZEhWeWJpQmFiMlJPZFd4c1lXSnNaUzVqY21WaGRHVW9aR1ZsY0ZCaGNuUnBZV3hwWm5rb2MyTm9aVzFoTG5WdWQzSmhjQ2dwS1NrN1hHNGdJSDBnWld4elpTQnBaaUFvYzJOb1pXMWhJR2x1YzNSaGJtTmxiMllnV205a1ZIVndiR1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdXbTlrVkhWd2JHVXVZM0psWVhSbEtGeHVJQ0FnSUNBZ2MyTm9aVzFoTG1sMFpXMXpMbTFoY0Nnb2FYUmxiVG9nWVc1NUtTQTlQaUJrWldWd1VHRnlkR2xoYkdsbWVTaHBkR1Z0S1NsY2JpQWdJQ0FwTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJ6WTJobGJXRTdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR05zWVhOeklGcHZaRTlpYW1WamREeGNiaUFnVkNCbGVIUmxibVJ6SUZwdlpGSmhkMU5vWVhCbExGeHVJQ0JWYm10dWIzZHVTMlY1Y3lCbGVIUmxibVJ6SUZWdWEyNXZkMjVMWlhselVHRnlZVzBnUFNCY0luTjBjbWx3WENJc1hHNGdJRU5oZEdOb1lXeHNJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU0E5SUZwdlpGUjVjR1ZCYm5rc1hHNGdJRTkxZEhCMWRDQTlJRzlpYW1WamRFOTFkSEIxZEZSNWNHVThWQ3dnUTJGMFkyaGhiR3crTEZ4dUlDQkpibkIxZENBOUlHOWlhbVZqZEVsdWNIVjBWSGx3WlR4VUxDQkRZWFJqYUdGc2JENWNiajRnWlhoMFpXNWtjeUJhYjJSVWVYQmxQRTkxZEhCMWRDd2dXbTlrVDJKcVpXTjBSR1ZtUEZRc0lGVnVhMjV2ZDI1TFpYbHpMQ0JEWVhSamFHRnNiRDRzSUVsdWNIVjBQaUI3WEc0Z0lISmxZV1J2Ym14NUlGOXphR0Z3WlNFNklGUTdYRzRnSUhKbFlXUnZibXg1SUY5MWJtdHViM2R1UzJWNWN5RTZJRlZ1YTI1dmQyNUxaWGx6TzF4dUlDQnlaV0ZrYjI1c2VTQmZZMkYwWTJoaGJHd2hPaUJEWVhSamFHRnNiRHRjYmlBZ2NISnBkbUYwWlNCZlkyRmphR1ZrT2lCN0lITm9ZWEJsT2lCVU95QnJaWGx6T2lCemRISnBibWRiWFNCOUlId2diblZzYkNBOUlHNTFiR3c3WEc1Y2JpQWdYMmRsZEVOaFkyaGxaQ2dwT2lCN0lITm9ZWEJsT2lCVU95QnJaWGx6T2lCemRISnBibWRiWFNCOUlIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZlkyRmphR1ZrSUNFOVBTQnVkV3hzS1NCeVpYUjFjbTRnZEdocGN5NWZZMkZqYUdWa08xeHVJQ0FnSUdOdmJuTjBJSE5vWVhCbElEMGdkR2hwY3k1ZlpHVm1Mbk5vWVhCbEtDazdYRzRnSUNBZ1kyOXVjM1FnYTJWNWN5QTlJSFYwYVd3dWIySnFaV04wUzJWNWN5aHphR0Z3WlNrN1hHNGdJQ0FnY21WMGRYSnVJQ2gwYUdsekxsOWpZV05vWldRZ1BTQjdJSE5vWVhCbExDQnJaWGx6SUgwcE8xeHVJQ0I5WEc1Y2JpQWdYM0JoY25ObEtHbHVjSFYwT2lCUVlYSnpaVWx1Y0hWMEtUb2dVR0Z5YzJWU1pYUjFjbTVVZVhCbFBIUm9hWE5iWENKZmIzVjBjSFYwWENKZFBpQjdYRzRnSUNBZ1kyOXVjM1FnY0dGeWMyVmtWSGx3WlNBOUlIUm9hWE11WDJkbGRGUjVjR1VvYVc1d2RYUXBPMXh1SUNBZ0lHbG1JQ2h3WVhKelpXUlVlWEJsSUNFOVBTQmFiMlJRWVhKelpXUlVlWEJsTG05aWFtVmpkQ2tnZTF4dUlDQWdJQ0FnWTI5dWMzUWdZM1I0SUQwZ2RHaHBjeTVmWjJWMFQzSlNaWFIxY201RGRIZ29hVzV3ZFhRcE8xeHVJQ0FnSUNBZ1lXUmtTWE56ZFdWVWIwTnZiblJsZUhRb1kzUjRMQ0I3WEc0Z0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDNSNWNHVXNYRzRnSUNBZ0lDQWdJR1Y0Y0dWamRHVmtPaUJhYjJSUVlYSnpaV1JVZVhCbExtOWlhbVZqZEN4Y2JpQWdJQ0FnSUNBZ2NtVmpaV2wyWldRNklHTjBlQzV3WVhKelpXUlVlWEJsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCN0lITjBZWFIxY3l3Z1kzUjRJSDBnUFNCMGFHbHpMbDl3Y205alpYTnpTVzV3ZFhSUVlYSmhiWE1vYVc1d2RYUXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2V5QnphR0Z3WlN3Z2EyVjVjem9nYzJoaGNHVkxaWGx6SUgwZ1BTQjBhR2x6TGw5blpYUkRZV05vWldRb0tUdGNiaUFnSUNCamIyNXpkQ0JsZUhSeVlVdGxlWE02SUhOMGNtbHVaMXRkSUQwZ1cxMDdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnJaWGtnYVc0Z1kzUjRMbVJoZEdFcElIdGNiaUFnSUNBZ0lHbG1JQ2doYzJoaGNHVkxaWGx6TG1sdVkyeDFaR1Z6S0d0bGVTa3BJSHRjYmlBZ0lDQWdJQ0FnWlhoMGNtRkxaWGx6TG5CMWMyZ29hMlY1S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQndZV2x5Y3pvZ2UxeHVJQ0FnSUNBZ2EyVjVPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThZVzU1UGp0Y2JpQWdJQ0FnSUhaaGJIVmxPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThZVzU1UGp0Y2JpQWdJQ0FnSUdGc2QyRjVjMU5sZEQ4NklHSnZiMnhsWVc0N1hHNGdJQ0FnZlZ0ZElEMGdXMTA3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JyWlhrZ2IyWWdjMmhoY0dWTFpYbHpLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnJaWGxXWVd4cFpHRjBiM0lnUFNCemFHRndaVnRyWlhsZE8xeHVJQ0FnSUNBZ1kyOXVjM1FnZG1Gc2RXVWdQU0JqZEhndVpHRjBZVnRyWlhsZE8xeHVJQ0FnSUNBZ2NHRnBjbk11Y0hWemFDaDdYRzRnSUNBZ0lDQWdJR3RsZVRvZ2V5QnpkR0YwZFhNNklGd2lkbUZzYVdSY0lpd2dkbUZzZFdVNklHdGxlU0I5TEZ4dUlDQWdJQ0FnSUNCMllXeDFaVG9nYTJWNVZtRnNhV1JoZEc5eUxsOXdZWEp6WlNoY2JpQWdJQ0FnSUNBZ0lDQnVaWGNnVUdGeWMyVkpibkIxZEV4aGVubFFZWFJvS0dOMGVDd2dkbUZzZFdVc0lHTjBlQzV3WVhSb0xDQnJaWGtwWEc0Z0lDQWdJQ0FnSUNrc1hHNGdJQ0FnSUNBZ0lHRnNkMkY1YzFObGREb2dhMlY1SUdsdUlHTjBlQzVrWVhSaExGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyUmxaaTVqWVhSamFHRnNiQ0JwYm5OMFlXNWpaVzltSUZwdlpFNWxkbVZ5S1NCN1hHNGdJQ0FnSUNCamIyNXpkQ0IxYm10dWIzZHVTMlY1Y3lBOUlIUm9hWE11WDJSbFppNTFibXR1YjNkdVMyVjVjenRjYmx4dUlDQWdJQ0FnYVdZZ0tIVnVhMjV2ZDI1TFpYbHpJRDA5UFNCY0luQmhjM04wYUhKdmRXZG9YQ0lwSUh0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnJaWGtnYjJZZ1pYaDBjbUZMWlhsektTQjdYRzRnSUNBZ0lDQWdJQ0FnY0dGcGNuTXVjSFZ6YUNoN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhrNklIc2djM1JoZEhWek9pQmNJblpoYkdsa1hDSXNJSFpoYkhWbE9pQnJaWGtnZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSFpoYkhWbE9pQjdJSE4wWVhSMWN6b2dYQ0oyWVd4cFpGd2lMQ0IyWVd4MVpUb2dZM1I0TG1SaGRHRmJhMlY1WFNCOUxGeHVJQ0FnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tIVnVhMjV2ZDI1TFpYbHpJRDA5UFNCY0luTjBjbWxqZEZ3aUtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNobGVIUnlZVXRsZVhNdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdGa1pFbHpjM1ZsVkc5RGIyNTBaWGgwS0dOMGVDd2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOWtaVG9nV205a1NYTnpkV1ZEYjJSbExuVnVjbVZqYjJkdWFYcGxaRjlyWlhsekxGeHVJQ0FnSUNBZ0lDQWdJQ0FnYTJWNWN6b2daWGgwY21GTFpYbHpMRnh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQWdJSE4wWVhSMWN5NWthWEowZVNncE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFZ1YTI1dmQyNUxaWGx6SUQwOVBTQmNJbk4wY21sd1hDSXBJSHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdTVzUwWlhKdVlXd2dXbTlrVDJKcVpXTjBJR1Z5Y205eU9pQnBiblpoYkdsa0lIVnVhMjV2ZDI1TFpYbHpJSFpoYkhWbExtQXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBdkx5QnlkVzRnWTJGMFkyaGhiR3dnZG1Gc2FXUmhkR2x2Ymx4dUlDQWdJQ0FnWTI5dWMzUWdZMkYwWTJoaGJHd2dQU0IwYUdsekxsOWtaV1l1WTJGMFkyaGhiR3c3WEc1Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2EyVjVJRzltSUdWNGRISmhTMlY1Y3lrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCMllXeDFaU0E5SUdOMGVDNWtZWFJoVzJ0bGVWMDdYRzRnSUNBZ0lDQWdJSEJoYVhKekxuQjFjMmdvZTF4dUlDQWdJQ0FnSUNBZ0lHdGxlVG9nZXlCemRHRjBkWE02SUZ3aWRtRnNhV1JjSWl3Z2RtRnNkV1U2SUd0bGVTQjlMRnh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxPaUJqWVhSamFHRnNiQzVmY0dGeWMyVW9YRzRnSUNBZ0lDQWdJQ0FnSUNCdVpYY2dVR0Z5YzJWSmJuQjFkRXhoZW5sUVlYUm9LR04wZUN3Z2RtRnNkV1VzSUdOMGVDNXdZWFJvTENCclpYa3BJQzh2TENCamRIZ3VZMmhwYkdRb2EyVjVLU3dnZG1Gc2RXVXNJR2RsZEZCaGNuTmxaRlI1Y0dVb2RtRnNkV1VwWEc0Z0lDQWdJQ0FnSUNBZ0tTeGNiaUFnSUNBZ0lDQWdJQ0JoYkhkaGVYTlRaWFE2SUd0bGVTQnBiaUJqZEhndVpHRjBZU3hjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHTjBlQzVqYjIxdGIyNHVZWE41Ym1NcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCUWNtOXRhWE5sTG5KbGMyOXNkbVVvS1Z4dUlDQWdJQ0FnSUNBdWRHaGxiaWhoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2MzbHVZMUJoYVhKek9pQmhibmxiWFNBOUlGdGRPMXh1SUNBZ0lDQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ2NHRnBjaUJ2WmlCd1lXbHljeWtnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ2EyVjVJRDBnWVhkaGFYUWdjR0ZwY2k1clpYazdYRzRnSUNBZ0lDQWdJQ0FnSUNCemVXNWpVR0ZwY25NdWNIVnphQ2g3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJR3RsZVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVTZJR0YzWVdsMElIQmhhWEl1ZG1Gc2RXVXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lHRnNkMkY1YzFObGREb2djR0ZwY2k1aGJIZGhlWE5UWlhRc1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSE41Ym1OUVlXbHljenRjYmlBZ0lDQWdJQ0FnZlNsY2JpQWdJQ0FnSUNBZ0xuUm9aVzRvS0hONWJtTlFZV2x5Y3lrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJRWVhKelpWTjBZWFIxY3k1dFpYSm5aVTlpYW1WamRGTjVibU1vYzNSaGRIVnpMQ0J6ZVc1alVHRnBjbk1wTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRkJoY25ObFUzUmhkSFZ6TG0xbGNtZGxUMkpxWldOMFUzbHVZeWh6ZEdGMGRYTXNJSEJoYVhKeklHRnpJR0Z1ZVNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ1oyVjBJSE5vWVhCbEtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlrWldZdWMyaGhjR1VvS1R0Y2JpQWdmVnh1WEc0Z0lITjBjbWxqZENodFpYTnpZV2RsUHpvZ1pYSnliM0pWZEdsc0xrVnljazFsYzNOaFoyVXBPaUJhYjJSUFltcGxZM1E4VkN3Z1hDSnpkSEpwWTNSY0lpd2dRMkYwWTJoaGJHdytJSHRjYmlBZ0lDQmxjbkp2Y2xWMGFXd3VaWEp5Vkc5UFltbzdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJQWW1wbFkzUW9lMXh1SUNBZ0lDQWdMaTR1ZEdocGN5NWZaR1ZtTEZ4dUlDQWdJQ0FnZFc1cmJtOTNia3RsZVhNNklGd2ljM1J5YVdOMFhDSXNYRzRnSUNBZ0lDQXVMaTRvYldWemMyRm5aU0FoUFQwZ2RXNWtaV1pwYm1Wa1hHNGdJQ0FnSUNBZ0lEOGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pOWVhBNklDaHBjM04xWlN3Z1kzUjRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1JsWm1GMWJIUkZjbkp2Y2lBOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVmWkdWbUxtVnljbTl5VFdGd1B5NG9hWE56ZFdVc0lHTjBlQ2t1YldWemMyRm5aU0EvUHlCamRIZ3VaR1ZtWVhWc2RFVnljbTl5TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2FYTnpkV1V1WTI5a1pTQTlQVDBnWENKMWJuSmxZMjluYm1sNlpXUmZhMlY1YzF3aUtWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9pQmxjbkp2Y2xWMGFXd3VaWEp5Vkc5UFltb29iV1Z6YzJGblpTa3ViV1Z6YzJGblpTQS9QeUJrWldaaGRXeDBSWEp5YjNJc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdFpYTnpZV2RsT2lCa1pXWmhkV3gwUlhKeWIzSXNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lIMDdYRzRnSUNBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnT2lCN2ZTa3NYRzRnSUNBZ2ZTa2dZWE1nWVc1NU8xeHVJQ0I5WEc1Y2JpQWdjM1J5YVhBb0tUb2dXbTlrVDJKcVpXTjBQRlFzSUZ3aWMzUnlhWEJjSWl3Z1EyRjBZMmhoYkd3K0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRTlpYW1WamRDaDdYRzRnSUNBZ0lDQXVMaTUwYUdsekxsOWtaV1lzWEc0Z0lDQWdJQ0IxYm10dWIzZHVTMlY1Y3pvZ1hDSnpkSEpwY0Z3aUxGeHVJQ0FnSUgwcElHRnpJR0Z1ZVR0Y2JpQWdmVnh1WEc0Z0lIQmhjM04wYUhKdmRXZG9LQ2s2SUZwdlpFOWlhbVZqZER4VUxDQmNJbkJoYzNOMGFISnZkV2RvWENJc0lFTmhkR05vWVd4c1BpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJQWW1wbFkzUW9lMXh1SUNBZ0lDQWdMaTR1ZEdocGN5NWZaR1ZtTEZ4dUlDQWdJQ0FnZFc1cmJtOTNia3RsZVhNNklGd2ljR0Z6YzNSb2NtOTFaMmhjSWl4Y2JpQWdJQ0I5S1NCaGN5Qmhibms3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FHUmxjSEpsWTJGMFpXUWdTVzRnYlc5emRDQmpZWE5sY3l3Z2RHaHBjeUJwY3lCdWJ5QnNiMjVuWlhJZ2JtVmxaR1ZrSUMwZ2RXNXJibTkzYmlCd2NtOXdaWEowYVdWeklHRnlaU0J1YjNjZ2MybHNaVzUwYkhrZ2MzUnlhWEJ3WldRdVhHNGdJQ0FxSUVsbUlIbHZkU0IzWVc1MElIUnZJSEJoYzNNZ2RHaHliM1ZuYUNCMWJtdHViM2R1SUhCeWIzQmxjblJwWlhNc0lIVnpaU0JnTG5CaGMzTjBhSEp2ZFdkb0tDbGdJR2x1YzNSbFlXUXVYRzRnSUNBcUwxeHVJQ0J1YjI1emRISnBZM1FnUFNCMGFHbHpMbkJoYzNOMGFISnZkV2RvTzF4dVhHNGdJR0YxWjIxbGJuUWdQU0JCZFdkdFpXNTBSbUZqZEc5eWVUeGFiMlJQWW1wbFkzUkVaV1k4VkN3Z1ZXNXJibTkzYmt0bGVYTXNJRU5oZEdOb1lXeHNQajRvZEdocGN5NWZaR1ZtS1R0Y2JpQWdaWGgwWlc1a0lEMGdRWFZuYldWdWRFWmhZM1J2Y25rOFdtOWtUMkpxWldOMFJHVm1QRlFzSUZWdWEyNXZkMjVMWlhsekxDQkRZWFJqYUdGc2JENCtLSFJvYVhNdVgyUmxaaWs3WEc1Y2JpQWdjMlYwUzJWNVBFdGxlU0JsZUhSbGJtUnpJSE4wY21sdVp5d2dVMk5vWlcxaElHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVUNG9YRzRnSUNBZ2EyVjVPaUJMWlhrc1hHNGdJQ0FnYzJOb1pXMWhPaUJUWTJobGJXRmNiaUFnS1RvZ1dtOWtUMkpxWldOMFBGUWdKaUI3SUZ0cklHbHVJRXRsZVYwNklGTmphR1Z0WVNCOUxDQlZibXR1YjNkdVMyVjVjeXdnUTJGMFkyaGhiR3crSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1aGRXZHRaVzUwS0hzZ1cydGxlVjA2SUhOamFHVnRZU0I5S1NCaGN5Qmhibms3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VISnBiM0lnZEc4Z2VtOWtRREV1TUM0eE1pQjBhR1Z5WlNCM1lYTWdZU0JpZFdjZ2FXNGdkR2hsWEc0Z0lDQXFJR2x1Wm1WeWNtVmtJSFI1Y0dVZ2IyWWdiV1Z5WjJWa0lHOWlhbVZqZEhNdUlGQnNaV0Z6WlZ4dUlDQWdLaUIxY0dkeVlXUmxJR2xtSUhsdmRTQmhjbVVnWlhod1pYSnBaVzVqYVc1bklHbHpjM1ZsY3k1Y2JpQWdJQ292WEc0Z0lHMWxjbWRsUEVsdVkyOXRhVzVuSUdWNGRHVnVaSE1nUVc1NVdtOWtUMkpxWldOMFBpaGNiaUFnSUNCdFpYSm5hVzVuT2lCSmJtTnZiV2x1WjF4dUlDQXBPaUF2TDFwdlpFOWlhbVZqZER4VUlDWWdTVzVqYjIxcGJtZGJYQ0pmYzJoaGNHVmNJbDBzSUZWdWEyNXZkMjVMWlhsekxDQkRZWFJqYUdGc2JENGdQU0FvYldWeVoybHVaeWtnUFQ0Z2UxeHVJQ0JhYjJSUFltcGxZM1E4WlhoMFpXNWtVMmhoY0dVOFZDd2dTVzVqYjIxcGJtZGJYQ0pmYzJoaGNHVmNJbDArTENCVmJtdHViM2R1UzJWNWN5d2dRMkYwWTJoaGJHdytJSHRjYmlBZ0lDQXZMeUJqYjI1emRDQnRaWEpuWldSVGFHRndaU0E5SUc5aWFtVmpkRlYwYVd3dWJXVnlaMlZUYUdGd1pYTW9YRzRnSUNBZ0x5OGdJQ0IwYUdsekxsOWtaV1l1YzJoaGNHVW9LU3hjYmlBZ0lDQXZMeUFnSUcxbGNtZHBibWN1WDJSbFppNXphR0Z3WlNncFhHNGdJQ0FnTHk4Z0tUdGNiaUFnSUNCamIyNXpkQ0J0WlhKblpXUTZJR0Z1ZVNBOUlHNWxkeUJhYjJSUFltcGxZM1FvZTF4dUlDQWdJQ0FnZFc1cmJtOTNia3RsZVhNNklHMWxjbWRwYm1jdVgyUmxaaTUxYm10dWIzZHVTMlY1Y3l4Y2JpQWdJQ0FnSUdOaGRHTm9ZV3hzT2lCdFpYSm5hVzVuTGw5a1pXWXVZMkYwWTJoaGJHd3NYRzRnSUNBZ0lDQnphR0Z3WlRvZ0tDa2dQVDVjYmlBZ0lDQWdJQ0FnYjJKcVpXTjBWWFJwYkM1dFpYSm5aVk5vWVhCbGN5aDBhR2x6TGw5a1pXWXVjMmhoY0dVb0tTd2diV1Z5WjJsdVp5NWZaR1ZtTG5Ob1lYQmxLQ2twTEZ4dUlDQWdJQ0FnZEhsd1pVNWhiV1U2SUZwdlpFWnBjbk4wVUdGeWRIbFVlWEJsUzJsdVpDNWFiMlJQWW1wbFkzUXNYRzRnSUNBZ2ZTa2dZWE1nWVc1NU8xeHVJQ0FnSUhKbGRIVnliaUJ0WlhKblpXUTdYRzRnSUgxY2JseHVJQ0JqWVhSamFHRnNiRHhKYm1SbGVDQmxlSFJsYm1SeklGcHZaRlI1Y0dWQmJuaytLRnh1SUNBZ0lHbHVaR1Y0T2lCSmJtUmxlRnh1SUNBcE9pQmFiMlJQWW1wbFkzUThWQ3dnVlc1cmJtOTNia3RsZVhNc0lFbHVaR1Y0UGlCN1hHNGdJQ0FnY21WMGRYSnVJRzVsZHlCYWIyUlBZbXBsWTNRb2UxeHVJQ0FnSUNBZ0xpNHVkR2hwY3k1ZlpHVm1MRnh1SUNBZ0lDQWdZMkYwWTJoaGJHdzZJR2x1WkdWNExGeHVJQ0FnSUgwcElHRnpJR0Z1ZVR0Y2JpQWdmVnh1WEc0Z0lIQnBZMnM4VFdGemF5QmxlSFJsYm1SeklIc2dXMnNnYVc0Z2EyVjViMllnVkYwL09pQjBjblZsSUgwK0tGeHVJQ0FnSUcxaGMyczZJRTFoYzJ0Y2JpQWdLVG9nV205a1QySnFaV04wUEZCcFkyczhWQ3dnUlhoMGNtRmpkRHhyWlhsdlppQlVMQ0JyWlhsdlppQk5ZWE5yUGo0c0lGVnVhMjV2ZDI1TFpYbHpMQ0JEWVhSamFHRnNiRDRnZTF4dUlDQWdJR052Ym5OMElITm9ZWEJsT2lCaGJua2dQU0I3ZlR0Y2JpQWdJQ0IxZEdsc0xtOWlhbVZqZEV0bGVYTW9iV0Z6YXlrdWJXRndLQ2hyWlhrcElEMCtJSHRjYmlBZ0lDQWdJQzh2SUc5dWJIa2dZV1JrSUhSdklITm9ZWEJsSUdsbUlHdGxlU0JqYjNKeVpYTndiMjVrY3lCMGJ5QmhiaUJsYkdWdFpXNTBJRzltSUhSb1pTQmpkWEp5Wlc1MElITm9ZWEJsWEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTV6YUdGd1pWdHJaWGxkS1NCemFHRndaVnRyWlhsZElEMGdkR2hwY3k1emFHRndaVnRyWlhsZE8xeHVJQ0FnSUgwcE8xeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1dtOWtUMkpxWldOMEtIdGNiaUFnSUNBZ0lDNHVMblJvYVhNdVgyUmxaaXhjYmlBZ0lDQWdJSE5vWVhCbE9pQW9LU0E5UGlCemFHRndaU3hjYmlBZ0lDQjlLU0JoY3lCaGJuazdYRzRnSUgxY2JseHVJQ0J2YldsMFBFMWhjMnNnWlhoMFpXNWtjeUI3SUZ0cklHbHVJR3RsZVc5bUlGUmRQem9nZEhKMVpTQjlQaWhjYmlBZ0lDQnRZWE5yT2lCTllYTnJYRzRnSUNrNklGcHZaRTlpYW1WamREeFBiV2wwUEZRc0lHdGxlVzltSUUxaGMycytMQ0JWYm10dWIzZHVTMlY1Y3l3Z1EyRjBZMmhoYkd3K0lIdGNiaUFnSUNCamIyNXpkQ0J6YUdGd1pUb2dZVzU1SUQwZ2UzMDdYRzRnSUNBZ2RYUnBiQzV2WW1wbFkzUkxaWGx6S0hSb2FYTXVjMmhoY0dVcExtMWhjQ2dvYTJWNUtTQTlQaUI3WEc0Z0lDQWdJQ0JwWmlBb2RYUnBiQzV2WW1wbFkzUkxaWGx6S0cxaGMyc3BMbWx1WkdWNFQyWW9hMlY1S1NBOVBUMGdMVEVwSUh0Y2JpQWdJQ0FnSUNBZ2MyaGhjR1ZiYTJWNVhTQTlJSFJvYVhNdWMyaGhjR1ZiYTJWNVhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRTlpYW1WamRDaDdYRzRnSUNBZ0lDQXVMaTUwYUdsekxsOWtaV1lzWEc0Z0lDQWdJQ0J6YUdGd1pUb2dLQ2tnUFQ0Z2MyaGhjR1VzWEc0Z0lDQWdmU2tnWVhNZ1lXNTVPMXh1SUNCOVhHNWNiaUFnWkdWbGNGQmhjblJwWVd3b0tUb2djR0Z5ZEdsaGJGVjBhV3d1UkdWbGNGQmhjblJwWVd3OGRHaHBjejRnZTF4dUlDQWdJSEpsZEhWeWJpQmtaV1Z3VUdGeWRHbGhiR2xtZVNoMGFHbHpLU0JoY3lCaGJuazdYRzRnSUgxY2JseHVJQ0J3WVhKMGFXRnNLQ2s2SUZwdlpFOWlhbVZqZER4Y2JpQWdJQ0I3SUZ0cklHbHVJR3RsZVc5bUlGUmRPaUJhYjJSUGNIUnBiMjVoYkR4VVcydGRQaUI5TEZ4dUlDQWdJRlZ1YTI1dmQyNUxaWGx6TEZ4dUlDQWdJRU5oZEdOb1lXeHNYRzRnSUQ0N1hHNGdJSEJoY25ScFlXdzhUV0Z6YXlCbGVIUmxibVJ6SUhzZ1cyc2dhVzRnYTJWNWIyWWdWRjAvT2lCMGNuVmxJSDArS0Z4dUlDQWdJRzFoYzJzNklFMWhjMnRjYmlBZ0tUb2dXbTlrVDJKcVpXTjBQRnh1SUNBZ0lHOWlhbVZqZEZWMGFXd3VibTlPWlhabGNqeDdYRzRnSUNBZ0lDQmJheUJwYmlCclpYbHZaaUJVWFRvZ2F5QmxlSFJsYm1SeklHdGxlVzltSUUxaGMyc2dQeUJhYjJSUGNIUnBiMjVoYkR4VVcydGRQaUE2SUZSYmExMDdYRzRnSUNBZ2ZUNHNYRzRnSUNBZ1ZXNXJibTkzYmt0bGVYTXNYRzRnSUNBZ1EyRjBZMmhoYkd4Y2JpQWdQanRjYmlBZ2NHRnlkR2xoYkNodFlYTnJQem9nWVc1NUtTQjdYRzRnSUNBZ1kyOXVjM1FnYm1WM1UyaGhjR1U2SUdGdWVTQTlJSHQ5TzF4dUlDQWdJR2xtSUNodFlYTnJLU0I3WEc0Z0lDQWdJQ0IxZEdsc0xtOWlhbVZqZEV0bGVYTW9kR2hwY3k1emFHRndaU2t1YldGd0tDaHJaWGtwSUQwK0lIdGNiaUFnSUNBZ0lDQWdhV1lnS0hWMGFXd3ViMkpxWldOMFMyVjVjeWh0WVhOcktTNXBibVJsZUU5bUtHdGxlU2tnUFQwOUlDMHhLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2JtVjNVMmhoY0dWYmEyVjVYU0E5SUhSb2FYTXVjMmhoY0dWYmEyVjVYVHRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNCdVpYZFRhR0Z3WlZ0clpYbGRJRDBnZEdocGN5NXphR0Z3WlZ0clpYbGRMbTl3ZEdsdmJtRnNLQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJQWW1wbFkzUW9lMXh1SUNBZ0lDQWdJQ0F1TGk1MGFHbHpMbDlrWldZc1hHNGdJQ0FnSUNBZ0lITm9ZWEJsT2lBb0tTQTlQaUJ1WlhkVGFHRndaU3hjYmlBZ0lDQWdJSDBwSUdGeklHRnVlVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnJaWGtnYVc0Z2RHaHBjeTV6YUdGd1pTa2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQm1hV1ZzWkZOamFHVnRZU0E5SUhSb2FYTXVjMmhoY0dWYmEyVjVYVHRjYmlBZ0lDQWdJQ0FnYm1WM1UyaGhjR1ZiYTJWNVhTQTlJR1pwWld4a1UyTm9aVzFoTG05d2RHbHZibUZzS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJRzVsZHlCYWIyUlBZbXBsWTNRb2UxeHVJQ0FnSUNBZ0xpNHVkR2hwY3k1ZlpHVm1MRnh1SUNBZ0lDQWdjMmhoY0dVNklDZ3BJRDArSUc1bGQxTm9ZWEJsTEZ4dUlDQWdJSDBwSUdGeklHRnVlVHRjYmlBZ2ZWeHVYRzRnSUhKbGNYVnBjbVZrS0NrNklGcHZaRTlpYW1WamREeGNiaUFnSUNCN0lGdHJJR2x1SUd0bGVXOW1JRlJkT2lCa1pXOXdkR2x2Ym1Gc1BGUmJhMTArSUgwc1hHNGdJQ0FnVlc1cmJtOTNia3RsZVhNc1hHNGdJQ0FnUTJGMFkyaGhiR3hjYmlBZ1BpQjdYRzRnSUNBZ1kyOXVjM1FnYm1WM1UyaGhjR1U2SUdGdWVTQTlJSHQ5TzF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnYTJWNUlHbHVJSFJvYVhNdWMyaGhjR1VwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1pwWld4a1UyTm9aVzFoSUQwZ2RHaHBjeTV6YUdGd1pWdHJaWGxkTzF4dUlDQWdJQ0FnYkdWMElHNWxkMFpwWld4a0lEMGdabWxsYkdSVFkyaGxiV0U3WEc0Z0lDQWdJQ0IzYUdsc1pTQW9ibVYzUm1sbGJHUWdhVzV6ZEdGdVkyVnZaaUJhYjJSUGNIUnBiMjVoYkNrZ2UxeHVJQ0FnSUNBZ0lDQnVaWGRHYVdWc1pDQTlJQ2h1WlhkR2FXVnNaQ0JoY3lCYWIyUlBjSFJwYjI1aGJEeGhibmsrS1M1ZlpHVm1MbWx1Ym1WeVZIbHdaVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnYm1WM1UyaGhjR1ZiYTJWNVhTQTlJRzVsZDBacFpXeGtPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRTlpYW1WamRDaDdYRzRnSUNBZ0lDQXVMaTUwYUdsekxsOWtaV1lzWEc0Z0lDQWdJQ0J6YUdGd1pUb2dLQ2tnUFQ0Z2JtVjNVMmhoY0dVc1hHNGdJQ0FnZlNrZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ2EyVjViMllvS1RvZ1dtOWtSVzUxYlR4bGJuVnRWWFJwYkM1VmJtbHZibFJ2VkhWd2JHVlRkSEpwYm1jOGEyVjViMllnVkQ0K0lIdGNiaUFnSUNCeVpYUjFjbTRnWTNKbFlYUmxXbTlrUlc1MWJTaGNiaUFnSUNBZ0lIVjBhV3d1YjJKcVpXTjBTMlY1Y3loMGFHbHpMbk5vWVhCbEtTQmhjeUJiYzNSeWFXNW5MQ0F1TGk1emRISnBibWRiWFYxY2JpQWdJQ0FwSUdGeklHRnVlVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0E4VkNCbGVIUmxibVJ6SUZwdlpGSmhkMU5vWVhCbFBpaGNiaUFnSUNCemFHRndaVG9nVkN4Y2JpQWdJQ0J3WVhKaGJYTS9PaUJTWVhkRGNtVmhkR1ZRWVhKaGJYTmNiaUFnS1RvZ1dtOWtUMkpxWldOMFBGUStJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpFOWlhbVZqZENoN1hHNGdJQ0FnSUNCemFHRndaVG9nS0NrZ1BUNGdjMmhoY0dVc1hHNGdJQ0FnSUNCMWJtdHViM2R1UzJWNWN6b2dYQ0p6ZEhKcGNGd2lMRnh1SUNBZ0lDQWdZMkYwWTJoaGJHdzZJRnB2WkU1bGRtVnlMbU55WldGMFpTZ3BMRnh1SUNBZ0lDQWdkSGx3WlU1aGJXVTZJRnB2WkVacGNuTjBVR0Z5ZEhsVWVYQmxTMmx1WkM1YWIyUlBZbXBsWTNRc1hHNGdJQ0FnSUNBdUxpNXdjbTlqWlhOelEzSmxZWFJsVUdGeVlXMXpLSEJoY21GdGN5a3NYRzRnSUNBZ2ZTa2dZWE1nWVc1NU8xeHVJQ0I5TzF4dVhHNGdJSE4wWVhScFl5QnpkSEpwWTNSRGNtVmhkR1VnUFNBOFZDQmxlSFJsYm1SeklGcHZaRkpoZDFOb1lYQmxQaWhjYmlBZ0lDQnphR0Z3WlRvZ1ZDeGNiaUFnSUNCd1lYSmhiWE0vT2lCU1lYZERjbVZoZEdWUVlYSmhiWE5jYmlBZ0tUb2dXbTlrVDJKcVpXTjBQRlFzSUZ3aWMzUnlhV04wWENJK0lEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkU5aWFtVmpkQ2g3WEc0Z0lDQWdJQ0J6YUdGd1pUb2dLQ2tnUFQ0Z2MyaGhjR1VzWEc0Z0lDQWdJQ0IxYm10dWIzZHVTMlY1Y3pvZ1hDSnpkSEpwWTNSY0lpeGNiaUFnSUNBZ0lHTmhkR05vWVd4c09pQmFiMlJPWlhabGNpNWpjbVZoZEdVb0tTeGNiaUFnSUNBZ0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1QySnFaV04wTEZ4dUlDQWdJQ0FnTGk0dWNISnZZMlZ6YzBOeVpXRjBaVkJoY21GdGN5aHdZWEpoYlhNcExGeHVJQ0FnSUgwcElHRnpJR0Z1ZVR0Y2JpQWdmVHRjYmx4dUlDQnpkR0YwYVdNZ2JHRjZlV055WldGMFpTQTlJRHhVSUdWNGRHVnVaSE1nV205a1VtRjNVMmhoY0dVK0tGeHVJQ0FnSUhOb1lYQmxPaUFvS1NBOVBpQlVMRnh1SUNBZ0lIQmhjbUZ0Y3o4NklGSmhkME55WldGMFpWQmhjbUZ0YzF4dUlDQXBPaUJhYjJSUFltcGxZM1E4VkQ0Z1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrVDJKcVpXTjBLSHRjYmlBZ0lDQWdJSE5vWVhCbExGeHVJQ0FnSUNBZ2RXNXJibTkzYmt0bGVYTTZJRndpYzNSeWFYQmNJaXhjYmlBZ0lDQWdJR05oZEdOb1lXeHNPaUJhYjJST1pYWmxjaTVqY21WaGRHVW9LU3hjYmlBZ0lDQWdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtUMkpxWldOMExGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh3WVhKaGJYTXBMRnh1SUNBZ0lIMHBJR0Z6SUdGdWVUdGNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1FXNTVXbTlrVDJKcVpXTjBJRDBnV205a1QySnFaV04wUEdGdWVTd2dZVzU1TENCaGJuaytPMXh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnV205a1ZXNXBiMjRnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzUwZVhCbElGcHZaRlZ1YVc5dVQzQjBhVzl1Y3lBOUlGSmxZV1J2Ym14NVBGdGFiMlJVZVhCbFFXNTVMQ0F1TGk1YWIyUlVlWEJsUVc1NVcxMWRQanRjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnV205a1ZXNXBiMjVFWldZOFhHNGdJRlFnWlhoMFpXNWtjeUJhYjJSVmJtbHZiazl3ZEdsdmJuTWdQU0JTWldGa2IyNXNlVHhjYmlBZ0lDQmJXbTlrVkhsd1pVRnVlU3dnV205a1ZIbHdaVUZ1ZVN3Z0xpNHVXbTlrVkhsd1pVRnVlVnRkWFZ4dUlDQStYRzQrSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJRzl3ZEdsdmJuTTZJRlE3WEc0Z0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1ZXNXBiMjQ3WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCYWIyUlZibWx2Ymp4VUlHVjRkR1Z1WkhNZ1dtOWtWVzVwYjI1UGNIUnBiMjV6UGlCbGVIUmxibVJ6SUZwdlpGUjVjR1U4WEc0Z0lGUmJiblZ0WW1WeVhWdGNJbDl2ZFhSd2RYUmNJbDBzWEc0Z0lGcHZaRlZ1YVc5dVJHVm1QRlErTEZ4dUlDQlVXMjUxYldKbGNsMWJYQ0pmYVc1d2RYUmNJbDFjYmo0Z2UxeHVJQ0JmY0dGeWMyVW9hVzV3ZFhRNklGQmhjbk5sU1c1d2RYUXBPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThkR2hwYzF0Y0lsOXZkWFJ3ZFhSY0lsMCtJSHRjYmlBZ0lDQmpiMjV6ZENCN0lHTjBlQ0I5SUQwZ2RHaHBjeTVmY0hKdlkyVnpjMGx1Y0hWMFVHRnlZVzF6S0dsdWNIVjBLVHRjYmlBZ0lDQmpiMjV6ZENCdmNIUnBiMjV6SUQwZ2RHaHBjeTVmWkdWbUxtOXdkR2x2Ym5NN1hHNWNiaUFnSUNCbWRXNWpkR2x2YmlCb1lXNWtiR1ZTWlhOMWJIUnpLRnh1SUNBZ0lDQWdjbVZ6ZFd4MGN6b2dleUJqZEhnNklGQmhjbk5sUTI5dWRHVjRkRHNnY21WemRXeDBPaUJUZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEdGdWVUNGdmVnRkWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0F2THlCeVpYUjFjbTRnWm1seWMzUWdhWE56ZFdVdFpuSmxaU0IyWVd4cFpHRjBhVzl1SUdsbUlHbDBJR1Y0YVhOMGMxeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQnlaWE4xYkhRZ2IyWWdjbVZ6ZFd4MGN5a2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwTG5KbGMzVnNkQzV6ZEdGMGRYTWdQVDA5SUZ3aWRtRnNhV1JjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRdWNtVnpkV3gwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdjbVZ6ZFd4MElHOW1JSEpsYzNWc2RITXBJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tISmxjM1ZzZEM1eVpYTjFiSFF1YzNSaGRIVnpJRDA5UFNCY0ltUnBjblI1WENJcElIdGNiaUFnSUNBZ0lDQWdJQ0F2THlCaFpHUWdhWE56ZFdWeklHWnliMjBnWkdseWRIa2diM0IwYVc5dVhHNWNiaUFnSUNBZ0lDQWdJQ0JqZEhndVkyOXRiVzl1TG1semMzVmxjeTV3ZFhOb0tDNHVMbkpsYzNWc2RDNWpkSGd1WTI5dGJXOXVMbWx6YzNWbGN5azdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzNWc2RDNXlaWE4xYkhRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdMeThnY21WMGRYSnVJR2x1ZG1Gc2FXUmNiaUFnSUNBZ0lHTnZibk4wSUhWdWFXOXVSWEp5YjNKeklEMGdjbVZ6ZFd4MGN5NXRZWEFvWEc0Z0lDQWdJQ0FnSUNoeVpYTjFiSFFwSUQwK0lHNWxkeUJhYjJSRmNuSnZjaWh5WlhOMWJIUXVZM1I0TG1OdmJXMXZiaTVwYzNOMVpYTXBYRzRnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMbWx1ZG1Gc2FXUmZkVzVwYjI0c1hHNGdJQ0FnSUNBZ0lIVnVhVzl1UlhKeWIzSnpMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdTVTVXUVV4SlJEdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9ZM1I0TG1OdmJXMXZiaTVoYzNsdVl5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlGQnliMjFwYzJVdVlXeHNLRnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpMbTFoY0NoaGMzbHVZeUFvYjNCMGFXOXVLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDQWdZMjl1YzNRZ1kyaHBiR1JEZEhnNklGQmhjbk5sUTI5dWRHVjRkQ0E5SUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzR1TG1OMGVDeGNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJXMXZiam9nZTF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0F1TGk1amRIZ3VZMjl0Ylc5dUxGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCcGMzTjFaWE02SUZ0ZExGeHVJQ0FnSUNBZ0lDQWdJQ0FnZlN4Y2JpQWdJQ0FnSUNBZ0lDQWdJSEJoY21WdWREb2diblZzYkN4Y2JpQWdJQ0FnSUNBZ0lDQjlPMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE4xYkhRNklHRjNZV2wwSUc5d2RHbHZiaTVmY0dGeWMyVkJjM2x1WXloN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUdSaGRHRTZJR04wZUM1a1lYUmhMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQndZWFJvT2lCamRIZ3VjR0YwYUN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY0dGeVpXNTBPaUJqYUdsc1pFTjBlQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ1kzUjRPaUJqYUdsc1pFTjBlQ3hjYmlBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQjlLVnh1SUNBZ0lDQWdLUzUwYUdWdUtHaGhibVJzWlZKbGMzVnNkSE1wTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnNaWFFnWkdseWRIazZJSFZ1WkdWbWFXNWxaQ0I4SUhzZ2NtVnpkV3gwT2lCRVNWSlVXVHhoYm5rK095QmpkSGc2SUZCaGNuTmxRMjl1ZEdWNGRDQjlJRDFjYmlBZ0lDQWdJQ0FnZFc1a1pXWnBibVZrTzF4dUlDQWdJQ0FnWTI5dWMzUWdhWE56ZFdWek9pQmFiMlJKYzNOMVpWdGRXMTBnUFNCYlhUdGNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdiM0IwYVc5dUlHOW1JRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZMmhwYkdSRGRIZzZJRkJoY25ObFEyOXVkR1Y0ZENBOUlIdGNiaUFnSUNBZ0lDQWdJQ0F1TGk1amRIZ3NYRzRnSUNBZ0lDQWdJQ0FnWTI5dGJXOXVPaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQXVMaTVqZEhndVkyOXRiVzl1TEZ4dUlDQWdJQ0FnSUNBZ0lDQWdhWE56ZFdWek9pQmJYU3hjYmlBZ0lDQWdJQ0FnSUNCOUxGeHVJQ0FnSUNBZ0lDQWdJSEJoY21WdWREb2diblZzYkN4Y2JpQWdJQ0FnSUNBZ2ZUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ2IzQjBhVzl1TGw5d1lYSnpaVk41Ym1Nb2UxeHVJQ0FnSUNBZ0lDQWdJR1JoZEdFNklHTjBlQzVrWVhSaExGeHVJQ0FnSUNBZ0lDQWdJSEJoZEdnNklHTjBlQzV3WVhSb0xGeHVJQ0FnSUNBZ0lDQWdJSEJoY21WdWREb2dZMmhwYkdSRGRIZ3NYRzRnSUNBZ0lDQWdJSDBwTzF4dVhHNGdJQ0FnSUNBZ0lHbG1JQ2h5WlhOMWJIUXVjM1JoZEhWeklEMDlQU0JjSW5aaGJHbGtYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tISmxjM1ZzZEM1emRHRjBkWE1nUFQwOUlGd2laR2x5ZEhsY0lpQW1KaUFoWkdseWRIa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCa2FYSjBlU0E5SUhzZ2NtVnpkV3gwTENCamRIZzZJR05vYVd4a1EzUjRJSDA3WEc0Z0lDQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ0lDQnBaaUFvWTJocGJHUkRkSGd1WTI5dGJXOXVMbWx6YzNWbGN5NXNaVzVuZEdncElIdGNiaUFnSUNBZ0lDQWdJQ0JwYzNOMVpYTXVjSFZ6YUNoamFHbHNaRU4wZUM1amIyMXRiMjR1YVhOemRXVnpLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9aR2x5ZEhrcElIdGNiaUFnSUNBZ0lDQWdZM1I0TG1OdmJXMXZiaTVwYzNOMVpYTXVjSFZ6YUNndUxpNWthWEowZVM1amRIZ3VZMjl0Ylc5dUxtbHpjM1ZsY3lrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCa2FYSjBlUzV5WlhOMWJIUTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR052Ym5OMElIVnVhVzl1UlhKeWIzSnpJRDBnYVhOemRXVnpMbTFoY0Nnb2FYTnpkV1Z6S1NBOVBpQnVaWGNnV205a1JYSnliM0lvYVhOemRXVnpLU2s3WEc0Z0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMbWx1ZG1Gc2FXUmZkVzVwYjI0c1hHNGdJQ0FnSUNBZ0lIVnVhVzl1UlhKeWIzSnpMRnh1SUNBZ0lDQWdmU2s3WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJKVGxaQlRFbEVPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJR2RsZENCdmNIUnBiMjV6S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtaV1l1YjNCMGFXOXVjenRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0E4WEc0Z0lDQWdWQ0JsZUhSbGJtUnpJRkpsWVdSdmJteDVQRnRhYjJSVWVYQmxRVzU1TENCYWIyUlVlWEJsUVc1NUxDQXVMaTVhYjJSVWVYQmxRVzU1VzExZFBseHVJQ0ErS0Z4dUlDQWdJSFI1Y0dWek9pQlVMRnh1SUNBZ0lIQmhjbUZ0Y3o4NklGSmhkME55WldGMFpWQmhjbUZ0YzF4dUlDQXBPaUJhYjJSVmJtbHZianhVUGlBOVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJWYm1sdmJpaDdYRzRnSUNBZ0lDQnZjSFJwYjI1ek9pQjBlWEJsY3l4Y2JpQWdJQ0FnSUhSNWNHVk9ZVzFsT2lCYWIyUkdhWEp6ZEZCaGNuUjVWSGx3WlV0cGJtUXVXbTlrVlc1cGIyNHNYRzRnSUNBZ0lDQXVMaTV3Y205alpYTnpRM0psWVhSbFVHRnlZVzF6S0hCaGNtRnRjeWtzWEc0Z0lDQWdmU2s3WEc0Z0lIMDdYRzU5WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeThnSUNBZ0lDQmFiMlJFYVhOamNtbHRhVzVoZEdWa1ZXNXBiMjRnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRnB2WkVScGMyTnlhVzFwYm1GMFpXUlZibWx2Yms5d2RHbHZianhjYmlBZ1JHbHpZM0pwYldsdVlYUnZjaUJsZUhSbGJtUnpJSE4wY21sdVp5eGNiaUFnUkdselkzSnBiV2x1WVhSdmNsWmhiSFZsSUdWNGRHVnVaSE1nVUhKcGJXbDBhWFpsWEc0K0lEMGdXbTlrVDJKcVpXTjBQRnh1SUNCN0lGdHJaWGtnYVc0Z1JHbHpZM0pwYldsdVlYUnZjbDA2SUZwdlpFeHBkR1Z5WVd3OFJHbHpZM0pwYldsdVlYUnZjbFpoYkhWbFBpQjlJQ1lnV205a1VtRjNVMmhoY0dVc1hHNGdJR0Z1ZVN4Y2JpQWdZVzU1WEc0K08xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkVScGMyTnlhVzFwYm1GMFpXUlZibWx2YmtSbFpqeGNiaUFnUkdselkzSnBiV2x1WVhSdmNpQmxlSFJsYm1SeklITjBjbWx1Wnl4Y2JpQWdSR2x6WTNKcGJXbHVZWFJ2Y2xaaGJIVmxJR1Y0ZEdWdVpITWdVSEpwYldsMGFYWmxMRnh1SUNCUGNIUnBiMjRnWlhoMFpXNWtjeUJhYjJSRWFYTmpjbWx0YVc1aGRHVmtWVzVwYjI1UGNIUnBiMjQ4UkdselkzSnBiV2x1WVhSdmNpd2dSR2x6WTNKcGJXbHVZWFJ2Y2xaaGJIVmxQbHh1UGlCbGVIUmxibVJ6SUZwdlpGUjVjR1ZFWldZZ2UxeHVJQ0JrYVhOamNtbHRhVzVoZEc5eU9pQkVhWE5qY21sdGFXNWhkRzl5TzF4dUlDQnZjSFJwYjI1ek9pQk5ZWEE4UkdselkzSnBiV2x1WVhSdmNsWmhiSFZsTENCUGNIUnBiMjQrTzF4dUlDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFUnBjMk55YVcxcGJtRjBaV1JWYm1sdmJqdGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRnB2WkVScGMyTnlhVzFwYm1GMFpXUlZibWx2Ymp4Y2JpQWdSR2x6WTNKcGJXbHVZWFJ2Y2lCbGVIUmxibVJ6SUhOMGNtbHVaeXhjYmlBZ1JHbHpZM0pwYldsdVlYUnZjbFpoYkhWbElHVjRkR1Z1WkhNZ1VISnBiV2wwYVhabExGeHVJQ0JQY0hScGIyNGdaWGgwWlc1a2N5QmFiMlJFYVhOamNtbHRhVzVoZEdWa1ZXNXBiMjVQY0hScGIyNDhSR2x6WTNKcGJXbHVZWFJ2Y2l3Z1JHbHpZM0pwYldsdVlYUnZjbFpoYkhWbFBseHVQaUJsZUhSbGJtUnpJRnB2WkZSNWNHVThYRzRnSUU5d2RHbHZibHRjSWw5dmRYUndkWFJjSWwwc1hHNGdJRnB2WkVScGMyTnlhVzFwYm1GMFpXUlZibWx2YmtSbFpqeEVhWE5qY21sdGFXNWhkRzl5TENCRWFYTmpjbWx0YVc1aGRHOXlWbUZzZFdVc0lFOXdkR2x2Ymo0c1hHNGdJRTl3ZEdsdmJsdGNJbDlwYm5CMWRGd2lYVnh1UGlCN1hHNGdJRjl3WVhKelpTaHBibkIxZERvZ1VHRnljMlZKYm5CMWRDazZJRkJoY25ObFVtVjBkWEp1Vkhsd1pUeDBhR2x6VzF3aVgyOTFkSEIxZEZ3aVhUNGdlMXh1SUNBZ0lHTnZibk4wSUhzZ1kzUjRJSDBnUFNCMGFHbHpMbDl3Y205alpYTnpTVzV3ZFhSUVlYSmhiWE1vYVc1d2RYUXBPMXh1WEc0Z0lDQWdhV1lnS0dOMGVDNXdZWEp6WldSVWVYQmxJQ0U5UFNCYWIyUlFZWEp6WldSVWVYQmxMbTlpYW1WamRDa2dlMXh1SUNBZ0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNXBiblpoYkdsa1gzUjVjR1VzWEc0Z0lDQWdJQ0FnSUdWNGNHVmpkR1ZrT2lCYWIyUlFZWEp6WldSVWVYQmxMbTlpYW1WamRDeGNiaUFnSUNBZ0lDQWdjbVZqWldsMlpXUTZJR04wZUM1d1lYSnpaV1JVZVhCbExGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQnlaWFIxY200Z1NVNVdRVXhKUkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQmthWE5qY21sdGFXNWhkRzl5SUQwZ2RHaHBjeTVrYVhOamNtbHRhVzVoZEc5eU8xeHVJQ0FnSUdOdmJuTjBJR1JwYzJOeWFXMXBibUYwYjNKV1lXeDFaVG9nUkdselkzSnBiV2x1WVhSdmNsWmhiSFZsSUQwZ1kzUjRMbVJoZEdGYlpHbHpZM0pwYldsdVlYUnZjbDA3WEc0Z0lDQWdZMjl1YzNRZ2IzQjBhVzl1SUQwZ2RHaHBjeTV2Y0hScGIyNXpMbWRsZENoa2FYTmpjbWx0YVc1aGRHOXlWbUZzZFdVcE8xeHVYRzRnSUNBZ2FXWWdLQ0Z2Y0hScGIyNHBJSHRjYmlBZ0lDQWdJR0ZrWkVsemMzVmxWRzlEYjI1MFpYaDBLR04wZUN3Z2UxeHVJQ0FnSUNBZ0lDQmpiMlJsT2lCYWIyUkpjM04xWlVOdlpHVXVhVzUyWVd4cFpGOTFibWx2Ymw5a2FYTmpjbWx0YVc1aGRHOXlMRnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpPaUIwYUdsekxuWmhiR2xrUkdselkzSnBiV2x1WVhSdmNsWmhiSFZsY3l4Y2JpQWdJQ0FnSUNBZ2NHRjBhRG9nVzJScGMyTnlhVzFwYm1GMGIzSmRMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdTVTVXUVV4SlJEdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9ZM1I0TG1OdmJXMXZiaTVoYzNsdVl5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHOXdkR2x2Ymk1ZmNHRnljMlZCYzNsdVl5aDdYRzRnSUNBZ0lDQWdJR1JoZEdFNklHTjBlQzVrWVhSaExGeHVJQ0FnSUNBZ0lDQndZWFJvT2lCamRIZ3VjR0YwYUN4Y2JpQWdJQ0FnSUNBZ2NHRnlaVzUwT2lCamRIZ3NYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc5d2RHbHZiaTVmY0dGeWMyVlRlVzVqS0h0Y2JpQWdJQ0FnSUNBZ1pHRjBZVG9nWTNSNExtUmhkR0VzWEc0Z0lDQWdJQ0FnSUhCaGRHZzZJR04wZUM1d1lYUm9MRnh1SUNBZ0lDQWdJQ0J3WVhKbGJuUTZJR04wZUN4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lHZGxkQ0JrYVhOamNtbHRhVzVoZEc5eUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlrWldZdVpHbHpZM0pwYldsdVlYUnZjanRjYmlBZ2ZWeHVYRzRnSUdkbGRDQjJZV3hwWkVScGMyTnlhVzFwYm1GMGIzSldZV3gxWlhNb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUVGeWNtRjVMbVp5YjIwb2RHaHBjeTV2Y0hScGIyNXpMbXRsZVhNb0tTazdYRzRnSUgxY2JseHVJQ0JuWlhRZ2IzQjBhVzl1Y3lncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtTG05d2RHbHZibk03WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHaGxJR052Ym5OMGNuVmpkRzl5SUc5bUlIUm9aU0JrYVhOamNtbHRhVzVoZEdWa0lIVnVhVzl1SUhOamFHVnRZUzRnU1hSeklHSmxhR0YyYVc5MWNpQnBjeUIyWlhKNUlITnBiV2xzWVhJZ2RHOGdkR2hoZENCdlppQjBhR1VnYm05eWJXRnNJSG91ZFc1cGIyNG9LU0JqYjI1emRISjFZM1J2Y2k1Y2JpQWdJQ29nU0c5M1pYWmxjaXdnYVhRZ2IyNXNlU0JoYkd4dmQzTWdZU0IxYm1sdmJpQnZaaUJ2WW1wbFkzUnpMQ0JoYkd3Z2IyWWdkMmhwWTJnZ2JtVmxaQ0IwYnlCemFHRnlaU0JoSUdScGMyTnlhVzFwYm1GMGIzSWdjSEp2Y0dWeWRIa3VJRlJvYVhNZ2NISnZjR1Z5ZEhrZ2JYVnpkRnh1SUNBZ0tpQm9ZWFpsSUdFZ1pHbG1abVZ5Wlc1MElIWmhiSFZsSUdadmNpQmxZV05vSUc5aWFtVmpkQ0JwYmlCMGFHVWdkVzVwYjI0dVhHNGdJQ0FxSUVCd1lYSmhiU0JrYVhOamNtbHRhVzVoZEc5eUlIUm9aU0J1WVcxbElHOW1JSFJvWlNCa2FYTmpjbWx0YVc1aGRHOXlJSEJ5YjNCbGNuUjVYRzRnSUNBcUlFQndZWEpoYlNCMGVYQmxjeUJoYmlCaGNuSmhlU0J2WmlCdlltcGxZM1FnYzJOb1pXMWhjMXh1SUNBZ0tpQkFjR0Z5WVcwZ2NHRnlZVzF6WEc0Z0lDQXFMMXh1SUNCemRHRjBhV01nWTNKbFlYUmxQRnh1SUNBZ0lFUnBjMk55YVcxcGJtRjBiM0lnWlhoMFpXNWtjeUJ6ZEhKcGJtY3NYRzRnSUNBZ1JHbHpZM0pwYldsdVlYUnZjbFpoYkhWbElHVjRkR1Z1WkhNZ1VISnBiV2wwYVhabExGeHVJQ0FnSUZSNWNHVnpJR1Y0ZEdWdVpITWdXMXh1SUNBZ0lDQWdXbTlrUkdselkzSnBiV2x1WVhSbFpGVnVhVzl1VDNCMGFXOXVQRVJwYzJOeWFXMXBibUYwYjNJc0lFUnBjMk55YVcxcGJtRjBiM0pXWVd4MVpUNHNYRzRnSUNBZ0lDQmFiMlJFYVhOamNtbHRhVzVoZEdWa1ZXNXBiMjVQY0hScGIyNDhSR2x6WTNKcGJXbHVZWFJ2Y2l3Z1JHbHpZM0pwYldsdVlYUnZjbFpoYkhWbFBpeGNiaUFnSUNBZ0lDNHVMbHB2WkVScGMyTnlhVzFwYm1GMFpXUlZibWx2Yms5d2RHbHZianhFYVhOamNtbHRhVzVoZEc5eUxDQkVhWE5qY21sdGFXNWhkRzl5Vm1Gc2RXVStXMTFjYmlBZ0lDQmRYRzRnSUQ0b1hHNGdJQ0FnWkdselkzSnBiV2x1WVhSdmNqb2dSR2x6WTNKcGJXbHVZWFJ2Y2l4Y2JpQWdJQ0IwZVhCbGN6b2dWSGx3WlhNc1hHNGdJQ0FnY0dGeVlXMXpQem9nVW1GM1EzSmxZWFJsVUdGeVlXMXpYRzRnSUNrNklGcHZaRVJwYzJOeWFXMXBibUYwWldSVmJtbHZianhFYVhOamNtbHRhVzVoZEc5eUxDQkVhWE5qY21sdGFXNWhkRzl5Vm1Gc2RXVXNJRlI1Y0dWelcyNTFiV0psY2wwK0lIdGNiaUFnSUNBdkx5QkhaWFFnWVd4c0lIUm9aU0IyWVd4cFpDQmthWE5qY21sdGFXNWhkRzl5SUhaaGJIVmxjMXh1SUNBZ0lHTnZibk4wSUc5d2RHbHZibk02SUUxaGNEeEVhWE5qY21sdGFXNWhkRzl5Vm1Gc2RXVXNJRlI1Y0dWelcyNTFiV0psY2wwK0lEMGdibVYzSUUxaGNDZ3BPMXh1WEc0Z0lDQWdkSEo1SUh0Y2JpQWdJQ0FnSUhSNWNHVnpMbVp2Y2tWaFkyZ29LSFI1Y0dVcElEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdaR2x6WTNKcGJXbHVZWFJ2Y2xaaGJIVmxJRDBnZEhsd1pTNXphR0Z3WlZ0a2FYTmpjbWx0YVc1aGRHOXlYUzUyWVd4MVpUdGNiaUFnSUNBZ0lDQWdiM0IwYVc5dWN5NXpaWFFvWkdselkzSnBiV2x1WVhSdmNsWmhiSFZsTENCMGVYQmxLVHRjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBnWTJGMFkyZ2dLR1VwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhjYmlBZ0lDQWdJQ0FnWENKVWFHVWdaR2x6WTNKcGJXbHVZWFJ2Y2lCMllXeDFaU0JqYjNWc1pDQnViM1FnWW1VZ1pYaDBjbUZqZEdWa0lHWnliMjBnWVd4c0lIUm9aU0J3Y205MmFXUmxaQ0J6WTJobGJXRnpYQ0pjYmlBZ0lDQWdJQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUVhOelpYSjBJSFJvWVhRZ1lXeHNJSFJvWlNCa2FYTmpjbWx0YVc1aGRHOXlJSFpoYkhWbGN5QmhjbVVnZFc1cGNYVmxYRzRnSUNBZ2FXWWdLRzl3ZEdsdmJuTXVjMmw2WlNBaFBUMGdkSGx3WlhNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWENKVGIyMWxJRzltSUhSb1pTQmthWE5qY21sdGFXNWhkRzl5SUhaaGJIVmxjeUJoY21VZ2JtOTBJSFZ1YVhGMVpWd2lLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkVScGMyTnlhVzFwYm1GMFpXUlZibWx2Ymp4Y2JpQWdJQ0FnSUVScGMyTnlhVzFwYm1GMGIzSXNYRzRnSUNBZ0lDQkVhWE5qY21sdGFXNWhkRzl5Vm1Gc2RXVXNYRzRnSUNBZ0lDQlVlWEJsYzF0dWRXMWlaWEpkWEc0Z0lDQWdQaWg3WEc0Z0lDQWdJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRVJwYzJOeWFXMXBibUYwWldSVmJtbHZiaXhjYmlBZ0lDQWdJR1JwYzJOeWFXMXBibUYwYjNJc1hHNGdJQ0FnSUNCdmNIUnBiMjV6TEZ4dUlDQWdJQ0FnTGk0dWNISnZZMlZ6YzBOeVpXRjBaVkJoY21GdGN5aHdZWEpoYlhNcExGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1OVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0JhYjJSSmJuUmxjbk5sWTNScGIyNGdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkVsdWRHVnljMlZqZEdsdmJrUmxaanhjYmlBZ1ZDQmxlSFJsYm1SeklGcHZaRlI1Y0dWQmJua2dQU0JhYjJSVWVYQmxRVzU1TEZ4dUlDQlZJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU0E5SUZwdlpGUjVjR1ZCYm5sY2JqNGdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2JHVm1kRG9nVkR0Y2JpQWdjbWxuYUhRNklGVTdYRzRnSUhSNWNHVk9ZVzFsT2lCYWIyUkdhWEp6ZEZCaGNuUjVWSGx3WlV0cGJtUXVXbTlrU1c1MFpYSnpaV04wYVc5dU8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCdFpYSm5aVlpoYkhWbGN5aGNiaUFnWVRvZ1lXNTVMRnh1SUNCaU9pQmhibmxjYmlrNklIc2dkbUZzYVdRNklIUnlkV1U3SUdSaGRHRTZJR0Z1ZVNCOUlId2dleUIyWVd4cFpEb2dabUZzYzJVZ2ZTQjdYRzRnSUdOdmJuTjBJR0ZVZVhCbElEMGdaMlYwVUdGeWMyVmtWSGx3WlNoaEtUdGNiaUFnWTI5dWMzUWdZbFI1Y0dVZ1BTQm5aWFJRWVhKelpXUlVlWEJsS0dJcE8xeHVYRzRnSUdsbUlDaGhJRDA5UFNCaUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUhzZ2RtRnNhV1E2SUhSeWRXVXNJR1JoZEdFNklHRWdmVHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaGhWSGx3WlNBOVBUMGdXbTlrVUdGeWMyVmtWSGx3WlM1dlltcGxZM1FnSmlZZ1lsUjVjR1VnUFQwOUlGcHZaRkJoY25ObFpGUjVjR1V1YjJKcVpXTjBLU0I3WEc0Z0lDQWdZMjl1YzNRZ1lrdGxlWE1nUFNCMWRHbHNMbTlpYW1WamRFdGxlWE1vWWlrN1hHNGdJQ0FnWTI5dWMzUWdjMmhoY21Wa1MyVjVjeUE5SUhWMGFXeGNiaUFnSUNBZ0lDNXZZbXBsWTNSTFpYbHpLR0VwWEc0Z0lDQWdJQ0F1Wm1sc2RHVnlLQ2hyWlhrcElEMCtJR0pMWlhsekxtbHVaR1Y0VDJZb2EyVjVLU0FoUFQwZ0xURXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ2JtVjNUMkpxT2lCaGJua2dQU0I3SUM0dUxtRXNJQzR1TG1JZ2ZUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElHdGxlU0J2WmlCemFHRnlaV1JMWlhsektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCemFHRnlaV1JXWVd4MVpTQTlJRzFsY21kbFZtRnNkV1Z6S0dGYmEyVjVYU3dnWWx0clpYbGRLVHRjYmlBZ0lDQWdJR2xtSUNnaGMyaGhjbVZrVm1Gc2RXVXVkbUZzYVdRcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIc2dkbUZzYVdRNklHWmhiSE5sSUgwN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCdVpYZFBZbXBiYTJWNVhTQTlJSE5vWVhKbFpGWmhiSFZsTG1SaGRHRTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhzZ2RtRnNhV1E2SUhSeWRXVXNJR1JoZEdFNklHNWxkMDlpYWlCOU8xeHVJQ0I5SUdWc2MyVWdhV1lnS0dGVWVYQmxJRDA5UFNCYWIyUlFZWEp6WldSVWVYQmxMbUZ5Y21GNUlDWW1JR0pVZVhCbElEMDlQU0JhYjJSUVlYSnpaV1JVZVhCbExtRnljbUY1S1NCN1hHNGdJQ0FnYVdZZ0tHRXViR1Z1WjNSb0lDRTlQU0JpTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJSHNnZG1Gc2FXUTZJR1poYkhObElIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ1kyOXVjM1FnYm1WM1FYSnlZWGtnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcGJtUmxlQ0E5SURBN0lHbHVaR1Y0SUR3Z1lTNXNaVzVuZEdnN0lHbHVaR1Y0S3lzcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdsMFpXMUJJRDBnWVZ0cGJtUmxlRjA3WEc0Z0lDQWdJQ0JqYjI1emRDQnBkR1Z0UWlBOUlHSmJhVzVrWlhoZE8xeHVJQ0FnSUNBZ1kyOXVjM1FnYzJoaGNtVmtWbUZzZFdVZ1BTQnRaWEpuWlZaaGJIVmxjeWhwZEdWdFFTd2dhWFJsYlVJcE8xeHVYRzRnSUNBZ0lDQnBaaUFvSVhOb1lYSmxaRlpoYkhWbExuWmhiR2xrS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lIWmhiR2xrT2lCbVlXeHpaU0I5TzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCdVpYZEJjbkpoZVM1d2RYTm9LSE5vWVhKbFpGWmhiSFZsTG1SaGRHRXBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCN0lIWmhiR2xrT2lCMGNuVmxMQ0JrWVhSaE9pQnVaWGRCY25KaGVTQjlPMXh1SUNCOUlHVnNjMlVnYVdZZ0tGeHVJQ0FnSUdGVWVYQmxJRDA5UFNCYWIyUlFZWEp6WldSVWVYQmxMbVJoZEdVZ0ppWmNiaUFnSUNCaVZIbHdaU0E5UFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzVrWVhSbElDWW1YRzRnSUNBZ0syRWdQVDA5SUN0aVhHNGdJQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjdJSFpoYkdsa09pQjBjblZsTENCa1lYUmhPaUJoSUgwN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhzZ2RtRnNhV1E2SUdaaGJITmxJSDA3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRnB2WkVsdWRHVnljMlZqZEdsdmJqeGNiaUFnVkNCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5rc1hHNGdJRlVnWlhoMFpXNWtjeUJhYjJSVWVYQmxRVzU1WEc0K0lHVjRkR1Z1WkhNZ1dtOWtWSGx3WlR4Y2JpQWdWRnRjSWw5dmRYUndkWFJjSWwwZ0ppQlZXMXdpWDI5MWRIQjFkRndpWFN4Y2JpQWdXbTlrU1c1MFpYSnpaV04wYVc5dVJHVm1QRlFzSUZVK0xGeHVJQ0JVVzF3aVgybHVjSFYwWENKZElDWWdWVnRjSWw5cGJuQjFkRndpWFZ4dVBpQjdYRzRnSUY5d1lYSnpaU2hwYm5CMWREb2dVR0Z5YzJWSmJuQjFkQ2s2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHgwYUdselcxd2lYMjkxZEhCMWRGd2lYVDRnZTF4dUlDQWdJR052Ym5OMElIc2djM1JoZEhWekxDQmpkSGdnZlNBOUlIUm9hWE11WDNCeWIyTmxjM05KYm5CMWRGQmhjbUZ0Y3locGJuQjFkQ2s3WEc0Z0lDQWdZMjl1YzNRZ2FHRnVaR3hsVUdGeWMyVmtJRDBnS0Z4dUlDQWdJQ0FnY0dGeWMyVmtUR1ZtZERvZ1UzbHVZMUJoY25ObFVtVjBkWEp1Vkhsd1pTeGNiaUFnSUNBZ0lIQmhjbk5sWkZKcFoyaDBPaUJUZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsWEc0Z0lDQWdLVG9nVTNsdVkxQmhjbk5sVW1WMGRYSnVWSGx3WlR4VUlDWWdWVDRnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR2x6UVdKdmNuUmxaQ2h3WVhKelpXUk1aV1owS1NCOGZDQnBjMEZpYjNKMFpXUW9jR0Z5YzJWa1VtbG5hSFFwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCSlRsWkJURWxFTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCamIyNXpkQ0J0WlhKblpXUWdQU0J0WlhKblpWWmhiSFZsY3lod1lYSnpaV1JNWldaMExuWmhiSFZsTENCd1lYSnpaV1JTYVdkb2RDNTJZV3gxWlNrN1hHNWNiaUFnSUNBZ0lHbG1JQ2doYldWeVoyVmtMblpoYkdsa0tTQjdYRzRnSUNBZ0lDQWdJR0ZrWkVsemMzVmxWRzlEYjI1MFpYaDBLR04wZUN3Z2UxeHVJQ0FnSUNBZ0lDQWdJR052WkdVNklGcHZaRWx6YzNWbFEyOWtaUzVwYm5aaGJHbGtYMmx1ZEdWeWMyVmpkR2x2Ymw5MGVYQmxjeXhjYmlBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCSlRsWkJURWxFTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9hWE5FYVhKMGVTaHdZWEp6WldSTVpXWjBLU0I4ZkNCcGMwUnBjblI1S0hCaGNuTmxaRkpwWjJoMEtTa2dlMXh1SUNBZ0lDQWdJQ0J6ZEdGMGRYTXVaR2x5ZEhrb0tUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwZFhKdUlIc2djM1JoZEhWek9pQnpkR0YwZFhNdWRtRnNkV1VzSUhaaGJIVmxPaUJ0WlhKblpXUXVaR0YwWVNCaGN5QmhibmtnZlR0Y2JpQWdJQ0I5TzF4dVhHNGdJQ0FnYVdZZ0tHTjBlQzVqYjIxdGIyNHVZWE41Ym1NcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCUWNtOXRhWE5sTG1Gc2JDaGJYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyUmxaaTVzWldaMExsOXdZWEp6WlVGemVXNWpLSHRjYmlBZ0lDQWdJQ0FnSUNCa1lYUmhPaUJqZEhndVpHRjBZU3hjYmlBZ0lDQWdJQ0FnSUNCd1lYUm9PaUJqZEhndWNHRjBhQ3hjYmlBZ0lDQWdJQ0FnSUNCd1lYSmxiblE2SUdOMGVDeGNiaUFnSUNBZ0lDQWdmU2tzWEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMlJsWmk1eWFXZG9kQzVmY0dGeWMyVkJjM2x1WXloN1hHNGdJQ0FnSUNBZ0lDQWdaR0YwWVRvZ1kzUjRMbVJoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdjR0YwYURvZ1kzUjRMbkJoZEdnc1hHNGdJQ0FnSUNBZ0lDQWdjR0Z5Wlc1ME9pQmpkSGdzWEc0Z0lDQWdJQ0FnSUgwcExGeHVJQ0FnSUNBZ1hTa3VkR2hsYmlnb1cyeGxablFzSUhKcFoyaDBYVG9nWVc1NUtTQTlQaUJvWVc1a2JHVlFZWEp6WldRb2JHVm1kQ3dnY21sbmFIUXBLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUdoaGJtUnNaVkJoY25ObFpDaGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZlpHVm1MbXhsWm5RdVgzQmhjbk5sVTNsdVl5aDdYRzRnSUNBZ0lDQWdJQ0FnWkdGMFlUb2dZM1I0TG1SaGRHRXNYRzRnSUNBZ0lDQWdJQ0FnY0dGMGFEb2dZM1I0TG5CaGRHZ3NYRzRnSUNBZ0lDQWdJQ0FnY0dGeVpXNTBPaUJqZEhnc1hHNGdJQ0FnSUNBZ0lIMHBMRnh1SUNBZ0lDQWdJQ0IwYUdsekxsOWtaV1l1Y21sbmFIUXVYM0JoY25ObFUzbHVZeWg3WEc0Z0lDQWdJQ0FnSUNBZ1pHRjBZVG9nWTNSNExtUmhkR0VzWEc0Z0lDQWdJQ0FnSUNBZ2NHRjBhRG9nWTNSNExuQmhkR2dzWEc0Z0lDQWdJQ0FnSUNBZ2NHRnlaVzUwT2lCamRIZ3NYRzRnSUNBZ0lDQWdJSDBwWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0E4VkNCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5rc0lGVWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVQaWhjYmlBZ0lDQnNaV1owT2lCVUxGeHVJQ0FnSUhKcFoyaDBPaUJWTEZ4dUlDQWdJSEJoY21GdGN6ODZJRkpoZDBOeVpXRjBaVkJoY21GdGMxeHVJQ0FwT2lCYWIyUkpiblJsY25ObFkzUnBiMjQ4VkN3Z1ZUNGdQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnV205a1NXNTBaWEp6WldOMGFXOXVLSHRjYmlBZ0lDQWdJR3hsWm5RNklHeGxablFzWEc0Z0lDQWdJQ0J5YVdkb2REb2djbWxuYUhRc1hHNGdJQ0FnSUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkVsdWRHVnljMlZqZEdsdmJpeGNiaUFnSUNBZ0lDNHVMbkJ5YjJObGMzTkRjbVZoZEdWUVlYSmhiWE1vY0dGeVlXMXpLU3hjYmlBZ0lDQjlLVHRjYmlBZ2ZUdGNibjFjYmx4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUZwdlpGUjFjR3hsSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1Wlhod2IzSjBJSFI1Y0dVZ1dtOWtWSFZ3YkdWSmRHVnRjeUE5SUZ0YWIyUlVlWEJsUVc1NUxDQXVMaTVhYjJSVWVYQmxRVzU1VzExZE8xeHVaWGh3YjNKMElIUjVjR1VnUVhOelpYSjBRWEp5WVhrOFZENGdQU0JVSUdWNGRHVnVaSE1nWVc1NVcxMGdQeUJVSURvZ2JtVjJaWEk3WEc1bGVIQnZjblFnZEhsd1pTQlBkWFJ3ZFhSVWVYQmxUMlpVZFhCc1pUeFVJR1Y0ZEdWdVpITWdXbTlrVkhWd2JHVkpkR1Z0Y3lCOElGdGRQaUE5SUVGemMyVnlkRUZ5Y21GNVBIdGNiaUFnVzJzZ2FXNGdhMlY1YjJZZ1ZGMDZJRlJiYTEwZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUEdGdWVTd2dZVzU1UGlBL0lGUmJhMTFiWENKZmIzVjBjSFYwWENKZElEb2dibVYyWlhJN1hHNTlQanRjYm1WNGNHOXlkQ0IwZVhCbElFOTFkSEIxZEZSNWNHVlBabFIxY0d4bFYybDBhRkpsYzNROFhHNGdJRlFnWlhoMFpXNWtjeUJhYjJSVWRYQnNaVWwwWlcxeklId2dXMTBzWEc0Z0lGSmxjM1FnWlhoMFpXNWtjeUJhYjJSVWVYQmxRVzU1SUh3Z2JuVnNiQ0E5SUc1MWJHeGNiajRnUFNCU1pYTjBJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlVnh1SUNBL0lGc3VMaTVQZFhSd2RYUlVlWEJsVDJaVWRYQnNaVHhVUGl3Z0xpNHVVbVZ6ZEZ0Y0lsOXZkWFJ3ZFhSY0lsMWJYVjFjYmlBZ09pQlBkWFJ3ZFhSVWVYQmxUMlpVZFhCc1pUeFVQanRjYmx4dVpYaHdiM0owSUhSNWNHVWdTVzV3ZFhSVWVYQmxUMlpVZFhCc1pUeFVJR1Y0ZEdWdVpITWdXbTlrVkhWd2JHVkpkR1Z0Y3lCOElGdGRQaUE5SUVGemMyVnlkRUZ5Y21GNVBIdGNiaUFnVzJzZ2FXNGdhMlY1YjJZZ1ZGMDZJRlJiYTEwZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUEdGdWVTd2dZVzU1UGlBL0lGUmJhMTFiWENKZmFXNXdkWFJjSWwwZ09pQnVaWFpsY2p0Y2JuMCtPMXh1Wlhod2IzSjBJSFI1Y0dVZ1NXNXdkWFJVZVhCbFQyWlVkWEJzWlZkcGRHaFNaWE4wUEZ4dUlDQlVJR1Y0ZEdWdVpITWdXbTlrVkhWd2JHVkpkR1Z0Y3lCOElGdGRMRnh1SUNCU1pYTjBJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU0I4SUc1MWJHd2dQU0J1ZFd4c1hHNCtJRDBnVW1WemRDQmxlSFJsYm1SeklGcHZaRlI1Y0dWQmJubGNiaUFnUHlCYkxpNHVTVzV3ZFhSVWVYQmxUMlpVZFhCc1pUeFVQaXdnTGk0dVVtVnpkRnRjSWw5cGJuQjFkRndpWFZ0ZFhWeHVJQ0E2SUVsdWNIVjBWSGx3WlU5bVZIVndiR1U4VkQ0N1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdXbTlrVkhWd2JHVkVaV1k4WEc0Z0lGUWdaWGgwWlc1a2N5QmFiMlJVZFhCc1pVbDBaVzF6SUh3Z1cxMGdQU0JhYjJSVWRYQnNaVWwwWlcxekxGeHVJQ0JTWlhOMElHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVTQjhJRzUxYkd3Z1BTQnVkV3hzWEc0K0lHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVSbFppQjdYRzRnSUdsMFpXMXpPaUJVTzF4dUlDQnlaWE4wT2lCU1pYTjBPMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkZSMWNHeGxPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nV205a1ZIVndiR1U4WEc0Z0lGUWdaWGgwWlc1a2N5QmJXbTlrVkhsd1pVRnVlU3dnTGk0dVdtOWtWSGx3WlVGdWVWdGRYU0I4SUZ0ZElEMGdXMXB2WkZSNWNHVkJibmtzSUM0dUxscHZaRlI1Y0dWQmJubGJYVjBzWEc0Z0lGSmxjM1FnWlhoMFpXNWtjeUJhYjJSVWVYQmxRVzU1SUh3Z2JuVnNiQ0E5SUc1MWJHeGNiajRnWlhoMFpXNWtjeUJhYjJSVWVYQmxQRnh1SUNCUGRYUndkWFJVZVhCbFQyWlVkWEJzWlZkcGRHaFNaWE4wUEZRc0lGSmxjM1ErTEZ4dUlDQmFiMlJVZFhCc1pVUmxaanhVTENCU1pYTjBQaXhjYmlBZ1NXNXdkWFJVZVhCbFQyWlVkWEJzWlZkcGRHaFNaWE4wUEZRc0lGSmxjM1ErWEc0K0lIdGNiaUFnWDNCaGNuTmxLR2x1Y0hWME9pQlFZWEp6WlVsdWNIVjBLVG9nVUdGeWMyVlNaWFIxY201VWVYQmxQSFJvYVhOYlhDSmZiM1YwY0hWMFhDSmRQaUI3WEc0Z0lDQWdZMjl1YzNRZ2V5QnpkR0YwZFhNc0lHTjBlQ0I5SUQwZ2RHaHBjeTVmY0hKdlkyVnpjMGx1Y0hWMFVHRnlZVzF6S0dsdWNIVjBLVHRjYmlBZ0lDQnBaaUFvWTNSNExuQmhjbk5sWkZSNWNHVWdJVDA5SUZwdlpGQmhjbk5sWkZSNWNHVXVZWEp5WVhrcElIdGNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5MGVYQmxMRnh1SUNBZ0lDQWdJQ0JsZUhCbFkzUmxaRG9nV205a1VHRnljMlZrVkhsd1pTNWhjbkpoZVN4Y2JpQWdJQ0FnSUNBZ2NtVmpaV2wyWldRNklHTjBlQzV3WVhKelpXUlVlWEJsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvWTNSNExtUmhkR0V1YkdWdVozUm9JRHdnZEdocGN5NWZaR1ZtTG1sMFpXMXpMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNTBiMjlmYzIxaGJHd3NYRzRnSUNBZ0lDQWdJRzFwYm1sdGRXMDZJSFJvYVhNdVgyUmxaaTVwZEdWdGN5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lHbHVZMngxYzJsMlpUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ2RIbHdaVG9nWENKaGNuSmhlVndpTEZ4dUlDQWdJQ0FnZlNrN1hHNWNiaUFnSUNBZ0lISmxkSFZ5YmlCSlRsWkJURWxFTzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElISmxjM1FnUFNCMGFHbHpMbDlrWldZdWNtVnpkRHRjYmx4dUlDQWdJR2xtSUNnaGNtVnpkQ0FtSmlCamRIZ3VaR0YwWVM1c1pXNW5kR2dnUGlCMGFHbHpMbDlrWldZdWFYUmxiWE11YkdWdVozUm9LU0I3WEc0Z0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMblJ2YjE5aWFXY3NYRzRnSUNBZ0lDQWdJRzFoZUdsdGRXMDZJSFJvYVhNdVgyUmxaaTVwZEdWdGN5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lHbHVZMngxYzJsMlpUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ2RIbHdaVG9nWENKaGNuSmhlVndpTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCemRHRjBkWE11WkdseWRIa29LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQmpiMjV6ZENCcGRHVnRjeUE5SUNoamRIZ3VaR0YwWVNCaGN5QmhibmxiWFNsY2JpQWdJQ0FnSUM1dFlYQW9LR2wwWlcwc0lHbDBaVzFKYm1SbGVDa2dQVDRnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6WTJobGJXRWdQU0IwYUdsekxsOWtaV1l1YVhSbGJYTmJhWFJsYlVsdVpHVjRYU0I4ZkNCMGFHbHpMbDlrWldZdWNtVnpkRHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnpZMmhsYldFcElISmxkSFZ5YmlCdWRXeHNJR0Z6SUdGdWVTQmhjeUJUZVc1alVHRnljMlZTWlhSMWNtNVVlWEJsUEdGdWVUNDdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnpZMmhsYldFdVgzQmhjbk5sS0Z4dUlDQWdJQ0FnSUNBZ0lHNWxkeUJRWVhKelpVbHVjSFYwVEdGNmVWQmhkR2dvWTNSNExDQnBkR1Z0TENCamRIZ3VjR0YwYUN3Z2FYUmxiVWx1WkdWNEtWeHVJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdmU2xjYmlBZ0lDQWdJQzVtYVd4MFpYSW9LSGdwSUQwK0lDRWhlQ2s3SUM4dklHWnBiSFJsY2lCdWRXeHNjMXh1WEc0Z0lDQWdhV1lnS0dOMGVDNWpiMjF0YjI0dVlYTjVibU1wSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJRY205dGFYTmxMbUZzYkNocGRHVnRjeWt1ZEdobGJpZ29jbVZ6ZFd4MGN5a2dQVDRnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnVUdGeWMyVlRkR0YwZFhNdWJXVnlaMlZCY25KaGVTaHpkR0YwZFhNc0lISmxjM1ZzZEhNcE8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJRWVhKelpWTjBZWFIxY3k1dFpYSm5aVUZ5Y21GNUtITjBZWFIxY3l3Z2FYUmxiWE1nWVhNZ1UzbHVZMUJoY25ObFVtVjBkWEp1Vkhsd1pWdGRLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0JuWlhRZ2FYUmxiWE1vS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyUmxaaTVwZEdWdGN6dGNiaUFnZlZ4dVhHNGdJSEpsYzNROFVtVnpkQ0JsZUhSbGJtUnpJRnB2WkZSNWNHVkJibmsrS0hKbGMzUTZJRkpsYzNRcE9pQmFiMlJVZFhCc1pUeFVMQ0JTWlhOMFBpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJVZFhCc1pTaDdYRzRnSUNBZ0lDQXVMaTUwYUdsekxsOWtaV1lzWEc0Z0lDQWdJQ0J5WlhOMExGeHVJQ0FnSUgwcE8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHTnlaV0YwWlNBOUlEeFVJR1Y0ZEdWdVpITWdXMXB2WkZSNWNHVkJibmtzSUM0dUxscHZaRlI1Y0dWQmJubGJYVjBnZkNCYlhUNG9YRzRnSUNBZ2MyTm9aVzFoY3pvZ1ZDeGNiaUFnSUNCd1lYSmhiWE0vT2lCU1lYZERjbVZoZEdWUVlYSmhiWE5jYmlBZ0tUb2dXbTlrVkhWd2JHVThWQ3dnYm5Wc2JENGdQVDRnZTF4dUlDQWdJSEpsZEhWeWJpQnVaWGNnV205a1ZIVndiR1VvZTF4dUlDQWdJQ0FnYVhSbGJYTTZJSE5qYUdWdFlYTXNYRzRnSUNBZ0lDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpGUjFjR3hsTEZ4dUlDQWdJQ0FnY21WemREb2diblZzYkN4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JuMWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUZwdlpGSmxZMjl5WkNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtVbVZqYjNKa1JHVm1QRnh1SUNCTFpYa2daWGgwWlc1a2N5QkxaWGxUWTJobGJXRWdQU0JhYjJSVGRISnBibWNzWEc0Z0lGWmhiSFZsSUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVNBOUlGcHZaRlI1Y0dWQmJubGNiajRnWlhoMFpXNWtjeUJhYjJSVWVYQmxSR1ZtSUh0Y2JpQWdkbUZzZFdWVWVYQmxPaUJXWVd4MVpUdGNiaUFnYTJWNVZIbHdaVG9nUzJWNU8xeHVJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRkpsWTI5eVpEdGNibjFjYmx4dWRIbHdaU0JMWlhsVFkyaGxiV0VnUFNCYWIyUlVlWEJsUEhOMGNtbHVaeUI4SUc1MWJXSmxjaUI4SUhONWJXSnZiQ3dnWVc1NUxDQmhibmsrTzF4dWRIbHdaU0JTWldOdmNtUlVlWEJsUEVzZ1pYaDBaVzVrY3lCemRISnBibWNnZkNCdWRXMWlaWElnZkNCemVXMWliMndzSUZZK0lEMGdXM04wY21sdVoxMGdaWGgwWlc1a2N5QmJTMTFjYmlBZ1B5QlNaV052Y21ROFN5d2dWajVjYmlBZ09pQmJiblZ0WW1WeVhTQmxlSFJsYm1SeklGdExYVnh1SUNBL0lGSmxZMjl5WkR4TExDQldQbHh1SUNBNklGdHplVzFpYjJ4ZElHVjRkR1Z1WkhNZ1cwdGRYRzRnSUQ4Z1VtVmpiM0prUEVzc0lGWStYRzRnSURvZ1VHRnlkR2xoYkR4U1pXTnZjbVE4U3l3Z1ZqNCtPMXh1Wlhod2IzSjBJR05zWVhOeklGcHZaRkpsWTI5eVpEeGNiaUFnUzJWNUlHVjRkR1Z1WkhNZ1MyVjVVMk5vWlcxaElEMGdXbTlrVTNSeWFXNW5MRnh1SUNCV1lXeDFaU0JsZUhSbGJtUnpJRnB2WkZSNWNHVkJibmtnUFNCYWIyUlVlWEJsUVc1NVhHNCtJR1Y0ZEdWdVpITWdXbTlrVkhsd1pUeGNiaUFnVW1WamIzSmtWSGx3WlR4TFpYbGJYQ0pmYjNWMGNIVjBYQ0pkTENCV1lXeDFaVnRjSWw5dmRYUndkWFJjSWwwK0xGeHVJQ0JhYjJSU1pXTnZjbVJFWldZOFMyVjVMQ0JXWVd4MVpUNHNYRzRnSUZKbFkyOXlaRlI1Y0dVOFMyVjVXMXdpWDJsdWNIVjBYQ0pkTENCV1lXeDFaVnRjSWw5cGJuQjFkRndpWFQ1Y2JqNGdlMXh1SUNCblpYUWdhMlY1VTJOb1pXMWhLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5a1pXWXVhMlY1Vkhsd1pUdGNiaUFnZlZ4dUlDQm5aWFFnZG1Gc2RXVlRZMmhsYldFb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMlJsWmk1MllXeDFaVlI1Y0dVN1hHNGdJSDFjYmlBZ1gzQmhjbk5sS0dsdWNIVjBPaUJRWVhKelpVbHVjSFYwS1RvZ1VHRnljMlZTWlhSMWNtNVVlWEJsUEhSb2FYTmJYQ0pmYjNWMGNIVjBYQ0pkUGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJ6ZEdGMGRYTXNJR04wZUNCOUlEMGdkR2hwY3k1ZmNISnZZMlZ6YzBsdWNIVjBVR0Z5WVcxektHbHVjSFYwS1R0Y2JpQWdJQ0JwWmlBb1kzUjRMbkJoY25ObFpGUjVjR1VnSVQwOUlGcHZaRkJoY25ObFpGUjVjR1V1YjJKcVpXTjBLU0I3WEc0Z0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMbWx1ZG1Gc2FXUmZkSGx3WlN4Y2JpQWdJQ0FnSUNBZ1pYaHdaV04wWldRNklGcHZaRkJoY25ObFpGUjVjR1V1YjJKcVpXTjBMRnh1SUNBZ0lDQWdJQ0J5WldObGFYWmxaRG9nWTNSNExuQmhjbk5sWkZSNWNHVXNYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQkpUbFpCVEVsRU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSEJoYVhKek9pQjdYRzRnSUNBZ0lDQnJaWGs2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHhoYm5rK08xeHVJQ0FnSUNBZ2RtRnNkV1U2SUZCaGNuTmxVbVYwZFhKdVZIbHdaVHhoYm5rK08xeHVJQ0FnSUgxYlhTQTlJRnRkTzF4dVhHNGdJQ0FnWTI5dWMzUWdhMlY1Vkhsd1pTQTlJSFJvYVhNdVgyUmxaaTVyWlhsVWVYQmxPMXh1SUNBZ0lHTnZibk4wSUhaaGJIVmxWSGx3WlNBOUlIUm9hWE11WDJSbFppNTJZV3gxWlZSNWNHVTdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR3RsZVNCcGJpQmpkSGd1WkdGMFlTa2dlMXh1SUNBZ0lDQWdjR0ZwY25NdWNIVnphQ2g3WEc0Z0lDQWdJQ0FnSUd0bGVUb2dhMlY1Vkhsd1pTNWZjR0Z5YzJVb2JtVjNJRkJoY25ObFNXNXdkWFJNWVhwNVVHRjBhQ2hqZEhnc0lHdGxlU3dnWTNSNExuQmhkR2dzSUd0bGVTa3BMRnh1SUNBZ0lDQWdJQ0IyWVd4MVpUb2dkbUZzZFdWVWVYQmxMbDl3WVhKelpTaGNiaUFnSUNBZ0lDQWdJQ0J1WlhjZ1VHRnljMlZKYm5CMWRFeGhlbmxRWVhSb0tHTjBlQ3dnWTNSNExtUmhkR0ZiYTJWNVhTd2dZM1I0TG5CaGRHZ3NJR3RsZVNsY2JpQWdJQ0FnSUNBZ0tTeGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hqZEhndVkyOXRiVzl1TG1GemVXNWpLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdVR0Z5YzJWVGRHRjBkWE11YldWeVoyVlBZbXBsWTNSQmMzbHVZeWh6ZEdGMGRYTXNJSEJoYVhKektUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRkJoY25ObFUzUmhkSFZ6TG0xbGNtZGxUMkpxWldOMFUzbHVZeWh6ZEdGMGRYTXNJSEJoYVhKeklHRnpJR0Z1ZVNrN1hHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ1oyVjBJR1ZzWlcxbGJuUW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJSbFppNTJZV3gxWlZSNWNHVTdYRzRnSUgxY2JseHVJQ0J6ZEdGMGFXTWdZM0psWVhSbFBGWmhiSFZsSUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVQ0b1hHNGdJQ0FnZG1Gc2RXVlVlWEJsT2lCV1lXeDFaU3hjYmlBZ0lDQndZWEpoYlhNL09pQlNZWGREY21WaGRHVlFZWEpoYlhOY2JpQWdLVG9nV205a1VtVmpiM0prUEZwdlpGTjBjbWx1Wnl3Z1ZtRnNkV1UrTzF4dUlDQnpkR0YwYVdNZ1kzSmxZWFJsUEV0bGVYTWdaWGgwWlc1a2N5QkxaWGxUWTJobGJXRXNJRlpoYkhWbElHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVUNG9YRzRnSUNBZ2EyVjVVMk5vWlcxaE9pQkxaWGx6TEZ4dUlDQWdJSFpoYkhWbFZIbHdaVG9nVm1Gc2RXVXNYRzRnSUNBZ2NHRnlZVzF6UHpvZ1VtRjNRM0psWVhSbFVHRnlZVzF6WEc0Z0lDazZJRnB2WkZKbFkyOXlaRHhMWlhsekxDQldZV3gxWlQ0N1hHNGdJSE4wWVhScFl5QmpjbVZoZEdVb1ptbHljM1E2SUdGdWVTd2djMlZqYjI1a1B6b2dZVzU1TENCMGFHbHlaRDg2SUdGdWVTazZJRnB2WkZKbFkyOXlaRHhoYm5rc0lHRnVlVDRnZTF4dUlDQWdJR2xtSUNoelpXTnZibVFnYVc1emRHRnVZMlZ2WmlCYWIyUlVlWEJsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRkpsWTI5eVpDaDdYRzRnSUNBZ0lDQWdJR3RsZVZSNWNHVTZJR1pwY25OMExGeHVJQ0FnSUNBZ0lDQjJZV3gxWlZSNWNHVTZJSE5sWTI5dVpDeGNiaUFnSUNBZ0lDQWdkSGx3WlU1aGJXVTZJRnB2WkVacGNuTjBVR0Z5ZEhsVWVYQmxTMmx1WkM1YWIyUlNaV052Y21Rc1hHNGdJQ0FnSUNBZ0lDNHVMbkJ5YjJObGMzTkRjbVZoZEdWUVlYSmhiWE1vZEdocGNtUXBMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJhYjJSU1pXTnZjbVFvZTF4dUlDQWdJQ0FnYTJWNVZIbHdaVG9nV205a1UzUnlhVzVuTG1OeVpXRjBaU2dwTEZ4dUlDQWdJQ0FnZG1Gc2RXVlVlWEJsT2lCbWFYSnpkQ3hjYmlBZ0lDQWdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtVbVZqYjNKa0xGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh6WldOdmJtUXBMRnh1SUNBZ0lIMHBPMXh1SUNCOVhHNTlYRzVjYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNCYWIyUk5ZWEFnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZwdlpFMWhjRVJsWmp4Y2JpQWdTMlY1SUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVNBOUlGcHZaRlI1Y0dWQmJua3NYRzRnSUZaaGJIVmxJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU0E5SUZwdlpGUjVjR1ZCYm5sY2JqNGdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2RtRnNkV1ZVZVhCbE9pQldZV3gxWlR0Y2JpQWdhMlY1Vkhsd1pUb2dTMlY1TzF4dUlDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFMWhjRHRjYm4xY2JseHVaWGh3YjNKMElHTnNZWE56SUZwdlpFMWhjRHhjYmlBZ1MyVjVJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU0E5SUZwdlpGUjVjR1ZCYm5rc1hHNGdJRlpoYkhWbElHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVTQTlJRnB2WkZSNWNHVkJibmxjYmo0Z1pYaDBaVzVrY3lCYWIyUlVlWEJsUEZ4dUlDQk5ZWEE4UzJWNVcxd2lYMjkxZEhCMWRGd2lYU3dnVm1Gc2RXVmJYQ0pmYjNWMGNIVjBYQ0pkUGl4Y2JpQWdXbTlrVFdGd1JHVm1QRXRsZVN3Z1ZtRnNkV1UrTEZ4dUlDQk5ZWEE4UzJWNVcxd2lYMmx1Y0hWMFhDSmRMQ0JXWVd4MVpWdGNJbDlwYm5CMWRGd2lYVDVjYmo0Z2UxeHVJQ0JmY0dGeWMyVW9hVzV3ZFhRNklGQmhjbk5sU1c1d2RYUXBPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThkR2hwYzF0Y0lsOXZkWFJ3ZFhSY0lsMCtJSHRjYmlBZ0lDQmpiMjV6ZENCN0lITjBZWFIxY3l3Z1kzUjRJSDBnUFNCMGFHbHpMbDl3Y205alpYTnpTVzV3ZFhSUVlYSmhiWE1vYVc1d2RYUXBPMXh1SUNBZ0lHbG1JQ2hqZEhndWNHRnljMlZrVkhsd1pTQWhQVDBnV205a1VHRnljMlZrVkhsd1pTNXRZWEFwSUh0Y2JpQWdJQ0FnSUdGa1pFbHpjM1ZsVkc5RGIyNTBaWGgwS0dOMGVDd2dlMXh1SUNBZ0lDQWdJQ0JqYjJSbE9pQmFiMlJKYzNOMVpVTnZaR1V1YVc1MllXeHBaRjkwZVhCbExGeHVJQ0FnSUNBZ0lDQmxlSEJsWTNSbFpEb2dXbTlrVUdGeWMyVmtWSGx3WlM1dFlYQXNYRzRnSUNBZ0lDQWdJSEpsWTJWcGRtVmtPaUJqZEhndWNHRnljMlZrVkhsd1pTeGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlFbE9Wa0ZNU1VRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWTI5dWMzUWdhMlY1Vkhsd1pTQTlJSFJvYVhNdVgyUmxaaTVyWlhsVWVYQmxPMXh1SUNBZ0lHTnZibk4wSUhaaGJIVmxWSGx3WlNBOUlIUm9hWE11WDJSbFppNTJZV3gxWlZSNWNHVTdYRzVjYmlBZ0lDQmpiMjV6ZENCd1lXbHljeUE5SUZzdUxpNG9ZM1I0TG1SaGRHRWdZWE1nVFdGd1BIVnVhMjV2ZDI0c0lIVnVhMjV2ZDI0K0tTNWxiblJ5YVdWektDbGRMbTFoY0NoY2JpQWdJQ0FnSUNoYmEyVjVMQ0IyWVd4MVpWMHNJR2x1WkdWNEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUI3WEc0Z0lDQWdJQ0FnSUNBZ2EyVjVPaUJyWlhsVWVYQmxMbDl3WVhKelpTaGNiaUFnSUNBZ0lDQWdJQ0FnSUc1bGR5QlFZWEp6WlVsdWNIVjBUR0Y2ZVZCaGRHZ29ZM1I0TENCclpYa3NJR04wZUM1d1lYUm9MQ0JiYVc1a1pYZ3NJRndpYTJWNVhDSmRLVnh1SUNBZ0lDQWdJQ0FnSUNrc1hHNGdJQ0FnSUNBZ0lDQWdkbUZzZFdVNklIWmhiSFZsVkhsd1pTNWZjR0Z5YzJVb1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhjZ1VHRnljMlZKYm5CMWRFeGhlbmxRWVhSb0tHTjBlQ3dnZG1Gc2RXVXNJR04wZUM1d1lYUm9MQ0JiYVc1a1pYZ3NJRndpZG1Gc2RXVmNJbDBwWEc0Z0lDQWdJQ0FnSUNBZ0tTeGNiaUFnSUNBZ0lDQWdmVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQXBPMXh1WEc0Z0lDQWdhV1lnS0dOMGVDNWpiMjF0YjI0dVlYTjVibU1wSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1pwYm1Gc1RXRndJRDBnYm1WM0lFMWhjQ2dwTzF4dUlDQWdJQ0FnY21WMGRYSnVJRkJ5YjIxcGMyVXVjbVZ6YjJ4MlpTZ3BMblJvWlc0b1lYTjVibU1nS0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUhCaGFYSWdiMllnY0dGcGNuTXBJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JyWlhrZ1BTQmhkMkZwZENCd1lXbHlMbXRsZVR0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCMllXeDFaU0E5SUdGM1lXbDBJSEJoYVhJdWRtRnNkV1U3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR3RsZVM1emRHRjBkWE1nUFQwOUlGd2lZV0p2Y25SbFpGd2lJSHg4SUhaaGJIVmxMbk4wWVhSMWN5QTlQVDBnWENKaFltOXlkR1ZrWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJKVGxaQlRFbEVPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYTJWNUxuTjBZWFIxY3lBOVBUMGdYQ0prYVhKMGVWd2lJSHg4SUhaaGJIVmxMbk4wWVhSMWN5QTlQVDBnWENKa2FYSjBlVndpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVaR2x5ZEhrb0tUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUNBZ0lDQm1hVzVoYkUxaGNDNXpaWFFvYTJWNUxuWmhiSFZsTENCMllXeDFaUzUyWVd4MVpTazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnYzNSaGRIVnpPaUJ6ZEdGMGRYTXVkbUZzZFdVc0lIWmhiSFZsT2lCbWFXNWhiRTFoY0NCOU8xeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR1pwYm1Gc1RXRndJRDBnYm1WM0lFMWhjQ2dwTzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCd1lXbHlJRzltSUhCaGFYSnpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR3RsZVNBOUlIQmhhWEl1YTJWNUlHRnpJRk41Ym1OUVlYSnpaVkpsZEhWeWJsUjVjR1U3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSFpoYkhWbElEMGdjR0ZwY2k1MllXeDFaU0JoY3lCVGVXNWpVR0Z5YzJWU1pYUjFjbTVVZVhCbE8xeHVJQ0FnSUNBZ0lDQnBaaUFvYTJWNUxuTjBZWFIxY3lBOVBUMGdYQ0poWW05eWRHVmtYQ0lnZkh3Z2RtRnNkV1V1YzNSaGRIVnpJRDA5UFNCY0ltRmliM0owWldSY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJKVGxaQlRFbEVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaHJaWGt1YzNSaGRIVnpJRDA5UFNCY0ltUnBjblI1WENJZ2ZId2dkbUZzZFdVdWMzUmhkSFZ6SUQwOVBTQmNJbVJwY25SNVhDSXBJSHRjYmlBZ0lDQWdJQ0FnSUNCemRHRjBkWE11WkdseWRIa29LVHRjYmlBZ0lDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNBZ0lHWnBibUZzVFdGd0xuTmxkQ2hyWlhrdWRtRnNkV1VzSUhaaGJIVmxMblpoYkhWbEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCN0lITjBZWFIxY3pvZ2MzUmhkSFZ6TG5aaGJIVmxMQ0IyWVd4MVpUb2dabWx1WVd4TllYQWdmVHRjYmlBZ0lDQjlYRzRnSUgxY2JpQWdjM1JoZEdsaklHTnlaV0YwWlNBOUlEeGNiaUFnSUNCTFpYa2daWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVJRDBnV205a1ZIbHdaVUZ1ZVN4Y2JpQWdJQ0JXWVd4MVpTQmxlSFJsYm1SeklGcHZaRlI1Y0dWQmJua2dQU0JhYjJSVWVYQmxRVzU1WEc0Z0lENG9YRzRnSUNBZ2EyVjVWSGx3WlRvZ1MyVjVMRnh1SUNBZ0lIWmhiSFZsVkhsd1pUb2dWbUZzZFdVc1hHNGdJQ0FnY0dGeVlXMXpQem9nVW1GM1EzSmxZWFJsVUdGeVlXMXpYRzRnSUNrNklGcHZaRTFoY0R4TFpYa3NJRlpoYkhWbFBpQTlQaUI3WEc0Z0lDQWdjbVYwZFhKdUlHNWxkeUJhYjJSTllYQW9lMXh1SUNBZ0lDQWdkbUZzZFdWVWVYQmxMRnh1SUNBZ0lDQWdhMlY1Vkhsd1pTeGNiaUFnSUNBZ0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1RXRndMRnh1SUNBZ0lDQWdMaTR1Y0hKdlkyVnpjME55WldGMFpWQmhjbUZ0Y3lod1lYSmhiWE1wTEZ4dUlDQWdJSDBwTzF4dUlDQjlPMXh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrVTJWMElDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQmFiMlJUWlhSRVpXWThWbUZzZFdVZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUVc1NUlEMGdXbTlrVkhsd1pVRnVlVDVjYmlBZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUkdWbUlIdGNiaUFnZG1Gc2RXVlVlWEJsT2lCV1lXeDFaVHRjYmlBZ2RIbHdaVTVoYldVNklGcHZaRVpwY25OMFVHRnlkSGxVZVhCbFMybHVaQzVhYjJSVFpYUTdYRzRnSUcxcGJsTnBlbVU2SUhzZ2RtRnNkV1U2SUc1MWJXSmxjanNnYldWemMyRm5aVDg2SUhOMGNtbHVaeUI5SUh3Z2JuVnNiRHRjYmlBZ2JXRjRVMmw2WlRvZ2V5QjJZV3gxWlRvZ2JuVnRZbVZ5T3lCdFpYTnpZV2RsUHpvZ2MzUnlhVzVuSUgwZ2ZDQnVkV3hzTzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1dtOWtVMlYwUEZaaGJIVmxJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlU0E5SUZwdlpGUjVjR1ZCYm5rK0lHVjRkR1Z1WkhNZ1dtOWtWSGx3WlR4Y2JpQWdVMlYwUEZaaGJIVmxXMXdpWDI5MWRIQjFkRndpWFQ0c1hHNGdJRnB2WkZObGRFUmxaanhXWVd4MVpUNHNYRzRnSUZObGREeFdZV3gxWlZ0Y0lsOXBibkIxZEZ3aVhUNWNiajRnZTF4dUlDQmZjR0Z5YzJVb2FXNXdkWFE2SUZCaGNuTmxTVzV3ZFhRcE9pQlFZWEp6WlZKbGRIVnlibFI1Y0dVOGRHaHBjMXRjSWw5dmRYUndkWFJjSWwwK0lIdGNiaUFnSUNCamIyNXpkQ0I3SUhOMFlYUjFjeXdnWTNSNElIMGdQU0IwYUdsekxsOXdjbTlqWlhOelNXNXdkWFJRWVhKaGJYTW9hVzV3ZFhRcE8xeHVJQ0FnSUdsbUlDaGpkSGd1Y0dGeWMyVmtWSGx3WlNBaFBUMGdXbTlrVUdGeWMyVmtWSGx3WlM1elpYUXBJSHRjYmlBZ0lDQWdJR0ZrWkVsemMzVmxWRzlEYjI1MFpYaDBLR04wZUN3Z2UxeHVJQ0FnSUNBZ0lDQmpiMlJsT2lCYWIyUkpjM04xWlVOdlpHVXVhVzUyWVd4cFpGOTBlWEJsTEZ4dUlDQWdJQ0FnSUNCbGVIQmxZM1JsWkRvZ1dtOWtVR0Z5YzJWa1ZIbHdaUzV6WlhRc1hHNGdJQ0FnSUNBZ0lISmxZMlZwZG1Wa09pQmpkSGd1Y0dGeWMyVmtWSGx3WlN4Y2JpQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUVsT1ZrRk1TVVE3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1pHVm1JRDBnZEdocGN5NWZaR1ZtTzF4dVhHNGdJQ0FnYVdZZ0tHUmxaaTV0YVc1VGFYcGxJQ0U5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0JwWmlBb1kzUjRMbVJoZEdFdWMybDZaU0E4SUdSbFppNXRhVzVUYVhwbExuWmhiSFZsS1NCN1hHNGdJQ0FnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNTBiMjlmYzIxaGJHd3NYRzRnSUNBZ0lDQWdJQ0FnYldsdWFXMTFiVG9nWkdWbUxtMXBibE5wZW1VdWRtRnNkV1VzWEc0Z0lDQWdJQ0FnSUNBZ2RIbHdaVG9nWENKelpYUmNJaXhjYmlBZ0lDQWdJQ0FnSUNCcGJtTnNkWE5wZG1VNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUNBZ2JXVnpjMkZuWlRvZ1pHVm1MbTFwYmxOcGVtVXViV1Z6YzJGblpTeGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0FnSUhOMFlYUjFjeTVrYVhKMGVTZ3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hrWldZdWJXRjRVMmw2WlNBaFBUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2FXWWdLR04wZUM1a1lYUmhMbk5wZW1VZ1BpQmtaV1l1YldGNFUybDZaUzUyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdJQ0JqYjJSbE9pQmFiMlJKYzNOMVpVTnZaR1V1ZEc5dlgySnBaeXhjYmlBZ0lDQWdJQ0FnSUNCdFlYaHBiWFZ0T2lCa1pXWXViV0Y0VTJsNlpTNTJZV3gxWlN4Y2JpQWdJQ0FnSUNBZ0lDQjBlWEJsT2lCY0luTmxkRndpTEZ4dUlDQWdJQ0FnSUNBZ0lHbHVZMngxYzJsMlpUb2dkSEoxWlN4Y2JpQWdJQ0FnSUNBZ0lDQnRaWE56WVdkbE9pQmtaV1l1YldGNFUybDZaUzV0WlhOellXZGxMRnh1SUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2MzUmhkSFZ6TG1ScGNuUjVLQ2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2RtRnNkV1ZVZVhCbElEMGdkR2hwY3k1ZlpHVm1MblpoYkhWbFZIbHdaVHRjYmx4dUlDQWdJR1oxYm1OMGFXOXVJR1pwYm1Gc2FYcGxVMlYwS0dWc1pXMWxiblJ6T2lCVGVXNWpVR0Z5YzJWU1pYUjFjbTVVZVhCbFBHRnVlVDViWFNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnY0dGeWMyVmtVMlYwSUQwZ2JtVjNJRk5sZENncE8xeHVJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQmxiR1Z0Wlc1MElHOW1JR1ZzWlcxbGJuUnpLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaGxiR1Z0Wlc1MExuTjBZWFIxY3lBOVBUMGdYQ0poWW05eWRHVmtYQ0lwSUhKbGRIVnliaUJKVGxaQlRFbEVPMXh1SUNBZ0lDQWdJQ0JwWmlBb1pXeGxiV1Z1ZEM1emRHRjBkWE1nUFQwOUlGd2laR2x5ZEhsY0lpa2djM1JoZEhWekxtUnBjblI1S0NrN1hHNGdJQ0FnSUNBZ0lIQmhjbk5sWkZObGRDNWhaR1FvWld4bGJXVnVkQzUyWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z2V5QnpkR0YwZFhNNklITjBZWFIxY3k1MllXeDFaU3dnZG1Gc2RXVTZJSEJoY25ObFpGTmxkQ0I5TzF4dUlDQWdJSDFjYmx4dUlDQWdJR052Ym5OMElHVnNaVzFsYm5SeklEMGdXeTR1TGloamRIZ3VaR0YwWVNCaGN5QlRaWFE4ZFc1cmJtOTNiajRwTG5aaGJIVmxjeWdwWFM1dFlYQW9LR2wwWlcwc0lHa3BJRDArWEc0Z0lDQWdJQ0IyWVd4MVpWUjVjR1V1WDNCaGNuTmxLRzVsZHlCUVlYSnpaVWx1Y0hWMFRHRjZlVkJoZEdnb1kzUjRMQ0JwZEdWdExDQmpkSGd1Y0dGMGFDd2dhU2twWEc0Z0lDQWdLVHRjYmx4dUlDQWdJR2xtSUNoamRIZ3VZMjl0Ylc5dUxtRnplVzVqS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnVUhKdmJXbHpaUzVoYkd3b1pXeGxiV1Z1ZEhNcExuUm9aVzRvS0dWc1pXMWxiblJ6S1NBOVBpQm1hVzVoYkdsNlpWTmxkQ2hsYkdWdFpXNTBjeWtwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptbHVZV3hwZW1WVFpYUW9aV3hsYldWdWRITWdZWE1nVTNsdVkxQmhjbk5sVW1WMGRYSnVWSGx3WlZ0ZEtUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnRhVzRvYldsdVUybDZaVG9nYm5WdFltVnlMQ0J0WlhOellXZGxQem9nWlhKeWIzSlZkR2xzTGtWeWNrMWxjM05oWjJVcE9pQjBhR2x6SUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpGTmxkQ2g3WEc0Z0lDQWdJQ0F1TGk1MGFHbHpMbDlrWldZc1hHNGdJQ0FnSUNCdGFXNVRhWHBsT2lCN0lIWmhiSFZsT2lCdGFXNVRhWHBsTENCdFpYTnpZV2RsT2lCbGNuSnZjbFYwYVd3dWRHOVRkSEpwYm1jb2JXVnpjMkZuWlNrZ2ZTeGNiaUFnSUNCOUtTQmhjeUJoYm5rN1hHNGdJSDFjYmx4dUlDQnRZWGdvYldGNFUybDZaVG9nYm5WdFltVnlMQ0J0WlhOellXZGxQem9nWlhKeWIzSlZkR2xzTGtWeWNrMWxjM05oWjJVcE9pQjBhR2x6SUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpGTmxkQ2g3WEc0Z0lDQWdJQ0F1TGk1MGFHbHpMbDlrWldZc1hHNGdJQ0FnSUNCdFlYaFRhWHBsT2lCN0lIWmhiSFZsT2lCdFlYaFRhWHBsTENCdFpYTnpZV2RsT2lCbGNuSnZjbFYwYVd3dWRHOVRkSEpwYm1jb2JXVnpjMkZuWlNrZ2ZTeGNiaUFnSUNCOUtTQmhjeUJoYm5rN1hHNGdJSDFjYmx4dUlDQnphWHBsS0hOcGVtVTZJRzUxYldKbGNpd2diV1Z6YzJGblpUODZJR1Z5Y205eVZYUnBiQzVGY25KTlpYTnpZV2RsS1RvZ2RHaHBjeUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YldsdUtITnBlbVVzSUcxbGMzTmhaMlVwTG0xaGVDaHphWHBsTENCdFpYTnpZV2RsS1NCaGN5Qmhibms3WEc0Z0lIMWNibHh1SUNCdWIyNWxiWEIwZVNodFpYTnpZV2RsUHpvZ1pYSnliM0pWZEdsc0xrVnljazFsYzNOaFoyVXBPaUJhYjJSVFpYUThWbUZzZFdVK0lIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXRhVzRvTVN3Z2JXVnpjMkZuWlNrZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOeVpXRjBaU0E5SUR4V1lXeDFaU0JsZUhSbGJtUnpJRnB2WkZSNWNHVkJibmtnUFNCYWIyUlVlWEJsUVc1NVBpaGNiaUFnSUNCMllXeDFaVlI1Y0dVNklGWmhiSFZsTEZ4dUlDQWdJSEJoY21GdGN6ODZJRkpoZDBOeVpXRjBaVkJoY21GdGMxeHVJQ0FwT2lCYWIyUlRaWFE4Vm1Gc2RXVStJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpGTmxkQ2g3WEc0Z0lDQWdJQ0IyWVd4MVpWUjVjR1VzWEc0Z0lDQWdJQ0J0YVc1VGFYcGxPaUJ1ZFd4c0xGeHVJQ0FnSUNBZ2JXRjRVMmw2WlRvZ2JuVnNiQ3hjYmlBZ0lDQWdJSFI1Y0dWT1lXMWxPaUJhYjJSR2FYSnpkRkJoY25SNVZIbHdaVXRwYm1RdVdtOWtVMlYwTEZ4dUlDQWdJQ0FnTGk0dWNISnZZMlZ6YzBOeVpXRjBaVkJoY21GdGN5aHdZWEpoYlhNcExGeHVJQ0FnSUgwcE8xeHVJQ0I5TzF4dWZWeHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrUm5WdVkzUnBiMjRnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkVaMWJtTjBhVzl1UkdWbVBGeHVJQ0JCY21keklHVjRkR1Z1WkhNZ1dtOWtWSFZ3YkdVOFlXNTVMQ0JoYm5rK0lEMGdXbTlrVkhWd2JHVThZVzU1TENCaGJuaytMRnh1SUNCU1pYUjFjbTV6SUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVNBOUlGcHZaRlI1Y0dWQmJubGNiajRnWlhoMFpXNWtjeUJhYjJSVWVYQmxSR1ZtSUh0Y2JpQWdZWEpuY3pvZ1FYSm5jenRjYmlBZ2NtVjBkWEp1Y3pvZ1VtVjBkWEp1Y3p0Y2JpQWdkSGx3WlU1aGJXVTZJRnB2WkVacGNuTjBVR0Z5ZEhsVWVYQmxTMmx1WkM1YWIyUkdkVzVqZEdsdmJqdGNibjFjYmx4dVpYaHdiM0owSUhSNWNHVWdUM1YwWlhKVWVYQmxUMlpHZFc1amRHbHZianhjYmlBZ1FYSm5jeUJsZUhSbGJtUnpJRnB2WkZSMWNHeGxQR0Z1ZVN3Z1lXNTVQaXhjYmlBZ1VtVjBkWEp1Y3lCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5sY2JqNGdQU0JCY21kelcxd2lYMmx1Y0hWMFhDSmRJR1Y0ZEdWdVpITWdRWEp5WVhrOFlXNTVQbHh1SUNBL0lDZ3VMaTVoY21kek9pQkJjbWR6VzF3aVgybHVjSFYwWENKZEtTQTlQaUJTWlhSMWNtNXpXMXdpWDI5MWRIQjFkRndpWFZ4dUlDQTZJRzVsZG1WeU8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCSmJtNWxjbFI1Y0dWUFprWjFibU4wYVc5dVBGeHVJQ0JCY21keklHVjRkR1Z1WkhNZ1dtOWtWSFZ3YkdVOFlXNTVMQ0JoYm5rK0xGeHVJQ0JTWlhSMWNtNXpJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlVnh1UGlBOUlFRnlaM05iWENKZmIzVjBjSFYwWENKZElHVjRkR1Z1WkhNZ1FYSnlZWGs4WVc1NVBseHVJQ0EvSUNndUxpNWhjbWR6T2lCQmNtZHpXMXdpWDI5MWRIQjFkRndpWFNrZ1BUNGdVbVYwZFhKdWMxdGNJbDlwYm5CMWRGd2lYVnh1SUNBNklHNWxkbVZ5TzF4dVhHNWxlSEJ2Y25RZ1kyeGhjM01nV205a1JuVnVZM1JwYjI0OFhHNGdJRUZ5WjNNZ1pYaDBaVzVrY3lCYWIyUlVkWEJzWlR4aGJua3NJR0Z1ZVQ0c1hHNGdJRkpsZEhWeWJuTWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVYRzQrSUdWNGRHVnVaSE1nV205a1ZIbHdaVHhjYmlBZ1QzVjBaWEpVZVhCbFQyWkdkVzVqZEdsdmJqeEJjbWR6TENCU1pYUjFjbTV6UGl4Y2JpQWdXbTlrUm5WdVkzUnBiMjVFWldZOFFYSm5jeXdnVW1WMGRYSnVjejRzWEc0Z0lFbHVibVZ5Vkhsd1pVOW1SblZ1WTNScGIyNDhRWEpuY3l3Z1VtVjBkWEp1Y3o1Y2JqNGdlMXh1SUNCZmNHRnljMlVvYVc1d2RYUTZJRkJoY25ObFNXNXdkWFFwT2lCUVlYSnpaVkpsZEhWeWJsUjVjR1U4WVc1NVBpQjdYRzRnSUNBZ1kyOXVjM1FnZXlCamRIZ2dmU0E5SUhSb2FYTXVYM0J5YjJObGMzTkpibkIxZEZCaGNtRnRjeWhwYm5CMWRDazdYRzRnSUNBZ2FXWWdLR04wZUM1d1lYSnpaV1JVZVhCbElDRTlQU0JhYjJSUVlYSnpaV1JVZVhCbExtWjFibU4wYVc5dUtTQjdYRzRnSUNBZ0lDQmhaR1JKYzNOMVpWUnZRMjl1ZEdWNGRDaGpkSGdzSUh0Y2JpQWdJQ0FnSUNBZ1kyOWtaVG9nV205a1NYTnpkV1ZEYjJSbExtbHVkbUZzYVdSZmRIbHdaU3hjYmlBZ0lDQWdJQ0FnWlhod1pXTjBaV1E2SUZwdlpGQmhjbk5sWkZSNWNHVXVablZ1WTNScGIyNHNYRzRnSUNBZ0lDQWdJSEpsWTJWcGRtVmtPaUJqZEhndWNHRnljMlZrVkhsd1pTeGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlFbE9Wa0ZNU1VRN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm5WdVkzUnBiMjRnYldGclpVRnlaM05KYzNOMVpTaGhjbWR6T2lCaGJua3NJR1Z5Y205eU9pQmFiMlJGY25KdmNpazZJRnB2WkVsemMzVmxJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnRZV3RsU1hOemRXVW9lMXh1SUNBZ0lDQWdJQ0JrWVhSaE9pQmhjbWR6TEZ4dUlDQWdJQ0FnSUNCd1lYUm9PaUJqZEhndWNHRjBhQ3hjYmlBZ0lDQWdJQ0FnWlhKeWIzSk5ZWEJ6T2lCYlhHNGdJQ0FnSUNBZ0lDQWdZM1I0TG1OdmJXMXZiaTVqYjI1MFpYaDBkV0ZzUlhKeWIzSk5ZWEFzWEc0Z0lDQWdJQ0FnSUNBZ1kzUjRMbk5qYUdWdFlVVnljbTl5VFdGd0xGeHVJQ0FnSUNBZ0lDQWdJR2RsZEVWeWNtOXlUV0Z3S0Nrc1hHNGdJQ0FnSUNBZ0lDQWdaR1ZtWVhWc2RFVnljbTl5VFdGd0xGeHVJQ0FnSUNBZ0lDQmRMbVpwYkhSbGNpZ29lQ2tnUFQ0Z0lTRjRLU0JoY3lCYWIyUkZjbkp2Y2sxaGNGdGRMRnh1SUNBZ0lDQWdJQ0JwYzNOMVpVUmhkR0U2SUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMlJsT2lCYWIyUkpjM04xWlVOdlpHVXVhVzUyWVd4cFpGOWhjbWQxYldWdWRITXNYRzRnSUNBZ0lDQWdJQ0FnWVhKbmRXMWxiblJ6UlhKeWIzSTZJR1Z5Y205eUxGeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdablZ1WTNScGIyNGdiV0ZyWlZKbGRIVnlibk5KYzNOMVpTaHlaWFIxY201ek9pQmhibmtzSUdWeWNtOXlPaUJhYjJSRmNuSnZjaWs2SUZwdlpFbHpjM1ZsSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ0WVd0bFNYTnpkV1VvZTF4dUlDQWdJQ0FnSUNCa1lYUmhPaUJ5WlhSMWNtNXpMRnh1SUNBZ0lDQWdJQ0J3WVhSb09pQmpkSGd1Y0dGMGFDeGNiaUFnSUNBZ0lDQWdaWEp5YjNKTllYQnpPaUJiWEc0Z0lDQWdJQ0FnSUNBZ1kzUjRMbU52YlcxdmJpNWpiMjUwWlhoMGRXRnNSWEp5YjNKTllYQXNYRzRnSUNBZ0lDQWdJQ0FnWTNSNExuTmphR1Z0WVVWeWNtOXlUV0Z3TEZ4dUlDQWdJQ0FnSUNBZ0lHZGxkRVZ5Y205eVRXRndLQ2tzWEc0Z0lDQWdJQ0FnSUNBZ1pHVm1ZWFZzZEVWeWNtOXlUV0Z3TEZ4dUlDQWdJQ0FnSUNCZExtWnBiSFJsY2lnb2VDa2dQVDRnSVNGNEtTQmhjeUJhYjJSRmNuSnZjazFoY0Z0ZExGeHVJQ0FnSUNBZ0lDQnBjM04xWlVSaGRHRTZJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5eVpYUjFjbTVmZEhsd1pTeGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNVVlWEJsUlhKeWIzSTZJR1Z5Y205eUxGeHVJQ0FnSUNBZ0lDQjlMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ2NHRnlZVzF6SUQwZ2V5Qmxjbkp2Y2sxaGNEb2dZM1I0TG1OdmJXMXZiaTVqYjI1MFpYaDBkV0ZzUlhKeWIzSk5ZWEFnZlR0Y2JpQWdJQ0JqYjI1emRDQm1iaUE5SUdOMGVDNWtZWFJoTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WDJSbFppNXlaWFIxY201eklHbHVjM1JoYm1ObGIyWWdXbTlrVUhKdmJXbHpaU2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRTlMS0dGemVXNWpJQ2d1TGk1aGNtZHpPaUJoYm5sYlhTa2dQVDRnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JsY25KdmNpQTlJRzVsZHlCYWIyUkZjbkp2Y2loYlhTazdYRzRnSUNBZ0lDQWdJR052Ym5OMElIQmhjbk5sWkVGeVozTWdQU0JoZDJGcGRDQjBhR2x6TGw5a1pXWXVZWEpuYzF4dUlDQWdJQ0FnSUNBZ0lDNXdZWEp6WlVGemVXNWpLR0Z5WjNNc0lIQmhjbUZ0Y3lsY2JpQWdJQ0FnSUNBZ0lDQXVZMkYwWTJnb0tHVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Z5Y205eUxtRmtaRWx6YzNWbEtHMWhhMlZCY21kelNYTnpkV1VvWVhKbmN5d2daU2twTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ1pYSnliM0k3WEc0Z0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJR052Ym5OMElISmxjM1ZzZENBOUlHRjNZV2wwSUdadUtDNHVMaWh3WVhKelpXUkJjbWR6SUdGeklHRnVlU2twTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3WVhKelpXUlNaWFIxY201eklEMGdZWGRoYVhRZ0tGeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgyUmxaaTV5WlhSMWNtNXpJR0Z6SUZwdlpGQnliMjFwYzJVOFdtOWtWSGx3WlVGdWVUNWNiaUFnSUNBZ0lDQWdLUzVmWkdWbUxuUjVjR1ZjYmlBZ0lDQWdJQ0FnSUNBdWNHRnljMlZCYzNsdVl5aHlaWE4xYkhRc0lIQmhjbUZ0Y3lsY2JpQWdJQ0FnSUNBZ0lDQXVZMkYwWTJnb0tHVXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR1Z5Y205eUxtRmtaRWx6YzNWbEtHMWhhMlZTWlhSMWNtNXpTWE56ZFdVb2NtVnpkV3gwTENCbEtTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFISnZkeUJsY25KdmNqdGNiaUFnSUNBZ0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhCaGNuTmxaRkpsZEhWeWJuTTdYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUU5TEtDZ3VMaTVoY21kek9pQmhibmxiWFNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQndZWEp6WldSQmNtZHpJRDBnZEdocGN5NWZaR1ZtTG1GeVozTXVjMkZtWlZCaGNuTmxLR0Z5WjNNc0lIQmhjbUZ0Y3lrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doY0dGeWMyVmtRWEpuY3k1emRXTmpaWE56S1NCN1hHNGdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRnB2WkVWeWNtOXlLRnR0WVd0bFFYSm5jMGx6YzNWbEtHRnlaM01zSUhCaGNuTmxaRUZ5WjNNdVpYSnliM0lwWFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NtVnpkV3gwSUQwZ1ptNG9MaTR1S0hCaGNuTmxaRUZ5WjNNdVpHRjBZU0JoY3lCaGJua3BLVHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjR0Z5YzJWa1VtVjBkWEp1Y3lBOUlIUm9hWE11WDJSbFppNXlaWFIxY201ekxuTmhabVZRWVhKelpTaHlaWE4xYkhRc0lIQmhjbUZ0Y3lrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doY0dGeWMyVmtVbVYwZFhKdWN5NXpkV05qWlhOektTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUZwdlpFVnljbTl5S0Z0dFlXdGxVbVYwZFhKdWMwbHpjM1ZsS0hKbGMzVnNkQ3dnY0dGeWMyVmtVbVYwZFhKdWN5NWxjbkp2Y2lsZEtUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdjR0Z5YzJWa1VtVjBkWEp1Y3k1a1lYUmhPMXh1SUNBZ0lDQWdmU2tnWVhNZ1lXNTVPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJoY21GdFpYUmxjbk1vS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyUmxaaTVoY21kek8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdVZIbHdaU2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHVm1MbkpsZEhWeWJuTTdYRzRnSUgxY2JseHVJQ0JoY21kelBFbDBaVzF6SUdWNGRHVnVaSE1nVUdGeVlXMWxkR1Z5Y3p4MGVYQmxiMllnV205a1ZIVndiR1ZiWENKamNtVmhkR1ZjSWwwK1d6QmRQaWhjYmlBZ0lDQXVMaTVwZEdWdGN6b2dTWFJsYlhOY2JpQWdLVG9nV205a1JuVnVZM1JwYjI0OFdtOWtWSFZ3YkdVOFNYUmxiWE1zSUZwdlpGVnVhMjV2ZDI0K0xDQlNaWFIxY201elBpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJHZFc1amRHbHZiaWg3WEc0Z0lDQWdJQ0F1TGk1MGFHbHpMbDlrWldZc1hHNGdJQ0FnSUNCaGNtZHpPaUJhYjJSVWRYQnNaUzVqY21WaGRHVW9hWFJsYlhNcExuSmxjM1FvV205a1ZXNXJibTkzYmk1amNtVmhkR1VvS1NrZ1lYTWdZVzU1TEZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1Y3p4T1pYZFNaWFIxY201VWVYQmxJR1Y0ZEdWdVpITWdXbTlrVkhsd1pUeGhibmtzSUdGdWVUNCtLRnh1SUNBZ0lISmxkSFZ5YmxSNWNHVTZJRTVsZDFKbGRIVnlibFI1Y0dWY2JpQWdLVG9nV205a1JuVnVZM1JwYjI0OFFYSm5jeXdnVG1WM1VtVjBkWEp1Vkhsd1pUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrUm5WdVkzUnBiMjRvZTF4dUlDQWdJQ0FnTGk0dWRHaHBjeTVmWkdWbUxGeHVJQ0FnSUNBZ2NtVjBkWEp1Y3pvZ2NtVjBkWEp1Vkhsd1pTeGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJR2x0Y0d4bGJXVnVkRHhHSUdWNGRHVnVaSE1nU1c1dVpYSlVlWEJsVDJaR2RXNWpkR2x2Ymp4QmNtZHpMQ0JTWlhSMWNtNXpQajRvWEc0Z0lDQWdablZ1WXpvZ1JseHVJQ0FwT2lCU1pYUjFjbTVVZVhCbFBFWStJR1Y0ZEdWdVpITWdVbVYwZFhKdWMxdGNJbDl2ZFhSd2RYUmNJbDFjYmlBZ0lDQS9JQ2d1TGk1aGNtZHpPaUJCY21kelcxd2lYMmx1Y0hWMFhDSmRLU0E5UGlCU1pYUjFjbTVVZVhCbFBFWStYRzRnSUNBZ09pQlBkWFJsY2xSNWNHVlBaa1oxYm1OMGFXOXVQRUZ5WjNNc0lGSmxkSFZ5Ym5NK0lIdGNiaUFnSUNCamIyNXpkQ0IyWVd4cFpHRjBaV1JHZFc1aklEMGdkR2hwY3k1d1lYSnpaU2htZFc1aktUdGNiaUFnSUNCeVpYUjFjbTRnZG1Gc2FXUmhkR1ZrUm5WdVl5QmhjeUJoYm5rN1hHNGdJSDFjYmx4dUlDQnpkSEpwWTNSSmJYQnNaVzFsYm5Rb1hHNGdJQ0FnWm5WdVl6b2dTVzV1WlhKVWVYQmxUMlpHZFc1amRHbHZianhCY21kekxDQlNaWFIxY201elBseHVJQ0FwT2lCSmJtNWxjbFI1Y0dWUFprWjFibU4wYVc5dVBFRnlaM01zSUZKbGRIVnlibk0rSUh0Y2JpQWdJQ0JqYjI1emRDQjJZV3hwWkdGMFpXUkdkVzVqSUQwZ2RHaHBjeTV3WVhKelpTaG1kVzVqS1R0Y2JpQWdJQ0J5WlhSMWNtNGdkbUZzYVdSaGRHVmtSblZ1WXlCaGN5Qmhibms3WEc0Z0lIMWNibHh1SUNCMllXeHBaR0YwWlNBOUlIUm9hWE11YVcxd2JHVnRaVzUwTzF4dVhHNGdJSE4wWVhScFl5QmpjbVZoZEdVZ1BTQThYRzRnSUNBZ1ZDQmxlSFJsYm1SeklGcHZaRlIxY0d4bFBHRnVlU3dnWVc1NVBpQTlJRnB2WkZSMWNHeGxQRnRkTENCYWIyUlZibXR1YjNkdVBpeGNiaUFnSUNCVklHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVTQTlJRnB2WkZWdWEyNXZkMjVjYmlBZ1BpaGNiaUFnSUNCaGNtZHpQem9nVkN4Y2JpQWdJQ0J5WlhSMWNtNXpQem9nVlN4Y2JpQWdJQ0J3WVhKaGJYTS9PaUJTWVhkRGNtVmhkR1ZRWVhKaGJYTmNiaUFnS1RvZ1dtOWtSblZ1WTNScGIyNDhWQ3dnVlQ0Z1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrUm5WdVkzUnBiMjRvZTF4dUlDQWdJQ0FnWVhKbmN6b2dLR0Z5WjNOY2JpQWdJQ0FnSUNBZ1B5QmhjbWR6TG5KbGMzUW9XbTlrVlc1cmJtOTNiaTVqY21WaGRHVW9LU2xjYmlBZ0lDQWdJQ0FnT2lCYWIyUlVkWEJzWlM1amNtVmhkR1VvVzEwcExuSmxjM1FvV205a1ZXNXJibTkzYmk1amNtVmhkR1VvS1NrcElHRnpJR0Z1ZVN4Y2JpQWdJQ0FnSUhKbGRIVnlibk02SUhKbGRIVnlibk1nZkh3Z1dtOWtWVzVyYm05M2JpNWpjbVZoZEdVb0tTeGNiaUFnSUNBZ0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1JuVnVZM1JwYjI0c1hHNGdJQ0FnSUNBdUxpNXdjbTlqWlhOelEzSmxZWFJsVUdGeVlXMXpLSEJoY21GdGN5a3NYRzRnSUNBZ2ZTa2dZWE1nWVc1NU8xeHVJQ0I5TzF4dWZWeHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ1dtOWtUR0Y2ZVNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdXbTlrVEdGNmVVUmxaanhVSUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVNBOUlGcHZaRlI1Y0dWQmJuaytYRzRnSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJR2RsZEhSbGNqb2dLQ2tnUFQ0Z1ZEdGNiaUFnZEhsd1pVNWhiV1U2SUZwdlpFWnBjbk4wVUdGeWRIbFVlWEJsUzJsdVpDNWFiMlJNWVhwNU8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdXbTlrVEdGNmVUeFVJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlVDRnWlhoMFpXNWtjeUJhYjJSVWVYQmxQRnh1SUNCdmRYUndkWFE4VkQ0c1hHNGdJRnB2WkV4aGVubEVaV1k4VkQ0c1hHNGdJR2x1Y0hWMFBGUStYRzQrSUh0Y2JpQWdaMlYwSUhOamFHVnRZU2dwT2lCVUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtTG1kbGRIUmxjaWdwTzF4dUlDQjlYRzVjYmlBZ1gzQmhjbk5sS0dsdWNIVjBPaUJRWVhKelpVbHVjSFYwS1RvZ1VHRnljMlZTWlhSMWNtNVVlWEJsUEhSb2FYTmJYQ0pmYjNWMGNIVjBYQ0pkUGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJqZEhnZ2ZTQTlJSFJvYVhNdVgzQnliMk5sYzNOSmJuQjFkRkJoY21GdGN5aHBibkIxZENrN1hHNGdJQ0FnWTI5dWMzUWdiR0Y2ZVZOamFHVnRZU0E5SUhSb2FYTXVYMlJsWmk1blpYUjBaWElvS1R0Y2JpQWdJQ0J5WlhSMWNtNGdiR0Y2ZVZOamFHVnRZUzVmY0dGeWMyVW9leUJrWVhSaE9pQmpkSGd1WkdGMFlTd2djR0YwYURvZ1kzUjRMbkJoZEdnc0lIQmhjbVZ1ZERvZ1kzUjRJSDBwTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOeVpXRjBaU0E5SUR4VUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVUNG9YRzRnSUNBZ1oyVjBkR1Z5T2lBb0tTQTlQaUJVTEZ4dUlDQWdJSEJoY21GdGN6ODZJRkpoZDBOeVpXRjBaVkJoY21GdGMxeHVJQ0FwT2lCYWIyUk1ZWHA1UEZRK0lEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkV4aGVua29lMXh1SUNBZ0lDQWdaMlYwZEdWeU9pQm5aWFIwWlhJc1hHNGdJQ0FnSUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkV4aGVua3NYRzRnSUNBZ0lDQXVMaTV3Y205alpYTnpRM0psWVhSbFVHRnlZVzF6S0hCaGNtRnRjeWtzWEc0Z0lDQWdmU2s3WEc0Z0lIMDdYRzU5WEc1Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0JhYjJSTWFYUmxjbUZzSUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQmFiMlJNYVhSbGNtRnNSR1ZtUEZRZ1BTQmhibmsrSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJSFpoYkhWbE9pQlVPMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkV4cGRHVnlZV3c3WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCYWIyUk1hWFJsY21Gc1BGUStJR1Y0ZEdWdVpITWdXbTlrVkhsd1pUeFVMQ0JhYjJSTWFYUmxjbUZzUkdWbVBGUStQaUI3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4MGFHbHpXMXdpWDI5MWRIQjFkRndpWFQ0Z2UxeHVJQ0FnSUdsbUlDaHBibkIxZEM1a1lYUmhJQ0U5UFNCMGFHbHpMbDlrWldZdWRtRnNkV1VwSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJR04wZUNBOUlIUm9hWE11WDJkbGRFOXlVbVYwZFhKdVEzUjRLR2x1Y0hWMEtUdGNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCamIyUmxPaUJhYjJSSmMzTjFaVU52WkdVdWFXNTJZV3hwWkY5c2FYUmxjbUZzTEZ4dUlDQWdJQ0FnSUNCbGVIQmxZM1JsWkRvZ2RHaHBjeTVmWkdWbUxuWmhiSFZsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhzZ2MzUmhkSFZ6T2lCY0luWmhiR2xrWENJc0lIWmhiSFZsT2lCcGJuQjFkQzVrWVhSaElIMDdYRzRnSUgxY2JseHVJQ0JuWlhRZ2RtRnNkV1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyUmxaaTUyWVd4MVpUdGNiaUFnZlZ4dVhHNGdJSE4wWVhScFl5QmpjbVZoZEdVZ1BTQThWQ0JsZUhSbGJtUnpJRkJ5YVcxcGRHbDJaVDRvWEc0Z0lDQWdkbUZzZFdVNklGUXNYRzRnSUNBZ2NHRnlZVzF6UHpvZ1VtRjNRM0psWVhSbFVHRnlZVzF6WEc0Z0lDazZJRnB2WkV4cGRHVnlZV3c4VkQ0Z1BUNGdlMXh1SUNBZ0lISmxkSFZ5YmlCdVpYY2dXbTlrVEdsMFpYSmhiQ2g3WEc0Z0lDQWdJQ0IyWVd4MVpUb2dkbUZzZFdVc1hHNGdJQ0FnSUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkV4cGRHVnlZV3dzWEc0Z0lDQWdJQ0F1TGk1d2NtOWpaWE56UTNKbFlYUmxVR0Z5WVcxektIQmhjbUZ0Y3lrc1hHNGdJQ0FnZlNrN1hHNGdJSDA3WEc1OVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNCYWIyUkZiblZ0SUNBZ0lDQWdMeTh2THk4dkx5OHZMMXh1THk4dkx5OHZMeTh2THlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVaWGh3YjNKMElIUjVjR1VnUVhKeVlYbExaWGx6SUQwZ2EyVjViMllnWVc1NVcxMDdYRzVsZUhCdmNuUWdkSGx3WlNCSmJtUnBZMlZ6UEZRK0lEMGdSWGhqYkhWa1pUeHJaWGx2WmlCVUxDQkJjbkpoZVV0bGVYTStPMXh1WEc1MGVYQmxJRVZ1ZFcxV1lXeDFaWE1nUFNCYmMzUnlhVzVuTENBdUxpNXpkSEpwYm1kYlhWMDdYRzVjYm5SNWNHVWdWbUZzZFdWelBGUWdaWGgwWlc1a2N5QkZiblZ0Vm1Gc2RXVnpQaUE5SUh0Y2JpQWdXMnNnYVc0Z1ZGdHVkVzFpWlhKZFhUb2dhenRjYm4wN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdXbTlrUlc1MWJVUmxaanhVSUdWNGRHVnVaSE1nUlc1MWJWWmhiSFZsY3lBOUlFVnVkVzFXWVd4MVpYTStYRzRnSUdWNGRHVnVaSE1nV205a1ZIbHdaVVJsWmlCN1hHNGdJSFpoYkhWbGN6b2dWRHRjYmlBZ2RIbHdaVTVoYldVNklGcHZaRVpwY25OMFVHRnlkSGxVZVhCbFMybHVaQzVhYjJSRmJuVnRPMXh1ZlZ4dVhHNTBlWEJsSUZkeWFYUmxZV0pzWlR4VVBpQTlJSHNnTFhKbFlXUnZibXg1SUZ0UUlHbHVJR3RsZVc5bUlGUmRPaUJVVzFCZElIMDdYRzVjYm1aMWJtTjBhVzl1SUdOeVpXRjBaVnB2WkVWdWRXMDhWU0JsZUhSbGJtUnpJSE4wY21sdVp5d2dWQ0JsZUhSbGJtUnpJRkpsWVdSdmJteDVQRnRWTENBdUxpNVZXMTFkUGo0b1hHNGdJSFpoYkhWbGN6b2dWQ3hjYmlBZ2NHRnlZVzF6UHpvZ1VtRjNRM0psWVhSbFVHRnlZVzF6WEc0cE9pQmFiMlJGYm5WdFBGZHlhWFJsWVdKc1pUeFVQajQ3WEc1bWRXNWpkR2x2YmlCamNtVmhkR1ZhYjJSRmJuVnRQRlVnWlhoMFpXNWtjeUJ6ZEhKcGJtY3NJRlFnWlhoMFpXNWtjeUJiVlN3Z0xpNHVWVnRkWFQ0b1hHNGdJSFpoYkhWbGN6b2dWQ3hjYmlBZ2NHRnlZVzF6UHpvZ1VtRjNRM0psWVhSbFVHRnlZVzF6WEc0cE9pQmFiMlJGYm5WdFBGUStPMXh1Wm5WdVkzUnBiMjRnWTNKbFlYUmxXbTlrUlc1MWJTaDJZV3gxWlhNNklHRnVlU3dnY0dGeVlXMXpQem9nVW1GM1EzSmxZWFJsVUdGeVlXMXpLU0I3WEc0Z0lISmxkSFZ5YmlCdVpYY2dXbTlrUlc1MWJTaDdYRzRnSUNBZ2RtRnNkV1Z6T2lCMllXeDFaWE1nWVhNZ1lXNTVMRnh1SUNBZ0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1JXNTFiU3hjYmlBZ0lDQXVMaTV3Y205alpYTnpRM0psWVhSbFVHRnlZVzF6S0hCaGNtRnRjeWtzWEc0Z0lIMHBJR0Z6SUdGdWVUdGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRnB2WkVWdWRXMDhWQ0JsZUhSbGJtUnpJRnR6ZEhKcGJtY3NJQzR1TG5OMGNtbHVaMXRkWFQ0Z1pYaDBaVzVrY3lCYWIyUlVlWEJsUEZ4dUlDQlVXMjUxYldKbGNsMHNYRzRnSUZwdlpFVnVkVzFFWldZOFZENWNiajRnZTF4dUlDQmZjR0Z5YzJVb2FXNXdkWFE2SUZCaGNuTmxTVzV3ZFhRcE9pQlFZWEp6WlZKbGRIVnlibFI1Y0dVOGRHaHBjMXRjSWw5dmRYUndkWFJjSWwwK0lIdGNiaUFnSUNCcFppQW9kSGx3Wlc5bUlHbHVjSFYwTG1SaGRHRWdJVDA5SUZ3aWMzUnlhVzVuWENJcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdOMGVDQTlJSFJvYVhNdVgyZGxkRTl5VW1WMGRYSnVRM1I0S0dsdWNIVjBLVHRjYmlBZ0lDQWdJR052Ym5OMElHVjRjR1ZqZEdWa1ZtRnNkV1Z6SUQwZ2RHaHBjeTVmWkdWbUxuWmhiSFZsY3p0Y2JpQWdJQ0FnSUdGa1pFbHpjM1ZsVkc5RGIyNTBaWGgwS0dOMGVDd2dlMXh1SUNBZ0lDQWdJQ0JsZUhCbFkzUmxaRG9nZFhScGJDNXFiMmx1Vm1Gc2RXVnpLR1Y0Y0dWamRHVmtWbUZzZFdWektTQmhjeUJjSW5OMGNtbHVaMXdpTEZ4dUlDQWdJQ0FnSUNCeVpXTmxhWFpsWkRvZ1kzUjRMbkJoY25ObFpGUjVjR1VzWEc0Z0lDQWdJQ0FnSUdOdlpHVTZJRnB2WkVsemMzVmxRMjlrWlM1cGJuWmhiR2xrWDNSNWNHVXNYRzRnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQkpUbFpCVEVsRU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDBhR2x6TGw5a1pXWXVkbUZzZFdWekxtbHVaR1Y0VDJZb2FXNXdkWFF1WkdGMFlTa2dQVDA5SUMweEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCamRIZ2dQU0IwYUdsekxsOW5aWFJQY2xKbGRIVnlia04wZUNocGJuQjFkQ2s3WEc0Z0lDQWdJQ0JqYjI1emRDQmxlSEJsWTNSbFpGWmhiSFZsY3lBOUlIUm9hWE11WDJSbFppNTJZV3gxWlhNN1hHNWNiaUFnSUNBZ0lHRmtaRWx6YzNWbFZHOURiMjUwWlhoMEtHTjBlQ3dnZTF4dUlDQWdJQ0FnSUNCeVpXTmxhWFpsWkRvZ1kzUjRMbVJoZEdFc1hHNGdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNXBiblpoYkdsa1gyVnVkVzFmZG1Gc2RXVXNYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTTZJR1Y0Y0dWamRHVmtWbUZzZFdWekxGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQnlaWFIxY200Z1NVNVdRVXhKUkR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlFOUxLR2x1Y0hWMExtUmhkR0VwTzF4dUlDQjlYRzVjYmlBZ1oyVjBJRzl3ZEdsdmJuTW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJSbFppNTJZV3gxWlhNN1hHNGdJSDFjYmx4dUlDQm5aWFFnWlc1MWJTZ3BPaUJXWVd4MVpYTThWRDRnZTF4dUlDQWdJR052Ym5OMElHVnVkVzFXWVd4MVpYTTZJR0Z1ZVNBOUlIdDlPMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlIUm9hWE11WDJSbFppNTJZV3gxWlhNcElIdGNiaUFnSUNBZ0lHVnVkVzFXWVd4MVpYTmJkbUZzWFNBOUlIWmhiRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdWdWRXMVdZV3gxWlhNZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ1oyVjBJRlpoYkhWbGN5Z3BPaUJXWVd4MVpYTThWRDRnZTF4dUlDQWdJR052Ym5OMElHVnVkVzFXWVd4MVpYTTZJR0Z1ZVNBOUlIdDlPMXh1SUNBZ0lHWnZjaUFvWTI5dWMzUWdkbUZzSUc5bUlIUm9hWE11WDJSbFppNTJZV3gxWlhNcElIdGNiaUFnSUNBZ0lHVnVkVzFXWVd4MVpYTmJkbUZzWFNBOUlIWmhiRHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdWdWRXMVdZV3gxWlhNZ1lYTWdZVzU1TzF4dUlDQjlYRzVjYmlBZ1oyVjBJRVZ1ZFcwb0tUb2dWbUZzZFdWelBGUStJSHRjYmlBZ0lDQmpiMjV6ZENCbGJuVnRWbUZzZFdWek9pQmhibmtnUFNCN2ZUdGNiaUFnSUNCbWIzSWdLR052Ym5OMElIWmhiQ0J2WmlCMGFHbHpMbDlrWldZdWRtRnNkV1Z6S1NCN1hHNGdJQ0FnSUNCbGJuVnRWbUZzZFdWelczWmhiRjBnUFNCMllXdzdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJsYm5WdFZtRnNkV1Z6SUdGeklHRnVlVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0JqY21WaGRHVmFiMlJGYm5WdE8xeHVmVnh1WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrVG1GMGFYWmxSVzUxYlNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdXbTlrVG1GMGFYWmxSVzUxYlVSbFpqeFVJR1Y0ZEdWdVpITWdSVzUxYlV4cGEyVWdQU0JGYm5WdFRHbHJaVDVjYmlBZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUkdWbUlIdGNiaUFnZG1Gc2RXVnpPaUJVTzF4dUlDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFNWhkR2wyWlVWdWRXMDdYRzU5WEc1Y2JuUjVjR1VnUlc1MWJVeHBhMlVnUFNCN0lGdHJPaUJ6ZEhKcGJtZGRPaUJ6ZEhKcGJtY2dmQ0J1ZFcxaVpYSTdJRnR1ZFRvZ2JuVnRZbVZ5WFRvZ2MzUnlhVzVuSUgwN1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCYWIyUk9ZWFJwZG1WRmJuVnRQRlFnWlhoMFpXNWtjeUJGYm5WdFRHbHJaVDRnWlhoMFpXNWtjeUJhYjJSVWVYQmxQRnh1SUNCVVcydGxlVzltSUZSZExGeHVJQ0JhYjJST1lYUnBkbVZGYm5WdFJHVm1QRlErWEc0K0lIdGNiaUFnWDNCaGNuTmxLR2x1Y0hWME9pQlFZWEp6WlVsdWNIVjBLVG9nVUdGeWMyVlNaWFIxY201VWVYQmxQRlJiYTJWNWIyWWdWRjArSUh0Y2JpQWdJQ0JqYjI1emRDQnVZWFJwZG1WRmJuVnRWbUZzZFdWeklEMGdkWFJwYkM1blpYUldZV3hwWkVWdWRXMVdZV3gxWlhNb2RHaHBjeTVmWkdWbUxuWmhiSFZsY3lrN1hHNWNiaUFnSUNCamIyNXpkQ0JqZEhnZ1BTQjBhR2x6TGw5blpYUlBjbEpsZEhWeWJrTjBlQ2hwYm5CMWRDazdYRzRnSUNBZ2FXWWdLRnh1SUNBZ0lDQWdZM1I0TG5CaGNuTmxaRlI1Y0dVZ0lUMDlJRnB2WkZCaGNuTmxaRlI1Y0dVdWMzUnlhVzVuSUNZbVhHNGdJQ0FnSUNCamRIZ3VjR0Z5YzJWa1ZIbHdaU0FoUFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzV1ZFcxaVpYSmNiaUFnSUNBcElIdGNiaUFnSUNBZ0lHTnZibk4wSUdWNGNHVmpkR1ZrVm1Gc2RXVnpJRDBnZFhScGJDNXZZbXBsWTNSV1lXeDFaWE1vYm1GMGFYWmxSVzUxYlZaaGJIVmxjeWs3WEc0Z0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdaWGh3WldOMFpXUTZJSFYwYVd3dWFtOXBibFpoYkhWbGN5aGxlSEJsWTNSbFpGWmhiSFZsY3lrZ1lYTWdYQ0p6ZEhKcGJtZGNJaXhjYmlBZ0lDQWdJQ0FnY21WalpXbDJaV1E2SUdOMGVDNXdZWEp6WldSVWVYQmxMRnh1SUNBZ0lDQWdJQ0JqYjJSbE9pQmFiMlJKYzNOMVpVTnZaR1V1YVc1MllXeHBaRjkwZVhCbExGeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQnlaWFIxY200Z1NVNVdRVXhKUkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2JtRjBhWFpsUlc1MWJWWmhiSFZsY3k1cGJtUmxlRTltS0dsdWNIVjBMbVJoZEdFcElEMDlQU0F0TVNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWlhod1pXTjBaV1JXWVd4MVpYTWdQU0IxZEdsc0xtOWlhbVZqZEZaaGJIVmxjeWh1WVhScGRtVkZiblZ0Vm1Gc2RXVnpLVHRjYmx4dUlDQWdJQ0FnWVdSa1NYTnpkV1ZVYjBOdmJuUmxlSFFvWTNSNExDQjdYRzRnSUNBZ0lDQWdJSEpsWTJWcGRtVmtPaUJqZEhndVpHRjBZU3hjYmlBZ0lDQWdJQ0FnWTI5a1pUb2dXbTlrU1hOemRXVkRiMlJsTG1sdWRtRnNhV1JmWlc1MWJWOTJZV3gxWlN4Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1Y3pvZ1pYaHdaV04wWldSV1lXeDFaWE1zWEc0Z0lDQWdJQ0I5S1R0Y2JpQWdJQ0FnSUhKbGRIVnliaUJKVGxaQlRFbEVPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnVDBzb2FXNXdkWFF1WkdGMFlTQmhjeUJoYm5rcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdWdWRXMG9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJSbFppNTJZV3gxWlhNN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1kzSmxZWFJsSUQwZ1BGUWdaWGgwWlc1a2N5QkZiblZ0VEdsclpUNG9YRzRnSUNBZ2RtRnNkV1Z6T2lCVUxGeHVJQ0FnSUhCaGNtRnRjejg2SUZKaGQwTnlaV0YwWlZCaGNtRnRjMXh1SUNBcE9pQmFiMlJPWVhScGRtVkZiblZ0UEZRK0lEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkU1aGRHbDJaVVZ1ZFcwb2UxeHVJQ0FnSUNBZ2RtRnNkV1Z6T2lCMllXeDFaWE1zWEc0Z0lDQWdJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRTVoZEdsMlpVVnVkVzBzWEc0Z0lDQWdJQ0F1TGk1d2NtOWpaWE56UTNKbFlYUmxVR0Z5WVcxektIQmhjbUZ0Y3lrc1hHNGdJQ0FnZlNrN1hHNGdJSDA3WEc1OVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNCYWIyUlFjbTl0YVhObElDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMMXh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJSUWNtOXRhWE5sUkdWbVBGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVJRDBnV205a1ZIbHdaVUZ1ZVQ1Y2JpQWdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2RIbHdaVG9nVkR0Y2JpQWdkSGx3WlU1aGJXVTZJRnB2WkVacGNuTjBVR0Z5ZEhsVWVYQmxTMmx1WkM1YWIyUlFjbTl0YVhObE8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdXbTlrVUhKdmJXbHpaVHhVSUdWNGRHVnVaSE1nV205a1ZIbHdaVUZ1ZVQ0Z1pYaDBaVzVrY3lCYWIyUlVlWEJsUEZ4dUlDQlFjbTl0YVhObFBGUmJYQ0pmYjNWMGNIVjBYQ0pkUGl4Y2JpQWdXbTlrVUhKdmJXbHpaVVJsWmp4VVBpeGNiaUFnVUhKdmJXbHpaVHhVVzF3aVgybHVjSFYwWENKZFBseHVQaUI3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4MGFHbHpXMXdpWDI5MWRIQjFkRndpWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSHNnWTNSNElIMGdQU0IwYUdsekxsOXdjbTlqWlhOelNXNXdkWFJRWVhKaGJYTW9hVzV3ZFhRcE8xeHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lHTjBlQzV3WVhKelpXUlVlWEJsSUNFOVBTQmFiMlJRWVhKelpXUlVlWEJsTG5CeWIyMXBjMlVnSmlaY2JpQWdJQ0FnSUdOMGVDNWpiMjF0YjI0dVlYTjVibU1nUFQwOUlHWmhiSE5sWEc0Z0lDQWdLU0I3WEc0Z0lDQWdJQ0JoWkdSSmMzTjFaVlJ2UTI5dWRHVjRkQ2hqZEhnc0lIdGNiaUFnSUNBZ0lDQWdZMjlrWlRvZ1dtOWtTWE56ZFdWRGIyUmxMbWx1ZG1Gc2FXUmZkSGx3WlN4Y2JpQWdJQ0FnSUNBZ1pYaHdaV04wWldRNklGcHZaRkJoY25ObFpGUjVjR1V1Y0hKdmJXbHpaU3hjYmlBZ0lDQWdJQ0FnY21WalpXbDJaV1E2SUdOMGVDNXdZWEp6WldSVWVYQmxMRnh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdTVTVXUVV4SlJEdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J3Y205dGFYTnBabWxsWkNBOVhHNGdJQ0FnSUNCamRIZ3VjR0Z5YzJWa1ZIbHdaU0E5UFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzV3Y205dGFYTmxYRzRnSUNBZ0lDQWdJRDhnWTNSNExtUmhkR0ZjYmlBZ0lDQWdJQ0FnT2lCUWNtOXRhWE5sTG5KbGMyOXNkbVVvWTNSNExtUmhkR0VwTzF4dVhHNGdJQ0FnY21WMGRYSnVJRTlMS0Z4dUlDQWdJQ0FnY0hKdmJXbHphV1pwWldRdWRHaGxiaWdvWkdGMFlUb2dZVzU1S1NBOVBpQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TGw5a1pXWXVkSGx3WlM1d1lYSnpaVUZ6ZVc1aktHUmhkR0VzSUh0Y2JpQWdJQ0FnSUNBZ0lDQndZWFJvT2lCamRIZ3VjR0YwYUN4Y2JpQWdJQ0FnSUNBZ0lDQmxjbkp2Y2sxaGNEb2dZM1I0TG1OdmJXMXZiaTVqYjI1MFpYaDBkV0ZzUlhKeWIzSk5ZWEFzWEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZTbGNiaUFnSUNBcE8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHTnlaV0YwWlNBOUlEeFVJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlVDRvWEc0Z0lDQWdjMk5vWlcxaE9pQlVMRnh1SUNBZ0lIQmhjbUZ0Y3o4NklGSmhkME55WldGMFpWQmhjbUZ0YzF4dUlDQXBPaUJhYjJSUWNtOXRhWE5sUEZRK0lEMCtJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJRnB2WkZCeWIyMXBjMlVvZTF4dUlDQWdJQ0FnZEhsd1pUb2djMk5vWlcxaExGeHVJQ0FnSUNBZ2RIbHdaVTVoYldVNklGcHZaRVpwY25OMFVHRnlkSGxVZVhCbFMybHVaQzVhYjJSUWNtOXRhWE5sTEZ4dUlDQWdJQ0FnTGk0dWNISnZZMlZ6YzBOeVpXRjBaVkJoY21GdGN5aHdZWEpoYlhNcExGeHVJQ0FnSUgwcE8xeHVJQ0I5TzF4dWZWeHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0JhYjJSRlptWmxZM1J6SUNBZ0lDQWdJQ0F2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1Y2JtVjRjRzl5ZENCMGVYQmxJRkpsWm1sdVpXMWxiblE4VkQ0Z1BTQW9ZWEpuT2lCVUxDQmpkSGc2SUZKbFptbHVaVzFsYm5SRGRIZ3BJRDArSUdGdWVUdGNibVY0Y0c5eWRDQjBlWEJsSUZOMWNHVnlVbVZtYVc1bGJXVnVkRHhVUGlBOUlDaGhjbWM2SUZRc0lHTjBlRG9nVW1WbWFXNWxiV1Z1ZEVOMGVDa2dQVDRnZG05cFpEdGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1VtVm1hVzVsYldWdWRFVm1abVZqZER4VVBpQTlJSHRjYmlBZ2RIbHdaVG9nWENKeVpXWnBibVZ0Wlc1MFhDSTdYRzRnSUhKbFptbHVaVzFsYm5RNklDaGhjbWM2SUZRc0lHTjBlRG9nVW1WbWFXNWxiV1Z1ZEVOMGVDa2dQVDRnWVc1NU8xeHVmVHRjYm1WNGNHOXlkQ0IwZVhCbElGUnlZVzV6Wm05eWJVVm1abVZqZER4VVBpQTlJSHRjYmlBZ2RIbHdaVG9nWENKMGNtRnVjMlp2Y20xY0lqdGNiaUFnZEhKaGJuTm1iM0p0T2lBb1lYSm5PaUJVTENCamRIZzZJRkpsWm1sdVpXMWxiblJEZEhncElEMCtJR0Z1ZVR0Y2JuMDdYRzVsZUhCdmNuUWdkSGx3WlNCUWNtVndjbTlqWlhOelJXWm1aV04wUEZRK0lEMGdlMXh1SUNCMGVYQmxPaUJjSW5CeVpYQnliMk5sYzNOY0lqdGNiaUFnZEhKaGJuTm1iM0p0T2lBb1lYSm5PaUJVS1NBOVBpQmhibms3WEc1OU8xeHVaWGh3YjNKMElIUjVjR1VnUldabVpXTjBQRlErSUQxY2JpQWdmQ0JTWldacGJtVnRaVzUwUldabVpXTjBQRlErWEc0Z0lId2dWSEpoYm5ObWIzSnRSV1ptWldOMFBGUStYRzRnSUh3Z1VISmxjSEp2WTJWemMwVm1abVZqZER4VVBqdGNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JhYjJSRlptWmxZM1J6UkdWbVBGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVJRDBnV205a1ZIbHdaVUZ1ZVQ1Y2JpQWdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2MyTm9aVzFoT2lCVU8xeHVJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRVZtWm1WamRITTdYRzRnSUdWbVptVmpkRG9nUldabVpXTjBQR0Z1ZVQ0N1hHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QmFiMlJGWm1abFkzUnpQRnh1SUNCVUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVTeGNiaUFnVDNWMGNIVjBJRDBnVkZ0Y0lsOXZkWFJ3ZFhSY0lsMHNYRzRnSUVsdWNIVjBJRDBnVkZ0Y0lsOXBibkIxZEZ3aVhWeHVQaUJsZUhSbGJtUnpJRnB2WkZSNWNHVThUM1YwY0hWMExDQmFiMlJGWm1abFkzUnpSR1ZtUEZRK0xDQkpibkIxZEQ0Z2UxeHVJQ0JwYm01bGNsUjVjR1VvS1NCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgyUmxaaTV6WTJobGJXRTdYRzRnSUgxY2JseHVJQ0JmY0dGeWMyVW9hVzV3ZFhRNklGQmhjbk5sU1c1d2RYUXBPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThkR2hwYzF0Y0lsOXZkWFJ3ZFhSY0lsMCtJSHRjYmlBZ0lDQmpiMjV6ZENCN0lITjBZWFIxY3l3Z1kzUjRJSDBnUFNCMGFHbHpMbDl3Y205alpYTnpTVzV3ZFhSUVlYSmhiWE1vYVc1d2RYUXBPMXh1WEc0Z0lDQWdZMjl1YzNRZ1pXWm1aV04wSUQwZ2RHaHBjeTVmWkdWbUxtVm1abVZqZENCOGZDQnVkV3hzTzF4dVhHNGdJQ0FnYVdZZ0tHVm1abVZqZEM1MGVYQmxJRDA5UFNCY0luQnlaWEJ5YjJObGMzTmNJaWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjSEp2WTJWemMyVmtJRDBnWldabVpXTjBMblJ5WVc1elptOXliU2hqZEhndVpHRjBZU2s3WEc1Y2JpQWdJQ0FnSUdsbUlDaGpkSGd1WTI5dGJXOXVMbUZ6ZVc1aktTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQlFjbTl0YVhObExuSmxjMjlzZG1Vb2NISnZZMlZ6YzJWa0tTNTBhR1Z1S0Nod2NtOWpaWE56WldRcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtTG5OamFHVnRZUzVmY0dGeWMyVkJjM2x1WXloN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JrWVhSaE9pQndjbTlqWlhOelpXUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCd1lYUm9PaUJqZEhndWNHRjBhQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lIQmhjbVZ1ZERvZ1kzUjRMRnh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQjlLVHRjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjBhR2x6TGw5a1pXWXVjMk5vWlcxaExsOXdZWEp6WlZONWJtTW9lMXh1SUNBZ0lDQWdJQ0FnSUdSaGRHRTZJSEJ5YjJObGMzTmxaQ3hjYmlBZ0lDQWdJQ0FnSUNCd1lYUm9PaUJqZEhndWNHRjBhQ3hjYmlBZ0lDQWdJQ0FnSUNCd1lYSmxiblE2SUdOMGVDeGNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdZMjl1YzNRZ1kyaGxZMnREZEhnNklGSmxabWx1WlcxbGJuUkRkSGdnUFNCN1hHNGdJQ0FnSUNCaFpHUkpjM04xWlRvZ0tHRnlaem9nU1hOemRXVkVZWFJoS1NBOVBpQjdYRzRnSUNBZ0lDQWdJR0ZrWkVsemMzVmxWRzlEYjI1MFpYaDBLR04wZUN3Z1lYSm5LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHRnlaeTVtWVhSaGJDa2dlMXh1SUNBZ0lDQWdJQ0FnSUhOMFlYUjFjeTVoWW05eWRDZ3BPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUhOMFlYUjFjeTVrYVhKMGVTZ3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnWjJWMElIQmhkR2dvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCamRIZ3VjR0YwYUR0Y2JpQWdJQ0FnSUgwc1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUdOb1pXTnJRM1I0TG1Ga1pFbHpjM1ZsSUQwZ1kyaGxZMnREZEhndVlXUmtTWE56ZFdVdVltbHVaQ2hqYUdWamEwTjBlQ2s3WEc0Z0lDQWdhV1lnS0dWbVptVmpkQzUwZVhCbElEMDlQU0JjSW5KbFptbHVaVzFsYm5SY0lpa2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1pYaGxZM1YwWlZKbFptbHVaVzFsYm5RZ1BTQW9YRzRnSUNBZ0lDQWdJR0ZqWXpvZ2RXNXJibTkzYmx4dUlDQWdJQ0FnSUNBdkx5QmxabVpsWTNRNklGSmxabWx1WlcxbGJuUkZabVpsWTNROFlXNTVQbHh1SUNBZ0lDQWdLVG9nWVc1NUlEMCtJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbVZ6ZFd4MElEMGdaV1ptWldOMExuSmxabWx1WlcxbGJuUW9ZV05qTENCamFHVmphME4wZUNrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hqZEhndVkyOXRiVzl1TG1GemVXNWpLU0I3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUZCeWIyMXBjMlV1Y21WemIyeDJaU2h5WlhOMWJIUXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaHlaWE4xYkhRZ2FXNXpkR0Z1WTJWdlppQlFjbTl0YVhObEtTQjdYRzRnSUNBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLRnh1SUNBZ0lDQWdJQ0FnSUNBZ1hDSkJjM2x1WXlCeVpXWnBibVZ0Wlc1MElHVnVZMjkxYm5SbGNtVmtJR1IxY21sdVp5QnplVzVqYUhKdmJtOTFjeUJ3WVhKelpTQnZjR1Z5WVhScGIyNHVJRlZ6WlNBdWNHRnljMlZCYzNsdVl5QnBibk4wWldGa0xsd2lYRzRnSUNBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1lXTmpPMXh1SUNBZ0lDQWdmVHRjYmx4dUlDQWdJQ0FnYVdZZ0tHTjBlQzVqYjIxdGIyNHVZWE41Ym1NZ1BUMDlJR1poYkhObEtTQjdYRzRnSUNBZ0lDQWdJR052Ym5OMElHbHVibVZ5SUQwZ2RHaHBjeTVmWkdWbUxuTmphR1Z0WVM1ZmNHRnljMlZUZVc1aktIdGNiaUFnSUNBZ0lDQWdJQ0JrWVhSaE9pQmpkSGd1WkdGMFlTeGNiaUFnSUNBZ0lDQWdJQ0J3WVhSb09pQmpkSGd1Y0dGMGFDeGNiaUFnSUNBZ0lDQWdJQ0J3WVhKbGJuUTZJR04wZUN4Y2JpQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJR2xtSUNocGJtNWxjaTV6ZEdGMGRYTWdQVDA5SUZ3aVlXSnZjblJsWkZ3aUtTQnlaWFIxY200Z1NVNVdRVXhKUkR0Y2JpQWdJQ0FnSUNBZ2FXWWdLR2x1Ym1WeUxuTjBZWFIxY3lBOVBUMGdYQ0prYVhKMGVWd2lLU0J6ZEdGMGRYTXVaR2x5ZEhrb0tUdGNibHh1SUNBZ0lDQWdJQ0F2THlCeVpYUjFjbTRnZG1Gc2RXVWdhWE1nYVdkdWIzSmxaRnh1SUNBZ0lDQWdJQ0JsZUdWamRYUmxVbVZtYVc1bGJXVnVkQ2hwYm01bGNpNTJZV3gxWlNrN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCN0lITjBZWFIxY3pvZ2MzUmhkSFZ6TG5aaGJIVmxMQ0IyWVd4MVpUb2dhVzV1WlhJdWRtRnNkV1VnZlR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtaV1l1YzJOb1pXMWhYRzRnSUNBZ0lDQWdJQ0FnTGw5d1lYSnpaVUZ6ZVc1aktIc2daR0YwWVRvZ1kzUjRMbVJoZEdFc0lIQmhkR2c2SUdOMGVDNXdZWFJvTENCd1lYSmxiblE2SUdOMGVDQjlLVnh1SUNBZ0lDQWdJQ0FnSUM1MGFHVnVLQ2hwYm01bGNpa2dQVDRnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsdWJtVnlMbk4wWVhSMWN5QTlQVDBnWENKaFltOXlkR1ZrWENJcElISmxkSFZ5YmlCSlRsWkJURWxFTzF4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0dsdWJtVnlMbk4wWVhSMWN5QTlQVDBnWENKa2FYSjBlVndpS1NCemRHRjBkWE11WkdseWRIa29LVHRjYmx4dUlDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHVjRaV04xZEdWU1pXWnBibVZ0Wlc1MEtHbHVibVZ5TG5aaGJIVmxLUzUwYUdWdUtDZ3BJRDArSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnYzNSaGRIVnpPaUJ6ZEdGMGRYTXVkbUZzZFdVc0lIWmhiSFZsT2lCcGJtNWxjaTUyWVd4MVpTQjlPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHVm1abVZqZEM1MGVYQmxJRDA5UFNCY0luUnlZVzV6Wm05eWJWd2lLU0I3WEc0Z0lDQWdJQ0JwWmlBb1kzUjRMbU52YlcxdmJpNWhjM2x1WXlBOVBUMGdabUZzYzJVcElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ1ltRnpaU0E5SUhSb2FYTXVYMlJsWmk1elkyaGxiV0V1WDNCaGNuTmxVM2x1WXloN1hHNGdJQ0FnSUNBZ0lDQWdaR0YwWVRvZ1kzUjRMbVJoZEdFc1hHNGdJQ0FnSUNBZ0lDQWdjR0YwYURvZ1kzUjRMbkJoZEdnc1hHNGdJQ0FnSUNBZ0lDQWdjR0Z5Wlc1ME9pQmpkSGdzWEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQXZMeUJwWmlBb1ltRnpaUzV6ZEdGMGRYTWdQVDA5SUZ3aVlXSnZjblJsWkZ3aUtTQnlaWFIxY200Z1NVNVdRVXhKUkR0Y2JpQWdJQ0FnSUNBZ0x5OGdhV1lnS0dKaGMyVXVjM1JoZEhWeklEMDlQU0JjSW1ScGNuUjVYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdJQ0J5WlhSMWNtNGdleUJ6ZEdGMGRYTTZJRndpWkdseWRIbGNJaXdnZG1Gc2RXVTZJR0poYzJVdWRtRnNkV1VnZlR0Y2JpQWdJQ0FnSUNBZ0x5OGdmVnh1SUNBZ0lDQWdJQ0JwWmlBb0lXbHpWbUZzYVdRb1ltRnpaU2twSUhKbGRIVnliaUJpWVhObE8xeHVYRzRnSUNBZ0lDQWdJR052Ym5OMElISmxjM1ZzZENBOUlHVm1abVZqZEM1MGNtRnVjMlp2Y20wb1ltRnpaUzUyWVd4MVpTd2dZMmhsWTJ0RGRIZ3BPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwSUdsdWMzUmhibU5sYjJZZ1VISnZiV2x6WlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNiaUFnSUNBZ0lDQWdJQ0FnSUdCQmMzbHVZMmh5YjI1dmRYTWdkSEpoYm5ObWIzSnRJR1Z1WTI5MWJuUmxjbVZrSUdSMWNtbHVaeUJ6ZVc1amFISnZibTkxY3lCd1lYSnpaU0J2Y0dWeVlYUnBiMjR1SUZWelpTQXVjR0Z5YzJWQmMzbHVZeUJwYm5OMFpXRmtMbUJjYmlBZ0lDQWdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSHNnYzNSaGRIVnpPaUJ6ZEdGMGRYTXVkbUZzZFdVc0lIWmhiSFZsT2lCeVpYTjFiSFFnZlR0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtaV1l1YzJOb1pXMWhYRzRnSUNBZ0lDQWdJQ0FnTGw5d1lYSnpaVUZ6ZVc1aktIc2daR0YwWVRvZ1kzUjRMbVJoZEdFc0lIQmhkR2c2SUdOMGVDNXdZWFJvTENCd1lYSmxiblE2SUdOMGVDQjlLVnh1SUNBZ0lDQWdJQ0FnSUM1MGFHVnVLQ2hpWVhObEtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvSVdselZtRnNhV1FvWW1GelpTa3BJSEpsZEhWeWJpQmlZWE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnYVdZZ0tHSmhjMlV1YzNSaGRIVnpJRDA5UFNCY0ltRmliM0owWldSY0lpa2djbVYwZFhKdUlFbE9Wa0ZNU1VRN1hHNGdJQ0FnSUNBZ0lDQWdJQ0F2THlCcFppQW9ZbUZ6WlM1emRHRjBkWE1nUFQwOUlGd2laR2x5ZEhsY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0x5OGdJQ0J5WlhSMWNtNGdleUJ6ZEdGMGRYTTZJRndpWkdseWRIbGNJaXdnZG1Gc2RXVTZJR0poYzJVdWRtRnNkV1VnZlR0Y2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SUgxY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQlFjbTl0YVhObExuSmxjMjlzZG1Vb1pXWm1aV04wTG5SeVlXNXpabTl5YlNoaVlYTmxMblpoYkhWbExDQmphR1ZqYTBOMGVDa3BMblJvWlc0b1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNoeVpYTjFiSFFwSUQwK0lDaDdJSE4wWVhSMWN6b2djM1JoZEhWekxuWmhiSFZsTENCMllXeDFaVG9nY21WemRXeDBJSDBwWEc0Z0lDQWdJQ0FnSUNBZ0lDQXBPMXh1SUNBZ0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUhWMGFXd3VZWE56WlhKMFRtVjJaWElvWldabVpXTjBLVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0E4U1NCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5rK0tGeHVJQ0FnSUhOamFHVnRZVG9nU1N4Y2JpQWdJQ0JsWm1abFkzUTZJRVZtWm1WamREeEpXMXdpWDI5MWRIQjFkRndpWFQ0c1hHNGdJQ0FnY0dGeVlXMXpQem9nVW1GM1EzSmxZWFJsVUdGeVlXMXpYRzRnSUNrNklGcHZaRVZtWm1WamRITThTU3dnU1Z0Y0lsOXZkWFJ3ZFhSY0lsMCtJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpFVm1abVZqZEhNb2UxeHVJQ0FnSUNBZ2MyTm9aVzFoTEZ4dUlDQWdJQ0FnZEhsd1pVNWhiV1U2SUZwdlpFWnBjbk4wVUdGeWRIbFVlWEJsUzJsdVpDNWFiMlJGWm1abFkzUnpMRnh1SUNBZ0lDQWdaV1ptWldOMExGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh3WVhKaGJYTXBMRnh1SUNBZ0lIMHBPMXh1SUNCOU8xeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVlhhWFJvVUhKbGNISnZZMlZ6Y3lBOUlEeEpJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlVDRvWEc0Z0lDQWdjSEpsY0hKdlkyVnpjem9nS0dGeVp6b2dkVzVyYm05M2Jpa2dQVDRnZFc1cmJtOTNiaXhjYmlBZ0lDQnpZMmhsYldFNklFa3NYRzRnSUNBZ2NHRnlZVzF6UHpvZ1VtRjNRM0psWVhSbFVHRnlZVzF6WEc0Z0lDazZJRnB2WkVWbVptVmpkSE04U1N3Z1NWdGNJbDl2ZFhSd2RYUmNJbDArSUQwK0lIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGcHZaRVZtWm1WamRITW9lMXh1SUNBZ0lDQWdjMk5vWlcxaExGeHVJQ0FnSUNBZ1pXWm1aV04wT2lCN0lIUjVjR1U2SUZ3aWNISmxjSEp2WTJWemMxd2lMQ0IwY21GdWMyWnZjbTA2SUhCeVpYQnliMk5sYzNNZ2ZTeGNiaUFnSUNBZ0lIUjVjR1ZPWVcxbE9pQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVF1V205a1JXWm1aV04wY3l4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJSHNnV205a1JXWm1aV04wY3lCaGN5QmFiMlJVY21GdWMyWnZjbTFsY2lCOU8xeHVYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdXbTlrVDNCMGFXOXVZV3dnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRnB2WkU5d2RHbHZibUZzUkdWbVBGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVJRDBnV205a1ZIbHdaVUZ1ZVQ1Y2JpQWdaWGgwWlc1a2N5QmFiMlJVZVhCbFJHVm1JSHRjYmlBZ2FXNXVaWEpVZVhCbE9pQlVPMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkU5d2RHbHZibUZzTzF4dWZWeHVYRzVsZUhCdmNuUWdkSGx3WlNCYWIyUlBjSFJwYjI1aGJGUjVjR1U4VkNCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5rK0lEMGdXbTlrVDNCMGFXOXVZV3c4VkQ0N1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCYWIyUlBjSFJwYjI1aGJEeFVJR1Y0ZEdWdVpITWdXbTlrVkhsd1pVRnVlVDRnWlhoMFpXNWtjeUJhYjJSVWVYQmxQRnh1SUNCVVcxd2lYMjkxZEhCMWRGd2lYU0I4SUhWdVpHVm1hVzVsWkN4Y2JpQWdXbTlrVDNCMGFXOXVZV3hFWldZOFZENHNYRzRnSUZSYlhDSmZhVzV3ZFhSY0lsMGdmQ0IxYm1SbFptbHVaV1JjYmo0Z2UxeHVJQ0JmY0dGeWMyVW9hVzV3ZFhRNklGQmhjbk5sU1c1d2RYUXBPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThkR2hwYzF0Y0lsOXZkWFJ3ZFhSY0lsMCtJSHRjYmlBZ0lDQmpiMjV6ZENCd1lYSnpaV1JVZVhCbElEMGdkR2hwY3k1ZloyVjBWSGx3WlNocGJuQjFkQ2s3WEc0Z0lDQWdhV1lnS0hCaGNuTmxaRlI1Y0dVZ1BUMDlJRnB2WkZCaGNuTmxaRlI1Y0dVdWRXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1Qwc29kVzVrWldacGJtVmtLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMlJsWmk1cGJtNWxjbFI1Y0dVdVgzQmhjbk5sS0dsdWNIVjBLVHRjYmlBZ2ZWeHVYRzRnSUhWdWQzSmhjQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHVm1MbWx1Ym1WeVZIbHdaVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0E4VkNCbGVIUmxibVJ6SUZwdlpGUjVjR1ZCYm5rK0tGeHVJQ0FnSUhSNWNHVTZJRlFzWEc0Z0lDQWdjR0Z5WVcxelB6b2dVbUYzUTNKbFlYUmxVR0Z5WVcxelhHNGdJQ2s2SUZwdlpFOXdkR2x2Ym1Gc1BGUStJRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpFOXdkR2x2Ym1Gc0tIdGNiaUFnSUNBZ0lHbHVibVZ5Vkhsd1pUb2dkSGx3WlN4Y2JpQWdJQ0FnSUhSNWNHVk9ZVzFsT2lCYWIyUkdhWEp6ZEZCaGNuUjVWSGx3WlV0cGJtUXVXbTlrVDNCMGFXOXVZV3dzWEc0Z0lDQWdJQ0F1TGk1d2NtOWpaWE56UTNKbFlYUmxVR0Z5WVcxektIQmhjbUZ0Y3lrc1hHNGdJQ0FnZlNrZ1lYTWdZVzU1TzF4dUlDQjlPMXh1ZlZ4dVhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ1dtOWtUblZzYkdGaWJHVWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGcHZaRTUxYkd4aFlteGxSR1ZtUEZRZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUVc1NUlEMGdXbTlrVkhsd1pVRnVlVDVjYmlBZ1pYaDBaVzVrY3lCYWIyUlVlWEJsUkdWbUlIdGNiaUFnYVc1dVpYSlVlWEJsT2lCVU8xeHVJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRTUxYkd4aFlteGxPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JhYjJST2RXeHNZV0pzWlZSNWNHVThWQ0JsZUhSbGJtUnpJRnB2WkZSNWNHVkJibmsrSUQwZ1dtOWtUblZzYkdGaWJHVThWRDQ3WEc1Y2JtVjRjRzl5ZENCamJHRnpjeUJhYjJST2RXeHNZV0pzWlR4VUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVUNGdaWGgwWlc1a2N5QmFiMlJVZVhCbFBGeHVJQ0JVVzF3aVgyOTFkSEIxZEZ3aVhTQjhJRzUxYkd3c1hHNGdJRnB2WkU1MWJHeGhZbXhsUkdWbVBGUStMRnh1SUNCVVcxd2lYMmx1Y0hWMFhDSmRJSHdnYm5Wc2JGeHVQaUI3WEc0Z0lGOXdZWEp6WlNocGJuQjFkRG9nVUdGeWMyVkpibkIxZENrNklGQmhjbk5sVW1WMGRYSnVWSGx3WlR4MGFHbHpXMXdpWDI5MWRIQjFkRndpWFQ0Z2UxeHVJQ0FnSUdOdmJuTjBJSEJoY25ObFpGUjVjR1VnUFNCMGFHbHpMbDluWlhSVWVYQmxLR2x1Y0hWMEtUdGNiaUFnSUNCcFppQW9jR0Z5YzJWa1ZIbHdaU0E5UFQwZ1dtOWtVR0Z5YzJWa1ZIbHdaUzV1ZFd4c0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1Qwc29iblZzYkNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5a1pXWXVhVzV1WlhKVWVYQmxMbDl3WVhKelpTaHBibkIxZENrN1hHNGdJSDFjYmx4dUlDQjFibmR5WVhBb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYMlJsWmk1cGJtNWxjbFI1Y0dVN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1kzSmxZWFJsSUQwZ1BGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVQaWhjYmlBZ0lDQjBlWEJsT2lCVUxGeHVJQ0FnSUhCaGNtRnRjejg2SUZKaGQwTnlaV0YwWlZCaGNtRnRjMXh1SUNBcE9pQmFiMlJPZFd4c1lXSnNaVHhVUGlBOVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QmFiMlJPZFd4c1lXSnNaU2g3WEc0Z0lDQWdJQ0JwYm01bGNsUjVjR1U2SUhSNWNHVXNYRzRnSUNBZ0lDQjBlWEJsVG1GdFpUb2dXbTlrUm1seWMzUlFZWEowZVZSNWNHVkxhVzVrTGxwdlpFNTFiR3hoWW14bExGeHVJQ0FnSUNBZ0xpNHVjSEp2WTJWemMwTnlaV0YwWlZCaGNtRnRjeWh3WVhKaGJYTXBMRnh1SUNBZ0lIMHBJR0Z6SUdGdWVUdGNiaUFnZlR0Y2JuMWNibHh1THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc0dkx5OHZMeTh2THk4dklDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTHk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUNCYWIyUkVaV1poZFd4MElDQWdJQ0FnSUM4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdXbTlrUkdWbVlYVnNkRVJsWmp4VUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVTQTlJRnB2WkZSNWNHVkJibmsrWEc0Z0lHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVSbFppQjdYRzRnSUdsdWJtVnlWSGx3WlRvZ1ZEdGNiaUFnWkdWbVlYVnNkRlpoYkhWbE9pQW9LU0E5UGlCMWRHbHNMbTV2Vlc1a1pXWnBibVZrUEZSYlhDSmZhVzV3ZFhSY0lsMCtPMXh1SUNCMGVYQmxUbUZ0WlRvZ1dtOWtSbWx5YzNSUVlYSjBlVlI1Y0dWTGFXNWtMbHB2WkVSbFptRjFiSFE3WEc1OVhHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCYWIyUkVaV1poZFd4MFBGUWdaWGgwWlc1a2N5QmFiMlJVZVhCbFFXNTVQaUJsZUhSbGJtUnpJRnB2WkZSNWNHVThYRzRnSUhWMGFXd3VibTlWYm1SbFptbHVaV1E4VkZ0Y0lsOXZkWFJ3ZFhSY0lsMCtMRnh1SUNCYWIyUkVaV1poZFd4MFJHVm1QRlErTEZ4dUlDQlVXMXdpWDJsdWNIVjBYQ0pkSUh3Z2RXNWtaV1pwYm1Wa1hHNCtJSHRjYmlBZ1gzQmhjbk5sS0dsdWNIVjBPaUJRWVhKelpVbHVjSFYwS1RvZ1VHRnljMlZTWlhSMWNtNVVlWEJsUEhSb2FYTmJYQ0pmYjNWMGNIVjBYQ0pkUGlCN1hHNGdJQ0FnWTI5dWMzUWdleUJqZEhnZ2ZTQTlJSFJvYVhNdVgzQnliMk5sYzNOSmJuQjFkRkJoY21GdGN5aHBibkIxZENrN1hHNGdJQ0FnYkdWMElHUmhkR0VnUFNCamRIZ3VaR0YwWVR0Y2JpQWdJQ0JwWmlBb1kzUjRMbkJoY25ObFpGUjVjR1VnUFQwOUlGcHZaRkJoY25ObFpGUjVjR1V1ZFc1a1pXWnBibVZrS1NCN1hHNGdJQ0FnSUNCa1lYUmhJRDBnZEdocGN5NWZaR1ZtTG1SbFptRjFiSFJXWVd4MVpTZ3BPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZaR1ZtTG1sdWJtVnlWSGx3WlM1ZmNHRnljMlVvZTF4dUlDQWdJQ0FnWkdGMFlTeGNiaUFnSUNBZ0lIQmhkR2c2SUdOMGVDNXdZWFJvTEZ4dUlDQWdJQ0FnY0dGeVpXNTBPaUJqZEhnc1hHNGdJQ0FnZlNrN1hHNGdJSDFjYmx4dUlDQnlaVzF2ZG1WRVpXWmhkV3gwS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtaV1l1YVc1dVpYSlVlWEJsTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOeVpXRjBaU0E5SUR4VUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVGdWVUNG9YRzRnSUNBZ2RIbHdaVG9nVkN4Y2JpQWdJQ0J3WVhKaGJYTS9PaUJTWVhkRGNtVmhkR1ZRWVhKaGJYTmNiaUFnS1RvZ1dtOWtUM0IwYVc5dVlXdzhWRDRnUFQ0Z2UxeHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1dtOWtUM0IwYVc5dVlXd29lMXh1SUNBZ0lDQWdhVzV1WlhKVWVYQmxPaUIwZVhCbExGeHVJQ0FnSUNBZ2RIbHdaVTVoYldVNklGcHZaRVpwY25OMFVHRnlkSGxVZVhCbFMybHVaQzVhYjJSUGNIUnBiMjVoYkN4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtTQmhjeUJoYm5rN1hHNGdJSDA3WEc1OVhHNWNiaTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dlhHNHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2TDF4dUx5OHZMeTh2THk4dkx5QWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQzh2THk4dkx5OHZMeTljYmk4dkx5OHZMeTh2THk4Z0lDQWdJQ0JhYjJST1lVNGdJQ0FnSUNBZ0lDQXZMeTh2THk4dkx5OHZYRzR2THk4dkx5OHZMeTh2SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OHZMeTh2THk4dkwxeHVMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk5Y2JpOHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2THk4dkx5OHZMeTh2WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1dtOWtUbUZPUkdWbUlHVjRkR1Z1WkhNZ1dtOWtWSGx3WlVSbFppQjdYRzRnSUhSNWNHVk9ZVzFsT2lCYWIyUkdhWEp6ZEZCaGNuUjVWSGx3WlV0cGJtUXVXbTlrVG1GT08xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdXbTlrVG1GT0lHVjRkR1Z1WkhNZ1dtOWtWSGx3WlR4dWRXMWlaWElzSUZwdlpFNWhUa1JsWmo0Z2UxeHVJQ0JmY0dGeWMyVW9hVzV3ZFhRNklGQmhjbk5sU1c1d2RYUXBPaUJRWVhKelpWSmxkSFZ5YmxSNWNHVThZVzU1UGlCN1hHNGdJQ0FnWTI5dWMzUWdjR0Z5YzJWa1ZIbHdaU0E5SUhSb2FYTXVYMmRsZEZSNWNHVW9hVzV3ZFhRcE8xeHVJQ0FnSUdsbUlDaHdZWEp6WldSVWVYQmxJQ0U5UFNCYWIyUlFZWEp6WldSVWVYQmxMbTVoYmlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWTNSNElEMGdkR2hwY3k1ZloyVjBUM0pTWlhSMWNtNURkSGdvYVc1d2RYUXBPMXh1SUNBZ0lDQWdZV1JrU1hOemRXVlViME52Ym5SbGVIUW9ZM1I0TENCN1hHNGdJQ0FnSUNBZ0lHTnZaR1U2SUZwdlpFbHpjM1ZsUTI5a1pTNXBiblpoYkdsa1gzUjVjR1VzWEc0Z0lDQWdJQ0FnSUdWNGNHVmpkR1ZrT2lCYWIyUlFZWEp6WldSVWVYQmxMbTVoYml4Y2JpQWdJQ0FnSUNBZ2NtVmpaV2wyWldRNklHTjBlQzV3WVhKelpXUlVlWEJsTEZ4dUlDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNCeVpYUjFjbTRnU1U1V1FVeEpSRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2V5QnpkR0YwZFhNNklGd2lkbUZzYVdSY0lpd2dkbUZzZFdVNklHbHVjSFYwTG1SaGRHRWdmVHRjYmlBZ2ZWeHVYRzRnSUhOMFlYUnBZeUJqY21WaGRHVWdQU0FvY0dGeVlXMXpQem9nVW1GM1EzSmxZWFJsVUdGeVlXMXpLVG9nV205a1RtRk9JRDArSUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZwdlpFNWhUaWg3WEc0Z0lDQWdJQ0IwZVhCbFRtRnRaVG9nV205a1JtbHljM1JRWVhKMGVWUjVjR1ZMYVc1a0xscHZaRTVoVGl4Y2JpQWdJQ0FnSUM0dUxuQnliMk5sYzNORGNtVmhkR1ZRWVhKaGJYTW9jR0Z5WVcxektTeGNiaUFnSUNCOUtUdGNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJR052Ym5OMElHTjFjM1J2YlNBOUlEeFVQaWhjYmlBZ1kyaGxZMnMvT2lBb1pHRjBZVG9nZFc1cmJtOTNiaWtnUFQ0Z1lXNTVMRnh1SUNCd1lYSmhiWE02SUZCaGNtRnRaWFJsY25NOFdtOWtWSGx3WlVGdWVWdGNJbkpsWm1sdVpWd2lYVDViTVYwZ1BTQjdmU3hjYmlBZ1ptRjBZV3cvT2lCaWIyOXNaV0Z1WEc0cE9pQmFiMlJVZVhCbFBGUStJRDArSUh0Y2JpQWdhV1lnS0dOb1pXTnJLVnh1SUNBZ0lISmxkSFZ5YmlCYWIyUkJibmt1WTNKbFlYUmxLQ2t1YzNWd1pYSlNaV1pwYm1Vb0tHUmhkR0VzSUdOMGVDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tDRmphR1ZqYXloa1lYUmhLU2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3SUQwZ2RIbHdaVzltSUhCaGNtRnRjeUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJRDhnY0dGeVlXMXpLR1JoZEdFcElEb2djR0Z5WVcxek8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCd01pQTlJSFI1Y0dWdlppQndJRDA5UFNCY0luTjBjbWx1WjF3aUlEOGdleUJ0WlhOellXZGxPaUJ3SUgwZ09pQndPMXh1SUNBZ0lDQWdJQ0JqZEhndVlXUmtTWE56ZFdVb2V5QmpiMlJsT2lCY0ltTjFjM1J2YlZ3aUxDQXVMaTV3TWl3Z1ptRjBZV3dnZlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNrN1hHNGdJSEpsZEhWeWJpQmFiMlJCYm5rdVkzSmxZWFJsS0NrN1hHNTlPMXh1WEc1bGVIQnZjblFnZXlCYWIyUlVlWEJsSUdGeklGTmphR1Z0WVN3Z1dtOWtWSGx3WlNCaGN5QmFiMlJUWTJobGJXRWdmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJR3hoZEdVZ1BTQjdYRzRnSUc5aWFtVmpkRG9nV205a1QySnFaV04wTG14aGVubGpjbVZoZEdVc1hHNTlPMXh1WEc1bGVIQnZjblFnWlc1MWJTQmFiMlJHYVhKemRGQmhjblI1Vkhsd1pVdHBibVFnZTF4dUlDQmFiMlJUZEhKcGJtY2dQU0JjSWxwdlpGTjBjbWx1WjF3aUxGeHVJQ0JhYjJST2RXMWlaWElnUFNCY0lscHZaRTUxYldKbGNsd2lMRnh1SUNCYWIyUk9ZVTRnUFNCY0lscHZaRTVoVGx3aUxGeHVJQ0JhYjJSQ2FXZEpiblFnUFNCY0lscHZaRUpwWjBsdWRGd2lMRnh1SUNCYWIyUkNiMjlzWldGdUlEMGdYQ0phYjJSQ2IyOXNaV0Z1WENJc1hHNGdJRnB2WkVSaGRHVWdQU0JjSWxwdlpFUmhkR1ZjSWl4Y2JpQWdXbTlrVlc1a1pXWnBibVZrSUQwZ1hDSmFiMlJWYm1SbFptbHVaV1JjSWl4Y2JpQWdXbTlrVG5Wc2JDQTlJRndpV205a1RuVnNiRndpTEZ4dUlDQmFiMlJCYm5rZ1BTQmNJbHB2WkVGdWVWd2lMRnh1SUNCYWIyUlZibXR1YjNkdUlEMGdYQ0phYjJSVmJtdHViM2R1WENJc1hHNGdJRnB2WkU1bGRtVnlJRDBnWENKYWIyUk9aWFpsY2x3aUxGeHVJQ0JhYjJSV2IybGtJRDBnWENKYWIyUldiMmxrWENJc1hHNGdJRnB2WkVGeWNtRjVJRDBnWENKYWIyUkJjbkpoZVZ3aUxGeHVJQ0JhYjJSUFltcGxZM1FnUFNCY0lscHZaRTlpYW1WamRGd2lMRnh1SUNCYWIyUlZibWx2YmlBOUlGd2lXbTlrVlc1cGIyNWNJaXhjYmlBZ1dtOWtSR2x6WTNKcGJXbHVZWFJsWkZWdWFXOXVJRDBnWENKYWIyUkVhWE5qY21sdGFXNWhkR1ZrVlc1cGIyNWNJaXhjYmlBZ1dtOWtTVzUwWlhKelpXTjBhVzl1SUQwZ1hDSmFiMlJKYm5SbGNuTmxZM1JwYjI1Y0lpeGNiaUFnV205a1ZIVndiR1VnUFNCY0lscHZaRlIxY0d4bFhDSXNYRzRnSUZwdlpGSmxZMjl5WkNBOUlGd2lXbTlrVW1WamIzSmtYQ0lzWEc0Z0lGcHZaRTFoY0NBOUlGd2lXbTlrVFdGd1hDSXNYRzRnSUZwdlpGTmxkQ0E5SUZ3aVdtOWtVMlYwWENJc1hHNGdJRnB2WkVaMWJtTjBhVzl1SUQwZ1hDSmFiMlJHZFc1amRHbHZibHdpTEZ4dUlDQmFiMlJNWVhwNUlEMGdYQ0phYjJSTVlYcDVYQ0lzWEc0Z0lGcHZaRXhwZEdWeVlXd2dQU0JjSWxwdlpFeHBkR1Z5WVd4Y0lpeGNiaUFnV205a1JXNTFiU0E5SUZ3aVdtOWtSVzUxYlZ3aUxGeHVJQ0JhYjJSRlptWmxZM1J6SUQwZ1hDSmFiMlJGWm1abFkzUnpYQ0lzWEc0Z0lGcHZaRTVoZEdsMlpVVnVkVzBnUFNCY0lscHZaRTVoZEdsMlpVVnVkVzFjSWl4Y2JpQWdXbTlrVDNCMGFXOXVZV3dnUFNCY0lscHZaRTl3ZEdsdmJtRnNYQ0lzWEc0Z0lGcHZaRTUxYkd4aFlteGxJRDBnWENKYWIyUk9kV3hzWVdKc1pWd2lMRnh1SUNCYWIyUkVaV1poZFd4MElEMGdYQ0phYjJSRVpXWmhkV3gwWENJc1hHNGdJRnB2WkZCeWIyMXBjMlVnUFNCY0lscHZaRkJ5YjIxcGMyVmNJaXhjYm4xY2JtVjRjRzl5ZENCMGVYQmxJRnB2WkVacGNuTjBVR0Z5ZEhsVFkyaGxiV0ZVZVhCbGN5QTlYRzRnSUh3Z1dtOWtVM1J5YVc1blhHNGdJSHdnV205a1RuVnRZbVZ5WEc0Z0lId2dXbTlrVG1GT1hHNGdJSHdnV205a1FtbG5TVzUwWEc0Z0lId2dXbTlrUW05dmJHVmhibHh1SUNCOElGcHZaRVJoZEdWY2JpQWdmQ0JhYjJSVmJtUmxabWx1WldSY2JpQWdmQ0JhYjJST2RXeHNYRzRnSUh3Z1dtOWtRVzU1WEc0Z0lId2dXbTlrVlc1cmJtOTNibHh1SUNCOElGcHZaRTVsZG1WeVhHNGdJSHdnV205a1ZtOXBaRnh1SUNCOElGcHZaRUZ5Y21GNVBHRnVlU3dnWVc1NVBseHVJQ0I4SUZwdlpFOWlhbVZqZER4aGJua3NJR0Z1ZVN3Z1lXNTVMQ0JoYm5rc0lHRnVlVDVjYmlBZ2ZDQmFiMlJWYm1sdmJqeGhibmsrWEc0Z0lId2dXbTlrUkdselkzSnBiV2x1WVhSbFpGVnVhVzl1UEdGdWVTd2dZVzU1TENCaGJuaytYRzRnSUh3Z1dtOWtTVzUwWlhKelpXTjBhVzl1UEdGdWVTd2dZVzU1UGx4dUlDQjhJRnB2WkZSMWNHeGxQR0Z1ZVN3Z1lXNTVQbHh1SUNCOElGcHZaRkpsWTI5eVpEeGhibmtzSUdGdWVUNWNiaUFnZkNCYWIyUk5ZWEE4WVc1NVBseHVJQ0I4SUZwdlpGTmxkRHhoYm5rK1hHNGdJSHdnV205a1JuVnVZM1JwYjI0OFlXNTVMQ0JoYm5rK1hHNGdJSHdnV205a1RHRjZlVHhoYm5rK1hHNGdJSHdnV205a1RHbDBaWEpoYkR4aGJuaytYRzRnSUh3Z1dtOWtSVzUxYlR4aGJuaytYRzRnSUh3Z1dtOWtSV1ptWldOMGN6eGhibmtzSUdGdWVTd2dZVzU1UGx4dUlDQjhJRnB2WkU1aGRHbDJaVVZ1ZFcwOFlXNTVQbHh1SUNCOElGcHZaRTl3ZEdsdmJtRnNQR0Z1ZVQ1Y2JpQWdmQ0JhYjJST2RXeHNZV0pzWlR4aGJuaytYRzRnSUh3Z1dtOWtSR1ZtWVhWc2REeGhibmsrWEc0Z0lId2dXbTlrVUhKdmJXbHpaVHhoYm5rK08xeHVYRzVqYjI1emRDQnBibk4wWVc1alpVOW1WSGx3WlNBOUlEeFVJR1Y0ZEdWdVpITWdibVYzSUNndUxpNWhjbWR6T2lCaGJubGJYU2tnUFQ0Z1lXNTVQaWhjYmlBZ1kyeHpPaUJVTEZ4dUlDQndZWEpoYlhNNklGQmhjbUZ0WlhSbGNuTThXbTlrVkhsd1pVRnVlVnRjSW5KbFptbHVaVndpWFQ1Yk1WMGdQU0I3WEc0Z0lDQWdiV1Z6YzJGblpUb2dZRWx1Y0hWMElHNXZkQ0JwYm5OMFlXNWpaU0J2WmlBa2UyTnNjeTV1WVcxbGZXQXNYRzRnSUgxY2Jpa2dQVDRnWTNWemRHOXRQRWx1YzNSaGJtTmxWSGx3WlR4VVBqNG9LR1JoZEdFcElEMCtJR1JoZEdFZ2FXNXpkR0Z1WTJWdlppQmpiSE1zSUhCaGNtRnRjeXdnZEhKMVpTazdYRzVjYm1OdmJuTjBJSE4wY21sdVoxUjVjR1VnUFNCYWIyUlRkSEpwYm1jdVkzSmxZWFJsTzF4dVkyOXVjM1FnYm5WdFltVnlWSGx3WlNBOUlGcHZaRTUxYldKbGNpNWpjbVZoZEdVN1hHNWpiMjV6ZENCdVlXNVVlWEJsSUQwZ1dtOWtUbUZPTG1OeVpXRjBaVHRjYm1OdmJuTjBJR0pwWjBsdWRGUjVjR1VnUFNCYWIyUkNhV2RKYm5RdVkzSmxZWFJsTzF4dVkyOXVjM1FnWW05dmJHVmhibFI1Y0dVZ1BTQmFiMlJDYjI5c1pXRnVMbU55WldGMFpUdGNibU52Ym5OMElHUmhkR1ZVZVhCbElEMGdXbTlrUkdGMFpTNWpjbVZoZEdVN1hHNWpiMjV6ZENCMWJtUmxabWx1WldSVWVYQmxJRDBnV205a1ZXNWtaV1pwYm1Wa0xtTnlaV0YwWlR0Y2JtTnZibk4wSUc1MWJHeFVlWEJsSUQwZ1dtOWtUblZzYkM1amNtVmhkR1U3WEc1amIyNXpkQ0JoYm5sVWVYQmxJRDBnV205a1FXNTVMbU55WldGMFpUdGNibU52Ym5OMElIVnVhMjV2ZDI1VWVYQmxJRDBnV205a1ZXNXJibTkzYmk1amNtVmhkR1U3WEc1amIyNXpkQ0J1WlhabGNsUjVjR1VnUFNCYWIyUk9aWFpsY2k1amNtVmhkR1U3WEc1amIyNXpkQ0IyYjJsa1ZIbHdaU0E5SUZwdlpGWnZhV1F1WTNKbFlYUmxPMXh1WTI5dWMzUWdZWEp5WVhsVWVYQmxJRDBnV205a1FYSnlZWGt1WTNKbFlYUmxPMXh1WTI5dWMzUWdiMkpxWldOMFZIbHdaU0E5SUZwdlpFOWlhbVZqZEM1amNtVmhkR1U3WEc1amIyNXpkQ0J6ZEhKcFkzUlBZbXBsWTNSVWVYQmxJRDBnV205a1QySnFaV04wTG5OMGNtbGpkRU55WldGMFpUdGNibU52Ym5OMElIVnVhVzl1Vkhsd1pTQTlJRnB2WkZWdWFXOXVMbU55WldGMFpUdGNibU52Ym5OMElHUnBjMk55YVcxcGJtRjBaV1JWYm1sdmJsUjVjR1VnUFNCYWIyUkVhWE5qY21sdGFXNWhkR1ZrVlc1cGIyNHVZM0psWVhSbE8xeHVZMjl1YzNRZ2FXNTBaWEp6WldOMGFXOXVWSGx3WlNBOUlGcHZaRWx1ZEdWeWMyVmpkR2x2Ymk1amNtVmhkR1U3WEc1amIyNXpkQ0IwZFhCc1pWUjVjR1VnUFNCYWIyUlVkWEJzWlM1amNtVmhkR1U3WEc1amIyNXpkQ0J5WldOdmNtUlVlWEJsSUQwZ1dtOWtVbVZqYjNKa0xtTnlaV0YwWlR0Y2JtTnZibk4wSUcxaGNGUjVjR1VnUFNCYWIyUk5ZWEF1WTNKbFlYUmxPMXh1WTI5dWMzUWdjMlYwVkhsd1pTQTlJRnB2WkZObGRDNWpjbVZoZEdVN1hHNWpiMjV6ZENCbWRXNWpkR2x2YmxSNWNHVWdQU0JhYjJSR2RXNWpkR2x2Ymk1amNtVmhkR1U3WEc1amIyNXpkQ0JzWVhwNVZIbHdaU0E5SUZwdlpFeGhlbmt1WTNKbFlYUmxPMXh1WTI5dWMzUWdiR2wwWlhKaGJGUjVjR1VnUFNCYWIyUk1hWFJsY21Gc0xtTnlaV0YwWlR0Y2JtTnZibk4wSUdWdWRXMVVlWEJsSUQwZ1dtOWtSVzUxYlM1amNtVmhkR1U3WEc1amIyNXpkQ0J1WVhScGRtVkZiblZ0Vkhsd1pTQTlJRnB2WkU1aGRHbDJaVVZ1ZFcwdVkzSmxZWFJsTzF4dVkyOXVjM1FnY0hKdmJXbHpaVlI1Y0dVZ1BTQmFiMlJRY205dGFYTmxMbU55WldGMFpUdGNibU52Ym5OMElHVm1abVZqZEhOVWVYQmxJRDBnV205a1JXWm1aV04wY3k1amNtVmhkR1U3WEc1amIyNXpkQ0J2Y0hScGIyNWhiRlI1Y0dVZ1BTQmFiMlJQY0hScGIyNWhiQzVqY21WaGRHVTdYRzVqYjI1emRDQnVkV3hzWVdKc1pWUjVjR1VnUFNCYWIyUk9kV3hzWVdKc1pTNWpjbVZoZEdVN1hHNWpiMjV6ZENCd2NtVndjbTlqWlhOelZIbHdaU0E5SUZwdlpFVm1abVZqZEhNdVkzSmxZWFJsVjJsMGFGQnlaWEJ5YjJObGMzTTdYRzVqYjI1emRDQnZjM1J5YVc1bklEMGdLQ2tnUFQ0Z2MzUnlhVzVuVkhsd1pTZ3BMbTl3ZEdsdmJtRnNLQ2s3WEc1amIyNXpkQ0J2Ym5WdFltVnlJRDBnS0NrZ1BUNGdiblZ0WW1WeVZIbHdaU2dwTG05d2RHbHZibUZzS0NrN1hHNWpiMjV6ZENCdlltOXZiR1ZoYmlBOUlDZ3BJRDArSUdKdmIyeGxZVzVVZVhCbEtDa3ViM0IwYVc5dVlXd29LVHRjYmx4dVpYaHdiM0owSUh0Y2JpQWdZVzU1Vkhsd1pTQmhjeUJoYm5rc1hHNGdJR0Z5Y21GNVZIbHdaU0JoY3lCaGNuSmhlU3hjYmlBZ1ltbG5TVzUwVkhsd1pTQmhjeUJpYVdkcGJuUXNYRzRnSUdKdmIyeGxZVzVVZVhCbElHRnpJR0p2YjJ4bFlXNHNYRzRnSUdSaGRHVlVlWEJsSUdGeklHUmhkR1VzWEc0Z0lHUnBjMk55YVcxcGJtRjBaV1JWYm1sdmJsUjVjR1VnWVhNZ1pHbHpZM0pwYldsdVlYUmxaRlZ1YVc5dUxGeHVJQ0JsWm1abFkzUnpWSGx3WlNCaGN5QmxabVpsWTNRc1hHNGdJR1Z1ZFcxVWVYQmxJR0Z6SUdWdWRXMHNYRzRnSUdaMWJtTjBhVzl1Vkhsd1pTQmhjeUJtZFc1amRHbHZiaXhjYmlBZ2FXNXpkR0Z1WTJWUFpsUjVjR1VnWVhNZ2FXNXpkR0Z1WTJWdlppeGNiaUFnYVc1MFpYSnpaV04wYVc5dVZIbHdaU0JoY3lCcGJuUmxjbk5sWTNScGIyNHNYRzRnSUd4aGVubFVlWEJsSUdGeklHeGhlbmtzWEc0Z0lHeHBkR1Z5WVd4VWVYQmxJR0Z6SUd4cGRHVnlZV3dzWEc0Z0lHMWhjRlI1Y0dVZ1lYTWdiV0Z3TEZ4dUlDQnVZVzVVZVhCbElHRnpJRzVoYml4Y2JpQWdibUYwYVhabFJXNTFiVlI1Y0dVZ1lYTWdibUYwYVhabFJXNTFiU3hjYmlBZ2JtVjJaWEpVZVhCbElHRnpJRzVsZG1WeUxGeHVJQ0J1ZFd4c1ZIbHdaU0JoY3lCdWRXeHNMRnh1SUNCdWRXeHNZV0pzWlZSNWNHVWdZWE1nYm5Wc2JHRmliR1VzWEc0Z0lHNTFiV0psY2xSNWNHVWdZWE1nYm5WdFltVnlMRnh1SUNCdlltcGxZM1JVZVhCbElHRnpJRzlpYW1WamRDeGNiaUFnYjJKdmIyeGxZVzRzWEc0Z0lHOXVkVzFpWlhJc1hHNGdJRzl3ZEdsdmJtRnNWSGx3WlNCaGN5QnZjSFJwYjI1aGJDeGNiaUFnYjNOMGNtbHVaeXhjYmlBZ2NISmxjSEp2WTJWemMxUjVjR1VnWVhNZ2NISmxjSEp2WTJWemN5eGNiaUFnY0hKdmJXbHpaVlI1Y0dVZ1lYTWdjSEp2YldselpTeGNiaUFnY21WamIzSmtWSGx3WlNCaGN5QnlaV052Y21Rc1hHNGdJSE5sZEZSNWNHVWdZWE1nYzJWMExGeHVJQ0J6ZEhKcFkzUlBZbXBsWTNSVWVYQmxJR0Z6SUhOMGNtbGpkRTlpYW1WamRDeGNiaUFnYzNSeWFXNW5WSGx3WlNCaGN5QnpkSEpwYm1jc1hHNGdJR1ZtWm1WamRITlVlWEJsSUdGeklIUnlZVzV6Wm05eWJXVnlMRnh1SUNCMGRYQnNaVlI1Y0dVZ1lYTWdkSFZ3YkdVc1hHNGdJSFZ1WkdWbWFXNWxaRlI1Y0dVZ1lYTWdkVzVrWldacGJtVmtMRnh1SUNCMWJtbHZibFI1Y0dVZ1lYTWdkVzVwYjI0c1hHNGdJSFZ1YTI1dmQyNVVlWEJsSUdGeklIVnVhMjV2ZDI0c1hHNGdJSFp2YVdSVWVYQmxJR0Z6SUhadmFXUXNYRzU5TzF4dUlpd2lhVzF3YjNKMElIc2dWSGx3WlU5bUxDQlRZMmhsYldFc0lGcHZaRVZ5Y205eUlIMGdabkp2YlNCY0ltaDBkSEJ6T2k4dlpHVnVieTVzWVc1a0wzZ3ZlbTlrUUhZekxqRTNMakV3TDIxdlpDNTBjMXdpTzF4dVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElGTnBaenhKSUdWNGRHVnVaSE1nVTJOb1pXMWhQR0Z1ZVQ0Z2ZDQjFibVJsWm1sdVpXUXNJRThnWlhoMFpXNWtjeUJUWTJobGJXRThZVzU1UGlCOElIVnVaR1ZtYVc1bFpENGdlMXh1WEhSZmMybG5PaUIwY25WbExGeHVYSFJwYm5CMWREb2dTU3hjYmx4MGIzVjBjSFYwT2lCUExGeHVmVnh1Wlhod2IzSjBJR052Ym5OMElITnBaeUE5SUR4SklHVjRkR1Z1WkhNZ1UyTm9aVzFoUEdGdWVUNGdmQ0IxYm1SbFptbHVaV1FzSUU4Z1pYaDBaVzVrY3lCVFkyaGxiV0U4WVc1NVBpQjhJSFZ1WkdWbWFXNWxaRDRvYVRvZ1NTd2diem9nVHlrNklGTnBaenhKTENCUFBpQTlQaUFvZTF4dVhIUmZjMmxuT2lCMGNuVmxMRnh1WEhScGJuQjFkRG9nYVN4Y2JseDBiM1YwY0hWME9pQnZMRnh1ZlNrN1hHNWNiblI1Y0dVZ1RXRnJaVWhoYm1Sc1pYSnpUMkpxWldOMFBGUStJRDBnZTF4dVhIUmJTeUJwYmlCclpYbHZaaUJVWFRvZ1RXRnJaVWhoYm1Sc1pYSnpQRlJiUzEwK1hHNTlPMXh1WEc1MGVYQmxJRTFoYTJWSVlXNWtiR1Z5YzFOcFp6eFVJR1Y0ZEdWdVpITWdVMmxuUEdGdWVTd2dZVzU1UGo0Z1BWeHVYSFJVVzF3aWFXNXdkWFJjSWwwZ1pYaDBaVzVrY3lCMWJtUmxabWx1WldRZ1B5QW9YRzVjZEZ4MFZGdGNJbTkxZEhCMWRGd2lYU0JsZUhSbGJtUnpJSFZ1WkdWbWFXNWxaRnh1WEhSY2REOGdLQ2tnUFQ0Z1VISnZiV2x6WlR4MmIybGtQbHh1WEhSY2REb2dLQ2tnUFQ0Z1VISnZiV2x6WlR4VWVYQmxUMlk4VkZ0Y0ltOTFkSEIxZEZ3aVhUNCtYRzVjZENrZ09pQW9YRzVjZEZ4MFZGdGNJbTkxZEhCMWRGd2lYU0JsZUhSbGJtUnpJSFZ1WkdWbWFXNWxaRnh1WEhSY2REOGdLR2s2SUZSNWNHVlBaanhVVzF3aWFXNXdkWFJjSWwwK0tTQTlQaUJRY205dGFYTmxQSFp2YVdRK1hHNWNkRngwT2lBb2FUb2dWSGx3WlU5bVBGUmJYQ0pwYm5CMWRGd2lYVDRwSUQwK0lGQnliMjFwYzJVOFZIbHdaVTltUEZSYlhDSnZkWFJ3ZFhSY0lsMCtQbHh1WEhRcE8xeHVYRzVsZUhCdmNuUWdkSGx3WlNCTllXdGxTR0Z1Wkd4bGNuTThWRDRnUFZ4dVhIUlVJR1Y0ZEdWdVpITWdVMmxuUEdGdWVTd2dZVzU1UGx4dVhIUS9JRTFoYTJWSVlXNWtiR1Z5YzFOcFp6eFVQbHh1WEhRNklFMWhhMlZJWVc1a2JHVnljMDlpYW1WamREeFVQanRjYmx4dWRIbHdaU0JJWVc1a2JHVnlJRDBnS0hKbGNUb2dVbVZ4ZFdWemRDa2dQVDRnVUhKdmJXbHpaVHhTWlhOd2IyNXpaVDQ3WEc1amIyNXpkQ0J0WVd0bFUyVnlkbVZmSUQwZ1BGUStLRnh1WEhSaGNHazZJRlFzWEc1Y2RHaGhibVJzWlhKek9pQk5ZV3RsU0dGdVpHeGxjbk04VkQ0c1hHNWNkSEJoZEdnNklITjBjbWx1Wnl4Y2JseDBjR0YwYUhNNklFMWhjRHh6ZEhKcGJtY3NJRWhoYm1Sc1pYSStMRnh1S1NBOVBpQjdYRzVjZEdOdmJuTjBJR0VnUFNCaGNHa2dZWE1nWVc1NU8xeHVYSFJQWW1wbFkzUXVaVzUwY21sbGN5aG9ZVzVrYkdWeWN5a3VabTl5UldGamFDZ29XMnNzSUhaZEtTQTlQaUI3WEc1Y2RGeDBZMjl1YzNRZ2NDQTlJR0FrZTNCaGRHaDlMeVI3YTMxZ08xeHVYRzVjZEZ4MGFXWWdLSFI1Y0dWdlppQjJJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjYmx4MFhIUmNkSEJoZEdoekxuTmxkQ2h3TENCaGMzbHVZeUFvY21WeE9pQlNaWEYxWlhOMEtTQTlQaUI3WEc1Y2RGeDBYSFJjZEdsbUlDaGhXMnRkTG1sdWNIVjBLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyOXVjM1FnWW05a2VTQTlJR0YzWVdsMElISmxjUzVxYzI5dUtDazdYRzVjZEZ4MFhIUmNkRngwWTI5dWMzUWdjR0Z5YzJWa0lEMGdZVnRyWFM1cGJuQjFkQzV3WVhKelpTaGliMlI1S1R0Y2JseHVYSFJjZEZ4MFhIUmNkSEpsZEhWeWJpQjJLSEJoY25ObFpDazdYRzVjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhSeVpYUjFjbTRnZGlncE8xeHVYSFJjZEZ4MGZTazdYRzVjZEZ4MGZWeHVYRzVjZEZ4MGJXRnJaVk5sY25abFh5aGhXMnRkTENCMkxDQndMQ0J3WVhSb2N5azdYRzVjZEgwcE8xeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdiV0ZyWlZObGNuWmxJRDBnUEZRK0tGeHVYSFJoY0drNklGUXNYRzVjZEdoaGJtUnNaWEp6T2lCTllXdGxTR0Z1Wkd4bGNuTThWRDRzWEc1Y2RIQmhkR2c2SUhOMGNtbHVaeXhjYmlrZ1BUNGdlMXh1WEhSamIyNXpkQ0J3WVhSb2N5QTlJRzVsZHlCTllYQThjM1J5YVc1bkxDQklZVzVrYkdWeVBpZ3BPMXh1WEc1Y2RHMWhhMlZUWlhKMlpWOG9ZWEJwTENCb1lXNWtiR1Z5Y3l3Z2NHRjBhQ3dnY0dGMGFITXBPMXh1WEc1Y2RISmxkSFZ5YmlCaGMzbHVZeUFvY21WeE9pQlNaWEYxWlhOMEtTQTlQaUI3WEc1Y2RGeDBZMjl1YzNRZ2NHRjBhQ0E5SUc1bGR5QlZVa3dvY21WeExuVnliQ2t1Y0dGMGFHNWhiV1U3WEc1Y2RGeDBZMjl1YzNRZ2FHRnVaR3hsY2lBOUlIQmhkR2h6TG1kbGRDaHdZWFJvS1R0Y2JseHVYSFJjZEdsbUlDZ2hhR0Z1Wkd4bGNpa2dlMXh1WEhSY2RGeDBjbVYwZFhKdUlHNWxkeUJTWlhOd2IyNXpaU2h1ZFd4c0xDQjdYRzVjZEZ4MFhIUmNkSE4wWVhSMWN6b2dOREEwTEZ4dVhIUmNkRngwZlNrN1hHNWNkRngwZlZ4dVhHNWNkRngwWTI5dWMzUWdjbVZ6SUQwZ1lYZGhhWFFnYUdGdVpHeGxjaWh5WlhFcE8xeHVYRzVjZEZ4MGNtVjBkWEp1SUc1bGR5QlNaWE53YjI1elpTaHlaWE1nSmlZZ1NsTlBUaTV6ZEhKcGJtZHBabmtvY21WektTazdYRzVjZEgwN1hHNTlPMXh1WEc1MGVYQmxJRTFoYTJWRGJHbGxiblE4VkQ0Z1BWeHVYSFJVSUdWNGRHVnVaSE1nVTJsblBHRnVlU3dnWVc1NVBseHVYSFEvSUUxaGEyVkRiR2xsYm5SVGFXYzhWRDVjYmx4ME9pQk5ZV3RsUTJ4cFpXNTBUMkpxWldOMFBGUStPMXh1WEc1MGVYQmxJRTFoYTJWRGJHbGxiblJQWW1wbFkzUThWRDRnUFNCN1hHNWNkRnRMSUdsdUlHdGxlVzltSUZSZE9pQk5ZV3RsUTJ4cFpXNTBQRlJiUzEwK1hHNTlPMXh1WEc1MGVYQmxJRU5zYVdWdWRFaDBkSEJGY25KdmNpQTlJRkpsYzNCdmJuTmxPMXh1YVc1MFpYSm1ZV05sSUVOc2FXVnVkRlpoYkdsa1lYUnBiMjVGY25KdmNqeFVQaUI3WEc1Y2RHVnljbTl5T2lCYWIyUkZjbkp2Y2p4VVBpeGNibjFjYm1WNGNHOXlkQ0IwZVhCbElFTnNhV1Z1ZEZKbGMzQnZibk5sUEZRK0lEMGdWQ0I4SUVOc2FXVnVkRWgwZEhCRmNuSnZjaUI4SUVOc2FXVnVkRlpoYkdsa1lYUnBiMjVGY25KdmNqeFVQanRjYmx4dVpYaHdiM0owSUhSNWNHVWdUV0ZyWlVOc2FXVnVkRk5wWnp4VUlHVjRkR1Z1WkhNZ1UybG5QR0Z1ZVN3Z1lXNTVQajRnUFZ4dVhIUlVXMXdpYVc1d2RYUmNJbDBnWlhoMFpXNWtjeUIxYm1SbFptbHVaV1FnUHlBb1hHNWNkRngwVkZ0Y0ltOTFkSEIxZEZ3aVhTQmxlSFJsYm1SeklIVnVaR1ZtYVc1bFpGeHVYSFJjZEQ4Z0tDa2dQVDRnVUhKdmJXbHpaVHhEYkdsbGJuUlNaWE53YjI1elpUeDJiMmxrUGo1Y2JseDBYSFE2SUNncElEMCtJRkJ5YjIxcGMyVThRMnhwWlc1MFVtVnpjRzl1YzJVOFZIbHdaVTltUEZSYlhDSnZkWFJ3ZFhSY0lsMCtQajVjYmx4MEtTQTZJQ2hjYmx4MFhIUlVXMXdpYjNWMGNIVjBYQ0pkSUdWNGRHVnVaSE1nZFc1a1pXWnBibVZrWEc1Y2RGeDBQeUFvYVRvZ1ZIbHdaVTltUEZSYlhDSnBibkIxZEZ3aVhUNHBJRDArSUZCeWIyMXBjMlU4UTJ4cFpXNTBVbVZ6Y0c5dWMyVThkbTlwWkQ0K1hHNWNkRngwT2lBb2FUb2dWSGx3WlU5bVBGUmJYQ0pwYm5CMWRGd2lYVDRwSUQwK0lGQnliMjFwYzJVOFEyeHBaVzUwVW1WemNHOXVjMlU4Vkhsd1pVOW1QRlJiWENKdmRYUndkWFJjSWwwK1BqNWNibHgwS1R0Y2JseHVaWGh3YjNKMElHTnZibk4wSUcxaGEyVkRiR2xsYm5RZ1BTQThWRDRvWVhCcE9pQlVMQ0J3WVhSb09pQnpkSEpwYm1jcE9pQk5ZV3RsUTJ4cFpXNTBQRlErSUQwK0lIdGNibHgwY21WMGRYSnVJRTlpYW1WamRDNW1jbTl0Ulc1MGNtbGxjeWhQWW1wbFkzUXVaVzUwY21sbGN5aGhjR2twTG0xaGNDZ29XMnNzSUhaZEtTQTlQaUI3WEc1Y2RGeDBZMjl1YzNRZ2NDQTlJR0FrZTNCaGRHaDlMeVI3YTMxZ0lHRnpJSE4wY21sdVp6dGNibHh1WEhSY2RHbG1JQ2hjSWw5emFXZGNJaUJwYmlCMktTQjdYRzVjZEZ4MFhIUmpiMjV6ZENCMlh5QTlJSFlnWVhNZ1UybG5QRk5qYUdWdFlUeGhibmsrSUh3Z2RXNWtaV1pwYm1Wa0xDQlRZMmhsYldFOFlXNTVQaUI4SUhWdVpHVm1hVzVsWkQ0N1hHNWNkRngwWEhSeVpYUjFjbTRnVzJzc0lHRnplVzVqSUNoaWIyUjVPaUJoYm5rcElEMCtJSHRjYmx4MFhIUmNkRngwWTI5dWMzUWdZaUE5SUdKdlpIa2dQeUJLVTA5T0xuTjBjbWx1WjJsbWVTaGliMlI1S1NBNklHNTFiR3c3WEc1Y2RGeDBYSFJjZEdOdmJuTjBJSEpsSUQwZ1lYZGhhWFFnWm1WMFkyZ29jQ3dnZXlCaWIyUjVPaUJpTENCdFpYUm9iMlE2SUZ3aVVFOVRWRndpSUgwcE8xeHVYRzVjZEZ4MFhIUmNkR2xtSUNnaGNtVXViMnNwSUh0Y2JseDBYSFJjZEZ4MFhIUnlaWFIxY200Z2NtVTdYRzVjZEZ4MFhIUmNkSDFjYmx4dVhIUmNkRngwWEhScFppQW9kbDh1YjNWMGNIVjBLU0I3WEc1Y2RGeDBYSFJjZEZ4MFkyOXVjM1FnY21WeklEMGdZWGRoYVhRZ2RsOHViM1YwY0hWMExuTmhabVZRWVhKelpVRnplVzVqS0dGM1lXbDBJSEpsTG1wemIyNG9LU2s3WEc1Y2RGeDBYSFJjZEZ4MGFXWWdLQ0Z5WlhNdWMzVmpZMlZ6Y3lrZ2UxeHVYSFJjZEZ4MFhIUmNkRngwY21WMGRYSnVJSHRjYmx4MFhIUmNkRngwWEhSY2RGeDBaWEp5YjNJNklISmxjeTVsY25KdmNpeGNibHgwWEhSY2RGeDBYSFJjZEgxY2JseDBYSFJjZEZ4MFhIUjlYRzVjYmx4MFhIUmNkRngwWEhSeVpYUjFjbTRnY21WekxtUmhkR0U3WEc1Y2RGeDBYSFJjZEgxY2JseDBYSFJjZEgxZFhHNWNkRngwZlZ4dVhHNWNkRngwY21WMGRYSnVJRnRyTENCdFlXdGxRMnhwWlc1MEtIWXNJSEFwWFR0Y2JseDBmU2twSUdGeklFMWhhMlZEYkdsbGJuUThWRDQ3WEc1OU8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTklkSFJ3UlhKeWIzSWdQU0FvZGpvZ1lXNTVLVG9nZGlCcGN5QkRiR2xsYm5SSWRIUndSWEp5YjNJZ1BUNGdlMXh1WEhSeVpYUjFjbTRnZGlCcGJuTjBZVzVqWlc5bUlGSmxjM0J2Ym5ObE8xeHVmVnh1WEc1bGVIQnZjblFnWTI5dWMzUWdhWE5XWVd4cFpHRjBhVzl1UlhKeWIzSWdQU0FvZGpvZ1lXNTVLVG9nZGlCcGN5QkRiR2xsYm5SV1lXeHBaR0YwYVc5dVJYSnliM0k4WVc1NVBpQTlQaUI3WEc1Y2RISmxkSFZ5YmlBb2RIbHdaVzltSUhZZ1BUMDlJRndpYjJKcVpXTjBYQ0lnSmlZZ2RpNWxjbkp2Y2lCcGJuTjBZVzVqWlc5bUlGcHZaRVZ5Y205eUtUdGNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJR0Z6YzJWeWRDQTlJRHhVUGloeVpYTTZJRU5zYVdWdWRGSmxjM0J2Ym5ObFBGUStLVG9nVkNBOVBpQjdYRzVjZEdsbUlDaHBjMGgwZEhCRmNuSnZjaWh5WlhNcElIeDhJR2x6Vm1Gc2FXUmhkR2x2YmtWeWNtOXlLSEpsY3lrcElIdGNibHgwWEhSMGFISnZkeUJ5WlhNN1hHNWNkSDFjYmx4dVhIUnlaWFIxY200Z2NtVnpPMXh1ZlZ4dUlpd2lMeTh2SUR4eVpXWmxjbVZ1WTJVZ2JHbGlQVndpWkc5dFhDSWdMejVjYmx4dWRIbHdaU0JDWVhOcFkxQnliM0JsY25ScFpYTThWRDRnUFNCN1hHNWNkRnRMSUdsdUlHdGxlVzltSUZRZ1lYTWdWRnRMWFNCbGVIUmxibVJ6SUNoemRISnBibWNnZkNCdWRXMWlaWElnZkNCaWIyOXNaV0Z1S1NBL0lFc2dPaUJ1WlhabGNsMDZJRlJiUzExY2JuMWNibHh1ZEhsd1pTQkRhR2xzWkNBOUlFNXZaR1VnZkNCemRISnBibWNnZkNCdWRXeHNPMXh1ZEhsd1pTQlRkMlZzVDNCMGN6eFVJR1Y0ZEdWdVpITWdhMlY1YjJZZ1NGUk5URVZzWlcxbGJuUlVZV2RPWVcxbFRXRndQaUE5WEc1Y2RGQmhjblJwWVd3OFFtRnphV05RY205d1pYSjBhV1Z6UEVoVVRVeEZiR1Z0Wlc1MFZHRm5UbUZ0WlUxaGNGdFVYVDQrSUNZZ2UxeHVYSFJjZEc5dU9pQlFZWEowYVdGc1BIdGNibHgwWEhSY2RGdEZkaUJwYmlCclpYbHZaaUJJVkUxTVJXeGxiV1Z1ZEVWMlpXNTBUV0Z3WFRwY2JseDBYSFJjZEZ4MEtIUm9hWE02SUVoVVRVeEZiR1Z0Wlc1MExDQmxkam9nU0ZSTlRFVnNaVzFsYm5SRmRtVnVkRTFoY0Z0RmRsMHBJRDArSUdGdWVWeHVYSFJjZEgwK0xGeHVYSFJjZEdOb2FXeGtjbVZ1T2lBb1RtOWtaU0I4SUhOMGNtbHVaeWxiWFNCOElHNTFiR3dzWEc1Y2RGeDBZWFIwY21saWRYUmxjem9nVW1WamIzSmtQSE4wY21sdVp5d2djM1J5YVc1bklId2dZbTl2YkdWaGJpQjhJRzUxYldKbGNqNHNYRzVjZEZ4MFkyeGhjM05PWVcxbE9pQnpkSEpwYm1jc1hHNWNkSDA3WEc1Y2JtbHVkR1Z5Wm1GalpTQlRkMlZzSUh0Y2JseDBQRlFnWlhoMFpXNWtjeUJyWlhsdlppQklWRTFNUld4bGJXVnVkRlJoWjA1aGJXVk5ZWEErS0Z4dVhIUmNkSFJoWnpvZ1ZDeGNibHgwWEhSdmNIUnpQem9nVUdGeWRHbGhiRHhUZDJWc1QzQjBjenhVUGo0c1hHNWNkQ2s2SUVoVVRVeEZiR1Z0Wlc1MFZHRm5UbUZ0WlUxaGNGdFVYVHRjYmx4dVhIUThWQ0JsZUhSbGJtUnpJR3RsZVc5bUlFaFVUVXhGYkdWdFpXNTBWR0ZuVG1GdFpVMWhjRDRvWEc1Y2RGeDBkR0ZuT2lCVUxGeHVYSFJjZEdOb2FXeGtjbVZ1UHpvZ1EyaHBiR1JiWFN4Y2JseDBLVG9nU0ZSTlRFVnNaVzFsYm5SVVlXZE9ZVzFsVFdGd1cxUmRPMXh1WEc1Y2REeFVJR1Y0ZEdWdVpITWdhMlY1YjJZZ1NGUk5URVZzWlcxbGJuUlVZV2RPWVcxbFRXRndQaWhjYmx4MFhIUjBZV2M2SUZRc1hHNWNkRngwWTJocGJHUS9PaUJEYUdsc1pDeGNibHgwS1RvZ1NGUk5URVZzWlcxbGJuUlVZV2RPWVcxbFRXRndXMVJkTzF4dVhHNWNkRHhVSUdWNGRHVnVaSE1nYTJWNWIyWWdTRlJOVEVWc1pXMWxiblJVWVdkT1lXMWxUV0Z3UGloY2JseDBYSFIwWVdjNklGUXNYRzVjZEZ4MGIzQjBjejg2SUZCaGNuUnBZV3c4VDIxcGREeFRkMlZzVDNCMGN6eFVQaXdnWENKamFHbHNaSEpsYmx3aVBqNHNYRzVjZEZ4MFkyaHBiR1J5Wlc0L09pQkRhR2xzWkZ0ZExGeHVYSFFwT2lCSVZFMU1SV3hsYldWdWRGUmhaMDVoYldWTllYQmJWRjA3WEc1Y2JseDBQRlFnWlhoMFpXNWtjeUJyWlhsdlppQklWRTFNUld4bGJXVnVkRlJoWjA1aGJXVk5ZWEErS0Z4dVhIUmNkSFJoWnpvZ1ZDeGNibHgwWEhSdmNIUnpQem9nVUdGeWRHbGhiRHhQYldsMFBGTjNaV3hQY0hSelBGUStMQ0JjSW1Ob2FXeGtjbVZ1WENJK1BpeGNibHgwWEhSamFHbHNaRDg2SUVOb2FXeGtMRnh1WEhRcE9pQklWRTFNUld4bGJXVnVkRlJoWjA1aGJXVk5ZWEJiVkYwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnpkMlZzT2lCVGQyVnNJRDBnUEZRZ1pYaDBaVzVrY3lCclpYbHZaaUJJVkUxTVJXeGxiV1Z1ZEZSaFowNWhiV1ZOWVhBK0tGeHVYSFIwWVdjNklGUXNYRzVjZEc5d2RITS9PaUJRWVhKMGFXRnNQRk4zWld4UGNIUnpQRlErUGlCOElFTm9hV3hrSUh3Z1EyaHBiR1JiWFN4Y2JseDBZMmhwYkdSeVpXNC9PaUJEYUdsc1pDQjhJRU5vYVd4a1cxMHNYRzRwT2lCSVZFMU1SV3hsYldWdWRGUmhaMDVoYldWTllYQmJWRjBnUFQ0Z2UxeHVYSFJzWlhRZ2J6b2dVR0Z5ZEdsaGJEeFRkMlZzVDNCMGN6eFVQajRnZkNCdWRXeHNJRDBnYm5Wc2JEdGNibHgwYVdZZ0tHTm9hV3hrY21WdUtTQjdYRzVjZEZ4MGJHVjBJR002SUVOb2FXeGtXMTBnZkNCdWRXeHNPMXh1WEhSY2RHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtHTm9hV3hrY21WdUtTa2dlMXh1WEhSY2RGeDBZeUE5SUdOb2FXeGtjbVZ1TzF4dVhIUmNkSDBnWld4elpTQjdYRzVjZEZ4MFhIUmpJRDBnVzJOb2FXeGtjbVZ1WFR0Y2JseDBYSFI5WEc1Y2JseDBYSFJ2SUQwZ2UxeHVYSFJjZEZ4MExpNHVLRzl3ZEhNZ1lYTWdZVzU1S1N4Y2JseDBYSFJjZEdOb2FXeGtjbVZ1T2lCakxGeHVYSFJjZEgwN1hHNWNkSDBnWld4elpTQnBaaUFvYjNCMGN5a2dlMXh1WEhSY2RHbG1JQ2hCY25KaGVTNXBjMEZ5Y21GNUtHOXdkSE1wS1NCN1hHNWNkRngwWEhSdklEMGdleUJqYUdsc1pISmxiam9nYjNCMGN5QjlJR0Z6SUdGdWVUdGNibHgwWEhSOUlHVnNjMlVnYVdZZ0tIUjVjR1Z2WmlCdmNIUnpJRDA5UFNCY0luTjBjbWx1WjF3aUlIeDhJRzl3ZEhNZ2FXNXpkR0Z1WTJWdlppQk9iMlJsS1NCN1hHNWNkRngwWEhSdklEMGdleUJqYUdsc1pISmxiam9nVzI5d2RITmRJSDBnWVhNZ1lXNTVPMXh1WEhSY2RIMGdaV3h6WlNCN1hHNWNkRngwWEhSdklEMGdiM0IwY3p0Y2JseDBYSFI5WEc1Y2RIMWNibHgwYkdWMElHOWZJRDBnYnlFN1hHNWNkR2xtSUNodlh5NWphR2xzWkhKbGJpa2dlMXh1WEhSY2RHOWZMbU5vYVd4a2NtVnVJRDBnYjE4dVkyaHBiR1J5Wlc0dVptbHNkR1Z5S0dNZ1BUNGdJU0ZqS1NCaGN5Qmhibms3WEc1Y2RIMWNibHh1WEhSeVpYUjFjbTRnYzNkbGJGOG9kR0ZuTENCdktUdGNibjA3WEc1Y2JtTnZibk4wSUhOM1pXeGZJRDBnUEZRZ1pYaDBaVzVrY3lCclpYbHZaaUJJVkUxTVJXeGxiV1Z1ZEZSaFowNWhiV1ZOWVhBK0tGeHVYSFIwWVdjNklGUXNYRzVjZEc5d2RITTZJRkJoY25ScFlXdzhVM2RsYkU5d2RITThWRDQrSUh3Z2JuVnNiRnh1S1RvZ1NGUk5URVZzWlcxbGJuUlVZV2RPWVcxbFRXRndXMVJkSUQwK0lIdGNibHgwWTI5dWMzUWdaV3dnUFNCa2IyTjFiV1Z1ZEM1amNtVmhkR1ZGYkdWdFpXNTBLSFJoWnlrZ1lYTWdkVzVyYm05M2JpQmhjeUJJVkUxTVJXeGxiV1Z1ZEZSaFowNWhiV1ZOWVhCYlZGMDdYRzVjZEdsbUlDaHZjSFJ6S1NCN1hHNWNkRngwWTI5dWMzUWdleUJqYUdsc1pISmxiaXdnYjI0c0lHRjBkSEpwWW5WMFpYTXNJQzR1TG5KbGMzUWdmU0E5SUc5d2RITTdYRzVjYmx4MFhIUnBaaUFvWTJocGJHUnlaVzRwSUh0Y2JseDBYSFJjZEdWc0xtRndjR1Z1WkNndUxpNWphR2xzWkhKbGJpazdYRzVjZEZ4MGZWeHVYSFJjZEdsbUlDaHZiaWtnZTF4dVhIUmNkRngwVDJKcVpXTjBMbVZ1ZEhKcFpYTW9iMjRwTG1admNrVmhZMmdvS0Z0bGRpd2dhRjBwSUQwK0lIdGNibHgwWEhSY2RGeDBaV3d1WVdSa1JYWmxiblJNYVhOMFpXNWxjaWhsZGl3Z2FDQmhjeUJoYm5rcE8xeHVYSFJjZEZ4MGZTazdYRzVjZEZ4MGZWeHVYSFJjZEdsbUlDaGhkSFJ5YVdKMWRHVnpLU0I3WEc1Y2RGeDBYSFJQWW1wbFkzUXVaVzUwY21sbGN5aGhkSFJ5YVdKMWRHVnpLUzV0WVhBb0tGdHJMQ0IyWFNrZ1BUNGdlMXh1WEhSY2RGeDBYSFJsYkM1elpYUkJkSFJ5YVdKMWRHVW9heXdnZGlCaGN5QjFibXR1YjNkdUlHRnpJSE4wY21sdVp5azdYRzVjZEZ4MFhIUjlLVHRjYmx4MFhIUjlYRzVjYmx4MFhIUlBZbXBsWTNRdVlYTnphV2R1S0dWc0xDQnlaWE4wS1R0Y2JseDBmVnh1WEc1Y2RISmxkSFZ5YmlCbGJEdGNibjA3WEc0aUxDSnBiWEJ2Y25RZ2V5QnZZbXBsWTNRc0lHRnljbUY1TENCemRISnBibWNzSUZSNWNHVlBaaXdnYm1GMGFYWmxSVzUxYlN3Z2RXNXBiMjRnZlNCbWNtOXRJRndpTGk0dlkyOXRiVzl1TDJSbGNITXZlbTlrTG5SelhDSTdYRzVwYlhCdmNuUWdleUJ6YVdjZ2ZTQm1jbTl0SUZ3aUxpNHZZMjl0Ylc5dUwyUmxjSE12ZVdGNWNHa3VkSE5jSWp0Y2JseHVaWGh3YjNKMElHTnZibk4wSUVkbGRFTnZibVpwWjNWeVlYUnBiMjVTWlhOd2IyNXpaVll4SUQwZ2IySnFaV04wS0h0Y2JseDBhRzl6ZEhNNklHRnljbUY1S0hOMGNtbHVaeWdwS1N4Y2JseDBjMlZ5ZG1salpYTTZJR0Z5Y21GNUtHOWlhbVZqZENoN1hHNWNkRngwYm1GdFpUb2djM1J5YVc1bktDa3NYRzVjZEZ4MGNIVmliR2xqVlhKc09pQnpkSEpwYm1jb0tTNXZjSFJwYjI1aGJDZ3BMRnh1WEhSOUtTa3NYRzU5S1R0Y2JtVjRjRzl5ZENCMGVYQmxJRWRsZEVOdmJtWnBaM1Z5WVhScGIyNVNaWE53YjI1elpWWXhJRDBnVkhsd1pVOW1QSFI1Y0dWdlppQkhaWFJEYjI1bWFXZDFjbUYwYVc5dVVtVnpjRzl1YzJWV01UNDdYRzVjYm1WNGNHOXlkQ0JsYm5WdElGTjBZWFIxYzFZeElIdGNibHgwUkc5M2JpQTlJRndpWkc5M2Jsd2lMRnh1WEhSVmNDQTlJRndpZFhCY0lpeGNibjFjYm1WNGNHOXlkQ0JqYjI1emRDQlRkR0YwZFhOU1pYTndiMjV6WlZZeElEMGdkVzVwYjI0b1cxeHVYSFJ1WVhScGRtVkZiblZ0S0ZOMFlYUjFjMVl4S1N4Y2JseDBiMkpxWldOMEtIc2daWEp5YjNJNklITjBjbWx1WnlncElIMHBMRnh1WFNrN1hHNWxlSEJ2Y25RZ2RIbHdaU0JUZEdGMGRYTlNaWE53YjI1elpWWXhJRDBnVkhsd1pVOW1QSFI1Y0dWdlppQlRkR0YwZFhOU1pYTndiMjV6WlZZeFBqdGNibHh1Wlhod2IzSjBJR052Ym5OMElHRndhU0E5SUh0Y2JseDBkakU2SUh0Y2JseDBYSFJqYjI1bWFXZDFjbUYwYVc5dU9pQjdYRzVjZEZ4MFhIUm5aWFE2SUhOcFp5aDFibVJsWm1sdVpXUXNJRWRsZEVOdmJtWnBaM1Z5WVhScGIyNVNaWE53YjI1elpWWXhLU3hjYmx4MFhIUjlMRnh1WEhSY2RHaHZjM1E2SUh0Y2JseDBYSFJjZEdkbGRGTjBZWFIxY3pvZ2MybG5LSE4wY21sdVp5Z3BMQ0JUZEdGMGRYTlNaWE53YjI1elpWWXhLU3hjYmx4MFhIUjlMRnh1WEhSY2RITmxjblpwWTJVNklIdGNibHgwWEhSY2RHZGxkRk4wWVhSMWN6b2djMmxuS0hOMGNtbHVaeWdwTENCVGRHRjBkWE5TWlhOd2IyNXpaVll4S1N4Y2JseDBYSFI5TEZ4dVhIUjlMRnh1ZlR0Y2JpSXNJbWx0Y0c5eWRDQjdJRzFoYTJWRGJHbGxiblFzSUdGemMyVnlkQ3dnUTJ4cFpXNTBVbVZ6Y0c5dWMyVXNJR2x6U0hSMGNFVnljbTl5TENCcGMxWmhiR2xrWVhScGIyNUZjbkp2Y2lCOUlHWnliMjBnWENJdUxpOWpiMjF0YjI0dlpHVndjeTk1WVhsd2FTNTBjMXdpTzF4dWFXMXdiM0owSUhzZ2MzZGxiQ0I5SUdaeWIyMGdYQ0l1TDJSbGNITXZjM2RsYkM1MGMxd2lPMXh1WEc1cGJYQnZjblFnZXlCaGNHa3NJRk4wWVhSMWMxSmxjM0J2Ym5ObFZqRWdmU0JtY205dElGd2lMaTR2WTI5dGJXOXVMMkZ3YVM1MGMxd2lPMXh1WEc1amIyNXpkQ0JqYkdsbGJuUWdQU0FvS0NrZ1BUNGdlMXh1WEhSamIyNXpkQ0JzSUQwZ2QybHVaRzkzTG14dlkyRjBhVzl1TzF4dVhIUmpiMjV6ZENCMWNtd2dQU0JnSkh0c0xuQnliM1J2WTI5c2ZTOHZKSHRzTG1odmMzUjlMMkZ3YVdBN1hHNWNkSEpsZEhWeWJpQnRZV3RsUTJ4cFpXNTBLR0Z3YVN3Z2RYSnNLVHRjYm4wcEtDazdYRzVjYm1OdmJuTjBJRk5sY25acFkyVkpibVp2SUQwZ0tGeHVYSFJ1WVcxbE9pQnpkSEpwYm1jc1hHNWNkR2RsZEZOMFlYUjFjem9nS0NrZ1BUNGdVSEp2YldselpUeERiR2xsYm5SU1pYTndiMjV6WlR4VGRHRjBkWE5TWlhOd2IyNXpaVll4UGo0c1hHNWNkSEIxWW14cFkxVnliRDg2SUhOMGNtbHVaeXhjYmlrZ1BUNGdlMXh1WEhSamIyNXpkQ0J1WVcxbFJXd2dQU0J6ZDJWc0tGd2laR2wyWENJc0lIc2dZMnhoYzNOT1lXMWxPaUJjSW01aGJXVmNJaUI5TENCdVlXMWxLVHRjYmx4MFkyOXVjM1FnYzNSaGRIVnpJRDBnYzNkbGJDaGNJbVJwZGx3aUxDQjdJR05zWVhOelRtRnRaVG9nWENKemRHRjBkWE5jSWlCOUxDQmNJbXh2WVdScGJtZGNJaWs3WEc1Y2RHTnZibk4wSUdkdklEMGdjSFZpYkdsalZYSnNJRDhnYzNkbGJDaGNJbUZjSWl3Z2UxeHVYSFJjZEdOc1lYTnpUbUZ0WlRvZ1hDSm5iMXdpTEZ4dVhIUmNkR2h5WldZNklIQjFZbXhwWTFWeWJDeGNibHgwWEhSMFlYSm5aWFE2SUZ3aVgySnNZVzVyWENJc1hHNWNkRngwYjI0NklIc2diVzkxYzJWbGJuUmxjam9nS0dVcElEMCtJR1V1Y0hKbGRtVnVkRVJsWm1GMWJIUW9LU0I5TEZ4dVhIUjlMQ0JjSWtkdlhDSXBJRG9nYm5Wc2JEdGNibHh1WEhSamIyNXpkQ0JpZFhSMGIyNGdQU0J6ZDJWc0tGd2lZblYwZEc5dVhDSXNJSHRjYmx4MFhIUmpiR0Z6YzA1aGJXVTZJRndpYzNSaGRIVnpMV0oxZEhSdmJsd2lMRnh1WEhSY2RIUmhZa2x1WkdWNE9pQXdMRnh1WEhSOUxDQmJibUZ0WlVWc0xDQnpkR0YwZFhOZEtUdGNibHh1WEhSamIyNXpkQ0J5WldaeVpYTm9JRDBnWVhONWJtTWdLQ2tnUFQ0Z2UxeHVYSFJjZEdKMWRIUnZiaTV5WlcxdmRtVkZkbVZ1ZEV4cGMzUmxibVZ5S0Z3aVkyeHBZMnRjSWl3Z2NtVm1jbVZ6YUNrN1hHNWNkRngwWW5WMGRHOXVMbVJwYzJGaWJHVmtJRDBnZEhKMVpUdGNibHgwWEhSemRHRjBkWE11ZEdWNGRFTnZiblJsYm5RZ1BTQmNJbXh2WVdScGJtZGNJanRjYmx4MFhIUmlkWFIwYjI0dVkyeGhjM05PWVcxbElEMGdYQ0p6ZEdGMGRYTXRZblYwZEc5dVhDSTdYRzVjYmx4MFhIUmpiMjV6ZENCemRDQTlJR0YzWVdsMElHZGxkRk4wWVhSMWN5Z3BPMXh1WEhSY2RHbG1JQ2hwYzBoMGRIQkZjbkp2Y2loemRDa3BJSHRjYmx4MFhIUmNkSE4wWVhSMWN5NTBaWGgwUTI5dWRHVnVkQ0E5SUZ3aVpYSnliM0pjSWp0Y2JseDBYSFJjZEdKMWRIUnZiaTVqYkdGemMweHBjM1F1WVdSa0tGd2laWEp5YjNKY0lpazdYRzVjZEZ4MGZTQmxiSE5sSUdsbUlDaHBjMVpoYkdsa1lYUnBiMjVGY25KdmNpaHpkQ2twSUh0Y2JseDBYSFJjZEhOMFlYUjFjeTUwWlhoMFEyOXVkR1Z1ZENBOUlITjBMbVZ5Y205eUxuUnZVM1J5YVc1bktDazdYRzVjZEZ4MFhIUmlkWFIwYjI0dVkyeGhjM05NYVhOMExtRmtaQ2hjSW1WeWNtOXlYQ0lwTzF4dVhIUmNkSDBnWld4elpTQnBaaUFvZEhsd1pXOW1JSE4wSUQwOVBTQmNJbTlpYW1WamRGd2lLU0I3WEc1Y2RGeDBYSFJ6ZEdGMGRYTXVkR1Y0ZEVOdmJuUmxiblFnUFNCemRDNWxjbkp2Y2p0Y2JseDBYSFJjZEdKMWRIUnZiaTVqYkdGemMweHBjM1F1WVdSa0tGd2laWEp5YjNKY0lpazdYRzVjZEZ4MGZTQmxiSE5sSUh0Y2JseDBYSFJjZEhOMFlYUjFjeTUwWlhoMFEyOXVkR1Z1ZENBOUlITjBPMXh1WEhSY2RGeDBZblYwZEc5dUxtTnNZWE56VEdsemRDNWhaR1FvYzNRcE8xeHVYSFJjZEgxY2JseHVYSFJjZEdKMWRIUnZiaTVoWkdSRmRtVnVkRXhwYzNSbGJtVnlLRndpWTJ4cFkydGNJaXdnY21WbWNtVnphQ2s3WEc1Y2RGeDBZblYwZEc5dUxtUnBjMkZpYkdWa0lEMGdabUZzYzJVN1hHNWNkSDA3WEc1Y2JseDBjbVZtY21WemFDZ3BPMXh1WEc1Y2RISmxkSFZ5YmlCemQyVnNLRndpWkdsMlhDSXNJSHNnWTJ4aGMzTk9ZVzFsT2lCY0luTjBZWFIxY3kxamIyNTBZV2x1WlhKY0lpd2dmU3dnVzJKMWRIUnZiaXdnWjI5ZEtUdGNibjFjYmx4dVkyOXVjM1FnYldGcGJpQTlJR0Z6ZVc1aklDZ3BJRDArSUh0Y2JseDBZMjl1YzNRZ2NtVnpjQ0E5SUdGM1lXbDBJR05zYVdWdWRDNTJNUzVqYjI1bWFXZDFjbUYwYVc5dUxtZGxkQ2dwTG5Sb1pXNG9ZWE56WlhKMEtUdGNibHh1WEhSamIyNXpkQ0JvYjNOMGMxTmxZM1JwYjI0Z1BTQnpkMlZzS0Z3aWMyVmpkR2x2Ymx3aUxDQmJYRzVjZEZ4MGMzZGxiQ2hjSW1neFhDSXNJRndpU0c5emRITmNJaWtzWEc1Y2RGeDBjM2RsYkNoY2JseDBYSFJjZEZ3aVpHbDJYQ0lzWEc1Y2RGeDBYSFI3SUdOc1lYTnpUbUZ0WlRvZ1hDSm9iM04wYzF3aUlIMHNYRzVjZEZ4MFhIUnlaWE53TG1odmMzUnpMbTFoY0Nob0lEMCtJRk5sY25acFkyVkpibVp2S0Z4dVhIUmNkRngwWEhSb0xGeHVYSFJjZEZ4MFhIUW9LU0E5UGlCamJHbGxiblF1ZGpFdWFHOXpkQzVuWlhSVGRHRjBkWE1vYUNrc1hHNWNkRngwWEhRcEtWeHVYSFJjZENrc1hHNWNkRjBwTzF4dVhHNWNkR052Ym5OMElITmxjblpwWTJWelUyVmpkR2x2YmlBOUlITjNaV3dvWENKelpXTjBhVzl1WENJc0lGdGNibHgwWEhSemQyVnNLRndpYURGY0lpd2dYQ0pUWlhKMmFXTmxjMXdpS1N4Y2JseDBYSFJ6ZDJWc0tGd2laR2wyWENJc0lIc2dZMnhoYzNOT1lXMWxPaUJjSW5ObGNuWnBZMlZ6WENJc0lIMHNJSEpsYzNBdWMyVnlkbWxqWlhNdWJXRndLSE5wSUQwK0lGTmxjblpwWTJWSmJtWnZLRnh1WEhSY2RGeDBjMmt1Ym1GdFpTeGNibHgwWEhSY2RDZ3BJRDArSUdOc2FXVnVkQzUyTVM1elpYSjJhV05sTG1kbGRGTjBZWFIxY3loemFTNXVZVzFsS1N4Y2JseDBYSFJjZEhOcExuQjFZbXhwWTFWeWJDeGNibHgwWEhRcEtTa3NYRzVjZEYwcE8xeHVYRzVjZEdSdlkzVnRaVzUwTG1KdlpIa3VjbVZ3YkdGalpVTm9hV3hrY21WdUtHaHZjM1J6VTJWamRHbHZiaXdnYzJWeWRtbGpaWE5UWldOMGFXOXVLVHRjYm4wN1hHNWNibTFoYVc0b0tUdGNiaUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCVHl4SlFVRlZMRWxCUVVrc1FVRnhSbkJDT3p0SlFTOUZVU3hUUVVGVExGZEJRVmNzUTBGQlR5eExRVUYzUWl4RlFVRkZMRVZCUVVVN1UwRkJPVU1zVjBGQlZ5eEhRVUZZTEZkQlFWYzdTVUZGY0VJc1UwRkJVeXhYUVVGWExFTkJRVU1zUlVGQlV5eEZRVUZUTzFGQlF6VkRMRTFCUVUwc1NVRkJTU3hMUVVGTExFVkJRVVVzUTBGQlF6dExRVU51UWp0VFFVWmxMRmRCUVZjc1IwRkJXQ3hYUVVGWE8xTkJVMlFzVjBGQlZ5eEhRVUZITEVOQlEzcENMRXRCUVZFc1IwRkRiMEk3VVVGRE5VSXNUVUZCVFN4SFFVRkhMRWRCUVZFc1JVRkJSU3hCUVVGRE8xRkJRM0JDTEV0QlFVc3NUVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhEUVVGRk8xbEJRM2hDTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03VTBGRGJFSTdVVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJVVHRMUVVOdVFqdFRRVVZaTEd0Q1FVRnJRaXhIUVVGSExFTkJRVU1zUjBGQlVTeEhRVUZMTzFGQlF6bERMRTFCUVUwc1UwRkJVeXhIUVVGSExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUTNSRExFTkJRVU1zUTBGQlRTeEhRVUZMTEU5QlFVOHNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEZGQlFWRXNRMEZETlVNc1FVRkJRenRSUVVOR0xFMUJRVTBzVVVGQlVTeEhRVUZSTEVWQlFVVXNRVUZCUXp0UlFVTjZRaXhMUVVGTExFMUJRVTBzUTBGQlF5eEpRVUZKTEZOQlFWTXNRMEZCUlR0WlFVTjZRaXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1JDTzFGQlEwUXNUMEZCVHl4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UzBGREwwSTdVVUZGV1N4WlFVRlpMRkZCUVZvc1dVRkJXU3hIUVVGSExFTkJRVU1zUjBGQlVTeEhRVUZMTzFGQlEzaERMRTlCUVU4c1ZVRkJWU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlZMRU5CUVVNc1JVRkJSVHRaUVVOMFF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVObUxFTkJRVU1zUTBGQlF6dExRVU5LTEVGQlNuZENPMUZCVFZvc1ZVRkJWU3hSUVVGV0xGVkJRVlVzUjBGRGNrSXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hMUVVGTExGVkJRVlVzUjBGRE4wSXNRMEZCUXl4SFFVRlJMRWRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZET1VJc1EwRkJReXhOUVVGWExFZEJRVXM3VVVGRFppeE5RVUZOTEVsQlFVa3NSMEZCUnl4RlFVRkZMRUZCUVVNN1VVRkRhRUlzU1VGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVVN1dVRkRlRUlzU1VGQlNTeE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZPMmRDUVVOeVJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMmhDTzFOQlEwWTdVVUZEUkN4UFFVRlBMRWxCUVVrc1EwRkJRenRMUVVOaUxFRkJXR2RDTzFOQllWWXNTVUZCU1N4SFFVRkhMRU5CUTJ4Q0xFZEJRVkVzUlVGRFVpeFBRVUYzUWl4SFFVTk9PMUZCUTJ4Q0xFdEJRVXNzVFVGQlRTeEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkZPMWxCUTNSQ0xFbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRTlCUVU4c1NVRkJTU3hEUVVGRE8xTkJRMmhETzFGQlEwUXNUMEZCVHl4VFFVRlRMRU5CUVVNN1MwRkRiRUk3VTBGTldTeFRRVUZUTEVkQlEzQkNMRTlCUVU4c1RVRkJUU3hEUVVGRExGTkJRVk1zUzBGQlN5eFZRVUZWTEVkQlEyeERMRU5CUVVNc1IwRkJSeXhIUVVGTExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUXpsQ0xFTkJRVU1zUjBGQlJ5eEhRVU5HTEU5QlFVOHNSMEZCUnl4TFFVRkxMRkZCUVZFc1NVRkJTU3hSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eEhRVUZITzBsQlJYQkZMRk5CUVZNc1ZVRkJWU3hEUVVONFFpeExRVUZSTEVWQlExSXNVMEZCVXl4SFFVRkhMRXRCUVVzc1JVRkRWRHRSUVVOU0xFOUJRVThzUzBGQlN5eERRVU5VTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJUU3hQUVVGUExFZEJRVWNzUzBGQlN5eFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRVUZCUXl4RFFVRkRMRU5CUXpGRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0TFFVTndRanRUUVZCbExGVkJRVlVzUjBGQlZpeFZRVUZWTzBkQk4wVllMRWxCUVVrc1MwRkJTaXhKUVVGSk8wRkJkVVprTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03U1VGRE5VTXNVVUZCVVR0SlFVTlNMRXRCUVVzN1NVRkRUQ3hSUVVGUk8wbEJRMUlzVTBGQlV6dEpRVU5VTEU5QlFVODdTVUZEVUN4VFFVRlRPMGxCUTFRc1RVRkJUVHRKUVVOT0xGRkJRVkU3U1VGRFVpeFJRVUZSTzBsQlExSXNWVUZCVlR0SlFVTldMRmRCUVZjN1NVRkRXQ3hOUVVGTk8wbEJRMDRzVDBGQlR6dEpRVU5RTEZGQlFWRTdTVUZEVWl4VFFVRlRPMGxCUTFRc1UwRkJVenRKUVVOVUxFMUJRVTA3U1VGRFRpeFBRVUZQTzBsQlExQXNTMEZCU3p0SlFVTk1MRXRCUVVzN1EwRkRUaXhEUVVGRExFRkJRVU03UVVGSlNTeE5RVUZOTEdGQlFXRXNSMEZCUnl4RFFVRkRMRWxCUVZNc1IwRkJiMEk3U1VGRGVrUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1QwRkJUeXhKUVVGSkxFRkJRVU03U1VGRmRFSXNUMEZCVVN4RFFVRkRPMUZCUTFBc1MwRkJTeXhYUVVGWE8xbEJRMlFzVDBGQlR5eGhRVUZoTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUldwRExFdEJRVXNzVVVGQlVUdFpRVU5ZTEU5QlFVOHNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVVNVFpeExRVUZMTEZGQlFWRTdXVUZEV0N4UFFVRlBMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eGhRVUZoTEVOQlFVTXNSMEZCUnl4SFFVRkhMR0ZCUVdFc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRmFFVXNTMEZCU3l4VFFVRlRPMWxCUTFvc1QwRkJUeXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETzFGQlJTOUNMRXRCUVVzc1ZVRkJWVHRaUVVOaUxFOUJRVThzWVVGQllTeERRVUZETEZGQlFWRXNRMEZCUXp0UlFVVm9ReXhMUVVGTExGRkJRVkU3V1VGRFdDeFBRVUZQTEdGQlFXRXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkZPVUlzUzBGQlN5eFJRVUZSTzFsQlExZ3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzJkQ1FVTjJRaXhQUVVGUExHRkJRV0VzUTBGQlF5eExRVUZMTEVOQlFVTTdZVUZETlVJN1dVRkRSQ3hKUVVGSkxFbEJRVWtzUzBGQlN5eEpRVUZKTEVWQlFVVTdaMEpCUTJwQ0xFOUJRVThzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXp0aFFVTXpRanRaUVVORUxFbEJRMFVzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZEVkN4UFFVRlBMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzVlVGQlZTeEpRVU12UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhKUVVOV0xFOUJRVThzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4VlFVRlZMRVZCUTJoRE8yZENRVU5CTEU5QlFVOHNZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJRenRoUVVNNVFqdFpRVU5FTEVsQlFVa3NUMEZCVHl4SFFVRkhMRXRCUVVzc1YwRkJWeXhKUVVGSkxFbEJRVWtzV1VGQldTeEhRVUZITEVWQlFVVTdaMEpCUTNKRUxFOUJRVThzWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXp0aFFVTXhRanRaUVVORUxFbEJRVWtzVDBGQlR5eEhRVUZITEV0QlFVc3NWMEZCVnl4SlFVRkpMRWxCUVVrc1dVRkJXU3hIUVVGSExFVkJRVVU3WjBKQlEzSkVMRTlCUVU4c1lVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF6dGhRVU14UWp0WlFVTkVMRWxCUVVrc1QwRkJUeXhKUVVGSkxFdEJRVXNzVjBGQlZ5eEpRVUZKTEVsQlFVa3NXVUZCV1N4SlFVRkpMRVZCUVVVN1owSkJRM1pFTEU5QlFVOHNZVUZCWVN4RFFVRkRMRWxCUVVrc1EwRkJRenRoUVVNelFqdFpRVU5FTEU5QlFVOHNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVVNVFqdFpRVU5GTEU5QlFVOHNZVUZCWVN4RFFVRkRMRTlCUVU4c1EwRkJRenRMUVVOb1F6dERRVU5HTEVGQlFVTTdRVU12U2tzc1RVRkJUU3hUUVVGVExFZEJRVWNzUTBGQlF5eE5RVXQ2UWl4SFFVRmxPMGxCUTJRc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlFTeEZRVUZGTEVsQlFVa3NRMEZCUVN4RlFVRkZMRk5CUVZNc1EwRkJRU3hGUVVGRkxGTkJRVk1zUTBGQlFTeEZRVUZGTEVkQlFVY3NUVUZCVFN4QlFVRkRPMGxCUTNCRUxFMUJRVTBzVVVGQlVTeEhRVUZITzFkQlFVa3NTVUZCU1R0WFFVRk5MRk5CUVZNc1EwRkJReXhKUVVGSkxFbEJRVWtzUlVGQlJUdExRVUZGTEVGQlFVTTdTVUZEZEVRc1RVRkJUU3hUUVVGVExFZEJRVWM3VVVGRGFFSXNSMEZCUnl4VFFVRlRPMUZCUTFvc1NVRkJTU3hGUVVGRkxGRkJRVkU3UzBGRFppeEJRVUZETzBsQlJVWXNTVUZCU1N4WlFVRlpMRWRCUVVjc1JVRkJSU3hCUVVGRE8wbEJRM1JDTEUxQlFVMHNTVUZCU1N4SFFVRkhMRk5CUVZNc1EwRkRia0lzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGRGJFSXNTMEZCU3l4RlFVRkZMRU5CUTFBc1QwRkJUeXhGUVVGRkxFRkJRV2xDTEVGQlFVTTdTVUZET1VJc1MwRkJTeXhOUVVGTkxFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVVTdVVUZEZEVJc1dVRkJXU3hIUVVGSExFZEJRVWNzUTBGQlF5eFRRVUZUTEVWQlFVVTdXVUZCUlN4SlFVRkpPMWxCUVVVc1dVRkJXU3hGUVVGRkxGbEJRVms3VTBGQlJTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRPMHRCUXpkRk8wbEJSVVFzVDBGQlR6dFJRVU5NTEVkQlFVY3NVMEZCVXp0UlFVTmFMRWxCUVVrc1JVRkJSU3hSUVVGUk8xRkJRMlFzVDBGQlR5eEZRVUZGTEZOQlFWTXNRMEZCUXl4UFFVRlBMRWxCUVVrc1dVRkJXVHRMUVVNelF5eERRVUZETzBOQlEwZ3NRVUZCUXp0QlEySkxMRTFCUVUwc1dVRkJXU3hIUVVGSExFdEJRVXNzVjBGQlZ5eERRVUZETzBsQlF6TkRMR05CUVdNN1NVRkRaQ3hwUWtGQmFVSTdTVUZEYWtJc1VVRkJVVHRKUVVOU0xHVkJRV1U3U1VGRFppdzJRa0ZCTmtJN1NVRkROMElzYjBKQlFXOUNPMGxCUTNCQ0xHMUNRVUZ0UWp0SlFVTnVRaXh0UWtGQmJVSTdTVUZEYmtJc2NVSkJRWEZDTzBsQlEzSkNMR05CUVdNN1NVRkRaQ3huUWtGQlowSTdTVUZEYUVJc1YwRkJWenRKUVVOWUxGTkJRVk03U1VGRFZDdzBRa0ZCTkVJN1NVRkROVUlzYVVKQlFXbENPME5CUTJ4Q0xFTkJRVU1zUVVGQlF6dEJRVEpaU1N4VFFVRlRMRmRCUVZjc1IwRkJSenRKUVVNMVFpeFBRVUZQTEdkQ1FVRm5RaXhEUVVGRE8wTkJRM3BDTzBGRU4xQk5MRTFCUVUwc2NVSkJRWEZDTEVkQlFVY3NRMEZCUXl4RFFVRlRMRVZCUVVVc1MwRkJWU3hIUVVGVk8wbEJRMjVGTEVsQlFVa3NUMEZCVHl4TFFVRkxMRXRCUVVzc1VVRkJVU3hGUVVGRk8xRkJRemRDTEU5QlFVOHNTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8wdEJRM3BDTzBsQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1EwRkRaQ3hCUVVGRE8wRkRXRXNzVFVGQlRTeFJRVUZSTEZOQlFXdENMRXRCUVVzN1NVRkRNVU1zVFVGQlRTeEhRVUZsTEVWQlFVVXNRMEZCUXp0SlFVVjRRaXhKUVVGSkxFMUJRVTBzUjBGQlJ6dFJRVU5ZTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRMUVVOd1FqdEpRVVZFTEZsQlFWa3NUVUZCYTBJc1EwRkJSVHRSUVVNNVFpeExRVUZMTEVWQlFVVXNRMEZCUXp0UlFVVlNMRTFCUVUwc1YwRkJWeXhIUVVGSExGVkJRVlVzUTBGQlF5eFRRVUZUTEVGQlFVTTdVVUZEZWtNc1NVRkJTU3hOUVVGTkxFTkJRVU1zWTBGQll5eEZRVUZGTzFsQlJYcENMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMU5CUXpGRExFMUJRVTA3V1VGRFRDeEJRVUZETEVsQlFVa3NRMEZCVXl4VFFVRlRMRWRCUVVjc1YwRkJWeXhEUVVGRE8xTkJRM1pETzFGQlEwUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhWUVVGVkxFTkJRVU03VVVGRGRrSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UzBGRGRFSTdTVUZKUkN4TlFVRk5MRU5CUVVNc1QwRkJZU3hGUVVGRk8xRkJRM0JDTEUxQlFVMHNUVUZCVFN4SFFVTldMRTlCUVU4c1NVRkRVQ3hUUVVGVkxFdEJRV1VzUlVGQlJUdFpRVU42UWl4UFFVRlBMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU03VTBGRGRFSXNRVUZCUXp0UlFVTktMRTFCUVUwc1YwRkJWeXhIUVVGNVFqdFpRVUZGTEU5QlFVOHNSVUZCUlN4RlFVRkZPMU5CUVVVc1FVRkJUeXhCUVVGRE8xRkJRMnBGTEUxQlFVMHNXVUZCV1N4SFFVRkhMRU5CUVVNc1MwRkJaU3hIUVVGTE8xbEJRM2hETEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlJUdG5Ra0ZEYUVNc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEdWQlFXVXNSVUZCUlR0dlFrRkRiRU1zUzBGQlN5eERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03YVVKQlEzSkRMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEhGQ1FVRnhRaXhGUVVGRk8yOUNRVU12UXl4WlFVRlpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzUTBGQlF5eERRVUZETzJsQ1FVTnlReXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4dFFrRkJiVUlzUlVGQlJUdHZRa0ZETjBNc1dVRkJXU3hEUVVGRExFdEJRVXNzUTBGQlF5eGpRVUZqTEVOQlFVTXNRMEZCUXp0cFFrRkRjRU1zVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zUlVGQlJUdHZRa0ZEYkVNc1FVRkJReXhYUVVGWExFTkJRVk1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZEYkVRc1RVRkJUVHR2UWtGRFRDeEpRVUZKTEVsQlFVa3NSMEZCVVN4WFFVRlhMRUZCUVVNN2IwSkJRelZDTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1FVRkJRenR2UWtGRFZpeE5RVUZQTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlJUdDNRa0ZETlVJc1RVRkJUU3hGUVVGRkxFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1FVRkJRenQzUWtGRGVrSXNUVUZCVFN4UlFVRlJMRWRCUVVjc1EwRkJReXhMUVVGTExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1FVRkJRenQzUWtGRk4wTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHMwUWtGRFlpeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTzJkRFFVRkZMRTlCUVU4c1JVRkJSU3hGUVVGRk96WkNRVUZGTEVOQlFVTTdlVUpCVVhoRExFMUJRVTA3TkVKQlEwd3NTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1R0blEwRkJSU3hQUVVGUExFVkJRVVVzUlVGQlJUczJRa0ZCUlN4RFFVRkRPelJDUVVOMlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJRenQ1UWtGRGRFTTdkMEpCUlVRc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0M1FrRkRhRUlzUTBGQlF5eEZRVUZGTEVOQlFVTTdjVUpCUTB3N2FVSkJRMFk3WVVGRFJqdFRRVU5HTEVGQlFVTTdVVUZGUml4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGJrSXNUMEZCVHl4WFFVRlhMRU5CUVVNN1MwRkRjRUk3U1VGRlJDeFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVRkRMRTFCUVd0Q0xFZEJRVXM3VVVGRGRFTXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETEVGQlFVTTdVVUZEYmtNc1QwRkJUeXhMUVVGTExFTkJRVU03UzBGRFpDeERRVUZETzBsQlJVWXNVVUZCVVN4SFFVRkhPMUZCUTFRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETzB0QlEzSkNPMGxCUTBRc1NVRkJTU3hQUVVGUExFZEJRVWM3VVVGRFdpeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzZVVKQlFYbENMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRemxFTzBsQlJVUXNTVUZCU1N4UFFVRlBMRWRCUVZrN1VVRkRja0lzVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1MwRkJTeXhEUVVGRExFTkJRVU03UzBGRGFrTTdTVUZGUkN4UlFVRlJMRWRCUVVjc1EwRkJReXhIUVVGaExFZEJRVXM3VVVGRE5VSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSenRsUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTzFsQlFVVXNSMEZCUnp0VFFVRkRMRU5CUVVNN1MwRkRja01zUTBGQlF6dEpRVVZHTEZOQlFWTXNSMEZCUnl4RFFVRkRMRWxCUVdkQ0xFZEJRVWNzUlVGQlJTeEhRVUZMTzFGQlEzSkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWM3WlVGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFR0bFFVRkxMRWxCUVVrN1UwRkJReXhEUVVGRE8wdEJRM3BETEVOQlFVTTdTVUZKUml4UFFVRlBMRU5CUTB3c1RVRkJPRUlzUjBGQlJ5eERRVUZETEV0QlFXVXNSMEZCU3l4TFFVRkxMRU5CUVVNc1QwRkJUeXhCUVVGUExFVkJRM0pGTzFGQlEwd3NUVUZCVFN4WFFVRlhMRWRCUVZFc1JVRkJSU3hCUVVGRE8xRkJRelZDTEUxQlFVMHNWVUZCVlN4SFFVRlJMRVZCUVVVc1FVRkJRenRSUVVNelFpeExRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVVU3V1VGRE4wSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdaMEpCUTNaQ0xGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVjBGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdaMEpCUXpGRUxGZEJRVmNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRelZETEUxQlFVMDdaMEpCUTB3c1ZVRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVNNVFqdFRRVU5HTzFGQlEwUXNUMEZCVHp0WlFVRkZMRlZCUVZVN1dVRkJSU3hYUVVGWE8xTkJRVVVzUTBGQlF6dExRVU53UXp0SlFVVkVMRWxCUVVrc1ZVRkJWU3hIUVVGSE8xRkJRMllzVDBGQlR5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1MwRkRka0k3UTBGRFJqdEJRV3RDVFN4TlFVRk5MR1ZCUVdVc1IwRkJSeXhEUVVNM1FpeExRVUU0UWl4RlFVTTVRaXhKUVVGcFFpeEhRVU5QTzBsQlEzaENMRWxCUVVrc1QwRkJUeXhCUVVGUkxFRkJRVU03U1VGRGNFSXNUMEZCVVN4TFFVRkxMRU5CUVVNc1NVRkJTVHRSUVVOb1FpeExRVUZMTEZsQlFWa3NRMEZCUXl4WlFVRlpPMWxCUXpWQ0xFbEJRVWtzUzBGQlN5eERRVUZETEZGQlFWRXNTMEZCU3l4alFVRmpMRk5CUVZNc1JVRkJSVHRuUWtGRE9VTXNUMEZCVHl4SFFVRkhMRlZCUVZVc1EwRkJRenRoUVVOMFFpeE5RVUZOTzJkQ1FVTk1MRTlCUVU4c1IwRkJSeXhEUVVGRExGTkJRVk1zUlVGQlJTeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMRmRCUVZjc1JVRkJSU3hMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTndSVHRaUVVORUxFMUJRVTA3VVVGRFVpeExRVUZMTEZsQlFWa3NRMEZCUXl4bFFVRmxPMWxCUXk5Q0xFOUJRVThzUjBGQlJ5eERRVUZETEdkRFFVRm5ReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlEzcEVMRXRCUVVzc1EwRkJReXhSUVVGUkxIZENRVVZtTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBvc1RVRkJUVHRSUVVOU0xFdEJRVXNzV1VGQldTeERRVUZETEdsQ1FVRnBRanRaUVVOcVF5eFBRVUZQTEVkQlFVY3NRMEZCUXl3clFrRkJLMElzUlVGQlJTeExRVUZMTEZWQlFWVXNRMEZEZWtRc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGRFZpeEpRVUZKTEVOQlEwd3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRTaXhOUVVGTk8xRkJRMUlzUzBGQlN5eFpRVUZaTEVOQlFVTXNZVUZCWVR0WlFVTTNRaXhQUVVGUExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0WlFVTXhRaXhOUVVGTk8xRkJRMUlzUzBGQlN5eFpRVUZaTEVOQlFVTXNNa0pCUVRKQ08xbEJRek5ETEU5QlFVOHNSMEZCUnl4RFFVRkRMSE5EUVVGelF5eEZRVUZGTEV0QlFVc3NWVUZCVlN4RFFVTm9SU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVU5rTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTBvc1RVRkJUVHRSUVVOU0xFdEJRVXNzV1VGQldTeERRVUZETEd0Q1FVRnJRanRaUVVOc1F5eFBRVUZQTEVkQlFVY3NRMEZCUXl3MlFrRkJOa0lzUlVGQlJTeExRVUZMTEZWQlFWVXNRMEZEZGtRc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGRFpDeERRVUZETEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEyeERMRTFCUVUwN1VVRkRVaXhMUVVGTExGbEJRVmtzUTBGQlF5eHBRa0ZCYVVJN1dVRkRha01zVDBGQlR5eEhRVUZITEVOQlFVTXNNRUpCUVRCQ0xFTkJRVU1zUTBGQlF6dFpRVU4yUXl4TlFVRk5PMUZCUTFJc1MwRkJTeXhaUVVGWkxFTkJRVU1zYlVKQlFXMUNPMWxCUTI1RExFOUJRVThzUjBGQlJ5eERRVUZETERSQ1FVRTBRaXhEUVVGRExFTkJRVU03V1VGRGVrTXNUVUZCVFR0UlFVTlNMRXRCUVVzc1dVRkJXU3hEUVVGRExGbEJRVms3V1VGRE5VSXNUMEZCVHl4SFFVRkhMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03V1VGRGVrSXNUVUZCVFR0UlFVTlNMRXRCUVVzc1dVRkJXU3hEUVVGRExHTkJRV003V1VGRE9VSXNTVUZCU1N4UFFVRlBMRXRCUVVzc1EwRkJReXhWUVVGVkxFdEJRVXNzVVVGQlVTeEZRVUZGTzJkQ1FVTjRReXhKUVVGSkxGbEJRVmtzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZPMjlDUVVOd1F5eFBRVUZQTEVkQlFVY3NRMEZCUXl4blEwRkJaME1zUlVGQlJTeExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZETjBVc1RVRkJUU3hKUVVGSkxGVkJRVlVzU1VGQlNTeExRVUZMTEVOQlFVTXNWVUZCVlN4RlFVRkZPMjlDUVVONlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl3NFFrRkJPRUlzUlVGQlJTeExRVUZMTEVOQlFVTXNWVUZCVlN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZEZWtVc1RVRkJUVHR2UWtGRFRDeExRVUZMTEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03YVVKQlEzQkRPMkZCUTBZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEV0QlFVc3NUMEZCVHl4RlFVRkZPMmRDUVVOMlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEZWtNc1RVRkJUVHRuUWtGRFRDeFBRVUZQTEVkQlFVY3NVMEZCVXl4RFFVRkRPMkZCUTNKQ08xbEJRMFFzVFVGQlRUdFJRVU5TTEV0QlFVc3NXVUZCV1N4RFFVRkRMRk5CUVZNN1dVRkRla0lzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxMRTlCUVU4c1JVRkRlRUlzVDBGQlR5eEhRVUZITEVOQlFVTXNiVUpCUVcxQ0xFVkJRelZDTEV0QlFVc3NRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVTXpReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRwUWtGRE5VSXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExGRkJRVkVzUlVGRE9VSXNUMEZCVHl4SFFVRkhMRU5CUVVNc2IwSkJRVzlDTEVWQlF6ZENMRXRCUVVzc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOMFF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dHBRa0ZET1VJc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEZGQlFWRXNSVUZET1VJc1QwRkJUeXhIUVVGSExFTkJRVU1zTkVKQlFUUkNMRVZCUTNKRExFdEJRVXNzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGRGRFTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dHBRa0ZEYUVJc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEUxQlFVMHNSVUZETlVJc1QwRkJUeXhIUVVGSExFTkJRVU1zTUVKQlFUQkNMRVZCUTI1RExFdEJRVXNzUTBGQlF5eFRRVUZUTEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGRGRFTXNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVNeFFpeFBRVUZQTEVkQlFVY3NaVUZCWlN4RFFVRkRPMWxCUXk5Q0xFMUJRVTA3VVVGRFVpeExRVUZMTEZsQlFWa3NRMEZCUXl4UFFVRlBPMWxCUTNaQ0xFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NTMEZCU3l4UFFVRlBMRVZCUTNoQ0xFOUJRVThzUjBGQlJ5eERRVUZETEcxQ1FVRnRRaXhGUVVNMVFpeExRVUZMTEVOQlFVTXNVMEZCVXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZETVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNN2FVSkJRelZDTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhSUVVGUkxFVkJRemxDTEU5QlFVOHNSMEZCUnl4RFFVRkRMRzlDUVVGdlFpeEZRVU0zUWl4TFFVRkxMRU5CUVVNc1UwRkJVeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkRkRU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1lVRkJZU3hEUVVGRExFTkJRVU03YVVKQlF6bENMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eFJRVUZSTEVWQlF6bENMRTlCUVU4c1IwRkJSeXhEUVVGRExIbENRVUY1UWl4RlFVTnNReXhMUVVGTExFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRM1JETEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlEyaENMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eE5RVUZOTEVWQlF6VkNMRTlCUVU4c1IwRkJSeXhEUVVGRExEQkNRVUV3UWl4RlFVTnVReXhMUVVGTExFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRM1JETEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkRNVUlzVDBGQlR5eEhRVUZITEdWQlFXVXNRMEZCUXp0WlFVTXZRaXhOUVVGTk8xRkJRMUlzUzBGQlN5eFpRVUZaTEVOQlFVTXNUVUZCVFR0WlFVTjBRaXhQUVVGUExFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0WlFVTXhRaXhOUVVGTk8xRkJRMUlzUzBGQlN5eFpRVUZaTEVOQlFVTXNNRUpCUVRCQ08xbEJRekZETEU5QlFVOHNSMEZCUnl4RFFVRkRMSGREUVVGM1F5eERRVUZETEVOQlFVTTdXVUZEY2tRc1RVRkJUVHRSUVVOU0xFdEJRVXNzV1VGQldTeERRVUZETEdWQlFXVTdXVUZETDBJc1QwRkJUeXhIUVVGSExFTkJRVU1zTmtKQlFUWkNMRVZCUVVVc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETjBRc1RVRkJUVHRSUVVOU08xbEJRMFVzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1dVRkROVUlzUzBGQlN5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRNMEk3U1VGRFJDeFBRVUZQTzFGQlFVVXNUMEZCVHp0TFFVRkZMRU5CUVVNN1EwRkRjRUlzUVVGQlF6dEJSSFpYU3l4VFFVRlRMR2xDUVVGcFFpeERRVU12UWl4SFFVRnBRaXhGUVVOcVFpeFRRVUZ2UWl4RlFVTmtPMGxCUTA0c1RVRkJUU3hMUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETzFGQlEzUkNMRk5CUVZNc1JVRkJSU3hUUVVGVE8xRkJRM0JDTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTVHRSUVVOa0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNTVUZCU1R0UlFVTmtMRk5CUVZNc1JVRkJSVHRaUVVOVUxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q08xbEJRemRDTEVkQlFVY3NRMEZCUXl4alFVRmpPMWxCUTJ4Q0xHRkJRV0U3TzFOQlJXUXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTnlRaXhEUVVGRExFRkJRVU03U1VGRFNDeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdRMEZETDBJN1FVRk5UU3hOUVVGTkxGZEJRVmM3U1VGRGRFSXNTMEZCU3l4SFFVRnJReXhQUVVGUExFTkJRVU03U1VGREwwTXNTMEZCU3l4SFFVRkhPMUZCUTA0c1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eExRVUZMTEU5QlFVOHNSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFOUJRVThzUTBGQlF6dExRVU5zUkR0SlFVTkVMRXRCUVVzc1IwRkJSenRSUVVOT0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTMEZCU3l4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eFRRVUZUTEVOQlFVTTdTMEZEZEVRN1NVRkZSQ3hQUVVGUExGVkJRVlVzUTBGRFppeE5RVUZ0UWl4RlFVTnVRaXhQUVVGdFF5eEZRVU5rTzFGQlEzSkNMRTFCUVUwc1ZVRkJWU3hIUVVGVkxFVkJRVVVzUVVGQlF6dFJRVU0zUWl4TFFVRkxMRTFCUVUwc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlJUdFpRVU4yUWl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFdEJRVXNzVTBGQlV5eEZRVUZGTEU5QlFVOHNUMEZCVHl4RFFVRkRPMWxCUXpORExFbEJRVWtzUTBGQlF5eERRVUZETEUxQlFVMHNTMEZCU3l4UFFVRlBMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFsQlEzcERMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUXpGQ08xRkJSVVFzVDBGQlR6dFpRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1MwRkJTenRaUVVGRkxFdEJRVXNzUlVGQlJTeFZRVUZWTzFOQlFVVXNRMEZCUXp0TFFVTndSRHRKUVVWRUxHRkJRV0VzWjBKQlFXZENMRU5CUXpOQ0xFMUJRVzFDTEVWQlEyNUNMRXRCUVcxRkxFVkJRMmhETzFGQlEyNURMRTFCUVUwc1UwRkJVeXhIUVVGcFFpeEZRVUZGTEVGQlFVTTdVVUZEYmtNc1MwRkJTeXhOUVVGTkxFbEJRVWtzU1VGQlNTeExRVUZMTEVOQlFVVTdXVUZEZUVJc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF6dG5Ra0ZEWWl4SFFVRkhMRVZCUVVVc1RVRkJUU3hKUVVGSkxFTkJRVU1zUjBGQlJ6dG5Ra0ZEYmtJc1MwRkJTeXhGUVVGRkxFMUJRVTBzU1VGQlNTeERRVUZETEV0QlFVczdZVUZEZUVJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEZkQlFWY3NRMEZCUXl4bFFVRmxMRU5CUVVNc1RVRkJUU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzB0QlEzWkVPMGxCUlVRc1QwRkJUeXhsUVVGbExFTkJRM0JDTEUxQlFXMUNMRVZCUTI1Q0xFdEJTVWNzUlVGRGEwSTdVVUZEY2tJc1RVRkJUU3hYUVVGWExFZEJRVkVzUlVGQlJTeEJRVUZETzFGQlF6VkNMRXRCUVVzc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eERRVUZGTzFsQlEzaENMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVUVzUlVGQlJTeExRVUZMTEVOQlFVRXNSVUZCUlN4SFFVRkhMRWxCUVVrc1FVRkJRenRaUVVNMVFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRXRCUVVzc1UwRkJVeXhGUVVGRkxFOUJRVThzVDBGQlR5eERRVUZETzFsQlF6ZERMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eFRRVUZUTEVWQlFVVXNUMEZCVHl4UFFVRlBMRU5CUVVNN1dVRkRMME1zU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4TFFVRkxMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdXVUZETTBNc1NVRkJTU3hMUVVGTExFTkJRVU1zVFVGQlRTeExRVUZMTEU5QlFVOHNSVUZCUlN4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03V1VGRk4wTXNTVUZCU1N4UFFVRlBMRXRCUVVzc1EwRkJReXhMUVVGTExFdEJRVXNzVjBGQlZ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRVZCUVVVN1owSkJRM2hFTEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXp0aFFVTjBRenRUUVVOR08xRkJSVVFzVDBGQlR6dFpRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1MwRkJTenRaUVVGRkxFdEJRVXNzUlVGQlJTeFhRVUZYTzFOQlFVVXNRMEZCUXp0TFFVTnlSRHREUVVOR08wRkJUMDBzVFVGQlRTeFBRVUZQTEVkQlFWa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNMVF5eE5RVUZOTEVWQlFVVXNVMEZCVXp0RFFVTnNRaXhEUVVGRExFRkJRVU03UVVGTlNTeE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkpMRXRCUVZFc1IwRkJXU3hEUVVGRE8xRkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVODdVVUZCUlN4TFFVRkxPMHRCUVVVc1EwRkJReXhCUVVGRE8wRkJVV2hGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRU5CUVVNc1EwRkJkVUlzUjBGREwwTXNRVUZCUXl4RFFVRkRMRU5CUVZNc1RVRkJUU3hMUVVGTExGTkJRVk1zUVVGQlF6dEJRVU16UWl4TlFVRk5MRTlCUVU4c1IwRkJSeXhEUVVGSkxFTkJRWEZDTEVkQlF6bERMRUZCUVVNc1EwRkJReXhEUVVGVExFMUJRVTBzUzBGQlN5eFBRVUZQTEVGQlFVTTdRVUZEZWtJc1RVRkJUU3hQUVVGUExFZEJRVWNzUTBGQlNTeERRVUZ4UWl4SFFVTTVReXhCUVVGRExFTkJRVU1zUTBGQlV5eE5RVUZOTEV0QlFVc3NUMEZCVHl4QlFVRkRPMEZCUTNwQ0xFMUJRVTBzVDBGQlR5eEhRVUZITEVOQlEzSkNMRU5CUVhGQ0xFZEJSWEpDTEU5QlFVOHNUMEZCVHl4TFFVRkxMRk5CUVZNc1NVRkJTU3hEUVVGRExGbEJRVmtzVDBGQlR5eEJRVUZETzBGRGRWQjJSQ3hKUVVGSkxHZENRVUZuUWl4SFFVRkhMR1ZCUVdVc1FVRkJRenRCUTNaaGFFTXNTVUZCVlN4VFFVRlRMRUZCVFhwQ096dGpRVXBqTEZGQlFWRXNSMEZCUnl4RFFVRkRMRTlCUVc5Q0xFZEJRek5ETEU5QlFVOHNUMEZCVHl4TFFVRkxMRkZCUVZFc1IwRkJSenRaUVVGRkxFOUJRVTg3VTBGQlJTeEhRVUZITEU5QlFVOHNTVUZCU1N4RlFVRkZPMk5CUXpsRExGRkJRVkVzUjBGQlJ5eERRVUZETEU5QlFXOUNMRWRCUXpORExFOUJRVThzVDBGQlR5eExRVUZMTEZGQlFWRXNSMEZCUnl4UFFVRlBMRWRCUVVjc1QwRkJUeXhGUVVGRkxFOUJRVTg3UjBGTU0wTXNVMEZCVXl4TFFVRlVMRk5CUVZNN1FVTTJSREZDTEUxQlFVMHNhMEpCUVd0Q08wbEJRM1JDTEUxQlFVMHNRMEZCWlR0SlFVTnlRaXhKUVVGSkxFTkJRVTA3U1VGRFZpeExRVUZMTEVOQlFWazdTVUZEYWtJc1NVRkJTU3hEUVVGM1F6dEpRVU0xUXl4WlFVTkZMRTFCUVc5Q0xFVkJRM0JDTEV0QlFWVXNSVUZEVml4SlFVRmxMRVZCUTJZc1IwRkJNRU1zUTBGRE1VTTdVVUZEUVN4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF6dExRVU5xUWp0SlFVTkVMRWxCUVVrc1NVRkJTU3hIUVVGSE8xRkJRMVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEY2tNN1EwRkRSanRCUVVWRUxFMUJRVTBzV1VGQldTeEhRVUZITEVOQlEyNUNMRWRCUVdsQ0xFVkJRMnBDTEUxQlFXMURMRWRCUjJFN1NVRkRhRVFzU1VGQlNTeFJRVUZSTEUxQlFVMHNRMEZCUXl4RlFVRkZPMUZCUTI1Q0xFOUJRVTg3V1VGQlJTeFBRVUZQTEVWQlFVVXNTVUZCU1R0WlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFTkJRVU1zUzBGQlN6dFRRVUZGTEVOQlFVTTdTMEZET1VNc1RVRkJUVHRSUVVOTUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVU3V1VGRE4wSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXd5UTBGQk1rTXNRMEZCUXl4RFFVRkRPMU5CUXpsRU8xRkJRMFFzVFVGQlRTeExRVUZMTEVkQlFVY3NZVUZCWVN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eEJRVUZETzFGQlF6bERMRTlCUVU4N1dVRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN6dFpRVUZGTEV0QlFVczdVMEZCUlN4RFFVRkRPMHRCUTJ4RE8wTkJRMFlzUVVGQlF6dEJRVmRHTEZOQlFWTXNiVUpCUVcxQ0xFTkJRVU1zVFVGQmRVSXNSVUZCZVVJN1NVRkRNMFVzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4UFFVRlBMRVZCUVVVc1EwRkJRenRKUVVOMlFpeE5RVUZOTEVWQlFVVXNVVUZCVVN4RFFVRkJMRVZCUVVVc2EwSkJRV3RDTEVOQlFVRXNSVUZCUlN4alFVRmpMRU5CUVVFc1JVRkJSU3hYUVVGWExFTkJRVUVzUlVGQlJTeEhRVUZITEUxQlFVMHNRVUZCUXp0SlFVTTNSU3hKUVVGSkxGRkJRVkVzU1VGQlNTeERRVUZETEd0Q1FVRnJRaXhKUVVGSkxHTkJRV01zUTBGQlF5eEZRVUZGTzFGQlEzUkVMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRMklzUTBGQlF5eDFSVUZCZFVVc1EwRkJReXhEUVVNeFJTeERRVUZETzB0QlEwZzdTVUZEUkN4SlFVRkpMRkZCUVZFc1JVRkJSU3hQUVVGUE8xRkJRVVVzVVVGQlVTeEZRVUZGTEZGQlFWRTdVVUZCUlN4WFFVRlhPMHRCUVVVc1EwRkJRenRKUVVONlJDeE5RVUZOTEZOQlFWTXNSMEZCWjBJc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEhRVUZMTzFGQlF6TkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUzBGQlN5eGpRVUZqTEVWQlFVVXNUMEZCVHp0WlFVRkZMRTlCUVU4c1JVRkJSU3hIUVVGSExFTkJRVU1zV1VGQldUdFRRVUZGTEVOQlFVTTdVVUZEZEVVc1NVRkJTU3hQUVVGUExFZEJRVWNzUTBGQlF5eEpRVUZKTEV0QlFVc3NWMEZCVnl4RlFVRkZPMWxCUTI1RExFOUJRVTg3WjBKQlFVVXNUMEZCVHl4RlFVRkZMR05CUVdNc1NVRkJTU3hIUVVGSExFTkJRVU1zV1VGQldUdGhRVUZGTEVOQlFVTTdVMEZEZUVRN1VVRkRSQ3hQUVVGUE8xbEJRVVVzVDBGQlR5eEZRVUZGTEd0Q1FVRnJRaXhKUVVGSkxFZEJRVWNzUTBGQlF5eFpRVUZaTzFOQlFVVXNRMEZCUXp0TFFVTTFSQ3hCUVVGRE8wbEJRMFlzVDBGQlR6dFJRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRPMUZCUVVVc1YwRkJWenRMUVVGRkxFTkJRVU03UTBGRE4wTTdRVUZUVFN4TlFVRmxMRTlCUVU4N1NVRkxNMElzUVVGQlV5eExRVUZMTEVOQlFWVTdTVUZEZUVJc1FVRkJVeXhQUVVGUExFTkJRVlU3U1VGRE1VSXNRVUZCVXl4TlFVRk5MRU5CUVZNN1NVRkRlRUlzUVVGQlV5eEpRVUZKTEVOQlFVODdTVUZGY0VJc1NVRkJTU3hYUVVGWExFZEJRVWM3VVVGRGFFSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dExRVU01UWp0SlFVbEVMRkZCUVZFc1EwRkJReXhMUVVGcFFpeEZRVUZWTzFGQlEyeERMRTlCUVU4c1kwRkJZeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEYkVNN1NVRkZSQ3hsUVVGbExFTkJRMklzUzBGQmFVSXNSVUZEYWtJc1IwRkJPRUlzUlVGRGFFSTdVVUZEWkN4UFFVTkZMRWRCUVVjc1NVRkJTVHRaUVVOTUxFMUJRVTBzUlVGQlJTeExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwN1dVRkRNMElzU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4SlFVRkpPMWxCUldoQ0xGVkJRVlVzUlVGQlJTeGpRVUZqTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkZja01zWTBGQll5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVVHRaUVVOc1F5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRWxCUVVrN1dVRkRhRUlzVFVGQlRTeEZRVUZGTEV0QlFVc3NRMEZCUXl4TlFVRk5PMU5CUTNKQ0xFTkJRMFE3UzBGRFNEdEpRVVZFTEcxQ1FVRnRRaXhEUVVGRExFdEJRV2xDTEVWQlIyNURPMUZCUTBFc1QwRkJUenRaUVVOTUxFMUJRVTBzUlVGQlJTeHBRa0ZCYVVJN1dVRkRla0lzUjBGQlJ5eEZRVUZGTzJkQ1FVTklMRTFCUVUwc1JVRkJSU3hMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMDdaMEpCUXpOQ0xFbEJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNTVUZCU1R0blFrRkZhRUlzVlVGQlZTeEZRVUZGTEdOQlFXTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJRenRuUWtGRmNrTXNZMEZCWXl4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVUdG5Ra0ZEYkVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTzJkQ1FVTm9RaXhOUVVGTkxFVkJRVVVzUzBGQlN5eERRVUZETEUxQlFVMDdZVUZEY2tJN1UwRkRSaXhEUVVGRE8wdEJRMGc3U1VGRlJDeFZRVUZWTEVOQlFVTXNTMEZCYVVJc1JVRkJLMEk3VVVGRGVrUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0UlFVTnNReXhKUVVGSkxGRkJRVkVzVFVGQlRTeERRVUZETEVWQlFVVTdXVUZEYmtJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDNRMEZCZDBNc1EwRkJReXhEUVVGRE8xTkJRek5FTzFGQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1MwRkRaanRKUVVWRUxGZEJRVmNzUTBGQlF5eExRVUZwUWl4RlFVRm5RenRSUVVNelJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eEJRVUZETzFGQlJXeERMRTlCUVU4c1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTm9RenRKUVVWRUxFdEJRVXNzUTBGQlF5eEpRVUZoTEVWQlFVVXNUVUZCTmtJc1JVRkJWVHRSUVVNeFJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRVUZCUXp0UlFVTTFReXhKUVVGSkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRE8xRkJRM1pETEUxQlFVMHNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVOd1FqdEpRVVZFTEZOQlFWTXNRMEZEVUN4SlFVRmhMRVZCUTJJc1RVRkJOa0lzUlVGRFR6dFJRVU53UXl4TlFVRk5MRWRCUVVjc1IwRkJhVUk3V1VGRGVFSXNUVUZCVFN4RlFVRkZPMmRDUVVOT0xFMUJRVTBzUlVGQlJTeEZRVUZGTzJkQ1FVTldMRXRCUVVzc1JVRkJSU3hOUVVGTkxFVkJRVVVzUzBGQlN5eEpRVUZKTEV0QlFVczdaMEpCUXpkQ0xHdENRVUZyUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUk8yRkJRM0pETzFsQlEwUXNTVUZCU1N4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFbEJRVWtzUlVGQlJUdFpRVU40UWl4alFVRmpMRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzFsQlEyeERMRTFCUVUwc1JVRkJSU3hKUVVGSk8xbEJRMW9zU1VGQlNUdFpRVU5LTEZWQlFWVXNSVUZCUlN4alFVRmpMRWxCUVVrc1EwRkJRenRUUVVOb1F5eEJRVUZETzFGQlEwWXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6dFpRVUZGTEVsQlFVazdXVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3V1VGQlJTeE5RVUZOTEVWQlFVVXNSMEZCUnp0VFFVRkZMRU5CUVVNc1FVRkJRenRSUVVWMFJTeFBRVUZQTEZsQlFWa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRGJFTTdTVUZGUkN4TlFVRk5MRlZCUVZVc1EwRkRaQ3hKUVVGaExFVkJRMklzVFVGQk5rSXNSVUZEV2p0UlFVTnFRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eE5RVUZOTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEJRVUZETzFGQlEzWkVMRWxCUVVrc1RVRkJUU3hEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNN1VVRkRka01zVFVGQlRTeE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTNCQ08wbEJSVVFzVFVGQlRTeGpRVUZqTEVOQlEyeENMRWxCUVdFc1JVRkRZaXhOUVVFMlFpeEZRVU5uUWp0UlFVTTNReXhOUVVGTkxFZEJRVWNzUjBGQmFVSTdXVUZEZUVJc1RVRkJUU3hGUVVGRk8yZENRVU5PTEUxQlFVMHNSVUZCUlN4RlFVRkZPMmRDUVVOV0xHdENRVUZyUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUk8yZENRVU53UXl4TFFVRkxMRVZCUVVVc1NVRkJTVHRoUVVOYU8xbEJRMFFzU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4SlFVRkpMRWxCUVVrc1JVRkJSVHRaUVVONFFpeGpRVUZqTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUk8xbEJRMnhETEUxQlFVMHNSVUZCUlN4SlFVRkpPMWxCUTFvc1NVRkJTVHRaUVVOS0xGVkJRVlVzUlVGQlJTeGpRVUZqTEVsQlFVa3NRMEZCUXp0VFFVTm9ReXhCUVVGRE8xRkJSVVlzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlFVVXNTVUZCU1R0WlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVYzdVMEZCUlN4RFFVRkRMRUZCUVVNN1VVRkRkRVVzVFVGQlRTeE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRMRkZCUVZFc1owSkJRV2RDTEVOQlFVTXNSMEZETTBNc1owSkJRV2RDTEVkQlEyaENMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJReXhCUVVGRE8xRkJRM1pETEU5QlFVOHNXVUZCV1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU5zUXp0SlFVZEVMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETzBsQlZURkNMRTFCUVUwc1EwRkRTaXhMUVVFclFpeEZRVU12UWl4UFFVRXlSU3hGUVVNeFF6dFJRVU5xUXl4TlFVRk5MR3RDUVVGclFpeEhRVUZSTEVOQlFVTXNSMEZCVnl4SFFVRkxPMWxCUXk5RExFbEJRVWtzVDBGQlR5eFBRVUZQTEV0QlFVc3NVVUZCVVN4SlFVRkpMRTlCUVU4c1QwRkJUeXhMUVVGTExGZEJRVmNzUlVGQlJUdG5Ra0ZEYWtVc1QwRkJUenR2UWtGQlJTeFBRVUZQTzJsQ1FVRkZMRU5CUVVNN1lVRkRjRUlzVFVGQlRTeEpRVUZKTEU5QlFVOHNUMEZCVHl4TFFVRkxMRlZCUVZVc1JVRkJSVHRuUWtGRGVFTXNUMEZCVHl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRGNrSXNUVUZCVFR0blFrRkRUQ3hQUVVGUExFOUJRVThzUTBGQlF6dGhRVU5vUWp0VFFVTkdMRUZCUVVNN1VVRkRSaXhQUVVGUExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhIUVVGTE8xbEJRM0JETEUxQlFVMHNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUVVGQlF6dFpRVU14UWl4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVObUxFZEJRVWNzUTBGQlF5eFJRVUZSTEVOQlFVTTdiMEpCUTFnc1NVRkJTU3hGUVVGRkxHRkJRV0VzVFVGQlRUdHZRa0ZEZWtJc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4SFFVRkhMRU5CUVVNN2FVSkJRek5DTEVOQlFVTXNRVUZCUXp0WlFVTk1MRWxCUVVrc1QwRkJUeXhQUVVGUExFdEJRVXNzVjBGQlZ5eEpRVUZKTEUxQlFVMHNXVUZCV1N4UFFVRlBMRVZCUVVVN1owSkJReTlFTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlN6dHZRa0ZETTBJc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdDNRa0ZEVkN4UlFVRlJMRVZCUVVVc1EwRkJRenQzUWtGRFdDeFBRVUZQTEV0QlFVc3NRMEZCUXp0eFFrRkRaQ3hOUVVGTk8zZENRVU5NTEU5QlFVOHNTVUZCU1N4RFFVRkRPM0ZDUVVOaU8ybENRVU5HTEVOQlFVTXNRMEZCUXp0aFFVTktPMWxCUTBRc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZEV0N4UlFVRlJMRVZCUVVVc1EwRkJRenRuUWtGRFdDeFBRVUZQTEV0QlFVc3NRMEZCUXp0aFFVTmtMRTFCUVUwN1owSkJRMHdzVDBGQlR5eEpRVUZKTEVOQlFVTTdZVUZEWWp0VFFVTkdMRU5CUVVNc1EwRkJRenRMUVVOS08wbEJWVVFzVlVGQlZTeERRVU5TTEV0QlFTdENMRVZCUXk5Q0xHTkJRVFJGTEVWQlF6TkRPMUZCUTJwRExFOUJRVThzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFZEJRVXM3V1VGRGNFTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJUdG5Ra0ZEWml4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVOV0xFOUJRVThzWTBGQll5eExRVUZMTEZWQlFWVXNSMEZEYUVNc1kwRkJZeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNSMEZEZUVJc1kwRkJZeXhEUVVOdVFpeERRVUZETzJkQ1FVTkdMRTlCUVU4c1MwRkJTeXhEUVVGRE8yRkJRMlFzVFVGQlRUdG5Ra0ZEVEN4UFFVRlBMRWxCUVVrc1EwRkJRenRoUVVOaU8xTkJRMFlzUTBGQlF5eERRVUZETzB0QlEwbzdTVUZGUkN4WFFVRlhMRU5CUTFRc1ZVRkJhMFFzUlVGRGFrSTdVVUZEYWtNc1QwRkJUeXhKUVVGSkxGVkJRVlVzUTBGQlF6dFpRVU53UWl4TlFVRk5MRVZCUVVVc1NVRkJTVHRaUVVOYUxGRkJRVkVzUlVGQlJTeHhRa0ZCY1VJc1EwRkJReXhWUVVGVk8xbEJRekZETEUxQlFVMHNSVUZCUlR0blFrRkJSU3hKUVVGSkxFVkJRVVVzV1VGQldUdG5Ra0ZCUlN4VlFVRlZPMkZCUVVVN1UwRkRNME1zUTBGQlF5eERRVUZETzB0QlEwbzdTVUZEUkN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF6dEpRVVV2UWl4WlFVRlpMRWRCUVZFc1EwRkJSVHRSUVVOd1FpeEpRVUZKTEVOQlFVTXNTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJRenRSUVVOb1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTI1RExFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETTBNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU0zUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhIUVVGSExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM0pFTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRMMElzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTnlReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6ZERMRWxCUVVrc1EwRkJReXhYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGREwwTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVONlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTNwRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEZGtNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU51UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1pETEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkROMElzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXZRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFGQlF6TkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRGRrTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVONlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUXpkRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZET1VNN1NVRkZSQ3hSUVVGUkxFZEJRWE5DTzFGQlF6VkNMRTlCUVU4c1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCVVR0TFFVTjRRenRKUVVORUxGRkJRVkVzUjBGQmMwSTdVVUZETlVJc1QwRkJUeXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRlJPMHRCUTNoRE8wbEJRMFFzVDBGQlR5eEhRVUZ0UXp0UlFVTjRReXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRMUVVOdVF6dEpRVU5FTEV0QlFVc3NSMEZCYlVJN1VVRkRkRUlzVDBGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRemxDTzBsQlEwUXNUMEZCVHl4SFFVRnhRanRSUVVNeFFpeFBRVUZQTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGFFTTdTVUZGUkN4RlFVRkZMRU5CUVhWQ0xFMUJRVk1zUlVGQmRVSTdVVUZEZGtRc1QwRkJUeXhSUVVGUkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlFVTXNTVUZCU1R0WlFVRkZMRTFCUVUwN1UwRkJReXhEUVVGRExFTkJRVkU3UzBGREwwTTdTVUZGUkN4SFFVRkhMRU5CUVhWQ0xGRkJRVmNzUlVGQk5FSTdVVUZETDBRc1QwRkJUeXhsUVVGbExFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJRenRMUVVNdlF6dEpRVVZFTEZOQlFWTXNRMEZEVUN4VFFVRjNSU3hGUVVNNVF6dFJRVU14UWl4UFFVRlBMRWxCUVVrc1ZVRkJWU3hEUVVGRE8xbEJRM0JDTEUxQlFVMHNSVUZCUlN4SlFVRkpPMWxCUTFvc1VVRkJVU3hGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRlZCUVZVN1dVRkRNVU1zVFVGQlRTeEZRVUZGTzJkQ1FVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWE8yZENRVUZGTEZOQlFWTTdZVUZCUlR0VFFVTjZReXhEUVVGRExFTkJRVkU3UzBGRFdEdEpRVWxFTEU5QlFVOHNRMEZCUXl4SFFVRlJMRVZCUVVVN1VVRkRhRUlzVFVGQlRTeG5Ra0ZCWjBJc1IwRkJSeXhQUVVGUExFZEJRVWNzUzBGQlN5eFZRVUZWTEVkQlFVY3NSMEZCUnl4SFFVRkhMRWxCUVUwc1IwRkJSeXhCUVVGRE8xRkJSWEpGTEU5QlFVOHNTVUZCU1N4VlFVRlZMRU5CUVVNN1dVRkRjRUlzVTBGQlV5eEZRVUZGTEVsQlFVazdXVUZEWml4WlFVRlpMRVZCUVVVc1owSkJRV2RDTzFsQlF6bENMRkZCUVZFc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXl4VlFVRlZPMU5CUXpORExFTkJRVU1zUTBGQlVUdExRVU5ZTzBsQlJVUXNVVUZCVVN4RFFVRkRMRmRCUVcxQ0xFVkJRVkU3VVVGRGJFTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1FVRkJReXhKUVVGSkxFTkJRVk1zVjBGQlZ5eEJRVUZETzFGQlEzWkRMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU03V1VGRFpDeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTFvc1YwRkJWenRUUVVOYUxFTkJRVU1zUTBGQlF6dExRVU5LTzBsQlJVUXNWVUZCVlN4SFFVRlpPMUZCUTNCQ0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU03UzBGRE1VTTdTVUZEUkN4VlFVRlZMRWRCUVZrN1VVRkRjRUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF6dExRVU55UXp0RFFVTkdPMEZCTUVKRUxFMUJRVTBzVTBGQlV5eHRRa0ZCYlVJc1FVRkJRenRCUVVOdVF5eE5RVUZOTEZOQlFWTXNaMGhCUTJkSExFRkJRVU03UVVGTGFFZ3NUVUZCVFN4VlFVRlZMSGxJUVVOM1J5eEJRVUZETzBGQlJXeElMRTFCUVUwc1UwRkJVeXhUUVVGVExFOUJRVTg3U1VGRGNFTXNUVUZCVFN4RFFVRkRMRXRCUVdsQ0xFVkJRVEpDTzFGQlEycEVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1VVRkZlRU1zU1VGQlNTeFZRVUZWTEV0QlFVc3NZMEZCWXl4TlFVRk5MRVZCUVVVN1dVRkRka01zVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFTkJRVU1zUVVGQlF6dFpRVU40UXl4clFrRkRSU3hIUVVGSExFVkJRMGc3WjBKQlEwVXNTVUZCU1N4RlFVRkZMR0ZCUVdFc1dVRkJXVHRuUWtGREwwSXNVVUZCVVN4RlFVRkZMR05CUVdNc1RVRkJUVHRuUWtGRE9VSXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhWUVVGVk8yRkJRM3BDTEVOQlJVWXNRMEZCUXp0WlFVTkdMR1ZCUVdVN1UwRkRhRUk3VVVGRlJDeE5RVUZOTEUxQlFVMHNSMEZCUnl4cFFrRkJhVUlzUVVGQlF6dFJRVU5xUXl4SlFVRkpMRWxCUVVjc1IwRkJOa0lzVTBGQlV5eEJRVUZETzFGQlJUbERMRXRCUVVzc1RVRkJUU3hMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVVN1dVRkRjRU1zU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxMRXRCUVVzc1JVRkJSVHRuUWtGRGVFSXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZPMjlDUVVOdVF5eEpRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTNaRExHdENRVUZyUWl4SlFVRkhMRVZCUVVVN2QwSkJRM0pDTEVsQlFVa3NSVUZCUlN4aFFVRmhMRk5CUVZNN2QwSkJRelZDTEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTenQzUWtGRGNFSXNTVUZCU1N4RlFVRkZMRkZCUVZFN2QwSkJRMlFzVTBGQlV5eEZRVUZGTEVsQlFVazdkMEpCUTJZc1QwRkJUeXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNGQ1FVTjJRaXhEUVVGRExFTkJRVU03YjBKQlEwZ3NUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8ybENRVU5vUWp0aFFVTkdMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEV0QlFVc3NSVUZCUlR0blFrRkRMMElzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTzI5Q1FVTnVReXhKUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJSeXhEUVVGRExFTkJRVU03YjBKQlEzWkRMR3RDUVVGclFpeEpRVUZITEVWQlFVVTdkMEpCUTNKQ0xFbEJRVWtzUlVGQlJTeGhRVUZoTEU5QlFVODdkMEpCUXpGQ0xFOUJRVThzUlVGQlJTeExRVUZMTEVOQlFVTXNTMEZCU3p0M1FrRkRjRUlzU1VGQlNTeEZRVUZGTEZGQlFWRTdkMEpCUTJRc1UwRkJVeXhGUVVGRkxFbEJRVWs3ZDBKQlEyWXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUE8zRkNRVU4yUWl4RFFVRkRMRU5CUVVNN2IwSkJRMGdzVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMmxDUVVOb1FqdGhRVU5HTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExFOUJRVThzUlVGQlJUdG5Ra0ZEYWtNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8yOUNRVU5vUXl4SlFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRM1pETEd0Q1FVRnJRaXhKUVVGSExFVkJRVVU3ZDBKQlEzSkNMRlZCUVZVc1JVRkJSU3hQUVVGUE8zZENRVU51UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3hqUVVGak8zZENRVU5xUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVTg3Y1VKQlEzWkNMRU5CUVVNc1EwRkJRenR2UWtGRFNDeE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN2FVSkJRMmhDTzJGQlEwWXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzVFVGQlRTeEZRVUZGTzJkQ1FVTm9ReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3YjBKQlF5OUNMRWxCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGRrTXNhMEpCUVd0Q0xFbEJRVWNzUlVGQlJUdDNRa0ZEY2tJc1ZVRkJWU3hGUVVGRkxFMUJRVTA3ZDBKQlEyeENMRWxCUVVrc1JVRkJSU3hoUVVGaExHTkJRV003ZDBKQlEycERMRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zVDBGQlR6dHhRa0ZEZGtJc1EwRkJReXhEUVVGRE8yOUNRVU5JTEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRwUWtGRGFFSTdZVUZEUml4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eE5RVUZOTEVWQlFVVTdaMEpCUTJoRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdHZRa0ZETDBJc1NVRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU4yUXl4clFrRkJhMElzU1VGQlJ5eEZRVUZGTzNkQ1FVTnlRaXhWUVVGVkxFVkJRVVVzVFVGQlRUdDNRa0ZEYkVJc1NVRkJTU3hGUVVGRkxHRkJRV0VzWTBGQll6dDNRa0ZEYWtNc1QwRkJUeXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNGQ1FVTjJRaXhEUVVGRExFTkJRVU03YjBKQlEwZ3NUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8ybENRVU5vUWp0aFFVTkdMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEV0QlFVc3NSVUZCUlR0blFrRkRMMElzU1VGQlNUdHZRa0ZEUml4SlFVRkpMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdhVUpCUTNKQ0xFTkJRVU1zVDBGQlRUdHZRa0ZEVGl4SlFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRM1pETEd0Q1FVRnJRaXhKUVVGSExFVkJRVVU3ZDBKQlEzSkNMRlZCUVZVc1JVRkJSU3hMUVVGTE8zZENRVU5xUWl4SlFVRkpMRVZCUVVVc1lVRkJZU3hqUVVGak8zZENRVU5xUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVTg3Y1VKQlEzWkNMRU5CUVVNc1EwRkJRenR2UWtGRFNDeE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN2FVSkJRMmhDTzJGQlEwWXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzVDBGQlR5eEZRVUZGTzJkQ1FVTnFReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEZOQlFWTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRekZDTEUxQlFVMHNWVUZCVlN4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1FVRkJRenRuUWtGRGFFUXNTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHR2UWtGRFppeEpRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTNaRExHdENRVUZyUWl4SlFVRkhMRVZCUVVVN2QwSkJRM0pDTEZWQlFWVXNSVUZCUlN4UFFVRlBPM2RDUVVOdVFpeEpRVUZKTEVWQlFVVXNZVUZCWVN4alFVRmpPM2RDUVVOcVF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRMRTlCUVU4N2NVSkJRM1pDTEVOQlFVTXNRMEZCUXp0dlFrRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdhVUpCUTJoQ08yRkJRMFlzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRXRCUVVzc1RVRkJUU3hGUVVGRk8yZENRVU5vUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1lVRkRhRU1zVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SlFVRkpMRXRCUVVzc1dVRkJXU3hGUVVGRk8yZENRVU4wUXl4SlFVRkpMRU5CUVVNc1FVRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZaTEZWQlFWVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3YjBKQlEyNUVMRWxCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGRrTXNhMEpCUVd0Q0xFbEJRVWNzUlVGQlJUdDNRa0ZEY2tJc1NVRkJTU3hGUVVGRkxHRkJRV0VzWTBGQll6dDNRa0ZEYWtNc1ZVRkJWU3hGUVVGRk96UkNRVUZGTEZWQlFWVXNSVUZCUlN4TFFVRkxMRU5CUVVNc1MwRkJTenQ1UWtGQlJUdDNRa0ZEZGtNc1QwRkJUeXhGUVVGRkxFdEJRVXNzUTBGQlF5eFBRVUZQTzNGQ1FVTjJRaXhEUVVGRExFTkJRVU03YjBKQlEwZ3NUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8ybENRVU5vUWp0aFFVTkdMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEZWQlFWVXNSVUZCUlR0blFrRkRjRU1zU1VGQlNTeERRVUZETEVGQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJXU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMjlDUVVOcVJDeEpRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTNaRExHdENRVUZyUWl4SlFVRkhMRVZCUVVVN2QwSkJRM0pDTEVsQlFVa3NSVUZCUlN4aFFVRmhMR05CUVdNN2QwSkJRMnBETEZWQlFWVXNSVUZCUlRzMFFrRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVczdlVUpCUVVVN2QwSkJRM0pETEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUenR4UWtGRGRrSXNRMEZCUXl4RFFVRkRPMjlDUVVOSUxFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0cFFrRkRhRUk3WVVGRFJpeE5RVUZOTzJkQ1FVTk1MRXRCUVVzc1YwRkJWeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzJGQlEzcENPMU5CUTBZN1VVRkZSQ3hQUVVGUE8xbEJRVVVzVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4TFFVRkxPMWxCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTzFOQlFVVXNRMEZCUXp0TFFVTndSRHRKUVVWRUxFRkJRVlVzVFVGQlRTeEhRVUZITEVOQlEycENMRXRCUVdFc1JVRkRZaXhWUVVFMFFpeEZRVU0xUWl4UFFVRTRRaXhIUVVVNVFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGTExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1dVRkRNVU1zVlVGQlZUdFpRVU5XTEVsQlFVa3NSVUZCUlN4aFFVRmhMR05CUVdNN1dVRkRha01zUjBGQlJ5eFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNN1UwRkRMMElzUTBGQlF5eERRVUZETzBsQlJVd3NVMEZCVXl4RFFVRkRMRXRCUVhGQ0xFVkJRVVU3VVVGREwwSXNUMEZCVHl4SlFVRkpMRk5CUVZNc1EwRkJRenRaUVVOdVFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTFvc1RVRkJUU3hGUVVGRk8yMUNRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUVHRuUWtGQlJTeExRVUZMTzJGQlFVTTdVMEZEY2tNc1EwRkJReXhEUVVGRE8wdEJRMG83U1VGRlJDeExRVUZMTEVOQlFVTXNUMEZCT0VJc1JVRkJSVHRSUVVOd1F5eFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1dVRkJSU3hKUVVGSkxFVkJRVVVzVDBGQlR6dFpRVUZGTEVkQlFVY3NWVUZCVlN4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRE8xTkJRVVVzUTBGQlF5eERRVUZETzB0QlF6RkZPMGxCUTBRc1IwRkJSeXhEUVVGRExFOUJRVGhDTEVWQlFVVTdVVUZEYkVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzFsQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzN1dVRkJSU3hIUVVGSExGVkJRVlVzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXp0VFFVRkZMRU5CUVVNc1EwRkJRenRMUVVONFJUdEpRVU5FTEVsQlFVa3NRMEZCUXl4UFFVRTRRaXhGUVVGRk8xRkJRMjVETEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTzFsQlFVVXNSMEZCUnl4VlFVRlZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU03VTBGQlJTeERRVUZETEVOQlFVTTdTMEZEZWtVN1NVRkRSQ3hKUVVGSkxFTkJRVU1zVDBGQk9FSXNSVUZCUlR0UlFVTnVReXhQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdXVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUVHRaUVVGRkxFZEJRVWNzVlVGQlZTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRPMU5CUVVVc1EwRkJReXhEUVVGRE8wdEJRM3BGTzBsQlEwUXNTMEZCU3l4RFFVRkRMRXRCUVdFc1JVRkJSU3hQUVVFNFFpeEZRVUZGTzFGQlEyNUVMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dFpRVU53UWl4SlFVRkpMRVZCUVVVc1QwRkJUenRaUVVOaUxFdEJRVXNzUlVGQlJTeExRVUZMTzFsQlExb3NSMEZCUnl4VlFVRlZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU03VTBGREwwSXNRMEZCUXl4RFFVRkRPMHRCUTBvN1NVRkZSQ3hWUVVGVkxFTkJRVU1zUzBGQllTeEZRVUZGTEU5QlFUaENMRVZCUVVVN1VVRkRlRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRPMWxCUTNCQ0xFbEJRVWtzUlVGQlJTeFpRVUZaTzFsQlEyeENMRXRCUVVzc1JVRkJSU3hMUVVGTE8xbEJRMW9zUjBGQlJ5eFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNN1UwRkRMMElzUTBGQlF5eERRVUZETzB0QlEwbzdTVUZGUkN4UlFVRlJMRU5CUVVNc1MwRkJZU3hGUVVGRkxFOUJRVGhDTEVWQlFVVTdVVUZEZEVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETzFsQlEzQkNMRWxCUVVrc1JVRkJSU3hWUVVGVk8xbEJRMmhDTEV0QlFVc3NSVUZCUlN4TFFVRkxPMWxCUTFvc1IwRkJSeXhWUVVGVkxGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTTdVMEZETDBJc1EwRkJReXhEUVVGRE8wdEJRMG83U1VGRlJDeEhRVUZITEVOQlFVTXNVMEZCYVVJc1JVRkJSU3hQUVVFNFFpeEZRVUZGTzFGQlEzSkVMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dFpRVU53UWl4SlFVRkpMRVZCUVVVc1MwRkJTenRaUVVOWUxFdEJRVXNzUlVGQlJTeFRRVUZUTzFsQlEyaENMRWRCUVVjc1ZVRkJWU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETzFOQlF5OUNMRU5CUVVNc1EwRkJRenRMUVVOS08wbEJSVVFzUjBGQlJ5eERRVUZETEZOQlFXbENMRVZCUVVVc1QwRkJPRUlzUlVGQlJUdFJRVU55UkN4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRGNFSXNTVUZCU1N4RlFVRkZMRXRCUVVzN1dVRkRXQ3hMUVVGTExFVkJRVVVzVTBGQlV6dFpRVU5vUWl4SFFVRkhMRlZCUVZVc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVVNN1MwRkRTanRKUVVWRUxFMUJRVTBzUTBGQlF5eEhRVUZYTEVWQlFVVXNUMEZCT0VJc1JVRkJSVHRSUVVOc1JDeFBRVUZQTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRGFrUTdTVUZOUkN4UlFVRlJMRWRCUVVjc1EwRkJReXhQUVVFNFFpeEhRVU40UXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVE5ETEVsQlFVa3NSMEZCUnl4SlFVTk1MRWxCUVVrc1UwRkJVeXhEUVVGRE8xbEJRMW9zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1R0WlFVTmFMRTFCUVUwc1JVRkJSVHR0UWtGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwN1owSkJRVVU3YjBKQlFVVXNTVUZCU1N4RlFVRkZMRTFCUVUwN2FVSkJRVVU3WVVGQlF6dFRRVU5vUkN4RFFVRkRMRU5CUVVNN1NVRkZUQ3hKUVVGSkxFOUJRVThzUjBGQlJ6dFJRVU5hTEU5QlFVOHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJTeXhGUVVGRkxFTkJRVU1zU1VGQlNTeExRVUZMTEU5QlFVOHNRMEZCUXl4RFFVRkRPMHRCUXpkRU8wbEJRMFFzU1VGQlNTeExRVUZMTEVkQlFVYzdVVUZEVml4UFFVRlBMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVXNzUlVGQlJTeERRVUZETEVsQlFVa3NTMEZCU3l4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVNelJEdEpRVU5FTEVsQlFVa3NUVUZCVFN4SFFVRkhPMUZCUTFnc1QwRkJUeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZMTEVWQlFVVXNRMEZCUXl4SlFVRkpMRXRCUVVzc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRE5VUTdTVUZEUkN4SlFVRkpMRTFCUVUwc1IwRkJSenRSUVVOWUxFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCU3l4RlFVRkZMRU5CUVVNc1NVRkJTU3hMUVVGTExFMUJRVTBzUTBGQlF5eERRVUZETzB0QlF6VkVPMGxCUTBRc1NVRkJTU3hUUVVGVExFZEJRVWM3VVVGRFpDeEpRVUZKTEVkQlFVY3NSMEZCYTBJc1NVRkJTU3hCUVVGRE8xRkJRemxDTEV0QlFVc3NUVUZCVFN4RlFVRkZMRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVVTdXVUZEYWtNc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeExRVUZMTEV0QlFVc3NSVUZCUlR0blFrRkRja0lzU1VGQlNTeEhRVUZITEV0QlFVc3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRE8yRkJRM0JFTzFOQlEwWTdVVUZEUkN4UFFVRlBMRWRCUVVjc1EwRkJRenRMUVVOYU8wbEJRMFFzU1VGQlNTeFRRVUZUTEVkQlFVYzdVVUZEWkN4SlFVRkpMRWRCUVVjc1IwRkJhMElzU1VGQlNTeEJRVUZETzFGQlF6bENMRXRCUVVzc1RVRkJUU3hGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVVN1dVRkRha01zU1VGQlNTeEZRVUZGTEVOQlFVTXNTVUZCU1N4TFFVRkxMRXRCUVVzc1JVRkJSVHRuUWtGRGNrSXNTVUZCU1N4SFFVRkhMRXRCUVVzc1NVRkJTU3hKUVVGSkxFVkJRVVVzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4RlFVRkZMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETzJGQlEzQkVPMU5CUTBZN1VVRkRSQ3hQUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hTzBsQlJVUXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhOUVVGM1FpeEhRVUZuUWp0UlFVTjJSQ3hQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETzFsQlEyNUNMRTFCUVUwc1JVRkJSU3hGUVVGRk8xbEJRMVlzVVVGQlVTeEZRVUZGTEhGQ1FVRnhRaXhEUVVGRExGTkJRVk03V1VGRGVrTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZETDBJc1EwRkJReXhEUVVGRE8wdEJRMG9zUTBGQlF6dERRVU5JTzBGQlowSkVMRk5CUVZNc2EwSkJRV3RDTEVOQlFVTXNSMEZCVnl4RlFVRkZMRWxCUVZrc1JVRkJSVHRKUVVOeVJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNUVUZCVFN4QlFVRkRPMGxCUTJoRkxFMUJRVTBzV1VGQldTeEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVGQlFVTTdTVUZEYkVVc1RVRkJUU3hSUVVGUkxFZEJRVWNzVjBGQlZ5eEhRVUZITEZsQlFWa3NSMEZCUnl4WFFVRlhMRWRCUVVjc1dVRkJXU3hCUVVGRE8wbEJRM3BGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRkZCUVZFc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRVUZCUXp0SlFVTm9SU3hOUVVGTkxFOUJRVThzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFRkJRVU03U1VGRGJFVXNUMEZCVHl4QlFVRkRMRTFCUVUwc1IwRkJSeXhQUVVGUExFZEJRVWtzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU03UTBGRGNFUTdRVUZQVFN4TlFVRk5MRk5CUVZNc1UwRkJVeXhQUVVGUE8wbEJRM0JETEUxQlFVMHNRMEZCUXl4TFFVRnBRaXhGUVVFeVFqdFJRVU5xUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4QlFVRkRPMUZCUTNoRExFbEJRVWtzVlVGQlZTeExRVUZMTEdOQlFXTXNUVUZCVFN4RlFVRkZPMWxCUTNaRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03V1VGRGVFTXNhMEpCUVd0Q0xFZEJRVWNzUlVGQlJUdG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxHRkJRV0VzV1VGQldUdG5Ra0ZETDBJc1VVRkJVU3hGUVVGRkxHTkJRV01zVFVGQlRUdG5Ra0ZET1VJc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFZRVUZWTzJGQlEzcENMRU5CUVVNc1EwRkJRenRaUVVOSUxHVkJRV1U3VTBGRGFFSTdVVUZGUkN4SlFVRkpMRWxCUVVjc1IwRkJOa0lzVTBGQlV5eEJRVUZETzFGQlF6bERMRTFCUVUwc1RVRkJUU3hIUVVGSExHbENRVUZwUWl4QlFVRkRPMUZCUldwRExFdEJRVXNzVFVGQlRTeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVVU3V1VGRGNFTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExFdEJRVXNzUlVGQlJUdG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExFdEJRVXNzVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHR2UWtGREwwSXNTVUZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMlF5eHJRa0ZCYTBJc1NVRkJSeXhGUVVGRk8zZENRVU55UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3haUVVGWk8zZENRVU12UWl4UlFVRlJMRVZCUVVVc1UwRkJVenQzUWtGRGJrSXNVVUZCVVN4RlFVRkZMRTlCUVU4N2QwSkJRMnBDTEU5QlFVOHNSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUenR4UWtGRGRrSXNRMEZCUXl4RFFVRkRPMjlDUVVOSUxFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0cFFrRkRhRUk3WVVGRFJpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFVkJRVVU3WjBKQlF5OUNMRTFCUVUwc1VVRkJVU3hIUVVGSExFdEJRVXNzUTBGQlF5eFRRVUZUTEVkQlF6VkNMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NSMEZEZUVJc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeExRVUZMTEVOQlFVTXNTMEZCU3l4QlFVRkRPMmRDUVVNNVFpeEpRVUZKTEZGQlFWRXNSVUZCUlR0dlFrRkRXaXhKUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1NVRkJSeXhEUVVGRExFTkJRVU03YjBKQlEzWkRMR3RDUVVGclFpeEpRVUZITEVWQlFVVTdkMEpCUTNKQ0xFbEJRVWtzUlVGQlJTeGhRVUZoTEZOQlFWTTdkMEpCUXpWQ0xFOUJRVThzUlVGQlJTeExRVUZMTEVOQlFVTXNTMEZCU3p0M1FrRkRjRUlzU1VGQlNTeEZRVUZGTEZGQlFWRTdkMEpCUTJRc1UwRkJVeXhGUVVGRkxFdEJRVXNzUTBGQlF5eFRRVUZUTzNkQ1FVTXhRaXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVODdjVUpCUTNaQ0xFTkJRVU1zUTBGQlF6dHZRa0ZEU0N4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03YVVKQlEyaENPMkZCUTBZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RlFVRkZPMmRDUVVNdlFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4TFFVRkxMRU5CUVVNc1UwRkJVeXhIUVVNeFFpeExRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRM2hDTEV0QlFVc3NRMEZCUXl4SlFVRkpMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUVVGQlF6dG5Ra0ZET1VJc1NVRkJTU3hOUVVGTkxFVkJRVVU3YjBKQlExWXNTVUZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVOMlF5eHJRa0ZCYTBJc1NVRkJSeXhGUVVGRk8zZENRVU55UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3hQUVVGUE8zZENRVU14UWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFdEJRVXM3ZDBKQlEzQkNMRWxCUVVrc1JVRkJSU3hSUVVGUk8zZENRVU5rTEZOQlFWTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1UwRkJVenQzUWtGRE1VSXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhQUVVGUE8zRkNRVU4yUWl4RFFVRkRMRU5CUVVNN2IwSkJRMGdzVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMmxDUVVOb1FqdGhRVU5HTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExGbEJRVmtzUlVGQlJUdG5Ra0ZEZEVNc1NVRkJTU3hyUWtGQmEwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVN2IwSkJRM0pFTEVsQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFdEJRVXNzUlVGQlJTeEpRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRka01zYTBKQlFXdENMRWxCUVVjc1JVRkJSVHQzUWtGRGNrSXNTVUZCU1N4RlFVRkZMR0ZCUVdFc1pVRkJaVHQzUWtGRGJFTXNWVUZCVlN4RlFVRkZMRXRCUVVzc1EwRkJReXhMUVVGTE8zZENRVU4yUWl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFOUJRVTg3Y1VKQlEzWkNMRU5CUVVNc1EwRkJRenR2UWtGRFNDeE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN2FVSkJRMmhDTzJGQlEwWXNUVUZCVFR0blFrRkRUQ3hMUVVGTExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0aFFVTjZRanRUUVVOR08xRkJSVVFzVDBGQlR6dFpRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1MwRkJTenRaUVVGRkxFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNTVUZCU1R0VFFVRkZMRU5CUVVNN1MwRkRjRVE3U1VGRlJDeFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVRkRMRTFCUVhkQ0xFZEJRV2RDTzFGQlEzWkVMRTlCUVU4c1NVRkJTU3hUUVVGVExFTkJRVU03V1VGRGJrSXNUVUZCVFN4RlFVRkZMRVZCUVVVN1dVRkRWaXhSUVVGUkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1UwRkJVenRaUVVONlF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVVNN1MwRkRTaXhEUVVGRE8wbEJSVVlzUjBGQlJ5eERRVUZETEV0QlFXRXNSVUZCUlN4UFFVRTRRaXhGUVVGRk8xRkJRMnBFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUlN4VlFVRlZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzB0QlEzWkZPMGxCUTBRc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdTVUZGWml4RlFVRkZMRU5CUVVNc1MwRkJZU3hGUVVGRkxFOUJRVGhDTEVWQlFVVTdVVUZEYUVRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxGVkJRVlVzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRlRVU3U1VGRlJDeEhRVUZITEVOQlFVTXNTMEZCWVN4RlFVRkZMRTlCUVRoQ0xFVkJRVVU3VVVGRGFrUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1N4RlFVRkZMRlZCUVZVc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEZGtVN1NVRkRSQ3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXp0SlFVVm1MRVZCUVVVc1EwRkJReXhMUVVGaExFVkJRVVVzVDBGQk9FSXNSVUZCUlR0UlFVTm9SQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzVlVGQlZTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONFJUdEpRVVZFTEVGQlFWVXNVVUZCVVN4RFFVTm9RaXhKUVVGdFFpeEZRVU51UWl4TFFVRmhMRVZCUTJJc1UwRkJhMElzUlVGRGJFSXNUMEZCWjBJc1JVRkRhRUk3VVVGRFFTeFBRVUZQTEVsQlFVa3NVMEZCVXl4RFFVRkRPMWxCUTI1Q0xFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEV2l4TlFVRk5MRVZCUVVVN2JVSkJRMGdzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5PMmRDUVVOdVFqdHZRa0ZEUlN4SlFVRkpPMjlDUVVOS0xFdEJRVXM3YjBKQlEwd3NVMEZCVXp0dlFrRkRWQ3hQUVVGUExFVkJRVVVzVlVGQlZTeFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRPMmxDUVVOeVF6dGhRVU5HTzFOQlEwWXNRMEZCUXl4RFFVRkRPMHRCUTBvN1NVRkZSQ3hUUVVGVExFTkJRVU1zUzBGQmNVSXNSVUZCUlR0UlFVTXZRaXhQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETzFsQlEyNUNMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWs3V1VGRFdpeE5RVUZOTEVWQlFVVTdiVUpCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTzJkQ1FVRkZMRXRCUVVzN1lVRkJRenRUUVVOeVF5eERRVUZETEVOQlFVTTdTMEZEU2p0SlFVVkVMRWRCUVVjc1EwRkJReXhQUVVFNFFpeEZRVUZGTzFGQlEyeERMRTlCUVU4c1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dFpRVU53UWl4SlFVRkpMRVZCUVVVc1MwRkJTenRaUVVOWUxFOUJRVThzUlVGQlJTeFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNN1UwRkRja01zUTBGQlF5eERRVUZETzB0QlEwbzdTVUZGUkN4UlFVRlJMRU5CUVVNc1QwRkJPRUlzUlVGQlJUdFJRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRGNFSXNTVUZCU1N4RlFVRkZMRXRCUVVzN1dVRkRXQ3hMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5TTEZOQlFWTXNSVUZCUlN4TFFVRkxPMWxCUTJoQ0xFOUJRVThzUlVGQlJTeFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNN1UwRkRja01zUTBGQlF5eERRVUZETzB0QlEwbzdTVUZGUkN4UlFVRlJMRU5CUVVNc1QwRkJPRUlzUlVGQlJUdFJRVU4yUXl4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRGNFSXNTVUZCU1N4RlFVRkZMRXRCUVVzN1dVRkRXQ3hMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5TTEZOQlFWTXNSVUZCUlN4TFFVRkxPMWxCUTJoQ0xFOUJRVThzUlVGQlJTeFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNN1UwRkRja01zUTBGQlF5eERRVUZETzB0QlEwbzdTVUZGUkN4WFFVRlhMRU5CUVVNc1QwRkJPRUlzUlVGQlJUdFJRVU14UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03V1VGRGNFSXNTVUZCU1N4RlFVRkZMRXRCUVVzN1dVRkRXQ3hMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5TTEZOQlFWTXNSVUZCUlN4SlFVRkpPMWxCUTJZc1QwRkJUeXhGUVVGRkxGVkJRVlVzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXp0VFFVTnlReXhEUVVGRExFTkJRVU03UzBGRFNqdEpRVVZFTEZkQlFWY3NRMEZCUXl4UFFVRTRRaXhGUVVGRk8xRkJRekZETEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVOd1FpeEpRVUZKTEVWQlFVVXNTMEZCU3p0WlFVTllMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJRMUlzVTBGQlV5eEZRVUZGTEVsQlFVazdXVUZEWml4UFFVRlBMRVZCUVVVc1ZVRkJWU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETzFOQlEzSkRMRU5CUVVNc1EwRkJRenRMUVVOS08wbEJSVVFzVlVGQlZTeERRVUZETEV0QlFXRXNSVUZCUlN4UFFVRTRRaXhGUVVGRk8xRkJRM2hFTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJRenRaUVVOd1FpeEpRVUZKTEVWQlFVVXNXVUZCV1R0WlFVTnNRaXhMUVVGTExFVkJRVVVzUzBGQlN6dFpRVU5hTEU5QlFVOHNSVUZCUlN4VlFVRlZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU03VTBGRGNrTXNRMEZCUXl4RFFVRkRPMHRCUTBvN1NVRkZSQ3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0SlFVVjJRaXhKUVVGSkxGRkJRVkVzUjBGQlJ6dFJRVU5pTEVsQlFVa3NSMEZCUnl4SFFVRnJRaXhKUVVGSkxFRkJRVU03VVVGRE9VSXNTMEZCU3l4TlFVRk5MRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUlR0WlFVTnFReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RlFVRkZPMmRDUVVOeVFpeEpRVUZKTEVkQlFVY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVWQlFVVXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU03WVVGRGNFUTdVMEZEUmp0UlFVTkVMRTlCUVU4c1IwRkJSeXhEUVVGRE8wdEJRMW83U1VGRlJDeEpRVUZKTEZGQlFWRXNSMEZCUnp0UlFVTmlMRWxCUVVrc1IwRkJSeXhIUVVGclFpeEpRVUZKTEVGQlFVTTdVVUZET1VJc1MwRkJTeXhOUVVGTkxFVkJRVVVzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJSVHRaUVVOcVF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4SlFVRkpMRXRCUVVzc1MwRkJTeXhGUVVGRk8yZENRVU55UWl4SlFVRkpMRWRCUVVjc1MwRkJTeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRVZCUVVVc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eExRVUZMTEVOQlFVTTdZVUZEY0VRN1UwRkRSanRSUVVORUxFOUJRVThzUjBGQlJ5eERRVUZETzB0QlExbzdTVUZGUkN4SlFVRkpMRXRCUVVzc1IwRkJSenRSUVVOV0xFOUJRVThzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNSMEZCU3l4RlFVRkZMRU5CUVVNc1NVRkJTU3hMUVVGTExFdEJRVXNzUTBGQlF5eERRVUZETzB0QlF6TkVPME5CUTBZN1FVRmpUU3hOUVVGTkxGTkJRVk1zVTBGQlV5eFBRVUZQTzBsQlEzQkRMRTFCUVUwc1EwRkJReXhMUVVGcFFpeEZRVUV5UWp0UlFVTnFSQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJReXhCUVVGRE8xRkJRM2hETEVsQlFVa3NWVUZCVlN4TFFVRkxMR05CUVdNc1RVRkJUU3hGUVVGRk8xbEJRM1pETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEVGQlFVTTdXVUZEZUVNc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlR0blFrRkRja0lzU1VGQlNTeEZRVUZGTEdGQlFXRXNXVUZCV1R0blFrRkRMMElzVVVGQlVTeEZRVUZGTEdOQlFXTXNUVUZCVFR0blFrRkRPVUlzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4VlFVRlZPMkZCUTNwQ0xFTkJRVU1zUTBGQlF6dFpRVU5JTEdWQlFXVTdVMEZEYUVJN1VVRkRSQ3hQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNaQ08wbEJSVVFzVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4TlFVRjNRaXhIUVVGblFqdFJRVU4yUkN4UFFVRlBMRWxCUVVrc1UwRkJVeXhEUVVGRE8xbEJRMjVDTEZGQlFWRXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eFRRVUZUTzFsQlEzcERMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXk5Q0xFTkJRVU1zUTBGQlF6dExRVU5LTEVOQlFVTTdRMEZEU0R0QlFXRk5MRTFCUVUwc1ZVRkJWU3hUUVVGVExFOUJRVTg3U1VGRGNrTXNUVUZCVFN4RFFVRkRMRXRCUVdsQ0xFVkJRVFJDTzFGQlEyeEVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1VVRkRlRU1zU1VGQlNTeFZRVUZWTEV0QlFVc3NZMEZCWXl4UFFVRlBMRVZCUVVVN1dVRkRlRU1zVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFTkJRVU1zUVVGQlF6dFpRVU40UXl4clFrRkJhMElzUjBGQlJ5eEZRVUZGTzJkQ1FVTnlRaXhKUVVGSkxFVkJRVVVzWVVGQllTeFpRVUZaTzJkQ1FVTXZRaXhSUVVGUkxFVkJRVVVzWTBGQll5eFBRVUZQTzJkQ1FVTXZRaXhSUVVGUkxFVkJRVVVzUjBGQlJ5eERRVUZETEZWQlFWVTdZVUZEZWtJc1EwRkJReXhEUVVGRE8xbEJRMGdzWlVGQlpUdFRRVU5vUWp0UlFVTkVMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZGtJN1NVRkZSQ3hQUVVGUExFMUJRVTBzUjBGQlJ5eERRVUZETEUxQlFYZENMRWRCUVdsQ08xRkJRM2hFTEU5QlFVOHNTVUZCU1N4VlFVRlZMRU5CUVVNN1dVRkRjRUlzVVVGQlVTeEZRVUZGTEhGQ1FVRnhRaXhEUVVGRExGVkJRVlU3V1VGRE1VTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZETDBJc1EwRkJReXhEUVVGRE8wdEJRMG9zUTBGQlF6dERRVU5JTzBGQmFVSk5MRTFCUVUwc1QwRkJUeXhUUVVGVExFOUJRVTg3U1VGRGJFTXNUVUZCVFN4RFFVRkRMRXRCUVdsQ0xFVkJRVzlETzFGQlF6RkVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1VVRkZlRU1zU1VGQlNTeFZRVUZWTEV0QlFVc3NZMEZCWXl4SlFVRkpMRVZCUVVVN1dVRkRja01zVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1EwRkJReXhMUVVGTExFTkJRVU1zUVVGQlF6dFpRVU40UXl4clFrRkJhMElzUjBGQlJ5eEZRVUZGTzJkQ1FVTnlRaXhKUVVGSkxFVkJRVVVzWVVGQllTeFpRVUZaTzJkQ1FVTXZRaXhSUVVGUkxFVkJRVVVzWTBGQll5eEpRVUZKTzJkQ1FVTTFRaXhSUVVGUkxFVkJRVVVzUjBGQlJ5eERRVUZETEZWQlFWVTdZVUZEZWtJc1EwRkJReXhEUVVGRE8xbEJRMGdzWlVGQlpUdFRRVU5vUWp0UlFVVkVMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVNdlFpeE5RVUZOTEVsQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1pVRkJaU3hEUVVGRExFdEJRVXNzUTBGQlF5eEJRVUZETzFsQlEzaERMR3RDUVVGclFpeEpRVUZITEVWQlFVVTdaMEpCUTNKQ0xFbEJRVWtzUlVGQlJTeGhRVUZoTEZsQlFWazdZVUZEYUVNc1EwRkJReXhEUVVGRE8xbEJRMGdzWlVGQlpUdFRRVU5vUWp0UlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExHbENRVUZwUWl4QlFVRkRPMUZCUTJwRExFbEJRVWtzU1VGQlJ5eEhRVUUyUWl4VFFVRlRMRUZCUVVNN1VVRkZPVU1zUzBGQlN5eE5RVUZOTEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlJUdFpRVU53UXl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzUzBGQlN5eEZRVUZGTzJkQ1FVTjRRaXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUlVGQlJUdHZRa0ZEZEVNc1NVRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWxCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU4yUXl4clFrRkJhMElzU1VGQlJ5eEZRVUZGTzNkQ1FVTnlRaXhKUVVGSkxFVkJRVVVzWVVGQllTeFRRVUZUTzNkQ1FVTTFRaXhQUVVGUExFVkJRVVVzUzBGQlN5eERRVUZETEU5QlFVODdkMEpCUTNSQ0xGTkJRVk1zUlVGQlJTeEpRVUZKTzNkQ1FVTm1MRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zUzBGQlN6dDNRa0ZEY0VJc1NVRkJTU3hGUVVGRkxFMUJRVTA3Y1VKQlEySXNRMEZCUXl4RFFVRkRPMjlDUVVOSUxFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0cFFrRkRhRUk3WVVGRFJpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFVkJRVVU3WjBKQlF5OUNMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVGRk8yOUNRVU4wUXl4SlFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCUnl4RFFVRkRMRU5CUVVNN2IwSkJRM1pETEd0Q1FVRnJRaXhKUVVGSExFVkJRVVU3ZDBKQlEzSkNMRWxCUVVrc1JVRkJSU3hoUVVGaExFOUJRVTg3ZDBKQlF6RkNMRTlCUVU4c1JVRkJSU3hMUVVGTExFTkJRVU1zVDBGQlR6dDNRa0ZEZEVJc1UwRkJVeXhGUVVGRkxFbEJRVWs3ZDBKQlEyWXNUMEZCVHl4RlFVRkZMRXRCUVVzc1EwRkJReXhMUVVGTE8zZENRVU53UWl4SlFVRkpMRVZCUVVVc1RVRkJUVHR4UWtGRFlpeERRVUZETEVOQlFVTTdiMEpCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzJsQ1FVTm9RanRoUVVOR0xFMUJRVTA3WjBKQlEwd3NTMEZCU3l4WFFVRlhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03WVVGRGVrSTdVMEZEUmp0UlFVVkVMRTlCUVU4N1dVRkRUQ3hOUVVGTkxFVkJRVVVzVFVGQlRTeERRVUZETEV0QlFVczdXVUZEY0VJc1MwRkJTeXhGUVVGRkxFbEJRVWtzU1VGQlNTeERRVUZETEVGQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJWU3hQUVVGUExFVkJRVVVzUTBGQlF6dFRRVU5vUkN4RFFVRkRPMHRCUTBnN1NVRkZSQ3hUUVVGVExFTkJRVU1zUzBGQmJVSXNSVUZCUlR0UlFVTTNRaXhQUVVGUExFbEJRVWtzVDBGQlR5eERRVUZETzFsQlEycENMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWs3V1VGRFdpeE5RVUZOTEVWQlFVVTdiVUpCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTzJkQ1FVRkZMRXRCUVVzN1lVRkJRenRUUVVOeVF5eERRVUZETEVOQlFVTTdTMEZEU2p0SlFVVkVMRWRCUVVjc1EwRkJReXhQUVVGaExFVkJRVVVzVDBGQk9FSXNSVUZCUlR0UlFVTnFSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTTdXVUZEY0VJc1NVRkJTU3hGUVVGRkxFdEJRVXM3V1VGRFdDeExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVONFFpeFBRVUZQTEVWQlFVVXNWVUZCVlN4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRE8xTkJRM0pETEVOQlFVTXNRMEZCUXp0TFFVTktPMGxCUlVRc1IwRkJSeXhEUVVGRExFOUJRV0VzUlVGQlJTeFBRVUU0UWl4RlFVRkZPMUZCUTJwRUxFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0WlFVTndRaXhKUVVGSkxFVkJRVVVzUzBGQlN6dFpRVU5ZTEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1QwRkJUeXhGUVVGRk8xbEJRM2hDTEU5QlFVOHNSVUZCUlN4VlFVRlZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU03VTBGRGNrTXNRMEZCUXl4RFFVRkRPMHRCUTBvN1NVRkZSQ3hKUVVGSkxFOUJRVThzUjBGQlJ6dFJRVU5hTEVsQlFVa3NSMEZCUnl4SFFVRnJRaXhKUVVGSkxFRkJRVU03VVVGRE9VSXNTMEZCU3l4TlFVRk5MRVZCUVVVc1NVRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUlR0WlFVTnFReXhKUVVGSkxFVkJRVVVzUTBGQlF5eEpRVUZKTEV0QlFVc3NTMEZCU3l4RlFVRkZPMmRDUVVOeVFpeEpRVUZKTEVkQlFVY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVWQlFVVXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU03WVVGRGNFUTdVMEZEUmp0UlFVVkVMRTlCUVU4c1IwRkJSeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03UzBGRE0wTTdTVUZGUkN4SlFVRkpMRTlCUVU4c1IwRkJSenRSUVVOYUxFbEJRVWtzUjBGQlJ5eEhRVUZyUWl4SlFVRkpMRUZCUVVNN1VVRkRPVUlzUzBGQlN5eE5RVUZOTEVWQlFVVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlJUdFpRVU5xUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhKUVVGSkxFdEJRVXNzUzBGQlN5eEZRVUZGTzJkQ1FVTnlRaXhKUVVGSkxFZEJRVWNzUzBGQlN5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFVkJRVVVzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNN1lVRkRjRVE3VTBGRFJqdFJRVVZFTEU5QlFVOHNSMEZCUnl4SlFVRkpMRWxCUVVrc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRNME03U1VGRlJDeFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVRkRMRTFCUVhkQ0xFZEJRV003VVVGRGNrUXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJRenRaUVVOcVFpeE5RVUZOTEVWQlFVVXNSVUZCUlR0WlFVTldMRkZCUVZFc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXl4UFFVRlBPMWxCUTNaRExFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJReTlDTEVOQlFVTXNRMEZCUXp0TFFVTktMRU5CUVVNN1EwRkRTRHRCUVdGTkxFMUJRVTBzV1VGQldTeFRRVUZUTEU5QlFVODdTVUZEZGtNc1RVRkJUU3hEUVVGRExFdEJRV2xDTEVWQlFXOURPMUZCUXpGRUxFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03VVVGRGVFTXNTVUZCU1N4VlFVRlZMRXRCUVVzc1kwRkJZeXhUUVVGVExFVkJRVVU3V1VGRE1VTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0WlFVTjRReXhyUWtGQmEwSXNSMEZCUnl4RlFVRkZPMmRDUVVOeVFpeEpRVUZKTEVWQlFVVXNZVUZCWVN4WlFVRlpPMmRDUVVNdlFpeFJRVUZSTEVWQlFVVXNZMEZCWXl4VFFVRlRPMmRDUVVOcVF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RFFVRkRMRlZCUVZVN1lVRkRla0lzUTBGQlF5eERRVUZETzFsQlEwZ3NaVUZCWlR0VFFVTm9RanRSUVVORUxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRka0k3U1VGRFJDeE5RVUZOTEVOQlFXMUNPMGxCUlhwQ0xFOUJRVThzVFVGQlRTeEhRVUZITEVOQlFVTXNUVUZCZDBJc1IwRkJiVUk3VVVGRE1VUXNUMEZCVHl4SlFVRkpMRmxCUVZrc1EwRkJRenRaUVVOMFFpeFJRVUZSTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zV1VGQldUdFpRVU0xUXl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEUxQlFVMHNRMEZCUXp0VFFVTXZRaXhEUVVGRExFTkJRVU03UzBGRFNpeERRVUZETzBOQlEwZzdRVUZoVFN4TlFVRk5MRTlCUVU4c1UwRkJVeXhQUVVGUE8wbEJRMnhETEUxQlFVMHNRMEZCUXl4TFFVRnBRaXhGUVVGdlF6dFJRVU14UkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4QlFVRkRPMUZCUTNoRExFbEJRVWtzVlVGQlZTeExRVUZMTEdOQlFXTXNTVUZCU1N4RlFVRkZPMWxCUTNKRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03V1VGRGVFTXNhMEpCUVd0Q0xFZEJRVWNzUlVGQlJUdG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxHRkJRV0VzV1VGQldUdG5Ra0ZETDBJc1VVRkJVU3hGUVVGRkxHTkJRV01zU1VGQlNUdG5Ra0ZETlVJc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFZRVUZWTzJGQlEzcENMRU5CUVVNc1EwRkJRenRaUVVOSUxHVkJRV1U3VTBGRGFFSTdVVUZEUkN4UFFVRlBMRWRCUVVjc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEzWkNPMGxCUTBRc1QwRkJUeXhOUVVGTkxFZEJRVWNzUTBGQlF5eE5RVUYzUWl4SFFVRmpPMUZCUTNKRUxFOUJRVThzU1VGQlNTeFBRVUZQTEVOQlFVTTdXVUZEYWtJc1VVRkJVU3hGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRTlCUVU4N1dVRkRka01zUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGREwwSXNRMEZCUXl4RFFVRkRPMHRCUTBvc1EwRkJRenREUVVOSU8wRkJZVTBzVFVGQlRTeE5RVUZOTEZOQlFWTXNUMEZCVHp0SlFVVnFReXhKUVVGSkxFZEJRVk1zU1VGQlNTeERRVUZETzBsQlEyeENMRTFCUVUwc1EwRkJReXhMUVVGcFFpeEZRVUZ2UXp0UlFVTXhSQ3hQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNaQ08wbEJRMFFzVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZCUXl4TlFVRjNRaXhIUVVGaE8xRkJRM0JFTEU5QlFVOHNTVUZCU1N4TlFVRk5MRU5CUVVNN1dVRkRhRUlzVVVGQlVTeEZRVUZGTEhGQ1FVRnhRaXhEUVVGRExFMUJRVTA3V1VGRGRFTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZETDBJc1EwRkJReXhEUVVGRE8wdEJRMG9zUTBGQlF6dERRVU5JTzBGQllVMHNUVUZCVFN4VlFVRlZMRk5CUVZNc1QwRkJUenRKUVVWeVF5eFJRVUZSTEVkQlFWTXNTVUZCU1N4RFFVRkRPMGxCUTNSQ0xFMUJRVTBzUTBGQlF5eExRVUZwUWl4RlFVRnZRenRSUVVNeFJDeFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM1pDTzBsQlJVUXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhOUVVGM1FpeEhRVUZwUWp0UlFVTjRSQ3hQUVVGUExFbEJRVWtzVlVGQlZTeERRVUZETzFsQlEzQkNMRkZCUVZFc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXl4VlFVRlZPMWxCUXpGRExFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJReTlDTEVOQlFVTXNRMEZCUXp0TFFVTktMRU5CUVVNN1EwRkRTRHRCUVdGTkxFMUJRVTBzVVVGQlVTeFRRVUZUTEU5QlFVODdTVUZEYmtNc1RVRkJUU3hEUVVGRExFdEJRV2xDTEVWQlFXOURPMUZCUXpGRUxFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03VVVGRGVFTXNhMEpCUVd0Q0xFZEJRVWNzUlVGQlJUdFpRVU55UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3haUVVGWk8xbEJReTlDTEZGQlFWRXNSVUZCUlN4alFVRmpMRXRCUVVzN1dVRkROMElzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4VlFVRlZPMU5CUTNwQ0xFTkJRVU1zUTBGQlF6dFJRVU5JTEdWQlFXVTdTMEZEYUVJN1NVRkRSQ3hQUVVGUExFMUJRVTBzUjBGQlJ5eERRVUZETEUxQlFYZENMRWRCUVdVN1VVRkRkRVFzVDBGQlR5eEpRVUZKTEZGQlFWRXNRMEZCUXp0WlFVTnNRaXhSUVVGUkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1VVRkJVVHRaUVVONFF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVVNN1MwRkRTaXhEUVVGRE8wTkJRMGc3UVVGaFRTeE5RVUZOTEU5QlFVOHNVMEZCVXl4UFFVRlBPMGxCUTJ4RExFMUJRVTBzUTBGQlF5eExRVUZwUWl4RlFVRnZRenRSUVVNeFJDeE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eEJRVUZETzFGQlEzaERMRWxCUVVrc1ZVRkJWU3hMUVVGTExHTkJRV01zVTBGQlV5eEZRVUZGTzFsQlF6RkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1dVRkRlRU1zYTBKQlFXdENMRWRCUVVjc1JVRkJSVHRuUWtGRGNrSXNTVUZCU1N4RlFVRkZMR0ZCUVdFc1dVRkJXVHRuUWtGREwwSXNVVUZCVVN4RlFVRkZMR05CUVdNc1NVRkJTVHRuUWtGRE5VSXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhWUVVGVk8yRkJRM3BDTEVOQlFVTXNRMEZCUXp0WlFVTklMR1ZCUVdVN1UwRkRhRUk3VVVGRFJDeFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM1pDTzBsQlJVUXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhOUVVGM1FpeEhRVUZqTzFGQlEzSkVMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU03V1VGRGFrSXNVVUZCVVN4RlFVRkZMSEZDUVVGeFFpeERRVUZETEU5QlFVODdXVUZEZGtNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TlFVRk5MRU5CUVVNN1UwRkRMMElzUTBGQlF5eERRVUZETzB0QlEwb3NRMEZCUXp0RFFVTklPMEZCZVVKTkxFMUJRVTBzVVVGQlVTeFRRVWRZTEU5QlFVODdTVUZQWml4TlFVRk5MRU5CUVVNc1MwRkJhVUlzUlVGQmIwTTdVVUZETVVRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlFTeEZRVUZGTEUxQlFVMHNRMEZCUVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhCUVVGRE8xRkJSWGhFTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFRkJRVU03VVVGRmRFSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1ZVRkJWU3hMUVVGTExHTkJRV01zUzBGQlN5eEZRVUZGTzFsQlF6RkRMR3RDUVVGclFpeEhRVUZITEVWQlFVVTdaMEpCUTNKQ0xFbEJRVWtzUlVGQlJTeGhRVUZoTEZsQlFWazdaMEpCUXk5Q0xGRkJRVkVzUlVGQlJTeGpRVUZqTEV0QlFVczdaMEpCUXpkQ0xGRkJRVkVzUlVGQlJTeEhRVUZITEVOQlFVTXNWVUZCVlR0aFFVTjZRaXhEUVVGRExFTkJRVU03V1VGRFNDeGxRVUZsTzFOQlEyaENPMUZCUlVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVTBGQlV5eExRVUZMTEVsQlFVa3NSVUZCUlR0WlFVTXhRaXhKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eEZRVUZGTzJkQ1FVTjZReXhyUWtGQmEwSXNSMEZCUnl4RlFVRkZPMjlDUVVOeVFpeEpRVUZKTEVWQlFVVXNZVUZCWVN4VFFVRlRPMjlDUVVNMVFpeFBRVUZQTEVWQlFVVXNSMEZCUnl4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTE8yOUNRVU0xUWl4SlFVRkpMRVZCUVVVc1QwRkJUenR2UWtGRFlpeFRRVUZUTEVWQlFVVXNTVUZCU1R0dlFrRkRaaXhQUVVGUExFVkJRVVVzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBPMmxDUVVNdlFpeERRVUZETEVOQlFVTTdaMEpCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzJGQlEyaENPMU5CUTBZN1VVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFRRVUZUTEV0QlFVc3NTVUZCU1N4RlFVRkZPMWxCUXpGQ0xFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eExRVUZMTEVWQlFVVTdaMEpCUTNwRExHdENRVUZyUWl4SFFVRkhMRVZCUVVVN2IwSkJRM0pDTEVsQlFVa3NSVUZCUlN4aFFVRmhMRTlCUVU4N2IwSkJRekZDTEU5QlFVOHNSVUZCUlN4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXM3YjBKQlF6VkNMRWxCUVVrc1JVRkJSU3hQUVVGUE8yOUNRVU5pTEZOQlFWTXNSVUZCUlN4SlFVRkpPMjlDUVVObUxFOUJRVThzUlVGQlJTeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRTlCUVU4N2FVSkJReTlDTEVOQlFVTXNRMEZCUXp0blFrRkRTQ3hOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdZVUZEYUVJN1UwRkRSanRSUVVWRUxFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVN1dVRkRjRUlzVDBGQlR5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVTm9RaXhCUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUjBGQlN6dG5Ra0ZEYmtNc1QwRkJUeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEZkQlFWY3NRMEZEZWtJc1NVRkJTU3hyUWtGQmEwSXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUXk5RExFTkJRVU03WVVGRFNDeERRVUZETEVOQlEwZ3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVXM3WjBKQlEycENMRTlCUVU4c1dVRkJXU3hWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEUxQlFVMHNRMEZCUXl4RFFVRkRPMkZCUXk5RExFTkJRVU1zUTBGQlF6dFRRVU5LTzFGQlJVUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1FVRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFZEJRVXM3V1VGRGJFUXNUMEZCVHl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGRGVFSXNTVUZCU1N4clFrRkJhMElzUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlF5OURMRU5CUVVNN1UwRkRTQ3hEUVVGRExFRkJRVU03VVVGRlNDeFBRVUZQTEZsQlFWa3NWVUZCVlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU12UXp0SlFVVkVMRWxCUVVrc1QwRkJUeXhIUVVGSE8xRkJRMW9zVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRMUVVOMlFqdEpRVVZFTEVkQlFVY3NRMEZCUXl4VFFVRnBRaXhGUVVGRkxFOUJRVGhDTEVWQlFWRTdVVUZETTBRc1QwRkJUeXhKUVVGSkxGRkJRVkVzUTBGQlF6dFpRVU5zUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSk8xbEJRMW9zVTBGQlV5eEZRVUZGTzJkQ1FVRkZMRXRCUVVzc1JVRkJSU3hUUVVGVE8yZENRVUZGTEU5QlFVOHNSVUZCUlN4VlFVRlZMRkZCUVZFc1EwRkJReXhQUVVGUExFTkJRVU03WVVGQlJUdFRRVU4wUlN4RFFVRkRMRU5CUVZFN1MwRkRXRHRKUVVWRUxFZEJRVWNzUTBGQlF5eFRRVUZwUWl4RlFVRkZMRTlCUVRoQ0xFVkJRVkU3VVVGRE0wUXNUMEZCVHl4SlFVRkpMRkZCUVZFc1EwRkJRenRaUVVOc1FpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTFvc1UwRkJVeXhGUVVGRk8yZENRVUZGTEV0QlFVc3NSVUZCUlN4VFFVRlRPMmRDUVVGRkxFOUJRVThzUlVGQlJTeFZRVUZWTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNN1lVRkJSVHRUUVVOMFJTeERRVUZETEVOQlFWRTdTMEZEV0R0SlFVVkVMRTFCUVUwc1EwRkJReXhIUVVGWExFVkJRVVVzVDBGQk9FSXNSVUZCVVR0UlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVZFN1MwRkRlRVE3U1VGRlJDeFJRVUZSTEVOQlFVTXNUMEZCT0VJc1JVRkJOa0k3VVVGRGJFVXNUMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCVVR0TFFVTndRenRKUVVWRUxFOUJRVThzVFVGQlRTeEhRVUZITEVOQlEyUXNUVUZCVXl4RlFVTlVMRTFCUVhkQ0xFZEJRMUk3VVVGRGFFSXNUMEZCVHl4SlFVRkpMRkZCUVZFc1EwRkJRenRaUVVOc1FpeEpRVUZKTEVWQlFVVXNUVUZCVFR0WlFVTmFMRk5CUVZNc1JVRkJSU3hKUVVGSk8xbEJRMllzVTBGQlV5eEZRVUZGTEVsQlFVazdXVUZEWml4UlFVRlJMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNVVUZCVVR0WlFVTjRReXhIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRUUVVNdlFpeERRVUZETEVOQlFVTTdTMEZEU2l4RFFVRkRPME5CUTBnN1FVRlpUU3hKUVVGVkxGVkJRVlVzUVVGelF6RkNPenRsUVZSakxGZEJRVmNzUjBGQlJ5eERRVU42UWl4TFFVRlJMRVZCUTFJc1RVRkJVeXhIUVVORE8xRkJRMVlzVDBGQlR6dFpRVU5NTEVkQlFVY3NTMEZCU3p0WlFVTlNMRWRCUVVjc1RVRkJUVHRUUVVOV0xFTkJRVU03UzBGRFNEdEhRWEpEWXl4VlFVRlZMRXRCUVZZc1ZVRkJWVHRCUVRCRE0wSXNUVUZCVFN4alFVRmpMRWRCUTJ4Q0xFTkJRVEpDTEVkQlFWRXNSMEZEYmtNc1EwRkRSU3haUVVFd1FpeEhRVXQyUWp0UlFVTklMRTlCUVU4c1NVRkJTU3hUUVVGVExFTkJRVU03V1VGRGJrSXNSMEZCUnl4SFFVRkhPMWxCUTA0c1MwRkJTeXhGUVVGRkxFbEJRVTBzUTBGQlF6dHZRa0ZEV2l4SFFVRkhMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVU3YjBKQlEyUXNSMEZCUnl4WlFVRlpPMmxDUVVOb1FpeERRVUZETzFOQlEwZ3NRMEZCUXl4RFFVRlJPMHRCUTFnc1FVRkJRenRCUVRCRVNpeFRRVUZUTEdOQlFXTXNRMEZCUXl4TlFVRnJRaXhGUVVGUE8wbEJReTlETEVsQlFVa3NUVUZCVFN4WlFVRlpMRk5CUVZNc1JVRkJSVHRSUVVNdlFpeE5RVUZOTEZGQlFWRXNSMEZCVVN4RlFVRkZMRUZCUVVNN1VVRkZla0lzU1VGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRk8xbEJRemxDTEUxQlFVMHNWMEZCVnl4SFFVRkhMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVGQlFVTTdXVUZEZEVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1kwRkJZeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEYWtVN1VVRkRSQ3hQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETzFsQlEyNUNMRWRCUVVjc1RVRkJUU3hEUVVGRExFbEJRVWs3V1VGRFpDeExRVUZMTEVWQlFVVXNTVUZCVFN4UlFVRlJPMU5CUTNSQ0xFTkJRVU1zUTBGQlVUdExRVU5ZTEUxQlFVMHNTVUZCU1N4TlFVRk5MRmxCUVZrc1VVRkJVU3hGUVVGRk8xRkJRM0pETEU5QlFVOHNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRlRVFzVFVGQlRTeEpRVUZKTEUxQlFVMHNXVUZCV1N4WFFVRlhMRVZCUVVVN1VVRkRlRU1zVDBGQlR5eFhRVUZYTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUXpWRUxFMUJRVTBzU1VGQlNTeE5RVUZOTEZsQlFWa3NWMEZCVnl4RlFVRkZPMUZCUTNoRExFOUJRVThzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTTFSQ3hOUVVGTkxFbEJRVWtzVFVGQlRTeFpRVUZaTEZGQlFWRXNSVUZCUlR0UlFVTnlReXhQUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlEzQkNMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCVXl4SFFVRkxMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVU4wUkN4RFFVRkRPMHRCUTBnc1RVRkJUVHRSUVVOTUxFOUJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdRMEZEUmp0QlFVVk5MRTFCUVUwc1UwRkJVeXhUUVUxYUxFOUJRVTg3U1VGRFppeEJRVUZUTEUxQlFVMHNRMEZCU3p0SlFVTndRaXhCUVVGVExGbEJRVmtzUTBGQlpUdEpRVU53UXl4QlFVRlRMRk5CUVZNc1EwRkJXVHRKUVVNNVFpeEJRVUZSTEU5QlFVOHNSMEZCZDBNc1NVRkJTU3hEUVVGRE8wbEJSVFZFTEZWQlFWVXNSMEZCYVVNN1VVRkRla01zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4TFFVRkxMRWxCUVVrc1JVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZETDBNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1FVRkJRenRSUVVOb1F5eE5RVUZOTEVsQlFVa3NSMEZCUnl4TFFVRkxMRlZCUVZVc1EwRkJReXhMUVVGTExFTkJRVU1zUVVGQlF6dFJRVU53UXl4UFFVRlJMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWM3V1VGQlJTeExRVUZMTzFsQlFVVXNTVUZCU1R0VFFVRkZMRU5CUVVVN1MwRkRla003U1VGRlJDeE5RVUZOTEVOQlFVTXNTMEZCYVVJc1JVRkJiME03VVVGRE1VUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0UlFVTjRReXhKUVVGSkxGVkJRVlVzUzBGQlN5eGpRVUZqTEUxQlFVMHNSVUZCUlR0WlFVTjJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNaVUZCWlN4RFFVRkRMRXRCUVVzc1EwRkJReXhCUVVGRE8xbEJRM2hETEd0Q1FVRnJRaXhIUVVGSExFVkJRVVU3WjBKQlEzSkNMRWxCUVVrc1JVRkJSU3hoUVVGaExGbEJRVms3WjBKQlF5OUNMRkZCUVZFc1JVRkJSU3hqUVVGakxFMUJRVTA3WjBKQlF6bENMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zVlVGQlZUdGhRVU42UWl4RFFVRkRMRU5CUVVNN1dVRkRTQ3hsUVVGbE8xTkJRMmhDTzFGQlJVUXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJRU3hGUVVGRkxFZEJRVWNzUlVGQlNDeEpRVUZITEVOQlFVRXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1FVRkJRenRSUVVWNFJDeE5RVUZOTEVWQlFVVXNTMEZCU3l4RFFVRkJMRVZCUVVVc1NVRkJTU3hGUVVGRkxGTkJRVk1zUTBGQlFTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSU3hCUVVGRE8xRkJRM0pFTEUxQlFVMHNVMEZCVXl4SFFVRmhMRVZCUVVVc1FVRkJRenRSUVVNdlFpeEpRVUZMTEUxQlFVMHNSMEZCUnl4SlFVRkpMRWxCUVVjc1EwRkJReXhKUVVGSkxFTkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdaMEpCUXpWQ0xGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1lVRkRja0k3VTBGRFJqdFJRVVZFTEUxQlFVMHNTMEZCU3l4SFFVbE1MRVZCUVVVc1FVRkJRenRSUVVOVUxFdEJRVXNzVFVGQlRTeEpRVUZITEVsQlFVa3NVMEZCVXl4RFFVRkZPMWxCUXpOQ0xFMUJRVTBzV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkhMRU5CUVVNc1FVRkJRenRaUVVOb1F5eE5RVUZOTEV0QlFVc3NSMEZCUnl4SlFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWNzUTBGQlF5eEJRVUZETzFsQlF6VkNMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlExUXNSMEZCUnl4RlFVRkZPMjlDUVVGRkxFMUJRVTBzUlVGQlJTeFBRVUZQTzI5Q1FVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSE8ybENRVUZGTzJkQ1FVTndReXhMUVVGTExFVkJRVVVzV1VGQldTeERRVUZETEUxQlFVMHNRMEZEZUVJc1NVRkJTU3hyUWtGQmEwSXNRMEZCUXl4SlFVRkhMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCUnl4RFFVRkRMRU5CUTJ4RU8yZENRVU5FTEZOQlFWTXNSVUZCUlN4SlFVRkhMRWxCUVVrc1NVRkJSeXhEUVVGRExFbEJRVWs3WVVGRE0wSXNRMEZCUXl4RFFVRkRPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4WlFVRlpMRkZCUVZFc1JVRkJSVHRaUVVNeFF5eE5RVUZOTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGZEJRVmNzUVVGQlF6dFpRVVV4UXl4SlFVRkpMRmRCUVZjc1MwRkJTeXhoUVVGaExFVkJRVVU3WjBKQlEycERMRXRCUVVzc1RVRkJUU3hKUVVGSExFbEJRVWtzVTBGQlV5eERRVUZGTzI5Q1FVTXpRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETzNkQ1FVTlVMRWRCUVVjc1JVRkJSVHMwUWtGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHpzMFFrRkJSU3hMUVVGTExFVkJRVVVzU1VGQlJ6dDVRa0ZCUlR0M1FrRkRjRU1zUzBGQlN5eEZRVUZGT3pSQ1FVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUE96UkNRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWNzUTBGQlF6dDVRa0ZCUlR0eFFrRkRha1FzUTBGQlF5eERRVUZETzJsQ1FVTktPMkZCUTBZc1RVRkJUU3hKUVVGSkxGZEJRVmNzUzBGQlN5eFJRVUZSTEVWQlFVVTdaMEpCUTI1RExFbEJRVWtzVTBGQlV5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRVZCUVVVN2IwSkJRM2hDTEd0Q1FVRnJRaXhKUVVGSExFVkJRVVU3ZDBKQlEzSkNMRWxCUVVrc1JVRkJSU3hoUVVGaExHbENRVUZwUWp0M1FrRkRjRU1zU1VGQlNTeEZRVUZGTEZOQlFWTTdjVUpCUTJoQ0xFTkJRVU1zUTBGQlF6dHZRa0ZEU0N4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03YVVKQlEyaENPMkZCUTBZc1RVRkJUU3hKUVVGSkxGZEJRVmNzUzBGQlN5eFBRVUZQTEVWQlFVVXNSVUZEYmtNc1RVRkJUVHRuUWtGRFRDeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc2IwUkJRVzlFTEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTNwRk8xTkJRMFlzVFVGQlRUdFpRVVZNTEUxQlFVMHNVVUZCVVN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEJRVUZETzFsQlJYQkRMRXRCUVVzc1RVRkJUU3hKUVVGSExFbEJRVWtzVTBGQlV5eERRVUZGTzJkQ1FVTXpRaXhOUVVGTkxFMUJRVXNzUjBGQlJ5eEpRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVjc1EwRkJReXhCUVVGRE8yZENRVU0xUWl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRE8yOUNRVU5VTEVkQlFVY3NSVUZCUlR0M1FrRkJSU3hOUVVGTkxFVkJRVVVzVDBGQlR6dDNRa0ZCUlN4TFFVRkxMRVZCUVVVc1NVRkJSenR4UWtGQlJUdHZRa0ZEY0VNc1MwRkJTeXhGUVVGRkxGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlEzQkNMRWxCUVVrc2EwSkJRV3RDTEVOQlFVTXNTVUZCUnl4RlFVRkZMRTFCUVVzc1JVRkJSU3hKUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVY3NRMEZCUXl4RFFVTnNSRHR2UWtGRFJDeFRRVUZUTEVWQlFVVXNTVUZCUnl4SlFVRkpMRWxCUVVjc1EwRkJReXhKUVVGSk8ybENRVU16UWl4RFFVRkRMRU5CUVVNN1lVRkRTanRUUVVOR08xRkJSVVFzU1VGQlNTeEpRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSVHRaUVVOd1FpeFBRVUZQTEU5QlFVOHNRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkRja0lzU1VGQlNTeERRVUZETEZWQlFWazdaMEpCUTJoQ0xFMUJRVTBzVTBGQlV5eEhRVUZWTEVWQlFVVXNRVUZCUXp0blFrRkROVUlzUzBGQlN5eE5RVUZOTEVsQlFVa3NTVUZCU1N4TFFVRkxMRU5CUVVVN2IwSkJRM2hDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRTFCUVUwc1NVRkJTU3hEUVVGRExFZEJRVWNzUVVGQlF6dHZRa0ZETTBJc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF6dDNRa0ZEWWl4SFFVRkhPM2RDUVVOSUxFdEJRVXNzUlVGQlJTeE5RVUZOTEVsQlFVa3NRMEZCUXl4TFFVRkxPM2RDUVVOMlFpeFRRVUZUTEVWQlFVVXNTVUZCU1N4RFFVRkRMRk5CUVZNN2NVSkJRekZDTEVOQlFVTXNRMEZCUXp0cFFrRkRTanRuUWtGRFJDeFBRVUZQTEZOQlFWTXNRMEZCUXp0aFFVTnNRaXhEUVVGRExFTkJRMFFzU1VGQlNTeERRVUZETEVOQlFVTXNVMEZCVXl4SFFVRkxPMmRDUVVOdVFpeFBRVUZQTEZsQlFWa3NaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dGhRVU4yUkN4RFFVRkRMRU5CUVVNN1UwRkRUaXhOUVVGTk8xbEJRMHdzVDBGQlR5eFpRVUZaTEdWQlFXVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1MwRkJTeXhEUVVGUkxFTkJRVU03VTBGRE1VUTdTMEZEUmp0SlFVVkVMRWxCUVVrc1MwRkJTeXhIUVVGSE8xRkJRMVlzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8wdEJRekZDTzBsQlJVUXNUVUZCVFN4RFFVRkRMRTlCUVRoQ0xFVkJRVzlETzFGQlEzWkZMRlZCUVZVc1VVRkJVU3hEUVVGRE8xRkJRMjVDTEU5QlFVOHNTVUZCU1N4VFFVRlRMRU5CUVVNN1dVRkRia0lzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1R0WlFVTmFMRmRCUVZjc1JVRkJSU3hSUVVGUk8xbEJRM0pDTEVkQlFVa3NUMEZCVHl4TFFVRkxMRk5CUVZNc1IwRkRja0k3WjBKQlEwVXNVVUZCVVN4RlFVRkZMRU5CUVVNc1MwRkJTeXhGUVVGRkxFZEJRVWNzUjBGQlN6dHZRa0ZEZUVJc1RVRkJUU3haUVVGWkxFZEJRMmhDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVXNUMEZCVHl4SlFVRkpMRWRCUVVjc1EwRkJReXhaUVVGWkxFRkJRVU03YjBKQlF5OUVMRWxCUVVrc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eHRRa0ZCYlVJc1JVRkRjRU1zVDBGQlR6dDNRa0ZEVEN4UFFVRlBMRVZCUVVVc1ZVRkJWU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNUMEZCVHl4SlFVRkpMRmxCUVZrN2NVSkJRemRFTEVOQlFVTTdiMEpCUTBvc1QwRkJUenQzUWtGRFRDeFBRVUZQTEVWQlFVVXNXVUZCV1R0eFFrRkRkRUlzUTBGQlF6dHBRa0ZEU0R0aFFVTkdMRWRCUTBRc1JVRkJSVHRUUVVOUUxFTkJRVU1zUTBGQlVUdExRVU5ZTzBsQlJVUXNTMEZCU3l4SFFVRnZRenRSUVVOMlF5eFBRVUZQTEVsQlFVa3NVMEZCVXl4RFFVRkRPMWxCUTI1Q0xFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEV2l4WFFVRlhMRVZCUVVVc1QwRkJUenRUUVVOeVFpeERRVUZETEVOQlFWRTdTMEZEV0R0SlFVVkVMRmRCUVZjc1IwRkJNRU03VVVGRGJrUXNUMEZCVHl4SlFVRkpMRk5CUVZNc1EwRkJRenRaUVVOdVFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTFvc1YwRkJWeXhGUVVGRkxHRkJRV0U3VTBGRE0wSXNRMEZCUXl4RFFVRlJPMHRCUTFnN1NVRk5SQ3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXp0SlFVVTNRaXhQUVVGUExFZEJRVWNzWTBGQll5eERRVUY1UXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRE5VVXNUVUZCVFN4SFFVRkhMR05CUVdNc1EwRkJlVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUlRORkxFMUJRVTBzUTBGRFNpeEhRVUZSTEVWQlExSXNUVUZCWXl4RlFVTm5SRHRSUVVNNVJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1dVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEUxQlFVMDdVMEZCUlN4RFFVRkRMRU5CUVZFN1MwRkRMME03U1VGUFJDeExRVUZMTEVOQlEwZ3NUMEZCYVVJc1JVRkZhMFE3VVVGTGJrVXNUVUZCVFN4TlFVRk5MRWRCUVZFc1NVRkJTU3hUUVVGVExFTkJRVU03V1VGRGFFTXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ6dFpRVU55UXl4UlFVRlJMRVZCUVVVc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTzFsQlF5OUNMRXRCUVVzc1JVRkJSU3hKUVVOTUxGVkJRVlVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xbEJRMnBGTEZGQlFWRXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eFRRVUZUTzFOQlF6RkRMRU5CUVVNc1FVRkJUeXhCUVVGRE8xRkJRMVlzVDBGQlR5eE5RVUZOTEVOQlFVTTdTMEZEWmp0SlFVVkVMRkZCUVZFc1EwRkRUaXhMUVVGWkxFVkJRM05DTzFGQlEyeERMRTlCUVU4c1NVRkJTU3hUUVVGVExFTkJRVU03V1VGRGJrSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTVHRaUVVOYUxGRkJRVkVzUlVGQlJTeExRVUZMTzFOQlEyaENMRU5CUVVNc1EwRkJVVHRMUVVOWU8wbEJSVVFzU1VGQlNTeERRVU5HTEVsQlFWVXNSVUZESzBRN1VVRkRla1VzVFVGQlRTeExRVUZMTEVkQlFWRXNSVUZCUlN4QlFVRkRPMUZCUTNSQ0xFdEJRVXNzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlN6dFpRVVZxUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1UwRkRia1FzUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4SlFVRkpMRk5CUVZNc1EwRkJRenRaUVVOdVFpeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpPMWxCUTFvc1MwRkJTeXhGUVVGRkxFbEJRVTBzUzBGQlN6dFRRVU51UWl4RFFVRkRMRU5CUVZFN1MwRkRXRHRKUVVWRUxFbEJRVWtzUTBGRFJpeEpRVUZWTEVWQlF6WkRPMUZCUTNaRUxFMUJRVTBzUzBGQlN5eEhRVUZSTEVWQlFVVXNRVUZCUXp0UlFVTjBRaXhMUVVGTExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZMTzFsQlEzWkRMRWxCUVVrc1MwRkJTeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTTNReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU01UWp0VFFVTkdMRU5CUVVNc1EwRkJRenRSUVVOSUxFOUJRVThzU1VGQlNTeFRRVUZUTEVOQlFVTTdXVUZEYmtJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVU5hTEV0QlFVc3NSVUZCUlN4SlFVRk5MRXRCUVVzN1UwRkRia0lzUTBGQlF5eERRVUZSTzB0QlExZzdTVUZGUkN4WFFVRlhMRWRCUVd0RE8xRkJRek5ETEU5QlFVOHNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGUk8wdEJRM0JETzBsQlowSkVMRTlCUVU4c1EwRkJReXhKUVVGVkxFVkJRVVU3VVVGRGJFSXNUVUZCVFN4UlFVRlJMRWRCUVZFc1JVRkJSU3hCUVVGRE8xRkJRM3BDTEVsQlFVa3NTVUZCU1N4RlFVRkZPMWxCUTFJc1MwRkJTeXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlN6dG5Ra0ZEZGtNc1NVRkJTU3hMUVVGTExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUXpkRExGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzJsQ1FVTnFReXhOUVVGTk8yOUNRVU5NTEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8ybENRVU0xUXp0aFFVTkdMRU5CUVVNc1EwRkJRenRaUVVOSUxFOUJRVThzU1VGQlNTeFRRVUZUTEVOQlFVTTdaMEpCUTI1Q0xFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVazdaMEpCUTFvc1MwRkJTeXhGUVVGRkxFbEJRVTBzVVVGQlVUdGhRVU4wUWl4RFFVRkRMRU5CUVZFN1UwRkRXQ3hOUVVGTk8xbEJRMHdzU1VGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRk8yZENRVU0xUWl4TlFVRk5MRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4QlFVRkRPMmRDUVVOd1F5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1YwRkJWeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzJGQlEzaERPMU5CUTBZN1VVRkZSQ3hQUVVGUExFbEJRVWtzVTBGQlV5eERRVUZETzFsQlEyNUNMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWs3V1VGRFdpeExRVUZMTEVWQlFVVXNTVUZCVFN4UlFVRlJPMU5CUTNSQ0xFTkJRVU1zUTBGQlVUdExRVU5ZTzBsQlJVUXNVVUZCVVN4SFFVbE9PMUZCUTBFc1RVRkJUU3hSUVVGUkxFZEJRVkVzUlVGQlJTeEJRVUZETzFGQlEzcENMRWxCUVVzc1RVRkJUU3hIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUlR0WlFVTTFRaXhOUVVGTkxGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhCUVVGRE8xbEJRM0JETEVsQlFVa3NVVUZCVVN4SFFVRkhMRmRCUVZjc1FVRkJRenRaUVVNelFpeE5RVUZQTEZGQlFWRXNXVUZCV1N4WFFVRlhMRU5CUVVVN1owSkJRM1JETEZGQlFWRXNSMEZCUnl4QlFVRkRMRkZCUVZFc1EwRkJjMElzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0aFFVTXhSRHRaUVVWRUxGRkJRVkVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNN1UwRkRNVUk3VVVGRFJDeFBRVUZQTEVsQlFVa3NVMEZCVXl4RFFVRkRPMWxCUTI1Q0xFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEV2l4TFFVRkxMRVZCUVVVc1NVRkJUU3hSUVVGUk8xTkJRM1JDTEVOQlFVTXNRMEZCVVR0TFFVTllPMGxCUlVRc1MwRkJTeXhIUVVGclJEdFJRVU55UkN4UFFVRlBMR0ZCUVdFc1EwRkRiRUlzUzBGQlN5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVNMVFpeERRVUZSTzB0QlExWTdTVUZGUkN4UFFVRlBMRTFCUVUwc1IwRkJSeXhEUVVOa0xFdEJRVkVzUlVGRFVpeE5RVUYzUWl4SFFVTlFPMUZCUTJwQ0xFOUJRVThzU1VGQlNTeFRRVUZUTEVOQlFVTTdXVUZEYmtJc1MwRkJTeXhGUVVGRkxFbEJRVTBzUzBGQlN6dFpRVU5zUWl4WFFVRlhMRVZCUVVVc1QwRkJUenRaUVVOd1FpeFJRVUZSTEVWQlFVVXNVVUZCVVN4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVNelFpeFJRVUZSTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVTBGQlV6dFpRVU42UXl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEUxQlFVMHNRMEZCUXp0VFFVTXZRaXhEUVVGRExFTkJRVkU3UzBGRFdDeERRVUZETzBsQlJVWXNUMEZCVHl4WlFVRlpMRWRCUVVjc1EwRkRjRUlzUzBGQlVTeEZRVU5TTEUxQlFYZENMRWRCUTBjN1VVRkRNMElzVDBGQlR5eEpRVUZKTEZOQlFWTXNRMEZCUXp0WlFVTnVRaXhMUVVGTExFVkJRVVVzU1VGQlRTeExRVUZMTzFsQlEyeENMRmRCUVZjc1JVRkJSU3hSUVVGUk8xbEJRM0pDTEZGQlFWRXNSVUZCUlN4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRek5DTEZGQlFWRXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eFRRVUZUTzFsQlEzcERMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXk5Q0xFTkJRVU1zUTBGQlVUdExRVU5ZTEVOQlFVTTdTVUZGUml4UFFVRlBMRlZCUVZVc1IwRkJSeXhEUVVOc1FpeExRVUZqTEVWQlEyUXNUVUZCZDBJc1IwRkRVRHRSUVVOcVFpeFBRVUZQTEVsQlFVa3NVMEZCVXl4RFFVRkRPMWxCUTI1Q0xFdEJRVXM3V1VGRFRDeFhRVUZYTEVWQlFVVXNUMEZCVHp0WlFVTndRaXhSUVVGUkxFVkJRVVVzVVVGQlVTeERRVUZETEUxQlFVMHNSVUZCUlR0WlFVTXpRaXhSUVVGUkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1UwRkJVenRaUVVONlF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVZFN1MwRkRXQ3hEUVVGRE8wTkJRMGc3UVVGeFFrMHNUVUZCVFN4UlFVRlJMRk5CUVc5RExFOUJRVTg3U1VGTE9VUXNUVUZCVFN4RFFVRkRMRXRCUVdsQ0xFVkJRVzlETzFGQlF6RkVMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVUVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0UlFVTm9SQ3hOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1FVRkJRenRSUVVWc1F5eFRRVUZUTEdGQlFXRXNRMEZEY0VJc1QwRkJhMFVzUlVGRGJFVTdXVUZGUVN4TFFVRkxMRTFCUVUwc1RVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlJUdG5Ra0ZETlVJc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNTMEZCU3l4UFFVRlBMRVZCUVVVN2IwSkJRM0JETEU5QlFVOHNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJRenRwUWtGRGRFSTdZVUZEUmp0WlFVVkVMRXRCUVVzc1RVRkJUU3hQUVVGTkxFbEJRVWtzVDBGQlR5eERRVUZGTzJkQ1FVTTFRaXhKUVVGSkxFOUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4TFFVRkxMRTlCUVU4c1JVRkJSVHR2UWtGSGNFTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEU5QlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzI5Q1FVTndSQ3hQUVVGUExFOUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTTdhVUpCUTNSQ08yRkJRMFk3V1VGSFJDeE5RVUZOTEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVNM1FpeERRVUZETEUxQlFVMHNSMEZCU3l4aFFVRmhMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVTnVSQ3hCUVVGRE8xbEJSVVlzYTBKQlFXdENMRWRCUVVjc1JVRkJSVHRuUWtGRGNrSXNTVUZCU1N4RlFVRkZMR0ZCUVdFc1lVRkJZVHRuUWtGRGFFTXNWMEZCVnp0aFFVTmFMRU5CUVVNc1EwRkJRenRaUVVOSUxHVkJRV1U3VTBGRGFFSTdVVUZGUkN4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTzFsQlEzQkNMRTlCUVU4c1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGRGFFSXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFMUJRVTBzUjBGQlN6dG5Ra0ZETlVJc1RVRkJUU3hSUVVGUkxFZEJRV2xDTzI5Q1FVTTNRaXhIUVVGSExFZEJRVWM3YjBKQlEwNHNUVUZCVFN4RlFVRkZPM2RDUVVOT0xFZEJRVWNzUjBGQlJ5eERRVUZETEUxQlFVMDdkMEpCUTJJc1RVRkJUU3hGUVVGRkxFVkJRVVU3Y1VKQlExZzdiMEpCUTBRc1RVRkJUU3hGUVVGRkxFbEJRVWs3YVVKQlEySXNRVUZCUXp0blFrRkRSaXhQUVVGUE8yOUNRVU5NTEUxQlFVMHNSVUZCUlN4TlFVRk5MRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU03ZDBKQlF5OUNMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNUdDNRa0ZEWkN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3ZDBKQlEyUXNUVUZCVFN4RlFVRkZMRkZCUVZFN2NVSkJRMnBDTEVOQlFVTTdiMEpCUTBZc1IwRkJSeXhGUVVGRkxGRkJRVkU3YVVKQlEyUXNRMEZCUXp0aFFVTklMRU5CUVVNc1EwRkRTQ3hEUVVGRExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0VFFVTjJRaXhOUVVGTk8xbEJRMHdzU1VGQlNTeExRVUZMTEVkQlExQXNVMEZCVXl4QlFVRkRPMWxCUTFvc1RVRkJUU3hOUVVGTkxFZEJRV2xDTEVWQlFVVXNRVUZCUXp0WlFVTm9ReXhMUVVGTExFMUJRVTBzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUlR0blFrRkROVUlzVFVGQlRTeFJRVUZSTEVkQlFXbENPMjlDUVVNM1FpeEhRVUZITEVkQlFVYzdiMEpCUTA0c1RVRkJUU3hGUVVGRk8zZENRVU5PTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwN2QwSkJRMklzVFVGQlRTeEZRVUZGTEVWQlFVVTdjVUpCUTFnN2IwSkJRMFFzVFVGQlRTeEZRVUZGTEVsQlFVazdhVUpCUTJJc1FVRkJRenRuUWtGRFJpeE5RVUZOTEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRE8yOUNRVU12UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3YjBKQlEyUXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8yOUNRVU5rTEUxQlFVMHNSVUZCUlN4UlFVRlJPMmxDUVVOcVFpeERRVUZETEVGQlFVTTdaMEpCUlVnc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeExRVUZMTEU5QlFVOHNSVUZCUlR0dlFrRkROMElzVDBGQlR5eE5RVUZOTEVOQlFVTTdhVUpCUTJZc1RVRkJUU3hKUVVGSkxFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NUMEZCVHl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8yOUNRVU01UXl4TFFVRkxMRWRCUVVjN2QwSkJRVVVzVFVGQlRUdDNRa0ZCUlN4SFFVRkhMRVZCUVVVc1VVRkJVVHR4UWtGQlJTeERRVUZETzJsQ1FVTnVRenRuUWtGRlJDeEpRVUZKTEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJUdHZRa0ZEYWtNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8ybENRVU55UXp0aFFVTkdPMWxCUlVRc1NVRkJTU3hMUVVGTExFVkJRVVU3WjBKQlExUXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVTnVSQ3hQUVVGUExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdZVUZEY2tJN1dVRkZSQ3hOUVVGTkxGZEJRVmNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGTExHRkJRV0VzVFVGQlRTeERRVUZETEVOQlFVTXNRVUZCUXp0WlFVTnFSU3hyUWtGQmEwSXNSMEZCUnl4RlFVRkZPMmRDUVVOeVFpeEpRVUZKTEVWQlFVVXNZVUZCWVN4aFFVRmhPMmRDUVVOb1F5eFhRVUZYTzJGQlExb3NRMEZCUXl4RFFVRkRPMWxCUlVnc1pVRkJaVHRUUVVOb1FqdExRVU5HTzBsQlJVUXNTVUZCU1N4UFFVRlBMRWRCUVVjN1VVRkRXaXhQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMHRCUXpGQ08wbEJSVVFzVDBGQlR5eE5RVUZOTEVkQlFVY3NRMEZIWkN4TFFVRlJMRVZCUTFJc1RVRkJkMElzUjBGRFVqdFJRVU5vUWl4UFFVRlBMRWxCUVVrc1VVRkJVU3hEUVVGRE8xbEJRMnhDTEU5QlFVOHNSVUZCUlN4TFFVRkxPMWxCUTJRc1VVRkJVU3hGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRkZCUVZFN1dVRkRlRU1zUjBGQlJ5eHRRa0ZCYlVJc1EwRkJReXhOUVVGTkxFTkJRVU03VTBGREwwSXNRMEZCUXl4RFFVRkRPMHRCUTBvc1EwRkJRenREUVVOSU8wRkJOa0pOTEUxQlFVMHNjVUpCUVhGQ0xGTkJTWGhDTEU5QlFVODdTVUZMWml4TlFVRk5MRU5CUVVNc1MwRkJhVUlzUlVGQmIwTTdVVUZETVVRc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlFTeEZRVUZGTEVkQlFVY3NTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeERRVUZETEV0QlFVc3NRMEZCUXl4QlFVRkRPMUZCUldoRUxFbEJRVWtzUjBGQlJ5eERRVUZETEZWQlFWVXNTMEZCU3l4alFVRmpMRTFCUVUwc1JVRkJSVHRaUVVNelF5eHJRa0ZCYTBJc1IwRkJSeXhGUVVGRk8yZENRVU55UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3haUVVGWk8yZENRVU12UWl4UlFVRlJMRVZCUVVVc1kwRkJZeXhOUVVGTk8yZENRVU01UWl4UlFVRlJMRVZCUVVVc1IwRkJSeXhEUVVGRExGVkJRVlU3WVVGRGVrSXNRMEZCUXl4RFFVRkRPMWxCUTBnc1pVRkJaVHRUUVVOb1FqdFJRVVZFTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFRkJRVU03VVVGRGVrTXNUVUZCVFN4clFrRkJhMElzUjBGQmRVSXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUVVGQlF6dFJRVU4yUlN4TlFVRk5MRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eEJRVUZETzFGQlJYQkVMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVU3V1VGRFdDeHJRa0ZCYTBJc1IwRkJSeXhGUVVGRk8yZENRVU55UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3d5UWtGQk1rSTdaMEpCUXpsRExFOUJRVThzUlVGQlJTeEpRVUZKTEVOQlFVTXNkMEpCUVhkQ08yZENRVU4wUXl4SlFVRkpMRVZCUVVVN2IwSkJRVU1zWVVGQllUdHBRa0ZCUXp0aFFVTjBRaXhEUVVGRExFTkJRVU03V1VGRFNDeGxRVUZsTzFOQlEyaENPMUZCUlVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlR0WlFVTndRaXhQUVVGUExFMUJRVTBzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUTNoQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNTVUZCU1R0blFrRkRaQ3hKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVsQlFVazdaMEpCUTJRc1RVRkJUU3hGUVVGRkxFZEJRVWM3WVVGRFdpeERRVUZETEVOQlFVTTdVMEZEU2l4TlFVRk5PMWxCUTB3c1QwRkJUeXhOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzJkQ1FVTjJRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVsQlFVazdaMEpCUTJRc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEpRVUZKTzJkQ1FVTmtMRTFCUVUwc1JVRkJSU3hIUVVGSE8yRkJRMW9zUTBGQlF5eERRVUZETzFOQlEwbzdTMEZEUmp0SlFVVkVMRWxCUVVrc1lVRkJZU3hIUVVGSE8xRkJRMnhDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU03UzBGRGFFTTdTVUZGUkN4SlFVRkpMSGRDUVVGM1FpeEhRVUZITzFGQlF6ZENMRTlCUVU4c1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU03UzBGRGVFTTdTVUZGUkN4SlFVRkpMRTlCUVU4c1IwRkJSenRSUVVOYUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRNVUk3U1VGVlJDeFBRVUZQTEUxQlFVMHNRMEZUV0N4aFFVRTBRaXhGUVVNMVFpeExRVUZaTEVWQlExb3NUVUZCZDBJc1JVRkRhVVE3VVVGRmVrVXNUVUZCVFN4UFFVRlBMRWRCUVRKRExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVGQlFVTTdVVUZGYkVVc1NVRkJTVHRaUVVOR0xFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWRCUVVzN1owSkJRM1JDTEUxQlFVMHNhMEpCUVd0Q0xFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhMUVVGTExFRkJRVU03WjBKQlF6TkVMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zYTBKQlFXdENMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRGRrTXNRMEZCUXl4RFFVRkRPMU5CUTBvc1EwRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFpRVU5XTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUTJJc09FVkJRVGhGTEVOQlF5OUZMRU5CUVVNN1UwRkRTRHRSUVVkRUxFbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NTMEZCU3l4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRMnBETEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2FVUkJRV2xFTEVOQlFVTXNRMEZCUXp0VFFVTndSVHRSUVVWRUxFOUJRVThzU1VGQlNTeHhRa0ZCY1VJc1EwRkpPVUk3V1VGRFFTeFJRVUZSTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zY1VKQlFYRkNPMWxCUTNKRUxHRkJRV0U3V1VGRFlpeFBRVUZQTzFsQlExQXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZETDBJc1EwRkJReXhEUVVGRE8wdEJRMG83UTBGRFJqdEJRV3RDUkN4VFFVRlRMRmRCUVZjc1EwRkRiRUlzUTBGQlRTeEZRVU5PTEVOQlFVMHNSVUZEZVVNN1NVRkRMME1zVFVGQlRTeExRVUZMTEVkQlFVY3NZMEZCWXl4RFFVRkRMRU5CUVVNc1FVRkJRenRKUVVNdlFpeE5RVUZOTEV0QlFVc3NSMEZCUnl4alFVRmpMRU5CUVVNc1EwRkJReXhCUVVGRE8wbEJSUzlDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRSUVVOWUxFOUJRVTg3V1VGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1R0WlFVRkZMRWxCUVVrc1JVRkJSU3hEUVVGRE8xTkJRVVVzUTBGQlF6dExRVU5xUXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhMUVVGTExHTkJRV01zVFVGQlRTeEpRVUZKTEV0QlFVc3NTMEZCU3l4alFVRmpMRTFCUVUwc1JVRkJSVHRSUVVNelJTeE5RVUZOTEV0QlFVc3NSMEZCUnl4TFFVRkxMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUVVGQlF6dFJRVU5xUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhMUVVOb1FpeFZRVUZWTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUTJJc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZMTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRVUZCUXp0UlFVVTVReXhOUVVGTkxFMUJRVTBzUjBGQlVUdFpRVUZGTEVkQlFVY3NRMEZCUXp0WlFVRkZMRWRCUVVjc1EwRkJRenRUUVVGRkxFRkJRVU03VVVGRGJrTXNTMEZCU3l4TlFVRk5MRWRCUVVjc1NVRkJTU3hWUVVGVkxFTkJRVVU3V1VGRE5VSXNUVUZCVFN4WFFVRlhMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUVVGQlF6dFpRVU5vUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUlVGQlJUdG5Ra0ZEZEVJc1QwRkJUenR2UWtGQlJTeExRVUZMTEVWQlFVVXNTMEZCU3p0cFFrRkJSU3hEUVVGRE8yRkJRM3BDTzFsQlEwUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTTdVMEZEYUVNN1VVRkZSQ3hQUVVGUE8xbEJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVazdXVUZCUlN4SlFVRkpMRVZCUVVVc1RVRkJUVHRUUVVGRkxFTkJRVU03UzBGRGRFTXNUVUZCVFN4SlFVRkpMRXRCUVVzc1MwRkJTeXhqUVVGakxFdEJRVXNzU1VGQlNTeExRVUZMTEV0QlFVc3NZMEZCWXl4TFFVRkxMRVZCUVVVN1VVRkRla1VzU1VGQlNTeERRVUZETEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVU3V1VGRGVrSXNUMEZCVHp0blFrRkJSU3hMUVVGTExFVkJRVVVzUzBGQlN6dGhRVUZGTEVOQlFVTTdVMEZEZWtJN1VVRkZSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEZRVUZGTEVGQlFVTTdVVUZEY0VJc1NVRkJTeXhKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVVTdXVUZETjBNc1RVRkJUU3hMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4QlFVRkRPMWxCUTNaQ0xFMUJRVTBzUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1FVRkJRenRaUVVOMlFpeE5RVUZOTEZsQlFWY3NSMEZCUnl4WFFVRlhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEJRVUZETzFsQlJUbERMRWxCUVVrc1EwRkJReXhaUVVGWExFTkJRVU1zUzBGQlN5eEZRVUZGTzJkQ1FVTjBRaXhQUVVGUE8yOUNRVUZGTEV0QlFVc3NSVUZCUlN4TFFVRkxPMmxDUVVGRkxFTkJRVU03WVVGRGVrSTdXVUZGUkN4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGbEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTnFRenRSUVVWRUxFOUJRVTg3V1VGQlJTeExRVUZMTEVWQlFVVXNTVUZCU1R0WlFVRkZMRWxCUVVrc1JVRkJSU3hSUVVGUk8xTkJRVVVzUTBGQlF6dExRVU40UXl4TlFVRk5MRWxCUTB3c1MwRkJTeXhMUVVGTExHTkJRV01zU1VGQlNTeEpRVU0xUWl4TFFVRkxMRXRCUVVzc1kwRkJZeXhKUVVGSkxFbEJRelZDTEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVOVU8xRkJRMEVzVDBGQlR6dFpRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpPMWxCUVVVc1NVRkJTU3hGUVVGRkxFTkJRVU03VTBGQlJTeERRVUZETzB0QlEycERMRTFCUVUwN1VVRkRUQ3hQUVVGUE8xbEJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVczdVMEZCUlN4RFFVRkRPMHRCUTNwQ08wTkJRMFk3UVVGRlRTeE5RVUZOTEdWQlFXVXNVMEZIYkVJc1QwRkJUenRKUVV0bUxFMUJRVTBzUTBGQlF5eExRVUZwUWl4RlFVRnZRenRSUVVNeFJDeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkJMRVZCUVVVc1IwRkJSeXhEUVVGQkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVGQlFVTTdVVUZEZUVRc1RVRkJUU3haUVVGWkxFZEJRVWNzUTBGRGJrSXNWVUZCSzBJc1JVRkRMMElzVjBGQlowTXNSMEZEUkR0WlFVTXZRaXhKUVVGSkxGVkJRVlVzVlVGQlZTeERRVUZETEVsQlFVa3NWVUZCVlN4WFFVRlhMRU5CUVVNc1JVRkJSVHRuUWtGRGJrUXNaVUZCWlR0aFFVTm9RanRaUVVWRUxFMUJRVTBzVFVGQlRTeEhRVUZITEZkQlFWY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTeXhGUVVGRkxGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0WlFVVm9SU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlR0blFrRkRha0lzYTBKQlFXdENMRWRCUVVjc1JVRkJSVHR2UWtGRGNrSXNTVUZCU1N4RlFVRkZMR0ZCUVdFc01FSkJRVEJDTzJsQ1FVTTVReXhEUVVGRExFTkJRVU03WjBKQlEwZ3NaVUZCWlR0aFFVTm9RanRaUVVWRUxFbEJRVWtzVVVGQlVTeFZRVUZWTEVOQlFVTXNTVUZCU1N4UlFVRlJMRmRCUVZjc1EwRkJReXhGUVVGRk8yZENRVU12UXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03WVVGRGFFSTdXVUZGUkN4UFFVRlBPMmRDUVVGRkxFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVTXNTMEZCU3p0blFrRkJSU3hMUVVGTExFVkJRVVVzVFVGQlRTeERRVUZETEVsQlFVazdZVUZCVXl4RFFVRkRPMU5CUXpWRUxFRkJRVU03VVVGRlJpeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRk8xbEJRM0JDTEU5QlFVOHNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJRenRuUWtGRGFrSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETzI5Q1FVTjZRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eERRVUZETEVsQlFVazdiMEpCUTJRc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEpRVUZKTzI5Q1FVTmtMRTFCUVUwc1JVRkJSU3hIUVVGSE8ybENRVU5hTEVOQlFVTTdaMEpCUTBZc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRPMjlDUVVNeFFpeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrN2IwSkJRMlFzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpPMjlDUVVOa0xFMUJRVTBzUlVGQlJTeEhRVUZITzJsQ1FVTmFMRU5CUVVNN1lVRkRTQ3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1MwRkJTeXhEUVVGTkxFZEJRVXNzV1VGQldTeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRelZFTEUxQlFVMDdXVUZEVEN4UFFVRlBMRmxCUVZrc1EwRkRha0lzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8yZENRVU40UWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3WjBKQlEyUXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8yZENRVU5rTEUxQlFVMHNSVUZCUlN4SFFVRkhPMkZCUTFvc1EwRkJReXhGUVVOR0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRlZCUVZVc1EwRkJRenRuUWtGRGVrSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8yZENRVU5rTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTVHRuUWtGRFpDeE5RVUZOTEVWQlFVVXNSMEZCUnp0aFFVTmFMRU5CUVVNc1EwRkRTQ3hEUVVGRE8xTkJRMGc3UzBGRFJqdEpRVVZFTEU5QlFVOHNUVUZCVFN4SFFVRkhMRU5CUTJRc1NVRkJUeXhGUVVOUUxFdEJRVkVzUlVGRFVpeE5RVUYzUWl4SFFVTkZPMUZCUXpGQ0xFOUJRVThzU1VGQlNTeGxRVUZsTEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hGUVVGRkxFbEJRVWs3V1VGRFZpeExRVUZMTEVWQlFVVXNTMEZCU3p0WlFVTmFMRkZCUVZFc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXl4bFFVRmxPMWxCUXk5RExFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJReTlDTEVOQlFVTXNRMEZCUXp0TFFVTktMRU5CUVVNN1EwRkRTRHRCUVhkRFRTeE5RVUZOTEZGQlFWRXNVMEZIV0N4UFFVRlBPMGxCUzJZc1RVRkJUU3hEUVVGRExFdEJRV2xDTEVWQlFXOURPMUZCUXpGRUxFMUJRVTBzUlVGQlJTeE5RVUZOTEVOQlFVRXNSVUZCUlN4SFFVRkhMRU5CUVVFc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhMUVVGTExFTkJRVU1zUVVGQlF6dFJRVU40UkN4SlFVRkpMRWRCUVVjc1EwRkJReXhWUVVGVkxFdEJRVXNzWTBGQll5eExRVUZMTEVWQlFVVTdXVUZETVVNc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlR0blFrRkRja0lzU1VGQlNTeEZRVUZGTEdGQlFXRXNXVUZCV1R0blFrRkRMMElzVVVGQlVTeEZRVUZGTEdOQlFXTXNTMEZCU3p0blFrRkROMElzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4VlFVRlZPMkZCUTNwQ0xFTkJRVU1zUTBGQlF6dFpRVU5JTEdWQlFXVTdVMEZEYUVJN1VVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNSVUZCUlR0WlFVTTFReXhyUWtGQmEwSXNSMEZCUnl4RlFVRkZPMmRDUVVOeVFpeEpRVUZKTEVWQlFVVXNZVUZCWVN4VFFVRlRPMmRDUVVNMVFpeFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRUdG5Ra0ZETDBJc1UwRkJVeXhGUVVGRkxFbEJRVWs3WjBKQlEyWXNTVUZCU1N4RlFVRkZMRTlCUVU4N1lVRkRaQ3hEUVVGRExFTkJRVU03V1VGRlNDeGxRVUZsTzFOQlEyaENPMUZCUlVRc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRUZCUVVNN1VVRkZOVUlzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVU3V1VGRGNrUXNhMEpCUVd0Q0xFZEJRVWNzUlVGQlJUdG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxHRkJRV0VzVDBGQlR6dG5Ra0ZETVVJc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwN1owSkJReTlDTEZOQlFWTXNSVUZCUlN4SlFVRkpPMmRDUVVObUxFbEJRVWtzUlVGQlJTeFBRVUZQTzJGQlEyUXNRMEZCUXl4RFFVRkRPMWxCUTBnc1RVRkJUU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFOQlEyaENPMUZCUlVRc1RVRkJUU3hMUVVGTExFZEJRVWNzUVVGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVTndRaXhIUVVGSExFTkJRVU1zUTBGQlF5eEpRVUZKTEVWQlFVVXNVMEZCVXl4SFFVRkxPMWxCUTNoQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hCUVVGRE8xbEJRelZFTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1QwRkJUeXhKUVVGSkxFTkJRVzlETzFsQlF6VkVMRTlCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGRGJFSXNTVUZCU1N4clFrRkJhMElzUTBGQlF5eEhRVUZITEVWQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzVTBGQlV5eERRVUZETEVOQlEzWkVMRU5CUVVNN1UwRkRTQ3hEUVVGRExFTkJRMFFzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUVVGQlF6dFJRVVYwUWl4SlFVRkpMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTzFsQlEzQkNMRTlCUVU4c1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhQUVVGUExFZEJRVXM3WjBKQlF6RkRMRTlCUVU4c1dVRkJXU3hWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMkZCUTJoRUxFTkJRVU1zUTBGQlF6dFRRVU5LTEUxQlFVMDdXVUZEVEN4UFFVRlBMRmxCUVZrc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQlJTeExRVUZMTEVOQlFUQkNMRU5CUVVNN1UwRkRka1U3UzBGRFJqdEpRVVZFTEVsQlFVa3NTMEZCU3l4SFFVRkhPMUZCUTFZc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTjRRanRKUVVWRUxFbEJRVWtzUTBGQk1FSXNTVUZCVlN4RlFVRnhRanRSUVVNelJDeFBRVUZQTEVsQlFVa3NVVUZCVVN4RFFVRkRPMWxCUTJ4Q0xFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVazdXVUZEV2l4SlFVRkpPMU5CUTB3c1EwRkJReXhEUVVGRE8wdEJRMG83U1VGRlJDeFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVTmtMRTlCUVZVc1JVRkRWaXhOUVVGM1FpeEhRVU5HTzFGQlEzUkNMRTlCUVU4c1NVRkJTU3hSUVVGUkxFTkJRVU03V1VGRGJFSXNTMEZCU3l4RlFVRkZMRTlCUVU4N1dVRkRaQ3hSUVVGUkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1VVRkJVVHRaUVVONFF5eEpRVUZKTEVWQlFVVXNTVUZCU1R0WlFVTldMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXk5Q0xFTkJRVU1zUTBGQlF6dExRVU5LTEVOQlFVTTdRMEZEU0R0QlFUQkNUU3hOUVVGTkxGTkJRVk1zVTBGSFdpeFBRVUZQTzBsQlMyWXNTVUZCU1N4VFFVRlRMRWRCUVVjN1VVRkRaQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMHRCUXpGQ08wbEJRMFFzU1VGQlNTeFhRVUZYTEVkQlFVYzdVVUZEYUVJc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXp0TFFVTTFRanRKUVVORUxFMUJRVTBzUTBGQlF5eExRVUZwUWl4RlFVRnZRenRSUVVNeFJDeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkJMRVZCUVVVc1IwRkJSeXhEUVVGQkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVGQlFVTTdVVUZEZUVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVlVGQlZTeExRVUZMTEdOQlFXTXNUVUZCVFN4RlFVRkZPMWxCUXpORExHdENRVUZyUWl4SFFVRkhMRVZCUVVVN1owSkJRM0pDTEVsQlFVa3NSVUZCUlN4aFFVRmhMRmxCUVZrN1owSkJReTlDTEZGQlFWRXNSVUZCUlN4alFVRmpMRTFCUVUwN1owSkJRemxDTEZGQlFWRXNSVUZCUlN4SFFVRkhMRU5CUVVNc1ZVRkJWVHRoUVVONlFpeERRVUZETEVOQlFVTTdXVUZEU0N4bFFVRmxPMU5CUTJoQ08xRkJSVVFzVFVGQlRTeExRVUZMTEVkQlIwd3NSVUZCUlN4QlFVRkRPMUZCUlZRc1RVRkJUU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRUZCUVVNN1VVRkRiRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFRkJRVU03VVVGRmRFTXNTVUZCU3l4TlFVRk5MRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZGTzFsQlF6RkNMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU03WjBKQlExUXNSMEZCUnl4RlFVRkZMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeHJRa0ZCYTBJc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzQkZMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zVFVGQlRTeERRVU55UWl4SlFVRkpMR3RDUVVGclFpeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRekZFTzJGQlEwWXNRMEZCUXl4RFFVRkRPMU5CUTBvN1VVRkZSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZPMWxCUTNCQ0xFOUJRVThzV1VGQldTeG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVMEZEY0VRc1RVRkJUVHRaUVVOTUxFOUJRVThzV1VGQldTeGxRVUZsTEVOQlFVTXNUVUZCVFN4RlFVRkZMRXRCUVVzc1EwRkJVU3hEUVVGRE8xTkJRekZFTzB0QlEwWTdTVUZGUkN4SlFVRkpMRTlCUVU4c1IwRkJSenRSUVVOYUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkROVUk3U1VGWFJDeFBRVUZQTEUxQlFVMHNRMEZCUXl4TFFVRlZMRVZCUVVVc1RVRkJXU3hGUVVGRkxFdEJRVmNzUlVGQmRVSTdVVUZEZUVVc1NVRkJTU3hOUVVGTkxGbEJRVmtzVDBGQlR5eEZRVUZGTzFsQlF6ZENMRTlCUVU4c1NVRkJTU3hUUVVGVExFTkJRVU03WjBKQlEyNUNMRTlCUVU4c1JVRkJSU3hMUVVGTE8yZENRVU5rTEZOQlFWTXNSVUZCUlN4TlFVRk5PMmRDUVVOcVFpeFJRVUZSTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVTBGQlV6dG5Ra0ZEZWtNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1lVRkRPVUlzUTBGQlF5eERRVUZETzFOQlEwbzdVVUZGUkN4UFFVRlBMRWxCUVVrc1UwRkJVeXhEUVVGRE8xbEJRMjVDTEU5QlFVOHNSVUZCUlN4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRk8xbEJRek5DTEZOQlFWTXNSVUZCUlN4TFFVRkxPMWxCUTJoQ0xGRkJRVkVzUlVGQlJTeHhRa0ZCY1VJc1EwRkJReXhUUVVGVE8xbEJRM3BETEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVFVGQlRTeERRVUZETzFOQlF5OUNMRU5CUVVNc1EwRkJRenRMUVVOS08wTkJRMFk3UVVGclFrMHNUVUZCVFN4TlFVRk5MRk5CUjFRc1QwRkJUenRKUVV0bUxFMUJRVTBzUTBGQlF5eExRVUZwUWl4RlFVRnZRenRSUVVNeFJDeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkJMRVZCUVVVc1IwRkJSeXhEUVVGQkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVGQlFVTTdVVUZEZUVRc1NVRkJTU3hIUVVGSExFTkJRVU1zVlVGQlZTeExRVUZMTEdOQlFXTXNSMEZCUnl4RlFVRkZPMWxCUTNoRExHdENRVUZyUWl4SFFVRkhMRVZCUVVVN1owSkJRM0pDTEVsQlFVa3NSVUZCUlN4aFFVRmhMRmxCUVZrN1owSkJReTlDTEZGQlFWRXNSVUZCUlN4alFVRmpMRWRCUVVjN1owSkJRek5DTEZGQlFWRXNSVUZCUlN4SFFVRkhMRU5CUVVNc1ZVRkJWVHRoUVVONlFpeERRVUZETEVOQlFVTTdXVUZEU0N4bFFVRmxPMU5CUTJoQ08xRkJSVVFzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFRkJRVU03VVVGRGJFTXNUVUZCVFN4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVGQlFVTTdVVUZGZEVNc1RVRkJUU3hMUVVGTExFZEJRVWM3WlVGQlNTeEJRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVRKQ0xFOUJRVThzUlVGQlJUdFRRVUZETEVOQlFVTXNSMEZCUnl4RFFVTnNSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJTenRaUVVOMlFpeFBRVUZQTzJkQ1FVTk1MRWRCUVVjc1JVRkJSU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVU5xUWl4SlFVRkpMR3RDUVVGclFpeERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJUdHZRa0ZCUXl4TFFVRkxPMjlDUVVGRkxFdEJRVXM3YVVKQlFVTXNRMEZCUXl4RFFVTXpSRHRuUWtGRFJDeExRVUZMTEVWQlFVVXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkRja0lzU1VGQlNTeHJRa0ZCYTBJc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVN2IwSkJRVU1zUzBGQlN6dHZRa0ZCUlN4UFFVRlBPMmxDUVVGRExFTkJRVU1zUTBGREwwUTdZVUZEUml4RFFVRkRPMU5CUTBnc1EwRkRSaXhCUVVGRE8xRkJSVVlzU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSVHRaUVVOd1FpeE5RVUZOTEZGQlFWRXNSMEZCUnl4SlFVRkpMRWRCUVVjc1JVRkJSU3hCUVVGRE8xbEJRek5DTEU5QlFVOHNUMEZCVHl4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eFZRVUZaTzJkQ1FVTjRReXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NRMEZCUlR0dlFrRkRlRUlzVFVGQlRTeEhRVUZITEVkQlFVY3NUVUZCVFN4SlFVRkpMRU5CUVVNc1IwRkJSeXhCUVVGRE8yOUNRVU16UWl4TlFVRk5MRXRCUVVzc1IwRkJSeXhOUVVGTkxFbEJRVWtzUTBGQlF5eExRVUZMTEVGQlFVTTdiMEpCUXk5Q0xFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNTMEZCU3l4VFFVRlRMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eFRRVUZUTEVWQlFVVTdkMEpCUXpGRUxHVkJRV1U3Y1VKQlEyaENPMjlDUVVORUxFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNTMEZCU3l4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eFBRVUZQTEVWQlFVVTdkMEpCUTNSRUxFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0eFFrRkRhRUk3YjBKQlJVUXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRwUWtGRGRFTTdaMEpCUTBRc1QwRkJUenR2UWtGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzN2IwSkJRVVVzUzBGQlN5eEZRVUZGTEZGQlFWRTdhVUpCUVVVc1EwRkJRenRoUVVOc1JDeERRVUZETEVOQlFVTTdVMEZEU2l4TlFVRk5PMWxCUTB3c1RVRkJUU3hUUVVGUkxFZEJRVWNzU1VGQlNTeEhRVUZITEVWQlFVVXNRVUZCUXp0WlFVTXpRaXhMUVVGTExFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NRMEZCUlR0blFrRkRlRUlzVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1FVRkJkVUlzUVVGQlF6dG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRVUZCZFVJc1FVRkJRenRuUWtGRGFFUXNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hMUVVGTExGTkJRVk1zU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRk5CUVZNc1JVRkJSVHR2UWtGRE1VUXNaVUZCWlR0cFFrRkRhRUk3WjBKQlEwUXNTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hMUVVGTExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRTlCUVU4c1JVRkJSVHR2UWtGRGRFUXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8ybENRVU5vUWp0blFrRkZSQ3hUUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzJGQlEzUkRPMWxCUTBRc1QwRkJUenRuUWtGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzN1owSkJRVVVzUzBGQlN5eEZRVUZGTEZOQlFWRTdZVUZCUlN4RFFVRkRPMU5CUTJ4RU8wdEJRMFk3U1VGRFJDeFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVbGtMRTlCUVZrc1JVRkRXaXhUUVVGblFpeEZRVU5vUWl4TlFVRjNRaXhIUVVORU8xRkJRM1pDTEU5QlFVOHNTVUZCU1N4TlFVRk5MRU5CUVVNN1dVRkRhRUlzVTBGQlV6dFpRVU5VTEU5QlFVODdXVUZEVUN4UlFVRlJMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNUVUZCVFR0WlFVTjBReXhIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRUUVVNdlFpeERRVUZETEVOQlFVTTdTMEZEU2l4RFFVRkRPME5CUTBnN1FVRnBRazBzVFVGQlRTeE5RVUZOTEZOQlFXZEVMRTlCUVU4N1NVRkxlRVVzVFVGQlRTeERRVUZETEV0QlFXbENMRVZCUVc5RE8xRkJRekZFTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVFc1JVRkJSU3hIUVVGSExFTkJRVUVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0UlFVTjRSQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFZRVUZWTEV0QlFVc3NZMEZCWXl4SFFVRkhMRVZCUVVVN1dVRkRlRU1zYTBKQlFXdENMRWRCUVVjc1JVRkJSVHRuUWtGRGNrSXNTVUZCU1N4RlFVRkZMR0ZCUVdFc1dVRkJXVHRuUWtGREwwSXNVVUZCVVN4RlFVRkZMR05CUVdNc1IwRkJSenRuUWtGRE0wSXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhWUVVGVk8yRkJRM3BDTEVOQlFVTXNRMEZCUXp0WlFVTklMR1ZCUVdVN1UwRkRhRUk3VVVGRlJDeE5RVUZOTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTU3hCUVVGRE8xRkJSWFJDTEVsQlFVa3NSMEZCUnl4RFFVRkRMRTlCUVU4c1MwRkJTeXhKUVVGSkxFVkJRVVU3V1VGRGVFSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSVHRuUWtGRGNrTXNhMEpCUVd0Q0xFZEJRVWNzUlVGQlJUdHZRa0ZEY2tJc1NVRkJTU3hGUVVGRkxHRkJRV0VzVTBGQlV6dHZRa0ZETlVJc1QwRkJUeXhGUVVGRkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCU3p0dlFrRkRNVUlzU1VGQlNTeEZRVUZGTEV0QlFVczdiMEpCUTFnc1UwRkJVeXhGUVVGRkxFbEJRVWs3YjBKQlEyWXNUMEZCVHl4RlFVRkZMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR6dHBRa0ZETjBJc1EwRkJReXhEUVVGRE8yZENRVU5JTEUxQlFVMHNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRoUVVOb1FqdFRRVU5HTzFGQlJVUXNTVUZCU1N4SFFVRkhMRU5CUVVNc1QwRkJUeXhMUVVGTExFbEJRVWtzUlVGQlJUdFpRVU40UWl4SlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRk8yZENRVU55UXl4clFrRkJhMElzUjBGQlJ5eEZRVUZGTzI5Q1FVTnlRaXhKUVVGSkxFVkJRVVVzWVVGQllTeFBRVUZQTzI5Q1FVTXhRaXhQUVVGUExFVkJRVVVzUjBGQlJ5eERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxPMjlDUVVNeFFpeEpRVUZKTEVWQlFVVXNTMEZCU3p0dlFrRkRXQ3hUUVVGVExFVkJRVVVzU1VGQlNUdHZRa0ZEWml4UFFVRlBMRVZCUVVVc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTzJsQ1FVTTNRaXhEUVVGRExFTkJRVU03WjBKQlEwZ3NUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yRkJRMmhDTzFOQlEwWTdVVUZGUkN4TlFVRk5MRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRVUZCUXp0UlFVVjBReXhUUVVGVExGZEJRVmNzUTBGQlF5eFJRVUZ2UXl4RlFVRkZPMWxCUTNwRUxFMUJRVTBzVTBGQlV5eEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRkZMRUZCUVVNN1dVRkROVUlzUzBGQlN5eE5RVUZOTEU5QlFVOHNTVUZCU1N4UlFVRlJMRU5CUVVVN1owSkJRemxDTEVsQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1MwRkJTeXhUUVVGVExFVkJRVVVzWlVGQlpUdG5Ra0ZEYWtRc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeExRVUZMTEU5QlFVOHNSVUZCUlN4TlFVRk5MRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03WjBKQlF5OURMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMkZCUXpsQ08xbEJRMFFzVDBGQlR6dG5Ra0ZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXM3WjBKQlFVVXNTMEZCU3l4RlFVRkZMRk5CUVZNN1lVRkJSU3hEUVVGRE8xTkJRMjVFTzFGQlJVUXNUVUZCVFN4UlFVRlJMRWRCUVVjN1pVRkJTU3hCUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFXdENMRTFCUVUwc1JVRkJSVHRUUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1IwRkRjRVVzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMR3RDUVVGclFpeERRVUZETEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVTnFSU3hCUVVGRE8xRkJSVVlzU1VGQlNTeEhRVUZITEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSVHRaUVVOd1FpeFBRVUZQTEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNVVUZCVVN4SFFVRkxMRmRCUVZjc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEzaEZMRTFCUVUwN1dVRkRUQ3hQUVVGUExGZEJRVmNzUTBGQlF5eFJRVUZSTEVOQlFUQkNMRU5CUVVNN1UwRkRka1E3UzBGRFJqdEpRVVZFTEVkQlFVY3NRMEZCUXl4UFFVRmxMRVZCUVVVc1QwRkJPRUlzUlVGQlVUdFJRVU42UkN4UFFVRlBMRWxCUVVrc1RVRkJUU3hEUVVGRE8xbEJRMmhDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrN1dVRkRXaXhQUVVGUExFVkJRVVU3WjBKQlFVVXNTMEZCU3l4RlFVRkZMRTlCUVU4N1owSkJRVVVzVDBGQlR5eEZRVUZGTEZWQlFWVXNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJRenRoUVVGRk8xTkJRMnhGTEVOQlFVTXNRMEZCVVR0TFFVTllPMGxCUlVRc1IwRkJSeXhEUVVGRExFOUJRV1VzUlVGQlJTeFBRVUU0UWl4RlFVRlJPMUZCUTNwRUxFOUJRVThzU1VGQlNTeE5RVUZOTEVOQlFVTTdXVUZEYUVJc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNUdFpRVU5hTEU5QlFVOHNSVUZCUlR0blFrRkJSU3hMUVVGTExFVkJRVVVzVDBGQlR6dG5Ra0ZCUlN4UFFVRlBMRVZCUVVVc1ZVRkJWU3hSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETzJGQlFVVTdVMEZEYkVVc1EwRkJReXhEUVVGUk8wdEJRMWc3U1VGRlJDeEpRVUZKTEVOQlFVTXNTVUZCV1N4RlFVRkZMRTlCUVRoQ0xFVkJRVkU3VVVGRGRrUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZSTzB0QlF6RkVPMGxCUlVRc1VVRkJVU3hEUVVGRExFOUJRVGhDTEVWQlFXbENPMUZCUTNSRUxFOUJRVThzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVkU3UzBGRGNFTTdTVUZGUkN4UFFVRlBMRTFCUVUwc1IwRkJSeXhEUVVOa0xGTkJRV2RDTEVWQlEyaENMRTFCUVhkQ0xFZEJRMDQ3VVVGRGJFSXNUMEZCVHl4SlFVRkpMRTFCUVUwc1EwRkJRenRaUVVOb1FpeFRRVUZUTzFsQlExUXNUMEZCVHl4RlFVRkZMRWxCUVVrN1dVRkRZaXhQUVVGUExFVkJRVVVzU1VGQlNUdFpRVU5pTEZGQlFWRXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eE5RVUZOTzFsQlEzUkRMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXk5Q0xFTkJRVU1zUTBGQlF6dExRVU5LTEVOQlFVTTdRMEZEU0R0QlFXZERUU3hOUVVGTkxGZEJRVmNzVTBGSFpDeFBRVUZQTzBsQlMyWXNUVUZCVFN4RFFVRkRMRXRCUVdsQ0xFVkJRWGRDTzFGQlF6bERMRTFCUVUwc1JVRkJSU3hIUVVGSExFTkJRVUVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0UlFVTm9SQ3hKUVVGSkxFZEJRVWNzUTBGQlF5eFZRVUZWTEV0QlFVc3NZMEZCWXl4UlFVRlJMRVZCUVVVN1dVRkROME1zYTBKQlFXdENMRWRCUVVjc1JVRkJSVHRuUWtGRGNrSXNTVUZCU1N4RlFVRkZMR0ZCUVdFc1dVRkJXVHRuUWtGREwwSXNVVUZCVVN4RlFVRkZMR05CUVdNc1VVRkJVVHRuUWtGRGFFTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhWUVVGVk8yRkJRM3BDTEVOQlFVTXNRMEZCUXp0WlFVTklMR1ZCUVdVN1UwRkRhRUk3VVVGRlJDeFRRVUZUTEdGQlFXRXNRMEZCUXl4SlFVRlRMRVZCUVVVc1MwRkJaU3hGUVVGWk8xbEJRek5FTEU5QlFVOHNWVUZCVlR0blFrRkRaaXhKUVVGSkxFVkJRVVVzU1VGQlNUdG5Ra0ZEVml4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3WjBKQlEyUXNVMEZCVXl4RlFVRkZPMjlDUVVOVUxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNhMEpCUVd0Q08yOUNRVU0zUWl4SFFVRkhMRU5CUVVNc1kwRkJZenR2UWtGRGJFSXNZVUZCWVRzN2FVSkJSV1FzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZEY0VJc1UwRkJVeXhGUVVGRk8yOUNRVU5VTEVsQlFVa3NSVUZCUlN4aFFVRmhMR2xDUVVGcFFqdHZRa0ZEY0VNc1kwRkJZeXhGUVVGRkxFdEJRVXM3YVVKQlEzUkNPMkZCUTBZc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRlJDeFRRVUZUTEdkQ1FVRm5RaXhEUVVGRExFOUJRVmtzUlVGQlJTeExRVUZsTEVWQlFWazdXVUZEYWtVc1QwRkJUeXhWUVVGVk8yZENRVU5tTEVsQlFVa3NSVUZCUlN4UFFVRlBPMmRDUVVOaUxFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNTVUZCU1R0blFrRkRaQ3hUUVVGVExFVkJRVVU3YjBKQlExUXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhyUWtGQmEwSTdiMEpCUXpkQ0xFZEJRVWNzUTBGQlF5eGpRVUZqTzI5Q1FVTnNRaXhoUVVGaE96dHBRa0ZGWkN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOd1FpeFRRVUZUTEVWQlFVVTdiMEpCUTFRc1NVRkJTU3hGUVVGRkxHRkJRV0VzYlVKQlFXMUNPMjlDUVVOMFF5eGxRVUZsTEVWQlFVVXNTMEZCU3p0cFFrRkRka0k3WVVGRFJpeERRVUZETEVOQlFVTTdVMEZEU2p0UlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSE8xbEJRVVVzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc2EwSkJRV3RDTzFOQlFVVXNRVUZCUXp0UlFVTXpSQ3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEhRVUZITEVOQlFVTXNTVUZCU1N4QlFVRkRPMUZCUlhCQ0xFbEJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRmxCUVZrc1ZVRkJWU3hGUVVGRk8xbEJRek5ETEU5QlFVOHNSMEZCUnl4UFFVRlBMRWRCUVVjc1NVRkJTU3hCUVVGUExFZEJRVXM3WjBKQlEyeERMRTFCUVUwc1MwRkJTeXhIUVVGSExHRkJRV0VzUlVGQlJTeERRVUZETEVGQlFVTTdaMEpCUXk5Q0xFMUJRVTBzVlVGQlZTeEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRM0JETEZWQlFWVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRM2hDTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJTenR2UWtGRFdpeExRVUZMTEVOQlFVTXNVVUZCVVN4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRka01zVFVGQlRTeExRVUZMTEVOQlFVTTdhVUpCUTJJc1EwRkJReXhCUVVGRE8yZENRVU5NTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTFCUVUwc1JVRkJSU3hKUVVGTExGVkJRVlVzUTBGQlV5eEJRVUZETzJkQ1FVTm9SQ3hOUVVGTkxHRkJRV0VzUjBGQlJ5eE5RVUZOTEVGQlF6RkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVU5xUWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVOU0xGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUXpGQ0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCU3p0dlFrRkRXaXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMjlDUVVNMVF5eE5RVUZOTEV0QlFVc3NRMEZCUXp0cFFrRkRZaXhEUVVGRExFRkJRVU03WjBKQlEwd3NUMEZCVHl4aFFVRmhMRU5CUVVNN1lVRkRkRUlzUTBGQlF5eERRVUZETzFOQlEwb3NUVUZCVFR0WlFVTk1MRTlCUVU4c1IwRkJSeXhEUVVGRExFZEJRVWNzU1VGQlNTeEJRVUZQTEVkQlFVczdaMEpCUXpWQ0xFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRUZCUVVNN1owSkJRekZFTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhGUVVGRk8yOUNRVU4yUWl4TlFVRk5MR0ZCUVdFN2QwSkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4VlFVRlZMRU5CUVVNc1MwRkJTeXhEUVVGRE8zRkNRVUZETEVOQlFVTXNRMEZCUXp0cFFrRkROMFE3WjBKQlEwUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1JVRkJSU3hKUVVGTExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFWTXNRVUZCUXp0blFrRkRMME1zVFVGQlRTeGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1FVRkJRenRuUWtGRGJFVXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhQUVVGUExFVkJRVVU3YjBKQlF6RkNMRTFCUVUwc1lVRkJZVHQzUWtGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFVkJRVVVzWVVGQllTeERRVUZETEV0QlFVc3NRMEZCUXp0eFFrRkJReXhEUVVGRExFTkJRVU03YVVKQlEzSkZPMmRDUVVORUxFOUJRVThzWVVGQllTeERRVUZETEVsQlFVa3NRMEZCUXp0aFFVTXpRaXhEUVVGRExFTkJRVkU3VTBGRFdEdExRVU5HTzBsQlJVUXNWVUZCVlN4SFFVRkhPMUZCUTFnc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0TFFVTjJRanRKUVVWRUxGVkJRVlVzUjBGQlJ6dFJRVU5ZTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03UzBGRE1VSTdTVUZGUkN4SlFVRkpMRU5CUTBZc1IwRkJSeXhMUVVGTExFRkJRVThzUlVGRGIwTTdVVUZEYmtRc1QwRkJUeXhKUVVGSkxGZEJRVmNzUTBGQlF6dFpRVU55UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSk8xbEJRMW9zU1VGQlNTeEZRVUZGTEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJRenRUUVVOMlJDeERRVUZETEVOQlFVTTdTMEZEU2p0SlFVVkVMRTlCUVU4c1EwRkRUQ3hWUVVGNVFpeEZRVU5UTzFGQlEyeERMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRVU03V1VGRGNrSXNSMEZCUnl4SlFVRkpMRU5CUVVNc1NVRkJTVHRaUVVOYUxFOUJRVThzUlVGQlJTeFZRVUZWTzFOQlEzQkNMRU5CUVVNc1EwRkJRenRMUVVOS08wbEJSVVFzVTBGQlV5eERRVU5RTEVsQlFVOHNSVUZIT0VJN1VVRkRja01zVFVGQlRTeGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUVVGQlF6dFJRVU4yUXl4UFFVRlBMR0ZCUVdFc1EwRkJVVHRMUVVNM1FqdEpRVVZFTEdWQlFXVXNRMEZEWWl4SlFVRjNReXhGUVVOS08xRkJRM0JETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVGQlFVTTdVVUZEZGtNc1QwRkJUeXhoUVVGaExFTkJRVkU3UzBGRE4wSTdTVUZGUkN4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF6dEpRVVV4UWl4UFFVRlBMRTFCUVUwc1IwRkJSeXhEUVVsa0xFbEJRVkVzUlVGRFVpeFBRVUZYTEVWQlExZ3NUVUZCZDBJc1IwRkRSanRSUVVOMFFpeFBRVUZQTEVsQlFVa3NWMEZCVnl4RFFVRkRPMWxCUTNKQ0xFbEJRVWtzUlVGQlJ5eEpRVUZKTEVkQlExQXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSMEZET1VJc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzFsQlEycEVMRTlCUVU4c1JVRkJSU3hQUVVGUExFbEJRVWtzVlVGQlZTeERRVUZETEUxQlFVMHNSVUZCUlR0WlFVTjJReXhSUVVGUkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1YwRkJWenRaUVVNelF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVZFN1MwRkRXQ3hEUVVGRE8wTkJRMGc3UVVGbFRTeE5RVUZOTEU5QlFVOHNVMEZCSzBJc1QwRkJUenRKUVV0NFJDeEpRVUZKTEUxQlFVMHNSMEZCVFR0UlFVTmtMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXp0TFFVTXpRanRKUVVWRUxFMUJRVTBzUTBGQlF5eExRVUZwUWl4RlFVRnZRenRSUVVNeFJDeE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkJMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03VVVGRGFFUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRVUZCUXp0UlFVTjBReXhQUVVGUExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3V1VGQlJTeEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrN1dVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ6dFRRVUZGTEVOQlFVTXNRMEZCUXp0TFFVTXpSVHRKUVVWRUxFOUJRVThzVFVGQlRTeEhRVUZITEVOQlEyUXNUVUZCWlN4RlFVTm1MRTFCUVhkQ0xFZEJRMVE3VVVGRFppeFBRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRkRPMWxCUTJwQ0xFMUJRVTBzUlVGQlJTeE5RVUZOTzFsQlEyUXNVVUZCVVN4RlFVRkZMSEZDUVVGeFFpeERRVUZETEU5QlFVODdXVUZEZGtNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TlFVRk5MRU5CUVVNN1UwRkRMMElzUTBGQlF5eERRVUZETzB0QlEwb3NRMEZCUXp0RFFVTklPMEZCWTAwc1RVRkJUU3hWUVVGVkxGTkJRVmtzVDBGQlR6dEpRVU40UXl4TlFVRk5MRU5CUVVNc1MwRkJhVUlzUlVGQmIwTTdVVUZETVVRc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRk8xbEJRMnhETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEVGQlFVTTdXVUZEZUVNc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlR0blFrRkRja0lzU1VGQlNTeEZRVUZGTEdGQlFXRXNaVUZCWlR0blFrRkRiRU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTenRoUVVNeFFpeERRVUZETEVOQlFVTTdXVUZEU0N4bFFVRmxPMU5CUTJoQ08xRkJRMFFzVDBGQlR6dFpRVUZGTEUxQlFVMHNSVUZCUlN4UFFVRlBPMWxCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTzFOQlFVVXNRMEZCUXp0TFFVTXZRenRKUVVWRUxFbEJRVWtzUzBGQlN5eEhRVUZITzFGQlExWXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF6dExRVU40UWp0SlFVVkVMRTlCUVU4c1RVRkJUU3hIUVVGSExFTkJRMlFzUzBGQlVTeEZRVU5TTEUxQlFYZENMRWRCUTA0N1VVRkRiRUlzVDBGQlR5eEpRVUZKTEZWQlFWVXNRMEZCUXp0WlFVTndRaXhMUVVGTExFVkJRVVVzUzBGQlN6dFpRVU5hTEZGQlFWRXNSVUZCUlN4eFFrRkJjVUlzUTBGQlF5eFZRVUZWTzFsQlF6RkRMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMU5CUXk5Q0xFTkJRVU1zUTBGQlF6dExRVU5LTEVOQlFVTTdRMEZEU0R0QlFXdERSQ3hUUVVGVExHRkJRV0VzUTBGQlF5eE5RVUZYTEVWQlFVVXNUVUZCZDBJc1JVRkJSVHRKUVVNMVJDeFBRVUZQTEVsQlFVa3NUMEZCVHl4RFFVRkRPMUZCUTJwQ0xFMUJRVTBzUlVGQlJTeE5RVUZOTzFGQlEyUXNVVUZCVVN4RlFVRkZMSEZDUVVGeFFpeERRVUZETEU5QlFVODdVVUZEZGtNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TlFVRk5MRU5CUVVNN1MwRkRMMElzUTBGQlF5eERRVUZSTzBOQlExZzdRVUZGVFN4TlFVRk5MRTlCUVU4c1UwRkJNRU1zVDBGQlR6dEpRVWx1UlN4TlFVRk5MRU5CUVVNc1MwRkJhVUlzUlVGQmIwTTdVVUZETVVRc1NVRkJTU3hQUVVGUExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUTJ4RExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03V1VGRGVFTXNUVUZCVFN4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVGQlFVTTdXVUZEZUVNc2EwSkJRV3RDTEVkQlFVY3NSVUZCUlR0blFrRkRja0lzVVVGQlVTeEZRVUZGTEV0QlFVc3NWVUZCVlN4RFFVRkRMR05CUVdNc1EwRkJRenRuUWtGRGVrTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhWUVVGVk8yZENRVU40UWl4SlFVRkpMRVZCUVVVc1lVRkJZU3haUVVGWk8yRkJRMmhETEVOQlFVTXNRMEZCUXp0WlFVTklMR1ZCUVdVN1UwRkRhRUk3VVVGRlJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVU3V1VGREwwTXNUVUZCVFN4SlFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0WlFVTjRReXhOUVVGTkxHVkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1FVRkJRenRaUVVWNFF5eHJRa0ZCYTBJc1NVRkJSeXhGUVVGRk8yZENRVU55UWl4UlFVRlJMRVZCUVVVc1NVRkJSeXhEUVVGRExFbEJRVWs3WjBKQlEyeENMRWxCUVVrc1JVRkJSU3hoUVVGaExHdENRVUZyUWp0blFrRkRja01zVDBGQlR5eEZRVUZGTEdWQlFXTTdZVUZEZUVJc1EwRkJReXhEUVVGRE8xbEJRMGdzWlVGQlpUdFRRVU5vUWp0UlFVTkVMRTlCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZGtJN1NVRkZSQ3hKUVVGSkxFOUJRVThzUjBGQlJ6dFJRVU5hTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03UzBGRGVrSTdTVUZGUkN4SlFVRkpMRWxCUVVrc1IwRkJZenRSUVVOd1FpeE5RVUZOTEZWQlFWVXNSMEZCVVN4RlFVRkZMRUZCUVVNN1VVRkRNMElzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlJUdFpRVU5zUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzFOQlEzWkNPMUZCUTBRc1QwRkJUeXhWUVVGVkxFTkJRVkU3UzBGRE1VSTdTVUZGUkN4SlFVRkpMRTFCUVUwc1IwRkJZenRSUVVOMFFpeE5RVUZOTEZWQlFWVXNSMEZCVVN4RlFVRkZMRUZCUVVNN1VVRkRNMElzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlJUdFpRVU5zUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzFOQlEzWkNPMUZCUTBRc1QwRkJUeXhWUVVGVkxFTkJRVkU3UzBGRE1VSTdTVUZGUkN4SlFVRkpMRWxCUVVrc1IwRkJZenRSUVVOd1FpeE5RVUZOTEZWQlFWVXNSMEZCVVN4RlFVRkZMRUZCUVVNN1VVRkRNMElzUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlJUdFpRVU5zUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETzFOQlEzWkNPMUZCUTBRc1QwRkJUeXhWUVVGVkxFTkJRVkU3UzBGRE1VSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1IwRkJSeXhoUVVGaExFTkJRVU03UTBGREwwSTdRVUZwUWswc1RVRkJUU3hoUVVGaExGTkJRVFpDTEU5QlFVODdTVUZKTlVRc1RVRkJUU3hEUVVGRExFdEJRV2xDTEVWQlFTdENPMUZCUTNKRUxFMUJRVTBzWjBKQlFXZENMRWRCUVVjc1MwRkJTeXhyUWtGQmEwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEJRVUZETzFGQlJXNUZMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1VVRkRlRU1zU1VGRFJTeEhRVUZITEVOQlFVTXNWVUZCVlN4TFFVRkxMR05CUVdNc1RVRkJUU3hKUVVOMlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4TFFVRkxMR05CUVdNc1RVRkJUU3hGUVVOMlF6dFpRVU5CTEUxQlFVMHNZMEZCWXl4SFFVRkhMRXRCUVVzc1dVRkJXU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRUZCUVVNN1dVRkRNMFFzYTBKQlFXdENMRWRCUVVjc1JVRkJSVHRuUWtGRGNrSXNVVUZCVVN4RlFVRkZMRXRCUVVzc1ZVRkJWU3hEUVVGRExHTkJRV01zUTBGQlF6dG5Ra0ZEZWtNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFZRVUZWTzJkQ1FVTjRRaXhKUVVGSkxFVkJRVVVzWVVGQllTeFpRVUZaTzJGQlEyaERMRU5CUVVNc1EwRkJRenRaUVVOSUxHVkJRV1U3VTBGRGFFSTdVVUZGUkN4SlFVRkpMR2RDUVVGblFpeERRVUZETEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVWQlFVVTdXVUZETDBNc1RVRkJUU3hsUVVGakxFZEJRVWNzUzBGQlN5eFpRVUZaTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUVVGQlF6dFpRVVV6UkN4clFrRkJhMElzUjBGQlJ5eEZRVUZGTzJkQ1FVTnlRaXhSUVVGUkxFVkJRVVVzUjBGQlJ5eERRVUZETEVsQlFVazdaMEpCUTJ4Q0xFbEJRVWtzUlVGQlJTeGhRVUZoTEd0Q1FVRnJRanRuUWtGRGNrTXNUMEZCVHl4RlFVRkZMR1ZCUVdNN1lVRkRlRUlzUTBGQlF5eERRVUZETzFsQlEwZ3NaVUZCWlR0VFFVTm9RanRSUVVORUxFOUJRVThzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRlJMRU5CUVVNN1MwRkRPVUk3U1VGRlJDeEpRVUZKTEVsQlFVa3NSMEZCUnp0UlFVTlVMRTlCUVU4c1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdTMEZEZWtJN1NVRkZSQ3hQUVVGUExFMUJRVTBzUjBGQlJ5eERRVU5rTEUxQlFWTXNSVUZEVkN4TlFVRjNRaXhIUVVOSU8xRkJRM0pDTEU5QlFVOHNTVUZCU1N4aFFVRmhMRU5CUVVNN1dVRkRka0lzVFVGQlRTeEZRVUZGTEUxQlFVMDdXVUZEWkN4UlFVRlJMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNZVUZCWVR0WlFVTTNReXhIUVVGSExHMUNRVUZ0UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRUUVVNdlFpeERRVUZETEVOQlFVTTdTMEZEU2l4RFFVRkRPME5CUTBnN1FVRmxUU3hOUVVGTkxGVkJRVlVzVTBGQkswSXNUMEZCVHp0SlFVc3pSQ3hOUVVGTkxFTkJRVU1zUzBGQmFVSXNSVUZCYjBNN1VVRkRNVVFzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhCUVVGRE8xRkJRMmhFTEVsQlEwVXNSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhqUVVGakxFOUJRVThzU1VGRGVFTXNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFdEJRVXNzUzBGQlN5eEZRVU14UWp0WlFVTkJMR3RDUVVGclFpeEhRVUZITEVWQlFVVTdaMEpCUTNKQ0xFbEJRVWtzUlVGQlJTeGhRVUZoTEZsQlFWazdaMEpCUXk5Q0xGRkJRVkVzUlVGQlJTeGpRVUZqTEU5QlFVODdaMEpCUXk5Q0xGRkJRVkVzUlVGQlJTeEhRVUZITEVOQlFVTXNWVUZCVlR0aFFVTjZRaXhEUVVGRExFTkJRVU03V1VGRFNDeGxRVUZsTzFOQlEyaENPMUZCUlVRc1RVRkJUU3hYUVVGWExFZEJRMllzUjBGQlJ5eERRVUZETEZWQlFWVXNTMEZCU3l4alFVRmpMRTlCUVU4c1IwRkRjRU1zUjBGQlJ5eERRVUZETEVsQlFVa3NSMEZEVWl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRVUZCUXp0UlFVVm9ReXhQUVVGUExFZEJRMHdzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVZNc1IwRkJTenRaUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVTdaMEpCUTNKRExFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNTVUZCU1R0blFrRkRaQ3hSUVVGUkxFVkJRVVVzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4clFrRkJhMEk3WVVGRGVFTXNRMEZCUXl4RFFVRkRPMU5CUTBvc1EwRkJReXhEUVVOSUxFTkJRVU03UzBGRFNEdEpRVVZFTEU5QlFVOHNUVUZCVFN4SFFVRkhMRU5CUTJRc1RVRkJVeXhGUVVOVUxFMUJRWGRDTEVkQlEwNDdVVUZEYkVJc1QwRkJUeXhKUVVGSkxGVkJRVlVzUTBGQlF6dFpRVU53UWl4SlFVRkpMRVZCUVVVc1RVRkJUVHRaUVVOYUxGRkJRVkVzUlVGQlJTeHhRa0ZCY1VJc1EwRkJReXhWUVVGVk8xbEJRekZETEVkQlFVY3NiVUpCUVcxQ0xFTkJRVU1zVFVGQlRTeERRVUZETzFOQlF5OUNMRU5CUVVNc1EwRkJRenRMUVVOS0xFTkJRVU03UTBGRFNEdEJRWEZEVFN4TlFVRk5MRlZCUVZVc1UwRkpZaXhQUVVGUE8wbEJRMllzVTBGQlV5eEhRVUZITzFGQlExWXNUMEZCVHl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dExRVU42UWp0SlFVVkVMRTFCUVUwc1EwRkJReXhMUVVGcFFpeEZRVUZ2UXp0UlFVTXhSQ3hOUVVGTkxFVkJRVVVzVFVGQlRTeERRVUZCTEVWQlFVVXNSMEZCUnl4RFFVRkJMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03VVVGRmVFUXNUVUZCVFN4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NTVUZCU1N4QlFVRkRPMUZCUlhoRExFbEJRVWtzVFVGQlRTeERRVUZETEVsQlFVa3NTMEZCU3l4WlFVRlpMRVZCUVVVN1dVRkRhRU1zVFVGQlRTeFRRVUZUTEVkQlFVY3NUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVGQlFVTTdXVUZGTjBNc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlR0blFrRkRjRUlzVDBGQlR5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEZOQlFWTXNSMEZCU3p0dlFrRkRjRVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU03ZDBKQlEyeERMRWxCUVVrc1JVRkJSU3hUUVVGVE8zZENRVU5tTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTVHQzUWtGRFpDeE5RVUZOTEVWQlFVVXNSMEZCUnp0eFFrRkRXaXhEUVVGRExFTkJRVU03YVVKQlEwb3NRMEZCUXl4RFFVRkRPMkZCUTBvc1RVRkJUVHRuUWtGRFRDeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dHZRa0ZEYWtNc1NVRkJTU3hGUVVGRkxGTkJRVk03YjBKQlEyWXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8yOUNRVU5rTEUxQlFVMHNSVUZCUlN4SFFVRkhPMmxDUVVOYUxFTkJRVU1zUTBGQlF6dGhRVU5LTzFOQlEwWTdVVUZGUkN4TlFVRk5MRkZCUVZFc1IwRkJhMEk3V1VGRE9VSXNVVUZCVVN4RlFVRkZMRU5CUVVNc1IwRkJZeXhIUVVGTE8yZENRVU0xUWl4clFrRkJhMElzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVNMVFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVN2IwSkJRMklzVFVGQlRTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMmxDUVVOb1FpeE5RVUZOTzI5Q1FVTk1MRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dHBRa0ZEYUVJN1lVRkRSanRaUVVORUxFbEJRVWtzU1VGQlNTeEpRVUZITzJkQ1FVTlVMRTlCUVU4c1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF6dGhRVU5xUWp0VFFVTkdMRUZCUVVNN1VVRkZSaXhSUVVGUkxFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzFGQlEzSkVMRWxCUVVrc1RVRkJUU3hEUVVGRExFbEJRVWtzUzBGQlN5eFpRVUZaTEVWQlFVVTdXVUZEYUVNc1RVRkJUU3hwUWtGQmFVSXNSMEZCUnl4RFFVTjRRaXhIUVVGWkxFZEJSVW83WjBKQlExSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVWQlFVVXNVVUZCVVN4RFFVRkRMRUZCUVVNN1owSkJRMmhFTEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFVkJRVVU3YjBKQlEzQkNMRTlCUVU4c1QwRkJUeXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0cFFrRkRhRU03WjBKQlEwUXNTVUZCU1N4TlFVRk5MRmxCUVZrc1QwRkJUeXhGUVVGRk8yOUNRVU0zUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVOaUxESkdRVUV5Uml4RFFVTTFSaXhEUVVGRE8ybENRVU5JTzJkQ1FVTkVMRTlCUVU4c1IwRkJSeXhEUVVGRE8yRkJRMW9zUVVGQlF6dFpRVVZHTEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFdEJRVXNzUzBGQlN5eEZRVUZGTzJkQ1FVTTVRaXhOUVVGTkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03YjBKQlEzaERMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNUdHZRa0ZEWkN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3YjBKQlEyUXNUVUZCVFN4RlFVRkZMRWRCUVVjN2FVSkJRMW9zUTBGQlF5eEJRVUZETzJkQ1FVTklMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eFRRVUZUTEVWQlFVVXNaVUZCWlR0blFrRkRMME1zU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRTlCUVU4c1JVRkJSU3hOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdaMEpCUnpkRExHbENRVUZwUWl4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dG5Ra0ZETDBJc1QwRkJUenR2UWtGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzN2IwSkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4TFFVRkxPMmxDUVVGRkxFTkJRVU03WVVGRGNrUXNUVUZCVFR0blFrRkRUQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVTndRaXhYUVVGWExFTkJRVU03YjBKQlFVVXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8yOUNRVUZGTEVsQlFVa3NSVUZCUlN4SFFVRkhMRU5CUVVNc1NVRkJTVHR2UWtGQlJTeE5RVUZOTEVWQlFVVXNSMEZCUnp0cFFrRkJSU3hEUVVGRExFTkJRelZFTEVsQlFVa3NRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJTenR2UWtGRFppeEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1UwRkJVeXhGUVVGRkxHVkJRV1U3YjBKQlF5OURMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUzBGQlN5eFBRVUZQTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8yOUNRVVUzUXl4UFFVRlBMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlRUdDNRa0ZETDBNc1QwRkJUenMwUWtGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzN05FSkJRVVVzUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4TFFVRkxPM2xDUVVGRkxFTkJRVU03Y1VKQlEzSkVMRU5CUVVNc1EwRkJRenRwUWtGRFNpeERRVUZETEVOQlFVTTdZVUZEVGp0VFFVTkdPMUZCUlVRc1NVRkJTU3hOUVVGTkxFTkJRVU1zU1VGQlNTeExRVUZMTEZkQlFWY3NSVUZCUlR0WlFVTXZRaXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4TFFVRkxMRXRCUVVzc1JVRkJSVHRuUWtGRE9VSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRPMjlDUVVOMlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrN2IwSkJRMlFzU1VGQlNTeEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpPMjlDUVVOa0xFMUJRVTBzUlVGQlJTeEhRVUZITzJsQ1FVTmFMRU5CUVVNc1FVRkJRenRuUWtGTFNDeEpRVUZKTEVOQlFVTXNVVUZCVVN4SlFVRkpMRU5CUVVNc1JVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dG5Ra0ZGYUVNc1RVRkJUU3hOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxGRkJRVkVzUTBGQlF5eEJRVUZETzJkQ1FVTjBSQ3hKUVVGSkxFMUJRVTBzV1VGQldTeFBRVUZQTEVWQlFVVTdiMEpCUXpkQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlEySXNRMEZCUXl3clJrRkJLMFlzUTBGQlF5eERRVU5zUnl4RFFVRkRPMmxDUVVOSU8yZENRVVZFTEU5QlFVODdiMEpCUVVVc1RVRkJUU3hGUVVGRkxFMUJRVTBzUTBGQlF5eExRVUZMTzI5Q1FVRkZMRXRCUVVzc1JVRkJSU3hOUVVGTk8ybENRVUZGTEVOQlFVTTdZVUZEYUVRc1RVRkJUVHRuUWtGRFRDeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVOd1FpeFhRVUZYTEVOQlFVTTdiMEpCUVVVc1NVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEpRVUZKTzI5Q1FVRkZMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNUdHZRa0ZCUlN4TlFVRk5MRVZCUVVVc1IwRkJSenRwUWtGQlJTeERRVUZETEVOQlF6VkVMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUjBGQlN6dHZRa0ZEWkN4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0dlFrRkxhRU1zVDBGQlR5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGRGFrVXNRMEZCUXl4TlFVRk5MRWRCUVVzc1EwRkJRenMwUWtGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRXRCUVVzN05FSkJRVVVzUzBGQlN5eEZRVUZGTEUxQlFVMDdlVUpCUVVVc1EwRkJReXhEUVVOMFJDeERRVUZETzJsQ1FVTklMRU5CUVVNc1EwRkJRenRoUVVOT08xTkJRMFk3VVVGRlJDeExRVUZMTEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRMUVVNeFFqdEpRVVZFTEU5QlFVOHNUVUZCVFN4SFFVRkhMRU5CUTJRc1RVRkJVeXhGUVVOVUxFMUJRVFJDTEVWQlF6VkNMRTFCUVhkQ0xFZEJRMUU3VVVGRGFFTXNUMEZCVHl4SlFVRkpMRlZCUVZVc1EwRkJRenRaUVVOd1FpeE5RVUZOTzFsQlEwNHNVVUZCVVN4RlFVRkZMSEZDUVVGeFFpeERRVUZETEZWQlFWVTdXVUZETVVNc1RVRkJUVHRaUVVOT0xFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJReTlDTEVOQlFVTXNRMEZCUXp0TFFVTktMRU5CUVVNN1NVRkZSaXhQUVVGUExHOUNRVUZ2UWl4SFFVRkhMRU5CUXpWQ0xGVkJRWEZETEVWQlEzSkRMRTFCUVZNc1JVRkRWQ3hOUVVGM1FpeEhRVU5STzFGQlEyaERMRTlCUVU4c1NVRkJTU3hWUVVGVkxFTkJRVU03V1VGRGNFSXNUVUZCVFR0WlFVTk9MRTFCUVUwc1JVRkJSVHRuUWtGQlJTeEpRVUZKTEVWQlFVVXNXVUZCV1R0blFrRkJSU3hUUVVGVExFVkJRVVVzVlVGQlZUdGhRVUZGTzFsQlEzSkVMRkZCUVZFc1JVRkJSU3h4UWtGQmNVSXNRMEZCUXl4VlFVRlZPMWxCUXpGRExFZEJRVWNzYlVKQlFXMUNMRU5CUVVNc1RVRkJUU3hEUVVGRE8xTkJReTlDTEVOQlFVTXNRMEZCUXp0TFFVTktMRU5CUVVNN1EwRkRTRHRCUVcxQ1RTeE5RVUZOTEZkQlFWY3NVMEZCSzBJc1QwRkJUenRKUVVzMVJDeE5RVUZOTEVOQlFVTXNTMEZCYVVJc1JVRkJiME03VVVGRE1VUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTXNRVUZCUXp0UlFVTjRReXhKUVVGSkxGVkJRVlVzUzBGQlN5eGpRVUZqTEZOQlFWTXNSVUZCUlR0WlFVTXhReXhQUVVGUExFZEJRVWNzVTBGQlV5eERRVUZETEVOQlFVTTdVMEZEZEVJN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU14UXp0SlFVVkVMRTFCUVUwc1IwRkJSenRSUVVOUUxFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkROVUk3U1VGRlJDeFBRVUZQTEUxQlFVMHNSMEZCUnl4RFFVTmtMRWxCUVU4c1JVRkRVQ3hOUVVGM1FpeEhRVU5NTzFGQlEyNUNMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRVU03V1VGRGNrSXNVMEZCVXl4RlFVRkZMRWxCUVVrN1dVRkRaaXhSUVVGUkxFVkJRVVVzY1VKQlFYRkNMRU5CUVVNc1YwRkJWenRaUVVNelF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRExFMUJRVTBzUTBGQlF6dFRRVU12UWl4RFFVRkRMRU5CUVZFN1MwRkRXQ3hEUVVGRE8wTkJRMGc3UVVGcFFrMHNUVUZCVFN4WFFVRlhMRk5CUVN0Q0xFOUJRVTg3U1VGTE5VUXNUVUZCVFN4RFFVRkRMRXRCUVdsQ0xFVkJRVzlETzFGQlF6RkVMRTFCUVUwc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1VVRkRlRU1zU1VGQlNTeFZRVUZWTEV0QlFVc3NZMEZCWXl4SlFVRkpMRVZCUVVVN1dVRkRja01zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTJwQ08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdTMEZETVVNN1NVRkZSQ3hOUVVGTkxFZEJRVWM3VVVGRFVDeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8wdEJRelZDTzBsQlJVUXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkRaQ3hKUVVGUExFVkJRMUFzVFVGQmQwSXNSMEZEVER0UlFVTnVRaXhQUVVGUExFbEJRVWtzVjBGQlZ5eERRVUZETzFsQlEzSkNMRk5CUVZNc1JVRkJSU3hKUVVGSk8xbEJRMllzVVVGQlVTeEZRVUZGTEhGQ1FVRnhRaXhEUVVGRExGZEJRVmM3V1VGRE0wTXNSMEZCUnl4dFFrRkJiVUlzUTBGQlF5eE5RVUZOTEVOQlFVTTdVMEZETDBJc1EwRkJReXhEUVVGUk8wdEJRMWdzUTBGQlF6dERRVU5JTzBGQlowSk5MRTFCUVUwc1ZVRkJWU3hUUVVFclFpeFBRVUZQTzBsQlN6TkVMRTFCUVUwc1EwRkJReXhMUVVGcFFpeEZRVUZ2UXp0UlFVTXhSQ3hOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZCTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRUZCUVVNN1VVRkRhRVFzU1VGQlNTeEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWxCUVVrc1FVRkJRenRSUVVOd1FpeEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRXRCUVVzc1kwRkJZeXhUUVVGVExFVkJRVVU3V1VGRE9VTXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdVMEZEYWtNN1VVRkRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOb1F5eEpRVUZKTzFsQlEwb3NTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8xbEJRMlFzVFVGQlRTeEZRVUZGTEVkQlFVYzdVMEZEV2l4RFFVRkRMRU5CUVVNN1MwRkRTanRKUVVWRUxHRkJRV0VzUjBGQlJ6dFJRVU5rTEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU03UzBGRE5VSTdTVUZGUkN4UFFVRlBMRTFCUVUwc1IwRkJSeXhEUVVOa0xFbEJRVThzUlVGRFVDeE5RVUYzUWl4SFFVTk1PMUZCUTI1Q0xFOUJRVThzU1VGQlNTeFhRVUZYTEVOQlFVTTdXVUZEY2tJc1UwRkJVeXhGUVVGRkxFbEJRVWs3V1VGRFppeFJRVUZSTEVWQlFVVXNjVUpCUVhGQ0xFTkJRVU1zVjBGQlZ6dFpRVU16UXl4SFFVRkhMRzFDUVVGdFFpeERRVUZETEUxQlFVMHNRMEZCUXp0VFFVTXZRaXhEUVVGRExFTkJRVkU3UzBGRFdDeERRVUZETzBOQlEwZzdRVUZqVFN4TlFVRk5MRTFCUVUwc1UwRkJVeXhQUVVGUE8wbEJRMnBETEUxQlFVMHNRMEZCUXl4TFFVRnBRaXhGUVVGM1FqdFJRVU01UXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4QlFVRkRPMUZCUTNoRExFbEJRVWtzVlVGQlZTeExRVUZMTEdOQlFXTXNSMEZCUnl4RlFVRkZPMWxCUTNCRExFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1MwRkJTeXhEUVVGRExFRkJRVU03V1VGRGVFTXNhMEpCUVd0Q0xFZEJRVWNzUlVGQlJUdG5Ra0ZEY2tJc1NVRkJTU3hGUVVGRkxHRkJRV0VzV1VGQldUdG5Ra0ZETDBJc1VVRkJVU3hGUVVGRkxHTkJRV01zUjBGQlJ6dG5Ra0ZETTBJc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFZRVUZWTzJGQlEzcENMRU5CUVVNc1EwRkJRenRaUVVOSUxHVkJRV1U3VTBGRGFFSTdVVUZGUkN4UFFVRlBPMWxCUVVVc1RVRkJUU3hGUVVGRkxFOUJRVTg3V1VGQlJTeExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRWxCUVVrN1UwRkJSU3hEUVVGRE8wdEJReTlETzBsQlJVUXNUMEZCVHl4TlFVRk5MRWRCUVVjc1EwRkJReXhOUVVGM1FpeEhRVUZoTzFGQlEzQkVMRTlCUVU4c1NVRkJTU3hOUVVGTkxFTkJRVU03V1VGRGFFSXNVVUZCVVN4RlFVRkZMSEZDUVVGeFFpeERRVUZETEUxQlFVMDdXVUZEZEVNc1IwRkJSeXh0UWtGQmJVSXNRMEZCUXl4TlFVRk5MRU5CUVVNN1UwRkRMMElzUTBGQlF5eERRVUZETzB0QlEwb3NRMEZCUXp0RFFVTklPMEZCYjBKdFFpeERRVUZCTzBsQlEyeENMRTFCUVUwc1JVRkJSU3hUUVVGVExFTkJRVU1zVlVGQlZUdERRVU0zUWl4RFFVRkJMRU5CUVVNN1NVRkZTeXh4UWtGblEwNDdWVUZvUTFjc2NVSkJRWEZDTzBsQlFYSkNMSEZDUVVGeFFpeERRVU12UWl4WFFVRlRMRWxCUVZRc1YwRkJVenRKUVVSRExIRkNRVUZ4UWl4RFFVVXZRaXhYUVVGVExFbEJRVlFzVjBGQlV6dEpRVVpETEhGQ1FVRnhRaXhEUVVjdlFpeFJRVUZOTEVsQlFVNHNVVUZCVFR0SlFVaEpMSEZDUVVGeFFpeERRVWt2UWl4WFFVRlRMRWxCUVZRc1YwRkJVenRKUVVwRExIRkNRVUZ4UWl4RFFVc3ZRaXhaUVVGVkxFbEJRVllzV1VGQlZUdEpRVXhCTEhGQ1FVRnhRaXhEUVUwdlFpeFRRVUZQTEVsQlFWQXNVMEZCVHp0SlFVNUhMSEZDUVVGeFFpeERRVTh2UWl4alFVRlpMRWxCUVZvc1kwRkJXVHRKUVZCR0xIRkNRVUZ4UWl4RFFWRXZRaXhUUVVGUExFbEJRVkFzVTBGQlR6dEpRVkpITEhGQ1FVRnhRaXhEUVZNdlFpeFJRVUZOTEVsQlFVNHNVVUZCVFR0SlFWUkpMSEZDUVVGeFFpeERRVlV2UWl4WlFVRlZMRWxCUVZZc1dVRkJWVHRKUVZaQkxIRkNRVUZ4UWl4RFFWY3ZRaXhWUVVGUkxFbEJRVklzVlVGQlVUdEpRVmhGTEhGQ1FVRnhRaXhEUVZrdlFpeFRRVUZQTEVsQlFWQXNVMEZCVHp0SlFWcEhMSEZDUVVGeFFpeERRV0V2UWl4VlFVRlJMRWxCUVZJc1ZVRkJVVHRKUVdKRkxIRkNRVUZ4UWl4RFFXTXZRaXhYUVVGVExFbEJRVlFzVjBGQlV6dEpRV1JETEhGQ1FVRnhRaXhEUVdVdlFpeFZRVUZSTEVsQlFWSXNWVUZCVVR0SlFXWkZMSEZDUVVGeFFpeERRV2RDTDBJc2RVSkJRWEZDTEVsQlFYSkNMSFZDUVVGeFFqdEpRV2hDV0N4eFFrRkJjVUlzUTBGcFFpOUNMR2xDUVVGbExFbEJRV1lzYVVKQlFXVTdTVUZxUWt3c2NVSkJRWEZDTEVOQmEwSXZRaXhWUVVGUkxFbEJRVklzVlVGQlVUdEpRV3hDUlN4eFFrRkJjVUlzUTBGdFFpOUNMRmRCUVZNc1NVRkJWQ3hYUVVGVE8wbEJia0pETEhGQ1FVRnhRaXhEUVc5Q0wwSXNVVUZCVFN4SlFVRk9MRkZCUVUwN1NVRndRa2tzY1VKQlFYRkNMRU5CY1VJdlFpeFJRVUZOTEVsQlFVNHNVVUZCVFR0SlFYSkNTU3h4UWtGQmNVSXNRMEZ6UWk5Q0xHRkJRVmNzU1VGQldDeGhRVUZYTzBsQmRFSkVMSEZDUVVGeFFpeERRWFZDTDBJc1UwRkJUeXhKUVVGUUxGTkJRVTg3U1VGMlFrY3NjVUpCUVhGQ0xFTkJkMEl2UWl4WlFVRlZMRWxCUVZZc1dVRkJWVHRKUVhoQ1FTeHhRa0ZCY1VJc1EwRjVRaTlDTEZOQlFVOHNTVUZCVUN4VFFVRlBPMGxCZWtKSExIRkNRVUZ4UWl4RFFUQkNMMElzV1VGQlZTeEpRVUZXTEZsQlFWVTdTVUV4UWtFc2NVSkJRWEZDTEVOQk1rSXZRaXhsUVVGaExFbEJRV0lzWlVGQllUdEpRVE5DU0N4eFFrRkJjVUlzUTBFMFFpOUNMR0ZCUVZjc1NVRkJXQ3hoUVVGWE8wbEJOVUpFTEhGQ1FVRnhRaXhEUVRaQ0wwSXNZVUZCVnl4SlFVRllMR0ZCUVZjN1NVRTNRa1FzY1VKQlFYRkNMRU5CT0VJdlFpeFpRVUZWTEVsQlFWWXNXVUZCVlR0SlFUbENRU3h4UWtGQmNVSXNRMEVyUWk5Q0xGbEJRVlVzU1VGQlZpeFpRVUZWTzBkQkwwSkJMSEZDUVVGeFFpeExRVUZ5UWl4eFFrRkJjVUk3UVVGNVJXcERMRTFCUVUwc1ZVRkJWU3hIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVGQlFVTTdRVUZEYWtJc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU53UWl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRMWdzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTm9RaXhWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEzSkNMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRFZpeFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTNwQ0xFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZEYUVJc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU5XTEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRjRUlzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTnFRaXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEyaERMRTFCUVUwc1UwRkJVeXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVGQlFVTTdRVUZEYkVNc1RVRkJUU3hWUVVGVkxFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRVUZCUXp0QlFVTllMRk5CUVZNc1EwRkJReXhaUVVGWkxFTkJRVU03UVVGRGFFUXNUVUZCVFN4VFFVRlRMRWRCUVVjc1VVRkJVU3hEUVVGRExFMUJRVTBzUVVGQlF6dEJRVU5JTEhGQ1FVRnhRaXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU51UXl4bFFVRmxMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRemxDTEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRaaXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEzQkNMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRFpDeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTFRc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU4yUWl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRMW9zVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTnlRaXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlEyaERMRTFCUVUwc1kwRkJZeXhIUVVGSExHRkJRV0VzUTBGQlF5eE5RVUZOTEVGQlFVTTdRVUZEZUVJc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF6dEJRVU5zUWl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRMnBDTEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRia0lzVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTnFRaXhWUVVGVkxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNN1FVTTVka2hvUkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGMVJTeERRVUZKTEVWQlFVVXNRMEZCU1N4SFFVRm5RaXhEUVVGRE8xRkJRM0JJTEVsQlFVa3NSVUZCUlN4SlFVRkpPMUZCUTFZc1MwRkJTeXhGUVVGRkxFTkJRVU03VVVGRFVpeE5RVUZOTEVWQlFVVXNRMEZCUXp0TFFVTlVMRU5CUVVNc1FVRkJRenRCUVhWQ1NDeE5RVUZOTEZWQlFWVXNSMEZCUnl4RFFVTnNRaXhIUVVGTkxFVkJRMDRzVVVGQmVVSXNSVUZEZWtJc1NVRkJXU3hGUVVOYUxFdEJRVEpDTEVkQlEzWkNPMGxCUTBvc1RVRkJUU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEJRVUZQTEVGQlFVTTdTVUZEY2tJc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCU3p0UlFVTTFReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEJRVUZETzFGQlJYcENMRWxCUVVrc1QwRkJUeXhEUVVGRExFdEJRVXNzVlVGQlZTeEZRVUZGTzFsQlF6VkNMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEU5QlFVOHNSMEZCV1N4SFFVRkxPMmRDUVVOd1F5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVU3YjBKQlEyWXNUVUZCVFN4SlFVRkpMRWRCUVVjc1RVRkJUU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVGQlFVTTdiMEpCUXpsQ0xFMUJRVTBzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4QlFVRkRPMjlDUVVWMFF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRwUWtGRGFrSTdaMEpCUlVRc1QwRkJUeXhEUVVGRExFVkJRVVVzUTBGQlF6dGhRVU5ZTEVOQlFVTXNRMEZCUXp0VFFVTklPMUZCUlVRc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzB0QlF6bENMRU5CUVVNc1EwRkJRenREUVVOSU8wRkJjVVJOTEUxQlFVMHNWVUZCVlN4SFFVRkhMRU5CUVVrc1IwRkJUU3hGUVVGRkxFbEJRVmtzUjBGQmIwSTdTVUZEY2tVc1QwRkJUeXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVXM3VVVGRE4wUXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1FVRkJWU3hCUVVGRE8xRkJSVzVETEVsQlFVa3NUVUZCVFN4SlFVRkpMRU5CUVVNc1JVRkJSVHRaUVVOb1FpeE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkRMRUZCUVhsRUxFRkJRVU03V1VGRGRFVXNUMEZCVHp0blFrRkJReXhEUVVGRE8yZENRVUZGTEU5QlFVOHNTVUZCVXl4SFFVRkxPMjlDUVVNdlFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRUZCUVVNN2IwSkJRemRETEUxQlFVMHNSVUZCUlN4SFFVRkhMRTFCUVUwc1MwRkJTeXhEUVVGRExFTkJRVU1zUlVGQlJUdDNRa0ZCUlN4SlFVRkpMRVZCUVVVc1EwRkJRenQzUWtGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFR0eFFrRkJSU3hEUVVGRExFRkJRVU03YjBKQlJYWkVMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzNkQ1FVTllMRTlCUVU4c1JVRkJSU3hEUVVGRE8zRkNRVU5XTzI5Q1FVVkVMRWxCUVVrc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJUdDNRa0ZEWkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhOUVVGTkxFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVGQlFVTTdkMEpCUXpWRUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNUMEZCVHl4RlFVRkZPelJDUVVOcVFpeFBRVUZQTzJkRFFVTk9MRXRCUVVzc1JVRkJSU3hIUVVGSExFTkJRVU1zUzBGQlN6czJRa0ZEYUVJc1EwRkJRVHQ1UWtGRFJEdDNRa0ZGUkN4UFFVRlBMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU03Y1VKQlEyaENPMmxDUVVORU8yRkJRVU1zUTBGQlFUdFRRVU5HTzFGQlJVUXNUMEZCVHp0WlFVRkRMRU5CUVVNN1dVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFVRkRMRU5CUVVNN1MwRkROMElzUTBGQlF5eERRVUZETEVOQlFXdENPME5CUTNKQ0xFRkJRVU03UVVGRlN5eE5RVUZOTEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVUwc1IwRkJNa0k3U1VGRE5VUXNUMEZCVHl4RFFVRkRMRmxCUVZrc1VVRkJVU3hEUVVGRE8wTkJRemRDTzBGQlJVMHNUVUZCVFN4cFFrRkJhVUlzUjBGQlJ5eERRVUZETEVOQlFVMHNSMEZCYzBNN1NVRkROMFVzVDBGQlVTeFBRVUZQTEVOQlFVTXNTMEZCU3l4UlFVRlJMRWxCUVVrc1EwRkJReXhEUVVGRExFdEJRVXNzYjBKQlFXOUNMRU5CUVVVN1EwRkRPVVE3UVVGRlRTeE5RVUZOTEUxQlFVMHNSMEZCUnl4RFFVRkpMRWRCUVhOQ0xFZEJRVkU3U1VGRGRrUXNTVUZCU1N4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVU3VVVGREwwTXNUVUZCVFN4SFFVRkhMRU5CUVVNN1MwRkRWanRKUVVWRUxFOUJRVThzUjBGQlJ5eERRVUZETzBOQlExZzdRVU01UjAwc1RVRkJUU3hKUVVGSkxFZEJRVk1zUTBGRGVrSXNSMEZCVFN4RlFVTk9MRWxCUVRaRExFVkJRemRETEZGQlFUQkNMRWRCUTBrN1NVRkRPVUlzU1VGQlNTeERRVUZETEVkQlFXZERMRWxCUVVrc1FVRkJRenRKUVVNeFF5eEpRVUZKTEZGQlFWRXNSVUZCUlR0UlFVTmlMRWxCUVVrc1EwRkJReXhCUVVGblFpeEJRVUZETzFGQlEzUkNMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlR0WlFVTTFRaXhEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETzFOQlEySXNUVUZCVFR0WlFVTk9MRU5CUVVNc1IwRkJSenRuUWtGQlF5eFJRVUZSTzJGQlFVTXNRMEZCUXp0VFFVTm1PMUZCUlVRc1EwRkJReXhIUVVGSE8xbEJRMGdzUjBGQlNTeEpRVUZKTzFsQlExSXNVVUZCVVN4RlFVRkZMRU5CUVVNN1UwRkRXQ3hEUVVGRE8wdEJRMFlzVFVGQlRTeEpRVUZKTEVsQlFVa3NSVUZCUlR0UlFVTm9RaXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1dVRkRlRUlzUTBGQlF5eEhRVUZITzJkQ1FVRkZMRkZCUVZFc1JVRkJSU3hKUVVGSk8yRkJRVVVzUVVGQlR5eERRVUZETzFOQlF6bENMRTFCUVUwc1NVRkJTU3hQUVVGUExFbEJRVWtzUzBGQlN5eFJRVUZSTEVsQlFVa3NTVUZCU1N4WlFVRlpMRWxCUVVrc1JVRkJSVHRaUVVNMVJDeERRVUZETEVkQlFVYzdaMEpCUVVVc1VVRkJVU3hGUVVGRk8yOUNRVUZETEVsQlFVazdhVUpCUVVNN1lVRkJSU3hCUVVGUExFTkJRVU03VTBGRGFFTXNUVUZCVFR0WlFVTk9MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU03VTBGRFZEdExRVU5FTzBsQlEwUXNTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhCUVVGRExFRkJRVU03U1VGRFdpeEpRVUZKTEVWQlFVVXNRMEZCUXl4UlFVRlJMRVZCUVVVN1VVRkRhRUlzUlVGQlJTeERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZCTEVOQlFVTXNSMEZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFRkJRVThzUTBGQlF6dExRVU5zUkR0SlFVVkVMRTlCUVU4c1MwRkJTeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0RFFVTnlRaXhCUVVGRE8wRkJSVVlzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZEWWl4SFFVRk5MRVZCUTA0c1NVRkJhVU1zUjBGRFNEdEpRVU01UWl4TlFVRk5MRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NRMEZCUXl4QlFVRjFReXhCUVVGRE8wbEJRemxGTEVsQlFVa3NTVUZCU1N4RlFVRkZPMUZCUTFRc1RVRkJUU3hGUVVGRkxGRkJRVkVzUTBGQlFTeEZRVUZGTEVWQlFVVXNRMEZCUVN4RlFVRkZMRlZCUVZVc1EwRkJRU3hGUVVGRkxFZEJRVWNzU1VGQlNTeEZRVUZGTEVkQlFVY3NTVUZCU1N4QlFVRkRPMUZCUlc1RUxFbEJRVWtzVVVGQlVTeEZRVUZGTzFsQlEySXNSVUZCUlN4RFFVRkRMRTFCUVUwc1NVRkJTU3hSUVVGUkxFTkJRVU1zUTBGQlF6dFRRVU4yUWp0UlFVTkVMRWxCUVVrc1JVRkJSU3hGUVVGRk8xbEJRMUFzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJTenRuUWtGRGRrTXNSVUZCUlN4RFFVRkRMR2RDUVVGblFpeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVZFc1EwRkJRenRoUVVOc1F5eERRVUZETEVOQlFVTTdVMEZEU0R0UlFVTkVMRWxCUVVrc1ZVRkJWU3hGUVVGRk8xbEJRMllzVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJTenRuUWtGRE1VTXNSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZ6UWl4RFFVRkRPMkZCUXpORExFTkJRVU1zUTBGQlF6dFRRVU5JTzFGQlJVUXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEZUVJN1NVRkZSQ3hQUVVGUExFVkJRVVVzUTBGQlF6dERRVU5XTEVGQlFVTTdRVU42UjBzc1RVRkJUU3d3UWtGQk1FSXNSMEZCUnl4WFFVRlBPMGxCUTJoRUxFdEJRVXNzUlVGQlJTeFZRVUZOTEZsQlFWRXNRMEZCUXp0SlFVTjBRaXhSUVVGUkxFVkJRVVVzVlVGQlRTeFhRVUZQTzFGQlEzUkNMRWxCUVVrc1JVRkJSU3haUVVGUk8xRkJRMlFzVTBGQlV5eEZRVUZGTEZsQlFWRXNRMEZCUXl4UlFVRlJMRVZCUVVVN1MwRkRPVUlzUTBGQlF5eERRVUZETzBOQlEwZ3NRMEZCUXl4QlFVRkRPMGxCUjBrc1VVRkhUanRWUVVoWExGRkJRVkU3U1VGQlVpeFJRVUZSTEVOQlEyNUNMRTFCUVVrc1NVRkJSeXhOUVVGTk8wbEJSRVlzVVVGQlVTeERRVVZ1UWl4SlFVRkZMRWxCUVVjc1NVRkJTVHRIUVVaRkxGRkJRVkVzUzBGQlVpeFJRVUZSTzBGQlNXSXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eFZRVUZOTzBsQlEzSkRMR1ZCUVZjc1VVRkJVU3hEUVVGRE8wbEJRM0JDTEZkQlFVODdVVUZCUlN4TFFVRkxMRVZCUVVVc1dVRkJVVHRMUVVGRkxFTkJRVU03UTBGRE0wSXNRMEZCUXl4QlFVRkRPMEZCUjBrc1RVRkJUU3hIUVVGSExFZEJRVWM3U1VGRGJFSXNSVUZCUlN4RlFVRkZPMUZCUTBnc1lVRkJZU3hGUVVGRk8xbEJRMlFzUjBGQlJ5eEZRVUZGTEVsQlFVa3NVMEZCVXl4RlFVRkZMREJDUVVFd1FpeERRVUZETzFOQlF5OURPMUZCUTBRc1NVRkJTU3hGUVVGRk8xbEJRMHdzVTBGQlV5eEZRVUZGTEVsQlFVa3NXVUZCVVN4RlFVRkZMR2RDUVVGblFpeERRVUZETzFOQlF6RkRPMUZCUTBRc1QwRkJUeXhGUVVGRk8xbEJRMUlzVTBGQlV5eEZRVUZGTEVsQlFVa3NXVUZCVVN4RlFVRkZMR2RDUVVGblFpeERRVUZETzFOQlF6RkRPMHRCUTBRN1EwRkRSQ3hCUVVGRE8wRkROMEpHTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1NVRkJUVHRKUVVOeVFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1VVRkJVU3hCUVVGRE8wbEJRekZDTEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEJRVUZETzBsQlF6TkRMRTlCUVU4c1owSkJRV2RDTEVkQlFVY3NRMEZCUXl4RFFVRkRPME5CUXpWQ0xFTkJRVU1zUlVGQlJTeEJRVUZETzBGQlJVd3NUVUZCVFN4WFFVRlhMRWRCUVVjc1EwRkRia0lzU1VGQldTeEZRVU5hTEZOQlFUQkVMRVZCUXpGRUxGTkJRV3RDTEVkQlEyUTdTVUZEU2l4TlFVRk5MRTFCUVUwc1IwRkJSeXhMUVVGTExFdEJRVXNzUlVGQlJUdFJRVUZGTEZOQlFWTXNSVUZCUlN4TlFVRk5PMHRCUVVVc1JVRkJSU3hKUVVGSkxFTkJRVU1zUVVGQlF6dEpRVU40UkN4TlFVRk5MRTFCUVUwc1IwRkJSeXhMUVVGTExFdEJRVXNzUlVGQlJUdFJRVUZGTEZOQlFWTXNSVUZCUlN4UlFVRlJPMHRCUVVVc1JVRkJSU3hUUVVGVExFTkJRVU1zUVVGQlF6dEpRVU12UkN4TlFVRk5MRVZCUVVVc1IwRkJSeXhUUVVGVExFZEJRVWNzUzBGQlN5eEhRVUZITEVWQlFVVTdVVUZEYUVNc1UwRkJVeXhGUVVGRkxFbEJRVWs3VVVGRFppeEpRVUZKTEVWQlFVVXNVMEZCVXp0UlFVTm1MRTFCUVUwc1JVRkJSU3hSUVVGUk8xRkJRMmhDTEVWQlFVVXNSVUZCUlR0WlFVRkZMRlZCUVZVc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlN5eERRVUZETEVOQlFVTXNZMEZCWXl4RlFVRkZPMU5CUVVVN1MwRkROME1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRUZCUVVNN1NVRkZhRUlzVFVGQlRTeE5RVUZOTEVkQlFVY3NTMEZCU3l4UlFVRlJMRVZCUVVVN1VVRkROMElzVTBGQlV5eEZRVUZGTEdWQlFXVTdVVUZETVVJc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRFdDeEZRVUZGTzFGQlFVTXNUVUZCVFR0UlFVRkZMRTFCUVUwN1MwRkJReXhEUVVGRExFRkJRVU03U1VGRmNrSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1ZVRkJXVHRSUVVNelFpeE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUXpkRExFMUJRVTBzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzUTBGQlF5eFhRVUZYTEVkQlFVY3NVMEZCVXl4RFFVRkRPMUZCUXk5Q0xFMUJRVTBzUTBGQlF5eFRRVUZUTEVkQlFVY3NaVUZCWlN4RFFVRkRPMUZCUlc1RExFMUJRVTBzUlVGQlJTeEhRVUZITEUxQlFVMHNVMEZCVXl4RlFVRkZMRUZCUVVNN1VVRkROMElzU1VGQlNTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNCQ0xFMUJRVTBzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RFFVRkRPMWxCUXpkQ0xFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xTkJRemxDTEUxQlFVMHNTVUZCU1N4clFrRkJhMElzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYWtNc1RVRkJUU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xbEJRM3BETEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFOQlF6bENMRTFCUVUwc1NVRkJTU3hQUVVGUExFVkJRVVVzUzBGQlN5eFJRVUZSTEVWQlFVVTdXVUZEYkVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRPMWxCUXpsQ0xFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8xTkJRemxDTEUxQlFVMDdXVUZEVGl4TlFVRk5MRU5CUVVNc1YwRkJWeXhIUVVGSExFVkJRVVVzUTBGQlF6dFpRVU40UWl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0VFFVTjZRanRSUVVWRUxFMUJRVTBzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUjBGQlJ5eExRVUZMTEVOQlFVTTdTMEZEZUVJc1FVRkJRenRKUVVWR0xFOUJRVThzUlVGQlJTeERRVUZETzBsQlJWWXNUMEZCVHl4TFFVRkxMRXRCUVVzc1JVRkJSVHRSUVVGRkxGTkJRVk1zUlVGQlJTeHJRa0ZCYTBJN1MwRkJSeXhGUVVGRk8xRkJRVU1zVFVGQlRUdFJRVUZGTEVWQlFVVTdTMEZCUXl4RFFVRkRMRU5CUVVNN1EwRkRja1U3UVVGRlJDeE5RVUZOTEVsQlFVa3NSMEZCUnl4VlFVRlpPMGxCUTNoQ0xFMUJRVTBzU1VGQlNTeEhRVUZITEUxQlFVMHNUVUZCVFN4RFFVRkRMRVZCUVVVc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNTVUZCU1N4UlFVRlJMRUZCUVVNN1NVRkZPVVFzVFVGQlRTeFpRVUZaTEVkQlFVY3NTMEZCU3l4VFFVRlRMRVZCUVVVN1VVRkRjRU1zUzBGQlN5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRPMUZCUTI1Q0xFdEJRME1zUzBGQlN5eEZRVU5NTzFsQlFVVXNVMEZCVXl4RlFVRkZMRTlCUVU4N1UwRkJSU3hGUVVOMFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGQkxFTkJRVU1zUjBGQlNTeFhRVUZYTEVOQlF6bENMRU5CUVVNc1JVRkRSQ3hKUVVGTkxFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGRGFrTXNRMEZCUXl4RFFVTkdPMHRCUTBRc1EwRkJReXhCUVVGRE8wbEJSVWdzVFVGQlRTeGxRVUZsTEVkQlFVY3NTMEZCU3l4VFFVRlRMRVZCUVVVN1VVRkRka01zUzBGQlN5eEpRVUZKTEVWQlFVVXNWVUZCVlN4RFFVRkRPMUZCUTNSQ0xFdEJRVXNzUzBGQlN5eEZRVUZGTzFsQlFVVXNVMEZCVXl4RlFVRkZMRlZCUVZVN1UwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVFc1JVRkJSU3hIUVVGSkxGZEJRVmNzUTBGRE1VVXNSVUZCUlN4RFFVRkRMRWxCUVVrc1JVRkRVQ3hKUVVGTkxFMUJRVTBzUTBGQlF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlF6RkRMRVZCUVVVc1EwRkJReXhUUVVGVExFTkJRMW9zUTBGQlF5eERRVUZETzB0QlEwZ3NRMEZCUXl4QlFVRkRPMGxCUlVnc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNXVUZCV1N4RlFVRkZMR1ZCUVdVc1EwRkJReXhEUVVGRE8wTkJRemRFTEVGQlFVTTdRVUZGUml4SlFVRkpMRVZCUVVVc1EwRkJReUo5XFxuXCI7IiwiZXhwb3J0IGNvbnN0IHN0eWxlID0gXCIvKiBHbG9iYWwgRWxlbWVudCBSZXNldHMgKi9cXG5cXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcXG5cXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcdG1hcmdpbjogMDtcXG5cXHRwYWRkaW5nOiAwO1xcbn1cXG5cXG51bCB7XFxuXFx0bGlzdC1zdHlsZTogbm9uZTtcXG59XFxuXFxuaW1nIHtcXG5cXHRtYXgtd2lkdGg6IDEwMCU7XFxufVxcblxcbmgxIHtcXG5cXHRtYXJnaW4tdG9wOiAwLjVlbTtcXG5cXHRtYXJnaW4tYm90dG9tOiAwLjVlbTtcXG59XFxuXFxuOnJvb3Qge1xcblxcdGZvbnQtZmFtaWx5OiBzYW5zO1xcblxcdGZvbnQtc2l6ZTogMjRweDtcXG5cXHRmb250LXN0cmV0Y2g6IGV4cGFuZGVkO1xcbn1cXG5cXG46cm9vdCB7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcblxcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFx0aGVpZ2h0OiAxMDB2aDtcXG59XFxuXFxuYm9keSB7XFxuXFx0cGFkZGluZzogMXJlbTtcXG5cXHR3aWR0aDogMTAwJTtcXG5cXHRtYXgtd2lkdGg6IDgwY2g7XFxufVxcblxcbi5yZWZyZXNoIHtcXG5cXHRiYWNrZ3JvdW5kOiAjMTM3NzUyO1xcblxcdGNvbG9yOiB3aGl0ZTtcXG5cXHRmb250LXNpemU6IGluaGVyaXQ7XFxuXFx0cGFkZGluZzogMC4yNWVtO1xcblxcdGJvcmRlcjogbm9uZTtcXG5cXHRib3JkZXItcmFkaXVzOiA3cHg7XFxufVxcblxcbi5yZWZyZXNoW2Rpc2FibGVkXSB7XFxuXFx0YmFja2dyb3VuZDogZ3JheTtcXG59XFxuXFxuLnN0YXR1cy1jb250YWluZXIge1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XFxufVxcblxcbi5zdGF0dXMtY29udGFpbmVyID4gKiB7XFxuXFx0bWFyZ2luLWxlZnQ6IC0xcHg7XFxuXFx0bWFyZ2luLXRvcDogLTFweDtcXG59XFxuXFxuLnN0YXR1cy1idXR0b24ge1xcblxcdGZvbnQtc2l6ZTogaW5oZXJpdDtcXG5cXHR0ZXh0LWFsaWduOiB1bnNldDtcXG5cXHRmbGV4OiAxIDEgbWF4LWNvbnRlbnQ7XFxuXFxuXFx0Ym9yZGVyOiAxcHggc29saWQgYmxhY2s7XFxuXFx0cGFkZGluZzogMC41ZW07XFxuXFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG5cXG4uc3RhdHVzLWJ1dHRvbjpob3ZlciB7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4uc3RhdHVzLWJ1dHRvbi51cDpub3QoOmhvdmVyKSB7XFxuXFx0YmFja2dyb3VuZDogI0RDRjlDRDtcXG59XFxuXFxuLnN0YXR1cy1idXR0b24uZG93bjpub3QoOmhvdmVyKSB7XFxuXFx0YmFja2dyb3VuZDogI0Y5Q0RDRDtcXG59XFxuXFxuLnN0YXR1cy1idXR0b24uZXJyb3I6bm90KDpob3Zlcikge1xcblxcdGJhY2tncm91bmQ6ICNGOUNEQ0Q7XFxufVxcblxcbi5zdGF0dXMtYnV0dG9uLnVwIC5zdGF0dXMge1xcblxcdGNvbG9yOiBncmVlbjtcXG59XFxuXFxuLnN0YXR1cy1idXR0b24uZG93biAuc3RhdHVzIHtcXG5cXHRjb2xvcjogcmVkO1xcbn1cXG5cXG4uc3RhdHVzLWJ1dHRvbi5lcnJvciAuc3RhdHVzIHtcXG5cXHRjb2xvcjogcmVkO1xcbn1cXG5cXG4uc3RhdHVzLWJ1dHRvbiAubmFtZSB7XFxuXFx0ZmxleDogMSAxIG1heC1jb250ZW50O1xcbn1cXG5cXG4uZ28ge1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXHRwYWRkaW5nOiAwLjVlbTtcXG5cXG5cXHRib3JkZXI6IDFweCBzb2xpZCBibGFjaztcXG5cXHRjb2xvcjogaW5oZXJpdDtcXG5cXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XFxuXFx0YmFja2dyb3VuZDogI0M2RDRGRjtcXG59XFxuXFxuLmdvOmhvdmVyIHtcXG5cXHRmaWx0ZXI6IGJyaWdodG5lc3MoMC45KTtcXG59XFxuXCIiLCJleHBvcnQgbmFtZXNwYWNlIHV0aWwge1xuICBleHBvcnQgdHlwZSBBc3NlcnRFcXVhbDxULCBFeHBlY3RlZD4gPSBbVF0gZXh0ZW5kcyBbRXhwZWN0ZWRdXG4gICAgPyBbRXhwZWN0ZWRdIGV4dGVuZHMgW1RdXG4gICAgICA/IHRydWVcbiAgICAgIDogZmFsc2VcbiAgICA6IGZhbHNlO1xuICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWw8QSwgQj4oX2NvbmQ6IEFzc2VydEVxdWFsPEEsIEI+KSB7fVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBhc3NlcnROZXZlcihfeDogbmV2ZXIpOiBuZXZlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gIH1cblxuICBleHBvcnQgdHlwZSBPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFBpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj47XG4gIGV4cG9ydCB0eXBlIE9taXRLZXlzPFQsIEsgZXh0ZW5kcyBzdHJpbmc+ID0gUGljazxULCBFeGNsdWRlPGtleW9mIFQsIEs+PjtcbiAgZXhwb3J0IHR5cGUgTWFrZVBhcnRpYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gT21pdDxULCBLPiAmXG4gICAgUGFydGlhbDxQaWNrPFQsIEs+PjtcblxuICBleHBvcnQgY29uc3QgYXJyYXlUb0VudW0gPSA8VCBleHRlbmRzIHN0cmluZywgVSBleHRlbmRzIFtULCAuLi5UW11dPihcbiAgICBpdGVtczogVVxuICApOiB7IFtrIGluIFVbbnVtYmVyXV06IGsgfSA9PiB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgIG9ialtpdGVtXSA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiBvYmogYXMgYW55O1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBnZXRWYWxpZEVudW1WYWx1ZXMgPSAob2JqOiBhbnkpID0+IHtcbiAgICBjb25zdCB2YWxpZEtleXMgPSBvYmplY3RLZXlzKG9iaikuZmlsdGVyKFxuICAgICAgKGs6IGFueSkgPT4gdHlwZW9mIG9ialtvYmpba11dICE9PSBcIm51bWJlclwiXG4gICAgKTtcbiAgICBjb25zdCBmaWx0ZXJlZDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrIG9mIHZhbGlkS2V5cykge1xuICAgICAgZmlsdGVyZWRba10gPSBvYmpba107XG4gICAgfVxuICAgIHJldHVybiBvYmplY3RWYWx1ZXMoZmlsdGVyZWQpO1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBvYmplY3RWYWx1ZXMgPSAob2JqOiBhbnkpID0+IHtcbiAgICByZXR1cm4gb2JqZWN0S2V5cyhvYmopLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIG9ialtlXTtcbiAgICB9KTtcbiAgfTtcblxuICBleHBvcnQgY29uc3Qgb2JqZWN0S2V5czogT2JqZWN0Q29uc3RydWN0b3JbXCJrZXlzXCJdID1cbiAgICB0eXBlb2YgT2JqZWN0LmtleXMgPT09IFwiZnVuY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgID8gKG9iajogYW55KSA9PiBPYmplY3Qua2V5cyhvYmopIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgOiAob2JqZWN0OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkge1xuICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZpbmQgPSA8VD4oXG4gICAgYXJyOiBUW10sXG4gICAgY2hlY2tlcjogKGFyZzogVCkgPT4gYW55XG4gICk6IFQgfCB1bmRlZmluZWQgPT4ge1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnIpIHtcbiAgICAgIGlmIChjaGVja2VyKGl0ZW0pKSByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICBleHBvcnQgdHlwZSBpZGVudGl0eTxUPiA9IFQ7XG4gIGV4cG9ydCB0eXBlIGZsYXR0ZW48VCBleHRlbmRzIG9iamVjdD4gPSBpZGVudGl0eTx7IFtrIGluIGtleW9mIFRdOiBUW2tdIH0+O1xuICBleHBvcnQgdHlwZSBub1VuZGVmaW5lZDxUPiA9IFQgZXh0ZW5kcyB1bmRlZmluZWQgPyBuZXZlciA6IFQ7XG5cbiAgZXhwb3J0IGNvbnN0IGlzSW50ZWdlcjogTnVtYmVyQ29uc3RydWN0b3JbXCJpc0ludGVnZXJcIl0gPVxuICAgIHR5cGVvZiBOdW1iZXIuaXNJbnRlZ2VyID09PSBcImZ1bmN0aW9uXCJcbiAgICAgID8gKHZhbCkgPT4gTnVtYmVyLmlzSW50ZWdlcih2YWwpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgOiAodmFsKSA9PlxuICAgICAgICAgIHR5cGVvZiB2YWwgPT09IFwibnVtYmVyXCIgJiYgaXNGaW5pdGUodmFsKSAmJiBNYXRoLmZsb29yKHZhbCkgPT09IHZhbDtcblxuICBleHBvcnQgZnVuY3Rpb24gam9pblZhbHVlczxUIGV4dGVuZHMgYW55W10+KFxuICAgIGFycmF5OiBULFxuICAgIHNlcGFyYXRvciA9IFwiIHwgXCJcbiAgKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgIC5tYXAoKHZhbCkgPT4gKHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIgPyBgJyR7dmFsfSdgIDogdmFsKSlcbiAgICAgIC5qb2luKHNlcGFyYXRvcik7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IFpvZFBhcnNlZFR5cGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgXCJzdHJpbmdcIixcbiAgXCJuYW5cIixcbiAgXCJudW1iZXJcIixcbiAgXCJpbnRlZ2VyXCIsXG4gIFwiZmxvYXRcIixcbiAgXCJib29sZWFuXCIsXG4gIFwiZGF0ZVwiLFxuICBcImJpZ2ludFwiLFxuICBcInN5bWJvbFwiLFxuICBcImZ1bmN0aW9uXCIsXG4gIFwidW5kZWZpbmVkXCIsXG4gIFwibnVsbFwiLFxuICBcImFycmF5XCIsXG4gIFwib2JqZWN0XCIsXG4gIFwidW5rbm93blwiLFxuICBcInByb21pc2VcIixcbiAgXCJ2b2lkXCIsXG4gIFwibmV2ZXJcIixcbiAgXCJtYXBcIixcbiAgXCJzZXRcIixcbl0pO1xuXG5leHBvcnQgdHlwZSBab2RQYXJzZWRUeXBlID0ga2V5b2YgdHlwZW9mIFpvZFBhcnNlZFR5cGU7XG5cbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGE6IGFueSk6IFpvZFBhcnNlZFR5cGUgPT4ge1xuICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG5cbiAgc3dpdGNoICh0KSB7XG4gICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkO1xuXG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3RyaW5nO1xuXG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgcmV0dXJuIGlzTmFOKGRhdGEpID8gWm9kUGFyc2VkVHlwZS5uYW4gOiBab2RQYXJzZWRUeXBlLm51bWJlcjtcblxuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5ib29sZWFuO1xuXG4gICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5mdW5jdGlvbjtcblxuICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJpZ2ludDtcblxuICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmFycmF5O1xuICAgICAgfVxuICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUubnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgZGF0YS50aGVuICYmXG4gICAgICAgIHR5cGVvZiBkYXRhLnRoZW4gPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICBkYXRhLmNhdGNoICYmXG4gICAgICAgIHR5cGVvZiBkYXRhLmNhdGNoID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5wcm9taXNlO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBNYXAgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIE1hcCkge1xuICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5tYXA7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnNldDtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgRGF0ZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5kYXRlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUub2JqZWN0O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVua25vd247XG4gIH1cbn07XG4iLCJpbXBvcnQgdHlwZSB7IElzc3VlRGF0YSwgWm9kRXJyb3JNYXAsIFpvZElzc3VlIH0gZnJvbSBcIi4uL1pvZEVycm9yLnRzXCI7XG5pbXBvcnQgeyBkZWZhdWx0RXJyb3JNYXAsIGdldEVycm9yTWFwIH0gZnJvbSBcIi4uL1pvZEVycm9yLnRzXCI7XG5pbXBvcnQgdHlwZSB7IFpvZFBhcnNlZFR5cGUgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBtYWtlSXNzdWUgPSAocGFyYW1zOiB7XG4gIGRhdGE6IGFueTtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgZXJyb3JNYXBzOiBab2RFcnJvck1hcFtdO1xuICBpc3N1ZURhdGE6IElzc3VlRGF0YTtcbn0pOiBab2RJc3N1ZSA9PiB7XG4gIGNvbnN0IHsgZGF0YSwgcGF0aCwgZXJyb3JNYXBzLCBpc3N1ZURhdGEgfSA9IHBhcmFtcztcbiAgY29uc3QgZnVsbFBhdGggPSBbLi4ucGF0aCwgLi4uKGlzc3VlRGF0YS5wYXRoIHx8IFtdKV07XG4gIGNvbnN0IGZ1bGxJc3N1ZSA9IHtcbiAgICAuLi5pc3N1ZURhdGEsXG4gICAgcGF0aDogZnVsbFBhdGgsXG4gIH07XG5cbiAgbGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG4gIGNvbnN0IG1hcHMgPSBlcnJvck1hcHNcbiAgICAuZmlsdGVyKChtKSA9PiAhIW0pXG4gICAgLnNsaWNlKClcbiAgICAucmV2ZXJzZSgpIGFzIFpvZEVycm9yTWFwW107XG4gIGZvciAoY29uc3QgbWFwIG9mIG1hcHMpIHtcbiAgICBlcnJvck1lc3NhZ2UgPSBtYXAoZnVsbElzc3VlLCB7IGRhdGEsIGRlZmF1bHRFcnJvcjogZXJyb3JNZXNzYWdlIH0pLm1lc3NhZ2U7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmlzc3VlRGF0YSxcbiAgICBwYXRoOiBmdWxsUGF0aCxcbiAgICBtZXNzYWdlOiBpc3N1ZURhdGEubWVzc2FnZSB8fCBlcnJvck1lc3NhZ2UsXG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBQYXJzZVBhcmFtcyA9IHtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgZXJyb3JNYXA6IFpvZEVycm9yTWFwO1xuICBhc3luYzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFBhcnNlUGF0aENvbXBvbmVudCA9IHN0cmluZyB8IG51bWJlcjtcbmV4cG9ydCB0eXBlIFBhcnNlUGF0aCA9IFBhcnNlUGF0aENvbXBvbmVudFtdO1xuZXhwb3J0IGNvbnN0IEVNUFRZX1BBVEg6IFBhcnNlUGF0aCA9IFtdO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlQ29udGV4dCB7XG4gIHJlYWRvbmx5IGNvbW1vbjoge1xuICAgIHJlYWRvbmx5IGlzc3VlczogWm9kSXNzdWVbXTtcbiAgICByZWFkb25seSBjb250ZXh0dWFsRXJyb3JNYXA/OiBab2RFcnJvck1hcDtcbiAgICByZWFkb25seSBhc3luYzogYm9vbGVhbjtcbiAgfTtcbiAgcmVhZG9ubHkgcGF0aDogUGFyc2VQYXRoO1xuICByZWFkb25seSBzY2hlbWFFcnJvck1hcD86IFpvZEVycm9yTWFwO1xuICByZWFkb25seSBwYXJlbnQ6IFBhcnNlQ29udGV4dCB8IG51bGw7XG4gIHJlYWRvbmx5IGRhdGE6IGFueTtcbiAgcmVhZG9ubHkgcGFyc2VkVHlwZTogWm9kUGFyc2VkVHlwZTtcbn1cblxuZXhwb3J0IHR5cGUgUGFyc2VJbnB1dCA9IHtcbiAgZGF0YTogYW55O1xuICBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBwYXJlbnQ6IFBhcnNlQ29udGV4dDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRJc3N1ZVRvQ29udGV4dChcbiAgY3R4OiBQYXJzZUNvbnRleHQsXG4gIGlzc3VlRGF0YTogSXNzdWVEYXRhXG4pOiB2b2lkIHtcbiAgY29uc3QgaXNzdWUgPSBtYWtlSXNzdWUoe1xuICAgIGlzc3VlRGF0YTogaXNzdWVEYXRhLFxuICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgIGVycm9yTWFwczogW1xuICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsIC8vIGNvbnRleHR1YWwgZXJyb3IgbWFwIGlzIGZpcnN0IHByaW9yaXR5XG4gICAgICBjdHguc2NoZW1hRXJyb3JNYXAsIC8vIHRoZW4gc2NoZW1hLWJvdW5kIG1hcCBpZiBhdmFpbGFibGVcbiAgICAgIGdldEVycm9yTWFwKCksIC8vIHRoZW4gZ2xvYmFsIG92ZXJyaWRlIG1hcFxuICAgICAgZGVmYXVsdEVycm9yTWFwLCAvLyB0aGVuIGdsb2JhbCBkZWZhdWx0IG1hcFxuICAgIF0uZmlsdGVyKCh4KSA9PiAhIXgpIGFzIFpvZEVycm9yTWFwW10sXG4gIH0pO1xuICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKGlzc3VlKTtcbn1cblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFpciA9IHtcbiAga2V5OiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG4gIHZhbHVlOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG59O1xuZXhwb3J0IGNsYXNzIFBhcnNlU3RhdHVzIHtcbiAgdmFsdWU6IFwiYWJvcnRlZFwiIHwgXCJkaXJ0eVwiIHwgXCJ2YWxpZFwiID0gXCJ2YWxpZFwiO1xuICBkaXJ0eSgpIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gXCJ2YWxpZFwiKSB0aGlzLnZhbHVlID0gXCJkaXJ0eVwiO1xuICB9XG4gIGFib3J0KCkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSBcImFib3J0ZWRcIikgdGhpcy52YWx1ZSA9IFwiYWJvcnRlZFwiO1xuICB9XG5cbiAgc3RhdGljIG1lcmdlQXJyYXkoXG4gICAgc3RhdHVzOiBQYXJzZVN0YXR1cyxcbiAgICByZXN1bHRzOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT5bXVxuICApOiBTeW5jUGFyc2VSZXR1cm5UeXBlIHtcbiAgICBjb25zdCBhcnJheVZhbHVlOiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcyBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAocy5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSByZXR1cm4gSU5WQUxJRDtcbiAgICAgIGlmIChzLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSBzdGF0dXMuZGlydHkoKTtcbiAgICAgIGFycmF5VmFsdWUucHVzaChzLnZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGFycmF5VmFsdWUgfTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBtZXJnZU9iamVjdEFzeW5jKFxuICAgIHN0YXR1czogUGFyc2VTdGF0dXMsXG4gICAgcGFpcnM6IHsga2V5OiBQYXJzZVJldHVyblR5cGU8YW55PjsgdmFsdWU6IFBhcnNlUmV0dXJuVHlwZTxhbnk+IH1bXVxuICApOiBQcm9taXNlPFN5bmNQYXJzZVJldHVyblR5cGU8YW55Pj4ge1xuICAgIGNvbnN0IHN5bmNQYWlyczogT2JqZWN0UGFpcltdID0gW107XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgIGtleTogYXdhaXQgcGFpci5rZXksXG4gICAgICAgIHZhbHVlOiBhd2FpdCBwYWlyLnZhbHVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBzeW5jUGFpcnMpO1xuICB9XG5cbiAgc3RhdGljIG1lcmdlT2JqZWN0U3luYyhcbiAgICBzdGF0dXM6IFBhcnNlU3RhdHVzLFxuICAgIHBhaXJzOiB7XG4gICAgICBrZXk6IFN5bmNQYXJzZVJldHVyblR5cGU8YW55PjtcbiAgICAgIHZhbHVlOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG4gICAgICBhbHdheXNTZXQ/OiBib29sZWFuO1xuICAgIH1bXVxuICApOiBTeW5jUGFyc2VSZXR1cm5UeXBlIHtcbiAgICBjb25zdCBmaW5hbE9iamVjdDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IHBhaXI7XG4gICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiZGlydHlcIikgc3RhdHVzLmRpcnR5KCk7XG4gICAgICBpZiAodmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHN0YXR1cy5kaXJ0eSgpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlLnZhbHVlICE9PSBcInVuZGVmaW5lZFwiIHx8IHBhaXIuYWx3YXlzU2V0KSB7XG4gICAgICAgIGZpbmFsT2JqZWN0W2tleS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGZpbmFsT2JqZWN0IH07XG4gIH1cbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VSZXN1bHQge1xuICBzdGF0dXM6IFwiYWJvcnRlZFwiIHwgXCJkaXJ0eVwiIHwgXCJ2YWxpZFwiO1xuICBkYXRhOiBhbnk7XG59XG5cbmV4cG9ydCB0eXBlIElOVkFMSUQgPSB7IHN0YXR1czogXCJhYm9ydGVkXCIgfTtcbmV4cG9ydCBjb25zdCBJTlZBTElEOiBJTlZBTElEID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHN0YXR1czogXCJhYm9ydGVkXCIsXG59KTtcblxuZXhwb3J0IHR5cGUgRElSVFk8VD4gPSB7IHN0YXR1czogXCJkaXJ0eVwiOyB2YWx1ZTogVCB9O1xuZXhwb3J0IGNvbnN0IERJUlRZID0gPFQ+KHZhbHVlOiBUKTogRElSVFk8VD4gPT4gKHsgc3RhdHVzOiBcImRpcnR5XCIsIHZhbHVlIH0pO1xuXG5leHBvcnQgdHlwZSBPSzxUPiA9IHsgc3RhdHVzOiBcInZhbGlkXCI7IHZhbHVlOiBUIH07XG5leHBvcnQgY29uc3QgT0sgPSA8VD4odmFsdWU6IFQpOiBPSzxUPiA9PiAoeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWUgfSk7XG5cbmV4cG9ydCB0eXBlIFN5bmNQYXJzZVJldHVyblR5cGU8VCA9IGFueT4gPSBPSzxUPiB8IERJUlRZPFQ+IHwgSU5WQUxJRDtcbmV4cG9ydCB0eXBlIEFzeW5jUGFyc2VSZXR1cm5UeXBlPFQ+ID0gUHJvbWlzZTxTeW5jUGFyc2VSZXR1cm5UeXBlPFQ+PjtcbmV4cG9ydCB0eXBlIFBhcnNlUmV0dXJuVHlwZTxUPiA9XG4gIHwgU3luY1BhcnNlUmV0dXJuVHlwZTxUPlxuICB8IEFzeW5jUGFyc2VSZXR1cm5UeXBlPFQ+O1xuXG5leHBvcnQgY29uc3QgaXNBYm9ydGVkID0gKHg6IFBhcnNlUmV0dXJuVHlwZTxhbnk+KTogeCBpcyBJTlZBTElEID0+XG4gICh4IGFzIGFueSkuc3RhdHVzID09PSBcImFib3J0ZWRcIjtcbmV4cG9ydCBjb25zdCBpc0RpcnR5ID0gPFQ+KHg6IFBhcnNlUmV0dXJuVHlwZTxUPik6IHggaXMgT0s8VD4gfCBESVJUWTxUPiA9PlxuICAoeCBhcyBhbnkpLnN0YXR1cyA9PT0gXCJkaXJ0eVwiO1xuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSA8VD4oeDogUGFyc2VSZXR1cm5UeXBlPFQ+KTogeCBpcyBPSzxUPiB8IERJUlRZPFQ+ID0+XG4gICh4IGFzIGFueSkuc3RhdHVzID09PSBcInZhbGlkXCI7XG5leHBvcnQgY29uc3QgaXNBc3luYyA9IDxUPihcbiAgeDogUGFyc2VSZXR1cm5UeXBlPFQ+XG4pOiB4IGlzIEFzeW5jUGFyc2VSZXR1cm5UeXBlPFQ+ID0+XG4gIHR5cGVvZiBQcm9taXNlICE9PSB1bmRlZmluZWQgJiYgeCBpbnN0YW5jZW9mIFByb21pc2U7XG5cbmV4cG9ydCBjb25zdCBqc29uU3RyaW5naWZ5UmVwbGFjZXIgPSAoXzogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCJpbXBvcnQgdHlwZSB7IFR5cGVPZiwgWm9kVHlwZSB9IGZyb20gXCIuL2luZGV4LnRzXCI7XG5pbXBvcnQgeyBqc29uU3RyaW5naWZ5UmVwbGFjZXIgfSBmcm9tIFwiLi9oZWxwZXJzL3BhcnNlVXRpbC50c1wiO1xuaW1wb3J0IHsgUHJpbWl0aXZlIH0gZnJvbSBcIi4vaGVscGVycy90eXBlQWxpYXNlcy50c1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC50c1wiO1xuXG50eXBlIGFsbEtleXM8VD4gPSBUIGV4dGVuZHMgYW55ID8ga2V5b2YgVCA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBpbmZlckZsYXR0ZW5lZEVycm9yczxcbiAgVCBleHRlbmRzIFpvZFR5cGU8YW55LCBhbnksIGFueT4sXG4gIFUgPSBzdHJpbmdcbj4gPSB0eXBlVG9GbGF0dGVuZWRFcnJvcjxUeXBlT2Y8VD4sIFU+O1xuZXhwb3J0IHR5cGUgdHlwZVRvRmxhdHRlbmVkRXJyb3I8VCwgVSA9IHN0cmluZz4gPSB7XG4gIGZvcm1FcnJvcnM6IFVbXTtcbiAgZmllbGRFcnJvcnM6IHtcbiAgICBbUCBpbiBhbGxLZXlzPFQ+XT86IFVbXTtcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBab2RJc3N1ZUNvZGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgXCJpbnZhbGlkX3R5cGVcIixcbiAgXCJpbnZhbGlkX2xpdGVyYWxcIixcbiAgXCJjdXN0b21cIixcbiAgXCJpbnZhbGlkX3VuaW9uXCIsXG4gIFwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yXCIsXG4gIFwiaW52YWxpZF9lbnVtX3ZhbHVlXCIsXG4gIFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgXCJpbnZhbGlkX2FyZ3VtZW50c1wiLFxuICBcImludmFsaWRfcmV0dXJuX3R5cGVcIixcbiAgXCJpbnZhbGlkX2RhdGVcIixcbiAgXCJpbnZhbGlkX3N0cmluZ1wiLFxuICBcInRvb19zbWFsbFwiLFxuICBcInRvb19iaWdcIixcbiAgXCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc1wiLFxuICBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuXSk7XG5cbmV4cG9ydCB0eXBlIFpvZElzc3VlQ29kZSA9IGtleW9mIHR5cGVvZiBab2RJc3N1ZUNvZGU7XG5cbmV4cG9ydCB0eXBlIFpvZElzc3VlQmFzZSA9IHtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbiAgbWVzc2FnZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZFR5cGVJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlO1xuICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZTtcbiAgcmVjZWl2ZWQ6IFpvZFBhcnNlZFR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZExpdGVyYWxJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsO1xuICBleHBlY3RlZDogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RVbnJlY29nbml6ZWRLZXlzSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2Uge1xuICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzO1xuICBrZXlzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RJbnZhbGlkVW5pb25Jc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbjtcbiAgdW5pb25FcnJvcnM6IFpvZEVycm9yW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZFVuaW9uRGlzY3JpbWluYXRvcklzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I7XG4gIG9wdGlvbnM6IFByaW1pdGl2ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWRFbnVtVmFsdWVJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIHJlY2VpdmVkOiBzdHJpbmcgfCBudW1iZXI7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlO1xuICBvcHRpb25zOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWRBcmd1bWVudHNJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHM7XG4gIGFyZ3VtZW50c0Vycm9yOiBab2RFcnJvcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RJbnZhbGlkUmV0dXJuVHlwZUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlO1xuICByZXR1cm5UeXBlRXJyb3I6IFpvZEVycm9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWREYXRlSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2Uge1xuICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZTtcbn1cblxuZXhwb3J0IHR5cGUgU3RyaW5nVmFsaWRhdGlvbiA9XG4gIHwgXCJlbWFpbFwiXG4gIHwgXCJ1cmxcIlxuICB8IFwidXVpZFwiXG4gIHwgXCJyZWdleFwiXG4gIHwgXCJjdWlkXCJcbiAgfCB7IHN0YXJ0c1dpdGg6IHN0cmluZyB9XG4gIHwgeyBlbmRzV2l0aDogc3RyaW5nIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kSW52YWxpZFN0cmluZ0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZztcbiAgdmFsaWRhdGlvbjogU3RyaW5nVmFsaWRhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RUb29TbWFsbElzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS50b29fc21hbGw7XG4gIG1pbmltdW06IG51bWJlcjtcbiAgaW5jbHVzaXZlOiBib29sZWFuO1xuICB0eXBlOiBcImFycmF5XCIgfCBcInN0cmluZ1wiIHwgXCJudW1iZXJcIiB8IFwic2V0XCIgfCBcImRhdGVcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2RUb29CaWdJc3N1ZSBleHRlbmRzIFpvZElzc3VlQmFzZSB7XG4gIGNvZGU6IHR5cGVvZiBab2RJc3N1ZUNvZGUudG9vX2JpZztcbiAgbWF4aW11bTogbnVtYmVyO1xuICBpbmNsdXNpdmU6IGJvb2xlYW47XG4gIHR5cGU6IFwiYXJyYXlcIiB8IFwic3RyaW5nXCIgfCBcIm51bWJlclwiIHwgXCJzZXRcIiB8IFwiZGF0ZVwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludmFsaWRJbnRlcnNlY3Rpb25UeXBlc0lzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2ROb3RNdWx0aXBsZU9mSXNzdWUgZXh0ZW5kcyBab2RJc3N1ZUJhc2Uge1xuICBjb2RlOiB0eXBlb2YgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjtcbiAgbXVsdGlwbGVPZjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEN1c3RvbUlzc3VlIGV4dGVuZHMgWm9kSXNzdWVCYXNlIHtcbiAgY29kZTogdHlwZW9mIFpvZElzc3VlQ29kZS5jdXN0b207XG4gIHBhcmFtcz86IHsgW2s6IHN0cmluZ106IGFueSB9O1xufVxuXG5leHBvcnQgdHlwZSBEZW5vcm1hbGl6ZWRFcnJvciA9IHsgW2s6IHN0cmluZ106IERlbm9ybWFsaXplZEVycm9yIHwgc3RyaW5nW10gfTtcblxuZXhwb3J0IHR5cGUgWm9kSXNzdWVPcHRpb25hbE1lc3NhZ2UgPVxuICB8IFpvZEludmFsaWRUeXBlSXNzdWVcbiAgfCBab2RJbnZhbGlkTGl0ZXJhbElzc3VlXG4gIHwgWm9kVW5yZWNvZ25pemVkS2V5c0lzc3VlXG4gIHwgWm9kSW52YWxpZFVuaW9uSXNzdWVcbiAgfCBab2RJbnZhbGlkVW5pb25EaXNjcmltaW5hdG9ySXNzdWVcbiAgfCBab2RJbnZhbGlkRW51bVZhbHVlSXNzdWVcbiAgfCBab2RJbnZhbGlkQXJndW1lbnRzSXNzdWVcbiAgfCBab2RJbnZhbGlkUmV0dXJuVHlwZUlzc3VlXG4gIHwgWm9kSW52YWxpZERhdGVJc3N1ZVxuICB8IFpvZEludmFsaWRTdHJpbmdJc3N1ZVxuICB8IFpvZFRvb1NtYWxsSXNzdWVcbiAgfCBab2RUb29CaWdJc3N1ZVxuICB8IFpvZEludmFsaWRJbnRlcnNlY3Rpb25UeXBlc0lzc3VlXG4gIHwgWm9kTm90TXVsdGlwbGVPZklzc3VlXG4gIHwgWm9kQ3VzdG9tSXNzdWU7XG5cbmV4cG9ydCB0eXBlIFpvZElzc3VlID0gWm9kSXNzdWVPcHRpb25hbE1lc3NhZ2UgJiB7IG1lc3NhZ2U6IHN0cmluZyB9O1xuXG5leHBvcnQgY29uc3QgcXVvdGVsZXNzSnNvbiA9IChvYmo6IGFueSkgPT4ge1xuICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKTtcbiAgcmV0dXJuIGpzb24ucmVwbGFjZSgvXCIoW15cIl0rKVwiOi9nLCBcIiQxOlwiKTtcbn07XG5cbmV4cG9ydCB0eXBlIFpvZEZvcm1hdHRlZEVycm9yPFQsIFUgPSBzdHJpbmc+ID0ge1xuICBfZXJyb3JzOiBVW107XG59ICYgKFQgZXh0ZW5kcyBbYW55LCAuLi5hbnlbXV1cbiAgPyB7IFtLIGluIGtleW9mIFRdPzogWm9kRm9ybWF0dGVkRXJyb3I8VFtLXT4gfVxuICA6IFQgZXh0ZW5kcyBhbnlbXVxuICA/IHsgW2s6IG51bWJlcl06IFpvZEZvcm1hdHRlZEVycm9yPFRbbnVtYmVyXT4gfVxuICA6IFQgZXh0ZW5kcyBvYmplY3RcbiAgPyB7IFtLIGluIGtleW9mIFRdPzogWm9kRm9ybWF0dGVkRXJyb3I8VFtLXT4gfVxuICA6IHVua25vd24pO1xuXG5leHBvcnQgdHlwZSBpbmZlckZvcm1hdHRlZEVycm9yPFxuICBUIGV4dGVuZHMgWm9kVHlwZTxhbnksIGFueSwgYW55PixcbiAgVSA9IHN0cmluZ1xuPiA9IFpvZEZvcm1hdHRlZEVycm9yPFR5cGVPZjxUPiwgVT47XG5cbmV4cG9ydCBjbGFzcyBab2RFcnJvcjxUID0gYW55PiBleHRlbmRzIEVycm9yIHtcbiAgaXNzdWVzOiBab2RJc3N1ZVtdID0gW107XG5cbiAgZ2V0IGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5pc3N1ZXM7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihpc3N1ZXM6IFpvZElzc3VlW10pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgY29uc3QgYWN0dWFsUHJvdG8gPSBuZXcudGFyZ2V0LnByb3RvdHlwZTtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYmFuL2JhblxuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIGFjdHVhbFByb3RvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgKHRoaXMgYXMgYW55KS5fX3Byb3RvX18gPSBhY3R1YWxQcm90bztcbiAgICB9XG4gICAgdGhpcy5uYW1lID0gXCJab2RFcnJvclwiO1xuICAgIHRoaXMuaXNzdWVzID0gaXNzdWVzO1xuICB9XG5cbiAgZm9ybWF0KCk6IFpvZEZvcm1hdHRlZEVycm9yPFQ+O1xuICBmb3JtYXQ8VT4obWFwcGVyOiAoaXNzdWU6IFpvZElzc3VlKSA9PiBVKTogWm9kRm9ybWF0dGVkRXJyb3I8VCwgVT47XG4gIGZvcm1hdChfbWFwcGVyPzogYW55KSB7XG4gICAgY29uc3QgbWFwcGVyOiAoaXNzdWU6IFpvZElzc3VlKSA9PiBhbnkgPVxuICAgICAgX21hcHBlciB8fFxuICAgICAgZnVuY3Rpb24gKGlzc3VlOiBab2RJc3N1ZSkge1xuICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcbiAgICAgIH07XG4gICAgY29uc3QgZmllbGRFcnJvcnM6IFpvZEZvcm1hdHRlZEVycm9yPFQ+ID0geyBfZXJyb3JzOiBbXSB9IGFzIGFueTtcbiAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3I6IFpvZEVycm9yKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX3VuaW9uXCIpIHtcbiAgICAgICAgICBpc3N1ZS51bmlvbkVycm9ycy5tYXAocHJvY2Vzc0Vycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfcmV0dXJuX3R5cGVcIikge1xuICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5yZXR1cm5UeXBlRXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF9hcmd1bWVudHNcIikge1xuICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5hcmd1bWVudHNFcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNzdWUucGF0aC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAoZmllbGRFcnJvcnMgYXMgYW55KS5fZXJyb3JzLnB1c2gobWFwcGVyKGlzc3VlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGN1cnI6IGFueSA9IGZpZWxkRXJyb3JzO1xuICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICB3aGlsZSAoaSA8IGlzc3VlLnBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBlbCA9IGlzc3VlLnBhdGhbaV07XG4gICAgICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IGkgPT09IGlzc3VlLnBhdGgubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgaWYgKCF0ZXJtaW5hbCkge1xuICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgLy8gaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAvLyAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgeyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICAgICAgICAvLyB9IGVsc2UgaWYgKHR5cGVvZiBlbCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAvLyAgIGNvbnN0IGVycm9yQXJyYXk6IGFueSA9IFtdO1xuICAgICAgICAgICAgICAvLyAgIGVycm9yQXJyYXkuX2Vycm9ycyA9IFtdO1xuICAgICAgICAgICAgICAvLyAgIGN1cnJbZWxdID0gY3VycltlbF0gfHwgZXJyb3JBcnJheTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgIGN1cnJbZWxdLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBwcm9jZXNzRXJyb3IodGhpcyk7XG4gICAgcmV0dXJuIGZpZWxkRXJyb3JzO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChpc3N1ZXM6IFpvZElzc3VlW10pID0+IHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihpc3N1ZXMpO1xuICAgIHJldHVybiBlcnJvcjtcbiAgfTtcblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlO1xuICB9XG4gIGdldCBtZXNzYWdlKCkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlzc3VlcywganNvblN0cmluZ2lmeVJlcGxhY2VyLCAyKTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzc3Vlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICBhZGRJc3N1ZSA9IChzdWI6IFpvZElzc3VlKSA9PiB7XG4gICAgdGhpcy5pc3N1ZXMgPSBbLi4udGhpcy5pc3N1ZXMsIHN1Yl07XG4gIH07XG5cbiAgYWRkSXNzdWVzID0gKHN1YnM6IFpvZElzc3VlW10gPSBbXSkgPT4ge1xuICAgIHRoaXMuaXNzdWVzID0gWy4uLnRoaXMuaXNzdWVzLCAuLi5zdWJzXTtcbiAgfTtcblxuICBmbGF0dGVuKCk6IHR5cGVUb0ZsYXR0ZW5lZEVycm9yPFQ+O1xuICBmbGF0dGVuPFU+KG1hcHBlcj86IChpc3N1ZTogWm9kSXNzdWUpID0+IFUpOiB0eXBlVG9GbGF0dGVuZWRFcnJvcjxULCBVPjtcbiAgZmxhdHRlbjxVID0gc3RyaW5nPihcbiAgICBtYXBwZXI6IChpc3N1ZTogWm9kSXNzdWUpID0+IFUgPSAoaXNzdWU6IFpvZElzc3VlKSA9PiBpc3N1ZS5tZXNzYWdlIGFzIGFueVxuICApOiBhbnkge1xuICAgIGNvbnN0IGZpZWxkRXJyb3JzOiBhbnkgPSB7fTtcbiAgICBjb25zdCBmb3JtRXJyb3JzOiBVW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLmlzc3Vlcykge1xuICAgICAgaWYgKHN1Yi5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dID0gZmllbGRFcnJvcnNbc3ViLnBhdGhbMF1dIHx8IFtdO1xuICAgICAgICBmaWVsZEVycm9yc1tzdWIucGF0aFswXV0ucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtRXJyb3JzLnB1c2gobWFwcGVyKHN1YikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBmb3JtRXJyb3JzLCBmaWVsZEVycm9ycyB9O1xuICB9XG5cbiAgZ2V0IGZvcm1FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmxhdHRlbigpO1xuICB9XG59XG5cbnR5cGUgc3RyaXBQYXRoPFQgZXh0ZW5kcyBvYmplY3Q+ID0gVCBleHRlbmRzIGFueVxuICA/IHV0aWwuT21pdEtleXM8VCwgXCJwYXRoXCI+XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIElzc3VlRGF0YSA9IHN0cmlwUGF0aDxab2RJc3N1ZU9wdGlvbmFsTWVzc2FnZT4gJiB7XG4gIHBhdGg/OiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICBmYXRhbD86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgTWFrZUVycm9yRGF0YSA9IElzc3VlRGF0YTtcblxudHlwZSBFcnJvck1hcEN0eCA9IHtcbiAgZGVmYXVsdEVycm9yOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIFpvZEVycm9yTWFwID0gdHlwZW9mIGRlZmF1bHRFcnJvck1hcDtcbmV4cG9ydCBjb25zdCBkZWZhdWx0RXJyb3JNYXAgPSAoXG4gIGlzc3VlOiBab2RJc3N1ZU9wdGlvbmFsTWVzc2FnZSxcbiAgX2N0eDogRXJyb3JNYXBDdHhcbik6IHsgbWVzc2FnZTogc3RyaW5nIH0gPT4ge1xuICBsZXQgbWVzc2FnZTogc3RyaW5nO1xuICBzd2l0Y2ggKGlzc3VlLmNvZGUpIHtcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGU6XG4gICAgICBpZiAoaXNzdWUucmVjZWl2ZWQgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBcIlJlcXVpcmVkXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gYEV4cGVjdGVkICR7aXNzdWUuZXhwZWN0ZWR9LCByZWNlaXZlZCAke2lzc3VlLnJlY2VpdmVkfWA7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWw6XG4gICAgICBtZXNzYWdlID0gYEludmFsaWQgbGl0ZXJhbCB2YWx1ZSwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgaXNzdWUuZXhwZWN0ZWQsXG4gICAgICAgIGpzb25TdHJpbmdpZnlSZXBsYWNlclxuICAgICAgKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXM6XG4gICAgICBtZXNzYWdlID0gYFVucmVjb2duaXplZCBrZXkocykgaW4gb2JqZWN0OiAke3V0aWwuam9pblZhbHVlcyhcbiAgICAgICAgaXNzdWUua2V5cyxcbiAgICAgICAgXCIsIFwiXG4gICAgICApfWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uOlxuICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvcjpcbiAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke3V0aWwuam9pblZhbHVlcyhcbiAgICAgICAgaXNzdWUub3B0aW9uc1xuICAgICAgKX1gO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlOlxuICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGVudW0gdmFsdWUuIEV4cGVjdGVkICR7dXRpbC5qb2luVmFsdWVzKFxuICAgICAgICBpc3N1ZS5vcHRpb25zXG4gICAgICApfSwgcmVjZWl2ZWQgJyR7aXNzdWUucmVjZWl2ZWR9J2A7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50czpcbiAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHNgO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZTpcbiAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiByZXR1cm4gdHlwZWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGU6XG4gICAgICBtZXNzYWdlID0gYEludmFsaWQgZGF0ZWA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZzpcbiAgICAgIGlmICh0eXBlb2YgaXNzdWUudmFsaWRhdGlvbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAoXCJzdGFydHNXaXRoXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBpbnB1dDogbXVzdCBzdGFydCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLnN0YXJ0c1dpdGh9XCJgO1xuICAgICAgICB9IGVsc2UgaWYgKFwiZW5kc1dpdGhcIiBpbiBpc3N1ZS52YWxpZGF0aW9uKSB7XG4gICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLmVuZHNXaXRofVwiYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlLnZhbGlkYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzc3VlLnZhbGlkYXRpb24gIT09IFwicmVnZXhcIikge1xuICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgJHtpc3N1ZS52YWxpZGF0aW9ufWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gXCJJbnZhbGlkXCI7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFpvZElzc3VlQ29kZS50b29fc21hbGw6XG4gICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICBtZXNzYWdlID0gYEFycmF5IG11c3QgY29udGFpbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBsZWFzdGAgOiBgbW9yZSB0aGFuYFxuICAgICAgICB9ICR7aXNzdWUubWluaW11bX0gZWxlbWVudChzKWA7XG4gICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcInN0cmluZ1wiKVxuICAgICAgICBtZXNzYWdlID0gYFN0cmluZyBtdXN0IGNvbnRhaW4gJHtcbiAgICAgICAgICBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbGVhc3RgIDogYG92ZXJgXG4gICAgICAgIH0gJHtpc3N1ZS5taW5pbXVtfSBjaGFyYWN0ZXIocylgO1xuICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gJHtcbiAgICAgICAgICBpc3N1ZS5pbmNsdXNpdmUgPyBgb3IgZXF1YWwgdG8gYCA6IGBgXG4gICAgICAgIH0ke2lzc3VlLm1pbmltdW19YDtcbiAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiZGF0ZVwiKVxuICAgICAgICBtZXNzYWdlID0gYERhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJHtcbiAgICAgICAgICBpc3N1ZS5pbmNsdXNpdmUgPyBgb3IgZXF1YWwgdG8gYCA6IGBgXG4gICAgICAgIH0ke25ldyBEYXRlKGlzc3VlLm1pbmltdW0pfWA7XG4gICAgICBlbHNlIG1lc3NhZ2UgPSBcIkludmFsaWQgaW5wdXRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19iaWc6XG4gICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICBtZXNzYWdlID0gYEFycmF5IG11c3QgY29udGFpbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBtb3N0YCA6IGBsZXNzIHRoYW5gXG4gICAgICAgIH0gJHtpc3N1ZS5tYXhpbXVtfSBlbGVtZW50KHMpYDtcbiAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIG1lc3NhZ2UgPSBgU3RyaW5nIG11c3QgY29udGFpbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBhdCBtb3N0YCA6IGB1bmRlcmBcbiAgICAgICAgfSAke2lzc3VlLm1heGltdW19IGNoYXJhY3RlcihzKWA7XG4gICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcIm51bWJlclwiKVxuICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlIGxlc3MgdGhhbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBvciBlcXVhbCB0byBgIDogYGBcbiAgICAgICAgfSR7aXNzdWUubWF4aW11bX1gO1xuICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJkYXRlXCIpXG4gICAgICAgIG1lc3NhZ2UgPSBgRGF0ZSBtdXN0IGJlIHNtYWxsZXIgdGhhbiAke1xuICAgICAgICAgIGlzc3VlLmluY2x1c2l2ZSA/IGBvciBlcXVhbCB0byBgIDogYGBcbiAgICAgICAgfSR7bmV3IERhdGUoaXNzdWUubWF4aW11bSl9YDtcbiAgICAgIGVsc2UgbWVzc2FnZSA9IFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBab2RJc3N1ZUNvZGUuY3VzdG9tOlxuICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzOlxuICAgICAgbWVzc2FnZSA9IGBJbnRlcnNlY3Rpb24gcmVzdWx0cyBjb3VsZCBub3QgYmUgbWVyZ2VkYDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZjpcbiAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2lzc3VlLm11bHRpcGxlT2Z9YDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtZXNzYWdlID0gX2N0eC5kZWZhdWx0RXJyb3I7XG4gICAgICB1dGlsLmFzc2VydE5ldmVyKGlzc3VlKTtcbiAgfVxuICByZXR1cm4geyBtZXNzYWdlIH07XG59O1xuXG5sZXQgb3ZlcnJpZGVFcnJvck1hcCA9IGRlZmF1bHRFcnJvck1hcDtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWFwKG1hcDogWm9kRXJyb3JNYXApIHtcbiAgb3ZlcnJpZGVFcnJvck1hcCA9IG1hcDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVycm9yTWFwKCkge1xuICByZXR1cm4gb3ZlcnJpZGVFcnJvck1hcDtcbn1cbiIsImV4cG9ydCBuYW1lc3BhY2UgZXJyb3JVdGlsIHtcbiAgZXhwb3J0IHR5cGUgRXJyTWVzc2FnZSA9IHN0cmluZyB8IHsgbWVzc2FnZT86IHN0cmluZyB9O1xuICBleHBvcnQgY29uc3QgZXJyVG9PYmogPSAobWVzc2FnZT86IEVyck1lc3NhZ2UpID0+XG4gICAgdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2UgfSA6IG1lc3NhZ2UgfHwge307XG4gIGV4cG9ydCBjb25zdCB0b1N0cmluZyA9IChtZXNzYWdlPzogRXJyTWVzc2FnZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICAgIHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IG1lc3NhZ2U/Lm1lc3NhZ2U7XG59XG4iLCJpbXBvcnQgeyBlbnVtVXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvZW51bVV0aWwudHNcIjtcbmltcG9ydCB7IGVycm9yVXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvZXJyb3JVdGlsLnRzXCI7XG5pbXBvcnQge1xuICBhZGRJc3N1ZVRvQ29udGV4dCxcbiAgQXN5bmNQYXJzZVJldHVyblR5cGUsXG4gIERJUlRZLFxuICBJTlZBTElELFxuICBpc0Fib3J0ZWQsXG4gIGlzQXN5bmMsXG4gIGlzRGlydHksXG4gIGlzVmFsaWQsXG4gIG1ha2VJc3N1ZSxcbiAgT0ssXG4gIFBhcnNlQ29udGV4dCxcbiAgUGFyc2VJbnB1dCxcbiAgUGFyc2VQYXJhbXMsXG4gIFBhcnNlUGF0aCxcbiAgUGFyc2VSZXR1cm5UeXBlLFxuICBQYXJzZVN0YXR1cyxcbiAgU3luY1BhcnNlUmV0dXJuVHlwZSxcbn0gZnJvbSBcIi4vaGVscGVycy9wYXJzZVV0aWwudHNcIjtcbmltcG9ydCB7IHBhcnRpYWxVdGlsIH0gZnJvbSBcIi4vaGVscGVycy9wYXJ0aWFsVXRpbC50c1wiO1xuaW1wb3J0IHsgUHJpbWl0aXZlIH0gZnJvbSBcIi4vaGVscGVycy90eXBlQWxpYXNlcy50c1wiO1xuaW1wb3J0IHsgZ2V0UGFyc2VkVHlwZSwgdXRpbCwgWm9kUGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC50c1wiO1xuaW1wb3J0IHtcbiAgZGVmYXVsdEVycm9yTWFwLFxuICBnZXRFcnJvck1hcCxcbiAgSXNzdWVEYXRhLFxuICBTdHJpbmdWYWxpZGF0aW9uLFxuICBab2RDdXN0b21Jc3N1ZSxcbiAgWm9kRXJyb3IsXG4gIFpvZEVycm9yTWFwLFxuICBab2RJc3N1ZSxcbiAgWm9kSXNzdWVDb2RlLFxufSBmcm9tIFwiLi9ab2RFcnJvci50c1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVHlwZSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IHR5cGUgUmVmaW5lbWVudEN0eCA9IHtcbiAgYWRkSXNzdWU6IChhcmc6IElzc3VlRGF0YSkgPT4gdm9pZDtcbiAgcGF0aDogKHN0cmluZyB8IG51bWJlcilbXTtcbn07XG5leHBvcnQgdHlwZSBab2RSYXdTaGFwZSA9IHsgW2s6IHN0cmluZ106IFpvZFR5cGVBbnkgfTtcbmV4cG9ydCB0eXBlIFpvZFR5cGVBbnkgPSBab2RUeXBlPGFueSwgYW55LCBhbnk+O1xuZXhwb3J0IHR5cGUgVHlwZU9mPFQgZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55LCBhbnk+PiA9IFRbXCJfb3V0cHV0XCJdO1xuZXhwb3J0IHR5cGUgaW5wdXQ8VCBleHRlbmRzIFpvZFR5cGU8YW55LCBhbnksIGFueT4+ID0gVFtcIl9pbnB1dFwiXTtcbmV4cG9ydCB0eXBlIG91dHB1dDxUIGV4dGVuZHMgWm9kVHlwZTxhbnksIGFueSwgYW55Pj4gPSBUW1wiX291dHB1dFwiXTtcbmV4cG9ydCB0eXBlIHsgVHlwZU9mIGFzIGluZmVyIH07XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUVycm9yUGFyYW1zID0gUGFydGlhbDx1dGlsLk9taXQ8Wm9kQ3VzdG9tSXNzdWUsIFwiY29kZVwiPj47XG5leHBvcnQgaW50ZXJmYWNlIFpvZFR5cGVEZWYge1xuICBlcnJvck1hcD86IFpvZEVycm9yTWFwO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuY2xhc3MgUGFyc2VJbnB1dExhenlQYXRoIGltcGxlbWVudHMgUGFyc2VJbnB1dCB7XG4gIHBhcmVudDogUGFyc2VDb250ZXh0O1xuICBkYXRhOiBhbnk7XG4gIF9wYXRoOiBQYXJzZVBhdGg7XG4gIF9rZXk6IHN0cmluZyB8IG51bWJlciB8IChzdHJpbmcgfCBudW1iZXIpW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHBhcmVudDogUGFyc2VDb250ZXh0LFxuICAgIHZhbHVlOiBhbnksXG4gICAgcGF0aDogUGFyc2VQYXRoLFxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXVxuICApIHtcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB0aGlzLmRhdGEgPSB2YWx1ZTtcbiAgICB0aGlzLl9wYXRoID0gcGF0aDtcbiAgICB0aGlzLl9rZXkgPSBrZXk7XG4gIH1cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGguY29uY2F0KHRoaXMuX2tleSk7XG4gIH1cbn1cblxuY29uc3QgaGFuZGxlUmVzdWx0ID0gPElucHV0LCBPdXRwdXQ+KFxuICBjdHg6IFBhcnNlQ29udGV4dCxcbiAgcmVzdWx0OiBTeW5jUGFyc2VSZXR1cm5UeXBlPE91dHB1dD5cbik6XG4gIHwgeyBzdWNjZXNzOiB0cnVlOyBkYXRhOiBPdXRwdXQgfVxuICB8IHsgc3VjY2VzczogZmFsc2U7IGVycm9yOiBab2RFcnJvcjxJbnB1dD4gfSA9PiB7XG4gIGlmIChpc1ZhbGlkKHJlc3VsdCkpIHtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQudmFsdWUgfTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIWN0eC5jb21tb24uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVmFsaWRhdGlvbiBmYWlsZWQgYnV0IG5vIGlzc3VlcyBkZXRlY3RlZC5cIik7XG4gICAgfVxuICAgIGNvbnN0IGVycm9yID0gbmV3IFpvZEVycm9yKGN0eC5jb21tb24uaXNzdWVzKTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3IgfTtcbiAgfVxufTtcblxudHlwZSBSYXdDcmVhdGVQYXJhbXMgPVxuICB8IHtcbiAgICAgIGVycm9yTWFwPzogWm9kRXJyb3JNYXA7XG4gICAgICBpbnZhbGlkX3R5cGVfZXJyb3I/OiBzdHJpbmc7XG4gICAgICByZXF1aXJlZF9lcnJvcj86IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIH1cbiAgfCB1bmRlZmluZWQ7XG50eXBlIFByb2Nlc3NlZENyZWF0ZVBhcmFtcyA9IHsgZXJyb3JNYXA/OiBab2RFcnJvck1hcDsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfTtcbmZ1bmN0aW9uIHByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zOiBSYXdDcmVhdGVQYXJhbXMpOiBQcm9jZXNzZWRDcmVhdGVQYXJhbXMge1xuICBpZiAoIXBhcmFtcykgcmV0dXJuIHt9O1xuICBjb25zdCB7IGVycm9yTWFwLCBpbnZhbGlkX3R5cGVfZXJyb3IsIHJlcXVpcmVkX2Vycm9yLCBkZXNjcmlwdGlvbiB9ID0gcGFyYW1zO1xuICBpZiAoZXJyb3JNYXAgJiYgKGludmFsaWRfdHlwZV9lcnJvciB8fCByZXF1aXJlZF9lcnJvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2FuJ3QgdXNlIFwiaW52YWxpZFwiIG9yIFwicmVxdWlyZWRcIiBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSBlcnJvciBtYXAuYFxuICAgICk7XG4gIH1cbiAgaWYgKGVycm9yTWFwKSByZXR1cm4geyBlcnJvck1hcDogZXJyb3JNYXAsIGRlc2NyaXB0aW9uIH07XG4gIGNvbnN0IGN1c3RvbU1hcDogWm9kRXJyb3JNYXAgPSAoaXNzLCBjdHgpID0+IHtcbiAgICBpZiAoaXNzLmNvZGUgIT09IFwiaW52YWxpZF90eXBlXCIpIHJldHVybiB7IG1lc3NhZ2U6IGN0eC5kZWZhdWx0RXJyb3IgfTtcbiAgICBpZiAodHlwZW9mIGN0eC5kYXRhID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlOiByZXF1aXJlZF9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgfVxuICAgIHJldHVybiB7IG1lc3NhZ2U6IGludmFsaWRfdHlwZV9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gIH07XG4gIHJldHVybiB7IGVycm9yTWFwOiBjdXN0b21NYXAsIGRlc2NyaXB0aW9uIH07XG59XG5cbmV4cG9ydCB0eXBlIFNhZmVQYXJzZVN1Y2Nlc3M8T3V0cHV0PiA9IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogT3V0cHV0IH07XG5leHBvcnQgdHlwZSBTYWZlUGFyc2VFcnJvcjxJbnB1dD4gPSB7IHN1Y2Nlc3M6IGZhbHNlOyBlcnJvcjogWm9kRXJyb3I8SW5wdXQ+IH07XG5cbmV4cG9ydCB0eXBlIFNhZmVQYXJzZVJldHVyblR5cGU8SW5wdXQsIE91dHB1dD4gPVxuICB8IFNhZmVQYXJzZVN1Y2Nlc3M8T3V0cHV0PlxuICB8IFNhZmVQYXJzZUVycm9yPElucHV0PjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFpvZFR5cGU8XG4gIE91dHB1dCA9IGFueSxcbiAgRGVmIGV4dGVuZHMgWm9kVHlwZURlZiA9IFpvZFR5cGVEZWYsXG4gIElucHV0ID0gT3V0cHV0XG4+IHtcbiAgcmVhZG9ubHkgX3R5cGUhOiBPdXRwdXQ7XG4gIHJlYWRvbmx5IF9vdXRwdXQhOiBPdXRwdXQ7XG4gIHJlYWRvbmx5IF9pbnB1dCE6IElucHV0O1xuICByZWFkb25seSBfZGVmITogRGVmO1xuXG4gIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgYWJzdHJhY3QgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPE91dHB1dD47XG5cbiAgX2dldFR5cGUoaW5wdXQ6IFBhcnNlSW5wdXQpOiBzdHJpbmcge1xuICAgIHJldHVybiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpO1xuICB9XG5cbiAgX2dldE9yUmV0dXJuQ3R4KFxuICAgIGlucHV0OiBQYXJzZUlucHV0LFxuICAgIGN0eD86IFBhcnNlQ29udGV4dCB8IHVuZGVmaW5lZFxuICApOiBQYXJzZUNvbnRleHQge1xuICAgIHJldHVybiAoXG4gICAgICBjdHggfHwge1xuICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG5cbiAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcblxuICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICBwYXRoOiBpbnB1dC5wYXRoLFxuICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dDogUGFyc2VJbnB1dCk6IHtcbiAgICBzdGF0dXM6IFBhcnNlU3RhdHVzO1xuICAgIGN0eDogUGFyc2VDb250ZXh0O1xuICB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBuZXcgUGFyc2VTdGF0dXMoKSxcbiAgICAgIGN0eDoge1xuICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG5cbiAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShpbnB1dC5kYXRhKSxcblxuICAgICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgICBwYXRoOiBpbnB1dC5wYXRoLFxuICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIF9wYXJzZVN5bmMoaW5wdXQ6IFBhcnNlSW5wdXQpOiBTeW5jUGFyc2VSZXR1cm5UeXBlPE91dHB1dD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlKGlucHV0KTtcbiAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF9wYXJzZUFzeW5jKGlucHV0OiBQYXJzZUlucHV0KTogQXN5bmNQYXJzZVJldHVyblR5cGU8T3V0cHV0PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICB9XG5cbiAgcGFyc2UoZGF0YTogdW5rbm93biwgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz4pOiBPdXRwdXQge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2FmZVBhcnNlKGRhdGEsIHBhcmFtcyk7XG4gICAgaWYgKHJlc3VsdC5zdWNjZXNzKSByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgc2FmZVBhcnNlKFxuICAgIGRhdGE6IHVua25vd24sXG4gICAgcGFyYW1zPzogUGFydGlhbDxQYXJzZVBhcmFtcz5cbiAgKTogU2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0PiB7XG4gICAgY29uc3QgY3R4OiBQYXJzZUNvbnRleHQgPSB7XG4gICAgICBjb21tb246IHtcbiAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgYXN5bmM6IHBhcmFtcz8uYXN5bmMgPz8gZmFsc2UsXG4gICAgICAgIGNvbnRleHR1YWxFcnJvck1hcDogcGFyYW1zPy5lcnJvck1hcCxcbiAgICAgIH0sXG4gICAgICBwYXRoOiBwYXJhbXM/LnBhdGggfHwgW10sXG4gICAgICBzY2hlbWFFcnJvck1hcDogdGhpcy5fZGVmLmVycm9yTWFwLFxuICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgZGF0YSxcbiAgICAgIHBhcnNlZFR5cGU6IGdldFBhcnNlZFR5cGUoZGF0YSksXG4gICAgfTtcbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZVN5bmMoeyBkYXRhLCBwYXRoOiBjdHgucGF0aCwgcGFyZW50OiBjdHggfSk7XG5cbiAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIHBhcnNlQXN5bmMoXG4gICAgZGF0YTogdW5rbm93bixcbiAgICBwYXJhbXM/OiBQYXJ0aWFsPFBhcnNlUGFyYW1zPlxuICApOiBQcm9taXNlPE91dHB1dD4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2FmZVBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKTtcbiAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBhc3luYyBzYWZlUGFyc2VBc3luYyhcbiAgICBkYXRhOiB1bmtub3duLFxuICAgIHBhcmFtcz86IFBhcnRpYWw8UGFyc2VQYXJhbXM+XG4gICk6IFByb21pc2U8U2FmZVBhcnNlUmV0dXJuVHlwZTxJbnB1dCwgT3V0cHV0Pj4ge1xuICAgIGNvbnN0IGN0eDogUGFyc2VDb250ZXh0ID0ge1xuICAgICAgY29tbW9uOiB7XG4gICAgICAgIGlzc3VlczogW10sXG4gICAgICAgIGNvbnRleHR1YWxFcnJvck1hcDogcGFyYW1zPy5lcnJvck1hcCxcbiAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICB9LFxuICAgICAgcGF0aDogcGFyYW1zPy5wYXRoIHx8IFtdLFxuICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcbiAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgIGRhdGEsXG4gICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGRhdGEpLFxuICAgIH07XG5cbiAgICBjb25zdCBtYXliZUFzeW5jUmVzdWx0ID0gdGhpcy5fcGFyc2UoeyBkYXRhLCBwYXRoOiBbXSwgcGFyZW50OiBjdHggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGlzQXN5bmMobWF5YmVBc3luY1Jlc3VsdClcbiAgICAgID8gbWF5YmVBc3luY1Jlc3VsdFxuICAgICAgOiBQcm9taXNlLnJlc29sdmUobWF5YmVBc3luY1Jlc3VsdCkpO1xuICAgIHJldHVybiBoYW5kbGVSZXN1bHQoY3R4LCByZXN1bHQpO1xuICB9XG5cbiAgLyoqIEFsaWFzIG9mIHNhZmVQYXJzZUFzeW5jICovXG4gIHNwYSA9IHRoaXMuc2FmZVBhcnNlQXN5bmM7XG5cbiAgcmVmaW5lPFJlZmluZWRPdXRwdXQgZXh0ZW5kcyBPdXRwdXQ+KFxuICAgIGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IGFyZyBpcyBSZWZpbmVkT3V0cHV0LFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBDdXN0b21FcnJvclBhcmFtcyB8ICgoYXJnOiBPdXRwdXQpID0+IEN1c3RvbUVycm9yUGFyYW1zKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIFJlZmluZWRPdXRwdXQsIFJlZmluZWRPdXRwdXQ+O1xuICByZWZpbmUoXG4gICAgY2hlY2s6IChhcmc6IE91dHB1dCkgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4sXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IEN1c3RvbUVycm9yUGFyYW1zIHwgKChhcmc6IE91dHB1dCkgPT4gQ3VzdG9tRXJyb3JQYXJhbXMpXG4gICk6IFpvZEVmZmVjdHM8dGhpcywgT3V0cHV0LCBJbnB1dD47XG4gIHJlZmluZShcbiAgICBjaGVjazogKGFyZzogT3V0cHV0KSA9PiB1bmtub3duLFxuICAgIG1lc3NhZ2U/OiBzdHJpbmcgfCBDdXN0b21FcnJvclBhcmFtcyB8ICgoYXJnOiBPdXRwdXQpID0+IEN1c3RvbUVycm9yUGFyYW1zKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+IHtcbiAgICBjb25zdCBnZXRJc3N1ZVByb3BlcnRpZXM6IGFueSA9ICh2YWw6IE91dHB1dCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiBtZXNzYWdlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gbWVzc2FnZSh2YWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgodmFsLCBjdHgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNoZWNrKHZhbCk7XG4gICAgICBjb25zdCBzZXRFcnJvciA9ICgpID0+XG4gICAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmN1c3RvbSxcbiAgICAgICAgICAuLi5nZXRJc3N1ZVByb3BlcnRpZXModmFsKSxcbiAgICAgICAgfSk7XG4gICAgICBpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHNldEVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICBzZXRFcnJvcigpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlZmluZW1lbnQ8UmVmaW5lZE91dHB1dCBleHRlbmRzIE91dHB1dD4oXG4gICAgY2hlY2s6IChhcmc6IE91dHB1dCkgPT4gYXJnIGlzIFJlZmluZWRPdXRwdXQsXG4gICAgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIFJlZmluZWRPdXRwdXQsIFJlZmluZWRPdXRwdXQ+O1xuICByZWZpbmVtZW50KFxuICAgIGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IGJvb2xlYW4sXG4gICAgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+O1xuICByZWZpbmVtZW50KFxuICAgIGNoZWNrOiAoYXJnOiBPdXRwdXQpID0+IHVua25vd24sXG4gICAgcmVmaW5lbWVudERhdGE6IElzc3VlRGF0YSB8ICgoYXJnOiBPdXRwdXQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gSXNzdWVEYXRhKVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVmaW5lbWVudCgodmFsLCBjdHgpID0+IHtcbiAgICAgIGlmICghY2hlY2sodmFsKSkge1xuICAgICAgICBjdHguYWRkSXNzdWUoXG4gICAgICAgICAgdHlwZW9mIHJlZmluZW1lbnREYXRhID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgID8gcmVmaW5lbWVudERhdGEodmFsLCBjdHgpXG4gICAgICAgICAgICA6IHJlZmluZW1lbnREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgX3JlZmluZW1lbnQoXG4gICAgcmVmaW5lbWVudDogUmVmaW5lbWVudEVmZmVjdDxPdXRwdXQ+W1wicmVmaW5lbWVudFwiXVxuICApOiBab2RFZmZlY3RzPHRoaXMsIE91dHB1dCwgSW5wdXQ+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgZWZmZWN0OiB7IHR5cGU6IFwicmVmaW5lbWVudFwiLCByZWZpbmVtZW50IH0sXG4gICAgfSk7XG4gIH1cbiAgc3VwZXJSZWZpbmUgPSB0aGlzLl9yZWZpbmVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGRlZjogRGVmKSB7XG4gICAgdGhpcy5fZGVmID0gZGVmO1xuICAgIHRoaXMucGFyc2UgPSB0aGlzLnBhcnNlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zYWZlUGFyc2UgPSB0aGlzLnNhZmVQYXJzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucGFyc2VBc3luYyA9IHRoaXMucGFyc2VBc3luYy5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2FmZVBhcnNlQXN5bmMgPSB0aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zcGEgPSB0aGlzLnNwYS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucmVmaW5lID0gdGhpcy5yZWZpbmUuYmluZCh0aGlzKTtcbiAgICB0aGlzLnJlZmluZW1lbnQgPSB0aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKTtcbiAgICB0aGlzLnN1cGVyUmVmaW5lID0gdGhpcy5zdXBlclJlZmluZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMub3B0aW9uYWwgPSB0aGlzLm9wdGlvbmFsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5udWxsYWJsZSA9IHRoaXMubnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICB0aGlzLm51bGxpc2ggPSB0aGlzLm51bGxpc2guYmluZCh0aGlzKTtcbiAgICB0aGlzLmFycmF5ID0gdGhpcy5hcnJheS5iaW5kKHRoaXMpO1xuICAgIHRoaXMucHJvbWlzZSA9IHRoaXMucHJvbWlzZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMub3IgPSB0aGlzLm9yLmJpbmQodGhpcyk7XG4gICAgdGhpcy5hbmQgPSB0aGlzLmFuZC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlZmF1bHQgPSB0aGlzLmRlZmF1bHQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlc2NyaWJlID0gdGhpcy5kZXNjcmliZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNOdWxsYWJsZSA9IHRoaXMuaXNOdWxsYWJsZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuaXNPcHRpb25hbCA9IHRoaXMuaXNPcHRpb25hbC5iaW5kKHRoaXMpO1xuICB9XG5cbiAgb3B0aW9uYWwoKTogWm9kT3B0aW9uYWw8dGhpcz4ge1xuICAgIHJldHVybiBab2RPcHRpb25hbC5jcmVhdGUodGhpcykgYXMgYW55O1xuICB9XG4gIG51bGxhYmxlKCk6IFpvZE51bGxhYmxlPHRoaXM+IHtcbiAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKHRoaXMpIGFzIGFueTtcbiAgfVxuICBudWxsaXNoKCk6IFpvZE51bGxhYmxlPFpvZE9wdGlvbmFsPHRoaXM+PiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uYWwoKS5udWxsYWJsZSgpO1xuICB9XG4gIGFycmF5KCk6IFpvZEFycmF5PHRoaXM+IHtcbiAgICByZXR1cm4gWm9kQXJyYXkuY3JlYXRlKHRoaXMpO1xuICB9XG4gIHByb21pc2UoKTogWm9kUHJvbWlzZTx0aGlzPiB7XG4gICAgcmV0dXJuIFpvZFByb21pc2UuY3JlYXRlKHRoaXMpO1xuICB9XG5cbiAgb3I8VCBleHRlbmRzIFpvZFR5cGVBbnk+KG9wdGlvbjogVCk6IFpvZFVuaW9uPFt0aGlzLCBUXT4ge1xuICAgIHJldHVybiBab2RVbmlvbi5jcmVhdGUoW3RoaXMsIG9wdGlvbl0pIGFzIGFueTtcbiAgfVxuXG4gIGFuZDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oaW5jb21pbmc6IFQpOiBab2RJbnRlcnNlY3Rpb248dGhpcywgVD4ge1xuICAgIHJldHVybiBab2RJbnRlcnNlY3Rpb24uY3JlYXRlKHRoaXMsIGluY29taW5nKTtcbiAgfVxuXG4gIHRyYW5zZm9ybTxOZXdPdXQ+KFxuICAgIHRyYW5zZm9ybTogKGFyZzogT3V0cHV0LCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IE5ld091dCB8IFByb21pc2U8TmV3T3V0PlxuICApOiBab2RFZmZlY3RzPHRoaXMsIE5ld091dD4ge1xuICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XG4gICAgICBzY2hlbWE6IHRoaXMsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICBlZmZlY3Q6IHsgdHlwZTogXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtIH0sXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgZGVmYXVsdChkZWY6IHV0aWwubm9VbmRlZmluZWQ8SW5wdXQ+KTogWm9kRGVmYXVsdDx0aGlzPjtcbiAgZGVmYXVsdChkZWY6ICgpID0+IHV0aWwubm9VbmRlZmluZWQ8SW5wdXQ+KTogWm9kRGVmYXVsdDx0aGlzPjtcbiAgZGVmYXVsdChkZWY6IGFueSkge1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZ1bmMgPSB0eXBlb2YgZGVmID09PSBcImZ1bmN0aW9uXCIgPyBkZWYgOiAoKSA9PiBkZWY7XG5cbiAgICByZXR1cm4gbmV3IFpvZERlZmF1bHQoe1xuICAgICAgaW5uZXJUeXBlOiB0aGlzLFxuICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVGdW5jLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REZWZhdWx0LFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIGRlc2NyaWJlKGRlc2NyaXB0aW9uOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBUaGlzID0gKHRoaXMgYXMgYW55KS5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gbmV3IFRoaXMoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gIH1cblxuICBpc09wdGlvbmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNhZmVQYXJzZSh1bmRlZmluZWQpLnN1Y2Nlc3M7XG4gIH1cbiAgaXNOdWxsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zYWZlUGFyc2UobnVsbCkuc3VjY2VzcztcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kU3RyaW5nICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xudHlwZSBab2RTdHJpbmdDaGVjayA9XG4gIHwgeyBraW5kOiBcIm1pblwiOyB2YWx1ZTogbnVtYmVyOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwibWF4XCI7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJlbWFpbFwiOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwidXJsXCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJ1dWlkXCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJjdWlkXCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJzdGFydHNXaXRoXCI7IHZhbHVlOiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJlbmRzV2l0aFwiOyB2YWx1ZTogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwicmVnZXhcIjsgcmVnZXg6IFJlZ0V4cDsgbWVzc2FnZT86IHN0cmluZyB9XG4gIHwgeyBraW5kOiBcInRyaW1cIjsgbWVzc2FnZT86IHN0cmluZyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvZFN0cmluZ0RlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICBjaGVja3M6IFpvZFN0cmluZ0NoZWNrW107XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3RyaW5nO1xufVxuXG5jb25zdCBjdWlkUmVnZXggPSAvXmNbXlxccy1dezgsfSQvaTtcbmNvbnN0IHV1aWRSZWdleCA9XG4gIC9eKFthLWYwLTldezh9LVthLWYwLTldezR9LVsxLTVdW2EtZjAtOV17M30tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7XG4vLyBmcm9tIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80NjE4MS8xNTUwMTU1XG4vLyBvbGQgdmVyc2lvbjogdG9vIHNsb3csIGRpZG4ndCBzdXBwb3J0IHVuaWNvZGVcbi8vIGNvbnN0IGVtYWlsUmVnZXggPSAvXigoKFthLXpdfFxcZHxbISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSsoXFwuKFthLXpdfFxcZHxbISNcXCQlJidcXCpcXCtcXC1cXC89XFw/XFxeX2B7XFx8fX5dfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSspKil8KChcXHgyMikoKCgoXFx4MjB8XFx4MDkpKihcXHgwZFxceDBhKSk/KFxceDIwfFxceDA5KSspPygoW1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4N2ZdfFxceDIxfFtcXHgyMy1cXHg1Yl18W1xceDVkLVxceDdlXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KFxcXFwoW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBkLVxceDdmXXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKSkqKCgoXFx4MjB8XFx4MDkpKihcXHgwZFxceDBhKSk/KFxceDIwfFxceDA5KSspPyhcXHgyMikpKUAoKChbYS16XXxcXGR8W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKShbYS16XXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSooW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpXFwuKSsoKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKShbYS16XXxcXGR8LXxcXC58X3x+fFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSooW2Etel18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkkL2k7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmNvbnN0IGVtYWlsUmVnZXggPVxuICAvXigoW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcLiw7Olxcc0BcXFwiXSspKil8KFxcXCIuK1xcXCIpKUAoKFtePD4oKVtcXF1cXC4sOzpcXHNAXFxcIl0rXFwuKStbXjw+KClbXFxdXFwuLDs6XFxzQFxcXCJdezIsfSkkL2k7XG5cbmV4cG9ydCBjbGFzcyBab2RTdHJpbmcgZXh0ZW5kcyBab2RUeXBlPHN0cmluZywgWm9kU3RyaW5nRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTxzdHJpbmc+IHtcbiAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG5cbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zdHJpbmcpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KFxuICAgICAgICBjdHgsXG4gICAgICAgIHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnN0cmluZyxcbiAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgIH1cbiAgICAgICAgLy9cbiAgICAgICk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICBsZXQgY3R4OiB1bmRlZmluZWQgfCBQYXJzZUNvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhLmxlbmd0aCA8IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhLmxlbmd0aCA+IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbWFpbFwiKSB7XG4gICAgICAgIGlmICghZW1haWxSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBcImVtYWlsXCIsXG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidXVpZFwiKSB7XG4gICAgICAgIGlmICghdXVpZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb246IFwidXVpZFwiLFxuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImN1aWRcIikge1xuICAgICAgICBpZiAoIWN1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uOiBcImN1aWRcIixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ1cmxcIikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG5ldyBVUkwoaW5wdXQuZGF0YSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJ1cmxcIixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJyZWdleFwiKSB7XG4gICAgICAgIGNoZWNrLnJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGNvbnN0IHRlc3RSZXN1bHQgPSBjaGVjay5yZWdleC50ZXN0KGlucHV0LmRhdGEpO1xuICAgICAgICBpZiAoIXRlc3RSZXN1bHQpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb246IFwicmVnZXhcIixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0cmltXCIpIHtcbiAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudHJpbSgpO1xuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInN0YXJ0c1dpdGhcIikge1xuICAgICAgICBpZiAoIShpbnB1dC5kYXRhIGFzIHN0cmluZykuc3RhcnRzV2l0aChjaGVjay52YWx1ZSkpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIHZhbGlkYXRpb246IHsgc3RhcnRzV2l0aDogY2hlY2sudmFsdWUgfSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbmRzV2l0aFwiKSB7XG4gICAgICAgIGlmICghKGlucHV0LmRhdGEgYXMgc3RyaW5nKS5lbmRzV2l0aChjaGVjay52YWx1ZSkpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIHZhbGlkYXRpb246IHsgZW5kc1dpdGg6IGNoZWNrLnZhbHVlIH0sXG4gICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfcmVnZXggPSAoXG4gICAgcmVnZXg6IFJlZ0V4cCxcbiAgICB2YWxpZGF0aW9uOiBTdHJpbmdWYWxpZGF0aW9uLFxuICAgIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZVxuICApID0+XG4gICAgdGhpcy5yZWZpbmVtZW50KChkYXRhKSA9PiByZWdleC50ZXN0KGRhdGEpLCB7XG4gICAgICB2YWxpZGF0aW9uLFxuICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgIH0pO1xuXG4gIF9hZGRDaGVjayhjaGVjazogWm9kU3RyaW5nQ2hlY2spIHtcbiAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgfSk7XG4gIH1cblxuICBlbWFpbChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImVtYWlsXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgfVxuICB1cmwobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1cmxcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICB9XG4gIHV1aWQobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1dWlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgfVxuICBjdWlkKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY3VpZFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gIH1cbiAgcmVnZXgocmVnZXg6IFJlZ0V4cCwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwicmVnZXhcIixcbiAgICAgIHJlZ2V4OiByZWdleCxcbiAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXJ0c1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwic3RhcnRzV2l0aFwiLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgZW5kc1dpdGgodmFsdWU6IHN0cmluZywgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwiZW5kc1dpdGhcIixcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG1pbihtaW5MZW5ndGg6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICB2YWx1ZTogbWluTGVuZ3RoLFxuICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgbWF4KG1heExlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAga2luZDogXCJtYXhcIixcbiAgICAgIHZhbHVlOiBtYXhMZW5ndGgsXG4gICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgfSk7XG4gIH1cblxuICBsZW5ndGgobGVuOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLm1pbihsZW4sIG1lc3NhZ2UpLm1heChsZW4sIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB6LnN0cmluZygpLm1pbigxKSBpbnN0ZWFkLlxuICAgKiBAc2VlIHtAbGluayBab2RTdHJpbmcubWlufVxuICAgKi9cbiAgbm9uZW1wdHkgPSAobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSA9PlxuICAgIHRoaXMubWluKDEsIGVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSk7XG5cbiAgdHJpbSA9ICgpID0+XG4gICAgbmV3IFpvZFN0cmluZyh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCB7IGtpbmQ6IFwidHJpbVwiIH1dLFxuICAgIH0pO1xuXG4gIGdldCBpc0VtYWlsKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZW1haWxcIik7XG4gIH1cbiAgZ2V0IGlzVVJMKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwidXJsXCIpO1xuICB9XG4gIGdldCBpc1VVSUQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ1dWlkXCIpO1xuICB9XG4gIGdldCBpc0NVSUQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkXCIpO1xuICB9XG4gIGdldCBtaW5MZW5ndGgoKSB7XG4gICAgbGV0IG1pbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKSBtaW4gPSBjaC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1pbjtcbiAgfVxuICBnZXQgbWF4TGVuZ3RoKCkge1xuICAgIGxldCBtYXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heCkgbWF4ID0gY2gudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXg7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyk6IFpvZFN0cmluZyA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgY2hlY2tzOiBbXSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU3RyaW5nLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTnVtYmVyICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xudHlwZSBab2ROdW1iZXJDaGVjayA9XG4gIHwgeyBraW5kOiBcIm1pblwiOyB2YWx1ZTogbnVtYmVyOyBpbmNsdXNpdmU6IGJvb2xlYW47IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJtYXhcIjsgdmFsdWU6IG51bWJlcjsgaW5jbHVzaXZlOiBib29sZWFuOyBtZXNzYWdlPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6IFwiaW50XCI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJtdWx0aXBsZU9mXCI7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfTtcblxuLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzk2NjQ4NC93aHktZG9lcy1tb2R1bHVzLW9wZXJhdG9yLXJldHVybi1mcmFjdGlvbmFsLW51bWJlci1pbi1qYXZhc2NyaXB0LzMxNzExMDM0IzMxNzExMDM0XG5mdW5jdGlvbiBmbG9hdFNhZmVSZW1haW5kZXIodmFsOiBudW1iZXIsIHN0ZXA6IG51bWJlcikge1xuICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICBjb25zdCBzdGVwRGVjQ291bnQgPSAoc3RlcC50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXSB8fCBcIlwiKS5sZW5ndGg7XG4gIGNvbnN0IGRlY0NvdW50ID0gdmFsRGVjQ291bnQgPiBzdGVwRGVjQ291bnQgPyB2YWxEZWNDb3VudCA6IHN0ZXBEZWNDb3VudDtcbiAgY29uc3QgdmFsSW50ID0gcGFyc2VJbnQodmFsLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgY29uc3Qgc3RlcEludCA9IHBhcnNlSW50KHN0ZXAudG9GaXhlZChkZWNDb3VudCkucmVwbGFjZShcIi5cIiwgXCJcIikpO1xuICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gTWF0aC5wb3coMTAsIGRlY0NvdW50KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBab2ROdW1iZXJEZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgY2hlY2tzOiBab2ROdW1iZXJDaGVja1tdO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZE51bWJlciBleHRlbmRzIFpvZFR5cGU8bnVtYmVyLCBab2ROdW1iZXJEZWY+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPG51bWJlcj4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udW1iZXIpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5udW1iZXIsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgbGV0IGN0eDogdW5kZWZpbmVkIHwgUGFyc2VDb250ZXh0ID0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuXG4gICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJpbnRcIikge1xuICAgICAgICBpZiAoIXV0aWwuaXNJbnRlZ2VyKGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgcmVjZWl2ZWQ6IFwiZmxvYXRcIixcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICBjb25zdCB0b29TbWFsbCA9IGNoZWNrLmluY2x1c2l2ZVxuICAgICAgICAgID8gaW5wdXQuZGF0YSA8IGNoZWNrLnZhbHVlXG4gICAgICAgICAgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICBpZiAodG9vU21hbGwpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGNoZWNrLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICBjb25zdCB0b29CaWcgPSBjaGVjay5pbmNsdXNpdmVcbiAgICAgICAgICA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZVxuICAgICAgICAgIDogaW5wdXQuZGF0YSA+PSBjaGVjay52YWx1ZTtcbiAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGNoZWNrLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtdWx0aXBsZU9mXCIpIHtcbiAgICAgICAgaWYgKGZsb2F0U2FmZVJlbWFpbmRlcihpbnB1dC5kYXRhLCBjaGVjay52YWx1ZSkgIT09IDApIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXG4gICAgICAgICAgICBtdWx0aXBsZU9mOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2ROdW1iZXIgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgIGNoZWNrczogW10sXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcblxuICBndGUodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gIH1cbiAgbWluID0gdGhpcy5ndGU7XG5cbiAgZ3QodmFsdWU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICB9XG5cbiAgbHRlKHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICB9XG4gIG1heCA9IHRoaXMubHRlO1xuXG4gIGx0KHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCBmYWxzZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRMaW1pdChcbiAgICBraW5kOiBcIm1pblwiIHwgXCJtYXhcIixcbiAgICB2YWx1ZTogbnVtYmVyLFxuICAgIGluY2x1c2l2ZTogYm9vbGVhbixcbiAgICBtZXNzYWdlPzogc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgIGNoZWNrczogW1xuICAgICAgICAuLi50aGlzLl9kZWYuY2hlY2tzLFxuICAgICAgICB7XG4gICAgICAgICAga2luZCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBpbmNsdXNpdmUsXG4gICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIF9hZGRDaGVjayhjaGVjazogWm9kTnVtYmVyQ2hlY2spIHtcbiAgICByZXR1cm4gbmV3IFpvZE51bWJlcih7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgfSk7XG4gIH1cblxuICBpbnQobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwiaW50XCIsXG4gICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgfSk7XG4gIH1cblxuICBwb3NpdGl2ZShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAga2luZDogXCJtaW5cIixcbiAgICAgIHZhbHVlOiAwLFxuICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5lZ2F0aXZlKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgdmFsdWU6IDAsXG4gICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgbm9ucG9zaXRpdmUobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICB2YWx1ZTogMCxcbiAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIG5vbm5lZ2F0aXZlKG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgdmFsdWU6IDAsXG4gICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgfSk7XG4gIH1cblxuICBtdWx0aXBsZU9mKHZhbHVlOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm11bHRpcGxlT2ZcIixcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHN0ZXAgPSB0aGlzLm11bHRpcGxlT2Y7XG5cbiAgZ2V0IG1pblZhbHVlKCkge1xuICAgIGxldCBtaW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbikgbWluID0gY2gudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtaW47XG4gIH1cblxuICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgbGV0IG1heDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KSBtYXggPSBjaC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1heDtcbiAgfVxuXG4gIGdldCBpc0ludCgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImludFwiKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kQmlnSW50ICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvZEJpZ0ludERlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJpZ0ludDtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZEJpZ0ludCBleHRlbmRzIFpvZFR5cGU8YmlnaW50LCBab2RCaWdJbnREZWY+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPGJpZ2ludD4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5iaWdpbnQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5iaWdpbnQsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kQmlnSW50ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEJpZ0ludCh7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEJpZ0ludCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZEJvb2xlYW4gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZEJvb2xlYW5EZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kQm9vbGVhbiBleHRlbmRzIFpvZFR5cGU8Ym9vbGVhbiwgWm9kQm9vbGVhbkRlZj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5ib29sZWFuKSB7XG4gICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYm9vbGVhbixcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2RCb29sZWFuID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEJvb2xlYW4oe1xuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kRGF0ZSAgICAgICAgLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbnR5cGUgWm9kRGF0ZUNoZWNrID1cbiAgfCB7IGtpbmQ6IFwibWluXCI7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICB8IHsga2luZDogXCJtYXhcIjsgdmFsdWU6IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9O1xuZXhwb3J0IGludGVyZmFjZSBab2REYXRlRGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGNoZWNrczogWm9kRGF0ZUNoZWNrW107XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGF0ZTtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZERhdGUgZXh0ZW5kcyBab2RUeXBlPERhdGUsIFpvZERhdGVEZWY+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuXG4gICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuZGF0ZSkge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmRhdGUsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgaWYgKGlzTmFOKGlucHV0LmRhdGEuZ2V0VGltZSgpKSkge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgIGxldCBjdHg6IHVuZGVmaW5lZCB8IFBhcnNlQ29udGV4dCA9IHVuZGVmaW5lZDtcblxuICAgIGZvciAoY29uc3QgY2hlY2sgb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoZWNrLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgaWYgKGlucHV0LmRhdGEuZ2V0VGltZSgpIDwgY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgIGlmIChpbnB1dC5kYXRhLmdldFRpbWUoKSA+IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBzdGF0dXMudmFsdWUsXG4gICAgICB2YWx1ZTogbmV3IERhdGUoKGlucHV0LmRhdGEgYXMgRGF0ZSkuZ2V0VGltZSgpKSxcbiAgICB9O1xuICB9XG5cbiAgX2FkZENoZWNrKGNoZWNrOiBab2REYXRlQ2hlY2spIHtcbiAgICByZXR1cm4gbmV3IFpvZERhdGUoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgIH0pO1xuICB9XG5cbiAgbWluKG1pbkRhdGU6IERhdGUsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgdmFsdWU6IG1pbkRhdGUuZ2V0VGltZSgpLFxuICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgbWF4KG1heERhdGU6IERhdGUsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSkge1xuICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgdmFsdWU6IG1heERhdGUuZ2V0VGltZSgpLFxuICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgbGV0IG1pbjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKSBtaW4gPSBjaC52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWluICE9IG51bGwgPyBuZXcgRGF0ZShtaW4pIDogbnVsbDtcbiAgfVxuXG4gIGdldCBtYXhEYXRlKCkge1xuICAgIGxldCBtYXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heCkgbWF4ID0gY2gudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heCAhPSBudWxsID8gbmV3IERhdGUobWF4KSA6IG51bGw7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyk6IFpvZERhdGUgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICBjaGVja3M6IFtdLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2REYXRlLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVW5kZWZpbmVkICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RVbmRlZmluZWREZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBab2RVbmRlZmluZWQgZXh0ZW5kcyBab2RUeXBlPHVuZGVmaW5lZCwgWm9kVW5kZWZpbmVkRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS51bmRlZmluZWQsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgfVxuICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXM7XG5cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2RVbmRlZmluZWQgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVW5kZWZpbmVkKHtcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5kZWZpbmVkLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTnVsbCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTnVsbERlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBab2ROdWxsIGV4dGVuZHMgWm9kVHlwZTxudWxsLCBab2ROdWxsRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udWxsKSB7XG4gICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubnVsbCxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kTnVsbCA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsKHtcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZEFueSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kQW55RGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQW55O1xufVxuXG5leHBvcnQgY2xhc3MgWm9kQW55IGV4dGVuZHMgWm9kVHlwZTxhbnksIFpvZEFueURlZj4ge1xuICAvLyB0byBwcmV2ZW50IGluc3RhbmNlcyBvZiBvdGhlciBjbGFzc2VzIGZyb20gZXh0ZW5kaW5nIFpvZEFueS4gdGhpcyBjYXVzZXMgaXNzdWVzIHdpdGggY2F0Y2hhbGwgaW4gWm9kT2JqZWN0LlxuICBfYW55OiB0cnVlID0gdHJ1ZTtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kQW55ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEFueSh7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFueSxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZFVua25vd24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZFVua25vd25EZWYgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RVbmtub3duO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kVW5rbm93biBleHRlbmRzIFpvZFR5cGU8dW5rbm93biwgWm9kVW5rbm93bkRlZj4ge1xuICAvLyByZXF1aXJlZFxuICBfdW5rbm93bjogdHJ1ZSA9IHRydWU7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kVW5rbm93biA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmtub3duKHtcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5rbm93bixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZE5ldmVyICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2ROZXZlckRlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5ldmVyO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kTmV2ZXIgZXh0ZW5kcyBab2RUeXBlPG5ldmVyLCBab2ROZXZlckRlZj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmV2ZXIsXG4gICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgfSk7XG4gICAgcmV0dXJuIElOVkFMSUQ7XG4gIH1cbiAgc3RhdGljIGNyZWF0ZSA9IChwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXMpOiBab2ROZXZlciA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROZXZlcih7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5ldmVyLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVm9pZCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kVm9pZERlZiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBab2RWb2lkIGV4dGVuZHMgWm9kVHlwZTx2b2lkLCBab2RWb2lkRGVmPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS52b2lkLFxuICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gKHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtcyk6IFpvZFZvaWQgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVm9pZCh7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFZvaWQsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RBcnJheSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kQXJyYXlEZWY8VCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PlxuICBleHRlbmRzIFpvZFR5cGVEZWYge1xuICB0eXBlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5O1xuICBtaW5MZW5ndGg6IHsgdmFsdWU6IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9IHwgbnVsbDtcbiAgbWF4TGVuZ3RoOiB7IHZhbHVlOiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIEFycmF5Q2FyZGluYWxpdHkgPSBcIm1hbnlcIiB8IFwiYXRsZWFzdG9uZVwiO1xudHlwZSBhcnJheU91dHB1dFR5cGU8XG4gIFQgZXh0ZW5kcyBab2RUeXBlQW55LFxuICBDYXJkaW5hbGl0eSBleHRlbmRzIEFycmF5Q2FyZGluYWxpdHkgPSBcIm1hbnlcIlxuPiA9IENhcmRpbmFsaXR5IGV4dGVuZHMgXCJhdGxlYXN0b25lXCJcbiAgPyBbVFtcIl9vdXRwdXRcIl0sIC4uLlRbXCJfb3V0cHV0XCJdW11dXG4gIDogVFtcIl9vdXRwdXRcIl1bXTtcblxuZXhwb3J0IGNsYXNzIFpvZEFycmF5PFxuICBUIGV4dGVuZHMgWm9kVHlwZUFueSxcbiAgQ2FyZGluYWxpdHkgZXh0ZW5kcyBBcnJheUNhcmRpbmFsaXR5ID0gXCJtYW55XCJcbj4gZXh0ZW5kcyBab2RUeXBlPFxuICBhcnJheU91dHB1dFR5cGU8VCwgQ2FyZGluYWxpdHk+LFxuICBab2RBcnJheURlZjxUPixcbiAgQ2FyZGluYWxpdHkgZXh0ZW5kcyBcImF0bGVhc3RvbmVcIlxuICAgID8gW1RbXCJfaW5wdXRcIl0sIC4uLlRbXCJfaW5wdXRcIl1bXV1cbiAgICA6IFRbXCJfaW5wdXRcIl1bXVxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgY3R4LCBzdGF0dXMgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG5cbiAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWY7XG5cbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5hcnJheSxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoZGVmLm1pbkxlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA8IGRlZi5taW5MZW5ndGgudmFsdWUpIHtcbiAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICBtaW5pbXVtOiBkZWYubWluTGVuZ3RoLnZhbHVlLFxuICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTogZGVmLm1pbkxlbmd0aC5tZXNzYWdlLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZi5tYXhMZW5ndGggIT09IG51bGwpIHtcbiAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPiBkZWYubWF4TGVuZ3RoLnZhbHVlKSB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgIG1heGltdW06IGRlZi5tYXhMZW5ndGgudmFsdWUsXG4gICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4TGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICAoY3R4LmRhdGEgYXMgYW55W10pLm1hcCgoaXRlbSwgaSkgPT4ge1xuICAgICAgICAgIHJldHVybiBkZWYudHlwZS5fcGFyc2VBc3luYyhcbiAgICAgICAgICAgIG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gKGN0eC5kYXRhIGFzIGFueVtdKS5tYXAoKGl0ZW0sIGkpID0+IHtcbiAgICAgIHJldHVybiBkZWYudHlwZS5fcGFyc2VTeW5jKFxuICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHQpO1xuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlO1xuICB9XG5cbiAgbWluKG1pbkxlbmd0aDogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgIG1pbkxlbmd0aDogeyB2YWx1ZTogbWluTGVuZ3RoLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBtYXgobWF4TGVuZ3RoOiBudW1iZXIsIG1lc3NhZ2U/OiBlcnJvclV0aWwuRXJyTWVzc2FnZSk6IHRoaXMge1xuICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgbWF4TGVuZ3RoOiB7IHZhbHVlOiBtYXhMZW5ndGgsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIGxlbmd0aChsZW46IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMubWluKGxlbiwgbWVzc2FnZSkubWF4KGxlbiwgbWVzc2FnZSkgYXMgYW55O1xuICB9XG5cbiAgbm9uZW1wdHkobWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogWm9kQXJyYXk8VCwgXCJhdGxlYXN0b25lXCI+IHtcbiAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSkgYXMgYW55O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgc2NoZW1hOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RBcnJheTxUPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICB0eXBlOiBzY2hlbWEsXG4gICAgICBtaW5MZW5ndGg6IG51bGwsXG4gICAgICBtYXhMZW5ndGg6IG51bGwsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEFycmF5LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBab2ROb25FbXB0eUFycmF5PFQgZXh0ZW5kcyBab2RUeXBlQW55PiA9IFpvZEFycmF5PFQsIFwiYXRsZWFzdG9uZVwiPjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZE9iamVjdCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuZXhwb3J0IG5hbWVzcGFjZSBvYmplY3RVdGlsIHtcbiAgZXhwb3J0IHR5cGUgTWVyZ2VTaGFwZXM8VSBleHRlbmRzIFpvZFJhd1NoYXBlLCBWIGV4dGVuZHMgWm9kUmF3U2hhcGU+ID0ge1xuICAgIFtrIGluIEV4Y2x1ZGU8a2V5b2YgVSwga2V5b2YgVj5dOiBVW2tdO1xuICB9ICYgVjtcblxuICB0eXBlIG9wdGlvbmFsS2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgICBbayBpbiBrZXlvZiBUXTogdW5kZWZpbmVkIGV4dGVuZHMgVFtrXSA/IGsgOiBuZXZlcjtcbiAgfVtrZXlvZiBUXTtcblxuICB0eXBlIHJlcXVpcmVkS2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgICBbayBpbiBrZXlvZiBUXTogdW5kZWZpbmVkIGV4dGVuZHMgVFtrXSA/IG5ldmVyIDogaztcbiAgfVtrZXlvZiBUXTtcblxuICBleHBvcnQgdHlwZSBhZGRRdWVzdGlvbk1hcmtzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gUGFydGlhbDxcbiAgICBQaWNrPFQsIG9wdGlvbmFsS2V5czxUPj5cbiAgPiAmXG4gICAgUGljazxULCByZXF1aXJlZEtleXM8VD4+O1xuXG4gIGV4cG9ydCB0eXBlIGlkZW50aXR5PFQ+ID0gVDtcbiAgZXhwb3J0IHR5cGUgZmxhdHRlbjxUIGV4dGVuZHMgb2JqZWN0PiA9IGlkZW50aXR5PHsgW2sgaW4ga2V5b2YgVF06IFRba10gfT47XG5cbiAgZXhwb3J0IHR5cGUgbm9OZXZlcktleXM8VCBleHRlbmRzIFpvZFJhd1NoYXBlPiA9IHtcbiAgICBbayBpbiBrZXlvZiBUXTogW1Rba11dIGV4dGVuZHMgW25ldmVyXSA/IG5ldmVyIDogaztcbiAgfVtrZXlvZiBUXTtcblxuICBleHBvcnQgdHlwZSBub05ldmVyPFQgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSBpZGVudGl0eTx7XG4gICAgW2sgaW4gbm9OZXZlcktleXM8VD5dOiBrIGV4dGVuZHMga2V5b2YgVCA/IFRba10gOiBuZXZlcjtcbiAgfT47XG5cbiAgZXhwb3J0IGNvbnN0IG1lcmdlU2hhcGVzID0gPFUgZXh0ZW5kcyBab2RSYXdTaGFwZSwgVCBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICBmaXJzdDogVSxcbiAgICBzZWNvbmQ6IFRcbiAgKTogVCAmIFUgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5maXJzdCxcbiAgICAgIC4uLnNlY29uZCwgLy8gc2Vjb25kIG92ZXJ3cml0ZXMgZmlyc3RcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBleHRlbmRTaGFwZTxBLCBCPiA9IE9taXQ8QSwga2V5b2YgQj4gJiBCO1xuXG5jb25zdCBBdWdtZW50RmFjdG9yeSA9XG4gIDxEZWYgZXh0ZW5kcyBab2RPYmplY3REZWY+KGRlZjogRGVmKSA9PlxuICA8QXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIGF1Z21lbnRhdGlvbjogQXVnbWVudGF0aW9uXG4gICk6IFpvZE9iamVjdDxcbiAgICBleHRlbmRTaGFwZTxSZXR1cm5UeXBlPERlZltcInNoYXBlXCJdPiwgQXVnbWVudGF0aW9uPixcbiAgICBEZWZbXCJ1bmtub3duS2V5c1wiXSxcbiAgICBEZWZbXCJjYXRjaGFsbFwiXVxuICA+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi5kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAgICAgLi4uZGVmLnNoYXBlKCksXG4gICAgICAgIC4uLmF1Z21lbnRhdGlvbixcbiAgICAgIH0pLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcblxudHlwZSBVbmtub3duS2V5c1BhcmFtID0gXCJwYXNzdGhyb3VnaFwiIHwgXCJzdHJpY3RcIiB8IFwic3RyaXBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBab2RPYmplY3REZWY8XG4gIFQgZXh0ZW5kcyBab2RSYXdTaGFwZSA9IFpvZFJhd1NoYXBlLFxuICBVbmtub3duS2V5cyBleHRlbmRzIFVua25vd25LZXlzUGFyYW0gPSBVbmtub3duS2V5c1BhcmFtLFxuICBDYXRjaGFsbCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0O1xuICBzaGFwZTogKCkgPT4gVDtcbiAgY2F0Y2hhbGw6IENhdGNoYWxsO1xuICB1bmtub3duS2V5czogVW5rbm93bktleXM7XG59XG5cbmV4cG9ydCB0eXBlIGJhc2VPYmplY3RPdXRwdXRUeXBlPFNoYXBlIGV4dGVuZHMgWm9kUmF3U2hhcGU+ID1cbiAgb2JqZWN0VXRpbC5mbGF0dGVuPFxuICAgIG9iamVjdFV0aWwuYWRkUXVlc3Rpb25NYXJrczx7XG4gICAgICBbayBpbiBrZXlvZiBTaGFwZV06IFNoYXBlW2tdW1wiX291dHB1dFwiXTtcbiAgICB9PlxuICA+O1xuXG5leHBvcnQgdHlwZSBvYmplY3RPdXRwdXRUeXBlPFxuICBTaGFwZSBleHRlbmRzIFpvZFJhd1NoYXBlLFxuICBDYXRjaGFsbCBleHRlbmRzIFpvZFR5cGVBbnlcbj4gPSBab2RUeXBlQW55IGV4dGVuZHMgQ2F0Y2hhbGxcbiAgPyBiYXNlT2JqZWN0T3V0cHV0VHlwZTxTaGFwZT5cbiAgOiBvYmplY3RVdGlsLmZsYXR0ZW48XG4gICAgICBiYXNlT2JqZWN0T3V0cHV0VHlwZTxTaGFwZT4gJiB7IFtrOiBzdHJpbmddOiBDYXRjaGFsbFtcIl9vdXRwdXRcIl0gfVxuICAgID47XG5cbmV4cG9ydCB0eXBlIGJhc2VPYmplY3RJbnB1dFR5cGU8U2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZT4gPSBvYmplY3RVdGlsLmZsYXR0ZW48XG4gIG9iamVjdFV0aWwuYWRkUXVlc3Rpb25NYXJrczx7XG4gICAgW2sgaW4ga2V5b2YgU2hhcGVdOiBTaGFwZVtrXVtcIl9pbnB1dFwiXTtcbiAgfT5cbj47XG5cbmV4cG9ydCB0eXBlIG9iamVjdElucHV0VHlwZTxcbiAgU2hhcGUgZXh0ZW5kcyBab2RSYXdTaGFwZSxcbiAgQ2F0Y2hhbGwgZXh0ZW5kcyBab2RUeXBlQW55XG4+ID0gWm9kVHlwZUFueSBleHRlbmRzIENhdGNoYWxsXG4gID8gYmFzZU9iamVjdElucHV0VHlwZTxTaGFwZT5cbiAgOiBvYmplY3RVdGlsLmZsYXR0ZW48XG4gICAgICBiYXNlT2JqZWN0SW5wdXRUeXBlPFNoYXBlPiAmIHsgW2s6IHN0cmluZ106IENhdGNoYWxsW1wiX2lucHV0XCJdIH1cbiAgICA+O1xuXG50eXBlIGRlb3B0aW9uYWw8VCBleHRlbmRzIFpvZFR5cGVBbnk+ID0gVCBleHRlbmRzIFpvZE9wdGlvbmFsPGluZmVyIFU+XG4gID8gZGVvcHRpb25hbDxVPlxuICA6IFQ7XG5cbmV4cG9ydCB0eXBlIFNvbWVab2RPYmplY3QgPSBab2RPYmplY3Q8XG4gIFpvZFJhd1NoYXBlLFxuICBVbmtub3duS2V5c1BhcmFtLFxuICBab2RUeXBlQW55LFxuICBhbnksXG4gIGFueVxuPjtcblxuZnVuY3Rpb24gZGVlcFBhcnRpYWxpZnkoc2NoZW1hOiBab2RUeXBlQW55KTogYW55IHtcbiAgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9iamVjdCkge1xuICAgIGNvbnN0IG5ld1NoYXBlOiBhbnkgPSB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5zaGFwZSkge1xuICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBzY2hlbWEuc2hhcGVba2V5XTtcbiAgICAgIG5ld1NoYXBlW2tleV0gPSBab2RPcHRpb25hbC5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoZmllbGRTY2hlbWEpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4uc2NoZW1hLl9kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgfSkgYXMgYW55O1xuICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZEFycmF5KSB7XG4gICAgcmV0dXJuIFpvZEFycmF5LmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEuZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZE9wdGlvbmFsKSB7XG4gICAgcmV0dXJuIFpvZE9wdGlvbmFsLmNyZWF0ZShkZWVwUGFydGlhbGlmeShzY2hlbWEudW53cmFwKCkpKTtcbiAgfSBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2ROdWxsYWJsZSkge1xuICAgIHJldHVybiBab2ROdWxsYWJsZS5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoc2NoZW1hLnVud3JhcCgpKSk7XG4gIH0gZWxzZSBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kVHVwbGUpIHtcbiAgICByZXR1cm4gWm9kVHVwbGUuY3JlYXRlKFxuICAgICAgc2NoZW1hLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiBkZWVwUGFydGlhbGlmeShpdGVtKSlcbiAgICApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzY2hlbWE7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFpvZE9iamVjdDxcbiAgVCBleHRlbmRzIFpvZFJhd1NoYXBlLFxuICBVbmtub3duS2V5cyBleHRlbmRzIFVua25vd25LZXlzUGFyYW0gPSBcInN0cmlwXCIsXG4gIENhdGNoYWxsIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksXG4gIE91dHB1dCA9IG9iamVjdE91dHB1dFR5cGU8VCwgQ2F0Y2hhbGw+LFxuICBJbnB1dCA9IG9iamVjdElucHV0VHlwZTxULCBDYXRjaGFsbD5cbj4gZXh0ZW5kcyBab2RUeXBlPE91dHB1dCwgWm9kT2JqZWN0RGVmPFQsIFVua25vd25LZXlzLCBDYXRjaGFsbD4sIElucHV0PiB7XG4gIHJlYWRvbmx5IF9zaGFwZSE6IFQ7XG4gIHJlYWRvbmx5IF91bmtub3duS2V5cyE6IFVua25vd25LZXlzO1xuICByZWFkb25seSBfY2F0Y2hhbGwhOiBDYXRjaGFsbDtcbiAgcHJpdmF0ZSBfY2FjaGVkOiB7IHNoYXBlOiBUOyBrZXlzOiBzdHJpbmdbXSB9IHwgbnVsbCA9IG51bGw7XG5cbiAgX2dldENhY2hlZCgpOiB7IHNoYXBlOiBUOyBrZXlzOiBzdHJpbmdbXSB9IHtcbiAgICBpZiAodGhpcy5fY2FjaGVkICE9PSBudWxsKSByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgIGNvbnN0IHNoYXBlID0gdGhpcy5fZGVmLnNoYXBlKCk7XG4gICAgY29uc3Qga2V5cyA9IHV0aWwub2JqZWN0S2V5cyhzaGFwZSk7XG4gICAgcmV0dXJuICh0aGlzLl9jYWNoZWQgPSB7IHNoYXBlLCBrZXlzIH0pO1xuICB9XG5cbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuXG4gICAgY29uc3QgeyBzaGFwZSwga2V5czogc2hhcGVLZXlzIH0gPSB0aGlzLl9nZXRDYWNoZWQoKTtcbiAgICBjb25zdCBleHRyYUtleXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgaW4gY3R4LmRhdGEpIHtcbiAgICAgIGlmICghc2hhcGVLZXlzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgZXh0cmFLZXlzLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYWlyczoge1xuICAgICAga2V5OiBQYXJzZVJldHVyblR5cGU8YW55PjtcbiAgICAgIHZhbHVlOiBQYXJzZVJldHVyblR5cGU8YW55PjtcbiAgICAgIGFsd2F5c1NldD86IGJvb2xlYW47XG4gICAgfVtdID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2Ygc2hhcGVLZXlzKSB7XG4gICAgICBjb25zdCBrZXlWYWxpZGF0b3IgPSBzaGFwZVtrZXldO1xuICAgICAgY29uc3QgdmFsdWUgPSBjdHguZGF0YVtrZXldO1xuICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICB2YWx1ZToga2V5VmFsaWRhdG9yLl9wYXJzZShcbiAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBrZXkpXG4gICAgICAgICksXG4gICAgICAgIGFsd2F5c1NldDoga2V5IGluIGN0eC5kYXRhLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyKSB7XG4gICAgICBjb25zdCB1bmtub3duS2V5cyA9IHRoaXMuX2RlZi51bmtub3duS2V5cztcblxuICAgICAgaWYgKHVua25vd25LZXlzID09PSBcInBhc3N0aHJvdWdoXCIpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgICAgICBrZXk6IHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBrZXkgfSxcbiAgICAgICAgICAgIHZhbHVlOiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZTogY3R4LmRhdGFba2V5XSB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHVua25vd25LZXlzID09PSBcInN0cmljdFwiKSB7XG4gICAgICAgIGlmIChleHRyYUtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzLFxuICAgICAgICAgICAga2V5czogZXh0cmFLZXlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHVua25vd25LZXlzID09PSBcInN0cmlwXCIpIHtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW50ZXJuYWwgWm9kT2JqZWN0IGVycm9yOiBpbnZhbGlkIHVua25vd25LZXlzIHZhbHVlLmApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBydW4gY2F0Y2hhbGwgdmFsaWRhdGlvblxuICAgICAgY29uc3QgY2F0Y2hhbGwgPSB0aGlzLl9kZWYuY2F0Y2hhbGw7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGN0eC5kYXRhW2tleV07XG4gICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgIHZhbHVlOiBjYXRjaGFsbC5fcGFyc2UoXG4gICAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBrZXkpIC8vLCBjdHguY2hpbGQoa2V5KSwgdmFsdWUsIGdldFBhcnNlZFR5cGUodmFsdWUpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3luY1BhaXJzOiBhbnlbXSA9IFtdO1xuICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgdmFsdWU6IGF3YWl0IHBhaXIudmFsdWUsXG4gICAgICAgICAgICAgIGFsd2F5c1NldDogcGFpci5hbHdheXNTZXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN5bmNQYWlycztcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHN5bmNQYWlycykgPT4ge1xuICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBzeW5jUGFpcnMpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzIGFzIGFueSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNoYXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYuc2hhcGUoKTtcbiAgfVxuXG4gIHN0cmljdChtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RPYmplY3Q8VCwgXCJzdHJpY3RcIiwgQ2F0Y2hhbGw+IHtcbiAgICBlcnJvclV0aWwuZXJyVG9PYmo7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAuLi4obWVzc2FnZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8ge1xuICAgICAgICAgICAgZXJyb3JNYXA6IChpc3N1ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRFcnJvciA9XG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmLmVycm9yTWFwPy4oaXNzdWUsIGN0eCkubWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgICBpZiAoaXNzdWUuY29kZSA9PT0gXCJ1bnJlY29nbml6ZWRfa2V5c1wiKVxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkubWVzc2FnZSA/PyBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgc3RyaXAoKTogWm9kT2JqZWN0PFQsIFwic3RyaXBcIiwgQ2F0Y2hhbGw+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICB1bmtub3duS2V5czogXCJzdHJpcFwiLFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIHBhc3N0aHJvdWdoKCk6IFpvZE9iamVjdDxULCBcInBhc3N0aHJvdWdoXCIsIENhdGNoYWxsPiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgdW5rbm93bktleXM6IFwicGFzc3Rocm91Z2hcIixcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgSW4gbW9zdCBjYXNlcywgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVkIC0gdW5rbm93biBwcm9wZXJ0aWVzIGFyZSBub3cgc2lsZW50bHkgc3RyaXBwZWQuXG4gICAqIElmIHlvdSB3YW50IHRvIHBhc3MgdGhyb3VnaCB1bmtub3duIHByb3BlcnRpZXMsIHVzZSBgLnBhc3N0aHJvdWdoKClgIGluc3RlYWQuXG4gICAqL1xuICBub25zdHJpY3QgPSB0aGlzLnBhc3N0aHJvdWdoO1xuXG4gIGF1Z21lbnQgPSBBdWdtZW50RmFjdG9yeTxab2RPYmplY3REZWY8VCwgVW5rbm93bktleXMsIENhdGNoYWxsPj4odGhpcy5fZGVmKTtcbiAgZXh0ZW5kID0gQXVnbWVudEZhY3Rvcnk8Wm9kT2JqZWN0RGVmPFQsIFVua25vd25LZXlzLCBDYXRjaGFsbD4+KHRoaXMuX2RlZik7XG5cbiAgc2V0S2V5PEtleSBleHRlbmRzIHN0cmluZywgU2NoZW1hIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAga2V5OiBLZXksXG4gICAgc2NoZW1hOiBTY2hlbWFcbiAgKTogWm9kT2JqZWN0PFQgJiB7IFtrIGluIEtleV06IFNjaGVtYSB9LCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+IHtcbiAgICByZXR1cm4gdGhpcy5hdWdtZW50KHsgW2tleV06IHNjaGVtYSB9KSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogUHJpb3IgdG8gem9kQDEuMC4xMiB0aGVyZSB3YXMgYSBidWcgaW4gdGhlXG4gICAqIGluZmVycmVkIHR5cGUgb2YgbWVyZ2VkIG9iamVjdHMuIFBsZWFzZVxuICAgKiB1cGdyYWRlIGlmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGlzc3Vlcy5cbiAgICovXG4gIG1lcmdlPEluY29taW5nIGV4dGVuZHMgQW55Wm9kT2JqZWN0PihcbiAgICBtZXJnaW5nOiBJbmNvbWluZ1xuICApOiAvL1pvZE9iamVjdDxUICYgSW5jb21pbmdbXCJfc2hhcGVcIl0sIFVua25vd25LZXlzLCBDYXRjaGFsbD4gPSAobWVyZ2luZykgPT4ge1xuICBab2RPYmplY3Q8ZXh0ZW5kU2hhcGU8VCwgSW5jb21pbmdbXCJfc2hhcGVcIl0+LCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+IHtcbiAgICAvLyBjb25zdCBtZXJnZWRTaGFwZSA9IG9iamVjdFV0aWwubWVyZ2VTaGFwZXMoXG4gICAgLy8gICB0aGlzLl9kZWYuc2hhcGUoKSxcbiAgICAvLyAgIG1lcmdpbmcuX2RlZi5zaGFwZSgpXG4gICAgLy8gKTtcbiAgICBjb25zdCBtZXJnZWQ6IGFueSA9IG5ldyBab2RPYmplY3Qoe1xuICAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgICBzaGFwZTogKCkgPT5cbiAgICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgfSkgYXMgYW55O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH1cblxuICBjYXRjaGFsbDxJbmRleCBleHRlbmRzIFpvZFR5cGVBbnk+KFxuICAgIGluZGV4OiBJbmRleFxuICApOiBab2RPYmplY3Q8VCwgVW5rbm93bktleXMsIEluZGV4PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgY2F0Y2hhbGw6IGluZGV4LFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIHBpY2s8TWFzayBleHRlbmRzIHsgW2sgaW4ga2V5b2YgVF0/OiB0cnVlIH0+KFxuICAgIG1hc2s6IE1hc2tcbiAgKTogWm9kT2JqZWN0PFBpY2s8VCwgRXh0cmFjdDxrZXlvZiBULCBrZXlvZiBNYXNrPj4sIFVua25vd25LZXlzLCBDYXRjaGFsbD4ge1xuICAgIGNvbnN0IHNoYXBlOiBhbnkgPSB7fTtcbiAgICB1dGlsLm9iamVjdEtleXMobWFzaykubWFwKChrZXkpID0+IHtcbiAgICAgIC8vIG9ubHkgYWRkIHRvIHNoYXBlIGlmIGtleSBjb3JyZXNwb25kcyB0byBhbiBlbGVtZW50IG9mIHRoZSBjdXJyZW50IHNoYXBlXG4gICAgICBpZiAodGhpcy5zaGFwZVtrZXldKSBzaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgIHNoYXBlOiAoKSA9PiBzaGFwZSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBvbWl0PE1hc2sgZXh0ZW5kcyB7IFtrIGluIGtleW9mIFRdPzogdHJ1ZSB9PihcbiAgICBtYXNrOiBNYXNrXG4gICk6IFpvZE9iamVjdDxPbWl0PFQsIGtleW9mIE1hc2s+LCBVbmtub3duS2V5cywgQ2F0Y2hhbGw+IHtcbiAgICBjb25zdCBzaGFwZTogYW55ID0ge307XG4gICAgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpLm1hcCgoa2V5KSA9PiB7XG4gICAgICBpZiAodXRpbC5vYmplY3RLZXlzKG1hc2spLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgZGVlcFBhcnRpYWwoKTogcGFydGlhbFV0aWwuRGVlcFBhcnRpYWw8dGhpcz4ge1xuICAgIHJldHVybiBkZWVwUGFydGlhbGlmeSh0aGlzKSBhcyBhbnk7XG4gIH1cblxuICBwYXJ0aWFsKCk6IFpvZE9iamVjdDxcbiAgICB7IFtrIGluIGtleW9mIFRdOiBab2RPcHRpb25hbDxUW2tdPiB9LFxuICAgIFVua25vd25LZXlzLFxuICAgIENhdGNoYWxsXG4gID47XG4gIHBhcnRpYWw8TWFzayBleHRlbmRzIHsgW2sgaW4ga2V5b2YgVF0/OiB0cnVlIH0+KFxuICAgIG1hc2s6IE1hc2tcbiAgKTogWm9kT2JqZWN0PFxuICAgIG9iamVjdFV0aWwubm9OZXZlcjx7XG4gICAgICBbayBpbiBrZXlvZiBUXTogayBleHRlbmRzIGtleW9mIE1hc2sgPyBab2RPcHRpb25hbDxUW2tdPiA6IFRba107XG4gICAgfT4sXG4gICAgVW5rbm93bktleXMsXG4gICAgQ2F0Y2hhbGxcbiAgPjtcbiAgcGFydGlhbChtYXNrPzogYW55KSB7XG4gICAgY29uc3QgbmV3U2hhcGU6IGFueSA9IHt9O1xuICAgIGlmIChtYXNrKSB7XG4gICAgICB1dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkubWFwKChrZXkpID0+IHtcbiAgICAgICAgaWYgKHV0aWwub2JqZWN0S2V5cyhtYXNrKS5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgICAgbmV3U2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdTaGFwZVtrZXldID0gdGhpcy5zaGFwZVtrZXldLm9wdGlvbmFsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgIHNoYXBlOiAoKSA9PiBuZXdTaGFwZSxcbiAgICAgIH0pIGFzIGFueTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5zaGFwZSkge1xuICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgbmV3U2hhcGVba2V5XSA9IGZpZWxkU2NoZW1hLm9wdGlvbmFsKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgc2hhcGU6ICgpID0+IG5ld1NoYXBlLFxuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIHJlcXVpcmVkKCk6IFpvZE9iamVjdDxcbiAgICB7IFtrIGluIGtleW9mIFRdOiBkZW9wdGlvbmFsPFRba10+IH0sXG4gICAgVW5rbm93bktleXMsXG4gICAgQ2F0Y2hhbGxcbiAgPiB7XG4gICAgY29uc3QgbmV3U2hhcGU6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuc2hhcGUpIHtcbiAgICAgIGNvbnN0IGZpZWxkU2NoZW1hID0gdGhpcy5zaGFwZVtrZXldO1xuICAgICAgbGV0IG5ld0ZpZWxkID0gZmllbGRTY2hlbWE7XG4gICAgICB3aGlsZSAobmV3RmllbGQgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICBuZXdGaWVsZCA9IChuZXdGaWVsZCBhcyBab2RPcHRpb25hbDxhbnk+KS5fZGVmLmlubmVyVHlwZTtcbiAgICAgIH1cblxuICAgICAgbmV3U2hhcGVba2V5XSA9IG5ld0ZpZWxkO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAga2V5b2YoKTogWm9kRW51bTxlbnVtVXRpbC5VbmlvblRvVHVwbGVTdHJpbmc8a2V5b2YgVD4+IHtcbiAgICByZXR1cm4gY3JlYXRlWm9kRW51bShcbiAgICAgIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSBhcyBbc3RyaW5nLCAuLi5zdHJpbmdbXV1cbiAgICApIGFzIGFueTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICBzaGFwZTogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kT2JqZWN0PFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICB1bmtub3duS2V5czogXCJzdHJpcFwiLFxuICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSkgYXMgYW55O1xuICB9O1xuXG4gIHN0YXRpYyBzdHJpY3RDcmVhdGUgPSA8VCBleHRlbmRzIFpvZFJhd1NoYXBlPihcbiAgICBzaGFwZTogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kT2JqZWN0PFQsIFwic3RyaWN0XCI+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICB1bmtub3duS2V5czogXCJzdHJpY3RcIixcbiAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcblxuICBzdGF0aWMgbGF6eWNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIHNoYXBlOiAoKSA9PiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RPYmplY3Q8VD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgIHNoYXBlLFxuICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT2JqZWN0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcbn1cblxuZXhwb3J0IHR5cGUgQW55Wm9kT2JqZWN0ID0gWm9kT2JqZWN0PGFueSwgYW55LCBhbnk+O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kVW5pb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG50eXBlIFpvZFVuaW9uT3B0aW9ucyA9IFJlYWRvbmx5PFtab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPjtcbmV4cG9ydCBpbnRlcmZhY2UgWm9kVW5pb25EZWY8XG4gIFQgZXh0ZW5kcyBab2RVbmlvbk9wdGlvbnMgPSBSZWFkb25seTxcbiAgICBbWm9kVHlwZUFueSwgWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXVxuICA+XG4+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIG9wdGlvbnM6IFQ7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5pb247XG59XG5cbmV4cG9ydCBjbGFzcyBab2RVbmlvbjxUIGV4dGVuZHMgWm9kVW5pb25PcHRpb25zPiBleHRlbmRzIFpvZFR5cGU8XG4gIFRbbnVtYmVyXVtcIl9vdXRwdXRcIl0sXG4gIFpvZFVuaW9uRGVmPFQ+LFxuICBUW251bWJlcl1bXCJfaW5wdXRcIl1cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZGVmLm9wdGlvbnM7XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVSZXN1bHRzKFxuICAgICAgcmVzdWx0czogeyBjdHg6IFBhcnNlQ29udGV4dDsgcmVzdWx0OiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT4gfVtdXG4gICAgKSB7XG4gICAgICAvLyByZXR1cm4gZmlyc3QgaXNzdWUtZnJlZSB2YWxpZGF0aW9uIGlmIGl0IGV4aXN0c1xuICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICBpZiAocmVzdWx0LnJlc3VsdC5zdGF0dXMgPT09IFwidmFsaWRcIikge1xuICAgICAgICAgIHJldHVybiByZXN1bHQucmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5yZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAvLyBhZGQgaXNzdWVzIGZyb20gZGlydHkgb3B0aW9uXG5cbiAgICAgICAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKC4uLnJlc3VsdC5jdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcmV0dXJuIGludmFsaWRcbiAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gcmVzdWx0cy5tYXAoXG4gICAgICAgIChyZXN1bHQpID0+IG5ldyBab2RFcnJvcihyZXN1bHQuY3R4LmNvbW1vbi5pc3N1ZXMpXG4gICAgICApO1xuXG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sXG4gICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgICBvcHRpb25zLm1hcChhc3luYyAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hpbGRDdHg6IFBhcnNlQ29udGV4dCA9IHtcbiAgICAgICAgICAgIC4uLmN0eCxcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByZXN1bHQ6IGF3YWl0IG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgcGFyZW50OiBjaGlsZEN0eCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY3R4OiBjaGlsZEN0eCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgKS50aGVuKGhhbmRsZVJlc3VsdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGlydHk6IHVuZGVmaW5lZCB8IHsgcmVzdWx0OiBESVJUWTxhbnk+OyBjdHg6IFBhcnNlQ29udGV4dCB9ID1cbiAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaXNzdWVzOiBab2RJc3N1ZVtdW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgY2hpbGRDdHg6IFBhcnNlQ29udGV4dCA9IHtcbiAgICAgICAgICAuLi5jdHgsXG4gICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gb3B0aW9uLl9wYXJzZVN5bmMoe1xuICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgIHBhcmVudDogY2hpbGRDdHgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIiAmJiAhZGlydHkpIHtcbiAgICAgICAgICBkaXJ0eSA9IHsgcmVzdWx0LCBjdHg6IGNoaWxkQ3R4IH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGRDdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICBpc3N1ZXMucHVzaChjaGlsZEN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5kaXJ0eS5jdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgIHJldHVybiBkaXJ0eS5yZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVuaW9uRXJyb3JzID0gaXNzdWVzLm1hcCgoaXNzdWVzKSA9PiBuZXcgWm9kRXJyb3IoaXNzdWVzKSk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sXG4gICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYub3B0aW9ucztcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8XG4gICAgVCBleHRlbmRzIFJlYWRvbmx5PFtab2RUeXBlQW55LCBab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dPlxuICA+KFxuICAgIHR5cGVzOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RVbmlvbjxUPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmlvbih7XG4gICAgICBvcHRpb25zOiB0eXBlcyxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kVW5pb24sXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2REaXNjcmltaW5hdGVkVW5pb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFpvZERpc2NyaW1pbmF0ZWRVbmlvbk9wdGlvbjxcbiAgRGlzY3JpbWluYXRvciBleHRlbmRzIHN0cmluZyxcbiAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlXG4+ID0gWm9kT2JqZWN0PFxuICB7IFtrZXkgaW4gRGlzY3JpbWluYXRvcl06IFpvZExpdGVyYWw8RGlzY3JpbWluYXRvclZhbHVlPiB9ICYgWm9kUmF3U2hhcGUsXG4gIGFueSxcbiAgYW55XG4+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFpvZERpc2NyaW1pbmF0ZWRVbmlvbkRlZjxcbiAgRGlzY3JpbWluYXRvciBleHRlbmRzIHN0cmluZyxcbiAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlLFxuICBPcHRpb24gZXh0ZW5kcyBab2REaXNjcmltaW5hdGVkVW5pb25PcHRpb248RGlzY3JpbWluYXRvciwgRGlzY3JpbWluYXRvclZhbHVlPlxuPiBleHRlbmRzIFpvZFR5cGVEZWYge1xuICBkaXNjcmltaW5hdG9yOiBEaXNjcmltaW5hdG9yO1xuICBvcHRpb25zOiBNYXA8RGlzY3JpbWluYXRvclZhbHVlLCBPcHRpb24+O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbjtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZERpc2NyaW1pbmF0ZWRVbmlvbjxcbiAgRGlzY3JpbWluYXRvciBleHRlbmRzIHN0cmluZyxcbiAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlLFxuICBPcHRpb24gZXh0ZW5kcyBab2REaXNjcmltaW5hdGVkVW5pb25PcHRpb248RGlzY3JpbWluYXRvciwgRGlzY3JpbWluYXRvclZhbHVlPlxuPiBleHRlbmRzIFpvZFR5cGU8XG4gIE9wdGlvbltcIl9vdXRwdXRcIl0sXG4gIFpvZERpc2NyaW1pbmF0ZWRVbmlvbkRlZjxEaXNjcmltaW5hdG9yLCBEaXNjcmltaW5hdG9yVmFsdWUsIE9wdGlvbj4sXG4gIE9wdGlvbltcIl9pbnB1dFwiXVxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuXG4gICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCBkaXNjcmltaW5hdG9yID0gdGhpcy5kaXNjcmltaW5hdG9yO1xuICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZTogRGlzY3JpbWluYXRvclZhbHVlID0gY3R4LmRhdGFbZGlzY3JpbWluYXRvcl07XG4gICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zLmdldChkaXNjcmltaW5hdG9yVmFsdWUpO1xuXG4gICAgaWYgKCFvcHRpb24pIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yLFxuICAgICAgICBvcHRpb25zOiB0aGlzLnZhbGlkRGlzY3JpbWluYXRvclZhbHVlcyxcbiAgICAgICAgcGF0aDogW2Rpc2NyaW1pbmF0b3JdLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VTeW5jKHtcbiAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBkaXNjcmltaW5hdG9yKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYuZGlzY3JpbWluYXRvcjtcbiAgfVxuXG4gIGdldCB2YWxpZERpc2NyaW1pbmF0b3JWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5vcHRpb25zLmtleXMoKSk7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBkaXNjcmltaW5hdGVkIHVuaW9uIHNjaGVtYS4gSXRzIGJlaGF2aW91ciBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgbm9ybWFsIHoudW5pb24oKSBjb25zdHJ1Y3Rvci5cbiAgICogSG93ZXZlciwgaXQgb25seSBhbGxvd3MgYSB1bmlvbiBvZiBvYmplY3RzLCBhbGwgb2Ygd2hpY2ggbmVlZCB0byBzaGFyZSBhIGRpc2NyaW1pbmF0b3IgcHJvcGVydHkuIFRoaXMgcHJvcGVydHkgbXVzdFxuICAgKiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIG9iamVjdCBpbiB0aGUgdW5pb24uXG4gICAqIEBwYXJhbSBkaXNjcmltaW5hdG9yIHRoZSBuYW1lIG9mIHRoZSBkaXNjcmltaW5hdG9yIHByb3BlcnR5XG4gICAqIEBwYXJhbSB0eXBlcyBhbiBhcnJheSBvZiBvYmplY3Qgc2NoZW1hc1xuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlPFxuICAgIERpc2NyaW1pbmF0b3IgZXh0ZW5kcyBzdHJpbmcsXG4gICAgRGlzY3JpbWluYXRvclZhbHVlIGV4dGVuZHMgUHJpbWl0aXZlLFxuICAgIFR5cGVzIGV4dGVuZHMgW1xuICAgICAgWm9kRGlzY3JpbWluYXRlZFVuaW9uT3B0aW9uPERpc2NyaW1pbmF0b3IsIERpc2NyaW1pbmF0b3JWYWx1ZT4sXG4gICAgICBab2REaXNjcmltaW5hdGVkVW5pb25PcHRpb248RGlzY3JpbWluYXRvciwgRGlzY3JpbWluYXRvclZhbHVlPixcbiAgICAgIC4uLlpvZERpc2NyaW1pbmF0ZWRVbmlvbk9wdGlvbjxEaXNjcmltaW5hdG9yLCBEaXNjcmltaW5hdG9yVmFsdWU+W11cbiAgICBdXG4gID4oXG4gICAgZGlzY3JpbWluYXRvcjogRGlzY3JpbWluYXRvcixcbiAgICB0eXBlczogVHlwZXMsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZERpc2NyaW1pbmF0ZWRVbmlvbjxEaXNjcmltaW5hdG9yLCBEaXNjcmltaW5hdG9yVmFsdWUsIFR5cGVzW251bWJlcl0+IHtcbiAgICAvLyBHZXQgYWxsIHRoZSB2YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlc1xuICAgIGNvbnN0IG9wdGlvbnM6IE1hcDxEaXNjcmltaW5hdG9yVmFsdWUsIFR5cGVzW251bWJlcl0+ID0gbmV3IE1hcCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHR5cGVzLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgY29uc3QgZGlzY3JpbWluYXRvclZhbHVlID0gdHlwZS5zaGFwZVtkaXNjcmltaW5hdG9yXS52YWx1ZTtcbiAgICAgICAgb3B0aW9ucy5zZXQoZGlzY3JpbWluYXRvclZhbHVlLCB0eXBlKTtcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUaGUgZGlzY3JpbWluYXRvciB2YWx1ZSBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHRoZSBwcm92aWRlZCBzY2hlbWFzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQXNzZXJ0IHRoYXQgYWxsIHRoZSBkaXNjcmltaW5hdG9yIHZhbHVlcyBhcmUgdW5pcXVlXG4gICAgaWYgKG9wdGlvbnMuc2l6ZSAhPT0gdHlwZXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb21lIG9mIHRoZSBkaXNjcmltaW5hdG9yIHZhbHVlcyBhcmUgbm90IHVuaXF1ZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbjxcbiAgICAgIERpc2NyaW1pbmF0b3IsXG4gICAgICBEaXNjcmltaW5hdG9yVmFsdWUsXG4gICAgICBUeXBlc1tudW1iZXJdXG4gICAgPih7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixcbiAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICBvcHRpb25zLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RJbnRlcnNlY3Rpb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZEludGVyc2VjdGlvbkRlZjxcbiAgVCBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55LFxuICBVIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgbGVmdDogVDtcbiAgcmlnaHQ6IFU7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kSW50ZXJzZWN0aW9uO1xufVxuXG5mdW5jdGlvbiBtZXJnZVZhbHVlcyhcbiAgYTogYW55LFxuICBiOiBhbnlcbik6IHsgdmFsaWQ6IHRydWU7IGRhdGE6IGFueSB9IHwgeyB2YWxpZDogZmFsc2UgfSB7XG4gIGNvbnN0IGFUeXBlID0gZ2V0UGFyc2VkVHlwZShhKTtcbiAgY29uc3QgYlR5cGUgPSBnZXRQYXJzZWRUeXBlKGIpO1xuXG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgfSBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5vYmplY3QgJiYgYlR5cGUgPT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgY29uc3QgYktleXMgPSB1dGlsLm9iamVjdEtleXMoYik7XG4gICAgY29uc3Qgc2hhcmVkS2V5cyA9IHV0aWxcbiAgICAgIC5vYmplY3RLZXlzKGEpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGJLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEpO1xuXG4gICAgY29uc3QgbmV3T2JqOiBhbnkgPSB7IC4uLmEsIC4uLmIgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKSB7XG4gICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcbiAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBuZXdPYmpba2V5XSA9IHNoYXJlZFZhbHVlLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IG5ld09iaiB9O1xuICB9IGVsc2UgaWYgKGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGl0ZW1BID0gYVtpbmRleF07XG4gICAgICBjb25zdCBpdGVtQiA9IGJbaW5kZXhdO1xuICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhpdGVtQSwgaXRlbUIpO1xuXG4gICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBuZXdBcnJheS5wdXNoKHNoYXJlZFZhbHVlLmRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBuZXdBcnJheSB9O1xuICB9IGVsc2UgaWYgKFxuICAgIGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmRhdGUgJiZcbiAgICBiVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmXG4gICAgK2EgPT09ICtiXG4gICkge1xuICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFpvZEludGVyc2VjdGlvbjxcbiAgVCBleHRlbmRzIFpvZFR5cGVBbnksXG4gIFUgZXh0ZW5kcyBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZTxcbiAgVFtcIl9vdXRwdXRcIl0gJiBVW1wiX291dHB1dFwiXSxcbiAgWm9kSW50ZXJzZWN0aW9uRGVmPFQsIFU+LFxuICBUW1wiX2lucHV0XCJdICYgVVtcIl9pbnB1dFwiXVxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgY29uc3QgaGFuZGxlUGFyc2VkID0gKFxuICAgICAgcGFyc2VkTGVmdDogU3luY1BhcnNlUmV0dXJuVHlwZSxcbiAgICAgIHBhcnNlZFJpZ2h0OiBTeW5jUGFyc2VSZXR1cm5UeXBlXG4gICAgKTogU3luY1BhcnNlUmV0dXJuVHlwZTxUICYgVT4gPT4ge1xuICAgICAgaWYgKGlzQWJvcnRlZChwYXJzZWRMZWZ0KSB8fCBpc0Fib3J0ZWQocGFyc2VkUmlnaHQpKSB7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhwYXJzZWRMZWZ0LnZhbHVlLCBwYXJzZWRSaWdodC52YWx1ZSk7XG5cbiAgICAgIGlmICghbWVyZ2VkLnZhbGlkKSB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNEaXJ0eShwYXJzZWRMZWZ0KSB8fCBpc0RpcnR5KHBhcnNlZFJpZ2h0KSkge1xuICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBtZXJnZWQuZGF0YSBhcyBhbnkgfTtcbiAgICB9O1xuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMuX2RlZi5sZWZ0Ll9wYXJzZUFzeW5jKHtcbiAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSksXG4gICAgICAgIHRoaXMuX2RlZi5yaWdodC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pLFxuICAgICAgXSkudGhlbigoW2xlZnQsIHJpZ2h0XTogYW55KSA9PiBoYW5kbGVQYXJzZWQobGVmdCwgcmlnaHQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGhhbmRsZVBhcnNlZChcbiAgICAgICAgdGhpcy5fZGVmLmxlZnQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFpvZFR5cGVBbnksIFUgZXh0ZW5kcyBab2RUeXBlQW55PihcbiAgICBsZWZ0OiBULFxuICAgIHJpZ2h0OiBVLFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RJbnRlcnNlY3Rpb248VCwgVT4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kSW50ZXJzZWN0aW9uKHtcbiAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICByaWdodDogcmlnaHQsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEludGVyc2VjdGlvbixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZFR1cGxlICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IHR5cGUgWm9kVHVwbGVJdGVtcyA9IFtab2RUeXBlQW55LCAuLi5ab2RUeXBlQW55W11dO1xuZXhwb3J0IHR5cGUgQXNzZXJ0QXJyYXk8VD4gPSBUIGV4dGVuZHMgYW55W10gPyBUIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBPdXRwdXRUeXBlT2ZUdXBsZTxUIGV4dGVuZHMgWm9kVHVwbGVJdGVtcyB8IFtdPiA9IEFzc2VydEFycmF5PHtcbiAgW2sgaW4ga2V5b2YgVF06IFRba10gZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55PiA/IFRba11bXCJfb3V0cHV0XCJdIDogbmV2ZXI7XG59PjtcbmV4cG9ydCB0eXBlIE91dHB1dFR5cGVPZlR1cGxlV2l0aFJlc3Q8XG4gIFQgZXh0ZW5kcyBab2RUdXBsZUl0ZW1zIHwgW10sXG4gIFJlc3QgZXh0ZW5kcyBab2RUeXBlQW55IHwgbnVsbCA9IG51bGxcbj4gPSBSZXN0IGV4dGVuZHMgWm9kVHlwZUFueVxuICA/IFsuLi5PdXRwdXRUeXBlT2ZUdXBsZTxUPiwgLi4uUmVzdFtcIl9vdXRwdXRcIl1bXV1cbiAgOiBPdXRwdXRUeXBlT2ZUdXBsZTxUPjtcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlT2ZUdXBsZTxUIGV4dGVuZHMgWm9kVHVwbGVJdGVtcyB8IFtdPiA9IEFzc2VydEFycmF5PHtcbiAgW2sgaW4ga2V5b2YgVF06IFRba10gZXh0ZW5kcyBab2RUeXBlPGFueSwgYW55PiA/IFRba11bXCJfaW5wdXRcIl0gOiBuZXZlcjtcbn0+O1xuZXhwb3J0IHR5cGUgSW5wdXRUeXBlT2ZUdXBsZVdpdGhSZXN0PFxuICBUIGV4dGVuZHMgWm9kVHVwbGVJdGVtcyB8IFtdLFxuICBSZXN0IGV4dGVuZHMgWm9kVHlwZUFueSB8IG51bGwgPSBudWxsXG4+ID0gUmVzdCBleHRlbmRzIFpvZFR5cGVBbnlcbiAgPyBbLi4uSW5wdXRUeXBlT2ZUdXBsZTxUPiwgLi4uUmVzdFtcIl9pbnB1dFwiXVtdXVxuICA6IElucHV0VHlwZU9mVHVwbGU8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kVHVwbGVEZWY8XG4gIFQgZXh0ZW5kcyBab2RUdXBsZUl0ZW1zIHwgW10gPSBab2RUdXBsZUl0ZW1zLFxuICBSZXN0IGV4dGVuZHMgWm9kVHlwZUFueSB8IG51bGwgPSBudWxsXG4+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGl0ZW1zOiBUO1xuICByZXN0OiBSZXN0O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kVHVwbGU8XG4gIFQgZXh0ZW5kcyBbWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXSB8IFtdID0gW1pvZFR5cGVBbnksIC4uLlpvZFR5cGVBbnlbXV0sXG4gIFJlc3QgZXh0ZW5kcyBab2RUeXBlQW55IHwgbnVsbCA9IG51bGxcbj4gZXh0ZW5kcyBab2RUeXBlPFxuICBPdXRwdXRUeXBlT2ZUdXBsZVdpdGhSZXN0PFQsIFJlc3Q+LFxuICBab2RUdXBsZURlZjxULCBSZXN0PixcbiAgSW5wdXRUeXBlT2ZUdXBsZVdpdGhSZXN0PFQsIFJlc3Q+XG4+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5hcnJheSxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAoY3R4LmRhdGEubGVuZ3RoIDwgdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCkge1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgIG1pbmltdW06IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3QgPSB0aGlzLl9kZWYucmVzdDtcblxuICAgIGlmICghcmVzdCAmJiBjdHguZGF0YS5sZW5ndGggPiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgIG1heGltdW06IHRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsXG4gICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgfSk7XG4gICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtcyA9IChjdHguZGF0YSBhcyBhbnlbXSlcbiAgICAgIC5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzY2hlbWEgPSB0aGlzLl9kZWYuaXRlbXNbaXRlbUluZGV4XSB8fCB0aGlzLl9kZWYucmVzdDtcbiAgICAgICAgaWYgKCFzY2hlbWEpIHJldHVybiBudWxsIGFzIGFueSBhcyBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT47XG4gICAgICAgIHJldHVybiBzY2hlbWEuX3BhcnNlKFxuICAgICAgICAgIG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaXRlbUluZGV4KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoKHgpID0+ICEheCk7IC8vIGZpbHRlciBudWxsc1xuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChpdGVtcykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VBcnJheShzdGF0dXMsIHJlc3VsdHMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgaXRlbXMgYXMgU3luY1BhcnNlUmV0dXJuVHlwZVtdKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5pdGVtcztcbiAgfVxuXG4gIHJlc3Q8UmVzdCBleHRlbmRzIFpvZFR5cGVBbnk+KHJlc3Q6IFJlc3QpOiBab2RUdXBsZTxULCBSZXN0PiB7XG4gICAgcmV0dXJuIG5ldyBab2RUdXBsZSh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICByZXN0LFxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgW1pvZFR5cGVBbnksIC4uLlpvZFR5cGVBbnlbXV0gfCBbXT4oXG4gICAgc2NoZW1hczogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kVHVwbGU8VCwgbnVsbD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgaXRlbXM6IHNjaGVtYXMsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlLFxuICAgICAgcmVzdDogbnVsbCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZFJlY29yZCAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kUmVjb3JkRGVmPFxuICBLZXkgZXh0ZW5kcyBLZXlTY2hlbWEgPSBab2RTdHJpbmcsXG4gIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVUeXBlOiBWYWx1ZTtcbiAga2V5VHlwZTogS2V5O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFJlY29yZDtcbn1cblxudHlwZSBLZXlTY2hlbWEgPSBab2RUeXBlPHN0cmluZyB8IG51bWJlciB8IHN5bWJvbCwgYW55LCBhbnk+O1xudHlwZSBSZWNvcmRUeXBlPEsgZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBzeW1ib2wsIFY+ID0gW3N0cmluZ10gZXh0ZW5kcyBbS11cbiAgPyBSZWNvcmQ8SywgVj5cbiAgOiBbbnVtYmVyXSBleHRlbmRzIFtLXVxuICA/IFJlY29yZDxLLCBWPlxuICA6IFtzeW1ib2xdIGV4dGVuZHMgW0tdXG4gID8gUmVjb3JkPEssIFY+XG4gIDogUGFydGlhbDxSZWNvcmQ8SywgVj4+O1xuZXhwb3J0IGNsYXNzIFpvZFJlY29yZDxcbiAgS2V5IGV4dGVuZHMgS2V5U2NoZW1hID0gWm9kU3RyaW5nLFxuICBWYWx1ZSBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZTxcbiAgUmVjb3JkVHlwZTxLZXlbXCJfb3V0cHV0XCJdLCBWYWx1ZVtcIl9vdXRwdXRcIl0+LFxuICBab2RSZWNvcmREZWY8S2V5LCBWYWx1ZT4sXG4gIFJlY29yZFR5cGU8S2V5W1wiX2lucHV0XCJdLCBWYWx1ZVtcIl9pbnB1dFwiXT5cbj4ge1xuICBnZXQga2V5U2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYua2V5VHlwZTtcbiAgfVxuICBnZXQgdmFsdWVTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gIH1cbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGNvbnN0IHBhaXJzOiB7XG4gICAgICBrZXk6IFBhcnNlUmV0dXJuVHlwZTxhbnk+O1xuICAgICAgdmFsdWU6IFBhcnNlUmV0dXJuVHlwZTxhbnk+O1xuICAgIH1bXSA9IFtdO1xuXG4gICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHRoaXMuX2RlZi52YWx1ZVR5cGU7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdHguZGF0YSkge1xuICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgIGtleToga2V5VHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGtleSwgY3R4LnBhdGgsIGtleSkpLFxuICAgICAgICB2YWx1ZTogdmFsdWVUeXBlLl9wYXJzZShcbiAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgY3R4LmRhdGFba2V5XSwgY3R4LnBhdGgsIGtleSlcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RBc3luYyhzdGF0dXMsIHBhaXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzIGFzIGFueSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlPFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgdmFsdWVUeXBlOiBWYWx1ZSxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kUmVjb3JkPFpvZFN0cmluZywgVmFsdWU+O1xuICBzdGF0aWMgY3JlYXRlPEtleXMgZXh0ZW5kcyBLZXlTY2hlbWEsIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAga2V5U2NoZW1hOiBLZXlzLFxuICAgIHZhbHVlVHlwZTogVmFsdWUsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZFJlY29yZDxLZXlzLCBWYWx1ZT47XG4gIHN0YXRpYyBjcmVhdGUoZmlyc3Q6IGFueSwgc2Vjb25kPzogYW55LCB0aGlyZD86IGFueSk6IFpvZFJlY29yZDxhbnksIGFueT4ge1xuICAgIGlmIChzZWNvbmQgaW5zdGFuY2VvZiBab2RUeXBlKSB7XG4gICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgIGtleVR5cGU6IGZpcnN0LFxuICAgICAgICB2YWx1ZVR5cGU6IHNlY29uZCxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcmQpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBab2RSZWNvcmQoe1xuICAgICAga2V5VHlwZTogWm9kU3RyaW5nLmNyZWF0ZSgpLFxuICAgICAgdmFsdWVUeXBlOiBmaXJzdCxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVjb3JkLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhzZWNvbmQpLFxuICAgIH0pO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RNYXAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZE1hcERlZjxcbiAgS2V5IGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksXG4gIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVUeXBlOiBWYWx1ZTtcbiAga2V5VHlwZTogS2V5O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE1hcDtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZE1hcDxcbiAgS2V5IGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnksXG4gIFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlPFxuICBNYXA8S2V5W1wiX291dHB1dFwiXSwgVmFsdWVbXCJfb3V0cHV0XCJdPixcbiAgWm9kTWFwRGVmPEtleSwgVmFsdWU+LFxuICBNYXA8S2V5W1wiX2lucHV0XCJdLCBWYWx1ZVtcIl9pbnB1dFwiXT5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5tYXApIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5tYXAsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgIGNvbnN0IHZhbHVlVHlwZSA9IHRoaXMuX2RlZi52YWx1ZVR5cGU7XG5cbiAgICBjb25zdCBwYWlycyA9IFsuLi4oY3R4LmRhdGEgYXMgTWFwPHVua25vd24sIHVua25vd24+KS5lbnRyaWVzKCldLm1hcChcbiAgICAgIChba2V5LCB2YWx1ZV0sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShcbiAgICAgICAgICAgIG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBrZXksIGN0eC5wYXRoLCBbaW5kZXgsIFwia2V5XCJdKVxuICAgICAgICAgICksXG4gICAgICAgICAgdmFsdWU6IHZhbHVlVHlwZS5fcGFyc2UoXG4gICAgICAgICAgICBuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgdmFsdWUsIGN0eC5wYXRoLCBbaW5kZXgsIFwidmFsdWVcIl0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgIGNvbnN0IGZpbmFsTWFwID0gbmV3IE1hcCgpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHBhaXIudmFsdWU7XG4gICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJkaXJ0eVwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmaW5hbE1hcC5zZXQoa2V5LnZhbHVlLCB2YWx1ZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZpbmFsTWFwID0gbmV3IE1hcCgpO1xuICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHBhaXIua2V5IGFzIFN5bmNQYXJzZVJldHVyblR5cGU7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcGFpci52YWx1ZSBhcyBTeW5jUGFyc2VSZXR1cm5UeXBlO1xuICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImRpcnR5XCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZpbmFsTWFwLnNldChrZXkudmFsdWUsIHZhbHVlLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogZmluYWxNYXAgfTtcbiAgICB9XG4gIH1cbiAgc3RhdGljIGNyZWF0ZSA9IDxcbiAgICBLZXkgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueSxcbiAgICBWYWx1ZSBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55XG4gID4oXG4gICAga2V5VHlwZTogS2V5LFxuICAgIHZhbHVlVHlwZTogVmFsdWUsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZE1hcDxLZXksIFZhbHVlPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RNYXAoe1xuICAgICAgdmFsdWVUeXBlLFxuICAgICAga2V5VHlwZSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTWFwLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kU2V0ICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RTZXREZWY8VmFsdWUgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVUeXBlOiBWYWx1ZTtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTZXQ7XG4gIG1pblNpemU6IHsgdmFsdWU6IG51bWJlcjsgbWVzc2FnZT86IHN0cmluZyB9IHwgbnVsbDtcbiAgbWF4U2l6ZTogeyB2YWx1ZTogbnVtYmVyOyBtZXNzYWdlPzogc3RyaW5nIH0gfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kU2V0PFZhbHVlIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+IGV4dGVuZHMgWm9kVHlwZTxcbiAgU2V0PFZhbHVlW1wiX291dHB1dFwiXT4sXG4gIFpvZFNldERlZjxWYWx1ZT4sXG4gIFNldDxWYWx1ZVtcIl9pbnB1dFwiXT5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zZXQpIHtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5zZXQsXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmID0gdGhpcy5fZGVmO1xuXG4gICAgaWYgKGRlZi5taW5TaXplICE9PSBudWxsKSB7XG4gICAgICBpZiAoY3R4LmRhdGEuc2l6ZSA8IGRlZi5taW5TaXplLnZhbHVlKSB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgbWluaW11bTogZGVmLm1pblNpemUudmFsdWUsXG4gICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgbWVzc2FnZTogZGVmLm1pblNpemUubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWYubWF4U2l6ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKGN0eC5kYXRhLnNpemUgPiBkZWYubWF4U2l6ZS52YWx1ZSkge1xuICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4U2l6ZS52YWx1ZSxcbiAgICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICBtZXNzYWdlOiBkZWYubWF4U2l6ZS5tZXNzYWdlLFxuICAgICAgICB9KTtcbiAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcblxuICAgIGZ1bmN0aW9uIGZpbmFsaXplU2V0KGVsZW1lbnRzOiBTeW5jUGFyc2VSZXR1cm5UeXBlPGFueT5bXSkge1xuICAgICAgY29uc3QgcGFyc2VkU2V0ID0gbmV3IFNldCgpO1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgICBpZiAoZWxlbWVudC5zdGF0dXMgPT09IFwiZGlydHlcIikgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgIHBhcnNlZFNldC5hZGQoZWxlbWVudC52YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IHBhcnNlZFNldCB9O1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLihjdHguZGF0YSBhcyBTZXQ8dW5rbm93bj4pLnZhbHVlcygpXS5tYXAoKGl0ZW0sIGkpID0+XG4gICAgICB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpXG4gICAgKTtcblxuICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwoZWxlbWVudHMpLnRoZW4oKGVsZW1lbnRzKSA9PiBmaW5hbGl6ZVNldChlbGVtZW50cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmluYWxpemVTZXQoZWxlbWVudHMgYXMgU3luY1BhcnNlUmV0dXJuVHlwZVtdKTtcbiAgICB9XG4gIH1cblxuICBtaW4obWluU2l6ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBtaW5TaXplOiB7IHZhbHVlOiBtaW5TaXplLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBtYXgobWF4U2l6ZTogbnVtYmVyLCBtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiB0aGlzIHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBtYXhTaXplOiB7IHZhbHVlOiBtYXhTaXplLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICB9KSBhcyBhbnk7XG4gIH1cblxuICBzaXplKHNpemU6IG51bWJlciwgbWVzc2FnZT86IGVycm9yVXRpbC5FcnJNZXNzYWdlKTogdGhpcyB7XG4gICAgcmV0dXJuIHRoaXMubWluKHNpemUsIG1lc3NhZ2UpLm1heChzaXplLCBtZXNzYWdlKSBhcyBhbnk7XG4gIH1cblxuICBub25lbXB0eShtZXNzYWdlPzogZXJyb3JVdGlsLkVyck1lc3NhZ2UpOiBab2RTZXQ8VmFsdWU+IHtcbiAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSkgYXMgYW55O1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxWYWx1ZSBleHRlbmRzIFpvZFR5cGVBbnkgPSBab2RUeXBlQW55PihcbiAgICB2YWx1ZVR5cGU6IFZhbHVlLFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RTZXQ8VmFsdWU+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFNldCh7XG4gICAgICB2YWx1ZVR5cGUsXG4gICAgICBtaW5TaXplOiBudWxsLFxuICAgICAgbWF4U2l6ZTogbnVsbCxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kU2V0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kRnVuY3Rpb24gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZEZ1bmN0aW9uRGVmPFxuICBBcmdzIGV4dGVuZHMgWm9kVHVwbGU8YW55LCBhbnk+ID0gWm9kVHVwbGU8YW55LCBhbnk+LFxuICBSZXR1cm5zIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnlcbj4gZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgYXJnczogQXJncztcbiAgcmV0dXJuczogUmV0dXJucztcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RGdW5jdGlvbjtcbn1cblxuZXhwb3J0IHR5cGUgT3V0ZXJUeXBlT2ZGdW5jdGlvbjxcbiAgQXJncyBleHRlbmRzIFpvZFR1cGxlPGFueSwgYW55PixcbiAgUmV0dXJucyBleHRlbmRzIFpvZFR5cGVBbnlcbj4gPSBBcmdzW1wiX2lucHV0XCJdIGV4dGVuZHMgQXJyYXk8YW55PlxuICA/ICguLi5hcmdzOiBBcmdzW1wiX2lucHV0XCJdKSA9PiBSZXR1cm5zW1wiX291dHB1dFwiXVxuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBJbm5lclR5cGVPZkZ1bmN0aW9uPFxuICBBcmdzIGV4dGVuZHMgWm9kVHVwbGU8YW55LCBhbnk+LFxuICBSZXR1cm5zIGV4dGVuZHMgWm9kVHlwZUFueVxuPiA9IEFyZ3NbXCJfb3V0cHV0XCJdIGV4dGVuZHMgQXJyYXk8YW55PlxuICA/ICguLi5hcmdzOiBBcmdzW1wiX291dHB1dFwiXSkgPT4gUmV0dXJuc1tcIl9pbnB1dFwiXVxuICA6IG5ldmVyO1xuXG5leHBvcnQgY2xhc3MgWm9kRnVuY3Rpb248XG4gIEFyZ3MgZXh0ZW5kcyBab2RUdXBsZTxhbnksIGFueT4sXG4gIFJldHVybnMgZXh0ZW5kcyBab2RUeXBlQW55XG4+IGV4dGVuZHMgWm9kVHlwZTxcbiAgT3V0ZXJUeXBlT2ZGdW5jdGlvbjxBcmdzLCBSZXR1cm5zPixcbiAgWm9kRnVuY3Rpb25EZWY8QXJncywgUmV0dXJucz4sXG4gIElubmVyVHlwZU9mRnVuY3Rpb248QXJncywgUmV0dXJucz5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8YW55PiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uKSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZnVuY3Rpb24sXG4gICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUFyZ3NJc3N1ZShhcmdzOiBhbnksIGVycm9yOiBab2RFcnJvcik6IFpvZElzc3VlIHtcbiAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICBkYXRhOiBhcmdzLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgZXJyb3JNYXBzOiBbXG4gICAgICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLFxuICAgICAgICAgIGdldEVycm9yTWFwKCksXG4gICAgICAgICAgZGVmYXVsdEVycm9yTWFwLFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSBhcyBab2RFcnJvck1hcFtdLFxuICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHMsXG4gICAgICAgICAgYXJndW1lbnRzRXJyb3I6IGVycm9yLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVJldHVybnNJc3N1ZShyZXR1cm5zOiBhbnksIGVycm9yOiBab2RFcnJvcik6IFpvZElzc3VlIHtcbiAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICBkYXRhOiByZXR1cm5zLFxuICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgZXJyb3JNYXBzOiBbXG4gICAgICAgICAgY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLFxuICAgICAgICAgIGdldEVycm9yTWFwKCksXG4gICAgICAgICAgZGVmYXVsdEVycm9yTWFwLFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSBhcyBab2RFcnJvck1hcFtdLFxuICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9yZXR1cm5fdHlwZSxcbiAgICAgICAgICByZXR1cm5UeXBlRXJyb3I6IGVycm9yLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zID0geyBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAgfTtcbiAgICBjb25zdCBmbiA9IGN0eC5kYXRhO1xuXG4gICAgaWYgKHRoaXMuX2RlZi5yZXR1cm5zIGluc3RhbmNlb2YgWm9kUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIE9LKGFzeW5jICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihbXSk7XG4gICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBhd2FpdCB0aGlzLl9kZWYuYXJnc1xuICAgICAgICAgIC5wYXJzZUFzeW5jKGFyZ3MsIHBhcmFtcylcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VBcmdzSXNzdWUoYXJncywgZSkpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKC4uLihwYXJzZWRBcmdzIGFzIGFueSkpO1xuICAgICAgICBjb25zdCBwYXJzZWRSZXR1cm5zID0gYXdhaXQgKFxuICAgICAgICAgIHRoaXMuX2RlZi5yZXR1cm5zIGFzIFpvZFByb21pc2U8Wm9kVHlwZUFueT5cbiAgICAgICAgKS5fZGVmLnR5cGVcbiAgICAgICAgICAucGFyc2VBc3luYyhyZXN1bHQsIHBhcmFtcylcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIGVycm9yLmFkZElzc3VlKG1ha2VSZXR1cm5zSXNzdWUocmVzdWx0LCBlKSk7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhcnNlZFJldHVybnM7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIE9LKCguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBwYXJzZWRBcmdzID0gdGhpcy5fZGVmLmFyZ3Muc2FmZVBhcnNlKGFyZ3MsIHBhcmFtcyk7XG4gICAgICAgIGlmICghcGFyc2VkQXJncy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlQXJnc0lzc3VlKGFyZ3MsIHBhcnNlZEFyZ3MuZXJyb3IpXSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4oLi4uKHBhcnNlZEFyZ3MuZGF0YSBhcyBhbnkpKTtcbiAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IHRoaXMuX2RlZi5yZXR1cm5zLnNhZmVQYXJzZShyZXN1bHQsIHBhcmFtcyk7XG4gICAgICAgIGlmICghcGFyc2VkUmV0dXJucy5zdWNjZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlUmV0dXJuc0lzc3VlKHJlc3VsdCwgcGFyc2VkUmV0dXJucy5lcnJvcildKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VkUmV0dXJucy5kYXRhO1xuICAgICAgfSkgYXMgYW55O1xuICAgIH1cbiAgfVxuXG4gIHBhcmFtZXRlcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5hcmdzO1xuICB9XG5cbiAgcmV0dXJuVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLnJldHVybnM7XG4gIH1cblxuICBhcmdzPEl0ZW1zIGV4dGVuZHMgUGFyYW1ldGVyczx0eXBlb2YgWm9kVHVwbGVbXCJjcmVhdGVcIl0+WzBdPihcbiAgICAuLi5pdGVtczogSXRlbXNcbiAgKTogWm9kRnVuY3Rpb248Wm9kVHVwbGU8SXRlbXMsIFpvZFVua25vd24+LCBSZXR1cm5zPiB7XG4gICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAuLi50aGlzLl9kZWYsXG4gICAgICBhcmdzOiBab2RUdXBsZS5jcmVhdGUoaXRlbXMpLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkgYXMgYW55LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuczxOZXdSZXR1cm5UeXBlIGV4dGVuZHMgWm9kVHlwZTxhbnksIGFueT4+KFxuICAgIHJldHVyblR5cGU6IE5ld1JldHVyblR5cGVcbiAgKTogWm9kRnVuY3Rpb248QXJncywgTmV3UmV0dXJuVHlwZT4ge1xuICAgIHJldHVybiBuZXcgWm9kRnVuY3Rpb24oe1xuICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgcmV0dXJuczogcmV0dXJuVHlwZSxcbiAgICB9KTtcbiAgfVxuXG4gIGltcGxlbWVudDxGIGV4dGVuZHMgSW5uZXJUeXBlT2ZGdW5jdGlvbjxBcmdzLCBSZXR1cm5zPj4oXG4gICAgZnVuYzogRlxuICApOiBSZXR1cm5UeXBlPEY+IGV4dGVuZHMgUmV0dXJuc1tcIl9vdXRwdXRcIl1cbiAgICA/ICguLi5hcmdzOiBBcmdzW1wiX2lucHV0XCJdKSA9PiBSZXR1cm5UeXBlPEY+XG4gICAgOiBPdXRlclR5cGVPZkZ1bmN0aW9uPEFyZ3MsIFJldHVybnM+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICByZXR1cm4gdmFsaWRhdGVkRnVuYyBhcyBhbnk7XG4gIH1cblxuICBzdHJpY3RJbXBsZW1lbnQoXG4gICAgZnVuYzogSW5uZXJUeXBlT2ZGdW5jdGlvbjxBcmdzLCBSZXR1cm5zPlxuICApOiBJbm5lclR5cGVPZkZ1bmN0aW9uPEFyZ3MsIFJldHVybnM+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICByZXR1cm4gdmFsaWRhdGVkRnVuYyBhcyBhbnk7XG4gIH1cblxuICB2YWxpZGF0ZSA9IHRoaXMuaW1wbGVtZW50O1xuXG4gIHN0YXRpYyBjcmVhdGUgPSA8XG4gICAgVCBleHRlbmRzIFpvZFR1cGxlPGFueSwgYW55PiA9IFpvZFR1cGxlPFtdLCBab2RVbmtub3duPixcbiAgICBVIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFVua25vd25cbiAgPihcbiAgICBhcmdzPzogVCxcbiAgICByZXR1cm5zPzogVSxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kRnVuY3Rpb248VCwgVT4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRnVuY3Rpb24oe1xuICAgICAgYXJnczogKGFyZ3NcbiAgICAgICAgPyBhcmdzLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSlcbiAgICAgICAgOiBab2RUdXBsZS5jcmVhdGUoW10pLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkpIGFzIGFueSxcbiAgICAgIHJldHVybnM6IHJldHVybnMgfHwgWm9kVW5rbm93bi5jcmVhdGUoKSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRnVuY3Rpb24sXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSkgYXMgYW55O1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTGF6eSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTGF6eURlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+XG4gIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGdldHRlcjogKCkgPT4gVDtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMYXp5O1xufVxuXG5leHBvcnQgY2xhc3MgWm9kTGF6eTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBvdXRwdXQ8VD4sXG4gIFpvZExhenlEZWY8VD4sXG4gIGlucHV0PFQ+XG4+IHtcbiAgZ2V0IHNjaGVtYSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpO1xuICB9XG5cbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgY29uc3QgbGF6eVNjaGVtYSA9IHRoaXMuX2RlZi5nZXR0ZXIoKTtcbiAgICByZXR1cm4gbGF6eVNjaGVtYS5fcGFyc2UoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgZ2V0dGVyOiAoKSA9PiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RMYXp5PFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZExhenkoe1xuICAgICAgZ2V0dGVyOiBnZXR0ZXIsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExhenksXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RMaXRlcmFsICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RMaXRlcmFsRGVmPFQgPSBhbnk+IGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHZhbHVlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWw7XG59XG5cbmV4cG9ydCBjbGFzcyBab2RMaXRlcmFsPFQ+IGV4dGVuZHMgWm9kVHlwZTxULCBab2RMaXRlcmFsRGVmPFQ+PiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGlmIChpbnB1dC5kYXRhICE9PSB0aGlzLl9kZWYudmFsdWUpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsLFxuICAgICAgICBleHBlY3RlZDogdGhpcy5fZGVmLnZhbHVlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFByaW1pdGl2ZT4oXG4gICAgdmFsdWU6IFQsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZExpdGVyYWw8VD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTGl0ZXJhbCh7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWwsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RFbnVtICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IHR5cGUgQXJyYXlLZXlzID0ga2V5b2YgYW55W107XG5leHBvcnQgdHlwZSBJbmRpY2VzPFQ+ID0gRXhjbHVkZTxrZXlvZiBULCBBcnJheUtleXM+O1xuXG50eXBlIEVudW1WYWx1ZXMgPSBbc3RyaW5nLCAuLi5zdHJpbmdbXV07XG5cbnR5cGUgVmFsdWVzPFQgZXh0ZW5kcyBFbnVtVmFsdWVzPiA9IHtcbiAgW2sgaW4gVFtudW1iZXJdXTogaztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kRW51bURlZjxUIGV4dGVuZHMgRW51bVZhbHVlcyA9IEVudW1WYWx1ZXM+XG4gIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHZhbHVlczogVDtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFbnVtO1xufVxuXG50eXBlIFdyaXRlYWJsZTxUPiA9IHsgLXJlYWRvbmx5IFtQIGluIGtleW9mIFRdOiBUW1BdIH07XG5cbmZ1bmN0aW9uIGNyZWF0ZVpvZEVudW08VSBleHRlbmRzIHN0cmluZywgVCBleHRlbmRzIFJlYWRvbmx5PFtVLCAuLi5VW11dPj4oXG4gIHZhbHVlczogVCxcbiAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4pOiBab2RFbnVtPFdyaXRlYWJsZTxUPj47XG5mdW5jdGlvbiBjcmVhdGVab2RFbnVtPFUgZXh0ZW5kcyBzdHJpbmcsIFQgZXh0ZW5kcyBbVSwgLi4uVVtdXT4oXG4gIHZhbHVlczogVCxcbiAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4pOiBab2RFbnVtPFQ+O1xuZnVuY3Rpb24gY3JlYXRlWm9kRW51bSh2YWx1ZXM6IGFueSwgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKSB7XG4gIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgdmFsdWVzOiB2YWx1ZXMgYXMgYW55LFxuICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRW51bSxcbiAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gIH0pIGFzIGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFpvZEVudW08VCBleHRlbmRzIFtzdHJpbmcsIC4uLnN0cmluZ1tdXT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW251bWJlcl0sXG4gIFpvZEVudW1EZWY8VD5cbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBpZiAodHlwZW9mIGlucHV0LmRhdGEgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdGhpcy5fZGVmLnZhbHVlcztcbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICBleHBlY3RlZDogdXRpbC5qb2luVmFsdWVzKGV4cGVjdGVkVmFsdWVzKSBhcyBcInN0cmluZ1wiLFxuICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9kZWYudmFsdWVzLmluZGV4T2YoaW5wdXQuZGF0YSkgPT09IC0xKSB7XG4gICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IHRoaXMuX2RlZi52YWx1ZXM7XG5cbiAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICByZWNlaXZlZDogY3R4LmRhdGEsXG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgIG9wdGlvbnM6IGV4cGVjdGVkVmFsdWVzLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG4gICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZXM7XG4gIH1cblxuICBnZXQgZW51bSgpOiBWYWx1ZXM8VD4ge1xuICAgIGNvbnN0IGVudW1WYWx1ZXM6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuX2RlZi52YWx1ZXMpIHtcbiAgICAgIGVudW1WYWx1ZXNbdmFsXSA9IHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGVudW1WYWx1ZXMgYXMgYW55O1xuICB9XG5cbiAgZ2V0IFZhbHVlcygpOiBWYWx1ZXM8VD4ge1xuICAgIGNvbnN0IGVudW1WYWx1ZXM6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgdmFsIG9mIHRoaXMuX2RlZi52YWx1ZXMpIHtcbiAgICAgIGVudW1WYWx1ZXNbdmFsXSA9IHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIGVudW1WYWx1ZXMgYXMgYW55O1xuICB9XG5cbiAgZ2V0IEVudW0oKTogVmFsdWVzPFQ+IHtcbiAgICBjb25zdCBlbnVtVmFsdWVzOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgfVxuICAgIHJldHVybiBlbnVtVmFsdWVzIGFzIGFueTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSBjcmVhdGVab2RFbnVtO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTmF0aXZlRW51bSAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTmF0aXZlRW51bURlZjxUIGV4dGVuZHMgRW51bUxpa2UgPSBFbnVtTGlrZT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdmFsdWVzOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hdGl2ZUVudW07XG59XG5cbnR5cGUgRW51bUxpa2UgPSB7IFtrOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXI7IFtudTogbnVtYmVyXTogc3RyaW5nIH07XG5cbmV4cG9ydCBjbGFzcyBab2ROYXRpdmVFbnVtPFQgZXh0ZW5kcyBFbnVtTGlrZT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW2tleW9mIFRdLFxuICBab2ROYXRpdmVFbnVtRGVmPFQ+XG4+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPFRba2V5b2YgVF0+IHtcbiAgICBjb25zdCBuYXRpdmVFbnVtVmFsdWVzID0gdXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcyk7XG5cbiAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgaWYgKFxuICAgICAgY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nICYmXG4gICAgICBjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5udW1iZXJcbiAgICApIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0gdXRpbC5vYmplY3RWYWx1ZXMobmF0aXZlRW51bVZhbHVlcyk7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgZXhwZWN0ZWQ6IHV0aWwuam9pblZhbHVlcyhleHBlY3RlZFZhbHVlcykgYXMgXCJzdHJpbmdcIixcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBpZiAobmF0aXZlRW51bVZhbHVlcy5pbmRleE9mKGlucHV0LmRhdGEpID09PSAtMSkge1xuICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcblxuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIHJlY2VpdmVkOiBjdHguZGF0YSxcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfZW51bV92YWx1ZSxcbiAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICByZXR1cm4gT0soaW5wdXQuZGF0YSBhcyBhbnkpO1xuICB9XG5cbiAgZ2V0IGVudW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZXM7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gPFQgZXh0ZW5kcyBFbnVtTGlrZT4oXG4gICAgdmFsdWVzOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2ROYXRpdmVFbnVtPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hdGl2ZUVudW0oe1xuICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hdGl2ZUVudW0sXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2RQcm9taXNlICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGludGVyZmFjZSBab2RQcm9taXNlRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgdHlwZTogVDtcbiAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kUHJvbWlzZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBQcm9taXNlPFRbXCJfb3V0cHV0XCJdPixcbiAgWm9kUHJvbWlzZURlZjxUPixcbiAgUHJvbWlzZTxUW1wiX2lucHV0XCJdPlxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgIGlmIChcbiAgICAgIGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnByb21pc2UgJiZcbiAgICAgIGN0eC5jb21tb24uYXN5bmMgPT09IGZhbHNlXG4gICAgKSB7XG4gICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUucHJvbWlzZSxcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNpZmllZCA9XG4gICAgICBjdHgucGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5wcm9taXNlXG4gICAgICAgID8gY3R4LmRhdGFcbiAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoY3R4LmRhdGEpO1xuXG4gICAgcmV0dXJuIE9LKFxuICAgICAgcHJvbWlzaWZpZWQudGhlbigoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKGRhdGEsIHtcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgc2NoZW1hOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2RQcm9taXNlPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFByb21pc2Uoe1xuICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQcm9taXNlLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICBab2RFZmZlY3RzICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCB0eXBlIFJlZmluZW1lbnQ8VD4gPSAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTtcbmV4cG9ydCB0eXBlIFN1cGVyUmVmaW5lbWVudDxUPiA9IChhcmc6IFQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gdm9pZDtcblxuZXhwb3J0IHR5cGUgUmVmaW5lbWVudEVmZmVjdDxUPiA9IHtcbiAgdHlwZTogXCJyZWZpbmVtZW50XCI7XG4gIHJlZmluZW1lbnQ6IChhcmc6IFQsIGN0eDogUmVmaW5lbWVudEN0eCkgPT4gYW55O1xufTtcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybUVmZmVjdDxUPiA9IHtcbiAgdHlwZTogXCJ0cmFuc2Zvcm1cIjtcbiAgdHJhbnNmb3JtOiAoYXJnOiBULCBjdHg6IFJlZmluZW1lbnRDdHgpID0+IGFueTtcbn07XG5leHBvcnQgdHlwZSBQcmVwcm9jZXNzRWZmZWN0PFQ+ID0ge1xuICB0eXBlOiBcInByZXByb2Nlc3NcIjtcbiAgdHJhbnNmb3JtOiAoYXJnOiBUKSA9PiBhbnk7XG59O1xuZXhwb3J0IHR5cGUgRWZmZWN0PFQ+ID1cbiAgfCBSZWZpbmVtZW50RWZmZWN0PFQ+XG4gIHwgVHJhbnNmb3JtRWZmZWN0PFQ+XG4gIHwgUHJlcHJvY2Vzc0VmZmVjdDxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBab2RFZmZlY3RzRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgc2NoZW1hOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHM7XG4gIGVmZmVjdDogRWZmZWN0PGFueT47XG59XG5cbmV4cG9ydCBjbGFzcyBab2RFZmZlY3RzPFxuICBUIGV4dGVuZHMgWm9kVHlwZUFueSxcbiAgT3V0cHV0ID0gVFtcIl9vdXRwdXRcIl0sXG4gIElucHV0ID0gVFtcIl9pbnB1dFwiXVxuPiBleHRlbmRzIFpvZFR5cGU8T3V0cHV0LCBab2RFZmZlY3RzRGVmPFQ+LCBJbnB1dD4ge1xuICBpbm5lclR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWE7XG4gIH1cblxuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuXG4gICAgY29uc3QgZWZmZWN0ID0gdGhpcy5fZGVmLmVmZmVjdCB8fCBudWxsO1xuXG4gICAgaWYgKGVmZmVjdC50eXBlID09PSBcInByZXByb2Nlc3NcIikge1xuICAgICAgY29uc3QgcHJvY2Vzc2VkID0gZWZmZWN0LnRyYW5zZm9ybShjdHguZGF0YSk7XG5cbiAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvY2Vzc2VkKS50aGVuKChwcm9jZXNzZWQpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWQsXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe1xuICAgICAgICAgIGRhdGE6IHByb2Nlc3NlZCxcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tDdHg6IFJlZmluZW1lbnRDdHggPSB7XG4gICAgICBhZGRJc3N1ZTogKGFyZzogSXNzdWVEYXRhKSA9PiB7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwgYXJnKTtcbiAgICAgICAgaWYgKGFyZy5mYXRhbCkge1xuICAgICAgICAgIHN0YXR1cy5hYm9ydCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZ2V0IHBhdGgoKSB7XG4gICAgICAgIHJldHVybiBjdHgucGF0aDtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNoZWNrQ3R4LmFkZElzc3VlID0gY2hlY2tDdHguYWRkSXNzdWUuYmluZChjaGVja0N0eCk7XG4gICAgaWYgKGVmZmVjdC50eXBlID09PSBcInJlZmluZW1lbnRcIikge1xuICAgICAgY29uc3QgZXhlY3V0ZVJlZmluZW1lbnQgPSAoXG4gICAgICAgIGFjYzogdW5rbm93blxuICAgICAgICAvLyBlZmZlY3Q6IFJlZmluZW1lbnRFZmZlY3Q8YW55PlxuICAgICAgKTogYW55ID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnJlZmluZW1lbnQoYWNjLCBjaGVja0N0eCk7XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfTtcblxuICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtcbiAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSBzdGF0dXMuZGlydHkoKTtcblxuICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgaWdub3JlZFxuICAgICAgICBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSk7XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5uZXIudmFsdWUgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hXG4gICAgICAgICAgLl9wYXJzZUFzeW5jKHsgZGF0YTogY3R4LmRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KVxuICAgICAgICAgIC50aGVuKChpbm5lcikgPT4ge1xuICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSBzdGF0dXMuZGlydHkoKTtcblxuICAgICAgICAgICAgcmV0dXJuIGV4ZWN1dGVSZWZpbmVtZW50KGlubmVyLnZhbHVlKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVmZmVjdC50eXBlID09PSBcInRyYW5zZm9ybVwiKSB7XG4gICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XG4gICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpZiAoYmFzZS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKSByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgLy8gaWYgKGJhc2Uuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgLy8gICByZXR1cm4geyBzdGF0dXM6IFwiZGlydHlcIiwgdmFsdWU6IGJhc2UudmFsdWUgfTtcbiAgICAgICAgLy8gfVxuICAgICAgICBpZiAoIWlzVmFsaWQoYmFzZSkpIHJldHVybiBiYXNlO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGVmZmVjdC50cmFuc2Zvcm0oYmFzZS52YWx1ZSwgY2hlY2tDdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLmBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiByZXN1bHQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hXG4gICAgICAgICAgLl9wYXJzZUFzeW5jKHsgZGF0YTogY3R4LmRhdGEsIHBhdGg6IGN0eC5wYXRoLCBwYXJlbnQ6IGN0eCB9KVxuICAgICAgICAgIC50aGVuKChiYXNlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQoYmFzZSkpIHJldHVybiBiYXNlO1xuICAgICAgICAgICAgLy8gaWYgKGJhc2Uuc3RhdHVzID09PSBcImFib3J0ZWRcIikgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAvLyBpZiAoYmFzZS5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgLy8gICByZXR1cm4geyBzdGF0dXM6IFwiZGlydHlcIiwgdmFsdWU6IGJhc2UudmFsdWUgfTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCkpLnRoZW4oXG4gICAgICAgICAgICAgIChyZXN1bHQpID0+ICh7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogcmVzdWx0IH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHV0aWwuYXNzZXJ0TmV2ZXIoZWZmZWN0KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8SSBleHRlbmRzIFpvZFR5cGVBbnk+KFxuICAgIHNjaGVtYTogSSxcbiAgICBlZmZlY3Q6IEVmZmVjdDxJW1wiX291dHB1dFwiXT4sXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZEVmZmVjdHM8SSwgSVtcIl9vdXRwdXRcIl0+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgc2NoZW1hLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgZWZmZWN0LFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICB9O1xuXG4gIHN0YXRpYyBjcmVhdGVXaXRoUHJlcHJvY2VzcyA9IDxJIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgcHJlcHJvY2VzczogKGFyZzogdW5rbm93bikgPT4gdW5rbm93bixcbiAgICBzY2hlbWE6IEksXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZEVmZmVjdHM8SSwgSVtcIl9vdXRwdXRcIl0+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgc2NoZW1hLFxuICAgICAgZWZmZWN0OiB7IHR5cGU6IFwicHJlcHJvY2Vzc1wiLCB0cmFuc2Zvcm06IHByZXByb2Nlc3MgfSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgWm9kRWZmZWN0cyBhcyBab2RUcmFuc2Zvcm1lciB9O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kT3B0aW9uYWwgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZE9wdGlvbmFsRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgaW5uZXJUeXBlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9wdGlvbmFsO1xufVxuXG5leHBvcnQgdHlwZSBab2RPcHRpb25hbFR5cGU8VCBleHRlbmRzIFpvZFR5cGVBbnk+ID0gWm9kT3B0aW9uYWw8VD47XG5cbmV4cG9ydCBjbGFzcyBab2RPcHRpb25hbDxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW1wiX291dHB1dFwiXSB8IHVuZGVmaW5lZCxcbiAgWm9kT3B0aW9uYWxEZWY8VD4sXG4gIFRbXCJfaW5wdXRcIl0gfCB1bmRlZmluZWRcbj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8dGhpc1tcIl9vdXRwdXRcIl0+IHtcbiAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgaWYgKHBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gT0sodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgfVxuXG4gIHVud3JhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSA8VCBleHRlbmRzIFpvZFR5cGVBbnk+KFxuICAgIHR5cGU6IFQsXG4gICAgcGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zXG4gICk6IFpvZE9wdGlvbmFsPFQ+ID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9wdGlvbmFsKHtcbiAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kT3B0aW9uYWwsXG4gICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSkgYXMgYW55O1xuICB9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgWm9kTnVsbGFibGUgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgaW50ZXJmYWNlIFpvZE51bGxhYmxlRGVmPFQgZXh0ZW5kcyBab2RUeXBlQW55ID0gWm9kVHlwZUFueT5cbiAgZXh0ZW5kcyBab2RUeXBlRGVmIHtcbiAgaW5uZXJUeXBlOiBUO1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlO1xufVxuXG5leHBvcnQgdHlwZSBab2ROdWxsYWJsZVR5cGU8VCBleHRlbmRzIFpvZFR5cGVBbnk+ID0gWm9kTnVsbGFibGU8VD47XG5cbmV4cG9ydCBjbGFzcyBab2ROdWxsYWJsZTxUIGV4dGVuZHMgWm9kVHlwZUFueT4gZXh0ZW5kcyBab2RUeXBlPFxuICBUW1wiX291dHB1dFwiXSB8IG51bGwsXG4gIFpvZE51bGxhYmxlRGVmPFQ+LFxuICBUW1wiX2lucHV0XCJdIHwgbnVsbFxuPiB7XG4gIF9wYXJzZShpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmV0dXJuVHlwZTx0aGlzW1wiX291dHB1dFwiXT4ge1xuICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICBpZiAocGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5udWxsKSB7XG4gICAgICByZXR1cm4gT0sobnVsbCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShpbnB1dCk7XG4gIH1cblxuICB1bndyYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlID0gPFQgZXh0ZW5kcyBab2RUeXBlQW55PihcbiAgICB0eXBlOiBULFxuICAgIHBhcmFtcz86IFJhd0NyZWF0ZVBhcmFtc1xuICApOiBab2ROdWxsYWJsZTxUPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsYWJsZSh7XG4gICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlLFxuICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pIGFzIGFueTtcbiAgfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICBab2REZWZhdWx0ICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmV4cG9ydCBpbnRlcmZhY2UgWm9kRGVmYXVsdERlZjxUIGV4dGVuZHMgWm9kVHlwZUFueSA9IFpvZFR5cGVBbnk+XG4gIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIGlubmVyVHlwZTogVDtcbiAgZGVmYXVsdFZhbHVlOiAoKSA9PiB1dGlsLm5vVW5kZWZpbmVkPFRbXCJfaW5wdXRcIl0+O1xuICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHQ7XG59XG5cbmV4cG9ydCBjbGFzcyBab2REZWZhdWx0PFQgZXh0ZW5kcyBab2RUeXBlQW55PiBleHRlbmRzIFpvZFR5cGU8XG4gIHV0aWwubm9VbmRlZmluZWQ8VFtcIl9vdXRwdXRcIl0+LFxuICBab2REZWZhdWx0RGVmPFQ+LFxuICBUW1wiX2lucHV0XCJdIHwgdW5kZWZpbmVkXG4+IHtcbiAgX3BhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXR1cm5UeXBlPHRoaXNbXCJfb3V0cHV0XCJdPiB7XG4gICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgbGV0IGRhdGEgPSBjdHguZGF0YTtcbiAgICBpZiAoY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICBkYXRhID0gdGhpcy5fZGVmLmRlZmF1bHRWYWx1ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe1xuICAgICAgZGF0YSxcbiAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgcGFyZW50OiBjdHgsXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVEZWZhdWx0KCkge1xuICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZSA9IDxUIGV4dGVuZHMgWm9kVHlwZUFueT4oXG4gICAgdHlwZTogVCxcbiAgICBwYXJhbXM/OiBSYXdDcmVhdGVQYXJhbXNcbiAgKTogWm9kT3B0aW9uYWw8VD4gPT4ge1xuICAgIHJldHVybiBuZXcgWm9kT3B0aW9uYWwoe1xuICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbCxcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KSBhcyBhbnk7XG4gIH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICBab2ROYU4gICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmV4cG9ydCBpbnRlcmZhY2UgWm9kTmFORGVmIGV4dGVuZHMgWm9kVHlwZURlZiB7XG4gIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmFOO1xufVxuXG5leHBvcnQgY2xhc3MgWm9kTmFOIGV4dGVuZHMgWm9kVHlwZTxudW1iZXIsIFpvZE5hTkRlZj4ge1xuICBfcGFyc2UoaW5wdXQ6IFBhcnNlSW5wdXQpOiBQYXJzZVJldHVyblR5cGU8YW55PiB7XG4gICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm5hbikge1xuICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm5hbixcbiAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGUgPSAocGFyYW1zPzogUmF3Q3JlYXRlUGFyYW1zKTogWm9kTmFOID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hTih7XG4gICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE5hTixcbiAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGN1c3RvbSA9IDxUPihcbiAgY2hlY2s/OiAoZGF0YTogdW5rbm93bikgPT4gYW55LFxuICBwYXJhbXM6IFBhcmFtZXRlcnM8Wm9kVHlwZUFueVtcInJlZmluZVwiXT5bMV0gPSB7fSxcbiAgZmF0YWw/OiBib29sZWFuXG4pOiBab2RUeXBlPFQ+ID0+IHtcbiAgaWYgKGNoZWNrKVxuICAgIHJldHVybiBab2RBbnkuY3JlYXRlKCkuc3VwZXJSZWZpbmUoKGRhdGEsIGN0eCkgPT4ge1xuICAgICAgaWYgKCFjaGVjayhkYXRhKSkge1xuICAgICAgICBjb25zdCBwID0gdHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiID8gcGFyYW1zKGRhdGEpIDogcGFyYW1zO1xuICAgICAgICBjb25zdCBwMiA9IHR5cGVvZiBwID09PSBcInN0cmluZ1wiID8geyBtZXNzYWdlOiBwIH0gOiBwO1xuICAgICAgICBjdHguYWRkSXNzdWUoeyBjb2RlOiBcImN1c3RvbVwiLCAuLi5wMiwgZmF0YWwgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiBab2RBbnkuY3JlYXRlKCk7XG59O1xuXG5leHBvcnQgeyBab2RUeXBlIGFzIFNjaGVtYSwgWm9kVHlwZSBhcyBab2RTY2hlbWEgfTtcblxuZXhwb3J0IGNvbnN0IGxhdGUgPSB7XG4gIG9iamVjdDogWm9kT2JqZWN0LmxhenljcmVhdGUsXG59O1xuXG5leHBvcnQgZW51bSBab2RGaXJzdFBhcnR5VHlwZUtpbmQge1xuICBab2RTdHJpbmcgPSBcIlpvZFN0cmluZ1wiLFxuICBab2ROdW1iZXIgPSBcIlpvZE51bWJlclwiLFxuICBab2ROYU4gPSBcIlpvZE5hTlwiLFxuICBab2RCaWdJbnQgPSBcIlpvZEJpZ0ludFwiLFxuICBab2RCb29sZWFuID0gXCJab2RCb29sZWFuXCIsXG4gIFpvZERhdGUgPSBcIlpvZERhdGVcIixcbiAgWm9kVW5kZWZpbmVkID0gXCJab2RVbmRlZmluZWRcIixcbiAgWm9kTnVsbCA9IFwiWm9kTnVsbFwiLFxuICBab2RBbnkgPSBcIlpvZEFueVwiLFxuICBab2RVbmtub3duID0gXCJab2RVbmtub3duXCIsXG4gIFpvZE5ldmVyID0gXCJab2ROZXZlclwiLFxuICBab2RWb2lkID0gXCJab2RWb2lkXCIsXG4gIFpvZEFycmF5ID0gXCJab2RBcnJheVwiLFxuICBab2RPYmplY3QgPSBcIlpvZE9iamVjdFwiLFxuICBab2RVbmlvbiA9IFwiWm9kVW5pb25cIixcbiAgWm9kRGlzY3JpbWluYXRlZFVuaW9uID0gXCJab2REaXNjcmltaW5hdGVkVW5pb25cIixcbiAgWm9kSW50ZXJzZWN0aW9uID0gXCJab2RJbnRlcnNlY3Rpb25cIixcbiAgWm9kVHVwbGUgPSBcIlpvZFR1cGxlXCIsXG4gIFpvZFJlY29yZCA9IFwiWm9kUmVjb3JkXCIsXG4gIFpvZE1hcCA9IFwiWm9kTWFwXCIsXG4gIFpvZFNldCA9IFwiWm9kU2V0XCIsXG4gIFpvZEZ1bmN0aW9uID0gXCJab2RGdW5jdGlvblwiLFxuICBab2RMYXp5ID0gXCJab2RMYXp5XCIsXG4gIFpvZExpdGVyYWwgPSBcIlpvZExpdGVyYWxcIixcbiAgWm9kRW51bSA9IFwiWm9kRW51bVwiLFxuICBab2RFZmZlY3RzID0gXCJab2RFZmZlY3RzXCIsXG4gIFpvZE5hdGl2ZUVudW0gPSBcIlpvZE5hdGl2ZUVudW1cIixcbiAgWm9kT3B0aW9uYWwgPSBcIlpvZE9wdGlvbmFsXCIsXG4gIFpvZE51bGxhYmxlID0gXCJab2ROdWxsYWJsZVwiLFxuICBab2REZWZhdWx0ID0gXCJab2REZWZhdWx0XCIsXG4gIFpvZFByb21pc2UgPSBcIlpvZFByb21pc2VcIixcbn1cbmV4cG9ydCB0eXBlIFpvZEZpcnN0UGFydHlTY2hlbWFUeXBlcyA9XG4gIHwgWm9kU3RyaW5nXG4gIHwgWm9kTnVtYmVyXG4gIHwgWm9kTmFOXG4gIHwgWm9kQmlnSW50XG4gIHwgWm9kQm9vbGVhblxuICB8IFpvZERhdGVcbiAgfCBab2RVbmRlZmluZWRcbiAgfCBab2ROdWxsXG4gIHwgWm9kQW55XG4gIHwgWm9kVW5rbm93blxuICB8IFpvZE5ldmVyXG4gIHwgWm9kVm9pZFxuICB8IFpvZEFycmF5PGFueSwgYW55PlxuICB8IFpvZE9iamVjdDxhbnksIGFueSwgYW55LCBhbnksIGFueT5cbiAgfCBab2RVbmlvbjxhbnk+XG4gIHwgWm9kRGlzY3JpbWluYXRlZFVuaW9uPGFueSwgYW55LCBhbnk+XG4gIHwgWm9kSW50ZXJzZWN0aW9uPGFueSwgYW55PlxuICB8IFpvZFR1cGxlPGFueSwgYW55PlxuICB8IFpvZFJlY29yZDxhbnksIGFueT5cbiAgfCBab2RNYXA8YW55PlxuICB8IFpvZFNldDxhbnk+XG4gIHwgWm9kRnVuY3Rpb248YW55LCBhbnk+XG4gIHwgWm9kTGF6eTxhbnk+XG4gIHwgWm9kTGl0ZXJhbDxhbnk+XG4gIHwgWm9kRW51bTxhbnk+XG4gIHwgWm9kRWZmZWN0czxhbnksIGFueSwgYW55PlxuICB8IFpvZE5hdGl2ZUVudW08YW55PlxuICB8IFpvZE9wdGlvbmFsPGFueT5cbiAgfCBab2ROdWxsYWJsZTxhbnk+XG4gIHwgWm9kRGVmYXVsdDxhbnk+XG4gIHwgWm9kUHJvbWlzZTxhbnk+O1xuXG5jb25zdCBpbnN0YW5jZU9mVHlwZSA9IDxUIGV4dGVuZHMgbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gYW55PihcbiAgY2xzOiBULFxuICBwYXJhbXM6IFBhcmFtZXRlcnM8Wm9kVHlwZUFueVtcInJlZmluZVwiXT5bMV0gPSB7XG4gICAgbWVzc2FnZTogYElucHV0IG5vdCBpbnN0YW5jZSBvZiAke2Nscy5uYW1lfWAsXG4gIH1cbikgPT4gY3VzdG9tPEluc3RhbmNlVHlwZTxUPj4oKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsIHBhcmFtcywgdHJ1ZSk7XG5cbmNvbnN0IHN0cmluZ1R5cGUgPSBab2RTdHJpbmcuY3JlYXRlO1xuY29uc3QgbnVtYmVyVHlwZSA9IFpvZE51bWJlci5jcmVhdGU7XG5jb25zdCBuYW5UeXBlID0gWm9kTmFOLmNyZWF0ZTtcbmNvbnN0IGJpZ0ludFR5cGUgPSBab2RCaWdJbnQuY3JlYXRlO1xuY29uc3QgYm9vbGVhblR5cGUgPSBab2RCb29sZWFuLmNyZWF0ZTtcbmNvbnN0IGRhdGVUeXBlID0gWm9kRGF0ZS5jcmVhdGU7XG5jb25zdCB1bmRlZmluZWRUeXBlID0gWm9kVW5kZWZpbmVkLmNyZWF0ZTtcbmNvbnN0IG51bGxUeXBlID0gWm9kTnVsbC5jcmVhdGU7XG5jb25zdCBhbnlUeXBlID0gWm9kQW55LmNyZWF0ZTtcbmNvbnN0IHVua25vd25UeXBlID0gWm9kVW5rbm93bi5jcmVhdGU7XG5jb25zdCBuZXZlclR5cGUgPSBab2ROZXZlci5jcmVhdGU7XG5jb25zdCB2b2lkVHlwZSA9IFpvZFZvaWQuY3JlYXRlO1xuY29uc3QgYXJyYXlUeXBlID0gWm9kQXJyYXkuY3JlYXRlO1xuY29uc3Qgb2JqZWN0VHlwZSA9IFpvZE9iamVjdC5jcmVhdGU7XG5jb25zdCBzdHJpY3RPYmplY3RUeXBlID0gWm9kT2JqZWN0LnN0cmljdENyZWF0ZTtcbmNvbnN0IHVuaW9uVHlwZSA9IFpvZFVuaW9uLmNyZWF0ZTtcbmNvbnN0IGRpc2NyaW1pbmF0ZWRVbmlvblR5cGUgPSBab2REaXNjcmltaW5hdGVkVW5pb24uY3JlYXRlO1xuY29uc3QgaW50ZXJzZWN0aW9uVHlwZSA9IFpvZEludGVyc2VjdGlvbi5jcmVhdGU7XG5jb25zdCB0dXBsZVR5cGUgPSBab2RUdXBsZS5jcmVhdGU7XG5jb25zdCByZWNvcmRUeXBlID0gWm9kUmVjb3JkLmNyZWF0ZTtcbmNvbnN0IG1hcFR5cGUgPSBab2RNYXAuY3JlYXRlO1xuY29uc3Qgc2V0VHlwZSA9IFpvZFNldC5jcmVhdGU7XG5jb25zdCBmdW5jdGlvblR5cGUgPSBab2RGdW5jdGlvbi5jcmVhdGU7XG5jb25zdCBsYXp5VHlwZSA9IFpvZExhenkuY3JlYXRlO1xuY29uc3QgbGl0ZXJhbFR5cGUgPSBab2RMaXRlcmFsLmNyZWF0ZTtcbmNvbnN0IGVudW1UeXBlID0gWm9kRW51bS5jcmVhdGU7XG5jb25zdCBuYXRpdmVFbnVtVHlwZSA9IFpvZE5hdGl2ZUVudW0uY3JlYXRlO1xuY29uc3QgcHJvbWlzZVR5cGUgPSBab2RQcm9taXNlLmNyZWF0ZTtcbmNvbnN0IGVmZmVjdHNUeXBlID0gWm9kRWZmZWN0cy5jcmVhdGU7XG5jb25zdCBvcHRpb25hbFR5cGUgPSBab2RPcHRpb25hbC5jcmVhdGU7XG5jb25zdCBudWxsYWJsZVR5cGUgPSBab2ROdWxsYWJsZS5jcmVhdGU7XG5jb25zdCBwcmVwcm9jZXNzVHlwZSA9IFpvZEVmZmVjdHMuY3JlYXRlV2l0aFByZXByb2Nlc3M7XG5jb25zdCBvc3RyaW5nID0gKCkgPT4gc3RyaW5nVHlwZSgpLm9wdGlvbmFsKCk7XG5jb25zdCBvbnVtYmVyID0gKCkgPT4gbnVtYmVyVHlwZSgpLm9wdGlvbmFsKCk7XG5jb25zdCBvYm9vbGVhbiA9ICgpID0+IGJvb2xlYW5UeXBlKCkub3B0aW9uYWwoKTtcblxuZXhwb3J0IHtcbiAgYW55VHlwZSBhcyBhbnksXG4gIGFycmF5VHlwZSBhcyBhcnJheSxcbiAgYmlnSW50VHlwZSBhcyBiaWdpbnQsXG4gIGJvb2xlYW5UeXBlIGFzIGJvb2xlYW4sXG4gIGRhdGVUeXBlIGFzIGRhdGUsXG4gIGRpc2NyaW1pbmF0ZWRVbmlvblR5cGUgYXMgZGlzY3JpbWluYXRlZFVuaW9uLFxuICBlZmZlY3RzVHlwZSBhcyBlZmZlY3QsXG4gIGVudW1UeXBlIGFzIGVudW0sXG4gIGZ1bmN0aW9uVHlwZSBhcyBmdW5jdGlvbixcbiAgaW5zdGFuY2VPZlR5cGUgYXMgaW5zdGFuY2VvZixcbiAgaW50ZXJzZWN0aW9uVHlwZSBhcyBpbnRlcnNlY3Rpb24sXG4gIGxhenlUeXBlIGFzIGxhenksXG4gIGxpdGVyYWxUeXBlIGFzIGxpdGVyYWwsXG4gIG1hcFR5cGUgYXMgbWFwLFxuICBuYW5UeXBlIGFzIG5hbixcbiAgbmF0aXZlRW51bVR5cGUgYXMgbmF0aXZlRW51bSxcbiAgbmV2ZXJUeXBlIGFzIG5ldmVyLFxuICBudWxsVHlwZSBhcyBudWxsLFxuICBudWxsYWJsZVR5cGUgYXMgbnVsbGFibGUsXG4gIG51bWJlclR5cGUgYXMgbnVtYmVyLFxuICBvYmplY3RUeXBlIGFzIG9iamVjdCxcbiAgb2Jvb2xlYW4sXG4gIG9udW1iZXIsXG4gIG9wdGlvbmFsVHlwZSBhcyBvcHRpb25hbCxcbiAgb3N0cmluZyxcbiAgcHJlcHJvY2Vzc1R5cGUgYXMgcHJlcHJvY2VzcyxcbiAgcHJvbWlzZVR5cGUgYXMgcHJvbWlzZSxcbiAgcmVjb3JkVHlwZSBhcyByZWNvcmQsXG4gIHNldFR5cGUgYXMgc2V0LFxuICBzdHJpY3RPYmplY3RUeXBlIGFzIHN0cmljdE9iamVjdCxcbiAgc3RyaW5nVHlwZSBhcyBzdHJpbmcsXG4gIGVmZmVjdHNUeXBlIGFzIHRyYW5zZm9ybWVyLFxuICB0dXBsZVR5cGUgYXMgdHVwbGUsXG4gIHVuZGVmaW5lZFR5cGUgYXMgdW5kZWZpbmVkLFxuICB1bmlvblR5cGUgYXMgdW5pb24sXG4gIHVua25vd25UeXBlIGFzIHVua25vd24sXG4gIHZvaWRUeXBlIGFzIHZvaWQsXG59O1xuIiwiaW1wb3J0IHsgVHlwZU9mLCBTY2hlbWEsIFpvZEVycm9yIH0gZnJvbSBcImh0dHBzOi8vZGVuby5sYW5kL3gvem9kQHYzLjE3LjEwL21vZC50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZzxJIGV4dGVuZHMgU2NoZW1hPGFueT4gfCB1bmRlZmluZWQsIE8gZXh0ZW5kcyBTY2hlbWE8YW55PiB8IHVuZGVmaW5lZD4ge1xuXHRfc2lnOiB0cnVlLFxuXHRpbnB1dDogSSxcblx0b3V0cHV0OiBPLFxufVxuZXhwb3J0IGNvbnN0IHNpZyA9IDxJIGV4dGVuZHMgU2NoZW1hPGFueT4gfCB1bmRlZmluZWQsIE8gZXh0ZW5kcyBTY2hlbWE8YW55PiB8IHVuZGVmaW5lZD4oaTogSSwgbzogTyk6IFNpZzxJLCBPPiA9PiAoe1xuXHRfc2lnOiB0cnVlLFxuXHRpbnB1dDogaSxcblx0b3V0cHV0OiBvLFxufSk7XG5cbnR5cGUgTWFrZUhhbmRsZXJzT2JqZWN0PFQ+ID0ge1xuXHRbSyBpbiBrZXlvZiBUXTogTWFrZUhhbmRsZXJzPFRbS10+XG59O1xuXG50eXBlIE1ha2VIYW5kbGVyc1NpZzxUIGV4dGVuZHMgU2lnPGFueSwgYW55Pj4gPVxuXHRUW1wiaW5wdXRcIl0gZXh0ZW5kcyB1bmRlZmluZWQgPyAoXG5cdFx0VFtcIm91dHB1dFwiXSBleHRlbmRzIHVuZGVmaW5lZFxuXHRcdD8gKCkgPT4gUHJvbWlzZTx2b2lkPlxuXHRcdDogKCkgPT4gUHJvbWlzZTxUeXBlT2Y8VFtcIm91dHB1dFwiXT4+XG5cdCkgOiAoXG5cdFx0VFtcIm91dHB1dFwiXSBleHRlbmRzIHVuZGVmaW5lZFxuXHRcdD8gKGk6IFR5cGVPZjxUW1wiaW5wdXRcIl0+KSA9PiBQcm9taXNlPHZvaWQ+XG5cdFx0OiAoaTogVHlwZU9mPFRbXCJpbnB1dFwiXT4pID0+IFByb21pc2U8VHlwZU9mPFRbXCJvdXRwdXRcIl0+PlxuXHQpO1xuXG5leHBvcnQgdHlwZSBNYWtlSGFuZGxlcnM8VD4gPVxuXHRUIGV4dGVuZHMgU2lnPGFueSwgYW55PlxuXHQ/IE1ha2VIYW5kbGVyc1NpZzxUPlxuXHQ6IE1ha2VIYW5kbGVyc09iamVjdDxUPjtcblxudHlwZSBIYW5kbGVyID0gKHJlcTogUmVxdWVzdCkgPT4gUHJvbWlzZTxSZXNwb25zZT47XG5jb25zdCBtYWtlU2VydmVfID0gPFQ+KFxuXHRhcGk6IFQsXG5cdGhhbmRsZXJzOiBNYWtlSGFuZGxlcnM8VD4sXG5cdHBhdGg6IHN0cmluZyxcblx0cGF0aHM6IE1hcDxzdHJpbmcsIEhhbmRsZXI+LFxuKSA9PiB7XG5cdGNvbnN0IGEgPSBhcGkgYXMgYW55O1xuXHRPYmplY3QuZW50cmllcyhoYW5kbGVycykuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG5cdFx0Y29uc3QgcCA9IGAke3BhdGh9LyR7a31gO1xuXG5cdFx0aWYgKHR5cGVvZiB2ID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRcdHBhdGhzLnNldChwLCBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG5cdFx0XHRcdGlmIChhW2tdLmlucHV0KSB7XG5cdFx0XHRcdFx0Y29uc3QgYm9keSA9IGF3YWl0IHJlcS5qc29uKCk7XG5cdFx0XHRcdFx0Y29uc3QgcGFyc2VkID0gYVtrXS5pbnB1dC5wYXJzZShib2R5KTtcblxuXHRcdFx0XHRcdHJldHVybiB2KHBhcnNlZCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdigpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0bWFrZVNlcnZlXyhhW2tdLCB2LCBwLCBwYXRocyk7XG5cdH0pO1xufVxuXG5leHBvcnQgY29uc3QgbWFrZVNlcnZlID0gPFQ+KFxuXHRhcGk6IFQsXG5cdGhhbmRsZXJzOiBNYWtlSGFuZGxlcnM8VD4sXG5cdHBhdGg6IHN0cmluZyxcbikgPT4ge1xuXHRjb25zdCBwYXRocyA9IG5ldyBNYXA8c3RyaW5nLCBIYW5kbGVyPigpO1xuXG5cdG1ha2VTZXJ2ZV8oYXBpLCBoYW5kbGVycywgcGF0aCwgcGF0aHMpO1xuXG5cdHJldHVybiBhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG5cdFx0Y29uc3QgcGF0aCA9IG5ldyBVUkwocmVxLnVybCkucGF0aG5hbWU7XG5cdFx0Y29uc3QgaGFuZGxlciA9IHBhdGhzLmdldChwYXRoKTtcblxuXHRcdGlmICghaGFuZGxlcikge1xuXHRcdFx0cmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7XG5cdFx0XHRcdHN0YXR1czogNDA0LFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzID0gYXdhaXQgaGFuZGxlcihyZXEpO1xuXG5cdFx0cmV0dXJuIG5ldyBSZXNwb25zZShyZXMgJiYgSlNPTi5zdHJpbmdpZnkocmVzKSk7XG5cdH07XG59O1xuXG50eXBlIE1ha2VDbGllbnQ8VD4gPVxuXHRUIGV4dGVuZHMgU2lnPGFueSwgYW55PlxuXHQ/IE1ha2VDbGllbnRTaWc8VD5cblx0OiBNYWtlQ2xpZW50T2JqZWN0PFQ+O1xuXG50eXBlIE1ha2VDbGllbnRPYmplY3Q8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBNYWtlQ2xpZW50PFRbS10+XG59O1xuXG50eXBlIENsaWVudEh0dHBFcnJvciA9IFJlc3BvbnNlO1xuaW50ZXJmYWNlIENsaWVudFZhbGlkYXRpb25FcnJvcjxUPiB7XG5cdGVycm9yOiBab2RFcnJvcjxUPixcbn1cbmV4cG9ydCB0eXBlIENsaWVudFJlc3BvbnNlPFQ+ID0gVCB8IENsaWVudEh0dHBFcnJvciB8IENsaWVudFZhbGlkYXRpb25FcnJvcjxUPjtcblxuZXhwb3J0IHR5cGUgTWFrZUNsaWVudFNpZzxUIGV4dGVuZHMgU2lnPGFueSwgYW55Pj4gPVxuXHRUW1wiaW5wdXRcIl0gZXh0ZW5kcyB1bmRlZmluZWQgPyAoXG5cdFx0VFtcIm91dHB1dFwiXSBleHRlbmRzIHVuZGVmaW5lZFxuXHRcdD8gKCkgPT4gUHJvbWlzZTxDbGllbnRSZXNwb25zZTx2b2lkPj5cblx0XHQ6ICgpID0+IFByb21pc2U8Q2xpZW50UmVzcG9uc2U8VHlwZU9mPFRbXCJvdXRwdXRcIl0+Pj5cblx0KSA6IChcblx0XHRUW1wib3V0cHV0XCJdIGV4dGVuZHMgdW5kZWZpbmVkXG5cdFx0PyAoaTogVHlwZU9mPFRbXCJpbnB1dFwiXT4pID0+IFByb21pc2U8Q2xpZW50UmVzcG9uc2U8dm9pZD4+XG5cdFx0OiAoaTogVHlwZU9mPFRbXCJpbnB1dFwiXT4pID0+IFByb21pc2U8Q2xpZW50UmVzcG9uc2U8VHlwZU9mPFRbXCJvdXRwdXRcIl0+Pj5cblx0KTtcblxuZXhwb3J0IGNvbnN0IG1ha2VDbGllbnQgPSA8VD4oYXBpOiBULCBwYXRoOiBzdHJpbmcpOiBNYWtlQ2xpZW50PFQ+ID0+IHtcblx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhcGkpLm1hcCgoW2ssIHZdKSA9PiB7XG5cdFx0Y29uc3QgcCA9IGAke3BhdGh9LyR7a31gIGFzIHN0cmluZztcblxuXHRcdGlmIChcIl9zaWdcIiBpbiB2KSB7XG5cdFx0XHRjb25zdCB2XyA9IHYgYXMgU2lnPFNjaGVtYTxhbnk+IHwgdW5kZWZpbmVkLCBTY2hlbWE8YW55PiB8IHVuZGVmaW5lZD47XG5cdFx0XHRyZXR1cm4gW2ssIGFzeW5jIChib2R5OiBhbnkpID0+IHtcblx0XHRcdFx0Y29uc3QgYiA9IGJvZHkgPyBKU09OLnN0cmluZ2lmeShib2R5KSA6IG51bGw7XG5cdFx0XHRcdGNvbnN0IHJlID0gYXdhaXQgZmV0Y2gocCwgeyBib2R5OiBiLCBtZXRob2Q6IFwiUE9TVFwiIH0pO1xuXG5cdFx0XHRcdGlmICghcmUub2spIHtcblx0XHRcdFx0XHRyZXR1cm4gcmU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodl8ub3V0cHV0KSB7XG5cdFx0XHRcdFx0Y29uc3QgcmVzID0gYXdhaXQgdl8ub3V0cHV0LnNhZmVQYXJzZUFzeW5jKGF3YWl0IHJlLmpzb24oKSk7XG5cdFx0XHRcdFx0aWYgKCFyZXMuc3VjY2Vzcykge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0ZXJyb3I6IHJlcy5lcnJvcixcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gcmVzLmRhdGE7XG5cdFx0XHRcdH1cblx0XHRcdH1dXG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtrLCBtYWtlQ2xpZW50KHYsIHApXTtcblx0fSkpIGFzIE1ha2VDbGllbnQ8VD47XG59O1xuXG5leHBvcnQgY29uc3QgaXNIdHRwRXJyb3IgPSAodjogYW55KTogdiBpcyBDbGllbnRIdHRwRXJyb3IgPT4ge1xuXHRyZXR1cm4gdiBpbnN0YW5jZW9mIFJlc3BvbnNlO1xufVxuXG5leHBvcnQgY29uc3QgaXNWYWxpZGF0aW9uRXJyb3IgPSAodjogYW55KTogdiBpcyBDbGllbnRWYWxpZGF0aW9uRXJyb3I8YW55PiA9PiB7XG5cdHJldHVybiAodHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdi5lcnJvciBpbnN0YW5jZW9mIFpvZEVycm9yKTtcbn1cblxuZXhwb3J0IGNvbnN0IGFzc2VydCA9IDxUPihyZXM6IENsaWVudFJlc3BvbnNlPFQ+KTogVCA9PiB7XG5cdGlmIChpc0h0dHBFcnJvcihyZXMpIHx8IGlzVmFsaWRhdGlvbkVycm9yKHJlcykpIHtcblx0XHR0aHJvdyByZXM7XG5cdH1cblxuXHRyZXR1cm4gcmVzO1xufVxuIiwiaW1wb3J0IHsgb2JqZWN0LCBhcnJheSwgc3RyaW5nLCBUeXBlT2YsIG5hdGl2ZUVudW0sIHVuaW9uIH0gZnJvbSBcIi4uL2NvbW1vbi9kZXBzL3pvZC50c1wiO1xuaW1wb3J0IHsgc2lnIH0gZnJvbSBcIi4uL2NvbW1vbi9kZXBzL3lheXBpLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBHZXRDb25maWd1cmF0aW9uUmVzcG9uc2VWMSA9IG9iamVjdCh7XG5cdGhvc3RzOiBhcnJheShzdHJpbmcoKSksXG5cdHNlcnZpY2VzOiBhcnJheShvYmplY3Qoe1xuXHRcdG5hbWU6IHN0cmluZygpLFxuXHRcdHB1YmxpY1VybDogc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0fSkpLFxufSk7XG5leHBvcnQgdHlwZSBHZXRDb25maWd1cmF0aW9uUmVzcG9uc2VWMSA9IFR5cGVPZjx0eXBlb2YgR2V0Q29uZmlndXJhdGlvblJlc3BvbnNlVjE+O1xuXG5leHBvcnQgZW51bSBTdGF0dXNWMSB7XG5cdERvd24gPSBcImRvd25cIixcblx0VXAgPSBcInVwXCIsXG59XG5leHBvcnQgY29uc3QgU3RhdHVzUmVzcG9uc2VWMSA9IHVuaW9uKFtcblx0bmF0aXZlRW51bShTdGF0dXNWMSksXG5cdG9iamVjdCh7IGVycm9yOiBzdHJpbmcoKSB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgU3RhdHVzUmVzcG9uc2VWMSA9IFR5cGVPZjx0eXBlb2YgU3RhdHVzUmVzcG9uc2VWMT47XG5cbmV4cG9ydCBjb25zdCBhcGkgPSB7XG5cdHYxOiB7XG5cdFx0Y29uZmlndXJhdGlvbjoge1xuXHRcdFx0Z2V0OiBzaWcodW5kZWZpbmVkLCBHZXRDb25maWd1cmF0aW9uUmVzcG9uc2VWMSksXG5cdFx0fSxcblx0XHRob3N0OiB7XG5cdFx0XHRnZXRTdGF0dXM6IHNpZyhzdHJpbmcoKSwgU3RhdHVzUmVzcG9uc2VWMSksXG5cdFx0fSxcblx0XHRzZXJ2aWNlOiB7XG5cdFx0XHRnZXRTdGF0dXM6IHNpZyhzdHJpbmcoKSwgU3RhdHVzUmVzcG9uc2VWMSksXG5cdFx0fSxcblx0fSxcbn07XG4iLCJpbXBvcnQgeyBvYmplY3QsIHJlY29yZCwgc3RyaW5nLCBsaXRlcmFsLCBudW1iZXIgfSBmcm9tIFwiLi4vY29tbW9uL2RlcHMvem9kLnRzXCI7XG5cbmNvbnN0IEh0dHBTZXJ2aWNlID0gb2JqZWN0KHtcblx0dHlwZTogbGl0ZXJhbChcImh0dHBcIiksXG5cdHVybDogc3RyaW5nKCksXG5cdHB1YmxpY1VybDogc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuZXhwb3J0IGNvbnN0IENvbmZpZ3VyYXRpb24gPSBvYmplY3Qoe1xuXHRob3N0bmFtZTogc3RyaW5nKCkub3B0aW9uYWwoKSxcblx0cG9ydDogbnVtYmVyKCkub3B0aW9uYWwoKSxcblx0aG9zdHM6IHJlY29yZChzdHJpbmcoKSksXG5cdHNlcnZpY2VzOiByZWNvcmQoSHR0cFNlcnZpY2UpLFxufSk7XG5cbmV4cG9ydCBjb25zdCBsb2FkID0gYXN5bmMgKCkgPT4ge1xuXHRjb25zdCBjb250ZW50cyA9IGF3YWl0IERlbm8ucmVhZFRleHRGaWxlKFwiLi9jb25maWcuanNvblwiKTtcblx0Y29uc3QganNvbiA9IEpTT04ucGFyc2UoY29udGVudHMpO1xuXG5cdGNvbnN0IGNvbmZpZyA9IGF3YWl0IENvbmZpZ3VyYXRpb24ucGFyc2VBc3luYyhqc29uKTtcblxuXHRyZXR1cm4gY29uZmlnO1xufVxuIiwiaW1wb3J0IHsgVHlwZU9mIH0gZnJvbSBcIi4uL2NvbW1vbi9kZXBzL3pvZC50c1wiO1xuaW1wb3J0IHsgbWFrZVNlcnZlLCBNYWtlSGFuZGxlcnMsIH0gZnJvbSBcIi4uL2NvbW1vbi9kZXBzL3lheXBpLnRzXCI7XG5cbmltcG9ydCB7IGFwaSwgR2V0Q29uZmlndXJhdGlvblJlc3BvbnNlVjEsIFN0YXR1c1YxIH0gZnJvbSBcIi4uL2NvbW1vbi9hcGkudHNcIjtcbmltcG9ydCB7IGxvYWQgYXMgbG9hZENvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi9jb25maWcudHNcIjtcblxuY29uc3QgaGFuZGxlcnM6IE1ha2VIYW5kbGVyczx0eXBlb2YgYXBpPiA9IHtcblx0djE6IHtcblx0XHRjb25maWd1cmF0aW9uOiB7XG5cdFx0XHRnZXQ6IGFzeW5jICgpID0+IHtcblx0XHRcdFx0Y29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZ3VyYXRpb24oKTtcblxuXHRcdFx0XHRjb25zdCByZXM6IEdldENvbmZpZ3VyYXRpb25SZXNwb25zZVYxID0ge1xuXHRcdFx0XHRcdGhvc3RzOiBPYmplY3Qua2V5cyhjb25maWcuaG9zdHMpLFxuXHRcdFx0XHRcdHNlcnZpY2VzOiBPYmplY3QuZW50cmllcyhjb25maWcuc2VydmljZXMpLm1hcCgoW2ssIHZdKSA9PiAoe1xuXHRcdFx0XHRcdFx0bmFtZTogayxcblx0XHRcdFx0XHRcdHB1YmxpY1VybDogdi5wdWJsaWNVcmwsXG5cdFx0XHRcdFx0fSkpLFxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdHJldHVybiByZXM7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRob3N0OiB7XG5cdFx0XHRnZXRTdGF0dXM6IGFzeW5jIChob3N0bmFtZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlndXJhdGlvbigpO1xuXHRcdFx0XHRpZiAoIShob3N0bmFtZSBpbiBjb25maWcuaG9zdHMpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgZXJyb3I6IFwidW5rbm93biBob3N0XCIgfTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHN0YXR1cyA9IGF3YWl0IERlbm8ucnVuKHtcblx0XHRcdFx0XHRjbWQ6IFtcInBpbmdcIiwgXCItYzFcIiwgXCItVzJcIiwgY29uZmlnLmhvc3RzW2hvc3RuYW1lXV0sXG5cdFx0XHRcdFx0c3Rkb3V0OiBcIm51bGxcIixcblx0XHRcdFx0XHRzdGRpbjogXCJudWxsXCIsXG5cdFx0XHRcdFx0c3RkZXJyOiBcIm51bGxcIixcblx0XHRcdFx0fSkuc3RhdHVzKCk7XG5cblx0XHRcdFx0aWYgKCFzdGF0dXMuc3VjY2Vzcykge1xuXHRcdFx0XHRcdHJldHVybiBTdGF0dXNWMS5Eb3duO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIFN0YXR1c1YxLlVwO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2VydmljZToge1xuXHRcdFx0Z2V0U3RhdHVzOiBhc3luYyAoc2VydmljZU5hbWUpID0+IHtcblx0XHRcdFx0Y29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZ3VyYXRpb24oKTtcblxuXHRcdFx0XHRyZXR1cm4gZ2V0U2VydmljZVN0YXR1cyhzZXJ2aWNlTmFtZSwgY29uZmlnKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG59O1xuXG5leHBvcnQgY29uc3Qgc2VydmUgPSBtYWtlU2VydmUoYXBpLCBoYW5kbGVycywgXCIvYXBpXCIpO1xuXG5jb25zdCBnZXRTZXJ2aWNlU3RhdHVzID0gYXN5bmMgKHNlcnZpY2VOYW1lOiBzdHJpbmcsIGNvbmZpZzogVHlwZU9mPHR5cGVvZiBDb25maWd1cmF0aW9uPikgPT4ge1xuXHRjb25zdCBzYyA9IGNvbmZpZy5zZXJ2aWNlc1tzZXJ2aWNlTmFtZV07XG5cdGlmICghc2MpIHtcblx0XHRyZXR1cm4geyBlcnJvcjogXCJ1bmtub3duIHNlcnZpY2VcIiB9O1xuXHR9XG5cblx0c3dpdGNoIChzYy50eXBlKSB7XG5cdGNhc2UgXCJodHRwXCI6IHtcblx0XHRjb25zdCBzdGF0dXMgPSBhd2FpdCBmZXRjaChzYy51cmwpO1xuXG5cdFx0cmV0dXJuIHN0YXR1cy5vayA/IFN0YXR1c1YxLlVwIDogU3RhdHVzVjEuRG93bjtcblx0fVxuXHR9XG59O1xuIiwiaW1wb3J0IHsgc2VydmUgYXMgc2VydmVIdHRwIH0gZnJvbSBcIi4vZGVwcy9odHRwLnRzXCI7XG5pbXBvcnQge1xuXHRjb21wcmVzc1Jlc3BvbnNlLFxuXHRzZXRIZWFkZXJzLFxuXHRvckVsc2UsXG5cdGZpbHRlcixcblx0Y2F0Y2hpbmcsXG5cdGxvZyxcbn0gZnJvbSBcIi4vZGVwcy9zaGlydC50c1wiO1xuXG5pbXBvcnQgeyBmcm9udGVuZCB9IGZyb20gXCIuLi9idWlsZC9mcm9udGVuZC50c1wiO1xuaW1wb3J0IHsgc3R5bGUgfSBmcm9tIFwiLi4vYnVpbGQvc3R5bGUudHNcIjtcbmltcG9ydCB7IHNlcnZlIH0gZnJvbSBcIi4vYXBpLnRzXCI7XG5pbXBvcnQgeyBsb2FkIGFzIGxvYWRDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vY29uZmlnLnRzXCI7XG5cbmV4cG9ydCBjb25zdCBub3RGb3VuZCA9IChfcmVxOiBSZXF1ZXN0KSA9PiB7XG5cdHJldHVybiBuZXcgUmVzcG9uc2UoXCJOb3QgZm91bmRcIiwgeyBzdGF0dXM6IDQwNCB9KTtcbn1cblxuY29uc3QgaW50ZXJuYWxTZXJ2ZXJFcnJvciA9IChfcmVxOiBSZXF1ZXN0LCBlOiB1bmtub3duKSA9PiB7XG5cdGNvbnNvbGUuZXJyb3IoZSk7XG5cdHJldHVybiBuZXcgUmVzcG9uc2UoXCJTb21ldGhpbmcgd2VudCB3cm9uZ1wiLCB7IHN0YXR1czogNTAwIH0pO1xufVxuXG5jb25zdCBhcGlIYW5kbGVyID0gZmlsdGVyKFxuXHQocmVxKSA9PiBuZXcgVVJMKHJlcS51cmwpLnBhdGhuYW1lLnNwbGl0KFwiL1wiKVsxXSA9PT0gXCJhcGlcIixcblx0c2V0SGVhZGVycyhbW1wiY29udGVudC10eXBlXCIsIFwiYXBwbGljYXRpb24vanNvblwiXV0sIHNlcnZlKSxcbik7XG5cbmNvbnN0IHJvb3QgPSAocmVxOiBSZXF1ZXN0KSA9PiB7XG5cdGlmICghcmVxLnVybC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHJldHVybiBuZXcgUmVzcG9uc2UoYFxuPCFET0NUWVBFIGh0bWw+XG48aHRtbD5cbjxoZWFkPlxuXHQ8c2NyaXB0IHR5cGU9XCJtb2R1bGVcIj5cblx0JHtmcm9udGVuZH1cblx0PC9zY3JpcHQ+XG5cdDxzdHlsZT5cblx0JHtzdHlsZX1cblx0PC9zdHlsZT5cblx0PHRpdGxlPlN0YXR1ZTwvdGl0bGU+XG48L2hlYWQ+XG48Ym9keT5cblx0PG5vc2NyaXB0PlxuXHRcdFlvdSBuZWVkIHRvIGVuYWJsZSBKYXZhU2NyaXB0IHRvIHZpZXcgdGhpcyBwYWdlLlxuXHQ8L25vc2NyaXB0PlxuPC9ib2R5PlxuPC9odG1sPlxuYCwge1xuXHRoZWFkZXJzOiB7IFwiY29udGVudC10eXBlXCI6IFwidGV4dC9odG1sXCIgfSxcbn0pO1xufTtcblxuY29uc3QgbGlzdGVuZXIgPVxuXHRsb2coY29tcHJlc3NSZXNwb25zZShjYXRjaGluZyhvckVsc2UoXG5cdFx0YXBpSGFuZGxlcixcblx0XHRvckVsc2Uocm9vdCwgbm90Rm91bmQpLFxuXHQpLCBpbnRlcm5hbFNlcnZlckVycm9yKSkpO1xuXG5jb25zdCBjb25maWcgPSBhd2FpdCBsb2FkQ29uZmlndXJhdGlvbigpO1xuY29uc3QgcG9ydCA9IGNvbmZpZy5wb3J0ID8/IDg4ODg7XG5jb25zdCBob3N0ID0gY29uZmlnLmhvc3RuYW1lID8/IFwibG9jYWxob3N0XCI7XG5jb25zdCBzZXJ2ZXIgPSBzZXJ2ZUh0dHAobGlzdGVuZXIsIHtcblx0aG9zdG5hbWU6IGhvc3QsXG5cdHBvcnQsXG59KTtcblxuYXdhaXQgc2VydmVyO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdPLE1BQU0sb0JBQW9CLFNBQVMsS0FBSztJQUM3QyxZQUFZLE9BQWUsQ0FBRTtRQUMzQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0tBQ3BDO0NBQ0Y7QUFHTSxTQUFTLE1BQU0sQ0FBQyxJQUFhLEVBQUUsR0FBRyxHQUFHLEVBQUUsRUFBZ0I7SUFDNUQsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQztDQUNGO0FDMkJELFNBQVMseUJBQXlCLENBQUMsS0FBYSxFQUFnQjtJQUM5RCxPQUFPLENBQUMsTUFBYyxHQUFpQjtRQUNyQyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQzNCO1lBQUUsS0FBSztZQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtTQUFFLEdBQy9CLFNBQVMsQ0FBQztLQUNmLENBQUM7Q0FDSDtBQUVELFNBQVMsdUJBQXVCLENBQUMsS0FBYSxFQUFnQjtJQUM1RCxPQUFPLENBQUMsTUFBYyxHQUFpQjtRQUNyQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMs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QUFFO1FBQzFDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELG1EQUFtRCxFQUFFO1FBQ25ELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDZDQUE2QyxFQUFFO1FBQzdDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDRDQUE0QyxFQUFFO1FBQzVDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHFEQUFxRCxFQUFFO1FBQ3JELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLE1BQU07U0FBQztLQUN2QjtJQUNELDZDQUE2QyxFQUFFO1FBQzdDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHNEQUFzRCxFQUFFO1FBQ3RELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDBDQUEwQyxFQUFFO1FBQzFDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELG1EQUFtRCxFQUFFO1FBQ25ELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELGlEQUFpRCxFQUFFO1FBQ2pELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDBEQUEwRCxFQUFFO1FBQzFELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELGdEQUFnRCxFQUFFO1FBQ2hELFFBQVEsRUFBRSxNQUFNO1FBQ2hCLGNB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QWE7U0FBQztLQUM5QjtJQUNELDJCQUEyQixFQUFFO1FBQzNCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHVCQUF1QixFQUFFO1FBQ3ZCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLE1BQU07U0FBQztLQUN2QjtJQUNELHdCQUF3QixFQUFFO1FBQ3hCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHdCQUF3QixFQUFFO1FBQ3hCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDBCQUEwQixFQUFFO1FBQzFCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELHNCQUFzQixFQUFFO1FBQ3RCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDZCQUE2QixFQUFFO1FBQzdCLFlBQVksRUFBRTtZQUFDLEtBQUs7U0FBQztLQUN0QjtJQUNELDBCQUEwQixFQUFFO1FBQzFCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLFlBQVksRUFBRTtZQUFDLEtBQUs7WUFBRSxLQUFLO1lBQUUsS0FBSztZQUFFLEtBQUs7WUFBRSxLQUFLO1NBQUM7S0FDbEQ7SUFDRCwyQkFBMkIsRUFBRTtRQUMzQixRQUFRLEVBQUUsUUFBUTtRQUNsQixZQUFZLEVBQUU7WUFBQyxLQUFLO1lBQUUsS0FBSztZQUFFLEtBQUs7U0FBQztLQUNwQztJQUNELDBCQUEwQixFQUFFO1FBQzFC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O1FBQ1gsUUFBUSxFQUFFLE1BQU07UUFDaEIsY0FBYyxFQUFFLElBQUk7UUFDcEIsWUFBWSxFQUFFO1lBQUMsS0FBSztTQUFDO0tBQ3RCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsS0FBSztTQUFDO0tBQ3RCO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsTUFBTTtTQUFDO0tBQ3ZCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsS0FBSztTQUFDO0tBQ3RCO0lBQ0QsWUFBWSxFQUFFO1FBQ1osUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsTUFBTTtTQUFDO0tBQ3ZCO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsSUFBSTtTQUFDO0tBQ3JCO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsUUFBUSxFQUFFLE1BQU07UUFDaEIsY0FBYyxFQUFFLEtBQUs7UUFDckIsWUFBWSxFQUFFO1lBQUMsS0FBSztTQUFDO0tBQ3RCO0lBQ0QsWUFBWSxFQUFFO1FBQ1osUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsTUFBTTtTQUFDO0tBQ3ZCO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsT0FBTztTQUFDO0tBQ3hCO0lBQ0QsWUFBWSxFQUFFO1FBQ1osUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsTUFBTTtTQUFDO0tBQ3ZCO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsT0FBTztTQUFDO0tBQ3hCO0lBQ0QsYUFBYSxFQUFFO1FBQ2IsUUFBUSxFQUFFLE1BQU07UUFDaEIsWUFBWSxFQUFFO1lBQUMsTUFBTTtTQUFDO0tBQ3ZC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