Files
traefik-llmgateway/admin_assets_gen.go
T
lukaszraczylo 2608e01c50 refactor(webui): extract repeated dashboard elements into shared components
Markup and helpers that were copied between pages now live in one
place:
- ChartCard, StatDisabledAlert, StatItem, DetailField, BudgetRatioBars,
  LabeledSelect, TargetPicker and LoadStateView components
- lib/scope.ts, lib/columns.ts and lib/chart-palette.ts
- messageOf, isAuthRejection, and the USD to micro-USD conversion
  helpers
- one monthly cost projection, one date formatter, and the
  useCopyFeedback composable

Behaviour is unchanged. Before and after screenshots of every page
match at 390 and 1440 px. Empty-state text now comes from the shared
EmptyState component, and the user run-out date uses the short date
format. admin_assets_gen.go is regenerated.

Claude-Session: https://claude.ai/code/session_01V5jYJNxpDFdJkyyExpADrv
2026-09-24 06:04:46 +01:00

260 lines
1.1 MiB
Plaintext

// Code generated by webui/generate.mjs; DO NOT EDIT.
//
// Source: webui/dist/ (vite build output), digest 3ab3b5837d595086.
// Regenerate via `make admin-ui` after any webui/ source change.
//
// Every asset body below is base64-encoded and decoded once at package-var
// initialization (encoding/base64, stdlib — Yaegi-safe). See generate.mjs's
// own header comment for why base64 was chosen over a raw-string literal.
package traefikllmgateway
import "encoding/base64"
// adminAsset is one baked static file: its HTTP Content-Type and decoded body.
type adminAsset struct {
contentType string
body []byte
}
// decodeAdminAsset base64-decodes one embedded asset body. Every literal
// passed to it below was produced by this exact encoding (base64.StdEncoding)
// in webui/generate.mjs, so a decode error here can only mean this generated
// file is corrupt — a build-time invariant violation, not a reachable runtime
// condition — so it panics rather than threading an error return through
// every var initializer below.
func decodeAdminAsset(encoded string) []byte {
data, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
panic("admin_assets_gen.go: corrupt embedded asset: " + err.Error())
}
return data
}
// adminIndexHTML is GET /admin's response body (admin.go's serveAdminPage) —
// the built Vue app's HTML shell.
var adminIndexHTML = decodeAdminAsset(
"PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPCEtLSBJbmxpbmUgZGF0YTogVVJJLCBub3QgYSBmaWxlIHVuZGVyIHB1YmxpYy86IGFkbWluLmdvJ3MgYXNzZXQgbWFwIG9ubHkKICAgICAgICAgZXZlciBob2xkcyBjb250ZW50LWhhc2hlZCBmaWxlcyB1bmRlciAvYWRtaW4vYXNzZXRzLyosIGFuZCB0aGUgYWRtaW4KICAgICAgICAgQ1NQJ3MgaW1nLXNyYyBhbGxvd3MgJ3NlbGYnIHBsdXMgZGF0YTogZm9yIGV4YWN0bHkgdGhpcyByZWFzb24g4oCUIG5vCiAgICAgICAgIGV4dHJhIHVuaGFzaGVkLWFzc2V0IHJvdXRlIGlzIG5lZWRlZCBmb3Igb25lIHNtYWxsIGljb24uIC0tPgogICAgPGxpbmsKICAgICAgcmVsPSJpY29uIgogICAgICB0eXBlPSJpbWFnZS9zdmcreG1sIgogICAgICBocmVmPSJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyUzRSUzQ3JlY3Qgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyByeD0nNScgZmlsbD0nJTIzMDA3MmIyJy8lM0UlM0NwYXRoIGQ9J002IDE2LjUgMTAgOGwzIDYgMi0zLjUgMyA2JyBzdHJva2U9JyUyM2ZmZicgc3Ryb2tlLXdpZHRoPScyJyBmaWxsPSdub25lJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnLyUzRSUzQy9zdmclM0UiCiAgICAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+CiAgICA8dGl0bGU+TExNIEdhdGV3YXkgLSBBZG1pbjwvdGl0bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSIvYWRtaW4vYXNzZXRzL2luZGV4LTg4Q1RSTkhQLmpzIj48L3NjcmlwdD4KICAgIDxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgY3Jvc3NvcmlnaW4gaHJlZj0iL2FkbWluL2Fzc2V0cy9Ta2VsZXRvbi1EME5udkhZMS5qcyI+CiAgICA8bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGNyb3Nzb3JpZ2luIGhyZWY9Ii9hZG1pbi9hc3NldHMvdXNlSWQtVGNYQndVT2guanMiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYWRtaW4vYXNzZXRzL2luZGV4LUJENWJCaXNPLmNzcyI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBpZD0iYXBwIj48L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K",
)
// adminAssets maps each hashed filename under /admin/assets/ (admin.go's
// serveAdminAsset) to its content.
var adminAssets = map[string]adminAsset{
"ChartCard-CACSIX1f.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsRCBhcyB0LEUgYXMgbixHbiBhcyByLEpuIGFzIGksTHIgYXMgYSxNciBhcyBvLFFuIGFzIHMsVCBhcyBjLFh0IGFzIGwsWnIgYXMgdSxfbiBhcyBkLGNpIGFzIGYsY24gYXMgcCxkaSBhcyBtLGRyIGFzIGgsZ24gYXMgZyxpciBhcyBfLGxuIGFzIHYsbnIgYXMgeSxvbiBhcyBiLHBpIGFzIHgsc24gYXMgUyx1biBhcyBDLHZpIGFzIHcsdyBhcyBULHdpIGFzIEUsd3IgYXMgRCx5biBhcyBlZX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHtsIGFzIHRlfWZyb20iLi9pbmRleC04OENUUk5IUC5qcyI7aW1wb3J0e3QgYXMgbmV9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHtrIGFzIHJlLGwgYXMgaWV9ZnJvbSIuL2JhZGdlLUJKTGctUjNNLmpzIjtpbXBvcnR7dCBhcyBhZX1mcm9tIi4vU2tlbGV0b25DaGFydC0xWV81czlmMC5qcyI7ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIGUrLjV8MH12YXIgc2U9KGUsdCxuKT0+TWF0aC5tYXgoTWF0aC5taW4oZSxuKSx0KTtmdW5jdGlvbiBjZShlKXtyZXR1cm4gc2Uob2UoZSoyLjU1KSwwLDI1NSl9ZnVuY3Rpb24gbGUoZSl7cmV0dXJuIHNlKG9lKGUqMjU1KSwwLDI1NSl9ZnVuY3Rpb24gTyhlKXtyZXR1cm4gc2Uob2UoZS8yLjU1KS8xMDAsMCwxKX1mdW5jdGlvbiB1ZShlKXtyZXR1cm4gc2Uob2UoZSoxMDApLDAsMTAwKX12YXIgaz17MDowLDE6MSwyOjIsMzozLDQ6NCw1OjUsNjo2LDc6Nyw4OjgsOTo5LEE6MTAsQjoxMSxDOjEyLEQ6MTMsRToxNCxGOjE1LGE6MTAsYjoxMSxjOjEyLGQ6MTMsZToxNCxmOjE1fSxkZT1bLi4uYDAxMjM0NTY3ODlBQkNERUZgXSxmZT1lPT5kZVtlJjE1XSxwZT1lPT5kZVsoZSYyNDApPj40XStkZVtlJjE1XSxtZT1lPT4oZSYyNDApPj40PT0oZSYxNSksaGU9ZT0+bWUoZS5yKSYmbWUoZS5nKSYmbWUoZS5iKSYmbWUoZS5hKTtmdW5jdGlvbiBnZShlKXt2YXIgdD1lLmxlbmd0aCxuO3JldHVybiBlWzBdPT09YCNgJiYodD09PTR8fHQ9PT01P249e3I6MjU1JmtbZVsxXV0qMTcsZzoyNTUma1tlWzJdXSoxNyxiOjI1NSZrW2VbM11dKjE3LGE6dD09PTU/a1tlWzRdXSoxNzoyNTV9Oih0PT09N3x8dD09PTkpJiYobj17cjprW2VbMV1dPDw0fGtbZVsyXV0sZzprW2VbM11dPDw0fGtbZVs0XV0sYjprW2VbNV1dPDw0fGtbZVs2XV0sYTp0PT09OT9rW2VbN11dPDw0fGtbZVs4XV06MjU1fSkpLG59dmFyIF9lPShlLHQpPT5lPDI1NT90KGUpOmBgO2Z1bmN0aW9uIHZlKGUpe3ZhciB0PWhlKGUpP2ZlOnBlO3JldHVybiBlP2AjYCt0KGUucikrdChlLmcpK3QoZS5iKStfZShlLmEsdCk6dm9pZCAwfXZhciB5ZT0vXihoc2xhP3xod2J8aHN2KVwoXHMqKFstKy5lXGRdKykoPzpkZWcpP1tccyxdKyhbLSsuZVxkXSspJVtccyxdKyhbLSsuZVxkXSspJSg/OltccyxdKyhbLSsuZVxkXSspKCUpPyk/XHMqXCkkLztmdW5jdGlvbiBiZShlLHQsbil7bGV0IHI9dCpNYXRoLm1pbihuLDEtbiksaT0odCxpPSh0K2UvMzApJTEyKT0+bi1yKk1hdGgubWF4KE1hdGgubWluKGktMyw5LWksMSksLTEpO3JldHVybltpKDApLGkoOCksaSg0KV19ZnVuY3Rpb24geGUoZSx0LG4pe2xldCByPShyLGk9KHIrZS82MCklNik9Pm4tbip0Kk1hdGgubWF4KE1hdGgubWluKGksNC1pLDEpLDApO3JldHVybltyKDUpLHIoMykscigxKV19ZnVuY3Rpb24gU2UoZSx0LG4pe2xldCByPWJlKGUsMSwuNSksaTtmb3IodCtuPjEmJihpPTEvKHQrbiksdCo9aSxuKj1pKSxpPTA7aTwzO2krKylyW2ldKj0xLXQtbixyW2ldKz10O3JldHVybiByfWZ1bmN0aW9uIENlKGUsdCxuLHIsaSl7cmV0dXJuIGU9PT1pPyh0LW4pL3IrKHQ8bj82OjApOnQ9PT1pPyhuLWUpL3IrMjooZS10KS9yKzR9ZnVuY3Rpb24gd2UoZSl7bGV0IHQ9ZS5yLzI1NSxuPWUuZy8yNTUscj1lLmIvMjU1LGk9TWF0aC5tYXgodCxuLHIpLGE9TWF0aC5taW4odCxuLHIpLG89KGkrYSkvMixzLGMsbDtyZXR1cm4gaSE9PWEmJihsPWktYSxjPW8+LjU/bC8oMi1pLWEpOmwvKGkrYSkscz1DZSh0LG4scixsLGkpLHM9cyo2MCsuNSksW3N8MCxjfHwwLG9dfWZ1bmN0aW9uIFRlKGUsdCxuLHIpe3JldHVybihBcnJheS5pc0FycmF5KHQpP2UodFswXSx0WzFdLHRbMl0pOmUodCxuLHIpKS5tYXAobGUpfWZ1bmN0aW9uIEVlKGUsdCxuKXtyZXR1cm4gVGUoYmUsZSx0LG4pfWZ1bmN0aW9uIERlKGUsdCxuKXtyZXR1cm4gVGUoU2UsZSx0LG4pfWZ1bmN0aW9uIE9lKGUsdCxuKXtyZXR1cm4gVGUoeGUsZSx0LG4pfWZ1bmN0aW9uIGtlKGUpe3JldHVybihlJTM2MCszNjApJTM2MH1mdW5jdGlvbiBBZShlKXtsZXQgdD15ZS5leGVjKGUpLG49MjU1LHI7aWYoIXQpcmV0dXJuO3RbNV0hPT1yJiYobj10WzZdP2NlKCt0WzVdKTpsZSgrdFs1XSkpO2xldCBpPWtlKCt0WzJdKSxhPXRbM10vMTAwLG89dFs0XS8xMDA7cmV0dXJuIHI9dFsxXT09PWBod2JgP0RlKGksYSxvKTp0WzFdPT09YGhzdmA/T2UoaSxhLG8pOkVlKGksYSxvKSx7cjpyWzBdLGc6clsxXSxiOnJbMl0sYTpufX1mdW5jdGlvbiBqZShlLHQpe3ZhciBuPXdlKGUpO25bMF09a2UoblswXSt0KSxuPUVlKG4pLGUucj1uWzBdLGUuZz1uWzFdLGUuYj1uWzJdfWZ1bmN0aW9uIE1lKGUpe2lmKCFlKXJldHVybjtsZXQgdD13ZShlKSxuPXRbMF0scj11ZSh0WzFdKSxpPXVlKHRbMl0pO3JldHVybiBlLmE8MjU1P2Boc2xhKCR7bn0sICR7cn0lLCAke2l9JSwgJHtPKGUuYSl9KWA6YGhzbCgke259LCAke3J9JSwgJHtpfSUpYH12YXIgTmU9e3g6YGRhcmtgLFo6YGxpZ2h0YCxZOmByZWAsWDpgYmx1YCxXOmBncmAsVjpgbWVkaXVtYCxVOmBzbGF0ZWAsQTpgZWVgLFQ6YG9sYCxTOmBvcmAsQjpgcmFgLEM6YGxhdGVnYCxEOmBpZ2h0c2AsUjpgaW5gLFE6YHR1cnF1b2lzYCxFOmBoaWAsUDpgcm9gLE86YGFsYCxOOmBsZWAsTTpgZGVgLEw6YHllbGxvYCxGOmBlbmAsSzpgY2hgLEc6YGFya3NgLEg6YGVhYCxJOmBpZ2h0Z2AsSjpgd2hgfSxQZT17T2ljZVhlOmBmMGY4ZmZgLGFudGlxdWV3RXRlOmBmYWViZDdgLGFxdWE6YGZmZmZgLGFxdWFtYXJSZTpgN2ZmZmQ0YCxhenVZOmBmMGZmZmZgLGJlaWdlOmBmNWY1ZGNgLGJpc3F1ZTpgZmZlNGM0YCxibGFjazpgMGAsYmxhbktlZE9tb25kOmBmZmViY2RgLFhlOmBmZmAsWGV2aVRldDpgOGEyYmUyYCxiUHduOmBhNTJhMmFgLGJ1cmx5d29vZDpgZGViODg3YCxjYU10WGU6YDVmOWVhMGAsS2FydFl1c2U6YDdmZmYwMGAsS29jVGF0ZTpgZDI2OTFlYCxjU086YGZmN2Y1MGAsY1NuZmxvd2VyWGU6YDY0OTVlZGAsY1Nuc2lsazpgZmZmOGRjYCxjcmltc29uOmBkYzE0M2NgLGN5YW46YGZmZmZgLHhYZTpgOGJgLHhjeWFuOmA4YjhiYCx4Z1RNblBkOmBiODg2MGJgLHhXYXk6YGE5YTlhOWAseGdZRjpgNjQwMGAseGdZeTpgYTlhOWE5YCx4a2hha2k6YGJkYjc2YmAseG1hZ0Z0YTpgOGIwMDhiYCx4VGl2ZWdZRjpgNTU2YjJmYCx4U2FuZ2U6YGZmOGMwMGAseFNjRWQ6YDk5MzJjY2AseFlkOmA4YjAwMDBgLHhzT21vbjpgZTk5NjdhYCx4c0hnWUY6YDhmYmM4ZmAseFVYZTpgNDgzZDhiYCx4VVdheTpgMmY0ZjRmYCx4VWdZeTpgMmY0ZjRmYCx4UWU6YGNlZDFgLHh2aVRldDpgOTQwMGQzYCxkQXBwUms6YGZmMTQ5M2AsZEFwc2t5WGU6YGJmZmZgLGRpbVdheTpgNjk2OTY5YCxkaW1nWXk6YDY5Njk2OWAsZG9kZ2VyWGU6YDFlOTBmZmAsZmlZYnJpY2s6YGIyMjIyMmAsZmxTT3dFdGU6YGZmZmFmMGAsZm9Zc3RXQW46YDIyOGIyMmAsZnVLc2lhOmBmZjAwZmZgLGdhUnNiU286YGRjZGNkY2AsZ2hvc3R3RXRlOmBmOGY4ZmZgLGdUZDpgZmZkNzAwYCxnVE1uUGQ6YGRhYTUyMGAsV2F5OmA4MDgwODBgLGdZRjpgODAwMGAsZ1lGTHc6YGFkZmYyZmAsZ1l5OmA4MDgwODBgLGhvbmV5TXc6YGYwZmZmMGAsaG90cFJrOmBmZjY5YjRgLFJkaWFuWWQ6YGNkNWM1Y2AsUmRpZ286YDRiMDA4MmAsaXZTeTpgZmZmZmYwYCxraGFraTpgZjBlNjhjYCxsYXZGTXI6YGU2ZTZmYWAsbGF2Rk1yWHNoOmBmZmYwZjVgLGxhd25nWUY6YDdjZmMwMGAsTm1vbmNFZmZvbjpgZmZmYWNkYCxaWGU6YGFkZDhlNmAsWmNTTzpgZjA4MDgwYCxaY3lhbjpgZTBmZmZmYCxaZ1RNblBkTHc6YGZhZmFkMmAsWldheTpgZDNkM2QzYCxaZ1lGOmA5MGVlOTBgLFpnWXk6YGQzZDNkM2AsWnBSazpgZmZiNmMxYCxac09tb246YGZmYTA3YWAsWnNIZ1lGOmAyMGIyYWFgLFpza3lYZTpgODdjZWZhYCxaVVdheTpgNzc4ODk5YCxaVWdZeTpgNzc4ODk5YCxac3RBbFhlOmBiMGM0ZGVgLFpMdzpgZmZmZmUwYCxsaW1lOmBmZjAwYCxsaW1lZ1lGOmAzMmNkMzJgLGxSRjpgZmFmMGU2YCxtYWdGdGE6YGZmMDBmZmAsbWFQb246YDgwMDAwMGAsVmFxdWFtYXJSZTpgNjZjZGFhYCxWWGU6YGNkYCxWU2NFZDpgYmE1NWQzYCxWcHVycE46YDkzNzBkYmAsVnNIZ1lGOmAzY2IzNzFgLFZVWGU6YDdiNjhlZWAsVnNwclJnZ1lGOmBmYTlhYCxWUWU6YDQ4ZDFjY2AsVnZpVGV0WWQ6YGM3MTU4NWAsbWlkbmlnaHRYZTpgMTkxOTcwYCxtUnRjWWFtOmBmNWZmZmFgLG1pc3R5UHNlOmBmZmU0ZTFgLG1vY2Nhc1I6YGZmZTRiNWAsbmF2YWpvd0V0ZTpgZmZkZWFkYCxuYXZ5OmA4MGAsVGRsYWNlOmBmZGY1ZTZgLFRpdmU6YDgwODAwMGAsVGl2ZWRCYjpgNmI4ZTIzYCxTYW5nZTpgZmZhNTAwYCxTYW5nZVlkOmBmZjQ1MDBgLFNjRWQ6YGRhNzBkNmAscE9lZ1RNblBkOmBlZWU4YWFgLHBPZWdZRjpgOThmYjk4YCxwT2VRZTpgYWZlZWVlYCxwT2V2aVRldFlkOmBkYjcwOTNgLHBhcGF5YXdFcDpgZmZlZmQ1YCxwSEtwdWZmOmBmZmRhYjlgLHBlcnU6YGNkODUzZmAscFJrOmBmZmMwY2JgLHBsdW06YGRkYTBkZGAscG93TXJYZTpgYjBlMGU2YCxwdXJwTjpgODAwMDgwYCxZYmVjY2FwdXJwTjpgNjYzMzk5YCxZZDpgZmYwMDAwYCxQc3licm93bjpgYmM4ZjhmYCxQeU9YZTpgNDE2OWUxYCxzYWRkTmJQd246YDhiNDUxM2Asc09tb246YGZhODA3MmAsc2FuZHliUHduOmBmNGE0NjBgLHNIZ1lGOmAyZThiNTdgLHNIc2hlbGw6YGZmZjVlZWAsc2lGbmE6YGEwNTIyZGAsc2lsdmVyOmBjMGMwYzBgLHNreVhlOmA4N2NlZWJgLFVYZTpgNmE1YWNkYCxVV2F5OmA3MDgwOTBgLFVnWXk6YDcwODA5MGAsc25vdzpgZmZmYWZhYCxzcHJSZ2dZRjpgZmY3ZmAsc3RBbFhlOmA0NjgyYjRgLHRhbjpgZDJiNDhjYCx0ZU86YDgwODBgLHRFc3ROOmBkOGJmZDhgLHRvbWF0bzpgZmY2MzQ3YCxRZTpgNDBlMGQwYCx2aVRldDpgZWU4MmVlYCxKSHQ6YGY1ZGViM2Asd0V0ZTpgZmZmZmZmYCx3RXRlc21va2U6YGY1ZjVmNWAsTHc6YGZmZmYwMGAsTHdnWUY6YDlhY2QzMmB9O2Z1bmN0aW9uIEZlKCl7bGV0IGU9e30sdD1PYmplY3Qua2V5cyhQZSksbj1PYmplY3Qua2V5cyhOZSkscixpLGEsbyxzO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe2ZvcihvPXM9dFtyXSxpPTA7aTxuLmxlbmd0aDtpKyspYT1uW2ldLHM9cy5yZXBsYWNlKGEsTmVbYV0pO2E9cGFyc2VJbnQoUGVbb10sMTYpLGVbc109W2E+PjE2JjI1NSxhPj44JjI1NSxhJjI1NV19cmV0dXJuIGV9dmFyIEllO2Z1bmN0aW9uIExlKGUpe0llfHwoSWU9RmUoKSxJZS50cmFuc3BhcmVudD1bMCwwLDAsMF0pO2xldCB0PUllW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIHQmJntyOnRbMF0sZzp0WzFdLGI6dFsyXSxhOnQubGVuZ3RoPT09ND90WzNdOjI1NX19dmFyIFJlPS9ecmdiYT9cKFxzKihbLSsuXGRdKykoJSk/W1xzLF0rKFstKy5lXGRdKykoJSk/W1xzLF0rKFstKy5lXGRdKykoJSk/KD86W1xzLC9dKyhbLSsuZVxkXSspKCUpPyk/XHMqXCkkLztmdW5jdGlvbiB6ZShlKXtsZXQgdD1SZS5leGVjKGUpLG49MjU1LHIsaSxhO2lmKHQpe2lmKHRbN10hPT1yKXtsZXQgZT0rdFs3XTtuPXRbOF0/Y2UoZSk6c2UoZSoyNTUsMCwyNTUpfXJldHVybiByPSt0WzFdLGk9K3RbM10sYT0rdFs1XSxyPTI1NSYodFsyXT9jZShyKTpzZShyLDAsMjU1KSksaT0yNTUmKHRbNF0/Y2UoaSk6c2UoaSwwLDI1NSkpLGE9MjU1Jih0WzZdP2NlKGEpOnNlKGEsMCwyNTUpKSx7cixnOmksYjphLGE6bn19fWZ1bmN0aW9uIEJlKGUpe3JldHVybiBlJiYoZS5hPDI1NT9gcmdiYSgke2Uucn0sICR7ZS5nfSwgJHtlLmJ9LCAke08oZS5hKX0pYDpgcmdiKCR7ZS5yfSwgJHtlLmd9LCAke2UuYn0pYCl9dmFyIFZlPWU9PmU8PS4wMDMxMzA4P2UqMTIuOTI6ZSoqKDEvMi40KSoxLjA1NS0uMDU1LEhlPWU9PmU8PS4wNDA0NT9lLzEyLjkyOigoZSsuMDU1KS8xLjA1NSkqKjIuNDtmdW5jdGlvbiBVZShlLHQsbil7bGV0IHI9SGUoTyhlLnIpKSxpPUhlKE8oZS5nKSksYT1IZShPKGUuYikpO3JldHVybntyOmxlKFZlKHIrbiooSGUoTyh0LnIpKS1yKSkpLGc6bGUoVmUoaStuKihIZShPKHQuZykpLWkpKSksYjpsZShWZShhK24qKEhlKE8odC5iKSktYSkpKSxhOmUuYStuKih0LmEtZS5hKX19ZnVuY3Rpb24gV2UoZSx0LG4pe2lmKGUpe2xldCByPXdlKGUpO3JbdF09TWF0aC5tYXgoMCxNYXRoLm1pbihyW3RdK3JbdF0qbix0PT09MD8zNjA6MSkpLHI9RWUociksZS5yPXJbMF0sZS5nPXJbMV0sZS5iPXJbMl19fWZ1bmN0aW9uIEdlKGUsdCl7cmV0dXJuIGUmJk9iamVjdC5hc3NpZ24odHx8e30sZSl9ZnVuY3Rpb24gS2UoZSl7dmFyIHQ9e3I6MCxnOjAsYjowLGE6MjU1fTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmxlbmd0aD49MyYmKHQ9e3I6ZVswXSxnOmVbMV0sYjplWzJdLGE6MjU1fSxlLmxlbmd0aD4zJiYodC5hPWxlKGVbM10pKSk6KHQ9R2UoZSx7cjowLGc6MCxiOjAsYToxfSksdC5hPWxlKHQuYSkpLHR9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuIGUuY2hhckF0KDApPT09YHJgP3plKGUpOkFlKGUpfXZhciBKZT1jbGFzcyBle2NvbnN0cnVjdG9yKHQpe2lmKHQgaW5zdGFuY2VvZiBlKXJldHVybiB0O2xldCBuPXR5cGVvZiB0LHI7bj09PWBvYmplY3RgP3I9S2UodCk6bj09PWBzdHJpbmdgJiYocj1nZSh0KXx8TGUodCl8fHFlKHQpKSx0aGlzLl9yZ2I9cix0aGlzLl92YWxpZD0hIXJ9Z2V0IHZhbGlkKCl7cmV0dXJuIHRoaXMuX3ZhbGlkfWdldCByZ2IoKXt2YXIgZT1HZSh0aGlzLl9yZ2IpO3JldHVybiBlJiYoZS5hPU8oZS5hKSksZX1zZXQgcmdiKGUpe3RoaXMuX3JnYj1LZShlKX1yZ2JTdHJpbmcoKXtyZXR1cm4gdGhpcy5fdmFsaWQ/QmUodGhpcy5fcmdiKTp2b2lkIDB9aGV4U3RyaW5nKCl7cmV0dXJuIHRoaXMuX3ZhbGlkP3ZlKHRoaXMuX3JnYik6dm9pZCAwfWhzbFN0cmluZygpe3JldHVybiB0aGlzLl92YWxpZD9NZSh0aGlzLl9yZ2IpOnZvaWQgMH1taXgoZSx0KXtpZihlKXtsZXQgbj10aGlzLnJnYixyPWUucmdiLGksYT10PT09aT8uNTp0LG89MiphLTEscz1uLmEtci5hLGM9KChvKnM9PT0tMT9vOihvK3MpLygxK28qcykpKzEpLzI7aT0xLWMsbi5yPTI1NSZjKm4ucitpKnIucisuNSxuLmc9MjU1JmMqbi5nK2kqci5nKy41LG4uYj0yNTUmYypuLmIraSpyLmIrLjUsbi5hPWEqbi5hKygxLWEpKnIuYSx0aGlzLnJnYj1ufXJldHVybiB0aGlzfWludGVycG9sYXRlKGUsdCl7cmV0dXJuIGUmJih0aGlzLl9yZ2I9VWUodGhpcy5fcmdiLGUuX3JnYix0KSksdGhpc31jbG9uZSgpe3JldHVybiBuZXcgZSh0aGlzLnJnYil9YWxwaGEoZSl7cmV0dXJuIHRoaXMuX3JnYi5hPWxlKGUpLHRoaXN9Y2xlYXJlcihlKXtsZXQgdD10aGlzLl9yZ2I7cmV0dXJuIHQuYSo9MS1lLHRoaXN9Z3JleXNjYWxlKCl7bGV0IGU9dGhpcy5fcmdiO3JldHVybiBlLnI9ZS5nPWUuYj1vZShlLnIqLjMrZS5nKi41OStlLmIqLjExKSx0aGlzfW9wYXF1ZXIoZSl7bGV0IHQ9dGhpcy5fcmdiO3JldHVybiB0LmEqPTErZSx0aGlzfW5lZ2F0ZSgpe2xldCBlPXRoaXMuX3JnYjtyZXR1cm4gZS5yPTI1NS1lLnIsZS5nPTI1NS1lLmcsZS5iPTI1NS1lLmIsdGhpc31saWdodGVuKGUpe3JldHVybiBXZSh0aGlzLl9yZ2IsMixlKSx0aGlzfWRhcmtlbihlKXtyZXR1cm4gV2UodGhpcy5fcmdiLDIsLWUpLHRoaXN9c2F0dXJhdGUoZSl7cmV0dXJuIFdlKHRoaXMuX3JnYiwxLGUpLHRoaXN9ZGVzYXR1cmF0ZShlKXtyZXR1cm4gV2UodGhpcy5fcmdiLDEsLWUpLHRoaXN9cm90YXRlKGUpe3JldHVybiBqZSh0aGlzLl9yZ2IsZSksdGhpc319O2Z1bmN0aW9uIEEoKXt9dmFyIFllPSgoKT0+e2xldCBlPTA7cmV0dXJuKCk9PmUrK30pKCk7ZnVuY3Rpb24gaihlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBNKGUpe2lmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7bGV0IHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO3JldHVybiB0LnNsaWNlKDAsNyk9PT1gW29iamVjdGAmJnQuc2xpY2UoLTYpPT09YEFycmF5XWB9ZnVuY3Rpb24gTihlKXtyZXR1cm4gZSE9PW51bGwmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PWBbb2JqZWN0IE9iamVjdF1gfWZ1bmN0aW9uIFAoZSl7cmV0dXJuKHR5cGVvZiBlPT1gbnVtYmVyYHx8ZSBpbnN0YW5jZW9mIE51bWJlcikmJmlzRmluaXRlKCtlKX1mdW5jdGlvbiBGKGUsdCl7cmV0dXJuIFAoZSk/ZTp0fWZ1bmN0aW9uIEkoZSx0KXtyZXR1cm4gZT09PXZvaWQgMD90OmV9dmFyIFhlPShlLHQpPT50eXBlb2YgZT09YHN0cmluZ2AmJmUuZW5kc1dpdGgoYCVgKT9wYXJzZUZsb2F0KGUpLzEwMCp0OitlO2Z1bmN0aW9uIEwoZSx0LG4pe2lmKGUmJnR5cGVvZiBlLmNhbGw9PWBmdW5jdGlvbmApcmV0dXJuIGUuYXBwbHkobix0KX1mdW5jdGlvbiBSKGUsdCxuLHIpe2xldCBpLGEsbztpZihNKGUpKXtpZihhPWUubGVuZ3RoLHIpZm9yKGk9YS0xO2k+PTA7aS0tKXQuY2FsbChuLGVbaV0saSk7ZWxzZSBmb3IoaT0wO2k8YTtpKyspdC5jYWxsKG4sZVtpXSxpKX1lbHNlIGlmKE4oZSkpZm9yKG89T2JqZWN0LmtleXMoZSksYT1vLmxlbmd0aCxpPTA7aTxhO2krKyl0LmNhbGwobixlW29baV1dLG9baV0pfWZ1bmN0aW9uIFplKGUsdCl7bGV0IG4scixpLGE7aWYoIWV8fCF0fHxlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihuPTAscj1lLmxlbmd0aDtuPHI7KytuKWlmKGk9ZVtuXSxhPXRbbl0saS5kYXRhc2V0SW5kZXghPT1hLmRhdGFzZXRJbmRleHx8aS5pbmRleCE9PWEuaW5kZXgpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gUWUoZSl7aWYoTShlKSlyZXR1cm4gZS5tYXAoUWUpO2lmKE4oZSkpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCksbj1PYmplY3Qua2V5cyhlKSxyPW4ubGVuZ3RoLGk9MDtmb3IoO2k8cjsrK2kpdFtuW2ldXT1RZShlW25baV1dKTtyZXR1cm4gdH1yZXR1cm4gZX1mdW5jdGlvbiAkZShlKXtyZXR1cm5bYF9fcHJvdG9fX2AsYHByb3RvdHlwZWAsYGNvbnN0cnVjdG9yYF0uaW5kZXhPZihlKT09PS0xfWZ1bmN0aW9uIGV0KGUsdCxuLHIpe2lmKCEkZShlKSlyZXR1cm47bGV0IGk9dFtlXSxhPW5bZV07TihpKSYmTihhKT90dChpLGEscik6dFtlXT1RZShhKX1mdW5jdGlvbiB0dChlLHQsbil7bGV0IHI9TSh0KT90Olt0XSxpPXIubGVuZ3RoO2lmKCFOKGUpKXJldHVybiBlO258fD17fTtsZXQgYT1uLm1lcmdlcnx8ZXQsbztmb3IobGV0IHQ9MDt0PGk7Kyt0KXtpZihvPXJbdF0sIU4obykpY29udGludWU7bGV0IGk9T2JqZWN0LmtleXMobyk7Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7Kyt0KWEoaVt0XSxlLG8sbil9cmV0dXJuIGV9ZnVuY3Rpb24gbnQoZSx0KXtyZXR1cm4gdHQoZSx0LHttZXJnZXI6cnR9KX1mdW5jdGlvbiBydChlLHQsbil7aWYoISRlKGUpKXJldHVybjtsZXQgcj10W2VdLGk9bltlXTtOKHIpJiZOKGkpP250KHIsaSk6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl8fCh0W2VdPVFlKGkpKX12YXIgaXQ9eyIiOmU9PmUseDplPT5lLngseTplPT5lLnl9O2Z1bmN0aW9uIGF0KGUpe2xldCB0PWUuc3BsaXQoYC5gKSxuPVtdLHI9YGA7Zm9yKGxldCBlIG9mIHQpcis9ZSxyLmVuZHNXaXRoKGBcXGApP3I9ci5zbGljZSgwLC0xKStgLmA6KG4ucHVzaChyKSxyPWBgKTtyZXR1cm4gbn1mdW5jdGlvbiBvdChlKXtsZXQgdD1hdChlKTtyZXR1cm4gZT0+e2ZvcihsZXQgbiBvZiB0KXtpZihuPT09YGApYnJlYWs7ZSYmPWVbbl19cmV0dXJuIGV9fWZ1bmN0aW9uIHN0KGUsdCl7cmV0dXJuKGl0W3RdfHwoaXRbdF09b3QodCkpKShlKX1mdW5jdGlvbiBjdChlKXtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfXZhciBsdD1lPT5lIT09dm9pZCAwLHV0PWU9PnR5cGVvZiBlPT1gZnVuY3Rpb25gLGR0PShlLHQpPT57aWYoZS5zaXplIT09dC5zaXplKXJldHVybiExO2ZvcihsZXQgbiBvZiBlKWlmKCF0LmhhcyhuKSlyZXR1cm4hMTtyZXR1cm4hMH07ZnVuY3Rpb24gZnQoZSl7cmV0dXJuIGUudHlwZT09PWBtb3VzZXVwYHx8ZS50eXBlPT09YGNsaWNrYHx8ZS50eXBlPT09YGNvbnRleHRtZW51YH12YXIgej1NYXRoLlBJLEI9Mip6LHB0PUIreixtdD0xLzAsaHQ9ei8xODAsVj16LzIsZ3Q9ei80LF90PXoqMi8zLHZ0PU1hdGgubG9nMTAseXQ9TWF0aC5zaWduO2Z1bmN0aW9uIGJ0KGUsdCxuKXtyZXR1cm4gTWF0aC5hYnMoZS10KTxufWZ1bmN0aW9uIHh0KGUpe2xldCB0PU1hdGgucm91bmQoZSk7ZT1idChlLHQsZS8xZTMpP3Q6ZTtsZXQgbj0xMCoqTWF0aC5mbG9vcih2dChlKSkscj1lL247cmV0dXJuKHI8PTE/MTpyPD0yPzI6cjw9NT81OjEwKSpufWZ1bmN0aW9uIFN0KGUpe2xldCB0PVtdLG49TWF0aC5zcXJ0KGUpLHI7Zm9yKHI9MTtyPG47cisrKWUlcj09PTAmJih0LnB1c2gociksdC5wdXNoKGUvcikpO3JldHVybiBuPT09KG58MCkmJnQucHVzaChuKSx0LnNvcnQoKGUsdCk9PmUtdCkucG9wKCksdH1mdW5jdGlvbiBDdChlKXtyZXR1cm4gdHlwZW9mIGU9PWBzeW1ib2xgfHx0eXBlb2YgZT09YG9iamVjdGAmJiEhZSYmIShTeW1ib2wudG9QcmltaXRpdmUgaW4gZXx8YHRvU3RyaW5nYGluIGV8fGB2YWx1ZU9mYGluIGUpfWZ1bmN0aW9uIHd0KGUpe3JldHVybiFDdChlKSYmIWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX1mdW5jdGlvbiBUdChlLHQpe2xldCBuPU1hdGgucm91bmQoZSk7cmV0dXJuIG4tdDw9ZSYmbit0Pj1lfWZ1bmN0aW9uIEV0KGUsdCxuKXtsZXQgcixpLGE7Zm9yKHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspYT1lW3JdW25dLGlzTmFOKGEpfHwodC5taW49TWF0aC5taW4odC5taW4sYSksdC5tYXg9TWF0aC5tYXgodC5tYXgsYSkpfWZ1bmN0aW9uIER0KGUpe3JldHVybiB6LzE4MCplfWZ1bmN0aW9uIE90KGUpe3JldHVybiAxODAveiplfWZ1bmN0aW9uIGt0KGUpe2lmKCFQKGUpKXJldHVybjtsZXQgdD0xLG49MDtmb3IoO01hdGgucm91bmQoZSp0KS90IT09ZTspdCo9MTAsbisrO3JldHVybiBufWZ1bmN0aW9uIEF0KGUsdCl7bGV0IG49dC54LWUueCxyPXQueS1lLnksaT1NYXRoLnNxcnQobipuK3IqciksYT1NYXRoLmF0YW4yKHIsbik7cmV0dXJuIGE8LS41KnomJihhKz1CKSx7YW5nbGU6YSxkaXN0YW5jZTppfX1mdW5jdGlvbiBqdChlLHQpe3JldHVybiBNYXRoLnNxcnQoKHQueC1lLngpKioyKyh0LnktZS55KSoqMil9ZnVuY3Rpb24gTXQoZSx0KXtyZXR1cm4oZS10K3B0KSVCLXp9ZnVuY3Rpb24gSChlKXtyZXR1cm4oZSVCK0IpJUJ9ZnVuY3Rpb24gTnQoZSx0LG4scil7bGV0IGk9SChlKSxhPUgodCksbz1IKG4pLHM9SChhLWkpLGM9SChvLWkpLGw9SChpLWEpLHU9SChpLW8pO3JldHVybiBpPT09YXx8aT09PW98fHImJmE9PT1vfHxzPmMmJmw8dX1mdW5jdGlvbiBVKGUsdCxuKXtyZXR1cm4gTWF0aC5tYXgodCxNYXRoLm1pbihuLGUpKX1mdW5jdGlvbiBQdChlKXtyZXR1cm4gVShlLC0zMjc2OCwzMjc2Nyl9ZnVuY3Rpb24gRnQoZSx0LG4scj0xZS02KXtyZXR1cm4gZT49TWF0aC5taW4odCxuKS1yJiZlPD1NYXRoLm1heCh0LG4pK3J9ZnVuY3Rpb24gSXQoZSx0LG4pe258fD0obj0+ZVtuXTx0KTtsZXQgcj1lLmxlbmd0aC0xLGk9MCxhO2Zvcig7ci1pPjE7KWE9aStyPj4xLG4oYSk/aT1hOnI9YTtyZXR1cm57bG86aSxoaTpyfX12YXIgTHQ9KGUsdCxuLHIpPT5JdChlLG4scj9yPT57bGV0IGk9ZVtyXVt0XTtyZXR1cm4gaTxufHxpPT09biYmZVtyKzFdW3RdPT09bn06cj0+ZVtyXVt0XTxuKSxSdD0oZSx0LG4pPT5JdChlLG4scj0+ZVtyXVt0XT49bik7ZnVuY3Rpb24genQoZSx0LG4pe2xldCByPTAsaT1lLmxlbmd0aDtmb3IoO3I8aSYmZVtyXTx0OylyKys7Zm9yKDtpPnImJmVbaS0xXT5uOylpLS07cmV0dXJuIHI+MHx8aTxlLmxlbmd0aD9lLnNsaWNlKHIsaSk6ZX12YXIgQnQ9W2BwdXNoYCxgcG9wYCxgc2hpZnRgLGBzcGxpY2VgLGB1bnNoaWZ0YF07ZnVuY3Rpb24gVnQoZSx0KXtpZihlLl9jaGFydGpzKXtlLl9jaGFydGpzLmxpc3RlbmVycy5wdXNoKHQpO3JldHVybn1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX2NoYXJ0anMiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTp7bGlzdGVuZXJzOlt0XX19KSxCdC5mb3JFYWNoKHQ9PntsZXQgbj1gX29uRGF0YWArY3QodCkscj1lW3RdO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlKC4uLnQpe2xldCBpPXIuYXBwbHkodGhpcyx0KTtyZXR1cm4gZS5fY2hhcnRqcy5saXN0ZW5lcnMuZm9yRWFjaChlPT57dHlwZW9mIGVbbl09PWBmdW5jdGlvbmAmJmVbbl0oLi4udCl9KSxpfX0pfSl9ZnVuY3Rpb24gSHQoZSx0KXtsZXQgbj1lLl9jaGFydGpzO2lmKCFuKXJldHVybjtsZXQgcj1uLmxpc3RlbmVycyxpPXIuaW5kZXhPZih0KTtpIT09LTEmJnIuc3BsaWNlKGksMSksIShyLmxlbmd0aD4wKSYmKEJ0LmZvckVhY2godD0+e2RlbGV0ZSBlW3RdfSksZGVsZXRlIGUuX2NoYXJ0anMpfWZ1bmN0aW9uIFV0KGUpe2xldCB0PW5ldyBTZXQoZSk7cmV0dXJuIHQuc2l6ZT09PWUubGVuZ3RoP2U6QXJyYXkuZnJvbSh0KX12YXIgV3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIHdpbmRvdz5gdWA/ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX06d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZX0oKTtmdW5jdGlvbiBHdChlLHQpe2xldCBuPVtdLHI9ITE7cmV0dXJuIGZ1bmN0aW9uKC4uLmkpe249aSxyfHwocj0hMCxXdC5jYWxsKHdpbmRvdywoKT0+e3I9ITEsZS5hcHBseSh0LG4pfSkpfX1mdW5jdGlvbiBLdChlLHQpe2xldCBuO3JldHVybiBmdW5jdGlvbiguLi5yKXtyZXR1cm4gdD8oY2xlYXJUaW1lb3V0KG4pLG49c2V0VGltZW91dChlLHQscikpOmUuYXBwbHkodGhpcyxyKSx0fX12YXIgcXQ9ZT0+ZT09PWBzdGFydGA/YGxlZnRgOmU9PT1gZW5kYD9gcmlnaHRgOmBjZW50ZXJgLFc9KGUsdCxuKT0+ZT09PWBzdGFydGA/dDplPT09YGVuZGA/bjoodCtuKS8yLEp0PShlLHQsbixyKT0+ZT09PShyP2BsZWZ0YDpgcmlnaHRgKT9uOmU9PT1gY2VudGVyYD8odCtuKS8yOnQ7ZnVuY3Rpb24gWXQoZSx0LG4pe2xldCByPXQubGVuZ3RoLGk9MCxhPXI7aWYoZS5fc29ydGVkKXtsZXR7aVNjYWxlOm8sdlNjYWxlOnMsX3BhcnNlZDpjfT1lLGw9ZS5kYXRhc2V0JiZlLmRhdGFzZXQub3B0aW9ucz9lLmRhdGFzZXQub3B0aW9ucy5zcGFuR2FwczpudWxsLHU9by5heGlzLHttaW46ZCxtYXg6ZixtaW5EZWZpbmVkOnAsbWF4RGVmaW5lZDptfT1vLmdldFVzZXJCb3VuZHMoKTtpZihwKXtpZihpPU1hdGgubWluKEx0KGMsdSxkKS5sbyxuP3I6THQodCx1LG8uZ2V0UGl4ZWxGb3JWYWx1ZShkKSkubG8pLGwpe2xldCBlPWMuc2xpY2UoMCxpKzEpLnJldmVyc2UoKS5maW5kSW5kZXgoZT0+IWooZVtzLmF4aXNdKSk7aS09TWF0aC5tYXgoMCxlKX1pPVUoaSwwLHItMSl9aWYobSl7bGV0IGU9TWF0aC5tYXgoTHQoYyxvLmF4aXMsZiwhMCkuaGkrMSxuPzA6THQodCx1LG8uZ2V0UGl4ZWxGb3JWYWx1ZShmKSwhMCkuaGkrMSk7aWYobCl7bGV0IHQ9Yy5zbGljZShlLTEpLmZpbmRJbmRleChlPT4haihlW3MuYXhpc10pKTtlKz1NYXRoLm1heCgwLHQpfWE9VShlLGksciktaX1lbHNlIGE9ci1pfXJldHVybntzdGFydDppLGNvdW50OmF9fWZ1bmN0aW9uIFh0KGUpe2xldHt4U2NhbGU6dCx5U2NhbGU6bixfc2NhbGVSYW5nZXM6cn09ZSxpPXt4bWluOnQubWluLHhtYXg6dC5tYXgseW1pbjpuLm1pbix5bWF4Om4ubWF4fTtpZighcilyZXR1cm4gZS5fc2NhbGVSYW5nZXM9aSwhMDtsZXQgYT1yLnhtaW4hPT10Lm1pbnx8ci54bWF4IT09dC5tYXh8fHIueW1pbiE9PW4ubWlufHxyLnltYXghPT1uLm1heDtyZXR1cm4gT2JqZWN0LmFzc2lnbihyLGkpLGF9dmFyIFp0PWU9PmU9PT0wfHxlPT09MSxRdD0oZSx0LG4pPT4tKDIqKigxMCotLWUpKk1hdGguc2luKChlLXQpKkIvbikpLCR0PShlLHQsbik9PjIqKigtMTAqZSkqTWF0aC5zaW4oKGUtdCkqQi9uKSsxLGVuPXtsaW5lYXI6ZT0+ZSxlYXNlSW5RdWFkOmU9PmUqZSxlYXNlT3V0UXVhZDplPT4tZSooZS0yKSxlYXNlSW5PdXRRdWFkOmU9PihlLz0uNSk8MT8uNSplKmU6LS41KigtLWUqKGUtMiktMSksZWFzZUluQ3ViaWM6ZT0+ZSplKmUsZWFzZU91dEN1YmljOmU9Pi0tZSplKmUrMSxlYXNlSW5PdXRDdWJpYzplPT4oZS89LjUpPDE/LjUqZSplKmU6LjUqKChlLT0yKSplKmUrMiksZWFzZUluUXVhcnQ6ZT0+ZSplKmUqZSxlYXNlT3V0UXVhcnQ6ZT0+LSgtLWUqZSplKmUtMSksZWFzZUluT3V0UXVhcnQ6ZT0+KGUvPS41KTwxPy41KmUqZSplKmU6LS41KigoZS09MikqZSplKmUtMiksZWFzZUluUXVpbnQ6ZT0+ZSplKmUqZSplLGVhc2VPdXRRdWludDplPT4tLWUqZSplKmUqZSsxLGVhc2VJbk91dFF1aW50OmU9PihlLz0uNSk8MT8uNSplKmUqZSplKmU6LjUqKChlLT0yKSplKmUqZSplKzIpLGVhc2VJblNpbmU6ZT0+LU1hdGguY29zKGUqVikrMSxlYXNlT3V0U2luZTplPT5NYXRoLnNpbihlKlYpLGVhc2VJbk91dFNpbmU6ZT0+LS41KihNYXRoLmNvcyh6KmUpLTEpLGVhc2VJbkV4cG86ZT0+ZT09PTA/MDoyKiooMTAqKGUtMSkpLGVhc2VPdXRFeHBvOmU9PmU9PT0xPzE6LSgyKiooLTEwKmUpKSsxLGVhc2VJbk91dEV4cG86ZT0+WnQoZSk/ZTplPC41Py41KjIqKigxMCooZSoyLTEpKTouNSooLSgyKiooLTEwKihlKjItMSkpKSsyKSxlYXNlSW5DaXJjOmU9PmU+PTE/ZTotKE1hdGguc3FydCgxLWUqZSktMSksZWFzZU91dENpcmM6ZT0+TWF0aC5zcXJ0KDEtIC0tZSplKSxlYXNlSW5PdXRDaXJjOmU9PihlLz0uNSk8MT8tLjUqKE1hdGguc3FydCgxLWUqZSktMSk6LjUqKE1hdGguc3FydCgxLShlLT0yKSplKSsxKSxlYXNlSW5FbGFzdGljOmU9Plp0KGUpP2U6UXQoZSwuMDc1LC4zKSxlYXNlT3V0RWxhc3RpYzplPT5adChlKT9lOiR0KGUsLjA3NSwuMyksZWFzZUluT3V0RWxhc3RpYyhlKXtsZXQgdD0uMTEyNSxuPS40NTtyZXR1cm4gWnQoZSk/ZTplPC41Py41KlF0KGUqMix0LG4pOi41Ky41KiR0KGUqMi0xLHQsbil9LGVhc2VJbkJhY2soZSl7cmV0dXJuIGUqZSooMi43MDE1OCplLTEuNzAxNTgpfSxlYXNlT3V0QmFjayhlKXtyZXR1cm4tLWUqZSooMi43MDE1OCplKzEuNzAxNTgpKzF9LGVhc2VJbk91dEJhY2soZSl7bGV0IHQ9MS43MDE1ODtyZXR1cm4oZS89LjUpPDE/LjUqKGUqZSooKCh0Kj0xLjUyNSkrMSkqZS10KSk6LjUqKChlLT0yKSplKigoKHQqPTEuNTI1KSsxKSplK3QpKzIpfSxlYXNlSW5Cb3VuY2U6ZT0+MS1lbi5lYXNlT3V0Qm91bmNlKDEtZSksZWFzZU91dEJvdW5jZShlKXtsZXQgdD03LjU2MjUsbj0yLjc1O3JldHVybiBlPDEvbj90KmUqZTplPDIvbj90KihlLT0xLjUvbikqZSsuNzU6ZTwyLjUvbj90KihlLT0yLjI1L24pKmUrLjkzNzU6dCooZS09Mi42MjUvbikqZSsuOTg0Mzc1fSxlYXNlSW5PdXRCb3VuY2U6ZT0+ZTwuNT9lbi5lYXNlSW5Cb3VuY2UoZSoyKSouNTplbi5lYXNlT3V0Qm91bmNlKGUqMi0xKSouNSsuNX07ZnVuY3Rpb24gdG4oZSl7aWYoZSYmdHlwZW9mIGU9PWBvYmplY3RgKXtsZXQgdD1lLnRvU3RyaW5nKCk7cmV0dXJuIHQ9PT1gW29iamVjdCBDYW52YXNQYXR0ZXJuXWB8fHQ9PT1gW29iamVjdCBDYW52YXNHcmFkaWVudF1gfXJldHVybiExfWZ1bmN0aW9uIG5uKGUpe3JldHVybiB0bihlKT9lOm5ldyBKZShlKX1mdW5jdGlvbiBybihlKXtyZXR1cm4gdG4oZSk/ZTpuZXcgSmUoZSkuc2F0dXJhdGUoLjUpLmRhcmtlbiguMSkuaGV4U3RyaW5nKCl9dmFyIGFuPVtgeGAsYHlgLGBib3JkZXJXaWR0aGAsYHJhZGl1c2AsYHRlbnNpb25gXSxvbj1bYGNvbG9yYCxgYm9yZGVyQ29sb3JgLGBiYWNrZ3JvdW5kQ29sb3JgXTtmdW5jdGlvbiBzbihlKXtlLnNldChgYW5pbWF0aW9uYCx7ZGVsYXk6dm9pZCAwLGR1cmF0aW9uOjFlMyxlYXNpbmc6YGVhc2VPdXRRdWFydGAsZm46dm9pZCAwLGZyb206dm9pZCAwLGxvb3A6dm9pZCAwLHRvOnZvaWQgMCx0eXBlOnZvaWQgMH0pLGUuZGVzY3JpYmUoYGFuaW1hdGlvbmAse19mYWxsYmFjazohMSxfaW5kZXhhYmxlOiExLF9zY3JpcHRhYmxlOmU9PmUhPT1gb25Qcm9ncmVzc2AmJmUhPT1gb25Db21wbGV0ZWAmJmUhPT1gZm5gfSksZS5zZXQoYGFuaW1hdGlvbnNgLHtjb2xvcnM6e3R5cGU6YGNvbG9yYCxwcm9wZXJ0aWVzOm9ufSxudW1iZXJzOnt0eXBlOmBudW1iZXJgLHByb3BlcnRpZXM6YW59fSksZS5kZXNjcmliZShgYW5pbWF0aW9uc2Ase19mYWxsYmFjazpgYW5pbWF0aW9uYH0pLGUuc2V0KGB0cmFuc2l0aW9uc2Ase2FjdGl2ZTp7YW5pbWF0aW9uOntkdXJhdGlvbjo0MDB9fSxyZXNpemU6e2FuaW1hdGlvbjp7ZHVyYXRpb246MH19LHNob3c6e2FuaW1hdGlvbnM6e2NvbG9yczp7ZnJvbTpgdHJhbnNwYXJlbnRgfSx2aXNpYmxlOnt0eXBlOmBib29sZWFuYCxkdXJhdGlvbjowfX19LGhpZGU6e2FuaW1hdGlvbnM6e2NvbG9yczp7dG86YHRyYW5zcGFyZW50YH0sdmlzaWJsZTp7dHlwZTpgYm9vbGVhbmAsZWFzaW5nOmBsaW5lYXJgLGZuOmU9PmV8MH19fX0pfWZ1bmN0aW9uIGNuKGUpe2Uuc2V0KGBsYXlvdXRgLHthdXRvUGFkZGluZzohMCxwYWRkaW5nOnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH19KX12YXIgbG49bmV3IE1hcDtmdW5jdGlvbiB1bihlLHQpe3R8fD17fTtsZXQgbj1lK0pTT04uc3RyaW5naWZ5KHQpLHI9bG4uZ2V0KG4pO3JldHVybiByfHwocj1uZXcgSW50bC5OdW1iZXJGb3JtYXQoZSx0KSxsbi5zZXQobixyKSkscn1mdW5jdGlvbiBkbihlLHQsbil7cmV0dXJuIHVuKHQsbikuZm9ybWF0KGUpfXZhciBmbj17dmFsdWVzKGUpe3JldHVybiBNKGUpP2U6YGArZX0sbnVtZXJpYyhlLHQsbil7aWYoZT09PTApcmV0dXJuYDBgO2xldCByPXRoaXMuY2hhcnQub3B0aW9ucy5sb2NhbGUsaSxhPWU7aWYobi5sZW5ndGg+MSl7bGV0IHQ9TWF0aC5tYXgoTWF0aC5hYnMoblswXS52YWx1ZSksTWF0aC5hYnMobltuLmxlbmd0aC0xXS52YWx1ZSkpOyh0PDFlLTR8fHQ+MHgzOGQ3ZWE0YzY4MDAwKSYmKGk9YHNjaWVudGlmaWNgKSxhPXBuKGUsbil9bGV0IG89dnQoTWF0aC5hYnMoYSkpLHM9aXNOYU4obyk/MTpNYXRoLm1heChNYXRoLm1pbigtMSpNYXRoLmZsb29yKG8pLDIwKSwwKSxjPXtub3RhdGlvbjppLG1pbmltdW1GcmFjdGlvbkRpZ2l0czpzLG1heGltdW1GcmFjdGlvbkRpZ2l0czpzfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihjLHRoaXMub3B0aW9ucy50aWNrcy5mb3JtYXQpLGRuKGUscixjKX0sbG9nYXJpdGhtaWMoZSx0LG4pe2lmKGU9PT0wKXJldHVybmAwYDtsZXQgcj1uW3RdLnNpZ25pZmljYW5kfHxlLzEwKipNYXRoLmZsb29yKHZ0KGUpKTtyZXR1cm5bMSwyLDMsNSwxMCwxNV0uaW5jbHVkZXMocil8fHQ+Ljgqbi5sZW5ndGg/Zm4ubnVtZXJpYy5jYWxsKHRoaXMsZSx0LG4pOmBgfX07ZnVuY3Rpb24gcG4oZSx0KXtsZXQgbj10Lmxlbmd0aD4zP3RbMl0udmFsdWUtdFsxXS52YWx1ZTp0WzFdLnZhbHVlLXRbMF0udmFsdWU7cmV0dXJuIE1hdGguYWJzKG4pPj0xJiZlIT09TWF0aC5mbG9vcihlKSYmKG49ZS1NYXRoLmZsb29yKGUpKSxufXZhciBtbj17Zm9ybWF0dGVyczpmbn07ZnVuY3Rpb24gaG4oZSl7ZS5zZXQoYHNjYWxlYCx7ZGlzcGxheTohMCxvZmZzZXQ6ITEscmV2ZXJzZTohMSxiZWdpbkF0WmVybzohMSxib3VuZHM6YHRpY2tzYCxjbGlwOiEwLGdyYWNlOjAsZ3JpZDp7ZGlzcGxheTohMCxsaW5lV2lkdGg6MSxkcmF3T25DaGFydEFyZWE6ITAsZHJhd1RpY2tzOiEwLHRpY2tMZW5ndGg6OCx0aWNrV2lkdGg6KGUsdCk9PnQubGluZVdpZHRoLHRpY2tDb2xvcjooZSx0KT0+dC5jb2xvcixvZmZzZXQ6ITF9LGJvcmRlcjp7ZGlzcGxheTohMCxkYXNoOltdLGRhc2hPZmZzZXQ6MCx3aWR0aDoxfSx0aXRsZTp7ZGlzcGxheTohMSx0ZXh0OmBgLHBhZGRpbmc6e3RvcDo0LGJvdHRvbTo0fX0sdGlja3M6e21pblJvdGF0aW9uOjAsbWF4Um90YXRpb246NTAsbWlycm9yOiExLHRleHRTdHJva2VXaWR0aDowLHRleHRTdHJva2VDb2xvcjpgYCxwYWRkaW5nOjMsZGlzcGxheTohMCxhdXRvU2tpcDohMCxhdXRvU2tpcFBhZGRpbmc6MyxsYWJlbE9mZnNldDowLGNhbGxiYWNrOm1uLmZvcm1hdHRlcnMudmFsdWVzLG1pbm9yOnt9LG1ham9yOnt9LGFsaWduOmBjZW50ZXJgLGNyb3NzQWxpZ246YG5lYXJgLHNob3dMYWJlbEJhY2tkcm9wOiExLGJhY2tkcm9wQ29sb3I6YHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSlgLGJhY2tkcm9wUGFkZGluZzoyfX0pLGUucm91dGUoYHNjYWxlLnRpY2tzYCxgY29sb3JgLGBgLGBjb2xvcmApLGUucm91dGUoYHNjYWxlLmdyaWRgLGBjb2xvcmAsYGAsYGJvcmRlckNvbG9yYCksZS5yb3V0ZShgc2NhbGUuYm9yZGVyYCxgY29sb3JgLGBgLGBib3JkZXJDb2xvcmApLGUucm91dGUoYHNjYWxlLnRpdGxlYCxgY29sb3JgLGBgLGBjb2xvcmApLGUuZGVzY3JpYmUoYHNjYWxlYCx7X2ZhbGxiYWNrOiExLF9zY3JpcHRhYmxlOmU9PiFlLnN0YXJ0c1dpdGgoYGJlZm9yZWApJiYhZS5zdGFydHNXaXRoKGBhZnRlcmApJiZlIT09YGNhbGxiYWNrYCYmZSE9PWBwYXJzZXJgLF9pbmRleGFibGU6ZT0+ZSE9PWBib3JkZXJEYXNoYCYmZSE9PWB0aWNrQm9yZGVyRGFzaGAmJmUhPT1gZGFzaGB9KSxlLmRlc2NyaWJlKGBzY2FsZXNgLHtfZmFsbGJhY2s6YHNjYWxlYH0pLGUuZGVzY3JpYmUoYHNjYWxlLnRpY2tzYCx7X3NjcmlwdGFibGU6ZT0+ZSE9PWBiYWNrZHJvcFBhZGRpbmdgJiZlIT09YGNhbGxiYWNrYCxfaW5kZXhhYmxlOmU9PmUhPT1gYmFja2Ryb3BQYWRkaW5nYH0pfXZhciBnbj1PYmplY3QuY3JlYXRlKG51bGwpLF9uPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gdm4oZSx0KXtpZighdClyZXR1cm4gZTtsZXQgbj10LnNwbGl0KGAuYCk7Zm9yKGxldCB0PTAscj1uLmxlbmd0aDt0PHI7Kyt0KXtsZXQgcj1uW3RdO2U9ZVtyXXx8KGVbcl09T2JqZWN0LmNyZWF0ZShudWxsKSl9cmV0dXJuIGV9ZnVuY3Rpb24geW4oZSx0LG4pe3JldHVybiB0eXBlb2YgdD09YHN0cmluZ2A/dHQodm4oZSx0KSxuKTp0dCh2bihlLGBgKSx0KX12YXIgRz1uZXcgY2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmFuaW1hdGlvbj12b2lkIDAsdGhpcy5iYWNrZ3JvdW5kQ29sb3I9YHJnYmEoMCwwLDAsMC4xKWAsdGhpcy5ib3JkZXJDb2xvcj1gcmdiYSgwLDAsMCwwLjEpYCx0aGlzLmNvbG9yPWAjNjY2YCx0aGlzLmRhdGFzZXRzPXt9LHRoaXMuZGV2aWNlUGl4ZWxSYXRpbz1lPT5lLmNoYXJ0LnBsYXRmb3JtLmdldERldmljZVBpeGVsUmF0aW8oKSx0aGlzLmVsZW1lbnRzPXt9LHRoaXMuZXZlbnRzPVtgbW91c2Vtb3ZlYCxgbW91c2VvdXRgLGBjbGlja2AsYHRvdWNoc3RhcnRgLGB0b3VjaG1vdmVgXSx0aGlzLmZvbnQ9e2ZhbWlseTpgJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdBcmlhbCcsIHNhbnMtc2VyaWZgLHNpemU6MTIsc3R5bGU6YG5vcm1hbGAsbGluZUhlaWdodDoxLjIsd2VpZ2h0Om51bGx9LHRoaXMuaG92ZXI9e30sdGhpcy5ob3ZlckJhY2tncm91bmRDb2xvcj0oZSx0KT0+cm4odC5iYWNrZ3JvdW5kQ29sb3IpLHRoaXMuaG92ZXJCb3JkZXJDb2xvcj0oZSx0KT0+cm4odC5ib3JkZXJDb2xvciksdGhpcy5ob3ZlckNvbG9yPShlLHQpPT5ybih0LmNvbG9yKSx0aGlzLmluZGV4QXhpcz1geGAsdGhpcy5pbnRlcmFjdGlvbj17bW9kZTpgbmVhcmVzdGAsaW50ZXJzZWN0OiEwLGluY2x1ZGVJbnZpc2libGU6ITF9LHRoaXMubWFpbnRhaW5Bc3BlY3RSYXRpbz0hMCx0aGlzLm9uSG92ZXI9bnVsbCx0aGlzLm9uQ2xpY2s9bnVsbCx0aGlzLnBhcnNpbmc9ITAsdGhpcy5wbHVnaW5zPXt9LHRoaXMucmVzcG9uc2l2ZT0hMCx0aGlzLnNjYWxlPXZvaWQgMCx0aGlzLnNjYWxlcz17fSx0aGlzLnNob3dMaW5lPSEwLHRoaXMuZHJhd0FjdGl2ZUVsZW1lbnRzT25Ub3A9ITAsdGhpcy5kZXNjcmliZShlKSx0aGlzLmFwcGx5KHQpfXNldChlLHQpe3JldHVybiB5bih0aGlzLGUsdCl9Z2V0KGUpe3JldHVybiB2bih0aGlzLGUpfWRlc2NyaWJlKGUsdCl7cmV0dXJuIHluKF9uLGUsdCl9b3ZlcnJpZGUoZSx0KXtyZXR1cm4geW4oZ24sZSx0KX1yb3V0ZShlLHQsbixyKXtsZXQgaT12bih0aGlzLGUpLGE9dm4odGhpcyxuKSxvPWBfYCt0O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGkse1tvXTp7dmFsdWU6aVt0XSx3cml0YWJsZTohMH0sW3RdOntlbnVtZXJhYmxlOiEwLGdldCgpe2xldCBlPXRoaXNbb10sdD1hW3JdO3JldHVybiBOKGUpP09iamVjdC5hc3NpZ24oe30sdCxlKTpJKGUsdCl9LHNldChlKXt0aGlzW29dPWV9fX0pfWFwcGx5KGUpe2UuZm9yRWFjaChlPT5lKHRoaXMpKX19KHtfc2NyaXB0YWJsZTplPT4hZS5zdGFydHNXaXRoKGBvbmApLF9pbmRleGFibGU6ZT0+ZSE9PWBldmVudHNgLGhvdmVyOntfZmFsbGJhY2s6YGludGVyYWN0aW9uYH0saW50ZXJhY3Rpb246e19zY3JpcHRhYmxlOiExLF9pbmRleGFibGU6ITF9fSxbc24sY24saG5dKTtmdW5jdGlvbiBibihlKXtyZXR1cm4hZXx8aihlLnNpemUpfHxqKGUuZmFtaWx5KT9udWxsOihlLnN0eWxlP2Uuc3R5bGUrYCBgOmBgKSsoZS53ZWlnaHQ/ZS53ZWlnaHQrYCBgOmBgKStlLnNpemUrYHB4IGArZS5mYW1pbHl9ZnVuY3Rpb24geG4oZSx0LG4scixpKXtsZXQgYT10W2ldO3JldHVybiBhfHwoYT10W2ldPWUubWVhc3VyZVRleHQoaSkud2lkdGgsbi5wdXNoKGkpKSxhPnImJihyPWEpLHJ9ZnVuY3Rpb24gU24oZSx0LG4scil7cnx8PXt9O2xldCBpPXIuZGF0YT1yLmRhdGF8fHt9LGE9ci5nYXJiYWdlQ29sbGVjdD1yLmdhcmJhZ2VDb2xsZWN0fHxbXTtyLmZvbnQhPT10JiYoaT1yLmRhdGE9e30sYT1yLmdhcmJhZ2VDb2xsZWN0PVtdLHIuZm9udD10KSxlLnNhdmUoKSxlLmZvbnQ9dDtsZXQgbz0wLHM9bi5sZW5ndGgsYyxsLHUsZCxmO2ZvcihjPTA7YzxzO2MrKylpZihkPW5bY10sZCE9bnVsbCYmIU0oZCkpbz14bihlLGksYSxvLGQpO2Vsc2UgaWYoTShkKSlmb3IobD0wLHU9ZC5sZW5ndGg7bDx1O2wrKylmPWRbbF0sZiE9bnVsbCYmIU0oZikmJihvPXhuKGUsaSxhLG8sZikpO2UucmVzdG9yZSgpO2xldCBwPWEubGVuZ3RoLzI7aWYocD5uLmxlbmd0aCl7Zm9yKGM9MDtjPHA7YysrKWRlbGV0ZSBpW2FbY11dO2Euc3BsaWNlKDAscCl9cmV0dXJuIG99ZnVuY3Rpb24gQ24oZSx0LG4pe2xldCByPWUuY3VycmVudERldmljZVBpeGVsUmF0aW8saT1uPT09MD8wOk1hdGgubWF4KG4vMiwuNSk7cmV0dXJuIE1hdGgucm91bmQoKHQtaSkqcikvcitpfWZ1bmN0aW9uIHduKGUsdCl7IXQmJiFlfHwodHx8PWUuZ2V0Q29udGV4dChgMmRgKSx0LnNhdmUoKSx0LnJlc2V0VHJhbnNmb3JtKCksdC5jbGVhclJlY3QoMCwwLGUud2lkdGgsZS5oZWlnaHQpLHQucmVzdG9yZSgpKX1mdW5jdGlvbiBUbihlLHQsbixyKXtFbihlLHQsbixyLG51bGwpfWZ1bmN0aW9uIEVuKGUsdCxuLHIsaSl7bGV0IGEsbyxzLGMsbCx1LGQsZixwPXQucG9pbnRTdHlsZSxtPXQucm90YXRpb24saD10LnJhZGl1cyxnPShtfHwwKSpodDtpZihwJiZ0eXBlb2YgcD09YG9iamVjdGAmJihhPXAudG9TdHJpbmcoKSxhPT09YFtvYmplY3QgSFRNTEltYWdlRWxlbWVudF1gfHxhPT09YFtvYmplY3QgSFRNTENhbnZhc0VsZW1lbnRdYCkpe2Uuc2F2ZSgpLGUudHJhbnNsYXRlKG4sciksZS5yb3RhdGUoZyksZS5kcmF3SW1hZ2UocCwtcC53aWR0aC8yLC1wLmhlaWdodC8yLHAud2lkdGgscC5oZWlnaHQpLGUucmVzdG9yZSgpO3JldHVybn1pZighKGlzTmFOKGgpfHxoPD0wKSl7c3dpdGNoKGUuYmVnaW5QYXRoKCkscCl7ZGVmYXVsdDppP2UuZWxsaXBzZShuLHIsaS8yLGgsMCwwLEIpOmUuYXJjKG4scixoLDAsQiksZS5jbG9zZVBhdGgoKTticmVhaztjYXNlYHRyaWFuZ2xlYDp1PWk/aS8yOmgsZS5tb3ZlVG8obitNYXRoLnNpbihnKSp1LHItTWF0aC5jb3MoZykqaCksZys9X3QsZS5saW5lVG8obitNYXRoLnNpbihnKSp1LHItTWF0aC5jb3MoZykqaCksZys9X3QsZS5saW5lVG8obitNYXRoLnNpbihnKSp1LHItTWF0aC5jb3MoZykqaCksZS5jbG9zZVBhdGgoKTticmVhaztjYXNlYHJlY3RSb3VuZGVkYDpsPWgqLjUxNixjPWgtbCxvPU1hdGguY29zKGcrZ3QpKmMsZD1NYXRoLmNvcyhnK2d0KSooaT9pLzItbDpjKSxzPU1hdGguc2luKGcrZ3QpKmMsZj1NYXRoLnNpbihnK2d0KSooaT9pLzItbDpjKSxlLmFyYyhuLWQsci1zLGwsZy16LGctViksZS5hcmMobitmLHItbyxsLGctVixnKSxlLmFyYyhuK2QscitzLGwsZyxnK1YpLGUuYXJjKG4tZixyK28sbCxnK1YsZyt6KSxlLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2VgcmVjdGA6aWYoIW0pe2M9TWF0aC5TUVJUMV8yKmgsdT1pP2kvMjpjLGUucmVjdChuLXUsci1jLDIqdSwyKmMpO2JyZWFrfWcrPWd0O2Nhc2VgcmVjdFJvdGA6ZD1NYXRoLmNvcyhnKSooaT9pLzI6aCksbz1NYXRoLmNvcyhnKSpoLHM9TWF0aC5zaW4oZykqaCxmPU1hdGguc2luKGcpKihpP2kvMjpoKSxlLm1vdmVUbyhuLWQsci1zKSxlLmxpbmVUbyhuK2Ysci1vKSxlLmxpbmVUbyhuK2QscitzKSxlLmxpbmVUbyhuLWYscitvKSxlLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2VgY3Jvc3NSb3RgOmcrPWd0O2Nhc2VgY3Jvc3NgOmQ9TWF0aC5jb3MoZykqKGk/aS8yOmgpLG89TWF0aC5jb3MoZykqaCxzPU1hdGguc2luKGcpKmgsZj1NYXRoLnNpbihnKSooaT9pLzI6aCksZS5tb3ZlVG8obi1kLHItcyksZS5saW5lVG8obitkLHIrcyksZS5tb3ZlVG8obitmLHItbyksZS5saW5lVG8obi1mLHIrbyk7YnJlYWs7Y2FzZWBzdGFyYDpkPU1hdGguY29zKGcpKihpP2kvMjpoKSxvPU1hdGguY29zKGcpKmgscz1NYXRoLnNpbihnKSpoLGY9TWF0aC5zaW4oZykqKGk/aS8yOmgpLGUubW92ZVRvKG4tZCxyLXMpLGUubGluZVRvKG4rZCxyK3MpLGUubW92ZVRvKG4rZixyLW8pLGUubGluZVRvKG4tZixyK28pLGcrPWd0LGQ9TWF0aC5jb3MoZykqKGk/aS8yOmgpLG89TWF0aC5jb3MoZykqaCxzPU1hdGguc2luKGcpKmgsZj1NYXRoLnNpbihnKSooaT9pLzI6aCksZS5tb3ZlVG8obi1kLHItcyksZS5saW5lVG8obitkLHIrcyksZS5tb3ZlVG8obitmLHItbyksZS5saW5lVG8obi1mLHIrbyk7YnJlYWs7Y2FzZWBsaW5lYDpvPWk/aS8yOk1hdGguY29zKGcpKmgscz1NYXRoLnNpbihnKSpoLGUubW92ZVRvKG4tbyxyLXMpLGUubGluZVRvKG4rbyxyK3MpO2JyZWFrO2Nhc2VgZGFzaGA6ZS5tb3ZlVG8obixyKSxlLmxpbmVUbyhuK01hdGguY29zKGcpKihpP2kvMjpoKSxyK01hdGguc2luKGcpKmgpO2JyZWFrO2Nhc2UhMTplLmNsb3NlUGF0aCgpfWUuZmlsbCgpLHQuYm9yZGVyV2lkdGg+MCYmZS5zdHJva2UoKX19ZnVuY3Rpb24gSyhlLHQsbil7cmV0dXJuIG58fD0uNSwhdHx8ZSYmZS54PnQubGVmdC1uJiZlLng8dC5yaWdodCtuJiZlLnk+dC50b3AtbiYmZS55PHQuYm90dG9tK259ZnVuY3Rpb24gRG4oZSx0KXtlLnNhdmUoKSxlLmJlZ2luUGF0aCgpLGUucmVjdCh0LmxlZnQsdC50b3AsdC5yaWdodC10LmxlZnQsdC5ib3R0b20tdC50b3ApLGUuY2xpcCgpfWZ1bmN0aW9uIE9uKGUpe2UucmVzdG9yZSgpfWZ1bmN0aW9uIGtuKGUsdCxuLHIsaSl7aWYoIXQpcmV0dXJuIGUubGluZVRvKG4ueCxuLnkpO2lmKGk9PT1gbWlkZGxlYCl7bGV0IHI9KHQueCtuLngpLzI7ZS5saW5lVG8ocix0LnkpLGUubGluZVRvKHIsbi55KX1lbHNlIGk9PT1gYWZ0ZXJgPT0hIXI/ZS5saW5lVG8obi54LHQueSk6ZS5saW5lVG8odC54LG4ueSk7ZS5saW5lVG8obi54LG4ueSl9ZnVuY3Rpb24gQW4oZSx0LG4scil7aWYoIXQpcmV0dXJuIGUubGluZVRvKG4ueCxuLnkpO2UuYmV6aWVyQ3VydmVUbyhyP3QuY3AxeDp0LmNwMngscj90LmNwMXk6dC5jcDJ5LHI/bi5jcDJ4Om4uY3AxeCxyP24uY3AyeTpuLmNwMXksbi54LG4ueSl9ZnVuY3Rpb24gam4oZSx0KXt0LnRyYW5zbGF0aW9uJiZlLnRyYW5zbGF0ZSh0LnRyYW5zbGF0aW9uWzBdLHQudHJhbnNsYXRpb25bMV0pLGoodC5yb3RhdGlvbil8fGUucm90YXRlKHQucm90YXRpb24pLHQuY29sb3ImJihlLmZpbGxTdHlsZT10LmNvbG9yKSx0LnRleHRBbGlnbiYmKGUudGV4dEFsaWduPXQudGV4dEFsaWduKSx0LnRleHRCYXNlbGluZSYmKGUudGV4dEJhc2VsaW5lPXQudGV4dEJhc2VsaW5lKX1mdW5jdGlvbiBNbihlLHQsbixyLGkpe2lmKGkuc3RyaWtldGhyb3VnaHx8aS51bmRlcmxpbmUpe2xldCBhPWUubWVhc3VyZVRleHQociksbz10LWEuYWN0dWFsQm91bmRpbmdCb3hMZWZ0LHM9dCthLmFjdHVhbEJvdW5kaW5nQm94UmlnaHQsYz1uLWEuYWN0dWFsQm91bmRpbmdCb3hBc2NlbnQsbD1uK2EuYWN0dWFsQm91bmRpbmdCb3hEZXNjZW50LHU9aS5zdHJpa2V0aHJvdWdoPyhjK2wpLzI6bDtlLnN0cm9rZVN0eWxlPWUuZmlsbFN0eWxlLGUuYmVnaW5QYXRoKCksZS5saW5lV2lkdGg9aS5kZWNvcmF0aW9uV2lkdGh8fDIsZS5tb3ZlVG8obyx1KSxlLmxpbmVUbyhzLHUpLGUuc3Ryb2tlKCl9fWZ1bmN0aW9uIE5uKGUsdCl7bGV0IG49ZS5maWxsU3R5bGU7ZS5maWxsU3R5bGU9dC5jb2xvcixlLmZpbGxSZWN0KHQubGVmdCx0LnRvcCx0LndpZHRoLHQuaGVpZ2h0KSxlLmZpbGxTdHlsZT1ufWZ1bmN0aW9uIFBuKGUsdCxuLHIsaSxhPXt9KXtsZXQgbz1NKHQpP3Q6W3RdLHM9YS5zdHJva2VXaWR0aD4wJiZhLnN0cm9rZUNvbG9yIT09YGAsYyxsO2ZvcihlLnNhdmUoKSxlLmZvbnQ9aS5zdHJpbmcsam4oZSxhKSxjPTA7YzxvLmxlbmd0aDsrK2MpbD1vW2NdLGEuYmFja2Ryb3AmJk5uKGUsYS5iYWNrZHJvcCkscyYmKGEuc3Ryb2tlQ29sb3ImJihlLnN0cm9rZVN0eWxlPWEuc3Ryb2tlQ29sb3IpLGooYS5zdHJva2VXaWR0aCl8fChlLmxpbmVXaWR0aD1hLnN0cm9rZVdpZHRoKSxlLnN0cm9rZVRleHQobCxuLHIsYS5tYXhXaWR0aCkpLGUuZmlsbFRleHQobCxuLHIsYS5tYXhXaWR0aCksTW4oZSxuLHIsbCxhKSxyKz1OdW1iZXIoaS5saW5lSGVpZ2h0KTtlLnJlc3RvcmUoKX1mdW5jdGlvbiBGbihlLHQpe2xldHt4Om4seTpyLHc6aSxoOmEscmFkaXVzOm99PXQ7ZS5hcmMobitvLnRvcExlZnQscitvLnRvcExlZnQsby50b3BMZWZ0LDEuNSp6LHosITApLGUubGluZVRvKG4scithLW8uYm90dG9tTGVmdCksZS5hcmMobitvLmJvdHRvbUxlZnQscithLW8uYm90dG9tTGVmdCxvLmJvdHRvbUxlZnQseixWLCEwKSxlLmxpbmVUbyhuK2ktby5ib3R0b21SaWdodCxyK2EpLGUuYXJjKG4raS1vLmJvdHRvbVJpZ2h0LHIrYS1vLmJvdHRvbVJpZ2h0LG8uYm90dG9tUmlnaHQsViwwLCEwKSxlLmxpbmVUbyhuK2kscitvLnRvcFJpZ2h0KSxlLmFyYyhuK2ktby50b3BSaWdodCxyK28udG9wUmlnaHQsby50b3BSaWdodCwwLC1WLCEwKSxlLmxpbmVUbyhuK28udG9wTGVmdCxyKX12YXIgSW49L14obm9ybWFsfChcZCsoPzpcLlxkKyk/KShweHxlbXwlKT8pJC8sTG49L14obm9ybWFsfGl0YWxpY3xpbml0aWFsfGluaGVyaXR8dW5zZXR8KG9ibGlxdWUoIC0/WzAtOV0/WzAtOV1kZWcpPykpJC87ZnVuY3Rpb24gUm4oZSx0KXtsZXQgbj0oYGArZSkubWF0Y2goSW4pO2lmKCFufHxuWzFdPT09YG5vcm1hbGApcmV0dXJuIHQqMS4yO3N3aXRjaChlPStuWzJdLG5bM10pe2Nhc2VgcHhgOnJldHVybiBlO2Nhc2VgJWA6ZS89MTAwfXJldHVybiB0KmV9dmFyIHpuPWU9PitlfHwwO2Z1bmN0aW9uIEJuKGUsdCl7bGV0IG49e30scj1OKHQpLGk9cj9PYmplY3Qua2V5cyh0KTp0LGE9TihlKT9yP249PkkoZVtuXSxlW3Rbbl1dKTp0PT5lW3RdOigpPT5lO2ZvcihsZXQgZSBvZiBpKW5bZV09em4oYShlKSk7cmV0dXJuIG59ZnVuY3Rpb24gVm4oZSl7cmV0dXJuIEJuKGUse3RvcDpgeWAscmlnaHQ6YHhgLGJvdHRvbTpgeWAsbGVmdDpgeGB9KX1mdW5jdGlvbiBIbihlKXtyZXR1cm4gQm4oZSxbYHRvcExlZnRgLGB0b3BSaWdodGAsYGJvdHRvbUxlZnRgLGBib3R0b21SaWdodGBdKX1mdW5jdGlvbiBxKGUpe2xldCB0PVZuKGUpO3JldHVybiB0LndpZHRoPXQubGVmdCt0LnJpZ2h0LHQuaGVpZ2h0PXQudG9wK3QuYm90dG9tLHR9ZnVuY3Rpb24gSihlLHQpe2V8fD17fSx0fHw9Ry5mb250O2xldCBuPUkoZS5zaXplLHQuc2l6ZSk7dHlwZW9mIG49PWBzdHJpbmdgJiYobj1wYXJzZUludChuLDEwKSk7bGV0IHI9SShlLnN0eWxlLHQuc3R5bGUpO3ImJiEoYGArcikubWF0Y2goTG4pJiYoY29uc29sZS53YXJuKGBJbnZhbGlkIGZvbnQgc3R5bGUgc3BlY2lmaWVkOiAiYCtyK2AiYCkscj12b2lkIDApO2xldCBpPXtmYW1pbHk6SShlLmZhbWlseSx0LmZhbWlseSksbGluZUhlaWdodDpSbihJKGUubGluZUhlaWdodCx0LmxpbmVIZWlnaHQpLG4pLHNpemU6bixzdHlsZTpyLHdlaWdodDpJKGUud2VpZ2h0LHQud2VpZ2h0KSxzdHJpbmc6YGB9O3JldHVybiBpLnN0cmluZz1ibihpKSxpfWZ1bmN0aW9uIFVuKGUsdCxuLHIpe2xldCBpPSEwLGEsbyxzO2ZvcihhPTAsbz1lLmxlbmd0aDthPG87KythKWlmKHM9ZVthXSxzIT09dm9pZCAwJiYodCE9PXZvaWQgMCYmdHlwZW9mIHM9PWBmdW5jdGlvbmAmJihzPXModCksaT0hMSksbiE9PXZvaWQgMCYmTShzKSYmKHM9c1tuJXMubGVuZ3RoXSxpPSExKSxzIT09dm9pZCAwKSlyZXR1cm4gciYmIWkmJihyLmNhY2hlYWJsZT0hMSksc31mdW5jdGlvbiBXbihlLHQsbil7bGV0e21pbjpyLG1heDppfT1lLGE9WGUodCwoaS1yKS8yKSxvPShlLHQpPT5uJiZlPT09MD8wOmUrdDtyZXR1cm57bWluOm8ociwtTWF0aC5hYnMoYSkpLG1heDpvKGksYSl9fWZ1bmN0aW9uIEduKGUsdCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShlKSx0KX1mdW5jdGlvbiBLbihlLHQ9W2BgXSxuLHIsaT0oKT0+ZVswXSl7bGV0IGE9bnx8ZTtyZXR1cm4gcj09PXZvaWQgMCYmKHI9Y3IoYF9mYWxsYmFja2AsZSkpLG5ldyBQcm94eSh7W1N5bWJvbC50b1N0cmluZ1RhZ106YE9iamVjdGAsX2NhY2hlYWJsZTohMCxfc2NvcGVzOmUsX3Jvb3RTY29wZXM6YSxfZmFsbGJhY2s6cixfZ2V0VGFyZ2V0Omksb3ZlcnJpZGU6bj0+S24oW24sLi4uZV0sdCxhLHIpfSx7ZGVsZXRlUHJvcGVydHkodCxuKXtyZXR1cm4gZGVsZXRlIHRbbl0sZGVsZXRlIHQuX2tleXMsZGVsZXRlIGVbMF1bbl0sITB9LGdldChuLHIpe3JldHVybiBabihuLHIsKCk9PnNyKHIsdCxlLG4pKX0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7cmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuX3Njb3Blc1swXSx0KX0sZ2V0UHJvdG90eXBlT2YoKXtyZXR1cm4gUmVmbGVjdC5nZXRQcm90b3R5cGVPZihlWzBdKX0saGFzKGUsdCl7cmV0dXJuIGxyKGUpLmluY2x1ZGVzKHQpfSxvd25LZXlzKGUpe3JldHVybiBscihlKX0sc2V0KGUsdCxuKXtsZXQgcj1lLl9zdG9yYWdlfHw9aSgpO3JldHVybiBlW3RdPXJbdF09bixkZWxldGUgZS5fa2V5cywhMH19KX1mdW5jdGlvbiBxbihlLHQsbixyKXtsZXQgaT17X2NhY2hlYWJsZTohMSxfcHJveHk6ZSxfY29udGV4dDp0LF9zdWJQcm94eTpuLF9zdGFjazpuZXcgU2V0LF9kZXNjcmlwdG9yczpKbihlLHIpLHNldENvbnRleHQ6dD0+cW4oZSx0LG4sciksb3ZlcnJpZGU6aT0+cW4oZS5vdmVycmlkZShpKSx0LG4scil9O3JldHVybiBuZXcgUHJveHkoaSx7ZGVsZXRlUHJvcGVydHkodCxuKXtyZXR1cm4gZGVsZXRlIHRbbl0sZGVsZXRlIGVbbl0sITB9LGdldChlLHQsbil7cmV0dXJuIFpuKGUsdCwoKT0+UW4oZSx0LG4pKX0sZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbil7cmV0dXJuIHQuX2Rlc2NyaXB0b3JzLmFsbEtleXM/UmVmbGVjdC5oYXMoZSxuKT97ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9OnZvaWQgMDpSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pfSxnZXRQcm90b3R5cGVPZigpe3JldHVybiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKGUpfSxoYXModCxuKXtyZXR1cm4gUmVmbGVjdC5oYXMoZSxuKX0sb3duS2V5cygpe3JldHVybiBSZWZsZWN0Lm93bktleXMoZSl9LHNldCh0LG4scil7cmV0dXJuIGVbbl09cixkZWxldGUgdFtuXSwhMH19KX1mdW5jdGlvbiBKbihlLHQ9e3NjcmlwdGFibGU6ITAsaW5kZXhhYmxlOiEwfSl7bGV0e19zY3JpcHRhYmxlOm49dC5zY3JpcHRhYmxlLF9pbmRleGFibGU6cj10LmluZGV4YWJsZSxfYWxsS2V5czppPXQuYWxsS2V5c309ZTtyZXR1cm57YWxsS2V5czppLHNjcmlwdGFibGU6bixpbmRleGFibGU6cixpc1NjcmlwdGFibGU6dXQobik/bjooKT0+bixpc0luZGV4YWJsZTp1dChyKT9yOigpPT5yfX12YXIgWW49KGUsdCk9PmU/ZStjdCh0KTp0LFhuPShlLHQpPT5OKHQpJiZlIT09YGFkYXB0ZXJzYCYmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KT09PW51bGx8fHQuY29uc3RydWN0b3I9PT1PYmplY3QpO2Z1bmN0aW9uIFpuKGUsdCxuKXtpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KXx8dD09PWBjb25zdHJ1Y3RvcmApcmV0dXJuIGVbdF07bGV0IHI9bigpO3JldHVybiBlW3RdPXIscn1mdW5jdGlvbiBRbihlLHQsbil7bGV0e19wcm94eTpyLF9jb250ZXh0OmksX3N1YlByb3h5OmEsX2Rlc2NyaXB0b3JzOm99PWUscz1yW3RdO3JldHVybiB1dChzKSYmby5pc1NjcmlwdGFibGUodCkmJihzPSRuKHQscyxlLG4pKSxNKHMpJiZzLmxlbmd0aCYmKHM9ZXIodCxzLGUsby5pc0luZGV4YWJsZSkpLFhuKHQscykmJihzPXFuKHMsaSxhJiZhW3RdLG8pKSxzfWZ1bmN0aW9uICRuKGUsdCxuLHIpe2xldHtfcHJveHk6aSxfY29udGV4dDphLF9zdWJQcm94eTpvLF9zdGFjazpzfT1uO2lmKHMuaGFzKGUpKXRocm93IEVycm9yKGBSZWN1cnNpb24gZGV0ZWN0ZWQ6IGArQXJyYXkuZnJvbShzKS5qb2luKGAtPmApK2AtPmArZSk7cy5hZGQoZSk7bGV0IGM9dChhLG98fHIpO3JldHVybiBzLmRlbGV0ZShlKSxYbihlLGMpJiYoYz1pcihpLl9zY29wZXMsaSxlLGMpKSxjfWZ1bmN0aW9uIGVyKGUsdCxuLHIpe2xldHtfcHJveHk6aSxfY29udGV4dDphLF9zdWJQcm94eTpvLF9kZXNjcmlwdG9yczpzfT1uO2lmKGEuaW5kZXghPT12b2lkIDAmJnIoZSkpcmV0dXJuIHRbYS5pbmRleCV0Lmxlbmd0aF07aWYoTih0WzBdKSl7bGV0IG49dCxyPWkuX3Njb3Blcy5maWx0ZXIoZT0+ZSE9PW4pO3Q9W107Zm9yKGxldCBjIG9mIG4pe2xldCBuPWlyKHIsaSxlLGMpO3QucHVzaChxbihuLGEsbyYmb1tlXSxzKSl9fXJldHVybiB0fWZ1bmN0aW9uIHRyKGUsdCxuKXtyZXR1cm4gdXQoZSk/ZSh0LG4pOmV9dmFyIG5yPShlLHQpPT5lPT09ITA/dDp0eXBlb2YgZT09YHN0cmluZ2A/c3QodCxlKTp2b2lkIDA7ZnVuY3Rpb24gcnIoZSx0LG4scixpKXtmb3IobGV0IGEgb2YgdCl7bGV0IHQ9bnIobixhKTtpZih0KXtlLmFkZCh0KTtsZXQgYT10cih0Ll9mYWxsYmFjayxuLGkpO2lmKGEhPT12b2lkIDAmJmEhPT1uJiZhIT09cilyZXR1cm4gYX1lbHNlIGlmKHQ9PT0hMSYmciE9PXZvaWQgMCYmbiE9PXIpcmV0dXJuIG51bGx9cmV0dXJuITF9ZnVuY3Rpb24gaXIoZSx0LG4scil7bGV0IGk9dC5fcm9vdFNjb3BlcyxhPXRyKHQuX2ZhbGxiYWNrLG4sciksbz1bLi4uZSwuLi5pXSxzPW5ldyBTZXQ7cy5hZGQocik7bGV0IGM9YXIocyxvLG4sYXx8bixyKTtyZXR1cm4gYz09PW51bGx8fGEhPT12b2lkIDAmJmEhPT1uJiYoYz1hcihzLG8sYSxjLHIpLGM9PT1udWxsKT8hMTpLbihBcnJheS5mcm9tKHMpLFtgYF0saSxhLCgpPT5vcih0LG4scikpfWZ1bmN0aW9uIGFyKGUsdCxuLHIsaSl7Zm9yKDtuOyluPXJyKGUsdCxuLHIsaSk7cmV0dXJuIG59ZnVuY3Rpb24gb3IoZSx0LG4pe2xldCByPWUuX2dldFRhcmdldCgpO3QgaW4gcnx8KHJbdF09e30pO2xldCBpPXJbdF07cmV0dXJuIE0oaSkmJk4obik/bjppfHx7fX1mdW5jdGlvbiBzcihlLHQsbixyKXtsZXQgaTtmb3IobGV0IGEgb2YgdClpZihpPWNyKFluKGEsZSksbiksaSE9PXZvaWQgMClyZXR1cm4gWG4oZSxpKT9pcihuLHIsZSxpKTppfWZ1bmN0aW9uIGNyKGUsdCl7Zm9yKGxldCBuIG9mIHQpe2lmKCFuKWNvbnRpbnVlO2xldCB0PW5bZV07aWYodCE9PXZvaWQgMClyZXR1cm4gdH19ZnVuY3Rpb24gbHIoZSl7bGV0IHQ9ZS5fa2V5cztyZXR1cm4gdHx8PWUuX2tleXM9dXIoZS5fc2NvcGVzKSx0fWZ1bmN0aW9uIHVyKGUpe2xldCB0PW5ldyBTZXQ7Zm9yKGxldCBuIG9mIGUpZm9yKGxldCBlIG9mIE9iamVjdC5rZXlzKG4pLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKGBfYCkpKXQuYWRkKGUpO3JldHVybiBBcnJheS5mcm9tKHQpfXZhciBkcj0yKiotNTJ8fDFlLTE0LGZyPShlLHQpPT50PGUubGVuZ3RoJiYhZVt0XS5za2lwJiZlW3RdLHByPWU9PmU9PT1geGA/YHlgOmB4YDtmdW5jdGlvbiBtcihlLHQsbixyKXtsZXQgaT1lLnNraXA/dDplLGE9dCxvPW4uc2tpcD90Om4scz1qdChhLGkpLGM9anQobyxhKSxsPXMvKHMrYyksdT1jLyhzK2MpO2w9aXNOYU4obCk/MDpsLHU9aXNOYU4odSk/MDp1O2xldCBkPXIqbCxmPXIqdTtyZXR1cm57cHJldmlvdXM6e3g6YS54LWQqKG8ueC1pLngpLHk6YS55LWQqKG8ueS1pLnkpfSxuZXh0Ont4OmEueCtmKihvLngtaS54KSx5OmEueStmKihvLnktaS55KX19fWZ1bmN0aW9uIGhyKGUsdCxuKXtsZXQgcj1lLmxlbmd0aCxpLGEsbyxzLGMsbD1mcihlLDApO2ZvcihsZXQgdT0wO3U8ci0xOysrdSlpZihjPWwsbD1mcihlLHUrMSksISghY3x8IWwpKXtpZihidCh0W3VdLDAsZHIpKXtuW3VdPW5bdSsxXT0wO2NvbnRpbnVlfWk9blt1XS90W3VdLGE9blt1KzFdL3RbdV0scz1pKioyK2EqKjIsIShzPD05KSYmKG89My9NYXRoLnNxcnQocyksblt1XT1pKm8qdFt1XSxuW3UrMV09YSpvKnRbdV0pfX1mdW5jdGlvbiBncihlLHQsbj1geGApe2xldCByPXByKG4pLGk9ZS5sZW5ndGgsYSxvLHMsYz1mcihlLDApO2ZvcihsZXQgbD0wO2w8aTsrK2wpe2lmKG89cyxzPWMsYz1mcihlLGwrMSksIXMpY29udGludWU7bGV0IGk9c1tuXSx1PXNbcl07byYmKGE9KGktb1tuXSkvMyxzW2BjcDEke259YF09aS1hLHNbYGNwMSR7cn1gXT11LWEqdFtsXSksYyYmKGE9KGNbbl0taSkvMyxzW2BjcDIke259YF09aSthLHNbYGNwMiR7cn1gXT11K2EqdFtsXSl9fWZ1bmN0aW9uIF9yKGUsdD1geGApe2xldCBuPXByKHQpLHI9ZS5sZW5ndGgsaT1BcnJheShyKS5maWxsKDApLGE9QXJyYXkociksbyxzLGMsbD1mcihlLDApO2ZvcihvPTA7bzxyOysrbylpZihzPWMsYz1sLGw9ZnIoZSxvKzEpLGMpe2lmKGwpe2xldCBlPWxbdF0tY1t0XTtpW29dPWU9PT0wPzA6KGxbbl0tY1tuXSkvZX1hW29dPXM/bD95dChpW28tMV0pPT09eXQoaVtvXSk/KGlbby0xXStpW29dKS8yOjA6aVtvLTFdOmlbb119aHIoZSxpLGEpLGdyKGUsYSx0KX1mdW5jdGlvbiB2cihlLHQsbil7cmV0dXJuIE1hdGgubWF4KE1hdGgubWluKGUsbiksdCl9ZnVuY3Rpb24geXIoZSx0KXtsZXQgbixyLGksYSxvLHM9SyhlWzBdLHQpO2ZvcihuPTAscj1lLmxlbmd0aDtuPHI7KytuKW89YSxhPXMscz1uPHItMSYmSyhlW24rMV0sdCksYSYmKGk9ZVtuXSxvJiYoaS5jcDF4PXZyKGkuY3AxeCx0LmxlZnQsdC5yaWdodCksaS5jcDF5PXZyKGkuY3AxeSx0LnRvcCx0LmJvdHRvbSkpLHMmJihpLmNwMng9dnIoaS5jcDJ4LHQubGVmdCx0LnJpZ2h0KSxpLmNwMnk9dnIoaS5jcDJ5LHQudG9wLHQuYm90dG9tKSkpfWZ1bmN0aW9uIGJyKGUsdCxuLHIsaSl7bGV0IGEsbyxzLGM7aWYodC5zcGFuR2FwcyYmKGU9ZS5maWx0ZXIoZT0+IWUuc2tpcCkpLHQuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZT09PWBtb25vdG9uZWApX3IoZSxpKTtlbHNle2xldCBuPXI/ZVtlLmxlbmd0aC0xXTplWzBdO2ZvcihhPTAsbz1lLmxlbmd0aDthPG87KythKXM9ZVthXSxjPW1yKG4scyxlW01hdGgubWluKGErMSxvLSshciklb10sdC50ZW5zaW9uKSxzLmNwMXg9Yy5wcmV2aW91cy54LHMuY3AxeT1jLnByZXZpb3VzLnkscy5jcDJ4PWMubmV4dC54LHMuY3AyeT1jLm5leHQueSxuPXN9dC5jYXBCZXppZXJQb2ludHMmJnlyKGUsbil9ZnVuY3Rpb24geHIoKXtyZXR1cm4gdHlwZW9mIHdpbmRvdzxgdWAmJnR5cGVvZiBkb2N1bWVudDxgdWB9ZnVuY3Rpb24gU3IoZSl7bGV0IHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnRvU3RyaW5nKCk9PT1gW29iamVjdCBTaGFkb3dSb290XWAmJih0PXQuaG9zdCksdH1mdW5jdGlvbiBDcihlLHQsbil7bGV0IHI7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYD8ocj1wYXJzZUludChlLDEwKSxlLmluZGV4T2YoYCVgKSE9PS0xJiYocj1yLzEwMCp0LnBhcmVudE5vZGVbbl0pKTpyPWUscn12YXIgd3I9ZT0+ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTtmdW5jdGlvbiBUcihlLHQpe3JldHVybiB3cihlKS5nZXRQcm9wZXJ0eVZhbHVlKHQpfXZhciBFcj1bYHRvcGAsYHJpZ2h0YCxgYm90dG9tYCxgbGVmdGBdO2Z1bmN0aW9uIERyKGUsdCxuKXtsZXQgcj17fTtuPW4/YC1gK246YGA7Zm9yKGxldCBpPTA7aTw0O2krKyl7bGV0IGE9RXJbaV07clthXT1wYXJzZUZsb2F0KGVbdCtgLWArYStuXSl8fDB9cmV0dXJuIHIud2lkdGg9ci5sZWZ0K3IucmlnaHQsci5oZWlnaHQ9ci50b3Arci5ib3R0b20scn12YXIgT3I9KGUsdCxuKT0+KGU+MHx8dD4wKSYmKCFufHwhbi5zaGFkb3dSb290KTtmdW5jdGlvbiBrcihlLHQpe2xldCBuPWUudG91Y2hlcyxyPW4mJm4ubGVuZ3RoP25bMF06ZSx7b2Zmc2V0WDppLG9mZnNldFk6YX09cixvPSExLHMsYztpZihPcihpLGEsZS50YXJnZXQpKXM9aSxjPWE7ZWxzZXtsZXQgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3M9ci5jbGllbnRYLWUubGVmdCxjPXIuY2xpZW50WS1lLnRvcCxvPSEwfXJldHVybnt4OnMseTpjLGJveDpvfX1mdW5jdGlvbiBBcihlLHQpe2lmKGBuYXRpdmVgaW4gZSlyZXR1cm4gZTtsZXR7Y2FudmFzOm4sY3VycmVudERldmljZVBpeGVsUmF0aW86cn09dCxpPXdyKG4pLGE9aS5ib3hTaXppbmc9PT1gYm9yZGVyLWJveGAsbz1EcihpLGBwYWRkaW5nYCkscz1EcihpLGBib3JkZXJgLGB3aWR0aGApLHt4OmMseTpsLGJveDp1fT1rcihlLG4pLGQ9by5sZWZ0Kyh1JiZzLmxlZnQpLGY9by50b3ArKHUmJnMudG9wKSx7d2lkdGg6cCxoZWlnaHQ6bX09dDtyZXR1cm4gYSYmKHAtPW8ud2lkdGgrcy53aWR0aCxtLT1vLmhlaWdodCtzLmhlaWdodCkse3g6TWF0aC5yb3VuZCgoYy1kKS9wKm4ud2lkdGgvcikseTpNYXRoLnJvdW5kKChsLWYpL20qbi5oZWlnaHQvcil9fWZ1bmN0aW9uIGpyKGUsdCxuKXtsZXQgcixpO2lmKHQ9PT12b2lkIDB8fG49PT12b2lkIDApe2xldCBhPWUmJlNyKGUpO2lmKCFhKXQ9ZS5jbGllbnRXaWR0aCxuPWUuY2xpZW50SGVpZ2h0O2Vsc2V7bGV0IGU9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxvPXdyKGEpLHM9RHIobyxgYm9yZGVyYCxgd2lkdGhgKSxjPURyKG8sYHBhZGRpbmdgKTt0PWUud2lkdGgtYy53aWR0aC1zLndpZHRoLG49ZS5oZWlnaHQtYy5oZWlnaHQtcy5oZWlnaHQscj1DcihvLm1heFdpZHRoLGEsYGNsaWVudFdpZHRoYCksaT1DcihvLm1heEhlaWdodCxhLGBjbGllbnRIZWlnaHRgKX19cmV0dXJue3dpZHRoOnQsaGVpZ2h0Om4sbWF4V2lkdGg6cnx8bXQsbWF4SGVpZ2h0Oml8fG10fX12YXIgTXI9ZT0+TWF0aC5yb3VuZChlKjEwKS8xMDtmdW5jdGlvbiBOcihlLHQsbixyKXtsZXQgaT13cihlKSxhPURyKGksYG1hcmdpbmApLG89Q3IoaS5tYXhXaWR0aCxlLGBjbGllbnRXaWR0aGApfHxtdCxzPUNyKGkubWF4SGVpZ2h0LGUsYGNsaWVudEhlaWdodGApfHxtdCxjPWpyKGUsdCxuKSx7d2lkdGg6bCxoZWlnaHQ6dX09YztpZihpLmJveFNpemluZz09PWBjb250ZW50LWJveGApe2xldCBlPURyKGksYGJvcmRlcmAsYHdpZHRoYCksdD1EcihpLGBwYWRkaW5nYCk7bC09dC53aWR0aCtlLndpZHRoLHUtPXQuaGVpZ2h0K2UuaGVpZ2h0fXJldHVybiBsPU1hdGgubWF4KDAsbC1hLndpZHRoKSx1PU1hdGgubWF4KDAscj9sL3I6dS1hLmhlaWdodCksbD1NcihNYXRoLm1pbihsLG8sYy5tYXhXaWR0aCkpLHU9TXIoTWF0aC5taW4odSxzLGMubWF4SGVpZ2h0KSksbCYmIXUmJih1PU1yKGwvMikpLCh0IT09dm9pZCAwfHxuIT09dm9pZCAwKSYmciYmYy5oZWlnaHQmJnU+Yy5oZWlnaHQmJih1PWMuaGVpZ2h0LGw9TXIoTWF0aC5mbG9vcih1KnIpKSkse3dpZHRoOmwsaGVpZ2h0OnV9fWZ1bmN0aW9uIFByKGUsdCxuKXtsZXQgcj10fHwxLGk9TXIoZS5oZWlnaHQqciksYT1NcihlLndpZHRoKnIpO2UuaGVpZ2h0PU1yKGUuaGVpZ2h0KSxlLndpZHRoPU1yKGUud2lkdGgpO2xldCBvPWUuY2FudmFzO3JldHVybiBvLnN0eWxlJiYobnx8IW8uc3R5bGUuaGVpZ2h0JiYhby5zdHlsZS53aWR0aCkmJihvLnN0eWxlLmhlaWdodD1gJHtlLmhlaWdodH1weGAsby5zdHlsZS53aWR0aD1gJHtlLndpZHRofXB4YCksZS5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyE9PXJ8fG8uaGVpZ2h0IT09aXx8by53aWR0aCE9PWE/KGUuY3VycmVudERldmljZVBpeGVsUmF0aW89cixvLmhlaWdodD1pLG8ud2lkdGg9YSxlLmN0eC5zZXRUcmFuc2Zvcm0ociwwLDAsciwwLDApLCEwKTohMX12YXIgRnI9ZnVuY3Rpb24oKXtsZXQgZT0hMTt0cnl7bGV0IHQ9e2dldCBwYXNzaXZlKCl7cmV0dXJuIGU9ITAsITF9fTt4cigpJiYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHRlc3RgLG51bGwsdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRlc3RgLG51bGwsdCkpfWNhdGNoe31yZXR1cm4gZX0oKTtmdW5jdGlvbiBJcihlLHQpe2xldCBuPVRyKGUsdCkscj1uJiZuLm1hdGNoKC9eKFxkKykoXC5cZCspP3B4JC8pO3JldHVybiByPytyWzFdOnZvaWQgMH1mdW5jdGlvbiBMcihlLHQsbixyKXtyZXR1cm57eDplLngrbioodC54LWUueCkseTplLnkrbioodC55LWUueSl9fWZ1bmN0aW9uIFJyKGUsdCxuLHIpe3JldHVybnt4OmUueCtuKih0LngtZS54KSx5OnI9PT1gbWlkZGxlYD9uPC41P2UueTp0Lnk6cj09PWBhZnRlcmA/bjwxP2UueTp0Lnk6bj4wP3QueTplLnl9fWZ1bmN0aW9uIHpyKGUsdCxuLHIpe2xldCBpPXt4OmUuY3AyeCx5OmUuY3AyeX0sYT17eDp0LmNwMXgseTp0LmNwMXl9LG89THIoZSxpLG4pLHM9THIoaSxhLG4pLGM9THIoYSx0LG4pO3JldHVybiBMcihMcihvLHMsbiksTHIocyxjLG4pLG4pfXZhciBCcj1mdW5jdGlvbihlLHQpe3JldHVybnt4KG4pe3JldHVybiBlK2UrdC1ufSxzZXRXaWR0aChlKXt0PWV9LHRleHRBbGlnbihlKXtyZXR1cm4gZT09PWBjZW50ZXJgP2U6ZT09PWByaWdodGA/YGxlZnRgOmByaWdodGB9LHhQbHVzKGUsdCl7cmV0dXJuIGUtdH0sbGVmdEZvckx0cihlLHQpe3JldHVybiBlLXR9fX0sVnI9ZnVuY3Rpb24oKXtyZXR1cm57eChlKXtyZXR1cm4gZX0sc2V0V2lkdGgoZSl7fSx0ZXh0QWxpZ24oZSl7cmV0dXJuIGV9LHhQbHVzKGUsdCl7cmV0dXJuIGUrdH0sbGVmdEZvckx0cihlLHQpe3JldHVybiBlfX19O2Z1bmN0aW9uIEhyKGUsdCxuKXtyZXR1cm4gZT9Ccih0LG4pOlZyKCl9ZnVuY3Rpb24gVXIoZSx0KXtsZXQgbixyOyh0PT09YGx0cmB8fHQ9PT1gcnRsYCkmJihuPWUuY2FudmFzLnN0eWxlLHI9W24uZ2V0UHJvcGVydHlWYWx1ZShgZGlyZWN0aW9uYCksbi5nZXRQcm9wZXJ0eVByaW9yaXR5KGBkaXJlY3Rpb25gKV0sbi5zZXRQcm9wZXJ0eShgZGlyZWN0aW9uYCx0LGBpbXBvcnRhbnRgKSxlLnByZXZUZXh0RGlyZWN0aW9uPXIpfWZ1bmN0aW9uIFdyKGUsdCl7dCE9PXZvaWQgMCYmKGRlbGV0ZSBlLnByZXZUZXh0RGlyZWN0aW9uLGUuY2FudmFzLnN0eWxlLnNldFByb3BlcnR5KGBkaXJlY3Rpb25gLHRbMF0sdFsxXSkpfWZ1bmN0aW9uIEdyKGUpe3JldHVybiBlPT09YGFuZ2xlYD97YmV0d2VlbjpOdCxjb21wYXJlOk10LG5vcm1hbGl6ZTpIfTp7YmV0d2VlbjpGdCxjb21wYXJlOihlLHQpPT5lLXQsbm9ybWFsaXplOmU9PmV9fWZ1bmN0aW9uIEtyKHtzdGFydDplLGVuZDp0LGNvdW50Om4sbG9vcDpyLHN0eWxlOml9KXtyZXR1cm57c3RhcnQ6ZSVuLGVuZDp0JW4sbG9vcDpyJiYodC1lKzEpJW49PT0wLHN0eWxlOml9fWZ1bmN0aW9uIHFyKGUsdCxuKXtsZXR7cHJvcGVydHk6cixzdGFydDppLGVuZDphfT1uLHtiZXR3ZWVuOm8sbm9ybWFsaXplOnN9PUdyKHIpLGM9dC5sZW5ndGgse3N0YXJ0OmwsZW5kOnUsbG9vcDpkfT1lLGYscDtpZihkKXtmb3IobCs9Yyx1Kz1jLGY9MCxwPWM7ZjxwJiZvKHModFtsJWNdW3JdKSxpLGEpOysrZilsLS0sdS0tO2wlPWMsdSU9Y31yZXR1cm4gdTxsJiYodSs9Yykse3N0YXJ0OmwsZW5kOnUsbG9vcDpkLHN0eWxlOmUuc3R5bGV9fWZ1bmN0aW9uIEpyKGUsdCxuKXtpZighbilyZXR1cm5bZV07bGV0e3Byb3BlcnR5OnIsc3RhcnQ6aSxlbmQ6YX09bixvPXQubGVuZ3RoLHtjb21wYXJlOnMsYmV0d2VlbjpjLG5vcm1hbGl6ZTpsfT1HcihyKSx7c3RhcnQ6dSxlbmQ6ZCxsb29wOmYsc3R5bGU6cH09cXIoZSx0LG4pLG09W10saD0hMSxnPW51bGwsXyx2LHksYj0oKT0+YyhpLHksXykmJnMoaSx5KSE9PTAseD0oKT0+cyhhLF8pPT09MHx8YyhhLHksXyksUz0oKT0+aHx8YigpLEM9KCk9PiFofHx4KCk7Zm9yKGxldCBlPXUsbj11O2U8PWQ7KytlKXY9dFtlJW9dLCF2LnNraXAmJihfPWwodltyXSksXyE9PXkmJihoPWMoXyxpLGEpLGc9PT1udWxsJiZTKCkmJihnPXMoXyxpKT09PTA/ZTpuKSxnIT09bnVsbCYmQygpJiYobS5wdXNoKEtyKHtzdGFydDpnLGVuZDplLGxvb3A6Zixjb3VudDpvLHN0eWxlOnB9KSksZz1udWxsKSxuPWUseT1fKSk7cmV0dXJuIGchPT1udWxsJiZtLnB1c2goS3Ioe3N0YXJ0OmcsZW5kOmQsbG9vcDpmLGNvdW50Om8sc3R5bGU6cH0pKSxtfWZ1bmN0aW9uIFlyKGUsdCl7bGV0IG49W10scj1lLnNlZ21lbnRzO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtsZXQgYT1KcihyW2ldLGUucG9pbnRzLHQpO2EubGVuZ3RoJiZuLnB1c2goLi4uYSl9cmV0dXJuIG59ZnVuY3Rpb24gWHIoZSx0LG4scil7bGV0IGk9MCxhPXQtMTtpZihuJiYhcilmb3IoO2k8dCYmIWVbaV0uc2tpcDspaSsrO2Zvcig7aTx0JiZlW2ldLnNraXA7KWkrKztmb3IoaSU9dCxuJiYoYSs9aSk7YT5pJiZlW2EldF0uc2tpcDspYS0tO3JldHVybiBhJT10LHtzdGFydDppLGVuZDphfX1mdW5jdGlvbiBacihlLHQsbixyKXtsZXQgaT1lLmxlbmd0aCxhPVtdLG89dCxzPWVbdF0sYztmb3IoYz10KzE7Yzw9bjsrK2Mpe2xldCBuPWVbYyVpXTtuLnNraXB8fG4uc3RvcD9zLnNraXB8fChyPSExLGEucHVzaCh7c3RhcnQ6dCVpLGVuZDooYy0xKSVpLGxvb3A6cn0pLHQ9bz1uLnN0b3A/YzpudWxsKToobz1jLHMuc2tpcCYmKHQ9YykpLHM9bn1yZXR1cm4gbyE9PW51bGwmJmEucHVzaCh7c3RhcnQ6dCVpLGVuZDpvJWksbG9vcDpyfSksYX1mdW5jdGlvbiBRcihlLHQpe2xldCBuPWUucG9pbnRzLHI9ZS5vcHRpb25zLnNwYW5HYXBzLGk9bi5sZW5ndGg7aWYoIWkpcmV0dXJuW107bGV0IGE9ISFlLl9sb29wLHtzdGFydDpvLGVuZDpzfT1YcihuLGksYSxyKTtyZXR1cm4gcj09PSEwPyRyKGUsW3tzdGFydDpvLGVuZDpzLGxvb3A6YX1dLG4sdCk6JHIoZSxacihuLG8sczxvP3MraTpzLCEhZS5fZnVsbExvb3AmJm89PT0wJiZzPT09aS0xKSxuLHQpfWZ1bmN0aW9uICRyKGUsdCxuLHIpe3JldHVybiFyfHwhci5zZXRDb250ZXh0fHwhbj90OmVpKGUsdCxuLHIpfWZ1bmN0aW9uIGVpKGUsdCxuLHIpe2xldCBpPWUuX2NoYXJ0LmdldENvbnRleHQoKSxhPXRpKGUub3B0aW9ucykse19kYXRhc2V0SW5kZXg6byxvcHRpb25zOntzcGFuR2FwczpzfX09ZSxjPW4ubGVuZ3RoLGw9W10sdT1hLGQ9dFswXS5zdGFydCxmPWQ7ZnVuY3Rpb24gcChlLHQscixpKXtsZXQgYT1zPy0xOjE7aWYoZSE9PXQpe2ZvcihlKz1jO25bZSVjXS5za2lwOyllLT1hO2Zvcig7blt0JWNdLnNraXA7KXQrPWE7ZSVjIT09dCVjJiYobC5wdXNoKHtzdGFydDplJWMsZW5kOnQlYyxsb29wOnIsc3R5bGU6aX0pLHU9aSxkPXQlYyl9fWZvcihsZXQgZSBvZiB0KXtkPXM/ZDplLnN0YXJ0O2xldCB0PW5bZCVjXSxhO2ZvcihmPWQrMTtmPD1lLmVuZDtmKyspe2xldCBzPW5bZiVjXTthPXRpKHIuc2V0Q29udGV4dChHbihpLHt0eXBlOmBzZWdtZW50YCxwMDp0LHAxOnMscDBEYXRhSW5kZXg6KGYtMSklYyxwMURhdGFJbmRleDpmJWMsZGF0YXNldEluZGV4Om99KSkpLG5pKGEsdSkmJnAoZCxmLTEsZS5sb29wLHUpLHQ9cyx1PWF9ZDxmLTEmJnAoZCxmLTEsZS5sb29wLHUpfXJldHVybiBsfWZ1bmN0aW9uIHRpKGUpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6ZS5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ2FwU3R5bGU6ZS5ib3JkZXJDYXBTdHlsZSxib3JkZXJEYXNoOmUuYm9yZGVyRGFzaCxib3JkZXJEYXNoT2Zmc2V0OmUuYm9yZGVyRGFzaE9mZnNldCxib3JkZXJKb2luU3R5bGU6ZS5ib3JkZXJKb2luU3R5bGUsYm9yZGVyV2lkdGg6ZS5ib3JkZXJXaWR0aCxib3JkZXJDb2xvcjplLmJvcmRlckNvbG9yfX1mdW5jdGlvbiBuaShlLHQpe2lmKCF0KXJldHVybiExO2xldCBuPVtdLHI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdG4odCk/KG4uaW5jbHVkZXModCl8fG4ucHVzaCh0KSxuLmluZGV4T2YodCkpOnR9O3JldHVybiBKU09OLnN0cmluZ2lmeShlLHIpIT09SlNPTi5zdHJpbmdpZnkodCxyKX1mdW5jdGlvbiByaShlLHQsbil7cmV0dXJuIGUub3B0aW9ucy5jbGlwP2Vbbl06dFtuXX1mdW5jdGlvbiBpaShlLHQpe2xldHt4U2NhbGU6bix5U2NhbGU6cn09ZTtyZXR1cm4gbiYmcj97bGVmdDpyaShuLHQsYGxlZnRgKSxyaWdodDpyaShuLHQsYHJpZ2h0YCksdG9wOnJpKHIsdCxgdG9wYCksYm90dG9tOnJpKHIsdCxgYm90dG9tYCl9OnR9ZnVuY3Rpb24gYWkoZSx0KXtsZXQgbj10Ll9jbGlwO2lmKG4uZGlzYWJsZWQpcmV0dXJuITE7bGV0IHI9aWkodCxlLmNoYXJ0QXJlYSk7cmV0dXJue2xlZnQ6bi5sZWZ0PT09ITE/MDpyLmxlZnQtKG4ubGVmdD09PSEwPzA6bi5sZWZ0KSxyaWdodDpuLnJpZ2h0PT09ITE/ZS53aWR0aDpyLnJpZ2h0KyhuLnJpZ2h0PT09ITA/MDpuLnJpZ2h0KSx0b3A6bi50b3A9PT0hMT8wOnIudG9wLShuLnRvcD09PSEwPzA6bi50b3ApLGJvdHRvbTpuLmJvdHRvbT09PSExP2UuaGVpZ2h0OnIuYm90dG9tKyhuLmJvdHRvbT09PSEwPzA6bi5ib3R0b20pfX12YXIgWT1uZXcgY2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9yZXF1ZXN0PW51bGwsdGhpcy5fY2hhcnRzPW5ldyBNYXAsdGhpcy5fcnVubmluZz0hMSx0aGlzLl9sYXN0RGF0ZT12b2lkIDB9X25vdGlmeShlLHQsbixyKXtsZXQgaT10Lmxpc3RlbmVyc1tyXSxhPXQuZHVyYXRpb247aS5mb3JFYWNoKHI9PnIoe2NoYXJ0OmUsaW5pdGlhbDp0LmluaXRpYWwsbnVtU3RlcHM6YSxjdXJyZW50U3RlcDpNYXRoLm1pbihuLXQuc3RhcnQsYSl9KSl9X3JlZnJlc2goKXt0aGlzLl9yZXF1ZXN0fHw9KHRoaXMuX3J1bm5pbmc9ITAsV3QuY2FsbCh3aW5kb3csKCk9Pnt0aGlzLl91cGRhdGUoKSx0aGlzLl9yZXF1ZXN0PW51bGwsdGhpcy5fcnVubmluZyYmdGhpcy5fcmVmcmVzaCgpfSkpfV91cGRhdGUoZT1EYXRlLm5vdygpKXtsZXQgdD0wO3RoaXMuX2NoYXJ0cy5mb3JFYWNoKChuLHIpPT57aWYoIW4ucnVubmluZ3x8IW4uaXRlbXMubGVuZ3RoKXJldHVybjtsZXQgaT1uLml0ZW1zLGE9aS5sZW5ndGgtMSxvPSExLHM7Zm9yKDthPj0wOy0tYSlzPWlbYV0scy5fYWN0aXZlPyhzLl90b3RhbD5uLmR1cmF0aW9uJiYobi5kdXJhdGlvbj1zLl90b3RhbCkscy50aWNrKGUpLG89ITApOihpW2FdPWlbaS5sZW5ndGgtMV0saS5wb3AoKSk7byYmKHIuZHJhdygpLHRoaXMuX25vdGlmeShyLG4sZSxgcHJvZ3Jlc3NgKSksaS5sZW5ndGh8fChuLnJ1bm5pbmc9ITEsdGhpcy5fbm90aWZ5KHIsbixlLGBjb21wbGV0ZWApLG4uaW5pdGlhbD0hMSksdCs9aS5sZW5ndGh9KSx0aGlzLl9sYXN0RGF0ZT1lLHQ9PT0wJiYodGhpcy5fcnVubmluZz0hMSl9X2dldEFuaW1zKGUpe2xldCB0PXRoaXMuX2NoYXJ0cyxuPXQuZ2V0KGUpO3JldHVybiBufHwobj17cnVubmluZzohMSxpbml0aWFsOiEwLGl0ZW1zOltdLGxpc3RlbmVyczp7Y29tcGxldGU6W10scHJvZ3Jlc3M6W119fSx0LnNldChlLG4pKSxufWxpc3RlbihlLHQsbil7dGhpcy5fZ2V0QW5pbXMoZSkubGlzdGVuZXJzW3RdLnB1c2gobil9YWRkKGUsdCl7IXR8fCF0Lmxlbmd0aHx8dGhpcy5fZ2V0QW5pbXMoZSkuaXRlbXMucHVzaCguLi50KX1oYXMoZSl7cmV0dXJuIHRoaXMuX2dldEFuaW1zKGUpLml0ZW1zLmxlbmd0aD4wfXN0YXJ0KGUpe2xldCB0PXRoaXMuX2NoYXJ0cy5nZXQoZSk7dCYmKHQucnVubmluZz0hMCx0LnN0YXJ0PURhdGUubm93KCksdC5kdXJhdGlvbj10Lml0ZW1zLnJlZHVjZSgoZSx0KT0+TWF0aC5tYXgoZSx0Ll9kdXJhdGlvbiksMCksdGhpcy5fcmVmcmVzaCgpKX1ydW5uaW5nKGUpe2lmKCF0aGlzLl9ydW5uaW5nKXJldHVybiExO2xldCB0PXRoaXMuX2NoYXJ0cy5nZXQoZSk7cmV0dXJuISghdHx8IXQucnVubmluZ3x8IXQuaXRlbXMubGVuZ3RoKX1zdG9wKGUpe2xldCB0PXRoaXMuX2NoYXJ0cy5nZXQoZSk7aWYoIXR8fCF0Lml0ZW1zLmxlbmd0aClyZXR1cm47bGV0IG49dC5pdGVtcyxyPW4ubGVuZ3RoLTE7Zm9yKDtyPj0wOy0tciluW3JdLmNhbmNlbCgpO3QuaXRlbXM9W10sdGhpcy5fbm90aWZ5KGUsdCxEYXRlLm5vdygpLGBjb21wbGV0ZWApfXJlbW92ZShlKXtyZXR1cm4gdGhpcy5fY2hhcnRzLmRlbGV0ZShlKX19LG9pPWB0cmFuc3BhcmVudGAsc2k9e2Jvb2xlYW4oZSx0LG4pe3JldHVybiBuPi41P3Q6ZX0sY29sb3IoZSx0LG4pe2xldCByPW5uKGV8fG9pKSxpPXIudmFsaWQmJm5uKHR8fG9pKTtyZXR1cm4gaSYmaS52YWxpZD9pLm1peChyLG4pLmhleFN0cmluZygpOnR9LG51bWJlcihlLHQsbil7cmV0dXJuIGUrKHQtZSkqbn19LGNpPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuLHIpe2xldCBpPXRbbl07cj1VbihbZS50byxyLGksZS5mcm9tXSk7bGV0IGE9VW4oW2UuZnJvbSxpLHJdKTt0aGlzLl9hY3RpdmU9ITAsdGhpcy5fZm49ZS5mbnx8c2lbZS50eXBlfHx0eXBlb2YgYV0sdGhpcy5fZWFzaW5nPWVuW2UuZWFzaW5nXXx8ZW4ubGluZWFyLHRoaXMuX3N0YXJ0PU1hdGguZmxvb3IoRGF0ZS5ub3coKSsoZS5kZWxheXx8MCkpLHRoaXMuX2R1cmF0aW9uPXRoaXMuX3RvdGFsPU1hdGguZmxvb3IoZS5kdXJhdGlvbiksdGhpcy5fbG9vcD0hIWUubG9vcCx0aGlzLl90YXJnZXQ9dCx0aGlzLl9wcm9wPW4sdGhpcy5fZnJvbT1hLHRoaXMuX3RvPXIsdGhpcy5fcHJvbWlzZXM9dm9pZCAwfWFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9dXBkYXRlKGUsdCxuKXtpZih0aGlzLl9hY3RpdmUpe3RoaXMuX25vdGlmeSghMSk7bGV0IHI9dGhpcy5fdGFyZ2V0W3RoaXMuX3Byb3BdLGk9bi10aGlzLl9zdGFydCxhPXRoaXMuX2R1cmF0aW9uLWk7dGhpcy5fc3RhcnQ9bix0aGlzLl9kdXJhdGlvbj1NYXRoLmZsb29yKE1hdGgubWF4KGEsZS5kdXJhdGlvbikpLHRoaXMuX3RvdGFsKz1pLHRoaXMuX2xvb3A9ISFlLmxvb3AsdGhpcy5fdG89VW4oW2UudG8sdCxyLGUuZnJvbV0pLHRoaXMuX2Zyb209VW4oW2UuZnJvbSxyLHRdKX19Y2FuY2VsKCl7dGhpcy5fYWN0aXZlJiYodGhpcy50aWNrKERhdGUubm93KCkpLHRoaXMuX2FjdGl2ZT0hMSx0aGlzLl9ub3RpZnkoITEpKX10aWNrKGUpe2xldCB0PWUtdGhpcy5fc3RhcnQsbj10aGlzLl9kdXJhdGlvbixyPXRoaXMuX3Byb3AsaT10aGlzLl9mcm9tLGE9dGhpcy5fbG9vcCxvPXRoaXMuX3RvLHM7aWYodGhpcy5fYWN0aXZlPWkhPT1vJiYoYXx8dDxuKSwhdGhpcy5fYWN0aXZlKXt0aGlzLl90YXJnZXRbcl09byx0aGlzLl9ub3RpZnkoITApO3JldHVybn1pZih0PDApe3RoaXMuX3RhcmdldFtyXT1pO3JldHVybn1zPXQvbiUyLHM9YSYmcz4xPzItczpzLHM9dGhpcy5fZWFzaW5nKE1hdGgubWluKDEsTWF0aC5tYXgoMCxzKSkpLHRoaXMuX3RhcmdldFtyXT10aGlzLl9mbihpLG8scyl9d2FpdCgpe2xldCBlPXRoaXMuX3Byb21pc2VzfHw9W107cmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57ZS5wdXNoKHtyZXM6dCxyZWo6bn0pfSl9X25vdGlmeShlKXtsZXQgdD1lP2ByZXNgOmByZWpgLG49dGhpcy5fcHJvbWlzZXN8fFtdO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKW5bZV1bdF0oKX19LGxpPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fY2hhcnQ9ZSx0aGlzLl9wcm9wZXJ0aWVzPW5ldyBNYXAsdGhpcy5jb25maWd1cmUodCl9Y29uZmlndXJlKGUpe2lmKCFOKGUpKXJldHVybjtsZXQgdD1PYmplY3Qua2V5cyhHLmFuaW1hdGlvbiksbj10aGlzLl9wcm9wZXJ0aWVzO09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmZvckVhY2gocj0+e2xldCBpPWVbcl07aWYoIU4oaSkpcmV0dXJuO2xldCBhPXt9O2ZvcihsZXQgZSBvZiB0KWFbZV09aVtlXTsoTShpLnByb3BlcnRpZXMpJiZpLnByb3BlcnRpZXN8fFtyXSkuZm9yRWFjaChlPT57KGU9PT1yfHwhbi5oYXMoZSkpJiZuLnNldChlLGEpfSl9KX1fYW5pbWF0ZU9wdGlvbnMoZSx0KXtsZXQgbj10Lm9wdGlvbnMscj1kaShlLG4pO2lmKCFyKXJldHVybltdO2xldCBpPXRoaXMuX2NyZWF0ZUFuaW1hdGlvbnMocixuKTtyZXR1cm4gbi4kc2hhcmVkJiZ1aShlLm9wdGlvbnMuJGFuaW1hdGlvbnMsbikudGhlbigoKT0+e2Uub3B0aW9ucz1ufSwoKT0+e30pLGl9X2NyZWF0ZUFuaW1hdGlvbnMoZSx0KXtsZXQgbj10aGlzLl9wcm9wZXJ0aWVzLHI9W10saT1lLiRhbmltYXRpb25zfHw9e30sYT1PYmplY3Qua2V5cyh0KSxvPURhdGUubm93KCkscztmb3Iocz1hLmxlbmd0aC0xO3M+PTA7LS1zKXtsZXQgYz1hW3NdO2lmKGMuY2hhckF0KDApPT09YCRgKWNvbnRpbnVlO2lmKGM9PT1gb3B0aW9uc2Ape3IucHVzaCguLi50aGlzLl9hbmltYXRlT3B0aW9ucyhlLHQpKTtjb250aW51ZX1sZXQgbD10W2NdLHU9aVtjXSxkPW4uZ2V0KGMpO2lmKHUpe2lmKGQmJnUuYWN0aXZlKCkpe3UudXBkYXRlKGQsbCxvKTtjb250aW51ZX11LmNhbmNlbCgpfWlmKCFkfHwhZC5kdXJhdGlvbil7ZVtjXT1sO2NvbnRpbnVlfWlbY109dT1uZXcgY2koZCxlLGMsbCksci5wdXNoKHUpfXJldHVybiByfXVwZGF0ZShlLHQpe2lmKHRoaXMuX3Byb3BlcnRpZXMuc2l6ZT09PTApe09iamVjdC5hc3NpZ24oZSx0KTtyZXR1cm59bGV0IG49dGhpcy5fY3JlYXRlQW5pbWF0aW9ucyhlLHQpO2lmKG4ubGVuZ3RoKXJldHVybiBZLmFkZCh0aGlzLl9jaGFydCxuKSwhMH19O2Z1bmN0aW9uIHVpKGUsdCl7bGV0IG49W10scj1PYmplY3Qua2V5cyh0KTtmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyl7bGV0IGk9ZVtyW3RdXTtpJiZpLmFjdGl2ZSgpJiZuLnB1c2goaS53YWl0KCkpfXJldHVybiBQcm9taXNlLmFsbChuKX1mdW5jdGlvbiBkaShlLHQpe2lmKCF0KXJldHVybjtsZXQgbj1lLm9wdGlvbnM7aWYoIW4pe2Uub3B0aW9ucz10O3JldHVybn1yZXR1cm4gbi4kc2hhcmVkJiYoZS5vcHRpb25zPW49T2JqZWN0LmFzc2lnbih7fSxuLHskc2hhcmVkOiExLCRhbmltYXRpb25zOnt9fSkpLG59ZnVuY3Rpb24gZmkoZSx0KXtsZXQgbj1lJiZlLm9wdGlvbnN8fHt9LHI9bi5yZXZlcnNlLGk9bi5taW49PT12b2lkIDA/dDowLGE9bi5tYXg9PT12b2lkIDA/dDowO3JldHVybntzdGFydDpyP2E6aSxlbmQ6cj9pOmF9fWZ1bmN0aW9uIHBpKGUsdCxuKXtpZihuPT09ITEpcmV0dXJuITE7bGV0IHI9ZmkoZSxuKSxpPWZpKHQsbik7cmV0dXJue3RvcDppLmVuZCxyaWdodDpyLmVuZCxib3R0b206aS5zdGFydCxsZWZ0OnIuc3RhcnR9fWZ1bmN0aW9uIG1pKGUpe2xldCB0LG4scixpO3JldHVybiBOKGUpPyh0PWUudG9wLG49ZS5yaWdodCxyPWUuYm90dG9tLGk9ZS5sZWZ0KTp0PW49cj1pPWUse3RvcDp0LHJpZ2h0Om4sYm90dG9tOnIsbGVmdDppLGRpc2FibGVkOmU9PT0hMX19ZnVuY3Rpb24gaGkoZSx0KXtsZXQgbj1bXSxyPWUuX2dldFNvcnRlZERhdGFzZXRNZXRhcyh0KSxpLGE7Zm9yKGk9MCxhPXIubGVuZ3RoO2k8YTsrK2kpbi5wdXNoKHJbaV0uaW5kZXgpO3JldHVybiBufWZ1bmN0aW9uIGdpKGUsdCxuLHI9e30pe2xldCBpPWUua2V5cyxhPXIubW9kZT09PWBzaW5nbGVgLG8scyxjLGw7aWYodD09PW51bGwpcmV0dXJuO2xldCB1PSExO2ZvcihvPTAscz1pLmxlbmd0aDtvPHM7KytvKXtpZihjPStpW29dLGM9PT1uKXtpZih1PSEwLHIuYWxsKWNvbnRpbnVlO2JyZWFrfWw9ZS52YWx1ZXNbY10sUChsKSYmKGF8fHQ9PT0wfHx5dCh0KT09PXl0KGwpKSYmKHQrPWwpfXJldHVybiF1JiYhci5hbGw/MDp0fWZ1bmN0aW9uIF9pKGUsdCl7bGV0e2lTY2FsZTpuLHZTY2FsZTpyfT10LGk9bi5heGlzPT09YHhgP2B4YDpgeWAsYT1yLmF4aXM9PT1geGA/YHhgOmB5YCxvPU9iamVjdC5rZXlzKGUpLHM9QXJyYXkoby5sZW5ndGgpLGMsbCx1O2ZvcihjPTAsbD1vLmxlbmd0aDtjPGw7KytjKXU9b1tjXSxzW2NdPXtbaV06dSxbYV06ZVt1XX07cmV0dXJuIHN9ZnVuY3Rpb24gdmkoZSx0KXtsZXQgbj1lJiZlLm9wdGlvbnMuc3RhY2tlZDtyZXR1cm4gbnx8bj09PXZvaWQgMCYmdC5zdGFjayE9PXZvaWQgMH1mdW5jdGlvbiB5aShlLHQsbil7cmV0dXJuYCR7ZS5pZH0uJHt0LmlkfS4ke24uc3RhY2t8fG4udHlwZX1gfWZ1bmN0aW9uIGJpKGUpe2xldHttaW46dCxtYXg6bixtaW5EZWZpbmVkOnIsbWF4RGVmaW5lZDppfT1lLmdldFVzZXJCb3VuZHMoKTtyZXR1cm57bWluOnI/dDotMS8wLG1heDppP246MS8wfX1mdW5jdGlvbiB4aShlLHQsbil7bGV0IHI9ZVt0XXx8KGVbdF09e30pO3JldHVybiByW25dfHwocltuXT17fSl9ZnVuY3Rpb24gU2koZSx0LG4scil7Zm9yKGxldCBpIG9mIHQuZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMocikucmV2ZXJzZSgpKXtsZXQgdD1lW2kuaW5kZXhdO2lmKG4mJnQ+MHx8IW4mJnQ8MClyZXR1cm4gaS5pbmRleH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDaShlLHQpe2xldHtjaGFydDpuLF9jYWNoZWRNZXRhOnJ9PWUsaT1uLl9zdGFja3N8fD17fSx7aVNjYWxlOmEsdlNjYWxlOm8saW5kZXg6c309cixjPWEuYXhpcyxsPW8uYXhpcyx1PXlpKGEsbyxyKSxkPXQubGVuZ3RoLGY7Zm9yKGxldCBlPTA7ZTxkOysrZSl7bGV0IG49dFtlXSx7W2NdOmEsW2xdOmR9PW4scD1uLl9zdGFja3N8fD17fTtmPXBbbF09eGkoaSx1LGEpLGZbc109ZCxmLl90b3A9U2koZixvLCEwLHIudHlwZSksZi5fYm90dG9tPVNpKGYsbywhMSxyLnR5cGUpO2xldCBtPWYuX3Zpc3VhbFZhbHVlc3x8KGYuX3Zpc3VhbFZhbHVlcz17fSk7bVtzXT1kfX1mdW5jdGlvbiB3aShlLHQpe2xldCBuPWUuc2NhbGVzO3JldHVybiBPYmplY3Qua2V5cyhuKS5maWx0ZXIoZT0+bltlXS5heGlzPT09dCkuc2hpZnQoKX1mdW5jdGlvbiBUaShlLHQpe3JldHVybiBHbihlLHthY3RpdmU6ITEsZGF0YXNldDp2b2lkIDAsZGF0YXNldEluZGV4OnQsaW5kZXg6dCxtb2RlOmBkZWZhdWx0YCx0eXBlOmBkYXRhc2V0YH0pfWZ1bmN0aW9uIEVpKGUsdCxuKXtyZXR1cm4gR24oZSx7YWN0aXZlOiExLGRhdGFJbmRleDp0LHBhcnNlZDp2b2lkIDAscmF3OnZvaWQgMCxlbGVtZW50Om4saW5kZXg6dCxtb2RlOmBkZWZhdWx0YCx0eXBlOmBkYXRhYH0pfWZ1bmN0aW9uIERpKGUsdCl7bGV0IG49ZS5jb250cm9sbGVyLmluZGV4LHI9ZS52U2NhbGUmJmUudlNjYWxlLmF4aXM7aWYocil7dHx8PWUuX3BhcnNlZDtmb3IobGV0IGUgb2YgdCl7bGV0IHQ9ZS5fc3RhY2tzO2lmKCF0fHx0W3JdPT09dm9pZCAwfHx0W3JdW25dPT09dm9pZCAwKXJldHVybjtkZWxldGUgdFtyXVtuXSx0W3JdLl92aXN1YWxWYWx1ZXMhPT12b2lkIDAmJnRbcl0uX3Zpc3VhbFZhbHVlc1tuXSE9PXZvaWQgMCYmZGVsZXRlIHRbcl0uX3Zpc3VhbFZhbHVlc1tuXX19fXZhciBPaT1lPT5lPT09YHJlc2V0YHx8ZT09PWBub25lYCxraT0oZSx0KT0+dD9lOk9iamVjdC5hc3NpZ24oe30sZSksQWk9KGUsdCxuKT0+ZSYmIXQuaGlkZGVuJiZ0Ll9zdGFja2VkJiZ7a2V5czpoaShuLCEwKSx2YWx1ZXM6bnVsbH0samk9Y2xhc3N7c3RhdGljIGRlZmF1bHRzPXt9O3N0YXRpYyBkYXRhc2V0RWxlbWVudFR5cGU9bnVsbDtzdGF0aWMgZGF0YUVsZW1lbnRUeXBlPW51bGw7Y29uc3RydWN0b3IoZSx0KXt0aGlzLmNoYXJ0PWUsdGhpcy5fY3R4PWUuY3R4LHRoaXMuaW5kZXg9dCx0aGlzLl9jYWNoZWREYXRhT3B0cz17fSx0aGlzLl9jYWNoZWRNZXRhPXRoaXMuZ2V0TWV0YSgpLHRoaXMuX3R5cGU9dGhpcy5fY2FjaGVkTWV0YS50eXBlLHRoaXMub3B0aW9ucz12b2lkIDAsdGhpcy5fcGFyc2luZz0hMSx0aGlzLl9kYXRhPXZvaWQgMCx0aGlzLl9vYmplY3REYXRhPXZvaWQgMCx0aGlzLl9zaGFyZWRPcHRpb25zPXZvaWQgMCx0aGlzLl9kcmF3U3RhcnQ9dm9pZCAwLHRoaXMuX2RyYXdDb3VudD12b2lkIDAsdGhpcy5lbmFibGVPcHRpb25TaGFyaW5nPSExLHRoaXMuc3VwcG9ydHNEZWNpbWF0aW9uPSExLHRoaXMuJGNvbnRleHQ9dm9pZCAwLHRoaXMuX3N5bmNMaXN0PVtdLHRoaXMuZGF0YXNldEVsZW1lbnRUeXBlPW5ldy50YXJnZXQuZGF0YXNldEVsZW1lbnRUeXBlLHRoaXMuZGF0YUVsZW1lbnRUeXBlPW5ldy50YXJnZXQuZGF0YUVsZW1lbnRUeXBlLHRoaXMuaW5pdGlhbGl6ZSgpfWluaXRpYWxpemUoKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhO3RoaXMuY29uZmlndXJlKCksdGhpcy5saW5rU2NhbGVzKCksZS5fc3RhY2tlZD12aShlLnZTY2FsZSxlKSx0aGlzLmFkZEVsZW1lbnRzKCksdGhpcy5vcHRpb25zLmZpbGwmJiF0aGlzLmNoYXJ0LmlzUGx1Z2luRW5hYmxlZChgZmlsbGVyYCkmJmNvbnNvbGUud2FybihgVHJpZWQgdG8gdXNlIHRoZSAnZmlsbCcgb3B0aW9uIHdpdGhvdXQgdGhlICdGaWxsZXInIHBsdWdpbiBlbmFibGVkLiBQbGVhc2UgaW1wb3J0IGFuZCByZWdpc3RlciB0aGUgJ0ZpbGxlcicgcGx1Z2luIGFuZCBtYWtlIHN1cmUgaXQgaXMgbm90IGRpc2FibGVkIGluIHRoZSBvcHRpb25zYCl9dXBkYXRlSW5kZXgoZSl7dGhpcy5pbmRleCE9PWUmJkRpKHRoaXMuX2NhY2hlZE1ldGEpLHRoaXMuaW5kZXg9ZX1saW5rU2NhbGVzKCl7bGV0IGU9dGhpcy5jaGFydCx0PXRoaXMuX2NhY2hlZE1ldGEsbj10aGlzLmdldERhdGFzZXQoKSxyPShlLHQsbixyKT0+ZT09PWB4YD90OmU9PT1gcmA/cjpuLGk9dC54QXhpc0lEPUkobi54QXhpc0lELHdpKGUsYHhgKSksYT10LnlBeGlzSUQ9SShuLnlBeGlzSUQsd2koZSxgeWApKSxvPXQuckF4aXNJRD1JKG4uckF4aXNJRCx3aShlLGByYCkpLHM9dC5pbmRleEF4aXMsYz10LmlBeGlzSUQ9cihzLGksYSxvKSxsPXQudkF4aXNJRD1yKHMsYSxpLG8pO3QueFNjYWxlPXRoaXMuZ2V0U2NhbGVGb3JJZChpKSx0LnlTY2FsZT10aGlzLmdldFNjYWxlRm9ySWQoYSksdC5yU2NhbGU9dGhpcy5nZXRTY2FsZUZvcklkKG8pLHQuaVNjYWxlPXRoaXMuZ2V0U2NhbGVGb3JJZChjKSx0LnZTY2FsZT10aGlzLmdldFNjYWxlRm9ySWQobCl9Z2V0RGF0YXNldCgpe3JldHVybiB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdGhpcy5pbmRleF19Z2V0TWV0YSgpe3JldHVybiB0aGlzLmNoYXJ0LmdldERhdGFzZXRNZXRhKHRoaXMuaW5kZXgpfWdldFNjYWxlRm9ySWQoZSl7cmV0dXJuIHRoaXMuY2hhcnQuc2NhbGVzW2VdfV9nZXRPdGhlclNjYWxlKGUpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGE7cmV0dXJuIGU9PT10LmlTY2FsZT90LnZTY2FsZTp0LmlTY2FsZX1yZXNldCgpe3RoaXMuX3VwZGF0ZShgcmVzZXRgKX1fZGVzdHJveSgpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGE7dGhpcy5fZGF0YSYmSHQodGhpcy5fZGF0YSx0aGlzKSxlLl9zdGFja2VkJiZEaShlKX1fZGF0YUNoZWNrKCl7bGV0IGU9dGhpcy5nZXREYXRhc2V0KCksdD1lLmRhdGF8fD1bXSxuPXRoaXMuX2RhdGE7aWYoTih0KSl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YTt0aGlzLl9kYXRhPV9pKHQsZSl9ZWxzZSBpZihuIT09dCl7aWYobil7SHQobix0aGlzKTtsZXQgZT10aGlzLl9jYWNoZWRNZXRhO0RpKGUpLGUuX3BhcnNlZD1bXX10JiZPYmplY3QuaXNFeHRlbnNpYmxlKHQpJiZWdCh0LHRoaXMpLHRoaXMuX3N5bmNMaXN0PVtdLHRoaXMuX2RhdGE9dH19YWRkRWxlbWVudHMoKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhO3RoaXMuX2RhdGFDaGVjaygpLHRoaXMuZGF0YXNldEVsZW1lbnRUeXBlJiYoZS5kYXRhc2V0PW5ldyB0aGlzLmRhdGFzZXRFbGVtZW50VHlwZSl9YnVpbGRPclVwZGF0ZUVsZW1lbnRzKGUpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGEsbj10aGlzLmdldERhdGFzZXQoKSxyPSExO3RoaXMuX2RhdGFDaGVjaygpO2xldCBpPXQuX3N0YWNrZWQ7dC5fc3RhY2tlZD12aSh0LnZTY2FsZSx0KSx0LnN0YWNrIT09bi5zdGFjayYmKHI9ITAsRGkodCksdC5zdGFjaz1uLnN0YWNrKSx0aGlzLl9yZXN5bmNFbGVtZW50cyhlKSwocnx8aSE9PXQuX3N0YWNrZWQpJiYoQ2kodGhpcyx0Ll9wYXJzZWQpLHQuX3N0YWNrZWQ9dmkodC52U2NhbGUsdCkpfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMuY2hhcnQuY29uZmlnLHQ9ZS5kYXRhc2V0U2NvcGVLZXlzKHRoaXMuX3R5cGUpLG49ZS5nZXRPcHRpb25TY29wZXModGhpcy5nZXREYXRhc2V0KCksdCwhMCk7dGhpcy5vcHRpb25zPWUuY3JlYXRlUmVzb2x2ZXIobix0aGlzLmdldENvbnRleHQoKSksdGhpcy5fcGFyc2luZz10aGlzLm9wdGlvbnMucGFyc2luZyx0aGlzLl9jYWNoZWREYXRhT3B0cz17fX1wYXJzZShlLHQpe2xldHtfY2FjaGVkTWV0YTpuLF9kYXRhOnJ9PXRoaXMse2lTY2FsZTppLF9zdGFja2VkOmF9PW4sbz1pLmF4aXMscz1lPT09MCYmdD09PXIubGVuZ3RofHxuLl9zb3J0ZWQsYz1lPjAmJm4uX3BhcnNlZFtlLTFdLGwsdSxkO2lmKHRoaXMuX3BhcnNpbmc9PT0hMSluLl9wYXJzZWQ9cixuLl9zb3J0ZWQ9ITAsZD1yO2Vsc2V7ZD1NKHJbZV0pP3RoaXMucGFyc2VBcnJheURhdGEobixyLGUsdCk6TihyW2VdKT90aGlzLnBhcnNlT2JqZWN0RGF0YShuLHIsZSx0KTp0aGlzLnBhcnNlUHJpbWl0aXZlRGF0YShuLHIsZSx0KTtsZXQgaT0oKT0+dVtvXT09PW51bGx8fGMmJnVbb108Y1tvXTtmb3IobD0wO2w8dDsrK2wpbi5fcGFyc2VkW2wrZV09dT1kW2xdLHMmJihpKCkmJihzPSExKSxjPXUpO24uX3NvcnRlZD1zfWEmJkNpKHRoaXMsZCl9cGFyc2VQcmltaXRpdmVEYXRhKGUsdCxuLHIpe2xldHtpU2NhbGU6aSx2U2NhbGU6YX09ZSxvPWkuYXhpcyxzPWEuYXhpcyxjPWkuZ2V0TGFiZWxzKCksbD1pPT09YSx1PUFycmF5KHIpLGQsZixwO2ZvcihkPTAsZj1yO2Q8ZjsrK2QpcD1kK24sdVtkXT17W29dOmx8fGkucGFyc2UoY1twXSxwKSxbc106YS5wYXJzZSh0W3BdLHApfTtyZXR1cm4gdX1wYXJzZUFycmF5RGF0YShlLHQsbixyKXtsZXR7eFNjYWxlOmkseVNjYWxlOmF9PWUsbz1BcnJheShyKSxzLGMsbCx1O2ZvcihzPTAsYz1yO3M8YzsrK3MpbD1zK24sdT10W2xdLG9bc109e3g6aS5wYXJzZSh1WzBdLGwpLHk6YS5wYXJzZSh1WzFdLGwpfTtyZXR1cm4gb31wYXJzZU9iamVjdERhdGEoZSx0LG4scil7bGV0e3hTY2FsZTppLHlTY2FsZTphfT1lLHt4QXhpc0tleTpvPWB4YCx5QXhpc0tleTpzPWB5YH09dGhpcy5fcGFyc2luZyxjPUFycmF5KHIpLGwsdSxkLGY7Zm9yKGw9MCx1PXI7bDx1OysrbClkPWwrbixmPXRbZF0sY1tsXT17eDppLnBhcnNlKHN0KGYsbyksZCkseTphLnBhcnNlKHN0KGYscyksZCl9O3JldHVybiBjfWdldFBhcnNlZChlKXtyZXR1cm4gdGhpcy5fY2FjaGVkTWV0YS5fcGFyc2VkW2VdfWdldERhdGFFbGVtZW50KGUpe3JldHVybiB0aGlzLl9jYWNoZWRNZXRhLmRhdGFbZV19YXBwbHlTdGFjayhlLHQsbil7bGV0IHI9dGhpcy5jaGFydCxpPXRoaXMuX2NhY2hlZE1ldGEsYT10W2UuYXhpc107cmV0dXJuIGdpKHtrZXlzOmhpKHIsITApLHZhbHVlczp0Ll9zdGFja3NbZS5heGlzXS5fdmlzdWFsVmFsdWVzfSxhLGkuaW5kZXgse21vZGU6bn0pfXVwZGF0ZVJhbmdlRnJvbVBhcnNlZChlLHQsbixyKXtsZXQgaT1uW3QuYXhpc10sYT1pPT09bnVsbD9OYU46aSxvPXImJm4uX3N0YWNrc1t0LmF4aXNdO3ImJm8mJihyLnZhbHVlcz1vLGE9Z2kocixpLHRoaXMuX2NhY2hlZE1ldGEuaW5kZXgpKSxlLm1pbj1NYXRoLm1pbihlLm1pbixhKSxlLm1heD1NYXRoLm1heChlLm1heCxhKX1nZXRNaW5NYXgoZSx0KXtsZXQgbj10aGlzLl9jYWNoZWRNZXRhLHI9bi5fcGFyc2VkLGk9bi5fc29ydGVkJiZlPT09bi5pU2NhbGUsYT1yLmxlbmd0aCxvPXRoaXMuX2dldE90aGVyU2NhbGUoZSkscz1BaSh0LG4sdGhpcy5jaGFydCksYz17bWluOjEvMCxtYXg6LTEvMH0se21pbjpsLG1heDp1fT1iaShvKSxkLGY7ZnVuY3Rpb24gcCgpe2Y9cltkXTtsZXQgdD1mW28uYXhpc107cmV0dXJuIVAoZltlLmF4aXNdKXx8bD50fHx1PHR9Zm9yKGQ9MDtkPGEmJiEoIXAoKSYmKHRoaXMudXBkYXRlUmFuZ2VGcm9tUGFyc2VkKGMsZSxmLHMpLGkpKTsrK2QpO2lmKGkpe2ZvcihkPWEtMTtkPj0wOy0tZClpZighcCgpKXt0aGlzLnVwZGF0ZVJhbmdlRnJvbVBhcnNlZChjLGUsZixzKTticmVha319cmV0dXJuIGN9Z2V0QWxsUGFyc2VkVmFsdWVzKGUpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGEuX3BhcnNlZCxuPVtdLHIsaSxhO2ZvcihyPTAsaT10Lmxlbmd0aDtyPGk7KytyKWE9dFtyXVtlLmF4aXNdLFAoYSkmJm4ucHVzaChhKTtyZXR1cm4gbn1nZXRNYXhPdmVyZmxvdygpe3JldHVybiExfWdldExhYmVsQW5kVmFsdWUoZSl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YSxuPXQuaVNjYWxlLHI9dC52U2NhbGUsaT10aGlzLmdldFBhcnNlZChlKTtyZXR1cm57bGFiZWw6bj9gYCtuLmdldExhYmVsRm9yVmFsdWUoaVtuLmF4aXNdKTpgYCx2YWx1ZTpyP2BgK3IuZ2V0TGFiZWxGb3JWYWx1ZShpW3IuYXhpc10pOmBgfX1fdXBkYXRlKGUpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGE7dGhpcy51cGRhdGUoZXx8YGRlZmF1bHRgKSx0Ll9jbGlwPW1pKEkodGhpcy5vcHRpb25zLmNsaXAscGkodC54U2NhbGUsdC55U2NhbGUsdGhpcy5nZXRNYXhPdmVyZmxvdygpKSkpfXVwZGF0ZShlKXt9ZHJhdygpe2xldCBlPXRoaXMuX2N0eCx0PXRoaXMuY2hhcnQsbj10aGlzLl9jYWNoZWRNZXRhLHI9bi5kYXRhfHxbXSxpPXQuY2hhcnRBcmVhLGE9W10sbz10aGlzLl9kcmF3U3RhcnR8fDAscz10aGlzLl9kcmF3Q291bnR8fHIubGVuZ3RoLW8sYz10aGlzLm9wdGlvbnMuZHJhd0FjdGl2ZUVsZW1lbnRzT25Ub3AsbDtmb3Iobi5kYXRhc2V0JiZuLmRhdGFzZXQuZHJhdyhlLGksbyxzKSxsPW87bDxvK3M7KytsKXtsZXQgdD1yW2xdO3QuaGlkZGVufHwodC5hY3RpdmUmJmM/YS5wdXNoKHQpOnQuZHJhdyhlLGkpKX1mb3IobD0wO2w8YS5sZW5ndGg7KytsKWFbbF0uZHJhdyhlLGkpfWdldFN0eWxlKGUsdCl7bGV0IG49dD9gYWN0aXZlYDpgZGVmYXVsdGA7cmV0dXJuIGU9PT12b2lkIDAmJnRoaXMuX2NhY2hlZE1ldGEuZGF0YXNldD90aGlzLnJlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnMobik6dGhpcy5yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKGV8fDAsbil9Z2V0Q29udGV4dChlLHQsbil7bGV0IHI9dGhpcy5nZXREYXRhc2V0KCksaTtpZihlPj0wJiZlPHRoaXMuX2NhY2hlZE1ldGEuZGF0YS5sZW5ndGgpe2xldCB0PXRoaXMuX2NhY2hlZE1ldGEuZGF0YVtlXTtpPXQuJGNvbnRleHR8fD1FaSh0aGlzLmdldENvbnRleHQoKSxlLHQpLGkucGFyc2VkPXRoaXMuZ2V0UGFyc2VkKGUpLGkucmF3PXIuZGF0YVtlXSxpLmluZGV4PWkuZGF0YUluZGV4PWV9ZWxzZSBpPXRoaXMuJGNvbnRleHR8fD1UaSh0aGlzLmNoYXJ0LmdldENvbnRleHQoKSx0aGlzLmluZGV4KSxpLmRhdGFzZXQ9cixpLmluZGV4PWkuZGF0YXNldEluZGV4PXRoaXMuaW5kZXg7cmV0dXJuIGkuYWN0aXZlPSEhdCxpLm1vZGU9bixpfXJlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnMoZSl7cmV0dXJuIHRoaXMuX3Jlc29sdmVFbGVtZW50T3B0aW9ucyh0aGlzLmRhdGFzZXRFbGVtZW50VHlwZS5pZCxlKX1yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKGUsdCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVFbGVtZW50T3B0aW9ucyh0aGlzLmRhdGFFbGVtZW50VHlwZS5pZCx0LGUpfV9yZXNvbHZlRWxlbWVudE9wdGlvbnMoZSx0PWBkZWZhdWx0YCxuKXtsZXQgcj10PT09YGFjdGl2ZWAsaT10aGlzLl9jYWNoZWREYXRhT3B0cyxhPWUrYC1gK3Qsbz1pW2FdLHM9dGhpcy5lbmFibGVPcHRpb25TaGFyaW5nJiZsdChuKTtpZihvKXJldHVybiBraShvLHMpO2xldCBjPXRoaXMuY2hhcnQuY29uZmlnLGw9Yy5kYXRhc2V0RWxlbWVudFNjb3BlS2V5cyh0aGlzLl90eXBlLGUpLHU9cj9bYCR7ZX1Ib3ZlcmAsYGhvdmVyYCxlLGBgXTpbZSxgYF0sZD1jLmdldE9wdGlvblNjb3Blcyh0aGlzLmdldERhdGFzZXQoKSxsKSxmPU9iamVjdC5rZXlzKEcuZWxlbWVudHNbZV0pLHA9Yy5yZXNvbHZlTmFtZWRPcHRpb25zKGQsZiwoKT0+dGhpcy5nZXRDb250ZXh0KG4scix0KSx1KTtyZXR1cm4gcC4kc2hhcmVkJiYocC4kc2hhcmVkPXMsaVthXT1PYmplY3QuZnJlZXplKGtpKHAscykpKSxwfV9yZXNvbHZlQW5pbWF0aW9ucyhlLHQsbil7bGV0IHI9dGhpcy5jaGFydCxpPXRoaXMuX2NhY2hlZERhdGFPcHRzLGE9YGFuaW1hdGlvbi0ke3R9YCxvPWlbYV07aWYobylyZXR1cm4gbztsZXQgcztpZihyLm9wdGlvbnMuYW5pbWF0aW9uIT09ITEpe2xldCByPXRoaXMuY2hhcnQuY29uZmlnLGk9ci5kYXRhc2V0QW5pbWF0aW9uU2NvcGVLZXlzKHRoaXMuX3R5cGUsdCksYT1yLmdldE9wdGlvblNjb3Blcyh0aGlzLmdldERhdGFzZXQoKSxpKTtzPXIuY3JlYXRlUmVzb2x2ZXIoYSx0aGlzLmdldENvbnRleHQoZSxuLHQpKX1sZXQgYz1uZXcgbGkocixzJiZzLmFuaW1hdGlvbnMpO3JldHVybiBzJiZzLl9jYWNoZWFibGUmJihpW2FdPU9iamVjdC5mcmVlemUoYykpLGN9Z2V0U2hhcmVkT3B0aW9ucyhlKXtpZihlLiRzaGFyZWQpcmV0dXJuIHRoaXMuX3NoYXJlZE9wdGlvbnN8fD1PYmplY3QuYXNzaWduKHt9LGUpfWluY2x1ZGVPcHRpb25zKGUsdCl7cmV0dXJuIXR8fE9pKGUpfHx0aGlzLmNoYXJ0Ll9hbmltYXRpb25zRGlzYWJsZWR9X2dldFNoYXJlZE9wdGlvbnMoZSx0KXtsZXQgbj10aGlzLnJlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoZSx0KSxyPXRoaXMuX3NoYXJlZE9wdGlvbnMsaT10aGlzLmdldFNoYXJlZE9wdGlvbnMobiksYT10aGlzLmluY2x1ZGVPcHRpb25zKHQsaSl8fGkhPT1yO3JldHVybiB0aGlzLnVwZGF0ZVNoYXJlZE9wdGlvbnMoaSx0LG4pLHtzaGFyZWRPcHRpb25zOmksaW5jbHVkZU9wdGlvbnM6YX19dXBkYXRlRWxlbWVudChlLHQsbixyKXtPaShyKT9PYmplY3QuYXNzaWduKGUsbik6dGhpcy5fcmVzb2x2ZUFuaW1hdGlvbnModCxyKS51cGRhdGUoZSxuKX11cGRhdGVTaGFyZWRPcHRpb25zKGUsdCxuKXtlJiYhT2kodCkmJnRoaXMuX3Jlc29sdmVBbmltYXRpb25zKHZvaWQgMCx0KS51cGRhdGUoZSxuKX1fc2V0U3R5bGUoZSx0LG4scil7ZS5hY3RpdmU9cjtsZXQgaT10aGlzLmdldFN0eWxlKHQscik7dGhpcy5fcmVzb2x2ZUFuaW1hdGlvbnModCxuLHIpLnVwZGF0ZShlLHtvcHRpb25zOiFyJiZ0aGlzLmdldFNoYXJlZE9wdGlvbnMoaSl8fGl9KX1yZW1vdmVIb3ZlclN0eWxlKGUsdCxuKXt0aGlzLl9zZXRTdHlsZShlLG4sYGFjdGl2ZWAsITEpfXNldEhvdmVyU3R5bGUoZSx0LG4pe3RoaXMuX3NldFN0eWxlKGUsbixgYWN0aXZlYCwhMCl9X3JlbW92ZURhdGFzZXRIb3ZlclN0eWxlKCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YS5kYXRhc2V0O2UmJnRoaXMuX3NldFN0eWxlKGUsdm9pZCAwLGBhY3RpdmVgLCExKX1fc2V0RGF0YXNldEhvdmVyU3R5bGUoKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhLmRhdGFzZXQ7ZSYmdGhpcy5fc2V0U3R5bGUoZSx2b2lkIDAsYGFjdGl2ZWAsITApfV9yZXN5bmNFbGVtZW50cyhlKXtsZXQgdD10aGlzLl9kYXRhLG49dGhpcy5fY2FjaGVkTWV0YS5kYXRhO2ZvcihsZXRbZSx0LG5db2YgdGhpcy5fc3luY0xpc3QpdGhpc1tlXSh0LG4pO3RoaXMuX3N5bmNMaXN0PVtdO2xldCByPW4ubGVuZ3RoLGk9dC5sZW5ndGgsYT1NYXRoLm1pbihpLHIpO2EmJnRoaXMucGFyc2UoMCxhKSxpPnI/dGhpcy5faW5zZXJ0RWxlbWVudHMocixpLXIsZSk6aTxyJiZ0aGlzLl9yZW1vdmVFbGVtZW50cyhpLHItaSl9X2luc2VydEVsZW1lbnRzKGUsdCxuPSEwKXtsZXQgcj10aGlzLl9jYWNoZWRNZXRhLGk9ci5kYXRhLGE9ZSt0LG8scz1lPT57Zm9yKGUubGVuZ3RoKz10LG89ZS5sZW5ndGgtMTtvPj1hO28tLSllW29dPWVbby10XX07Zm9yKHMoaSksbz1lO288YTsrK28paVtvXT1uZXcgdGhpcy5kYXRhRWxlbWVudFR5cGU7dGhpcy5fcGFyc2luZyYmcyhyLl9wYXJzZWQpLHRoaXMucGFyc2UoZSx0KSxuJiZ0aGlzLnVwZGF0ZUVsZW1lbnRzKGksZSx0LGByZXNldGApfXVwZGF0ZUVsZW1lbnRzKGUsdCxuLHIpe31fcmVtb3ZlRWxlbWVudHMoZSx0KXtsZXQgbj10aGlzLl9jYWNoZWRNZXRhO2lmKHRoaXMuX3BhcnNpbmcpe2xldCByPW4uX3BhcnNlZC5zcGxpY2UoZSx0KTtuLl9zdGFja2VkJiZEaShuLHIpfW4uZGF0YS5zcGxpY2UoZSx0KX1fc3luYyhlKXtpZih0aGlzLl9wYXJzaW5nKXRoaXMuX3N5bmNMaXN0LnB1c2goZSk7ZWxzZXtsZXRbdCxuLHJdPWU7dGhpc1t0XShuLHIpfXRoaXMuY2hhcnQuX2RhdGFDaGFuZ2VzLnB1c2goW3RoaXMuaW5kZXgsLi4uZV0pfV9vbkRhdGFQdXNoKCl7bGV0IGU9YXJndW1lbnRzLmxlbmd0aDt0aGlzLl9zeW5jKFtgX2luc2VydEVsZW1lbnRzYCx0aGlzLmdldERhdGFzZXQoKS5kYXRhLmxlbmd0aC1lLGVdKX1fb25EYXRhUG9wKCl7dGhpcy5fc3luYyhbYF9yZW1vdmVFbGVtZW50c2AsdGhpcy5fY2FjaGVkTWV0YS5kYXRhLmxlbmd0aC0xLDFdKX1fb25EYXRhU2hpZnQoKXt0aGlzLl9zeW5jKFtgX3JlbW92ZUVsZW1lbnRzYCwwLDFdKX1fb25EYXRhU3BsaWNlKGUsdCl7dCYmdGhpcy5fc3luYyhbYF9yZW1vdmVFbGVtZW50c2AsZSx0XSk7bGV0IG49YXJndW1lbnRzLmxlbmd0aC0yO24mJnRoaXMuX3N5bmMoW2BfaW5zZXJ0RWxlbWVudHNgLGUsbl0pfV9vbkRhdGFVbnNoaWZ0KCl7dGhpcy5fc3luYyhbYF9pbnNlcnRFbGVtZW50c2AsMCxhcmd1bWVudHMubGVuZ3RoXSl9fSxNaT1jbGFzcyBleHRlbmRzIGppe3N0YXRpYyBpZD1gbGluZWA7c3RhdGljIGRlZmF1bHRzPXtkYXRhc2V0RWxlbWVudFR5cGU6YGxpbmVgLGRhdGFFbGVtZW50VHlwZTpgcG9pbnRgLHNob3dMaW5lOiEwLHNwYW5HYXBzOiExfTtzdGF0aWMgb3ZlcnJpZGVzPXtzY2FsZXM6e19pbmRleF86e3R5cGU6YGNhdGVnb3J5YH0sX3ZhbHVlXzp7dHlwZTpgbGluZWFyYH19fTtpbml0aWFsaXplKCl7dGhpcy5lbmFibGVPcHRpb25TaGFyaW5nPSEwLHRoaXMuc3VwcG9ydHNEZWNpbWF0aW9uPSEwLHN1cGVyLmluaXRpYWxpemUoKX11cGRhdGUoZSl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YSx7ZGF0YXNldDpuLGRhdGE6cj1bXSxfZGF0YXNldDppfT10LGE9dGhpcy5jaGFydC5fYW5pbWF0aW9uc0Rpc2FibGVkLHtzdGFydDpvLGNvdW50OnN9PVl0KHQscixhKTt0aGlzLl9kcmF3U3RhcnQ9byx0aGlzLl9kcmF3Q291bnQ9cyxYdCh0KSYmKG89MCxzPXIubGVuZ3RoKSxuLl9jaGFydD10aGlzLmNoYXJ0LG4uX2RhdGFzZXRJbmRleD10aGlzLmluZGV4LG4uX2RlY2ltYXRlZD0hIWkuX2RlY2ltYXRlZCxuLnBvaW50cz1yO2xldCBjPXRoaXMucmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9ucyhlKTt0aGlzLm9wdGlvbnMuc2hvd0xpbmV8fChjLmJvcmRlcldpZHRoPTApLGMuc2VnbWVudD10aGlzLm9wdGlvbnMuc2VnbWVudCx0aGlzLnVwZGF0ZUVsZW1lbnQobix2b2lkIDAse2FuaW1hdGVkOiFhLG9wdGlvbnM6Y30sZSksdGhpcy51cGRhdGVFbGVtZW50cyhyLG8scyxlKX11cGRhdGVFbGVtZW50cyhlLHQsbixyKXtsZXQgaT1yPT09YHJlc2V0YCx7aVNjYWxlOmEsdlNjYWxlOm8sX3N0YWNrZWQ6cyxfZGF0YXNldDpjfT10aGlzLl9jYWNoZWRNZXRhLHtzaGFyZWRPcHRpb25zOmwsaW5jbHVkZU9wdGlvbnM6dX09dGhpcy5fZ2V0U2hhcmVkT3B0aW9ucyh0LHIpLGQ9YS5heGlzLGY9by5heGlzLHtzcGFuR2FwczpwLHNlZ21lbnQ6bX09dGhpcy5vcHRpb25zLGg9d3QocCk/cDoxLzAsZz10aGlzLmNoYXJ0Ll9hbmltYXRpb25zRGlzYWJsZWR8fGl8fHI9PT1gbm9uZWAsXz10K24sdj1lLmxlbmd0aCx5PXQ+MCYmdGhpcy5nZXRQYXJzZWQodC0xKTtmb3IobGV0IG49MDtuPHY7KytuKXtsZXQgcD1lW25dLHY9Zz9wOnt9O2lmKG48dHx8bj49Xyl7di5za2lwPSEwO2NvbnRpbnVlfWxldCBiPXRoaXMuZ2V0UGFyc2VkKG4pLHg9aihiW2ZdKSxTPXZbZF09YS5nZXRQaXhlbEZvclZhbHVlKGJbZF0sbiksQz12W2ZdPWl8fHg/by5nZXRCYXNlUGl4ZWwoKTpvLmdldFBpeGVsRm9yVmFsdWUocz90aGlzLmFwcGx5U3RhY2sobyxiLHMpOmJbZl0sbik7di5za2lwPWlzTmFOKFMpfHxpc05hTihDKXx8eCx2LnN0b3A9bj4wJiZNYXRoLmFicyhiW2RdLXlbZF0pPmgsbSYmKHYucGFyc2VkPWIsdi5yYXc9Yy5kYXRhW25dKSx1JiYodi5vcHRpb25zPWx8fHRoaXMucmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyhuLHAuYWN0aXZlP2BhY3RpdmVgOnIpKSxnfHx0aGlzLnVwZGF0ZUVsZW1lbnQocCxuLHYscikseT1ifX1nZXRNYXhPdmVyZmxvdygpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGEsdD1lLmRhdGFzZXQsbj10Lm9wdGlvbnMmJnQub3B0aW9ucy5ib3JkZXJXaWR0aHx8MCxyPWUuZGF0YXx8W107aWYoIXIubGVuZ3RoKXJldHVybiBuO2xldCBpPXJbMF0uc2l6ZSh0aGlzLnJlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoMCkpLGE9cltyLmxlbmd0aC0xXS5zaXplKHRoaXMucmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyhyLmxlbmd0aC0xKSk7cmV0dXJuIE1hdGgubWF4KG4saSxhKS8yfWRyYXcoKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhO2UuZGF0YXNldC51cGRhdGVDb250cm9sUG9pbnRzKHRoaXMuY2hhcnQuY2hhcnRBcmVhLGUuaVNjYWxlLmF4aXMpLHN1cGVyLmRyYXcoKX19O2Z1bmN0aW9uIE5pKCl7dGhyb3cgRXJyb3IoYFRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZDogQ2hlY2sgdGhhdCBhIGNvbXBsZXRlIGRhdGUgYWRhcHRlciBpcyBwcm92aWRlZC5gKX12YXIgUGk9e19kYXRlOmNsYXNzIGV7c3RhdGljIG92ZXJyaWRlKHQpe09iamVjdC5hc3NpZ24oZS5wcm90b3R5cGUsdCl9b3B0aW9ucztjb25zdHJ1Y3RvcihlKXt0aGlzLm9wdGlvbnM9ZXx8e319aW5pdCgpe31mb3JtYXRzKCl7cmV0dXJuIE5pKCl9cGFyc2UoKXtyZXR1cm4gTmkoKX1mb3JtYXQoKXtyZXR1cm4gTmkoKX1hZGQoKXtyZXR1cm4gTmkoKX1kaWZmKCl7cmV0dXJuIE5pKCl9c3RhcnRPZigpe3JldHVybiBOaSgpfWVuZE9mKCl7cmV0dXJuIE5pKCl9fX07ZnVuY3Rpb24gRmkoZSx0LG4scil7bGV0e2NvbnRyb2xsZXI6aSxkYXRhOmEsX3NvcnRlZDpvfT1lLHM9aS5fY2FjaGVkTWV0YS5pU2NhbGUsYz1lLmRhdGFzZXQmJmUuZGF0YXNldC5vcHRpb25zP2UuZGF0YXNldC5vcHRpb25zLnNwYW5HYXBzOm51bGw7aWYocyYmdD09PXMuYXhpcyYmdCE9PWByYCYmbyYmYS5sZW5ndGgpe2xldCBvPXMuX3JldmVyc2VQaXhlbHM/UnQ6THQ7aWYoIXIpe2xldCByPW8oYSx0LG4pO2lmKGMpe2xldHt2U2NhbGU6dH09aS5fY2FjaGVkTWV0YSx7X3BhcnNlZDpufT1lLGE9bi5zbGljZSgwLHIubG8rMSkucmV2ZXJzZSgpLmZpbmRJbmRleChlPT4haihlW3QuYXhpc10pKTtyLmxvLT1NYXRoLm1heCgwLGEpO2xldCBvPW4uc2xpY2Uoci5oaSkuZmluZEluZGV4KGU9PiFqKGVbdC5heGlzXSkpO3IuaGkrPU1hdGgubWF4KDAsbyl9cmV0dXJuIHJ9aWYoaS5fc2hhcmVkT3B0aW9ucyl7bGV0IGU9YVswXSxyPXR5cGVvZiBlLmdldFJhbmdlPT1gZnVuY3Rpb25gJiZlLmdldFJhbmdlKHQpO2lmKHIpe2xldCBlPW8oYSx0LG4tciksaT1vKGEsdCxuK3IpO3JldHVybntsbzplLmxvLGhpOmkuaGl9fX19cmV0dXJue2xvOjAsaGk6YS5sZW5ndGgtMX19ZnVuY3Rpb24gSWkoZSx0LG4scixpKXtsZXQgYT1lLmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKSxvPW5bdF07Zm9yKGxldCBlPTAsbj1hLmxlbmd0aDtlPG47KytlKXtsZXR7aW5kZXg6bixkYXRhOnN9PWFbZV0se2xvOmMsaGk6bH09RmkoYVtlXSx0LG8saSk7Zm9yKGxldCBlPWM7ZTw9bDsrK2Upe2xldCB0PXNbZV07dC5za2lwfHxyKHQsbixlKX19fWZ1bmN0aW9uIExpKGUpe2xldCB0PWUuaW5kZXhPZihgeGApIT09LTEsbj1lLmluZGV4T2YoYHlgKSE9PS0xO3JldHVybiBmdW5jdGlvbihlLHIpe2xldCBpPXQ/TWF0aC5hYnMoZS54LXIueCk6MCxhPW4/TWF0aC5hYnMoZS55LXIueSk6MDtyZXR1cm4gTWF0aC5zcXJ0KGkqKjIrYSoqMil9fWZ1bmN0aW9uIFJpKGUsdCxuLHIsaSl7bGV0IGE9W107cmV0dXJuIWkmJiFlLmlzUG9pbnRJbkFyZWEodCl8fElpKGUsbix0LGZ1bmN0aW9uKG4sbyxzKXshaSYmIUsobixlLmNoYXJ0QXJlYSwwKXx8bi5pblJhbmdlKHQueCx0LnkscikmJmEucHVzaCh7ZWxlbWVudDpuLGRhdGFzZXRJbmRleDpvLGluZGV4OnN9KX0sITApLGF9ZnVuY3Rpb24gemkoZSx0LG4scil7bGV0IGk9W107ZnVuY3Rpb24gYShlLG4sYSl7bGV0e3N0YXJ0QW5nbGU6byxlbmRBbmdsZTpzfT1lLmdldFByb3BzKFtgc3RhcnRBbmdsZWAsYGVuZEFuZ2xlYF0scikse2FuZ2xlOmN9PUF0KGUse3g6dC54LHk6dC55fSk7TnQoYyxvLHMpJiZpLnB1c2goe2VsZW1lbnQ6ZSxkYXRhc2V0SW5kZXg6bixpbmRleDphfSl9cmV0dXJuIElpKGUsbix0LGEpLGl9ZnVuY3Rpb24gQmkoZSx0LG4scixpLGEpe2xldCBvPVtdLHM9TGkobiksYz0xLzA7ZnVuY3Rpb24gbChuLGwsdSl7bGV0IGQ9bi5pblJhbmdlKHQueCx0LnksaSk7aWYociYmIWQpcmV0dXJuO2xldCBmPW4uZ2V0Q2VudGVyUG9pbnQoaSk7aWYoIShhfHxlLmlzUG9pbnRJbkFyZWEoZikpJiYhZClyZXR1cm47bGV0IHA9cyh0LGYpO3A8Yz8obz1be2VsZW1lbnQ6bixkYXRhc2V0SW5kZXg6bCxpbmRleDp1fV0sYz1wKTpwPT09YyYmby5wdXNoKHtlbGVtZW50Om4sZGF0YXNldEluZGV4OmwsaW5kZXg6dX0pfXJldHVybiBJaShlLG4sdCxsKSxvfWZ1bmN0aW9uIFZpKGUsdCxuLHIsaSxhKXtyZXR1cm4hYSYmIWUuaXNQb2ludEluQXJlYSh0KT9bXTpuPT09YHJgJiYhcj96aShlLHQsbixpKTpCaShlLHQsbixyLGksYSl9ZnVuY3Rpb24gSGkoZSx0LG4scixpKXtsZXQgYT1bXSxvPW49PT1geGA/YGluWFJhbmdlYDpgaW5ZUmFuZ2VgLHM9ITE7cmV0dXJuIElpKGUsbix0LChlLHIsYyk9PntlW29dJiZlW29dKHRbbl0saSkmJihhLnB1c2goe2VsZW1lbnQ6ZSxkYXRhc2V0SW5kZXg6cixpbmRleDpjfSksc3x8PWUuaW5SYW5nZSh0LngsdC55LGkpKX0pLHImJiFzP1tdOmF9dmFyIFVpPXtldmFsdWF0ZUludGVyYWN0aW9uSXRlbXM6SWksbW9kZXM6e2luZGV4KGUsdCxuLHIpe2xldCBpPUFyKHQsZSksYT1uLmF4aXN8fGB4YCxvPW4uaW5jbHVkZUludmlzaWJsZXx8ITEscz1uLmludGVyc2VjdD9SaShlLGksYSxyLG8pOlZpKGUsaSxhLCExLHIsbyksYz1bXTtyZXR1cm4gcy5sZW5ndGg/KGUuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpLmZvckVhY2goZT0+e2xldCB0PXNbMF0uaW5kZXgsbj1lLmRhdGFbdF07biYmIW4uc2tpcCYmYy5wdXNoKHtlbGVtZW50Om4sZGF0YXNldEluZGV4OmUuaW5kZXgsaW5kZXg6dH0pfSksYyk6W119LGRhdGFzZXQoZSx0LG4scil7bGV0IGk9QXIodCxlKSxhPW4uYXhpc3x8YHh5YCxvPW4uaW5jbHVkZUludmlzaWJsZXx8ITEscz1uLmludGVyc2VjdD9SaShlLGksYSxyLG8pOlZpKGUsaSxhLCExLHIsbyk7aWYocy5sZW5ndGg+MCl7bGV0IHQ9c1swXS5kYXRhc2V0SW5kZXgsbj1lLmdldERhdGFzZXRNZXRhKHQpLmRhdGE7cz1bXTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoOysrZSlzLnB1c2goe2VsZW1lbnQ6bltlXSxkYXRhc2V0SW5kZXg6dCxpbmRleDplfSl9cmV0dXJuIHN9LHBvaW50KGUsdCxuLHIpe3JldHVybiBSaShlLEFyKHQsZSksbi5heGlzfHxgeHlgLHIsbi5pbmNsdWRlSW52aXNpYmxlfHwhMSl9LG5lYXJlc3QoZSx0LG4scil7bGV0IGk9QXIodCxlKSxhPW4uYXhpc3x8YHh5YCxvPW4uaW5jbHVkZUludmlzaWJsZXx8ITE7cmV0dXJuIFZpKGUsaSxhLG4uaW50ZXJzZWN0LHIsbyl9LHgoZSx0LG4scil7cmV0dXJuIEhpKGUsQXIodCxlKSxgeGAsbi5pbnRlcnNlY3Qscil9LHkoZSx0LG4scil7cmV0dXJuIEhpKGUsQXIodCxlKSxgeWAsbi5pbnRlcnNlY3Qscil9fX0sV2k9W2BsZWZ0YCxgdG9wYCxgcmlnaHRgLGBib3R0b21gXTtmdW5jdGlvbiBHaShlLHQpe3JldHVybiBlLmZpbHRlcihlPT5lLnBvcz09PXQpfWZ1bmN0aW9uIEtpKGUsdCl7cmV0dXJuIGUuZmlsdGVyKGU9PldpLmluZGV4T2YoZS5wb3MpPT09LTEmJmUuYm94LmF4aXM9PT10KX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiBlLnNvcnQoKGUsbik9PntsZXQgcj10P246ZSxpPXQ/ZTpuO3JldHVybiByLndlaWdodD09PWkud2VpZ2h0P3IuaW5kZXgtaS5pbmRleDpyLndlaWdodC1pLndlaWdodH0pfWZ1bmN0aW9uIEppKGUpe2xldCB0PVtdLG4scixpLGEsbyxzO2ZvcihuPTAscj0oZXx8W10pLmxlbmd0aDtuPHI7KytuKWk9ZVtuXSx7cG9zaXRpb246YSxvcHRpb25zOntzdGFjazpvLHN0YWNrV2VpZ2h0OnM9MX19PWksdC5wdXNoKHtpbmRleDpuLGJveDppLHBvczphLGhvcml6b250YWw6aS5pc0hvcml6b250YWwoKSx3ZWlnaHQ6aS53ZWlnaHQsc3RhY2s6byYmYStvLHN0YWNrV2VpZ2h0OnN9KTtyZXR1cm4gdH1mdW5jdGlvbiBZaShlKXtsZXQgdD17fTtmb3IobGV0IG4gb2YgZSl7bGV0e3N0YWNrOmUscG9zOnIsc3RhY2tXZWlnaHQ6aX09bjtpZighZXx8IVdpLmluY2x1ZGVzKHIpKWNvbnRpbnVlO2xldCBhPXRbZV18fCh0W2VdPXtjb3VudDowLHBsYWNlZDowLHdlaWdodDowLHNpemU6MH0pO2EuY291bnQrKyxhLndlaWdodCs9aX1yZXR1cm4gdH1mdW5jdGlvbiBYaShlLHQpe2xldCBuPVlpKGUpLHt2Qm94TWF4V2lkdGg6cixoQm94TWF4SGVpZ2h0Oml9PXQsYSxvLHM7Zm9yKGE9MCxvPWUubGVuZ3RoO2E8bzsrK2Epe3M9ZVthXTtsZXR7ZnVsbFNpemU6b309cy5ib3gsYz1uW3Muc3RhY2tdLGw9YyYmcy5zdGFja1dlaWdodC9jLndlaWdodDtzLmhvcml6b250YWw/KHMud2lkdGg9bD9sKnI6byYmdC5hdmFpbGFibGVXaWR0aCxzLmhlaWdodD1pKToocy53aWR0aD1yLHMuaGVpZ2h0PWw/bCppOm8mJnQuYXZhaWxhYmxlSGVpZ2h0KX1yZXR1cm4gbn1mdW5jdGlvbiBaaShlKXtsZXQgdD1KaShlKSxuPXFpKHQuZmlsdGVyKGU9PmUuYm94LmZ1bGxTaXplKSwhMCkscj1xaShHaSh0LGBsZWZ0YCksITApLGk9cWkoR2kodCxgcmlnaHRgKSksYT1xaShHaSh0LGB0b3BgKSwhMCksbz1xaShHaSh0LGBib3R0b21gKSkscz1LaSh0LGB4YCksYz1LaSh0LGB5YCk7cmV0dXJue2Z1bGxTaXplOm4sbGVmdEFuZFRvcDpyLmNvbmNhdChhKSxyaWdodEFuZEJvdHRvbTppLmNvbmNhdChjKS5jb25jYXQobykuY29uY2F0KHMpLGNoYXJ0QXJlYTpHaSh0LGBjaGFydEFyZWFgKSx2ZXJ0aWNhbDpyLmNvbmNhdChpKS5jb25jYXQoYyksaG9yaXpvbnRhbDphLmNvbmNhdChvKS5jb25jYXQocyl9fWZ1bmN0aW9uIFFpKGUsdCxuLHIpe3JldHVybiBNYXRoLm1heChlW25dLHRbbl0pK01hdGgubWF4KGVbcl0sdFtyXSl9ZnVuY3Rpb24gJGkoZSx0KXtlLnRvcD1NYXRoLm1heChlLnRvcCx0LnRvcCksZS5sZWZ0PU1hdGgubWF4KGUubGVmdCx0LmxlZnQpLGUuYm90dG9tPU1hdGgubWF4KGUuYm90dG9tLHQuYm90dG9tKSxlLnJpZ2h0PU1hdGgubWF4KGUucmlnaHQsdC5yaWdodCl9ZnVuY3Rpb24gZWEoZSx0LG4scil7bGV0e3BvczppLGJveDphfT1uLG89ZS5tYXhQYWRkaW5nO2lmKCFOKGkpKXtuLnNpemUmJihlW2ldLT1uLnNpemUpO2xldCB0PXJbbi5zdGFja118fHtzaXplOjAsY291bnQ6MX07dC5zaXplPU1hdGgubWF4KHQuc2l6ZSxuLmhvcml6b250YWw/YS5oZWlnaHQ6YS53aWR0aCksbi5zaXplPXQuc2l6ZS90LmNvdW50LGVbaV0rPW4uc2l6ZX1hLmdldFBhZGRpbmcmJiRpKG8sYS5nZXRQYWRkaW5nKCkpO2xldCBzPU1hdGgubWF4KDAsdC5vdXRlcldpZHRoLVFpKG8sZSxgbGVmdGAsYHJpZ2h0YCkpLGM9TWF0aC5tYXgoMCx0Lm91dGVySGVpZ2h0LVFpKG8sZSxgdG9wYCxgYm90dG9tYCkpLGw9cyE9PWUudyx1PWMhPT1lLmg7cmV0dXJuIGUudz1zLGUuaD1jLG4uaG9yaXpvbnRhbD97c2FtZTpsLG90aGVyOnV9OntzYW1lOnUsb3RoZXI6bH19ZnVuY3Rpb24gdGEoZSl7bGV0IHQ9ZS5tYXhQYWRkaW5nO2Z1bmN0aW9uIG4obil7bGV0IHI9TWF0aC5tYXgodFtuXS1lW25dLDApO3JldHVybiBlW25dKz1yLHJ9ZS55Kz1uKGB0b3BgKSxlLngrPW4oYGxlZnRgKSxuKGByaWdodGApLG4oYGJvdHRvbWApfWZ1bmN0aW9uIG5hKGUsdCl7bGV0IG49dC5tYXhQYWRkaW5nO2Z1bmN0aW9uIHIoZSl7bGV0IHI9e2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfTtyZXR1cm4gZS5mb3JFYWNoKGU9PntyW2VdPU1hdGgubWF4KHRbZV0sbltlXSl9KSxyfXJldHVybiByKGU/W2BsZWZ0YCxgcmlnaHRgXTpbYHRvcGAsYGJvdHRvbWBdKX1mdW5jdGlvbiByYShlLHQsbixyKXtsZXQgaT1bXSxhLG8scyxjLGwsdTtmb3IoYT0wLG89ZS5sZW5ndGgsbD0wO2E8bzsrK2Epe3M9ZVthXSxjPXMuYm94LGMudXBkYXRlKHMud2lkdGh8fHQudyxzLmhlaWdodHx8dC5oLG5hKHMuaG9yaXpvbnRhbCx0KSk7bGV0e3NhbWU6byxvdGhlcjpkfT1lYSh0LG4scyxyKTtsfD1vJiZpLmxlbmd0aCx1fHw9ZCxjLmZ1bGxTaXplfHxpLnB1c2gocyl9cmV0dXJuIGwmJnJhKGksdCxuLHIpfHx1fWZ1bmN0aW9uIGlhKGUsdCxuLHIsaSl7ZS50b3A9bixlLmxlZnQ9dCxlLnJpZ2h0PXQrcixlLmJvdHRvbT1uK2ksZS53aWR0aD1yLGUuaGVpZ2h0PWl9ZnVuY3Rpb24gYWEoZSx0LG4scil7bGV0IGk9bi5wYWRkaW5nLHt4OmEseTpvfT10O2ZvcihsZXQgcyBvZiBlKXtsZXQgZT1zLmJveCxjPXJbcy5zdGFja118fHtjb3VudDoxLHBsYWNlZDowLHdlaWdodDoxfSxsPXMuc3RhY2tXZWlnaHQvYy53ZWlnaHR8fDE7aWYocy5ob3Jpem9udGFsKXtsZXQgcj10LncqbCxhPWMuc2l6ZXx8ZS5oZWlnaHQ7bHQoYy5zdGFydCkmJihvPWMuc3RhcnQpLGUuZnVsbFNpemU/aWEoZSxpLmxlZnQsbyxuLm91dGVyV2lkdGgtaS5yaWdodC1pLmxlZnQsYSk6aWEoZSx0LmxlZnQrYy5wbGFjZWQsbyxyLGEpLGMuc3RhcnQ9byxjLnBsYWNlZCs9cixvPWUuYm90dG9tfWVsc2V7bGV0IHI9dC5oKmwsbz1jLnNpemV8fGUud2lkdGg7bHQoYy5zdGFydCkmJihhPWMuc3RhcnQpLGUuZnVsbFNpemU/aWEoZSxhLGkudG9wLG8sbi5vdXRlckhlaWdodC1pLmJvdHRvbS1pLnRvcCk6aWEoZSxhLHQudG9wK2MucGxhY2VkLG8sciksYy5zdGFydD1hLGMucGxhY2VkKz1yLGE9ZS5yaWdodH19dC54PWEsdC55PW99dmFyIG9hPXthZGRCb3goZSx0KXtlLmJveGVzfHw9W10sdC5mdWxsU2l6ZT10LmZ1bGxTaXplfHwhMSx0LnBvc2l0aW9uPXQucG9zaXRpb258fGB0b3BgLHQud2VpZ2h0PXQud2VpZ2h0fHwwLHQuX2xheWVycz10Ll9sYXllcnN8fGZ1bmN0aW9uKCl7cmV0dXJuW3t6OjAsZHJhdyhlKXt0LmRyYXcoZSl9fV19LGUuYm94ZXMucHVzaCh0KX0scmVtb3ZlQm94KGUsdCl7bGV0IG49ZS5ib3hlcz9lLmJveGVzLmluZGV4T2YodCk6LTE7biE9PS0xJiZlLmJveGVzLnNwbGljZShuLDEpfSxjb25maWd1cmUoZSx0LG4pe3QuZnVsbFNpemU9bi5mdWxsU2l6ZSx0LnBvc2l0aW9uPW4ucG9zaXRpb24sdC53ZWlnaHQ9bi53ZWlnaHR9LHVwZGF0ZShlLHQsbixyKXtpZighZSlyZXR1cm47bGV0IGk9cShlLm9wdGlvbnMubGF5b3V0LnBhZGRpbmcpLGE9TWF0aC5tYXgodC1pLndpZHRoLDApLG89TWF0aC5tYXgobi1pLmhlaWdodCwwKSxzPVppKGUuYm94ZXMpLGM9cy52ZXJ0aWNhbCxsPXMuaG9yaXpvbnRhbDtSKGUuYm94ZXMsZT0+e3R5cGVvZiBlLmJlZm9yZUxheW91dD09YGZ1bmN0aW9uYCYmZS5iZWZvcmVMYXlvdXQoKX0pO2xldCB1PWMucmVkdWNlKChlLHQpPT50LmJveC5vcHRpb25zJiZ0LmJveC5vcHRpb25zLmRpc3BsYXk9PT0hMT9lOmUrMSwwKXx8MSxkPU9iamVjdC5mcmVlemUoe291dGVyV2lkdGg6dCxvdXRlckhlaWdodDpuLHBhZGRpbmc6aSxhdmFpbGFibGVXaWR0aDphLGF2YWlsYWJsZUhlaWdodDpvLHZCb3hNYXhXaWR0aDphLzIvdSxoQm94TWF4SGVpZ2h0Om8vMn0pLGY9T2JqZWN0LmFzc2lnbih7fSxpKTskaShmLHEocikpO2xldCBwPU9iamVjdC5hc3NpZ24oe21heFBhZGRpbmc6Zix3OmEsaDpvLHg6aS5sZWZ0LHk6aS50b3B9LGkpLG09WGkoYy5jb25jYXQobCksZCk7cmEocy5mdWxsU2l6ZSxwLGQsbSkscmEoYyxwLGQsbSkscmEobCxwLGQsbSkmJnJhKGMscCxkLG0pLHRhKHApLGFhKHMubGVmdEFuZFRvcCxwLGQsbSkscC54Kz1wLncscC55Kz1wLmgsYWEocy5yaWdodEFuZEJvdHRvbSxwLGQsbSksZS5jaGFydEFyZWE9e2xlZnQ6cC5sZWZ0LHRvcDpwLnRvcCxyaWdodDpwLmxlZnQrcC53LGJvdHRvbTpwLnRvcCtwLmgsaGVpZ2h0OnAuaCx3aWR0aDpwLnd9LFIocy5jaGFydEFyZWEsdD0+e2xldCBuPXQuYm94O09iamVjdC5hc3NpZ24obixlLmNoYXJ0QXJlYSksbi51cGRhdGUocC53LHAuaCx7bGVmdDowLHRvcDowLHJpZ2h0OjAsYm90dG9tOjB9KX0pfX0sc2E9Y2xhc3N7YWNxdWlyZUNvbnRleHQoZSx0KXt9cmVsZWFzZUNvbnRleHQoZSl7cmV0dXJuITF9YWRkRXZlbnRMaXN0ZW5lcihlLHQsbil7fXJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0LG4pe31nZXREZXZpY2VQaXhlbFJhdGlvKCl7cmV0dXJuIDF9Z2V0TWF4aW11bVNpemUoZSx0LG4scil7cmV0dXJuIHQ9TWF0aC5tYXgoMCx0fHxlLndpZHRoKSxufHw9ZS5oZWlnaHQse3dpZHRoOnQsaGVpZ2h0Ok1hdGgubWF4KDAscj9NYXRoLmZsb29yKHQvcik6bil9fWlzQXR0YWNoZWQoZSl7cmV0dXJuITB9dXBkYXRlQ29uZmlnKGUpe319LGNhPWNsYXNzIGV4dGVuZHMgc2F7YWNxdWlyZUNvbnRleHQoZSl7cmV0dXJuIGUmJmUuZ2V0Q29udGV4dCYmZS5nZXRDb250ZXh0KGAyZGApfHxudWxsfXVwZGF0ZUNvbmZpZyhlKXtlLm9wdGlvbnMuYW5pbWF0aW9uPSExfX0sbGE9YCRjaGFydGpzYCx1YT17dG91Y2hzdGFydDpgbW91c2Vkb3duYCx0b3VjaG1vdmU6YG1vdXNlbW92ZWAsdG91Y2hlbmQ6YG1vdXNldXBgLHBvaW50ZXJlbnRlcjpgbW91c2VlbnRlcmAscG9pbnRlcmRvd246YG1vdXNlZG93bmAscG9pbnRlcm1vdmU6YG1vdXNlbW92ZWAscG9pbnRlcnVwOmBtb3VzZXVwYCxwb2ludGVybGVhdmU6YG1vdXNlb3V0YCxwb2ludGVyb3V0OmBtb3VzZW91dGB9LGRhPWU9PmU9PT1udWxsfHxlPT09YGA7ZnVuY3Rpb24gZmEoZSx0KXtsZXQgbj1lLnN0eWxlLHI9ZS5nZXRBdHRyaWJ1dGUoYGhlaWdodGApLGk9ZS5nZXRBdHRyaWJ1dGUoYHdpZHRoYCk7aWYoZVtsYV09e2luaXRpYWw6e2hlaWdodDpyLHdpZHRoOmksc3R5bGU6e2Rpc3BsYXk6bi5kaXNwbGF5LGhlaWdodDpuLmhlaWdodCx3aWR0aDpuLndpZHRofX19LG4uZGlzcGxheT1uLmRpc3BsYXl8fGBibG9ja2Asbi5ib3hTaXppbmc9bi5ib3hTaXppbmd8fGBib3JkZXItYm94YCxkYShpKSl7bGV0IHQ9SXIoZSxgd2lkdGhgKTt0IT09dm9pZCAwJiYoZS53aWR0aD10KX1pZihkYShyKSl7aWYoZS5zdHlsZS5oZWlnaHQ9PT1gYCllLmhlaWdodD1lLndpZHRoLyh0fHwyKTtlbHNle2xldCB0PUlyKGUsYGhlaWdodGApO3QhPT12b2lkIDAmJihlLmhlaWdodD10KX19cmV0dXJuIGV9dmFyIHBhPUZyP3twYXNzaXZlOiEwfTohMTtmdW5jdGlvbiBtYShlLHQsbil7ZSYmZS5hZGRFdmVudExpc3RlbmVyKHQsbixwYSl9ZnVuY3Rpb24gaGEoZSx0LG4pe2UmJmUuY2FudmFzJiZlLmNhbnZhcy5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixwYSl9ZnVuY3Rpb24gZ2EoZSx0KXtsZXQgbj11YVtlLnR5cGVdfHxlLnR5cGUse3g6cix5Oml9PUFyKGUsdCk7cmV0dXJue3R5cGU6bixjaGFydDp0LG5hdGl2ZTplLHg6cj09PXZvaWQgMD9udWxsOnIseTppPT09dm9pZCAwP251bGw6aX19ZnVuY3Rpb24gX2EoZSx0KXtmb3IobGV0IG4gb2YgZSlpZihuPT09dHx8bi5jb250YWlucyh0KSlyZXR1cm4hMH1mdW5jdGlvbiB2YShlLHQsbil7bGV0IHI9ZS5jYW52YXMsaT1uZXcgTXV0YXRpb25PYnNlcnZlcihlPT57bGV0IHQ9ITE7Zm9yKGxldCBuIG9mIGUpdHx8PV9hKG4uYWRkZWROb2RlcyxyKSx0JiY9IV9hKG4ucmVtb3ZlZE5vZGVzLHIpO3QmJm4oKX0pO3JldHVybiBpLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksaX1mdW5jdGlvbiB5YShlLHQsbil7bGV0IHI9ZS5jYW52YXMsaT1uZXcgTXV0YXRpb25PYnNlcnZlcihlPT57bGV0IHQ9ITE7Zm9yKGxldCBuIG9mIGUpdHx8PV9hKG4ucmVtb3ZlZE5vZGVzLHIpLHQmJj0hX2Eobi5hZGRlZE5vZGVzLHIpO3QmJm4oKX0pO3JldHVybiBpLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksaX12YXIgYmE9bmV3IE1hcCx4YT0wO2Z1bmN0aW9uIFNhKCl7bGV0IGU9d2luZG93LmRldmljZVBpeGVsUmF0aW87ZSE9PXhhJiYoeGE9ZSxiYS5mb3JFYWNoKCh0LG4pPT57bi5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyE9PWUmJnQoKX0pKX1mdW5jdGlvbiBDYShlLHQpe2JhLnNpemV8fHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGByZXNpemVgLFNhKSxiYS5zZXQoZSx0KX1mdW5jdGlvbiB3YShlKXtiYS5kZWxldGUoZSksYmEuc2l6ZXx8d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHJlc2l6ZWAsU2EpfWZ1bmN0aW9uIFRhKGUsdCxuKXtsZXQgcj1lLmNhbnZhcyxpPXImJlNyKHIpO2lmKCFpKXJldHVybjtsZXQgYT1HdCgoZSx0KT0+e2xldCByPWkuY2xpZW50V2lkdGg7bihlLHQpLHI8aS5jbGllbnRXaWR0aCYmbigpfSx3aW5kb3cpLG89bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntsZXQgdD1lWzBdLG49dC5jb250ZW50UmVjdC53aWR0aCxyPXQuY29udGVudFJlY3QuaGVpZ2h0OyhuIT09MHx8ciE9PTApJiZhKG4scil9KTtyZXR1cm4gby5vYnNlcnZlKGkpLENhKGUsYSksb31mdW5jdGlvbiBFYShlLHQsbil7biYmbi5kaXNjb25uZWN0KCksdD09PWByZXNpemVgJiZ3YShlKX1mdW5jdGlvbiBEYShlLHQsbil7bGV0IHI9ZS5jYW52YXMsaT1HdCh0PT57ZS5jdHghPT1udWxsJiZuKGdhKHQsZSkpfSxlKTtyZXR1cm4gbWEocix0LGkpLGl9dmFyIE9hPWNsYXNzIGV4dGVuZHMgc2F7YWNxdWlyZUNvbnRleHQoZSx0KXtsZXQgbj1lJiZlLmdldENvbnRleHQmJmUuZ2V0Q29udGV4dChgMmRgKTtyZXR1cm4gbiYmbi5jYW52YXM9PT1lPyhmYShlLHQpLG4pOm51bGx9cmVsZWFzZUNvbnRleHQoZSl7bGV0IHQ9ZS5jYW52YXM7aWYoIXRbbGFdKXJldHVybiExO2xldCBuPXRbbGFdLmluaXRpYWw7W2BoZWlnaHRgLGB3aWR0aGBdLmZvckVhY2goZT0+e2xldCByPW5bZV07aihyKT90LnJlbW92ZUF0dHJpYnV0ZShlKTp0LnNldEF0dHJpYnV0ZShlLHIpfSk7bGV0IHI9bi5zdHlsZXx8e307cmV0dXJuIE9iamVjdC5rZXlzKHIpLmZvckVhY2goZT0+e3Quc3R5bGVbZV09cltlXX0pLHQud2lkdGg9dC53aWR0aCxkZWxldGUgdFtsYV0sITB9YWRkRXZlbnRMaXN0ZW5lcihlLHQsbil7dGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGUsdCk7bGV0IHI9ZS4kcHJveGllc3x8PXt9O3JbdF09KHthdHRhY2g6dmEsZGV0YWNoOnlhLHJlc2l6ZTpUYX1bdF18fERhKShlLHQsbil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQpe2xldCBuPWUuJHByb3hpZXN8fD17fSxyPW5bdF07ciYmKCh7YXR0YWNoOkVhLGRldGFjaDpFYSxyZXNpemU6RWF9W3RdfHxoYSkoZSx0LHIpLG5bdF09dm9pZCAwKX1nZXREZXZpY2VQaXhlbFJhdGlvKCl7cmV0dXJuIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfWdldE1heGltdW1TaXplKGUsdCxuLHIpe3JldHVybiBOcihlLHQsbixyKX1pc0F0dGFjaGVkKGUpe2xldCB0PWUmJlNyKGUpO3JldHVybiEhKHQmJnQuaXNDb25uZWN0ZWQpfX07ZnVuY3Rpb24ga2EoZSl7cmV0dXJuIXhyKCl8fHR5cGVvZiBPZmZzY3JlZW5DYW52YXM8YHVgJiZlIGluc3RhbmNlb2YgT2Zmc2NyZWVuQ2FudmFzP2NhOk9hfXZhciBBYT1jbGFzc3tzdGF0aWMgZGVmYXVsdHM9e307c3RhdGljIGRlZmF1bHRSb3V0ZXM9dm9pZCAwO3g7eTthY3RpdmU9ITE7b3B0aW9uczskYW5pbWF0aW9uczt0b29sdGlwUG9zaXRpb24oZSl7bGV0e3g6dCx5Om59PXRoaXMuZ2V0UHJvcHMoW2B4YCxgeWBdLGUpO3JldHVybnt4OnQseTpufX1oYXNWYWx1ZSgpe3JldHVybiB3dCh0aGlzLngpJiZ3dCh0aGlzLnkpfWdldFByb3BzKGUsdCl7bGV0IG49dGhpcy4kYW5pbWF0aW9ucztpZighdHx8IW4pcmV0dXJuIHRoaXM7bGV0IHI9e307cmV0dXJuIGUuZm9yRWFjaChlPT57cltlXT1uW2VdJiZuW2VdLmFjdGl2ZSgpP25bZV0uX3RvOnRoaXNbZV19KSxyfX07ZnVuY3Rpb24gamEoZSx0KXtsZXQgbj1lLm9wdGlvbnMudGlja3Mscj1NYShlKSxpPU1hdGgubWluKG4ubWF4VGlja3NMaW1pdHx8cixyKSxhPW4ubWFqb3IuZW5hYmxlZD9QYSh0KTpbXSxvPWEubGVuZ3RoLHM9YVswXSxjPWFbby0xXSxsPVtdO2lmKG8+aSlyZXR1cm4gRmEodCxsLGEsby9pKSxsO2xldCB1PU5hKGEsdCxpKTtpZihvPjApe2xldCBlLG4scj1vPjE/TWF0aC5yb3VuZCgoYy1zKS8oby0xKSk6bnVsbDtmb3IoSWEodCxsLHUsaihyKT8wOnMtcixzKSxlPTAsbj1vLTE7ZTxuO2UrKylJYSh0LGwsdSxhW2VdLGFbZSsxXSk7cmV0dXJuIElhKHQsbCx1LGMsaihyKT90Lmxlbmd0aDpjK3IpLGx9cmV0dXJuIElhKHQsbCx1KSxsfWZ1bmN0aW9uIE1hKGUpe2xldCB0PWUub3B0aW9ucy5vZmZzZXQsbj1lLl90aWNrU2l6ZSgpLHI9ZS5fbGVuZ3RoL24rICshdCxpPWUuX21heExlbmd0aC9uO3JldHVybiBNYXRoLmZsb29yKE1hdGgubWluKHIsaSkpfWZ1bmN0aW9uIE5hKGUsdCxuKXtsZXQgcj1MYShlKSxpPXQubGVuZ3RoL247aWYoIXIpcmV0dXJuIE1hdGgubWF4KGksMSk7bGV0IGE9U3Qocik7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aC0xO2U8dDtlKyspe2xldCB0PWFbZV07aWYodD5pKXJldHVybiB0fXJldHVybiBNYXRoLm1heChpLDEpfWZ1bmN0aW9uIFBhKGUpe2xldCB0PVtdLG4scjtmb3Iobj0wLHI9ZS5sZW5ndGg7bjxyO24rKyllW25dLm1ham9yJiZ0LnB1c2gobik7cmV0dXJuIHR9ZnVuY3Rpb24gRmEoZSx0LG4scil7bGV0IGk9MCxhPW5bMF0sbztmb3Iocj1NYXRoLmNlaWwociksbz0wO288ZS5sZW5ndGg7bysrKW89PT1hJiYodC5wdXNoKGVbb10pLGkrKyxhPW5baSpyXSl9ZnVuY3Rpb24gSWEoZSx0LG4scixpKXtsZXQgYT1JKHIsMCksbz1NYXRoLm1pbihJKGksZS5sZW5ndGgpLGUubGVuZ3RoKSxzPTAsYyxsLHU7Zm9yKG49TWF0aC5jZWlsKG4pLGkmJihjPWktcixuPWMvTWF0aC5mbG9vcihjL24pKSx1PWE7dTwwOylzKyssdT1NYXRoLnJvdW5kKGErcypuKTtmb3IobD1NYXRoLm1heChhLDApO2w8bztsKyspbD09PXUmJih0LnB1c2goZVtsXSkscysrLHU9TWF0aC5yb3VuZChhK3MqbikpfWZ1bmN0aW9uIExhKGUpe2xldCB0PWUubGVuZ3RoLG4scjtpZih0PDIpcmV0dXJuITE7Zm9yKHI9ZVswXSxuPTE7bjx0OysrbilpZihlW25dLWVbbi0xXSE9PXIpcmV0dXJuITE7cmV0dXJuIHJ9dmFyIFJhPWU9PmU9PT1gbGVmdGA/YHJpZ2h0YDplPT09YHJpZ2h0YD9gbGVmdGA6ZSx6YT0oZSx0LG4pPT50PT09YHRvcGB8fHQ9PT1gbGVmdGA/ZVt0XStuOmVbdF0tbixCYT0oZSx0KT0+TWF0aC5taW4odHx8ZSxlKTtmdW5jdGlvbiBWYShlLHQpe2xldCBuPVtdLHI9ZS5sZW5ndGgvdCxpPWUubGVuZ3RoLGE9MDtmb3IoO2E8aTthKz1yKW4ucHVzaChlW01hdGguZmxvb3IoYSldKTtyZXR1cm4gbn1mdW5jdGlvbiBIYShlLHQsbil7bGV0IHI9ZS50aWNrcy5sZW5ndGgsaT1NYXRoLm1pbih0LHItMSksYT1lLl9zdGFydFBpeGVsLG89ZS5fZW5kUGl4ZWwscz0xZS02LGM9ZS5nZXRQaXhlbEZvclRpY2soaSksbDtpZighKG4mJihsPXI9PT0xP01hdGgubWF4KGMtYSxvLWMpOnQ9PT0wPyhlLmdldFBpeGVsRm9yVGljaygxKS1jKS8yOihjLWUuZ2V0UGl4ZWxGb3JUaWNrKGktMSkpLzIsYys9aTx0P2w6LWwsYzxhLXN8fGM+bytzKSkpcmV0dXJuIGN9ZnVuY3Rpb24gVWEoZSx0KXtSKGUsZT0+e2xldCBuPWUuZ2Mscj1uLmxlbmd0aC8yLGk7aWYocj50KXtmb3IoaT0wO2k8cjsrK2kpZGVsZXRlIGUuZGF0YVtuW2ldXTtuLnNwbGljZSgwLHIpfX0pfWZ1bmN0aW9uIFdhKGUpe3JldHVybiBlLmRyYXdUaWNrcz9lLnRpY2tMZW5ndGg6MH1mdW5jdGlvbiBHYShlLHQpe2lmKCFlLmRpc3BsYXkpcmV0dXJuIDA7bGV0IG49SihlLmZvbnQsdCkscj1xKGUucGFkZGluZyk7cmV0dXJuKE0oZS50ZXh0KT9lLnRleHQubGVuZ3RoOjEpKm4ubGluZUhlaWdodCtyLmhlaWdodH1mdW5jdGlvbiBLYShlLHQpe3JldHVybiBHbihlLHtzY2FsZTp0LHR5cGU6YHNjYWxlYH0pfWZ1bmN0aW9uIHFhKGUsdCxuKXtyZXR1cm4gR24oZSx7dGljazpuLGluZGV4OnQsdHlwZTpgdGlja2B9KX1mdW5jdGlvbiBKYShlLHQsbil7bGV0IHI9cXQoZSk7cmV0dXJuKG4mJnQhPT1gcmlnaHRgfHwhbiYmdD09PWByaWdodGApJiYocj1SYShyKSkscn1mdW5jdGlvbiBZYShlLHQsbixyKXtsZXR7dG9wOmksbGVmdDphLGJvdHRvbTpvLHJpZ2h0OnMsY2hhcnQ6Y309ZSx7Y2hhcnRBcmVhOmwsc2NhbGVzOnV9PWMsZD0wLGYscCxtLGg9by1pLGc9cy1hO2lmKGUuaXNIb3Jpem9udGFsKCkpe2lmKHA9VyhyLGEscyksTihuKSl7bGV0IGU9T2JqZWN0LmtleXMobilbMF0scj1uW2VdO209dVtlXS5nZXRQaXhlbEZvclZhbHVlKHIpK2gtdH1lbHNlIG09bj09PWBjZW50ZXJgPyhsLmJvdHRvbStsLnRvcCkvMitoLXQ6emEoZSxuLHQpO2Y9cy1hfWVsc2V7aWYoTihuKSl7bGV0IGU9T2JqZWN0LmtleXMobilbMF0scj1uW2VdO3A9dVtlXS5nZXRQaXhlbEZvclZhbHVlKHIpLWcrdH1lbHNlIHA9bj09PWBjZW50ZXJgPyhsLmxlZnQrbC5yaWdodCkvMi1nK3Q6emEoZSxuLHQpO209VyhyLG8saSksZD1uPT09YGxlZnRgPy1WOlZ9cmV0dXJue3RpdGxlWDpwLHRpdGxlWTptLG1heFdpZHRoOmYscm90YXRpb246ZH19dmFyIFhhPWNsYXNzIGUgZXh0ZW5kcyBBYXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuaWQ9ZS5pZCx0aGlzLnR5cGU9ZS50eXBlLHRoaXMub3B0aW9ucz12b2lkIDAsdGhpcy5jdHg9ZS5jdHgsdGhpcy5jaGFydD1lLmNoYXJ0LHRoaXMudG9wPXZvaWQgMCx0aGlzLmJvdHRvbT12b2lkIDAsdGhpcy5sZWZ0PXZvaWQgMCx0aGlzLnJpZ2h0PXZvaWQgMCx0aGlzLndpZHRoPXZvaWQgMCx0aGlzLmhlaWdodD12b2lkIDAsdGhpcy5fbWFyZ2lucz17bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9LHRoaXMubWF4V2lkdGg9dm9pZCAwLHRoaXMubWF4SGVpZ2h0PXZvaWQgMCx0aGlzLnBhZGRpbmdUb3A9dm9pZCAwLHRoaXMucGFkZGluZ0JvdHRvbT12b2lkIDAsdGhpcy5wYWRkaW5nTGVmdD12b2lkIDAsdGhpcy5wYWRkaW5nUmlnaHQ9dm9pZCAwLHRoaXMuYXhpcz12b2lkIDAsdGhpcy5sYWJlbFJvdGF0aW9uPXZvaWQgMCx0aGlzLm1pbj12b2lkIDAsdGhpcy5tYXg9dm9pZCAwLHRoaXMuX3JhbmdlPXZvaWQgMCx0aGlzLnRpY2tzPVtdLHRoaXMuX2dyaWRMaW5lSXRlbXM9bnVsbCx0aGlzLl9sYWJlbEl0ZW1zPW51bGwsdGhpcy5fbGFiZWxTaXplcz1udWxsLHRoaXMuX2xlbmd0aD0wLHRoaXMuX21heExlbmd0aD0wLHRoaXMuX2xvbmdlc3RUZXh0Q2FjaGU9e30sdGhpcy5fc3RhcnRQaXhlbD12b2lkIDAsdGhpcy5fZW5kUGl4ZWw9dm9pZCAwLHRoaXMuX3JldmVyc2VQaXhlbHM9ITEsdGhpcy5fdXNlck1heD12b2lkIDAsdGhpcy5fdXNlck1pbj12b2lkIDAsdGhpcy5fc3VnZ2VzdGVkTWF4PXZvaWQgMCx0aGlzLl9zdWdnZXN0ZWRNaW49dm9pZCAwLHRoaXMuX3RpY2tzTGVuZ3RoPTAsdGhpcy5fYm9yZGVyVmFsdWU9MCx0aGlzLl9jYWNoZT17fSx0aGlzLl9kYXRhTGltaXRzQ2FjaGVkPSExLHRoaXMuJGNvbnRleHQ9dm9pZCAwfWluaXQoZSl7dGhpcy5vcHRpb25zPWUuc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoKSksdGhpcy5heGlzPWUuYXhpcyx0aGlzLl91c2VyTWluPXRoaXMucGFyc2UoZS5taW4pLHRoaXMuX3VzZXJNYXg9dGhpcy5wYXJzZShlLm1heCksdGhpcy5fc3VnZ2VzdGVkTWluPXRoaXMucGFyc2UoZS5zdWdnZXN0ZWRNaW4pLHRoaXMuX3N1Z2dlc3RlZE1heD10aGlzLnBhcnNlKGUuc3VnZ2VzdGVkTWF4KX1wYXJzZShlLHQpe3JldHVybiBlfWdldFVzZXJCb3VuZHMoKXtsZXR7X3VzZXJNaW46ZSxfdXNlck1heDp0LF9zdWdnZXN0ZWRNaW46bixfc3VnZ2VzdGVkTWF4OnJ9PXRoaXM7cmV0dXJuIGU9RihlLDEvMCksdD1GKHQsLTEvMCksbj1GKG4sMS8wKSxyPUYociwtMS8wKSx7bWluOkYoZSxuKSxtYXg6Rih0LHIpLG1pbkRlZmluZWQ6UChlKSxtYXhEZWZpbmVkOlAodCl9fWdldE1pbk1heChlKXtsZXR7bWluOnQsbWF4Om4sbWluRGVmaW5lZDpyLG1heERlZmluZWQ6aX09dGhpcy5nZXRVc2VyQm91bmRzKCksYTtpZihyJiZpKXJldHVybnttaW46dCxtYXg6bn07bGV0IG89dGhpcy5nZXRNYXRjaGluZ1Zpc2libGVNZXRhcygpO2ZvcihsZXQgcz0wLGM9by5sZW5ndGg7czxjOysrcylhPW9bc10uY29udHJvbGxlci5nZXRNaW5NYXgodGhpcyxlKSxyfHwodD1NYXRoLm1pbih0LGEubWluKSksaXx8KG49TWF0aC5tYXgobixhLm1heCkpO3JldHVybiB0PWkmJnQ+bj9uOnQsbj1yJiZ0Pm4/dDpuLHttaW46Rih0LEYobix0KSksbWF4OkYobixGKHQsbikpfX1nZXRQYWRkaW5nKCl7cmV0dXJue2xlZnQ6dGhpcy5wYWRkaW5nTGVmdHx8MCx0b3A6dGhpcy5wYWRkaW5nVG9wfHwwLHJpZ2h0OnRoaXMucGFkZGluZ1JpZ2h0fHwwLGJvdHRvbTp0aGlzLnBhZGRpbmdCb3R0b218fDB9fWdldFRpY2tzKCl7cmV0dXJuIHRoaXMudGlja3N9Z2V0TGFiZWxzKCl7bGV0IGU9dGhpcy5jaGFydC5kYXRhO3JldHVybiB0aGlzLm9wdGlvbnMubGFiZWxzfHwodGhpcy5pc0hvcml6b250YWwoKT9lLnhMYWJlbHM6ZS55TGFiZWxzKXx8ZS5sYWJlbHN8fFtdfWdldExhYmVsSXRlbXMoZT10aGlzLmNoYXJ0LmNoYXJ0QXJlYSl7cmV0dXJuIHRoaXMuX2xhYmVsSXRlbXN8fD10aGlzLl9jb21wdXRlTGFiZWxJdGVtcyhlKX1iZWZvcmVMYXlvdXQoKXt0aGlzLl9jYWNoZT17fSx0aGlzLl9kYXRhTGltaXRzQ2FjaGVkPSExfWJlZm9yZVVwZGF0ZSgpe0wodGhpcy5vcHRpb25zLmJlZm9yZVVwZGF0ZSxbdGhpc10pfXVwZGF0ZShlLHQsbil7bGV0e2JlZ2luQXRaZXJvOnIsZ3JhY2U6aSx0aWNrczphfT10aGlzLm9wdGlvbnMsbz1hLnNhbXBsZVNpemU7dGhpcy5iZWZvcmVVcGRhdGUoKSx0aGlzLm1heFdpZHRoPWUsdGhpcy5tYXhIZWlnaHQ9dCx0aGlzLl9tYXJnaW5zPW49T2JqZWN0LmFzc2lnbih7bGVmdDowLHJpZ2h0OjAsdG9wOjAsYm90dG9tOjB9LG4pLHRoaXMudGlja3M9bnVsbCx0aGlzLl9sYWJlbFNpemVzPW51bGwsdGhpcy5fZ3JpZExpbmVJdGVtcz1udWxsLHRoaXMuX2xhYmVsSXRlbXM9bnVsbCx0aGlzLmJlZm9yZVNldERpbWVuc2lvbnMoKSx0aGlzLnNldERpbWVuc2lvbnMoKSx0aGlzLmFmdGVyU2V0RGltZW5zaW9ucygpLHRoaXMuX21heExlbmd0aD10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGgrbi5sZWZ0K24ucmlnaHQ6dGhpcy5oZWlnaHQrbi50b3Arbi5ib3R0b20sdGhpcy5fZGF0YUxpbWl0c0NhY2hlZHx8PSh0aGlzLmJlZm9yZURhdGFMaW1pdHMoKSx0aGlzLmRldGVybWluZURhdGFMaW1pdHMoKSx0aGlzLmFmdGVyRGF0YUxpbWl0cygpLHRoaXMuX3JhbmdlPVduKHRoaXMsaSxyKSwhMCksdGhpcy5iZWZvcmVCdWlsZFRpY2tzKCksdGhpcy50aWNrcz10aGlzLmJ1aWxkVGlja3MoKXx8W10sdGhpcy5hZnRlckJ1aWxkVGlja3MoKTtsZXQgcz1vPHRoaXMudGlja3MubGVuZ3RoO3RoaXMuX2NvbnZlcnRUaWNrc1RvTGFiZWxzKHM/VmEodGhpcy50aWNrcyxvKTp0aGlzLnRpY2tzKSx0aGlzLmNvbmZpZ3VyZSgpLHRoaXMuYmVmb3JlQ2FsY3VsYXRlTGFiZWxSb3RhdGlvbigpLHRoaXMuY2FsY3VsYXRlTGFiZWxSb3RhdGlvbigpLHRoaXMuYWZ0ZXJDYWxjdWxhdGVMYWJlbFJvdGF0aW9uKCksYS5kaXNwbGF5JiYoYS5hdXRvU2tpcHx8YS5zb3VyY2U9PT1gYXV0b2ApJiYodGhpcy50aWNrcz1qYSh0aGlzLHRoaXMudGlja3MpLHRoaXMuX2xhYmVsU2l6ZXM9bnVsbCx0aGlzLmFmdGVyQXV0b1NraXAoKSkscyYmdGhpcy5fY29udmVydFRpY2tzVG9MYWJlbHModGhpcy50aWNrcyksdGhpcy5iZWZvcmVGaXQoKSx0aGlzLmZpdCgpLHRoaXMuYWZ0ZXJGaXQoKSx0aGlzLmFmdGVyVXBkYXRlKCl9Y29uZmlndXJlKCl7bGV0IGU9dGhpcy5vcHRpb25zLnJldmVyc2UsdCxuO3RoaXMuaXNIb3Jpem9udGFsKCk/KHQ9dGhpcy5sZWZ0LG49dGhpcy5yaWdodCk6KHQ9dGhpcy50b3Asbj10aGlzLmJvdHRvbSxlPSFlKSx0aGlzLl9zdGFydFBpeGVsPXQsdGhpcy5fZW5kUGl4ZWw9bix0aGlzLl9yZXZlcnNlUGl4ZWxzPWUsdGhpcy5fbGVuZ3RoPW4tdCx0aGlzLl9hbGlnblRvUGl4ZWxzPXRoaXMub3B0aW9ucy5hbGlnblRvUGl4ZWxzfWFmdGVyVXBkYXRlKCl7TCh0aGlzLm9wdGlvbnMuYWZ0ZXJVcGRhdGUsW3RoaXNdKX1iZWZvcmVTZXREaW1lbnNpb25zKCl7TCh0aGlzLm9wdGlvbnMuYmVmb3JlU2V0RGltZW5zaW9ucyxbdGhpc10pfXNldERpbWVuc2lvbnMoKXt0aGlzLmlzSG9yaXpvbnRhbCgpPyh0aGlzLndpZHRoPXRoaXMubWF4V2lkdGgsdGhpcy5sZWZ0PTAsdGhpcy5yaWdodD10aGlzLndpZHRoKToodGhpcy5oZWlnaHQ9dGhpcy5tYXhIZWlnaHQsdGhpcy50b3A9MCx0aGlzLmJvdHRvbT10aGlzLmhlaWdodCksdGhpcy5wYWRkaW5nTGVmdD0wLHRoaXMucGFkZGluZ1RvcD0wLHRoaXMucGFkZGluZ1JpZ2h0PTAsdGhpcy5wYWRkaW5nQm90dG9tPTB9YWZ0ZXJTZXREaW1lbnNpb25zKCl7TCh0aGlzLm9wdGlvbnMuYWZ0ZXJTZXREaW1lbnNpb25zLFt0aGlzXSl9X2NhbGxIb29rcyhlKXt0aGlzLmNoYXJ0Lm5vdGlmeVBsdWdpbnMoZSx0aGlzLmdldENvbnRleHQoKSksTCh0aGlzLm9wdGlvbnNbZV0sW3RoaXNdKX1iZWZvcmVEYXRhTGltaXRzKCl7dGhpcy5fY2FsbEhvb2tzKGBiZWZvcmVEYXRhTGltaXRzYCl9ZGV0ZXJtaW5lRGF0YUxpbWl0cygpe31hZnRlckRhdGFMaW1pdHMoKXt0aGlzLl9jYWxsSG9va3MoYGFmdGVyRGF0YUxpbWl0c2ApfWJlZm9yZUJ1aWxkVGlja3MoKXt0aGlzLl9jYWxsSG9va3MoYGJlZm9yZUJ1aWxkVGlja3NgKX1idWlsZFRpY2tzKCl7cmV0dXJuW119YWZ0ZXJCdWlsZFRpY2tzKCl7dGhpcy5fY2FsbEhvb2tzKGBhZnRlckJ1aWxkVGlja3NgKX1iZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb24oKXtMKHRoaXMub3B0aW9ucy5iZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb24sW3RoaXNdKX1nZW5lcmF0ZVRpY2tMYWJlbHMoZSl7bGV0IHQ9dGhpcy5vcHRpb25zLnRpY2tzLG4scixpO2ZvcihuPTAscj1lLmxlbmd0aDtuPHI7bisrKWk9ZVtuXSxpLmxhYmVsPUwodC5jYWxsYmFjayxbaS52YWx1ZSxuLGVdLHRoaXMpfWFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uKCl7TCh0aGlzLm9wdGlvbnMuYWZ0ZXJUaWNrVG9MYWJlbENvbnZlcnNpb24sW3RoaXNdKX1iZWZvcmVDYWxjdWxhdGVMYWJlbFJvdGF0aW9uKCl7TCh0aGlzLm9wdGlvbnMuYmVmb3JlQ2FsY3VsYXRlTGFiZWxSb3RhdGlvbixbdGhpc10pfWNhbGN1bGF0ZUxhYmVsUm90YXRpb24oKXtsZXQgZT10aGlzLm9wdGlvbnMsdD1lLnRpY2tzLG49QmEodGhpcy50aWNrcy5sZW5ndGgsZS50aWNrcy5tYXhUaWNrc0xpbWl0KSxyPXQubWluUm90YXRpb258fDAsaT10Lm1heFJvdGF0aW9uLGE9cixvLHMsYztpZighdGhpcy5faXNWaXNpYmxlKCl8fCF0LmRpc3BsYXl8fHI+PWl8fG48PTF8fCF0aGlzLmlzSG9yaXpvbnRhbCgpKXt0aGlzLmxhYmVsUm90YXRpb249cjtyZXR1cm59bGV0IGw9dGhpcy5fZ2V0TGFiZWxTaXplcygpLHU9bC53aWRlc3Qud2lkdGgsZD1sLmhpZ2hlc3QuaGVpZ2h0LGY9VSh0aGlzLmNoYXJ0LndpZHRoLXUsMCx0aGlzLm1heFdpZHRoKTtvPWUub2Zmc2V0P3RoaXMubWF4V2lkdGgvbjpmLyhuLTEpLHUrNj5vJiYobz1mLyhuLShlLm9mZnNldD8uNToxKSkscz10aGlzLm1heEhlaWdodC1XYShlLmdyaWQpLXQucGFkZGluZy1HYShlLnRpdGxlLHRoaXMuY2hhcnQub3B0aW9ucy5mb250KSxjPU1hdGguc3FydCh1KnUrZCpkKSxhPU90KE1hdGgubWluKE1hdGguYXNpbihVKChsLmhpZ2hlc3QuaGVpZ2h0KzYpL28sLTEsMSkpLE1hdGguYXNpbihVKHMvYywtMSwxKSktTWF0aC5hc2luKFUoZC9jLC0xLDEpKSkpLGE9TWF0aC5tYXgocixNYXRoLm1pbihpLGEpKSksdGhpcy5sYWJlbFJvdGF0aW9uPWF9YWZ0ZXJDYWxjdWxhdGVMYWJlbFJvdGF0aW9uKCl7TCh0aGlzLm9wdGlvbnMuYWZ0ZXJDYWxjdWxhdGVMYWJlbFJvdGF0aW9uLFt0aGlzXSl9YWZ0ZXJBdXRvU2tpcCgpe31iZWZvcmVGaXQoKXtMKHRoaXMub3B0aW9ucy5iZWZvcmVGaXQsW3RoaXNdKX1maXQoKXtsZXQgZT17d2lkdGg6MCxoZWlnaHQ6MH0se2NoYXJ0OnQsb3B0aW9uczp7dGlja3M6bix0aXRsZTpyLGdyaWQ6aX19PXRoaXMsYT10aGlzLl9pc1Zpc2libGUoKSxvPXRoaXMuaXNIb3Jpem9udGFsKCk7aWYoYSl7bGV0IGE9R2Eocix0Lm9wdGlvbnMuZm9udCk7aWYobz8oZS53aWR0aD10aGlzLm1heFdpZHRoLGUuaGVpZ2h0PVdhKGkpK2EpOihlLmhlaWdodD10aGlzLm1heEhlaWdodCxlLndpZHRoPVdhKGkpK2EpLG4uZGlzcGxheSYmdGhpcy50aWNrcy5sZW5ndGgpe2xldHtmaXJzdDp0LGxhc3Q6cix3aWRlc3Q6aSxoaWdoZXN0OmF9PXRoaXMuX2dldExhYmVsU2l6ZXMoKSxzPW4ucGFkZGluZyoyLGM9RHQodGhpcy5sYWJlbFJvdGF0aW9uKSxsPU1hdGguY29zKGMpLHU9TWF0aC5zaW4oYyk7aWYobyl7bGV0IHQ9bi5taXJyb3I/MDp1Kmkud2lkdGgrbCphLmhlaWdodDtlLmhlaWdodD1NYXRoLm1pbih0aGlzLm1heEhlaWdodCxlLmhlaWdodCt0K3MpfWVsc2V7bGV0IHQ9bi5taXJyb3I/MDpsKmkud2lkdGgrdSphLmhlaWdodDtlLndpZHRoPU1hdGgubWluKHRoaXMubWF4V2lkdGgsZS53aWR0aCt0K3MpfXRoaXMuX2NhbGN1bGF0ZVBhZGRpbmcodCxyLHUsbCl9fXRoaXMuX2hhbmRsZU1hcmdpbnMoKSxvPyh0aGlzLndpZHRoPXRoaXMuX2xlbmd0aD10LndpZHRoLXRoaXMuX21hcmdpbnMubGVmdC10aGlzLl9tYXJnaW5zLnJpZ2h0LHRoaXMuaGVpZ2h0PWUuaGVpZ2h0KToodGhpcy53aWR0aD1lLndpZHRoLHRoaXMuaGVpZ2h0PXRoaXMuX2xlbmd0aD10LmhlaWdodC10aGlzLl9tYXJnaW5zLnRvcC10aGlzLl9tYXJnaW5zLmJvdHRvbSl9X2NhbGN1bGF0ZVBhZGRpbmcoZSx0LG4scil7bGV0e3RpY2tzOnthbGlnbjppLHBhZGRpbmc6YX0scG9zaXRpb246b309dGhpcy5vcHRpb25zLHM9dGhpcy5sYWJlbFJvdGF0aW9uIT09MCxjPW8hPT1gdG9wYCYmdGhpcy5heGlzPT09YHhgO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpe2xldCBvPXRoaXMuZ2V0UGl4ZWxGb3JUaWNrKDApLXRoaXMubGVmdCxsPXRoaXMucmlnaHQtdGhpcy5nZXRQaXhlbEZvclRpY2sodGhpcy50aWNrcy5sZW5ndGgtMSksdT0wLGQ9MDtzP2M/KHU9ciplLndpZHRoLGQ9bip0LmhlaWdodCk6KHU9biplLmhlaWdodCxkPXIqdC53aWR0aCk6aT09PWBzdGFydGA/ZD10LndpZHRoOmk9PT1gZW5kYD91PWUud2lkdGg6aSE9PWBpbm5lcmAmJih1PWUud2lkdGgvMixkPXQud2lkdGgvMiksdGhpcy5wYWRkaW5nTGVmdD1NYXRoLm1heCgodS1vK2EpKnRoaXMud2lkdGgvKHRoaXMud2lkdGgtbyksMCksdGhpcy5wYWRkaW5nUmlnaHQ9TWF0aC5tYXgoKGQtbCthKSp0aGlzLndpZHRoLyh0aGlzLndpZHRoLWwpLDApfWVsc2V7bGV0IG49dC5oZWlnaHQvMixyPWUuaGVpZ2h0LzI7aT09PWBzdGFydGA/KG49MCxyPWUuaGVpZ2h0KTppPT09YGVuZGAmJihuPXQuaGVpZ2h0LHI9MCksdGhpcy5wYWRkaW5nVG9wPW4rYSx0aGlzLnBhZGRpbmdCb3R0b209cithfX1faGFuZGxlTWFyZ2lucygpe3RoaXMuX21hcmdpbnMmJih0aGlzLl9tYXJnaW5zLmxlZnQ9TWF0aC5tYXgodGhpcy5wYWRkaW5nTGVmdCx0aGlzLl9tYXJnaW5zLmxlZnQpLHRoaXMuX21hcmdpbnMudG9wPU1hdGgubWF4KHRoaXMucGFkZGluZ1RvcCx0aGlzLl9tYXJnaW5zLnRvcCksdGhpcy5fbWFyZ2lucy5yaWdodD1NYXRoLm1heCh0aGlzLnBhZGRpbmdSaWdodCx0aGlzLl9tYXJnaW5zLnJpZ2h0KSx0aGlzLl9tYXJnaW5zLmJvdHRvbT1NYXRoLm1heCh0aGlzLnBhZGRpbmdCb3R0b20sdGhpcy5fbWFyZ2lucy5ib3R0b20pKX1hZnRlckZpdCgpe0wodGhpcy5vcHRpb25zLmFmdGVyRml0LFt0aGlzXSl9aXNIb3Jpem9udGFsKCl7bGV0e2F4aXM6ZSxwb3NpdGlvbjp0fT10aGlzLm9wdGlvbnM7cmV0dXJuIHQ9PT1gdG9wYHx8dD09PWBib3R0b21gfHxlPT09YHhgfWlzRnVsbFNpemUoKXtyZXR1cm4gdGhpcy5vcHRpb25zLmZ1bGxTaXplfV9jb252ZXJ0VGlja3NUb0xhYmVscyhlKXt0aGlzLmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbigpLHRoaXMuZ2VuZXJhdGVUaWNrTGFiZWxzKGUpO2xldCB0LG47Zm9yKHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspaihlW3RdLmxhYmVsKSYmKGUuc3BsaWNlKHQsMSksbi0tLHQtLSk7dGhpcy5hZnRlclRpY2tUb0xhYmVsQ29udmVyc2lvbigpfV9nZXRMYWJlbFNpemVzKCl7bGV0IGU9dGhpcy5fbGFiZWxTaXplcztpZighZSl7bGV0IHQ9dGhpcy5vcHRpb25zLnRpY2tzLnNhbXBsZVNpemUsbj10aGlzLnRpY2tzO3Q8bi5sZW5ndGgmJihuPVZhKG4sdCkpLHRoaXMuX2xhYmVsU2l6ZXM9ZT10aGlzLl9jb21wdXRlTGFiZWxTaXplcyhuLG4ubGVuZ3RoLHRoaXMub3B0aW9ucy50aWNrcy5tYXhUaWNrc0xpbWl0KX1yZXR1cm4gZX1fY29tcHV0ZUxhYmVsU2l6ZXMoZSx0LG4pe2xldHtjdHg6cixfbG9uZ2VzdFRleHRDYWNoZTppfT10aGlzLGE9W10sbz1bXSxzPU1hdGguZmxvb3IodC9CYSh0LG4pKSxjPTAsbD0wLHUsZCxmLHAsbSxoLGcsXyx2LHksYjtmb3IodT0wO3U8dDt1Kz1zKXtpZihwPWVbdV0ubGFiZWwsbT10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKHUpLHIuZm9udD1oPW0uc3RyaW5nLGc9aVtoXT1pW2hdfHx7ZGF0YTp7fSxnYzpbXX0sXz1tLmxpbmVIZWlnaHQsdj15PTAsIWoocCkmJiFNKHApKXY9eG4ocixnLmRhdGEsZy5nYyx2LHApLHk9XztlbHNlIGlmKE0ocCkpZm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjsrK2QpYj1wW2RdLCFqKGIpJiYhTShiKSYmKHY9eG4ocixnLmRhdGEsZy5nYyx2LGIpLHkrPV8pO2EucHVzaCh2KSxvLnB1c2goeSksYz1NYXRoLm1heCh2LGMpLGw9TWF0aC5tYXgoeSxsKX1VYShpLHQpO2xldCB4PWEuaW5kZXhPZihjKSxTPW8uaW5kZXhPZihsKSxDPWU9Pih7d2lkdGg6YVtlXXx8MCxoZWlnaHQ6b1tlXXx8MH0pO3JldHVybntmaXJzdDpDKDApLGxhc3Q6Qyh0LTEpLHdpZGVzdDpDKHgpLGhpZ2hlc3Q6QyhTKSx3aWR0aHM6YSxoZWlnaHRzOm99fWdldExhYmVsRm9yVmFsdWUoZSl7cmV0dXJuIGV9Z2V0UGl4ZWxGb3JWYWx1ZShlLHQpe3JldHVybiBOYU59Z2V0VmFsdWVGb3JQaXhlbChlKXt9Z2V0UGl4ZWxGb3JUaWNrKGUpe2xldCB0PXRoaXMudGlja3M7cmV0dXJuIGU8MHx8ZT50Lmxlbmd0aC0xP251bGw6dGhpcy5nZXRQaXhlbEZvclZhbHVlKHRbZV0udmFsdWUpfWdldFBpeGVsRm9yRGVjaW1hbChlKXt0aGlzLl9yZXZlcnNlUGl4ZWxzJiYoZT0xLWUpO2xldCB0PXRoaXMuX3N0YXJ0UGl4ZWwrZSp0aGlzLl9sZW5ndGg7cmV0dXJuIFB0KHRoaXMuX2FsaWduVG9QaXhlbHM/Q24odGhpcy5jaGFydCx0LDApOnQpfWdldERlY2ltYWxGb3JQaXhlbChlKXtsZXQgdD0oZS10aGlzLl9zdGFydFBpeGVsKS90aGlzLl9sZW5ndGg7cmV0dXJuIHRoaXMuX3JldmVyc2VQaXhlbHM/MS10OnR9Z2V0QmFzZVBpeGVsKCl7cmV0dXJuIHRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZSh0aGlzLmdldEJhc2VWYWx1ZSgpKX1nZXRCYXNlVmFsdWUoKXtsZXR7bWluOmUsbWF4OnR9PXRoaXM7cmV0dXJuIGU8MCYmdDwwP3Q6ZT4wJiZ0PjA/ZTowfWdldENvbnRleHQoZSl7bGV0IHQ9dGhpcy50aWNrc3x8W107aWYoZT49MCYmZTx0Lmxlbmd0aCl7bGV0IG49dFtlXTtyZXR1cm4gbi4kY29udGV4dHx8PXFhKHRoaXMuZ2V0Q29udGV4dCgpLGUsbil9cmV0dXJuIHRoaXMuJGNvbnRleHR8fD1LYSh0aGlzLmNoYXJ0LmdldENvbnRleHQoKSx0aGlzKX1fdGlja1NpemUoKXtsZXQgZT10aGlzLm9wdGlvbnMudGlja3MsdD1EdCh0aGlzLmxhYmVsUm90YXRpb24pLG49TWF0aC5hYnMoTWF0aC5jb3ModCkpLHI9TWF0aC5hYnMoTWF0aC5zaW4odCkpLGk9dGhpcy5fZ2V0TGFiZWxTaXplcygpLGE9ZS5hdXRvU2tpcFBhZGRpbmd8fDAsbz1pP2kud2lkZXN0LndpZHRoK2E6MCxzPWk/aS5oaWdoZXN0LmhlaWdodCthOjA7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCk/cypuPm8qcj9vL246cy9yOnMqcjxvKm4/cy9uOm8vcn1faXNWaXNpYmxlKCl7bGV0IGU9dGhpcy5vcHRpb25zLmRpc3BsYXk7cmV0dXJuIGU9PT1gYXV0b2A/dGhpcy5nZXRNYXRjaGluZ1Zpc2libGVNZXRhcygpLmxlbmd0aD4wOiEhZX1fY29tcHV0ZUdyaWRMaW5lSXRlbXMoZSl7bGV0IHQ9dGhpcy5heGlzLG49dGhpcy5jaGFydCxyPXRoaXMub3B0aW9ucyx7Z3JpZDppLHBvc2l0aW9uOmEsYm9yZGVyOm99PXIscz1pLm9mZnNldCxjPXRoaXMuaXNIb3Jpem9udGFsKCksbD10aGlzLnRpY2tzLmxlbmd0aCsgKyEhcyx1PVdhKGkpLGQ9W10sZj1vLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KCkpLHA9Zi5kaXNwbGF5P2Yud2lkdGg6MCxtPXAvMixoPWZ1bmN0aW9uKGUpe3JldHVybiBDbihuLGUscCl9LGcsXyx2LHksYix4LFMsQyx3LFQsRSxEO2lmKGE9PT1gdG9wYClnPWgodGhpcy5ib3R0b20pLHg9dGhpcy5ib3R0b20tdSxDPWctbSxUPWgoZS50b3ApK20sRD1lLmJvdHRvbTtlbHNlIGlmKGE9PT1gYm90dG9tYClnPWgodGhpcy50b3ApLFQ9ZS50b3AsRD1oKGUuYm90dG9tKS1tLHg9ZyttLEM9dGhpcy50b3ArdTtlbHNlIGlmKGE9PT1gbGVmdGApZz1oKHRoaXMucmlnaHQpLGI9dGhpcy5yaWdodC11LFM9Zy1tLHc9aChlLmxlZnQpK20sRT1lLnJpZ2h0O2Vsc2UgaWYoYT09PWByaWdodGApZz1oKHRoaXMubGVmdCksdz1lLmxlZnQsRT1oKGUucmlnaHQpLW0sYj1nK20sUz10aGlzLmxlZnQrdTtlbHNlIGlmKHQ9PT1geGApe2lmKGE9PT1gY2VudGVyYClnPWgoKGUudG9wK2UuYm90dG9tKS8yKy41KTtlbHNlIGlmKE4oYSkpe2xldCBlPU9iamVjdC5rZXlzKGEpWzBdLHQ9YVtlXTtnPWgodGhpcy5jaGFydC5zY2FsZXNbZV0uZ2V0UGl4ZWxGb3JWYWx1ZSh0KSl9VD1lLnRvcCxEPWUuYm90dG9tLHg9ZyttLEM9eCt1fWVsc2UgaWYodD09PWB5YCl7aWYoYT09PWBjZW50ZXJgKWc9aCgoZS5sZWZ0K2UucmlnaHQpLzIpO2Vsc2UgaWYoTihhKSl7bGV0IGU9T2JqZWN0LmtleXMoYSlbMF0sdD1hW2VdO2c9aCh0aGlzLmNoYXJ0LnNjYWxlc1tlXS5nZXRQaXhlbEZvclZhbHVlKHQpKX1iPWctbSxTPWItdSx3PWUubGVmdCxFPWUucmlnaHR9bGV0IGVlPUkoci50aWNrcy5tYXhUaWNrc0xpbWl0LGwpLHRlPU1hdGgubWF4KDEsTWF0aC5jZWlsKGwvZWUpKTtmb3IoXz0wO188bDtfKz10ZSl7bGV0IGU9dGhpcy5nZXRDb250ZXh0KF8pLHQ9aS5zZXRDb250ZXh0KGUpLHI9by5zZXRDb250ZXh0KGUpLGE9dC5saW5lV2lkdGgsbD10LmNvbG9yLHU9ci5kYXNofHxbXSxmPXIuZGFzaE9mZnNldCxwPXQudGlja1dpZHRoLG09dC50aWNrQ29sb3IsaD10LnRpY2tCb3JkZXJEYXNofHxbXSxnPXQudGlja0JvcmRlckRhc2hPZmZzZXQ7dj1IYSh0aGlzLF8scyksdiE9PXZvaWQgMCYmKHk9Q24obix2LGEpLGM/Yj1TPXc9RT15Ong9Qz1UPUQ9eSxkLnB1c2goe3R4MTpiLHR5MTp4LHR4MjpTLHR5MjpDLHgxOncseTE6VCx4MjpFLHkyOkQsd2lkdGg6YSxjb2xvcjpsLGJvcmRlckRhc2g6dSxib3JkZXJEYXNoT2Zmc2V0OmYsdGlja1dpZHRoOnAsdGlja0NvbG9yOm0sdGlja0JvcmRlckRhc2g6aCx0aWNrQm9yZGVyRGFzaE9mZnNldDpnfSkpfXJldHVybiB0aGlzLl90aWNrc0xlbmd0aD1sLHRoaXMuX2JvcmRlclZhbHVlPWcsZH1fY29tcHV0ZUxhYmVsSXRlbXMoZSl7bGV0IHQ9dGhpcy5heGlzLG49dGhpcy5vcHRpb25zLHtwb3NpdGlvbjpyLHRpY2tzOml9PW4sYT10aGlzLmlzSG9yaXpvbnRhbCgpLG89dGhpcy50aWNrcyx7YWxpZ246cyxjcm9zc0FsaWduOmMscGFkZGluZzpsLG1pcnJvcjp1fT1pLGQ9V2Eobi5ncmlkKSxmPWQrbCxwPXU/LWw6ZixtPS1EdCh0aGlzLmxhYmVsUm90YXRpb24pLGg9W10sZyxfLHYseSxiLHgsUyxDLHcsVCxFLEQsZWU9YG1pZGRsZWA7aWYocj09PWB0b3BgKXg9dGhpcy5ib3R0b20tcCxTPXRoaXMuX2dldFhBeGlzTGFiZWxBbGlnbm1lbnQoKTtlbHNlIGlmKHI9PT1gYm90dG9tYCl4PXRoaXMudG9wK3AsUz10aGlzLl9nZXRYQXhpc0xhYmVsQWxpZ25tZW50KCk7ZWxzZSBpZihyPT09YGxlZnRgKXtsZXQgZT10aGlzLl9nZXRZQXhpc0xhYmVsQWxpZ25tZW50KGQpO1M9ZS50ZXh0QWxpZ24sYj1lLnh9ZWxzZSBpZihyPT09YHJpZ2h0YCl7bGV0IGU9dGhpcy5fZ2V0WUF4aXNMYWJlbEFsaWdubWVudChkKTtTPWUudGV4dEFsaWduLGI9ZS54fWVsc2UgaWYodD09PWB4YCl7aWYocj09PWBjZW50ZXJgKXg9KGUudG9wK2UuYm90dG9tKS8yK2Y7ZWxzZSBpZihOKHIpKXtsZXQgZT1PYmplY3Qua2V5cyhyKVswXSx0PXJbZV07eD10aGlzLmNoYXJ0LnNjYWxlc1tlXS5nZXRQaXhlbEZvclZhbHVlKHQpK2Z9Uz10aGlzLl9nZXRYQXhpc0xhYmVsQWxpZ25tZW50KCl9ZWxzZSBpZih0PT09YHlgKXtpZihyPT09YGNlbnRlcmApYj0oZS5sZWZ0K2UucmlnaHQpLzItZjtlbHNlIGlmKE4ocikpe2xldCBlPU9iamVjdC5rZXlzKHIpWzBdLHQ9cltlXTtiPXRoaXMuY2hhcnQuc2NhbGVzW2VdLmdldFBpeGVsRm9yVmFsdWUodCl9Uz10aGlzLl9nZXRZQXhpc0xhYmVsQWxpZ25tZW50KGQpLnRleHRBbGlnbn10PT09YHlgJiYocz09PWBzdGFydGA/ZWU9YHRvcGA6cz09PWBlbmRgJiYoZWU9YGJvdHRvbWApKTtsZXQgdGU9dGhpcy5fZ2V0TGFiZWxTaXplcygpO2ZvcihnPTAsXz1vLmxlbmd0aDtnPF87KytnKXt2PW9bZ10seT12LmxhYmVsO2xldCBlPWkuc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoZykpO0M9dGhpcy5nZXRQaXhlbEZvclRpY2soZykraS5sYWJlbE9mZnNldCx3PXRoaXMuX3Jlc29sdmVUaWNrRm9udE9wdGlvbnMoZyksVD13LmxpbmVIZWlnaHQsRT1NKHkpP3kubGVuZ3RoOjE7bGV0IHQ9RS8yLG49ZS5jb2xvcixzPWUudGV4dFN0cm9rZUNvbG9yLGw9ZS50ZXh0U3Ryb2tlV2lkdGgsZD1TO2E/KGI9QyxTPT09YGlubmVyYCYmKGQ9Zz09PV8tMT90aGlzLm9wdGlvbnMucmV2ZXJzZT9gbGVmdGA6YHJpZ2h0YDpnPT09MD90aGlzLm9wdGlvbnMucmV2ZXJzZT9gcmlnaHRgOmBsZWZ0YDpgY2VudGVyYCksRD1yPT09YHRvcGA/Yz09PWBuZWFyYHx8bSE9PTA/LUUqVCtULzI6Yz09PWBjZW50ZXJgPy10ZS5oaWdoZXN0LmhlaWdodC8yLXQqVCtUOi10ZS5oaWdoZXN0LmhlaWdodCtULzI6Yz09PWBuZWFyYHx8bSE9PTA/VC8yOmM9PT1gY2VudGVyYD90ZS5oaWdoZXN0LmhlaWdodC8yLXQqVDp0ZS5oaWdoZXN0LmhlaWdodC1FKlQsdSYmKEQqPS0xKSxtIT09MCYmIWUuc2hvd0xhYmVsQmFja2Ryb3AmJihiKz1ULzIqTWF0aC5zaW4obSkpKTooeD1DLEQ9KDEtRSkqVC8yKTtsZXQgZjtpZihlLnNob3dMYWJlbEJhY2tkcm9wKXtsZXQgdD1xKGUuYmFja2Ryb3BQYWRkaW5nKSxuPXRlLmhlaWdodHNbZ10scj10ZS53aWR0aHNbZ10saT1ELXQudG9wLGE9MC10LmxlZnQ7c3dpdGNoKGVlKXtjYXNlYG1pZGRsZWA6aS09bi8yO2JyZWFrO2Nhc2VgYm90dG9tYDppLT1ufXN3aXRjaChTKXtjYXNlYGNlbnRlcmA6YS09ci8yO2JyZWFrO2Nhc2VgcmlnaHRgOmEtPXI7YnJlYWs7Y2FzZWBpbm5lcmA6Zz09PV8tMT9hLT1yOmc+MCYmKGEtPXIvMil9Zj17bGVmdDphLHRvcDppLHdpZHRoOnIrdC53aWR0aCxoZWlnaHQ6bit0LmhlaWdodCxjb2xvcjplLmJhY2tkcm9wQ29sb3J9fWgucHVzaCh7bGFiZWw6eSxmb250OncsdGV4dE9mZnNldDpELG9wdGlvbnM6e3JvdGF0aW9uOm0sY29sb3I6bixzdHJva2VDb2xvcjpzLHN0cm9rZVdpZHRoOmwsdGV4dEFsaWduOmQsdGV4dEJhc2VsaW5lOmVlLHRyYW5zbGF0aW9uOltiLHhdLGJhY2tkcm9wOmZ9fSl9cmV0dXJuIGh9X2dldFhBeGlzTGFiZWxBbGlnbm1lbnQoKXtsZXR7cG9zaXRpb246ZSx0aWNrczp0fT10aGlzLm9wdGlvbnM7aWYoLUR0KHRoaXMubGFiZWxSb3RhdGlvbikpcmV0dXJuIGU9PT1gdG9wYD9gbGVmdGA6YHJpZ2h0YDtsZXQgbj1gY2VudGVyYDtyZXR1cm4gdC5hbGlnbj09PWBzdGFydGA/bj1gbGVmdGA6dC5hbGlnbj09PWBlbmRgP249YHJpZ2h0YDp0LmFsaWduPT09YGlubmVyYCYmKG49YGlubmVyYCksbn1fZ2V0WUF4aXNMYWJlbEFsaWdubWVudChlKXtsZXR7cG9zaXRpb246dCx0aWNrczp7Y3Jvc3NBbGlnbjpuLG1pcnJvcjpyLHBhZGRpbmc6aX19PXRoaXMub3B0aW9ucyxhPXRoaXMuX2dldExhYmVsU2l6ZXMoKSxvPWUraSxzPWEud2lkZXN0LndpZHRoLGMsbDtyZXR1cm4gdD09PWBsZWZ0YD9yPyhsPXRoaXMucmlnaHQraSxuPT09YG5lYXJgP2M9YGxlZnRgOm49PT1gY2VudGVyYD8oYz1gY2VudGVyYCxsKz1zLzIpOihjPWByaWdodGAsbCs9cykpOihsPXRoaXMucmlnaHQtbyxuPT09YG5lYXJgP2M9YHJpZ2h0YDpuPT09YGNlbnRlcmA/KGM9YGNlbnRlcmAsbC09cy8yKTooYz1gbGVmdGAsbD10aGlzLmxlZnQpKTp0PT09YHJpZ2h0YD9yPyhsPXRoaXMubGVmdCtpLG49PT1gbmVhcmA/Yz1gcmlnaHRgOm49PT1gY2VudGVyYD8oYz1gY2VudGVyYCxsLT1zLzIpOihjPWBsZWZ0YCxsLT1zKSk6KGw9dGhpcy5sZWZ0K28sbj09PWBuZWFyYD9jPWBsZWZ0YDpuPT09YGNlbnRlcmA/KGM9YGNlbnRlcmAsbCs9cy8yKTooYz1gcmlnaHRgLGw9dGhpcy5yaWdodCkpOmM9YHJpZ2h0YCx7dGV4dEFsaWduOmMseDpsfX1fY29tcHV0ZUxhYmVsQXJlYSgpe2lmKHRoaXMub3B0aW9ucy50aWNrcy5taXJyb3IpcmV0dXJuO2xldCBlPXRoaXMuY2hhcnQsdD10aGlzLm9wdGlvbnMucG9zaXRpb247aWYodD09PWBsZWZ0YHx8dD09PWByaWdodGApcmV0dXJue3RvcDowLGxlZnQ6dGhpcy5sZWZ0LGJvdHRvbTplLmhlaWdodCxyaWdodDp0aGlzLnJpZ2h0fTtpZih0PT09YHRvcGB8fHQ9PT1gYm90dG9tYClyZXR1cm57dG9wOnRoaXMudG9wLGxlZnQ6MCxib3R0b206dGhpcy5ib3R0b20scmlnaHQ6ZS53aWR0aH19ZHJhd0JhY2tncm91bmQoKXtsZXR7Y3R4OmUsb3B0aW9uczp7YmFja2dyb3VuZENvbG9yOnR9LGxlZnQ6bix0b3A6cix3aWR0aDppLGhlaWdodDphfT10aGlzO3QmJihlLnNhdmUoKSxlLmZpbGxTdHlsZT10LGUuZmlsbFJlY3QobixyLGksYSksZS5yZXN0b3JlKCkpfWdldExpbmVXaWR0aEZvclZhbHVlKGUpe2xldCB0PXRoaXMub3B0aW9ucy5ncmlkO2lmKCF0aGlzLl9pc1Zpc2libGUoKXx8IXQuZGlzcGxheSlyZXR1cm4gMDtsZXQgbj10aGlzLnRpY2tzLmZpbmRJbmRleCh0PT50LnZhbHVlPT09ZSk7cmV0dXJuIG4+PTA/dC5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dChuKSkubGluZVdpZHRoOjB9ZHJhd0dyaWQoZSl7bGV0IHQ9dGhpcy5vcHRpb25zLmdyaWQsbj10aGlzLmN0eCxyPXRoaXMuX2dyaWRMaW5lSXRlbXN8fD10aGlzLl9jb21wdXRlR3JpZExpbmVJdGVtcyhlKSxpLGEsbz0oZSx0LHIpPT57IXIud2lkdGh8fCFyLmNvbG9yfHwobi5zYXZlKCksbi5saW5lV2lkdGg9ci53aWR0aCxuLnN0cm9rZVN0eWxlPXIuY29sb3Isbi5zZXRMaW5lRGFzaChyLmJvcmRlckRhc2h8fFtdKSxuLmxpbmVEYXNoT2Zmc2V0PXIuYm9yZGVyRGFzaE9mZnNldCxuLmJlZ2luUGF0aCgpLG4ubW92ZVRvKGUueCxlLnkpLG4ubGluZVRvKHQueCx0LnkpLG4uc3Ryb2tlKCksbi5yZXN0b3JlKCkpfTtpZih0LmRpc3BsYXkpZm9yKGk9MCxhPXIubGVuZ3RoO2k8YTsrK2kpe2xldCBlPXJbaV07dC5kcmF3T25DaGFydEFyZWEmJm8oe3g6ZS54MSx5OmUueTF9LHt4OmUueDIseTplLnkyfSxlKSx0LmRyYXdUaWNrcyYmbyh7eDplLnR4MSx5OmUudHkxfSx7eDplLnR4Mix5OmUudHkyfSx7Y29sb3I6ZS50aWNrQ29sb3Isd2lkdGg6ZS50aWNrV2lkdGgsYm9yZGVyRGFzaDplLnRpY2tCb3JkZXJEYXNoLGJvcmRlckRhc2hPZmZzZXQ6ZS50aWNrQm9yZGVyRGFzaE9mZnNldH0pfX1kcmF3Qm9yZGVyKCl7bGV0e2NoYXJ0OmUsY3R4OnQsb3B0aW9uczp7Ym9yZGVyOm4sZ3JpZDpyfX09dGhpcyxpPW4uc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoKSksYT1uLmRpc3BsYXk/aS53aWR0aDowO2lmKCFhKXJldHVybjtsZXQgbz1yLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KDApKS5saW5lV2lkdGgscz10aGlzLl9ib3JkZXJWYWx1ZSxjLGwsdSxkO3RoaXMuaXNIb3Jpem9udGFsKCk/KGM9Q24oZSx0aGlzLmxlZnQsYSktYS8yLGw9Q24oZSx0aGlzLnJpZ2h0LG8pK28vMix1PWQ9cyk6KHU9Q24oZSx0aGlzLnRvcCxhKS1hLzIsZD1DbihlLHRoaXMuYm90dG9tLG8pK28vMixjPWw9cyksdC5zYXZlKCksdC5saW5lV2lkdGg9aS53aWR0aCx0LnN0cm9rZVN0eWxlPWkuY29sb3IsdC5iZWdpblBhdGgoKSx0Lm1vdmVUbyhjLHUpLHQubGluZVRvKGwsZCksdC5zdHJva2UoKSx0LnJlc3RvcmUoKX1kcmF3TGFiZWxzKGUpe2lmKCF0aGlzLm9wdGlvbnMudGlja3MuZGlzcGxheSlyZXR1cm47bGV0IHQ9dGhpcy5jdHgsbj10aGlzLl9jb21wdXRlTGFiZWxBcmVhKCk7biYmRG4odCxuKTtsZXQgcj10aGlzLmdldExhYmVsSXRlbXMoZSk7Zm9yKGxldCBlIG9mIHIpe2xldCBuPWUub3B0aW9ucyxyPWUuZm9udCxpPWUubGFiZWwsYT1lLnRleHRPZmZzZXQ7UG4odCxpLDAsYSxyLG4pfW4mJk9uKHQpfWRyYXdUaXRsZSgpe2xldHtjdHg6ZSxvcHRpb25zOntwb3NpdGlvbjp0LHRpdGxlOm4scmV2ZXJzZTpyfX09dGhpcztpZighbi5kaXNwbGF5KXJldHVybjtsZXQgaT1KKG4uZm9udCksYT1xKG4ucGFkZGluZyksbz1uLmFsaWduLHM9aS5saW5lSGVpZ2h0LzI7dD09PWBib3R0b21gfHx0PT09YGNlbnRlcmB8fE4odCk/KHMrPWEuYm90dG9tLE0obi50ZXh0KSYmKHMrPWkubGluZUhlaWdodCoobi50ZXh0Lmxlbmd0aC0xKSkpOnMrPWEudG9wO2xldHt0aXRsZVg6Yyx0aXRsZVk6bCxtYXhXaWR0aDp1LHJvdGF0aW9uOmR9PVlhKHRoaXMscyx0LG8pO1BuKGUsbi50ZXh0LDAsMCxpLHtjb2xvcjpuLmNvbG9yLG1heFdpZHRoOnUscm90YXRpb246ZCx0ZXh0QWxpZ246SmEobyx0LHIpLHRleHRCYXNlbGluZTpgbWlkZGxlYCx0cmFuc2xhdGlvbjpbYyxsXX0pfWRyYXcoZSl7dGhpcy5faXNWaXNpYmxlKCkmJih0aGlzLmRyYXdCYWNrZ3JvdW5kKCksdGhpcy5kcmF3R3JpZChlKSx0aGlzLmRyYXdCb3JkZXIoKSx0aGlzLmRyYXdUaXRsZSgpLHRoaXMuZHJhd0xhYmVscyhlKSl9X2xheWVycygpe2xldCB0PXRoaXMub3B0aW9ucyxuPXQudGlja3MmJnQudGlja3Muenx8MCxyPUkodC5ncmlkJiZ0LmdyaWQueiwtMSksaT1JKHQuYm9yZGVyJiZ0LmJvcmRlci56LDApO3JldHVybiF0aGlzLl9pc1Zpc2libGUoKXx8dGhpcy5kcmF3IT09ZS5wcm90b3R5cGUuZHJhdz9be3o6bixkcmF3OmU9Pnt0aGlzLmRyYXcoZSl9fV06W3t6OnIsZHJhdzplPT57dGhpcy5kcmF3QmFja2dyb3VuZCgpLHRoaXMuZHJhd0dyaWQoZSksdGhpcy5kcmF3VGl0bGUoKX19LHt6OmksZHJhdzooKT0+e3RoaXMuZHJhd0JvcmRlcigpfX0se3o6bixkcmF3OmU9Pnt0aGlzLmRyYXdMYWJlbHMoZSl9fV19Z2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMoZSl7bGV0IHQ9dGhpcy5jaGFydC5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCksbj10aGlzLmF4aXMrYEF4aXNJRGAscj1bXSxpLGE7Zm9yKGk9MCxhPXQubGVuZ3RoO2k8YTsrK2kpe2xldCBhPXRbaV07YVtuXT09PXRoaXMuaWQmJighZXx8YS50eXBlPT09ZSkmJnIucHVzaChhKX1yZXR1cm4gcn1fcmVzb2x2ZVRpY2tGb250T3B0aW9ucyhlKXtyZXR1cm4gSih0aGlzLm9wdGlvbnMudGlja3Muc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoZSkpLmZvbnQpfV9tYXhEaWdpdHMoKXtsZXQgZT10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKDApLmxpbmVIZWlnaHQ7cmV0dXJuKHRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy53aWR0aDp0aGlzLmhlaWdodCkvZX19LFphPWNsYXNze2NvbnN0cnVjdG9yKGUsdCxuKXt0aGlzLnR5cGU9ZSx0aGlzLnNjb3BlPXQsdGhpcy5vdmVycmlkZT1uLHRoaXMuaXRlbXM9T2JqZWN0LmNyZWF0ZShudWxsKX1pc0ZvclR5cGUoZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZi5jYWxsKHRoaXMudHlwZS5wcm90b3R5cGUsZS5wcm90b3R5cGUpfXJlZ2lzdGVyKGUpe2xldCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSxuO2VvKHQpJiYobj10aGlzLnJlZ2lzdGVyKHQpKTtsZXQgcj10aGlzLml0ZW1zLGk9ZS5pZCxhPXRoaXMuc2NvcGUrYC5gK2k7aWYoIWkpdGhyb3cgRXJyb3IoYGNsYXNzIGRvZXMgbm90IGhhdmUgaWQ6IGArZSk7cmV0dXJuIGkgaW4gcj9hOihyW2ldPWUsUWEoZSxhLG4pLHRoaXMub3ZlcnJpZGUmJkcub3ZlcnJpZGUoZS5pZCxlLm92ZXJyaWRlcyksYSl9Z2V0KGUpe3JldHVybiB0aGlzLml0ZW1zW2VdfXVucmVnaXN0ZXIoZSl7bGV0IHQ9dGhpcy5pdGVtcyxuPWUuaWQscj10aGlzLnNjb3BlO24gaW4gdCYmZGVsZXRlIHRbbl0sciYmbiBpbiBHW3JdJiYoZGVsZXRlIEdbcl1bbl0sdGhpcy5vdmVycmlkZSYmZGVsZXRlIGduW25dKX19O2Z1bmN0aW9uIFFhKGUsdCxuKXtsZXQgcj10dChPYmplY3QuY3JlYXRlKG51bGwpLFtuP0cuZ2V0KG4pOnt9LEcuZ2V0KHQpLGUuZGVmYXVsdHNdKTtHLnNldCh0LHIpLGUuZGVmYXVsdFJvdXRlcyYmJGEodCxlLmRlZmF1bHRSb3V0ZXMpLGUuZGVzY3JpcHRvcnMmJkcuZGVzY3JpYmUodCxlLmRlc2NyaXB0b3JzKX1mdW5jdGlvbiAkYShlLHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2gobj0+e2xldCByPW4uc3BsaXQoYC5gKSxpPXIucG9wKCksYT1bZV0uY29uY2F0KHIpLmpvaW4oYC5gKSxvPXRbbl0uc3BsaXQoYC5gKSxzPW8ucG9wKCksYz1vLmpvaW4oYC5gKTtHLnJvdXRlKGEsaSxjLHMpfSl9ZnVuY3Rpb24gZW8oZSl7cmV0dXJuYGlkYGluIGUmJmBkZWZhdWx0c2BpbiBlfXZhciBYPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuY29udHJvbGxlcnM9bmV3IFphKGppLGBkYXRhc2V0c2AsITApLHRoaXMuZWxlbWVudHM9bmV3IFphKEFhLGBlbGVtZW50c2ApLHRoaXMucGx1Z2lucz1uZXcgWmEoT2JqZWN0LGBwbHVnaW5zYCksdGhpcy5zY2FsZXM9bmV3IFphKFhhLGBzY2FsZXNgKSx0aGlzLl90eXBlZFJlZ2lzdHJpZXM9W3RoaXMuY29udHJvbGxlcnMsdGhpcy5zY2FsZXMsdGhpcy5lbGVtZW50c119YWRkKC4uLmUpe3RoaXMuX2VhY2goYHJlZ2lzdGVyYCxlKX1yZW1vdmUoLi4uZSl7dGhpcy5fZWFjaChgdW5yZWdpc3RlcmAsZSl9YWRkQ29udHJvbGxlcnMoLi4uZSl7dGhpcy5fZWFjaChgcmVnaXN0ZXJgLGUsdGhpcy5jb250cm9sbGVycyl9YWRkRWxlbWVudHMoLi4uZSl7dGhpcy5fZWFjaChgcmVnaXN0ZXJgLGUsdGhpcy5lbGVtZW50cyl9YWRkUGx1Z2lucyguLi5lKXt0aGlzLl9lYWNoKGByZWdpc3RlcmAsZSx0aGlzLnBsdWdpbnMpfWFkZFNjYWxlcyguLi5lKXt0aGlzLl9lYWNoKGByZWdpc3RlcmAsZSx0aGlzLnNjYWxlcyl9Z2V0Q29udHJvbGxlcihlKXtyZXR1cm4gdGhpcy5fZ2V0KGUsdGhpcy5jb250cm9sbGVycyxgY29udHJvbGxlcmApfWdldEVsZW1lbnQoZSl7cmV0dXJuIHRoaXMuX2dldChlLHRoaXMuZWxlbWVudHMsYGVsZW1lbnRgKX1nZXRQbHVnaW4oZSl7cmV0dXJuIHRoaXMuX2dldChlLHRoaXMucGx1Z2lucyxgcGx1Z2luYCl9Z2V0U2NhbGUoZSl7cmV0dXJuIHRoaXMuX2dldChlLHRoaXMuc2NhbGVzLGBzY2FsZWApfXJlbW92ZUNvbnRyb2xsZXJzKC4uLmUpe3RoaXMuX2VhY2goYHVucmVnaXN0ZXJgLGUsdGhpcy5jb250cm9sbGVycyl9cmVtb3ZlRWxlbWVudHMoLi4uZSl7dGhpcy5fZWFjaChgdW5yZWdpc3RlcmAsZSx0aGlzLmVsZW1lbnRzKX1yZW1vdmVQbHVnaW5zKC4uLmUpe3RoaXMuX2VhY2goYHVucmVnaXN0ZXJgLGUsdGhpcy5wbHVnaW5zKX1yZW1vdmVTY2FsZXMoLi4uZSl7dGhpcy5fZWFjaChgdW5yZWdpc3RlcmAsZSx0aGlzLnNjYWxlcyl9X2VhY2goZSx0LG4pe1suLi50XS5mb3JFYWNoKHQ9PntsZXQgcj1ufHx0aGlzLl9nZXRSZWdpc3RyeUZvclR5cGUodCk7bnx8ci5pc0ZvclR5cGUodCl8fHI9PT10aGlzLnBsdWdpbnMmJnQuaWQ/dGhpcy5fZXhlYyhlLHIsdCk6Uih0LHQ9PntsZXQgcj1ufHx0aGlzLl9nZXRSZWdpc3RyeUZvclR5cGUodCk7dGhpcy5fZXhlYyhlLHIsdCl9KX0pfV9leGVjKGUsdCxuKXtsZXQgcj1jdChlKTtMKG5bYGJlZm9yZWArcl0sW10sbiksdFtlXShuKSxMKG5bYGFmdGVyYCtyXSxbXSxuKX1fZ2V0UmVnaXN0cnlGb3JUeXBlKGUpe2ZvcihsZXQgdD0wO3Q8dGhpcy5fdHlwZWRSZWdpc3RyaWVzLmxlbmd0aDt0Kyspe2xldCBuPXRoaXMuX3R5cGVkUmVnaXN0cmllc1t0XTtpZihuLmlzRm9yVHlwZShlKSlyZXR1cm4gbn1yZXR1cm4gdGhpcy5wbHVnaW5zfV9nZXQoZSx0LG4pe2xldCByPXQuZ2V0KGUpO2lmKHI9PT12b2lkIDApdGhyb3cgRXJyb3IoYCJgK2UrYCIgaXMgbm90IGEgcmVnaXN0ZXJlZCBgK24rYC5gKTtyZXR1cm4gcn19LHRvPWNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5faW5pdD12b2lkIDB9bm90aWZ5KGUsdCxuLHIpe2lmKHQ9PT1gYmVmb3JlSW5pdGAmJih0aGlzLl9pbml0PXRoaXMuX2NyZWF0ZURlc2NyaXB0b3JzKGUsITApLHRoaXMuX25vdGlmeSh0aGlzLl9pbml0LGUsYGluc3RhbGxgKSksdGhpcy5faW5pdD09PXZvaWQgMClyZXR1cm47bGV0IGk9cj90aGlzLl9kZXNjcmlwdG9ycyhlKS5maWx0ZXIocik6dGhpcy5fZGVzY3JpcHRvcnMoZSksYT10aGlzLl9ub3RpZnkoaSxlLHQsbik7cmV0dXJuIHQ9PT1gYWZ0ZXJEZXN0cm95YCYmKHRoaXMuX25vdGlmeShpLGUsYHN0b3BgKSx0aGlzLl9ub3RpZnkodGhpcy5faW5pdCxlLGB1bmluc3RhbGxgKSx0aGlzLl9pbml0PXZvaWQgMCksYX1fbm90aWZ5KGUsdCxuLHIpe3J8fD17fTtmb3IobGV0IGkgb2YgZSl7bGV0IGU9aS5wbHVnaW4sYT1lW25dO2lmKEwoYSxbdCxyLGkub3B0aW9uc10sZSk9PT0hMSYmci5jYW5jZWxhYmxlKXJldHVybiExfXJldHVybiEwfWludmFsaWRhdGUoKXtqKHRoaXMuX2NhY2hlKXx8KHRoaXMuX29sZENhY2hlPXRoaXMuX2NhY2hlLHRoaXMuX2NhY2hlPXZvaWQgMCl9X2Rlc2NyaXB0b3JzKGUpe2lmKHRoaXMuX2NhY2hlKXJldHVybiB0aGlzLl9jYWNoZTtsZXQgdD10aGlzLl9jYWNoZT10aGlzLl9jcmVhdGVEZXNjcmlwdG9ycyhlKTtyZXR1cm4gdGhpcy5fbm90aWZ5U3RhdGVDaGFuZ2VzKGUpLHR9X2NyZWF0ZURlc2NyaXB0b3JzKGUsdCl7bGV0IG49ZSYmZS5jb25maWcscj1JKG4ub3B0aW9ucyYmbi5vcHRpb25zLnBsdWdpbnMse30pLGk9bm8obik7cmV0dXJuIHI9PT0hMSYmIXQ/W106aW8oZSxpLHIsdCl9X25vdGlmeVN0YXRlQ2hhbmdlcyhlKXtsZXQgdD10aGlzLl9vbGRDYWNoZXx8W10sbj10aGlzLl9jYWNoZSxyPShlLHQpPT5lLmZpbHRlcihlPT4hdC5zb21lKHQ9PmUucGx1Z2luLmlkPT09dC5wbHVnaW4uaWQpKTt0aGlzLl9ub3RpZnkocih0LG4pLGUsYHN0b3BgKSx0aGlzLl9ub3RpZnkocihuLHQpLGUsYHN0YXJ0YCl9fTtmdW5jdGlvbiBubyhlKXtsZXQgdD17fSxuPVtdLHI9T2JqZWN0LmtleXMoWC5wbHVnaW5zLml0ZW1zKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyluLnB1c2goWC5nZXRQbHVnaW4ocltlXSkpO2xldCBpPWUucGx1Z2luc3x8W107Zm9yKGxldCBlPTA7ZTxpLmxlbmd0aDtlKyspe2xldCByPWlbZV07bi5pbmRleE9mKHIpPT09LTEmJihuLnB1c2gociksdFtyLmlkXT0hMCl9cmV0dXJue3BsdWdpbnM6bixsb2NhbElkczp0fX1mdW5jdGlvbiBybyhlLHQpe3JldHVybiF0JiZlPT09ITE/bnVsbDplPT09ITA/e306ZX1mdW5jdGlvbiBpbyhlLHtwbHVnaW5zOnQsbG9jYWxJZHM6bn0scixpKXtsZXQgYT1bXSxvPWUuZ2V0Q29udGV4dCgpO2ZvcihsZXQgcyBvZiB0KXtsZXQgdD1zLmlkLGM9cm8oclt0XSxpKTtjIT09bnVsbCYmYS5wdXNoKHtwbHVnaW46cyxvcHRpb25zOmFvKGUuY29uZmlnLHtwbHVnaW46cyxsb2NhbDpuW3RdfSxjLG8pfSl9cmV0dXJuIGF9ZnVuY3Rpb24gYW8oZSx7cGx1Z2luOnQsbG9jYWw6bn0scixpKXtsZXQgYT1lLnBsdWdpblNjb3BlS2V5cyh0KSxvPWUuZ2V0T3B0aW9uU2NvcGVzKHIsYSk7cmV0dXJuIG4mJnQuZGVmYXVsdHMmJm8ucHVzaCh0LmRlZmF1bHRzKSxlLmNyZWF0ZVJlc29sdmVyKG8saSxbYGBdLHtzY3JpcHRhYmxlOiExLGluZGV4YWJsZTohMSxhbGxLZXlzOiEwfSl9ZnVuY3Rpb24gb28oZSx0KXtsZXQgbj1HLmRhdGFzZXRzW2VdfHx7fTtyZXR1cm4oKHQuZGF0YXNldHN8fHt9KVtlXXx8e30pLmluZGV4QXhpc3x8dC5pbmRleEF4aXN8fG4uaW5kZXhBeGlzfHxgeGB9ZnVuY3Rpb24gc28oZSx0KXtsZXQgbj1lO3JldHVybiBlPT09YF9pbmRleF9gP249dDplPT09YF92YWx1ZV9gJiYobj10PT09YHhgP2B5YDpgeGApLG59ZnVuY3Rpb24gY28oZSx0KXtyZXR1cm4gZT09PXQ/YF9pbmRleF9gOmBfdmFsdWVfYH1mdW5jdGlvbiBsbyhlKXtpZihlPT09YHhgfHxlPT09YHlgfHxlPT09YHJgKXJldHVybiBlfWZ1bmN0aW9uIHVvKGUpe2lmKGU9PT1gdG9wYHx8ZT09PWBib3R0b21gKXJldHVybmB4YDtpZihlPT09YGxlZnRgfHxlPT09YHJpZ2h0YClyZXR1cm5geWB9ZnVuY3Rpb24gZm8oZSwuLi50KXtpZihsbyhlKSlyZXR1cm4gZTtmb3IobGV0IG4gb2YgdCl7bGV0IHQ9bi5heGlzfHx1byhuLnBvc2l0aW9uKXx8ZS5sZW5ndGg+MSYmbG8oZVswXS50b0xvd2VyQ2FzZSgpKTtpZih0KXJldHVybiB0fXRocm93IEVycm9yKGBDYW5ub3QgZGV0ZXJtaW5lIHR5cGUgb2YgJyR7ZX0nIGF4aXMuIFBsZWFzZSBwcm92aWRlICdheGlzJyBvciAncG9zaXRpb24nIG9wdGlvbi5gKX1mdW5jdGlvbiBwbyhlLHQsbil7aWYoblt0K2BBeGlzSURgXT09PWUpcmV0dXJue2F4aXM6dH19ZnVuY3Rpb24gbW8oZSx0KXtpZih0LmRhdGEmJnQuZGF0YS5kYXRhc2V0cyl7bGV0IG49dC5kYXRhLmRhdGFzZXRzLmZpbHRlcih0PT50LnhBeGlzSUQ9PT1lfHx0LnlBeGlzSUQ9PT1lKTtpZihuLmxlbmd0aClyZXR1cm4gcG8oZSxgeGAsblswXSl8fHBvKGUsYHlgLG5bMF0pfXJldHVybnt9fWZ1bmN0aW9uIGhvKGUsdCl7bGV0IG49Z25bZS50eXBlXXx8e3NjYWxlczp7fX0scj10LnNjYWxlc3x8e30saT1vbyhlLnR5cGUsdCksYT1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBPYmplY3Qua2V5cyhyKS5mb3JFYWNoKHQ9PntsZXQgbz1yW3RdO2lmKCFOKG8pKXJldHVybiBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHNjYWxlIGNvbmZpZ3VyYXRpb24gZm9yIHNjYWxlOiAke3R9YCk7aWYoby5fcHJveHkpcmV0dXJuIGNvbnNvbGUud2FybihgSWdub3JpbmcgcmVzb2x2ZXIgcGFzc2VkIGFzIG9wdGlvbnMgZm9yIHNjYWxlOiAke3R9YCk7bGV0IHM9Zm8odCxvLG1vKHQsZSksRy5zY2FsZXNbby50eXBlXSksYz1jbyhzLGkpLGw9bi5zY2FsZXN8fHt9O2FbdF09bnQoT2JqZWN0LmNyZWF0ZShudWxsKSxbe2F4aXM6c30sbyxsW3NdLGxbY11dKX0pLGUuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKG49PntsZXQgaT1uLnR5cGV8fGUudHlwZSxvPW4uaW5kZXhBeGlzfHxvbyhpLHQpLHM9KGduW2ldfHx7fSkuc2NhbGVzfHx7fTtPYmplY3Qua2V5cyhzKS5mb3JFYWNoKGU9PntsZXQgdD1zbyhlLG8pLGk9blt0K2BBeGlzSURgXXx8dDthW2ldPWFbaV18fE9iamVjdC5jcmVhdGUobnVsbCksbnQoYVtpXSxbe2F4aXM6dH0scltpXSxzW2VdXSl9KX0pLE9iamVjdC5rZXlzKGEpLmZvckVhY2goZT0+e2xldCB0PWFbZV07bnQodCxbRy5zY2FsZXNbdC50eXBlXSxHLnNjYWxlXSl9KSxhfWZ1bmN0aW9uIGdvKGUpe2xldCB0PWUub3B0aW9uc3x8PXt9O3QucGx1Z2lucz1JKHQucGx1Z2lucyx7fSksdC5zY2FsZXM9aG8oZSx0KX1mdW5jdGlvbiBfbyhlKXtyZXR1cm4gZXx8PXt9LGUuZGF0YXNldHM9ZS5kYXRhc2V0c3x8W10sZS5sYWJlbHM9ZS5sYWJlbHN8fFtdLGV9ZnVuY3Rpb24gdm8oZSl7cmV0dXJuIGV8fD17fSxlLmRhdGE9X28oZS5kYXRhKSxnbyhlKSxlfXZhciB5bz1uZXcgTWFwLGJvPW5ldyBTZXQ7ZnVuY3Rpb24geG8oZSx0KXtsZXQgbj15by5nZXQoZSk7cmV0dXJuIG58fChuPXQoKSx5by5zZXQoZSxuKSxiby5hZGQobikpLG59dmFyIFNvPShlLHQsbik9PntsZXQgcj1zdCh0LG4pO3IhPT12b2lkIDAmJmUuYWRkKHIpfSxDbz1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLl9jb25maWc9dm8oZSksdGhpcy5fc2NvcGVDYWNoZT1uZXcgTWFwLHRoaXMuX3Jlc29sdmVyQ2FjaGU9bmV3IE1hcH1nZXQgcGxhdGZvcm0oKXtyZXR1cm4gdGhpcy5fY29uZmlnLnBsYXRmb3JtfWdldCB0eXBlKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy50eXBlfXNldCB0eXBlKGUpe3RoaXMuX2NvbmZpZy50eXBlPWV9Z2V0IGRhdGEoKXtyZXR1cm4gdGhpcy5fY29uZmlnLmRhdGF9c2V0IGRhdGEoZSl7dGhpcy5fY29uZmlnLmRhdGE9X28oZSl9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fY29uZmlnLm9wdGlvbnN9c2V0IG9wdGlvbnMoZSl7dGhpcy5fY29uZmlnLm9wdGlvbnM9ZX1nZXQgcGx1Z2lucygpe3JldHVybiB0aGlzLl9jb25maWcucGx1Z2luc311cGRhdGUoKXtsZXQgZT10aGlzLl9jb25maWc7dGhpcy5jbGVhckNhY2hlKCksZ28oZSl9Y2xlYXJDYWNoZSgpe3RoaXMuX3Njb3BlQ2FjaGUuY2xlYXIoKSx0aGlzLl9yZXNvbHZlckNhY2hlLmNsZWFyKCl9ZGF0YXNldFNjb3BlS2V5cyhlKXtyZXR1cm4geG8oZSwoKT0+W1tgZGF0YXNldHMuJHtlfWAsYGBdXSl9ZGF0YXNldEFuaW1hdGlvblNjb3BlS2V5cyhlLHQpe3JldHVybiB4byhgJHtlfS50cmFuc2l0aW9uLiR7dH1gLCgpPT5bW2BkYXRhc2V0cy4ke2V9LnRyYW5zaXRpb25zLiR7dH1gLGB0cmFuc2l0aW9ucy4ke3R9YF0sW2BkYXRhc2V0cy4ke2V9YCxgYF1dKX1kYXRhc2V0RWxlbWVudFNjb3BlS2V5cyhlLHQpe3JldHVybiB4byhgJHtlfS0ke3R9YCwoKT0+W1tgZGF0YXNldHMuJHtlfS5lbGVtZW50cy4ke3R9YCxgZGF0YXNldHMuJHtlfWAsYGVsZW1lbnRzLiR7dH1gLGBgXV0pfXBsdWdpblNjb3BlS2V5cyhlKXtsZXQgdD1lLmlkLG49dGhpcy50eXBlO3JldHVybiB4byhgJHtufS1wbHVnaW4tJHt0fWAsKCk9PltbYHBsdWdpbnMuJHt0fWAsLi4uZS5hZGRpdGlvbmFsT3B0aW9uU2NvcGVzfHxbXV1dKX1fY2FjaGVkU2NvcGVzKGUsdCl7bGV0IG49dGhpcy5fc2NvcGVDYWNoZSxyPW4uZ2V0KGUpO3JldHVybighcnx8dCkmJihyPW5ldyBNYXAsbi5zZXQoZSxyKSkscn1nZXRPcHRpb25TY29wZXMoZSx0LG4pe2xldHtvcHRpb25zOnIsdHlwZTppfT10aGlzLGE9dGhpcy5fY2FjaGVkU2NvcGVzKGUsbiksbz1hLmdldCh0KTtpZihvKXJldHVybiBvO2xldCBzPW5ldyBTZXQ7dC5mb3JFYWNoKHQ9PntlJiYocy5hZGQoZSksdC5mb3JFYWNoKHQ9PlNvKHMsZSx0KSkpLHQuZm9yRWFjaChlPT5TbyhzLHIsZSkpLHQuZm9yRWFjaChlPT5TbyhzLGduW2ldfHx7fSxlKSksdC5mb3JFYWNoKGU9PlNvKHMsRyxlKSksdC5mb3JFYWNoKGU9PlNvKHMsX24sZSkpfSk7bGV0IGM9QXJyYXkuZnJvbShzKTtyZXR1cm4gYy5sZW5ndGg9PT0wJiZjLnB1c2goT2JqZWN0LmNyZWF0ZShudWxsKSksYm8uaGFzKHQpJiZhLnNldCh0LGMpLGN9Y2hhcnRPcHRpb25TY29wZXMoKXtsZXR7b3B0aW9uczplLHR5cGU6dH09dGhpcztyZXR1cm5bZSxnblt0XXx8e30sRy5kYXRhc2V0c1t0XXx8e30se3R5cGU6dH0sRyxfbl19cmVzb2x2ZU5hbWVkT3B0aW9ucyhlLHQsbixyPVtgYF0pe2xldCBpPXskc2hhcmVkOiEwfSx7cmVzb2x2ZXI6YSxzdWJQcmVmaXhlczpvfT13byh0aGlzLl9yZXNvbHZlckNhY2hlLGUscikscz1hO2lmKEVvKGEsdCkpe2kuJHNoYXJlZD0hMSxuPXV0KG4pP24oKTpuO2xldCB0PXRoaXMuY3JlYXRlUmVzb2x2ZXIoZSxuLG8pO3M9cW4oYSxuLHQpfWZvcihsZXQgZSBvZiB0KWlbZV09c1tlXTtyZXR1cm4gaX1jcmVhdGVSZXNvbHZlcihlLHQsbj1bYGBdLHIpe2xldHtyZXNvbHZlcjppfT13byh0aGlzLl9yZXNvbHZlckNhY2hlLGUsbik7cmV0dXJuIE4odCk/cW4oaSx0LHZvaWQgMCxyKTppfX07ZnVuY3Rpb24gd28oZSx0LG4pe2xldCByPWUuZ2V0KHQpO3J8fChyPW5ldyBNYXAsZS5zZXQodCxyKSk7bGV0IGk9bi5qb2luKCksYT1yLmdldChpKTtyZXR1cm4gYXx8KGE9e3Jlc29sdmVyOktuKHQsbiksc3ViUHJlZml4ZXM6bi5maWx0ZXIoZT0+IWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhgaG92ZXJgKSl9LHIuc2V0KGksYSkpLGF9dmFyIFRvPWU9Pk4oZSkmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLnNvbWUodD0+dXQoZVt0XSkpO2Z1bmN0aW9uIEVvKGUsdCl7bGV0e2lzU2NyaXB0YWJsZTpuLGlzSW5kZXhhYmxlOnJ9PUpuKGUpO2ZvcihsZXQgaSBvZiB0KXtsZXQgdD1uKGkpLGE9cihpKSxvPShhfHx0KSYmZVtpXTtpZih0JiYodXQobyl8fFRvKG8pKXx8YSYmTShvKSlyZXR1cm4hMH1yZXR1cm4hMX12YXIgRG89YDQuNS4xYCxPbz1bYHRvcGAsYGJvdHRvbWAsYGxlZnRgLGByaWdodGAsYGNoYXJ0QXJlYWBdO2Z1bmN0aW9uIGtvKGUsdCl7cmV0dXJuIGU9PT1gdG9wYHx8ZT09PWBib3R0b21gfHxPby5pbmRleE9mKGUpPT09LTEmJnQ9PT1geGB9ZnVuY3Rpb24gQW8oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyKXtyZXR1cm4gbltlXT09PXJbZV0/blt0XS1yW3RdOm5bZV0tcltlXX19ZnVuY3Rpb24gam8oZSl7bGV0IHQ9ZS5jaGFydCxuPXQub3B0aW9ucy5hbmltYXRpb247dC5ub3RpZnlQbHVnaW5zKGBhZnRlclJlbmRlcmApLEwobiYmbi5vbkNvbXBsZXRlLFtlXSx0KX1mdW5jdGlvbiBNbyhlKXtsZXQgdD1lLmNoYXJ0LG49dC5vcHRpb25zLmFuaW1hdGlvbjtMKG4mJm4ub25Qcm9ncmVzcyxbZV0sdCl9ZnVuY3Rpb24gTm8oZSl7cmV0dXJuIHhyKCkmJnR5cGVvZiBlPT1gc3RyaW5nYD9lPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGUpOmUmJmUubGVuZ3RoJiYoZT1lWzBdKSxlJiZlLmNhbnZhcyYmKGU9ZS5jYW52YXMpLGV9dmFyIFBvPXt9LEZvPWU9PntsZXQgdD1ObyhlKTtyZXR1cm4gT2JqZWN0LnZhbHVlcyhQbykuZmlsdGVyKGU9PmUuY2FudmFzPT09dCkucG9wKCl9O2Z1bmN0aW9uIElvKGUsdCxuKXtsZXQgcj1PYmplY3Qua2V5cyhlKTtmb3IobGV0IGkgb2Ygcil7bGV0IHI9K2k7aWYocj49dCl7bGV0IGE9ZVtpXTtkZWxldGUgZVtpXSwobj4wfHxyPnQpJiYoZVtyK25dPWEpfX19ZnVuY3Rpb24gTG8oZSx0LG4scil7cmV0dXJuIW58fGUudHlwZT09PWBtb3VzZW91dGA/bnVsbDpyP3Q6ZX12YXIgUm89Y2xhc3N7c3RhdGljIGRlZmF1bHRzPUc7c3RhdGljIGluc3RhbmNlcz1QbztzdGF0aWMgb3ZlcnJpZGVzPWduO3N0YXRpYyByZWdpc3RyeT1YO3N0YXRpYyB2ZXJzaW9uPURvO3N0YXRpYyBnZXRDaGFydD1GbztzdGF0aWMgcmVnaXN0ZXIoLi4uZSl7WC5hZGQoLi4uZSksem8oKX1zdGF0aWMgdW5yZWdpc3RlciguLi5lKXtYLnJlbW92ZSguLi5lKSx6bygpfWNvbnN0cnVjdG9yKGUsdCl7bGV0IG49dGhpcy5jb25maWc9bmV3IENvKHQpLHI9Tm8oZSksaT1GbyhyKTtpZihpKXRocm93IEVycm9yKGBDYW52YXMgaXMgYWxyZWFkeSBpbiB1c2UuIENoYXJ0IHdpdGggSUQgJ2AraS5pZCtgJyBtdXN0IGJlIGRlc3Ryb3llZCBiZWZvcmUgdGhlIGNhbnZhcyB3aXRoIElEICdgK2kuY2FudmFzLmlkK2AnIGNhbiBiZSByZXVzZWQuYCk7bGV0IGE9bi5jcmVhdGVSZXNvbHZlcihuLmNoYXJ0T3B0aW9uU2NvcGVzKCksdGhpcy5nZXRDb250ZXh0KCkpO3RoaXMucGxhdGZvcm09bmV3KG4ucGxhdGZvcm18fChrYShyKSkpLHRoaXMucGxhdGZvcm0udXBkYXRlQ29uZmlnKG4pO2xldCBvPXRoaXMucGxhdGZvcm0uYWNxdWlyZUNvbnRleHQocixhLmFzcGVjdFJhdGlvKSxzPW8mJm8uY2FudmFzLGM9cyYmcy5oZWlnaHQsbD1zJiZzLndpZHRoO2lmKHRoaXMuaWQ9WWUoKSx0aGlzLmN0eD1vLHRoaXMuY2FudmFzPXMsdGhpcy53aWR0aD1sLHRoaXMuaGVpZ2h0PWMsdGhpcy5fb3B0aW9ucz1hLHRoaXMuX2FzcGVjdFJhdGlvPXRoaXMuYXNwZWN0UmF0aW8sdGhpcy5fbGF5ZXJzPVtdLHRoaXMuX21ldGFzZXRzPVtdLHRoaXMuX3N0YWNrcz12b2lkIDAsdGhpcy5ib3hlcz1bXSx0aGlzLmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvPXZvaWQgMCx0aGlzLmNoYXJ0QXJlYT12b2lkIDAsdGhpcy5fYWN0aXZlPVtdLHRoaXMuX2xhc3RFdmVudD12b2lkIDAsdGhpcy5fbGlzdGVuZXJzPXt9LHRoaXMuX3Jlc3BvbnNpdmVMaXN0ZW5lcnM9dm9pZCAwLHRoaXMuX3NvcnRlZE1ldGFzZXRzPVtdLHRoaXMuc2NhbGVzPXt9LHRoaXMuX3BsdWdpbnM9bmV3IHRvLHRoaXMuJHByb3hpZXM9e30sdGhpcy5faGlkZGVuSW5kaWNlcz17fSx0aGlzLmF0dGFjaGVkPSExLHRoaXMuX2FuaW1hdGlvbnNEaXNhYmxlZD12b2lkIDAsdGhpcy4kY29udGV4dD12b2lkIDAsdGhpcy5fZG9SZXNpemU9S3QoZT0+dGhpcy51cGRhdGUoZSksYS5yZXNpemVEZWxheXx8MCksdGhpcy5fZGF0YUNoYW5nZXM9W10sUG9bdGhpcy5pZF09dGhpcywhb3x8IXMpe2NvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgY2hhcnQ6IGNhbid0IGFjcXVpcmUgY29udGV4dCBmcm9tIHRoZSBnaXZlbiBpdGVtYCk7cmV0dXJufVkubGlzdGVuKHRoaXMsYGNvbXBsZXRlYCxqbyksWS5saXN0ZW4odGhpcyxgcHJvZ3Jlc3NgLE1vKSx0aGlzLl9pbml0aWFsaXplKCksdGhpcy5hdHRhY2hlZCYmdGhpcy51cGRhdGUoKX1nZXQgYXNwZWN0UmF0aW8oKXtsZXR7b3B0aW9uczp7YXNwZWN0UmF0aW86ZSxtYWludGFpbkFzcGVjdFJhdGlvOnR9LHdpZHRoOm4saGVpZ2h0OnIsX2FzcGVjdFJhdGlvOml9PXRoaXM7cmV0dXJuIGooZSk/dCYmaT9pOnI/bi9yOm51bGw6ZX1nZXQgZGF0YSgpe3JldHVybiB0aGlzLmNvbmZpZy5kYXRhfXNldCBkYXRhKGUpe3RoaXMuY29uZmlnLmRhdGE9ZX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9vcHRpb25zfXNldCBvcHRpb25zKGUpe3RoaXMuY29uZmlnLm9wdGlvbnM9ZX1nZXQgcmVnaXN0cnkoKXtyZXR1cm4gWH1faW5pdGlhbGl6ZSgpe3JldHVybiB0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZUluaXRgKSx0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZT90aGlzLnJlc2l6ZSgpOlByKHRoaXMsdGhpcy5vcHRpb25zLmRldmljZVBpeGVsUmF0aW8pLHRoaXMuYmluZEV2ZW50cygpLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJJbml0YCksdGhpc31jbGVhcigpe3JldHVybiB3bih0aGlzLmNhbnZhcyx0aGlzLmN0eCksdGhpc31zdG9wKCl7cmV0dXJuIFkuc3RvcCh0aGlzKSx0aGlzfXJlc2l6ZShlLHQpe1kucnVubmluZyh0aGlzKT90aGlzLl9yZXNpemVCZWZvcmVEcmF3PXt3aWR0aDplLGhlaWdodDp0fTp0aGlzLl9yZXNpemUoZSx0KX1fcmVzaXplKGUsdCl7bGV0IG49dGhpcy5vcHRpb25zLHI9dGhpcy5jYW52YXMsaT1uLm1haW50YWluQXNwZWN0UmF0aW8mJnRoaXMuYXNwZWN0UmF0aW8sYT10aGlzLnBsYXRmb3JtLmdldE1heGltdW1TaXplKHIsZSx0LGkpLG89bi5kZXZpY2VQaXhlbFJhdGlvfHx0aGlzLnBsYXRmb3JtLmdldERldmljZVBpeGVsUmF0aW8oKSxzPXRoaXMud2lkdGg/YHJlc2l6ZWA6YGF0dGFjaGA7dGhpcy53aWR0aD1hLndpZHRoLHRoaXMuaGVpZ2h0PWEuaGVpZ2h0LHRoaXMuX2FzcGVjdFJhdGlvPXRoaXMuYXNwZWN0UmF0aW8sUHIodGhpcyxvLCEwKSYmKHRoaXMubm90aWZ5UGx1Z2lucyhgcmVzaXplYCx7c2l6ZTphfSksTChuLm9uUmVzaXplLFt0aGlzLGFdLHRoaXMpLHRoaXMuYXR0YWNoZWQmJnRoaXMuX2RvUmVzaXplKHMpJiZ0aGlzLnJlbmRlcigpKX1lbnN1cmVTY2FsZXNIYXZlSURzKCl7Uih0aGlzLm9wdGlvbnMuc2NhbGVzfHx7fSwoZSx0KT0+e2UuaWQ9dH0pfWJ1aWxkT3JVcGRhdGVTY2FsZXMoKXtsZXQgZT10aGlzLm9wdGlvbnMsdD1lLnNjYWxlcyxuPXRoaXMuc2NhbGVzLHI9T2JqZWN0LmtleXMobikucmVkdWNlKChlLHQpPT4oZVt0XT0hMSxlKSx7fSksaT1bXTt0JiYoaT1pLmNvbmNhdChPYmplY3Qua2V5cyh0KS5tYXAoZT0+e2xldCBuPXRbZV0scj1mbyhlLG4pLGk9cj09PWByYCxhPXI9PT1geGA7cmV0dXJue29wdGlvbnM6bixkcG9zaXRpb246aT9gY2hhcnRBcmVhYDphP2Bib3R0b21gOmBsZWZ0YCxkdHlwZTppP2ByYWRpYWxMaW5lYXJgOmE/YGNhdGVnb3J5YDpgbGluZWFyYH19KSkpLFIoaSx0PT57bGV0IGk9dC5vcHRpb25zLGE9aS5pZCxvPWZvKGEsaSkscz1JKGkudHlwZSx0LmR0eXBlKTsoaS5wb3NpdGlvbj09PXZvaWQgMHx8a28oaS5wb3NpdGlvbixvKSE9PWtvKHQuZHBvc2l0aW9uKSkmJihpLnBvc2l0aW9uPXQuZHBvc2l0aW9uKSxyW2FdPSEwO2xldCBjPW51bGw7YSBpbiBuJiZuW2FdLnR5cGU9PT1zP2M9blthXTooYz1uZXcoWC5nZXRTY2FsZShzKSkoe2lkOmEsdHlwZTpzLGN0eDp0aGlzLmN0eCxjaGFydDp0aGlzfSksbltjLmlkXT1jKSxjLmluaXQoaSxlKX0pLFIociwoZSx0KT0+e2V8fGRlbGV0ZSBuW3RdfSksUihuLGU9PntvYS5jb25maWd1cmUodGhpcyxlLGUub3B0aW9ucyksb2EuYWRkQm94KHRoaXMsZSl9KX1fdXBkYXRlTWV0YXNldHMoKXtsZXQgZT10aGlzLl9tZXRhc2V0cyx0PXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGgsbj1lLmxlbmd0aDtpZihlLnNvcnQoKGUsdCk9PmUuaW5kZXgtdC5pbmRleCksbj50KXtmb3IobGV0IGU9dDtlPG47KytlKXRoaXMuX2Rlc3Ryb3lEYXRhc2V0TWV0YShlKTtlLnNwbGljZSh0LG4tdCl9dGhpcy5fc29ydGVkTWV0YXNldHM9ZS5zbGljZSgwKS5zb3J0KEFvKGBvcmRlcmAsYGluZGV4YCkpfV9yZW1vdmVVbnJlZmVyZW5jZWRNZXRhc2V0cygpe2xldHtfbWV0YXNldHM6ZSxkYXRhOntkYXRhc2V0czp0fX09dGhpcztlLmxlbmd0aD50Lmxlbmd0aCYmZGVsZXRlIHRoaXMuX3N0YWNrcyxlLmZvckVhY2goKGUsbik9Pnt0LmZpbHRlcih0PT50PT09ZS5fZGF0YXNldCkubGVuZ3RoPT09MCYmdGhpcy5fZGVzdHJveURhdGFzZXRNZXRhKG4pfSl9YnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzKCl7bGV0IGU9W10sdD10aGlzLmRhdGEuZGF0YXNldHMsbixyO2Zvcih0aGlzLl9yZW1vdmVVbnJlZmVyZW5jZWRNZXRhc2V0cygpLG49MCxyPXQubGVuZ3RoO248cjtuKyspe2xldCByPXRbbl0saT10aGlzLmdldERhdGFzZXRNZXRhKG4pLGE9ci50eXBlfHx0aGlzLmNvbmZpZy50eXBlO2lmKGkudHlwZSYmaS50eXBlIT09YSYmKHRoaXMuX2Rlc3Ryb3lEYXRhc2V0TWV0YShuKSxpPXRoaXMuZ2V0RGF0YXNldE1ldGEobikpLGkudHlwZT1hLGkuaW5kZXhBeGlzPXIuaW5kZXhBeGlzfHxvbyhhLHRoaXMub3B0aW9ucyksaS5vcmRlcj1yLm9yZGVyfHwwLGkuaW5kZXg9bixpLmxhYmVsPWBgK3IubGFiZWwsaS52aXNpYmxlPXRoaXMuaXNEYXRhc2V0VmlzaWJsZShuKSxpLmNvbnRyb2xsZXIpaS5jb250cm9sbGVyLnVwZGF0ZUluZGV4KG4pLGkuY29udHJvbGxlci5saW5rU2NhbGVzKCk7ZWxzZXtsZXQgdD1YLmdldENvbnRyb2xsZXIoYSkse2RhdGFzZXRFbGVtZW50VHlwZTpyLGRhdGFFbGVtZW50VHlwZTpvfT1HLmRhdGFzZXRzW2FdO09iamVjdC5hc3NpZ24odCx7ZGF0YUVsZW1lbnRUeXBlOlguZ2V0RWxlbWVudChvKSxkYXRhc2V0RWxlbWVudFR5cGU6ciYmWC5nZXRFbGVtZW50KHIpfSksaS5jb250cm9sbGVyPW5ldyB0KHRoaXMsbiksZS5wdXNoKGkuY29udHJvbGxlcil9fXJldHVybiB0aGlzLl91cGRhdGVNZXRhc2V0cygpLGV9X3Jlc2V0RWxlbWVudHMoKXtSKHRoaXMuZGF0YS5kYXRhc2V0cywoZSx0KT0+e3RoaXMuZ2V0RGF0YXNldE1ldGEodCkuY29udHJvbGxlci5yZXNldCgpfSx0aGlzKX1yZXNldCgpe3RoaXMuX3Jlc2V0RWxlbWVudHMoKSx0aGlzLm5vdGlmeVBsdWdpbnMoYHJlc2V0YCl9dXBkYXRlKGUpe2xldCB0PXRoaXMuY29uZmlnO3QudXBkYXRlKCk7bGV0IG49dGhpcy5fb3B0aW9ucz10LmNyZWF0ZVJlc29sdmVyKHQuY2hhcnRPcHRpb25TY29wZXMoKSx0aGlzLmdldENvbnRleHQoKSkscj10aGlzLl9hbmltYXRpb25zRGlzYWJsZWQ9IW4uYW5pbWF0aW9uO2lmKHRoaXMuX3VwZGF0ZVNjYWxlcygpLHRoaXMuX2NoZWNrRXZlbnRCaW5kaW5ncygpLHRoaXMuX3VwZGF0ZUhpZGRlbkluZGljZXMoKSx0aGlzLl9wbHVnaW5zLmludmFsaWRhdGUoKSx0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZVVwZGF0ZWAse21vZGU6ZSxjYW5jZWxhYmxlOiEwfSk9PT0hMSlyZXR1cm47bGV0IGk9dGhpcy5idWlsZE9yVXBkYXRlQ29udHJvbGxlcnMoKTt0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZUVsZW1lbnRzVXBkYXRlYCk7bGV0IGE9MDtmb3IobGV0IGU9MCx0PXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGg7ZTx0O2UrKyl7bGV0e2NvbnRyb2xsZXI6dH09dGhpcy5nZXREYXRhc2V0TWV0YShlKSxuPSFyJiZpLmluZGV4T2YodCk9PT0tMTt0LmJ1aWxkT3JVcGRhdGVFbGVtZW50cyhuKSxhPU1hdGgubWF4KCt0LmdldE1heE92ZXJmbG93KCksYSl9YT10aGlzLl9taW5QYWRkaW5nPW4ubGF5b3V0LmF1dG9QYWRkaW5nP2E6MCx0aGlzLl91cGRhdGVMYXlvdXQoYSkscnx8UihpLGU9PntlLnJlc2V0KCl9KSx0aGlzLl91cGRhdGVEYXRhc2V0cyhlKSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyVXBkYXRlYCx7bW9kZTplfSksdGhpcy5fbGF5ZXJzLnNvcnQoQW8oYHpgLGBfaWR4YCkpO2xldHtfYWN0aXZlOm8sX2xhc3RFdmVudDpzfT10aGlzO3M/dGhpcy5fZXZlbnRIYW5kbGVyKHMsITApOm8ubGVuZ3RoJiZ0aGlzLl91cGRhdGVIb3ZlclN0eWxlcyhvLG8sITApLHRoaXMucmVuZGVyKCl9X3VwZGF0ZVNjYWxlcygpe1IodGhpcy5zY2FsZXMsZT0+e29hLnJlbW92ZUJveCh0aGlzLGUpfSksdGhpcy5lbnN1cmVTY2FsZXNIYXZlSURzKCksdGhpcy5idWlsZE9yVXBkYXRlU2NhbGVzKCl9X2NoZWNrRXZlbnRCaW5kaW5ncygpe2xldCBlPXRoaXMub3B0aW9uczsoIWR0KG5ldyBTZXQoT2JqZWN0LmtleXModGhpcy5fbGlzdGVuZXJzKSksbmV3IFNldChlLmV2ZW50cykpfHwhIXRoaXMuX3Jlc3BvbnNpdmVMaXN0ZW5lcnMhPT1lLnJlc3BvbnNpdmUpJiYodGhpcy51bmJpbmRFdmVudHMoKSx0aGlzLmJpbmRFdmVudHMoKSl9X3VwZGF0ZUhpZGRlbkluZGljZXMoKXtsZXR7X2hpZGRlbkluZGljZXM6ZX09dGhpcyx0PXRoaXMuX2dldFVuaWZvcm1EYXRhQ2hhbmdlcygpfHxbXTtmb3IobGV0e21ldGhvZDpuLHN0YXJ0OnIsY291bnQ6aX1vZiB0KUlvKGUscixuPT09YF9yZW1vdmVFbGVtZW50c2A/LWk6aSl9X2dldFVuaWZvcm1EYXRhQ2hhbmdlcygpe2xldCBlPXRoaXMuX2RhdGFDaGFuZ2VzO2lmKCFlfHwhZS5sZW5ndGgpcmV0dXJuO3RoaXMuX2RhdGFDaGFuZ2VzPVtdO2xldCB0PXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGgsbj10PT5uZXcgU2V0KGUuZmlsdGVyKGU9PmVbMF09PT10KS5tYXAoKGUsdCk9PnQrYCxgK2Uuc3BsaWNlKDEpLmpvaW4oYCxgKSkpLHI9bigwKTtmb3IobGV0IGU9MTtlPHQ7ZSsrKWlmKCFkdChyLG4oZSkpKXJldHVybjtyZXR1cm4gQXJyYXkuZnJvbShyKS5tYXAoZT0+ZS5zcGxpdChgLGApKS5tYXAoZT0+KHttZXRob2Q6ZVsxXSxzdGFydDorZVsyXSxjb3VudDorZVszXX0pKX1fdXBkYXRlTGF5b3V0KGUpe2lmKHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlTGF5b3V0YCx7Y2FuY2VsYWJsZTohMH0pPT09ITEpcmV0dXJuO29hLnVwZGF0ZSh0aGlzLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsZSk7bGV0IHQ9dGhpcy5jaGFydEFyZWEsbj10LndpZHRoPD0wfHx0LmhlaWdodDw9MDt0aGlzLl9sYXllcnM9W10sUih0aGlzLmJveGVzLGU9PntuJiZlLnBvc2l0aW9uPT09YGNoYXJ0QXJlYWB8fChlLmNvbmZpZ3VyZSYmZS5jb25maWd1cmUoKSx0aGlzLl9sYXllcnMucHVzaCguLi5lLl9sYXllcnMoKSkpfSx0aGlzKSx0aGlzLl9sYXllcnMuZm9yRWFjaCgoZSx0KT0+e2UuX2lkeD10fSksdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckxheW91dGApfV91cGRhdGVEYXRhc2V0cyhlKXtpZih0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZURhdGFzZXRzVXBkYXRlYCx7bW9kZTplLGNhbmNlbGFibGU6ITB9KSE9PSExKXtmb3IobGV0IGU9MCx0PXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGg7ZTx0OysrZSl0aGlzLmdldERhdGFzZXRNZXRhKGUpLmNvbnRyb2xsZXIuY29uZmlndXJlKCk7Zm9yKGxldCB0PTAsbj10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoO3Q8bjsrK3QpdGhpcy5fdXBkYXRlRGF0YXNldCh0LHV0KGUpP2Uoe2RhdGFzZXRJbmRleDp0fSk6ZSk7dGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckRhdGFzZXRzVXBkYXRlYCx7bW9kZTplfSl9fV91cGRhdGVEYXRhc2V0KGUsdCl7bGV0IG49dGhpcy5nZXREYXRhc2V0TWV0YShlKSxyPXttZXRhOm4saW5kZXg6ZSxtb2RlOnQsY2FuY2VsYWJsZTohMH07dGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVEYXRhc2V0VXBkYXRlYCxyKSE9PSExJiYobi5jb250cm9sbGVyLl91cGRhdGUodCksci5jYW5jZWxhYmxlPSExLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJEYXRhc2V0VXBkYXRlYCxyKSl9cmVuZGVyKCl7dGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVSZW5kZXJgLHtjYW5jZWxhYmxlOiEwfSkhPT0hMSYmKFkuaGFzKHRoaXMpP3RoaXMuYXR0YWNoZWQmJiFZLnJ1bm5pbmcodGhpcykmJlkuc3RhcnQodGhpcyk6KHRoaXMuZHJhdygpLGpvKHtjaGFydDp0aGlzfSkpKX1kcmF3KCl7bGV0IGU7aWYodGhpcy5fcmVzaXplQmVmb3JlRHJhdyl7bGV0e3dpZHRoOmUsaGVpZ2h0OnR9PXRoaXMuX3Jlc2l6ZUJlZm9yZURyYXc7dGhpcy5fcmVzaXplQmVmb3JlRHJhdz1udWxsLHRoaXMuX3Jlc2l6ZShlLHQpfWlmKHRoaXMuY2xlYXIoKSx0aGlzLndpZHRoPD0wfHx0aGlzLmhlaWdodDw9MHx8dGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVEcmF3YCx7Y2FuY2VsYWJsZTohMH0pPT09ITEpcmV0dXJuO2xldCB0PXRoaXMuX2xheWVycztmb3IoZT0wO2U8dC5sZW5ndGgmJnRbZV0uejw9MDsrK2UpdFtlXS5kcmF3KHRoaXMuY2hhcnRBcmVhKTtmb3IodGhpcy5fZHJhd0RhdGFzZXRzKCk7ZTx0Lmxlbmd0aDsrK2UpdFtlXS5kcmF3KHRoaXMuY2hhcnRBcmVhKTt0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRHJhd2ApfV9nZXRTb3J0ZWREYXRhc2V0TWV0YXMoZSl7bGV0IHQ9dGhpcy5fc29ydGVkTWV0YXNldHMsbj1bXSxyLGk7Zm9yKHI9MCxpPXQubGVuZ3RoO3I8aTsrK3Ipe2xldCBpPXRbcl07KCFlfHxpLnZpc2libGUpJiZuLnB1c2goaSl9cmV0dXJuIG59Z2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpe3JldHVybiB0aGlzLl9nZXRTb3J0ZWREYXRhc2V0TWV0YXMoITApfV9kcmF3RGF0YXNldHMoKXtpZih0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZURhdGFzZXRzRHJhd2Ase2NhbmNlbGFibGU6ITB9KT09PSExKXJldHVybjtsZXQgZT10aGlzLmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKTtmb3IobGV0IHQ9ZS5sZW5ndGgtMTt0Pj0wOy0tdCl0aGlzLl9kcmF3RGF0YXNldChlW3RdKTt0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRGF0YXNldHNEcmF3YCl9X2RyYXdEYXRhc2V0KGUpe2xldCB0PXRoaXMuY3R4LG49e21ldGE6ZSxpbmRleDplLmluZGV4LGNhbmNlbGFibGU6ITB9LHI9YWkodGhpcyxlKTt0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZURhdGFzZXREcmF3YCxuKSE9PSExJiYociYmRG4odCxyKSxlLmNvbnRyb2xsZXIuZHJhdygpLHImJk9uKHQpLG4uY2FuY2VsYWJsZT0hMSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRGF0YXNldERyYXdgLG4pKX1pc1BvaW50SW5BcmVhKGUpe3JldHVybiBLKGUsdGhpcy5jaGFydEFyZWEsdGhpcy5fbWluUGFkZGluZyl9Z2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShlLHQsbixyKXtsZXQgaT1VaS5tb2Rlc1t0XTtyZXR1cm4gdHlwZW9mIGk9PWBmdW5jdGlvbmA/aSh0aGlzLGUsbixyKTpbXX1nZXREYXRhc2V0TWV0YShlKXtsZXQgdD10aGlzLmRhdGEuZGF0YXNldHNbZV0sbj10aGlzLl9tZXRhc2V0cyxyPW4uZmlsdGVyKGU9PmUmJmUuX2RhdGFzZXQ9PT10KS5wb3AoKTtyZXR1cm4gcnx8KHI9e3R5cGU6bnVsbCxkYXRhOltdLGRhdGFzZXQ6bnVsbCxjb250cm9sbGVyOm51bGwsaGlkZGVuOm51bGwseEF4aXNJRDpudWxsLHlBeGlzSUQ6bnVsbCxvcmRlcjp0JiZ0Lm9yZGVyfHwwLGluZGV4OmUsX2RhdGFzZXQ6dCxfcGFyc2VkOltdLF9zb3J0ZWQ6ITF9LG4ucHVzaChyKSkscn1nZXRDb250ZXh0KCl7cmV0dXJuIHRoaXMuJGNvbnRleHR8fD1HbihudWxsLHtjaGFydDp0aGlzLHR5cGU6YGNoYXJ0YH0pfWdldFZpc2libGVEYXRhc2V0Q291bnQoKXtyZXR1cm4gdGhpcy5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCkubGVuZ3RofWlzRGF0YXNldFZpc2libGUoZSl7bGV0IHQ9dGhpcy5kYXRhLmRhdGFzZXRzW2VdO2lmKCF0KXJldHVybiExO2xldCBuPXRoaXMuZ2V0RGF0YXNldE1ldGEoZSk7cmV0dXJuIHR5cGVvZiBuLmhpZGRlbj09YGJvb2xlYW5gPyFuLmhpZGRlbjohdC5oaWRkZW59c2V0RGF0YXNldFZpc2liaWxpdHkoZSx0KXtsZXQgbj10aGlzLmdldERhdGFzZXRNZXRhKGUpO24uaGlkZGVuPSF0fXRvZ2dsZURhdGFWaXNpYmlsaXR5KGUpe3RoaXMuX2hpZGRlbkluZGljZXNbZV09IXRoaXMuX2hpZGRlbkluZGljZXNbZV19Z2V0RGF0YVZpc2liaWxpdHkoZSl7cmV0dXJuIXRoaXMuX2hpZGRlbkluZGljZXNbZV19X3VwZGF0ZVZpc2liaWxpdHkoZSx0LG4pe2xldCByPW4/YHNob3dgOmBoaWRlYCxpPXRoaXMuZ2V0RGF0YXNldE1ldGEoZSksYT1pLmNvbnRyb2xsZXIuX3Jlc29sdmVBbmltYXRpb25zKHZvaWQgMCxyKTtsdCh0KT8oaS5kYXRhW3RdLmhpZGRlbj0hbix0aGlzLnVwZGF0ZSgpKToodGhpcy5zZXREYXRhc2V0VmlzaWJpbGl0eShlLG4pLGEudXBkYXRlKGkse3Zpc2libGU6bn0pLHRoaXMudXBkYXRlKHQ9PnQuZGF0YXNldEluZGV4PT09ZT9yOnZvaWQgMCkpfWhpZGUoZSx0KXt0aGlzLl91cGRhdGVWaXNpYmlsaXR5KGUsdCwhMSl9c2hvdyhlLHQpe3RoaXMuX3VwZGF0ZVZpc2liaWxpdHkoZSx0LCEwKX1fZGVzdHJveURhdGFzZXRNZXRhKGUpe2xldCB0PXRoaXMuX21ldGFzZXRzW2VdO3QmJnQuY29udHJvbGxlciYmdC5jb250cm9sbGVyLl9kZXN0cm95KCksZGVsZXRlIHRoaXMuX21ldGFzZXRzW2VdfV9zdG9wKCl7bGV0IGUsdDtmb3IodGhpcy5zdG9wKCksWS5yZW1vdmUodGhpcyksZT0wLHQ9dGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aDtlPHQ7KytlKXRoaXMuX2Rlc3Ryb3lEYXRhc2V0TWV0YShlKX1kZXN0cm95KCl7dGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVEZXN0cm95YCk7bGV0e2NhbnZhczplLGN0eDp0fT10aGlzO3RoaXMuX3N0b3AoKSx0aGlzLmNvbmZpZy5jbGVhckNhY2hlKCksZSYmKHRoaXMudW5iaW5kRXZlbnRzKCksd24oZSx0KSx0aGlzLnBsYXRmb3JtLnJlbGVhc2VDb250ZXh0KHQpLHRoaXMuY2FudmFzPW51bGwsdGhpcy5jdHg9bnVsbCksZGVsZXRlIFBvW3RoaXMuaWRdLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJEZXN0cm95YCl9dG9CYXNlNjRJbWFnZSguLi5lKXtyZXR1cm4gdGhpcy5jYW52YXMudG9EYXRhVVJMKC4uLmUpfWJpbmRFdmVudHMoKXt0aGlzLmJpbmRVc2VyRXZlbnRzKCksdGhpcy5vcHRpb25zLnJlc3BvbnNpdmU/dGhpcy5iaW5kUmVzcG9uc2l2ZUV2ZW50cygpOnRoaXMuYXR0YWNoZWQ9ITB9YmluZFVzZXJFdmVudHMoKXtsZXQgZT10aGlzLl9saXN0ZW5lcnMsdD10aGlzLnBsYXRmb3JtLG49KG4scik9Pnt0LmFkZEV2ZW50TGlzdGVuZXIodGhpcyxuLHIpLGVbbl09cn0scj0oZSx0LG4pPT57ZS5vZmZzZXRYPXQsZS5vZmZzZXRZPW4sdGhpcy5fZXZlbnRIYW5kbGVyKGUpfTtSKHRoaXMub3B0aW9ucy5ldmVudHMsZT0+bihlLHIpKX1iaW5kUmVzcG9uc2l2ZUV2ZW50cygpe3RoaXMuX3Jlc3BvbnNpdmVMaXN0ZW5lcnN8fD17fTtsZXQgZT10aGlzLl9yZXNwb25zaXZlTGlzdGVuZXJzLHQ9dGhpcy5wbGF0Zm9ybSxuPShuLHIpPT57dC5hZGRFdmVudExpc3RlbmVyKHRoaXMsbixyKSxlW25dPXJ9LHI9KG4scik9PntlW25dJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsbixyKSxkZWxldGUgZVtuXSl9LGk9KGUsdCk9Pnt0aGlzLmNhbnZhcyYmdGhpcy5yZXNpemUoZSx0KX0sYSxvPSgpPT57cihgYXR0YWNoYCxvKSx0aGlzLmF0dGFjaGVkPSEwLHRoaXMucmVzaXplKCksbihgcmVzaXplYCxpKSxuKGBkZXRhY2hgLGEpfTthPSgpPT57dGhpcy5hdHRhY2hlZD0hMSxyKGByZXNpemVgLGkpLHRoaXMuX3N0b3AoKSx0aGlzLl9yZXNpemUoMCwwKSxuKGBhdHRhY2hgLG8pfSx0LmlzQXR0YWNoZWQodGhpcy5jYW52YXMpP28oKTphKCl9dW5iaW5kRXZlbnRzKCl7Uih0aGlzLl9saXN0ZW5lcnMsKGUsdCk9Pnt0aGlzLnBsYXRmb3JtLnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcyx0LGUpfSksdGhpcy5fbGlzdGVuZXJzPXt9LFIodGhpcy5fcmVzcG9uc2l2ZUxpc3RlbmVycywoZSx0KT0+e3RoaXMucGxhdGZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLHQsZSl9KSx0aGlzLl9yZXNwb25zaXZlTGlzdGVuZXJzPXZvaWQgMH11cGRhdGVIb3ZlclN0eWxlKGUsdCxuKXtsZXQgcj1uP2BzZXRgOmByZW1vdmVgLGksYSxvLHM7Zm9yKHQ9PT1gZGF0YXNldGAmJihpPXRoaXMuZ2V0RGF0YXNldE1ldGEoZVswXS5kYXRhc2V0SW5kZXgpLGkuY29udHJvbGxlcltgX2ArcitgRGF0YXNldEhvdmVyU3R5bGVgXSgpKSxvPTAscz1lLmxlbmd0aDtvPHM7KytvKXthPWVbb107bGV0IHQ9YSYmdGhpcy5nZXREYXRhc2V0TWV0YShhLmRhdGFzZXRJbmRleCkuY29udHJvbGxlcjt0JiZ0W3IrYEhvdmVyU3R5bGVgXShhLmVsZW1lbnQsYS5kYXRhc2V0SW5kZXgsYS5pbmRleCl9fWdldEFjdGl2ZUVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZXx8W119c2V0QWN0aXZlRWxlbWVudHMoZSl7bGV0IHQ9dGhpcy5fYWN0aXZlfHxbXSxuPWUubWFwKCh7ZGF0YXNldEluZGV4OmUsaW5kZXg6dH0pPT57bGV0IG49dGhpcy5nZXREYXRhc2V0TWV0YShlKTtpZighbil0aHJvdyBFcnJvcihgTm8gZGF0YXNldCBmb3VuZCBhdCBpbmRleCBgK2UpO3JldHVybntkYXRhc2V0SW5kZXg6ZSxlbGVtZW50Om4uZGF0YVt0XSxpbmRleDp0fX0pO1plKG4sdCl8fCh0aGlzLl9hY3RpdmU9bix0aGlzLl9sYXN0RXZlbnQ9bnVsbCx0aGlzLl91cGRhdGVIb3ZlclN0eWxlcyhuLHQpKX1ub3RpZnlQbHVnaW5zKGUsdCxuKXtyZXR1cm4gdGhpcy5fcGx1Z2lucy5ub3RpZnkodGhpcyxlLHQsbil9aXNQbHVnaW5FbmFibGVkKGUpe3JldHVybiB0aGlzLl9wbHVnaW5zLl9jYWNoZS5maWx0ZXIodD0+dC5wbHVnaW4uaWQ9PT1lKS5sZW5ndGg9PT0xfV91cGRhdGVIb3ZlclN0eWxlcyhlLHQsbil7bGV0IHI9dGhpcy5vcHRpb25zLmhvdmVyLGk9KGUsdCk9PmUuZmlsdGVyKGU9PiF0LnNvbWUodD0+ZS5kYXRhc2V0SW5kZXg9PT10LmRhdGFzZXRJbmRleCYmZS5pbmRleD09PXQuaW5kZXgpKSxhPWkodCxlKSxvPW4/ZTppKGUsdCk7YS5sZW5ndGgmJnRoaXMudXBkYXRlSG92ZXJTdHlsZShhLHIubW9kZSwhMSksby5sZW5ndGgmJnIubW9kZSYmdGhpcy51cGRhdGVIb3ZlclN0eWxlKG8sci5tb2RlLCEwKX1fZXZlbnRIYW5kbGVyKGUsdCl7bGV0IG49e2V2ZW50OmUscmVwbGF5OnQsY2FuY2VsYWJsZTohMCxpbkNoYXJ0QXJlYTp0aGlzLmlzUG9pbnRJbkFyZWEoZSl9LHI9dD0+KHQub3B0aW9ucy5ldmVudHN8fHRoaXMub3B0aW9ucy5ldmVudHMpLmluY2x1ZGVzKGUubmF0aXZlLnR5cGUpO2lmKHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRXZlbnRgLG4scik9PT0hMSlyZXR1cm47bGV0IGk9dGhpcy5faGFuZGxlRXZlbnQoZSx0LG4uaW5DaGFydEFyZWEpO3JldHVybiBuLmNhbmNlbGFibGU9ITEsdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckV2ZW50YCxuLHIpLChpfHxuLmNoYW5nZWQpJiZ0aGlzLnJlbmRlcigpLHRoaXN9X2hhbmRsZUV2ZW50KGUsdCxuKXtsZXR7X2FjdGl2ZTpyPVtdLG9wdGlvbnM6aX09dGhpcyxhPXQsbz10aGlzLl9nZXRBY3RpdmVFbGVtZW50cyhlLHIsbixhKSxzPWZ0KGUpLGM9TG8oZSx0aGlzLl9sYXN0RXZlbnQsbixzKTtuJiYodGhpcy5fbGFzdEV2ZW50PW51bGwsTChpLm9uSG92ZXIsW2Usbyx0aGlzXSx0aGlzKSxzJiZMKGkub25DbGljayxbZSxvLHRoaXNdLHRoaXMpKTtsZXQgbD0hWmUobyxyKTtyZXR1cm4obHx8dCkmJih0aGlzLl9hY3RpdmU9byx0aGlzLl91cGRhdGVIb3ZlclN0eWxlcyhvLHIsdCkpLHRoaXMuX2xhc3RFdmVudD1jLGx9X2dldEFjdGl2ZUVsZW1lbnRzKGUsdCxuLHIpe2lmKGUudHlwZT09PWBtb3VzZW91dGApcmV0dXJuW107aWYoIW4pcmV0dXJuIHQ7bGV0IGk9dGhpcy5vcHRpb25zLmhvdmVyO3JldHVybiB0aGlzLmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUoZSxpLm1vZGUsaSxyKX19O2Z1bmN0aW9uIHpvKCl7cmV0dXJuIFIoUm8uaW5zdGFuY2VzLGU9PmUuX3BsdWdpbnMuaW52YWxpZGF0ZSgpKX1mdW5jdGlvbiBCbyhlLHQsbj10KXtlLmxpbmVDYXA9SShuLmJvcmRlckNhcFN0eWxlLHQuYm9yZGVyQ2FwU3R5bGUpLGUuc2V0TGluZURhc2goSShuLmJvcmRlckRhc2gsdC5ib3JkZXJEYXNoKSksZS5saW5lRGFzaE9mZnNldD1JKG4uYm9yZGVyRGFzaE9mZnNldCx0LmJvcmRlckRhc2hPZmZzZXQpLGUubGluZUpvaW49SShuLmJvcmRlckpvaW5TdHlsZSx0LmJvcmRlckpvaW5TdHlsZSksZS5saW5lV2lkdGg9SShuLmJvcmRlcldpZHRoLHQuYm9yZGVyV2lkdGgpLGUuc3Ryb2tlU3R5bGU9SShuLmJvcmRlckNvbG9yLHQuYm9yZGVyQ29sb3IpfWZ1bmN0aW9uIFZvKGUsdCxuKXtlLmxpbmVUbyhuLngsbi55KX1mdW5jdGlvbiBIbyhlKXtyZXR1cm4gZS5zdGVwcGVkP2tuOmUudGVuc2lvbnx8ZS5jdWJpY0ludGVycG9sYXRpb25Nb2RlPT09YG1vbm90b25lYD9BbjpWb31mdW5jdGlvbiBVbyhlLHQsbj17fSl7bGV0IHI9ZS5sZW5ndGgse3N0YXJ0Omk9MCxlbmQ6YT1yLTF9PW4se3N0YXJ0Om8sZW5kOnN9PXQsYz1NYXRoLm1heChpLG8pLGw9TWF0aC5taW4oYSxzKSx1PWk8byYmYTxvfHxpPnMmJmE+cztyZXR1cm57Y291bnQ6cixzdGFydDpjLGxvb3A6dC5sb29wLGlsZW46bDxjJiYhdT9yK2wtYzpsLWN9fWZ1bmN0aW9uIFdvKGUsdCxuLHIpe2xldHtwb2ludHM6aSxvcHRpb25zOmF9PXQse2NvdW50Om8sc3RhcnQ6cyxsb29wOmMsaWxlbjpsfT1VbyhpLG4sciksdT1IbyhhKSx7bW92ZTpkPSEwLHJldmVyc2U6Zn09cnx8e30scCxtLGg7Zm9yKHA9MDtwPD1sOysrcCltPWlbKHMrKGY/bC1wOnApKSVvXSwhbS5za2lwJiYoZD8oZS5tb3ZlVG8obS54LG0ueSksZD0hMSk6dShlLGgsbSxmLGEuc3RlcHBlZCksaD1tKTtyZXR1cm4gYyYmKG09aVsocysoZj9sOjApKSVvXSx1KGUsaCxtLGYsYS5zdGVwcGVkKSksISFjfWZ1bmN0aW9uIEdvKGUsdCxuLHIpe2xldCBpPXQucG9pbnRzLHtjb3VudDphLHN0YXJ0Om8saWxlbjpzfT1VbyhpLG4scikse21vdmU6Yz0hMCxyZXZlcnNlOmx9PXJ8fHt9LHU9MCxkPTAsZixwLG0saCxnLF8sdj1lPT4obysobD9zLWU6ZSkpJWEseT0oKT0+e2ghPT1nJiYoZS5saW5lVG8odSxnKSxlLmxpbmVUbyh1LGgpLGUubGluZVRvKHUsXykpfTtmb3IoYyYmKHA9aVt2KDApXSxlLm1vdmVUbyhwLngscC55KSksZj0wO2Y8PXM7KytmKXtpZihwPWlbdihmKV0scC5za2lwKWNvbnRpbnVlO2xldCB0PXAueCxuPXAueSxyPXR8MDtyPT09bT8objxoP2g9bjpuPmcmJihnPW4pLHU9KGQqdSt0KS8rK2QpOih5KCksZS5saW5lVG8odCxuKSxtPXIsZD0wLGg9Zz1uKSxfPW59eSgpfWZ1bmN0aW9uIEtvKGUpe2xldCB0PWUub3B0aW9ucyxuPXQuYm9yZGVyRGFzaCYmdC5ib3JkZXJEYXNoLmxlbmd0aDtyZXR1cm4hZS5fZGVjaW1hdGVkJiYhZS5fbG9vcCYmIXQudGVuc2lvbiYmdC5jdWJpY0ludGVycG9sYXRpb25Nb2RlIT09YG1vbm90b25lYCYmIXQuc3RlcHBlZCYmIW4/R286V299ZnVuY3Rpb24gcW8oZSl7cmV0dXJuIGUuc3RlcHBlZD9ScjplLnRlbnNpb258fGUuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZT09PWBtb25vdG9uZWA/enI6THJ9ZnVuY3Rpb24gSm8oZSx0LG4scil7bGV0IGk9dC5fcGF0aDtpfHwoaT10Ll9wYXRoPW5ldyBQYXRoMkQsdC5wYXRoKGksbixyKSYmaS5jbG9zZVBhdGgoKSksQm8oZSx0Lm9wdGlvbnMpLGUuc3Ryb2tlKGkpfWZ1bmN0aW9uIFlvKGUsdCxuLHIpe2xldHtzZWdtZW50czppLG9wdGlvbnM6YX09dCxvPUtvKHQpO2ZvcihsZXQgcyBvZiBpKUJvKGUsYSxzLnN0eWxlKSxlLmJlZ2luUGF0aCgpLG8oZSx0LHMse3N0YXJ0Om4sZW5kOm4rci0xfSkmJmUuY2xvc2VQYXRoKCksZS5zdHJva2UoKX12YXIgWG89dHlwZW9mIFBhdGgyRD09YGZ1bmN0aW9uYDtmdW5jdGlvbiBabyhlLHQsbixyKXtYbyYmIXQub3B0aW9ucy5zZWdtZW50P0pvKGUsdCxuLHIpOllvKGUsdCxuLHIpfXZhciBRbz1jbGFzcyBleHRlbmRzIEFhe3N0YXRpYyBpZD1gbGluZWA7c3RhdGljIGRlZmF1bHRzPXtib3JkZXJDYXBTdHlsZTpgYnV0dGAsYm9yZGVyRGFzaDpbXSxib3JkZXJEYXNoT2Zmc2V0OjAsYm9yZGVySm9pblN0eWxlOmBtaXRlcmAsYm9yZGVyV2lkdGg6MyxjYXBCZXppZXJQb2ludHM6ITAsY3ViaWNJbnRlcnBvbGF0aW9uTW9kZTpgZGVmYXVsdGAsZmlsbDohMSxzcGFuR2FwczohMSxzdGVwcGVkOiExLHRlbnNpb246MH07c3RhdGljIGRlZmF1bHRSb3V0ZXM9e2JhY2tncm91bmRDb2xvcjpgYmFja2dyb3VuZENvbG9yYCxib3JkZXJDb2xvcjpgYm9yZGVyQ29sb3JgfTtzdGF0aWMgZGVzY3JpcHRvcnM9e19zY3JpcHRhYmxlOiEwLF9pbmRleGFibGU6ZT0+ZSE9PWBib3JkZXJEYXNoYCYmZSE9PWBmaWxsYH07Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmFuaW1hdGVkPSEwLHRoaXMub3B0aW9ucz12b2lkIDAsdGhpcy5fY2hhcnQ9dm9pZCAwLHRoaXMuX2xvb3A9dm9pZCAwLHRoaXMuX2Z1bGxMb29wPXZvaWQgMCx0aGlzLl9wYXRoPXZvaWQgMCx0aGlzLl9wb2ludHM9dm9pZCAwLHRoaXMuX3NlZ21lbnRzPXZvaWQgMCx0aGlzLl9kZWNpbWF0ZWQ9ITEsdGhpcy5fcG9pbnRzVXBkYXRlZD0hMSx0aGlzLl9kYXRhc2V0SW5kZXg9dm9pZCAwLGUmJk9iamVjdC5hc3NpZ24odGhpcyxlKX11cGRhdGVDb250cm9sUG9pbnRzKGUsdCl7bGV0IG49dGhpcy5vcHRpb25zO2lmKChuLnRlbnNpb258fG4uY3ViaWNJbnRlcnBvbGF0aW9uTW9kZT09PWBtb25vdG9uZWApJiYhbi5zdGVwcGVkJiYhdGhpcy5fcG9pbnRzVXBkYXRlZCl7bGV0IHI9bi5zcGFuR2Fwcz90aGlzLl9sb29wOnRoaXMuX2Z1bGxMb29wO2JyKHRoaXMuX3BvaW50cyxuLGUscix0KSx0aGlzLl9wb2ludHNVcGRhdGVkPSEwfX1zZXQgcG9pbnRzKGUpe3RoaXMuX3BvaW50cz1lLGRlbGV0ZSB0aGlzLl9zZWdtZW50cyxkZWxldGUgdGhpcy5fcGF0aCx0aGlzLl9wb2ludHNVcGRhdGVkPSExfWdldCBwb2ludHMoKXtyZXR1cm4gdGhpcy5fcG9pbnRzfWdldCBzZWdtZW50cygpe3JldHVybiB0aGlzLl9zZWdtZW50c3x8PVFyKHRoaXMsdGhpcy5vcHRpb25zLnNlZ21lbnQpfWZpcnN0KCl7bGV0IGU9dGhpcy5zZWdtZW50cyx0PXRoaXMucG9pbnRzO3JldHVybiBlLmxlbmd0aCYmdFtlWzBdLnN0YXJ0XX1sYXN0KCl7bGV0IGU9dGhpcy5zZWdtZW50cyx0PXRoaXMucG9pbnRzLG49ZS5sZW5ndGg7cmV0dXJuIG4mJnRbZVtuLTFdLmVuZF19aW50ZXJwb2xhdGUoZSx0KXtsZXQgbj10aGlzLm9wdGlvbnMscj1lW3RdLGk9dGhpcy5wb2ludHMsYT1Zcih0aGlzLHtwcm9wZXJ0eTp0LHN0YXJ0OnIsZW5kOnJ9KTtpZighYS5sZW5ndGgpcmV0dXJuO2xldCBvPVtdLHM9cW8obiksYyxsO2ZvcihjPTAsbD1hLmxlbmd0aDtjPGw7KytjKXtsZXR7c3RhcnQ6bCxlbmQ6dX09YVtjXSxkPWlbbF0sZj1pW3VdO2lmKGQ9PT1mKXtvLnB1c2goZCk7Y29udGludWV9bGV0IHA9cyhkLGYsTWF0aC5hYnMoKHItZFt0XSkvKGZbdF0tZFt0XSkpLG4uc3RlcHBlZCk7cFt0XT1lW3RdLG8ucHVzaChwKX1yZXR1cm4gby5sZW5ndGg9PT0xP29bMF06b31wYXRoU2VnbWVudChlLHQsbil7cmV0dXJuIEtvKHRoaXMpKGUsdGhpcyx0LG4pfXBhdGgoZSx0LG4pe2xldCByPXRoaXMuc2VnbWVudHMsaT1Lbyh0aGlzKSxhPXRoaXMuX2xvb3A7dHx8PTAsbnx8PXRoaXMucG9pbnRzLmxlbmd0aC10O2ZvcihsZXQgbyBvZiByKWEmPWkoZSx0aGlzLG8se3N0YXJ0OnQsZW5kOnQrbi0xfSk7cmV0dXJuISFhfWRyYXcoZSx0LG4scil7bGV0IGk9dGhpcy5vcHRpb25zfHx7fTsodGhpcy5wb2ludHN8fFtdKS5sZW5ndGgmJmkuYm9yZGVyV2lkdGgmJihlLnNhdmUoKSxabyhlLHRoaXMsbixyKSxlLnJlc3RvcmUoKSksdGhpcy5hbmltYXRlZCYmKHRoaXMuX3BvaW50c1VwZGF0ZWQ9ITEsdGhpcy5fcGF0aD12b2lkIDApfX07ZnVuY3Rpb24gJG8oZSx0LG4scil7bGV0IGk9ZS5vcHRpb25zLHtbbl06YX09ZS5nZXRQcm9wcyhbbl0scik7cmV0dXJuIE1hdGguYWJzKHQtYSk8aS5yYWRpdXMraS5oaXRSYWRpdXN9dmFyIGVzPWNsYXNzIGV4dGVuZHMgQWF7c3RhdGljIGlkPWBwb2ludGA7cGFyc2VkO3NraXA7c3RvcDtzdGF0aWMgZGVmYXVsdHM9e2JvcmRlcldpZHRoOjEsaGl0UmFkaXVzOjEsaG92ZXJCb3JkZXJXaWR0aDoxLGhvdmVyUmFkaXVzOjQscG9pbnRTdHlsZTpgY2lyY2xlYCxyYWRpdXM6Myxyb3RhdGlvbjowfTtzdGF0aWMgZGVmYXVsdFJvdXRlcz17YmFja2dyb3VuZENvbG9yOmBiYWNrZ3JvdW5kQ29sb3JgLGJvcmRlckNvbG9yOmBib3JkZXJDb2xvcmB9O2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5vcHRpb25zPXZvaWQgMCx0aGlzLnBhcnNlZD12b2lkIDAsdGhpcy5za2lwPXZvaWQgMCx0aGlzLnN0b3A9dm9pZCAwLGUmJk9iamVjdC5hc3NpZ24odGhpcyxlKX1pblJhbmdlKGUsdCxuKXtsZXQgcj10aGlzLm9wdGlvbnMse3g6aSx5OmF9PXRoaXMuZ2V0UHJvcHMoW2B4YCxgeWBdLG4pO3JldHVybihlLWkpKioyKyh0LWEpKioyPChyLmhpdFJhZGl1cytyLnJhZGl1cykqKjJ9aW5YUmFuZ2UoZSx0KXtyZXR1cm4gJG8odGhpcyxlLGB4YCx0KX1pbllSYW5nZShlLHQpe3JldHVybiAkbyh0aGlzLGUsYHlgLHQpfWdldENlbnRlclBvaW50KGUpe2xldHt4OnQseTpufT10aGlzLmdldFByb3BzKFtgeGAsYHlgXSxlKTtyZXR1cm57eDp0LHk6bn19c2l6ZShlKXtlPWV8fHRoaXMub3B0aW9uc3x8e307bGV0IHQ9ZS5yYWRpdXN8fDA7dD1NYXRoLm1heCh0LHQmJmUuaG92ZXJSYWRpdXN8fDApO2xldCBuPXQmJmUuYm9yZGVyV2lkdGh8fDA7cmV0dXJuKHQrbikqMn1kcmF3KGUsdCl7bGV0IG49dGhpcy5vcHRpb25zO3RoaXMuc2tpcHx8bi5yYWRpdXM8LjF8fCFLKHRoaXMsdCx0aGlzLnNpemUobikvMil8fChlLnN0cm9rZVN0eWxlPW4uYm9yZGVyQ29sb3IsZS5saW5lV2lkdGg9bi5ib3JkZXJXaWR0aCxlLmZpbGxTdHlsZT1uLmJhY2tncm91bmRDb2xvcixUbihlLG4sdGhpcy54LHRoaXMueSkpfWdldFJhbmdlKCl7bGV0IGU9dGhpcy5vcHRpb25zfHx7fTtyZXR1cm4gZS5yYWRpdXMrZS5oaXRSYWRpdXN9fTtmdW5jdGlvbiB0cyhlLHQsbil7bGV0IHI9ZS5zZWdtZW50cyxpPWUucG9pbnRzLGE9dC5wb2ludHMsbz1bXTtmb3IobGV0IGUgb2Ygcil7bGV0e3N0YXJ0OnIsZW5kOnN9PWU7cz1pcyhyLHMsaSk7bGV0IGM9bnMobixpW3JdLGlbc10sZS5sb29wKTtpZighdC5zZWdtZW50cyl7by5wdXNoKHtzb3VyY2U6ZSx0YXJnZXQ6YyxzdGFydDppW3JdLGVuZDppW3NdfSk7Y29udGludWV9bGV0IGw9WXIodCxjKTtmb3IobGV0IHQgb2YgbCl7bGV0IHI9bnMobixhW3Quc3RhcnRdLGFbdC5lbmRdLHQubG9vcCkscz1KcihlLGkscik7Zm9yKGxldCBlIG9mIHMpby5wdXNoKHtzb3VyY2U6ZSx0YXJnZXQ6dCxzdGFydDp7W25dOmFzKGMscixgc3RhcnRgLE1hdGgubWF4KX0sZW5kOntbbl06YXMoYyxyLGBlbmRgLE1hdGgubWluKX19KX19cmV0dXJuIG99ZnVuY3Rpb24gbnMoZSx0LG4scil7aWYocilyZXR1cm47bGV0IGk9dFtlXSxhPW5bZV07cmV0dXJuIGU9PT1gYW5nbGVgJiYoaT1IKGkpLGE9SChhKSkse3Byb3BlcnR5OmUsc3RhcnQ6aSxlbmQ6YX19ZnVuY3Rpb24gcnMoZSx0KXtsZXR7eDpuPW51bGwseTpyPW51bGx9PWV8fHt9LGk9dC5wb2ludHMsYT1bXTtyZXR1cm4gdC5zZWdtZW50cy5mb3JFYWNoKCh7c3RhcnQ6ZSxlbmQ6dH0pPT57dD1pcyhlLHQsaSk7bGV0IG89aVtlXSxzPWlbdF07cj09PW51bGw/biE9PW51bGwmJihhLnB1c2goe3g6bix5Om8ueX0pLGEucHVzaCh7eDpuLHk6cy55fSkpOihhLnB1c2goe3g6by54LHk6cn0pLGEucHVzaCh7eDpzLngseTpyfSkpfSksYX1mdW5jdGlvbiBpcyhlLHQsbil7Zm9yKDt0PmU7dC0tKXtsZXQgZT1uW3RdO2lmKCFpc05hTihlLngpJiYhaXNOYU4oZS55KSlicmVha31yZXR1cm4gdH1mdW5jdGlvbiBhcyhlLHQsbixyKXtyZXR1cm4gZSYmdD9yKGVbbl0sdFtuXSk6ZT9lW25dOnQ/dFtuXTowfWZ1bmN0aW9uIG9zKGUsdCl7bGV0IG49W10scj0hMTtyZXR1cm4gTShlKT8ocj0hMCxuPWUpOm49cnMoZSx0KSxuLmxlbmd0aD9uZXcgUW8oe3BvaW50czpuLG9wdGlvbnM6e3RlbnNpb246MH0sX2xvb3A6cixfZnVsbExvb3A6cn0pOm51bGx9ZnVuY3Rpb24gc3MoZSl7cmV0dXJuIGUmJmUuZmlsbCE9PSExfWZ1bmN0aW9uIGNzKGUsdCxuKXtsZXQgcj1lW3RdLmZpbGwsaT1bdF0sYTtpZighbilyZXR1cm4gcjtmb3IoO3IhPT0hMSYmaS5pbmRleE9mKHIpPT09LTE7KXtpZighUChyKSlyZXR1cm4gcjtpZihhPWVbcl0sIWEpcmV0dXJuITE7aWYoYS52aXNpYmxlKXJldHVybiByO2kucHVzaChyKSxyPWEuZmlsbH1yZXR1cm4hMX1mdW5jdGlvbiBscyhlLHQsbil7bGV0IHI9cHMoZSk7aWYoTihyKSlyZXR1cm4haXNOYU4oci52YWx1ZSkmJnI7bGV0IGk9cGFyc2VGbG9hdChyKTtyZXR1cm4gUChpKSYmTWF0aC5mbG9vcihpKT09PWk/dXMoclswXSx0LGksbik6W2BvcmlnaW5gLGBzdGFydGAsYGVuZGAsYHN0YWNrYCxgc2hhcGVgXS5pbmRleE9mKHIpPj0wJiZyfWZ1bmN0aW9uIHVzKGUsdCxuLHIpe3JldHVybihlPT09YC1gfHxlPT09YCtgKSYmKG49dCtuKSxuPT09dHx8bjwwfHxuPj1yPyExOm59ZnVuY3Rpb24gZHMoZSx0KXtsZXQgbj1udWxsO3JldHVybiBlPT09YHN0YXJ0YD9uPXQuYm90dG9tOmU9PT1gZW5kYD9uPXQudG9wOk4oZSk/bj10LmdldFBpeGVsRm9yVmFsdWUoZS52YWx1ZSk6dC5nZXRCYXNlUGl4ZWwmJihuPXQuZ2V0QmFzZVBpeGVsKCkpLG59ZnVuY3Rpb24gZnMoZSx0LG4pe2xldCByO3JldHVybiByPWU9PT1gc3RhcnRgP246ZT09PWBlbmRgP3Qub3B0aW9ucy5yZXZlcnNlP3QubWluOnQubWF4Ok4oZSk/ZS52YWx1ZTp0LmdldEJhc2VWYWx1ZSgpLHJ9ZnVuY3Rpb24gcHMoZSl7bGV0IHQ9ZS5vcHRpb25zLG49dC5maWxsLHI9SShuJiZuLnRhcmdldCxuKTtyZXR1cm4gcj09PXZvaWQgMCYmKHI9ISF0LmJhY2tncm91bmRDb2xvcikscj09PSExfHxyPT09bnVsbD8hMTpyPT09ITA/YG9yaWdpbmA6cn1mdW5jdGlvbiBtcyhlKXtsZXR7c2NhbGU6dCxpbmRleDpuLGxpbmU6cn09ZSxpPVtdLGE9ci5zZWdtZW50cyxvPXIucG9pbnRzLHM9aHModCxuKTtzLnB1c2gob3Moe3g6bnVsbCx5OnQuYm90dG9tfSxyKSk7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2xldCB0PWFbZV07Zm9yKGxldCBlPXQuc3RhcnQ7ZTw9dC5lbmQ7ZSsrKWdzKGksb1tlXSxzKX1yZXR1cm4gbmV3IFFvKHtwb2ludHM6aSxvcHRpb25zOnt9fSl9ZnVuY3Rpb24gaHMoZSx0KXtsZXQgbj1bXSxyPWUuZ2V0TWF0Y2hpbmdWaXNpYmxlTWV0YXMoYGxpbmVgKTtmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl7bGV0IGk9cltlXTtpZihpLmluZGV4PT09dClicmVhaztpLmhpZGRlbnx8bi51bnNoaWZ0KGkuZGF0YXNldCl9cmV0dXJuIG59ZnVuY3Rpb24gZ3MoZSx0LG4pe2xldCByPVtdO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKXtsZXQgYT1uW2ldLHtmaXJzdDpvLGxhc3Q6cyxwb2ludDpjfT1fcyhhLHQsYHhgKTtpZighKCFjfHxvJiZzKSl7aWYobylyLnVuc2hpZnQoYyk7ZWxzZSBpZihlLnB1c2goYyksIXMpYnJlYWt9fWUucHVzaCguLi5yKX1mdW5jdGlvbiBfcyhlLHQsbil7bGV0IHI9ZS5pbnRlcnBvbGF0ZSh0LG4pO2lmKCFyKXJldHVybnt9O2xldCBpPXJbbl0sYT1lLnNlZ21lbnRzLG89ZS5wb2ludHMscz0hMSxjPSExO2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtsZXQgdD1hW2VdLHI9b1t0LnN0YXJ0XVtuXSxsPW9bdC5lbmRdW25dO2lmKEZ0KGkscixsKSl7cz1pPT09cixjPWk9PT1sO2JyZWFrfX1yZXR1cm57Zmlyc3Q6cyxsYXN0OmMscG9pbnQ6cn19dmFyIHZzPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMueD1lLngsdGhpcy55PWUueSx0aGlzLnJhZGl1cz1lLnJhZGl1c31wYXRoU2VnbWVudChlLHQsbil7bGV0e3g6cix5OmkscmFkaXVzOmF9PXRoaXM7cmV0dXJuIHR8fD17c3RhcnQ6MCxlbmQ6Qn0sZS5hcmMocixpLGEsdC5lbmQsdC5zdGFydCwhMCksIW4uYm91bmRzfWludGVycG9sYXRlKGUpe2xldHt4OnQseTpuLHJhZGl1czpyfT10aGlzLGk9ZS5hbmdsZTtyZXR1cm57eDp0K01hdGguY29zKGkpKnIseTpuK01hdGguc2luKGkpKnIsYW5nbGU6aX19fTtmdW5jdGlvbiB5cyhlKXtsZXR7Y2hhcnQ6dCxmaWxsOm4sbGluZTpyfT1lO2lmKFAobikpcmV0dXJuIGJzKHQsbik7aWYobj09PWBzdGFja2ApcmV0dXJuIG1zKGUpO2lmKG49PT1gc2hhcGVgKXJldHVybiEwO2xldCBpPXhzKGUpO3JldHVybiBpIGluc3RhbmNlb2YgdnM/aTpvcyhpLHIpfWZ1bmN0aW9uIGJzKGUsdCl7bGV0IG49ZS5nZXREYXRhc2V0TWV0YSh0KTtyZXR1cm4gbiYmZS5pc0RhdGFzZXRWaXNpYmxlKHQpP24uZGF0YXNldDpudWxsfWZ1bmN0aW9uIHhzKGUpe3JldHVybihlLnNjYWxlfHx7fSkuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlP0NzKGUpOlNzKGUpfWZ1bmN0aW9uIFNzKGUpe2xldHtzY2FsZTp0PXt9LGZpbGw6bn09ZSxyPWRzKG4sdCk7aWYoUChyKSl7bGV0IGU9dC5pc0hvcml6b250YWwoKTtyZXR1cm57eDplP3I6bnVsbCx5OmU/bnVsbDpyfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBDcyhlKXtsZXR7c2NhbGU6dCxmaWxsOm59PWUscj10Lm9wdGlvbnMsaT10LmdldExhYmVscygpLmxlbmd0aCxhPXIucmV2ZXJzZT90Lm1heDp0Lm1pbixvPWZzKG4sdCxhKSxzPVtdO2lmKHIuZ3JpZC5jaXJjdWxhcil7bGV0IGU9dC5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoMCxhKTtyZXR1cm4gbmV3IHZzKHt4OmUueCx5OmUueSxyYWRpdXM6dC5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShvKX0pfWZvcihsZXQgZT0wO2U8aTsrK2Upcy5wdXNoKHQuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKGUsbykpO3JldHVybiBzfWZ1bmN0aW9uIHdzKGUsdCxuKXtsZXQgcj15cyh0KSx7Y2hhcnQ6aSxpbmRleDphLGxpbmU6byxzY2FsZTpzLGF4aXM6Y309dCxsPW8ub3B0aW9ucyx1PWwuZmlsbCxkPWwuYmFja2dyb3VuZENvbG9yLHthYm92ZTpmPWQsYmVsb3c6cD1kfT11fHx7fSxtPWFpKGksaS5nZXREYXRhc2V0TWV0YShhKSk7ciYmby5wb2ludHMubGVuZ3RoJiYoRG4oZSxuKSxUcyhlLHtsaW5lOm8sdGFyZ2V0OnIsYWJvdmU6ZixiZWxvdzpwLGFyZWE6bixzY2FsZTpzLGF4aXM6YyxjbGlwOm19KSxPbihlKSl9ZnVuY3Rpb24gVHMoZSx0KXtsZXR7bGluZTpuLHRhcmdldDpyLGFib3ZlOmksYmVsb3c6YSxhcmVhOm8sc2NhbGU6cyxjbGlwOmN9PXQsbD1uLl9sb29wP2BhbmdsZWA6dC5heGlzO2Uuc2F2ZSgpO2xldCB1PWE7YSE9PWkmJihsPT09YHhgPyhFcyhlLHIsby50b3ApLE9zKGUse2xpbmU6bix0YXJnZXQ6cixjb2xvcjppLHNjYWxlOnMscHJvcGVydHk6bCxjbGlwOmN9KSxlLnJlc3RvcmUoKSxlLnNhdmUoKSxFcyhlLHIsby5ib3R0b20pKTpsPT09YHlgJiYoRHMoZSxyLG8ubGVmdCksT3MoZSx7bGluZTpuLHRhcmdldDpyLGNvbG9yOmEsc2NhbGU6cyxwcm9wZXJ0eTpsLGNsaXA6Y30pLGUucmVzdG9yZSgpLGUuc2F2ZSgpLERzKGUscixvLnJpZ2h0KSx1PWkpKSxPcyhlLHtsaW5lOm4sdGFyZ2V0OnIsY29sb3I6dSxzY2FsZTpzLHByb3BlcnR5OmwsY2xpcDpjfSksZS5yZXN0b3JlKCl9ZnVuY3Rpb24gRXMoZSx0LG4pe2xldHtzZWdtZW50czpyLHBvaW50czppfT10LGE9ITAsbz0hMTtlLmJlZ2luUGF0aCgpO2ZvcihsZXQgcyBvZiByKXtsZXR7c3RhcnQ6cixlbmQ6Y309cyxsPWlbcl0sdT1pW2lzKHIsYyxpKV07YT8oZS5tb3ZlVG8obC54LGwueSksYT0hMSk6KGUubGluZVRvKGwueCxuKSxlLmxpbmVUbyhsLngsbC55KSksbz0hIXQucGF0aFNlZ21lbnQoZSxzLHttb3ZlOm99KSxvP2UuY2xvc2VQYXRoKCk6ZS5saW5lVG8odS54LG4pfWUubGluZVRvKHQuZmlyc3QoKS54LG4pLGUuY2xvc2VQYXRoKCksZS5jbGlwKCl9ZnVuY3Rpb24gRHMoZSx0LG4pe2xldHtzZWdtZW50czpyLHBvaW50czppfT10LGE9ITAsbz0hMTtlLmJlZ2luUGF0aCgpO2ZvcihsZXQgcyBvZiByKXtsZXR7c3RhcnQ6cixlbmQ6Y309cyxsPWlbcl0sdT1pW2lzKHIsYyxpKV07YT8oZS5tb3ZlVG8obC54LGwueSksYT0hMSk6KGUubGluZVRvKG4sbC55KSxlLmxpbmVUbyhsLngsbC55KSksbz0hIXQucGF0aFNlZ21lbnQoZSxzLHttb3ZlOm99KSxvP2UuY2xvc2VQYXRoKCk6ZS5saW5lVG8obix1LnkpfWUubGluZVRvKG4sdC5maXJzdCgpLnkpLGUuY2xvc2VQYXRoKCksZS5jbGlwKCl9ZnVuY3Rpb24gT3MoZSx0KXtsZXR7bGluZTpuLHRhcmdldDpyLHByb3BlcnR5OmksY29sb3I6YSxzY2FsZTpvLGNsaXA6c309dCxjPXRzKG4scixpKTtmb3IobGV0e3NvdXJjZTp0LHRhcmdldDpsLHN0YXJ0OnUsZW5kOmR9b2YgYyl7bGV0e3N0eWxlOntiYWNrZ3JvdW5kQ29sb3I6Yz1hfT17fX09dCxmPXIhPT0hMDtlLnNhdmUoKSxlLmZpbGxTdHlsZT1jLGtzKGUsbyxzLGYmJm5zKGksdSxkKSksZS5iZWdpblBhdGgoKTtsZXQgcD0hIW4ucGF0aFNlZ21lbnQoZSx0KSxtO2lmKGYpe3A/ZS5jbG9zZVBhdGgoKTpBcyhlLHIsZCxpKTtsZXQgdD0hIXIucGF0aFNlZ21lbnQoZSxsLHttb3ZlOnAscmV2ZXJzZTohMH0pO209cCYmdCxtfHxBcyhlLHIsdSxpKX1lLmNsb3NlUGF0aCgpLGUuZmlsbChtP2BldmVub2RkYDpgbm9uemVyb2ApLGUucmVzdG9yZSgpfX1mdW5jdGlvbiBrcyhlLHQsbixyKXtsZXQgaT10LmNoYXJ0LmNoYXJ0QXJlYSx7cHJvcGVydHk6YSxzdGFydDpvLGVuZDpzfT1yfHx7fTtpZihhPT09YHhgfHxhPT09YHlgKXtsZXQgdCxyLGMsbDthPT09YHhgPyh0PW8scj1pLnRvcCxjPXMsbD1pLmJvdHRvbSk6KHQ9aS5sZWZ0LHI9byxjPWkucmlnaHQsbD1zKSxlLmJlZ2luUGF0aCgpLG4mJih0PU1hdGgubWF4KHQsbi5sZWZ0KSxjPU1hdGgubWluKGMsbi5yaWdodCkscj1NYXRoLm1heChyLG4udG9wKSxsPU1hdGgubWluKGwsbi5ib3R0b20pKSxlLnJlY3QodCxyLGMtdCxsLXIpLGUuY2xpcCgpfX1mdW5jdGlvbiBBcyhlLHQsbixyKXtsZXQgaT10LmludGVycG9sYXRlKG4scik7aSYmZS5saW5lVG8oaS54LGkueSl9dmFyIGpzPXtpZDpgZmlsbGVyYCxhZnRlckRhdGFzZXRzVXBkYXRlKGUsdCxuKXtsZXQgcj0oZS5kYXRhLmRhdGFzZXRzfHxbXSkubGVuZ3RoLGk9W10sYSxvLHMsYztmb3Iobz0wO288cjsrK28pYT1lLmdldERhdGFzZXRNZXRhKG8pLHM9YS5kYXRhc2V0LGM9bnVsbCxzJiZzLm9wdGlvbnMmJnMgaW5zdGFuY2VvZiBRbyYmKGM9e3Zpc2libGU6ZS5pc0RhdGFzZXRWaXNpYmxlKG8pLGluZGV4Om8sZmlsbDpscyhzLG8sciksY2hhcnQ6ZSxheGlzOmEuY29udHJvbGxlci5vcHRpb25zLmluZGV4QXhpcyxzY2FsZTphLnZTY2FsZSxsaW5lOnN9KSxhLiRmaWxsZXI9YyxpLnB1c2goYyk7Zm9yKG89MDtvPHI7KytvKWM9aVtvXSwhKCFjfHxjLmZpbGw9PT0hMSkmJihjLmZpbGw9Y3MoaSxvLG4ucHJvcGFnYXRlKSl9LGJlZm9yZURyYXcoZSx0LG4pe2xldCByPW4uZHJhd1RpbWU9PT1gYmVmb3JlRHJhd2AsaT1lLmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKSxhPWUuY2hhcnRBcmVhO2ZvcihsZXQgdD1pLmxlbmd0aC0xO3Q+PTA7LS10KXtsZXQgbj1pW3RdLiRmaWxsZXI7biYmKG4ubGluZS51cGRhdGVDb250cm9sUG9pbnRzKGEsbi5heGlzKSxyJiZuLmZpbGwmJndzKGUuY3R4LG4sYSkpfX0sYmVmb3JlRGF0YXNldHNEcmF3KGUsdCxuKXtpZihuLmRyYXdUaW1lIT09YGJlZm9yZURhdGFzZXRzRHJhd2ApcmV0dXJuO2xldCByPWUuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpO2ZvcihsZXQgdD1yLmxlbmd0aC0xO3Q+PTA7LS10KXtsZXQgbj1yW3RdLiRmaWxsZXI7c3MobikmJndzKGUuY3R4LG4sZS5jaGFydEFyZWEpfX0sYmVmb3JlRGF0YXNldERyYXcoZSx0LG4pe2xldCByPXQubWV0YS4kZmlsbGVyOyFzcyhyKXx8bi5kcmF3VGltZSE9PWBiZWZvcmVEYXRhc2V0RHJhd2B8fHdzKGUuY3R4LHIsZS5jaGFydEFyZWEpfSxkZWZhdWx0czp7cHJvcGFnYXRlOiEwLGRyYXdUaW1lOmBiZWZvcmVEYXRhc2V0RHJhd2B9fSxNcz0oZSx0KT0+e2xldHtib3hIZWlnaHQ6bj10LGJveFdpZHRoOnI9dH09ZTtyZXR1cm4gZS51c2VQb2ludFN0eWxlJiYobj1NYXRoLm1pbihuLHQpLHI9ZS5wb2ludFN0eWxlV2lkdGh8fE1hdGgubWluKHIsdCkpLHtib3hXaWR0aDpyLGJveEhlaWdodDpuLGl0ZW1IZWlnaHQ6TWF0aC5tYXgodCxuKX19LE5zPShlLHQpPT5lIT09bnVsbCYmdCE9PW51bGwmJmUuZGF0YXNldEluZGV4PT09dC5kYXRhc2V0SW5kZXgmJmUuaW5kZXg9PT10LmluZGV4LFBzPWNsYXNzIGV4dGVuZHMgQWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9hZGRlZD0hMSx0aGlzLmxlZ2VuZEhpdEJveGVzPVtdLHRoaXMuX2hvdmVyZWRJdGVtPW51bGwsdGhpcy5kb3VnaG51dE1vZGU9ITEsdGhpcy5jaGFydD1lLmNoYXJ0LHRoaXMub3B0aW9ucz1lLm9wdGlvbnMsdGhpcy5jdHg9ZS5jdHgsdGhpcy5sZWdlbmRJdGVtcz12b2lkIDAsdGhpcy5jb2x1bW5TaXplcz12b2lkIDAsdGhpcy5saW5lV2lkdGhzPXZvaWQgMCx0aGlzLm1heEhlaWdodD12b2lkIDAsdGhpcy5tYXhXaWR0aD12b2lkIDAsdGhpcy50b3A9dm9pZCAwLHRoaXMuYm90dG9tPXZvaWQgMCx0aGlzLmxlZnQ9dm9pZCAwLHRoaXMucmlnaHQ9dm9pZCAwLHRoaXMuaGVpZ2h0PXZvaWQgMCx0aGlzLndpZHRoPXZvaWQgMCx0aGlzLl9tYXJnaW5zPXZvaWQgMCx0aGlzLnBvc2l0aW9uPXZvaWQgMCx0aGlzLndlaWdodD12b2lkIDAsdGhpcy5mdWxsU2l6ZT12b2lkIDB9dXBkYXRlKGUsdCxuKXt0aGlzLm1heFdpZHRoPWUsdGhpcy5tYXhIZWlnaHQ9dCx0aGlzLl9tYXJnaW5zPW4sdGhpcy5zZXREaW1lbnNpb25zKCksdGhpcy5idWlsZExhYmVscygpLHRoaXMuZml0KCl9c2V0RGltZW5zaW9ucygpe3RoaXMuaXNIb3Jpem9udGFsKCk/KHRoaXMud2lkdGg9dGhpcy5tYXhXaWR0aCx0aGlzLmxlZnQ9dGhpcy5fbWFyZ2lucy5sZWZ0LHRoaXMucmlnaHQ9dGhpcy53aWR0aCk6KHRoaXMuaGVpZ2h0PXRoaXMubWF4SGVpZ2h0LHRoaXMudG9wPXRoaXMuX21hcmdpbnMudG9wLHRoaXMuYm90dG9tPXRoaXMuaGVpZ2h0KX1idWlsZExhYmVscygpe2xldCBlPXRoaXMub3B0aW9ucy5sYWJlbHN8fHt9LHQ9TChlLmdlbmVyYXRlTGFiZWxzLFt0aGlzLmNoYXJ0XSx0aGlzKXx8W107ZS5maWx0ZXImJih0PXQuZmlsdGVyKHQ9PmUuZmlsdGVyKHQsdGhpcy5jaGFydC5kYXRhKSkpLGUuc29ydCYmKHQ9dC5zb3J0KCh0LG4pPT5lLnNvcnQodCxuLHRoaXMuY2hhcnQuZGF0YSkpKSx0aGlzLm9wdGlvbnMucmV2ZXJzZSYmdC5yZXZlcnNlKCksdGhpcy5sZWdlbmRJdGVtcz10fWZpdCgpe2xldHtvcHRpb25zOmUsY3R4OnR9PXRoaXM7aWYoIWUuZGlzcGxheSl7dGhpcy53aWR0aD10aGlzLmhlaWdodD0wO3JldHVybn1sZXQgbj1lLmxhYmVscyxyPUoobi5mb250KSxpPXIuc2l6ZSxhPXRoaXMuX2NvbXB1dGVUaXRsZUhlaWdodCgpLHtib3hXaWR0aDpvLGl0ZW1IZWlnaHQ6c309TXMobixpKSxjLGw7dC5mb250PXIuc3RyaW5nLHRoaXMuaXNIb3Jpem9udGFsKCk/KGM9dGhpcy5tYXhXaWR0aCxsPXRoaXMuX2ZpdFJvd3MoYSxpLG8scykrMTApOihsPXRoaXMubWF4SGVpZ2h0LGM9dGhpcy5fZml0Q29scyhhLHIsbyxzKSsxMCksdGhpcy53aWR0aD1NYXRoLm1pbihjLGUubWF4V2lkdGh8fHRoaXMubWF4V2lkdGgpLHRoaXMuaGVpZ2h0PU1hdGgubWluKGwsZS5tYXhIZWlnaHR8fHRoaXMubWF4SGVpZ2h0KX1fZml0Um93cyhlLHQsbixyKXtsZXR7Y3R4OmksbWF4V2lkdGg6YSxvcHRpb25zOntsYWJlbHM6e3BhZGRpbmc6b319fT10aGlzLHM9dGhpcy5sZWdlbmRIaXRCb3hlcz1bXSxjPXRoaXMubGluZVdpZHRocz1bMF0sbD1yK28sdT1lO2kudGV4dEFsaWduPWBsZWZ0YCxpLnRleHRCYXNlbGluZT1gbWlkZGxlYDtsZXQgZD0tMSxmPS1sO3JldHVybiB0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goKGUscCk9PntsZXQgbT1uK3QvMitpLm1lYXN1cmVUZXh0KGUudGV4dCkud2lkdGg7KHA9PT0wfHxjW2MubGVuZ3RoLTFdK20rMipvPmEpJiYodSs9bCxjW2MubGVuZ3RoLShwPjA/MDoxKV09MCxmKz1sLGQrKyksc1twXT17bGVmdDowLHRvcDpmLHJvdzpkLHdpZHRoOm0saGVpZ2h0OnJ9LGNbYy5sZW5ndGgtMV0rPW0rb30pLHV9X2ZpdENvbHMoZSx0LG4scil7bGV0e2N0eDppLG1heEhlaWdodDphLG9wdGlvbnM6e2xhYmVsczp7cGFkZGluZzpvfX19PXRoaXMscz10aGlzLmxlZ2VuZEhpdEJveGVzPVtdLGM9dGhpcy5jb2x1bW5TaXplcz1bXSxsPWEtZSx1PW8sZD0wLGY9MCxwPTAsbT0wO3JldHVybiB0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goKGUsYSk9PntsZXR7aXRlbVdpZHRoOmgsaXRlbUhlaWdodDpnfT1GcyhuLHQsaSxlLHIpO2E+MCYmZitnKzIqbz5sJiYodSs9ZCtvLGMucHVzaCh7d2lkdGg6ZCxoZWlnaHQ6Zn0pLHArPWQrbyxtKyssZD1mPTApLHNbYV09e2xlZnQ6cCx0b3A6Zixjb2w6bSx3aWR0aDpoLGhlaWdodDpnfSxkPU1hdGgubWF4KGQsaCksZis9ZytvfSksdSs9ZCxjLnB1c2goe3dpZHRoOmQsaGVpZ2h0OmZ9KSx1fWFkanVzdEhpdEJveGVzKCl7aWYoIXRoaXMub3B0aW9ucy5kaXNwbGF5KXJldHVybjtsZXQgZT10aGlzLl9jb21wdXRlVGl0bGVIZWlnaHQoKSx7bGVnZW5kSGl0Qm94ZXM6dCxvcHRpb25zOnthbGlnbjpuLGxhYmVsczp7cGFkZGluZzpyfSxydGw6aX19PXRoaXMsYT1IcihpLHRoaXMubGVmdCx0aGlzLndpZHRoKTtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKXtsZXQgaT0wLG89VyhuLHRoaXMubGVmdCtyLHRoaXMucmlnaHQtdGhpcy5saW5lV2lkdGhzW2ldKTtmb3IobGV0IHMgb2YgdClpIT09cy5yb3cmJihpPXMucm93LG89VyhuLHRoaXMubGVmdCtyLHRoaXMucmlnaHQtdGhpcy5saW5lV2lkdGhzW2ldKSkscy50b3ArPXRoaXMudG9wK2UrcixzLmxlZnQ9YS5sZWZ0Rm9yTHRyKGEueChvKSxzLndpZHRoKSxvKz1zLndpZHRoK3J9ZWxzZXtsZXQgaT0wLG89VyhuLHRoaXMudG9wK2Urcix0aGlzLmJvdHRvbS10aGlzLmNvbHVtblNpemVzW2ldLmhlaWdodCk7Zm9yKGxldCBzIG9mIHQpcy5jb2whPT1pJiYoaT1zLmNvbCxvPVcobix0aGlzLnRvcCtlK3IsdGhpcy5ib3R0b20tdGhpcy5jb2x1bW5TaXplc1tpXS5oZWlnaHQpKSxzLnRvcD1vLHMubGVmdCs9dGhpcy5sZWZ0K3Iscy5sZWZ0PWEubGVmdEZvckx0cihhLngocy5sZWZ0KSxzLndpZHRoKSxvKz1zLmhlaWdodCtyfX1pc0hvcml6b250YWwoKXtyZXR1cm4gdGhpcy5vcHRpb25zLnBvc2l0aW9uPT09YHRvcGB8fHRoaXMub3B0aW9ucy5wb3NpdGlvbj09PWBib3R0b21gfWRyYXcoKXtpZih0aGlzLm9wdGlvbnMuZGlzcGxheSl7bGV0IGU9dGhpcy5jdHg7RG4oZSx0aGlzKSx0aGlzLl9kcmF3KCksT24oZSl9fV9kcmF3KCl7bGV0e29wdGlvbnM6ZSxjb2x1bW5TaXplczp0LGxpbmVXaWR0aHM6bixjdHg6cn09dGhpcyx7YWxpZ246aSxsYWJlbHM6YX09ZSxvPUcuY29sb3Iscz1IcihlLnJ0bCx0aGlzLmxlZnQsdGhpcy53aWR0aCksYz1KKGEuZm9udCkse3BhZGRpbmc6bH09YSx1PWMuc2l6ZSxkPXUvMixmO3RoaXMuZHJhd1RpdGxlKCksci50ZXh0QWxpZ249cy50ZXh0QWxpZ24oYGxlZnRgKSxyLnRleHRCYXNlbGluZT1gbWlkZGxlYCxyLmxpbmVXaWR0aD0uNSxyLmZvbnQ9Yy5zdHJpbmc7bGV0e2JveFdpZHRoOnAsYm94SGVpZ2h0Om0saXRlbUhlaWdodDpofT1NcyhhLHUpLGc9ZnVuY3Rpb24oZSx0LG4pe2lmKGlzTmFOKHApfHxwPD0wfHxpc05hTihtKXx8bTwwKXJldHVybjtyLnNhdmUoKTtsZXQgaT1JKG4ubGluZVdpZHRoLDEpO2lmKHIuZmlsbFN0eWxlPUkobi5maWxsU3R5bGUsbyksci5saW5lQ2FwPUkobi5saW5lQ2FwLGBidXR0YCksci5saW5lRGFzaE9mZnNldD1JKG4ubGluZURhc2hPZmZzZXQsMCksci5saW5lSm9pbj1JKG4ubGluZUpvaW4sYG1pdGVyYCksci5saW5lV2lkdGg9aSxyLnN0cm9rZVN0eWxlPUkobi5zdHJva2VTdHlsZSxvKSxyLnNldExpbmVEYXNoKEkobi5saW5lRGFzaCxbXSkpLGEudXNlUG9pbnRTdHlsZSl7bGV0IG89e3JhZGl1czptKk1hdGguU1FSVDIvMixwb2ludFN0eWxlOm4ucG9pbnRTdHlsZSxyb3RhdGlvbjpuLnJvdGF0aW9uLGJvcmRlcldpZHRoOml9LGM9cy54UGx1cyhlLHAvMiksbD10K2Q7RW4ocixvLGMsbCxhLnBvaW50U3R5bGVXaWR0aCYmcCl9ZWxzZXtsZXQgYT10K01hdGgubWF4KCh1LW0pLzIsMCksbz1zLmxlZnRGb3JMdHIoZSxwKSxjPUhuKG4uYm9yZGVyUmFkaXVzKTtyLmJlZ2luUGF0aCgpLE9iamVjdC52YWx1ZXMoYykuc29tZShlPT5lIT09MCk/Rm4ocix7eDpvLHk6YSx3OnAsaDptLHJhZGl1czpjfSk6ci5yZWN0KG8sYSxwLG0pLHIuZmlsbCgpLGkhPT0wJiZyLnN0cm9rZSgpfXIucmVzdG9yZSgpfSxfPWZ1bmN0aW9uKGUsdCxuKXtQbihyLG4udGV4dCxlLHQraC8yLGMse3N0cmlrZXRocm91Z2g6bi5oaWRkZW4sdGV4dEFsaWduOnMudGV4dEFsaWduKG4udGV4dEFsaWduKX0pfSx2PXRoaXMuaXNIb3Jpem9udGFsKCkseT10aGlzLl9jb21wdXRlVGl0bGVIZWlnaHQoKTtmPXY/e3g6VyhpLHRoaXMubGVmdCtsLHRoaXMucmlnaHQtblswXSkseTp0aGlzLnRvcCtsK3ksbGluZTowfTp7eDp0aGlzLmxlZnQrbCx5OlcoaSx0aGlzLnRvcCt5K2wsdGhpcy5ib3R0b20tdFswXS5oZWlnaHQpLGxpbmU6MH0sVXIodGhpcy5jdHgsZS50ZXh0RGlyZWN0aW9uKTtsZXQgYj1oK2w7dGhpcy5sZWdlbmRJdGVtcy5mb3JFYWNoKChvLHUpPT57ci5zdHJva2VTdHlsZT1vLmZvbnRDb2xvcixyLmZpbGxTdHlsZT1vLmZvbnRDb2xvcjtsZXQgbT1yLm1lYXN1cmVUZXh0KG8udGV4dCkud2lkdGgsaD1zLnRleHRBbGlnbihvLnRleHRBbGlnbnx8PWEudGV4dEFsaWduKSx4PXArZCttLFM9Zi54LEM9Zi55O3Muc2V0V2lkdGgodGhpcy53aWR0aCksdj91PjAmJlMreCtsPnRoaXMucmlnaHQmJihDPWYueSs9YixmLmxpbmUrKyxTPWYueD1XKGksdGhpcy5sZWZ0K2wsdGhpcy5yaWdodC1uW2YubGluZV0pKTp1PjAmJkMrYj50aGlzLmJvdHRvbSYmKFM9Zi54PVMrdFtmLmxpbmVdLndpZHRoK2wsZi5saW5lKyssQz1mLnk9VyhpLHRoaXMudG9wK3krbCx0aGlzLmJvdHRvbS10W2YubGluZV0uaGVpZ2h0KSk7bGV0IHc9cy54KFMpO2lmKGcodyxDLG8pLFM9SnQoaCxTK3ArZCx2P1MreDp0aGlzLnJpZ2h0LGUucnRsKSxfKHMueChTKSxDLG8pLHYpZi54Kz14K2w7ZWxzZSBpZih0eXBlb2Ygby50ZXh0IT1gc3RyaW5nYCl7bGV0IGU9Yy5saW5lSGVpZ2h0O2YueSs9UnMobyxlKStsfWVsc2UgZi55Kz1ifSksV3IodGhpcy5jdHgsZS50ZXh0RGlyZWN0aW9uKX1kcmF3VGl0bGUoKXtsZXQgZT10aGlzLm9wdGlvbnMsdD1lLnRpdGxlLG49Sih0LmZvbnQpLHI9cSh0LnBhZGRpbmcpO2lmKCF0LmRpc3BsYXkpcmV0dXJuO2xldCBpPUhyKGUucnRsLHRoaXMubGVmdCx0aGlzLndpZHRoKSxhPXRoaXMuY3R4LG89dC5wb3NpdGlvbixzPW4uc2l6ZS8yLGM9ci50b3ArcyxsLHU9dGhpcy5sZWZ0LGQ9dGhpcy53aWR0aDtpZih0aGlzLmlzSG9yaXpvbnRhbCgpKWQ9TWF0aC5tYXgoLi4udGhpcy5saW5lV2lkdGhzKSxsPXRoaXMudG9wK2MsdT1XKGUuYWxpZ24sdSx0aGlzLnJpZ2h0LWQpO2Vsc2V7bGV0IHQ9dGhpcy5jb2x1bW5TaXplcy5yZWR1Y2UoKGUsdCk9Pk1hdGgubWF4KGUsdC5oZWlnaHQpLDApO2w9YytXKGUuYWxpZ24sdGhpcy50b3AsdGhpcy5ib3R0b20tdC1lLmxhYmVscy5wYWRkaW5nLXRoaXMuX2NvbXB1dGVUaXRsZUhlaWdodCgpKX1sZXQgZj1XKG8sdSx1K2QpO2EudGV4dEFsaWduPWkudGV4dEFsaWduKHF0KG8pKSxhLnRleHRCYXNlbGluZT1gbWlkZGxlYCxhLnN0cm9rZVN0eWxlPXQuY29sb3IsYS5maWxsU3R5bGU9dC5jb2xvcixhLmZvbnQ9bi5zdHJpbmcsUG4oYSx0LnRleHQsZixsLG4pfV9jb21wdXRlVGl0bGVIZWlnaHQoKXtsZXQgZT10aGlzLm9wdGlvbnMudGl0bGUsdD1KKGUuZm9udCksbj1xKGUucGFkZGluZyk7cmV0dXJuIGUuZGlzcGxheT90LmxpbmVIZWlnaHQrbi5oZWlnaHQ6MH1fZ2V0TGVnZW5kSXRlbUF0KGUsdCl7bGV0IG4scixpO2lmKEZ0KGUsdGhpcy5sZWZ0LHRoaXMucmlnaHQpJiZGdCh0LHRoaXMudG9wLHRoaXMuYm90dG9tKSl7Zm9yKGk9dGhpcy5sZWdlbmRIaXRCb3hlcyxuPTA7bjxpLmxlbmd0aDsrK24paWYocj1pW25dLEZ0KGUsci5sZWZ0LHIubGVmdCtyLndpZHRoKSYmRnQodCxyLnRvcCxyLnRvcCtyLmhlaWdodCkpcmV0dXJuIHRoaXMubGVnZW5kSXRlbXNbbl19cmV0dXJuIG51bGx9aGFuZGxlRXZlbnQoZSl7bGV0IHQ9dGhpcy5vcHRpb25zO2lmKCF6cyhlLnR5cGUsdCkpcmV0dXJuO2xldCBuPXRoaXMuX2dldExlZ2VuZEl0ZW1BdChlLngsZS55KTtpZihlLnR5cGU9PT1gbW91c2Vtb3ZlYHx8ZS50eXBlPT09YG1vdXNlb3V0YCl7bGV0IHI9dGhpcy5faG92ZXJlZEl0ZW0saT1OcyhyLG4pO3ImJiFpJiZMKHQub25MZWF2ZSxbZSxyLHRoaXNdLHRoaXMpLHRoaXMuX2hvdmVyZWRJdGVtPW4sbiYmIWkmJkwodC5vbkhvdmVyLFtlLG4sdGhpc10sdGhpcyl9ZWxzZSBuJiZMKHQub25DbGljayxbZSxuLHRoaXNdLHRoaXMpfX07ZnVuY3Rpb24gRnMoZSx0LG4scixpKXtyZXR1cm57aXRlbVdpZHRoOklzKHIsZSx0LG4pLGl0ZW1IZWlnaHQ6THMoaSxyLHQubGluZUhlaWdodCl9fWZ1bmN0aW9uIElzKGUsdCxuLHIpe2xldCBpPWUudGV4dDtyZXR1cm4gaSYmdHlwZW9mIGkhPWBzdHJpbmdgJiYoaT1pLnJlZHVjZSgoZSx0KT0+ZS5sZW5ndGg+dC5sZW5ndGg/ZTp0KSksdCtuLnNpemUvMityLm1lYXN1cmVUZXh0KGkpLndpZHRofWZ1bmN0aW9uIExzKGUsdCxuKXtsZXQgcj1lO3JldHVybiB0eXBlb2YgdC50ZXh0IT1gc3RyaW5nYCYmKHI9UnModCxuKSkscn1mdW5jdGlvbiBScyhlLHQpe3JldHVybiB0KihlLnRleHQ/ZS50ZXh0Lmxlbmd0aDowKX1mdW5jdGlvbiB6cyhlLHQpe3JldHVybiEhKChlPT09YG1vdXNlbW92ZWB8fGU9PT1gbW91c2VvdXRgKSYmKHQub25Ib3Zlcnx8dC5vbkxlYXZlKXx8dC5vbkNsaWNrJiYoZT09PWBjbGlja2B8fGU9PT1gbW91c2V1cGApKX12YXIgQnM9e2lkOmBsZWdlbmRgLF9lbGVtZW50OlBzLHN0YXJ0KGUsdCxuKXtsZXQgcj1lLmxlZ2VuZD1uZXcgUHMoe2N0eDplLmN0eCxvcHRpb25zOm4sY2hhcnQ6ZX0pO29hLmNvbmZpZ3VyZShlLHIsbiksb2EuYWRkQm94KGUscil9LHN0b3AoZSl7b2EucmVtb3ZlQm94KGUsZS5sZWdlbmQpLGRlbGV0ZSBlLmxlZ2VuZH0sYmVmb3JlVXBkYXRlKGUsdCxuKXtsZXQgcj1lLmxlZ2VuZDtvYS5jb25maWd1cmUoZSxyLG4pLHIub3B0aW9ucz1ufSxhZnRlclVwZGF0ZShlKXtsZXQgdD1lLmxlZ2VuZDt0LmJ1aWxkTGFiZWxzKCksdC5hZGp1c3RIaXRCb3hlcygpfSxhZnRlckV2ZW50KGUsdCl7dC5yZXBsYXl8fGUubGVnZW5kLmhhbmRsZUV2ZW50KHQuZXZlbnQpfSxkZWZhdWx0czp7ZGlzcGxheTohMCxwb3NpdGlvbjpgdG9wYCxhbGlnbjpgY2VudGVyYCxmdWxsU2l6ZTohMCxyZXZlcnNlOiExLHdlaWdodDoxZTMsb25DbGljayhlLHQsbil7bGV0IHI9dC5kYXRhc2V0SW5kZXgsaT1uLmNoYXJ0O2kuaXNEYXRhc2V0VmlzaWJsZShyKT8oaS5oaWRlKHIpLHQuaGlkZGVuPSEwKTooaS5zaG93KHIpLHQuaGlkZGVuPSExKX0sb25Ib3ZlcjpudWxsLG9uTGVhdmU6bnVsbCxsYWJlbHM6e2NvbG9yOmU9PmUuY2hhcnQub3B0aW9ucy5jb2xvcixib3hXaWR0aDo0MCxwYWRkaW5nOjEwLGdlbmVyYXRlTGFiZWxzKGUpe2xldCB0PWUuZGF0YS5kYXRhc2V0cyx7bGFiZWxzOnt1c2VQb2ludFN0eWxlOm4scG9pbnRTdHlsZTpyLHRleHRBbGlnbjppLGNvbG9yOmEsdXNlQm9yZGVyUmFkaXVzOm8sYm9yZGVyUmFkaXVzOnN9fT1lLmxlZ2VuZC5vcHRpb25zO3JldHVybiBlLl9nZXRTb3J0ZWREYXRhc2V0TWV0YXMoKS5tYXAoZT0+e2xldCBjPWUuY29udHJvbGxlci5nZXRTdHlsZShuPzA6dm9pZCAwKSxsPXEoYy5ib3JkZXJXaWR0aCk7cmV0dXJue3RleHQ6dFtlLmluZGV4XS5sYWJlbCxmaWxsU3R5bGU6Yy5iYWNrZ3JvdW5kQ29sb3IsZm9udENvbG9yOmEsaGlkZGVuOiFlLnZpc2libGUsbGluZUNhcDpjLmJvcmRlckNhcFN0eWxlLGxpbmVEYXNoOmMuYm9yZGVyRGFzaCxsaW5lRGFzaE9mZnNldDpjLmJvcmRlckRhc2hPZmZzZXQsbGluZUpvaW46Yy5ib3JkZXJKb2luU3R5bGUsbGluZVdpZHRoOihsLndpZHRoK2wuaGVpZ2h0KS80LHN0cm9rZVN0eWxlOmMuYm9yZGVyQ29sb3IscG9pbnRTdHlsZTpyfHxjLnBvaW50U3R5bGUscm90YXRpb246Yy5yb3RhdGlvbix0ZXh0QWxpZ246aXx8Yy50ZXh0QWxpZ24sYm9yZGVyUmFkaXVzOm8mJihzfHxjLmJvcmRlclJhZGl1cyksZGF0YXNldEluZGV4OmUuaW5kZXh9fSx0aGlzKX19LHRpdGxlOntjb2xvcjplPT5lLmNoYXJ0Lm9wdGlvbnMuY29sb3IsZGlzcGxheTohMSxwb3NpdGlvbjpgY2VudGVyYCx0ZXh0OmBgfX0sZGVzY3JpcHRvcnM6e19zY3JpcHRhYmxlOmU9PiFlLnN0YXJ0c1dpdGgoYG9uYCksbGFiZWxzOntfc2NyaXB0YWJsZTplPT4hW2BnZW5lcmF0ZUxhYmVsc2AsYGZpbHRlcmAsYHNvcnRgXS5pbmNsdWRlcyhlKX19fSxWcz17YXZlcmFnZShlKXtpZighZS5sZW5ndGgpcmV0dXJuITE7bGV0IHQsbixyPW5ldyBTZXQsaT0wLGE9MDtmb3IodD0wLG49ZS5sZW5ndGg7dDxuOysrdCl7bGV0IG49ZVt0XS5lbGVtZW50O2lmKG4mJm4uaGFzVmFsdWUoKSl7bGV0IGU9bi50b29sdGlwUG9zaXRpb24oKTtyLmFkZChlLngpLGkrPWUueSwrK2F9fXJldHVybiBhPT09MHx8ci5zaXplPT09MD8hMTp7eDpbLi4ucl0ucmVkdWNlKChlLHQpPT5lK3QpL3Iuc2l6ZSx5OmkvYX19LG5lYXJlc3QoZSx0KXtpZighZS5sZW5ndGgpcmV0dXJuITE7bGV0IG49dC54LHI9dC55LGk9MS8wLGEsbyxzO2ZvcihhPTAsbz1lLmxlbmd0aDthPG87KythKXtsZXQgbj1lW2FdLmVsZW1lbnQ7aWYobiYmbi5oYXNWYWx1ZSgpKXtsZXQgZT1qdCh0LG4uZ2V0Q2VudGVyUG9pbnQoKSk7ZTxpJiYoaT1lLHM9bil9fWlmKHMpe2xldCBlPXMudG9vbHRpcFBvc2l0aW9uKCk7bj1lLngscj1lLnl9cmV0dXJue3g6bix5OnJ9fX07ZnVuY3Rpb24gWihlLHQpe3JldHVybiB0JiYoTSh0KT9BcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLHQpOmUucHVzaCh0KSksZX1mdW5jdGlvbiBIcyhlKXtyZXR1cm4odHlwZW9mIGU9PWBzdHJpbmdgfHxlIGluc3RhbmNlb2YgU3RyaW5nKSYmZS5pbmRleE9mKGAKYCk+LTE/ZS5zcGxpdChgCmApOmV9ZnVuY3Rpb24gVXMoZSx0KXtsZXR7ZWxlbWVudDpuLGRhdGFzZXRJbmRleDpyLGluZGV4Oml9PXQsYT1lLmdldERhdGFzZXRNZXRhKHIpLmNvbnRyb2xsZXIse2xhYmVsOm8sdmFsdWU6c309YS5nZXRMYWJlbEFuZFZhbHVlKGkpO3JldHVybntjaGFydDplLGxhYmVsOm8scGFyc2VkOmEuZ2V0UGFyc2VkKGkpLHJhdzplLmRhdGEuZGF0YXNldHNbcl0uZGF0YVtpXSxmb3JtYXR0ZWRWYWx1ZTpzLGRhdGFzZXQ6YS5nZXREYXRhc2V0KCksZGF0YUluZGV4OmksZGF0YXNldEluZGV4OnIsZWxlbWVudDpufX1mdW5jdGlvbiBXcyhlLHQpe2xldCBuPWUuY2hhcnQuY3R4LHtib2R5OnIsZm9vdGVyOmksdGl0bGU6YX09ZSx7Ym94V2lkdGg6byxib3hIZWlnaHQ6c309dCxjPUoodC5ib2R5Rm9udCksbD1KKHQudGl0bGVGb250KSx1PUoodC5mb290ZXJGb250KSxkPWEubGVuZ3RoLGY9aS5sZW5ndGgscD1yLmxlbmd0aCxtPXEodC5wYWRkaW5nKSxoPW0uaGVpZ2h0LGc9MCxfPXIucmVkdWNlKChlLHQpPT5lK3QuYmVmb3JlLmxlbmd0aCt0LmxpbmVzLmxlbmd0aCt0LmFmdGVyLmxlbmd0aCwwKTtpZihfKz1lLmJlZm9yZUJvZHkubGVuZ3RoK2UuYWZ0ZXJCb2R5Lmxlbmd0aCxkJiYoaCs9ZCpsLmxpbmVIZWlnaHQrKGQtMSkqdC50aXRsZVNwYWNpbmcrdC50aXRsZU1hcmdpbkJvdHRvbSksXyl7bGV0IGU9dC5kaXNwbGF5Q29sb3JzP01hdGgubWF4KHMsYy5saW5lSGVpZ2h0KTpjLmxpbmVIZWlnaHQ7aCs9cCplKyhfLXApKmMubGluZUhlaWdodCsoXy0xKSp0LmJvZHlTcGFjaW5nfWYmJihoKz10LmZvb3Rlck1hcmdpblRvcCtmKnUubGluZUhlaWdodCsoZi0xKSp0LmZvb3RlclNwYWNpbmcpO2xldCB2PTAseT1mdW5jdGlvbihlKXtnPU1hdGgubWF4KGcsbi5tZWFzdXJlVGV4dChlKS53aWR0aCt2KX07cmV0dXJuIG4uc2F2ZSgpLG4uZm9udD1sLnN0cmluZyxSKGUudGl0bGUseSksbi5mb250PWMuc3RyaW5nLFIoZS5iZWZvcmVCb2R5LmNvbmNhdChlLmFmdGVyQm9keSkseSksdj10LmRpc3BsYXlDb2xvcnM/bysyK3QuYm94UGFkZGluZzowLFIocixlPT57UihlLmJlZm9yZSx5KSxSKGUubGluZXMseSksUihlLmFmdGVyLHkpfSksdj0wLG4uZm9udD11LnN0cmluZyxSKGUuZm9vdGVyLHkpLG4ucmVzdG9yZSgpLGcrPW0ud2lkdGgse3dpZHRoOmcsaGVpZ2h0Omh9fWZ1bmN0aW9uIEdzKGUsdCl7bGV0e3k6bixoZWlnaHQ6cn09dDtyZXR1cm4gbjxyLzI/YHRvcGA6bj5lLmhlaWdodC1yLzI/YGJvdHRvbWA6YGNlbnRlcmB9ZnVuY3Rpb24gS3MoZSx0LG4scil7bGV0e3g6aSx3aWR0aDphfT1yLG89bi5jYXJldFNpemUrbi5jYXJldFBhZGRpbmc7aWYoZT09PWBsZWZ0YCYmaSthK28+dC53aWR0aHx8ZT09PWByaWdodGAmJmktYS1vPDApcmV0dXJuITB9ZnVuY3Rpb24gcXMoZSx0LG4scil7bGV0e3g6aSx3aWR0aDphfT1uLHt3aWR0aDpvLGNoYXJ0QXJlYTp7bGVmdDpzLHJpZ2h0OmN9fT1lLGw9YGNlbnRlcmA7cmV0dXJuIHI9PT1gY2VudGVyYD9sPWk8PShzK2MpLzI/YGxlZnRgOmByaWdodGA6aTw9YS8yP2w9YGxlZnRgOmk+PW8tYS8yJiYobD1gcmlnaHRgKSxLcyhsLGUsdCxuKSYmKGw9YGNlbnRlcmApLGx9ZnVuY3Rpb24gSnMoZSx0LG4pe2xldCByPW4ueUFsaWdufHx0LnlBbGlnbnx8R3MoZSxuKTtyZXR1cm57eEFsaWduOm4ueEFsaWdufHx0LnhBbGlnbnx8cXMoZSx0LG4scikseUFsaWduOnJ9fWZ1bmN0aW9uIFlzKGUsdCl7bGV0e3g6bix3aWR0aDpyfT1lO3JldHVybiB0PT09YHJpZ2h0YD9uLT1yOnQ9PT1gY2VudGVyYCYmKG4tPXIvMiksbn1mdW5jdGlvbiBYcyhlLHQsbil7bGV0e3k6cixoZWlnaHQ6aX09ZTtyZXR1cm4gdD09PWB0b3BgP3IrPW46ci09dD09PWBib3R0b21gP2krbjppLzIscn1mdW5jdGlvbiBacyhlLHQsbixyKXtsZXR7Y2FyZXRTaXplOmksY2FyZXRQYWRkaW5nOmEsY29ybmVyUmFkaXVzOm99PWUse3hBbGlnbjpzLHlBbGlnbjpjfT1uLGw9aSthLHt0b3BMZWZ0OnUsdG9wUmlnaHQ6ZCxib3R0b21MZWZ0OmYsYm90dG9tUmlnaHQ6cH09SG4obyksbT1Zcyh0LHMpLGg9WHModCxjLGwpO3JldHVybiBjPT09YGNlbnRlcmA/cz09PWBsZWZ0YD9tKz1sOnM9PT1gcmlnaHRgJiYobS09bCk6cz09PWBsZWZ0YD9tLT1NYXRoLm1heCh1LGYpK2k6cz09PWByaWdodGAmJihtKz1NYXRoLm1heChkLHApK2kpLHt4OlUobSwwLHIud2lkdGgtdC53aWR0aCkseTpVKGgsMCxyLmhlaWdodC10LmhlaWdodCl9fWZ1bmN0aW9uIFFzKGUsdCxuKXtsZXQgcj1xKG4ucGFkZGluZyk7cmV0dXJuIHQ9PT1gY2VudGVyYD9lLngrZS53aWR0aC8yOnQ9PT1gcmlnaHRgP2UueCtlLndpZHRoLXIucmlnaHQ6ZS54K3IubGVmdH1mdW5jdGlvbiAkcyhlKXtyZXR1cm4gWihbXSxIcyhlKSl9ZnVuY3Rpb24gZWMoZSx0LG4pe3JldHVybiBHbihlLHt0b29sdGlwOnQsdG9vbHRpcEl0ZW1zOm4sdHlwZTpgdG9vbHRpcGB9KX1mdW5jdGlvbiB0YyhlLHQpe2xldCBuPXQmJnQuZGF0YXNldCYmdC5kYXRhc2V0LnRvb2x0aXAmJnQuZGF0YXNldC50b29sdGlwLmNhbGxiYWNrcztyZXR1cm4gbj9lLm92ZXJyaWRlKG4pOmV9dmFyIG5jPXtiZWZvcmVUaXRsZTpBLHRpdGxlKGUpe2lmKGUubGVuZ3RoPjApe2xldCB0PWVbMF0sbj10LmNoYXJ0LmRhdGEubGFiZWxzLHI9bj9uLmxlbmd0aDowO2lmKHRoaXMmJnRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm1vZGU9PT1gZGF0YXNldGApcmV0dXJuIHQuZGF0YXNldC5sYWJlbHx8YGA7aWYodC5sYWJlbClyZXR1cm4gdC5sYWJlbDtpZihyPjAmJnQuZGF0YUluZGV4PHIpcmV0dXJuIG5bdC5kYXRhSW5kZXhdfXJldHVybmBgfSxhZnRlclRpdGxlOkEsYmVmb3JlQm9keTpBLGJlZm9yZUxhYmVsOkEsbGFiZWwoZSl7aWYodGhpcyYmdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubW9kZT09PWBkYXRhc2V0YClyZXR1cm4gZS5sYWJlbCtgOiBgK2UuZm9ybWF0dGVkVmFsdWV8fGUuZm9ybWF0dGVkVmFsdWU7bGV0IHQ9ZS5kYXRhc2V0LmxhYmVsfHxgYDt0JiYodCs9YDogYCk7bGV0IG49ZS5mb3JtYXR0ZWRWYWx1ZTtyZXR1cm4gaihuKXx8KHQrPW4pLHR9LGxhYmVsQ29sb3IoZSl7bGV0IHQ9ZS5jaGFydC5nZXREYXRhc2V0TWV0YShlLmRhdGFzZXRJbmRleCkuY29udHJvbGxlci5nZXRTdHlsZShlLmRhdGFJbmRleCk7cmV0dXJue2JvcmRlckNvbG9yOnQuYm9yZGVyQ29sb3IsYmFja2dyb3VuZENvbG9yOnQuYmFja2dyb3VuZENvbG9yLGJvcmRlcldpZHRoOnQuYm9yZGVyV2lkdGgsYm9yZGVyRGFzaDp0LmJvcmRlckRhc2gsYm9yZGVyRGFzaE9mZnNldDp0LmJvcmRlckRhc2hPZmZzZXQsYm9yZGVyUmFkaXVzOjB9fSxsYWJlbFRleHRDb2xvcigpe3JldHVybiB0aGlzLm9wdGlvbnMuYm9keUNvbG9yfSxsYWJlbFBvaW50U3R5bGUoZSl7bGV0IHQ9ZS5jaGFydC5nZXREYXRhc2V0TWV0YShlLmRhdGFzZXRJbmRleCkuY29udHJvbGxlci5nZXRTdHlsZShlLmRhdGFJbmRleCk7cmV0dXJue3BvaW50U3R5bGU6dC5wb2ludFN0eWxlLHJvdGF0aW9uOnQucm90YXRpb259fSxhZnRlckxhYmVsOkEsYWZ0ZXJCb2R5OkEsYmVmb3JlRm9vdGVyOkEsZm9vdGVyOkEsYWZ0ZXJGb290ZXI6QX07ZnVuY3Rpb24gUShlLHQsbixyKXtsZXQgaT1lW3RdLmNhbGwobixyKTtyZXR1cm4gaT09PXZvaWQgMD9uY1t0XS5jYWxsKG4scik6aX12YXIgcmM9Y2xhc3MgZXh0ZW5kcyBBYXtzdGF0aWMgcG9zaXRpb25lcnM9VnM7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm9wYWNpdHk9MCx0aGlzLl9hY3RpdmU9W10sdGhpcy5fZXZlbnRQb3NpdGlvbj12b2lkIDAsdGhpcy5fc2l6ZT12b2lkIDAsdGhpcy5fY2FjaGVkQW5pbWF0aW9ucz12b2lkIDAsdGhpcy5fdG9vbHRpcEl0ZW1zPVtdLHRoaXMuJGFuaW1hdGlvbnM9dm9pZCAwLHRoaXMuJGNvbnRleHQ9dm9pZCAwLHRoaXMuY2hhcnQ9ZS5jaGFydCx0aGlzLm9wdGlvbnM9ZS5vcHRpb25zLHRoaXMuZGF0YVBvaW50cz12b2lkIDAsdGhpcy50aXRsZT12b2lkIDAsdGhpcy5iZWZvcmVCb2R5PXZvaWQgMCx0aGlzLmJvZHk9dm9pZCAwLHRoaXMuYWZ0ZXJCb2R5PXZvaWQgMCx0aGlzLmZvb3Rlcj12b2lkIDAsdGhpcy54QWxpZ249dm9pZCAwLHRoaXMueUFsaWduPXZvaWQgMCx0aGlzLng9dm9pZCAwLHRoaXMueT12b2lkIDAsdGhpcy5oZWlnaHQ9dm9pZCAwLHRoaXMud2lkdGg9dm9pZCAwLHRoaXMuY2FyZXRYPXZvaWQgMCx0aGlzLmNhcmV0WT12b2lkIDAsdGhpcy5sYWJlbENvbG9ycz12b2lkIDAsdGhpcy5sYWJlbFBvaW50U3R5bGVzPXZvaWQgMCx0aGlzLmxhYmVsVGV4dENvbG9ycz12b2lkIDB9aW5pdGlhbGl6ZShlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLl9jYWNoZWRBbmltYXRpb25zPXZvaWQgMCx0aGlzLiRjb250ZXh0PXZvaWQgMH1fcmVzb2x2ZUFuaW1hdGlvbnMoKXtsZXQgZT10aGlzLl9jYWNoZWRBbmltYXRpb25zO2lmKGUpcmV0dXJuIGU7bGV0IHQ9dGhpcy5jaGFydCxuPXRoaXMub3B0aW9ucy5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxyPW4uZW5hYmxlZCYmdC5vcHRpb25zLmFuaW1hdGlvbiYmbi5hbmltYXRpb25zLGk9bmV3IGxpKHRoaXMuY2hhcnQscik7cmV0dXJuIHIuX2NhY2hlYWJsZSYmKHRoaXMuX2NhY2hlZEFuaW1hdGlvbnM9T2JqZWN0LmZyZWV6ZShpKSksaX1nZXRDb250ZXh0KCl7cmV0dXJuIHRoaXMuJGNvbnRleHR8fD1lYyh0aGlzLmNoYXJ0LmdldENvbnRleHQoKSx0aGlzLHRoaXMuX3Rvb2x0aXBJdGVtcyl9Z2V0VGl0bGUoZSx0KXtsZXR7Y2FsbGJhY2tzOm59PXQscj1RKG4sYGJlZm9yZVRpdGxlYCx0aGlzLGUpLGk9UShuLGB0aXRsZWAsdGhpcyxlKSxhPVEobixgYWZ0ZXJUaXRsZWAsdGhpcyxlKSxvPVtdO3JldHVybiBvPVoobyxIcyhyKSksbz1aKG8sSHMoaSkpLG89WihvLEhzKGEpKSxvfWdldEJlZm9yZUJvZHkoZSx0KXtyZXR1cm4gJHMoUSh0LmNhbGxiYWNrcyxgYmVmb3JlQm9keWAsdGhpcyxlKSl9Z2V0Qm9keShlLHQpe2xldHtjYWxsYmFja3M6bn09dCxyPVtdO3JldHVybiBSKGUsZT0+e2xldCB0PXtiZWZvcmU6W10sbGluZXM6W10sYWZ0ZXI6W119LGk9dGMobixlKTtaKHQuYmVmb3JlLEhzKFEoaSxgYmVmb3JlTGFiZWxgLHRoaXMsZSkpKSxaKHQubGluZXMsUShpLGBsYWJlbGAsdGhpcyxlKSksWih0LmFmdGVyLEhzKFEoaSxgYWZ0ZXJMYWJlbGAsdGhpcyxlKSkpLHIucHVzaCh0KX0pLHJ9Z2V0QWZ0ZXJCb2R5KGUsdCl7cmV0dXJuICRzKFEodC5jYWxsYmFja3MsYGFmdGVyQm9keWAsdGhpcyxlKSl9Z2V0Rm9vdGVyKGUsdCl7bGV0e2NhbGxiYWNrczpufT10LHI9UShuLGBiZWZvcmVGb290ZXJgLHRoaXMsZSksaT1RKG4sYGZvb3RlcmAsdGhpcyxlKSxhPVEobixgYWZ0ZXJGb290ZXJgLHRoaXMsZSksbz1bXTtyZXR1cm4gbz1aKG8sSHMocikpLG89WihvLEhzKGkpKSxvPVoobyxIcyhhKSksb31fY3JlYXRlSXRlbXMoZSl7bGV0IHQ9dGhpcy5fYWN0aXZlLG49dGhpcy5jaGFydC5kYXRhLHI9W10saT1bXSxhPVtdLG89W10scyxjO2ZvcihzPTAsYz10Lmxlbmd0aDtzPGM7KytzKW8ucHVzaChVcyh0aGlzLmNoYXJ0LHRbc10pKTtyZXR1cm4gZS5maWx0ZXImJihvPW8uZmlsdGVyKCh0LHIsaSk9PmUuZmlsdGVyKHQscixpLG4pKSksZS5pdGVtU29ydCYmKG89by5zb3J0KCh0LHIpPT5lLml0ZW1Tb3J0KHQscixuKSkpLFIobyx0PT57bGV0IG49dGMoZS5jYWxsYmFja3MsdCk7ci5wdXNoKFEobixgbGFiZWxDb2xvcmAsdGhpcyx0KSksaS5wdXNoKFEobixgbGFiZWxQb2ludFN0eWxlYCx0aGlzLHQpKSxhLnB1c2goUShuLGBsYWJlbFRleHRDb2xvcmAsdGhpcyx0KSl9KSx0aGlzLmxhYmVsQ29sb3JzPXIsdGhpcy5sYWJlbFBvaW50U3R5bGVzPWksdGhpcy5sYWJlbFRleHRDb2xvcnM9YSx0aGlzLmRhdGFQb2ludHM9byxvfXVwZGF0ZShlLHQpe2xldCBuPXRoaXMub3B0aW9ucy5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxyPXRoaXMuX2FjdGl2ZSxpLGE9W107aWYoIXIubGVuZ3RoKXRoaXMub3BhY2l0eSE9PTAmJihpPXtvcGFjaXR5OjB9KTtlbHNle2xldCBlPVZzW24ucG9zaXRpb25dLmNhbGwodGhpcyxyLHRoaXMuX2V2ZW50UG9zaXRpb24pO2E9dGhpcy5fY3JlYXRlSXRlbXMobiksdGhpcy50aXRsZT10aGlzLmdldFRpdGxlKGEsbiksdGhpcy5iZWZvcmVCb2R5PXRoaXMuZ2V0QmVmb3JlQm9keShhLG4pLHRoaXMuYm9keT10aGlzLmdldEJvZHkoYSxuKSx0aGlzLmFmdGVyQm9keT10aGlzLmdldEFmdGVyQm9keShhLG4pLHRoaXMuZm9vdGVyPXRoaXMuZ2V0Rm9vdGVyKGEsbik7bGV0IHQ9dGhpcy5fc2l6ZT1Xcyh0aGlzLG4pLG89T2JqZWN0LmFzc2lnbih7fSxlLHQpLHM9SnModGhpcy5jaGFydCxuLG8pLGM9WnMobixvLHMsdGhpcy5jaGFydCk7dGhpcy54QWxpZ249cy54QWxpZ24sdGhpcy55QWxpZ249cy55QWxpZ24saT17b3BhY2l0eToxLHg6Yy54LHk6Yy55LHdpZHRoOnQud2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LGNhcmV0WDplLngsY2FyZXRZOmUueX19dGhpcy5fdG9vbHRpcEl0ZW1zPWEsdGhpcy4kY29udGV4dD12b2lkIDAsaSYmdGhpcy5fcmVzb2x2ZUFuaW1hdGlvbnMoKS51cGRhdGUodGhpcyxpKSxlJiZuLmV4dGVybmFsJiZuLmV4dGVybmFsLmNhbGwodGhpcyx7Y2hhcnQ6dGhpcy5jaGFydCx0b29sdGlwOnRoaXMscmVwbGF5OnR9KX1kcmF3Q2FyZXQoZSx0LG4scil7bGV0IGk9dGhpcy5nZXRDYXJldFBvc2l0aW9uKGUsbixyKTt0LmxpbmVUbyhpLngxLGkueTEpLHQubGluZVRvKGkueDIsaS55MiksdC5saW5lVG8oaS54MyxpLnkzKX1nZXRDYXJldFBvc2l0aW9uKGUsdCxuKXtsZXR7eEFsaWduOnIseUFsaWduOml9PXRoaXMse2NhcmV0U2l6ZTphLGNvcm5lclJhZGl1czpvfT1uLHt0b3BMZWZ0OnMsdG9wUmlnaHQ6Yyxib3R0b21MZWZ0OmwsYm90dG9tUmlnaHQ6dX09SG4obykse3g6ZCx5OmZ9PWUse3dpZHRoOnAsaGVpZ2h0Om19PXQsaCxnLF8sdix5LGI7cmV0dXJuIGk9PT1gY2VudGVyYD8oeT1mK20vMixyPT09YGxlZnRgPyhoPWQsZz1oLWEsdj15K2EsYj15LWEpOihoPWQrcCxnPWgrYSx2PXktYSxiPXkrYSksXz1oKTooZz1yPT09YGxlZnRgP2QrTWF0aC5tYXgocyxsKSthOnI9PT1gcmlnaHRgP2QrcC1NYXRoLm1heChjLHUpLWE6dGhpcy5jYXJldFgsaT09PWB0b3BgPyh2PWYseT12LWEsaD1nLWEsXz1nK2EpOih2PWYrbSx5PXYrYSxoPWcrYSxfPWctYSksYj12KSx7eDE6aCx4MjpnLHgzOl8seTE6dix5Mjp5LHkzOmJ9fWRyYXdUaXRsZShlLHQsbil7bGV0IHI9dGhpcy50aXRsZSxpPXIubGVuZ3RoLGEsbyxzO2lmKGkpe2xldCBjPUhyKG4ucnRsLHRoaXMueCx0aGlzLndpZHRoKTtmb3IoZS54PVFzKHRoaXMsbi50aXRsZUFsaWduLG4pLHQudGV4dEFsaWduPWMudGV4dEFsaWduKG4udGl0bGVBbGlnbiksdC50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsYT1KKG4udGl0bGVGb250KSxvPW4udGl0bGVTcGFjaW5nLHQuZmlsbFN0eWxlPW4udGl0bGVDb2xvcix0LmZvbnQ9YS5zdHJpbmcscz0wO3M8aTsrK3MpdC5maWxsVGV4dChyW3NdLGMueChlLngpLGUueSthLmxpbmVIZWlnaHQvMiksZS55Kz1hLmxpbmVIZWlnaHQrbyxzKzE9PT1pJiYoZS55Kz1uLnRpdGxlTWFyZ2luQm90dG9tLW8pfX1fZHJhd0NvbG9yQm94KGUsdCxuLHIsaSl7bGV0IGE9dGhpcy5sYWJlbENvbG9yc1tuXSxvPXRoaXMubGFiZWxQb2ludFN0eWxlc1tuXSx7Ym94SGVpZ2h0OnMsYm94V2lkdGg6Y309aSxsPUooaS5ib2R5Rm9udCksdT1Rcyh0aGlzLGBsZWZ0YCxpKSxkPXIueCh1KSxmPXM8bC5saW5lSGVpZ2h0PyhsLmxpbmVIZWlnaHQtcykvMjowLHA9dC55K2Y7aWYoaS51c2VQb2ludFN0eWxlKXtsZXQgdD17cmFkaXVzOk1hdGgubWluKGMscykvMixwb2ludFN0eWxlOm8ucG9pbnRTdHlsZSxyb3RhdGlvbjpvLnJvdGF0aW9uLGJvcmRlcldpZHRoOjF9LG49ci5sZWZ0Rm9yTHRyKGQsYykrYy8yLGw9cCtzLzI7ZS5zdHJva2VTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxlLmZpbGxTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxUbihlLHQsbixsKSxlLnN0cm9rZVN0eWxlPWEuYm9yZGVyQ29sb3IsZS5maWxsU3R5bGU9YS5iYWNrZ3JvdW5kQ29sb3IsVG4oZSx0LG4sbCl9ZWxzZXtlLmxpbmVXaWR0aD1OKGEuYm9yZGVyV2lkdGgpP01hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMoYS5ib3JkZXJXaWR0aCkpOmEuYm9yZGVyV2lkdGh8fDEsZS5zdHJva2VTdHlsZT1hLmJvcmRlckNvbG9yLGUuc2V0TGluZURhc2goYS5ib3JkZXJEYXNofHxbXSksZS5saW5lRGFzaE9mZnNldD1hLmJvcmRlckRhc2hPZmZzZXR8fDA7bGV0IHQ9ci5sZWZ0Rm9yTHRyKGQsYyksbj1yLmxlZnRGb3JMdHIoci54UGx1cyhkLDEpLGMtMiksbz1IbihhLmJvcmRlclJhZGl1cyk7T2JqZWN0LnZhbHVlcyhvKS5zb21lKGU9PmUhPT0wKT8oZS5iZWdpblBhdGgoKSxlLmZpbGxTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxGbihlLHt4OnQseTpwLHc6YyxoOnMscmFkaXVzOm99KSxlLmZpbGwoKSxlLnN0cm9rZSgpLGUuZmlsbFN0eWxlPWEuYmFja2dyb3VuZENvbG9yLGUuYmVnaW5QYXRoKCksRm4oZSx7eDpuLHk6cCsxLHc6Yy0yLGg6cy0yLHJhZGl1czpvfSksZS5maWxsKCkpOihlLmZpbGxTdHlsZT1pLm11bHRpS2V5QmFja2dyb3VuZCxlLmZpbGxSZWN0KHQscCxjLHMpLGUuc3Ryb2tlUmVjdCh0LHAsYyxzKSxlLmZpbGxTdHlsZT1hLmJhY2tncm91bmRDb2xvcixlLmZpbGxSZWN0KG4scCsxLGMtMixzLTIpKX1lLmZpbGxTdHlsZT10aGlzLmxhYmVsVGV4dENvbG9yc1tuXX1kcmF3Qm9keShlLHQsbil7bGV0e2JvZHk6cn09dGhpcyx7Ym9keVNwYWNpbmc6aSxib2R5QWxpZ246YSxkaXNwbGF5Q29sb3JzOm8sYm94SGVpZ2h0OnMsYm94V2lkdGg6Yyxib3hQYWRkaW5nOmx9PW4sdT1KKG4uYm9keUZvbnQpLGQ9dS5saW5lSGVpZ2h0LGY9MCxwPUhyKG4ucnRsLHRoaXMueCx0aGlzLndpZHRoKSxtPWZ1bmN0aW9uKG4pe3QuZmlsbFRleHQobixwLngoZS54K2YpLGUueStkLzIpLGUueSs9ZCtpfSxoPXAudGV4dEFsaWduKGEpLGcsXyx2LHksYix4LFM7Zm9yKHQudGV4dEFsaWduPWEsdC50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsdC5mb250PXUuc3RyaW5nLGUueD1Rcyh0aGlzLGgsbiksdC5maWxsU3R5bGU9bi5ib2R5Q29sb3IsUih0aGlzLmJlZm9yZUJvZHksbSksZj1vJiZoIT09YHJpZ2h0YD9hPT09YGNlbnRlcmA/Yy8yK2w6YysyK2w6MCx5PTAseD1yLmxlbmd0aDt5PHg7Kyt5KXtmb3IoZz1yW3ldLF89dGhpcy5sYWJlbFRleHRDb2xvcnNbeV0sdC5maWxsU3R5bGU9XyxSKGcuYmVmb3JlLG0pLHY9Zy5saW5lcyxvJiZ2Lmxlbmd0aCYmKHRoaXMuX2RyYXdDb2xvckJveCh0LGUseSxwLG4pLGQ9TWF0aC5tYXgodS5saW5lSGVpZ2h0LHMpKSxiPTAsUz12Lmxlbmd0aDtiPFM7KytiKW0odltiXSksZD11LmxpbmVIZWlnaHQ7UihnLmFmdGVyLG0pfWY9MCxkPXUubGluZUhlaWdodCxSKHRoaXMuYWZ0ZXJCb2R5LG0pLGUueS09aX1kcmF3Rm9vdGVyKGUsdCxuKXtsZXQgcj10aGlzLmZvb3RlcixpPXIubGVuZ3RoLGEsbztpZihpKXtsZXQgcz1IcihuLnJ0bCx0aGlzLngsdGhpcy53aWR0aCk7Zm9yKGUueD1Rcyh0aGlzLG4uZm9vdGVyQWxpZ24sbiksZS55Kz1uLmZvb3Rlck1hcmdpblRvcCx0LnRleHRBbGlnbj1zLnRleHRBbGlnbihuLmZvb3RlckFsaWduKSx0LnRleHRCYXNlbGluZT1gbWlkZGxlYCxhPUoobi5mb290ZXJGb250KSx0LmZpbGxTdHlsZT1uLmZvb3RlckNvbG9yLHQuZm9udD1hLnN0cmluZyxvPTA7bzxpOysrbyl0LmZpbGxUZXh0KHJbb10scy54KGUueCksZS55K2EubGluZUhlaWdodC8yKSxlLnkrPWEubGluZUhlaWdodCtuLmZvb3RlclNwYWNpbmd9fWRyYXdCYWNrZ3JvdW5kKGUsdCxuLHIpe2xldHt4QWxpZ246aSx5QWxpZ246YX09dGhpcyx7eDpvLHk6c309ZSx7d2lkdGg6YyxoZWlnaHQ6bH09bix7dG9wTGVmdDp1LHRvcFJpZ2h0OmQsYm90dG9tTGVmdDpmLGJvdHRvbVJpZ2h0OnB9PUhuKHIuY29ybmVyUmFkaXVzKTt0LmZpbGxTdHlsZT1yLmJhY2tncm91bmRDb2xvcix0LnN0cm9rZVN0eWxlPXIuYm9yZGVyQ29sb3IsdC5saW5lV2lkdGg9ci5ib3JkZXJXaWR0aCx0LmJlZ2luUGF0aCgpLHQubW92ZVRvKG8rdSxzKSxhPT09YHRvcGAmJnRoaXMuZHJhd0NhcmV0KGUsdCxuLHIpLHQubGluZVRvKG8rYy1kLHMpLHQucXVhZHJhdGljQ3VydmVUbyhvK2MscyxvK2MscytkKSxhPT09YGNlbnRlcmAmJmk9PT1gcmlnaHRgJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvK2MscytsLXApLHQucXVhZHJhdGljQ3VydmVUbyhvK2MscytsLG8rYy1wLHMrbCksYT09PWBib3R0b21gJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvK2YscytsKSx0LnF1YWRyYXRpY0N1cnZlVG8obyxzK2wsbyxzK2wtZiksYT09PWBjZW50ZXJgJiZpPT09YGxlZnRgJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvLHMrdSksdC5xdWFkcmF0aWNDdXJ2ZVRvKG8scyxvK3UscyksdC5jbG9zZVBhdGgoKSx0LmZpbGwoKSxyLmJvcmRlcldpZHRoPjAmJnQuc3Ryb2tlKCl9X3VwZGF0ZUFuaW1hdGlvblRhcmdldChlKXtsZXQgdD10aGlzLmNoYXJ0LG49dGhpcy4kYW5pbWF0aW9ucyxyPW4mJm4ueCxpPW4mJm4ueTtpZihyfHxpKXtsZXQgbj1Wc1tlLnBvc2l0aW9uXS5jYWxsKHRoaXMsdGhpcy5fYWN0aXZlLHRoaXMuX2V2ZW50UG9zaXRpb24pO2lmKCFuKXJldHVybjtsZXQgYT10aGlzLl9zaXplPVdzKHRoaXMsZSksbz1PYmplY3QuYXNzaWduKHt9LG4sdGhpcy5fc2l6ZSkscz1Kcyh0LGUsbyksYz1acyhlLG8scyx0KTsoci5fdG8hPT1jLnh8fGkuX3RvIT09Yy55KSYmKHRoaXMueEFsaWduPXMueEFsaWduLHRoaXMueUFsaWduPXMueUFsaWduLHRoaXMud2lkdGg9YS53aWR0aCx0aGlzLmhlaWdodD1hLmhlaWdodCx0aGlzLmNhcmV0WD1uLngsdGhpcy5jYXJldFk9bi55LHRoaXMuX3Jlc29sdmVBbmltYXRpb25zKCkudXBkYXRlKHRoaXMsYykpfX1fd2lsbFJlbmRlcigpe3JldHVybiEhdGhpcy5vcGFjaXR5fWRyYXcoZSl7bGV0IHQ9dGhpcy5vcHRpb25zLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KCkpLG49dGhpcy5vcGFjaXR5O2lmKCFuKXJldHVybjt0aGlzLl91cGRhdGVBbmltYXRpb25UYXJnZXQodCk7bGV0IHI9e3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSxpPXt4OnRoaXMueCx5OnRoaXMueX07bj1NYXRoLmFicyhuKTwuMDAxPzA6bjtsZXQgYT1xKHQucGFkZGluZyksbz10aGlzLnRpdGxlLmxlbmd0aHx8dGhpcy5iZWZvcmVCb2R5Lmxlbmd0aHx8dGhpcy5ib2R5Lmxlbmd0aHx8dGhpcy5hZnRlckJvZHkubGVuZ3RofHx0aGlzLmZvb3Rlci5sZW5ndGg7dC5lbmFibGVkJiZvJiYoZS5zYXZlKCksZS5nbG9iYWxBbHBoYT1uLHRoaXMuZHJhd0JhY2tncm91bmQoaSxlLHIsdCksVXIoZSx0LnRleHREaXJlY3Rpb24pLGkueSs9YS50b3AsdGhpcy5kcmF3VGl0bGUoaSxlLHQpLHRoaXMuZHJhd0JvZHkoaSxlLHQpLHRoaXMuZHJhd0Zvb3RlcihpLGUsdCksV3IoZSx0LnRleHREaXJlY3Rpb24pLGUucmVzdG9yZSgpKX1nZXRBY3RpdmVFbGVtZW50cygpe3JldHVybiB0aGlzLl9hY3RpdmV8fFtdfXNldEFjdGl2ZUVsZW1lbnRzKGUsdCl7bGV0IG49dGhpcy5fYWN0aXZlLHI9ZS5tYXAoKHtkYXRhc2V0SW5kZXg6ZSxpbmRleDp0fSk9PntsZXQgbj10aGlzLmNoYXJ0LmdldERhdGFzZXRNZXRhKGUpO2lmKCFuKXRocm93IEVycm9yKGBDYW5ub3QgZmluZCBhIGRhdGFzZXQgYXQgaW5kZXggYCtlKTtyZXR1cm57ZGF0YXNldEluZGV4OmUsZWxlbWVudDpuLmRhdGFbdF0saW5kZXg6dH19KSxpPSFaZShuLHIpLGE9dGhpcy5fcG9zaXRpb25DaGFuZ2VkKHIsdCk7KGl8fGEpJiYodGhpcy5fYWN0aXZlPXIsdGhpcy5fZXZlbnRQb3NpdGlvbj10LHRoaXMuX2lnbm9yZVJlcGxheUV2ZW50cz0hMCx0aGlzLnVwZGF0ZSghMCkpfWhhbmRsZUV2ZW50KGUsdCxuPSEwKXtpZih0JiZ0aGlzLl9pZ25vcmVSZXBsYXlFdmVudHMpcmV0dXJuITE7dGhpcy5faWdub3JlUmVwbGF5RXZlbnRzPSExO2xldCByPXRoaXMub3B0aW9ucyxpPXRoaXMuX2FjdGl2ZXx8W10sYT10aGlzLl9nZXRBY3RpdmVFbGVtZW50cyhlLGksdCxuKSxvPXRoaXMuX3Bvc2l0aW9uQ2hhbmdlZChhLGUpLHM9dHx8IVplKGEsaSl8fG87cmV0dXJuIHMmJih0aGlzLl9hY3RpdmU9YSwoci5lbmFibGVkfHxyLmV4dGVybmFsKSYmKHRoaXMuX2V2ZW50UG9zaXRpb249e3g6ZS54LHk6ZS55fSx0aGlzLnVwZGF0ZSghMCx0KSkpLHN9X2dldEFjdGl2ZUVsZW1lbnRzKGUsdCxuLHIpe2xldCBpPXRoaXMub3B0aW9ucztpZihlLnR5cGU9PT1gbW91c2VvdXRgKXJldHVybltdO2lmKCFyKXJldHVybiB0LmZpbHRlcihlPT50aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZS5kYXRhc2V0SW5kZXhdJiZ0aGlzLmNoYXJ0LmdldERhdGFzZXRNZXRhKGUuZGF0YXNldEluZGV4KS5jb250cm9sbGVyLmdldFBhcnNlZChlLmluZGV4KSE9PXZvaWQgMCk7bGV0IGE9dGhpcy5jaGFydC5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKGUsaS5tb2RlLGksbik7cmV0dXJuIGkucmV2ZXJzZSYmYS5yZXZlcnNlKCksYX1fcG9zaXRpb25DaGFuZ2VkKGUsdCl7bGV0e2NhcmV0WDpuLGNhcmV0WTpyLG9wdGlvbnM6aX09dGhpcyxhPVZzW2kucG9zaXRpb25dLmNhbGwodGhpcyxlLHQpO3JldHVybiBhIT09ITEmJihuIT09YS54fHxyIT09YS55KX19LGljPXtpZDpgdG9vbHRpcGAsX2VsZW1lbnQ6cmMscG9zaXRpb25lcnM6VnMsYWZ0ZXJJbml0KGUsdCxuKXtuJiYoZS50b29sdGlwPW5ldyByYyh7Y2hhcnQ6ZSxvcHRpb25zOm59KSl9LGJlZm9yZVVwZGF0ZShlLHQsbil7ZS50b29sdGlwJiZlLnRvb2x0aXAuaW5pdGlhbGl6ZShuKX0scmVzZXQoZSx0LG4pe2UudG9vbHRpcCYmZS50b29sdGlwLmluaXRpYWxpemUobil9LGFmdGVyRHJhdyhlKXtsZXQgdD1lLnRvb2x0aXA7aWYodCYmdC5fd2lsbFJlbmRlcigpKXtsZXQgbj17dG9vbHRpcDp0fTtpZihlLm5vdGlmeVBsdWdpbnMoYGJlZm9yZVRvb2x0aXBEcmF3YCx7Li4ubixjYW5jZWxhYmxlOiEwfSk9PT0hMSlyZXR1cm47dC5kcmF3KGUuY3R4KSxlLm5vdGlmeVBsdWdpbnMoYGFmdGVyVG9vbHRpcERyYXdgLG4pfX0sYWZ0ZXJFdmVudChlLHQpe2lmKGUudG9vbHRpcCl7bGV0IG49dC5yZXBsYXk7ZS50b29sdGlwLmhhbmRsZUV2ZW50KHQuZXZlbnQsbix0LmluQ2hhcnRBcmVhKSYmKHQuY2hhbmdlZD0hMCl9fSxkZWZhdWx0czp7ZW5hYmxlZDohMCxleHRlcm5hbDpudWxsLHBvc2l0aW9uOmBhdmVyYWdlYCxiYWNrZ3JvdW5kQ29sb3I6YHJnYmEoMCwwLDAsMC44KWAsdGl0bGVDb2xvcjpgI2ZmZmAsdGl0bGVGb250Ont3ZWlnaHQ6YGJvbGRgfSx0aXRsZVNwYWNpbmc6Mix0aXRsZU1hcmdpbkJvdHRvbTo2LHRpdGxlQWxpZ246YGxlZnRgLGJvZHlDb2xvcjpgI2ZmZmAsYm9keVNwYWNpbmc6Mixib2R5Rm9udDp7fSxib2R5QWxpZ246YGxlZnRgLGZvb3RlckNvbG9yOmAjZmZmYCxmb290ZXJTcGFjaW5nOjIsZm9vdGVyTWFyZ2luVG9wOjYsZm9vdGVyRm9udDp7d2VpZ2h0OmBib2xkYH0sZm9vdGVyQWxpZ246YGxlZnRgLHBhZGRpbmc6NixjYXJldFBhZGRpbmc6MixjYXJldFNpemU6NSxjb3JuZXJSYWRpdXM6Nixib3hIZWlnaHQ6KGUsdCk9PnQuYm9keUZvbnQuc2l6ZSxib3hXaWR0aDooZSx0KT0+dC5ib2R5Rm9udC5zaXplLG11bHRpS2V5QmFja2dyb3VuZDpgI2ZmZmAsZGlzcGxheUNvbG9yczohMCxib3hQYWRkaW5nOjAsYm9yZGVyQ29sb3I6YHJnYmEoMCwwLDAsMClgLGJvcmRlcldpZHRoOjAsYW5pbWF0aW9uOntkdXJhdGlvbjo0MDAsZWFzaW5nOmBlYXNlT3V0UXVhcnRgfSxhbmltYXRpb25zOntudW1iZXJzOnt0eXBlOmBudW1iZXJgLHByb3BlcnRpZXM6W2B4YCxgeWAsYHdpZHRoYCxgaGVpZ2h0YCxgY2FyZXRYYCxgY2FyZXRZYF19LG9wYWNpdHk6e2Vhc2luZzpgbGluZWFyYCxkdXJhdGlvbjoyMDB9fSxjYWxsYmFja3M6bmN9LGRlZmF1bHRSb3V0ZXM6e2JvZHlGb250OmBmb250YCxmb290ZXJGb250OmBmb250YCx0aXRsZUZvbnQ6YGZvbnRgfSxkZXNjcmlwdG9yczp7X3NjcmlwdGFibGU6ZT0+ZSE9PWBmaWx0ZXJgJiZlIT09YGl0ZW1Tb3J0YCYmZSE9PWBleHRlcm5hbGAsX2luZGV4YWJsZTohMSxjYWxsYmFja3M6e19zY3JpcHRhYmxlOiExLF9pbmRleGFibGU6ITF9LGFuaW1hdGlvbjp7X2ZhbGxiYWNrOiExfSxhbmltYXRpb25zOntfZmFsbGJhY2s6YGFuaW1hdGlvbmB9fSxhZGRpdGlvbmFsT3B0aW9uU2NvcGVzOltgaW50ZXJhY3Rpb25gXX0sYWM9KGUsdCxuLHIpPT4odHlwZW9mIHQ9PWBzdHJpbmdgPyhuPWUucHVzaCh0KS0xLHIudW5zaGlmdCh7aW5kZXg6bixsYWJlbDp0fSkpOmlzTmFOKHQpJiYobj1udWxsKSxuKTtmdW5jdGlvbiBvYyhlLHQsbixyKXtsZXQgaT1lLmluZGV4T2YodCk7cmV0dXJuIGk9PT0tMT9hYyhlLHQsbixyKTppPT09ZS5sYXN0SW5kZXhPZih0KT9pOm59dmFyIHNjPShlLHQpPT5lPT09bnVsbD9udWxsOlUoTWF0aC5yb3VuZChlKSwwLHQpO2Z1bmN0aW9uIGNjKGUpe2xldCB0PXRoaXMuZ2V0TGFiZWxzKCk7cmV0dXJuIGU+PTAmJmU8dC5sZW5ndGg/dFtlXTplfXZhciBsYz1jbGFzcyBleHRlbmRzIFhhe3N0YXRpYyBpZD1gY2F0ZWdvcnlgO3N0YXRpYyBkZWZhdWx0cz17dGlja3M6e2NhbGxiYWNrOmNjfX07Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fdmFsdWVSYW5nZT0wLHRoaXMuX2FkZGVkTGFiZWxzPVtdfWluaXQoZSl7bGV0IHQ9dGhpcy5fYWRkZWRMYWJlbHM7aWYodC5sZW5ndGgpe2xldCBlPXRoaXMuZ2V0TGFiZWxzKCk7Zm9yKGxldHtpbmRleDpuLGxhYmVsOnJ9b2YgdCllW25dPT09ciYmZS5zcGxpY2UobiwxKTt0aGlzLl9hZGRlZExhYmVscz1bXX1zdXBlci5pbml0KGUpfXBhcnNlKGUsdCl7aWYoaihlKSlyZXR1cm4gbnVsbDtsZXQgbj10aGlzLmdldExhYmVscygpO3JldHVybiB0PWlzRmluaXRlKHQpJiZuW3RdPT09ZT90Om9jKG4sZSxJKHQsZSksdGhpcy5fYWRkZWRMYWJlbHMpLHNjKHQsbi5sZW5ndGgtMSl9ZGV0ZXJtaW5lRGF0YUxpbWl0cygpe2xldHttaW5EZWZpbmVkOmUsbWF4RGVmaW5lZDp0fT10aGlzLmdldFVzZXJCb3VuZHMoKSx7bWluOm4sbWF4OnJ9PXRoaXMuZ2V0TWluTWF4KCEwKTt0aGlzLm9wdGlvbnMuYm91bmRzPT09YHRpY2tzYCYmKGV8fChuPTApLHR8fChyPXRoaXMuZ2V0TGFiZWxzKCkubGVuZ3RoLTEpKSx0aGlzLm1pbj1uLHRoaXMubWF4PXJ9YnVpbGRUaWNrcygpe2xldCBlPXRoaXMubWluLHQ9dGhpcy5tYXgsbj10aGlzLm9wdGlvbnMub2Zmc2V0LHI9W10saT10aGlzLmdldExhYmVscygpO2k9ZT09PTAmJnQ9PT1pLmxlbmd0aC0xP2k6aS5zbGljZShlLHQrMSksdGhpcy5fdmFsdWVSYW5nZT1NYXRoLm1heChpLmxlbmd0aC0rIW4sMSksdGhpcy5fc3RhcnRWYWx1ZT10aGlzLm1pbi0obj8uNTowKTtmb3IobGV0IG49ZTtuPD10O24rKylyLnB1c2goe3ZhbHVlOm59KTtyZXR1cm4gcn1nZXRMYWJlbEZvclZhbHVlKGUpe3JldHVybiBjYy5jYWxsKHRoaXMsZSl9Y29uZmlndXJlKCl7c3VwZXIuY29uZmlndXJlKCksdGhpcy5pc0hvcml6b250YWwoKXx8KHRoaXMuX3JldmVyc2VQaXhlbHM9IXRoaXMuX3JldmVyc2VQaXhlbHMpfWdldFBpeGVsRm9yVmFsdWUoZSl7cmV0dXJuIHR5cGVvZiBlIT1gbnVtYmVyYCYmKGU9dGhpcy5wYXJzZShlKSksZT09PW51bGw/TmFOOnRoaXMuZ2V0UGl4ZWxGb3JEZWNpbWFsKChlLXRoaXMuX3N0YXJ0VmFsdWUpL3RoaXMuX3ZhbHVlUmFuZ2UpfWdldFBpeGVsRm9yVGljayhlKXtsZXQgdD10aGlzLnRpY2tzO3JldHVybiBlPDB8fGU+dC5sZW5ndGgtMT9udWxsOnRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZSh0W2VdLnZhbHVlKX1nZXRWYWx1ZUZvclBpeGVsKGUpe3JldHVybiBNYXRoLnJvdW5kKHRoaXMuX3N0YXJ0VmFsdWUrdGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwoZSkqdGhpcy5fdmFsdWVSYW5nZSl9Z2V0QmFzZVBpeGVsKCl7cmV0dXJuIHRoaXMuYm90dG9tfX07ZnVuY3Rpb24gdWMoZSx0KXtsZXQgbj1bXSx7Ym91bmRzOnIsc3RlcDppLG1pbjphLG1heDpvLHByZWNpc2lvbjpzLGNvdW50OmMsbWF4VGlja3M6bCxtYXhEaWdpdHM6dSxpbmNsdWRlQm91bmRzOmR9PWUsZj1pfHwxLHA9bC0xLHttaW46bSxtYXg6aH09dCxnPSFqKGEpLF89IWoobyksdj0haihjKSx5PShoLW0pLyh1KzEpLGI9eHQoKGgtbSkvcC9mKSpmLHgsUyxDLHc7aWYoYjwxZS0xNCYmIWcmJiFfKXJldHVyblt7dmFsdWU6bX0se3ZhbHVlOmh9XTt3PU1hdGguY2VpbChoL2IpLU1hdGguZmxvb3IobS9iKSx3PnAmJihiPXh0KHcqYi9wL2YpKmYpLGoocyl8fCh4PTEwKipzLGI9TWF0aC5jZWlsKGIqeCkveCkscj09PWB0aWNrc2A/KFM9TWF0aC5mbG9vcihtL2IpKmIsQz1NYXRoLmNlaWwoaC9iKSpiKTooUz1tLEM9aCksZyYmXyYmaSYmVHQoKG8tYSkvaSxiLzFlMyk/KHc9TWF0aC5yb3VuZChNYXRoLm1pbigoby1hKS9iLGwpKSxiPShvLWEpL3csUz1hLEM9byk6dj8oUz1nP2E6UyxDPV8/bzpDLHc9Yy0xLGI9KEMtUykvdyk6KHc9KEMtUykvYix3PWJ0KHcsTWF0aC5yb3VuZCh3KSxiLzFlMyk/TWF0aC5yb3VuZCh3KTpNYXRoLmNlaWwodykpO2xldCBUPU1hdGgubWF4KGt0KGIpLGt0KFMpKTt4PTEwKiooaihzKT9UOnMpLFM9TWF0aC5yb3VuZChTKngpL3gsQz1NYXRoLnJvdW5kKEMqeCkveDtsZXQgRT0wO2ZvcihnJiYoZCYmUyE9PWE/KG4ucHVzaCh7dmFsdWU6YX0pLFM8YSYmRSsrLGJ0KE1hdGgucm91bmQoKFMrRSpiKSp4KS94LGEsZGMoYSx5LGUpKSYmRSsrKTpTPGEmJkUrKyk7RTx3OysrRSl7bGV0IGU9TWF0aC5yb3VuZCgoUytFKmIpKngpL3g7aWYoXyYmZT5vKWJyZWFrO24ucHVzaCh7dmFsdWU6ZX0pfXJldHVybiBfJiZkJiZDIT09bz9uLmxlbmd0aCYmYnQobltuLmxlbmd0aC0xXS52YWx1ZSxvLGRjKG8seSxlKSk/bltuLmxlbmd0aC0xXS52YWx1ZT1vOm4ucHVzaCh7dmFsdWU6b30pOighX3x8Qz09PW8pJiZuLnB1c2goe3ZhbHVlOkN9KSxufWZ1bmN0aW9uIGRjKGUsdCx7aG9yaXpvbnRhbDpuLG1pblJvdGF0aW9uOnJ9KXtsZXQgaT1EdChyKSxhPShuP01hdGguc2luKGkpOk1hdGguY29zKGkpKXx8LjAwMSxvPS43NSp0KihgYCtlKS5sZW5ndGg7cmV0dXJuIE1hdGgubWluKHQvYSxvKX12YXIgZmM9Y2xhc3MgZXh0ZW5kcyBYYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnN0YXJ0PXZvaWQgMCx0aGlzLmVuZD12b2lkIDAsdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fZW5kVmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlUmFuZ2U9MH1wYXJzZShlLHQpe3JldHVybiBqKGUpfHwodHlwZW9mIGU9PWBudW1iZXJgfHxlIGluc3RhbmNlb2YgTnVtYmVyKSYmIWlzRmluaXRlKCtlKT9udWxsOitlfWhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKXtsZXR7YmVnaW5BdFplcm86ZX09dGhpcy5vcHRpb25zLHttaW5EZWZpbmVkOnQsbWF4RGVmaW5lZDpufT10aGlzLmdldFVzZXJCb3VuZHMoKSx7bWluOnIsbWF4Oml9PXRoaXMsYT1lPT5yPXQ/cjplLG89ZT0+aT1uP2k6ZTtpZihlKXtsZXQgZT15dChyKSx0PXl0KGkpO2U8MCYmdDwwP28oMCk6ZT4wJiZ0PjAmJmEoMCl9aWYocj09PWkpe2xldCB0PWk9PT0wPzE6TWF0aC5hYnMoaSouMDUpO28oaSt0KSxlfHxhKHItdCl9dGhpcy5taW49cix0aGlzLm1heD1pfWdldFRpY2tMaW1pdCgpe2xldHttYXhUaWNrc0xpbWl0OmUsc3RlcFNpemU6dH09dGhpcy5vcHRpb25zLnRpY2tzLG47cmV0dXJuIHQ/KG49TWF0aC5jZWlsKHRoaXMubWF4L3QpLU1hdGguZmxvb3IodGhpcy5taW4vdCkrMSxuPjFlMyYmKGNvbnNvbGUud2Fybihgc2NhbGVzLiR7dGhpcy5pZH0udGlja3Muc3RlcFNpemU6ICR7dH0gd291bGQgcmVzdWx0IGdlbmVyYXRpbmcgdXAgdG8gJHtufSB0aWNrcy4gTGltaXRpbmcgdG8gMTAwMC5gKSxuPTFlMykpOihuPXRoaXMuY29tcHV0ZVRpY2tMaW1pdCgpLGV8fD0xMSksZSYmKG49TWF0aC5taW4oZSxuKSksbn1jb21wdXRlVGlja0xpbWl0KCl7cmV0dXJuIDEvMH1idWlsZFRpY2tzKCl7bGV0IGU9dGhpcy5vcHRpb25zLHQ9ZS50aWNrcyxuPXRoaXMuZ2V0VGlja0xpbWl0KCk7bj1NYXRoLm1heCgyLG4pO2xldCByPXVjKHttYXhUaWNrczpuLGJvdW5kczplLmJvdW5kcyxtaW46ZS5taW4sbWF4OmUubWF4LHByZWNpc2lvbjp0LnByZWNpc2lvbixzdGVwOnQuc3RlcFNpemUsY291bnQ6dC5jb3VudCxtYXhEaWdpdHM6dGhpcy5fbWF4RGlnaXRzKCksaG9yaXpvbnRhbDp0aGlzLmlzSG9yaXpvbnRhbCgpLG1pblJvdGF0aW9uOnQubWluUm90YXRpb258fDAsaW5jbHVkZUJvdW5kczp0LmluY2x1ZGVCb3VuZHMhPT0hMX0sdGhpcy5fcmFuZ2V8fHRoaXMpO3JldHVybiBlLmJvdW5kcz09PWB0aWNrc2AmJkV0KHIsdGhpcyxgdmFsdWVgKSxlLnJldmVyc2U/KHIucmV2ZXJzZSgpLHRoaXMuc3RhcnQ9dGhpcy5tYXgsdGhpcy5lbmQ9dGhpcy5taW4pOih0aGlzLnN0YXJ0PXRoaXMubWluLHRoaXMuZW5kPXRoaXMubWF4KSxyfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMudGlja3MsdD10aGlzLm1pbixuPXRoaXMubWF4O2lmKHN1cGVyLmNvbmZpZ3VyZSgpLHRoaXMub3B0aW9ucy5vZmZzZXQmJmUubGVuZ3RoKXtsZXQgcj0obi10KS9NYXRoLm1heChlLmxlbmd0aC0xLDEpLzI7dC09cixuKz1yfXRoaXMuX3N0YXJ0VmFsdWU9dCx0aGlzLl9lbmRWYWx1ZT1uLHRoaXMuX3ZhbHVlUmFuZ2U9bi10fWdldExhYmVsRm9yVmFsdWUoZSl7cmV0dXJuIGRuKGUsdGhpcy5jaGFydC5vcHRpb25zLmxvY2FsZSx0aGlzLm9wdGlvbnMudGlja3MuZm9ybWF0KX19LHBjPWNsYXNzIGV4dGVuZHMgZmN7c3RhdGljIGlkPWBsaW5lYXJgO3N0YXRpYyBkZWZhdWx0cz17dGlja3M6e2NhbGxiYWNrOm1uLmZvcm1hdHRlcnMubnVtZXJpY319O2RldGVybWluZURhdGFMaW1pdHMoKXtsZXR7bWluOmUsbWF4OnR9PXRoaXMuZ2V0TWluTWF4KCEwKTt0aGlzLm1pbj1QKGUpP2U6MCx0aGlzLm1heD1QKHQpP3Q6MSx0aGlzLmhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKX1jb21wdXRlVGlja0xpbWl0KCl7bGV0IGU9dGhpcy5pc0hvcml6b250YWwoKSx0PWU/dGhpcy53aWR0aDp0aGlzLmhlaWdodCxuPUR0KHRoaXMub3B0aW9ucy50aWNrcy5taW5Sb3RhdGlvbikscj0oZT9NYXRoLnNpbihuKTpNYXRoLmNvcyhuKSl8fC4wMDEsaT10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKDApO3JldHVybiBNYXRoLmNlaWwodC9NYXRoLm1pbig0MCxpLmxpbmVIZWlnaHQvcikpfWdldFBpeGVsRm9yVmFsdWUoZSl7cmV0dXJuIGU9PT1udWxsP05hTjp0aGlzLmdldFBpeGVsRm9yRGVjaW1hbCgoZS10aGlzLl9zdGFydFZhbHVlKS90aGlzLl92YWx1ZVJhbmdlKX1nZXRWYWx1ZUZvclBpeGVsKGUpe3JldHVybiB0aGlzLl9zdGFydFZhbHVlK3RoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpKnRoaXMuX3ZhbHVlUmFuZ2V9fSxtYz1lPT5NYXRoLmZsb29yKHZ0KGUpKSxoYz0oZSx0KT0+MTAqKihtYyhlKSt0KTtmdW5jdGlvbiBnYyhlKXtyZXR1cm4gZS8xMCoqbWMoZSk9PTF9ZnVuY3Rpb24gX2MoZSx0LG4pe2xldCByPTEwKipuLGk9TWF0aC5mbG9vcihlL3IpO3JldHVybiBNYXRoLmNlaWwodC9yKS1pfWZ1bmN0aW9uIHZjKGUsdCl7bGV0IG49bWModC1lKTtmb3IoO19jKGUsdCxuKT4xMDspbisrO2Zvcig7X2MoZSx0LG4pPDEwOyluLS07cmV0dXJuIE1hdGgubWluKG4sbWMoZSkpfWZ1bmN0aW9uIHljKGUse21pbjp0LG1heDpufSl7dD1GKGUubWluLHQpO2xldCByPVtdLGk9bWModCksYT12Yyh0LG4pLG89YTwwPzEwKipNYXRoLmFicyhhKToxLHM9MTAqKmEsYz1pPmE/MTAqKmk6MCxsPU1hdGgucm91bmQoKHQtYykqbykvbyx1PU1hdGguZmxvb3IoKHQtYykvcy8xMCkqcyoxMCxkPU1hdGguZmxvb3IoKGwtdSkvMTAqKmEpLGY9RihlLm1pbixNYXRoLnJvdW5kKChjK3UrZCoxMCoqYSkqbykvbyk7Zm9yKDtmPG47KXIucHVzaCh7dmFsdWU6ZixtYWpvcjpnYyhmKSxzaWduaWZpY2FuZDpkfSksZD49MTA/ZD1kPDE1PzE1OjIwOmQrKyxkPj0yMCYmKGErKyxkPTIsbz1hPj0wPzE6byksZj1NYXRoLnJvdW5kKChjK3UrZCoxMCoqYSkqbykvbztsZXQgcD1GKGUubWF4LGYpO3JldHVybiByLnB1c2goe3ZhbHVlOnAsbWFqb3I6Z2MocCksc2lnbmlmaWNhbmQ6ZH0pLHJ9KGNsYXNzIGV4dGVuZHMgWGF7c3RhdGljIGlkPWBsb2dhcml0aG1pY2A7c3RhdGljIGRlZmF1bHRzPXt0aWNrczp7Y2FsbGJhY2s6bW4uZm9ybWF0dGVycy5sb2dhcml0aG1pYyxtYWpvcjp7ZW5hYmxlZDohMH19fTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnN0YXJ0PXZvaWQgMCx0aGlzLmVuZD12b2lkIDAsdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fdmFsdWVSYW5nZT0wfXBhcnNlKGUsdCl7bGV0IG49ZmMucHJvdG90eXBlLnBhcnNlLmFwcGx5KHRoaXMsW2UsdF0pO2lmKG49PT0wKXt0aGlzLl96ZXJvPSEwO3JldHVybn1yZXR1cm4gUChuKSYmbj4wP246bnVsbH1kZXRlcm1pbmVEYXRhTGltaXRzKCl7bGV0e21pbjplLG1heDp0fT10aGlzLmdldE1pbk1heCghMCk7dGhpcy5taW49UChlKT9NYXRoLm1heCgwLGUpOm51bGwsdGhpcy5tYXg9UCh0KT9NYXRoLm1heCgwLHQpOm51bGwsdGhpcy5vcHRpb25zLmJlZ2luQXRaZXJvJiYodGhpcy5femVybz0hMCksdGhpcy5femVybyYmdGhpcy5taW4hPT10aGlzLl9zdWdnZXN0ZWRNaW4mJiFQKHRoaXMuX3VzZXJNaW4pJiYodGhpcy5taW49ZT09PWhjKHRoaXMubWluLDApP2hjKHRoaXMubWluLC0xKTpoYyh0aGlzLm1pbiwwKSksdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9aGFuZGxlVGlja1JhbmdlT3B0aW9ucygpe2xldHttaW5EZWZpbmVkOmUsbWF4RGVmaW5lZDp0fT10aGlzLmdldFVzZXJCb3VuZHMoKSxuPXRoaXMubWluLHI9dGhpcy5tYXgsaT10PT5uPWU/bjp0LGE9ZT0+cj10P3I6ZTtuPT09ciYmKG48PTA/KGkoMSksYSgxMCkpOihpKGhjKG4sLTEpKSxhKGhjKHIsMSkpKSksbjw9MCYmaShoYyhyLC0xKSkscjw9MCYmYShoYyhuLDEpKSx0aGlzLm1pbj1uLHRoaXMubWF4PXJ9YnVpbGRUaWNrcygpe2xldCBlPXRoaXMub3B0aW9ucyx0PXljKHttaW46dGhpcy5fdXNlck1pbixtYXg6dGhpcy5fdXNlck1heH0sdGhpcyk7cmV0dXJuIGUuYm91bmRzPT09YHRpY2tzYCYmRXQodCx0aGlzLGB2YWx1ZWApLGUucmV2ZXJzZT8odC5yZXZlcnNlKCksdGhpcy5zdGFydD10aGlzLm1heCx0aGlzLmVuZD10aGlzLm1pbik6KHRoaXMuc3RhcnQ9dGhpcy5taW4sdGhpcy5lbmQ9dGhpcy5tYXgpLHR9Z2V0TGFiZWxGb3JWYWx1ZShlKXtyZXR1cm4gZT09PXZvaWQgMD9gMGA6ZG4oZSx0aGlzLmNoYXJ0Lm9wdGlvbnMubG9jYWxlLHRoaXMub3B0aW9ucy50aWNrcy5mb3JtYXQpfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMubWluO3N1cGVyLmNvbmZpZ3VyZSgpLHRoaXMuX3N0YXJ0VmFsdWU9dnQoZSksdGhpcy5fdmFsdWVSYW5nZT12dCh0aGlzLm1heCktdnQoZSl9Z2V0UGl4ZWxGb3JWYWx1ZShlKXtyZXR1cm4oZT09PXZvaWQgMHx8ZT09PTApJiYoZT10aGlzLm1pbiksZT09PW51bGx8fGlzTmFOKGUpP05hTjp0aGlzLmdldFBpeGVsRm9yRGVjaW1hbChlPT09dGhpcy5taW4/MDoodnQoZSktdGhpcy5fc3RhcnRWYWx1ZSkvdGhpcy5fdmFsdWVSYW5nZSl9Z2V0VmFsdWVGb3JQaXhlbChlKXtsZXQgdD10aGlzLmdldERlY2ltYWxGb3JQaXhlbChlKTtyZXR1cm4gMTAqKih0aGlzLl9zdGFydFZhbHVlK3QqdGhpcy5fdmFsdWVSYW5nZSl9fSk7ZnVuY3Rpb24gYmMoZSl7bGV0IHQ9ZS50aWNrcztpZih0LmRpc3BsYXkmJmUuZGlzcGxheSl7bGV0IGU9cSh0LmJhY2tkcm9wUGFkZGluZyk7cmV0dXJuIEkodC5mb250JiZ0LmZvbnQuc2l6ZSxHLmZvbnQuc2l6ZSkrZS5oZWlnaHR9cmV0dXJuIDB9ZnVuY3Rpb24geGMoZSx0LG4pe3JldHVybiBuPU0obik/bjpbbl0se3c6U24oZSx0LnN0cmluZyxuKSxoOm4ubGVuZ3RoKnQubGluZUhlaWdodH19ZnVuY3Rpb24gU2MoZSx0LG4scixpKXtyZXR1cm4gZT09PXJ8fGU9PT1pP3tzdGFydDp0LW4vMixlbmQ6dCtuLzJ9OmU8cnx8ZT5pP3tzdGFydDp0LW4sZW5kOnR9OntzdGFydDp0LGVuZDp0K259fWZ1bmN0aW9uIENjKGUpe2xldCB0PXtsOmUubGVmdCtlLl9wYWRkaW5nLmxlZnQscjplLnJpZ2h0LWUuX3BhZGRpbmcucmlnaHQsdDplLnRvcCtlLl9wYWRkaW5nLnRvcCxiOmUuYm90dG9tLWUuX3BhZGRpbmcuYm90dG9tfSxuPU9iamVjdC5hc3NpZ24oe30sdCkscj1bXSxpPVtdLGE9ZS5fcG9pbnRMYWJlbHMubGVuZ3RoLG89ZS5vcHRpb25zLnBvaW50TGFiZWxzLHM9by5jZW50ZXJQb2ludExhYmVscz96L2E6MDtmb3IobGV0IGM9MDtjPGE7YysrKXtsZXQgYT1vLnNldENvbnRleHQoZS5nZXRQb2ludExhYmVsQ29udGV4dChjKSk7aVtjXT1hLnBhZGRpbmc7bGV0IGw9ZS5nZXRQb2ludFBvc2l0aW9uKGMsZS5kcmF3aW5nQXJlYStpW2NdLHMpLHU9SihhLmZvbnQpLGQ9eGMoZS5jdHgsdSxlLl9wb2ludExhYmVsc1tjXSk7cltjXT1kO2xldCBmPUgoZS5nZXRJbmRleEFuZ2xlKGMpK3MpLHA9TWF0aC5yb3VuZChPdChmKSk7d2Mobix0LGYsU2MocCxsLngsZC53LDAsMTgwKSxTYyhwLGwueSxkLmgsOTAsMjcwKSl9ZS5zZXRDZW50ZXJQb2ludCh0Lmwtbi5sLG4uci10LnIsdC50LW4udCxuLmItdC5iKSxlLl9wb2ludExhYmVsSXRlbXM9RGMoZSxyLGkpfWZ1bmN0aW9uIHdjKGUsdCxuLHIsaSl7bGV0IGE9TWF0aC5hYnMoTWF0aC5zaW4obikpLG89TWF0aC5hYnMoTWF0aC5jb3MobikpLHM9MCxjPTA7ci5zdGFydDx0Lmw/KHM9KHQubC1yLnN0YXJ0KS9hLGUubD1NYXRoLm1pbihlLmwsdC5sLXMpKTpyLmVuZD50LnImJihzPShyLmVuZC10LnIpL2EsZS5yPU1hdGgubWF4KGUucix0LnIrcykpLGkuc3RhcnQ8dC50PyhjPSh0LnQtaS5zdGFydCkvbyxlLnQ9TWF0aC5taW4oZS50LHQudC1jKSk6aS5lbmQ+dC5iJiYoYz0oaS5lbmQtdC5iKS9vLGUuYj1NYXRoLm1heChlLmIsdC5iK2MpKX1mdW5jdGlvbiBUYyhlLHQsbil7bGV0IHI9ZS5kcmF3aW5nQXJlYSx7ZXh0cmE6aSxhZGRpdGlvbmFsQW5nbGU6YSxwYWRkaW5nOm8sc2l6ZTpzfT1uLGM9ZS5nZXRQb2ludFBvc2l0aW9uKHQscitpK28sYSksbD1NYXRoLnJvdW5kKE90KEgoYy5hbmdsZStWKSkpLHU9QWMoYy55LHMuaCxsKSxkPU9jKGwpLGY9a2MoYy54LHMudyxkKTtyZXR1cm57dmlzaWJsZTohMCx4OmMueCx5OnUsdGV4dEFsaWduOmQsbGVmdDpmLHRvcDp1LHJpZ2h0OmYrcy53LGJvdHRvbTp1K3MuaH19ZnVuY3Rpb24gRWMoZSx0KXtpZighdClyZXR1cm4hMDtsZXR7bGVmdDpuLHRvcDpyLHJpZ2h0OmksYm90dG9tOmF9PWU7cmV0dXJuIShLKHt4Om4seTpyfSx0KXx8Syh7eDpuLHk6YX0sdCl8fEsoe3g6aSx5OnJ9LHQpfHxLKHt4OmkseTphfSx0KSl9ZnVuY3Rpb24gRGMoZSx0LG4pe2xldCByPVtdLGk9ZS5fcG9pbnRMYWJlbHMubGVuZ3RoLGE9ZS5vcHRpb25zLHtjZW50ZXJQb2ludExhYmVsczpvLGRpc3BsYXk6c309YS5wb2ludExhYmVscyxjPXtleHRyYTpiYyhhKS8yLGFkZGl0aW9uYWxBbmdsZTpvP3ovaTowfSxsO2ZvcihsZXQgYT0wO2E8aTthKyspe2MucGFkZGluZz1uW2FdLGMuc2l6ZT10W2FdO2xldCBpPVRjKGUsYSxjKTtyLnB1c2goaSkscz09PWBhdXRvYCYmKGkudmlzaWJsZT1FYyhpLGwpLGkudmlzaWJsZSYmKGw9aSkpfXJldHVybiByfWZ1bmN0aW9uIE9jKGUpe3JldHVybiBlPT09MHx8ZT09PTE4MD9gY2VudGVyYDplPDE4MD9gbGVmdGA6YHJpZ2h0YH1mdW5jdGlvbiBrYyhlLHQsbil7cmV0dXJuIG49PT1gcmlnaHRgP2UtPXQ6bj09PWBjZW50ZXJgJiYoZS09dC8yKSxlfWZ1bmN0aW9uIEFjKGUsdCxuKXtyZXR1cm4gbj09PTkwfHxuPT09MjcwP2UtPXQvMjoobj4yNzB8fG48OTApJiYoZS09dCksZX1mdW5jdGlvbiBqYyhlLHQsbil7bGV0e2xlZnQ6cix0b3A6aSxyaWdodDphLGJvdHRvbTpvfT1uLHtiYWNrZHJvcENvbG9yOnN9PXQ7aWYoIWoocykpe2xldCBuPUhuKHQuYm9yZGVyUmFkaXVzKSxjPXEodC5iYWNrZHJvcFBhZGRpbmcpO2UuZmlsbFN0eWxlPXM7bGV0IGw9ci1jLmxlZnQsdT1pLWMudG9wLGQ9YS1yK2Mud2lkdGgsZj1vLWkrYy5oZWlnaHQ7T2JqZWN0LnZhbHVlcyhuKS5zb21lKGU9PmUhPT0wKT8oZS5iZWdpblBhdGgoKSxGbihlLHt4OmwseTp1LHc6ZCxoOmYscmFkaXVzOm59KSxlLmZpbGwoKSk6ZS5maWxsUmVjdChsLHUsZCxmKX19ZnVuY3Rpb24gTWMoZSx0KXtsZXR7Y3R4Om4sb3B0aW9uczp7cG9pbnRMYWJlbHM6cn19PWU7Zm9yKGxldCBpPXQtMTtpPj0wO2ktLSl7bGV0IHQ9ZS5fcG9pbnRMYWJlbEl0ZW1zW2ldO2lmKCF0LnZpc2libGUpY29udGludWU7bGV0IGE9ci5zZXRDb250ZXh0KGUuZ2V0UG9pbnRMYWJlbENvbnRleHQoaSkpO2pjKG4sYSx0KTtsZXQgbz1KKGEuZm9udCkse3g6cyx5OmMsdGV4dEFsaWduOmx9PXQ7UG4obixlLl9wb2ludExhYmVsc1tpXSxzLGMrby5saW5lSGVpZ2h0LzIsbyx7Y29sb3I6YS5jb2xvcix0ZXh0QWxpZ246bCx0ZXh0QmFzZWxpbmU6YG1pZGRsZWB9KX19ZnVuY3Rpb24gTmMoZSx0LG4scil7bGV0e2N0eDppfT1lO2lmKG4paS5hcmMoZS54Q2VudGVyLGUueUNlbnRlcix0LDAsQik7ZWxzZXtsZXQgbj1lLmdldFBvaW50UG9zaXRpb24oMCx0KTtpLm1vdmVUbyhuLngsbi55KTtmb3IobGV0IGE9MTthPHI7YSsrKW49ZS5nZXRQb2ludFBvc2l0aW9uKGEsdCksaS5saW5lVG8obi54LG4ueSl9fWZ1bmN0aW9uIFBjKGUsdCxuLHIsaSl7bGV0IGE9ZS5jdHgsbz10LmNpcmN1bGFyLHtjb2xvcjpzLGxpbmVXaWR0aDpjfT10OyFvJiYhcnx8IXN8fCFjfHxuPDB8fChhLnNhdmUoKSxhLnN0cm9rZVN0eWxlPXMsYS5saW5lV2lkdGg9YyxhLnNldExpbmVEYXNoKGkuZGFzaHx8W10pLGEubGluZURhc2hPZmZzZXQ9aS5kYXNoT2Zmc2V0LGEuYmVnaW5QYXRoKCksTmMoZSxuLG8sciksYS5jbG9zZVBhdGgoKSxhLnN0cm9rZSgpLGEucmVzdG9yZSgpKX1mdW5jdGlvbiBGYyhlLHQsbil7cmV0dXJuIEduKGUse2xhYmVsOm4saW5kZXg6dCx0eXBlOmBwb2ludExhYmVsYH0pfShjbGFzcyBleHRlbmRzIGZje3N0YXRpYyBpZD1gcmFkaWFsTGluZWFyYDtzdGF0aWMgZGVmYXVsdHM9e2Rpc3BsYXk6ITAsYW5pbWF0ZTohMCxwb3NpdGlvbjpgY2hhcnRBcmVhYCxhbmdsZUxpbmVzOntkaXNwbGF5OiEwLGxpbmVXaWR0aDoxLGJvcmRlckRhc2g6W10sYm9yZGVyRGFzaE9mZnNldDowfSxncmlkOntjaXJjdWxhcjohMX0sc3RhcnRBbmdsZTowLHRpY2tzOntzaG93TGFiZWxCYWNrZHJvcDohMCxjYWxsYmFjazptbi5mb3JtYXR0ZXJzLm51bWVyaWN9LHBvaW50TGFiZWxzOntiYWNrZHJvcENvbG9yOnZvaWQgMCxiYWNrZHJvcFBhZGRpbmc6MixkaXNwbGF5OiEwLGZvbnQ6e3NpemU6MTB9LGNhbGxiYWNrKGUpe3JldHVybiBlfSxwYWRkaW5nOjUsY2VudGVyUG9pbnRMYWJlbHM6ITF9fTtzdGF0aWMgZGVmYXVsdFJvdXRlcz17ImFuZ2xlTGluZXMuY29sb3IiOmBib3JkZXJDb2xvcmAsInBvaW50TGFiZWxzLmNvbG9yIjpgY29sb3JgLCJ0aWNrcy5jb2xvciI6YGNvbG9yYH07c3RhdGljIGRlc2NyaXB0b3JzPXthbmdsZUxpbmVzOntfZmFsbGJhY2s6YGdyaWRgfX07Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy54Q2VudGVyPXZvaWQgMCx0aGlzLnlDZW50ZXI9dm9pZCAwLHRoaXMuZHJhd2luZ0FyZWE9dm9pZCAwLHRoaXMuX3BvaW50TGFiZWxzPVtdLHRoaXMuX3BvaW50TGFiZWxJdGVtcz1bXX1zZXREaW1lbnNpb25zKCl7bGV0IGU9dGhpcy5fcGFkZGluZz1xKGJjKHRoaXMub3B0aW9ucykvMiksdD10aGlzLndpZHRoPXRoaXMubWF4V2lkdGgtZS53aWR0aCxuPXRoaXMuaGVpZ2h0PXRoaXMubWF4SGVpZ2h0LWUuaGVpZ2h0O3RoaXMueENlbnRlcj1NYXRoLmZsb29yKHRoaXMubGVmdCt0LzIrZS5sZWZ0KSx0aGlzLnlDZW50ZXI9TWF0aC5mbG9vcih0aGlzLnRvcCtuLzIrZS50b3ApLHRoaXMuZHJhd2luZ0FyZWE9TWF0aC5mbG9vcihNYXRoLm1pbih0LG4pLzIpfWRldGVybWluZURhdGFMaW1pdHMoKXtsZXR7bWluOmUsbWF4OnR9PXRoaXMuZ2V0TWluTWF4KCExKTt0aGlzLm1pbj1QKGUpJiYhaXNOYU4oZSk/ZTowLHRoaXMubWF4PVAodCkmJiFpc05hTih0KT90OjAsdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9Y29tcHV0ZVRpY2tMaW1pdCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5kcmF3aW5nQXJlYS9iYyh0aGlzLm9wdGlvbnMpKX1nZW5lcmF0ZVRpY2tMYWJlbHMoZSl7ZmMucHJvdG90eXBlLmdlbmVyYXRlVGlja0xhYmVscy5jYWxsKHRoaXMsZSksdGhpcy5fcG9pbnRMYWJlbHM9dGhpcy5nZXRMYWJlbHMoKS5tYXAoKGUsdCk9PntsZXQgbj1MKHRoaXMub3B0aW9ucy5wb2ludExhYmVscy5jYWxsYmFjayxbZSx0XSx0aGlzKTtyZXR1cm4gbnx8bj09PTA/bjpgYH0pLmZpbHRlcigoZSx0KT0+dGhpcy5jaGFydC5nZXREYXRhVmlzaWJpbGl0eSh0KSl9Zml0KCl7bGV0IGU9dGhpcy5vcHRpb25zO2UuZGlzcGxheSYmZS5wb2ludExhYmVscy5kaXNwbGF5P0NjKHRoaXMpOnRoaXMuc2V0Q2VudGVyUG9pbnQoMCwwLDAsMCl9c2V0Q2VudGVyUG9pbnQoZSx0LG4scil7dGhpcy54Q2VudGVyKz1NYXRoLmZsb29yKChlLXQpLzIpLHRoaXMueUNlbnRlcis9TWF0aC5mbG9vcigobi1yKS8yKSx0aGlzLmRyYXdpbmdBcmVhLT1NYXRoLm1pbih0aGlzLmRyYXdpbmdBcmVhLzIsTWF0aC5tYXgoZSx0LG4scikpfWdldEluZGV4QW5nbGUoZSl7bGV0IHQ9Qi8odGhpcy5fcG9pbnRMYWJlbHMubGVuZ3RofHwxKSxuPXRoaXMub3B0aW9ucy5zdGFydEFuZ2xlfHwwO3JldHVybiBIKGUqdCtEdChuKSl9Z2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoZSl7aWYoaihlKSlyZXR1cm4gTmFOO2xldCB0PXRoaXMuZHJhd2luZ0FyZWEvKHRoaXMubWF4LXRoaXMubWluKTtyZXR1cm4gdGhpcy5vcHRpb25zLnJldmVyc2U/KHRoaXMubWF4LWUpKnQ6KGUtdGhpcy5taW4pKnR9Z2V0VmFsdWVGb3JEaXN0YW5jZUZyb21DZW50ZXIoZSl7aWYoaihlKSlyZXR1cm4gTmFOO2xldCB0PWUvKHRoaXMuZHJhd2luZ0FyZWEvKHRoaXMubWF4LXRoaXMubWluKSk7cmV0dXJuIHRoaXMub3B0aW9ucy5yZXZlcnNlP3RoaXMubWF4LXQ6dGhpcy5taW4rdH1nZXRQb2ludExhYmVsQ29udGV4dChlKXtsZXQgdD10aGlzLl9wb2ludExhYmVsc3x8W107aWYoZT49MCYmZTx0Lmxlbmd0aCl7bGV0IG49dFtlXTtyZXR1cm4gRmModGhpcy5nZXRDb250ZXh0KCksZSxuKX19Z2V0UG9pbnRQb3NpdGlvbihlLHQsbj0wKXtsZXQgcj10aGlzLmdldEluZGV4QW5nbGUoZSktVituO3JldHVybnt4Ok1hdGguY29zKHIpKnQrdGhpcy54Q2VudGVyLHk6TWF0aC5zaW4ocikqdCt0aGlzLnlDZW50ZXIsYW5nbGU6cn19Z2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKGUsdCl7cmV0dXJuIHRoaXMuZ2V0UG9pbnRQb3NpdGlvbihlLHRoaXMuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUodCkpfWdldEJhc2VQb3NpdGlvbihlKXtyZXR1cm4gdGhpcy5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoZXx8MCx0aGlzLmdldEJhc2VWYWx1ZSgpKX1nZXRQb2ludExhYmVsUG9zaXRpb24oZSl7bGV0e2xlZnQ6dCx0b3A6bixyaWdodDpyLGJvdHRvbTppfT10aGlzLl9wb2ludExhYmVsSXRlbXNbZV07cmV0dXJue2xlZnQ6dCx0b3A6bixyaWdodDpyLGJvdHRvbTppfX1kcmF3QmFja2dyb3VuZCgpe2xldHtiYWNrZ3JvdW5kQ29sb3I6ZSxncmlkOntjaXJjdWxhcjp0fX09dGhpcy5vcHRpb25zO2lmKGUpe2xldCBuPXRoaXMuY3R4O24uc2F2ZSgpLG4uYmVnaW5QYXRoKCksTmModGhpcyx0aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKHRoaXMuX2VuZFZhbHVlKSx0LHRoaXMuX3BvaW50TGFiZWxzLmxlbmd0aCksbi5jbG9zZVBhdGgoKSxuLmZpbGxTdHlsZT1lLG4uZmlsbCgpLG4ucmVzdG9yZSgpfX1kcmF3R3JpZCgpe2xldCBlPXRoaXMuY3R4LHQ9dGhpcy5vcHRpb25zLHthbmdsZUxpbmVzOm4sZ3JpZDpyLGJvcmRlcjppfT10LGE9dGhpcy5fcG9pbnRMYWJlbHMubGVuZ3RoLG8scyxjO2lmKHQucG9pbnRMYWJlbHMuZGlzcGxheSYmTWModGhpcyxhKSxyLmRpc3BsYXkmJnRoaXMudGlja3MuZm9yRWFjaCgoZSx0KT0+e2lmKHQhPT0wfHx0PT09MCYmdGhpcy5taW48MCl7cz10aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKGUudmFsdWUpO2xldCBuPXRoaXMuZ2V0Q29udGV4dCh0KSxvPXIuc2V0Q29udGV4dChuKSxjPWkuc2V0Q29udGV4dChuKTtQYyh0aGlzLG8scyxhLGMpfX0pLG4uZGlzcGxheSl7Zm9yKGUuc2F2ZSgpLG89YS0xO28+PTA7by0tKXtsZXQgcj1uLnNldENvbnRleHQodGhpcy5nZXRQb2ludExhYmVsQ29udGV4dChvKSkse2NvbG9yOmksbGluZVdpZHRoOmF9PXI7IWF8fCFpfHwoZS5saW5lV2lkdGg9YSxlLnN0cm9rZVN0eWxlPWksZS5zZXRMaW5lRGFzaChyLmJvcmRlckRhc2gpLGUubGluZURhc2hPZmZzZXQ9ci5ib3JkZXJEYXNoT2Zmc2V0LHM9dGhpcy5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0LnJldmVyc2U/dGhpcy5taW46dGhpcy5tYXgpLGM9dGhpcy5nZXRQb2ludFBvc2l0aW9uKG8scyksZS5iZWdpblBhdGgoKSxlLm1vdmVUbyh0aGlzLnhDZW50ZXIsdGhpcy55Q2VudGVyKSxlLmxpbmVUbyhjLngsYy55KSxlLnN0cm9rZSgpKX1lLnJlc3RvcmUoKX19ZHJhd0JvcmRlcigpe31kcmF3TGFiZWxzKCl7bGV0IGU9dGhpcy5jdHgsdD10aGlzLm9wdGlvbnMsbj10LnRpY2tzO2lmKCFuLmRpc3BsYXkpcmV0dXJuO2xldCByPXRoaXMuZ2V0SW5kZXhBbmdsZSgwKSxpLGE7ZS5zYXZlKCksZS50cmFuc2xhdGUodGhpcy54Q2VudGVyLHRoaXMueUNlbnRlciksZS5yb3RhdGUociksZS50ZXh0QWxpZ249YGNlbnRlcmAsZS50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsdGhpcy50aWNrcy5mb3JFYWNoKChyLG8pPT57aWYobz09PTAmJnRoaXMubWluPj0wJiYhdC5yZXZlcnNlKXJldHVybjtsZXQgcz1uLnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KG8pKSxjPUoocy5mb250KTtpZihpPXRoaXMuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUodGhpcy50aWNrc1tvXS52YWx1ZSkscy5zaG93TGFiZWxCYWNrZHJvcCl7ZS5mb250PWMuc3RyaW5nLGE9ZS5tZWFzdXJlVGV4dChyLmxhYmVsKS53aWR0aCxlLmZpbGxTdHlsZT1zLmJhY2tkcm9wQ29sb3I7bGV0IHQ9cShzLmJhY2tkcm9wUGFkZGluZyk7ZS5maWxsUmVjdCgtYS8yLXQubGVmdCwtaS1jLnNpemUvMi10LnRvcCxhK3Qud2lkdGgsYy5zaXplK3QuaGVpZ2h0KX1QbihlLHIubGFiZWwsMCwtaSxjLHtjb2xvcjpzLmNvbG9yLHN0cm9rZUNvbG9yOnMudGV4dFN0cm9rZUNvbG9yLHN0cm9rZVdpZHRoOnMudGV4dFN0cm9rZVdpZHRofSl9KSxlLnJlc3RvcmUoKX1kcmF3VGl0bGUoKXt9fSk7dmFyIEljPXttaWxsaXNlY29uZDp7Y29tbW9uOiEwLHNpemU6MSxzdGVwczoxZTN9LHNlY29uZDp7Y29tbW9uOiEwLHNpemU6MWUzLHN0ZXBzOjYwfSxtaW51dGU6e2NvbW1vbjohMCxzaXplOjZlNCxzdGVwczo2MH0saG91cjp7Y29tbW9uOiEwLHNpemU6MzZlNSxzdGVwczoyNH0sZGF5Ontjb21tb246ITAsc2l6ZTo4NjRlNSxzdGVwczozMH0sd2Vlazp7Y29tbW9uOiExLHNpemU6NjA0OGU1LHN0ZXBzOjR9LG1vbnRoOntjb21tb246ITAsc2l6ZToyNjI4ZTYsc3RlcHM6MTJ9LHF1YXJ0ZXI6e2NvbW1vbjohMSxzaXplOjc4ODRlNixzdGVwczo0fSx5ZWFyOntjb21tb246ITAsc2l6ZTozMTU0ZTd9fSwkPU9iamVjdC5rZXlzKEljKTtmdW5jdGlvbiBMYyhlLHQpe3JldHVybiBlLXR9ZnVuY3Rpb24gUmMoZSx0KXtpZihqKHQpKXJldHVybiBudWxsO2xldCBuPWUuX2FkYXB0ZXIse3BhcnNlcjpyLHJvdW5kOmksaXNvV2Vla2RheTphfT1lLl9wYXJzZU9wdHMsbz10O3JldHVybiB0eXBlb2Ygcj09YGZ1bmN0aW9uYCYmKG89cihvKSksUChvKXx8KG89dHlwZW9mIHI9PWBzdHJpbmdgP24ucGFyc2UobyxyKTpuLnBhcnNlKG8pKSxvPT09bnVsbD9udWxsOihpJiYobz1pPT09YHdlZWtgJiYod3QoYSl8fGE9PT0hMCk/bi5zdGFydE9mKG8sYGlzb1dlZWtgLGEpOm4uc3RhcnRPZihvLGkpKSwrbyl9ZnVuY3Rpb24gemMoZSx0LG4scil7bGV0IGk9JC5sZW5ndGg7Zm9yKGxldCBhPSQuaW5kZXhPZihlKTthPGktMTsrK2Epe2xldCBlPUljWyRbYV1dLGk9ZS5zdGVwcz9lLnN0ZXBzOjIqKjUzLTE7aWYoZS5jb21tb24mJk1hdGguY2VpbCgobi10KS8oaSplLnNpemUpKTw9cilyZXR1cm4gJFthXX1yZXR1cm4gJFtpLTFdfWZ1bmN0aW9uIEJjKGUsdCxuLHIsaSl7Zm9yKGxldCBhPSQubGVuZ3RoLTE7YT49JC5pbmRleE9mKG4pO2EtLSl7bGV0IG49JFthXTtpZihJY1tuXS5jb21tb24mJmUuX2FkYXB0ZXIuZGlmZihpLHIsbik+PXQtMSlyZXR1cm4gbn1yZXR1cm4gJFtuPyQuaW5kZXhPZihuKTowXX1mdW5jdGlvbiBWYyhlKXtmb3IobGV0IHQ9JC5pbmRleE9mKGUpKzEsbj0kLmxlbmd0aDt0PG47Kyt0KWlmKEljWyRbdF1dLmNvbW1vbilyZXR1cm4gJFt0XX1mdW5jdGlvbiBIYyhlLHQsbil7aWYoIW4pZVt0XT0hMDtlbHNlIGlmKG4ubGVuZ3RoKXtsZXR7bG86cixoaTppfT1JdChuLHQpLGE9bltyXT49dD9uW3JdOm5baV07ZVthXT0hMH19ZnVuY3Rpb24gVWMoZSx0LG4scil7bGV0IGk9ZS5fYWRhcHRlcixhPStpLnN0YXJ0T2YodFswXS52YWx1ZSxyKSxvPXRbdC5sZW5ndGgtMV0udmFsdWUscyxjO2ZvcihzPWE7czw9bztzPStpLmFkZChzLDEscikpYz1uW3NdLGM+PTAmJih0W2NdLm1ham9yPSEwKTtyZXR1cm4gdH1mdW5jdGlvbiBXYyhlLHQsbil7bGV0IHI9W10saT17fSxhPXQubGVuZ3RoLG8scztmb3Iobz0wO288YTsrK28pcz10W29dLGlbc109byxyLnB1c2goe3ZhbHVlOnMsbWFqb3I6ITF9KTtyZXR1cm4gYT09PTB8fCFuP3I6VWMoZSxyLGksbil9dmFyIEdjPWNsYXNzIGV4dGVuZHMgWGF7c3RhdGljIGlkPWB0aW1lYDtzdGF0aWMgZGVmYXVsdHM9e2JvdW5kczpgZGF0YWAsYWRhcHRlcnM6e30sdGltZTp7cGFyc2VyOiExLHVuaXQ6ITEscm91bmQ6ITEsaXNvV2Vla2RheTohMSxtaW5Vbml0OmBtaWxsaXNlY29uZGAsZGlzcGxheUZvcm1hdHM6e319LHRpY2tzOntzb3VyY2U6YGF1dG9gLGNhbGxiYWNrOiExLG1ham9yOntlbmFibGVkOiExfX19O2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuX2NhY2hlPXtkYXRhOltdLGxhYmVsczpbXSxhbGw6W119LHRoaXMuX3VuaXQ9YGRheWAsdGhpcy5fbWFqb3JVbml0PXZvaWQgMCx0aGlzLl9vZmZzZXRzPXt9LHRoaXMuX25vcm1hbGl6ZWQ9ITEsdGhpcy5fcGFyc2VPcHRzPXZvaWQgMH1pbml0KGUsdD17fSl7bGV0IG49ZS50aW1lfHw9e30scj10aGlzLl9hZGFwdGVyPW5ldyBQaS5fZGF0ZShlLmFkYXB0ZXJzLmRhdGUpO3IuaW5pdCh0KSxudChuLmRpc3BsYXlGb3JtYXRzLHIuZm9ybWF0cygpKSx0aGlzLl9wYXJzZU9wdHM9e3BhcnNlcjpuLnBhcnNlcixyb3VuZDpuLnJvdW5kLGlzb1dlZWtkYXk6bi5pc29XZWVrZGF5fSxzdXBlci5pbml0KGUpLHRoaXMuX25vcm1hbGl6ZWQ9dC5ub3JtYWxpemVkfXBhcnNlKGUsdCl7cmV0dXJuIGU9PT12b2lkIDA/bnVsbDpSYyh0aGlzLGUpfWJlZm9yZUxheW91dCgpe3N1cGVyLmJlZm9yZUxheW91dCgpLHRoaXMuX2NhY2hlPXtkYXRhOltdLGxhYmVsczpbXSxhbGw6W119fWRldGVybWluZURhdGFMaW1pdHMoKXtsZXQgZT10aGlzLm9wdGlvbnMsdD10aGlzLl9hZGFwdGVyLG49ZS50aW1lLnVuaXR8fGBkYXlgLHttaW46cixtYXg6aSxtaW5EZWZpbmVkOmEsbWF4RGVmaW5lZDpvfT10aGlzLmdldFVzZXJCb3VuZHMoKTtmdW5jdGlvbiBzKGUpeyFhJiYhaXNOYU4oZS5taW4pJiYocj1NYXRoLm1pbihyLGUubWluKSksIW8mJiFpc05hTihlLm1heCkmJihpPU1hdGgubWF4KGksZS5tYXgpKX0oIWF8fCFvKSYmKHModGhpcy5fZ2V0TGFiZWxCb3VuZHMoKSksKGUuYm91bmRzIT09YHRpY2tzYHx8ZS50aWNrcy5zb3VyY2UhPT1gbGFiZWxzYCkmJnModGhpcy5nZXRNaW5NYXgoITEpKSkscj1QKHIpJiYhaXNOYU4ocik/cjordC5zdGFydE9mKERhdGUubm93KCksbiksaT1QKGkpJiYhaXNOYU4oaSk/aTordC5lbmRPZihEYXRlLm5vdygpLG4pKzEsdGhpcy5taW49TWF0aC5taW4ocixpLTEpLHRoaXMubWF4PU1hdGgubWF4KHIrMSxpKX1fZ2V0TGFiZWxCb3VuZHMoKXtsZXQgZT10aGlzLmdldExhYmVsVGltZXN0YW1wcygpLHQ9MS8wLG49LTEvMDtyZXR1cm4gZS5sZW5ndGgmJih0PWVbMF0sbj1lW2UubGVuZ3RoLTFdKSx7bWluOnQsbWF4Om59fWJ1aWxkVGlja3MoKXtsZXQgZT10aGlzLm9wdGlvbnMsdD1lLnRpbWUsbj1lLnRpY2tzLHI9bi5zb3VyY2U9PT1gbGFiZWxzYD90aGlzLmdldExhYmVsVGltZXN0YW1wcygpOnRoaXMuX2dlbmVyYXRlKCk7ZS5ib3VuZHM9PT1gdGlja3NgJiZyLmxlbmd0aCYmKHRoaXMubWluPXRoaXMuX3VzZXJNaW58fHJbMF0sdGhpcy5tYXg9dGhpcy5fdXNlck1heHx8cltyLmxlbmd0aC0xXSk7bGV0IGk9dGhpcy5taW4sYT10aGlzLm1heCxvPXp0KHIsaSxhKTtyZXR1cm4gdGhpcy5fdW5pdD10LnVuaXR8fChuLmF1dG9Ta2lwP3pjKHQubWluVW5pdCx0aGlzLm1pbix0aGlzLm1heCx0aGlzLl9nZXRMYWJlbENhcGFjaXR5KGkpKTpCYyh0aGlzLG8ubGVuZ3RoLHQubWluVW5pdCx0aGlzLm1pbix0aGlzLm1heCkpLHRoaXMuX21ham9yVW5pdD0hbi5tYWpvci5lbmFibGVkfHx0aGlzLl91bml0PT09YHllYXJgP3ZvaWQgMDpWYyh0aGlzLl91bml0KSx0aGlzLmluaXRPZmZzZXRzKHIpLGUucmV2ZXJzZSYmby5yZXZlcnNlKCksV2ModGhpcyxvLHRoaXMuX21ham9yVW5pdCl9YWZ0ZXJBdXRvU2tpcCgpe3RoaXMub3B0aW9ucy5vZmZzZXRBZnRlckF1dG9za2lwJiZ0aGlzLmluaXRPZmZzZXRzKHRoaXMudGlja3MubWFwKGU9PitlLnZhbHVlKSl9aW5pdE9mZnNldHMoZT1bXSl7bGV0IHQ9MCxuPTAscixpO3RoaXMub3B0aW9ucy5vZmZzZXQmJmUubGVuZ3RoJiYocj10aGlzLmdldERlY2ltYWxGb3JWYWx1ZShlWzBdKSx0PWUubGVuZ3RoPT09MT8xLXI6KHRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGVbMV0pLXIpLzIsaT10aGlzLmdldERlY2ltYWxGb3JWYWx1ZShlW2UubGVuZ3RoLTFdKSxuPWUubGVuZ3RoPT09MT9pOihpLXRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGVbZS5sZW5ndGgtMl0pKS8yKTtsZXQgYT1lLmxlbmd0aDwzPy41Oi4yNTt0PVUodCwwLGEpLG49VShuLDAsYSksdGhpcy5fb2Zmc2V0cz17c3RhcnQ6dCxlbmQ6bixmYWN0b3I6MS8odCsxK24pfX1fZ2VuZXJhdGUoKXtsZXQgZT10aGlzLl9hZGFwdGVyLHQ9dGhpcy5taW4sbj10aGlzLm1heCxyPXRoaXMub3B0aW9ucyxpPXIudGltZSxhPWkudW5pdHx8emMoaS5taW5Vbml0LHQsbix0aGlzLl9nZXRMYWJlbENhcGFjaXR5KHQpKSxvPUkoci50aWNrcy5zdGVwU2l6ZSwxKSxzPWE9PT1gd2Vla2AmJmkuaXNvV2Vla2RheSxjPXd0KHMpfHxzPT09ITAsbD17fSx1PXQsZCxmO2lmKGMmJih1PStlLnN0YXJ0T2YodSxgaXNvV2Vla2AscykpLHU9K2Uuc3RhcnRPZih1LGM/YGRheWA6YSksZS5kaWZmKG4sdCxhKT4xZTUqbyl0aHJvdyBFcnJvcih0K2AgYW5kIGArbitgIGFyZSB0b28gZmFyIGFwYXJ0IHdpdGggc3RlcFNpemUgb2YgYCtvK2AgYCthKTtsZXQgcD1yLnRpY2tzLnNvdXJjZT09PWBkYXRhYCYmdGhpcy5nZXREYXRhVGltZXN0YW1wcygpO2ZvcihkPXUsZj0wO2Q8bjtkPStlLmFkZChkLG8sYSksZisrKUhjKGwsZCxwKTtyZXR1cm4oZD09PW58fHIuYm91bmRzPT09YHRpY2tzYHx8Zj09PTEpJiZIYyhsLGQscCksT2JqZWN0LmtleXMobCkuc29ydChMYykubWFwKGU9PitlKX1nZXRMYWJlbEZvclZhbHVlKGUpe2xldCB0PXRoaXMuX2FkYXB0ZXIsbj10aGlzLm9wdGlvbnMudGltZTtyZXR1cm4gbi50b29sdGlwRm9ybWF0P3QuZm9ybWF0KGUsbi50b29sdGlwRm9ybWF0KTp0LmZvcm1hdChlLG4uZGlzcGxheUZvcm1hdHMuZGF0ZXRpbWUpfWZvcm1hdChlLHQpe2xldCBuPXRoaXMub3B0aW9ucy50aW1lLmRpc3BsYXlGb3JtYXRzLHI9dGhpcy5fdW5pdCxpPXR8fG5bcl07cmV0dXJuIHRoaXMuX2FkYXB0ZXIuZm9ybWF0KGUsaSl9X3RpY2tGb3JtYXRGdW5jdGlvbihlLHQsbixyKXtsZXQgaT10aGlzLm9wdGlvbnMsYT1pLnRpY2tzLmNhbGxiYWNrO2lmKGEpcmV0dXJuIEwoYSxbZSx0LG5dLHRoaXMpO2xldCBvPWkudGltZS5kaXNwbGF5Rm9ybWF0cyxzPXRoaXMuX3VuaXQsYz10aGlzLl9tYWpvclVuaXQsbD1zJiZvW3NdLHU9YyYmb1tjXSxkPW5bdF0sZj1jJiZ1JiZkJiZkLm1ham9yO3JldHVybiB0aGlzLl9hZGFwdGVyLmZvcm1hdChlLHJ8fChmP3U6bCkpfWdlbmVyYXRlVGlja0xhYmVscyhlKXtsZXQgdCxuLHI7Zm9yKHQ9MCxuPWUubGVuZ3RoO3Q8bjsrK3Qpcj1lW3RdLHIubGFiZWw9dGhpcy5fdGlja0Zvcm1hdEZ1bmN0aW9uKHIudmFsdWUsdCxlKX1nZXREZWNpbWFsRm9yVmFsdWUoZSl7cmV0dXJuIGU9PT1udWxsP05hTjooZS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKX1nZXRQaXhlbEZvclZhbHVlKGUpe2xldCB0PXRoaXMuX29mZnNldHMsbj10aGlzLmdldERlY2ltYWxGb3JWYWx1ZShlKTtyZXR1cm4gdGhpcy5nZXRQaXhlbEZvckRlY2ltYWwoKHQuc3RhcnQrbikqdC5mYWN0b3IpfWdldFZhbHVlRm9yUGl4ZWwoZSl7bGV0IHQ9dGhpcy5fb2Zmc2V0cyxuPXRoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpL3QuZmFjdG9yLXQuZW5kO3JldHVybiB0aGlzLm1pbituKih0aGlzLm1heC10aGlzLm1pbil9X2dldExhYmVsU2l6ZShlKXtsZXQgdD10aGlzLm9wdGlvbnMudGlja3Msbj10aGlzLmN0eC5tZWFzdXJlVGV4dChlKS53aWR0aCxyPUR0KHRoaXMuaXNIb3Jpem9udGFsKCk/dC5tYXhSb3RhdGlvbjp0Lm1pblJvdGF0aW9uKSxpPU1hdGguY29zKHIpLGE9TWF0aC5zaW4ociksbz10aGlzLl9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKDApLnNpemU7cmV0dXJue3c6bippK28qYSxoOm4qYStvKml9fV9nZXRMYWJlbENhcGFjaXR5KGUpe2xldCB0PXRoaXMub3B0aW9ucy50aW1lLG49dC5kaXNwbGF5Rm9ybWF0cyxyPW5bdC51bml0XXx8bi5taWxsaXNlY29uZCxpPXRoaXMuX3RpY2tGb3JtYXRGdW5jdGlvbihlLDAsV2ModGhpcyxbZV0sdGhpcy5fbWFqb3JVbml0KSxyKSxhPXRoaXMuX2dldExhYmVsU2l6ZShpKSxvPU1hdGguZmxvb3IodGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoL2Eudzp0aGlzLmhlaWdodC9hLmgpLTE7cmV0dXJuIG8+MD9vOjF9Z2V0RGF0YVRpbWVzdGFtcHMoKXtsZXQgZT10aGlzLl9jYWNoZS5kYXRhfHxbXSx0LG47aWYoZS5sZW5ndGgpcmV0dXJuIGU7bGV0IHI9dGhpcy5nZXRNYXRjaGluZ1Zpc2libGVNZXRhcygpO2lmKHRoaXMuX25vcm1hbGl6ZWQmJnIubGVuZ3RoKXJldHVybiB0aGlzLl9jYWNoZS5kYXRhPXJbMF0uY29udHJvbGxlci5nZXRBbGxQYXJzZWRWYWx1ZXModGhpcyk7Zm9yKHQ9MCxuPXIubGVuZ3RoO3Q8bjsrK3QpZT1lLmNvbmNhdChyW3RdLmNvbnRyb2xsZXIuZ2V0QWxsUGFyc2VkVmFsdWVzKHRoaXMpKTtyZXR1cm4gdGhpcy5fY2FjaGUuZGF0YT10aGlzLm5vcm1hbGl6ZShlKX1nZXRMYWJlbFRpbWVzdGFtcHMoKXtsZXQgZT10aGlzLl9jYWNoZS5sYWJlbHN8fFtdLHQsbjtpZihlLmxlbmd0aClyZXR1cm4gZTtsZXQgcj10aGlzLmdldExhYmVscygpO2Zvcih0PTAsbj1yLmxlbmd0aDt0PG47Kyt0KWUucHVzaChSYyh0aGlzLHJbdF0pKTtyZXR1cm4gdGhpcy5fY2FjaGUubGFiZWxzPXRoaXMuX25vcm1hbGl6ZWQ/ZTp0aGlzLm5vcm1hbGl6ZShlKX1ub3JtYWxpemUoZSl7cmV0dXJuIFV0KGUuc29ydChMYykpfX07ZnVuY3Rpb24gS2MoZSx0LG4pe2xldCByPTAsaT1lLmxlbmd0aC0xLGEsbyxzLGM7bj8odD49ZVtyXS5wb3MmJnQ8PWVbaV0ucG9zJiYoe2xvOnIsaGk6aX09THQoZSxgcG9zYCx0KSkse3BvczphLHRpbWU6c309ZVtyXSx7cG9zOm8sdGltZTpjfT1lW2ldKToodD49ZVtyXS50aW1lJiZ0PD1lW2ldLnRpbWUmJih7bG86cixoaTppfT1MdChlLGB0aW1lYCx0KSkse3RpbWU6YSxwb3M6c309ZVtyXSx7dGltZTpvLHBvczpjfT1lW2ldKTtsZXQgbD1vLWE7cmV0dXJuIGw/cysoYy1zKSoodC1hKS9sOnN9KGNsYXNzIGV4dGVuZHMgR2N7c3RhdGljIGlkPWB0aW1lc2VyaWVzYDtzdGF0aWMgZGVmYXVsdHM9R2MuZGVmYXVsdHM7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5fdGFibGU9W10sdGhpcy5fbWluUG9zPXZvaWQgMCx0aGlzLl90YWJsZVJhbmdlPXZvaWQgMH1pbml0T2Zmc2V0cygpe2xldCBlPXRoaXMuX2dldFRpbWVzdGFtcHNGb3JUYWJsZSgpLHQ9dGhpcy5fdGFibGU9dGhpcy5idWlsZExvb2t1cFRhYmxlKGUpO3RoaXMuX21pblBvcz1LYyh0LHRoaXMubWluKSx0aGlzLl90YWJsZVJhbmdlPUtjKHQsdGhpcy5tYXgpLXRoaXMuX21pblBvcyxzdXBlci5pbml0T2Zmc2V0cyhlKX1idWlsZExvb2t1cFRhYmxlKGUpe2xldHttaW46dCxtYXg6bn09dGhpcyxyPVtdLGk9W10sYSxvLHMsYyxsO2ZvcihhPTAsbz1lLmxlbmd0aDthPG87KythKWM9ZVthXSxjPj10JiZjPD1uJiZyLnB1c2goYyk7aWYoci5sZW5ndGg8MilyZXR1cm5be3RpbWU6dCxwb3M6MH0se3RpbWU6bixwb3M6MX1dO2ZvcihhPTAsbz1yLmxlbmd0aDthPG87KythKWw9clthKzFdLHM9clthLTFdLGM9clthXSxNYXRoLnJvdW5kKChsK3MpLzIpIT09YyYmaS5wdXNoKHt0aW1lOmMscG9zOmEvKG8tMSl9KTtyZXR1cm4gaX1fZ2VuZXJhdGUoKXtsZXQgZT10aGlzLm1pbix0PXRoaXMubWF4LG49c3VwZXIuZ2V0RGF0YVRpbWVzdGFtcHMoKTtyZXR1cm4oIW4uaW5jbHVkZXMoZSl8fCFuLmxlbmd0aCkmJm4uc3BsaWNlKDAsMCxlKSwoIW4uaW5jbHVkZXModCl8fG4ubGVuZ3RoPT09MSkmJm4ucHVzaCh0KSxuLnNvcnQoKGUsdCk9PmUtdCl9X2dldFRpbWVzdGFtcHNGb3JUYWJsZSgpe2xldCBlPXRoaXMuX2NhY2hlLmFsbHx8W107aWYoZS5sZW5ndGgpcmV0dXJuIGU7bGV0IHQ9dGhpcy5nZXREYXRhVGltZXN0YW1wcygpLG49dGhpcy5nZXRMYWJlbFRpbWVzdGFtcHMoKTtyZXR1cm4gZT10Lmxlbmd0aCYmbi5sZW5ndGg/dGhpcy5ub3JtYWxpemUodC5jb25jYXQobikpOnQubGVuZ3RoP3Q6bixlPXRoaXMuX2NhY2hlLmFsbD1lLGV9Z2V0RGVjaW1hbEZvclZhbHVlKGUpe3JldHVybihLYyh0aGlzLl90YWJsZSxlKS10aGlzLl9taW5Qb3MpL3RoaXMuX3RhYmxlUmFuZ2V9Z2V0VmFsdWVGb3JQaXhlbChlKXtsZXQgdD10aGlzLl9vZmZzZXRzLG49dGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwoZSkvdC5mYWN0b3ItdC5lbmQ7cmV0dXJuIEtjKHRoaXMuX3RhYmxlLG4qdGhpcy5fdGFibGVSYW5nZSt0aGlzLl9taW5Qb3MsITApfX0pO3ZhciBxYz17ZGF0YTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9LG9wdGlvbnM6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6KCk9Pih7fSl9LHBsdWdpbnM6e3R5cGU6QXJyYXksZGVmYXVsdDooKT0+W119LGRhdGFzZXRJZEtleTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpgbGFiZWxgfSx1cGRhdGVNb2RlOnt0eXBlOlN0cmluZyxkZWZhdWx0OnZvaWQgMH19LEpjPXthcmlhTGFiZWw6e3R5cGU6U3RyaW5nfSxhcmlhRGVzY3JpYmVkYnk6e3R5cGU6U3RyaW5nfX0sWWM9e3R5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxkZXN0cm95RGVsYXk6e3R5cGU6TnVtYmVyLGRlZmF1bHQ6MH0sLi4ucWMsLi4uSmN9LFhjPShlLHQpPT5PYmplY3QuYXNzaWduKGUsdCk7ZnVuY3Rpb24gWmMoZSl7cmV0dXJuIHUoZSk/eChlKTplfWZ1bmN0aW9uIFFjKGUpe2xldCB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTplO3JldHVybiB1KHQpP25ldyBQcm94eShlLHt9KTplfWZ1bmN0aW9uICRjKGUsdCl7bGV0IG49ZS5vcHRpb25zO24mJnQmJk9iamVjdC5hc3NpZ24obix0KX1mdW5jdGlvbiBlbChlLHQpe2UubGFiZWxzPXR9ZnVuY3Rpb24gdGwoZSx0LG4pe2xldCByPVtdO2UuZGF0YXNldHM9dC5tYXAodD0+e2xldCBpPWUuZGF0YXNldHMuZmluZChlPT5lW25dPT09dFtuXSk7cmV0dXJuIWl8fCF0LmRhdGF8fHIuaW5jbHVkZXMoaSk/ey4uLnR9OihyLnB1c2goaSksT2JqZWN0LmFzc2lnbihpLHQpLGkpfSl9ZnVuY3Rpb24gbmwoZSx0KXtsZXQgbj17bGFiZWxzOltdLGRhdGFzZXRzOltdfTtyZXR1cm4gZWwobixlLmxhYmVscyksdGwobixlLmRhdGFzZXRzLHQpLG59dmFyIHJsPWVlKHtwcm9wczpZYyxzZXR1cCh0LG4pe2xldHtleHBvc2U6aSxzbG90czphfT1uLGM9ZihudWxsKSxsPW0obnVsbCk7aSh7Y2hhcnQ6bH0pO2xldCB1PSgpPT57aWYoIWMudmFsdWUpcmV0dXJuO2xldHt0eXBlOmUsZGF0YTpuLG9wdGlvbnM6cixwbHVnaW5zOmksZGF0YXNldElkS2V5OmF9PXQsbz1RYyhubChuLGEpLG4pO2wudmFsdWU9bmV3IFJvKGMudmFsdWUse3R5cGU6ZSxkYXRhOm8sb3B0aW9uczp7Li4ucn0scGx1Z2luczppfSl9LGQ9KCk9PntsZXQgZT14KGwudmFsdWUpO2UmJih0LmRlc3Ryb3lEZWxheT4wP3NldFRpbWVvdXQoKCk9PntlLmRlc3Ryb3koKSxsLnZhbHVlPW51bGx9LHQuZGVzdHJveURlbGF5KTooZS5kZXN0cm95KCksbC52YWx1ZT1udWxsKSl9LHA9ZT0+e2UudXBkYXRlKHQudXBkYXRlTW9kZSl9O3JldHVybiBzKHUpLHkoZCksbyhbKCk9PnQub3B0aW9ucywoKT0+dC5kYXRhXSwoZSxuKT0+e2xldFtpLGFdPWUsW28sc109bixjPXgobC52YWx1ZSk7aWYoIWMpcmV0dXJuO2xldCB1PSExO2lmKGkpe2xldCBlPVpjKGkpLHQ9WmMobyk7ZSYmZSE9PXQmJigkYyhjLGUpLHU9ITApfWlmKGEpe2xldCBlPVpjKGEubGFiZWxzKSxuPVpjKHMubGFiZWxzKSxyPVpjKGEuZGF0YXNldHMpLGk9WmMocy5kYXRhc2V0cyk7ZSE9PW4mJihlbChjLmNvbmZpZy5kYXRhLGUpLHU9ITApLHImJnIhPT1pJiYodGwoYy5jb25maWcuZGF0YSxyLHQuZGF0YXNldElkS2V5KSx1PSEwKX11JiZyKCgpPT57cChjKX0pfSx7ZGVlcDohMH0pLCgpPT5lKGBjYW52YXNgLHtyb2xlOmBpbWdgLCJhcmlhLWxhYmVsIjp0LmFyaWFMYWJlbCwiYXJpYS1kZXNjcmliZWRieSI6dC5hcmlhRGVzY3JpYmVkYnkscmVmOmN9LFtlKGBwYCx7fSxbYS5kZWZhdWx0P2EuZGVmYXVsdCgpOmBgXSldKX19KTtmdW5jdGlvbiBpbCh0LG4pe3JldHVybiBSby5yZWdpc3RlcihuKSxlZSh7cHJvcHM6cWMsc2V0dXAobixyKXtsZXR7ZXhwb3NlOml9PXIsYT1tKG51bGwpLHM9bShudWxsKTtvKCgpPT5zLnZhbHVlPy5jaGFydD8/bnVsbCxlPT57YS52YWx1ZT1lfSx7Zmx1c2g6YHN5bmNgfSksaSh7Y2hhcnQ6YX0pO2xldCBjPWU9PntzLnZhbHVlPWV9O3JldHVybigpPT5lKHJsLFhjKHtyZWY6Y30se3R5cGU6dCwuLi5ufSkpfX0pfXZhciBhbD1pbChgbGluZWAsTWkpO1JvLnJlZ2lzdGVyKGxjLHBjLEJzLGljLE1pLFFvLGVzLGpzKTtmdW5jdGlvbiBvbCgpe2xldCBlPWYoYGApLHQ9ZihgYCksbj1mKGBgKTtmdW5jdGlvbiByKCl7bGV0IHI9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO2UudmFsdWU9ci5nZXRQcm9wZXJ0eVZhbHVlKGAtLWZvcmVncm91bmRgKS50cmltKCksdC52YWx1ZT1yLmdldFByb3BlcnR5VmFsdWUoYC0tbXV0ZWQtZm9yZWdyb3VuZGApLnRyaW0oKSxuLnZhbHVlPXIuZ2V0UHJvcGVydHlWYWx1ZShgLS1ib3JkZXJgKS50cmltKCl9bGV0IGE7cmV0dXJuIHMoKCk9PntyKCksYT13aW5kb3cubWF0Y2hNZWRpYShgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKWApLGEuYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCxyKX0pLGkoKCk9PnthPy5yZW1vdmVFdmVudExpc3RlbmVyKGBjaGFuZ2VgLHIpfSkse2ZvcmVncm91bmQ6ZSxtdXRlZEZvcmVncm91bmQ6dCxib3JkZXI6bn19dmFyIHNsPVtgYXJpYS1sYWJlbGBdLGNsPWVlKHtfX25hbWU6YFRpbWVTZXJpZXNDaGFydGAscHJvcHM6e2xhYmVsczp7fSxkYXRhc2V0czp7fSxjb21wYXJpc29uRGF0YXNldHM6e2RlZmF1bHQ6KCk9PltdfSxzdGFja2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmFsdWVGb3JtYXR0ZXI6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDppZX0sYXJpYUxhYmVsOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49YHRpbWVzZXJpZXMtY2hhcnQtZGVzYy0ke0QoKX1gLHI9YigoKT0+dC5kYXRhc2V0cy5sZW5ndGg9PT0wfHx0LmxhYmVscy5sZW5ndGg9PT0wP2BObyBkYXRhIGZvciB0aGlzIHJhbmdlLmA6dC5kYXRhc2V0cy5tYXAoZT0+e2xldCBuPWUuZGF0YS5sZW5ndGg+MD9lLmRhdGFbZS5kYXRhLmxlbmd0aC0xXTowLHI9ZS5kYXRhLnJlZHVjZSgoZSx0KT0+ZSt0LDApO3JldHVybmAke2UubGFiZWx9OiBsYXRlc3QgJHt0LnZhbHVlRm9ybWF0dGVyKG4pfSwgdG90YWwgJHt0LnZhbHVlRm9ybWF0dGVyKHIpfSBvdmVyICR7dC5sYWJlbHMubGVuZ3RofSBidWNrZXRzLmB9KS5qb2luKGAgYCkpLHtmb3JlZ3JvdW5kOmksbXV0ZWRGb3JlZ3JvdW5kOmEsYm9yZGVyOm99PW9sKCk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoZSkudHJpbSgpfWxldCBjPWIoKCk9PntpLnZhbHVlO2xldCBlPXQuZGF0YXNldHMubWFwKGU9PntsZXQgbj1zKGUuY29sb3IpO3JldHVybntsYWJlbDplLmxhYmVsLGRhdGE6ZS5kYXRhLGJvcmRlckNvbG9yOm4sYmFja2dyb3VuZENvbG9yOm4sZmlsbDp0LnN0YWNrZWQsc3RhY2s6dC5zdGFja2VkP2BtYWluYDp2b2lkIDAsdGVuc2lvbjouMixwb2ludFJhZGl1czoyLGJvcmRlcldpZHRoOjJ9fSksbj10LmNvbXBhcmlzb25EYXRhc2V0cy5tYXAoZT0+e2xldCB0PXMoZS5jb2xvcik7cmV0dXJue2xhYmVsOmAke2UubGFiZWx9JHtlLmxhYmVsU3VmZml4Pz9gYH1gLGRhdGE6ZS5kYXRhLGJvcmRlckNvbG9yOnQsYmFja2dyb3VuZENvbG9yOmB0cmFuc3BhcmVudGAsYm9yZGVyRGFzaDpbNiw0XSxmaWxsOiExLHRlbnNpb246LjIscG9pbnRSYWRpdXM6MCxib3JkZXJXaWR0aDoxLjV9fSk7cmV0dXJue2xhYmVsczp0LmxhYmVscyxkYXRhc2V0czpbLi4uZSwuLi5uXX19KSxsPWIoKCk9Pih7cmVzcG9uc2l2ZTohMCxtYWludGFpbkFzcGVjdFJhdGlvOiExLGFuaW1hdGlvbjohMSxpbnRlcmFjdGlvbjp7bW9kZTpgaW5kZXhgLGludGVyc2VjdDohMX0sc2NhbGVzOnt4OntzdGFja2VkOnQuc3RhY2tlZCxncmlkOntjb2xvcjpvLnZhbHVlLGRpc3BsYXk6ITF9LHRpY2tzOntjb2xvcjphLnZhbHVlfX0seTp7c3RhY2tlZDp0LnN0YWNrZWQsYmVnaW5BdFplcm86ITAsZ3JpZDp7Y29sb3I6by52YWx1ZX0sdGlja3M6e2NvbG9yOmEudmFsdWUsY2FsbGJhY2s6ZT0+dC52YWx1ZUZvcm1hdHRlcihOdW1iZXIoZSkpfX19LHBsdWdpbnM6e2xlZ2VuZDp7ZGlzcGxheTp0LmRhdGFzZXRzLmxlbmd0aD4xfHx0LmNvbXBhcmlzb25EYXRhc2V0cy5sZW5ndGg+MCxsYWJlbHM6e2NvbG9yOmkudmFsdWV9fSx0b29sdGlwOntjYWxsYmFja3M6e2xhYmVsOmU9PmAke2UuZGF0YXNldC5sYWJlbH06ICR7dC52YWx1ZUZvcm1hdHRlcihlLnBhcnNlZC55Pz8wKX1gfX19fSkpO3JldHVybih0LGkpPT4oXygpLEMoYGRpdmAse2NsYXNzOmBoLTcyIHctZnVsbGAscm9sZTpgaW1nYCwiYXJpYS1sYWJlbCI6ZS5hcmlhTGFiZWwsImFyaWEtZGVzY3JpYmVkYnkiOm59LFtkKHcoYWwpLHtkYXRhOmMudmFsdWUsb3B0aW9uczpsLnZhbHVlfSxudWxsLDgsW2BkYXRhYCxgb3B0aW9uc2BdKSxTKGBwYCx7aWQ6bixjbGFzczpgc3Itb25seWB9LEUoci52YWx1ZSksMSldLDgsc2wpKX19KSxsbD1lZSh7X19uYW1lOmBDaGFydENhcmRgLHByb3BzOnt0aXRsZTp7fSxkZXNjcmlwdGlvbjp7ZGVmYXVsdDp2b2lkIDB9LHN0YXRlOnt9LGVycm9yOntkZWZhdWx0OmBgfSxvblJldHJ5Ont0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6dm9pZCAwfSxlbXB0eVRpdGxlOntkZWZhdWx0OmBObyBkYXRhIGZvciB0aGlzIHJhbmdlLmB9LGVtcHR5RGVzY3JpcHRpb246e2RlZmF1bHQ6dm9pZCAwfSxzaG93RW1wdHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxiYXJlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sbGFiZWxzOntkZWZhdWx0OigpPT5bXX0sZGF0YXNldHM6e2RlZmF1bHQ6KCk9PltdfSxjb21wYXJpc29uRGF0YXNldHM6e2RlZmF1bHQ6KCk9PltdfSxzdGFja2VkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sdmFsdWVGb3JtYXR0ZXI6e3R5cGU6RnVuY3Rpb24sZGVmYXVsdDppZX0sYXJpYUxhYmVsOntkZWZhdWx0OmBgfX0sc2V0dXAoZSl7cmV0dXJuKHIsaSk9PmUuYmFyZT8oXygpLEMobCx7a2V5OjB9LFtlLnN0YXRlPT09YHNrZWxldG9uYD8oXygpLHAoYWUse2tleTowfSkpOmUuc3RhdGU9PT1gZXJyb3JgPyhfKCkscChuZSx7a2V5OjEsbWVzc2FnZTplLmVycm9yLCJvbi1yZXRyeSI6ZS5vblJldHJ5fSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOmUuc3RhdGU9PT1gZW1wdHlgJiZlLnNob3dFbXB0eT8oXygpLHAocmUse2tleToyLHRpdGxlOmUuZW1wdHlUaXRsZSxkZXNjcmlwdGlvbjplLmVtcHR5RGVzY3JpcHRpb259LG51bGwsOCxbYHRpdGxlYCxgZGVzY3JpcHRpb25gXSkpOmgoci4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bZChjbCx7bGFiZWxzOmUubGFiZWxzLGRhdGFzZXRzOmUuZGF0YXNldHMsImNvbXBhcmlzb24tZGF0YXNldHMiOmUuY29tcGFyaXNvbkRhdGFzZXRzLHN0YWNrZWQ6ZS5zdGFja2VkLCJ2YWx1ZS1mb3JtYXR0ZXIiOmUudmFsdWVGb3JtYXR0ZXIsYXJpYUxhYmVsOmUuYXJpYUxhYmVsfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGNvbXBhcmlzb24tZGF0YXNldHNgLGBzdGFja2VkYCxgdmFsdWUtZm9ybWF0dGVyYCxgYXJpYUxhYmVsYF0pXSx2b2lkIDAsMyldLDY0KSk6KF8oKSxwKHcodCkse2tleToxfSx7ZGVmYXVsdDphKCgpPT5bZCh3KGMpLG51bGwse2RlZmF1bHQ6YSgoKT0+W2QodyhUKSxudWxsLHtkZWZhdWx0OmEoKCk9PltnKEUoZS50aXRsZSksMSldKSxfOjF9KSxlLmRlc2NyaXB0aW9uPyhfKCkscCh3KHRlKSx7a2V5OjB9LHtkZWZhdWx0OmEoKCk9PltnKEUoZS5kZXNjcmlwdGlvbiksMSldKSxfOjF9KSk6dihgYCwhMCksaChyLiRzbG90cyxgaGVhZGVyLWV4dHJhYCldKSxfOjN9KSxkKHcobiksbnVsbCx7ZGVmYXVsdDphKCgpPT5bZS5zdGF0ZT09PWBza2VsZXRvbmA/KF8oKSxwKGFlLHtrZXk6MH0pKTplLnN0YXRlPT09YGVycm9yYD8oXygpLHAobmUse2tleToxLG1lc3NhZ2U6ZS5lcnJvciwib24tcmV0cnkiOmUub25SZXRyeX0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTplLnN0YXRlPT09YGVtcHR5YCYmZS5zaG93RW1wdHk/KF8oKSxwKHJlLHtrZXk6Mix0aXRsZTplLmVtcHR5VGl0bGUsZGVzY3JpcHRpb246ZS5lbXB0eURlc2NyaXB0aW9ufSxudWxsLDgsW2B0aXRsZWAsYGRlc2NyaXB0aW9uYF0pKTpoKHIuJHNsb3RzLGBkZWZhdWx0YCx7fSwoKT0+W2QoY2wse2xhYmVsczplLmxhYmVscyxkYXRhc2V0czplLmRhdGFzZXRzLCJjb21wYXJpc29uLWRhdGFzZXRzIjplLmNvbXBhcmlzb25EYXRhc2V0cyxzdGFja2VkOmUuc3RhY2tlZCwidmFsdWUtZm9ybWF0dGVyIjplLnZhbHVlRm9ybWF0dGVyLGFyaWFMYWJlbDplLmFyaWFMYWJlbH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgLGBjb21wYXJpc29uLWRhdGFzZXRzYCxgc3RhY2tlZGAsYHZhbHVlLWZvcm1hdHRlcmAsYGFyaWFMYWJlbGBdKV0sdm9pZCAwLDMpXSksXzozfSldKSxfOjN9KSl9fSk7ZXhwb3J0e2NsIGFzIG4sbGwgYXMgdH07",
),
},
"ClampedRangeNotice-Ch_HqyBO.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0xyIGFzIGUsX24gYXMgdCxjbiBhcyBuLGduIGFzIHIsaXIgYXMgaSxsbiBhcyBhLG9uIGFzIG8scyx2aSBhcyBjLHdpIGFzIGwseW4gYXMgdX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHtfIGFzIGQsZyBhcyBmfWZyb20iLi9pbmRleC04OENUUk5IUC5qcyI7dmFyIHA9dSh7X19uYW1lOmBDbGFtcGVkUmFuZ2VOb3RpY2VgLHByb3BzOnt3aW5kb3c6e30sc3Bhbjp7fX0sc2V0dXAodSl7bGV0IHA9dSxtPW8oKCk9PnMocC53aW5kb3cscC5zcGFuKSk7cmV0dXJuKG8scyk9Pm0udmFsdWU/KGkoKSxuKGMoZCkse2tleTowLHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDplKCgpPT5bdChjKGYpLG51bGwse2RlZmF1bHQ6ZSgoKT0+W3IobChtLnZhbHVlKSwxKV0pLF86MX0pXSksXzoxfSkpOmEoYGAsITApfX0pO2V4cG9ydHtwIGFzIHR9Ow==",
),
},
"ConfigPage-BSEq2-fo.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0MgYXMgZSxEIGFzIHQsRSBhcyBuLExyIGFzIHIsTHQgYXMgaSxPIGFzIGEsT3IgYXMgbyxRIGFzIHMsUW4gYXMgYyxTIGFzIGwsVCBhcyB1LFh0IGFzIGQsXyBhcyBmLF9uIGFzIHAsYiBhcyBtLGNpIGFzIGgsY24gYXMgZyxmciBhcyBfLGcgYXMgdixnbiBhcyB5LGd0IGFzIGIsaXIgYXMgeCxsbiBhcyBTLG4gYXMgQyxvaSBhcyB3LG9uIGFzIFQsb3QgYXMgRSxzbiBhcyBELHQgYXMgTyx1biBhcyBrLHVyIGFzIEEsdmkgYXMgaix3IGFzIE0sd2kgYXMgTix3ciBhcyBQLHggYXMgZWUseGkgYXMgdGUseW4gYXMgRix5dCBhcyBuZSx6ciBhcyByZX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHtuIGFzIGllLHIgYXMgYWUsdCBhcyBvZX1mcm9tIi4vdGFicy1DdWg2RlEwai5qcyI7aW1wb3J0e18gYXMgSSxhIGFzIEwsYyBhcyBSLGcgYXMgeixoIGFzIHNlLGkgYXMgY2UsbCBhcyBsZSxuIGFzIHVlLG8gYXMgZGUsciBhcyBmZSxzIGFzIHBlfWZyb20iLi9pbmRleC04OENUUk5IUC5qcyI7aW1wb3J0e3QgYXMgbWV9ZnJvbSIuL3VzZUNvcHlGZWVkYmFjay1DalJ6T08tVy5qcyI7aW1wb3J0e3QgYXMgaGV9ZnJvbSIuL2NsaXBib2FyZC1CNzNmWjBjMS5qcyI7aW1wb3J0e3QgYXMgZ2V9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHt0IGFzIF9lfWZyb20iLi9jb25zdW1lcnMtQ3d3a09pTXYuanMiO3ZhciB2ZT17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgc206Z3JpZC1jb2xzLTJgfSx5ZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxiZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxCPUYoe19fbmFtZTpgVGFyZ2V0UGlja2VyYCxwcm9wczp7dGFyZ2V0S2luZDp7fSx0YXJnZXROYW1lOnt9LHRhcmdldE5hbWVzOnt9LHVzZXJPcHRpb25MYWJlbDp7fX0sZW1pdHM6W2B1cGRhdGU6dGFyZ2V0S2luZGAsYHVwZGF0ZTp0YXJnZXROYW1lYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IG49ZSxpPXQsYT1gdGFyZ2V0LXBpY2tlci1raW5kLSR7UCgpfWAsbz1gdGFyZ2V0LXBpY2tlci1uYW1lLSR7UCgpfWA7ZnVuY3Rpb24gcyhlKXsoZT09PWBncm91cGB8fGU9PT1gdXNlcmApJiZpKGB1cGRhdGU6dGFyZ2V0S2luZGAsZSl9ZnVuY3Rpb24gYyhlKXtpKGB1cGRhdGU6dGFyZ2V0TmFtZWAsU3RyaW5nKGUpKX1yZXR1cm4odCxpKT0+KHgoKSxrKGBkaXZgLHZlLFtEKGBkaXZgLHllLFtEKGBsYWJlbGAse2lkOmEsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFRhcmdldGApLHAoaihwZSkseyJtb2RlbC12YWx1ZSI6ZS50YXJnZXRLaW5kLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpzfSx7ZGVmYXVsdDpyKCgpPT5bcChqKGNlKSx7ImFyaWEtbGFiZWxsZWRieSI6YX0se2RlZmF1bHQ6cigoKT0+W3AoaihmZSkpXSksXzoxfSkscChqKGRlKSxudWxsLHtkZWZhdWx0OnIoKCk9PltwKGooTCkse3ZhbHVlOmBncm91cGB9LHtkZWZhdWx0OnIoKCk9PlsuLi5pWzBdfHw9W3koYEdyb3VwYCwtMSldXSksXzoxfSkscChqKEwpLHt2YWx1ZTpgdXNlcmB9LHtkZWZhdWx0OnIoKCk9Plt5KE4obi51c2VyT3B0aW9uTGFiZWwpLDEpXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSksRChgZGl2YCxiZSxbRChgbGFiZWxgLHtpZDpvLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LE4oZS50YXJnZXRLaW5kPT09YGdyb3VwYD9gR3JvdXAgbmFtZWA6YFVzZXIgbmFtZWApLDEpLHAoaihwZSkseyJtb2RlbC12YWx1ZSI6ZS50YXJnZXROYW1lLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpjfSx7ZGVmYXVsdDpyKCgpPT5bcChqKGNlKSx7ImFyaWEtbGFiZWxsZWRieSI6b30se2RlZmF1bHQ6cigoKT0+W3AoaihmZSkse3BsYWNlaG9sZGVyOmBTZWxlY3TigKZgfSldKSxfOjF9KSxwKGooZGUpLG51bGwse2RlZmF1bHQ6cigoKT0+Wyh4KCEwKSxrKGQsbnVsbCxBKGUudGFyZ2V0TmFtZXMsZT0+KHgoKSxnKGooTCkse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OnIoKCk9Plt5KE4oZSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSkpfX0pLHhlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMS41YH0sU2U9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJgfSxDZT17a2V5OjAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sVj1GKHtfX25hbWU6YFNuaXBwZXRCbG9ja2AscHJvcHM6e3RleHQ6e30sbGFiZWw6e319LHNldHVwKGUpe2xldCB0PWUsbj1vKGBwcmVgKSx7c3RhdGU6aSxzZXQ6Y309bWUoKSxsPWYoKTthc3luYyBmdW5jdGlvbiB1KCl7bGV0IGU9YXdhaXQgaGUodC50ZXh0LG4udmFsdWU/P3ZvaWQgMCk7YyhlKSxlPT09YGZhaWxlZGAmJmwucHVzaCh7a2luZDpgZXJyb3JgLG1lc3NhZ2U6YENvdWxkIG5vdCBjb3B5IHRoZSBzbmlwcGV0LmB9KX1sZXQgZD17aWRsZTpgQ29weWAsY29waWVkOmBDb3BpZWRgLHNlbGVjdGVkOmBTZWxlY3RlZCDigJQgcHJlc3Mg4oyYL0N0cmwrQ2AsZmFpbGVkOmBDb3B5IGZhaWxlZGB9O3JldHVybih0LG4pPT57bGV0IG89XyhgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIHgoKSxrKGBkaXZgLHhlLFtEKGBkaXZgLFNlLFtlLmxhYmVsPyh4KCksayhgc3BhbmAsQ2UsTihlLmxhYmVsKSwxKSk6UyhgYCwhMCkscChqKGEpLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YG91dGxpbmVgLHNpemU6YHNtYCxjbGFzczpgbWwtYXV0b2Asb25DbGljazp1fSx7ZGVmYXVsdDpyKCgpPT5bcChvLHtpY29uOmooaSk9PT1gaWRsZWA/aihFKTpqKGkpPT09YGZhaWxlZGA/aihiKTpqKHMpLGNsYXNzOnRlKFtgc2l6ZS0zLjVgLGooaSk9PT1gZmFpbGVkYD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSksImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gLGBjbGFzc2BdKSx5KGAgYCtOKGRbaihpKV0pLDEpXSksXzoxfSldKSxEKGBwcmVgLHtyZWY6YHByZWAsY2xhc3M6YG92ZXJmbG93LXgtYXV0byByb3VuZGVkLW1kIGJvcmRlciBiZy1tdXRlZCBwLTMgZm9udC1tb25vIHRleHQteHMgc2VsZWN0LXRleHQgd2hpdGVzcGFjZS1wcmVgfSxOKGUudGV4dCksNTEzKV0pfX19KSxIPWAgIGAsd2U9L15bQS1aYS16X11bQS1aYS16MC05Ll8tXSokLyxUZT1uZXcgU2V0KFtgdHJ1ZWAsYGZhbHNlYCxgeWVzYCxgbm9gLGB5YCxgbmAsYG9uYCxgb2ZmYCxgbnVsbGAsYG5pbGAsYG5hbmAsYGluZmBdKTtmdW5jdGlvbiBVKGUpe3JldHVybiF3ZS50ZXN0KGUpfHxUZS5oYXMoZS50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBFZShlKXtyZXR1cm4gVShlKX12YXIgRGU9UmVnRXhwKGBbXFx1MDA3ZlxcdTAwODAtXFx1MDA5Zlx1MjAyOFx1MjAyOV1gLGBnYCk7ZnVuY3Rpb24gVyhlKXtyZXR1cm4gZS5yZXBsYWNlKERlLGU9PntsZXQgdD1lLmNvZGVQb2ludEF0KDApO3JldHVybiB0PD0yNTU/YFxceCR7dC50b1N0cmluZygxNikucGFkU3RhcnQoMixgMGApfWA6YFxcdSR7dC50b1N0cmluZygxNikucGFkU3RhcnQoNCxgMGApfWB9KX1mdW5jdGlvbiBHKGUpe3JldHVybiBFZShlKT9XKEpTT04uc3RyaW5naWZ5KGUpKTplfWZ1bmN0aW9uIEsoZSl7cmV0dXJuIGU9PT1udWxsP2BudWxsYDp0eXBlb2YgZT09YGJvb2xlYW5gfHx0eXBlb2YgZT09YG51bWJlcmA/U3RyaW5nKGUpOlUoZSk/VyhKU09OLnN0cmluZ2lmeShlKSk6ZX1mdW5jdGlvbiBPZShlKXtyZXR1cm4gZS5sZW5ndGg9PT0wP2BbXWA6YFske2UubWFwKGU9PksoZSkpLmpvaW4oYCwgYCl9XWB9ZnVuY3Rpb24ga2UoZSl7cmV0dXJuIGUubGVuZ3RoPT09MD9ge31gOmB7ICR7ZS5tYXAoKFtlLHRdKT0+YCR7RyhlKX06ICR7Syh0KX1gKS5qb2luKGAsIGApfSB9YH1mdW5jdGlvbiBBZShlKXtyZXR1cm4gdHlwZW9mIGU9PWBvYmplY3RgJiYhIWUmJiFBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIHEoZSl7cmV0dXJuIGU9PT1udWxsfHx0eXBlb2YgZT09YHN0cmluZ2B8fHR5cGVvZiBlPT1gbnVtYmVyYHx8dHlwZW9mIGU9PWBib29sZWFuYH1mdW5jdGlvbiBqZShlLHQpe2xldCBuPUgucmVwZWF0KHQpLHI9W107Zm9yKGxldFtpLGFdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2lmKGE9PT12b2lkIDApY29udGludWU7bGV0IGU9YCR7bn0ke0coaSl9OmA7aWYocShhKSlyLnB1c2goYCR7ZX0gJHtLKGEpfWApO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShhKSl7aWYoYS5ldmVyeShxKSlyLnB1c2goYCR7ZX0gJHtPZShhKX1gKTtlbHNle3IucHVzaChlKTtmb3IobGV0IGUgb2YgYSlyLnB1c2goYCR7bn0ke0h9LSAke3EoZSk/SyhlKTpKU09OLnN0cmluZ2lmeShlKX1gKX19ZWxzZSBBZShhKSYmKE9iamVjdC5rZXlzKGEpLmZpbHRlcihlPT5hW2VdIT09dm9pZCAwKS5sZW5ndGg9PT0wP3IucHVzaChgJHtlfSB7fWApOihyLnB1c2goZSksci5wdXNoKC4uLmplKGEsdCsxKSkpKX1yZXR1cm4gcn1mdW5jdGlvbiBNZShlLHQ9MCl7cmV0dXJuIGplKGUsdCkuam9pbihgCmApfWZ1bmN0aW9uIE5lKGUsdCl7bGV0IG49dCxyPVtgc3BlY2AsYHBsdWdpbmAsYGxsbWdhdGV3YXlgLC4uLmVdO2ZvcihsZXQgZT1yLmxlbmd0aC0xO2U+PTA7ZS0tKW49e1tyW2VdXTpufTtyZXR1cm4gTWUobil9ZnVuY3Rpb24gSihlKXtpZihlPT09bnVsbHx8dHlwZW9mIGU9PWBzdHJpbmdgfHx0eXBlb2YgZT09YG51bWJlcmB8fHR5cGVvZiBlPT1gYm9vbGVhbmApcmV0dXJuIGU7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5tYXAoSik7aWYodHlwZW9mIGU9PWBvYmplY3RgKXtsZXQgdD17fTtmb3IobGV0W24scl1vZiBPYmplY3QuZW50cmllcyhlKSl0W25dPUoocik7cmV0dXJuIHR9cmV0dXJuIFN0cmluZyhlKX12YXIgUGU9L15bYS16QS1aMC05Ll8tXSskLztmdW5jdGlvbiBGZShlKXtyZXR1cm4gUGUudGVzdChlKX1mdW5jdGlvbiBZKGUpe2xldCB0PW5ldyBTZXQ7Zm9yKGxldCBuIG9mIGUuc3BsaXQoYCxgKSl7bGV0IGU9bi50cmltKCk7ZSYmdC5hZGQoZSl9cmV0dXJuIEFycmF5LmZyb20odCl9ZnVuY3Rpb24gSWUoZSl7cmV0dXJuIGUudHJpbSgpIT09YGB9ZnVuY3Rpb24gWChlKXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGUpJiZlPj0wfWZ1bmN0aW9uIExlKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0wfWZ1bmN0aW9uIFJlKGUsdCl7cmV0dXJuIHQubGVuZ3RoPjAmJmUubGVuZ3RoPT09MD9gQSBwZXJzb25hbCBncmFudCBuYW1pbmcgbW9kZWxzIG5lZWRzIGF0IGxlYXN0IG9uZSBwcm92aWRlciB0b28g4oCUIGFuIGVtcHR5IHByb3ZpZGVycyBsaXN0IG1lYW5zIEVWRVJZIGNvbmZpZ3VyZWQgcHJvdmlkZXIgKG5vdCBub25lKSwgc28gdGhpcyB3b3VsZCBzaWxlbnRseSB3aWRlbiBhY2Nlc3MgZmFyIGJleW9uZCB3aGF0IHdhcyB0eXBlZCAoYXV0aC5nbyByZWplY3RzIGl0KS5gOm51bGx9dmFyIHplPVtgcmVxdWVzdHNQZXJNaW51dGVgLGByZXF1ZXN0c1BlckRheWAsYHRva2Vuc1BlckRheWAsYHRva2Vuc1Blck1vbnRoYCxgY29zdFBlckRheVVTRGAsYGNvc3RQZXJNb250aFVTRGBdO2Z1bmN0aW9uIFooZSl7bGV0IHQ9W107Zm9yKGxldCBuIG9mIHplKXtsZXQgcj1lW25dO3ImJnQucHVzaChbbixyXSl9cmV0dXJuIHR9ZnVuY3Rpb24gQmUoZSx0KXtsZXQgbj17fTtmb3IobGV0W2Uscl1vZiBaKHQpKW5bZV09cjtyZXR1cm4gTmUoW2Bncm91cHNgLGVdLHtsaW1pdHM6bn0pfWZ1bmN0aW9uIFEoZSl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWZ1bmN0aW9uICQoZSl7cmV0dXJuYFske2UubWFwKFEpLmpvaW4oYCwgYCl9XWB9ZnVuY3Rpb24gVmUoZSl7cmV0dXJuYHske1ooZSkubWFwKChbZSx0XSk9PmAke1EoZSl9OiAke3R9YCkuam9pbihgLCBgKX19YH1mdW5jdGlvbiBIZShlKXtyZXR1cm5gImxpbWl0cyI6ICR7VmUoZSl9YH1mdW5jdGlvbiBVZShlLHQpe3JldHVybiBOZShbYGdyb3Vwc2AsZV0se3Byb3ZpZGVyczp0LnByb3ZpZGVycyxtb2RlbHM6dC5tb2RlbHMsbWNwU2VydmVyczp0Lm1jcFNlcnZlcnMsYWdlbnRzOnQuYWdlbnRzfSl9ZnVuY3Rpb24gV2UoZSl7bGV0IHQ9W107cmV0dXJuIGUucHJvdmlkZXJzLmxlbmd0aD4wJiZ0LnB1c2goYCJwcm92aWRlcnMiOiAkeyQoZS5wcm92aWRlcnMpfWApLGUubW9kZWxzLmxlbmd0aD4wJiZ0LnB1c2goYCJtb2RlbHMiOiAkeyQoZS5tb2RlbHMpfWApLHQuam9pbihgLCBgKX1mdW5jdGlvbiBHZShlLHQpe2xldCBuPVtdO3QuY29udGV4dFRva2VucyE9PXZvaWQgMCYmbi5wdXNoKFtgY29udGV4dFRva2Vuc2AsdC5jb250ZXh0VG9rZW5zXSksdC5mcmVlIT09dm9pZCAwJiZuLnB1c2goW2BmcmVlYCx0LmZyZWVdKTtsZXQgcj1rZShuKTtyZXR1cm5bYHNwZWM6YCxgICBwbHVnaW46YCxgICAgIGxsbWdhdGV3YXk6YCxgICAgICAgbW9kZWxNZXRhOmAsYCAgICAgICAgJHtKU09OLnN0cmluZ2lmeShlKX06ICR7cn1gXS5qb2luKGAKYCl9ZnVuY3Rpb24gS2UoZSx0KXtsZXQgbj1rZShbW2BpbnB1dFBlck1gLHQuaW5wdXRQZXJNXSxbYG91dHB1dFBlck1gLHQub3V0cHV0UGVyTV1dKTtyZXR1cm5bYHNwZWM6YCxgICBwbHVnaW46YCxgICAgIGxsbWdhdGV3YXk6YCxgICAgICAgcHJpY2luZzpgLGAgICAgICAgICR7RyhlKX06ICR7bn1gXS5qb2luKGAKYCl9dmFyIHFlPWBzay1sbG1ndy1SRVBMQUNFX01FYDtmdW5jdGlvbiBKZSgpe2xldCBlPWNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMzIpKSx0PWBgO2ZvcihsZXQgbiBvZiBlKXQrPVN0cmluZy5mcm9tQ2hhckNvZGUobik7cmV0dXJuYHNrLWxsbWd3LSR7YnRvYSh0KS5yZXBsYWNlKC9cKy9nLGAtYCkucmVwbGFjZSgvXC8vZyxgX2ApLnJlcGxhY2UoLz0rJC8sYGApfWB9ZnVuY3Rpb24gWWUoZSl7bGV0IHQ9W2AibmFtZSI6ICR7UShlLm5hbWUpfWAsYCJhcGlLZXkiOiAke1EoZS5hcGlLZXkpfWBdO3JldHVybiBlLmdyb3VwJiZ0LnB1c2goYCJncm91cCI6ICR7UShlLmdyb3VwKX1gKSxlLmdyb3VwcyYmZS5ncm91cHMubGVuZ3RoPjAmJnQucHVzaChgImdyb3VwcyI6ICR7JChlLmdyb3Vwcyl9YCksZS5wcm92aWRlcnMmJmUucHJvdmlkZXJzLmxlbmd0aD4wJiZ0LnB1c2goYCJwcm92aWRlcnMiOiAkeyQoZS5wcm92aWRlcnMpfWApLGUubW9kZWxzJiZlLm1vZGVscy5sZW5ndGg+MCYmdC5wdXNoKGAibW9kZWxzIjogJHskKGUubW9kZWxzKX1gKSxlLmxpbWl0cyYmWihlLmxpbWl0cykubGVuZ3RoPjAmJnQucHVzaChgImxpbWl0cyI6ICR7VmUoZS5saW1pdHMpfWApLGUuYWRtaW4mJnQucHVzaChgImFkbWluIjogJHtLKCEwKX1gKSxgeyR7dC5qb2luKGAsIGApfX1gfWZ1bmN0aW9uIFhlKGUsdCl7bGV0IG49aChgZ3JvdXBgKSxyPWgoYGApO3JldHVybnt0YXJnZXRLaW5kOm4sdGFyZ2V0TmFtZTpyLHRhcmdldE5hbWVzOlQoKCk9Pm4udmFsdWU9PT1gZ3JvdXBgP2UoKTp0KCkpLG5hbWVWYWxpZDpUKCgpPT5uLnZhbHVlPT09YGdyb3VwYD9GZShyLnZhbHVlLnRyaW0oKSk6SWUoci52YWx1ZSkpLHNuaXBwZXRMYWJlbDpUKCgpPT5uLnZhbHVlPT09YGdyb3VwYD9gUGFzdGUgaW50byBtaWRkbGV3YXJlLnlhbWxgOmBNZXJnZSBpbnRvICR7ci52YWx1ZX3igJlzIHVzZXJzLmpzb24gbGluZWApfX12YXIgWmU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sUWU9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sJGU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sZXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sdHQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sbnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0scnQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGl0PUYoe19fbmFtZTpgR3JhbnRGb3JtYCxwcm9wczp7Z3JvdXBOYW1lczp7fSx1c2VyTmFtZXM6e319LHNldHVwKGUpe2xldCB0PWUse3RhcmdldEtpbmQ6bix0YXJnZXROYW1lOmksdGFyZ2V0TmFtZXM6YSxuYW1lVmFsaWQ6byxzbmlwcGV0TGFiZWw6c309WGUoKCk9PnQuZ3JvdXBOYW1lcywoKT0+dC51c2VyTmFtZXMpLGM9aChgYCksbD1oKGBgKSx1PWgoYGApLGY9aChgYCksbT1UKCgpPT5ZKGMudmFsdWUpKSxfPVQoKCk9PlkobC52YWx1ZSkpLHY9VCgoKT0+WSh1LnZhbHVlKSksYj1UKCgpPT5ZKGYudmFsdWUpKSxDPVQoKCk9Pm4udmFsdWU9PT1gdXNlcmA/UmUobS52YWx1ZSxfLnZhbHVlKTpudWxsKSx3PVQoKCk9Pm0udmFsdWUubGVuZ3RoPT09MCYmXy52YWx1ZS5sZW5ndGg9PT0wJiZ2LnZhbHVlLmxlbmd0aD09PTAmJmIudmFsdWUubGVuZ3RoPT09MCksRT1UKCgpPT4hby52YWx1ZXx8Qy52YWx1ZXx8dy52YWx1ZT9udWxsOm4udmFsdWU9PT1gZ3JvdXBgP1VlKGkudmFsdWUudHJpbSgpLHtwcm92aWRlcnM6bS52YWx1ZSxtb2RlbHM6Xy52YWx1ZSxtY3BTZXJ2ZXJzOnYudmFsdWUsYWdlbnRzOmIudmFsdWV9KTpXZSh7cHJvdmlkZXJzOm0udmFsdWUsbW9kZWxzOl8udmFsdWV9KXx8bnVsbCk7cmV0dXJuKGUsdCk9Pih4KCksayhgZGl2YCxaZSxbcChCLHsidGFyZ2V0LWtpbmQiOmoobiksInRhcmdldC1uYW1lIjpqKGkpLCJ0YXJnZXQtbmFtZXMiOmooYSksInVzZXItb3B0aW9uLWxhYmVsIjpgVXNlciAocGVyc29uYWwgZ3JhbnQsIGV4aXN0aW5nIHVzZXJzLmpzb24gZW50cnkpYCwib25VcGRhdGU6dGFyZ2V0S2luZCI6dFswXXx8PWU9Pm4udmFsdWU9ZSwib25VcGRhdGU6dGFyZ2V0TmFtZSI6dFsxXXx8PWU9PmkudmFsdWU9ZX0sbnVsbCw4LFtgdGFyZ2V0LWtpbmRgLGB0YXJnZXQtbmFtZWAsYHRhcmdldC1uYW1lc2BdKSxEKGBkaXZgLFFlLFtEKGBkaXZgLCRlLFt0WzZdfHw9RChgbGFiZWxgLHtmb3I6YGdyYW50LXByb3ZpZGVyc2AsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByb3ZpZGVycyAoY29tbWEtc2VwYXJhdGVkLCBlbXB0eSA9IGFsbClgLC0xKSxwKGooUikse2lkOmBncmFudC1wcm92aWRlcnNgLG1vZGVsVmFsdWU6Yy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFsyXXx8PWU9PmMudmFsdWU9ZSxwbGFjZWhvbGRlcjpgYW50aHJvcGljLCBvcGVuYWlgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksRChgZGl2YCxldCxbdFs3XXx8PUQoYGxhYmVsYCx7Zm9yOmBncmFudC1tb2RlbHNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNb2RlbHMgKGNvbW1hLXNlcGFyYXRlZCwgZW1wdHkgPSBhbGwpYCwtMSkscChqKFIpLHtpZDpgZ3JhbnQtbW9kZWxzYCxtb2RlbFZhbHVlOmwudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbM118fD1lPT5sLnZhbHVlPWUscGxhY2Vob2xkZXI6YGFudGhyb3BpYy9jbGF1ZGUtc29ubmV0LTVgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksaihuKT09PWBncm91cGA/KHgoKSxrKGQse2tleTowfSxbRChgZGl2YCx0dCxbdFs4XXx8PUQoYGxhYmVsYCx7Zm9yOmBncmFudC1tY3BgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNQ1Agc2VydmVycyAoY29tbWEtc2VwYXJhdGVkLCBlbXB0eSA9IGFsbClgLC0xKSxwKGooUikse2lkOmBncmFudC1tY3BgLG1vZGVsVmFsdWU6dS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFs0XXx8PWU9PnUudmFsdWU9ZSxwbGFjZWhvbGRlcjpgZmV0Y2gsIHdlYXRoZXJgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksRChgZGl2YCxudCxbdFs5XXx8PUQoYGxhYmVsYCx7Zm9yOmBncmFudC1hZ2VudHNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBBZ2VudHMgKGNvbW1hLXNlcGFyYXRlZCwgZW1wdHkgPSBhbGwpYCwtMSkscChqKFIpLHtpZDpgZ3JhbnQtYWdlbnRzYCxtb2RlbFZhbHVlOmYudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbNV18fD1lPT5mLnZhbHVlPWUscGxhY2Vob2xkZXI6YGFnZW50a2l0YH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pXSw2NCkpOlMoYGAsITApXSksQy52YWx1ZT8oeCgpLGcoaihJKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpyKCgpPT5bcChqKHopLG51bGwse2RlZmF1bHQ6cigoKT0+W3koTihDLnZhbHVlKSwxKV0pLF86MX0pXSksXzoxfSkpOlMoYGAsITApLEUudmFsdWU/KHgoKSxnKFYse2tleToxLGxhYmVsOmoocyksdGV4dDpFLnZhbHVlfSxudWxsLDgsW2BsYWJlbGAsYHRleHRgXSkpOih4KCksayhgcGAscnQsYFBpY2sgYSB0YXJnZXQgYW5kIGF0IGxlYXN0IG9uZSBsaXN0IHRvIGJ1aWxkIGEgc25pcHBldC5gKSldKSl9fSksYXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sb3Q9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0zYH0sc3Q9W2Bmb3JgXSxjdD17a2V5OjB9LGx0PXtrZXk6MX0sdXQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGR0PUYoe19fbmFtZTpgTGltaXRzRm9ybWAscHJvcHM6e2dyb3VwTmFtZXM6e30sdXNlck5hbWVzOnt9fSxzZXR1cChlKXtsZXQgdD1lLHt0YXJnZXRLaW5kOm4sdGFyZ2V0TmFtZTppLHRhcmdldE5hbWVzOmEsbmFtZVZhbGlkOm8sc25pcHBldExhYmVsOnN9PVhlKCgpPT50Lmdyb3VwTmFtZXMsKCk9PnQudXNlck5hbWVzKSxjPW5ldyBTZXQoW2ByZXF1ZXN0c1Blck1pbnV0ZWAsYHJlcXVlc3RzUGVyRGF5YCxgdG9rZW5zUGVyRGF5YCxgdG9rZW5zUGVyTW9udGhgXSk7ZnVuY3Rpb24gbChlLHQpe3JldHVybiBjLmhhcyhlKT9MZSh0KTpYKHQpfWxldCB1PVt7a2V5OmByZXF1ZXN0c1Blck1pbnV0ZWAsbGFiZWw6YFJlcXVlc3RzL21pbnV0ZWB9LHtrZXk6YHJlcXVlc3RzUGVyRGF5YCxsYWJlbDpgUmVxdWVzdHMvZGF5YH0se2tleTpgdG9rZW5zUGVyRGF5YCxsYWJlbDpgVG9rZW5zL2RheSAoaW4rb3V0KWB9LHtrZXk6YHRva2Vuc1Blck1vbnRoYCxsYWJlbDpgVG9rZW5zL21vbnRoIChpbitvdXQpYH0se2tleTpgY29zdFBlckRheVVTRGAsbGFiZWw6YENvc3QvZGF5IChVU0QpYH0se2tleTpgY29zdFBlck1vbnRoVVNEYCxsYWJlbDpgQ29zdC9tb250aCAoVVNEKWB9XSxmPXcoe3JlcXVlc3RzUGVyTWludXRlOmBgLHJlcXVlc3RzUGVyRGF5OmBgLHRva2Vuc1BlckRheTpgYCx0b2tlbnNQZXJNb250aDpgYCxjb3N0UGVyRGF5VVNEOmBgLGNvc3RQZXJNb250aFVTRDpgYH0pLG09VCgoKT0+dS5maWx0ZXIoKHtrZXk6ZX0pPT5mW2VdLnRyaW0oKSE9PWBgJiYhbChlLE51bWJlcihmW2VdKSkpLm1hcChlPT5lLmxhYmVsKSksaD1UKCgpPT51LmZpbHRlcigoe2tleTplfSk9PmMuaGFzKGUpJiZmW2VdLnRyaW0oKSE9PWBgJiYhbChlLE51bWJlcihmW2VdKSkpLm1hcChlPT5lLmxhYmVsKSksXz1UKCgpPT51LmZpbHRlcigoe2tleTplfSk9PiFjLmhhcyhlKSYmZltlXS50cmltKCkhPT1gYCYmIWwoZSxOdW1iZXIoZltlXSkpKS5tYXAoZT0+ZS5sYWJlbCkpLHY9VCgoKT0+e2xldCBlPXt9O2ZvcihsZXR7a2V5OnR9b2YgdSl7bGV0IG49TnVtYmVyKGZbdF0pO2ZbdF0udHJpbSgpIT09YGAmJmwodCxuKSYmbj4wJiYoZVt0XT1uKX1yZXR1cm4gZX0pLHk9VCgoKT0+IW8udmFsdWV8fG0udmFsdWUubGVuZ3RoPjB8fE9iamVjdC5rZXlzKHYudmFsdWUpLmxlbmd0aD09PTA/bnVsbDpuLnZhbHVlPT09YGdyb3VwYD9CZShpLnZhbHVlLnRyaW0oKSx2LnZhbHVlKTpIZSh2LnZhbHVlKSk7cmV0dXJuKGUsdCk9Pih4KCksayhgZGl2YCxhdCxbcChCLHsidGFyZ2V0LWtpbmQiOmoobiksInRhcmdldC1uYW1lIjpqKGkpLCJ0YXJnZXQtbmFtZXMiOmooYSksInVzZXItb3B0aW9uLWxhYmVsIjpgVXNlciAoZXhpc3RpbmcgdXNlcnMuanNvbiBlbnRyeSlgLCJvblVwZGF0ZTp0YXJnZXRLaW5kIjp0WzBdfHw9ZT0+bi52YWx1ZT1lLCJvblVwZGF0ZTp0YXJnZXROYW1lIjp0WzFdfHw9ZT0+aS52YWx1ZT1lfSxudWxsLDgsW2B0YXJnZXQta2luZGAsYHRhcmdldC1uYW1lYCxgdGFyZ2V0LW5hbWVzYF0pLEQoYGRpdmAsb3QsWyh4KCksayhkLG51bGwsQSh1LGU9PkQoYGRpdmAse2tleTplLmtleSxjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LFtEKGBsYWJlbGAse2ZvcjpgbGltaXRzLSR7ZS5rZXl9YCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxOKGUubGFiZWwpLDksc3QpLHAoaihSKSx7aWQ6YGxpbWl0cy0ke2Uua2V5fWAsbW9kZWxWYWx1ZTpmW2Uua2V5XSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dD0+ZltlLmtleV09dCx0eXBlOmBudW1iZXJgLG1pbjpgMGAsc3RlcDpqKGMpLmhhcyhlLmtleSk/YDFgOmBhbnlgLHBsYWNlaG9sZGVyOmB1bnNldGB9LG51bGwsOCxbYGlkYCxgbW9kZWxWYWx1ZWAsYG9uVXBkYXRlOm1vZGVsVmFsdWVgLGBzdGVwYF0pXSkpLDY0KSldKSxtLnZhbHVlLmxlbmd0aD8oeCgpLGcoaihJKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpyKCgpPT5bcChqKHopLG51bGwse2RlZmF1bHQ6cigoKT0+W2gudmFsdWUubGVuZ3RoPyh4KCksayhgcGAsY3QsYEVudGVyIGEgbm9uLW5lZ2F0aXZlIHdob2xlIG51bWJlciBmb3I6IGArTihoLnZhbHVlLmpvaW4oYCwgYCkpK2AuYCwxKSk6UyhgYCwhMCksXy52YWx1ZS5sZW5ndGg/KHgoKSxrKGBwYCxsdCxgRW50ZXIgYSBub24tbmVnYXRpdmUgbnVtYmVyIGZvcjogYCtOKF8udmFsdWUuam9pbihgLCBgKSkrYC5gLDEpKTpTKGBgLCEwKV0pLF86MX0pXSksXzoxfSkpOlMoYGAsITApLHkudmFsdWU/KHgoKSxnKFYse2tleToxLGxhYmVsOmoocyksdGV4dDp5LnZhbHVlfSxudWxsLDgsW2BsYWJlbGAsYHRleHRgXSkpOih4KCksayhgcGAsdXQsYFBpY2sgYSB0YXJnZXQgYW5kIGF0IGxlYXN0IG9uZSBsaW1pdCB0byBidWlsZCBhIHNuaXBwZXQuYCkpXSkpfX0pLGZ0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHB0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LG10PXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMiBzbTppdGVtcy1lbmRgfSxodD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxndD17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHBiLTEuNSB0ZXh0LXNtYH0sX3Q9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHZ0PUYoe19fbmFtZTpgTW9kZWxNZXRhRm9ybWAsc2V0dXAoZSl7bGV0IHQ9aChgYCksbj1oKGBgKSxhPWgoITEpLG89VCgoKT0+dC52YWx1ZS50cmltKCkhPT1gYCkscz1UKCgpPT5OdW1iZXIobi52YWx1ZSkpLGM9VCgoKT0+bi52YWx1ZS50cmltKCkhPT1gYCksbD1UKCgpPT4hYy52YWx1ZXx8TGUocy52YWx1ZSkmJnMudmFsdWU+MCksdT1UKCgpPT4hby52YWx1ZXx8IWwudmFsdWV8fCFjLnZhbHVlJiYhYS52YWx1ZT9udWxsOkdlKHQudmFsdWUudHJpbSgpLHtjb250ZXh0VG9rZW5zOmMudmFsdWU/cy52YWx1ZTp2b2lkIDAsZnJlZTphLnZhbHVlfHx2b2lkIDB9KSk7cmV0dXJuKGUsbyk9Pih4KCksayhgZGl2YCxmdCxbRChgZGl2YCxwdCxbb1szXXx8PUQoYGxhYmVsYCx7Zm9yOmBtb2RlbG1ldGEtbW9kZWwtaWRgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNb2RlbCBpZCAocHJvdmlkZXIvbW9kZWwpYCwtMSkscChqKFIpLHtpZDpgbW9kZWxtZXRhLW1vZGVsLWlkYCxtb2RlbFZhbHVlOnQudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm9bMF18fD1lPT50LnZhbHVlPWUscGxhY2Vob2xkZXI6YGd4MTAvY3VycmVudGAsY2xhc3M6YGZvbnQtbW9ub2B9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxEKGBkaXZgLG10LFtEKGBkaXZgLGh0LFtvWzRdfHw9RChgbGFiZWxgLHtmb3I6YG1vZGVsbWV0YS1jb250ZXh0YCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ29udGV4dCB3aW5kb3cgKHRva2VucylgLC0xKSxwKGooUikse2lkOmBtb2RlbG1ldGEtY29udGV4dGAsbW9kZWxWYWx1ZTpuLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzFdfHw9ZT0+bi52YWx1ZT1lLHR5cGU6YG51bWJlcmAsbWluOmAxYCxzdGVwOmAxYCxwbGFjZWhvbGRlcjpgMTMxMDcyYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLEQoYGxhYmVsYCxndCxbcmUoRChgaW5wdXRgLHtpZDpgbW9kZWxtZXRhLWZyZWVgLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpvWzJdfHw9ZT0+YS52YWx1ZT1lLHR5cGU6YGNoZWNrYm94YCxjbGFzczpgc2l6ZS00IHJvdW5kZWQgYm9yZGVyLWlucHV0YH0sbnVsbCw1MTIpLFtbaSxhLnZhbHVlXV0pLG9bNV18fD15KGAgRnJlZSAoYmlsbGVkIGFzICQwIHJlZ2FyZGxlc3Mgb2YgYW55IHJlc29sdmVkIHByaWNlKSBgLC0xKV0pXSksYy52YWx1ZSYmIWwudmFsdWU/KHgoKSxnKGooSSkse2tleTowLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6cigoKT0+W3Aoaih6KSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5vWzZdfHw9W3koYENvbnRleHQgd2luZG93IG11c3QgYmUgYSBwb3NpdGl2ZSB3aG9sZSBudW1iZXIgb2YgdG9rZW5zLmAsLTEpXV0pLF86MX0pXSksXzoxfSkpOlMoYGAsITApLHUudmFsdWU/KHgoKSxnKFYse2tleToxLGxhYmVsOmBQYXN0ZSBpbnRvIG1pZGRsZXdhcmUueWFtbGAsdGV4dDp1LnZhbHVlfSxudWxsLDgsW2B0ZXh0YF0pKTooeCgpLGsoYHBgLF90LGBFbnRlciBhIG1vZGVsIGlkIGFuZCBzZXQgYSBjb250ZXh0IHdpbmRvdyBhbmQvb3IgZnJlZSB0byBidWlsZCBhIHNuaXBwZXQuYCkpXSkpfX0pLHl0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LGJ0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LHh0PXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMmB9LFN0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LEN0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LHd0PXtrZXk6MixjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxUdD1GKHtfX25hbWU6YFByaWNpbmdGb3JtYCxzZXR1cChlKXtsZXQgdD1oKGBgKSxuPWgoYGApLGk9aChgYCksYT1UKCgpPT50LnZhbHVlLnRyaW0oKSE9PWBgKSxvPVQoKCk9Pk51bWJlcihuLnZhbHVlKSkscz1UKCgpPT5OdW1iZXIoaS52YWx1ZSkpLGM9VCgoKT0+bi52YWx1ZS50cmltKCkhPT1gYCYmWChvLnZhbHVlKSksbD1UKCgpPT5pLnZhbHVlLnRyaW0oKSE9PWBgJiZYKHMudmFsdWUpKSx1PVQoKCk9PntsZXQgZT1bXTtyZXR1cm4gbi52YWx1ZS50cmltKCkhPT1gYCYmIWMudmFsdWUmJmUucHVzaChgSW5wdXQgcHJpY2UvTVRvayBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5gKSxpLnZhbHVlLnRyaW0oKSE9PWBgJiYhbC52YWx1ZSYmZS5wdXNoKGBPdXRwdXQgcHJpY2UvTVRvayBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5gKSwoYy52YWx1ZSYmIWwudmFsdWV8fCFjLnZhbHVlJiZsLnZhbHVlKSYmZS5wdXNoKGBTZXQgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHByaWNlL01Ub2sg4oCUIGEgb25lLXNpZGVkIG92ZXJyaWRlIGhhcyBubyBiaWxsaW5nIG1lYW5pbmcuYCksZX0pLGY9VCgoKT0+IWEudmFsdWV8fCFjLnZhbHVlfHwhbC52YWx1ZT9udWxsOktlKHQudmFsdWUudHJpbSgpLHtpbnB1dFBlck06by52YWx1ZSxvdXRwdXRQZXJNOnMudmFsdWV9KSk7cmV0dXJuKGUsYSk9Pih4KCksayhgZGl2YCx5dCxbRChgZGl2YCxidCxbYVszXXx8PUQoYGxhYmVsYCx7Zm9yOmBwcmljaW5nLW1vZGVsLWlkYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTW9kZWwgaWQgKHByb3ZpZGVyL21vZGVsKWAsLTEpLHAoaihSKSx7aWQ6YHByaWNpbmctbW9kZWwtaWRgLG1vZGVsVmFsdWU6dC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8PWU9PnQudmFsdWU9ZSxwbGFjZWhvbGRlcjpgb3BlbmFpL2dwdC00YCxjbGFzczpgZm9udC1tb25vYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLEQoYGRpdmAseHQsW0QoYGRpdmAsU3QsW2FbNF18fD1EKGBsYWJlbGAse2ZvcjpgcHJpY2luZy1pbnB1dGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYElucHV0IHByaWNlIC8gTVRvayAoVVNEKWAsLTEpLHAoaihSKSx7aWQ6YHByaWNpbmctaW5wdXRgLG1vZGVsVmFsdWU6bi52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVsxXXx8PWU9Pm4udmFsdWU9ZSx0eXBlOmBudW1iZXJgLG1pbjpgMGAsc3RlcDpgYW55YCxwbGFjZWhvbGRlcjpgMC41MGB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxEKGBkaXZgLEN0LFthWzVdfHw9RChgbGFiZWxgLHtmb3I6YHByaWNpbmctb3V0cHV0YCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgT3V0cHV0IHByaWNlIC8gTVRvayAoVVNEKWAsLTEpLHAoaihSKSx7aWQ6YHByaWNpbmctb3V0cHV0YCxtb2RlbFZhbHVlOmkudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMl18fD1lPT5pLnZhbHVlPWUsdHlwZTpgbnVtYmVyYCxtaW46YDBgLHN0ZXA6YGFueWAscGxhY2Vob2xkZXI6YDEuNTBgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSldKSx1LnZhbHVlLmxlbmd0aD8oeCgpLGcoaihJKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpyKCgpPT5bcChqKHopLG51bGwse2RlZmF1bHQ6cigoKT0+Wyh4KCEwKSxrKGQsbnVsbCxBKHUudmFsdWUsKGUsdCk9Pih4KCksayhgcGAse2tleTp0fSxOKGUpLDEpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKTpTKGBgLCEwKSxmLnZhbHVlPyh4KCksZyhWLHtrZXk6MSxsYWJlbDpgUGFzdGUgaW50byBtaWRkbGV3YXJlLnlhbWxgLHRleHQ6Zi52YWx1ZX0sbnVsbCw4LFtgdGV4dGBdKSk6KHgoKSxrKGBwYCx3dCxgRW50ZXIgYSBtb2RlbCBpZCBhbmQgYm90aCBwcmljZXMgdG8gYnVpbGQgYSBzbmlwcGV0LmApKV0pKX19KSxFdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxEdD17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgc206Z3JpZC1jb2xzLTJgfSxPdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxrdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxBdD17Y2xhc3M6YGZsZXggZ2FwLTJgfSxqdD17a2V5OjAsY2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sTXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sTnQ9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sUHQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sRnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sSXQ9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtYH0sTHQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFJ0PUYoe19fbmFtZTpgVXNlckZvcm1gLHByb3BzOntncm91cE5hbWVzOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49VCgoKT0+dC5ncm91cE5hbWVzLm1hcChlPT4oe3ZhbHVlOmUsbGFiZWw6ZX0pKSksbz1oKGBgKSxzPWgocWUpLGM9aChgYCksbD1oKGBgKSx1PWgoYGApLGQ9aChgYCksbT1oKCExKSxfPWYoKTtmdW5jdGlvbiB2KCl7dHJ5e3MudmFsdWU9SmUoKSxfLnB1c2goe2tpbmQ6YHN1Y2Nlc3NgLG1lc3NhZ2U6YEdlbmVyYXRlZCBhIG5ldyBBUEkga2V5LmB9KX1jYXRjaChlKXtfLnB1c2goe2tpbmQ6YGVycm9yYCxtZXNzYWdlOmUgaW5zdGFuY2VvZiBFcnJvcj9gQ291bGQgbm90IGdlbmVyYXRlIGFuIEFQSSBrZXk6ICR7ZS5tZXNzYWdlfWA6YENvdWxkIG5vdCBnZW5lcmF0ZSBhbiBBUEkga2V5LmB9KX19bGV0IGI9VCgoKT0+WShsLnZhbHVlKSksQz1UKCgpPT5ZKHUudmFsdWUpKSx3PVQoKCk9PlkoZC52YWx1ZSkpLEU9VCgoKT0+SWUoby52YWx1ZSkpLE89VCgoKT0+Yy52YWx1ZSE9PWBgKSxBPVQoKCk9PnMudmFsdWUudHJpbSgpIT09YGAmJnMudmFsdWUhPT1gc2stbGxtZ3ctUkVQTEFDRV9NRWApLE09VCgoKT0+UmUoQy52YWx1ZSx3LnZhbHVlKSksUD1UKCgpPT57aWYoIUUudmFsdWV8fCFPLnZhbHVlfHwhQS52YWx1ZXx8TS52YWx1ZSlyZXR1cm4gbnVsbDtsZXQgZT1iLnZhbHVlLmxlbmd0aD4wP1tjLnZhbHVlLC4uLmIudmFsdWVdOm51bGw7cmV0dXJuIFllKHtuYW1lOm8udmFsdWUudHJpbSgpLGFwaUtleTpzLnZhbHVlLnRyaW0oKSxncm91cDplP3ZvaWQgMDpjLnZhbHVlLGdyb3VwczplPz92b2lkIDAscHJvdmlkZXJzOkMudmFsdWUsbW9kZWxzOncudmFsdWUsYWRtaW46bS52YWx1ZX0pfSk7cmV0dXJuKGUsdCk9Pih4KCksayhgZGl2YCxFdCxbRChgZGl2YCxEdCxbRChgZGl2YCxPdCxbdFs3XXx8PUQoYGxhYmVsYCx7Zm9yOmB1c2VyLW5hbWVgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBOYW1lYCwtMSkscChqKFIpLHtpZDpgdXNlci1uYW1lYCxtb2RlbFZhbHVlOm8udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMF18fD1lPT5vLnZhbHVlPWUscGxhY2Vob2xkZXI6YGFsaWNlYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLHAodWUse2xhYmVsOmBQcmltYXJ5IGdyb3VwYCwibW9kZWwtdmFsdWUiOmMudmFsdWUsb3B0aW9uczpuLnZhbHVlLHBsYWNlaG9sZGVyOmBTZWxlY3TigKZgLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzFdfHw9ZT0+Yy52YWx1ZT1lfSxudWxsLDgsW2Btb2RlbC12YWx1ZWAsYG9wdGlvbnNgXSldKSxEKGBkaXZgLGt0LFt0WzldfHw9RChgbGFiZWxgLHtmb3I6YHVzZXItYXBpLWtleWAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYEFQSSBrZXlgLC0xKSxEKGBkaXZgLEF0LFtwKGooUikse2lkOmB1c2VyLWFwaS1rZXlgLG1vZGVsVmFsdWU6cy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFsyXXx8PWU9PnMudmFsdWU9ZSxjbGFzczpgZm9udC1tb25vYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKSxwKGooYSkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6dn0se2RlZmF1bHQ6cigoKT0+Wy4uLnRbOF18fD1beShgR2VuZXJhdGVgLC0xKV1dKSxfOjF9KV0pLHMudmFsdWU9PT1qKGBzay1sbG1ndy1SRVBMQUNFX01FYCk/KHgoKSxrKGBwYCxqdCxgU3RpbGwgdGhlIHBsYWNlaG9sZGVyIOKAlCBjbGljayBHZW5lcmF0ZSBmb3IgYSByZWFsIGtleS5gKSk6UyhgYCwhMCldKSxEKGBkaXZgLE10LFt0WzEwXXx8PUQoYGxhYmVsYCx7Zm9yOmB1c2VyLWV4dHJhLWdyb3Vwc2AsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYEFkZGl0aW9uYWwgZ3JvdXBzIChjb21tYS1zZXBhcmF0ZWQsIG9wdGlvbmFsKWAsLTEpLHAoaihSKSx7aWQ6YHVzZXItZXh0cmEtZ3JvdXBzYCxtb2RlbFZhbHVlOmwudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbM118fD1lPT5sLnZhbHVlPWUscGxhY2Vob2xkZXI6YGZyaWVuZHNgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksRChgZGl2YCxOdCxbRChgZGl2YCxQdCxbdFsxMV18fD1EKGBsYWJlbGAse2ZvcjpgdXNlci1wcm92aWRlcnNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBQZXJzb25hbCBncmFudDogcHJvdmlkZXJzIChvcHRpb25hbClgLC0xKSxwKGooUikse2lkOmB1c2VyLXByb3ZpZGVyc2AsbW9kZWxWYWx1ZTp1LnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzRdfHw9ZT0+dS52YWx1ZT1lLHBsYWNlaG9sZGVyOmBneDEwYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLEQoYGRpdmAsRnQsW3RbMTJdfHw9RChgbGFiZWxgLHtmb3I6YHVzZXItbW9kZWxzYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUGVyc29uYWwgZ3JhbnQ6IG1vZGVscyAob3B0aW9uYWwpYCwtMSkscChqKFIpLHtpZDpgdXNlci1tb2RlbHNgLG1vZGVsVmFsdWU6ZC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFs1XXx8PWU9PmQudmFsdWU9ZSxwbGFjZWhvbGRlcjpgZ3gxMC9jdXJyZW50YH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pXSksRChgbGFiZWxgLEl0LFtyZShEKGBpbnB1dGAseyJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzZdfHw9ZT0+bS52YWx1ZT1lLHR5cGU6YGNoZWNrYm94YCxjbGFzczpgc2l6ZS00IHJvdW5kZWQgYm9yZGVyLWlucHV0YH0sbnVsbCw1MTIpLFtbaSxtLnZhbHVlXV0pLHRbMTNdfHw9eShgIEFkbWluIChmdWxsIGFjY2VzcyB0byAvYWRtaW4vYXBpLyopIGAsLTEpXSksTS52YWx1ZT8oeCgpLGcoaihJKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpyKCgpPT5bcChqKHopLG51bGwse2RlZmF1bHQ6cigoKT0+W3koTihNLnZhbHVlKSwxKV0pLF86MX0pXSksXzoxfSkpOlMoYGAsITApLFAudmFsdWU/KHgoKSxnKFYse2tleToxLGxhYmVsOmBBZGQgYXMgYSBuZXcgbGluZSBpbiB1c2Vycy5qc29uYCx0ZXh0OlAudmFsdWV9LG51bGwsOCxbYHRleHRgXSkpOih4KCksayhgcGAsTHQsYEZpbGwgaW4gYSBuYW1lLCBncm91cCwgYW5kIGEgcmVhbCAoZ2VuZXJhdGVkKSBBUEkga2V5IHRvIGJ1aWxkIGEgc25pcHBldC5gKSldKSl9fSksenQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sQnQ9Rih7X19uYW1lOmBDaGFuZ2VIZWxwZXJgLHByb3BzOntncm91cE5hbWVzOnt9LHVzZXJOYW1lczp7fX0sc2V0dXAoZSl7bGV0IHQ9W2BsaW1pdHNgLGBncmFudGAsYHByaWNpbmdgLGBtb2RlbGAsYHVzZXJgXSxuPXtsaW1pdHM6YExpbWl0c2AsZ3JhbnQ6YEFjY2VzcyBncmFudGAscHJpY2luZzpgUHJpY2luZ2AsbW9kZWw6YE1vZGVsIG1ldGFkYXRhYCx1c2VyOmBOZXcgdXNlcmB9LGk9ZSxhPUMoKSxvPVQoKCk9PntsZXQgZT1hLnBhcmFtcy5oZWxwZXI7cmV0dXJuIHQuaW5jbHVkZXMoZT8/YGApP2U6YGxpbWl0c2B9KTtmdW5jdGlvbiBzKGUpe3R5cGVvZiBlIT1gc3RyaW5nYHx8IXQuaW5jbHVkZXMoZSl8fGEuZ29UbyhgY29uZmlnYCx7Li4uYS5wYXJhbXMsaGVscGVyOmV9KX1yZXR1cm4oZSxhKT0+KHgoKSxrKGBkaXZgLHp0LFtwKGooYWUpLHsibW9kZWwtdmFsdWUiOm8udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnN9LHtkZWZhdWx0OnIoKCk9PltwKGooaWUpLG51bGwse2RlZmF1bHQ6cigoKT0+Wyh4KCksayhkLG51bGwsQSh0LGU9PnAoaihvZSkse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OnIoKCk9Plt5KE4obltlXSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSksNjQpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSksby52YWx1ZT09PWBsaW1pdHNgPyh4KCksZyhkdCx7a2V5OjAsImdyb3VwLW5hbWVzIjppLmdyb3VwTmFtZXMsInVzZXItbmFtZXMiOmkudXNlck5hbWVzfSxudWxsLDgsW2Bncm91cC1uYW1lc2AsYHVzZXItbmFtZXNgXSkpOm8udmFsdWU9PT1gZ3JhbnRgPyh4KCksZyhpdCx7a2V5OjEsImdyb3VwLW5hbWVzIjppLmdyb3VwTmFtZXMsInVzZXItbmFtZXMiOmkudXNlck5hbWVzfSxudWxsLDgsW2Bncm91cC1uYW1lc2AsYHVzZXItbmFtZXNgXSkpOm8udmFsdWU9PT1gcHJpY2luZ2A/KHgoKSxnKFR0LHtrZXk6Mn0pKTpvLnZhbHVlPT09YG1vZGVsYD8oeCgpLGcodnQse2tleTozfSkpOih4KCksZyhSdCx7a2V5OjQsImdyb3VwLW5hbWVzIjppLmdyb3VwTmFtZXN9LG51bGwsOCxbYGdyb3VwLW5hbWVzYF0pKV0pKX19KSxWdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxIdD1GKHtfX25hbWU6YENvbmZpZ1RyZWVgLHByb3BzOntjb25maWc6e30sd2FybmluZ3M6e319LHNldHVwKGUpe2xldCB0PWUsbj1UKCgpPT5NZShKKHQuY29uZmlnKSkpO3JldHVybih0LGkpPT4oeCgpLGsoYGRpdmAsVnQsWyh4KCEwKSxrKGQsbnVsbCxBKGUud2FybmluZ3MsKGUsdCk9Pih4KCksZyhqKEkpLHtrZXk6dCx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6cigoKT0+W3AoaihzZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uaVswXXx8PVt5KGBDb25maWcgd2FybmluZ2AsLTEpXV0pLF86MX0pLHAoaih6KSxudWxsLHtkZWZhdWx0OnIoKCk9Plt5KE4oZSksMSldKSxfOjJ9LDEwMjQpXSksXzoyfSwxMDI0KSkpLDEyOCkpLHAoVix7bGFiZWw6YFJlZGFjdGVkIHJ1bm5pbmcgY29uZmlnIChyZWFkLW9ubHkpYCx0ZXh0Om4udmFsdWV9LG51bGwsOCxbYHRleHRgXSldKSl9fSksVXQ9bmUoYGNvbmZpZ2Ase3N0YXRlOigpPT4oe2RhdGE6bnVsbCxsb2FkaW5nOiExLGVycm9yOmBgfSksYWN0aW9uczp7YXN5bmMgZmV0Y2hDb25maWcoKXtpZihlKCkuaXNBdXRoZW50aWNhdGVkKXt0aGlzLmxvYWRpbmc9ITA7dHJ5e3RoaXMuZGF0YT1hd2FpdCBtKGAvYWRtaW4vYXBpL2NvbmZpZ2ApLHRoaXMuZXJyb3I9YGB9Y2F0Y2goZSl7aWYoZWUoZSkpcmV0dXJuO3RoaXMuZXJyb3I9bChlKX1maW5hbGx5e3RoaXMubG9hZGluZz0hMX19fSxhc3luYyBlbnN1cmVDb25maWcoKXt0aGlzLmxvYWRpbmd8fHRoaXMuZGF0YXx8YXdhaXQgdGhpcy5mZXRjaENvbmZpZygpfX19KSxXdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxHdD1GKHtfX25hbWU6YENvbmZpZ1BhZ2VgLHNldHVwKGUpe2xldCBpPVV0KCksYT12KCksbz1fZSgpO2MoKCk9PntpLmVuc3VyZUNvbmZpZygpLG8uZW5zdXJlQ29uc3VtZXJzKCl9KTtsZXQgcz1UKCgpPT4oYS5vdmVydmlldz8uZ3JvdXBzPz9bXSkubWFwKGU9PmUubmFtZSkpLGw9VCgoKT0+KG8uZGF0YT8udXNlcnM/P1tdKS5tYXAoZT0+ZS5uYW1lKSk7cmV0dXJuKGUsYSk9Pih4KCksayhgZGl2YCxXdCxbaihpKS5lcnJvciYmIWooaSkuZGF0YT8oeCgpLGcoaih0KSx7a2V5OjB9LHtkZWZhdWx0OnIoKCk9PltwKGoodSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bcChqKE0pLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMF18fD1beShgQ29uZmlnYCwtMSldXSksXzoxfSldKSxfOjF9KSxwKGoobiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bcChnZSx7bWVzc2FnZTpqKGkpLmVycm9yLCJvbi1yZXRyeSI6aihpKS5mZXRjaENvbmZpZ30sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pXSksXzoxfSldKSxfOjF9KSk6aihpKS5sb2FkaW5nJiYhaihpKS5kYXRhPyh4KCksZyhqKHQpLHtrZXk6MX0se2RlZmF1bHQ6cigoKT0+W3AoaihuKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTEuNWB9LHtkZWZhdWx0OnIoKCk9PltwKGooTykse2NsYXNzOmBoLTMgdy01NmB9KSxwKGooTykse2NsYXNzOmBoLTY0IHctZnVsbCByb3VuZGVkLW1kYH0pXSksXzoxfSldKSxfOjF9KSk6aihpKS5kYXRhPyh4KCksZyhIdCx7a2V5OjIsY29uZmlnOmooaSkuZGF0YS5jb25maWcsd2FybmluZ3M6aihpKS5kYXRhLndhcm5pbmdzfSxudWxsLDgsW2Bjb25maWdgLGB3YXJuaW5nc2BdKSk6UyhgYCwhMCkscChqKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W3Aoaih1KSxudWxsLHtkZWZhdWx0OnIoKCk9PltwKGooTSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxXXx8PVt5KGBDaGFuZ2UgaGVscGVyYCwtMSldXSksXzoxfSkscChqKGxlKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzJdfHw9W3koYEJ1aWxkIGEgcGFzdGUtcmVhZHkgc25pcHBldCBmb3IgbWlkZGxld2FyZS55YW1sIG9yIHVzZXJzLmpzb24g4oCUIG5vdGhpbmcgaGVyZSB3cml0ZXMgdG8gdGhlIHJ1bm5pbmcgY29uZmlnLmAsLTEpXV0pLF86MX0pXSksXzoxfSkscChqKG4pLG51bGwse2RlZmF1bHQ6cigoKT0+W3AoQnQseyJncm91cC1uYW1lcyI6cy52YWx1ZSwidXNlci1uYW1lcyI6bC52YWx1ZX0sbnVsbCw4LFtgZ3JvdXAtbmFtZXNgLGB1c2VyLW5hbWVzYF0pXSksXzoxfSldKSxfOjF9KV0pKX19KTtleHBvcnR7R3QgYXMgZGVmYXVsdH07",
),
},
"ConsumersPage-B_49_UCI.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsQ2kgYXMgdCxEIGFzIG4sRSBhcyByLEogYXMgaSxLIGFzIGEsTHIgYXMgbyxNciBhcyBzLE8gYXMgYyxRIGFzIGwsUW4gYXMgdSxUIGFzIGQsWHQgYXMgZixfbiBhcyBwLF90IGFzIG0sY2kgYXMgaCxjbiBhcyBnLGVpIGFzIGVlLGZyIGFzIF8sZyBhcyB0ZSxnbiBhcyB2LGd0IGFzIHksaXIgYXMgYixsbiBhcyB4LG4gYXMgbmUsbnIgYXMgcmUsb2kgYXMgaWUsb24gYXMgUyxzbiBhcyBDLHVuIGFzIHcsdXIgYXMgVCx2aSBhcyBFLHcgYXMgRCx3aSBhcyBPLHhpIGFzIGsseW4gYXMgQX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHthIGFzIGosYyBhcyBhZSxpIGFzIE0sbCBhcyBOLG4gYXMgUCxvIGFzIG9lLHIgYXMgc2UscyBhcyBjZSx0IGFzIGxlfWZyb20iLi9zZWFyY2gtZXhwYW5kLUItd1JPY25MLmpzIjtpbXBvcnR7biBhcyB1ZSxyIGFzIEYsdCBhcyBJfWZyb20iLi90YWJzLUN1aDZGUTBqLmpzIjtpbXBvcnR7bCBhcyBMLHQgYXMgUn1mcm9tIi4vaW5kZXgtODhDVFJOSFAuanMiO2ltcG9ydHt0IGFzIGRlfWZyb20iLi9FcnJvclN0YXRlLURESk9LSmx6LmpzIjtpbXBvcnR7dCBhcyBmZX1mcm9tIi4vY29uc3VtZXJzLUN3d2tPaU12LmpzIjtpbXBvcnR7QyBhcyBwZSxEIGFzIHosRSBhcyBCLE8gYXMgVixTIGFzIEgsVCBhcyBVLGIgYXMgVyxkIGFzIEcsZyBhcyBtZSxpIGFzIGhlLGsgYXMgSyxsIGFzIHEsbSBhcyBnZSxuIGFzIF9lLHAgYXMgdmUscyBhcyBKLHQgYXMgWSx3IGFzIFgseCBhcyB5ZX1mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHthIGFzIGJlLGMgYXMgeGUsaSBhcyBTZSxsIGFzIENlLG8gYXMgWixzIGFzIHdlfWZyb20iLi9jb2x1bW5zLUNvZWNuZjc0LmpzIjtpbXBvcnR7aSBhcyBUZSxuIGFzIEVlLHIgYXMgRGUsdCBhcyBPZX1mcm9tIi4vdXNhZ2UtYmFycy1CSk9ZSHN1Ui5qcyI7aW1wb3J0e2EgYXMga2UsYyBhcyBRLGkgYXMgQWUsbyBhcyBqZSxyIGFzIE1lLHMgYXMgTmV9ZnJvbSIuL2J1cm5kb3duLWVHY2EtZWxjLmpzIjtpbXBvcnR7YSBhcyBQZSxuIGFzIEZlLHIgYXMgSWUsdCBhcyBMZX1mcm9tIi4vVHJ5TG9uZ2VyUmFuZ2VCdXR0b24tQmgxOXlpdjguanMiO2ltcG9ydHt0IGFzIFJlfWZyb20iLi9Mb2FkU3RhdGVWaWV3LUJFYnNleDdZLmpzIjtpbXBvcnR7biBhcyB6ZSx0IGFzIEJlfWZyb20iLi91c2VTZWFyY2hRdWVyeS1CU2tDOGJHZC5qcyI7aW1wb3J0e3QgYXMgVmV9ZnJvbSIuL0VudGl0eUxpbmstQlI2cGxhV1YuanMiO2ltcG9ydHt0IGFzIEhlfWZyb20iLi9DaGFydENhcmQtQ0FDU0lYMWYuanMiO2ltcG9ydHt0IGFzIFVlfWZyb20iLi9DbGFtcGVkUmFuZ2VOb3RpY2UtQ2hfSHF5Qk8uanMiO2ltcG9ydHt0IGFzIFdlfWZyb20iLi9TdGF0RGlzYWJsZWRBbGVydC1CSnRIUlh3RS5qcyI7aW1wb3J0e3QgYXMgR2V9ZnJvbSIuL2V2ZW50cy1SOXlRbEJjMC5qcyI7ZnVuY3Rpb24gS2UoZSx0KXt0LnZhbHVlPXR5cGVvZiBlPT1gZnVuY3Rpb25gP2UodC52YWx1ZSk6ZX1mdW5jdGlvbiBxZShlLHQpe2lmKCFlLmFsbG93ZWRQcm92aWRlcnMuaW5jbHVkZXModCkpcmV0dXJue2FsbG93ZWQ6ITF9O2xldCBuPWUubW9kZWxBY2Nlc3NbdF07aWYoIW4pcmV0dXJue2FsbG93ZWQ6ITB9O2xldCByPW4uYWxsb3dlZD09PTAmJm4udG90YWw+MHx8dm9pZCAwO3JldHVybnthbGxvd2VkOiEwLGRldGFpbDpgJHtuLmFsbG93ZWR9LyR7bi50b3RhbH0gbW9kZWxzYCx6ZXJvOnJ9fWZ1bmN0aW9uIEplKGUsdCl7cmV0dXJuIHQuYWNjZXNzPT09dm9pZCAwfHx0LmFjY2Vzcz09PW51bGw/e2FsbG93ZWQ6ITB9OnthbGxvd2VkOnQuYWNjZXNzLmluY2x1ZGVzKGUubmFtZSl9fXZhciBZZT1bYG1vZGVsc2AsYG1jcGAsYGFnZW50c2BdLFhlPXttb2RlbHM6YE1vZGVsc2AsbWNwOmBNQ1Agc2VydmVyc2AsYWdlbnRzOmBBZ2VudHNgfTtmdW5jdGlvbiBaZShlKXtyZXR1cm4gWWUuaW5jbHVkZXMoZT8/YGApP2U6YG1vZGVsc2B9ZnVuY3Rpb24gUWUoZSx0LG4scil7cmV0dXJuIGUubWFwKGU9Pih7Z3JvdXA6ZS5uYW1lLHByb3ZpZGVyczpPYmplY3QuZnJvbUVudHJpZXModC5tYXAodD0+W3QscWUoZSx0KV0pKSxtY3BTZXJ2ZXJzOk9iamVjdC5mcm9tRW50cmllcyhuLm1hcCh0PT5bdC5uYW1lLEplKGUsdCldKSksYWdlbnRzOk9iamVjdC5mcm9tRW50cmllcyhyLm1hcCh0PT5bdC5uYW1lLEplKGUsdCldKSl9KSl9ZnVuY3Rpb24gJGUoZSx0LG4pe3JldHVybiBlP3Q9PT0wP2BlbXB0eWA6YHJlYWR5YDpuP2BlcnJvcmA6YGxvYWRpbmdgfXZhciBldD17a2V5OjAsImFyaWEtaGlkZGVuIjpgdHJ1ZWAsY2xhc3M6YG1sLTEgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx0dD17Y2xhc3M6YHNyLW9ubHlgfSxudD1BKHtfX25hbWU6YEFjY2Vzc01hdHJpeGAscHJvcHM6e2tpbmQ6e319LGVtaXRzOltgdXBkYXRlOmtpbmRgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgaT1lLGE9dCxzPWZlKCksaD10ZSgpLGVlPW5lKCk7dSgoKT0+e3MuZW5zdXJlQ29uc3VtZXJzKCl9KTtsZXQgcmU9UygoKT0+KGgub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10pLm1hcChlPT5lLm5hbWUpKSxpZT1TKCgpPT5oLnRhcmdldHM/Lm1jcFNlcnZlcnM/P1tdKSxBPVMoKCk9PmgudGFyZ2V0cz8uYWdlbnRzPz9bXSksaj17bW9kZWxzOmBwcm92aWRlcnNgLG1jcDpgbWNwU2VydmVyc2AsYWdlbnRzOmBhZ2VudHNgfSxhZT17bW9kZWxzOmBXaGljaCBncm91cHMgY2FuIHJlYWNoIHdoaWNoIHByb3ZpZGVycywgYW5kIGhvdyBtYW55IG9mIGVhY2ggcHJvdmlkZXIncyBtb2RlbHMuYCxtY3A6YFdoaWNoIGdyb3VwcyBjYW4gcmVhY2ggd2hpY2ggTUNQIHNlcnZlcnMuYCxhZ2VudHM6YFdoaWNoIGdyb3VwcyBjYW4gcmVhY2ggd2hpY2ggYWdlbnRzLmB9LE09e21vZGVsczpgTm8gcHJvdmlkZXJzIGNvbmZpZ3VyZWQuYCxtY3A6YE5vIE1DUCBzZXJ2ZXJzIGNvbmZpZ3VyZWQuYCxhZ2VudHM6YE5vIGFnZW50cyBjb25maWd1cmVkLmB9LE49UygoKT0+e2xldCBlPWpbaS5raW5kXTtyZXR1cm4gaS5raW5kPT09YG1vZGVsc2A/cmUudmFsdWUubWFwKHQ9Pih7a2V5OnQsbGFiZWw6dCxzZWN0aW9uOmV9KSk6KGkua2luZD09PWBtY3BgP2llLnZhbHVlOkEudmFsdWUpLm1hcCh0PT4oe2tleTp0Lm5hbWUsbGFiZWw6dC5uYW1lLHNlY3Rpb246ZX0pKX0pLFA9UygoKT0+UWUocy5kYXRhPy5ncm91cHM/P1tdLHJlLnZhbHVlLGllLnZhbHVlLEEudmFsdWUpKSxvZT1TKCgpPT5pLmtpbmQ9PT1gbW9kZWxzYD9oLm92ZXJ2aWV3IT09bnVsbDpoLnRhcmdldHMhPT1udWxsKSxzZT1TKCgpPT4kZShvZS52YWx1ZSxOLnZhbHVlLmxlbmd0aCxoLmVycm9yKSksY2U9UygoKT0+eWUoe2xvYWRpbmc6cy5sb2FkaW5nLGhhc0RhdGE6cy5kYXRhIT09bnVsbCxlcnJvcjpzLmVycm9yfSkpLGxlPVMoKCk9PmNlLnZhbHVlPT09YHJlYWR5YCYmUC52YWx1ZS5sZW5ndGg9PT0wKSxSPXthbGxvd2VkOiExfTtmdW5jdGlvbiBXKGUsdCl7cmV0dXJuIGVbdC5zZWN0aW9uXVt0LmtleV0/P1J9ZnVuY3Rpb24gRyhlKXt0eXBlb2YgZSE9YHN0cmluZ2B8fCFZZS5pbmNsdWRlcyhlKXx8YShgdXBkYXRlOmtpbmRgLGUpfWZ1bmN0aW9uIG1lKGUpe3JldHVybiBlLmFsbG93ZWQ/ZS56ZXJvP2BBbGxvd2VkLCBidXQgJHtlLmRldGFpbH0gcmVhY2hhYmxlIOKAlCB0aGUgbW9kZWwgZ3JhbnQgbWF0Y2hlcyBub25lIG9mIHRoaXMgcHJvdmlkZXIncyBtb2RlbHNgOmUuZGV0YWlsP2BBbGxvd2VkLCAke2UuZGV0YWlsfWA6YEFsbG93ZWRgOmBOb3QgYWxsb3dlZGB9ZnVuY3Rpb24gaGUoZSl7cmV0dXJuIGUuYWxsb3dlZD9lLnplcm8/eTpsOm19ZnVuY3Rpb24gcShlKXtyZXR1cm4gZS5hbGxvd2VkP2UuemVybz9gdGV4dC1zdGF0dXMtd2FybmA6YHRleHQtY2hhcnQtcmVxdWVzdHNgOmB0ZXh0LW11dGVkLWZvcmVncm91bmQvNDBgfXJldHVybihlLHQpPT57bGV0IGE9XyhgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIGIoKSxnKEUobiksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKGQpLG51bGwse2RlZmF1bHQ6bygoKT0+W3AoRShEKSxudWxsLHtkZWZhdWx0Om8oKCk9PlsuLi50WzFdfHw9W3YoYEFjY2VzcyBtYXRyaXhgLC0xKV1dKSxfOjF9KSxwKEUoTCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bdihPKGFlW2kua2luZF0pLDEpXSksXzoxfSkscChFKEYpLHsibW9kZWwtdmFsdWUiOmkua2luZCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6R30se2RlZmF1bHQ6bygoKT0+W3AoRSh1ZSksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bKGIoITApLHcoZixudWxsLFQoRShZZSksZT0+KGIoKSxnKEUoSSkse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0Om8oKCk9Plt2KE8oRShYZSlbZV0pLDEpXSksXzoyfSwxMDMyLFtgdmFsdWVgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSxfOjF9KSxjZS52YWx1ZT09PWBlcnJvcmA/KGIoKSxnKEUocikse2tleTowfSx7ZGVmYXVsdDpvKCgpPT5bcChkZSx7bWVzc2FnZTpFKHMpLmVycm9yLCJvbi1yZXRyeSI6RShzKS5mZXRjaENvbnN1bWVyc30sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pXSksXzoxfSkpOmNlLnZhbHVlPT09YHNrZWxldG9uYD8oYigpLGcoRShyKSx7a2V5OjF9LHtkZWZhdWx0Om8oKCk9PltwKEgse3Jvd3M6NCxjb2xzOjR9KV0pLF86MX0pKTpsZS52YWx1ZT8oYigpLGcoRShyKSx7a2V5OjJ9LHtkZWZhdWx0Om8oKCk9PltwKEsse3RpdGxlOmBObyBncm91cHMgY29uZmlndXJlZC5gLGRlc2NyaXB0aW9uOmBHcmFudCBhIGdyb3VwIGFjY2VzcyBmcm9tIHRoZSBDb25maWcgcGFnZSdzIGNoYW5nZSBoZWxwZXIuYH0se2RlZmF1bHQ6bygoKT0+W3AoRShjKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsb25DbGljazp0WzBdfHw9ZT0+RShlZSkuZ29UbyhgY29uZmlnYCx7aGVscGVyOmBncmFudGB9KX0se2RlZmF1bHQ6bygoKT0+Wy4uLnRbMl18fD1bdihgT3BlbiBjaGFuZ2UgaGVscGVyYCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKTpzZS52YWx1ZT09PWBlcnJvcmA/KGIoKSxnKEUocikse2tleTozfSx7ZGVmYXVsdDpvKCgpPT5bcChkZSx7bWVzc2FnZTpFKGgpLmVycm9yfSxudWxsLDgsW2BtZXNzYWdlYF0pXSksXzoxfSkpOnNlLnZhbHVlPT09YGxvYWRpbmdgPyhiKCksZyhFKHIpLHtrZXk6NH0se2RlZmF1bHQ6bygoKT0+W3AoSCx7cm93czpQLnZhbHVlLmxlbmd0aCxjb2xzOjR9LG51bGwsOCxbYHJvd3NgXSldKSxfOjF9KSk6c2UudmFsdWU9PT1gZW1wdHlgPyhiKCksZyhFKHIpLHtrZXk6NX0se2RlZmF1bHQ6bygoKT0+W3AoSyx7dGl0bGU6TVtpLmtpbmRdfSxudWxsLDgsW2B0aXRsZWBdKV0pLF86MX0pKTooYigpLGcoRShyKSx7a2V5OjYsY2xhc3M6YG92ZXJmbG93LXgtYXV0b2B9LHtkZWZhdWx0Om8oKCk9PltwKEUoViksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKHBlKSxudWxsLHtkZWZhdWx0Om8oKCk9PltwKEUoVSksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKFgpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLnRbM118fD1bdihgR3JvdXBgLC0xKV1dKSxfOjF9KSwoYighMCksdyhmLG51bGwsVChOLnZhbHVlLGU9PihiKCksZyhFKFgpLHtrZXk6ZS5rZXl9LHtkZWZhdWx0Om8oKCk9Plt2KE8oZS5sYWJlbCksMSldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pLHAoRSh6KSxudWxsLHtkZWZhdWx0Om8oKCk9PlsoYighMCksdyhmLG51bGwsVChQLnZhbHVlLGU9PihiKCksZyhFKFUpLHtrZXk6ZS5ncm91cH0se2RlZmF1bHQ6bygoKT0+W3AoRShYKSx7c2NvcGU6YHJvd2AsY2xhc3M6YGZvbnQtbWVkaXVtYH0se2RlZmF1bHQ6bygoKT0+W3YoTyhlLmdyb3VwKSwxKV0pLF86Mn0sMTAyNCksKGIoITApLHcoZixudWxsLFQoTi52YWx1ZSx0PT4oYigpLGcoRShCKSx7a2V5OnQua2V5LGNsYXNzOmB0ZXh0LWNlbnRlcmAsdGl0bGU6VyhlLHQpLmRldGFpbH0se2RlZmF1bHQ6bygoKT0+W3AoYSx7aWNvbjpoZShXKGUsdCkpLGNsYXNzOmsoW3EoVyhlLHQpKSxgc2l6ZS0zLjVgXSksImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gLGBjbGFzc2BdKSxXKGUsdCkuZGV0YWlsPyhiKCksdyhgc3BhbmAsZXQsTyhXKGUsdCkuZGV0YWlsKSwxKSk6eChgYCwhMCksQyhgc3BhbmAsdHQsTyhtZShXKGUsdCkpKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKSksMTI4KSldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pXSksXzoxfSkpXSksXzoxfSl9fX0pLHJ0PVtgYXJpYS1sYWJlbGAsYGFyaWEtdmFsdWVub3dgLGBhcmlhLXZhbHVldGV4dGAsYHRpdGxlYF0saXQ9QSh7X19uYW1lOmBVc2FnZUJhcmAscHJvcHM6e3JhdGlvOnt9LGxhYmVsOnt9LHZhbHVlVGV4dDp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IG49ZSxyPVMoKCk9PlRlKG4ucmF0aW8pKSxpPVMoKCk9Pk1hdGgubWluKDEwMCxNYXRoLm1heCgwLG4ucmF0aW8qMTAwKSkpLG89UygoKT0+TWF0aC5yb3VuZChpLnZhbHVlKSkscz17bm9ybWFsOmBiZy1wcmltYXJ5YCxhbWJlcjpgYmctYmFyLWFtYmVyYCxyZWQ6YGJnLWRlc3RydWN0aXZlYH07cmV0dXJuKGMsbCk9PihiKCksdyhgc3BhbmAse3JvbGU6YG1ldGVyYCwiYXJpYS1sYWJlbCI6ZS5sYWJlbCwiYXJpYS12YWx1ZW5vdyI6by52YWx1ZSwiYXJpYS12YWx1ZW1pbiI6YDBgLCJhcmlhLXZhbHVlbWF4IjpgMTAwYCwiYXJpYS12YWx1ZXRleHQiOmUudmFsdWVUZXh0LHRpdGxlOmUudmFsdWVUZXh0LGNsYXNzOmsoRShhKShgcmVsYXRpdmUgaW5saW5lLWJsb2NrIGgtMS41IHctMTQgc2hyaW5rLTAgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQtZnVsbCBiZy1tdXRlZCBhbGlnbi1taWRkbGVgLG4uY2xhc3MpKX0sW0MoYHNwYW5gLHtjbGFzczprKFtgYWJzb2x1dGUgaW5zZXQteS0wIGxlZnQtMCByb3VuZGVkLWZ1bGxgLHNbci52YWx1ZV1dKSxzdHlsZTp0KHt3aWR0aDpgJHtpLnZhbHVlfSVgfSl9LG51bGwsNildLDEwLHJ0KSl9fSksYXQ9e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtNCBnYXAteS0xLjVgfSxvdD1BKHtfX25hbWU6YEJ1ZGdldFJhdGlvQmFyc2AscHJvcHM6e3JhdGlvczp7fX0sc2V0dXAoZSl7cmV0dXJuKHQsbik9PihiKCksdyhgZGl2YCxhdCxbKGIoITApLHcoZixudWxsLFQoZS5yYXRpb3MsZT0+KGIoKSx3KGBzcGFuYCx7a2V5OmUuaWQsY2xhc3M6YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sW3YoTyhFKE9lKVtlLmlkXSkrYCBgLDEpLHAoaXQse3JhdGlvOmUucmF0aW8sbGFiZWw6RShPZSlbZS5pZF0sInZhbHVlLXRleHQiOkUoRGUpKGUpfSxudWxsLDgsW2ByYXRpb2AsYGxhYmVsYCxgdmFsdWUtdGV4dGBdKV0pKSksMTI4KSldKSl9fSksc3Q9NjAsY3Q9MzYwMCxsdD04NjQwMCx1dD02MCxkdD0zMDtmdW5jdGlvbiBmdChlLHQ9bmV3IERhdGUpe2lmKCFlKXJldHVybmBuZXZlcmA7bGV0IG49TWF0aC5mbG9vcih0LmdldFRpbWUoKS8xZTMpLHI9TWF0aC5tYXgoMCxuLWUpO2lmKHI8c3QpcmV0dXJuYGp1c3Qgbm93YDtpZihyPGN0KXJldHVybmAke01hdGguZmxvb3Ioci9zdCl9bSBhZ29gO2lmKHI8bHQpcmV0dXJuYCR7TWF0aC5mbG9vcihyL2N0KX1oIGFnb2A7bGV0IGk9TWF0aC5mbG9vcihyL2x0KTtyZXR1cm4gaTx1dD9gJHtpfWQgYWdvYDpgJHtNYXRoLmZsb29yKGkvZHQpfW1vIGFnb2B9ZnVuY3Rpb24gJCh0LG4scixpPVN0cmluZyxhPSEwLG8pe3JldHVybntpZDp0LGhlYWRlcjpuLGFjY2Vzc29yRm46cixtZXRhOnthbGlnbjpgcmlnaHRgfSxjZWxsOih7cm93OnR9KT0+e2lmKHQub3JpZ2luYWwuc3RvcmVEb3duKXJldHVybmA/YDtsZXQgcz1yKHQub3JpZ2luYWwpLGM9YT9lKFose3ZhbHVlOnN9KTppKHMpO2lmKCFvKXJldHVybiBjO2xldCBsPUVlKHQub3JpZ2luYWwpLmZpbmQoZT0+ZS5pZD09PW8pO2lmKCFsKXJldHVybiBjO2xldCB1PWE/YCR7cShsLnVzZWQpfSAvICR7cShsLmxpbWl0KX1gOmAke2kobC51c2VkKX0gLyAke2kobC5saW1pdCl9YDtyZXR1cm4gZShgc3BhbmAse2NsYXNzOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTEuNWB9LFtjLGUoaXQse3JhdGlvOmwucmF0aW8sbGFiZWw6T2Vbb10/P24sdmFsdWVUZXh0OnV9KV0pfX19ZnVuY3Rpb24gcHQoKXtyZXR1cm57aWQ6YHJlakRheWAsaGVhZGVyOmByZWplY3RlZC9kYXlgLGFjY2Vzc29yRm46ZT0+ZS5yZWplY3Rpb25zUGVyRGF5LG1ldGE6e2FsaWduOmByaWdodGB9LGNlbGw6KHtyb3c6dH0pPT57aWYodC5vcmlnaW5hbC5zdG9yZURvd24pcmV0dXJuYD9gO2xldCBuPXQub3JpZ2luYWwucmVqZWN0aW9uc1BlckRheTtyZXR1cm4gZShaLHt2YWx1ZTpuLGNsYXNzOm4+MD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwfSl9fX1mdW5jdGlvbiBtdCh0KXtyZXR1cm57aWQ6YGNvc3RNb250aFByb2pgLGhlYWRlcjpgY29zdC9tb250aCAocHJvai4pYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PlBlKGUsdCkubWljcm9zPz8wLGNlbGw6KHtyb3c6bn0pPT57aWYobi5vcmlnaW5hbC5zdG9yZURvd24pcmV0dXJuYD9gO2xldCByPVBlKG4ub3JpZ2luYWwsdCk7cmV0dXJuIHIubWljcm9zPT09bnVsbD9lKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEZlKTplKGBzcGFuYCx7Y2xhc3M6ci53aWxsRXhjZWVkP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDAsdGl0bGU6ci53aWxsRXhjZWVkP0llOnZvaWQgMH0sSihyLm1pY3JvcykpfX19ZnVuY3Rpb24gaHQodCl7cmV0dXJue2lkOmBzb3VyY2VgLGhlYWRlcjpgU291cmNlYCxhY2Nlc3NvckZuOmU9PnQoZSk/P2BgLGNlbGw6KHtyb3c6bn0pPT5lKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHQobi5vcmlnaW5hbCk/P2DigJRgKX19ZnVuY3Rpb24gZ3QoZSl7cmV0dXJue2lkOmBsYXN0U2VlbmAsaGVhZGVyOmBMYXN0IHNlZW5gLGFjY2Vzc29yRm46ZT0+ZS5sYXN0U2Vlbj8/MCxjZWxsOih7cm93OnR9KT0+ZnQodC5vcmlnaW5hbC5sYXN0U2VlbixlKX19ZnVuY3Rpb24gX3QodCxuLHIsaT1uZXcgRGF0ZSxhKXtsZXQgbz1be2lkOmBpZGAsaGVhZGVyOnQsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6dH0pPT5lKFZlLHtjbGFzczpgZm9udC1tZWRpdW1gLGxhYmVsOnQub3JpZ2luYWwuaWQsa2luZDpgdXNlcmAsaWQ6dC5vcmlnaW5hbC5pZH0pfSx7aWQ6YHNlY29uZGFyeWAsaGVhZGVyOm4sYWNjZXNzb3JGbjpyLHNvcnRpbmdGbjpgYWxwaGFudW1lcmljYCxjZWxsOih7cm93OnR9KT0+ZShgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxyKHQub3JpZ2luYWwpKX1dO3JldHVybiBhJiZvLnB1c2goaHQoYSkpLG8ucHVzaCh7aWQ6YGxpbWl0c2AsaGVhZGVyOmBMaW1pdHNgLGFjY2Vzc29yRm46ZT0+RyhlLmxpbWl0cyksY2VsbDooe3Jvdzp0fSk9PmUoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sRyh0Lm9yaWdpbmFsLmxpbWl0cykpfSwkKGByZXFNaW5gLGByZXEvbWluYCxlPT5lLnJlcXVlc3RzUGVyTWludXRlLFN0cmluZywhMCxgcmVxTWluYCksJChgcmVxRGF5YCxgcmVxL2RheWAsZT0+ZS5yZXF1ZXN0c1BlckRheSxTdHJpbmcsITAsYHJlcURheWApLHB0KCksJChgdG9rSW5EYXlgLGB0b2tJbi9kYXlgLGU9PmUudG9rZW5zSW5QZXJEYXksU3RyaW5nLCEwLGB0b2tEYXlgKSwkKGB0b2tPdXREYXlgLGB0b2tPdXQvZGF5YCxlPT5lLnRva2Vuc091dFBlckRheSxTdHJpbmcsITAsYHRva0RheWApLCQoYHRva0luTW9udGhgLGB0b2tJbi9tb250aGAsZT0+ZS50b2tlbnNJblBlck1vbnRoLFN0cmluZywhMCxgdG9rTW9udGhgKSwkKGB0b2tPdXRNb250aGAsYHRva091dC9tb250aGAsZT0+ZS50b2tlbnNPdXRQZXJNb250aCxTdHJpbmcsITAsYHRva01vbnRoYCksJChgY29zdERheWAsYGNvc3QvZGF5YCxlPT5lLmNvc3RQZXJEYXlNaWNyb1VzZCxKLCExLGBjb3N0RGF5YCksJChgY29zdE1vbnRoYCxgY29zdC9tb250aGAsZT0+ZS5jb3N0UGVyTW9udGhNaWNyb1VzZCxKLCExLGBjb3N0TW9udGhgKSxtdChpKSxndChpKSksb312YXIgdnQ9QSh7X19uYW1lOmBVc2FnZVRhYmxlYCxwcm9wczp7aWRMYWJlbDp7fSxlbnRyaWVzOnt9LHNlY29uZGFyeUNvbHVtbkxhYmVsOnt9LHNlY29uZGFyeVZhbHVlOnt0eXBlOkZ1bmN0aW9ufSxlbXB0eU1lc3NhZ2U6e30sbm93Ont9LHNvcnRpbmc6e30sc291cmNlVmFsdWU6e3R5cGU6RnVuY3Rpb259fSxlbWl0czpbYHVwZGF0ZTpzb3J0aW5nYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IG49ZSxyPXQsaT1TKCgpPT5fdChuLmlkTGFiZWwsbi5zZWNvbmRhcnlDb2x1bW5MYWJlbCxuLnNlY29uZGFyeVZhbHVlLG4ubm93LG4uc291cmNlVmFsdWUpKTtyZXR1cm4odCxuKT0+KGIoKSxnKFNlLHtjb2x1bW5zOmkudmFsdWUsZGF0YTplLmVudHJpZXMsImVtcHR5LW1lc3NhZ2UiOmUuZW1wdHlNZXNzYWdlLCJyb3ctY2xhc3MiOmU9PmUuc3RvcmVEb3duP2BiZy1kZXN0cnVjdGl2ZS8xMGA6dm9pZCAwLHNvcnRpbmc6ZS5zb3J0aW5nLCJvblVwZGF0ZTpzb3J0aW5nIjpuWzBdfHw9ZT0+cihgdXBkYXRlOnNvcnRpbmdgLGUpfSxudWxsLDgsW2Bjb2x1bW5zYCxgZGF0YWAsYGVtcHR5LW1lc3NhZ2VgLGByb3ctY2xhc3NgLGBzb3J0aW5nYF0pKX19KSx5dD17dXNlcnM6YEdyb3VwYCxncm91cHM6YE1lbWJlcnNgfTtmdW5jdGlvbiBidChlKXtyZXR1cm4gbWUoZSkudG9GaXhlZCg2KX1mdW5jdGlvbiB4dChlLHQsbixyPW5ldyBEYXRlKXtsZXQgaT1bYE5hbWVgLHl0W3RdLGBMaW1pdHNgLGByZXEvbWluYCxgcmVxL2RheWAsYHJlamVjdGVkL2RheWAsYHRva0luL2RheWAsYHRva091dC9kYXlgLGB0b2tJbi9tb250aGAsYHRva091dC9tb250aGAsYGNvc3QvZGF5IChVU0QpYCxgY29zdC9tb250aCAoVVNEKWAsYGNvc3QvbW9udGggKHByb2ouLCBVU0QpYCxgbGFzdCBzZWVuICh1bml4IHNlY29uZHMpYF0sYT1lLm1hcChlPT57bGV0IHQ9ZS5zdG9yZURvd24saT10P251bGw6UGUoZSxyKS5taWNyb3M7cmV0dXJuW2UuaWQsbihlKSxHKGUubGltaXRzKSx0P2A/YDplLnJlcXVlc3RzUGVyTWludXRlLHQ/YD9gOmUucmVxdWVzdHNQZXJEYXksdD9gP2A6ZS5yZWplY3Rpb25zUGVyRGF5LHQ/YD9gOmUudG9rZW5zSW5QZXJEYXksdD9gP2A6ZS50b2tlbnNPdXRQZXJEYXksdD9gP2A6ZS50b2tlbnNJblBlck1vbnRoLHQ/YD9gOmUudG9rZW5zT3V0UGVyTW9udGgsdD9gP2A6YnQoZS5jb3N0UGVyRGF5TWljcm9Vc2QpLHQ/YD9gOmJ0KGUuY29zdFBlck1vbnRoTWljcm9Vc2QpLHQ/YD9gOmk9PT1udWxsP0ZlOmJ0KGkpLGUubGFzdFNlZW4/PzBdfSk7cmV0dXJuIEFlKGksYSl9ZnVuY3Rpb24gU3QoZSx0KXtyZXR1cm4gZS5pZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIEN0KGUsdCl7cmV0dXJuIGUuaWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0KX1mdW5jdGlvbiB3dChlLHQpe3JldHVybiB0LmZpbHRlcih0PT4odC5ncm91cHM/P1t0Lmdyb3VwTmFtZV0pLmluY2x1ZGVzKGUuaWQpKX1mdW5jdGlvbiBUdChlLHQsbil7cmV0dXJuIHd0KGUsdCkuZmlsdGVyKGU9PlN0KGUsbikpfWZ1bmN0aW9uIEV0KGUsdCxuKXtyZXR1cm4gQ3QoZSxuKXx8VHQoZSx0LG4pLmxlbmd0aD4wfXZhciBEdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxPdD17Y2xhc3M6YGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0sa3Q9e2tleTowLGNsYXNzOmBtYi0zIGZsZXggZmxleC13cmFwIGdhcC14LTQgZ2FwLXktMSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEF0PXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxqdD17Y2xhc3M6YHNocmluay0wIHB5LTIuNSBmb250LW1lZGl1bWB9LE10PXtjbGFzczpgc3Itb25seWB9LE50PXtjbGFzczpgZmxleCBmbGV4LTEgZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC00IGdhcC15LTEgcHItMiB0ZXh0LWxlZnRgfSxQdD17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRhYnVsYXItbnVtc2B9LEZ0PXtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGFidWxhci1udW1zYH0sSXQ9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSxMdD17Y2xhc3M6YG1iLTMgZ3JpZCBncmlkLWNvbHMtMiBnYXAteC02IGdhcC15LTEuNSB0ZXh0LXNtIHNtOmdyaWQtY29scy00YH0sUnQ9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0senQ9e2tleToxLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxCdD17a2V5OjAsY2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xLjVgfSxWdD17a2V5OjEsY2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEh0PXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LFV0PXtrZXk6MSxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sV3Q9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sR3Q9e2tleToxLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxLdD17Y2xhc3M6YG1iLTMgZ3JpZCBncmlkLWNvbHMtMiBnYXAteC02IGdhcC15LTEuNSB0ZXh0LXNtIHNtOmdyaWQtY29scy00YH0scXQ9e2NsYXNzOmBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtMmB9LEp0PWBHbG9iIHBhdHRlcm4g4oCUIG1hdGNoZXMgbGlrZSBhIHNoZWxsIHdpbGRjYXJkICgqLCA/LCBbLi4uXSlgLFl0PUEoe19fbmFtZTpgQ29uc3VtZXJEaXJlY3RvcnlgLHNldHVwKGUpe2xldCB0PXRlKCksaT1mZSgpLGE9bmUoKSxsPVMoKCk9PnQudXNhZ2UpLG09UygoKT0+eWUoe2xvYWRpbmc6IXQubGFzdFVwZGF0ZWQsaGFzRGF0YTpsLnZhbHVlIT09bnVsbCxlcnJvcjp0LmVycm9yfSkpO3UoKCk9PntpLmVuc3VyZUNvbnN1bWVycygpfSk7bGV0e25vdzpfLHN0YXJ0Onksc3RvcDpBfT1rZSgpO3UoeSkscmUoQSk7bGV0IHVlPVMoKCk9PntsZXQgZT17fTtmb3IobGV0IG4gb2YgdC5vdmVydmlldz8uZ3JvdXBzPz9bXSllW24ubmFtZV09bi5tZW1iZXJDb3VudDtyZXR1cm4gZX0pO2Z1bmN0aW9uIEYoZSl7cmV0dXJuKGUuZ3JvdXBzPz8oZS5ncm91cE5hbWU9PT12b2lkIDA/W106W2UuZ3JvdXBOYW1lXSkpLmpvaW4oYCwgYCl9ZnVuY3Rpb24gSShlKXtsZXQgdD11ZS52YWx1ZVtlLmlkXTtyZXR1cm4gdD09PXZvaWQgMD9gYDpTdHJpbmcodCl9ZnVuY3Rpb24gUihlKXtyZXR1cm4gaS5kYXRhPy51c2Vycy5maW5kKHQ9PnQubmFtZT09PWUuaWQpPy5zb3VyY2V9bGV0IHBlPVMoe2dldDooKT0+YS5wYXJhbXMucT8/YGAsc2V0OmU9PmEuZ29UbyhgY29uc3VtZXJzYCx7Li4uYS5wYXJhbXMscTplfSl9KSx7cXVlcnk6eixub3JtYWxpemVkOkIsaGFzUXVlcnk6Vn09QmUocGUpLEg9UygoKT0+e2xldCBlPWwudmFsdWU/Lmdyb3Vwcz8/W107aWYoIVYudmFsdWUpcmV0dXJuIGU7bGV0IHQ9bC52YWx1ZT8udXNlcnM/P1tdO3JldHVybiBlLmZpbHRlcihlPT5FdChlLHQsQi52YWx1ZSkpfSksVT1TKCgpPT5WLnZhbHVlP0gudmFsdWUuZmlsdGVyKGU9PiFDdChlLEIudmFsdWUpKS5tYXAoZT0+ZS5pZCk6W10pO2Z1bmN0aW9uIFcoZSl7bGV0IHQ9bC52YWx1ZT8udXNlcnM/P1tdO3JldHVybiFWLnZhbHVlfHxDdChlLEIudmFsdWUpP3d0KGUsdCk6VHQoZSx0LEIudmFsdWUpfWxldCBtZT1TKCgpPT5sLnZhbHVlPy5ncm91cHMubGVuZ3RoP1YudmFsdWU/YG5vIGdyb3VwcyBtYXRjaCAiJHt6LnZhbHVlfSJgOmBub25lYDpgbm9uZSBjb25maWd1cmVkYCksaGU9UygoKT0+KGwudmFsdWU/Lmdyb3Vwcy5sZW5ndGg/PzApPT09MCYmIVYudmFsdWUpLHE9UygoKT0+e2xldCBlPWwudmFsdWU/LnVzZXJzPz9bXTtpZighVi52YWx1ZSlyZXR1cm4gZTtsZXQgdD1sLnZhbHVlPy5ncm91cHM/P1tdLG49bmV3IFNldCh0LmZpbHRlcihlPT5DdChlLEIudmFsdWUpKS5tYXAoZT0+ZS5pZCkpO3JldHVybiBlLmZpbHRlcihlPT5TdChlLEIudmFsdWUpfHwoZS5ncm91cHM/P1tlLmdyb3VwTmFtZV0pLnNvbWUoZT0+ZSE9PXZvaWQgMCYmbi5oYXMoZSkpKX0pLGdlPVMoKCk9PmwudmFsdWU/LnVzZXJzLmxlbmd0aD9WLnZhbHVlP2BubyB1c2VycyBtYXRjaCAiJHt6LnZhbHVlfSJgOmBub25lYDpgbm9uZSBjb25maWd1cmVkYCksdmU9UygoKT0+X3QoYE5hbWVgLGBNZW1iZXJzYCxJLF8udmFsdWUpKSxYPWgoW10pLFNlPXdlKHtnZXQgZGF0YSgpe3JldHVybiBILnZhbHVlfSxnZXQgY29sdW1ucygpe3JldHVybiB2ZS52YWx1ZX0sZ2V0Q29yZVJvd01vZGVsOnhlKCksZ2V0U29ydGVkUm93TW9kZWw6Q2UoKSxvblNvcnRpbmdDaGFuZ2U6ZT0+S2UoZSxYKSxzdGF0ZTp7Z2V0IHNvcnRpbmcoKXtyZXR1cm4gWC52YWx1ZX19fSksVGU9UygoKT0+U2UuZ2V0Um93TW9kZWwoKS5yb3dzKSxEZT1uZXcgU2V0KFtgaWRgLGBzZWNvbmRhcnlgLGByZXFEYXlgLGBjb3N0RGF5YF0pLE9lPVMoKCk9PlNlLmdldEhlYWRlckdyb3VwcygpWzBdLmhlYWRlcnMuZmlsdGVyKGU9PkRlLmhhcyhlLmNvbHVtbi5pZCkpKSxBZT1pZSh7bWFudWFsbHlFeHBhbmRlZDpuZXcgU2V0LG1hbnVhbGx5Q29sbGFwc2VkOm5ldyBTZXR9KSxNZT1TKCgpPT5QKEFlLFYudmFsdWUsVS52YWx1ZSkpO2Z1bmN0aW9uIExlKGUpe3NlKEFlLGUsTWUudmFsdWUuaGFzKGUpKX1sZXQgVmU9Uyh7Z2V0OigpPT5BcnJheS5mcm9tKE1lLnZhbHVlKSxzZXQ6ZT0+e2xldCB0PW5ldyBTZXQoZSk7Zm9yKGxldCBlIG9mIE1lLnZhbHVlKXQuaGFzKGUpfHxMZShlKTtmb3IobGV0IGUgb2YgdClNZS52YWx1ZS5oYXMoZSl8fExlKGUpfX0pO3MoeixlPT57ZS50cmltKCk9PT1gYCYmbGUoQWUpfSk7ZnVuY3Rpb24gSGUoZSl7cmV0dXJuL1sqP1tdLy50ZXN0KGUpfWZ1bmN0aW9uIFVlKGUsdCl7bGV0IG49UGUoZSx0KTtyZXR1cm57dGV4dDpuLm1pY3Jvcz09PW51bGw/RmU6SihuLm1pY3Jvcyksd2lsbEV4Y2VlZDpuLndpbGxFeGNlZWR9fWxldCBXZT1be2xhYmVsOmB0b2tJbi9kYXlgLHJlYWQ6ZT0+ZS50b2tlbnNJblBlckRheX0se2xhYmVsOmB0b2tPdXQvZGF5YCxyZWFkOmU9PmUudG9rZW5zT3V0UGVyRGF5fSx7bGFiZWw6YHRva0luL21vbnRoYCxyZWFkOmU9PmUudG9rZW5zSW5QZXJNb250aH0se2xhYmVsOmB0b2tPdXQvbW9udGhgLHJlYWQ6ZT0+ZS50b2tlbnNPdXRQZXJNb250aH1dLEdlPVMoKCk9Pl90KGBOYW1lYCxgR3JvdXBgLEYsXy52YWx1ZSxSKSkscWU9aChbXSksSmU9d2Uoe2dldCBkYXRhKCl7cmV0dXJuIHEudmFsdWV9LGdldCBjb2x1bW5zKCl7cmV0dXJuIEdlLnZhbHVlfSxnZXRDb3JlUm93TW9kZWw6eGUoKSxnZXRTb3J0ZWRSb3dNb2RlbDpDZSgpLG9uU29ydGluZ0NoYW5nZTplPT5LZShlLHFlKSxzdGF0ZTp7Z2V0IHNvcnRpbmcoKXtyZXR1cm4gcWUudmFsdWV9fX0pO2Z1bmN0aW9uIFllKCl7cmV0dXJuIHh0KEplLmdldFJvd01vZGVsKCkucm93cy5tYXAoZT0+ZS5vcmlnaW5hbCksYHVzZXJzYCxGLF8udmFsdWUpfWZ1bmN0aW9uIFhlKCl7cmV0dXJuIHh0KFRlLnZhbHVlLm1hcChlPT5lLm9yaWdpbmFsKSxgZ3JvdXBzYCxJLF8udmFsdWUpfXJldHVybihlLHMpPT4oYigpLHcoYGRpdmAsRHQsW3AoemUse21vZGVsVmFsdWU6RSh6KSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6c1swXXx8PWU9PmVlKHopP3oudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgdXNlcnMgb3IgZ3JvdXBzYCxjbGFzczpgbWF4LXctc21gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLGwudmFsdWU/KGIoKSxnKEUobikse2tleTowfSx7ZGVmYXVsdDpvKCgpPT5bcChFKGQpLG51bGwse2RlZmF1bHQ6bygoKT0+W3AoRShEKSxudWxsLHtkZWZhdWx0Om8oKCk9PlsuLi5zWzRdfHw9W3YoYFRvdGFsYCwtMSldXSksXzoxfSkscChFKEwpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLnNbNV18fD1bdihgVXNhZ2Ugc3VtbWVkIGFjcm9zcyBldmVyeSB1c2VyIGFuZCBncm91cCBjb21iaW5lZC5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHAoRShyKSx7Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdGV4dC1zbSBzbTpncmlkLWNvbHMtNWB9LHtkZWZhdWx0Om8oKCk9PltwKFEse2xhYmVsOmBSZXF1ZXN0cy9kYXlgfSx7ZGVmYXVsdDpvKCgpPT5bcChaLHt2YWx1ZTpsLnZhbHVlLnRvdGFsLnJlcXVlc3RzUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pLF86MX0pLHAoUSx7bGFiZWw6YFJlamVjdGVkL2RheWAsdG9uZTpsLnZhbHVlLnRvdGFsLnJlamVjdGlvbnNQZXJEYXk+MD9gZGVzdHJ1Y3RpdmVgOmBkZWZhdWx0YH0se2RlZmF1bHQ6bygoKT0+W3AoWix7dmFsdWU6bC52YWx1ZS50b3RhbC5yZWplY3Rpb25zUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pLF86MX0sOCxbYHRvbmVgXSkscChRLHtsYWJlbDpgVG9rZW5zIGluL2RheWB9LHtkZWZhdWx0Om8oKCk9PltwKFose3ZhbHVlOmwudmFsdWUudG90YWwudG9rZW5zSW5QZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pXSksXzoxfSkscChRLHtsYWJlbDpgVG9rZW5zIG91dC9kYXlgfSx7ZGVmYXVsdDpvKCgpPT5bcChaLHt2YWx1ZTpsLnZhbHVlLnRvdGFsLnRva2Vuc091dFBlckRheX0sbnVsbCw4LFtgdmFsdWVgXSldKSxfOjF9KSxwKFEse2xhYmVsOmBDb3N0L2RheWB9LHtkZWZhdWx0Om8oKCk9Plt2KE8oRShKKShsLnZhbHVlLnRvdGFsLmNvc3RQZXJEYXlNaWNyb1VzZCkpLDEpXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKTp4KGBgLCEwKSxsLnZhbHVlPyhiKCksZyhOZSx7a2V5OjEsIm10ZC1taWNyb3MiOmwudmFsdWUudG90YWwuY29zdFBlck1vbnRoTWljcm9Vc2QsbGltaXRzOmwudmFsdWUudG90YWwubGltaXRzLG5vdzpFKF8pfSxudWxsLDgsW2BtdGQtbWljcm9zYCxgbGltaXRzYCxgbm93YF0pKTp4KGBgLCEwKSxwKEUobiksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKGQpLG51bGwse2RlZmF1bHQ6bygoKT0+W0MoYGRpdmAsT3QsW0MoYGRpdmAsbnVsbCxbcChFKEQpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLnNbNl18fD1bdihgR3JvdXBzYCwtMSldXSksXzoxfSkscChFKEwpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLnNbN118fD1bdihgRXhwYW5kIGEgZ3JvdXAgdG8gc2VlIGl0cyBtZW1iZXIgdXNlcnMnIG93biB1c2FnZS5gLC0xKV1dKSxfOjF9KV0pLHAoamUse2ZpbGVuYW1lOmBjb25zdW1lcnMtZ3JvdXBzLmNzdmAsYnVpbGQ6WGV9KV0pXSksXzoxfSkscChFKHIpLG51bGwse2RlZmF1bHQ6bygoKT0+W20udmFsdWU9PT1gc2tlbGV0b25gPyhiKCksZyhfZSx7a2V5OjAscm93czozfSkpOm0udmFsdWU9PT1gZXJyb3JgPyhiKCksZyhkZSx7a2V5OjEsbWVzc2FnZTpFKHQpLmVycm9yLCJvbi1yZXRyeSI6RSh0KS5yZWZyZXNofSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOihiKCksdyhmLHtrZXk6Mn0sW1RlLnZhbHVlLmxlbmd0aD8oYigpLHcoYGRpdmAsa3QsWyhiKCEwKSx3KGYsbnVsbCxUKE9lLnZhbHVlLGU9PihiKCksZyhiZSx7a2V5OmUuaWQsaGVhZGVyOmV9LG51bGwsOCxbYGhlYWRlcmBdKSkpLDEyOCkpXSkpOngoYGAsITApLFRlLnZhbHVlLmxlbmd0aD8oYigpLGcoRShjZSkse2tleToxLG1vZGVsVmFsdWU6VmUudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnNbMV18fD1lPT5WZS52YWx1ZT1lLHR5cGU6YG11bHRpcGxlYCxjbGFzczpgcm91bmRlZC1tZCBib3JkZXIgcHgtM2B9LHtkZWZhdWx0Om8oKCk9PlsoYighMCksdyhmLG51bGwsVChUZS52YWx1ZSxlPT4oYigpLGcoRShqKSx7a2V5OmUub3JpZ2luYWwuaWQsdmFsdWU6ZS5vcmlnaW5hbC5pZH0se2RlZmF1bHQ6bygoKT0+W0MoYGRpdmAsQXQsW0MoYHNwYW5gLGp0LE8oZS5vcmlnaW5hbC5pZCksMSkscChFKE0pLHsiaGVhZGVyLWNsYXNzIjpgZmxleC0xYH0se2RlZmF1bHQ6bygoKT0+W0MoYHNwYW5gLE10LGBHcm91cCBgK08oZS5vcmlnaW5hbC5pZCkrYCBkZXRhaWxzYCwxKSxDKGBzcGFuYCxOdCxbQyhgc3BhbmAsUHQsTyhJKGUub3JpZ2luYWwpfHxgMGApK2AgbWVtYmVyc2AsMSksQyhgc3BhbmAsRnQsW2Uub3JpZ2luYWwuc3RvcmVEb3duPyhiKCksdyhmLHtrZXk6MH0sW3YoYD9gKV0sNjQpKTooYigpLGcoWix7a2V5OjEsdmFsdWU6ZS5vcmlnaW5hbC5yZXF1ZXN0c1BlckRheX0sbnVsbCw4LFtgdmFsdWVgXSkpLHNbOF18fD12KGAgcmVxL2RheSBgLC0xKV0pLEMoYHNwYW5gLEl0LE8oZS5vcmlnaW5hbC5zdG9yZURvd24/YD9gOkUoSikoZS5vcmlnaW5hbC5jb3N0UGVyRGF5TWljcm9Vc2QpKStgL2RheSBgLDEpXSldKSxfOjJ9LDEwMjQpXSkscChFKG9lKSxudWxsLHtkZWZhdWx0Om8oKCk9PltDKGBkbGAsTHQsW3AoTix7bGFiZWw6YFByb3ZpZGVyc2AsImxhYmVsLXRpdGxlIjpKdH0se2RlZmF1bHQ6bygoKT0+W2Uub3JpZ2luYWwucHJvdmlkZXJzPy5sZW5ndGg/KGIoKSx3KGBkaXZgLFJ0LFsoYighMCksdyhmLG51bGwsVChlLm9yaWdpbmFsLnByb3ZpZGVycyxlPT4oYigpLGcoRShZKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpvKCgpPT5bdihPKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pKTooYigpLHcoYHNwYW5gLHp0LGBBbGwgcHJvdmlkZXJzYCkpXSksXzoyfSwxMDI0KSxwKE4se2xhYmVsOmBNb2RlbHNgLCJsYWJlbC10aXRsZSI6SnR9LHtkZWZhdWx0Om8oKCk9PltlLm9yaWdpbmFsLm1vZGVscz8ubGVuZ3RoPyhiKCksdyhgZGl2YCxCdCxbKGIoITApLHcoZixudWxsLFQoZS5vcmlnaW5hbC5tb2RlbHMsZT0+KGIoKSx3KGYse2tleTplfSxbSGUoZSk/KGIoKSxnKEUoWSkse2tleToxLGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBtYXgtdy1mdWxsIHRydW5jYXRlIGZvbnQtbW9ubyBmb250LW5vcm1hbGAsdGl0bGU6ZX0se2RlZmF1bHQ6bygoKT0+W3YoTyhlKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTooYigpLGcoYWUse2tleTowLGlkOmV9LG51bGwsOCxbYGlkYF0pKV0sNjQpKSksMTI4KSldKSk6KGIoKSx3KGBzcGFuYCxWdCxgQWxsIG1vZGVsc2ApKV0pLF86Mn0sMTAyNCkscChOLHtsYWJlbDpgTUNQIHNlcnZlcnNgLCJsYWJlbC10aXRsZSI6SnR9LHtkZWZhdWx0Om8oKCk9PltlLm9yaWdpbmFsLm1jcFNlcnZlcnM/Lmxlbmd0aD8oYigpLHcoYGRpdmAsSHQsWyhiKCEwKSx3KGYsbnVsbCxUKGUub3JpZ2luYWwubWNwU2VydmVycyxlPT4oYigpLGcoRShZKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpvKCgpPT5bdihPKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pKTooYigpLHcoYHNwYW5gLFV0LGBBbGwgTUNQIHNlcnZlcnNgKSldKSxfOjJ9LDEwMjQpLHAoTix7bGFiZWw6YEFnZW50c2AsImxhYmVsLXRpdGxlIjpKdH0se2RlZmF1bHQ6bygoKT0+W2Uub3JpZ2luYWwuYWdlbnRzPy5sZW5ndGg/KGIoKSx3KGBkaXZgLFd0LFsoYighMCksdyhmLG51bGwsVChlLm9yaWdpbmFsLmFnZW50cyxlPT4oYigpLGcoRShZKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YG1heC13LWZ1bGwgdHJ1bmNhdGUgZm9udC1tb25vIGZvbnQtbm9ybWFsYCx0aXRsZTplfSx7ZGVmYXVsdDpvKCgpPT5bdihPKGUpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pKTooYigpLHcoYHNwYW5gLEd0LGBBbGwgYWdlbnRzYCkpXSksXzoyfSwxMDI0KV0pLEMoYGRsYCxLdCxbcChOLHtsYWJlbDpgTGltaXRzYH0se2RlZmF1bHQ6bygoKT0+W3YoTyhFKEcpKGUub3JpZ2luYWwubGltaXRzKSksMSldKSxfOjJ9LDEwMjQpLHAoTix7bGFiZWw6YHJlcS9taW5gLG51bWVyaWM6YGB9LHtkZWZhdWx0Om8oKCk9PltlLm9yaWdpbmFsLnN0b3JlRG93bj8oYigpLHcoZix7a2V5OjB9LFt2KGA/YCldLDY0KSk6KGIoKSxnKFose2tleToxLHZhbHVlOmUub3JpZ2luYWwucmVxdWVzdHNQZXJNaW51dGV9LG51bGwsOCxbYHZhbHVlYF0pKV0pLF86Mn0sMTAyNCkscChOLHtsYWJlbDpgcmVqZWN0ZWQvZGF5YCxudW1lcmljOmBgLGNsYXNzOmsoIWUub3JpZ2luYWwuc3RvcmVEb3duJiZlLm9yaWdpbmFsLnJlamVjdGlvbnNQZXJEYXk+MD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwKX0se2RlZmF1bHQ6bygoKT0+W2Uub3JpZ2luYWwuc3RvcmVEb3duPyhiKCksdyhmLHtrZXk6MH0sW3YoYD9gKV0sNjQpKTooYigpLGcoWix7a2V5OjEsdmFsdWU6ZS5vcmlnaW5hbC5yZWplY3Rpb25zUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKSldKSxfOjJ9LDEwMzIsW2BjbGFzc2BdKSwoYigpLHcoZixudWxsLFQoV2UsdD0+cChOLHtrZXk6dC5sYWJlbCxsYWJlbDp0LmxhYmVsLG51bWVyaWM6YGB9LHtkZWZhdWx0Om8oKCk9PltlLm9yaWdpbmFsLnN0b3JlRG93bj8oYigpLHcoZix7a2V5OjB9LFt2KGA/YCldLDY0KSk6KGIoKSxnKFose2tleToxLHZhbHVlOnQucmVhZChlLm9yaWdpbmFsKX0sbnVsbCw4LFtgdmFsdWVgXSkpXSksXzoyfSwxMDMyLFtgbGFiZWxgXSkpLDY0KSkscChOLHtsYWJlbDpgY29zdC9tb250aGAsbnVtZXJpYzpgYH0se2RlZmF1bHQ6bygoKT0+W3YoTyhlLm9yaWdpbmFsLnN0b3JlRG93bj9gP2A6RShKKShlLm9yaWdpbmFsLmNvc3RQZXJNb250aE1pY3JvVXNkKSksMSldKSxfOjJ9LDEwMjQpLHAoTix7bGFiZWw6YGNvc3QvbW9udGggKHByb2ouKWAsbnVtZXJpYzpgYCxjbGFzczprKCFlLm9yaWdpbmFsLnN0b3JlRG93biYmVWUoZS5vcmlnaW5hbCxFKF8pKS53aWxsRXhjZWVkP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDApLHRpdGxlOiFlLm9yaWdpbmFsLnN0b3JlRG93biYmVWUoZS5vcmlnaW5hbCxFKF8pKS53aWxsRXhjZWVkP0UoSWUpOnZvaWQgMH0se2RlZmF1bHQ6bygoKT0+W3YoTyhlLm9yaWdpbmFsLnN0b3JlRG93bj9gP2A6VWUoZS5vcmlnaW5hbCxFKF8pKS50ZXh0KSwxKV0pLF86Mn0sMTAzMixbYGNsYXNzYCxgdGl0bGVgXSldKSxFKEVlKShlLm9yaWdpbmFsKS5sZW5ndGg/KGIoKSxnKG90LHtrZXk6MCxjbGFzczpgbWItM2AscmF0aW9zOkUoRWUpKGUub3JpZ2luYWwpfSxudWxsLDgsW2ByYXRpb3NgXSkpOngoYGAsITApLHNbOV18fD1DKGBwYCx7Y2xhc3M6YG1iLTEuNSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNZW1iZXJzYCwtMSkscCh2dCx7ImlkLWxhYmVsIjpgTmFtZWAsInNlY29uZGFyeS1jb2x1bW4tbGFiZWwiOmBHcm91cGAsZW50cmllczpXKGUub3JpZ2luYWwpLCJzZWNvbmRhcnktdmFsdWUiOkYsbm93OkUoXyksInNvdXJjZS12YWx1ZSI6Un0sbnVsbCw4LFtgZW50cmllc2AsYG5vd2BdKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSw4LFtgbW9kZWxWYWx1ZWBdKSk6aGUudmFsdWU/KGIoKSxnKEsse2tleToyLHRpdGxlOmBObyBncm91cHMgY29uZmlndXJlZC5gLGRlc2NyaXB0aW9uOmBHcmFudCBhIGdyb3VwIGFjY2VzcyBmcm9tIHRoZSBDb25maWcgcGFnZSdzIGNoYW5nZSBoZWxwZXIuYH0se2RlZmF1bHQ6bygoKT0+W3AoRShjKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsb25DbGljazpzWzJdfHw9ZT0+RShhKS5nb1RvKGBjb25maWdgLHtoZWxwZXI6YGdyYW50YH0pfSx7ZGVmYXVsdDpvKCgpPT5bLi4uc1sxMF18fD1bdihgT3BlbiBjaGFuZ2UgaGVscGVyYCwtMSldXSksXzoxfSldKSxfOjF9KSk6KGIoKSxnKEsse2tleTozLHRpdGxlOm1lLnZhbHVlfSxudWxsLDgsW2B0aXRsZWBdKSldLDY0KSldKSxfOjF9KV0pLF86MX0pLHAoRShuKSxudWxsLHtkZWZhdWx0Om8oKCk9PltwKEUoZCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bQyhgZGl2YCxxdCxbQyhgZGl2YCxudWxsLFtwKEUoRCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bLi4uc1sxMV18fD1bdihgVXNlcnNgLC0xKV1dKSxfOjF9KSxFKGkpLmRhdGE/LnVzZXJzRmlsZT8oYigpLGcoRShMKSx7a2V5OjB9LHtkZWZhdWx0Om8oKCk9Plt2KGBGaWxlLWJhY2tlZCB1c2VycyBsb2FkIGZyb20gYCtPKEUoaSkuZGF0YS51c2Vyc0ZpbGUpK2AuYCwxKV0pLF86MX0pKTp4KGBgLCEwKV0pLHAoamUse2ZpbGVuYW1lOmBjb25zdW1lcnMtdXNlcnMuY3N2YCxidWlsZDpZZX0pXSldKSxfOjF9KSxwKEUociksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChSZSx7c3RhdGU6bS52YWx1ZSxlcnJvcjpFKHQpLmVycm9yLCJvbi1yZXRyeSI6RSh0KS5yZWZyZXNoLHNrZWxldG9uOmB0YWJsZWAscm93czo1LGNvbHM6NX0se2RlZmF1bHQ6bygoKT0+W3AodnQseyJpZC1sYWJlbCI6YE5hbWVgLCJzZWNvbmRhcnktY29sdW1uLWxhYmVsIjpgR3JvdXBgLGVudHJpZXM6cS52YWx1ZSwic2Vjb25kYXJ5LXZhbHVlIjpGLCJlbXB0eS1tZXNzYWdlIjpnZS52YWx1ZSxub3c6RShfKSwic291cmNlLXZhbHVlIjpSLHNvcnRpbmc6cWUudmFsdWUsIm9uVXBkYXRlOnNvcnRpbmciOnNbM118fD1lPT5xZS52YWx1ZT1lfSxudWxsLDgsW2BlbnRyaWVzYCxgZW1wdHktbWVzc2FnZWAsYG5vd2AsYHNvcnRpbmdgXSldKSxfOjF9LDgsW2BzdGF0ZWAsYGVycm9yYCxgb24tcmV0cnlgXSldKSxfOjF9KV0pLF86MX0pXSkpfX0pLFh0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LFp0PXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxRdD17Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMmB9LCR0PXtjbGFzczpgdGV4dC1zbWB9LGVuPXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMiB0ZXh0LXNtYH0sdG49e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxubj17Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHJuPXtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYW49e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sb249e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sc249QSh7X19uYW1lOmBVc2VyRGV0YWlsYCxwcm9wczp7dXNlcklkOnt9fSxlbWl0czpbYGNsb3NlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IGE9ZSxsPXQsbT10ZSgpLGg9ZmUoKSxlZT1HZSgpLHk9UigpLHtub3c6bmUsc3RhcnQ6aWUsc3RvcDprfT1rZSgpO3UoaWUpLHJlKGspO2xldCBBPVMoKCk9Pm0udXNhZ2U/LnVzZXJzLmZpbmQoZT0+ZS5pZD09PWEudXNlcklkKSksaj1TKCgpPT5oLmRhdGE/LnVzZXJzLmZpbmQoZT0+ZS5uYW1lPT09YS51c2VySWQpKSxNPVMoKCk9Pm0ub3ZlcnZpZXc/LmZlYXR1cmVzLnVzZXJNb2RlbFN0YXRzPz8hMSk7ZnVuY3Rpb24gTigpe3JldHVybiBoLmZldGNoVXNlckRldGFpbChhLnVzZXJJZCx5LndpbmRvdyx5LnNwYW4sTS52YWx1ZSl9dSgoKT0+e04oKSxlZS5yZWZyZXNoKCl9KSxzKFsoKT0+YS51c2VySWQsKCk9PnkucmFuZ2UsTV0sTik7bGV0IFA9UygoKT0+aC5kZXRhaWxbYS51c2VySWRdKSxvZT1TKCgpPT4oUC52YWx1ZT8ucmVxU2VyaWVzPy5idWNrZXRzPz9bXSkubWFwKGU9PmhlKGUsUC52YWx1ZT8ucmVxU2VyaWVzPy53aW5kb3c/P3kud2luZG93KSkpLHNlPVMoKCk9Plt7bGFiZWw6YFJlcXVlc3RzYCxkYXRhOlAudmFsdWU/LnJlcVNlcmllcz8uc2VyaWVzWzBdPy5wb2ludHM/P1tdLGNvbG9yOmAtLWNoYXJ0LXJlcXVlc3RzYH1dKSxjZT1TKCgpPT4oUC52YWx1ZT8uY29zdFNlcmllcz8uYnVja2V0cz8/W10pLm1hcChlPT5oZShlLFAudmFsdWU/LmNvc3RTZXJpZXM/LndpbmRvdz8/eS53aW5kb3cpKSksbGU9UygoKT0+W3tsYWJlbDpgQ29zdGAsZGF0YTooUC52YWx1ZT8uY29zdFNlcmllcz8uc2VyaWVzWzBdPy5wb2ludHM/P1tdKS5tYXAoZT0+ZSksY29sb3I6YC0tY2hhcnQtY29zdGB9XSksdWU9UygoKT0+eWUoe2xvYWRpbmc6UC52YWx1ZT8ubG9hZGluZz8/ITEsaGFzRGF0YTpQLnZhbHVlPy5yZXFTZXJpZXMhPW51bGwsZXJyb3I6UC52YWx1ZT8ucmVxRXJyb3I/P2BgfSkpLEY9UygoKT0+eWUoe2xvYWRpbmc6UC52YWx1ZT8ubG9hZGluZz8/ITEsaGFzRGF0YTpQLnZhbHVlPy5jb3N0U2VyaWVzIT1udWxsLGVycm9yOlAudmFsdWU/LmNvc3RFcnJvcj8/YGB9KSksST1TKCgpPT4hTS52YWx1ZXx8UC52YWx1ZT8ubW9kZWxUb3RhbHNVbmF2YWlsYWJsZT09PSEwKSxtZT1TKCgpPT5bLi4uUC52YWx1ZT8ubW9kZWxUb3RhbHM/LnJvd3M/P1tdXS5zb3J0KChlLHQpPT4odC52YWx1ZXMuY29zdD8/dC52YWx1ZXMucmVxPz8wKS0oZS52YWx1ZXMuY29zdD8/ZS52YWx1ZXMucmVxPz8wKSkpLHE9UygoKT0+eWUoe2xvYWRpbmc6UC52YWx1ZT8ubG9hZGluZz8/ITEsaGFzRGF0YTpQLnZhbHVlPy5tb2RlbFRvdGFscyE9bnVsbCxlcnJvcjpQLnZhbHVlPy5tb2RlbEVycm9yPz9gYH0pKSxfZT1TKCgpPT5lZS5ldmVudHMuZmlsdGVyKGU9PmUudXNlcj09PWEudXNlcklkKS5zbGljZSgwLDEwKSksYmU9UygoKT0+QS52YWx1ZT9FZShBLnZhbHVlKTpbXSkseGU9UygoKT0+e2xldCBlPUEudmFsdWU/LmxpbWl0cz8uY29zdFBlck1vbnRoVVNEO3JldHVybiFBLnZhbHVlfHwhZT9udWxsOk1lKEEudmFsdWUuY29zdFBlck1vbnRoTWljcm9Vc2QsVyhlKSxuZS52YWx1ZSl9KTtyZXR1cm4odCxhKT0+e2xldCBzPV8oYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBiKCksdyhgZGl2YCxYdCxbQyhgZGl2YCxadCxbcChFKGMpLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YGdob3N0YCxzaXplOmBzbWAsb25DbGljazphWzBdfHw9ZT0+bChgY2xvc2VgKX0se2RlZmF1bHQ6bygoKT0+W3Aocyx7aWNvbjpFKGkpLGNsYXNzOmBzaXplLTMuNWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksYVsxXXx8PXYoYCBCYWNrIHRvIGRpcmVjdG9yeSBgLC0xKV0pLF86MX0pXSkscChFKG4pLG51bGwse2RlZmF1bHQ6bygoKT0+W3AoRShkKSxudWxsLHtkZWZhdWx0Om8oKCk9PltDKGBkaXZgLFF0LFtwKEUoRCkse2NsYXNzOmBtaW4tdy0wIGJyZWFrLWFsbCBmb250LW1vbm9gfSx7ZGVmYXVsdDpvKCgpPT5bdihPKGUudXNlcklkKSwxKV0pLF86MX0pLGoudmFsdWU/LmFkbWluPyhiKCksZyhFKFkpLHtrZXk6MCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0Om8oKCk9PlsuLi5hWzJdfHw9W3YoYGFkbWluYCwtMSldXSksXzoxfSkpOngoYGAsITApLGoudmFsdWU/LnNvdXJjZT8oYigpLGcoRShZKSx7a2V5OjEsdmFyaWFudDpgc2Vjb25kYXJ5YH0se2RlZmF1bHQ6bygoKT0+W3YoTyhqLnZhbHVlLnNvdXJjZSksMSldKSxfOjF9KSk6eChgYCwhMCldKSxBLnZhbHVlPy5ncm91cHM/Lmxlbmd0aHx8QS52YWx1ZT8uZ3JvdXBOYW1lPyhiKCksZyhFKEwpLHtrZXk6MH0se2RlZmF1bHQ6bygoKT0+W3YoYCBNZW1iZXIgb2YgYCtPKChBLnZhbHVlPy5ncm91cHM/P1tBLnZhbHVlPy5ncm91cE5hbWVdKS5maWx0ZXIoQm9vbGVhbikuam9pbihgLCBgKSksMSldKSxfOjF9KSk6eChgYCwhMCldKSxfOjF9KSxBLnZhbHVlPyhiKCksZyhFKHIpLHtrZXk6MSxjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtIHNtOmdyaWQtY29scy00YH0se2RlZmF1bHQ6bygoKT0+W3AoUSx7bGFiZWw6YFJlcXVlc3RzL2RheWB9LHtkZWZhdWx0Om8oKCk9PltwKFose3ZhbHVlOkEudmFsdWUucmVxdWVzdHNQZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pXSksXzoxfSkscChRLHtsYWJlbDpgQ29zdC9kYXlgfSx7ZGVmYXVsdDpvKCgpPT5bdihPKEUoSikoQS52YWx1ZS5jb3N0UGVyRGF5TWljcm9Vc2QpKSwxKV0pLF86MX0pLHAoUSx7bGFiZWw6YENvc3QvbW9udGhgfSx7ZGVmYXVsdDpvKCgpPT5bdihPKEUoSikoQS52YWx1ZS5jb3N0UGVyTW9udGhNaWNyb1VzZCkpLDEpXSksXzoxfSksQyhgZGl2YCxudWxsLFthWzRdfHw9QyhgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGltaXRzYCwtMSksQyhgcGAsJHQsTyhFKEcpKEEudmFsdWUubGltaXRzKSksMSldKV0pLF86MX0pKTooYigpLGcoRShyKSx7a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6bygoKT0+Wy4uLmFbM118fD1bdihgIE5vIHVzYWdlIHNjb3BlIGZvciB0aGlzIHVzZXIgeWV0IOKAlCBpdCBhcHBlYXJzIGFmdGVyIHRoZWlyIGZpcnN0IHJlcXVlc3QuIGAsLTEpXV0pLF86MX0pKV0pLF86MX0pLEEudmFsdWUmJmJlLnZhbHVlLmxlbmd0aD8oYigpLGcoRShuKSx7a2V5OjB9LHtkZWZhdWx0Om8oKCk9PltwKEUoZCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKEQpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLmFbNV18fD1bdihgSGVhZHJvb21gLC0xKV1dKSxfOjF9KSx4ZS52YWx1ZT8oYigpLGcoRShMKSx7a2V5OjB9LHtkZWZhdWx0Om8oKCk9Plt2KGBBdCB0aGUgY3VycmVudCBwYWNlLCBjb3N0L21vbnRoIHJ1bnMgb3V0IGFyb3VuZCBgK08oRSh2ZSkoeGUudmFsdWUpKStgLmAsMSldKSxfOjF9KSk6eChgYCwhMCldKSxfOjF9KSxwKEUociksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChvdCx7cmF0aW9zOmJlLnZhbHVlfSxudWxsLDgsW2ByYXRpb3NgXSldKSxfOjF9KV0pLF86MX0pKTp4KGBgLCEwKSxwKEhlLHt0aXRsZTpgUmVxdWVzdHMgb3ZlciB0aW1lYCxzdGF0ZTp1ZS52YWx1ZSxlcnJvcjpQLnZhbHVlPy5yZXFFcnJvcj8/YGAsIm9uLXJldHJ5IjpOLGxhYmVsczpvZS52YWx1ZSxkYXRhc2V0czpzZS52YWx1ZSwiYXJpYS1sYWJlbCI6YFJlcXVlc3RzIG92ZXIgdGltZSBmb3IgJHtlLnVzZXJJZH1gfSxudWxsLDgsW2BzdGF0ZWAsYGVycm9yYCxgbGFiZWxzYCxgZGF0YXNldHNgLGBhcmlhLWxhYmVsYF0pLHAoSGUse3RpdGxlOmBDb3N0IG92ZXIgdGltZWAsc3RhdGU6Ri52YWx1ZSxlcnJvcjpQLnZhbHVlPy5jb3N0RXJyb3I/P2BgLCJvbi1yZXRyeSI6TixsYWJlbHM6Y2UudmFsdWUsZGF0YXNldHM6bGUudmFsdWUsInZhbHVlLWZvcm1hdHRlciI6RShKKSwiYXJpYS1sYWJlbCI6YENvc3Qgb3ZlciB0aW1lIGZvciAke2UudXNlcklkfWB9LG51bGwsOCxbYHN0YXRlYCxgZXJyb3JgLGBsYWJlbHNgLGBkYXRhc2V0c2AsYHZhbHVlLWZvcm1hdHRlcmAsYGFyaWEtbGFiZWxgXSkscChFKG4pLG51bGwse2RlZmF1bHQ6bygoKT0+W3AoRShkKSxudWxsLHtkZWZhdWx0Om8oKCk9PltwKEUoRCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bLi4uYVs2XXx8PVt2KGBNb2RlbHMgdXNlZGAsLTEpXV0pLF86MX0pXSksXzoxfSkscChFKHIpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0Om8oKCk9PltwKFVlLHt3aW5kb3c6RSh5KS53aW5kb3csc3BhbjpFKHkpLnNwYW59LG51bGwsOCxbYHdpbmRvd2AsYHNwYW5gXSksSS52YWx1ZT8oYigpLGcoV2Use2tleTowLHRpdGxlOmBQZXItdXNlci1tb2RlbCBzdGF0aXN0aWNzIGFyZSBvZmZgLCJjb25maWcta2V5IjpgYWRtaW4uc3RhdHMudXNlck1vZGVsYCxwdXJwb3NlOmB0byBzZWUgYSBwZXItbW9kZWwgYnJlYWtkb3duIGZvciB0aGlzIHVzZXIuYH0pKTpxLnZhbHVlPT09YHNrZWxldG9uYD8oYigpLGcoSCx7a2V5OjEscm93czozLGNvbHM6M30pKTpxLnZhbHVlPT09YGVycm9yYD8oYigpLGcoZGUse2tleToyLG1lc3NhZ2U6UC52YWx1ZT8ubW9kZWxFcnJvcj8/YGAsIm9uLXJldHJ5IjpOfSxudWxsLDgsW2BtZXNzYWdlYF0pKTptZS52YWx1ZS5sZW5ndGg/KGIoKSxnKEUoVikse2tleTo0fSx7ZGVmYXVsdDpvKCgpPT5bcChFKHBlKSxudWxsLHtkZWZhdWx0Om8oKCk9PltwKEUoVSksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKFgpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLmFbN118fD1bdihgTW9kZWxgLC0xKV1dKSxfOjF9KSxwKEUoWCkse2NsYXNzOmB0ZXh0LXJpZ2h0YH0se2RlZmF1bHQ6bygoKT0+Wy4uLmFbOF18fD1bdihgUmVxdWVzdHNgLC0xKV1dKSxfOjF9KSxwKEUoWCkse2NsYXNzOmB0ZXh0LXJpZ2h0YH0se2RlZmF1bHQ6bygoKT0+Wy4uLmFbOV18fD1bdihgQ29zdGAsLTEpXV0pLF86MX0pXSksXzoxfSldKSxfOjF9KSxwKEUoeiksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bKGIoITApLHcoZixudWxsLFQobWUudmFsdWUsZT0+KGIoKSxnKEUoVSkse2tleTplLmlkfSx7ZGVmYXVsdDpvKCgpPT5bcChFKEIpLG51bGwse2RlZmF1bHQ6bygoKT0+W3AoYWUse2lkOmUuaWR9LG51bGwsOCxbYGlkYF0pXSksXzoyfSwxMDI0KSxwKEUoQikse2NsYXNzOmB0ZXh0LXJpZ2h0IHRhYnVsYXItbnVtc2B9LHtkZWZhdWx0Om8oKCk9PltwKFose3ZhbHVlOmUudmFsdWVzLnJlcT8/MH0sbnVsbCw4LFtgdmFsdWVgXSldKSxfOjJ9LDEwMjQpLHAoRShCKSx7Y2xhc3M6YHRleHQtcmlnaHQgdGFidWxhci1udW1zYH0se2RlZmF1bHQ6bygoKT0+W3YoTyhFKEopKGUudmFsdWVzLmNvc3Q/PzApKSwxKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKTooYigpLGcoSyx7a2V5OjMsdGl0bGU6YE5vIHRyYWZmaWMgaW4gdGhpcyByYW5nZS5gfSx7ZGVmYXVsdDpvKCgpPT5bcChMZSldKSxfOjF9KSldKSxfOjF9KV0pLF86MX0pLHAoRShuKSxudWxsLHtkZWZhdWx0Om8oKCk9PltwKEUoZCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKEQpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLmFbMTBdfHw9W3YoYFJlY2VudCBlcnJvcnNgLC0xKV1dKSxfOjF9KV0pLF86MX0pLHAoRShyKSxudWxsLHtkZWZhdWx0Om8oKCk9PltfZS52YWx1ZS5sZW5ndGg/KGIoKSx3KGB1bGAsZW4sWyhiKCEwKSx3KGYsbnVsbCxUKF9lLnZhbHVlLChlLHQpPT4oYigpLHcoYGxpYCx7a2V5OnQsY2xhc3M6YGJvcmRlci1iIHBiLTIgbGFzdDpib3JkZXItMCBsYXN0OnBiLTBgfSxbQyhgcGAsdG4sW3AoRShZKSx7dmFyaWFudDpgc2Vjb25kYXJ5YH0se2RlZmF1bHQ6bygoKT0+W3YoTyhlLmtpbmQpLDEpXSksXzoyfSwxMDI0KSxDKGBzcGFuYCxubixPKEUoZ2UpKGUudGltZSkpLDEpXSksQyhgcGAscm4sTyhlLm1lc3NhZ2UpLDEpXSkpKSwxMjgpKV0pKTooYigpLGcoSyx7a2V5OjEsdGl0bGU6YE5vIHJlY2VudCBlcnJvcnMgaW4gdGhlIGN1cnJlbnQgZXZlbnQgd2luZG93LmB9KSldKSxfOjF9KV0pLF86MX0pLGoudmFsdWU/LnByb3ZpZGVycz8ubGVuZ3RofHxqLnZhbHVlPy5tb2RlbHM/Lmxlbmd0aD8oYigpLGcoRShuKSx7a2V5OjF9LHtkZWZhdWx0Om8oKCk9PltwKEUoZCksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKEQpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLmFbMTFdfHw9W3YoYFBlcnNvbmFsIGdyYW50YCwtMSldXSksXzoxfSkscChFKEwpLG51bGwse2RlZmF1bHQ6bygoKT0+Wy4uLmFbMTJdfHw9W3YoYEFjY2VzcyB0aGlzIHVzZXIgaGFzIGJleW9uZCB0aGVpciBncm91cCdzIG93bi5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHAoRShyKSx7Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTQgc206Z3JpZC1jb2xzLTJgfSx7ZGVmYXVsdDpvKCgpPT5bQyhgZGl2YCxudWxsLFthWzEzXXx8PUMoYHBgLHtjbGFzczpgbWItMS41IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByb3ZpZGVyc2AsLTEpLEMoYGRpdmAsYW4sWyhiKCEwKSx3KGYsbnVsbCxUKGoudmFsdWU/LnByb3ZpZGVycz8/W10sZT0+KGIoKSxnKEUoWSkse2tleTplLGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBtYXgtdy1mdWxsIHRydW5jYXRlIGZvbnQtbW9ubyBmb250LW5vcm1hbGAsdGl0bGU6ZX0se2RlZmF1bHQ6bygoKT0+W3YoTyhlKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKSksMTI4KSldKV0pLEMoYGRpdmAsbnVsbCxbYVsxNF18fD1DKGBwYCx7Y2xhc3M6YG1iLTEuNSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNb2RlbHNgLC0xKSxDKGBkaXZgLG9uLFsoYighMCksdyhmLG51bGwsVChqLnZhbHVlPy5tb2RlbHM/P1tdLGU9PihiKCksZyhhZSx7a2V5OmUsaWQ6ZX0sbnVsbCw4LFtgaWRgXSkpKSwxMjgpKV0pXSldKSxfOjF9KV0pLF86MX0pKTp4KGBgLCEwKV0pfX19KSxjbj17a2V5OjEsY2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxsbj1BKHtfX25hbWU6YENvbnN1bWVyc1BhZ2VgLHNldHVwKGUpe2xldCB0PW5lKCksbj1TKCgpPT50LnBhcmFtcy51c2VyKSxyPVMoKCk9PnQucGFyYW1zLnZpZXc9PT1gbWF0cml4YD9gbWF0cml4YDpgZGlyZWN0b3J5YCksaT1TKCgpPT5aZSh0LnBhcmFtcy5tYXRyaXgpKTtmdW5jdGlvbiBhKGUpe2lmKGUhPT1gZGlyZWN0b3J5YCYmZSE9PWBtYXRyaXhgKXJldHVybjtsZXR7dXNlcjpuLC4uLnJ9PXQucGFyYW1zO3QuZ29UbyhgY29uc3VtZXJzYCx7Li4ucix2aWV3OmV9KX1mdW5jdGlvbiBzKGUpe2xldHt1c2VyOm4sbWF0cml4OnIsLi4uaX09dC5wYXJhbXM7aWYoZT09PWBtb2RlbHNgKXt0LmdvVG8oYGNvbnN1bWVyc2Asey4uLmksdmlldzpgbWF0cml4YH0pO3JldHVybn10LmdvVG8oYGNvbnN1bWVyc2Asey4uLmksdmlldzpgbWF0cml4YCxtYXRyaXg6ZX0pfWZ1bmN0aW9uIGMoKXtsZXR7dXNlcjplLC4uLm59PXQucGFyYW1zO3QuZ29UbyhgY29uc3VtZXJzYCxuKX1yZXR1cm4oZSx0KT0+bi52YWx1ZT8oYigpLGcoc24se2tleTowLCJ1c2VyLWlkIjpuLnZhbHVlLG9uQ2xvc2U6Y30sbnVsbCw4LFtgdXNlci1pZGBdKSk6KGIoKSx3KGBkaXZgLGNuLFtwKEUoRikseyJtb2RlbC12YWx1ZSI6ci52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YX0se2RlZmF1bHQ6bygoKT0+W3AoRSh1ZSksbnVsbCx7ZGVmYXVsdDpvKCgpPT5bcChFKEkpLHt2YWx1ZTpgZGlyZWN0b3J5YH0se2RlZmF1bHQ6bygoKT0+Wy4uLnRbMF18fD1bdihgRGlyZWN0b3J5YCwtMSldXSksXzoxfSkscChFKEkpLHt2YWx1ZTpgbWF0cml4YH0se2RlZmF1bHQ6bygoKT0+Wy4uLnRbMV18fD1bdihgQWNjZXNzIG1hdHJpeGAsLTEpXV0pLF86MX0pXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKSxyLnZhbHVlPT09YGRpcmVjdG9yeWA/KGIoKSxnKFl0LHtrZXk6MH0pKTooYigpLGcobnQse2tleToxLGtpbmQ6aS52YWx1ZSwib25VcGRhdGU6a2luZCI6c30sbnVsbCw4LFtga2luZGBdKSldKSl9fSk7ZXhwb3J0e2xuIGFzIGRlZmF1bHR9Ow==",
),
},
"EntityLink-BR6plaWV.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e1ogYXMgZSxfbiBhcyB0LGZyIGFzIG4saXIgYXMgcixuIGFzIGksc24gYXMgYSx1biBhcyBvLHZpIGFzIHMsd2kgYXMgYyx4aSBhcyBsLHluIGFzIHV9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjt2YXIgZD1bYGFyaWEtbGFiZWxgLGB0aXRsZWBdLGY9dSh7X19uYW1lOmBFbnRpdHlMaW5rYCxwcm9wczp7bGFiZWw6e30sa2luZDp7fSxpZDp7fSxsYWJlbENsYXNzOnt9fSxzZXR1cCh1KXtsZXQgZj11LHA9aSgpLG09e3VzZXI6e3BhZ2U6YGNvbnN1bWVyc2AscGFyYW1LZXk6YHVzZXJgLG5vdW46YENvbnN1bWVyc2B9LG1vZGVsOntwYWdlOmBtb2RlbHNgLHBhcmFtS2V5OmBtb2RlbGAsbm91bjpgTW9kZWxzYH19O2Z1bmN0aW9uIGgoZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgdD1tW2Yua2luZF07cC5nb1RvKHQucGFnZSx7W3QucGFyYW1LZXldOmYuaWR9KX1yZXR1cm4oaSxmKT0+e2xldCBwPW4oYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiByKCksbyhgYnV0dG9uYCx7dHlwZTpgYnV0dG9uYCwiYXJpYS1sYWJlbCI6YFZpZXcgJHt1LmxhYmVsfSBpbiAke21bdS5raW5kXS5ub3VufWAsdGl0bGU6YFZpZXcgJHt1LmxhYmVsfSBpbiAke21bdS5raW5kXS5ub3VufWAsY2xhc3M6YGlubGluZS1mbGV4IG1pbi13LTAgY3Vyc29yLXBvaW50ZXIgaXRlbXMtY2VudGVyIGdhcC0xIHJvdW5kZWQtc20gdGV4dC1pbmhlcml0IGhvdmVyOnRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTBgLG9uQ2xpY2s6aH0sW2EoYHNwYW5gLHtjbGFzczpsKFtgbWluLXctMGAsdS5sYWJlbENsYXNzXSl9LGModS5sYWJlbCksMyksdChwLHtpY29uOnMoZSksY2xhc3M6YHNpemUtMyBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldLDgsZCl9fX0pO2V4cG9ydHtmIGFzIHR9Ow==",
),
},
"ErrorState-DDJOKJlz.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0xyIGFzIGUsTyBhcyB0LFggYXMgbixfbiBhcyByLGNpIGFzIGksY24gYXMgYSxmciBhcyBvLGduIGFzIHMsZ3QgYXMgYyxpciBhcyBsLGxuIGFzIHUsc24gYXMgZCx1biBhcyBmLHZpIGFzIHAsd2kgYXMgbSx4aSBhcyBoLHluIGFzIGd9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjt2YXIgXz17cm9sZTpgYWxlcnRgLGNsYXNzOmBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMiBweC00IHB5LTggdGV4dC1jZW50ZXJgfSx2PXtjbGFzczpgbWF4LXctZnVsbCBicmVhay13b3JkcyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZGVzdHJ1Y3RpdmVgfSx5PWcoe19fbmFtZTpgRXJyb3JTdGF0ZWAscHJvcHM6e21lc3NhZ2U6e30sb25SZXRyeTp7dHlwZTpGdW5jdGlvbn19LHNldHVwKGcpe2xldCB5PWcsYj1pKCExKTthc3luYyBmdW5jdGlvbiB4KCl7aWYoISgheS5vblJldHJ5fHxiLnZhbHVlKSl7Yi52YWx1ZT0hMDt0cnl7YXdhaXQgeS5vblJldHJ5KCl9ZmluYWxseXtiLnZhbHVlPSExfX19cmV0dXJuKGkseSk9PntsZXQgUz1vKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gbCgpLGYoYGRpdmAsXyxbcihTLHtpY29uOnAoYyksY2xhc3M6YHNpemUtNiB0ZXh0LWRlc3RydWN0aXZlYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxkKGBwYCx2LG0oZy5tZXNzYWdlKSwxKSxnLm9uUmV0cnk/KGwoKSxhKHAodCkse2tleTowLHR5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLGNsYXNzOmBtdC0xYCxkaXNhYmxlZDpiLnZhbHVlLG9uQ2xpY2s6eH0se2RlZmF1bHQ6ZSgoKT0+W3IoUyx7aWNvbjpwKG4pLGNsYXNzOmgoW2BzaXplLTMuNWAsYi52YWx1ZT9gYW5pbWF0ZS1zcGluIG1vdGlvbi1yZWR1Y2U6YW5pbWF0ZS1ub25lYDp2b2lkIDBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLHMoYCBgK20oYi52YWx1ZT9gUmV0cnlpbmfigKZgOmBSZXRyeWApLDEpXSksXzoxfSw4LFtgZGlzYWJsZWRgXSkpOnUoYGAsITApXSl9fX0pO2V4cG9ydHt5IGFzIHR9Ow==",
),
},
"HomePage-BtNn00HV.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0MgYXMgZSxEIGFzIHQsRSBhcyBuLExyIGFzIHIsTXIgYXMgaSxRbiBhcyBhLFMgYXMgbyxUIGFzIHMsWHQgYXMgYyxfbiBhcyBsLGIgYXMgZWUsY2kgYXMgdSxjbiBhcyBkLGRyIGFzIHRlLGcgYXMgbmUsZ24gYXMgZixpciBhcyBwLGxuIGFzIG0sbXIgYXMgaCxuIGFzIHJlLG5yIGFzIGllLG9pIGFzIGFlLG9uIGFzIGcsc24gYXMgXyx0IGFzIHYsdW4gYXMgeSx1ciBhcyBiLHYgYXMgb2UsdmkgYXMgeCx3IGFzIHNlLHdpIGFzIFMseGkgYXMgQyx5IGFzIGNlLHluIGFzIHd9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7biBhcyBsZSxyIGFzIHVlLHQgYXMgZGV9ZnJvbSIuL3RhYnMtQ3VoNkZRMGouanMiO2ltcG9ydHt0IGFzIGZlfWZyb20iLi9pbmRleC04OENUUk5IUC5qcyI7aW1wb3J0e3QgYXMgcGV9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHthIGFzIG1lLGcgYXMgaGUsayBhcyBULG0gYXMgZ2UsbiBhcyBFLHMgYXMgRCx0IGFzIF9lLHggYXMgT31mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHtpIGFzIHZlLG4gYXMgeWUsbyBhcyBiZSxzIGFzIHhlLHQgYXMgU2V9ZnJvbSIuL1RyeUxvbmdlclJhbmdlQnV0dG9uLUJoMTl5aXY4LmpzIjtpbXBvcnR7dCBhcyBDZX1mcm9tIi4vTG9hZFN0YXRlVmlldy1CRWJzZXg3WS5qcyI7aW1wb3J0e3QgYXMga31mcm9tIi4vRW50aXR5TGluay1CUjZwbGFXVi5qcyI7aW1wb3J0e3QgYXMgd2V9ZnJvbSIuL2V2ZW50cy1SOXlRbEJjMC5qcyI7aW1wb3J0e2EgYXMgVGUsciBhcyBFZX1mcm9tIi4vZXZlbnRzLWZpbHRlci1DaWV1MVVCUi5qcyI7aW1wb3J0e2EgYXMgRGUsYyBhcyBPZSxpIGFzIGtlLG4gYXMgQWUsbyBhcyBqZSxyIGFzIE1lLHQgYXMgTmV9ZnJvbSIuL2twaS1QMDhVdnJLaS5qcyI7dmFyIEE9e2NsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFBlPXtrZXk6MCxjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxqPXcoe19fbmFtZTpgS3BpVGlsZWAscHJvcHM6e2xhYmVsOnt9LHZhbHVlOnt9LGRlbHRhOnt9LHRpZXI6e2RlZmF1bHQ6YG9rYH0sdG86e319LHNldHVwKGUpe2xldCBpPWUsYT1yZSgpLG89ZygoKT0+e3N3aXRjaChpLnRpZXIpe2Nhc2Vgd2FybmA6cmV0dXJuYHRleHQtc3RhdHVzLXdhcm5gO2Nhc2VgY3JpdGljYWxgOnJldHVybmB0ZXh0LWRlc3RydWN0aXZlYDtkZWZhdWx0OnJldHVybmB0ZXh0LWZvcmVncm91bmRgfX0pO2Z1bmN0aW9uIHMoKXtpLnRvJiZhLmdvVG8oaS50by5wYWdlLGkudG8ucGFyYW1zPz97fSl9cmV0dXJuKGksYSk9PihwKCksZChoKGUudG8/YGJ1dHRvbmA6YGRpdmApLHt0eXBlOmUudG8/YGJ1dHRvbmA6dm9pZCAwLGNsYXNzOkMoW2BibG9jayB3LWZ1bGwgcm91bmRlZC14bCB0ZXh0LWxlZnRgLGUudG8/YGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOm9wYWNpdHktOTAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTBgOnZvaWQgMF0pLG9uQ2xpY2s6c30se2RlZmF1bHQ6cigoKT0+W2woeCh0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKHgobikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xIHB4LTQgcHktM2B9LHtkZWZhdWx0OnIoKCk9PltfKGBzcGFuYCxBLFMoZS5sYWJlbCksMSksXyhgc3BhbmAse2NsYXNzOkMoW2B0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRhYnVsYXItbnVtc2Asby52YWx1ZV0pfSxTKGUudmFsdWUpLDMpLGUuZGVsdGE/KHAoKSx5KGBzcGFuYCxQZSxTKGUuZGVsdGEpLDEpKTptKGBgLCEwKV0pLF86MX0pXSksXzoxfSldKSxfOjF9LDgsW2B0eXBlYCxgY2xhc3NgXSkpfX0pLEZlPXcoe19fbmFtZTpgU2tlbGV0b25LcGlUaWxlYCxzZXR1cChlKXtyZXR1cm4oZSxpKT0+KHAoKSxkKHgodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbCh4KG4pLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTNgfSx7ZGVmYXVsdDpyKCgpPT5bbCh4KHYpLHtjbGFzczpgaC0zIHctMjBgfSksbCh4KHYpLHtjbGFzczpgaC03IHctMTZgfSksbCh4KHYpLHtjbGFzczpgaC0zIHctMjhgfSldKSxfOjF9KV0pLF86MX0pKX19KSxNPXtrZXk6NCxjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMS41YH0sTj17Y2xhc3M6YGZsZXggbWluLXctMCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxJZT17Y2xhc3M6YHctNCBzaHJpbmstMCB0ZXh0LXJpZ2h0IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sUD17Y2xhc3M6YHNocmluay0wIGZvbnQtbWVkaXVtIHRhYnVsYXItbnVtc2B9LEY9dyh7X19uYW1lOmBUb3BMaXN0YCxwcm9wczp7dGl0bGU6e30saXRlbXM6e30sZW1wdHlUZXh0Ont9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxsb2FkZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxlcnJvcjp7ZGVmYXVsdDpgYH0sb25SZXRyeTp7fSxub3RpY2U6e30sbm90aWNlRGVzY3JpcHRpb246e319LHNldHVwKGUpe2xldCBpPWUsYT1nKCgpPT5PKHtsb2FkaW5nOmkubG9hZGluZyxoYXNEYXRhOmkubG9hZGVkLGVycm9yOmkuZXJyb3I/P2BgfSkpO3JldHVybihpLG8pPT4ocCgpLGQoeCh0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKHgocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbCh4KHNlKSxudWxsLHtkZWZhdWx0OnIoKCk9PltmKFMoZS50aXRsZSksMSldKSxfOjF9KSx0ZShpLiRzbG90cyxgY29udHJvbHNgKV0pLF86M30pLGwoeChuKSxudWxsLHtkZWZhdWx0OnIoKCk9PltlLm5vdGljZT8ocCgpLGQoVCx7a2V5OjAsdGl0bGU6ZS5ub3RpY2UsZGVzY3JpcHRpb246ZS5ub3RpY2VEZXNjcmlwdGlvbn0sbnVsbCw4LFtgdGl0bGVgLGBkZXNjcmlwdGlvbmBdKSk6YS52YWx1ZT09PWBza2VsZXRvbmA/KHAoKSxkKEUse2tleToxLHJvd3M6NX0pKTphLnZhbHVlPT09YGVycm9yYD8ocCgpLGQocGUse2tleToyLG1lc3NhZ2U6ZS5lcnJvcj8/YGAsIm9uLXJldHJ5IjplLm9uUmV0cnl9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6ZS5pdGVtcy5sZW5ndGg9PT0wPyhwKCksZChULHtrZXk6Myx0aXRsZTplLmVtcHR5VGV4dH0se2RlZmF1bHQ6cigoKT0+W3RlKGkuJHNsb3RzLGBlbXB0eS1hY3Rpb25gKV0pLF86M30sOCxbYHRpdGxlYF0pKToocCgpLHkoYG9sYCxNLFsocCghMCkseShjLG51bGwsYihlLml0ZW1zLChlLHQpPT4ocCgpLHkoYGxpYCx7a2V5OmUuaWQsY2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyB0ZXh0LXNtYH0sW18oYHNwYW5gLE4sW18oYHNwYW5gLEllLFModCsxKSwxKSxsKGsse2xhYmVsOmUubGFiZWwsa2luZDplLmtpbmQsaWQ6ZS5pZCxjbGFzczpgbWluLXctMGAsImxhYmVsLWNsYXNzIjpgdHJ1bmNhdGVgfSxudWxsLDgsW2BsYWJlbGAsYGtpbmRgLGBpZGBdKV0pLF8oYHNwYW5gLFAsUyhlLnZhbHVlKSwxKV0pKSksMTI4KSldKSldKSxfOjN9KV0pLF86M30pKX19KSxJPVtgY29zdGAsYHJlcWAsYHRva2Vuc2BdLEw9YGNvc3RgLFI9e2Nvc3Q6YENvc3RgLHJlcTpgUmVxdWVzdHNgLHRva2VuczpgVG9rZW5zYH0sTGU9NjRlMyxSZT17Y29zdDpbYGNvc3RgXSxyZXE6W2ByZXFgXSx0b2tlbnM6W2B0b2tpbmAsYHRva291dGBdfTtmdW5jdGlvbiB6ZShlKXtyZXR1cm4gSS5pbmNsdWRlcyhlPz9gYCk/ZTpMfXZhciB6PTFlMztmdW5jdGlvbiBCZShlLHQsbixyPXope2xldCBpPW5ldyBVUkxTZWFyY2hQYXJhbXM7cmV0dXJuIGkuc2V0KGBraW5kYCxgdXNlcmApLGkuc2V0KGB3aW5kb3dgLGUpLGkuc2V0KGBzcGFuYCxTdHJpbmcodCkpLGkuc2V0KGBvZmZzZXRgLGAwYCksaS5zZXQoYG1ldHJpY3NgLFJlW25dLmpvaW4oYCxgKSksaS5zZXQoYGxpbWl0YCxTdHJpbmcocikpLGAvYWRtaW4vYXBpL3VzYWdlL3RvdGFscz8ke2kudG9TdHJpbmcoKX1gfWZ1bmN0aW9uIFZlKGUsdCxuKXtyZXR1cm4gZSp0Km4+TGV9ZnVuY3Rpb24gSGUoZSx0LG4pe3JldHVybiBlIT09bnVsbCYmVmUoZSx0LG4pfWZ1bmN0aW9uIFVlKGUsdCl7c3dpdGNoKHQpe2Nhc2VgY29zdGA6cmV0dXJuIGUudmFsdWVzLmNvc3Q/PzA7Y2FzZWByZXFgOnJldHVybiBlLnZhbHVlcy5yZXE/PzA7Y2FzZWB0b2tlbnNgOnJldHVybihlLnZhbHVlcy50b2tpbj8/MCkrKGUudmFsdWVzLnRva291dD8/MCl9fWZ1bmN0aW9uIFdlKGUsdCxuPTUpe3JldHVybiBlLm1hcChlPT4oe2lkOmUuaWQsdmFsdWU6VWUoZSx0KX0pKS5maWx0ZXIoZT0+ZS52YWx1ZT4wKS5zb3J0KChlLHQpPT50LnZhbHVlPT09ZS52YWx1ZT9lLmlkLmxvY2FsZUNvbXBhcmUodC5pZCk6dC52YWx1ZS1lLnZhbHVlKS5zbGljZSgwLG4pfXZhciBHZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxLZT17ImFyaWEtbGFiZWwiOmBLZXkgbWV0cmljc2AsY2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTMgc206Z3JpZC1jb2xzLTMgbGc6Z3JpZC1jb2xzLTRgfSxxZT17a2V5OjEsY2xhc3M6YGNvbC1zcGFuLWZ1bGxgfSxKZT17ImFyaWEtbGFiZWwiOmBUb3Agc3BlbmRlcnMgYW5kIG1vZGVsc2AsY2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgbGc6Z3JpZC1jb2xzLTJgfSxZZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTJgfSxYZT17Y2xhc3M6YGZsZXggbWluLXctMCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxaZT17Y2xhc3M6YG1pbi13LTAgdHJ1bmNhdGUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sUWU9e2NsYXNzOmBzaHJpbmstMCB0YWJ1bGFyLW51bXMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sJGU9NSxldD02ZTQsdHQ9dyh7X19uYW1lOmBIb21lUGFnZWAsc2V0dXAodGUpe2xldCBtPWUoKSxoPW5lKCksdj13ZSgpLEM9ZmUoKSx3PXJlKCksVD1nKCgpPT5oLnVzYWdlPy50b3RhbC5jb3N0UGVyRGF5TWljcm9Vc2Q/PzApLEU9ZygoKT0+aC51c2FnZT8udG90YWwuY29zdFBlck1vbnRoTWljcm9Vc2Q/PzApLGs9ZygoKT0+amUoaC5vdmVydmlldz8uZ3JvdXBzPz9bXSkpLEE9ZygoKT0+QWUoTmUoRS52YWx1ZSxrLnZhbHVlKSkpLFBlPWcoKCk9PntsZXQgZT1gJHtEKFQudmFsdWUpfSB0b2RheWA7cmV0dXJuIGsudmFsdWU+MD9gJHtlfSDCtyBidWRnZXQgJHtEKGsudmFsdWUpfS9tb2A6YCR7ZX0gwrcgbm8gYnVkZ2V0IHNldGB9KSxNPWcoKCk9PnhlKEUudmFsdWUsYmUobmV3IERhdGUpKSksTj1nKCgpPT52ZShNLnZhbHVlLGsudmFsdWU+MD9oZShrLnZhbHVlKTp2b2lkIDApKSxJZT1nKCgpPT5NLnZhbHVlPT09bnVsbD95ZTpEKE0udmFsdWUpKSxQPWcoKCk9Pk4udmFsdWUud2lsbEV4Y2VlZD9gY3JpdGljYWxgOmBva2ApLEw9ZygoKT0+e2lmKE0udmFsdWUhPT1udWxsKXJldHVybiBrLnZhbHVlPD0wP2BubyBidWRnZXQgc2V0YDpOLnZhbHVlLndpbGxFeGNlZWQ/YHByb2plY3RlZCB0byBleGNlZWQgYnVkZ2V0YDpgcHJvamVjdGVkIHdpdGhpbiBidWRnZXRgfSksTGU9ZygoKT0+aC51c2FnZT8udG90YWwucmVxdWVzdHNQZXJNaW51dGU/PzApLHo9ZygoKT0+a2UoaC5vdmVydmlldz8ucHJvdmlkZXJzPz9bXSkpLFZlPWcoKCk9Pk1lKHoudmFsdWUucmF0ZSkpLFVlPWcoKCk9Pk9lKHoudmFsdWUucmF0ZSxgbm8gdHJhZmZpY2ApKSx0dD1nKCgpPT5gJHt6LnZhbHVlLmZhaWx1cmVzfS8ke3oudmFsdWUuYXR0ZW1wdHN9IGF0dGVtcHRzIGluIHRoZSBsYXN0IG1pbnV0ZWApLG50PWcoKCk9PkRlKGgub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10pKSxydD1nKCgpPT5oLm92ZXJ2aWV3Py53YXJuaW5ncy5sZW5ndGg/PzApLGl0PWcoKCk9Pmgub3ZlcnZpZXc/LnByaWNpbmcudW5wcmljZWQ/PzApLGF0PWcoKCk9Pk8oe2xvYWRpbmc6ITAsaGFzRGF0YTpoLm92ZXJ2aWV3IT09bnVsbCYmaC51c2FnZSE9PW51bGwsZXJyb3I6aC5lcnJvcn0pKSxCPWcoKCk9PnplKHcucGFyYW1zLnRvcCkpO2Z1bmN0aW9uIG90KGUpe2lmKHR5cGVvZiBlIT1gc3RyaW5nYHx8IUkuaW5jbHVkZXMoZSkpcmV0dXJuO2xldCB0PWU7aWYodD09PWBjb3N0YCl7bGV0e3RvcDplLC4uLnR9PXcucGFyYW1zO3cuZ29UbyhgaG9tZWAsdCk7cmV0dXJufXcuZ29UbyhgaG9tZWAsey4uLncucGFyYW1zLHRvcDp0fSl9bGV0IHN0PWcoKCk9PmgudXNhZ2U/LnVzZXJzLmxlbmd0aD8/bnVsbCksVj11KFtdKSxIPXUoW10pLFU9dSghMSksVz11KGBgKSxHPXUoITEpLEs9dShgYCkscT11KCExKSxKPXUoITEpLFk9YWUobmV3IE1hcCksY3Q9ZygoKT0+WS5oYXMoQi52YWx1ZSkpLFg9MCxaPTA7ZnVuY3Rpb24gbHQoZSx0KXtyZXR1cm4gZT09PWBjb3N0YD9EKHQpOm1lKHQpfWxldCB1dD1nKCgpPT5XZShWLnZhbHVlLEIudmFsdWUpLm1hcChlPT4oe2lkOmUuaWQsbGFiZWw6ZS5pZCx2YWx1ZTpsdChCLnZhbHVlLGUudmFsdWUpLGtpbmQ6YHVzZXJgfSkpKSxkdD1nKCgpPT5gVG9wIDUgdXNlcnMgYnkgJHtSW0IudmFsdWVdLnRvTG93ZXJDYXNlKCl9YCk7YXN5bmMgZnVuY3Rpb24gUSgpe2lmKCFtLmlzQXV0aGVudGljYXRlZClyZXR1cm47bGV0IGU9Qi52YWx1ZSx0PVJlW2VdLmxlbmd0aDtpZihIZShzdC52YWx1ZSx0LEMuc3BhbikpeysrWCxVLnZhbHVlPSExLEoudmFsdWU9ITAsVy52YWx1ZT1gYDtyZXR1cm59bGV0IG49KytYO1UudmFsdWU9ITA7dHJ5e2xldCB0PWF3YWl0IGVlKEJlKEMud2luZG93LEMuc3BhbixlKSk7aWYobiE9PVgpcmV0dXJuO1kuc2V0KGUsdC5yb3dzKSxWLnZhbHVlPXQucm93cyxXLnZhbHVlPWBgLEoudmFsdWU9ITF9Y2F0Y2goZSl7aWYobiE9PVgpcmV0dXJuO2UgaW5zdGFuY2VvZiBjZSYmZS5zdGF0dXM9PT00MDAmJi9yYW5nZSB0b28gbGFyZ2UvaS50ZXN0KGUubWVzc2FnZSk/KEoudmFsdWU9ITAsVy52YWx1ZT1gYCk6Vy52YWx1ZT1vKGUpfWZpbmFsbHl7bj09PVgmJihVLnZhbHVlPSExKX19YXN5bmMgZnVuY3Rpb24gZnQoKXtpZighbS5pc0F1dGhlbnRpY2F0ZWQpcmV0dXJuO2xldCBlPSsrWjtHLnZhbHVlPSEwO3RyeXtsZXQgdD1hd2FpdCBlZShgL2FkbWluL2FwaS91c2FnZS9tb2RlbHM/bWV0cmljPWNvc3Qmd2luZG93PSR7Qy53aW5kb3d9JnNwYW49JHtDLnNwYW59JmxpbWl0PSR7JGV9YCk7aWYoZSE9PVopcmV0dXJuO0gudmFsdWU9dC5tb2RlbHMubWFwKGU9Pih7aWQ6ZS5pZCxsYWJlbDplLmlkLHZhbHVlOkQoZS52YWx1ZSksa2luZDpgbW9kZWxgfSkpLEsudmFsdWU9YGAscS52YWx1ZT0hMH1jYXRjaCh0KXtpZihlIT09WilyZXR1cm47Sy52YWx1ZT1vKHQpfWZpbmFsbHl7ZT09PVomJihHLnZhbHVlPSExKX19YXN5bmMgZnVuY3Rpb24gcHQoKXthd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW1EoKSxmdCgpXSl9bGV0ICQ7aShCLGU9PntsZXQgdD1ZLmdldChlKTtWLnZhbHVlPXQ/P1tdLFcudmFsdWU9YGAsSi52YWx1ZT0hMSxRKCl9KSxpKCgpPT5DLnJhbmdlLCgpPT57WS5jbGVhcigpLFYudmFsdWU9W10sSC52YWx1ZT1bXSxxLnZhbHVlPSExLFcudmFsdWU9YGAsSy52YWx1ZT1gYCxKLnZhbHVlPSExLHB0KCl9KTtsZXQgbXQ9ZygoKT0+di5ldmVudHMuc2xpY2UoMCw4KSksaHQ9ZygoKT0+Tyh7bG9hZGluZzp2LnJlZnJlc2hpbmcsaGFzRGF0YTp2Lmxhc3RVcGRhdGVkIT09bnVsbCxlcnJvcjp2LmVycm9yfSkpLGd0PWcoKCk9Pm10LnZhbHVlLmxlbmd0aD09PTApO3JldHVybiBhKCgpPT57di5zdGFydFBvbGxpbmcoKSwkPW9lKHtpbnRlcnZhbE1zOmV0LHRpY2s6KCk9PnZvaWQgcHQoKX0pLCQuc3RhcnQoKX0pLGllKCgpPT57di5zdG9wUG9sbGluZygpLCQ/LnN0b3AoKX0pLChlLGkpPT4ocCgpLHkoYGRpdmAsR2UsW18oYHNlY3Rpb25gLEtlLFthdC52YWx1ZT09PWBza2VsZXRvbmA/KHAoKSx5KGMse2tleTowfSxiKDcsZT0+bChGZSx7a2V5OmV9KSksNjQpKTphdC52YWx1ZT09PWBlcnJvcmA/KHAoKSx5KGBkaXZgLHFlLFtsKHBlLHttZXNzYWdlOngoaCkuZXJyb3IsIm9uLXJldHJ5Ijp4KGgpLnJlZnJlc2h9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKV0pKToocCgpLHkoYyx7a2V5OjJ9LFtsKGose2xhYmVsOmBTcGVuZCAoTVREKWAsdmFsdWU6eChEKShFLnZhbHVlKSxkZWx0YTpQZS52YWx1ZSx0aWVyOkEudmFsdWUsdG86e3BhZ2U6YHNwZW5kYH19LG51bGwsOCxbYHZhbHVlYCxgZGVsdGFgLGB0aWVyYF0pLGwoaix7bGFiZWw6YFByb2plY3RlZCBtb250aC1lbmRgLHZhbHVlOkllLnZhbHVlLGRlbHRhOkwudmFsdWUsdGllcjpQLnZhbHVlLHRvOntwYWdlOmBzcGVuZGB9fSxudWxsLDgsW2B2YWx1ZWAsYGRlbHRhYCxgdGllcmBdKSxsKGose2xhYmVsOmBSZXF1ZXN0cy9taW5gLHZhbHVlOngobWUpKExlLnZhbHVlKX0sbnVsbCw4LFtgdmFsdWVgXSksbChqLHtsYWJlbDpgRXJyb3IgcmF0ZSAobGFzdCBtaW51dGUpYCx2YWx1ZTpVZS52YWx1ZSxkZWx0YTp0dC52YWx1ZSx0aWVyOlZlLnZhbHVlLHRvOntwYWdlOmByZWxpYWJpbGl0eWB9fSxudWxsLDgsW2B2YWx1ZWAsYGRlbHRhYCxgdGllcmBdKSxsKGose2xhYmVsOmBPcGVuIGJyZWFrZXJzIChwZXIgcmVwbGljYSlgLHZhbHVlOlN0cmluZyhudC52YWx1ZSksdGllcjpudC52YWx1ZT4wP2B3YXJuYDpgb2tgLHRvOntwYWdlOmBtb2RlbHNgfX0sbnVsbCw4LFtgdmFsdWVgLGB0aWVyYF0pLGwoaix7bGFiZWw6YENvbmZpZyB3YXJuaW5nc2AsdmFsdWU6U3RyaW5nKHJ0LnZhbHVlKSx0aWVyOnJ0LnZhbHVlPjA/YHdhcm5gOmBva2AsdG86e3BhZ2U6YGNvbmZpZ2B9fSxudWxsLDgsW2B2YWx1ZWAsYHRpZXJgXSksbChqLHtsYWJlbDpgVW5wcmljZWQgbW9kZWxzYCx2YWx1ZTpTdHJpbmcoaXQudmFsdWUpLHRpZXI6aXQudmFsdWU+MD9gd2FybmA6YG9rYCx0bzp7cGFnZTpgc3BlbmRgfX0sbnVsbCw4LFtgdmFsdWVgLGB0aWVyYF0pXSw2NCkpXSksXyhgc2VjdGlvbmAsSmUsW2woRix7dGl0bGU6ZHQudmFsdWUsaXRlbXM6dXQudmFsdWUsImVtcHR5LXRleHQiOmBObyB0cmFmZmljIGluIHRoaXMgcmFuZ2UuYCxsb2FkaW5nOlUudmFsdWUsbG9hZGVkOmN0LnZhbHVlLGVycm9yOlcudmFsdWUsIm9uLXJldHJ5IjpRLG5vdGljZTpKLnZhbHVlP2BUb28gbWFueSBjb25maWd1cmVkIHVzZXJzIGZvciB0aGlzIHJhbmdlLmA6dm9pZCAwLCJub3RpY2UtZGVzY3JpcHRpb24iOmBQaWNrIGEgc2hvcnRlciByYW5nZSBhYm92ZSDigJQgYSBmbGVldCB0aGlzIHNpemUgbmVlZHMgYSBuYXJyb3dlciB3aW5kb3cgdG8gcmFuayB1c2Vycy5gfSx7Y29udHJvbHM6cigoKT0+W2woeCh1ZSkseyJtb2RlbC12YWx1ZSI6Qi52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6b3R9LHtkZWZhdWx0OnIoKCk9PltsKHgobGUpLG51bGwse2RlZmF1bHQ6cigoKT0+WyhwKCEwKSx5KGMsbnVsbCxiKHgoSSksZT0+KHAoKSxkKHgoZGUpLHtrZXk6ZSx2YWx1ZTplfSx7ZGVmYXVsdDpyKCgpPT5bZihTKHgoUilbZV0pLDEpXSksXzoyfSwxMDMyLFtgdmFsdWVgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSwiZW1wdHktYWN0aW9uIjpyKCgpPT5bbChTZSldKSxfOjF9LDgsW2B0aXRsZWAsYGl0ZW1zYCxgbG9hZGluZ2AsYGxvYWRlZGAsYGVycm9yYCxgbm90aWNlYF0pLGwoRix7dGl0bGU6YFRvcCA1IG1vZGVscyBieSBjb3N0YCxpdGVtczpILnZhbHVlLCJlbXB0eS10ZXh0IjpgTm8gdHJhZmZpYyBpbiB0aGlzIHJhbmdlLmAsbG9hZGluZzpHLnZhbHVlLGxvYWRlZDpxLnZhbHVlLGVycm9yOksudmFsdWUsIm9uLXJldHJ5IjpmdH0seyJlbXB0eS1hY3Rpb24iOnIoKCk9PltsKFNlKV0pLF86MX0sOCxbYGl0ZW1zYCxgbG9hZGluZ2AsYGxvYWRlZGAsYGVycm9yYF0pXSksbCh4KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2woeChzKSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKHgoc2UpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbMF18fD1bZihgTGF0ZXN0IGV2ZW50c2AsLTEpXV0pLF86MX0pXSksXzoxfSksbCh4KG4pLG51bGwse2RlZmF1bHQ6cigoKT0+W2woQ2Use3N0YXRlOmh0LnZhbHVlLGVycm9yOngodikuZXJyb3IsIm9uLXJldHJ5Ijp4KHYpLnJlZnJlc2gsc2tlbGV0b246YGxpc3RgLHJvd3M6NCxlbXB0eTpndC52YWx1ZSwiZW1wdHktdGl0bGUiOmBObyBldmVudHMgcmVjb3JkZWQgeWV0LmB9LHtkZWZhdWx0OnIoKCk9PltfKGBvbGAsWWUsWyhwKCEwKSx5KGMsbnVsbCxiKG10LnZhbHVlLChlLHQpPT4ocCgpLHkoYGxpYCx7a2V5OmAke2UudGltZX0tJHtlLnJlcGxpY2F9LSR7dH1gLGNsYXNzOmBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtMyB0ZXh0LXNtYH0sW18oYHNwYW5gLFhlLFtsKHgoX2UpLHt2YXJpYW50OngoRWUpKGUua2luZCksY2xhc3M6YHNocmluay0wIGZvbnQtbm9ybWFsYH0se2RlZmF1bHQ6cigoKT0+W2YoUyh4KFRlKShlLmtpbmQpKSwxKV0pLF86Mn0sMTAzMixbYHZhcmlhbnRgXSksXyhgc3BhbmAsWmUsUyhlLm1lc3NhZ2UpLDEpXSksXyhgc3BhbmAsUWUsUyh4KGdlKShlLnRpbWUpKSwxKV0pKSksMTI4KSldKV0pLF86MX0sOCxbYHN0YXRlYCxgZXJyb3JgLGBvbi1yZXRyeWAsYGVtcHR5YF0pXSksXzoxfSldKSxfOjF9KV0pKX19KTtleHBvcnR7dHQgYXMgZGVmYXVsdH07",
),
},
"LoadStateView-BEbsex7Y.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e19uIGFzIGUsY24gYXMgdCxkciBhcyBuLGlyIGFzIHIseW4gYXMgaX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHt0IGFzIGF9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHtTIGFzIG8sayBhcyBzLG4gYXMgY31mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHt0IGFzIGx9ZnJvbSIuL1NrZWxldG9uQ2hhcnQtMVlfNXM5ZjAuanMiO3ZhciB1PWkoe19fbmFtZTpgTG9hZFN0YXRlVmlld2AscHJvcHM6e3N0YXRlOnt9LGVycm9yOntkZWZhdWx0OmBgfSxvblJldHJ5Ont0eXBlOkZ1bmN0aW9uLGRlZmF1bHQ6dm9pZCAwfSxza2VsZXRvbjp7fSxyb3dzOntkZWZhdWx0OjV9LGNvbHM6e2RlZmF1bHQ6NH0sZW1wdHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxlbXB0eUljb246e2RlZmF1bHQ6dm9pZCAwfSxlbXB0eVRpdGxlOntkZWZhdWx0OmBOb3RoaW5nIHRvIHNob3cuYH0sZW1wdHlEZXNjcmlwdGlvbjp7ZGVmYXVsdDp2b2lkIDB9fSxzZXR1cChpKXtyZXR1cm4odSxkKT0+aS5zdGF0ZT09PWBza2VsZXRvbmAmJmkuc2tlbGV0b249PT1gdGFibGVgPyhyKCksdChvLHtrZXk6MCxyb3dzOmkucm93cyxjb2xzOmkuY29sc30sbnVsbCw4LFtgcm93c2AsYGNvbHNgXSkpOmkuc3RhdGU9PT1gc2tlbGV0b25gJiZpLnNrZWxldG9uPT09YGxpc3RgPyhyKCksdChjLHtrZXk6MSxyb3dzOmkucm93c30sbnVsbCw4LFtgcm93c2BdKSk6aS5zdGF0ZT09PWBza2VsZXRvbmA/KHIoKSx0KGwse2tleToyfSkpOmkuc3RhdGU9PT1gZXJyb3JgPyhyKCksdChhLHtrZXk6MyxtZXNzYWdlOmkuZXJyb3IsIm9uLXJldHJ5IjppLm9uUmV0cnl9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6aS5lbXB0eT9uKHUuJHNsb3RzLGBlbXB0eWAse30sKCk9PltlKHMse2ljb246aS5lbXB0eUljb24sdGl0bGU6aS5lbXB0eVRpdGxlLGRlc2NyaXB0aW9uOmkuZW1wdHlEZXNjcmlwdGlvbn0sbnVsbCw4LFtgaWNvbmAsYHRpdGxlYCxgZGVzY3JpcHRpb25gXSldLHZvaWQgMCw0KTpuKHUuJHNsb3RzLGBkZWZhdWx0YCx7fSx2b2lkIDAsdm9pZCAwLDUpfX0pO2V4cG9ydHt1IGFzIHR9Ow==",
),
},
"ModelsPage-DO-19RNX.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsRCBhcyB0LEUgYXMgbixMciBhcyByLE1yIGFzIGksUW4gYXMgYSxTIGFzIG8sVCBhcyBzLFh0IGFzIGMsX24gYXMgbCxhdCBhcyB1LGIgYXMgZCxjbiBhcyBmLGVpIGFzIGVlLGZyIGFzIHRlLGcgYXMgbmUsZ24gYXMgcCxndCBhcyByZSxpciBhcyBtLGxuIGFzIGgsbiBhcyBpZSxudCBhcyBnLG9pIGFzIGFlLG9uIGFzIF8sc24gYXMgdix1biBhcyB5LHVyIGFzIG9lLHZpIGFzIGIsdyBhcyB4LHdpIGFzIFMseCBhcyBDLHhpIGFzIHcseW4gYXMgVCx5dCBhcyBzZX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHthIGFzIGNlLGMgYXMgRSxpIGFzIGxlLGwgYXMgRCxuIGFzIHVlLG8gYXMgZGUsciBhcyBmZSxzIGFzIHBlLHQgYXMgbWV9ZnJvbSIuL3NlYXJjaC1leHBhbmQtQi13Uk9jbkwuanMiO2ltcG9ydHtsIGFzIE8sdCBhcyBrfWZyb20iLi9pbmRleC04OENUUk5IUC5qcyI7aW1wb3J0e3QgYXMgaGV9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHtTIGFzIEEsXyBhcyBnZSxmIGFzIGosaCBhcyBfZSxrIGFzIE0sbiBhcyB2ZSxvIGFzIHllLHIgYXMgYmUscyBhcyBOLHQgYXMgUCx1IGFzIEYsdiBhcyB4ZSx4IGFzIFNlLHkgYXMgSX1mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHtpIGFzIENlLG4gYXMgTCxyIGFzIHdlfWZyb20iLi9jb2x1bW5zLUNvZWNuZjc0LmpzIjtpbXBvcnR7biBhcyBUZSx0IGFzIEVlfWZyb20iLi91c2VTZWFyY2hRdWVyeS1CU2tDOGJHZC5qcyI7aW1wb3J0e3QgYXMgRGV9ZnJvbSIuL0VudGl0eUxpbmstQlI2cGxhV1YuanMiO2ltcG9ydHt0IGFzIE9lfWZyb20iLi9TdGF0RGlzYWJsZWRBbGVydC1CSnRIUlh3RS5qcyI7aW1wb3J0e2MgYXMga2UsZCBhcyBSLGYgYXMgeixsIGFzIEFlLG0gYXMgQixwIGFzIFYscyBhcyBILHUgYXMgamV9ZnJvbSIuL2twaS1QMDhVdnJLaS5qcyI7aW1wb3J0e3QgYXMgVX1mcm9tIi4vY2F0YWxvZy1DOTVOVGFYdC5qcyI7aW1wb3J0e3QgYXMgTWV9ZnJvbSIuL3JlbGlhYmlsaXR5LUNZZEpxXzc0LmpzIjtmdW5jdGlvbiBXKGUsdCl7bGV0IG49dC50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gbj9lLmZpbHRlcihlPT5lLmlkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobil8fGUuYWxpYXNlcy5zb21lKGU9PmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuKSkpOmV9ZnVuY3Rpb24gTmUoZSx0LG4pe2xldCByPW5ldyBNYXAodC5tb2RlbHMubWFwKGU9PltlLmlkLGVdKSksaT1uZXcgTWFwKChuLnJvd3M/P1tdKS5tYXAoZT0+W2UuaWQsZV0pKSxhPVtdO2ZvcihsZXQgdCBvZiBlLnByb3ZpZGVycylmb3IobGV0IGUgb2YgdC5tb2RlbHMpe2xldCBuPXIuZ2V0KGUuaWQpLG89aS5nZXQoZS5pZCk7YS5wdXNoKHtpZDplLmlkLG1vZGVsOmUubW9kZWwscHJvdmlkZXJOYW1lOnQubmFtZSxjb250ZXh0VG9rZW5zOmUuY29udGV4dFRva2VucyxpbnB1dFBlck1Ub2tVc2Q6ZS5pbnB1dFBlck1Ub2tVc2Qsb3V0cHV0UGVyTVRva1VzZDplLm91dHB1dFBlck1Ub2tVc2QscHJpY2VTb3VyY2U6ZS5wcmljZVNvdXJjZSxkaXNwbGF5RnJlZTplLmRpc3BsYXlGcmVlLGFsaWFzZXM6ZS5hbGlhc2VzPz9bXSxyZXF1ZXN0czpuPy5yZXF1ZXN0cz8/MCx0b2tlbnNJbjpuPy50b2tlbnNJbj8/MCx0b2tlbnNPdXQ6bj8udG9rZW5zT3V0Pz8wLGNvc3RNaWNyb1VzZDpuPy5jb3N0TWljcm9Vc2Q/PzAscDUwTXM6bz8ucDUwTXMscDk1TXM6bz8ucDk1TXMsYXR0ZW1wdHM6bz8uYXR0ZW1wdHM/PzAsZmFpbHVyZXM6bz8uZmFpbHVyZXM/PzB9KX1yZXR1cm4gYX12YXIgUGU9e292ZXJyaWRlOmBvdmVycmlkZWAsYnVpbHRpbjpgYnVpbHRpbmAsbGl0ZWxsbTpgbGl0ZWxsbWB9O2Z1bmN0aW9uIEcodCl7aWYodC5wcmljZVNvdXJjZT09PWB1bnByaWNlZGApcmV0dXJuIGUoUCx7YXM6YHNwYW5gLHZhcmlhbnQ6YGRlc3RydWN0aXZlYCxjbGFzczpgZm9udC1ub3JtYWxgLHRpdGxlOmBObyBwcmljaW5nIHJ1bGUgbWF0Y2hlZCDigJQgYmlsbGVkIGFzICQwLmB9LCgpPT5gdW5wcmljZWRgKTtpZih0LnByaWNlU291cmNlPT09YGZyZWVgKXJldHVybiBlKFAse2FzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6YENvbmZpZ3VyZWQgZnJlZSAobW9kZWxNZXRhLmZyZWUpIOKAlCBwcmljZWQgYXQgJDAuYH0sKCk9PmBmcmVlYCk7bGV0IG49dC5pbnB1dFBlck1Ub2tVc2QhPT12b2lkIDAmJnQub3V0cHV0UGVyTVRva1VzZCE9PXZvaWQgMCxyPXQucHJpY2VTb3VyY2U7cmV0dXJuIGUoYHNwYW5gLHtjbGFzczpgaW5saW5lLWZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMS41YH0sW2UoYHNwYW5gLHt9LG4/aih0LmlucHV0UGVyTVRva1VzZCx0Lm91dHB1dFBlck1Ub2tVc2QpOmDigJRgKSxlKFAse2FzOmBzcGFuYCx2YXJpYW50OmBvdXRsaW5lYCxjbGFzczpgZm9udC1ub3JtYWxgfSwoKT0+UGVbcl0pXSl9ZnVuY3Rpb24gRmUoZSl7cmV0dXJuIGUucHJpY2VTb3VyY2U9PT1gdW5wcmljZWRgPy0xOmUuaW5wdXRQZXJNVG9rVXNkPz8wfWZ1bmN0aW9uIEsoKXtyZXR1cm5be2lkOmBpZGAsaGVhZGVyOmBNb2RlbGAsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6dH0pPT5lKGBzcGFuYCx7Y2xhc3M6YGlubGluZS1mbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNWB9LFtlKEUse2lkOnQub3JpZ2luYWwuaWQsY29udGV4dFRva2Vuczp0Lm9yaWdpbmFsLmNvbnRleHRUb2tlbnMsaW5wdXRQZXJNVG9rVXNkOnQub3JpZ2luYWwuaW5wdXRQZXJNVG9rVXNkLG91dHB1dFBlck1Ub2tVc2Q6dC5vcmlnaW5hbC5vdXRwdXRQZXJNVG9rVXNkfSksZShEZSx7bGFiZWw6dC5vcmlnaW5hbC5pZCxraW5kOmBtb2RlbGAsaWQ6dC5vcmlnaW5hbC5pZH0pXSl9LEwoYGNvbnRleHRgLGBDb250ZXh0YCxlPT5lLmNvbnRleHRUb2tlbnMseWUpLHtpZDpgcHJpY2VgLGhlYWRlcjpgUHJpY2VgLGFjY2Vzc29yRm46ZT0+RmUoZSksY2VsbDooe3JvdzplfSk9PkcoZS5vcmlnaW5hbCl9LHtpZDpgZnJlZWAsaGVhZGVyOmBGcmVlYCxhY2Nlc3NvckZuOmU9PishIWUuZGlzcGxheUZyZWUsY2VsbDooe3Jvdzp0fSk9PnQub3JpZ2luYWwuZGlzcGxheUZyZWU/ZShQLHthczpgc3BhbmAsdmFyaWFudDpgc2Vjb25kYXJ5YCxjbGFzczpgZm9udC1ub3JtYWxgLHRpdGxlOmAnOmZyZWUnIHN1ZmZpeCBtb2RlbCDigJQgZGlzcGxheS1vbmx5LCBiaWxsaW5nIGZvbGxvd3MgdGhlIFByaWNlIGNvbHVtbidzIG93biBzb3VyY2VgfSwoKT0+YGZyZWVgKTplKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGDigJRgKX0se2lkOmBhbGlhc2VzYCxoZWFkZXI6YEFsaWFzZXNgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT5lLmFsaWFzZXMuam9pbihgLCBgKSxjZWxsOih7cm93OnR9KT0+e2xldCBuPXQub3JpZ2luYWwuYWxpYXNlcztyZXR1cm4gbi5sZW5ndGg9PT0wP2UoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYOKAlGApOmUoYGRpdmAse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMWB9LG4ubWFwKHQ9PmUoUCx7a2V5OnQsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW1vbm8gZm9udC1ub3JtYWxgfSwoKT0+dCkpKX19LC4uLndlKCkuZmlsdGVyKGU9PmUuaWQhPT1gY29zdGApLHtpZDpgY29zdGAsaGVhZGVyOmBDb3N0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuY29zdE1pY3JvVXNkLGNlbGw6KHtyb3c6dH0pPT57bGV0IG49dC5vcmlnaW5hbDtyZXR1cm4obi5wcmljZVNvdXJjZT09PWBmcmVlYHx8bi5kaXNwbGF5RnJlZSkmJm4uY29zdE1pY3JvVXNkPT09MD9lKFAse2FzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6YHByaWNlZCBhdCAkMCBwZXIgdG9rZW5gfSwoKT0+YGZyZWVgKTpOKG4uY29zdE1pY3JvVXNkKX19LEwoYHA1MGAsYHA1MGAsZT0+ZS5wNTBNcyxGLHtzb3J0U2VudGluZWw6LTF9KSxMKGBwOTVgLGBwOTVgLGU9PmUucDk1TXMsRix7c29ydFNlbnRpbmVsOi0xfSkse2lkOmBlcnJvclJhdGVgLGhlYWRlcjpgRXJyb3IgcmF0ZWAsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT56KGUuYXR0ZW1wdHMsZS5mYWlsdXJlcyk/Py0xLGNlbGw6KHtyb3c6dH0pPT5lKGBzcGFuYCx7Y2xhc3M6YHRhYnVsYXItbnVtc2B9LGtlKHoodC5vcmlnaW5hbC5hdHRlbXB0cyx0Lm9yaWdpbmFsLmZhaWx1cmVzKSkpfV19dmFyIEllPVQoe19fbmFtZTpgTW9kZWxDYXRhbG9nVGFibGVgLHByb3BzOntyb3dzOnt9LHF1ZXJ5Ont9LGxhdGVuY3lFbmFibGVkOnt0eXBlOkJvb2xlYW59LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbn0sZXJyb3I6e30sb25SZXRyeTp7dHlwZTpGdW5jdGlvbn19LGVtaXRzOltgdXBkYXRlOnF1ZXJ5YF0sc2V0dXAoZSx7ZW1pdDppfSl7bGV0IGE9ZSxvPWksYz1fKCgpPT5XKGEucm93cyxhLnF1ZXJ5KSksdT1LKCksZD1fKCgpPT5TZSh7bG9hZGluZzphLmxvYWRpbmcsaGFzRGF0YTphLnJvd3MubGVuZ3RoPjAsZXJyb3I6YS5lcnJvcj8/YGB9KSksZWU9XygoKT0+YS5xdWVyeS50cmltKCk/YG5vIG1vZGVscyBtYXRjaCAiJHthLnF1ZXJ5fSJgOmBub25lYCk7cmV0dXJuKGksYSk9PihtKCksZihiKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2woYihzKSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKGIoeCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uYVsxXXx8PVtwKGBNb2RlbCBjYXRhbG9nYCwtMSldXSksXzoxfSksbChiKE8pLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMl18fD1bcChgIEV2ZXJ5IGNvbmZpZ3VyZWQgbW9kZWw6IHByaWNlIHNvdXJjZSwgcGVyLW1vZGVsIHVzYWdlIGZvciB0aGUgY3VycmVudCByYW5nZSwgZmxlZXQgcDUwL3A5NSwgYW5kIGVycm9yIHJhdGUuIGAsLTEpXV0pLF86MX0pLGwoVGUseyJtb2RlbC12YWx1ZSI6ZS5xdWVyeSxwbGFjZWhvbGRlcjpgU2VhcmNoIG1vZGVscyBvciBhbGlhc2VzLi4uYCxjbGFzczpgbXQtMiBtYXgtdy1zbWAsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMF18fD1lPT5vKGB1cGRhdGU6cXVlcnlgLGUpfSxudWxsLDgsW2Btb2RlbC12YWx1ZWBdKV0pLF86MX0pLGwoYihuKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgfSx7ZGVmYXVsdDpyKCgpPT5bZS5sYXRlbmN5RW5hYmxlZD9oKGBgLCEwKToobSgpLGYoT2Use2tleTowLHRpdGxlOmBMYXRlbmN5IHN0YXRpc3RpY3MgYXJlIG9mZmAsImNvbmZpZy1rZXkiOmBhZG1pbi5zdGF0cy5sYXRlbmN5YCxwdXJwb3NlOmB0byBzZWUgZmxlZXQgcDUwL3A5NS5gfSkpLGQudmFsdWU9PT1gc2tlbGV0b25gPyhtKCksZihBLHtrZXk6MSxyb3dzOjUsY29sczpiKHUpLmxlbmd0aH0sbnVsbCw4LFtgY29sc2BdKSk6ZC52YWx1ZT09PWBlcnJvcmA/KG0oKSxmKGhlLHtrZXk6MixtZXNzYWdlOmUuZXJyb3I/P2BgLCJvbi1yZXRyeSI6ZS5vblJldHJ5fSxudWxsLDgsW2BtZXNzYWdlYCxgb24tcmV0cnlgXSkpOmQudmFsdWU9PT1gZW1wdHlgPyhtKCksZihNLHtrZXk6Myx0aXRsZTpgTm8gbW9kZWxzIGNvbmZpZ3VyZWQuYH0pKToobSgpLGYoQ2Use2tleTo0LGNvbHVtbnM6Yih1KSxkYXRhOmMudmFsdWUsImVtcHR5LW1lc3NhZ2UiOmVlLnZhbHVlfSxudWxsLDgsW2Bjb2x1bW5zYCxgZGF0YWAsYGVtcHR5LW1lc3NhZ2VgXSkpXSksXzoxfSldKSxfOjF9KSl9fSkscT17ImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LEo9e2NsYXNzOmBzci1vbmx5YH0sTGU9VCh7X19uYW1lOmBQcm92aWRlclJhdGVCYWRnZWAscHJvcHM6e2F0dGVtcHRzRGF5Ont9LGZhaWx1cmVzRGF5Ont9LGF0dGVtcHRzTWludXRlOnt9LGZhaWx1cmVzTWludXRlOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49XygoKT0+Qih0LmF0dGVtcHRzRGF5LHQuZmFpbHVyZXNEYXkpKSxpPV8oKCk9PlYobi52YWx1ZSkpLGE9XygoKT0+aS52YWx1ZT09PWBuby10cmFmZmljYD9gbm8gdHJhZmZpY2A6QWUobi52YWx1ZSkpLG89XygoKT0+dC5hdHRlbXB0c01pbnV0ZT09PXZvaWQgMHx8dC5mYWlsdXJlc01pbnV0ZT09PXZvaWQgMD9IKHQuYXR0ZW1wdHNEYXksdC5mYWlsdXJlc0RheSk6Uih0LmF0dGVtcHRzTWludXRlLHQuZmFpbHVyZXNNaW51dGUpKSxzPV8oKCk9PmkudmFsdWU9PT1gc2V2ZXJlYD9gZGVzdHJ1Y3RpdmVgOmkudmFsdWU9PT1gaGVhbHRoeWA/YHNlY29uZGFyeWA6YG91dGxpbmVgKSxjPV8oKCk9PmkudmFsdWU9PT1gZGVncmFkZWRgP2Bib3JkZXItc3RhdHVzLXdhcm4vNDAgdGV4dC1zdGF0dXMtd2FybmA6aS52YWx1ZT09PWBuby10cmFmZmljYD9gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYDpgYCk7cmV0dXJuKGUsdCk9PihtKCksZihiKFApLHthczpgc3BhbmAsdmFyaWFudDpzLnZhbHVlLGNsYXNzOncoW2MudmFsdWUsYGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2BdKSx0aXRsZTpvLnZhbHVlfSx7ZGVmYXVsdDpyKCgpPT5bdihgc3BhbmAscSxTKGEudmFsdWUpLDEpLHYoYHNwYW5gLEosUyhvLnZhbHVlKSwxKV0pLF86MX0sOCxbYHZhcmlhbnRgLGBjbGFzc2AsYHRpdGxlYF0pKX19KSxSZT1zZShgbW9kZWxzYCx7c3RhdGU6KCk9Pih7cm93czpbXSxwcm92aWRlclBlcmY6W10scGVyZldpbmRvdzp7d2luZG93OmBkYXlgLHNwYW46MH0sbGF0ZW5jeUVuYWJsZWQ6ITEsbG9hZGluZzohMSxsYXN0VXBkYXRlZDpudWxsLGVycm9yOmBgLHJlcUlkOjB9KSxhY3Rpb25zOnthc3luYyBmZXRjaCgpe2xldCBlPSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCB0PVUoKSxuPWsoKTtpZihhd2FpdCB0LmVuc3VyZUxvYWRlZCgpLGUhPT10aGlzLnJlcUlkKXJldHVybjtpZighdC5kYXRhKXt0aGlzLmVycm9yPXQuZXJyb3J8fGBjYXRhbG9nIHVuYXZhaWxhYmxlYDtyZXR1cm59bGV0IHI9TWUobi53aW5kb3csbi5zcGFuKSxbaSxhLG9dPWF3YWl0IFByb21pc2UuYWxsKFtkKGAvYWRtaW4vYXBpL3VzYWdlL21vZGVscz93aW5kb3c9JHtuLndpbmRvd30mc3Bhbj0ke24uc3Bhbn0mbGltaXQ9MTAwJmRldGFpbD0xJm1ldHJpYz1yZXFgKSxkKGAvYWRtaW4vYXBpL3BlcmZvcm1hbmNlP2tpbmQ9bW9kZWwmd2luZG93PSR7ci53aW5kb3d9JnNwYW49JHtyLnNwYW59YCksZChgL2FkbWluL2FwaS9wZXJmb3JtYW5jZT9raW5kPXByb3ZpZGVyJndpbmRvdz0ke3Iud2luZG93fSZzcGFuPSR7ci5zcGFufWApXSk7aWYoZSE9PXRoaXMucmVxSWQpcmV0dXJuO3RoaXMucm93cz1OZSh0LmRhdGEsaSxhKSx0aGlzLnByb3ZpZGVyUGVyZj1vLnJvd3M/P1tdLHRoaXMucGVyZldpbmRvdz1yLHRoaXMubGF0ZW5jeUVuYWJsZWQ9YS5sYXRlbmN5RW5hYmxlZCx0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlLHRoaXMuZXJyb3I9YGB9Y2F0Y2godCl7aWYoZSE9PXRoaXMucmVxSWR8fEModCkpcmV0dXJuO3RoaXMuZXJyb3I9byh0KX1maW5hbGx5e2U9PT10aGlzLnJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19fX0pLHplPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LEJlPXtjbGFzczpgZ3JpZCBnYXAtNCBzbTpncmlkLWNvbHMtM2B9LFZlPXtjbGFzczpgZm9udC1tZWRpdW1gfSxIZT17a2V5OjAsY2xhc3M6YGZsZXggaXRlbXMtc3RhcnQgZ2FwLTEuNSB0ZXh0LWRlc3RydWN0aXZlYH0sVWU9e2NsYXNzOmBmb250LW1lZGl1bWB9LFdlPXtrZXk6MCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sR2U9e2NsYXNzOmBmb250LW1lZGl1bWB9LEtlPXtrZXk6MCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0scWU9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEplPXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxZZT1bYGFyaWEtbGFiZWxgLGB0aXRsZWAsYG9uQ2xpY2tgXSxYZT17Y2xhc3M6YHNyLW9ubHlgfSxaZT17Y2xhc3M6YGZsZXggZmxleC0xIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMyBnYXAteS0xIHByLTIgdGV4dC1sZWZ0YH0sUWU9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSwkZT17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sZXQ9e2NsYXNzOmBtYi0zIGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLXgtNiBnYXAteS0xLjUgdGV4dC1zbSBzbTpncmlkLWNvbHMtM2B9LHR0PXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LG50PXtrZXk6MCx0aXRsZTpgY29udGV4dCB3aW5kb3dgLGNsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSxydD17a2V5OjEsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0saXQ9e2tleTowLGNsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFk9VCh7X19uYW1lOmBQcm92aWRlckhlYWx0aFBhbmVsYCxzZXR1cChhKXtsZXQgbz1uZSgpLGQ9UmUoKSxDPV8oKCk9Pm8ub3ZlcnZpZXcpLFQ9aWUoKTtmdW5jdGlvbiBzZShlKXtULmdvVG8oYG1vZGVsc2Ase3E6YCR7ZX0vYH0pfWxldCBrPWFlKHttYW51YWxseUV4cGFuZGVkOm5ldyBTZXQsbWFudWFsbHlDb2xsYXBzZWQ6bmV3IFNldH0pLHtxdWVyeTpBLG5vcm1hbGl6ZWQ6aixoYXNRdWVyeTpOfT1FZSgpO2Z1bmN0aW9uIEwoZSx0KXtyZXR1cm4gSShlLHQpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoai52YWx1ZSl9ZnVuY3Rpb24gd2UoZSl7cmV0dXJuIGUubW9kZWxzLnNvbWUodD0+TChlLm5hbWUsdCkpfWZ1bmN0aW9uIGtlKGUpe3JldHVybiBlLmFsaWFzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoai52YWx1ZSl8fGUudGFyZ2V0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoai52YWx1ZSl9bGV0IFI9XygoKT0+U2Uoe2xvYWRpbmc6ITAsaGFzRGF0YTpDLnZhbHVlIT09bnVsbCxlcnJvcjpvLmVycm9yfSkpLHo9XygoKT0+e2xldCBlPUMudmFsdWU/LnByb3ZpZGVycz8/W107cmV0dXJuIE4udmFsdWU/ZS5maWx0ZXIod2UpOmV9KSxBZT1fKCgpPT57bGV0IGU9Qy52YWx1ZT8uYWxpYXNlcz8/W107cmV0dXJuIE4udmFsdWU/ZS5maWx0ZXIoa2UpOmV9KSxCPV8oKCk9PnVlKGssTi52YWx1ZSx6LnZhbHVlLm1hcChlPT5lLm5hbWUpKSk7ZnVuY3Rpb24gVihlKXtmZShrLGUsQi52YWx1ZS5oYXMoZSkpfWxldCBIPV8oe2dldDooKT0+QXJyYXkuZnJvbShCLnZhbHVlKSxzZXQ6ZT0+e2xldCB0PW5ldyBTZXQoZSk7Zm9yKGxldCBlIG9mIEIudmFsdWUpdC5oYXMoZSl8fFYoZSk7Zm9yKGxldCBlIG9mIHQpQi52YWx1ZS5oYXMoZSl8fFYoZSl9fSk7aShBLGU9PntlLnRyaW0oKT09PWBgJiZtZShrKX0pO2Z1bmN0aW9uIFUoZSl7cmV0dXJuIE4udmFsdWU/ZS5tb2RlbHMuZmlsdGVyKHQ9PkwoZS5uYW1lLHQpKTplLm1vZGVsc31sZXQgTWU9e2F0dGVtcHRzRGF5OjAsZmFpbHVyZXNEYXk6MH07ZnVuY3Rpb24gVyhlLHQpe3JldHVybiBlLm1vZGVsUmF0ZXM/Llt0XT8/TWV9ZnVuY3Rpb24gTmUoZSx0KXtsZXQgbj1XKGUsdCk7cmV0dXJuIGplKG4uYXR0ZW1wdHNEYXksbi5mYWlsdXJlc0RheSl9bGV0IFBlPXt9O2Z1bmN0aW9uIEcoZSx0KXtyZXR1cm4gZS5tb2RlbE1ldGE/Llt0XT8/UGV9ZnVuY3Rpb24gRmUoZSl7c3dpdGNoKGUpe2Nhc2Vgb3BlbmA6cmV0dXJuYGRlc3RydWN0aXZlYDtjYXNlYGhhbGYtb3BlbmA6cmV0dXJuYHNlY29uZGFyeWA7ZGVmYXVsdDpyZXR1cm59fWZ1bmN0aW9uIEsoZSl7bGV0IHQ9X2UoZS5vcGVuVW50aWwpO3JldHVybiB0P2Ake2UuaGVhbHRoU3RhdGV9ICgke3R9KWA6ZS5oZWFsdGhTdGF0ZX1mdW5jdGlvbiBJZShlKXtyZXR1cm4gZT09PWBvcGVuYD9gdGV4dC1kZXN0cnVjdGl2ZWA6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9ZnVuY3Rpb24gcShlKXtyZXR1cm4gZS5sYXRlbmN5Py5zdHJlYW1pbmd9ZnVuY3Rpb24gSihlKXtyZXR1cm4gZS5sYXRlbmN5Py5bYG5vbi1zdHJlYW1pbmdgXX1mdW5jdGlvbiBZKGUpe3JldHVybiBlLmNvdW50PT09dm9pZCAwP2BubyBvYnNlcnZhdGlvbnMgY291bnRlZGA6YCR7ZS5jb3VudH0gJHtlLmNvdW50PT09MT9gb2JzZXJ2YXRpb25gOmBvYnNlcnZhdGlvbnNgfSBvbiB0aGlzIHJlcGxpY2FgfWZ1bmN0aW9uIFgoKXtsZXQgZT1DLnZhbHVlPy5yZXBsaWNhO3JldHVybmBQZXItcmVwbGljYSAoJHtlP2ByZXBsaWNhICR7ZX1gOmB0aGlzIHJlcGxpY2FgfSksIGluLXByb2Nlc3Mgb25seSDigJQgbm90IGEgZmxlZXQtd2lkZSBhdmVyYWdlIGFjcm9zcyB0aGlzIGRlcGxveW1lbnTigJlzIHJlcGxpY2FzLmB9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuYEF2ZXJhZ2UgdGltZSB0byBmaXJzdCBieXRlLCB0aGUgbG9hZC1zZW5zaXRpdmUgcmVhZGluZyBmb3Igc3RyZWFtaW5nIHRyYWZmaWMuICR7WShlKX0uICR7WCgpfWB9ZnVuY3Rpb24gb3QoZSl7cmV0dXJuYEF2ZXJhZ2UgdG90YWwgcmVzcG9uc2UgdGltZSwgaW5jbHVkaW5nIGdlbmVyYXRpb24g4oCUIG5vdCBhIGxvYWQtc2Vuc2l0aXZlIHNpZ25hbCBsaWtlIHN0cmVhbWluZyB0dGZiLCBzaW5jZSB0aGlzIHByb3ZpZGVyIGJ1ZmZlcnMgdGhlIHdob2xlIGNvbXBsZXRpb24gYmVmb3JlIHNlbmRpbmcgYW55dGhpbmcuICR7WShlKX0uICR7WCgpfWB9ZnVuY3Rpb24gWihlKXtyZXR1cm4gZS5wcm92ZW5hbmNlPy5lc3RpbWF0ZWR9ZnVuY3Rpb24gUShlKXtyZXR1cm4gZS5wcm92ZW5hbmNlPy51bmJpbGxlZH1mdW5jdGlvbiBzdChlKXtsZXQgdD1lLnJlcXVlc3RzPT09MT9gYDpgc2A7cmV0dXJuYCR7ZS5yZXF1ZXN0c30gbm9uLXN0cmVhbWluZyByZXNwb25zZSR7dH0gY2FycmllZCBubyB1c2FnZSBmcm9tIHRoZSBwcm92aWRlciDigJQgcHJvbXB0IHRva2VucyB3ZXJlIGVzdGltYXRlZCBmcm9tIHJlcXVlc3QgYm9keSBzaXplIGluc3RlYWQgKCR7ZS50b2tlbnN9IHRva2VucyBiaWxsZWQgZnJvbSB0aGUgZXN0aW1hdGUpLCBjb21wbGV0aW9uIGJpbGxlZCBhcyB6ZXJvLiAke1goKX1gfWZ1bmN0aW9uIGN0KGUpe2xldCB0PWUucmVxdWVzdHM9PT0xP2BgOmBzYDtyZXR1cm5gJHtlLnJlcXVlc3RzfSBzdHJlYW1pbmcgcmVzcG9uc2Uke3R9IGNhcnJpZWQgbm8gdXNhZ2UgZnJvbSB0aGUgcHJvdmlkZXIg4oCUIHRoZSByZXF1ZXN0IHdhcyBjb3VudGVkIGJ1dCB6ZXJvIHRva2VucyB3ZXJlIGJpbGxlZC4gSWYgdGhpcyBrZWVwcyBoYXBwZW5pbmcsIHRoaXMgcHJvdmlkZXIgbWF5IGJlIHNlcnZpbmcgY29tcGxldGlvbnMgZW50aXJlbHkgZnJlZSBhZ2FpbnN0IGV2ZXJ5IGJ1ZGdldC4gJHtYKCl9YH1mdW5jdGlvbiAkKGUpe3JldHVybiBkLnByb3ZpZGVyUGVyZi5maW5kKHQ9PnQuaWQ9PT1lKX1mdW5jdGlvbiBsdChlKXtsZXR7d2luZG93OnQsc3BhbjpufT1kLnBlcmZXaW5kb3c7cmV0dXJuYEZsZWV0LXdpZGUgKGV2ZXJ5IHJlcGxpY2EgY29tYmluZWQpICR7ZT09PWBwNTBgP2BtZWRpYW5gOmA5NXRoIHBlcmNlbnRpbGVgfSByZXNwb25zZSB0aW1lLCBvdmVyIHRoZSBsYXN0ICR7bn0gJHt0fSR7bj09PTE/YGA6YHNgfS5gfWZ1bmN0aW9uIHV0KGUpe2xldHt3aW5kb3c6dCxzcGFuOm59PWQucGVyZldpbmRvdztyZXR1cm5gJHtlPT09YHRpbWVvdXRzYD9gcmVxdWVzdHMgdGhhdCBleGNlZWRlZCB0aGUgZGVhZGxpbmVgOmByZXF1ZXN0cyBmYWlsZWQgYXdheSBmcm9tIHRoaXMgcHJvdmlkZXIgdG8gYW5vdGhlciBjYW5kaWRhdGVgfSwgZmxlZXQtd2lkZSwgb3ZlciB0aGUgbGFzdCAke259ICR7dH0ke249PT0xP2BgOmBzYH0uYH1sZXQgZHQ9W3tpZDpgYWxpYXNgLGhlYWRlcjpgQWxpYXNgLGFjY2Vzc29yRm46ZT0+ZS5hbGlhcyxjZWxsOih7cm93OnR9KT0+ZShFLHtpZDp0Lm9yaWdpbmFsLmFsaWFzLGNvbnRleHRUb2tlbnM6dC5vcmlnaW5hbC5tb2RlbE1ldGE/LmNvbnRleHRUb2tlbnMsaW5wdXRQZXJNVG9rVXNkOnQub3JpZ2luYWwubW9kZWxNZXRhPy5pbnB1dFBlck1Ub2tVc2Qsb3V0cHV0UGVyTVRva1VzZDp0Lm9yaWdpbmFsLm1vZGVsTWV0YT8ub3V0cHV0UGVyTVRva1VzZH0pfSx7aWQ6YHRhcmdldGAsaGVhZGVyOmBUYXJnZXRgLGFjY2Vzc29yRm46ZT0+ZS50YXJnZXQsY2VsbDooe3Jvdzp0fSk9PmUoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sdC5vcmlnaW5hbC50YXJnZXQpfV0sZnQ9XygoKT0+Qy52YWx1ZT8uYWxpYXNlcy5sZW5ndGg/Ti52YWx1ZT9gbm8gYWxpYXNlcyBtYXRjaCAiJHtBLnZhbHVlfSJgOmBub25lYDpgbm9uZSBjb25maWd1cmVkYCk7cmV0dXJuKGUsaSk9PntsZXQgYT10ZShgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIG0oKSx5KGBkaXZgLHplLFt2KGBkaXZgLEJlLFtsKGIodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbChiKHMpLG51bGwse2RlZmF1bHQ6cigoKT0+W2woYih4KSx7Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6cigoKT0+W2woYSx7aWNvbjpDLnZhbHVlPy5yZWRpcy5jb25maWd1cmVkP2IoZyk6Yih1KSxjbGFzczp3KFtDLnZhbHVlPy5yZWRpcy5jb25maWd1cmVkP2B0ZXh0LWNoYXJ0LXJlcXVlc3RzYDpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCxgc2l6ZS0zLjVgXSksImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gLGBjbGFzc2BdKSxpWzJdfHw9cChgIFJlZGlzIGAsLTEpXSksXzoxfSldKSxfOjF9KSxsKGIobikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xIHRleHQtc21gfSx7ZGVmYXVsdDpyKCgpPT5bdihgcGAsVmUsUyhDLnZhbHVlPy5yZWRpcy5jb25maWd1cmVkP2BDb25maWd1cmVkYDpgTm90IGNvbmZpZ3VyZWRgKSwxKSxDLnZhbHVlPy5yZWRpcy5sYXN0RXJyPyhtKCkseShgcGAsSGUsW2woYSx7aWNvbjpiKHJlKSxjbGFzczpgbXQtMC41IHNpemUtMy41IHNocmluay0wYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSx2KGBzcGFuYCxudWxsLFMoQy52YWx1ZS5yZWRpcy5sYXN0RXJyKStTKGIoYmUpKEMudmFsdWUucmVkaXMubGFzdEVyckF0KSksMSldKSk6aChgYCwhMCldKSxfOjF9KV0pLF86MX0pLGwoYih0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKGIocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbChiKHgpLHtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx7ZGVmYXVsdDpyKCgpPT5bbChhLHtpY29uOkMudmFsdWU/LmNhY2hlLmVuYWJsZWQ/YihnKTpiKHUpLGNsYXNzOncoW0MudmFsdWU/LmNhY2hlLmVuYWJsZWQ/YHRleHQtY2hhcnQtcmVxdWVzdHNgOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgLGBzaXplLTMuNWBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLGlbM118fD1wKGAgUmVzcG9uc2UgY2FjaGUgYCwtMSldKSxfOjF9KV0pLF86MX0pLGwoYihuKSx7Y2xhc3M6YHRleHQtc21gfSx7ZGVmYXVsdDpyKCgpPT5bdihgcGAsVWUsUyhDLnZhbHVlPy5jYWNoZS5lbmFibGVkP2BFbmFibGVkYDpgRGlzYWJsZWRgKSwxKSxDLnZhbHVlPy5jYWNoZS5lbmFibGVkPyhtKCkseShgcGAsV2UsYHR0bCBgK1MoQy52YWx1ZS5jYWNoZS50dGwpLDEpKTpoKGBgLCEwKV0pLF86MX0pXSksXzoxfSksbChiKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2woYihzKSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKGIoeCkse2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHtkZWZhdWx0OnIoKCk9PltsKGEse2ljb246Qy52YWx1ZT8ucmV0cnkuZW5hYmxlZD9iKGcpOmIodSksY2xhc3M6dyhbQy52YWx1ZT8ucmV0cnkuZW5hYmxlZD9gdGV4dC1jaGFydC1yZXF1ZXN0c2A6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsYHNpemUtMy41YF0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksaVs0XXx8PXAoYCBSZXRyeSBgLC0xKV0pLF86MX0pXSksXzoxfSksbChiKG4pLHtjbGFzczpgdGV4dC1zbWB9LHtkZWZhdWx0OnIoKCk9Plt2KGBwYCxHZSxTKEMudmFsdWU/LnJldHJ5LmVuYWJsZWQ/YEVuYWJsZWRgOmBEaXNhYmxlZGApLDEpLEMudmFsdWU/LnJldHJ5LmVuYWJsZWQ/KG0oKSx5KGBwYCxLZSxgIGF0dGVtcHRzIGArUyhDLnZhbHVlLnJldHJ5LmF0dGVtcHRzKStgLCBiYWNrb2ZmIGArUyhDLnZhbHVlLnJldHJ5LmJhY2tvZmYpLDEpKTpoKGBgLCEwKV0pLF86MX0pXSksXzoxfSldKSxsKGIodCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbChiKHMpLG51bGwse2RlZmF1bHQ6cigoKT0+W2woYih4KSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5pWzVdfHw9W3AoYFByb3ZpZGVyc2AsLTEpXV0pLF86MX0pLGwoYihPKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5pWzZdfHw9W3AoYCBFdmVyeSBjb25maWd1cmVkIHVwc3RyZWFtLCBpdHMgbGFzdCBkaXNjb3ZlcnkgcmVmcmVzaCwgYW5kIGZsZWV0LXdpZGUgcGVyZm9ybWFuY2UuIFNlYXJjaCBmaWx0ZXJzIHByb3ZpZGVycyBhbmQgYWxpYXNlcyBieSBtb2RlbCBpZC4gYCwtMSldXSksXzoxfSksbChUZSx7bW9kZWxWYWx1ZTpiKEEpLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzBdfHw9ZT0+ZWUoQSk/QS52YWx1ZT1lOm51bGwscGxhY2Vob2xkZXI6YFNlYXJjaCBtb2RlbHMgb3IgYWxpYXNlcy4uLmAsY2xhc3M6YG10LTIgbWF4LXctc21gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSksXzoxfSksbChiKG4pLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0OnIoKCk9PltiKGQpLmxhdGVuY3lFbmFibGVkP2goYGAsITApOihtKCksZihPZSx7a2V5OjAsdGl0bGU6YExhdGVuY3kgc3RhdGlzdGljcyBhcmUgb2ZmYCwiY29uZmlnLWtleSI6YGFkbWluLnN0YXRzLmxhdGVuY3lgLHB1cnBvc2U6YHRvIHNlZSBmbGVldCBwNTAvcDk1LmB9KSksUi52YWx1ZT09PWBza2VsZXRvbmA/KG0oKSxmKHZlLHtrZXk6MSxyb3dzOjN9KSk6Ui52YWx1ZT09PWBlcnJvcmA/KG0oKSxmKGhlLHtrZXk6MixtZXNzYWdlOmIobykuZXJyb3IsIm9uLXJldHJ5IjpiKG8pLnJlZnJlc2h9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6Qy52YWx1ZT8ucHJvdmlkZXJzLmxlbmd0aD9iKE4pJiZ6LnZhbHVlLmxlbmd0aD09PTA/KG0oKSxmKE0se2tleTo0LHRpdGxlOmBObyBtYXRjaGVzLmAsZGVzY3JpcHRpb246YE5vIHByb3ZpZGVycyBtYXRjaCAiJHtiKEEpfSIuYH0sbnVsbCw4LFtgZGVzY3JpcHRpb25gXSkpOihtKCkseShjLHtrZXk6NX0sW3YoYHBgLHFlLFMoWCgpKStgIEZsZWV0IHA1MC9wOTUvdGltZW91dHMvZmFpbG92ZXJzIGJlbG93IGFyZSBmbGVldC13aWRlLCBub3QgcGVyLXJlcGxpY2EuYCwxKSxsKGIocGUpLHttb2RlbFZhbHVlOkgudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMV18fD1lPT5ILnZhbHVlPWUsdHlwZTpgbXVsdGlwbGVgLGNsYXNzOmByb3VuZGVkLW1kIGJvcmRlciBweC0zYH0se2RlZmF1bHQ6cigoKT0+WyhtKCEwKSx5KGMsbnVsbCxvZSh6LnZhbHVlLGU9PihtKCksZihiKGNlKSx7a2V5OmUubmFtZSx2YWx1ZTplLm5hbWV9LHtkZWZhdWx0OnIoKCk9Plt2KGBkaXZgLEplLFt2KGBidXR0b25gLHt0eXBlOmBidXR0b25gLGNsYXNzOmBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciByb3VuZGVkLXNtIHB5LTIuNSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwYCwiYXJpYS1sYWJlbCI6YFZpZXcgJHtlLm5hbWV9J3MgbW9kZWxzIGluIHRoZSBNb2RlbHMgdGFibGVgLHRpdGxlOmBWaWV3ICR7ZS5uYW1lfSdzIG1vZGVscyBpbiB0aGUgTW9kZWxzIHRhYmxlYCxvbkNsaWNrOnQ9PnNlKGUubmFtZSl9LFMoZS5uYW1lKSw5LFllKSxsKGIobGUpLHsiaGVhZGVyLWNsYXNzIjpgZmxleC0xYH0se2RlZmF1bHQ6cigoKT0+W3YoYHNwYW5gLFhlLGBQcm92aWRlciBgK1MoZS5uYW1lKStgIGRldGFpbHNgLDEpLHYoYHNwYW5gLFplLFtsKGIoUCkse2FzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbGB9LHtkZWZhdWx0OnIoKCk9PltwKFMoZS50eXBlKSwxKV0pLF86Mn0sMTAyNCksdihgc3BhbmAsUWUsUyhlLm1vZGVsQ291bnQpK2AgbW9kZWxzYCwxKSxsKExlLHsiYXR0ZW1wdHMtZGF5IjplLmF0dGVtcHRzRGF5LCJmYWlsdXJlcy1kYXkiOmUuZmFpbHVyZXNEYXksImF0dGVtcHRzLW1pbnV0ZSI6ZS5hdHRlbXB0c01pbnV0ZSwiZmFpbHVyZXMtbWludXRlIjplLmZhaWx1cmVzTWludXRlfSxudWxsLDgsW2BhdHRlbXB0cy1kYXlgLGBmYWlsdXJlcy1kYXlgLGBhdHRlbXB0cy1taW51dGVgLGBmYWlsdXJlcy1taW51dGVgXSksZS5oZWFsdGhTdGF0ZT09PWBjbG9zZWRgP2goYGAsITApOihtKCksZihiKFApLHtrZXk6MCxhczpgc3BhbmAsdmFyaWFudDpGZShlLmhlYWx0aFN0YXRlKSxjbGFzczpgZm9udC1ub3JtYWxgLHRpdGxlOmUuaGVhbHRoU3RhdGU9PT1gb3BlbmA/YGRpc2NvdmVyeSBpcyBiYWNraW5nIG9mZiBhZnRlciByZXBlYXRlZCBmYWlsdXJlc2A6YGEgZGlzY292ZXJ5IHByb2JlIGlzIGRlY2lkaW5nIHdoZXRoZXIgdG8gcmVjb3ZlcmB9LHtkZWZhdWx0OnIoKCk9PltwKFMoSyhlKSksMSldKSxfOjJ9LDEwMzIsW2B2YXJpYW50YCxgdGl0bGVgXSkpLHEoZSk/LmF2Z1R0ZmJNcz09PXZvaWQgMD9oKGBgLCEwKToobSgpLGYoYihQKSx7a2V5OjEsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOmF0KHEoZSkpfSx7ZGVmYXVsdDpyKCgpPT5bcChgIHN0cmVhbWluZyB0dGZiIGArUyhiKEYpKHEoZSkuYXZnVHRmYk1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksSihlKT8uYXZnRHVyYXRpb25Ncz09PXZvaWQgMD9oKGBgLCEwKToobSgpLGYoYihQKSx7a2V5OjIsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOm90KEooZSkpfSx7ZGVmYXVsdDpyKCgpPT5bcChgIG5vbi1zdHJlYW1pbmcgYXZnIGArUyhiKEYpKEooZSkuYXZnRHVyYXRpb25NcykpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpLCQoZS5uYW1lKT8ucDUwTXM9PT12b2lkIDA/aChgYCwhMCk6KG0oKSxmKGIoUCkse2tleTozLGFzOmBzcGFuYCx2YXJpYW50OmBvdXRsaW5lYCxjbGFzczpgZm9udC1ub3JtYWwgdGFidWxhci1udW1zYCx0aXRsZTpsdChgcDUwYCl9LHtkZWZhdWx0OnIoKCk9PltwKGAgZmxlZXQgcDUwIGArUyhiKEYpKCQoZS5uYW1lKS5wNTBNcykpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpLCQoZS5uYW1lKT8ucDk1TXM9PT12b2lkIDA/aChgYCwhMCk6KG0oKSxmKGIoUCkse2tleTo0LGFzOmBzcGFuYCx2YXJpYW50OmBvdXRsaW5lYCxjbGFzczpgZm9udC1ub3JtYWwgdGFidWxhci1udW1zYCx0aXRsZTpsdChgcDk1YCl9LHtkZWZhdWx0OnIoKCk9PltwKGAgZmxlZXQgcDk1IGArUyhiKEYpKCQoZS5uYW1lKS5wOTVNcykpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpLCgkKGUubmFtZSk/LnRpbWVvdXRzPz8wKT4wPyhtKCksZihiKFApLHtrZXk6NSxhczpgc3BhbmAsdmFyaWFudDpgc2Vjb25kYXJ5YCxjbGFzczpgZm9udC1ub3JtYWwgdGFidWxhci1udW1zYCx0aXRsZTp1dChgdGltZW91dHNgKX0se2RlZmF1bHQ6cigoKT0+W3AoUygkKGUubmFtZSkudGltZW91dHMpK2AgdGltZW91dHMgYCwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTpoKGBgLCEwKSwoJChlLm5hbWUpPy5mYWlsb3ZlcnM/PzApPjA/KG0oKSxmKGIoUCkse2tleTo2LGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOnV0KGBmYWlsb3ZlcnNgKX0se2RlZmF1bHQ6cigoKT0+W3AoUygkKGUubmFtZSkuZmFpbG92ZXJzKStgIGZhaWxvdmVycyBgLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpOmgoYGAsITApLFooZSk/KG0oKSxmKGIoUCkse2tleTo3LGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOnN0KFooZSkpfSx7ZGVmYXVsdDpyKCgpPT5bcChgIGVzdGltYXRlZCBgK1MoWihlKS5yZXF1ZXN0cyksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSk6aChgYCwhMCksUShlKT8obSgpLGYoYihQKSx7a2V5OjgsYXM6YHNwYW5gLHZhcmlhbnQ6YGRlc3RydWN0aXZlYCxjbGFzczpgZm9udC1ub3JtYWwgdGFidWxhci1udW1zYCx0aXRsZTpjdChRKGUpKX0se2RlZmF1bHQ6cigoKT0+W3AoYCB1bmJpbGxlZCBgK1MoUShlKS5yZXF1ZXN0cyksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSk6aChgYCwhMCksZS5sYXN0RXJyPyhtKCksZihhLHtrZXk6OSxpY29uOmIocmUpLGNsYXNzOmBzaXplLTMuNSBzaHJpbmstMCB0ZXh0LWRlc3RydWN0aXZlYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSk6aChgYCwhMCksdihgc3BhbmAsJGUsUyhiKHhlKShlLmRpc2NvdmVyeUVuYWJsZWQsZS5sYXN0UmVmcmVzaCkpLDEpXSldKSxfOjJ9LDEwMjQpXSksbChiKGRlKSxudWxsLHtkZWZhdWx0OnIoKCk9Plt2KGBkbGAsZXQsW2woRCx7bGFiZWw6YEJhc2UgVVJMYCxjbGFzczpgYnJlYWstYWxsYH0se2RlZmF1bHQ6cigoKT0+W3AoUyhlLmJhc2VVcmwpLDEpXSksXzoyfSwxMDI0KSxsKEQse2xhYmVsOmBMYXN0IHJlZnJlc2hgfSx7ZGVmYXVsdDpyKCgpPT5bcChTKGIoZ2UpKGUuZGlzY292ZXJ5RW5hYmxlZCxlLmxhc3RSZWZyZXNoKSksMSldKSxfOjJ9LDEwMjQpLGUuaGVhbHRoU3RhdGU9PT1gY2xvc2VkYD9oKGBgLCEwKToobSgpLGYoRCx7a2V5OjAsbGFiZWw6YERpc2NvdmVyeSBoZWFsdGhgLGNsYXNzOncoSWUoZS5oZWFsdGhTdGF0ZSkpfSx7ZGVmYXVsdDpyKCgpPT5bcChTKEsoZSkpLDEpXSksXzoyfSwxMDMyLFtgY2xhc3NgXSkpLGUubGFzdEVycj8obSgpLGYoRCx7a2V5OjEsbGFiZWw6YExhc3QgZXJyb3JgLGNsYXNzOmB0ZXh0LWRlc3RydWN0aXZlYH0se2RlZmF1bHQ6cigoKT0+W3AoUyhlLmxhc3RFcnIpLDEpXSksXzoyfSwxMDI0KSk6aChgYCwhMCldKSxVKGUpLmxlbmd0aD8obSgpLHkoYGRpdmAsdHQsWyhtKCEwKSx5KGMsbnVsbCxvZShVKGUpLHQ9PihtKCkseShgc3BhbmAse2tleTp0LGNsYXNzOmBpbmxpbmUtZmxleCBtaW4tdy0wIG1heC13LWZ1bGwgaXRlbXMtY2VudGVyIGdhcC0xYH0sW2woRSx7aWQ6YihJKShlLm5hbWUsdCksImNvbnRleHQtdG9rZW5zIjpHKGUsdCkuY29udGV4dFRva2VucywiaW5wdXQtcGVyLW0tdG9rLXVzZCI6RyhlLHQpLmlucHV0UGVyTVRva1VzZCwib3V0cHV0LXBlci1tLXRvay11c2QiOkcoZSx0KS5vdXRwdXRQZXJNVG9rVXNkfSxudWxsLDgsW2BpZGAsYGNvbnRleHQtdG9rZW5zYCxgaW5wdXQtcGVyLW0tdG9rLXVzZGAsYG91dHB1dC1wZXItbS10b2stdXNkYF0pLGwoRGUse2xhYmVsOmIoSSkoZS5uYW1lLHQpLGtpbmQ6YG1vZGVsYCxpZDpiKEkpKGUubmFtZSx0KSxjbGFzczpgbWluLXctMGAsImxhYmVsLWNsYXNzIjpgdHJ1bmNhdGVgfSxudWxsLDgsW2BsYWJlbGAsYGlkYF0pLEcoZSx0KS5jb250ZXh0VG9rZW5zPT09dm9pZCAwP2goYGAsITApOihtKCkseShgc3BhbmAsbnQsUyhiKHllKShHKGUsdCkuY29udGV4dFRva2VucykpLDEpKSxOZShlLHQpPyhtKCksZihMZSx7a2V5OjEsImF0dGVtcHRzLWRheSI6VyhlLHQpLmF0dGVtcHRzRGF5LCJmYWlsdXJlcy1kYXkiOlcoZSx0KS5mYWlsdXJlc0RheX0sbnVsbCw4LFtgYXR0ZW1wdHMtZGF5YCxgZmFpbHVyZXMtZGF5YF0pKTpoKGBgLCEwKV0pKSksMTI4KSldKSk6KG0oKSx5KGBwYCxydCxgbm8gbW9kZWxzIGtub3duIHlldGApKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSw4LFtgbW9kZWxWYWx1ZWBdKV0sNjQpKToobSgpLGYoTSx7a2V5OjMsdGl0bGU6YE5vIHByb3ZpZGVycyBjb25maWd1cmVkLmB9KSldKSxfOjF9KV0pLF86MX0pLGwoYih0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKGIocyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbChiKHgpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbN118fD1bcChgTW9kZWwgYWxpYXNlc2AsLTEpXV0pLF86MX0pLGwoYihPKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5pWzhdfHw9W3AoYE9wZXJhdG9yLWRlZmluZWQgYWxpYXMg4oaSIHRhcmdldCBtb2RlbCBtYXBwaW5ncy5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLGwoYihuKSxudWxsLHtkZWZhdWx0OnIoKCk9PltsKENlLHtjb2x1bW5zOmR0LGRhdGE6QWUudmFsdWUsImVtcHR5LW1lc3NhZ2UiOmZ0LnZhbHVlfSxudWxsLDgsW2BkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSksQy52YWx1ZT8udmVyc2lvbj8obSgpLHkoYHBgLGl0LGBWZXJzaW9uOiBgK1MoQy52YWx1ZS52ZXJzaW9uKSwxKSk6aChgYCwhMCldKX19fSksWD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxhdD17a2V5OjAsY2xhc3M6YHRleHQtc20gYnJlYWstd29yZHMgdGV4dC1kZXN0cnVjdGl2ZWB9LG90PVQoe19fbmFtZTpgTW9kZWxzUGFnZWAsc2V0dXAoZSl7bGV0IHQ9aygpLG49UmUoKSxyPWllKCksbz1fKHtnZXQ6KCk9PnIucGFyYW1zLnE/P3IucGFyYW1zLm1vZGVsPz9gYCxzZXQ6ZT0+e2xldHttb2RlbDp0LC4uLm59PXIucGFyYW1zO3IuZ29UbyhgbW9kZWxzYCx7Li4ubixxOmV9KX19KTtyZXR1cm4gYSgoKT0+dm9pZCBuLmZldGNoKCkpLGkoKCk9PnQucmFuZ2UsKCk9PnZvaWQgbi5mZXRjaCgpKSwoZSx0KT0+KG0oKSx5KGBkaXZgLFgsW2woWSksYihuKS5lcnJvciYmYihuKS5yb3dzLmxlbmd0aD4wPyhtKCkseShgcGAsYXQsUyhiKG4pLmVycm9yKSwxKSk6aChgYCwhMCksbChJZSx7cm93czpiKG4pLnJvd3MscXVlcnk6by52YWx1ZSwibGF0ZW5jeS1lbmFibGVkIjpiKG4pLmxhdGVuY3lFbmFibGVkLGxvYWRpbmc6YihuKS5sb2FkaW5nLGVycm9yOmIobikuZXJyb3IsIm9uLXJldHJ5IjpiKG4pLmZldGNoLCJvblVwZGF0ZTpxdWVyeSI6dFswXXx8PWU9Pm8udmFsdWU9ZX0sbnVsbCw4LFtgcm93c2AsYHF1ZXJ5YCxgbGF0ZW5jeS1lbmFibGVkYCxgbG9hZGluZ2AsYGVycm9yYCxgb24tcmV0cnlgXSldKSl9fSk7ZXhwb3J0e290IGFzIGRlZmF1bHR9Ow==",
),
},
"ReliabilityPage-D-sOLtWZ.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsRCBhcyB0LEUgYXMgbixMciBhcyByLE1yIGFzIGksUW4gYXMgYSxUIGFzIG8sWHQgYXMgcyxfbiBhcyBjLGJ0IGFzIGwsY24gYXMgdSxlaSBhcyBkLGZyIGFzIGYsZyBhcyBwLGduIGFzIG0sZ3QgYXMgaCxpciBhcyBnLGxuIGFzIF8sbiBhcyB2LG5yIGFzIHksbnQgYXMgYixvbiBhcyB4LHNuIGFzIFMsdW4gYXMgQyx1ciBhcyBlZSx2aSBhcyB3LHcgYXMgVCx3aSBhcyBFLHluIGFzIER9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7XyBhcyBPLGEgYXMgayxnIGFzIHRlLGggYXMgQSxpIGFzIGosbCBhcyBNLG4gYXMgbmUsbyBhcyByZSxyIGFzIE4scyBhcyBQLHQgYXMgRn1mcm9tIi4vaW5kZXgtODhDVFJOSFAuanMiO2ltcG9ydHt0IGFzIEl9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHtTIGFzIEwsaSBhcyBSLGsgYXMgeixtIGFzIEIsbiBhcyBWLHQgYXMgSCx4IGFzIFV9ZnJvbSIuL2JhZGdlLUJKTGctUjNNLmpzIjtpbXBvcnR7aSBhcyBXfWZyb20iLi9jb2x1bW5zLUNvZWNuZjc0LmpzIjtpbXBvcnR7dCBhcyBpZX1mcm9tIi4vU2tlbGV0b25DaGFydC0xWV81czlmMC5qcyI7aW1wb3J0e24gYXMgYWUsdCBhcyBHfWZyb20iLi91c2VTZWFyY2hRdWVyeS1CU2tDOGJHZC5qcyI7aW1wb3J0e24gYXMgSyx0IGFzIHF9ZnJvbSIuL0NoYXJ0Q2FyZC1DQUNTSVgxZi5qcyI7aW1wb3J0e3QgYXMgb2V9ZnJvbSIuL1N0YXREaXNhYmxlZEFsZXJ0LUJKdEhSWHdFLmpzIjtpbXBvcnR7dCBhcyBzZX1mcm9tIi4vZXZlbnRzLVI5eVFsQmMwLmpzIjtpbXBvcnR7YSBhcyBjZSxpIGFzIEosbiBhcyBZLHIgYXMgWCx0IGFzIGxlfWZyb20iLi9ldmVudHMtZmlsdGVyLUNpZXUxVUJSLmpzIjtpbXBvcnR7YyBhcyB1ZX1mcm9tIi4va3BpLVAwOFV2cktpLmpzIjtpbXBvcnR7bCBhcyBkZX1mcm9tIi4vc2VyaWVzLURac3VBWEhJLmpzIjtpbXBvcnR7biBhcyBmZX1mcm9tIi4vcmVsaWFiaWxpdHktQ1lkSnFfNzQuanMiO2ltcG9ydHtuIGFzIHBlfWZyb20iLi9jaGFydC1wYWxldHRlLWhtNFpJa0FYLmpzIjtmdW5jdGlvbiBaKGUpe3JldHVybiBlLnVzZXI/YHVzZXI6JHtlLnVzZXJ9YDplLmdyb3VwP2Bncm91cDoke2UuZ3JvdXB9YDpg4oCUYH1mdW5jdGlvbiBtZShlKXtsZXQgdD1bZS5tb2RlbCxlLnByb3ZpZGVyXS5maWx0ZXIoZT0+ISFlKTtyZXR1cm4gdC5sZW5ndGg/dC5qb2luKGAg4oaSIGApOmDigJRgfWZ1bmN0aW9uIGhlKCl7cmV0dXJuW3tpZDpgdGltZWAsaGVhZGVyOmBUaW1lYCxhY2Nlc3NvckZuOmU9PmUudGltZSxjZWxsOih7cm93OnR9KT0+ZShgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGFidWxhci1udW1zYH0sQih0Lm9yaWdpbmFsLnRpbWUpKX0se2lkOmBraW5kYCxoZWFkZXI6YEtpbmRgLGFjY2Vzc29yRm46ZT0+ZS5raW5kLGNlbGw6KHtyb3c6dH0pPT5lKEgse2FzOmBzcGFuYCx2YXJpYW50OlgodC5vcmlnaW5hbC5raW5kKSxjbGFzczpgZm9udC1ub3JtYWxgfSwoKT0+Y2UodC5vcmlnaW5hbC5raW5kKSl9LHtpZDpgcm91dGVgLGhlYWRlcjpgUm91dGVgLGFjY2Vzc29yRm46ZT0+ZS5yb3V0ZSxjZWxsOih7cm93OnR9KT0+ZShgc3BhbmAse2NsYXNzOmBmb250LW1vbm8gdGV4dC14c2B9LHQub3JpZ2luYWwucm91dGUpfSx7aWQ6YHNjb3BlYCxoZWFkZXI6YFVzZXIgLyBncm91cGAsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PmUudXNlcj8/ZS5ncm91cD8/YGAsY2VsbDooe3Jvdzp0fSk9PntsZXQgbj1aKHQub3JpZ2luYWwpO3JldHVybiBlKGBzcGFuYCx7Y2xhc3M6bj09PWDigJRgP2B0ZXh0LW11dGVkLWZvcmVncm91bmRgOnZvaWQgMH0sbil9fSx7aWQ6YHRhcmdldGAsaGVhZGVyOmBNb2RlbCAvIHByb3ZpZGVyYCxlbmFibGVTb3J0aW5nOiExLGFjY2Vzc29yRm46ZT0+YCR7ZS5tb2RlbD8/YGB9ICR7ZS5wcm92aWRlcj8/YGB9YCxjZWxsOih7cm93OnR9KT0+e2xldCBuPW1lKHQub3JpZ2luYWwpO3JldHVybiBlKGBzcGFuYCx7Y2xhc3M6bj09PWDigJRgP2B0ZXh0LW11dGVkLWZvcmVncm91bmRgOmBmb250LW1vbm8gdGV4dC14c2B9LG4pfX0se2lkOmByZXBsaWNhYCxoZWFkZXI6YFJlcGxpY2FgLGFjY2Vzc29yRm46ZT0+ZS5yZXBsaWNhLGNlbGw6KHtyb3c6dH0pPT5lKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHQub3JpZ2luYWwucmVwbGljYSl9LHtpZDpgc3RhdHVzYCxoZWFkZXI6YFN0YXR1c2AsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnN0YXR1cz8/MCxjZWxsOih7cm93OnR9KT0+ZShgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSx0Lm9yaWdpbmFsLnN0YXR1cz09PXZvaWQgMD9g4oCUYDpTdHJpbmcodC5vcmlnaW5hbC5zdGF0dXMpKX0se2lkOmBtZXNzYWdlYCxoZWFkZXI6YE1lc3NhZ2VgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT5lLm1lc3NhZ2UsY2VsbDooe3Jvdzp0fSk9PmUoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sdC5vcmlnaW5hbC5tZXNzYWdlKX1dfXZhciBnZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxRPXtjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0zYH0sJD1gYWxsYCxfZT1EKHtfX25hbWU6YEV2ZW50c1ZpZXdgLHNldHVwKGUpe2xldCBpPXNlKCkse2tpbmRGaWx0ZXI6cCx1c2VyRmlsdGVyOnZ9PWwoaSkse25vcm1hbGl6ZWQ6RH09Ryh2KSxuZT14KCgpPT5wLnZhbHVlPT09YGA/JDpwLnZhbHVlKSxGPXgoKCk9PkooaS5ldmVudHMse2tpbmQ6cC52YWx1ZSx1c2VyOkQudmFsdWV9KSk7ZnVuY3Rpb24gUihlKXt0eXBlb2YgZT09YHN0cmluZ2AmJmkuc2V0S2luZEZpbHRlcihlPT09JD9gYDplKX1sZXQgQj1oZSgpLFY9eCgoKT0+VSh7bG9hZGluZzppLnJlZnJlc2hpbmcsaGFzRGF0YTppLmxhc3RVcGRhdGVkIT09bnVsbCxlcnJvcjppLmVycm9yfSkpLEg9eCgoKT0+aS5ldmVudHMubGVuZ3RoPT09MCksaWU9eCgoKT0+cC52YWx1ZSE9PWBgfHxELnZhbHVlP2BubyBldmVudHMgbWF0Y2ggdGhlIGN1cnJlbnQgZmlsdGVyYDpgbm9uZWApLEs9eCgoKT0+aS5zb3VyY2U9PT1gcmVkaXNgP2BGbGVldC13aWRlLCBhY3Jvc3MgZXZlcnkgcmVwbGljYWA6YFRoaXMgcmVwbGljYSBvbmx5ICgke2kucmVwbGljYXx8YHVua25vd25gfSkg4oCUIFJlZGlzIGlzIHVucmVhY2hhYmxlIG9yIHVuY29uZmlndXJlZGApO3JldHVybiBhKCgpPT57aS5zdGFydFBvbGxpbmcoKX0pLHkoKCk9PntpLnN0b3BQb2xsaW5nKCl9KSwoZSxhKT0+e2xldCBsPWYoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBnKCksQyhgZGl2YCxnZSxbdyhpKS5kZWdyYWRlZD8oZygpLHUodyhPKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpyKCgpPT5bYyhsLHtpY29uOncoaCksY2xhc3M6YHNpemUtNGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksYyh3KEEpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMV18fD1bbShgRmxlZXQtd2lkZSBldmVudCBsb2cgdW5hdmFpbGFibGVgLC0xKV1dKSxfOjF9KSxjKHcodGUpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMl18fD1bbShgIFJlZGlzIGlzIGNvbmZpZ3VyZWQgYnV0IGNvdWxkIG5vdCBiZSByZWFkIOKAlCBzaG93aW5nIHRoaXMgcmVwbGljYSdzIG93biBpbi1tZW1vcnkgZXZlbnRzIG9ubHksIHdoaWNoIG1heSBtaXNzIGV2ZW50cyByZWNvcmRlZCBieSBvdGhlciByZXBsaWNhcy4gYCwtMSldXSksXzoxfSldKSxfOjF9KSk6XyhgYCwhMCksYyh3KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2ModyhvKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTQgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIHNtOmp1c3RpZnktYmV0d2VlbmB9LHtkZWZhdWx0OnIoKCk9PltTKGBkaXZgLG51bGwsW2ModyhUKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5hWzNdfHw9W20oYEV2ZW50c2AsLTEpXV0pLF86MX0pLFYudmFsdWU9PT1gcmVhZHlgPyhnKCksdSh3KE0pLHtrZXk6MH0se2RlZmF1bHQ6cigoKT0+W20oRShLLnZhbHVlKStgIOKAlCByYXRlIGxpbWl0LCBidWRnZXQsIGFuZCB1cHN0cmVhbSBldmVudHMsIG5ld2VzdCBmaXJzdCAoY2FwYWNpdHkgYCtFKHcoaSkuY2FwYWNpdHkpK2ApLiBgLDEpXSksXzoxfSkpOl8oYGAsITApXSksUyhgZGl2YCxRLFtjKGFlLHttb2RlbFZhbHVlOncodiksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMF18fD1lPT5kKHYpP3YudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgYnkgdXNlciBvciBncm91cGAsY2xhc3M6YHctNTZgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLGModyhQKSx7Im1vZGVsLXZhbHVlIjpuZS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6Un0se2RlZmF1bHQ6cigoKT0+W2ModyhqKSx7Y2xhc3M6YHctNDRgLCJhcmlhLWxhYmVsIjpgRmlsdGVyIGJ5IGtpbmRgfSx7ZGVmYXVsdDpyKCgpPT5bYyh3KE4pLHtwbGFjZWhvbGRlcjpgS2luZGB9KV0pLF86MX0pLGModyhyZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bYyh3KGspLHt2YWx1ZTokfSx7ZGVmYXVsdDpyKCgpPT5bLi4uYVs0XXx8PVttKGBBbGwga2luZHNgLC0xKV1dKSxfOjF9KSwoZyghMCksQyhzLG51bGwsZWUodyhsZSksZT0+KGcoKSx1KHcoaykse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OnIoKCk9PlttKEUodyhZKVtlXSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksXzoxfSksYyh3KG4pLG51bGwse2RlZmF1bHQ6cigoKT0+W1YudmFsdWU9PT1gc2tlbGV0b25gPyhnKCksdShMLHtrZXk6MCxyb3dzOjUsY29sczp3KEIpLmxlbmd0aH0sbnVsbCw4LFtgY29sc2BdKSk6Vi52YWx1ZT09PWBlcnJvcmA/KGcoKSx1KEkse2tleToxLG1lc3NhZ2U6dyhpKS5lcnJvciwib24tcmV0cnkiOncoaSkucmVmcmVzaH0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTpILnZhbHVlPyhnKCksdSh6LHtrZXk6MixpY29uOncoYiksdGl0bGU6YE5vIGZhaWx1cmVzIHJlY29yZGVkLmAsZGVzY3JpcHRpb246YFJhdGUtbGltaXQsIGJ1ZGdldCwgYW5kIHVwc3RyZWFtIGV2ZW50cyB3aWxsIHNob3cgdXAgaGVyZSBhcyB0aGV5IGhhcHBlbi5gfSxudWxsLDgsW2BpY29uYF0pKTooZygpLHUoVyx7a2V5OjMsY29sdW1uczp3KEIpLGRhdGE6Ri52YWx1ZSwiZW1wdHktbWVzc2FnZSI6aWUudmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKSldKSxfOjF9KV0pLF86MX0pXSl9fX0pLHZlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LHllPXtrZXk6MixjbGFzczpgdGV4dC1zbSBicmVhay13b3JkcyB0ZXh0LWRlc3RydWN0aXZlYH0sYmU9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHhlPXtrZXk6MixjbGFzczpgZ3JpZCBnYXAtNiBsZzpncmlkLWNvbHMtMmB9LFNlPXtjbGFzczpgZ3JpZCBnYXAtNiBsZzpncmlkLWNvbHMtMmB9LENlPUQoe19fbmFtZTpgUmVsaWFiaWxpdHlQYWdlYCxzZXR1cChlKXtsZXQgbD1wKCksZD1zZSgpLGY9RigpLGg9digpLHk9ZmUoKSxiPXgoKCk9PmgucGFyYW1zLnByb3ZpZGVyPz9gYCksZWU9eCgoKT0+KGwub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10pLm1hcChlPT4oe3ZhbHVlOmUubmFtZSxsYWJlbDplLm5hbWV9KSkpO2Z1bmN0aW9uIEQoZSl7aC5nb1RvKGByZWxpYWJpbGl0eWAsey4uLmgucGFyYW1zLHByb3ZpZGVyOmV9KX1mdW5jdGlvbiBrKGUpe3JldHVybiBkZShlKX1mdW5jdGlvbiBBKGUpe3JldHVybiBiLnZhbHVlP2UuZmlsdGVyKGU9PmsoZS5zY29wZSk9PT1iLnZhbHVlKTplfWZ1bmN0aW9uIGooZSl7cmV0dXJuIGUubWFwKGU9PmU9PT1udWxsP05hTjplKX1sZXQgcmU9eCgoKT0+QSh5LmVycm9yUmF0ZSkubWFwKChlLHQpPT4oe2xhYmVsOmsoZS5zY29wZSksZGF0YTpqKGUucG9pbnRzKSxjb2xvcjpwZSh0KX0pKSk7ZnVuY3Rpb24gTihlKXtyZXR1cm4gQShlKS5tYXAoKGUsdCk9Pih7bGFiZWw6ayhlLnNjb3BlKSxkYXRhOmUucG9pbnRzLGNvbG9yOnBlKHQpfSkpfWxldCBQPXgoKCk9Pk4oeS50aW1lb3V0cykpLEw9eCgoKT0+Tih5LmZhaWxvdmVycykpLEI9eCgoKT0+W3tsYWJlbDpgNDI5IHJlamVjdGlvbnNgLGRhdGE6eS5yZWplY3Rpb25zLGNvbG9yOmAtLWRlc3RydWN0aXZlYH1dKSxIPXgoKCk9Plt7bGFiZWw6YDQwMiB1bnByaWNlZCByZWZ1c2Fsc2AsZGF0YTp5LnVucHJpY2VkLGNvbG9yOmAtLXN0YXR1cy13YXJuYH1dKSxXPXgoKCk9PnkuYnVja2V0cy5tYXAoZT0+UihlLHkud2luZG93VXNlZCkpKTtmdW5jdGlvbiBhZShlKXtyZXR1cm4gdWUoTnVtYmVyLmlzTmFOKGUpP251bGw6ZSl9bGV0IEc9eCgoKT0+KGwub3ZlcnZpZXc/LnByb3ZpZGVycy5sZW5ndGg/PzApPjApLGNlPXgoKCk9Pmwub3ZlcnZpZXchPT1udWxsJiZsLm92ZXJ2aWV3LmZlYXR1cmVzLmZhaWxvdmVyPT09ITEpLEo9eCgoKT0+VSh7bG9hZGluZzohbC5sYXN0VXBkYXRlZCxoYXNEYXRhOmwub3ZlcnZpZXchPT1udWxsLGVycm9yOmwuZXJyb3J9KSksWT14KCgpPT5KLnZhbHVlPT09YHJlYWR5YD9HLnZhbHVlP2ByZWFkeWA6YGVtcHR5YDpKLnZhbHVlKSxYPXgoKCk9Pmwub3ZlcnZpZXc/LmZlYXR1cmVzLmxhdGVuY3lTdGF0cz8/ITEpLGxlPXgoKCk9PmIudmFsdWUhPT1gYCYmWC52YWx1ZSksWj14KCgpPT55LnByb3ZpZGVyUGVyZkJ1Y2tldHMubWFwKGU9PlIoZSx5LnByb3ZpZGVyUGVyZldpbmRvd1VzZWQpKSksbWU9eCgoKT0+W3tsYWJlbDpgcDUwYCxkYXRhOnkucHJvdmlkZXJQZXJmUG9pbnRzLm1hcChlPT5lLnA1ME1zPz9OYU4pLGNvbG9yOmAtLWNoYXJ0LXJlcXVlc3RzYH0se2xhYmVsOmBwOTVgLGRhdGE6eS5wcm92aWRlclBlcmZQb2ludHMubWFwKGU9PmUucDk1TXM/P05hTiksY29sb3I6YC0tY2hhcnQtdG9rZW5zLWluYH1dKSxoZT14KCgpPT5be2xhYmVsOmBmYWlsdXJlc2AsZGF0YTp5LnByb3ZpZGVyUGVyZlBvaW50cy5tYXAoZT0+ZS5mYWlsdXJlcyksY29sb3I6YC0tZGVzdHJ1Y3RpdmVgfV0pO2koKCk9PltiLnZhbHVlLGYucmFuZ2VdLChbZV0pPT52b2lkIHkuZmV0Y2hQcm92aWRlclBlcmYoZSkse2ltbWVkaWF0ZTohMH0pO2xldCBnZT14KCgpPT5mLndpbmRvdz09PWBtb250aGApLFE9eCgoKT0+Si52YWx1ZT09PWByZWFkeWA/VSh7bG9hZGluZzp5LmxvYWRpbmcsaGFzRGF0YTp5LmJ1Y2tldHMubGVuZ3RoPjAsZXJyb3I6eS5lcnJvcn0pOkoudmFsdWUpLCQ9eCgoKT0+VSh7bG9hZGluZzp5LnByb3ZpZGVyUGVyZkxvYWRpbmcsaGFzRGF0YTp5LnByb3ZpZGVyUGVyZlBvaW50cy5sZW5ndGg+MCxlcnJvcjp5LnByb3ZpZGVyUGVyZkVycm9yfSkpO3JldHVybiBpKCgpPT5bZi5yYW5nZSxsLm92ZXJ2aWV3Py5wcm92aWRlcnMubGVuZ3RoPz8wXSwoKT0+dm9pZCB5LmZldGNoKCkpLGkoKCk9PltkLmtpbmRGaWx0ZXIsZC51c2VyRmlsdGVyXSwoW2UsdF0pPT57aC5nb1RvKGByZWxpYWJpbGl0eWAsey4uLmgucGFyYW1zLGtpbmQ6ZSx1c2VyOnR9KX0pLGkoKCk9PltoLnBhcmFtcy5raW5kLGgucGFyYW1zLnVzZXJdLChbZSx0XSk9PntkLnNldEtpbmRGaWx0ZXIoZT8/YGApLGQuc2V0VXNlckZpbHRlcih0Pz9gYCl9LHtpbW1lZGlhdGU6ITB9KSxhKCgpPT52b2lkIHkuZmV0Y2goKSksKGUsaSk9PihnKCksQyhgZGl2YCx2ZSxbYyh3KHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2ModyhvKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTMgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIHNtOmp1c3RpZnktYmV0d2VlbmB9LHtkZWZhdWx0OnIoKCk9PltTKGBkaXZgLG51bGwsW2ModyhUKSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5pWzBdfHw9W20oYFJlbGlhYmlsaXR5YCwtMSldXSksXzoxfSksYyh3KE0pLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbMV18fD1bbShgUHJvdmlkZXIgZXJyb3IgcmF0ZSwgZmFpbG92ZXJzLCB0aW1lb3V0cywgcmF0ZS1saW1pdCByZWplY3Rpb25zLCBhbmQgNDAyIHJlZnVzYWxzLmAsLTEpXV0pLF86MX0pXSksYyhuZSx7bGFiZWw6YFByb3ZpZGVyYCwibW9kZWwtdmFsdWUiOmIudmFsdWUsb3B0aW9uczplZS52YWx1ZSwiYWxsLWxhYmVsIjpgQWxsIHByb3ZpZGVyc2AsInRyaWdnZXItY2xhc3MiOmB3LTQ4YCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6RH0sbnVsbCw4LFtgbW9kZWwtdmFsdWVgLGBvcHRpb25zYF0pXSksXzoxfSksYyh3KG4pLG51bGwse2RlZmF1bHQ6cigoKT0+W0oudmFsdWU9PT1gc2tlbGV0b25gPyhnKCksdShWLHtrZXk6MCxyb3dzOjJ9KSk6Si52YWx1ZT09PWBlcnJvcmA/KGcoKSx1KEkse2tleToxLG1lc3NhZ2U6dyhsKS5lcnJvciwib24tcmV0cnkiOncobCkucmVmcmVzaH0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTp3KHkpLmVycm9yPyhnKCksQyhgcGAseWUsRSh3KHkpLmVycm9yKSwxKSk6Ry52YWx1ZT9fKGBgLCEwKTooZygpLHUoeix7a2V5OjMsdGl0bGU6YE5vIHByb3ZpZGVycyBjb25maWd1cmVkLmB9KSldKSxfOjF9KV0pLF86MX0pLGdlLnZhbHVlPyhnKCksdSh3KE8pLHtrZXk6MCx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6cigoKT0+W2Modyh0ZSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bbShgIFJlbGlhYmlsaXR5IGRhdGEgaGFzIG5vIG1vbnRobHkgcmV0ZW50aW9uIOKAlCBldmVyeSBjaGFydCBiZWxvdyBzaG93cyB0aGUgbW9zdCByZWNlbnQgMzAgZGF5cywgbm90IHRoZSBmdWxsIGArRSh3KGYpLnJhbmdlKStgIHJhbmdlIHNlbGVjdGVkIGFib3ZlLiBgLDEpXSksXzoxfSldKSxfOjF9KSk6XyhgYCwhMCksWS52YWx1ZT09PWBza2VsZXRvbmA/KGcoKSxDKHMse2tleToxfSxbYyhxLHt0aXRsZTpgRXJyb3IgcmF0ZSBieSBwcm92aWRlcmAsc3RhdGU6YHNrZWxldG9uYH0pLGMocSx7dGl0bGU6YFNlbGVjdGVkIHByb3ZpZGVyIHBlcmZvcm1hbmNlYCxzdGF0ZTpgc2tlbGV0b25gfSksYyhxLHt0aXRsZTpgVGltZW91dHMgYnkgcHJvdmlkZXJgLHN0YXRlOmBza2VsZXRvbmB9KSxjKHEse3RpdGxlOmBGYWlsb3ZlcnMgYnkgcHJvdmlkZXJgLHN0YXRlOmBza2VsZXRvbmB9KV0sNjQpKTpZLnZhbHVlPT09YGVtcHR5YD8oZygpLHUodyh0KSx7a2V5OjJ9LHtkZWZhdWx0OnIoKCk9PltjKHcobiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bYyh6LHt0aXRsZTpgTm8gcHJvdmlkZXJzIGNvbmZpZ3VyZWQuYCxkZXNjcmlwdGlvbjpgQWRkIGEgcHJvdmlkZXJzIGVudHJ5IHRvIHRoZSBtaWRkbGV3YXJlIGNvbmZpZyB0byBzZWUgcGVyLXByb3ZpZGVyIHJlbGlhYmlsaXR5IGNoYXJ0cyBoZXJlLmB9KV0pLF86MX0pXSksXzoxfSkpOlkudmFsdWU9PT1gcmVhZHlgPyhnKCksQyhzLHtrZXk6M30sW2MocSx7dGl0bGU6YEVycm9yIHJhdGUgYnkgcHJvdmlkZXJgLGRlc2NyaXB0aW9uOmBGYWlsZWQgYXR0ZW1wdHMgLyB0b3RhbCBhdHRlbXB0cyBwZXIgYnVja2V0LiBBIGdhcCBtZWFucyBubyBhdHRlbXB0cyBpbiB0aGF0IGJ1Y2tldC5gLHN0YXRlOlEudmFsdWUsZXJyb3I6dyh5KS5lcnJvciwib24tcmV0cnkiOncoeSkuZmV0Y2gsbGFiZWxzOlcudmFsdWUsZGF0YXNldHM6cmUudmFsdWUsInZhbHVlLWZvcm1hdHRlciI6YWUsImFyaWEtbGFiZWwiOmBFcnJvciByYXRlIGJ5IHByb3ZpZGVyIG92ZXIgdGltZWB9LG51bGwsOCxbYHN0YXRlYCxgZXJyb3JgLGBvbi1yZXRyeWAsYGxhYmVsc2AsYGRhdGFzZXRzYF0pLGModyh0KSxudWxsLHtkZWZhdWx0OnIoKCk9PltjKHcobyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bYyh3KFQpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbMl18fD1bbShgU2VsZWN0ZWQgcHJvdmlkZXIgcGVyZm9ybWFuY2VgLC0xKV1dKSxfOjF9KSxjKHcoTSksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uaVszXXx8PVttKGBMYXRlbmN5IChwNTAvcDk1KSBhbmQgZmFpbHVyZXMgcGVyIGJ1Y2tldCBmb3Igb25lIHByb3ZpZGVyLmAsLTEpXV0pLF86MX0pXSksXzoxfSksYyh3KG4pLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHtkZWZhdWx0OnIoKCk9PltiLnZhbHVlPT09YGA/KGcoKSxDKGBwYCxiZSxgIFNlbGVjdCBhIHByb3ZpZGVyIGFib3ZlIHRvIHNlZSBpdHMgbGF0ZW5jeSBhbmQgZmFpbHVyZSBicmVha2Rvd24gcGVyIGJ1Y2tldC4gYCkpOlgudmFsdWU/bGUudmFsdWU/KGcoKSxDKHMse2tleToyfSxbJC52YWx1ZT09PWBza2VsZXRvbmA/KGcoKSx1KGllLHtrZXk6MH0pKTokLnZhbHVlPT09YGVycm9yYD8oZygpLHUoSSx7a2V5OjEsbWVzc2FnZTp3KHkpLnByb3ZpZGVyUGVyZkVycm9yLCJvbi1yZXRyeSI6KCk9PncoeSkuZmV0Y2hQcm92aWRlclBlcmYoYi52YWx1ZSl9LG51bGwsOCxbYG1lc3NhZ2VgLGBvbi1yZXRyeWBdKSk6KGcoKSxDKGBkaXZgLHhlLFtTKGBkaXZgLG51bGwsW2lbNF18fD1TKGBwYCx7Y2xhc3M6YG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGF0ZW5jeSAobXMpYCwtMSksYyhLLHtsYWJlbHM6Wi52YWx1ZSxkYXRhc2V0czptZS52YWx1ZSxhcmlhTGFiZWw6YHA1MC9wOTUgbGF0ZW5jeSBmb3IgJHtiLnZhbHVlfSBvdmVyIHRpbWVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGFyaWFMYWJlbGBdKV0pLFMoYGRpdmAsbnVsbCxbaVs1XXx8PVMoYHBgLHtjbGFzczpgbWItMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBGYWlsdXJlc2AsLTEpLGMoSyx7bGFiZWxzOloudmFsdWUsZGF0YXNldHM6aGUudmFsdWUsYXJpYUxhYmVsOmBGYWlsdXJlcyBmb3IgJHtiLnZhbHVlfSBvdmVyIHRpbWVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGFyaWFMYWJlbGBdKV0pXSkpXSw2NCkpOl8oYGAsITApOihnKCksdShvZSx7a2V5OjEsdGl0bGU6YExhdGVuY3kgc3RhdGlzdGljcyBhcmUgb2ZmYCwiY29uZmlnLWtleSI6YGFkbWluLnN0YXRzLmxhdGVuY3lgLHB1cnBvc2U6YHRvIHNlZSBwZXItYnVja2V0IGxhdGVuY3kgZm9yICR7Yi52YWx1ZX0uYH0sbnVsbCw4LFtgcHVycG9zZWBdKSldKSxfOjF9KV0pLF86MX0pLGMocSx7dGl0bGU6YFRpbWVvdXRzIGJ5IHByb3ZpZGVyYCxzdGF0ZTpRLnZhbHVlLGVycm9yOncoeSkuZXJyb3IsIm9uLXJldHJ5Ijp3KHkpLmZldGNoLGxhYmVsczpXLnZhbHVlLGRhdGFzZXRzOlAudmFsdWUsImFyaWEtbGFiZWwiOmBUaW1lb3V0cyBieSBwcm92aWRlciBvdmVyIHRpbWVgfSxudWxsLDgsW2BzdGF0ZWAsYGVycm9yYCxgb24tcmV0cnlgLGBsYWJlbHNgLGBkYXRhc2V0c2BdKSxjKHEse3RpdGxlOmBGYWlsb3ZlcnMgYnkgcHJvdmlkZXJgLGRlc2NyaXB0aW9uOmNlLnZhbHVlP2BUaGlzIGRlcGxveW1lbnQgaGFzIG5vIGZhaWxvdmVyIGNoYWlucyBjb25maWd1cmVkLmA6dm9pZCAwLHN0YXRlOlEudmFsdWUsZXJyb3I6dyh5KS5lcnJvciwib24tcmV0cnkiOncoeSkuZmV0Y2gsbGFiZWxzOlcudmFsdWUsZGF0YXNldHM6TC52YWx1ZSwiYXJpYS1sYWJlbCI6YEZhaWxvdmVycyBieSBwcm92aWRlciBvdmVyIHRpbWVgfSxudWxsLDgsW2BkZXNjcmlwdGlvbmAsYHN0YXRlYCxgZXJyb3JgLGBvbi1yZXRyeWAsYGxhYmVsc2AsYGRhdGFzZXRzYF0pXSw2NCkpOl8oYGAsITApLFMoYGRpdmAsU2UsW2MocSx7dGl0bGU6YFJhdGUtbGltaXQgcmVqZWN0aW9ucyAoNDI5KWAsZGVzY3JpcHRpb246YEZsZWV0LXdpZGUsIGV2ZXJ5IHNjb3BlIGNvbWJpbmVkLmAsc3RhdGU6US52YWx1ZSxlcnJvcjp3KHkpLmVycm9yLCJvbi1yZXRyeSI6dyh5KS5mZXRjaCxsYWJlbHM6Vy52YWx1ZSxkYXRhc2V0czpCLnZhbHVlLCJhcmlhLWxhYmVsIjpgUmF0ZS1saW1pdCByZWplY3Rpb25zIG92ZXIgdGltZSwgZmxlZXQtd2lkZWB9LG51bGwsOCxbYHN0YXRlYCxgZXJyb3JgLGBvbi1yZXRyeWAsYGxhYmVsc2AsYGRhdGFzZXRzYF0pLGMocSx7dGl0bGU6YFVucHJpY2VkIHJlZnVzYWxzICg0MDIpYCxkZXNjcmlwdGlvbjpgRmxlZXQtd2lkZSByZXF1ZXN0cyByZWZ1c2VkIGZvciBoYXZpbmcgbm8gcmVzb2x2YWJsZSBwcmljZS5gLHN0YXRlOlEudmFsdWUsZXJyb3I6dyh5KS5lcnJvciwib24tcmV0cnkiOncoeSkuZmV0Y2gsbGFiZWxzOlcudmFsdWUsZGF0YXNldHM6SC52YWx1ZSwiYXJpYS1sYWJlbCI6YFVucHJpY2VkIHJlZnVzYWxzICg0MDIpIG92ZXIgdGltZSwgZmxlZXQtd2lkZWB9LG51bGwsOCxbYHN0YXRlYCxgZXJyb3JgLGBvbi1yZXRyeWAsYGxhYmVsc2AsYGRhdGFzZXRzYF0pXSksYyhfZSldKSl9fSk7ZXhwb3J0e0NlIGFzIGRlZmF1bHR9Ow==",
),
},
"Skeleton-D0NnvHY1.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"ZnVuY3Rpb24gZShlKXtsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgbiBvZiBlLnNwbGl0KGAsYCkpdFtuXT0xO3JldHVybiBlPT5lIGluIHR9dmFyIHQ9e30sbj1bXSxyPSgpPT57fSxpPSgpPT4hMSxhPWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiYoZS5jaGFyQ29kZUF0KDIpPjEyMnx8ZS5jaGFyQ29kZUF0KDIpPDk3KSxvPWU9PmUuc3RhcnRzV2l0aChgb25VcGRhdGU6YCkscz1PYmplY3QuYXNzaWduLGM9KGUsdCk9PntsZXQgbj1lLmluZGV4T2YodCk7bj4tMSYmZS5zcGxpY2UobiwxKX0sbD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHU9KGUsdCk9PmwuY2FsbChlLHQpLGQ9QXJyYXkuaXNBcnJheSxmPWU9PlMoZSk9PT1gW29iamVjdCBNYXBdYCxwPWU9PlMoZSk9PT1gW29iamVjdCBTZXRdYCxtPWU9PlMoZSk9PT1gW29iamVjdCBEYXRlXWAsaD1lPT5TKGUpPT09YFtvYmplY3QgUmVnRXhwXWAsZz1lPT50eXBlb2YgZT09YGZ1bmN0aW9uYCxfPWU9PnR5cGVvZiBlPT1gc3RyaW5nYCx2PWU9PnR5cGVvZiBlPT1gc3ltYm9sYCx5PWU9PnR5cGVvZiBlPT1gb2JqZWN0YCYmISFlLGI9ZT0+KHkoZSl8fGcoZSkpJiZnKGUudGhlbikmJmcoZS5jYXRjaCkseD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFM9ZT0+eC5jYWxsKGUpLEM9ZT0+UyhlKS5zbGljZSg4LC0xKSx3PWU9PlMoZSk9PT1gW29iamVjdCBPYmplY3RdYCxUPWU9Pl8oZSkmJmUhPT1gTmFOYCYmZVswXSE9PWAtYCYmYGArcGFyc2VJbnQoZSwxMCk9PT1lLEU9ZShgLGtleSxyZWYscmVmX2ZvcixyZWZfa2V5LG9uVm5vZGVCZWZvcmVNb3VudCxvblZub2RlTW91bnRlZCxvblZub2RlQmVmb3JlVXBkYXRlLG9uVm5vZGVVcGRhdGVkLG9uVm5vZGVCZWZvcmVVbm1vdW50LG9uVm5vZGVVbm1vdW50ZWRgKSxEPWU9PntsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybihuPT50W25dfHwodFtuXT1lKG4pKSl9LGVlPS8tXHcvZyxPPUQoZT0+ZS5yZXBsYWNlKGVlLGU9PmUuc2xpY2UoMSkudG9VcHBlckNhc2UoKSkpLHRlPS9cQihbQS1aXSkvZyxrPUQoZT0+ZS5yZXBsYWNlKHRlLGAtJDFgKS50b0xvd2VyQ2FzZSgpKSxBPUQoZT0+ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKSxuZT1EKGU9PmU/YG9uJHtBKGUpfWA6YGApLGo9KGUsdCk9PiFPYmplY3QuaXMoZSx0KSxNPShlLC4uLnQpPT57Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSguLi50KX0sTj0oZSx0LG4scj0hMSk9PntPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTpyLHZhbHVlOm59KX0scmU9ZT0+e2xldCB0PXBhcnNlRmxvYXQoZSk7cmV0dXJuIGlzTmFOKHQpP2U6dH0saWU9ZT0+e2xldCB0PV8oZSk/TnVtYmVyKGUpOk5hTjtyZXR1cm4gaXNOYU4odCk/ZTp0fSxhZSxvZT0oKT0+YWV8fD10eXBlb2YgZ2xvYmFsVGhpczxgdWA/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZjxgdWA/c2VsZjp0eXBlb2Ygd2luZG93PGB1YD93aW5kb3c6dHlwZW9mIGdsb2JhbDxgdWA/Z2xvYmFsOnt9LFA9ZShgSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTixwYXJzZUZsb2F0LHBhcnNlSW50LGRlY29kZVVSSSxkZWNvZGVVUklDb21wb25lbnQsZW5jb2RlVVJJLGVuY29kZVVSSUNvbXBvbmVudCxNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsQmlnSW50LGNvbnNvbGUsRXJyb3IsU3ltYm9sYCk7ZnVuY3Rpb24gRihlKXtpZihkKGUpKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXSxpPV8ocik/bGUocik6RihyKTtpZihpKWZvcihsZXQgZSBpbiBpKXRbZV09aVtlXX1yZXR1cm4gdH1pZihfKGUpfHx5KGUpKXJldHVybiBlfXZhciBzZT0vOyg/IVteKF0qXCkpL2csY2U9LzooW15dKykvLEk9L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBsZShlKXtsZXQgdD17fTtyZXR1cm4gZS5yZXBsYWNlKEksYGApLnNwbGl0KHNlKS5mb3JFYWNoKGU9PntpZihlKXtsZXQgbj1lLnNwbGl0KGNlKTtuLmxlbmd0aD4xJiYodFtuWzBdLnRyaW0oKV09blsxXS50cmltKCkpfX0pLHR9ZnVuY3Rpb24gTChlKXtsZXQgdD1gYDtpZihfKGUpKXQ9ZTtlbHNlIGlmKGQoZSkpZm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCByPUwoZVtuXSk7ciYmKHQrPXIrYCBgKX1lbHNlIGlmKHkoZSkpZm9yKGxldCBuIGluIGUpZVtuXSYmKHQrPW4rYCBgKTtyZXR1cm4gdC50cmltKCl9ZnVuY3Rpb24gdWUoZSl7aWYoIWUpcmV0dXJuIG51bGw7bGV0e2NsYXNzOnQsc3R5bGU6bn09ZTtyZXR1cm4gdCYmIV8odCkmJihlLmNsYXNzPUwodCkpLG4mJihlLnN0eWxlPUYobikpLGV9dmFyIGRlPWBpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHlgLGZlPWUoZGUpO2RlK2BgO2Z1bmN0aW9uIHBlKGUpe3JldHVybiEhZXx8ZT09PWBgfWZ1bmN0aW9uIG1lKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtsZXQgbj0hMDtmb3IobGV0IHI9MDtuJiZyPGUubGVuZ3RoO3IrKyluPWhlKGVbcl0sdFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gaGUoZSx0KXtpZihlPT09dClyZXR1cm4hMDtsZXQgbj1tKGUpLHI9bSh0KTtpZihufHxyKXJldHVybiBuJiZyP2UuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk6ITE7aWYobj12KGUpLHI9dih0KSxufHxyKXJldHVybiBlPT09dDtpZihuPWQoZSkscj1kKHQpLG58fHIpcmV0dXJuIG4mJnI/bWUoZSx0KTohMTtpZihuPXkoZSkscj15KHQpLG58fHIpe2lmKCFufHwhcnx8T2JqZWN0LmtleXMoZSkubGVuZ3RoIT09T2JqZWN0LmtleXModCkubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lLmhhc093blByb3BlcnR5KG4pLGk9dC5oYXNPd25Qcm9wZXJ0eShuKTtpZihyJiYhaXx8IXImJml8fCFoZShlW25dLHRbbl0pKXJldHVybiExfX1yZXR1cm4gU3RyaW5nKGUpPT09U3RyaW5nKHQpfWZ1bmN0aW9uIGdlKGUsdCl7cmV0dXJuIGUuZmluZEluZGV4KGU9PmhlKGUsdCkpfXZhciBfZT1lPT4hIShlJiZlLl9fdl9pc1JlZj09PSEwKSx2ZT1lPT5fKGUpP2U6ZT09bnVsbD9gYDpkKGUpfHx5KGUpJiYoZS50b1N0cmluZz09PXh8fCFnKGUudG9TdHJpbmcpKT9fZShlKT92ZShlLnZhbHVlKTpKU09OLnN0cmluZ2lmeShlLHllLDIpOlN0cmluZyhlKSx5ZT0oZSx0KT0+X2UodCk/eWUoZSx0LnZhbHVlKTpmKHQpP3tbYE1hcCgke3Quc2l6ZX0pYF06Wy4uLnQuZW50cmllcygpXS5yZWR1Y2UoKGUsW3Qsbl0scik9PihlW2JlKHQscikrYCA9PmBdPW4sZSkse30pfTpwKHQpP3tbYFNldCgke3Quc2l6ZX0pYF06Wy4uLnQudmFsdWVzKCldLm1hcChlPT5iZShlKSl9OnYodCk/YmUodCk6eSh0KSYmIWQodCkmJiF3KHQpP1N0cmluZyh0KTp0LGJlPShlLHQ9YGApPT52KGUpP2BTeW1ib2woJHtlLmRlc2NyaXB0aW9uPz90fSlgOmU7ZnVuY3Rpb24geGUoZSl7cmV0dXJuIGU9PW51bGw/YGluaXRpYWxgOnR5cGVvZiBlPT1gc3RyaW5nYD9lPT09YGA/YCBgOmU6U3RyaW5nKGUpfXZhciBSLFNlPWNsYXNze2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuZGV0YWNoZWQ9ZSx0aGlzLl9hY3RpdmU9ITAsdGhpcy5fb249MCx0aGlzLmVmZmVjdHM9W10sdGhpcy5jbGVhbnVwcz1bXSx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl93YXJuT25SdW49ITAsdGhpcy5fX3Zfc2tpcD0hMCwhZSYmUiYmKFIuYWN0aXZlPyh0aGlzLnBhcmVudD1SLHRoaXMuaW5kZXg9KFIuc2NvcGVzfHwoUi5zY29wZXM9W10pKS5wdXNoKHRoaXMpLTEpOih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fd2Fybk9uUnVuPSExKSl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9cGF1c2UoKXtpZih0aGlzLl9hY3RpdmUpe3RoaXMuX2lzUGF1c2VkPSEwO2xldCBlLHQ7aWYodGhpcy5zY29wZXMpe2xldCBuPXRoaXMuc2NvcGVzLnNsaWNlKCk7Zm9yKGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspbltlXS5wYXVzZSgpfWZvcihlPTAsdD10aGlzLmVmZmVjdHMubGVuZ3RoO2U8dDtlKyspdGhpcy5lZmZlY3RzW2VdLnBhdXNlKCl9fXJlc3VtZSgpe2lmKHRoaXMuX2FjdGl2ZSYmdGhpcy5faXNQYXVzZWQpe3RoaXMuX2lzUGF1c2VkPSExO2xldCBlLHQ7aWYodGhpcy5zY29wZXMpe2xldCBuPXRoaXMuc2NvcGVzLnNsaWNlKCk7Zm9yKGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspbltlXS5yZXN1bWUoKX1sZXQgbj10aGlzLmVmZmVjdHMuc2xpY2UoKTtmb3IoZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdLnJlc3VtZSgpfX1ydW4oZSl7aWYodGhpcy5fYWN0aXZlKXtsZXQgdD1SO3RyeXtyZXR1cm4gUj10aGlzLGUoKX1maW5hbGx5e1I9dH19fW9uKCl7Kyt0aGlzLl9vbj09PTEmJih0aGlzLnByZXZTY29wZT1SLFI9dGhpcyl9b2ZmKCl7aWYodGhpcy5fb24+MCYmLS10aGlzLl9vbj09PTApe2lmKFI9PT10aGlzKVI9dGhpcy5wcmV2U2NvcGU7ZWxzZXtsZXQgZT1SO2Zvcig7ZTspe2lmKGUucHJldlNjb3BlPT09dGhpcyl7ZS5wcmV2U2NvcGU9dGhpcy5wcmV2U2NvcGU7YnJlYWt9ZT1lLnByZXZTY29wZX19dGhpcy5wcmV2U2NvcGU9dm9pZCAwfX1zdG9wKGUpe2lmKHRoaXMuX2FjdGl2ZSl7dGhpcy5fYWN0aXZlPSExO2xldCB0LG47Zm9yKHQ9MCxuPXRoaXMuZWZmZWN0cy5sZW5ndGg7dDxuO3QrKyl0aGlzLmVmZmVjdHNbdF0uc3RvcCgpO2Zvcih0aGlzLmVmZmVjdHMubGVuZ3RoPTAsdD0wLG49dGhpcy5jbGVhbnVwcy5sZW5ndGg7dDxuO3QrKyl0aGlzLmNsZWFudXBzW3RdKCk7aWYodGhpcy5jbGVhbnVwcy5sZW5ndGg9MCx0aGlzLnNjb3Blcyl7bGV0IGU9dGhpcy5zY29wZXMuc2xpY2UoKTtmb3IodD0wLG49ZS5sZW5ndGg7dDxuO3QrKyllW3RdLnN0b3AoITApO3RoaXMuc2NvcGVzLmxlbmd0aD0wfWlmKCF0aGlzLmRldGFjaGVkJiZ0aGlzLnBhcmVudCYmIWUpe2xldCBlPXRoaXMucGFyZW50LnNjb3Blcy5wb3AoKTtlJiZlIT09dGhpcyYmKHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XT1lLGUuaW5kZXg9dGhpcy5pbmRleCl9dGhpcy5wYXJlbnQ9dm9pZCAwfX19O2Z1bmN0aW9uIENlKGUpe3JldHVybiBuZXcgU2UoZSl9ZnVuY3Rpb24gd2UoKXtyZXR1cm4gUn1mdW5jdGlvbiBUZShlLHQ9ITEpe1ImJlIuY2xlYW51cHMucHVzaChlKX12YXIgeixFZT1uZXcgV2Vha1NldCxEZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZuPWUsdGhpcy5kZXBzPXZvaWQgMCx0aGlzLmRlcHNUYWlsPXZvaWQgMCx0aGlzLmZsYWdzPTUsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmNsZWFudXA9dm9pZCAwLHRoaXMuc2NoZWR1bGVyPXZvaWQgMCxSJiYoUi5hY3RpdmU/Ui5lZmZlY3RzLnB1c2godGhpcyk6dGhpcy5mbGFncyY9LTIpfXBhdXNlKCl7dGhpcy5mbGFnc3w9NjR9cmVzdW1lKCl7dGhpcy5mbGFncyY2NCYmKHRoaXMuZmxhZ3MmPS02NSxFZS5oYXModGhpcykmJihFZS5kZWxldGUodGhpcyksdGhpcy50cmlnZ2VyKCkpKX1ub3RpZnkoKXt0aGlzLmZsYWdzJjImJiEodGhpcy5mbGFncyYzMil8fHRoaXMuZmxhZ3MmOHx8amUodGhpcyl9cnVuKCl7aWYoISh0aGlzLmZsYWdzJjEpKXJldHVybiB0aGlzLmZuKCk7dGhpcy5mbGFnc3w9MixLZSh0aGlzKSxQZSh0aGlzKTtsZXQgZT16LHQ9SGU7ej10aGlzLEhlPSEwO3RyeXtyZXR1cm4gdGhpcy5mbigpfWZpbmFsbHl7RmUodGhpcyksej1lLEhlPXQsdGhpcy5mbGFncyY9LTN9fXN0b3AoKXtpZih0aGlzLmZsYWdzJjEpe2ZvcihsZXQgZT10aGlzLmRlcHM7ZTtlPWUubmV4dERlcClSZShlKTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAsS2UodGhpcyksdGhpcy5vblN0b3AmJnRoaXMub25TdG9wKCksdGhpcy5mbGFncyY9LTJ9fXRyaWdnZXIoKXt0aGlzLmZsYWdzJjY0P0VlLmFkZCh0aGlzKTp0aGlzLnNjaGVkdWxlcj90aGlzLnNjaGVkdWxlcigpOnRoaXMucnVuSWZEaXJ0eSgpfXJ1bklmRGlydHkoKXtJZSh0aGlzKSYmdGhpcy5ydW4oKX1nZXQgZGlydHkoKXtyZXR1cm4gSWUodGhpcyl9fSxPZT0wLGtlLEFlO2Z1bmN0aW9uIGplKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXtlLm5leHQ9QWUsQWU9ZTtyZXR1cm59ZS5uZXh0PWtlLGtlPWV9ZnVuY3Rpb24gTWUoKXtPZSsrfWZ1bmN0aW9uIE5lKCl7aWYoLS1PZT4wKXJldHVybjtpZihBZSl7bGV0IGU9QWU7Zm9yKEFlPXZvaWQgMDtlOyl7bGV0IHQ9ZS5uZXh0O2UubmV4dD12b2lkIDAsZS5mbGFncyY9LTksZT10fX1sZXQgZTtmb3IoO2tlOyl7bGV0IHQ9a2U7Zm9yKGtlPXZvaWQgMDt0Oyl7bGV0IG49dC5uZXh0O2lmKHQubmV4dD12b2lkIDAsdC5mbGFncyY9LTksdC5mbGFncyYxKXRyeXt0LnRyaWdnZXIoKX1jYXRjaCh0KXtlfHw9dH10PW59fWlmKGUpdGhyb3cgZX1mdW5jdGlvbiBQZShlKXtmb3IobGV0IHQ9ZS5kZXBzO3Q7dD10Lm5leHREZXApdC52ZXJzaW9uPS0xLHQucHJldkFjdGl2ZUxpbms9dC5kZXAuYWN0aXZlTGluayx0LmRlcC5hY3RpdmVMaW5rPXR9ZnVuY3Rpb24gRmUoZSl7bGV0IHQsbj1lLmRlcHNUYWlsLHI9bjtmb3IoO3I7KXtsZXQgZT1yLnByZXZEZXA7ci52ZXJzaW9uPT09LTE/KHI9PT1uJiYobj1lKSxSZShyKSx6ZShyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPWV9ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIEllKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcClpZih0LmRlcC52ZXJzaW9uIT09dC52ZXJzaW9ufHx0LmRlcC5jb21wdXRlZCYmKExlKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiBMZShlKXtpZihlLmZsYWdzJjQmJiEoZS5mbGFncyYxNil8fChlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09cWUpfHwoZS5nbG9iYWxWZXJzaW9uPXFlLCFlLmlzU1NSJiZlLmZsYWdzJjEyOCYmKCFlLmRlcHMmJiFlLl9kaXJ0eXx8IUllKGUpKSkpcmV0dXJuO2UuZmxhZ3N8PTI7bGV0IHQ9ZS5kZXAsbj16LHI9SGU7ej1lLEhlPSEwO3RyeXtQZShlKTtsZXQgbj1lLmZuKGUuX3ZhbHVlKTsodC52ZXJzaW9uPT09MHx8aihuLGUuX3ZhbHVlKSkmJihlLmZsYWdzfD0xMjgsZS5fdmFsdWU9bix0LnZlcnNpb24rKyl9Y2F0Y2goZSl7dGhyb3cgdC52ZXJzaW9uKyssZX1maW5hbGx5e3o9bixIZT1yLEZlKGUpLGUuZmxhZ3MmPS0zfX1mdW5jdGlvbiBSZShlLHQ9ITEpe2xldHtkZXA6bixwcmV2U3ViOnIsbmV4dFN1YjppfT1lO2lmKHImJihyLm5leHRTdWI9aSxlLnByZXZTdWI9dm9pZCAwKSxpJiYoaS5wcmV2U3ViPXIsZS5uZXh0U3ViPXZvaWQgMCksbi5zdWJzPT09ZSYmKG4uc3Vicz1yLCFyJiZuLmNvbXB1dGVkKSl7bi5jb21wdXRlZC5mbGFncyY9LTU7Zm9yKGxldCBlPW4uY29tcHV0ZWQuZGVwcztlO2U9ZS5uZXh0RGVwKVJlKGUsITApfSF0JiYhLS1uLnNjJiZuLm1hcCYmbi5tYXAuZGVsZXRlKG4ua2V5KX1mdW5jdGlvbiB6ZShlKXtsZXR7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWZ1bmN0aW9uIEJlKGUsdCl7ZS5lZmZlY3QgaW5zdGFuY2VvZiBEZSYmKGU9ZS5lZmZlY3QuZm4pO2xldCBuPW5ldyBEZShlKTt0JiZzKG4sdCk7dHJ5e24ucnVuKCl9Y2F0Y2goZSl7dGhyb3cgbi5zdG9wKCksZX1sZXQgcj1uLnJ1bi5iaW5kKG4pO3JldHVybiByLmVmZmVjdD1uLHJ9ZnVuY3Rpb24gVmUoZSl7ZS5lZmZlY3Quc3RvcCgpfXZhciBIZT0hMCxVZT1bXTtmdW5jdGlvbiBXZSgpe1VlLnB1c2goSGUpLEhlPSExfWZ1bmN0aW9uIEdlKCl7bGV0IGU9VWUucG9wKCk7SGU9ZT09PXZvaWQgMHx8ZX1mdW5jdGlvbiBLZShlKXtsZXR7Y2xlYW51cDp0fT1lO2lmKGUuY2xlYW51cD12b2lkIDAsdCl7bGV0IGU9ejt6PXZvaWQgMDt0cnl7dCgpfWZpbmFsbHl7ej1lfX19dmFyIHFlPTAsSmU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN1Yj1lLHRoaXMuZGVwPXQsdGhpcy52ZXJzaW9uPXQudmVyc2lvbix0aGlzLm5leHREZXA9dGhpcy5wcmV2RGVwPXRoaXMubmV4dFN1Yj10aGlzLnByZXZTdWI9dGhpcy5wcmV2QWN0aXZlTGluaz12b2lkIDB9fSxZZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXB1dGVkPWUsdGhpcy52ZXJzaW9uPTAsdGhpcy5hY3RpdmVMaW5rPXZvaWQgMCx0aGlzLnN1YnM9dm9pZCAwLHRoaXMubWFwPXZvaWQgMCx0aGlzLmtleT12b2lkIDAsdGhpcy5zYz0wLHRoaXMuX192X3NraXA9ITB9dHJhY2soZSl7aWYoIXp8fCFIZXx8ej09PXRoaXMuY29tcHV0ZWQpcmV0dXJuO2xldCB0PXRoaXMuYWN0aXZlTGluaztpZih0PT09dm9pZCAwfHx0LnN1YiE9PXopdD10aGlzLmFjdGl2ZUxpbms9bmV3IEplKHosdGhpcyksei5kZXBzPyh0LnByZXZEZXA9ei5kZXBzVGFpbCx6LmRlcHNUYWlsLm5leHREZXA9dCx6LmRlcHNUYWlsPXQpOnouZGVwcz16LmRlcHNUYWlsPXQsWGUodCk7ZWxzZSBpZih0LnZlcnNpb249PT0tMSYmKHQudmVyc2lvbj10aGlzLnZlcnNpb24sdC5uZXh0RGVwKSl7bGV0IGU9dC5uZXh0RGVwO2UucHJldkRlcD10LnByZXZEZXAsdC5wcmV2RGVwJiYodC5wcmV2RGVwLm5leHREZXA9ZSksdC5wcmV2RGVwPXouZGVwc1RhaWwsdC5uZXh0RGVwPXZvaWQgMCx6LmRlcHNUYWlsLm5leHREZXA9dCx6LmRlcHNUYWlsPXQsei5kZXBzPT09dCYmKHouZGVwcz1lKX1yZXR1cm4gdH10cmlnZ2VyKGUpe3RoaXMudmVyc2lvbisrLHFlKyssdGhpcy5ub3RpZnkoZSl9bm90aWZ5KGUpe01lKCk7dHJ5e2ZvcihsZXQgZT10aGlzLnN1YnM7ZTtlPWUucHJldlN1YillLnN1Yi5ub3RpZnkoKSYmZS5zdWIuZGVwLm5vdGlmeSgpfWZpbmFsbHl7TmUoKX19fTtmdW5jdGlvbiBYZShlKXtpZihlLmRlcC5zYysrLGUuc3ViLmZsYWdzJjQpe2xldCB0PWUuZGVwLmNvbXB1dGVkO2lmKHQmJiFlLmRlcC5zdWJzKXt0LmZsYWdzfD0yMDtmb3IobGV0IGU9dC5kZXBzO2U7ZT1lLm5leHREZXApWGUoZSl9bGV0IG49ZS5kZXAuc3VicztuIT09ZSYmKGUucHJldlN1Yj1uLG4mJihuLm5leHRTdWI9ZSkpLGUuZGVwLnN1YnM9ZX19dmFyIFplPW5ldyBXZWFrTWFwLFFlPVN5bWJvbChgYCksJGU9U3ltYm9sKGBgKSxldD1TeW1ib2woYGApO2Z1bmN0aW9uIEIoZSx0LG4pe2lmKEhlJiZ6KXtsZXQgdD1aZS5nZXQoZSk7dHx8WmUuc2V0KGUsdD1uZXcgTWFwKTtsZXQgcj10LmdldChuKTtyfHwodC5zZXQobixyPW5ldyBZZSksci5tYXA9dCxyLmtleT1uKSxyLnRyYWNrKCl9fWZ1bmN0aW9uIHR0KGUsdCxuLHIsaSxhKXtsZXQgbz1aZS5nZXQoZSk7aWYoIW8pe3FlKys7cmV0dXJufWxldCBzPWU9PntlJiZlLnRyaWdnZXIoKX07aWYoTWUoKSx0PT09YGNsZWFyYClvLmZvckVhY2gocyk7ZWxzZXtsZXQgaT1kKGUpLGE9aSYmVChuKTtpZihpJiZuPT09YGxlbmd0aGApe2xldCBlPU51bWJlcihyKTtvLmZvckVhY2goKHQsbik9Pnsobj09PWBsZW5ndGhgfHxuPT09ZXR8fCF2KG4pJiZuPj1lKSYmcyh0KX0pfWVsc2Ugc3dpdGNoKChuIT09dm9pZCAwfHxvLmhhcyh2b2lkIDApKSYmcyhvLmdldChuKSksYSYmcyhvLmdldChldCkpLHQpe2Nhc2VgYWRkYDppP2EmJnMoby5nZXQoYGxlbmd0aGApKToocyhvLmdldChRZSkpLGYoZSkmJnMoby5nZXQoJGUpKSk7YnJlYWs7Y2FzZWBkZWxldGVgOml8fChzKG8uZ2V0KFFlKSksZihlKSYmcyhvLmdldCgkZSkpKTticmVhaztjYXNlYHNldGA6ZihlKSYmcyhvLmdldChRZSkpfX1OZSgpfWZ1bmN0aW9uIG50KGUsdCl7bGV0IG49WmUuZ2V0KGUpO3JldHVybiBuJiZuLmdldCh0KX1mdW5jdGlvbiBydChlKXtsZXQgdD1WKGUpO3JldHVybiB0PT09ZT90OihCKHQsYGl0ZXJhdGVgLGV0KSxHdChlKT90OnQubWFwKEp0KSl9ZnVuY3Rpb24gaXQoZSl7cmV0dXJuIEIoZT1WKGUpLGBpdGVyYXRlYCxldCksZX1mdW5jdGlvbiBhdChlLHQpe3JldHVybiBXdChlKT9ZdChVdChlKT9KdCh0KTp0KTpKdCh0KX12YXIgb3Q9e19fcHJvdG9fXzpudWxsLFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHN0KHRoaXMsU3ltYm9sLml0ZXJhdG9yLGU9PmF0KHRoaXMsZSkpfSxjb25jYXQoLi4uZSl7cmV0dXJuIHJ0KHRoaXMpLmNvbmNhdCguLi5lLm1hcChlPT5kKGUpP3J0KGUpOmUpKX0sZW50cmllcygpe3JldHVybiBzdCh0aGlzLGBlbnRyaWVzYCxlPT4oZVsxXT1hdCh0aGlzLGVbMV0pLGUpKX0sZXZlcnkoZSx0KXtyZXR1cm4gbHQodGhpcyxgZXZlcnlgLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZmlsdGVyKGUsdCl7cmV0dXJuIGx0KHRoaXMsYGZpbHRlcmAsZSx0LGU9PmUubWFwKGU9PmF0KHRoaXMsZSkpLGFyZ3VtZW50cyl9LGZpbmQoZSx0KXtyZXR1cm4gbHQodGhpcyxgZmluZGAsZSx0LGU9PmF0KHRoaXMsZSksYXJndW1lbnRzKX0sZmluZEluZGV4KGUsdCl7cmV0dXJuIGx0KHRoaXMsYGZpbmRJbmRleGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaW5kTGFzdChlLHQpe3JldHVybiBsdCh0aGlzLGBmaW5kTGFzdGAsZSx0LGU9PmF0KHRoaXMsZSksYXJndW1lbnRzKX0sZmluZExhc3RJbmRleChlLHQpe3JldHVybiBsdCh0aGlzLGBmaW5kTGFzdEluZGV4YCxlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGZvckVhY2goZSx0KXtyZXR1cm4gbHQodGhpcyxgZm9yRWFjaGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gZHQodGhpcyxgaW5jbHVkZXNgLGUpfSxpbmRleE9mKC4uLmUpe3JldHVybiBkdCh0aGlzLGBpbmRleE9mYCxlKX0sam9pbihlKXtyZXR1cm4gcnQodGhpcykuam9pbihlKX0sbGFzdEluZGV4T2YoLi4uZSl7cmV0dXJuIGR0KHRoaXMsYGxhc3RJbmRleE9mYCxlKX0sbWFwKGUsdCl7cmV0dXJuIGx0KHRoaXMsYG1hcGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxwb3AoKXtyZXR1cm4gZnQodGhpcyxgcG9wYCl9LHB1c2goLi4uZSl7cmV0dXJuIGZ0KHRoaXMsYHB1c2hgLGUpfSxyZWR1Y2UoZSwuLi50KXtyZXR1cm4gdXQodGhpcyxgcmVkdWNlYCxlLHQpfSxyZWR1Y2VSaWdodChlLC4uLnQpe3JldHVybiB1dCh0aGlzLGByZWR1Y2VSaWdodGAsZSx0KX0sc2hpZnQoKXtyZXR1cm4gZnQodGhpcyxgc2hpZnRgKX0sc29tZShlLHQpe3JldHVybiBsdCh0aGlzLGBzb21lYCxlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHNwbGljZSguLi5lKXtyZXR1cm4gZnQodGhpcyxgc3BsaWNlYCxlKX0sdG9SZXZlcnNlZCgpe3JldHVybiBydCh0aGlzKS50b1JldmVyc2VkKCl9LHRvU29ydGVkKGUpe3JldHVybiBydCh0aGlzKS50b1NvcnRlZChlKX0sdG9TcGxpY2VkKC4uLmUpe3JldHVybiBydCh0aGlzKS50b1NwbGljZWQoLi4uZSl9LHVuc2hpZnQoLi4uZSl7cmV0dXJuIGZ0KHRoaXMsYHVuc2hpZnRgLGUpfSx2YWx1ZXMoKXtyZXR1cm4gc3QodGhpcyxgdmFsdWVzYCxlPT5hdCh0aGlzLGUpKX19O2Z1bmN0aW9uIHN0KGUsdCxuKXtsZXQgcj1pdChlKSxpPXJbdF0oKTtyZXR1cm4gciE9PWUmJiFHdChlKSYmKGkuX25leHQ9aS5uZXh0LGkubmV4dD0oKT0+e2xldCBlPWkuX25leHQoKTtyZXR1cm4gZS5kb25lfHwoZS52YWx1ZT1uKGUudmFsdWUpKSxlfSksaX12YXIgY3Q9QXJyYXkucHJvdG90eXBlO2Z1bmN0aW9uIGx0KGUsdCxuLHIsaSxhKXtsZXQgbz1pdChlKSxzPW8hPT1lJiYhR3QoZSksYz1vW3RdO2lmKGMhPT1jdFt0XSl7bGV0IHQ9Yy5hcHBseShlLGEpO3JldHVybiBzP0p0KHQpOnR9bGV0IGw9bjtvIT09ZSYmKHM/bD1mdW5jdGlvbih0LHIpe3JldHVybiBuLmNhbGwodGhpcyxhdChlLHQpLHIsZSl9Om4ubGVuZ3RoPjImJihsPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHQscixlKX0pKTtsZXQgdT1jLmNhbGwobyxsLHIpO3JldHVybiBzJiZpP2kodSk6dX1mdW5jdGlvbiB1dChlLHQsbixyKXtsZXQgaT1pdChlKSxhPWkhPT1lJiYhR3QoZSksbz1uLHM9ITE7aSE9PWUmJihhPyhzPXIubGVuZ3RoPT09MCxvPWZ1bmN0aW9uKHQscixpKXtyZXR1cm4gcyYmKHM9ITEsdD1hdChlLHQpKSxuLmNhbGwodGhpcyx0LGF0KGUsciksaSxlKX0pOm4ubGVuZ3RoPjMmJihvPWZ1bmN0aW9uKHQscixpKXtyZXR1cm4gbi5jYWxsKHRoaXMsdCxyLGksZSl9KSk7bGV0IGM9aVt0XShvLC4uLnIpO3JldHVybiBzP2F0KGUsYyk6Y31mdW5jdGlvbiBkdChlLHQsbil7bGV0IHI9VihlKTtCKHIsYGl0ZXJhdGVgLGV0KTtsZXQgaT1yW3RdKC4uLm4pO3JldHVybihpPT09LTF8fGk9PT0hMSkmJkt0KG5bMF0pPyhuWzBdPVYoblswXSksclt0XSguLi5uKSk6aX1mdW5jdGlvbiBmdChlLHQsbj1bXSl7V2UoKSxNZSgpO2xldCByPVYoZSlbdF0uYXBwbHkoZSxuKTtyZXR1cm4gTmUoKSxHZSgpLHJ9dmFyIHB0PWUoYF9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZWApLG10PW5ldyBTZXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKS5maWx0ZXIoZT0+ZSE9PWBhcmd1bWVudHNgJiZlIT09YGNhbGxlcmApLm1hcChlPT5TeW1ib2xbZV0pLmZpbHRlcih2KSk7ZnVuY3Rpb24gaHQoZSl7dihlKXx8KGU9U3RyaW5nKGUpKTtsZXQgdD1WKHRoaXMpO3JldHVybiBCKHQsYGhhc2AsZSksdC5oYXNPd25Qcm9wZXJ0eShlKX12YXIgZ3Q9Y2xhc3N7Y29uc3RydWN0b3IoZT0hMSx0PSExKXt0aGlzLl9pc1JlYWRvbmx5PWUsdGhpcy5faXNTaGFsbG93PXR9Z2V0KGUsdCxuKXtpZih0PT09YF9fdl9za2lwYClyZXR1cm4gZS5fX3Zfc2tpcDtsZXQgcj10aGlzLl9pc1JlYWRvbmx5LGk9dGhpcy5faXNTaGFsbG93O2lmKHQ9PT1gX192X2lzUmVhY3RpdmVgKXJldHVybiFyO2lmKHQ9PT1gX192X2lzUmVhZG9ubHlgKXJldHVybiByO2lmKHQ9PT1gX192X2lzU2hhbGxvd2ApcmV0dXJuIGk7aWYodD09PWBfX3ZfcmF3YClyZXR1cm4gbj09PShyP2k/SXQ6RnQ6aT9QdDpOdCkuZ2V0KGUpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik/ZTp2b2lkIDA7bGV0IGE9ZChlKTtpZighcil7bGV0IGU7aWYoYSYmKGU9b3RbdF0pKXJldHVybiBlO2lmKHQ9PT1gaGFzT3duUHJvcGVydHlgKXJldHVybiBodH1sZXQgbz1SZWZsZWN0LmdldChlLHQsSChlKT9lOm4pO2lmKCh2KHQpP210Lmhhcyh0KTpwdCh0KSl8fChyfHxCKGUsYGdldGAsdCksaSkpcmV0dXJuIG87aWYoSChvKSl7bGV0IGU9YSYmVCh0KT9vOm8udmFsdWU7cmV0dXJuIHImJnkoZSk/QnQoZSk6ZX1yZXR1cm4geShvKT9yP0J0KG8pOlJ0KG8pOm99fSxfdD1jbGFzcyBleHRlbmRzIGd0e2NvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKCExLGUpfXNldChlLHQsbixyKXtsZXQgaT1lW3RdLGE9ZChlKSYmVCh0KTtpZighdGhpcy5faXNTaGFsbG93KXtsZXQgZT1XdChpKTtpZighR3QobikmJiFXdChuKSYmKGk9VihpKSxuPVYobikpLCFhJiZIKGkpJiYhSChuKSlyZXR1cm4gZXx8KGkudmFsdWU9biksITB9bGV0IG89YT9OdW1iZXIodCk8ZS5sZW5ndGg6dShlLHQpLHM9UmVmbGVjdC5zZXQoZSx0LG4sSChlKT9lOnIpO3JldHVybiBlPT09VihyKSYmcyYmKG8/aihuLGkpJiZ0dChlLGBzZXRgLHQsbixpKTp0dChlLGBhZGRgLHQsbikpLHN9ZGVsZXRlUHJvcGVydHkoZSx0KXtsZXQgbj11KGUsdCkscj1lW3RdLGk9UmVmbGVjdC5kZWxldGVQcm9wZXJ0eShlLHQpO3JldHVybiBpJiZuJiZ0dChlLGBkZWxldGVgLHQsdm9pZCAwLHIpLGl9aGFzKGUsdCl7bGV0IG49UmVmbGVjdC5oYXMoZSx0KTtyZXR1cm4oIXYodCl8fCFtdC5oYXModCkpJiZCKGUsYGhhc2AsdCksbn1vd25LZXlzKGUpe3JldHVybiBCKGUsYGl0ZXJhdGVgLGQoZSk/YGxlbmd0aGA6UWUpLFJlZmxlY3Qub3duS2V5cyhlKX19LHZ0PWNsYXNzIGV4dGVuZHMgZ3R7Y29uc3RydWN0b3IoZT0hMSl7c3VwZXIoITAsZSl9c2V0KGUsdCl7cmV0dXJuITB9ZGVsZXRlUHJvcGVydHkoZSx0KXtyZXR1cm4hMH19LHl0PW5ldyBfdCxidD1uZXcgdnQseHQ9bmV3IF90KCEwKSxTdD1uZXcgdnQoITApLEN0PWU9PmUsd3Q9ZT0+UmVmbGVjdC5nZXRQcm90b3R5cGVPZihlKTtmdW5jdGlvbiBUdChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2xldCBpPXRoaXMuX192X3JhdyxhPVYoaSksbz1mKGEpLGM9ZT09PWBlbnRyaWVzYHx8ZT09PVN5bWJvbC5pdGVyYXRvciYmbyxsPWU9PT1ga2V5c2AmJm8sdT1pW2VdKC4uLnIpLGQ9bj9DdDp0P1l0Okp0O3JldHVybiF0JiZCKGEsYGl0ZXJhdGVgLGw/JGU6UWUpLHMoT2JqZWN0LmNyZWF0ZSh1KSx7bmV4dCgpe2xldHt2YWx1ZTplLGRvbmU6dH09dS5uZXh0KCk7cmV0dXJuIHQ/e3ZhbHVlOmUsZG9uZTp0fTp7dmFsdWU6Yz9bZChlWzBdKSxkKGVbMV0pXTpkKGUpLGRvbmU6dH19fSl9fWZ1bmN0aW9uIEV0KGUpe3JldHVybiBmdW5jdGlvbiguLi50KXtyZXR1cm4gZT09PWBkZWxldGVgPyExOmU9PT1gY2xlYXJgP3ZvaWQgMDp0aGlzfX1mdW5jdGlvbiBEdChlLHQpe2xldCBuPXtnZXQobil7bGV0IHI9dGhpcy5fX3ZfcmF3LGk9VihyKSxhPVYobik7ZXx8KGoobixhKSYmQihpLGBnZXRgLG4pLEIoaSxgZ2V0YCxhKSk7bGV0e2hhczpvfT13dChpKSxzPXQ/Q3Q6ZT9ZdDpKdDtpZihvLmNhbGwoaSxuKSlyZXR1cm4gcyhyLmdldChuKSk7aWYoby5jYWxsKGksYSkpcmV0dXJuIHMoci5nZXQoYSkpO3IhPT1pJiZyLmdldChuKX0sZ2V0IHNpemUoKXtsZXQgdD10aGlzLl9fdl9yYXc7cmV0dXJuIWUmJkIoVih0KSxgaXRlcmF0ZWAsUWUpLHQuc2l6ZX0saGFzKHQpe2xldCBuPXRoaXMuX192X3JhdyxyPVYobiksaT1WKHQpO3JldHVybiBlfHwoaih0LGkpJiZCKHIsYGhhc2AsdCksQihyLGBoYXNgLGkpKSx0PT09aT9uLmhhcyh0KTpuLmhhcyh0KXx8bi5oYXMoaSl9LGZvckVhY2gobixyKXtsZXQgaT10aGlzLGE9aS5fX3ZfcmF3LG89VihhKSxzPXQ/Q3Q6ZT9ZdDpKdDtyZXR1cm4hZSYmQihvLGBpdGVyYXRlYCxRZSksYS5mb3JFYWNoKChlLHQpPT5uLmNhbGwocixzKGUpLHModCksaSkpfX07cmV0dXJuIHMobixlP3thZGQ6RXQoYGFkZGApLHNldDpFdChgc2V0YCksZGVsZXRlOkV0KGBkZWxldGVgKSxjbGVhcjpFdChgY2xlYXJgKX06e2FkZChlKXtsZXQgbj1WKHRoaXMpLHI9d3QobiksaT1WKGUpLGE9IXQmJiFHdChlKSYmIVd0KGUpP2k6ZTtyZXR1cm4gci5oYXMuY2FsbChuLGEpfHxqKGUsYSkmJnIuaGFzLmNhbGwobixlKXx8aihpLGEpJiZyLmhhcy5jYWxsKG4saSl8fChuLmFkZChhKSx0dChuLGBhZGRgLGEsYSkpLHRoaXN9LHNldChlLG4peyF0JiYhR3QobikmJiFXdChuKSYmKG49VihuKSk7bGV0IHI9Vih0aGlzKSx7aGFzOmksZ2V0OmF9PXd0KHIpLG89aS5jYWxsKHIsZSk7b3x8PShlPVYoZSksaS5jYWxsKHIsZSkpO2xldCBzPWEuY2FsbChyLGUpO3JldHVybiByLnNldChlLG4pLG8/aihuLHMpJiZ0dChyLGBzZXRgLGUsbixzKTp0dChyLGBhZGRgLGUsbiksdGhpc30sZGVsZXRlKGUpe2xldCB0PVYodGhpcykse2hhczpuLGdldDpyfT13dCh0KSxpPW4uY2FsbCh0LGUpO2l8fD0oZT1WKGUpLG4uY2FsbCh0LGUpKTtsZXQgYT1yP3IuY2FsbCh0LGUpOnZvaWQgMCxvPXQuZGVsZXRlKGUpO3JldHVybiBpJiZ0dCh0LGBkZWxldGVgLGUsdm9pZCAwLGEpLG99LGNsZWFyKCl7bGV0IGU9Vih0aGlzKSx0PWUuc2l6ZSE9PTAsbj1lLmNsZWFyKCk7cmV0dXJuIHQmJnR0KGUsYGNsZWFyYCx2b2lkIDAsdm9pZCAwLHZvaWQgMCksbn19KSxbYGtleXNgLGB2YWx1ZXNgLGBlbnRyaWVzYCxTeW1ib2wuaXRlcmF0b3JdLmZvckVhY2gocj0+e25bcl09VHQocixlLHQpfSksbn1mdW5jdGlvbiBPdChlLHQpe2xldCBuPUR0KGUsdCk7cmV0dXJuKHQscixpKT0+cj09PWBfX3ZfaXNSZWFjdGl2ZWA/IWU6cj09PWBfX3ZfaXNSZWFkb25seWA/ZTpyPT09YF9fdl9yYXdgP3Q6UmVmbGVjdC5nZXQodShuLHIpJiZyIGluIHQ/bjp0LHIsaSl9dmFyIGt0PXtnZXQ6T3QoITEsITEpfSxBdD17Z2V0Ok90KCExLCEwKX0sanQ9e2dldDpPdCghMCwhMSl9LE10PXtnZXQ6T3QoITAsITApfSxOdD1uZXcgV2Vha01hcCxQdD1uZXcgV2Vha01hcCxGdD1uZXcgV2Vha01hcCxJdD1uZXcgV2Vha01hcDtmdW5jdGlvbiBMdChlKXtzd2l0Y2goZSl7Y2FzZWBPYmplY3RgOmNhc2VgQXJyYXlgOnJldHVybiAxO2Nhc2VgTWFwYDpjYXNlYFNldGA6Y2FzZWBXZWFrTWFwYDpjYXNlYFdlYWtTZXRgOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIFJ0KGUpe3JldHVybiBXdChlKT9lOkh0KGUsITEseXQsa3QsTnQpfWZ1bmN0aW9uIHp0KGUpe3JldHVybiBIdChlLCExLHh0LEF0LFB0KX1mdW5jdGlvbiBCdChlKXtyZXR1cm4gSHQoZSwhMCxidCxqdCxGdCl9ZnVuY3Rpb24gVnQoZSl7cmV0dXJuIEh0KGUsITAsU3QsTXQsSXQpfWZ1bmN0aW9uIEh0KGUsdCxuLHIsaSl7aWYoIXkoZSl8fGUuX192X3JhdyYmISh0JiZlLl9fdl9pc1JlYWN0aXZlKXx8ZS5fX3Zfc2tpcHx8IU9iamVjdC5pc0V4dGVuc2libGUoZSkpcmV0dXJuIGU7bGV0IGE9aS5nZXQoZSk7aWYoYSlyZXR1cm4gYTtsZXQgbz1MdChDKGUpKTtpZihvPT09MClyZXR1cm4gZTtsZXQgcz1uZXcgUHJveHkoZSxvPT09Mj9yOm4pO3JldHVybiBpLnNldChlLHMpLHN9ZnVuY3Rpb24gVXQoZSl7cmV0dXJuIFd0KGUpP1V0KGUuX192X3Jhdyk6ISEoZSYmZS5fX3ZfaXNSZWFjdGl2ZSl9ZnVuY3Rpb24gV3QoZSl7cmV0dXJuISEoZSYmZS5fX3ZfaXNSZWFkb25seSl9ZnVuY3Rpb24gR3QoZSl7cmV0dXJuISEoZSYmZS5fX3ZfaXNTaGFsbG93KX1mdW5jdGlvbiBLdChlKXtyZXR1cm4gZT8hIWUuX192X3JhdzohMX1mdW5jdGlvbiBWKGUpe2xldCB0PWUmJmUuX192X3JhdztyZXR1cm4gdD9WKHQpOmV9ZnVuY3Rpb24gcXQoZSl7cmV0dXJuIXUoZSxgX192X3NraXBgKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmTihlLGBfX3Zfc2tpcGAsITApLGV9dmFyIEp0PWU9PnkoZSk/UnQoZSk6ZSxZdD1lPT55KGUpP0J0KGUpOmU7ZnVuY3Rpb24gSChlKXtyZXR1cm4gZT9lLl9fdl9pc1JlZj09PSEwOiExfWZ1bmN0aW9uIFh0KGUpe3JldHVybiBRdChlLCExKX1mdW5jdGlvbiBadChlKXtyZXR1cm4gUXQoZSwhMCl9ZnVuY3Rpb24gUXQoZSx0KXtyZXR1cm4gSChlKT9lOm5ldyAkdChlLHQpfXZhciAkdD1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGVwPW5ldyBZZSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl9fdl9pc1NoYWxsb3c9ITEsdGhpcy5fcmF3VmFsdWU9dD9lOlYoZSksdGhpcy5fdmFsdWU9dD9lOkp0KGUpLHRoaXMuX192X2lzU2hhbGxvdz10fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLmRlcC50cmFjaygpLHRoaXMuX3ZhbHVlfXNldCB2YWx1ZShlKXtsZXQgdD10aGlzLl9yYXdWYWx1ZSxuPXRoaXMuX192X2lzU2hhbGxvd3x8R3QoZSl8fFd0KGUpO2U9bj9lOlYoZSksaihlLHQpJiYodGhpcy5fcmF3VmFsdWU9ZSx0aGlzLl92YWx1ZT1uP2U6SnQoZSksdGhpcy5kZXAudHJpZ2dlcigpKX19O2Z1bmN0aW9uIGVuKGUpe2UuZGVwJiZlLmRlcC50cmlnZ2VyKCl9ZnVuY3Rpb24gdG4oZSl7cmV0dXJuIEgoZSk/ZS52YWx1ZTplfWZ1bmN0aW9uIG5uKGUpe3JldHVybiBnKGUpP2UoKTp0bihlKX12YXIgcm49e2dldDooZSx0LG4pPT50PT09YF9fdl9yYXdgP2U6dG4oUmVmbGVjdC5nZXQoZSx0LG4pKSxzZXQ6KGUsdCxuLHIpPT57bGV0IGk9ZVt0XTtyZXR1cm4gSChpKSYmIUgobik/KGkudmFsdWU9biwhMCk6UmVmbGVjdC5zZXQoZSx0LG4scil9fTtmdW5jdGlvbiBhbihlKXtyZXR1cm4gVXQoZSk/ZTpuZXcgUHJveHkoZSxybil9dmFyIG9uPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX192X2lzUmVmPSEwLHRoaXMuX3ZhbHVlPXZvaWQgMDtsZXQgdD10aGlzLmRlcD1uZXcgWWUse2dldDpuLHNldDpyfT1lKHQudHJhY2suYmluZCh0KSx0LnRyaWdnZXIuYmluZCh0KSk7dGhpcy5fZ2V0PW4sdGhpcy5fc2V0PXJ9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlPXRoaXMuX2dldCgpfXNldCB2YWx1ZShlKXt0aGlzLl9zZXQoZSl9fTtmdW5jdGlvbiBzbihlKXtyZXR1cm4gbmV3IG9uKGUpfWZ1bmN0aW9uIGNuKGUpe2xldCB0PWQoZSk/QXJyYXkoZS5sZW5ndGgpOnt9O2ZvcihsZXQgbiBpbiBlKXRbbl09Zm4oZSxuKTtyZXR1cm4gdH12YXIgbG49Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX29iamVjdD1lLHRoaXMuX2RlZmF1bHRWYWx1ZT1uLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9rZXk9dih0KT90OlN0cmluZyh0KSx0aGlzLl9yYXc9VihlKTtsZXQgcj0hMCxpPWU7aWYoIWQoZSl8fHYodGhpcy5fa2V5KXx8IVQodGhpcy5fa2V5KSlkbyByPSFLdChpKXx8R3QoaSk7d2hpbGUociYmKGk9aS5fX3ZfcmF3KSk7dGhpcy5fc2hhbGxvdz1yfWdldCB2YWx1ZSgpe2xldCBlPXRoaXMuX29iamVjdFt0aGlzLl9rZXldO3JldHVybiB0aGlzLl9zaGFsbG93JiYoZT10bihlKSksdGhpcy5fdmFsdWU9ZT09PXZvaWQgMD90aGlzLl9kZWZhdWx0VmFsdWU6ZX1zZXQgdmFsdWUoZSl7aWYodGhpcy5fc2hhbGxvdyYmSCh0aGlzLl9yYXdbdGhpcy5fa2V5XSkpe2xldCB0PXRoaXMuX29iamVjdFt0aGlzLl9rZXldO2lmKEgodCkpe3QudmFsdWU9ZTtyZXR1cm59fXRoaXMuX29iamVjdFt0aGlzLl9rZXldPWV9Z2V0IGRlcCgpe3JldHVybiBudCh0aGlzLl9yYXcsdGhpcy5fa2V5KX19LHVuPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2dldHRlcj1lLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19O2Z1bmN0aW9uIGRuKGUsdCxuKXtyZXR1cm4gSChlKT9lOmcoZSk/bmV3IHVuKGUpOnkoZSkmJmFyZ3VtZW50cy5sZW5ndGg+MT9mbihlLHQsbik6WHQoZSl9ZnVuY3Rpb24gZm4oZSx0LG4pe3JldHVybiBuZXcgbG4oZSx0LG4pfXZhciBwbj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5mbj1lLHRoaXMuc2V0dGVyPXQsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuZGVwPW5ldyBZZSh0aGlzKSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9MTYsdGhpcy5nbG9iYWxWZXJzaW9uPXFlLTEsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmVmZmVjdD10aGlzLHRoaXMuX192X2lzUmVhZG9ubHk9IXQsdGhpcy5pc1NTUj1ufW5vdGlmeSgpe2lmKHRoaXMuZmxhZ3N8PTE2LCEodGhpcy5mbGFncyY4KSYmeiE9PXRoaXMpcmV0dXJuIGplKHRoaXMsITApLCEwfWdldCB2YWx1ZSgpe2xldCBlPXRoaXMuZGVwLnRyYWNrKCk7cmV0dXJuIExlKHRoaXMpLGUmJihlLnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcihlKX19O2Z1bmN0aW9uIG1uKGUsdCxuPSExKXtsZXQgcixpO3JldHVybiBnKGUpP3I9ZToocj1lLmdldCxpPWUuc2V0KSxuZXcgcG4ocixpLG4pfXZhciBobj17R0VUOmBnZXRgLEhBUzpgaGFzYCxJVEVSQVRFOmBpdGVyYXRlYH0sZ249e1NFVDpgc2V0YCxBREQ6YGFkZGAsREVMRVRFOmBkZWxldGVgLENMRUFSOmBjbGVhcmB9LF9uPXt9LHZuPW5ldyBXZWFrTWFwLHluPXZvaWQgMDtmdW5jdGlvbiBibigpe3JldHVybiB5bn1mdW5jdGlvbiB4bihlLHQ9ITEsbj15bil7aWYobil7bGV0IHQ9dm4uZ2V0KG4pO3R8fHZuLnNldChuLHQ9W10pLHQucHVzaChlKX19ZnVuY3Rpb24gU24oZSxuLGk9dCl7bGV0e2ltbWVkaWF0ZTphLGRlZXA6byxvbmNlOnMsc2NoZWR1bGVyOmwsYXVnbWVudEpvYjp1LGNhbGw6Zn09aSxwPWU9Pm8/ZTpHdChlKXx8bz09PSExfHxvPT09MD9DbihlLDEpOkNuKGUpLG0saCxfLHYseT0hMSxiPSExO2lmKEgoZSk/KGg9KCk9PmUudmFsdWUseT1HdChlKSk6VXQoZSk/KGg9KCk9PnAoZSkseT0hMCk6ZChlKT8oYj0hMCx5PWUuc29tZShlPT5VdChlKXx8R3QoZSkpLGg9KCk9PmUubWFwKGU9PntpZihIKGUpKXJldHVybiBlLnZhbHVlO2lmKFV0KGUpKXJldHVybiBwKGUpO2lmKGcoZSkpcmV0dXJuIGY/ZihlLDIpOmUoKX0pKTpoPWcoZSk/bj9mPygpPT5mKGUsMik6ZTooKT0+e2lmKF8pe1dlKCk7dHJ5e18oKX1maW5hbGx5e0dlKCl9fWxldCB0PXluO3luPW07dHJ5e3JldHVybiBmP2YoZSwzLFt2XSk6ZSh2KX1maW5hbGx5e3luPXR9fTpyLG4mJm8pe2xldCBlPWgsdD1vPT09ITA/MS8wOm87aD0oKT0+Q24oZSgpLHQpfWxldCB4PXdlKCksUz0oKT0+e20uc3RvcCgpLHgmJnguYWN0aXZlJiZjKHguZWZmZWN0cyxtKX07aWYocyYmbil7bGV0IGU9bjtuPSguLi50KT0+e2xldCBuPWUoLi4udCk7cmV0dXJuIFMoKSxufX1sZXQgQz1iP0FycmF5KGUubGVuZ3RoKS5maWxsKF9uKTpfbix3PWU9PntpZighKCEobS5mbGFncyYxKXx8IW0uZGlydHkmJiFlKSl7aWYobil7bGV0IHQ9bS5ydW4oKTtpZihlfHxvfHx5fHwoYj90LnNvbWUoKGUsdCk9PmooZSxDW3RdKSk6aih0LEMpKSl7XyYmXygpO2xldCBlPXluO3luPW07dHJ5e2xldCBlPVt0LEM9PT1fbj92b2lkIDA6YiYmQ1swXT09PV9uP1tdOkMsdl07Qz10LGY/ZihuLDMsZSk6biguLi5lKX1maW5hbGx5e3luPWV9fX1lbHNlIG0ucnVuKCl9fTtyZXR1cm4gdSYmdSh3KSxtPW5ldyBEZShoKSxtLnNjaGVkdWxlcj1sPygpPT5sKHcsITEpOncsdj1lPT54bihlLCExLG0pLF89bS5vblN0b3A9KCk9PntsZXQgZT12bi5nZXQobSk7aWYoZSl7aWYoZilmKGUsNCk7ZWxzZSBmb3IobGV0IHQgb2YgZSl0KCk7dm4uZGVsZXRlKG0pfX0sbj9hP3coITApOkM9bS5ydW4oKTpsP2wody5iaW5kKG51bGwsITApLCEwKTptLnJ1bigpLFMucGF1c2U9bS5wYXVzZS5iaW5kKG0pLFMucmVzdW1lPW0ucmVzdW1lLmJpbmQobSksUy5zdG9wPVMsU31mdW5jdGlvbiBDbihlLHQ9MS8wLG4pe2lmKHQ8PTB8fCF5KGUpfHxlLl9fdl9za2lwfHwobnx8PW5ldyBNYXAsKG4uZ2V0KGUpfHwwKT49dCkpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0sSChlKSlDbihlLnZhbHVlLHQsbik7ZWxzZSBpZihkKGUpKWZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKUNuKGVbcl0sdCxuKTtlbHNlIGlmKHAoZSl8fGYoZSkpZS5mb3JFYWNoKGU9PntDbihlLHQsbil9KTtlbHNlIGlmKHcoZSkpe2ZvcihsZXQgciBpbiBlKUNuKGVbcl0sdCxuKTtmb3IobGV0IHIgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSlPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmQ24oZVtyXSx0LG4pfXJldHVybiBlfXZhciB3bj1bXTtmdW5jdGlvbiBUbihlKXt3bi5wdXNoKGUpfWZ1bmN0aW9uIEVuKCl7d24ucG9wKCl9ZnVuY3Rpb24gRG4oZSx0KXt9dmFyIE9uPXtTRVRVUF9GVU5DVElPTjowLDA6YFNFVFVQX0ZVTkNUSU9OYCxSRU5ERVJfRlVOQ1RJT046MSwxOmBSRU5ERVJfRlVOQ1RJT05gLE5BVElWRV9FVkVOVF9IQU5ETEVSOjUsNTpgTkFUSVZFX0VWRU5UX0hBTkRMRVJgLENPTVBPTkVOVF9FVkVOVF9IQU5ETEVSOjYsNjpgQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVJgLFZOT0RFX0hPT0s6Nyw3OmBWTk9ERV9IT09LYCxESVJFQ1RJVkVfSE9PSzo4LDg6YERJUkVDVElWRV9IT09LYCxUUkFOU0lUSU9OX0hPT0s6OSw5OmBUUkFOU0lUSU9OX0hPT0tgLEFQUF9FUlJPUl9IQU5ETEVSOjEwLDEwOmBBUFBfRVJST1JfSEFORExFUmAsQVBQX1dBUk5fSEFORExFUjoxMSwxMTpgQVBQX1dBUk5fSEFORExFUmAsRlVOQ1RJT05fUkVGOjEyLDEyOmBGVU5DVElPTl9SRUZgLEFTWU5DX0NPTVBPTkVOVF9MT0FERVI6MTMsMTM6YEFTWU5DX0NPTVBPTkVOVF9MT0FERVJgLFNDSEVEVUxFUjoxNCwxNDpgU0NIRURVTEVSYCxDT01QT05FTlRfVVBEQVRFOjE1LDE1OmBDT01QT05FTlRfVVBEQVRFYCxBUFBfVU5NT1VOVF9DTEVBTlVQOjE2LDE2OmBBUFBfVU5NT1VOVF9DTEVBTlVQYH0sa249e3NwOmBzZXJ2ZXJQcmVmZXRjaCBob29rYCxiYzpgYmVmb3JlQ3JlYXRlIGhvb2tgLGM6YGNyZWF0ZWQgaG9va2AsYm06YGJlZm9yZU1vdW50IGhvb2tgLG06YG1vdW50ZWQgaG9va2AsYnU6YGJlZm9yZVVwZGF0ZSBob29rYCx1OmB1cGRhdGVkYCxidW06YGJlZm9yZVVubW91bnQgaG9va2AsdW06YHVubW91bnRlZCBob29rYCxhOmBhY3RpdmF0ZWQgaG9va2AsZGE6YGRlYWN0aXZhdGVkIGhvb2tgLGVjOmBlcnJvckNhcHR1cmVkIGhvb2tgLHJ0YzpgcmVuZGVyVHJhY2tlZCBob29rYCxydGc6YHJlbmRlclRyaWdnZXJlZCBob29rYCwwOmBzZXR1cCBmdW5jdGlvbmAsMTpgcmVuZGVyIGZ1bmN0aW9uYCwyOmB3YXRjaGVyIGdldHRlcmAsMzpgd2F0Y2hlciBjYWxsYmFja2AsNDpgd2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uYCw1OmBuYXRpdmUgZXZlbnQgaGFuZGxlcmAsNjpgY29tcG9uZW50IGV2ZW50IGhhbmRsZXJgLDc6YHZub2RlIGhvb2tgLDg6YGRpcmVjdGl2ZSBob29rYCw5OmB0cmFuc2l0aW9uIGhvb2tgLDEwOmBhcHAgZXJyb3JIYW5kbGVyYCwxMTpgYXBwIHdhcm5IYW5kbGVyYCwxMjpgcmVmIGZ1bmN0aW9uYCwxMzpgYXN5bmMgY29tcG9uZW50IGxvYWRlcmAsMTQ6YHNjaGVkdWxlciBmbHVzaGAsMTU6YGNvbXBvbmVudCB1cGRhdGVgLDE2OmBhcHAgdW5tb3VudCBjbGVhbnVwIGZ1bmN0aW9uYH07ZnVuY3Rpb24gQW4oZSx0LG4scil7dHJ5e3JldHVybiByP2UoLi4ucik6ZSgpfWNhdGNoKGUpe01uKGUsdCxuKX19ZnVuY3Rpb24gam4oZSx0LG4scil7aWYoZyhlKSl7bGV0IGk9QW4oZSx0LG4scik7cmV0dXJuIGkmJmIoaSkmJmkuY2F0Y2goZT0+e01uKGUsdCxuKX0pLGl9aWYoZChlKSl7bGV0IGk9W107Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspaS5wdXNoKGpuKGVbYV0sdCxuLHIpKTtyZXR1cm4gaX19ZnVuY3Rpb24gTW4oZSxuLHIsaT0hMCl7bGV0IGE9bj9uLnZub2RlOm51bGwse2Vycm9ySGFuZGxlcjpvLHRocm93VW5oYW5kbGVkRXJyb3JJblByb2R1Y3Rpb246c309biYmbi5hcHBDb250ZXh0LmNvbmZpZ3x8dDtpZihuKXtsZXQgdD1uLnBhcmVudCxpPW4ucHJveHksYT1gaHR0cHM6Ly92dWVqcy5vcmcvZXJyb3ItcmVmZXJlbmNlLyNydW50aW1lLSR7cn1gO2Zvcig7dDspe2xldCBuPXQuZWM7aWYobil7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XShlLGksYSk9PT0hMSlyZXR1cm59dD10LnBhcmVudH1pZihvKXtXZSgpLEFuKG8sbnVsbCwxMCxbZSxpLGFdKSxHZSgpO3JldHVybn19Tm4oZSxyLGEsaSxzKX1mdW5jdGlvbiBObihlLHQsbixyPSEwLGk9ITEpe2lmKGkpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfXZhciBQbj1bXSxGbj0tMSxJbj1bXSxMbj1udWxsLFJuPTAsem49UHJvbWlzZS5yZXNvbHZlKCksQm49bnVsbDtmdW5jdGlvbiBWbihlKXtsZXQgdD1Cbnx8em47cmV0dXJuIGU/dC50aGVuKHRoaXM/ZS5iaW5kKHRoaXMpOmUpOnR9ZnVuY3Rpb24gSG4oZSl7bGV0IHQ9Rm4rMSxuPVBuLmxlbmd0aDtmb3IoO3Q8bjspe2xldCByPXQrbj4+PjEsaT1QbltyXSxhPUpuKGkpO2E8ZXx8YT09PWUmJmkuZmxhZ3MmMj90PXIrMTpuPXJ9cmV0dXJuIHR9ZnVuY3Rpb24gVW4oZSl7aWYoIShlLmZsYWdzJjEpKXtsZXQgdD1KbihlKSxuPVBuW1BuLmxlbmd0aC0xXTshbnx8IShlLmZsYWdzJjIpJiZ0Pj1KbihuKT9Qbi5wdXNoKGUpOlBuLnNwbGljZShIbih0KSwwLGUpLGUuZmxhZ3N8PTEsV24oKX19ZnVuY3Rpb24gV24oKXtCbnx8PXpuLnRoZW4oWW4pfWZ1bmN0aW9uIEduKGUpe2lmKCFkKGUpKUxuJiZlLmlkPT09LTE/TG4uc3BsaWNlKFJuKzEsMCxlKTplLmZsYWdzJjF8fChJbi5wdXNoKGUpLGUuZmxhZ3N8PTEpO2Vsc2UgZm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0KyspSW4ucHVzaChlW3RdKTtXbigpfWZ1bmN0aW9uIEtuKGUsdCxuPUZuKzEpe2Zvcig7bjxQbi5sZW5ndGg7bisrKXtsZXQgdD1QbltuXTtpZih0JiZ0LmZsYWdzJjIpe2lmKGUmJnQuaWQhPT1lLnVpZCljb250aW51ZTtQbi5zcGxpY2UobiwxKSxuLS0sdC5mbGFncyY0JiYodC5mbGFncyY9LTIpLHQoKSx0LmZsYWdzJjR8fCh0LmZsYWdzJj0tMil9fX1mdW5jdGlvbiBxbihlKXtpZihJbi5sZW5ndGgpe2xldCBlPVsuLi5uZXcgU2V0KEluKV0uc29ydCgoZSx0KT0+Sm4oZSktSm4odCkpO2lmKEluLmxlbmd0aD0wLExuKXtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylMbi5wdXNoKGVbdF0pO3JldHVybn1mb3IoTG49ZSxSbj0wO1JuPExuLmxlbmd0aDtSbisrKXtsZXQgZT1MbltSbl07ZS5mbGFncyY0JiYoZS5mbGFncyY9LTIpLGUuZmxhZ3MmOHx8ZSgpLGUuZmxhZ3MmPS0yfUxuPW51bGwsUm49MH19dmFyIEpuPWU9PmUuaWQ9PW51bGw/ZS5mbGFncyYyPy0xOjEvMDplLmlkO2Z1bmN0aW9uIFluKGUpe3RyeXtmb3IoRm49MDtGbjxQbi5sZW5ndGg7Rm4rKyl7bGV0IGU9UG5bRm5dO2UmJiEoZS5mbGFncyY4KSYmKGUuZmxhZ3MmNCYmKGUuZmxhZ3MmPS0yKSxBbihlLGUuaSxlLmk/MTU6MTQpLGUuZmxhZ3MmNHx8KGUuZmxhZ3MmPS0yKSl9fWZpbmFsbHl7Zm9yKDtGbjxQbi5sZW5ndGg7Rm4rKyl7bGV0IGU9UG5bRm5dO2UmJihlLmZsYWdzJj0tMil9Rm49LTEsUG4ubGVuZ3RoPTAscW4oZSksQm49bnVsbCwoUG4ubGVuZ3RofHxJbi5sZW5ndGgpJiZZbihlKX19dmFyIFhuLFpuPVtdO2Z1bmN0aW9uIFFuKGUsdCl7WG49ZSxYbj8oWG4uZW5hYmxlZD0hMCxabi5mb3JFYWNoKCh7ZXZlbnQ6ZSxhcmdzOnR9KT0+WG4uZW1pdChlLC4uLnQpKSxabj1bXSk6dHlwZW9mIHdpbmRvdzxgdWAmJndpbmRvdy5IVE1MRWxlbWVudCYmISh3aW5kb3cubmF2aWdhdG9yPy51c2VyQWdlbnQpPy5pbmNsdWRlcyhganNkb21gKT8oKHQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfXz10Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX198fFtdKS5wdXNoKGU9PntRbihlLHQpfSksc2V0VGltZW91dCgoKT0+e1hufHwodC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fPW51bGwsWm49W10pfSwzZTMpKTpabj1bXX12YXIgVT1udWxsLCRuPW51bGw7ZnVuY3Rpb24gZXIoZSl7bGV0IHQ9VTtyZXR1cm4gVT1lLCRuPWUmJmUudHlwZS5fX3Njb3BlSWR8fG51bGwsdH1mdW5jdGlvbiB0cihlKXskbj1lfWZ1bmN0aW9uIG5yKCl7JG49bnVsbH12YXIgcnI9ZT0+aXI7ZnVuY3Rpb24gaXIoZSx0PVUsbil7aWYoIXR8fGUuX24pcmV0dXJuIGU7bGV0IHI9KC4uLm4pPT57ci5fZCYmaXMoLTEpO2xldCBpPWVyKHQpLGE9JG8ubGVuZ3RoLG87dHJ5e289ZSguLi5uKX1maW5hbGx5e2ZvcihsZXQgZT0kby5sZW5ndGg7ZT5hO2UtLSlucygpO2VyKGkpLHIuX2QmJmlzKDEpfXJldHVybiBvfTtyZXR1cm4gci5fbj0hMCxyLl9jPSEwLHIuX2Q9ITAscn1mdW5jdGlvbiBhcihlLG4pe2lmKFU9PT1udWxsKXJldHVybiBlO2xldCByPVdzKFUpLGk9ZS5kaXJzfHw9W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspe2xldFthLG8scyxjPXRdPW5bZV07YSYmKGcoYSkmJihhPXttb3VudGVkOmEsdXBkYXRlZDphfSksYS5kZWVwJiZDbihvKSxpLnB1c2goe2RpcjphLGluc3RhbmNlOnIsdmFsdWU6byxvbGRWYWx1ZTp2b2lkIDAsYXJnOnMsbW9kaWZpZXJzOmN9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gb3IoZSx0LG4scil7bGV0IGk9ZS5kaXJzLGE9dCYmdC5kaXJzO2ZvcihsZXQgbz0wO288aS5sZW5ndGg7bysrKXtsZXQgcz1pW29dO2EmJihzLm9sZFZhbHVlPWFbb10udmFsdWUpO2xldCBjPXMuZGlyW3JdO2MmJihXZSgpLGpuKGMsbiw4LFtlLmVsLHMsZSx0XSksR2UoKSl9fWZ1bmN0aW9uIHNyKGUsdCl7aWYoSil7bGV0IG49Si5wcm92aWRlcyxyPUoucGFyZW50JiZKLnBhcmVudC5wcm92aWRlcztyPT09biYmKG49Si5wcm92aWRlcz1PYmplY3QuY3JlYXRlKHIpKSxuW2VdPXR9fWZ1bmN0aW9uIGNyKGUsdCxuPSExKXtsZXQgcj1ZKCk7aWYocnx8cWEpe2xldCBpPXFhP3FhLl9jb250ZXh0LnByb3ZpZGVzOnI/ci5wYXJlbnQ9PW51bGx8fHIuY2U/ci52bm9kZS5hcHBDb250ZXh0JiZyLnZub2RlLmFwcENvbnRleHQucHJvdmlkZXM6ci5wYXJlbnQucHJvdmlkZXM6dm9pZCAwO2lmKGkmJmUgaW4gaSlyZXR1cm4gaVtlXTtpZihhcmd1bWVudHMubGVuZ3RoPjEpcmV0dXJuIG4mJmcodCk/dC5jYWxsKHImJnIucHJveHkpOnR9fWZ1bmN0aW9uIGxyKCl7cmV0dXJuISEoWSgpfHxxYSl9dmFyIHVyPVN5bWJvbC5mb3IoYHYtc2N4YCksZHI9KCk9PmNyKHVyKTtmdW5jdGlvbiBmcihlLHQpe3JldHVybiBncihlLG51bGwsdCl9ZnVuY3Rpb24gcHIoZSx0KXtyZXR1cm4gZ3IoZSxudWxsLHtmbHVzaDpgcG9zdGB9KX1mdW5jdGlvbiBtcihlLHQpe3JldHVybiBncihlLG51bGwse2ZsdXNoOmBzeW5jYH0pfWZ1bmN0aW9uIGhyKGUsdCxuKXtyZXR1cm4gZ3IoZSx0LG4pfWZ1bmN0aW9uIGdyKGUsbixpPXQpe2xldHtpbW1lZGlhdGU6YSxkZWVwOm8sZmx1c2g6YyxvbmNlOmx9PWksdT1zKHt9LGkpLGQ9biYmYXx8IW4mJmMhPT1gcG9zdGAsZjtpZihOcyl7aWYoYz09PWBzeW5jYCl7bGV0IGU9ZHIoKTtmPWUuX193YXRjaGVySGFuZGxlc3x8PVtdfWVsc2UgaWYoIWQpe2xldCBlPSgpPT57fTtyZXR1cm4gZS5zdG9wPXIsZS5yZXN1bWU9cixlLnBhdXNlPXIsZX19bGV0IHA9Sjt1LmNhbGw9KGUsdCxuKT0+am4oZSxwLHQsbik7bGV0IG09ITE7Yz09PWBwb3N0YD91LnNjaGVkdWxlcj1lPT57VyhlLHAmJnAuc3VzcGVuc2UpfTpjIT09YHN5bmNgJiYobT0hMCx1LnNjaGVkdWxlcj0oZSx0KT0+e3Q/ZSgpOlVuKGUpfSksdS5hdWdtZW50Sm9iPWU9PntuJiYoZS5mbGFnc3w9NCksbSYmKGUuZmxhZ3N8PTIscCYmKGUuaWQ9cC51aWQsZS5pPXApKX07bGV0IGg9U24oZSxuLHUpO3JldHVybiBOcyYmKGY/Zi5wdXNoKGgpOmQmJmgoKSksaH1mdW5jdGlvbiBfcihlLHQsbil7bGV0IHI9dGhpcy5wcm94eSxpPV8oZSk/ZS5pbmNsdWRlcyhgLmApP3ZyKHIsZSk6KCk9PnJbZV06ZS5iaW5kKHIsciksYTtnKHQpP2E9dDooYT10LmhhbmRsZXIsbj10KTtsZXQgbz1Bcyh0aGlzKSxzPWdyKGksYS5iaW5kKHIpLG4pO3JldHVybiBvKCksc31mdW5jdGlvbiB2cihlLHQpe2xldCBuPXQuc3BsaXQoYC5gKTtyZXR1cm4oKT0+e2xldCB0PWU7Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aCYmdDtlKyspdD10W25bZV1dO3JldHVybiB0fX12YXIgeXI9bmV3IFdlYWtNYXAsYnI9U3ltYm9sKGBfdnRlYCkseHI9ZT0+ZS5fX2lzVGVsZXBvcnQsU3I9ZT0+ZSYmKGUuZGlzYWJsZWR8fGUuZGlzYWJsZWQ9PT1gYCksQ3I9ZT0+ZSYmKGUuZGVmZXJ8fGUuZGVmZXI9PT1gYCksd3I9ZT0+dHlwZW9mIFNWR0VsZW1lbnQ8YHVgJiZlIGluc3RhbmNlb2YgU1ZHRWxlbWVudCxUcj1lPT50eXBlb2YgTWF0aE1MRWxlbWVudD09YGZ1bmN0aW9uYCYmZSBpbnN0YW5jZW9mIE1hdGhNTEVsZW1lbnQsRXI9KGUsdCk9PntsZXQgbj1lJiZlLnRvO3JldHVybiBfKG4pP3Q/dChuKTpudWxsOm59LERyPXtuYW1lOmBUZWxlcG9ydGAsX19pc1RlbGVwb3J0OiEwLHByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsbCl7bGV0e21jOnUscGM6ZCxwYmM6ZixvOntpbnNlcnQ6cCxxdWVyeVNlbGVjdG9yOm0sY3JlYXRlVGV4dDpoLGNyZWF0ZUNvbW1lbnQ6ZyxwYXJlbnROb2RlOl99fT1sLHY9U3IodC5wcm9wcykse2R5bmFtaWNDaGlsZHJlbjp5fT10LGI9KGUsdCxuKT0+e2Uuc2hhcGVGbGFnJjE2JiZ1KGUuY2hpbGRyZW4sdCxuLGksYSxvLHMsYyl9LHg9KGU9dCk9PntsZXQgbj1TcihlLnByb3BzKSxyPWUudGFyZ2V0PUVyKGUucHJvcHMsbSksYT1NcihyLGUsaCxwKTtyJiYobyE9PWBzdmdgJiZ3cihyKT9vPWBzdmdgOm8hPT1gbWF0aG1sYCYmVHIocikmJihvPWBtYXRobWxgKSxpJiZpLmlzQ0UmJihpLmNlLl90ZWxlcG9ydFRhcmdldHN8fChpLmNlLl90ZWxlcG9ydFRhcmdldHM9bmV3IFNldCkpLmFkZChyKSxufHwoYihlLHIsYSksanIoZSwhMSkpKX0sUz1lPT57bGV0IHQ9KCk9PntpZih5ci5nZXQoZSk9PT10KXtpZih5ci5kZWxldGUoZSksU3IoZS5wcm9wcykpe2xldCB0PV8oZS5lbCl8fG47YihlLHQsZS5hbmNob3IpLGpyKGUsITApfXgoZSl9fTt5ci5zZXQoZSx0KSxXKHQsYSl9O2lmKGU9PW51bGwpe2xldCBlPXQuZWw9aChgYCksaT10LmFuY2hvcj1oKGBgKTtpZihwKGUsbixyKSxwKGksbixyKSxDcih0LnByb3BzKXx8YSYmYS5wZW5kaW5nQnJhbmNoKXtTKHQpO3JldHVybn12JiYoYih0LG4saSksanIodCwhMCkpLHgoKX1lbHNle3QuZWw9ZS5lbDtsZXQgcj10LmFuY2hvcj1lLmFuY2hvcix1PXlyLmdldChlKTtpZih1KXt1LmZsYWdzfD04LHlyLmRlbGV0ZShlKSxTKHQpO3JldHVybn10LnRhcmdldFN0YXJ0PWUudGFyZ2V0U3RhcnQ7bGV0IHA9dC50YXJnZXQ9ZS50YXJnZXQsaD10LnRhcmdldEFuY2hvcj1lLnRhcmdldEFuY2hvcixnPVNyKGUucHJvcHMpLF89Zz9uOnAsYj1nP3I6aDtpZihvPT09YHN2Z2B8fHdyKHApP289YHN2Z2A6KG89PT1gbWF0aG1sYHx8VHIocCkpJiYobz1gbWF0aG1sYCkseT8oZihlLmR5bmFtaWNDaGlsZHJlbix5LF8saSxhLG8scyksTm8oZSx0LCEwKSk6Y3x8ZChlLHQsXyxiLGksYSxvLHMsITEpLHYpZz90LnByb3BzJiZlLnByb3BzJiZ0LnByb3BzLnRvIT09ZS5wcm9wcy50byYmKHQucHJvcHMudG89ZS5wcm9wcy50byk6T3IodCxuLHIsbCwxKTtlbHNlIGlmKCh0LnByb3BzJiZ0LnByb3BzLnRvKSE9PShlLnByb3BzJiZlLnByb3BzLnRvKSl7bGV0IGU9RXIodC5wcm9wcyxtKTtlJiYodC50YXJnZXQ9ZSxPcih0LGUsbnVsbCxsLDApKX1lbHNlIGcmJk9yKHQscCxoLGwsMSk7anIodCx2KX19LHJlbW92ZShlLHQsbix7dW06cixvOntyZW1vdmU6aX19LGEpe2xldHtzaGFwZUZsYWc6byxjaGlsZHJlbjpzLGFuY2hvcjpjLHRhcmdldFN0YXJ0OmwsdGFyZ2V0QW5jaG9yOnUsdGFyZ2V0OmQscHJvcHM6Zn09ZSxwPVNyKGYpLG09YXx8IXAsaD15ci5nZXQoZSk7aWYoaCYmKGguZmxhZ3N8PTgseXIuZGVsZXRlKGUpKSxkJiYoaShsKSxpKHUpKSxhJiZpKGMpLCFoJiYocHx8ZCkmJm8mMTYpZm9yKGxldCBlPTA7ZTxzLmxlbmd0aDtlKyspe2xldCBpPXNbZV07cihpLHQsbixtLCEhaS5keW5hbWljQ2hpbGRyZW4pfX0sbW92ZTpPcixoeWRyYXRlOmtyfTtmdW5jdGlvbiBPcihlLHQsbix7bzp7aW5zZXJ0OnJ9LG06aX0sYT0yKXthPT09MCYmcihlLnRhcmdldEFuY2hvcix0LG4pO2xldHtlbDpvLGFuY2hvcjpzLHNoYXBlRmxhZzpjLGNoaWxkcmVuOmwscHJvcHM6dX09ZSxkPWE9PT0yO2lmKGQmJnIobyx0LG4pLCF5ci5oYXMoZSkmJighZHx8U3IodSkpJiZjJjE2KWZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKWkobFtlXSx0LG4sMik7ZCYmcihzLHQsbil9ZnVuY3Rpb24ga3IoZSx0LG4scixpLGEse286e25leHRTaWJsaW5nOm8scGFyZW50Tm9kZTpzLHF1ZXJ5U2VsZWN0b3I6YyxpbnNlcnQ6bCxjcmVhdGVUZXh0OnV9fSxkKXtmdW5jdGlvbiBmKGUsbil7bGV0IHI9bjtmb3IoO3I7KXtpZihyJiZyLm5vZGVUeXBlPT09OCl7aWYoci5kYXRhPT09YHRlbGVwb3J0IHN0YXJ0IGFuY2hvcmApdC50YXJnZXRTdGFydD1yO2Vsc2UgaWYoci5kYXRhPT09YHRlbGVwb3J0IGFuY2hvcmApe3QudGFyZ2V0QW5jaG9yPXIsZS5fbHBhPXQudGFyZ2V0QW5jaG9yJiZvKHQudGFyZ2V0QW5jaG9yKTticmVha319cj1vKHIpfX1mdW5jdGlvbiBwKGUsdCl7dC5hbmNob3I9ZChvKGUpLHQscyhlKSxuLHIsaSxhKX1sZXQgbT10LnRhcmdldD1Fcih0LnByb3BzLGMpLGg9U3IodC5wcm9wcyk7aWYobSl7bGV0IGM9bS5fbHBhfHxtLmZpcnN0Q2hpbGQ7dC5zaGFwZUZsYWcmMTYmJihoPyhwKGUsdCksZihtLGMpLHQudGFyZ2V0QW5jaG9yfHxNcihtLHQsdSxsLHMoZSk9PT1tP2U6bnVsbCkpOih0LmFuY2hvcj1vKGUpLGYobSxjKSx0LnRhcmdldEFuY2hvcnx8TXIobSx0LHUsbCksZChjJiZvKGMpLHQsbSxuLHIsaSxhKSkpLGpyKHQsaCl9ZWxzZSBoJiZ0LnNoYXBlRmxhZyYxNiYmKHAoZSx0KSx0LnRhcmdldFN0YXJ0PWUsdC50YXJnZXRBbmNob3I9byhlKSk7cmV0dXJuIHQuYW5jaG9yJiZvKHQuYW5jaG9yKX12YXIgQXI9RHI7ZnVuY3Rpb24ganIoZSx0KXtsZXQgbj1lLmN0eDtpZihuJiZuLnV0KXtsZXQgcixpO2Zvcih0PyhyPWUuZWwsaT1lLmFuY2hvcik6KHI9ZS50YXJnZXRTdGFydCxpPWUudGFyZ2V0QW5jaG9yKTtyJiZyIT09aTspci5ub2RlVHlwZT09PTEmJnIuc2V0QXR0cmlidXRlKGBkYXRhLXYtb3duZXJgLG4udWlkKSxyPXIubmV4dFNpYmxpbmc7bi51dCgpfX1mdW5jdGlvbiBNcihlLHQsbixyLGk9bnVsbCl7bGV0IGE9dC50YXJnZXRTdGFydD1uKGBgKSxvPXQudGFyZ2V0QW5jaG9yPW4oYGApO3JldHVybiBhW2JyXT1vLGUmJihyKGEsZSxpKSxyKG8sZSxpKSksb312YXIgTnI9U3ltYm9sKGBfbGVhdmVDYmApLFByPVN5bWJvbChgX2VudGVyQ2JgKTtmdW5jdGlvbiBGcigpe2xldCBlPXtpc01vdW50ZWQ6ITEsaXNMZWF2aW5nOiExLGlzVW5tb3VudGluZzohMSxsZWF2aW5nVk5vZGVzOm5ldyBNYXB9O3JldHVybiBWaSgoKT0+e2UuaXNNb3VudGVkPSEwfSksV2koKCk9PntlLmlzVW5tb3VudGluZz0hMH0pLGV9dmFyIElyPVtGdW5jdGlvbixBcnJheV0sTHI9e21vZGU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLHBlcnNpc3RlZDpCb29sZWFuLG9uQmVmb3JlRW50ZXI6SXIsb25FbnRlcjpJcixvbkFmdGVyRW50ZXI6SXIsb25FbnRlckNhbmNlbGxlZDpJcixvbkJlZm9yZUxlYXZlOklyLG9uTGVhdmU6SXIsb25BZnRlckxlYXZlOklyLG9uTGVhdmVDYW5jZWxsZWQ6SXIsb25CZWZvcmVBcHBlYXI6SXIsb25BcHBlYXI6SXIsb25BZnRlckFwcGVhcjpJcixvbkFwcGVhckNhbmNlbGxlZDpJcn0sUnI9ZT0+e2xldCB0PWUuc3ViVHJlZTtyZXR1cm4gdC5jb21wb25lbnQ/UnIodC5jb21wb25lbnQpOnR9LHpyPXtuYW1lOmBCYXNlVHJhbnNpdGlvbmAscHJvcHM6THIsc2V0dXAoZSx7c2xvdHM6dH0pe2xldCBuPVkoKSxyPUZyKCk7cmV0dXJuKCk9PntsZXQgaT10LmRlZmF1bHQmJnFyKHQuZGVmYXVsdCgpLCEwKSxhPWkmJmkubGVuZ3RoP0JyKGkpOm4uc3ViVHJlZT95cygpOnZvaWQgMDtpZighYSlyZXR1cm47bGV0IG89VihlKSx7bW9kZTpzfT1vO2lmKHIuaXNMZWF2aW5nKXJldHVybiBXcihhKTtsZXQgYz1HcihhKTtpZighYylyZXR1cm4gV3IoYSk7bGV0IGw9VXIoYyxvLHIsbixlPT5sPWUpO2MudHlwZSE9PUsmJktyKGMsbCk7bGV0IHU9bi5zdWJUcmVlJiZHcihuLnN1YlRyZWUpO2lmKHUmJnUudHlwZSE9PUsmJiFscyh1LGMpJiZScihuKS50eXBlIT09Syl7bGV0IGU9VXIodSxvLHIsbik7aWYoS3IodSxlKSxzPT09YG91dC1pbmAmJmMudHlwZSE9PUspcmV0dXJuIHIuaXNMZWF2aW5nPSEwLGUuYWZ0ZXJMZWF2ZT0oKT0+e3IuaXNMZWF2aW5nPSExLG4uam9iLmZsYWdzJjh8fG4udXBkYXRlKCksZGVsZXRlIGUuYWZ0ZXJMZWF2ZSx1PXZvaWQgMH0sV3IoYSk7cz09PWBpbi1vdXRgJiZjLnR5cGUhPT1LP2UuZGVsYXlMZWF2ZT0oZSx0LG4pPT57bGV0IGk9SHIocix1KTtpW1N0cmluZyh1LmtleSldPXUsZVtOcl09KCk9Pnt0KCksZVtOcl09dm9pZCAwLGRlbGV0ZSBsLmRlbGF5ZWRMZWF2ZSx1PXZvaWQgMH0sbC5kZWxheWVkTGVhdmU9KCk9PntuKCksZGVsZXRlIGwuZGVsYXllZExlYXZlLHU9dm9pZCAwfX06dT12b2lkIDB9ZWxzZSB1JiY9dm9pZCAwO3JldHVybiBhfX19O2Z1bmN0aW9uIEJyKGUpe2xldCB0PWVbMF07aWYoZS5sZW5ndGg+MSl7Zm9yKGxldCBuIG9mIGUpaWYobi50eXBlIT09Syl7dD1uO2JyZWFrfX1yZXR1cm4gdH12YXIgVnI9enI7ZnVuY3Rpb24gSHIoZSx0KXtsZXR7bGVhdmluZ1ZOb2RlczpufT1lLHI9bi5nZXQodC50eXBlKTtyZXR1cm4gcnx8KHI9T2JqZWN0LmNyZWF0ZShudWxsKSxuLnNldCh0LnR5cGUscikpLHJ9ZnVuY3Rpb24gVXIoZSx0LG4scixpKXtsZXR7YXBwZWFyOmEsbW9kZTpvLHBlcnNpc3RlZDpzPSExLG9uQmVmb3JlRW50ZXI6YyxvbkVudGVyOmwsb25BZnRlckVudGVyOnUsb25FbnRlckNhbmNlbGxlZDpmLG9uQmVmb3JlTGVhdmU6cCxvbkxlYXZlOm0sb25BZnRlckxlYXZlOmgsb25MZWF2ZUNhbmNlbGxlZDpnLG9uQmVmb3JlQXBwZWFyOl8sb25BcHBlYXI6dixvbkFmdGVyQXBwZWFyOnksb25BcHBlYXJDYW5jZWxsZWQ6Yn09dCx4PVN0cmluZyhlLmtleSksUz1IcihuLGUpLEM9KGUsdCk9PntlJiZqbihlLHIsOSx0KX0sdz0oZSx0KT0+e2xldCBuPXRbMV07QyhlLHQpLGQoZSk/ZS5ldmVyeShlPT5lLmxlbmd0aDw9MSkmJm4oKTplLmxlbmd0aDw9MSYmbigpfSxUPXttb2RlOm8scGVyc2lzdGVkOnMsYmVmb3JlRW50ZXIodCl7bGV0IHI9YztpZighbi5pc01vdW50ZWQpe2lmKGEpcj1ffHxjO2Vsc2UgcmV0dXJufXRbTnJdJiZ0W05yXSghMCk7bGV0IGk9U1t4XTtpJiZscyhlLGkpJiZpLmVsW05yXSYmaS5lbFtOcl0oKSxDKHIsW3RdKX0sZW50ZXIodCl7aWYoU1t4XT09PWUpcmV0dXJuO2xldCByPWwsaT11LG89ZjtpZighbi5pc01vdW50ZWQpe2lmKGEpcj12fHxsLGk9eXx8dSxvPWJ8fGY7ZWxzZSByZXR1cm59bGV0IHM9ITE7dFtQcl09ZT0+e3N8fChzPSEwLEMoZT9vOmksW3RdKSxULmRlbGF5ZWRMZWF2ZSYmVC5kZWxheWVkTGVhdmUoKSx0W1ByXT12b2lkIDApfTtsZXQgYz10W1ByXS5iaW5kKG51bGwsITEpO3I/dyhyLFt0LGNdKTpjKCl9LGxlYXZlKHQscil7bGV0IGk9U3RyaW5nKGUua2V5KTtpZih0W1ByXSYmdFtQcl0oITApLG4uaXNVbm1vdW50aW5nKXJldHVybiByKCk7QyhwLFt0XSk7bGV0IGE9ITE7dFtOcl09bj0+e2F8fChhPSEwLHIoKSxDKG4/ZzpoLFt0XSksdFtOcl09dm9pZCAwLFNbaV09PT1lJiZkZWxldGUgU1tpXSl9O2xldCBvPXRbTnJdLmJpbmQobnVsbCwhMSk7U1tpXT1lLG0/dyhtLFt0LG9dKTpvKCl9LGNsb25lKGUpe2xldCBhPVVyKGUsdCxuLHIsaSk7cmV0dXJuIGkmJmkoYSksYX19O3JldHVybiBUfWZ1bmN0aW9uIFdyKGUpe2lmKGtpKGUpKXJldHVybiBlPWdzKGUpLGUuY2hpbGRyZW49bnVsbCxlfWZ1bmN0aW9uIEdyKGUpe2lmKCFraShlKSlyZXR1cm4geHIoZS50eXBlKSYmZS5jaGlsZHJlbj9CcihlLmNoaWxkcmVuKTplO2lmKGUuY29tcG9uZW50KXJldHVybiBlLmNvbXBvbmVudC5zdWJUcmVlO2xldHtzaGFwZUZsYWc6dCxjaGlsZHJlbjpufT1lO2lmKG4pe2lmKHQmMTYpcmV0dXJuIG5bMF07aWYodCYzMiYmZyhuLmRlZmF1bHQpKXJldHVybiBuLmRlZmF1bHQoKX19ZnVuY3Rpb24gS3IoZSx0KXtpZihlLnNoYXBlRmxhZyY2JiZlLmNvbXBvbmVudCl7ZS50cmFuc2l0aW9uPXQ7bGV0IG49ZS5jb21wb25lbnQuc3ViVHJlZTtLcih4cihuLnR5cGUpJiZHcihuKXx8bix0KX1lbHNlIGUuc2hhcGVGbGFnJjEyOD8oZS5zc0NvbnRlbnQudHJhbnNpdGlvbj10LmNsb25lKGUuc3NDb250ZW50KSxlLnNzRmFsbGJhY2sudHJhbnNpdGlvbj10LmNsb25lKGUuc3NGYWxsYmFjaykpOmUudHJhbnNpdGlvbj10fWZ1bmN0aW9uIHFyKGUsdD0hMSxuKXtsZXQgcj1bXSxpPTA7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspe2xldCBvPWVbYV0scz1uPT1udWxsP28ua2V5OlN0cmluZyhuKStTdHJpbmcoby5rZXk9PW51bGw/YTpvLmtleSk7by50eXBlPT09Rz8oby5wYXRjaEZsYWcmMTI4JiZpKysscj1yLmNvbmNhdChxcihvLmNoaWxkcmVuLHQscykpKToodHx8by50eXBlIT09SykmJnIucHVzaChzPT1udWxsP286Z3Mobyx7a2V5OnN9KSl9aWYoaT4xKWZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXJbZV0ucGF0Y2hGbGFnPS0yO3JldHVybiByfWZ1bmN0aW9uIEpyKGUsdCl7cmV0dXJuIGcoZSk/cyh7bmFtZTplLm5hbWV9LHQse3NldHVwOmV9KTplfWZ1bmN0aW9uIFlyKCl7bGV0IGU9WSgpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHxgdmApK2AtYCtlLmlkc1swXStlLmlkc1sxXSsrOmBgfWZ1bmN0aW9uIFhyKGUpe2UuaWRzPVtlLmlkc1swXStlLmlkc1syXSsrK2AtYCwwLDBdfWZ1bmN0aW9uIFpyKGUpe2xldCBuPVkoKSxyPVp0KG51bGwpO2lmKG4pe2xldCBpPW4ucmVmcz09PXQ/bi5yZWZzPXt9Om4ucmVmcztPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxlLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ci52YWx1ZSxzZXQ6ZT0+ci52YWx1ZT1lfSl9cmV0dXJuIHJ9ZnVuY3Rpb24gUXIoZSx0KXtsZXQgbjtyZXR1cm4hISgobj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkpJiYhbi5jb25maWd1cmFibGUpfXZhciAkcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBlaShlLG4scixhLG89ITEpe2lmKGQoZSkpe2UuZm9yRWFjaCgoZSx0KT0+ZWkoZSxuJiYoZChuKT9uW3RdOm4pLHIsYSxvKSk7cmV0dXJufWlmKEVpKGEpJiYhbyl7YS5zaGFwZUZsYWcmNTEyJiZhLnR5cGUuX19hc3luY1Jlc29sdmVkJiZhLmNvbXBvbmVudC5zdWJUcmVlLmNvbXBvbmVudCYmZWkoZSxuLHIsYS5jb21wb25lbnQuc3ViVHJlZSk7cmV0dXJufWxldCBzPWEuc2hhcGVGbGFnJjQ/V3MoYS5jb21wb25lbnQpOmEuZWwsbD1vP251bGw6cyx7aTpmLHI6cH09ZSxtPW4mJm4ucixoPWYucmVmcz09PXQ/Zi5yZWZzPXt9OmYucmVmcyx2PWYuc2V0dXBTdGF0ZSx5PVYodiksYj12PT09dD9pOmU9PiFRcihoLGUpJiZ1KHksZSkseD0oZSx0KT0+ISh0JiZRcihoLHQpKTtpZihtIT1udWxsJiZtIT09cCl7aWYodGkobiksXyhtKSloW21dPW51bGwsYihtKSYmKHZbbV09bnVsbCk7ZWxzZSBpZihIKG0pKXtsZXQgZT1uO3gobSxlLmspJiYobS52YWx1ZT1udWxsKSxlLmsmJihoW2Uua109bnVsbCl9fWlmKGcocCkpQW4ocCxmLDEyLFtsLGhdKTtlbHNle2xldCB0PV8ocCksbj1IKHApO2lmKHR8fG4pe2xldCBpPSgpPT57aWYoZS5mKXtsZXQgbj10P2IocCk/dltwXTpoW3BdOngocCl8fCFlLms/cC52YWx1ZTpoW2Uua107aWYobylkKG4pJiZjKG4scyk7ZWxzZSBpZihkKG4pKW4uaW5jbHVkZXMocyl8fG4ucHVzaChzKTtlbHNlIGlmKHQpaFtwXT1bc10sYihwKSYmKHZbcF09aFtwXSk7ZWxzZXtsZXQgdD1bc107eChwLGUuaykmJihwLnZhbHVlPXQpLGUuayYmKGhbZS5rXT10KX19ZWxzZSB0PyhoW3BdPWwsYihwKSYmKHZbcF09bCkpOm4mJih4KHAsZS5rKSYmKHAudmFsdWU9bCksZS5rJiYoaFtlLmtdPWwpKX07aWYobCl7bGV0IHQ9KCk9PntpKCksJHIuZGVsZXRlKGUpfTt0LmlkPS0xLCRyLnNldChlLHQpLFcodCxyKX1lbHNlIHRpKGUpLGkoKX19fWZ1bmN0aW9uIHRpKGUpe2xldCB0PSRyLmdldChlKTt0JiYodC5mbGFnc3w9OCwkci5kZWxldGUoZSkpfXZhciBuaT0hMSxyaT0oKT0+e25pfHw9KGNvbnNvbGUuZXJyb3IoYEh5ZHJhdGlvbiBjb21wbGV0ZWQgYnV0IGNvbnRhaW5zIG1pc21hdGNoZXMuYCksITApfSxpaT1lPT5lLm5hbWVzcGFjZVVSSS5pbmNsdWRlcyhgc3ZnYCkmJmUudGFnTmFtZSE9PWBmb3JlaWduT2JqZWN0YCxhaT1lPT5lLm5hbWVzcGFjZVVSSS5pbmNsdWRlcyhgTWF0aE1MYCksb2k9ZT0+e2lmKGUubm9kZVR5cGU9PT0xKXtpZihpaShlKSlyZXR1cm5gc3ZnYDtpZihhaShlKSlyZXR1cm5gbWF0aG1sYH19LHNpPWU9PmUubm9kZVR5cGU9PT04O2Z1bmN0aW9uIGNpKGUpe2xldHttdDp0LHA6bixvOntwYXRjaFByb3A6cixjcmVhdGVUZXh0OmksbmV4dFNpYmxpbmc6byxwYXJlbnROb2RlOnMscmVtb3ZlOmMsaW5zZXJ0OmwsY3JlYXRlQ29tbWVudDp1fX09ZSxkPShlLHQpPT57aWYoIXQuaGFzQ2hpbGROb2RlcygpKXtuKG51bGwsZSx0KSxxbigpLHQuX3Zub2RlPWU7cmV0dXJufWYodC5maXJzdENoaWxkLGUsbnVsbCxudWxsLG51bGwpLHFuKCksdC5fdm5vZGU9ZX0sZj0obixyLGEsYyx1LGQ9ITEpPT57ZHx8PSEhci5keW5hbWljQ2hpbGRyZW47bGV0IGI9c2kobikmJm4uZGF0YT09PWBbYCx4PSgpPT5nKG4scixhLGMsdSxiKSx7dHlwZTpTLHJlZjpDLHNoYXBlRmxhZzp3LHBhdGNoRmxhZzpUfT1yLEU9bi5ub2RlVHlwZTtyLmVsPW4sVD09PS0yJiYoZD0hMSxyLmR5bmFtaWNDaGlsZHJlbj1udWxsKTtsZXQgRD1udWxsO3N3aXRjaChTKXtjYXNlIFpvOkU9PT0zPyhuLmRhdGEhPT1yLmNoaWxkcmVuJiYocmkoKSxuLmRhdGE9ci5jaGlsZHJlbiksRD1vKG4pKTpyLmNoaWxkcmVuPT09YGA/KGwoci5lbD1pKGBgKSxzKG4pLG4pLEQ9bik6RD14KCk7YnJlYWs7Y2FzZSBLOnkobik/KEQ9byhuKSx2KHIuZWw9bi5jb250ZW50LmZpcnN0Q2hpbGQsbixhKSk6RD1FIT09OHx8Yj94KCk6byhuKTticmVhaztjYXNlIFFvOmlmKGImJihuPW8obiksRT1uLm5vZGVUeXBlKSxFPT09MXx8RT09PTMpe0Q9bjtsZXQgZT0hci5jaGlsZHJlbi5sZW5ndGg7Zm9yKGxldCB0PTA7dDxyLnN0YXRpY0NvdW50O3QrKyllJiYoci5jaGlsZHJlbis9RC5ub2RlVHlwZT09PTE/RC5vdXRlckhUTUw6RC5kYXRhKSx0PT09ci5zdGF0aWNDb3VudC0xJiYoci5hbmNob3I9RCksRD1vKEQpO3JldHVybiBiP28oRCk6RH14KCk7YnJlYWs7Y2FzZSBHOkQ9Yj9oKG4scixhLGMsdSxkKTp4KCk7YnJlYWs7ZGVmYXVsdDppZih3JjEpRD0oRSE9PTF8fHIudHlwZS50b0xvd2VyQ2FzZSgpIT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpJiYheShuKT94KCk6cChuLHIsYSxjLHUsZCk7ZWxzZSBpZih3JjYpe3Iuc2xvdFNjb3BlSWRzPXU7bGV0IGU9cyhuKTtpZihEPWI/XyhuKTpzaShuKSYmbi5kYXRhPT09YHRlbGVwb3J0IHN0YXJ0YD9fKG4sbi5kYXRhLGB0ZWxlcG9ydCBlbmRgKTpvKG4pLHQocixlLG51bGwsYSxjLG9pKGUpLGQpLEVpKHIpJiYhci50eXBlLl9fYXN5bmNSZXNvbHZlZCl7bGV0IHQ7Yj8odD1xKEcpLHQuYW5jaG9yPUQ/RC5wcmV2aW91c1NpYmxpbmc6ZS5sYXN0Q2hpbGQpOnQ9bi5ub2RlVHlwZT09PTM/X3MoYGApOnEoYGRpdmApLHQuZWw9bixyLmNvbXBvbmVudC5zdWJUcmVlPXR9fWVsc2UgdyY2ND9EPUU9PT04P3IudHlwZS5oeWRyYXRlKG4scixhLGMsdSxkLGUsbSk6eCgpOncmMTI4JiYoRD1yLnR5cGUuaHlkcmF0ZShuLHIsYSxjLG9pKHMobikpLHUsZCxlLGYpKX1yZXR1cm4gQyE9bnVsbCYmZWkoQyxudWxsLGMsciksRH0scD0oZSx0LG4saSxvLHMpPT57c3x8PSEhdC5keW5hbWljQ2hpbGRyZW47bGV0e3R5cGU6bCxkeW5hbWljUHJvcHM6dSxwcm9wczpkLHBhdGNoRmxhZzpmLHNoYXBlRmxhZzpwLGRpcnM6aCx0cmFuc2l0aW9uOmd9PXQsXz1sPT09YGlucHV0YHx8bD09PWBvcHRpb25gLGI9ISF1O2lmKF98fGJ8fGYhPT0tMSl7aCYmb3IodCxudWxsLG4sYGNyZWF0ZWRgKTtsZXQgbD0hMTtpZih5KGUpKXtsPU1vKG51bGwsZykmJm4mJm4udm5vZGUucHJvcHMmJm4udm5vZGUucHJvcHMuYXBwZWFyO2xldCByPWUuY29udGVudC5maXJzdENoaWxkO2lmKGwpe2xldCBlPXIuZ2V0QXR0cmlidXRlKGBjbGFzc2ApO2UmJihyLiRjbHM9ZSksZy5iZWZvcmVFbnRlcihyKX12KHIsZSxuKSx0LmVsPWU9cn1pZihwJjE2JiYhKGQmJihkLmlubmVySFRNTHx8ZC50ZXh0Q29udGVudCkpKXtsZXQgcj1tKGUuZmlyc3RDaGlsZCx0LGUsbixpLG8scyk7Zm9yKHImJiFwaShlLDEpJiZyaSgpO3I7KXtsZXQgZT1yO3I9ci5uZXh0U2libGluZyxjKGUpfX1lbHNlIGlmKHAmOCl7bGV0IG49dC5jaGlsZHJlbjtuWzBdPT09YApgJiYoZS50YWdOYW1lPT09YFBSRWB8fGUudGFnTmFtZT09PWBURVhUQVJFQWApJiYobj1uLnNsaWNlKDEpKTtsZXR7dGV4dENvbnRlbnQ6cn09ZTtyIT09biYmciE9PW4ucmVwbGFjZSgvXHJcbnxcci9nLGAKYCkmJihwaShlLDApfHxyaSgpLGUudGV4dENvbnRlbnQ9dC5jaGlsZHJlbil9aWYoZCl7aWYoX3x8Ynx8IXN8fGYmNDgpe2xldCB0PWUudGFnTmFtZS5pbmNsdWRlcyhgLWApLGk9ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoYHN2Z2ApP2BzdmdgOmUubmFtZXNwYWNlVVJJLmluY2x1ZGVzKGBNYXRoTUxgKT9gbWF0aG1sYDp2b2lkIDA7Zm9yKGxldCBvIGluIGQpaWYoXyYmKG8uZW5kc1dpdGgoYHZhbHVlYCl8fG89PT1gaW5kZXRlcm1pbmF0ZWApfHxhKG8pJiYhRShvKXx8b1swXT09PWAuYHx8dCYmIUUobyl8fHUmJnUuaW5jbHVkZXMobykpe2lmKHVpKGUsbyxkW29dKSljb250aW51ZTtyKGUsbyxudWxsLGRbb10saSxuKX19ZWxzZSBpZihkLm9uQ2xpY2spcihlLGBvbkNsaWNrYCxudWxsLGQub25DbGljayx2b2lkIDAsbik7ZWxzZSBpZihmJjQmJlV0KGQuc3R5bGUpKWZvcihsZXQgZSBpbiBkLnN0eWxlKWQuc3R5bGVbZV19bGV0IHg7KHg9ZCYmZC5vblZub2RlQmVmb3JlTW91bnQpJiZ3cyh4LG4sdCksaCYmb3IodCxudWxsLG4sYGJlZm9yZU1vdW50YCksKCh4PWQmJmQub25Wbm9kZU1vdW50ZWQpfHxofHxsKSYmSm8oKCk9Pnt4JiZ3cyh4LG4sdCksbCYmZy5lbnRlcihlKSxoJiZvcih0LG51bGwsbixgbW91bnRlZGApfSxpKX1yZXR1cm4gZS5uZXh0U2libGluZ30sbT0oZSx0LHIsYSxzLGMsdSk9Pnt1fHw9ISF0LmR5bmFtaWNDaGlsZHJlbjtsZXQgZD10LmNoaWxkcmVuLHA9ZC5sZW5ndGgsbT0hMTtmb3IobGV0IHQ9MDt0PHA7dCsrKXtsZXQgaD11P2RbdF06ZFt0XT1icyhkW3RdKSxnPWgudHlwZT09PVpvO2U/KGcmJiF1JiZ0KzE8cCYmYnMoZFt0KzFdKS50eXBlPT09Wm8mJihsKGkoZS5kYXRhLnNsaWNlKGguY2hpbGRyZW4ubGVuZ3RoKSkscixvKGUpKSxlLmRhdGE9aC5jaGlsZHJlbiksZT1mKGUsaCxhLHMsYyx1KSk6ZyYmIWguY2hpbGRyZW4/bChoLmVsPWkoYGApLHIpOihtfHwobT0hMCxwaShyLDEpfHxyaSgpKSxuKG51bGwsaCxyLG51bGwsYSxzLG9pKHIpLGMpKX1yZXR1cm4gZX0saD0oZSx0LG4scixpLGEpPT57bGV0e3Nsb3RTY29wZUlkczpjfT10O2MmJihpPWk/aS5jb25jYXQoYyk6Yyk7bGV0IGQ9cyhlKSxmPW0obyhlKSx0LGQsbixyLGksYSk7cmV0dXJuIGYmJnNpKGYpJiZmLmRhdGE9PT1gXWA/byh0LmFuY2hvcj1mKToocmkoKSxsKHQuYW5jaG9yPXUoYF1gKSxkLGYpLGYpfSxnPShlLHQscixpLGEsbCk9PntpZihoaShlLHQpfHxyaSgpLHQuZWw9bnVsbCxsKXtsZXQgdD1fKGUpO2Zvcig7Oyl7bGV0IG49byhlKTtpZihuJiZuIT09dCljKG4pO2Vsc2UgYnJlYWt9fWxldCB1PW8oZSksZD1zKGUpO3JldHVybiBjKGUpLG4obnVsbCx0LGQsdSxyLGksb2koZCksYSksciYmKHIudm5vZGUuZWw9dC5lbCxzbyhyLHQuZWwpKSx1fSxfPShlLHQ9YFtgLG49YF1gKT0+e2xldCByPTA7Zm9yKDtlOylpZihlPW8oZSksZSYmc2koZSkmJihlLmRhdGE9PT10JiZyKyssZS5kYXRhPT09bikpe2lmKHI9PT0wKXJldHVybiBvKGUpO3ItLX1yZXR1cm4gZX0sdj0oZSx0LG4pPT57bGV0IHI9dC5wYXJlbnROb2RlO3ImJnIucmVwbGFjZUNoaWxkKGUsdCk7bGV0IGk9bjtmb3IoO2k7KWkudm5vZGUuZWw9PT10JiYoaS52bm9kZS5lbD1pLnN1YlRyZWUuZWw9ZSksaT1pLnBhcmVudH0seT1lPT5lLm5vZGVUeXBlPT09MSYmZS50YWdOYW1lPT09YFRFTVBMQVRFYDtyZXR1cm5bZCxmXX12YXIgbGk9bmV3IFNldChbYHNyY2AsYHNyY3NldGAsYGhyZWZgLGBwb3N0ZXJgXSk7ZnVuY3Rpb24gdWkoZSx0LG4pe3JldHVybiBsaS5oYXModCk/ZS5nZXRBdHRyaWJ1dGUodCk9PT0obj09bnVsbD9udWxsOmAke259YCk6ITF9dmFyIGRpPWBkYXRhLWFsbG93LW1pc21hdGNoYCxmaT17MDpgdGV4dGAsMTpgY2hpbGRyZW5gLDI6YGNsYXNzYCwzOmBzdHlsZWAsNDpgYXR0cmlidXRlYH07ZnVuY3Rpb24gcGkoZSx0KXtpZih0PT09MHx8dD09PTEpZm9yKDtlJiYhZS5oYXNBdHRyaWJ1dGUoZGkpOyllPWUucGFyZW50RWxlbWVudDtyZXR1cm4gbWkoZSYmZS5nZXRBdHRyaWJ1dGUoZGkpLHQpfWZ1bmN0aW9uIG1pKGUsdCl7aWYoZT09bnVsbClyZXR1cm4hMTtpZihlPT09YGApcmV0dXJuITA7e2xldCBuPWUuc3BsaXQoYCxgKTtyZXR1cm4gdD09PTAmJm4uaW5jbHVkZXMoYGNoaWxkcmVuYCk/ITA6bi5pbmNsdWRlcyhmaVt0XSl9fWZ1bmN0aW9uIGhpKGUsdCl7cmV0dXJuIHBpKGUucGFyZW50RWxlbWVudCwxKXx8Z2koZSl8fF9pKHQpfWZ1bmN0aW9uIGdpKGUpe3JldHVybiBlLm5vZGVUeXBlPT09MSYmbWkoZS5nZXRBdHRyaWJ1dGUoZGkpLDEpfWZ1bmN0aW9uIF9pKHtwcm9wczplfSl7bGV0IHQ9ZSYmZVtkaV07cmV0dXJuIHR5cGVvZiB0PT1gc3RyaW5nYCYmbWkodCwxKX12YXIgdmk9b2UoKS5yZXF1ZXN0SWRsZUNhbGxiYWNrfHwoZT0+c2V0VGltZW91dChlLDEpKSx5aT1vZSgpLmNhbmNlbElkbGVDYWxsYmFja3x8KGU9PmNsZWFyVGltZW91dChlKSksYmk9KGU9MWU0KT0+dD0+e2xldCBuPXZpKHQse3RpbWVvdXQ6ZX0pO3JldHVybigpPT55aShuKX07ZnVuY3Rpb24geGkoZSl7bGV0e3RvcDp0LGxlZnQ6bixib3R0b206cixyaWdodDppfT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtpbm5lckhlaWdodDphLGlubmVyV2lkdGg6b309d2luZG93O3JldHVybih0PjAmJnQ8YXx8cj4wJiZyPGEpJiYobj4wJiZuPG98fGk+MCYmaTxvKX12YXIgU2k9ZT0+KHQsbik9PntsZXQgcj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZT0+e2ZvcihsZXQgbiBvZiBlKWlmKG4uaXNJbnRlcnNlY3Rpbmcpe3IuZGlzY29ubmVjdCgpLHQoKTticmVha319LGUpO3JldHVybiBuKGU9PntpZihlIGluc3RhbmNlb2YgRWxlbWVudCl7aWYoeGkoZSkpcmV0dXJuIHQoKSxyLmRpc2Nvbm5lY3QoKSwhMTtyLm9ic2VydmUoZSl9fSksKCk9PnIuZGlzY29ubmVjdCgpfSxDaT1lPT50PT57aWYoZSl7bGV0IG49bWF0Y2hNZWRpYShlKTtpZihuLm1hdGNoZXMpdCgpO2Vsc2UgcmV0dXJuIG4uYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCx0LHtvbmNlOiEwfSksKCk9Pm4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCx0KX19LHdpPShlPVtdKT0+KHQsbik9PntfKGUpJiYoZT1bZV0pO2xldCByPSExLGk9ZT0+e3J8fChyPSEwLGEoKSx0KCksZS50YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgZS5jb25zdHJ1Y3RvcihlLnR5cGUsZSkpKX0sYT0oKT0+e24odD0+e2ZvcihsZXQgbiBvZiBlKXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGkpfSl9O3JldHVybiBuKHQ9Pntmb3IobGV0IG4gb2YgZSl0LmFkZEV2ZW50TGlzdGVuZXIobixpLHtvbmNlOiEwfSl9KSxhfTtmdW5jdGlvbiBUaShlLHQpe2lmKHNpKGUpJiZlLmRhdGE9PT1gW2Ape2xldCBuPTEscj1lLm5leHRTaWJsaW5nO2Zvcig7cjspe2lmKHIubm9kZVR5cGU9PT0xKXtpZih0KHIpPT09ITEpYnJlYWt9ZWxzZSBpZihzaShyKSl7aWYoci5kYXRhPT09YF1gKXtpZigtLW49PT0wKWJyZWFrfWVsc2Ugci5kYXRhPT09YFtgJiZuKyt9cj1yLm5leHRTaWJsaW5nfX1lbHNlIHQoZSl9dmFyIEVpPWU9PiEhZS50eXBlLl9fYXN5bmNMb2FkZXI7ZnVuY3Rpb24gRGkoZSl7ZyhlKSYmKGU9e2xvYWRlcjplfSk7bGV0e2xvYWRlcjp0LGxvYWRpbmdDb21wb25lbnQ6bixlcnJvckNvbXBvbmVudDpyLGRlbGF5Omk9MjAwLGh5ZHJhdGU6YSx0aW1lb3V0Om8sc3VzcGVuc2libGU6cz0hMCxvbkVycm9yOmN9PWUsbD1udWxsLHUsZD0wLGY9KCk9PihkKyssbD1udWxsLHAoKSkscD0oKT0+e2xldCBlO3JldHVybiBsfHwoZT1sPXQoKS5jYXRjaChlPT57aWYoZT1lIGluc3RhbmNlb2YgRXJyb3I/ZTpFcnJvcihTdHJpbmcoZSkpLGMpcmV0dXJuIG5ldyBQcm9taXNlKCh0LG4pPT57YyhlLCgpPT50KGYoKSksKCk9Pm4oZSksZCsxKX0pO3Rocm93IGV9KS50aGVuKHQ9PmUhPT1sJiZsP2w6KHQmJih0Ll9fZXNNb2R1bGV8fHRbU3ltYm9sLnRvU3RyaW5nVGFnXT09PWBNb2R1bGVgKSYmKHQ9dC5kZWZhdWx0KSx1PXQsdCkpKX07cmV0dXJuIEpyKHtuYW1lOmBBc3luY0NvbXBvbmVudFdyYXBwZXJgLF9fYXN5bmNMb2FkZXI6cCxfX2FzeW5jSHlkcmF0ZShlLHQsbil7bGV0IHI9ZS5pc0Nvbm5lY3RlZCxpPSExOyh0LmJ1fHw9W10pLnB1c2goKCk9Pmk9ITApO2xldCBvPSgpPT57aXx8IWUucGFyZW50Tm9kZXx8ciYmIWUuaXNDb25uZWN0ZWR8fG4oKX0scz1hPygpPT57bGV0IG49YShvLHQ9PlRpKGUsdCkpO24mJih0LmJ1bXx8PVtdKS5wdXNoKG4pfTpvO3U/cygpOnAoKS50aGVuKCgpPT4hdC5pc1VubW91bnRlZCYmcygpKX0sZ2V0IF9fYXN5bmNSZXNvbHZlZCgpe3JldHVybiB1fSxzZXR1cCgpe2xldCBlPUo7aWYoWHIoZSksdSlyZXR1cm4oKT0+T2kodSxlKTtsZXQgdD10PT57bD1udWxsLE1uKHQsZSwxMywhcil9O2lmKHMmJmUuc3VzcGVuc2V8fE5zKXJldHVybiBwKCkudGhlbih0PT4oKT0+T2kodCxlKSkuY2F0Y2goZT0+KHQoZSksKCk9PnI/cShyLHtlcnJvcjplfSk6bnVsbCkpO2xldCBhPVh0KCExKSxjPVh0KCksZD1YdCghIWkpLGYsbTtyZXR1cm4gR2koKCk9PntmIT1udWxsJiZjbGVhclRpbWVvdXQoZiksbSE9bnVsbCYmY2xlYXJUaW1lb3V0KG0pfSksaSYmKG09c2V0VGltZW91dCgoKT0+e2UuaXNVbm1vdW50ZWR8fChkLnZhbHVlPSExKX0saSkpLG8hPW51bGwmJihmPXNldFRpbWVvdXQoKCk9PntpZighZS5pc1VubW91bnRlZCYmIWEudmFsdWUmJiFjLnZhbHVlKXtsZXQgZT1FcnJvcihgQXN5bmMgY29tcG9uZW50IHRpbWVkIG91dCBhZnRlciAke299bXMuYCk7dChlKSxjLnZhbHVlPWV9fSxvKSkscCgpLnRoZW4oKCk9PntlLmlzVW5tb3VudGVkfHwoYS52YWx1ZT0hMCxlLnBhcmVudCYma2koZS5wYXJlbnQudm5vZGUpJiZlLnBhcmVudC51cGRhdGUoKSl9KS5jYXRjaChuPT57aWYoZS5pc1VubW91bnRlZCl7bD1udWxsO3JldHVybn10KG4pLGMudmFsdWU9bn0pLCgpPT57aWYoYS52YWx1ZSYmdSlyZXR1cm4gT2kodSxlKTtpZihjLnZhbHVlJiZyKXJldHVybiBxKHIse2Vycm9yOmMudmFsdWV9KTtpZihuJiYhZC52YWx1ZSlyZXR1cm4gT2kobixlKX19fSl9ZnVuY3Rpb24gT2koZSx0KXtsZXR7cmVmOm4scHJvcHM6cixjaGlsZHJlbjppLGNlOmF9PXQudm5vZGUsbz1xKGUscixpKTtyZXR1cm4gby5yZWY9bixvLmNlPWEsZGVsZXRlIHQudm5vZGUuY2Usb312YXIga2k9ZT0+ZS50eXBlLl9faXNLZWVwQWxpdmUsQWk9e25hbWU6YEtlZXBBbGl2ZWAsX19pc0tlZXBBbGl2ZTohMCxwcm9wczp7aW5jbHVkZTpbU3RyaW5nLFJlZ0V4cCxBcnJheV0sZXhjbHVkZTpbU3RyaW5nLFJlZ0V4cCxBcnJheV0sbWF4OltTdHJpbmcsTnVtYmVyXX0sc2V0dXAoZSx7c2xvdHM6dH0pe2xldCBuPVkoKSxyPW4uY3R4O2lmKCFyLnJlbmRlcmVyKXJldHVybigpPT57bGV0IGU9dC5kZWZhdWx0JiZ0LmRlZmF1bHQoKTtyZXR1cm4gZSYmZS5sZW5ndGg9PT0xP2VbMF06ZX07bGV0IGk9bmV3IE1hcCxhPW5ldyBTZXQsbz1udWxsLHM9bi5zdXNwZW5zZSx7cmVuZGVyZXI6e3A6YyxtOmwsdW06dSxvOntjcmVhdGVFbGVtZW50OmR9fX09cixmPWQoYGRpdmApO3IuYWN0aXZhdGU9KGUsdCxuLHIsaSk9PntsZXQgYT1lLmNvbXBvbmVudDtsKGUsdCxuLDAscyksYyhhLnZub2RlLGUsdCxuLGEscyxyLGUuc2xvdFNjb3BlSWRzLGkpLFcoKCk9PnthLmlzRGVhY3RpdmF0ZWQ9ITEsYS5hJiZNKGEuYSk7bGV0IHQ9ZS5wcm9wcyYmZS5wcm9wcy5vblZub2RlTW91bnRlZDt0JiZ3cyh0LGEucGFyZW50LGUpfSxzKX0sci5kZWFjdGl2YXRlPWU9PntsZXQgdD1lLmNvbXBvbmVudDtJbyh0Lm0pLElvKHQuYSksbChlLGYsbnVsbCwxLHMpLFcoKCk9Pnt0LmRhJiZNKHQuZGEpO2xldCBuPWUucHJvcHMmJmUucHJvcHMub25Wbm9kZVVubW91bnRlZDtuJiZ3cyhuLHQucGFyZW50LGUpLHQuaXNEZWFjdGl2YXRlZD0hMH0scyl9O2Z1bmN0aW9uIHAoZSl7SWkoZSksdShlLG4scywhMCl9ZnVuY3Rpb24gbShlKXtpLmZvckVhY2goKHQsbik9PntsZXQgcj1HcyhFaSh0KT90LnR5cGUuX19hc3luY1Jlc29sdmVkfHx7fTp0LnR5cGUpO3ImJiFlKHIpJiZoKG4pfSl9ZnVuY3Rpb24gaChlKXtsZXQgdD1pLmdldChlKTt0JiYoIW98fCFscyh0LG8pKT9wKHQpOm8mJklpKG8pLGkuZGVsZXRlKGUpLGEuZGVsZXRlKGUpfWhyKCgpPT5bZS5pbmNsdWRlLGUuZXhjbHVkZV0sKFtlLHRdKT0+e2UmJm0odD0+amkoZSx0KSksdCYmbShlPT4hamkodCxlKSl9LHtmbHVzaDpgcG9zdGAsZGVlcDohMH0pO2xldCBnPW51bGwsXz0oKT0+e2chPW51bGwmJihSbyhuLnN1YlRyZWUudHlwZSk/VygoKT0+e2kuc2V0KGcsTGkobi5zdWJUcmVlKSl9LG4uc3ViVHJlZS5zdXNwZW5zZSk6aS5zZXQoZyxMaShuLnN1YlRyZWUpKSl9O3JldHVybiBWaShfKSxVaShfKSxXaSgoKT0+e2kuZm9yRWFjaChlPT57bGV0e3N1YlRyZWU6dCxzdXNwZW5zZTpyfT1uLGk9TGkodCk7aWYoZS50eXBlPT09aS50eXBlJiZlLmtleT09PWkua2V5KXtJaShpKTtsZXQgZT1pLmNvbXBvbmVudC5kYTtlJiZXKGUscik7cmV0dXJufXAoZSl9KX0pLCgpPT57aWYoZz1udWxsLCF0LmRlZmF1bHQpcmV0dXJuIG89bnVsbDtsZXQgbj10LmRlZmF1bHQoKSxyPW5bMF07aWYobi5sZW5ndGg+MSlyZXR1cm4gbz1udWxsLG47aWYoIWNzKHIpfHwhKHIuc2hhcGVGbGFnJjQpJiYhKHIuc2hhcGVGbGFnJjEyOCkpcmV0dXJuIG89bnVsbCxyO2xldCBzPUxpKHIpO2lmKHMudHlwZT09PUspcmV0dXJuIG89bnVsbCxzO2xldCBjPXMudHlwZSxsPUdzKEVpKHMpP3MudHlwZS5fX2FzeW5jUmVzb2x2ZWR8fHt9OmMpLHtpbmNsdWRlOnUsZXhjbHVkZTpkLG1heDpmfT1lO2lmKHUmJighbHx8IWppKHUsbCkpfHxkJiZsJiZqaShkLGwpKXJldHVybiBzLnNoYXBlRmxhZyY9LTI1NyxvPXMscjtsZXQgcD1zLmtleT09bnVsbD9jOnMua2V5LG09aS5nZXQocCk7cmV0dXJuIHMuZWwmJihzPWdzKHMpLHIuc2hhcGVGbGFnJjEyOCYmKHIuc3NDb250ZW50PXMpKSxnPXAsbT8ocy5lbD1tLmVsLHMuY29tcG9uZW50PW0uY29tcG9uZW50LHMudHJhbnNpdGlvbiYmS3IocyxzLnRyYW5zaXRpb24pLHMuc2hhcGVGbGFnfD01MTIsYS5kZWxldGUocCksYS5hZGQocCkpOihhLmFkZChwKSxmJiZhLnNpemU+cGFyc2VJbnQoZiwxMCkmJmgoYS52YWx1ZXMoKS5uZXh0KCkudmFsdWUpKSxzLnNoYXBlRmxhZ3w9MjU2LG89cyxSbyhyLnR5cGUpP3I6c319fTtmdW5jdGlvbiBqaShlLHQpe3JldHVybiBkKGUpP2Uuc29tZShlPT5qaShlLHQpKTpfKGUpP2Uuc3BsaXQoYCxgKS5pbmNsdWRlcyh0KTpoKGUpPyhlLmxhc3RJbmRleD0wLGUudGVzdCh0KSk6ITF9ZnVuY3Rpb24gTWkoZSx0KXtQaShlLGBhYCx0KX1mdW5jdGlvbiBOaShlLHQpe1BpKGUsYGRhYCx0KX1mdW5jdGlvbiBQaShlLHQsbj1KKXtsZXQgcj1lLl9fd2RjfHw9KCk9PntsZXQgdD1uO2Zvcig7dDspe2lmKHQuaXNEZWFjdGl2YXRlZClyZXR1cm47dD10LnBhcmVudH1yZXR1cm4gZSgpfTtpZihSaSh0LHIsbiksbil7bGV0IGU9bi5wYXJlbnQ7Zm9yKDtlJiZlLnBhcmVudDspa2koZS5wYXJlbnQudm5vZGUpJiZGaShyLHQsbixlKSxlPWUucGFyZW50fX1mdW5jdGlvbiBGaShlLHQsbixyKXtsZXQgaT1SaSh0LGUsciwhMCk7R2koKCk9PntjKHJbdF0saSl9LG4pfWZ1bmN0aW9uIElpKGUpe2Uuc2hhcGVGbGFnJj0tMjU3LGUuc2hhcGVGbGFnJj0tNTEzfWZ1bmN0aW9uIExpKGUpe3JldHVybiBlLnNoYXBlRmxhZyYxMjg/ZS5zc0NvbnRlbnQ6ZX1mdW5jdGlvbiBSaShlLHQsbj1KLHI9ITEpe2lmKG4pe2xldCBpPW5bZV18fChuW2VdPVtdKSxhPXQuX193ZWh8fD0oLi4ucik9PntXZSgpO2xldCBpPUFzKG4pLGE9am4odCxuLGUscik7cmV0dXJuIGkoKSxHZSgpLGF9O3JldHVybiByP2kudW5zaGlmdChhKTppLnB1c2goYSksYX19dmFyIHppPWU9Pih0LG49Sik9PnsoIU5zfHxlPT09YHNwYCkmJlJpKGUsKC4uLmUpPT50KC4uLmUpLG4pfSxCaT16aShgYm1gKSxWaT16aShgbWApLEhpPXppKGBidWApLFVpPXppKGB1YCksV2k9emkoYGJ1bWApLEdpPXppKGB1bWApLEtpPXppKGBzcGApLHFpPXppKGBydGdgKSxKaT16aShgcnRjYCk7ZnVuY3Rpb24gWWkoZSx0PUope1JpKGBlY2AsZSx0KX12YXIgWGk9YGNvbXBvbmVudHNgLFppPWBkaXJlY3RpdmVzYDtmdW5jdGlvbiBRaShlLHQpe3JldHVybiBuYShYaSxlLCEwLHQpfHxlfXZhciAkaT1TeW1ib2wuZm9yKGB2LW5kY2ApO2Z1bmN0aW9uIGVhKGUpe3JldHVybiBfKGUpP25hKFhpLGUsITEpfHxlOmV8fCRpfWZ1bmN0aW9uIHRhKGUpe3JldHVybiBuYShaaSxlKX1mdW5jdGlvbiBuYShlLHQsbj0hMCxyPSExKXtsZXQgaT1VfHxKO2lmKGkpe2xldCBuPWkudHlwZTtpZihlPT09WGkpe2xldCBlPUdzKG4sITEpO2lmKGUmJihlPT09dHx8ZT09PU8odCl8fGU9PT1BKE8odCkpKSlyZXR1cm4gbn1sZXQgYT1yYShpW2VdfHxuW2VdLHQpfHxyYShpLmFwcENvbnRleHRbZV0sdCk7cmV0dXJuIWEmJnI/bjphfX1mdW5jdGlvbiByYShlLHQpe3JldHVybiBlJiYoZVt0XXx8ZVtPKHQpXXx8ZVtBKE8odCkpXSl9ZnVuY3Rpb24gaWEoZSx0LG4scil7bGV0IGksYT1uJiZuW3JdLG89ZChlKTtpZihvfHxfKGUpKXtsZXQgbj1vJiZVdChlKSxyPSExLHM9ITE7biYmKHI9IUd0KGUpLHM9V3QoZSksZT1pdChlKSksaT1BcnJheShlLmxlbmd0aCk7Zm9yKGxldCBuPTAsbz1lLmxlbmd0aDtuPG87bisrKWlbbl09dChyP3M/WXQoSnQoZVtuXSkpOkp0KGVbbl0pOmVbbl0sbix2b2lkIDAsYSYmYVtuXSl9ZWxzZSBpZih0eXBlb2YgZT09YG51bWJlcmApe2k9QXJyYXkoZSk7Zm9yKGxldCBuPTA7bjxlO24rKylpW25dPXQobisxLG4sdm9pZCAwLGEmJmFbbl0pfWVsc2UgaWYoeShlKSl7aWYoZVtTeW1ib2wuaXRlcmF0b3JdKWk9QXJyYXkuZnJvbShlLChlLG4pPT50KGUsbix2b2lkIDAsYSYmYVtuXSkpO2Vsc2V7bGV0IG49T2JqZWN0LmtleXMoZSk7aT1BcnJheShuLmxlbmd0aCk7Zm9yKGxldCByPTAsbz1uLmxlbmd0aDtyPG87cisrKXtsZXQgbz1uW3JdO2lbcl09dChlW29dLG8scixhJiZhW3JdKX19fWVsc2UgaT1bXTtyZXR1cm4gbiYmKG5bcl09aSksaX1mdW5jdGlvbiBhYShlLHQpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtsZXQgcj10W25dO2lmKGQocikpZm9yKGxldCB0PTA7dDxyLmxlbmd0aDt0KyspZVtyW3RdLm5hbWVdPXJbdF0uZm47ZWxzZSByJiYoZVtyLm5hbWVdPXIua2V5PyguLi5lKT0+e2xldCB0PXIuZm4oLi4uZSk7cmV0dXJuIHQmJih0LmtleT1yLmtleSksdH06ci5mbil9cmV0dXJuIGV9ZnVuY3Rpb24gb2EoZSx0LG4scixpLGEpe2lmKG4/Pz17fSxVLmNlfHxVLnBhcmVudCYmRWkoVS5wYXJlbnQpJiZVLnBhcmVudC5jZSl7bGV0IGU9YSE9bnVsbCYmbi5rZXk9PW51bGw/cyh7fSxuLHtrZXk6YX0pOm4saT1PYmplY3Qua2V5cyhlKS5sZW5ndGg+MDtyZXR1cm4gdCE9PSJkZWZhdWx0IiYmKGUubmFtZT10KSx0cygpLHNzKEcsbnVsbCxbcShgc2xvdGAsZSxyJiZyKCkpXSxpPy0yOjY0KX1sZXQgbz1lW3RdO28mJm8uX2MmJihvLl9kPSExKTtsZXQgYz0kby5sZW5ndGg7dHMoKTtsZXQgbDt0cnl7bGV0IGk9byYmc2EobyhuKSkscz1uLmtleXx8YXx8aSYmaS5rZXk7bD1zcyhHLHtrZXk6KHMmJiF2KHMpP3M6YF8ke3R9YCkrKCFpJiZyP2BfZmJgOmBgKX0saXx8KHI/cigpOltdKSxpJiZlLl89PT0xPzY0Oi0yKX1jYXRjaChlKXtmb3IobGV0IGU9JG8ubGVuZ3RoO2U+YztlLS0pbnMoKTt0aHJvdyBlfWZpbmFsbHl7byYmby5fYyYmKG8uX2Q9ITApfXJldHVybiFpJiZsLnNjb3BlSWQmJihsLnNsb3RTY29wZUlkcz1bbC5zY29wZUlkK2Atc2BdKSxsfWZ1bmN0aW9uIHNhKGUpe3JldHVybiBlLnNvbWUoZT0+IWNzKGUpfHwhKGUudHlwZT09PUt8fGUudHlwZT09PUcmJiFzYShlLmNoaWxkcmVuKSkpP2U6bnVsbH1mdW5jdGlvbiBjYShlLHQpe2xldCBuPXt9O2ZvcihsZXQgciBpbiBlKW5bdCYmL1tBLVpdLy50ZXN0KHIpP2Bvbjoke3J9YDpuZShyKV09ZVtyXTtyZXR1cm4gbn12YXIgbGE9ZT0+ZT9NcyhlKT9XcyhlKTpsYShlLnBhcmVudCk6bnVsbCx1YT1zKE9iamVjdC5jcmVhdGUobnVsbCkseyQ6ZT0+ZSwkZWw6ZT0+ZS52bm9kZS5lbCwkZGF0YTplPT5lLmRhdGEsJHByb3BzOmU9PmUucHJvcHMsJGF0dHJzOmU9PmUuYXR0cnMsJHNsb3RzOmU9PmUuc2xvdHMsJHJlZnM6ZT0+ZS5yZWZzLCRwYXJlbnQ6ZT0+bGEoZS5wYXJlbnQpLCRyb290OmU9PmxhKGUucm9vdCksJGhvc3Q6ZT0+ZS5jZSwkZW1pdDplPT5lLmVtaXQsJG9wdGlvbnM6ZT0+UGEoZSksJGZvcmNlVXBkYXRlOmU9PmUuZnx8PSgpPT57VW4oZS51cGRhdGUpfSwkbmV4dFRpY2s6ZT0+ZS5ufHw9Vm4uYmluZChlLnByb3h5KSwkd2F0Y2g6ZT0+X3IuYmluZChlKX0pLGRhPShlLG4pPT5lIT09dCYmIWUuX19pc1NjcmlwdFNldHVwJiZ1KGUsbiksZmE9e2dldCh7XzplfSxuKXtpZihuPT09YF9fdl9za2lwYClyZXR1cm4hMDtsZXR7Y3R4OnIsc2V0dXBTdGF0ZTppLGRhdGE6YSxwcm9wczpvLGFjY2Vzc0NhY2hlOnMsdHlwZTpjLGFwcENvbnRleHQ6bH09ZTtpZihuWzBdIT09YCRgKXtsZXQgZT1zW25dO2lmKGUhPT12b2lkIDApc3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gaVtuXTtjYXNlIDI6cmV0dXJuIGFbbl07Y2FzZSA0OnJldHVybiByW25dO2Nhc2UgMzpyZXR1cm4gb1tuXX1lbHNlIGlmKGRhKGksbikpcmV0dXJuIHNbbl09MSxpW25dO2Vsc2UgaWYoYSE9PXQmJnUoYSxuKSlyZXR1cm4gc1tuXT0yLGFbbl07ZWxzZSBpZih1KG8sbikpcmV0dXJuIHNbbl09MyxvW25dO2Vsc2UgaWYociE9PXQmJnUocixuKSlyZXR1cm4gc1tuXT00LHJbbl07ZWxzZSBrYSYmKHNbbl09MCl9bGV0IGQ9dWFbbl0sZixwO2lmKGQpcmV0dXJuIG49PT1gJGF0dHJzYCYmQihlLmF0dHJzLGBnZXRgLGBgKSxkKGUpO2lmKChmPWMuX19jc3NNb2R1bGVzKSYmKGY9ZltuXSkpcmV0dXJuIGY7aWYociE9PXQmJnUocixuKSlyZXR1cm4gc1tuXT00LHJbbl07aWYocD1sLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLHUocCxuKSlyZXR1cm4gcFtuXX0sc2V0KHtfOmV9LG4scil7bGV0e2RhdGE6aSxzZXR1cFN0YXRlOmEsY3R4Om99PWU7cmV0dXJuIGRhKGEsbik/KGFbbl09ciwhMCk6aSE9PXQmJnUoaSxuKT8oaVtuXT1yLCEwKTp1KGUucHJvcHMsbil8fG5bMF09PT1gJGAmJm4uc2xpY2UoMSlpbiBlPyExOihvW25dPXIsITApfSxoYXMoe186e2RhdGE6ZSxzZXR1cFN0YXRlOm4sYWNjZXNzQ2FjaGU6cixjdHg6aSxhcHBDb250ZXh0OmEscHJvcHM6byx0eXBlOnN9fSxjKXtsZXQgbDtyZXR1cm4hIShyW2NdfHxlIT09dCYmY1swXSE9PWAkYCYmdShlLGMpfHxkYShuLGMpfHx1KG8sYyl8fHUoaSxjKXx8dSh1YSxjKXx8dShhLmNvbmZpZy5nbG9iYWxQcm9wZXJ0aWVzLGMpfHwobD1zLl9fY3NzTW9kdWxlcykmJmxbY10pfSxkZWZpbmVQcm9wZXJ0eShlLHQsbil7cmV0dXJuIG4uZ2V0PT1udWxsP3UobixgdmFsdWVgKSYmdGhpcy5zZXQoZSx0LG4udmFsdWUsbnVsbCk6ZS5fLmFjY2Vzc0NhY2hlW3RdPTAsUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsbil9fSxwYT1zKHt9LGZhLHtnZXQoZSx0KXtpZih0IT09U3ltYm9sLnVuc2NvcGFibGVzKXJldHVybiBmYS5nZXQoZSx0LGUpfSxoYXMoZSx0KXtyZXR1cm4gdFswXSE9PWBfYCYmIVAodCl9fSk7ZnVuY3Rpb24gbWEoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBoYSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGdhKGUpe31mdW5jdGlvbiBfYShlKXt9ZnVuY3Rpb24gdmEoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB5YSgpe31mdW5jdGlvbiBiYShlLHQpe3JldHVybiBudWxsfWZ1bmN0aW9uIHhhKCl7cmV0dXJuIENhKGB1c2VTbG90c2ApLnNsb3RzfWZ1bmN0aW9uIFNhKCl7cmV0dXJuIENhKGB1c2VBdHRyc2ApLmF0dHJzfWZ1bmN0aW9uIENhKGUpe2xldCB0PVkoKTtyZXR1cm4gdC5zZXR1cENvbnRleHR8fD1Vcyh0KX1mdW5jdGlvbiB3YShlKXtyZXR1cm4gZChlKT9lLnJlZHVjZSgoZSx0KT0+KGVbdF09bnVsbCxlKSx7fSk6ZX1mdW5jdGlvbiBUYShlLHQpe2xldCBuPXdhKGUpO2ZvcihsZXQgZSBpbiB0KXtpZihlLnN0YXJ0c1dpdGgoYF9fc2tpcGApKWNvbnRpbnVlO2xldCByPW5bZV07cj9kKHIpfHxnKHIpP3I9bltlXT17dHlwZTpyLGRlZmF1bHQ6dFtlXX06ci5kZWZhdWx0PXRbZV06cj09PW51bGwmJihyPW5bZV09e2RlZmF1bHQ6dFtlXX0pLHImJnRbYF9fc2tpcF8ke2V9YF0mJihyLnNraXBGYWN0b3J5PSEwKX1yZXR1cm4gbn1mdW5jdGlvbiBFYShlLHQpe3JldHVybiFlfHwhdD9lfHx0OmQoZSkmJmQodCk/ZS5jb25jYXQodCk6cyh7fSx3YShlKSx3YSh0KSl9ZnVuY3Rpb24gRGEoZSx0KXtsZXQgbj17fTtmb3IobGV0IHIgaW4gZSl0LmluY2x1ZGVzKHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZVtyXX0pO3JldHVybiBufWZ1bmN0aW9uIE9hKGUpe2xldCB0PVkoKSxuPU5zLHI9ZSgpO2pzKCksbiYma3MoITEpO2xldCBpPSgpPT57QXModCksbiYma3MoITApfSxhPSgpPT57WSgpIT09dCYmdC5zY29wZS5vZmYoKSxqcygpLG4mJmtzKCExKX07cmV0dXJuIGIocikmJihyPXIuY2F0Y2goZT0+e3Rocm93IGkoKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKGEpKSxlfSkpLFtyLCgpPT57aSgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYSl9XX12YXIga2E9ITA7ZnVuY3Rpb24gQWEoZSl7bGV0IHQ9UGEoZSksbj1lLnByb3h5LGk9ZS5jdHg7a2E9ITEsdC5iZWZvcmVDcmVhdGUmJk1hKHQuYmVmb3JlQ3JlYXRlLGUsYGJjYCk7bGV0e2RhdGE6YSxjb21wdXRlZDpvLG1ldGhvZHM6cyx3YXRjaDpjLHByb3ZpZGU6bCxpbmplY3Q6dSxjcmVhdGVkOmYsYmVmb3JlTW91bnQ6cCxtb3VudGVkOm0sYmVmb3JlVXBkYXRlOmgsdXBkYXRlZDpfLGFjdGl2YXRlZDp2LGRlYWN0aXZhdGVkOmIsYmVmb3JlRGVzdHJveTp4LGJlZm9yZVVubW91bnQ6UyxkZXN0cm95ZWQ6Qyx1bm1vdW50ZWQ6dyxyZW5kZXI6VCxyZW5kZXJUcmFja2VkOkUscmVuZGVyVHJpZ2dlcmVkOkQsZXJyb3JDYXB0dXJlZDplZSxzZXJ2ZXJQcmVmZXRjaDpPLGV4cG9zZTp0ZSxpbmhlcml0QXR0cnM6ayxjb21wb25lbnRzOkEsZGlyZWN0aXZlczpuZSxmaWx0ZXJzOmp9PXQ7aWYodSYmamEodSxpLG51bGwpLHMpZm9yKGxldCBlIGluIHMpe2xldCB0PXNbZV07Zyh0KSYmKGlbZV09dC5iaW5kKG4pKX1pZihhKXtsZXQgdD1hLmNhbGwobixuKTt5KHQpJiYoZS5kYXRhPVJ0KHQpKX1pZihrYT0hMCxvKWZvcihsZXQgZSBpbiBvKXtsZXQgdD1vW2VdLGE9cXMoe2dldDpnKHQpP3QuYmluZChuLG4pOmcodC5nZXQpP3QuZ2V0LmJpbmQobixuKTpyLHNldDohZyh0KSYmZyh0LnNldCk/dC5zZXQuYmluZChuKTpyfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5hLnZhbHVlLHNldDplPT5hLnZhbHVlPWV9KX1pZihjKWZvcihsZXQgZSBpbiBjKU5hKGNbZV0saSxuLGUpO2lmKGwpe2xldCBlPWcobCk/bC5jYWxsKG4pOmw7UmVmbGVjdC5vd25LZXlzKGUpLmZvckVhY2godD0+e3NyKHQsZVt0XSl9KX1mJiZNYShmLGUsYGNgKTtmdW5jdGlvbiBNKGUsdCl7ZCh0KT90LmZvckVhY2godD0+ZSh0LmJpbmQobikpKTp0JiZlKHQuYmluZChuKSl9aWYoTShCaSxwKSxNKFZpLG0pLE0oSGksaCksTShVaSxfKSxNKE1pLHYpLE0oTmksYiksTShZaSxlZSksTShKaSxFKSxNKHFpLEQpLE0oV2ksUyksTShHaSx3KSxNKEtpLE8pLGQodGUpKXtpZih0ZS5sZW5ndGgpe2xldCB0PWUuZXhwb3NlZHx8PXt9O3RlLmZvckVhY2goZT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2dldDooKT0+bltlXSxzZXQ6dD0+bltlXT10LGVudW1lcmFibGU6ITB9KX0pfWVsc2UgZS5leHBvc2VkfHw9e319VCYmZS5yZW5kZXI9PT1yJiYoZS5yZW5kZXI9VCksayE9bnVsbCYmKGUuaW5oZXJpdEF0dHJzPWspLEEmJihlLmNvbXBvbmVudHM9QSksbmUmJihlLmRpcmVjdGl2ZXM9bmUpLE8mJlhyKGUpfWZ1bmN0aW9uIGphKGUsdCxuPXIpe2QoZSkmJihlPXphKGUpKTtmb3IobGV0IG4gaW4gZSl7bGV0IHI9ZVtuXSxpO2k9eShyKT9gZGVmYXVsdGBpbiByP2NyKHIuZnJvbXx8bixyLmRlZmF1bHQsITApOmNyKHIuZnJvbXx8bik6Y3IociksSChpKT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmkudmFsdWUsc2V0OmU9PmkudmFsdWU9ZX0pOnRbbl09aX19ZnVuY3Rpb24gTWEoZSx0LG4pe2puKGQoZSk/ZS5tYXAoZT0+ZS5iaW5kKHQucHJveHkpKTplLmJpbmQodC5wcm94eSksdCxuKX1mdW5jdGlvbiBOYShlLHQsbixyKXtsZXQgaT1yLmluY2x1ZGVzKGAuYCk/dnIobixyKTooKT0+bltyXTtpZihfKGUpKXtsZXQgbj10W2VdO2cobikmJmhyKGksbil9ZWxzZSBpZihnKGUpKWhyKGksZS5iaW5kKG4pKTtlbHNlIGlmKHkoZSkpe2lmKGQoZSkpZS5mb3JFYWNoKGU9Pk5hKGUsdCxuLHIpKTtlbHNle2xldCByPWcoZS5oYW5kbGVyKT9lLmhhbmRsZXIuYmluZChuKTp0W2UuaGFuZGxlcl07ZyhyKSYmaHIoaSxyLGUpfX19ZnVuY3Rpb24gUGEoZSl7bGV0IHQ9ZS50eXBlLHttaXhpbnM6bixleHRlbmRzOnJ9PXQse21peGluczppLG9wdGlvbnNDYWNoZTphLGNvbmZpZzp7b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOm99fT1lLmFwcENvbnRleHQscz1hLmdldCh0KSxjO3JldHVybiBzP2M9czohaS5sZW5ndGgmJiFuJiYhcj9jPXQ6KGM9e30saS5sZW5ndGgmJmkuZm9yRWFjaChlPT5GYShjLGUsbywhMCkpLEZhKGMsdCxvKSkseSh0KSYmYS5zZXQodCxjKSxjfWZ1bmN0aW9uIEZhKGUsdCxuLHI9ITEpe2xldHttaXhpbnM6aSxleHRlbmRzOmF9PXQ7YSYmRmEoZSxhLG4sITApLGkmJmkuZm9yRWFjaCh0PT5GYShlLHQsbiwhMCkpO2ZvcihsZXQgaSBpbiB0KWlmKCEociYmaT09PWBleHBvc2VgKSl7bGV0IHI9SWFbaV18fG4mJm5baV07ZVtpXT1yP3IoZVtpXSx0W2ldKTp0W2ldfXJldHVybiBlfXZhciBJYT17ZGF0YTpMYSxwcm9wczpIYSxlbWl0czpIYSxtZXRob2RzOlZhLGNvbXB1dGVkOlZhLGJlZm9yZUNyZWF0ZTpCYSxjcmVhdGVkOkJhLGJlZm9yZU1vdW50OkJhLG1vdW50ZWQ6QmEsYmVmb3JlVXBkYXRlOkJhLHVwZGF0ZWQ6QmEsYmVmb3JlRGVzdHJveTpCYSxiZWZvcmVVbm1vdW50OkJhLGRlc3Ryb3llZDpCYSx1bm1vdW50ZWQ6QmEsYWN0aXZhdGVkOkJhLGRlYWN0aXZhdGVkOkJhLGVycm9yQ2FwdHVyZWQ6QmEsc2VydmVyUHJlZmV0Y2g6QmEsY29tcG9uZW50czpWYSxkaXJlY3RpdmVzOlZhLHdhdGNoOlVhLHByb3ZpZGU6TGEsaW5qZWN0OlJhfTtmdW5jdGlvbiBMYShlLHQpe3JldHVybiB0P2U/ZnVuY3Rpb24oKXtyZXR1cm4gcyhnKGUpP2UuY2FsbCh0aGlzLHRoaXMpOmUsZyh0KT90LmNhbGwodGhpcyx0aGlzKTp0KX06dDplfWZ1bmN0aW9uIFJhKGUsdCl7cmV0dXJuIFZhKHphKGUpLHphKHQpKX1mdW5jdGlvbiB6YShlKXtpZihkKGUpKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0W2Vbbl1dPWVbbl07cmV0dXJuIHR9cmV0dXJuIGV9ZnVuY3Rpb24gQmEoZSx0KXtyZXR1cm4gZT9bLi4ubmV3IFNldChbXS5jb25jYXQoZSx0KSldOnR9ZnVuY3Rpb24gVmEoZSx0KXtyZXR1cm4gZT9zKE9iamVjdC5jcmVhdGUobnVsbCksZSx0KTp0fWZ1bmN0aW9uIEhhKGUsdCl7cmV0dXJuIGU/ZChlKSYmZCh0KT9bLi4ubmV3IFNldChbLi4uZSwuLi50XSldOnMoT2JqZWN0LmNyZWF0ZShudWxsKSx3YShlKSx3YSh0Pz97fSkpOnR9ZnVuY3Rpb24gVWEoZSx0KXtpZighZSlyZXR1cm4gdDtpZighdClyZXR1cm4gZTtsZXQgbj1zKE9iamVjdC5jcmVhdGUobnVsbCksZSk7Zm9yKGxldCByIGluIHQpbltyXT1CYShlW3JdLHRbcl0pO3JldHVybiBufWZ1bmN0aW9uIFdhKCl7cmV0dXJue2FwcDpudWxsLGNvbmZpZzp7aXNOYXRpdmVUYWc6aSxwZXJmb3JtYW5jZTohMSxnbG9iYWxQcm9wZXJ0aWVzOnt9LG9wdGlvbk1lcmdlU3RyYXRlZ2llczp7fSxlcnJvckhhbmRsZXI6dm9pZCAwLHdhcm5IYW5kbGVyOnZvaWQgMCxjb21waWxlck9wdGlvbnM6e319LG1peGluczpbXSxjb21wb25lbnRzOnt9LGRpcmVjdGl2ZXM6e30scHJvdmlkZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxvcHRpb25zQ2FjaGU6bmV3IFdlYWtNYXAscHJvcHNDYWNoZTpuZXcgV2Vha01hcCxlbWl0c0NhY2hlOm5ldyBXZWFrTWFwfX12YXIgR2E9MDtmdW5jdGlvbiBLYShlLHQpe3JldHVybiBmdW5jdGlvbihuLHI9bnVsbCl7ZyhuKXx8KG49cyh7fSxuKSksciE9bnVsbCYmIXkocikmJihyPW51bGwpO2xldCBpPVdhKCksYT1uZXcgV2Vha1NldCxvPVtdLGM9ITEsbD1pLmFwcD17X3VpZDpHYSsrLF9jb21wb25lbnQ6bixfcHJvcHM6cixfY29udGFpbmVyOm51bGwsX2NvbnRleHQ6aSxfaW5zdGFuY2U6bnVsbCx2ZXJzaW9uOlFzLGdldCBjb25maWcoKXtyZXR1cm4gaS5jb25maWd9LHNldCBjb25maWcoZSl7fSx1c2UoZSwuLi50KXtyZXR1cm4gYS5oYXMoZSl8fChlJiZnKGUuaW5zdGFsbCk/KGEuYWRkKGUpLGUuaW5zdGFsbChsLC4uLnQpKTpnKGUpJiYoYS5hZGQoZSksZShsLC4uLnQpKSksbH0sbWl4aW4oZSl7cmV0dXJuIGkubWl4aW5zLmluY2x1ZGVzKGUpfHxpLm1peGlucy5wdXNoKGUpLGx9LGNvbXBvbmVudChlLHQpe3JldHVybiB0PyhpLmNvbXBvbmVudHNbZV09dCxsKTppLmNvbXBvbmVudHNbZV19LGRpcmVjdGl2ZShlLHQpe3JldHVybiB0PyhpLmRpcmVjdGl2ZXNbZV09dCxsKTppLmRpcmVjdGl2ZXNbZV19LG1vdW50KGEsbyxzKXtpZighYyl7bGV0IHU9bC5fY2VWTm9kZXx8cShuLHIpO3JldHVybiB1LmFwcENvbnRleHQ9aSxzPT09ITA/cz1gc3ZnYDpzPT09ITEmJihzPXZvaWQgMCksbyYmdD90KHUsYSk6ZSh1LGEscyksYz0hMCxsLl9jb250YWluZXI9YSxhLl9fdnVlX2FwcF9fPWwsV3ModS5jb21wb25lbnQpfX0sb25Vbm1vdW50KGUpe28ucHVzaChlKX0sdW5tb3VudCgpe2MmJihqbihvLGwuX2luc3RhbmNlLDE2KSxlKG51bGwsbC5fY29udGFpbmVyKSxkZWxldGUgbC5fY29udGFpbmVyLl9fdnVlX2FwcF9fKX0scHJvdmlkZShlLHQpe3JldHVybiBpLnByb3ZpZGVzW2VdPXQsbH0scnVuV2l0aENvbnRleHQoZSl7bGV0IHQ9cWE7cWE9bDt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e3FhPXR9fX07cmV0dXJuIGx9fXZhciBxYT1udWxsO2Z1bmN0aW9uIEphKGUsbixyPXQpe2xldCBpPVkoKSxhPU8obiksbz1rKG4pLHM9WWEoZSxhKSxjPXNuKChzLGMpPT57bGV0IGwsdT10LGQ7cmV0dXJuIG1yKCgpPT57bGV0IHQ9ZVthXTtqKGwsdCkmJihsPXQsYygpKX0pLHtnZXQoKXtyZXR1cm4gcygpLHIuZ2V0P3IuZ2V0KGwpOmx9LHNldChlKXtsZXQgcz1yLnNldD9yLnNldChlKTplO2lmKCFqKHMsbCkmJiEodSE9PXQmJmooZSx1KSkpcmV0dXJuO2xldCBmPWkudm5vZGUucHJvcHMscD0hIShmJiYobiBpbiBmfHxhIGluIGZ8fG8gaW4gZikmJihgb25VcGRhdGU6JHtufWBpbiBmfHxgb25VcGRhdGU6JHthfWBpbiBmfHxgb25VcGRhdGU6JHtvfWBpbiBmKSk7cHx8KGw9ZSxjKCkpLGkuZW1pdChgdXBkYXRlOiR7bn1gLHMpLGooZSx1KSYmKGooZSxzKSYmIWoocyxkKXx8cCYmdSE9PXQmJiFqKHMsbCkpJiZjKCksdT1lLGQ9c319fSk7cmV0dXJuIGNbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBlPTA7cmV0dXJue25leHQoKXtyZXR1cm4gZTwyP3t2YWx1ZTplKys/c3x8dDpjLGRvbmU6ITF9Ontkb25lOiEwfX19fSxjfXZhciBZYT0oZSx0KT0+dD09PWBtb2RlbFZhbHVlYHx8dD09PWBtb2RlbC12YWx1ZWA/ZS5tb2RlbE1vZGlmaWVyczplW2Ake3R9TW9kaWZpZXJzYF18fGVbYCR7Tyh0KX1Nb2RpZmllcnNgXXx8ZVtgJHtrKHQpfU1vZGlmaWVyc2BdO2Z1bmN0aW9uIFhhKGUsbiwuLi5yKXtpZihlLmlzVW5tb3VudGVkKXJldHVybjtsZXQgaT1lLnZub2RlLnByb3BzfHx0LGE9cixvPW4uc3RhcnRzV2l0aChgdXBkYXRlOmApLHM9byYmWWEoaSxuLnNsaWNlKDcpKTtzJiYocy50cmltJiYoYT1yLm1hcChlPT5fKGUpP2UudHJpbSgpOmUpKSxzLm51bWJlciYmKGE9ci5tYXAocmUpKSk7bGV0IGMsbD1pW2M9bmUobildfHxpW2M9bmUoTyhuKSldOyFsJiZvJiYobD1pW2M9bmUoayhuKSldKSxsJiZqbihsLGUsNixhKTtsZXQgdT1pW2MrYE9uY2VgXTtpZih1KXtpZighZS5lbWl0dGVkKWUuZW1pdHRlZD17fTtlbHNlIGlmKGUuZW1pdHRlZFtjXSlyZXR1cm47ZS5lbWl0dGVkW2NdPSEwLGpuKHUsZSw2LGEpfX12YXIgWmE9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gUWEoZSx0LG49ITEpe2xldCByPW4/WmE6dC5lbWl0c0NhY2hlLGk9ci5nZXQoZSk7aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtsZXQgYT1lLmVtaXRzLG89e30sYz0hMTtpZighZyhlKSl7bGV0IHI9ZT0+e2xldCBuPVFhKGUsdCwhMCk7biYmKGM9ITAscyhvLG4pKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChyKSxlLmV4dGVuZHMmJnIoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChyKX1yZXR1cm4hYSYmIWM/KHkoZSkmJnIuc2V0KGUsbnVsbCksbnVsbCk6KGQoYSk/YS5mb3JFYWNoKGU9Pm9bZV09bnVsbCk6cyhvLGEpLHkoZSkmJnIuc2V0KGUsbyksbyl9ZnVuY3Rpb24gJGEoZSx0KXtyZXR1cm4hZXx8IWEodCk/ITE6KHQ9dC5zbGljZSgyKSx0PXQ9PT1gT25jZWA/dDp0LnJlcGxhY2UoL09uY2UkLyxgYCksdShlLHRbMF0udG9Mb3dlckNhc2UoKSt0LnNsaWNlKDEpKXx8dShlLGsodCkpfHx1KGUsdCkpfWZ1bmN0aW9uIGVvKGUpe2xldHt0eXBlOnQsdm5vZGU6bixwcm94eTpyLHdpdGhQcm94eTppLHByb3BzT3B0aW9uczpbYV0sc2xvdHM6cyxhdHRyczpjLGVtaXQ6bCxyZW5kZXI6dSxyZW5kZXJDYWNoZTpkLHByb3BzOmYsZGF0YTpwLHNldHVwU3RhdGU6bSxjdHg6aCxpbmhlcml0QXR0cnM6Z309ZSxfPWVyKGUpLHYseTt0cnl7aWYobi5zaGFwZUZsYWcmNCl7bGV0IGU9aXx8cix0PWU7dj1icyh1LmNhbGwodCxlLGQsZixtLHAsaCkpLHk9Y31lbHNle2xldCBlPXQ7dj1icyhlLmxlbmd0aD4xP2UoZix7YXR0cnM6YyxzbG90czpzLGVtaXQ6bH0pOmUoZixudWxsKSkseT10LnByb3BzP2M6bm8oYyl9fWNhdGNoKHQpeyRvLmxlbmd0aD0wLE1uKHQsZSwxKSx2PXEoSyl9bGV0IGI9djtpZih5JiZnIT09ITEpe2xldCBlPU9iamVjdC5rZXlzKHkpLHtzaGFwZUZsYWc6dH09YjtlLmxlbmd0aCYmdCY3JiYoYSYmZS5zb21lKG8pJiYoeT1ybyh5LGEpKSxiPWdzKGIseSwhMSwhMCkpfXJldHVybiBuLmRpcnMmJihiPWdzKGIsbnVsbCwhMSwhMCksYi5kaXJzPWIuZGlycz9iLmRpcnMuY29uY2F0KG4uZGlycyk6bi5kaXJzKSxuLnRyYW5zaXRpb24mJktyKHhyKGIudHlwZSkmJkdyKGIpfHxiLG4udHJhbnNpdGlvbiksdj1iLGVyKF8pLHZ9ZnVuY3Rpb24gdG8oZSx0PSEwKXtsZXQgbjtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZVt0XTtpZihjcyhyKSl7aWYoci50eXBlIT09S3x8ci5jaGlsZHJlbj09PWB2LWlmYCl7aWYobilyZXR1cm47bj1yfX1lbHNlIHJldHVybn1yZXR1cm4gbn12YXIgbm89ZT0+e2xldCB0O2ZvcihsZXQgbiBpbiBlKShuPT09YGNsYXNzYHx8bj09PWBzdHlsZWB8fGEobikpJiYoKHR8fD17fSlbbl09ZVtuXSk7cmV0dXJuIHR9LHJvPShlLHQpPT57bGV0IG49e307Zm9yKGxldCByIGluIGUpKCFvKHIpfHwhKHIuc2xpY2UoOSlpbiB0KSkmJihuW3JdPWVbcl0pO3JldHVybiBufTtmdW5jdGlvbiBpbyhlLHQsbil7bGV0e3Byb3BzOnIsY2hpbGRyZW46aSxjb21wb25lbnQ6YX09ZSx7cHJvcHM6byxjaGlsZHJlbjpzLHBhdGNoRmxhZzpjfT10LGw9YS5lbWl0c09wdGlvbnM7aWYodC5kaXJzfHx0LnRyYW5zaXRpb24pcmV0dXJuITA7aWYobiYmYz49MCl7aWYoYyYxMDI0KXJldHVybiEwO2lmKGMmMTYpcmV0dXJuIHI/YW8ocixvLGwpOiEhbztpZihjJjgpe2xldCBlPXQuZHluYW1pY1Byb3BzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgbj1lW3RdO2lmKG9vKG8scixuKSYmISRhKGwsbikpcmV0dXJuITB9fX1lbHNlIHJldHVybihpfHxzKSYmKCFzfHwhcy4kc3RhYmxlKT8hMDpyPT09bz8hMTpyPyFvfHxhbyhyLG8sbCk6ISFvO3JldHVybiExfWZ1bmN0aW9uIGFvKGUsdCxuKXtsZXQgcj1PYmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PU9iamVjdC5rZXlzKGUpLmxlbmd0aClyZXR1cm4hMDtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IGE9cltpXTtpZihvbyh0LGUsYSkmJiEkYShuLGEpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG9vKGUsdCxuKXtsZXQgcj1lW25dLGk9dFtuXTtyZXR1cm4gbj09PWBzdHlsZWAmJnkocikmJnkoaSk/IWhlKHIsaSk6ciE9PWl9ZnVuY3Rpb24gc28oe3Zub2RlOmUscGFyZW50OnQsc3VzcGVuc2U6bn0scil7Zm9yKDt0Oyl7bGV0IG49dC5zdWJUcmVlO2lmKG4uc3VzcGVuc2UmJm4uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG4uc3VzcGVuc2Uudm5vZGUuZWw9bi5lbD1yLGU9biksbj09PWUpKGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50O2Vsc2UgYnJlYWt9biYmbi5hY3RpdmVCcmFuY2g9PT1lJiYobi52bm9kZS5lbD1yKX12YXIgY289e30sbG89KCk9Pk9iamVjdC5jcmVhdGUoY28pLHVvPWU9Pk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PWNvO2Z1bmN0aW9uIGZvKGUsdCxuLHI9ITEpe2xldCBpPXt9LGE9bG8oKTtlLnByb3BzRGVmYXVsdHM9T2JqZWN0LmNyZWF0ZShudWxsKSxtbyhlLHQsaSxhKTtmb3IobGV0IHQgaW4gZS5wcm9wc09wdGlvbnNbMF0pdCBpbiBpfHwoaVt0XT12b2lkIDApO2UucHJvcHM9bj9yP2k6enQoaSk6ZS50eXBlLnByb3BzP2k6YSxlLmF0dHJzPWF9ZnVuY3Rpb24gcG8oZSx0LG4scil7bGV0e3Byb3BzOmksYXR0cnM6YSx2bm9kZTp7cGF0Y2hGbGFnOm99fT1lLHM9VihpKSxbY109ZS5wcm9wc09wdGlvbnMsbD0hMTtpZigocnx8bz4wKSYmIShvJjE2KSl7aWYobyY4KXtsZXQgbj1lLnZub2RlLmR5bmFtaWNQcm9wcztmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7bGV0IG89bltyXTtpZigkYShlLmVtaXRzT3B0aW9ucyxvKSljb250aW51ZTtsZXQgZD10W29dO2lmKGMpe2lmKHUoYSxvKSlkIT09YVtvXSYmKGFbb109ZCxsPSEwKTtlbHNle2xldCB0PU8obyk7aVt0XT1obyhjLHMsdCxkLGUsITEpfX1lbHNlIGQhPT1hW29dJiYoYVtvXT1kLGw9ITApfX19ZWxzZXttbyhlLHQsaSxhKSYmKGw9ITApO2xldCByO2ZvcihsZXQgYSBpbiBzKSghdHx8IXUodCxhKSYmKChyPWsoYSkpPT09YXx8IXUodCxyKSkpJiYoYz9uJiYoblthXSE9PXZvaWQgMHx8bltyXSE9PXZvaWQgMCkmJihpW2FdPWhvKGMscyxhLHZvaWQgMCxlLCEwKSk6ZGVsZXRlIGlbYV0pO2lmKGEhPT1zKWZvcihsZXQgZSBpbiBhKSghdHx8IXUodCxlKSkmJihkZWxldGUgYVtlXSxsPSEwKX1sJiZ0dChlLmF0dHJzLGBzZXRgLGBgKX1mdW5jdGlvbiBtbyhlLG4scixpKXtsZXRbYSxvXT1lLnByb3BzT3B0aW9ucyxzPSExLGM7aWYobilmb3IobGV0IHQgaW4gbil7aWYoRSh0KSljb250aW51ZTtsZXQgbD1uW3RdLGQ7YSYmdShhLGQ9Tyh0KSk/IW98fCFvLmluY2x1ZGVzKGQpP3JbZF09bDooY3x8PXt9KVtkXT1sOiRhKGUuZW1pdHNPcHRpb25zLHQpfHwoISh0IGluIGkpfHxsIT09aVt0XSkmJihpW3RdPWwscz0hMCl9aWYobyl7bGV0IG49VihyKSxpPWN8fHQ7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBzPW9bdF07cltzXT1obyhhLG4scyxpW3NdLGUsIXUoaSxzKSl9fXJldHVybiBzfWZ1bmN0aW9uIGhvKGUsdCxuLHIsaSxhKXtsZXQgbz1lW25dO2lmKG8hPW51bGwpe2xldCBlPXUobyxgZGVmYXVsdGApO2lmKGUmJnI9PT12b2lkIDApe2xldCBlPW8uZGVmYXVsdDtpZihvLnR5cGUhPT1GdW5jdGlvbiYmIW8uc2tpcEZhY3RvcnkmJmcoZSkpe2xldHtwcm9wc0RlZmF1bHRzOmF9PWk7aWYobiBpbiBhKXI9YVtuXTtlbHNle2xldCBvPUFzKGkpO3I9YVtuXT1lLmNhbGwobnVsbCx0KSxvKCl9fWVsc2Ugcj1lO2kuY2UmJmkuY2UuX3NldFByb3AobixyKX1vWzBdJiYoYSYmIWU/cj0hMTpvWzFdJiYocj09PWBgfHxyPT09ayhuKSkmJihyPSEwKSl9cmV0dXJuIHJ9dmFyIGdvPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIF9vKGUscixpPSExKXtsZXQgYT1pP2dvOnIucHJvcHNDYWNoZSxvPWEuZ2V0KGUpO2lmKG8pcmV0dXJuIG87bGV0IGM9ZS5wcm9wcyxsPXt9LGY9W10scD0hMTtpZighZyhlKSl7bGV0IHQ9ZT0+e3A9ITA7bGV0W3Qsbl09X28oZSxyLCEwKTtzKGwsdCksbiYmZi5wdXNoKC4uLm4pfTshaSYmci5taXhpbnMubGVuZ3RoJiZyLm1peGlucy5mb3JFYWNoKHQpLGUuZXh0ZW5kcyYmdChlLmV4dGVuZHMpLGUubWl4aW5zJiZlLm1peGlucy5mb3JFYWNoKHQpfWlmKCFjJiYhcClyZXR1cm4geShlKSYmYS5zZXQoZSxuKSxuO2lmKGQoYykpZm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2xldCBuPU8oY1tlXSk7dm8obikmJihsW25dPXQpfWVsc2UgaWYoYylmb3IobGV0IGUgaW4gYyl7bGV0IHQ9TyhlKTtpZih2byh0KSl7bGV0IG49Y1tlXSxyPWxbdF09ZChuKXx8ZyhuKT97dHlwZTpufTpzKHt9LG4pLGk9ci50eXBlLGE9ITEsbz0hMDtpZihkKGkpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7KytlKXtsZXQgdD1pW2VdLG49Zyh0KSYmdC5uYW1lO2lmKG49PT1gQm9vbGVhbmApe2E9ITA7YnJlYWt9bj09PWBTdHJpbmdgJiYobz0hMSl9ZWxzZSBhPWcoaSkmJmkubmFtZT09PWBCb29sZWFuYDtyWzBdPWEsclsxXT1vLChhfHx1KHIsYGRlZmF1bHRgKSkmJmYucHVzaCh0KX19bGV0IG09W2wsZl07cmV0dXJuIHkoZSkmJmEuc2V0KGUsbSksbX1mdW5jdGlvbiB2byhlKXtyZXR1cm4gZVswXSE9PWAkYCYmIUUoZSl9dmFyIHlvPWU9PmU9PT1gX2B8fGU9PT1gX2N0eGB8fGU9PT1gJHN0YWJsZWAsYm89ZT0+ZChlKT9lLm1hcChicyk6W2JzKGUpXSx4bz0oZSx0LG4pPT57aWYodC5fbilyZXR1cm4gdDtsZXQgcj1pcigoLi4uZSk9PmJvKHQoLi4uZSkpLG4pO3JldHVybiByLl9jPSExLHJ9LFNvPShlLHQsbik9PntsZXQgcj1lLl9jdHg7Zm9yKGxldCBuIGluIGUpe2lmKHlvKG4pKWNvbnRpbnVlO2xldCBpPWVbbl07aWYoZyhpKSl0W25dPXhvKG4saSxyKTtlbHNlIGlmKGkhPW51bGwpe2xldCBlPWJvKGkpO3Rbbl09KCk9PmV9fX0sQ289KGUsdCk9PntsZXQgbj1ibyh0KTtlLnNsb3RzLmRlZmF1bHQ9KCk9Pm59LHdvPShlLHQsbik9Pntmb3IobGV0IHIgaW4gdCkobnx8IXlvKHIpKSYmKGVbcl09dFtyXSl9LFRvPShlLHQsbik9PntsZXQgcj1lLnNsb3RzPWxvKCk7aWYoZS52bm9kZS5zaGFwZUZsYWcmMzIpe2xldCBlPXQuXztlPyh3byhyLHQsbiksbiYmTihyLGBfYCxlLCEwKSk6U28odCxyKX1lbHNlIHQmJkNvKGUsdCl9LEVvPShlLG4scik9PntsZXR7dm5vZGU6aSxzbG90czphfT1lLG89ITAscz10O2lmKGkuc2hhcGVGbGFnJjMyKXtsZXQgZT1uLl87ZT9yJiZlPT09MT9vPSExOndvKGEsbixyKToobz0hbi4kc3RhYmxlLFNvKG4sYSkpLHM9bn1lbHNlIG4mJihDbyhlLG4pLHM9e2RlZmF1bHQ6MX0pO2lmKG8pZm9yKGxldCBlIGluIGEpIXlvKGUpJiZzW2VdPT1udWxsJiZkZWxldGUgYVtlXX0sVz1KbztmdW5jdGlvbiBEbyhlKXtyZXR1cm4ga28oZSl9ZnVuY3Rpb24gT28oZSl7cmV0dXJuIGtvKGUsY2kpfWZ1bmN0aW9uIGtvKGUsaSl7bGV0IGE9b2UoKTthLl9fVlVFX189ITA7bGV0e2luc2VydDpvLHJlbW92ZTpzLHBhdGNoUHJvcDpjLGNyZWF0ZUVsZW1lbnQ6bCxjcmVhdGVUZXh0OnUsY3JlYXRlQ29tbWVudDpkLHNldFRleHQ6ZixzZXRFbGVtZW50VGV4dDpwLHBhcmVudE5vZGU6bSxuZXh0U2libGluZzpoLHNldFNjb3BlSWQ6Zz1yLGluc2VydFN0YXRpY0NvbnRlbnQ6X309ZSx2PShlLHQsbixyPW51bGwsaT1udWxsLGE9bnVsbCxvPXZvaWQgMCxzPW51bGwsYz0hIXQuZHluYW1pY0NoaWxkcmVuKT0+e2lmKGU9PT10KXJldHVybjtlJiYhbHMoZSx0KSYmKHI9ZGUoZSksY2UoZSxpLGEsITApLGU9bnVsbCksdC5wYXRjaEZsYWc9PT0tMiYmKGM9ITEsdC5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0e3R5cGU6bCxyZWY6dSxzaGFwZUZsYWc6ZH09dDtzd2l0Y2gobCl7Y2FzZSBabzp5KGUsdCxuLHIpO2JyZWFrO2Nhc2UgSzpiKGUsdCxuLHIpO2JyZWFrO2Nhc2UgUW86ZT8/eCh0LG4scixvKTticmVhaztjYXNlIEc6QShlLHQsbixyLGksYSxvLHMsYyk7YnJlYWs7ZGVmYXVsdDpkJjE/dyhlLHQsbixyLGksYSxvLHMsYyk6ZCY2P25lKGUsdCxuLHIsaSxhLG8scyxjKTooZCY2NHx8ZCYxMjgpJiZsLnByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsbWUpfXUhPW51bGwmJmk/ZWkodSxlJiZlLnJlZixhLHR8fGUsIXQpOnU9PW51bGwmJmUmJmUucmVmIT1udWxsJiZlaShlLnJlZixudWxsLGEsZSwhMCl9LHk9KGUsdCxuLHIpPT57aWYoZT09bnVsbClvKHQuZWw9dSh0LmNoaWxkcmVuKSxuLHIpO2Vsc2V7bGV0IG49dC5lbD1lLmVsO3QuY2hpbGRyZW4hPT1lLmNoaWxkcmVuJiZmKG4sdC5jaGlsZHJlbil9fSxiPShlLHQsbixyKT0+e2U9PW51bGw/byh0LmVsPWQodC5jaGlsZHJlbnx8YGApLG4scik6dC5lbD1lLmVsfSx4PShlLHQsbixyKT0+e1tlLmVsLGUuYW5jaG9yXT1fKGUuY2hpbGRyZW4sdCxuLHIsZS5lbCxlLmFuY2hvcil9LFM9KHtlbDplLGFuY2hvcjp0fSxuLHIpPT57bGV0IGk7Zm9yKDtlJiZlIT09dDspaT1oKGUpLG8oZSxuLHIpLGU9aTtvKHQsbixyKX0sQz0oe2VsOmUsYW5jaG9yOnR9KT0+e2xldCBuO2Zvcig7ZSYmZSE9PXQ7KW49aChlKSxzKGUpLGU9bjtzKHQpfSx3PShlLHQsbixyLGksYSxvLHMsYyk9PntpZih0LnR5cGU9PT1gc3ZnYD9vPWBzdmdgOnQudHlwZT09PWBtYXRoYCYmKG89YG1hdGhtbGApLGU9PW51bGwpVCh0LG4scixpLGEsbyxzLGMpO2Vsc2V7bGV0IG49ZS5lbCYmZS5lbC5faXNWdWVDRT9lLmVsOm51bGw7dHJ5e24mJm4uX2JlZ2luUGF0Y2goKSxPKGUsdCxpLGEsbyxzLGMpfWZpbmFsbHl7biYmbi5fZW5kUGF0Y2goKX19fSxUPShlLHQsbixyLGksYSxzLHUpPT57bGV0IGQsZix7cHJvcHM6bSxzaGFwZUZsYWc6aCx0cmFuc2l0aW9uOmcsZGlyczpffT1lO2lmKGQ9ZS5lbD1sKGUudHlwZSxhLG0mJm0uaXMsbSksaCY4P3AoZCxlLmNoaWxkcmVuKTpoJjE2JiZlZShlLmNoaWxkcmVuLGQsbnVsbCxyLGksQW8oZSxhKSxzLHUpLF8mJm9yKGUsbnVsbCxyLGBjcmVhdGVkYCksRChkLGUsZS5zY29wZUlkLHMsciksbSl7Zm9yKGxldCBlIGluIG0pZSE9PWB2YWx1ZWAmJiFFKGUpJiZjKGQsZSxudWxsLG1bZV0sYSxyKTtgdmFsdWVgaW4gbSYmYyhkLGB2YWx1ZWAsbnVsbCxtLnZhbHVlLGEpLChmPW0ub25Wbm9kZUJlZm9yZU1vdW50KSYmd3MoZixyLGUpfV8mJm9yKGUsbnVsbCxyLGBiZWZvcmVNb3VudGApO2xldCB2PU1vKGksZyk7diYmZy5iZWZvcmVFbnRlcihkKSxvKGQsdCxuKSwoKGY9bSYmbS5vblZub2RlTW91bnRlZCl8fHZ8fF8pJiZXKCgpPT57dHJ5e2YmJndzKGYscixlKSx2JiZnLmVudGVyKGQpLF8mJm9yKGUsbnVsbCxyLGBtb3VudGVkYCl9ZmluYWxseXt9fSxpKX0sRD0oZSx0LG4scixpKT0+e2lmKG4mJmcoZSxuKSxyKWZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWcoZSxyW3RdKTtpZihpKXtsZXQgbj1pLnN1YlRyZWU7aWYodD09PW58fFJvKG4udHlwZSkmJihuLnNzQ29udGVudD09PXR8fG4uc3NGYWxsYmFjaz09PXQpKXtsZXQgdD1pLnZub2RlO0QoZSx0LHQuc2NvcGVJZCx0LnNsb3RTY29wZUlkcyxpLnBhcmVudCl9fX0sZWU9KGUsdCxuLHIsaSxhLG8scyxjPTApPT57Zm9yKGxldCBsPWM7bDxlLmxlbmd0aDtsKyspe2xldCBjPWVbbF09cz94cyhlW2xdKTpicyhlW2xdKTt2KG51bGwsYyx0LG4scixpLGEsbyxzKX19LE89KGUsbixyLGksYSxvLHMpPT57bGV0IGw9bi5lbD1lLmVsLHtwYXRjaEZsYWc6dSxkeW5hbWljQ2hpbGRyZW46ZCxkaXJzOmZ9PW47dXw9ZS5wYXRjaEZsYWcmMTY7bGV0IG09ZS5wcm9wc3x8dCxoPW4ucHJvcHN8fHQsZztpZihyJiZqbyhyLCExKSwoZz1oLm9uVm5vZGVCZWZvcmVVcGRhdGUpJiZ3cyhnLHIsbixlKSxmJiZvcihuLGUscixgYmVmb3JlVXBkYXRlYCksciYmam8ociwhMCksZCYmKCFlLmR5bmFtaWNDaGlsZHJlbnx8ZS5keW5hbWljQ2hpbGRyZW4ubGVuZ3RoIT09ZC5sZW5ndGgpJiYodT0wLHM9ITEsZD1udWxsKSwobS5pbm5lckhUTUwmJmguaW5uZXJIVE1MPT1udWxsfHxtLnRleHRDb250ZW50JiZoLnRleHRDb250ZW50PT1udWxsKSYmcChsLGBgKSxkP3RlKGUuZHluYW1pY0NoaWxkcmVuLGQsbCxyLGksQW8obixhKSxvKTpzfHxhZShlLG4sbCxudWxsLHIsaSxBbyhuLGEpLG8sITEpLHU+MCl7aWYodSYxNilrKGwsbSxoLHIsYSk7ZWxzZSBpZih1JjImJm0uY2xhc3MhPT1oLmNsYXNzJiZjKGwsYGNsYXNzYCxudWxsLGguY2xhc3MsYSksdSY0JiZjKGwsYHN0eWxlYCxtLnN0eWxlLGguc3R5bGUsYSksdSY4KXtsZXQgZT1uLmR5bmFtaWNQcm9wcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IG49ZVt0XSxpPW1bbl0sbz1oW25dOyhvIT09aXx8bj09PWB2YWx1ZWApJiZjKGwsbixpLG8sYSxyKX19dSYxJiZlLmNoaWxkcmVuIT09bi5jaGlsZHJlbiYmcChsLG4uY2hpbGRyZW4pfWVsc2UhcyYmZD09bnVsbCYmayhsLG0saCxyLGEpOygoZz1oLm9uVm5vZGVVcGRhdGVkKXx8ZikmJlcoKCk9PntnJiZ3cyhnLHIsbixlKSxmJiZvcihuLGUscixgdXBkYXRlZGApfSxpKX0sdGU9KGUsdCxuLHIsaSxhLG8pPT57Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2xldCBjPWVbc10sbD10W3NdLHU9Yy5lbCYmKGMudHlwZT09PUd8fCFscyhjLGwpfHxjLnNoYXBlRmxhZyYxOTgpP20oYy5lbCk6bjt2KGMsbCx1LG51bGwscixpLGEsbywhMCl9fSxrPShlLG4scixpLGEpPT57aWYobiE9PXIpe2lmKG4hPT10KWZvcihsZXQgdCBpbiBuKSFFKHQpJiYhKHQgaW4gcikmJmMoZSx0LG5bdF0sbnVsbCxhLGkpO2ZvcihsZXQgdCBpbiByKXtpZihFKHQpKWNvbnRpbnVlO2xldCBvPXJbdF0scz1uW3RdO28hPT1zJiZ0IT09YHZhbHVlYCYmYyhlLHQscyxvLGEsaSl9YHZhbHVlYGluIHImJmMoZSxgdmFsdWVgLG4udmFsdWUsci52YWx1ZSxhKX19LEE9KGUsdCxuLHIsaSxhLHMsYyxsKT0+e2xldCBkPXQuZWw9ZT9lLmVsOnUoYGApLGY9dC5hbmNob3I9ZT9lLmFuY2hvcjp1KGBgKSx7cGF0Y2hGbGFnOnAsZHluYW1pY0NoaWxkcmVuOm0sc2xvdFNjb3BlSWRzOmh9PXQ7aCYmKGM9Yz9jLmNvbmNhdChoKTpoKSxlPT1udWxsPyhvKGQsbixyKSxvKGYsbixyKSxlZSh0LmNoaWxkcmVufHxbXSxuLGYsaSxhLHMsYyxsKSk6cD4wJiZwJjY0JiZtJiZlLmR5bmFtaWNDaGlsZHJlbiYmZS5keW5hbWljQ2hpbGRyZW4ubGVuZ3RoPT09bS5sZW5ndGg/KHRlKGUuZHluYW1pY0NoaWxkcmVuLG0sbixpLGEscyxjKSwodC5rZXkhPW51bGx8fGkmJnQ9PT1pLnN1YlRyZWUpJiZObyhlLHQsITApKTphZShlLHQsbixmLGksYSxzLGMsbCl9LG5lPShlLHQsbixyLGksYSxvLHMsYyk9Pnt0LnNsb3RTY29wZUlkcz1zLGU9PW51bGw/dC5zaGFwZUZsYWcmNTEyP2kuY3R4LmFjdGl2YXRlKHQsbixyLG8sYyk6aih0LG4scixpLGEsbyxjKTpOKGUsdCxjKX0saj0oZSx0LG4scixpLGEsbyk9PntsZXQgcz1lLmNvbXBvbmVudD1EcyhlLHIsaSk7aWYoa2koZSkmJihzLmN0eC5yZW5kZXJlcj1tZSksUHMocywhMSxvKSxzLmFzeW5jRGVwKXtpZihpJiZpLnJlZ2lzdGVyRGVwKHMscmUsbyksIWUuZWwpe2xldCByPXMuc3ViVHJlZT1xKEspO2IobnVsbCxyLHQsbiksZS5wbGFjZWhvbGRlcj1yLmVsfX1lbHNlIHJlKHMsZSx0LG4saSxhLG8pfSxOPShlLHQsbik9PntsZXQgcj10LmNvbXBvbmVudD1lLmNvbXBvbmVudDtpZihpbyhlLHQsbikpe2lmKHIuYXN5bmNEZXAmJiFyLmFzeW5jUmVzb2x2ZWQpe2llKHIsdCxuKTtyZXR1cm59ci5uZXh0PXQsci51cGRhdGUoKX1lbHNlIHQuZWw9ZS5lbCxyLnZub2RlPXR9LHJlPShlLHQsbixyLGksYSxvKT0+e2xldCBzPSgpPT57aWYoZS5pc01vdW50ZWQpe2xldHtuZXh0OnQsYnU6bix1OnIscGFyZW50OnMsdm5vZGU6Y309ZTt7bGV0IG49Rm8oZSk7aWYobil7dCYmKHQuZWw9Yy5lbCxpZShlLHQsbykpLG4uYXN5bmNEZXAudGhlbigoKT0+e1coKCk9PntlLmlzVW5tb3VudGVkfHxsKCl9LGkpfSk7cmV0dXJufX1sZXQgdT10LGQ7am8oZSwhMSksdD8odC5lbD1jLmVsLGllKGUsdCxvKSk6dD1jLG4mJk0obiksKGQ9dC5wcm9wcyYmdC5wcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSYmd3MoZCxzLHQsYyksam8oZSwhMCk7bGV0IGY9ZW8oZSkscD1lLnN1YlRyZWU7ZS5zdWJUcmVlPWYsdihwLGYsbShwLmVsKSxkZShwKSxlLGksYSksdC5lbD1mLmVsLHU9PT1udWxsJiZzbyhlLGYuZWwpLHImJlcocixpKSwoZD10LnByb3BzJiZ0LnByb3BzLm9uVm5vZGVVcGRhdGVkKSYmVygoKT0+d3MoZCxzLHQsYyksaSl9ZWxzZXtsZXQgbyx7ZWw6cyxwcm9wczpjfT10LHtibTpsLG06dSxwYXJlbnQ6ZCxyb290OmYsdHlwZTpwfT1lLG09RWkodCk7aWYoam8oZSwhMSksbCYmTShsKSwhbSYmKG89YyYmYy5vblZub2RlQmVmb3JlTW91bnQpJiZ3cyhvLGQsdCksam8oZSwhMCkscyYmZ2Upe2xldCB0PSgpPT57ZS5zdWJUcmVlPWVvKGUpLGdlKHMsZS5zdWJUcmVlLGUsaSxudWxsKX07bSYmcC5fX2FzeW5jSHlkcmF0ZT9wLl9fYXN5bmNIeWRyYXRlKHMsZSx0KTp0KCl9ZWxzZXtmLmNlJiZmLmNlLl9oYXNTaGFkb3dSb290KCkmJmYuY2UuX2luamVjdENoaWxkU3R5bGUocCxlLnBhcmVudD9lLnBhcmVudC50eXBlOnZvaWQgMCk7bGV0IG89ZS5zdWJUcmVlPWVvKGUpO3YobnVsbCxvLG4scixlLGksYSksdC5lbD1vLmVsfWlmKHUmJlcodSxpKSwhbSYmKG89YyYmYy5vblZub2RlTW91bnRlZCkpe2xldCBlPXQ7VygoKT0+d3MobyxkLGUpLGkpfSh0LnNoYXBlRmxhZyYyNTZ8fGQmJkVpKGQudm5vZGUpJiZkLnZub2RlLnNoYXBlRmxhZyYyNTYpJiZlLmEmJlcoZS5hLGkpLGUuaXNNb3VudGVkPSEwLHQ9bj1yPW51bGx9fTtlLnNjb3BlLm9uKCk7bGV0IGM9ZS5lZmZlY3Q9bmV3IERlKHMpO2Uuc2NvcGUub2ZmKCk7bGV0IGw9ZS51cGRhdGU9Yy5ydW4uYmluZChjKSx1PWUuam9iPWMucnVuSWZEaXJ0eS5iaW5kKGMpO3UuaT1lLHUuaWQ9ZS51aWQsYy5zY2hlZHVsZXI9KCk9PlVuKHUpLGpvKGUsITApLGwoKX0saWU9KGUsdCxuKT0+e3QuY29tcG9uZW50PWU7bGV0IHI9ZS52bm9kZS5wcm9wcztlLnZub2RlPXQsZS5uZXh0PW51bGwscG8oZSx0LnByb3BzLHIsbiksRW8oZSx0LmNoaWxkcmVuLG4pLFdlKCksS24oZSksR2UoKX0sYWU9KGUsdCxuLHIsaSxhLG8scyxjPSExKT0+e2xldCBsPWUmJmUuY2hpbGRyZW4sdT1lP2Uuc2hhcGVGbGFnOjAsZD10LmNoaWxkcmVuLHtwYXRjaEZsYWc6ZixzaGFwZUZsYWc6bX09dDtpZihmPjApe2lmKGYmMTI4KXtGKGwsZCxuLHIsaSxhLG8scyxjKTtyZXR1cm59aWYoZiYyNTYpe1AobCxkLG4scixpLGEsbyxzLGMpO3JldHVybn19bSY4Pyh1JjE2JiZ1ZShsLGksYSksZCE9PWwmJnAobixkKSk6dSYxNj9tJjE2P0YobCxkLG4scixpLGEsbyxzLGMpOnVlKGwsaSxhLCEwKToodSY4JiZwKG4sYGApLG0mMTYmJmVlKGQsbixyLGksYSxvLHMsYykpfSxQPShlLHQscixpLGEsbyxzLGMsbCk9PntlfHw9bix0fHw9bjtsZXQgdT1lLmxlbmd0aCxkPXQubGVuZ3RoLGY9TWF0aC5taW4odSxkKSxwO2ZvcihwPTA7cDxmO3ArKyl7bGV0IG49dFtwXT1sP3hzKHRbcF0pOmJzKHRbcF0pO3YoZVtwXSxuLHIsbnVsbCxhLG8scyxjLGwpfXU+ZD91ZShlLGEsbywhMCwhMSxmKTplZSh0LHIsaSxhLG8scyxjLGwsZil9LEY9KGUsdCxyLGksYSxvLHMsYyxsKT0+e2xldCB1PTAsZD10Lmxlbmd0aCxmPWUubGVuZ3RoLTEscD1kLTE7Zm9yKDt1PD1mJiZ1PD1wOyl7bGV0IG49ZVt1XSxpPXRbdV09bD94cyh0W3VdKTpicyh0W3VdKTtpZihscyhuLGkpKXYobixpLHIsbnVsbCxhLG8scyxjLGwpO2Vsc2UgYnJlYWs7dSsrfWZvcig7dTw9ZiYmdTw9cDspe2xldCBuPWVbZl0saT10W3BdPWw/eHModFtwXSk6YnModFtwXSk7aWYobHMobixpKSl2KG4saSxyLG51bGwsYSxvLHMsYyxsKTtlbHNlIGJyZWFrO2YtLSxwLS19aWYodT5mKXtpZih1PD1wKXtsZXQgZT1wKzEsbj1lPGQ/dFtlXS5lbDppO2Zvcig7dTw9cDspdihudWxsLHRbdV09bD94cyh0W3VdKTpicyh0W3VdKSxyLG4sYSxvLHMsYyxsKSx1Kyt9fWVsc2UgaWYodT5wKWZvcig7dTw9ZjspY2UoZVt1XSxhLG8sITApLHUrKztlbHNle2xldCBtPXUsaD11LGc9bmV3IE1hcDtmb3IodT1oO3U8PXA7dSsrKXtsZXQgZT10W3VdPWw/eHModFt1XSk6YnModFt1XSk7ZS5rZXkhPW51bGwmJmcuc2V0KGUua2V5LHUpfWxldCBfLHk9MCxiPXAtaCsxLHg9ITEsUz0wLEM9QXJyYXkoYik7Zm9yKHU9MDt1PGI7dSsrKUNbdV09MDtmb3IodT1tO3U8PWY7dSsrKXtsZXQgbj1lW3VdO2lmKHk+PWIpe2NlKG4sYSxvLCEwKTtjb250aW51ZX1sZXQgaTtpZihuLmtleSE9bnVsbClpPWcuZ2V0KG4ua2V5KTtlbHNlIGZvcihfPWg7Xzw9cDtfKyspaWYoQ1tfLWhdPT09MCYmbHMobix0W19dKSl7aT1fO2JyZWFrfWk9PT12b2lkIDA/Y2UobixhLG8sITApOihDW2ktaF09dSsxLGk+PVM/Uz1pOng9ITAsdihuLHRbaV0scixudWxsLGEsbyxzLGMsbCkseSsrKX1sZXQgdz14P1BvKEMpOm47Zm9yKF89dy5sZW5ndGgtMSx1PWItMTt1Pj0wO3UtLSl7bGV0IGU9aCt1LG49dFtlXSxmPXRbZSsxXSxwPWUrMTxkP2YuZWx8fExvKGYpOmk7Q1t1XT09PTA/dihudWxsLG4scixwLGEsbyxzLGMsbCk6eCYmKF88MHx8dSE9PXdbX10/c2UobixyLHAsMik6Xy0tKX19fSxzZT0oZSx0LG4scixpPW51bGwpPT57bGV0e2VsOmEsdHlwZTpjLHRyYW5zaXRpb246bCxjaGlsZHJlbjp1LHNoYXBlRmxhZzpkfT1lO2lmKGQmNil7c2UoZS5jb21wb25lbnQuc3ViVHJlZSx0LG4scik7cmV0dXJufWlmKGQmMTI4KXtlLnN1c3BlbnNlLm1vdmUodCxuLHIpO3JldHVybn1pZihkJjY0KXtjLm1vdmUoZSx0LG4sbWUpO3JldHVybn1pZihjPT09Ryl7byhhLHQsbik7Zm9yKGxldCBlPTA7ZTx1Lmxlbmd0aDtlKyspc2UodVtlXSx0LG4scik7byhlLmFuY2hvcix0LG4pO3JldHVybn1pZihjPT09UW8pe1MoZSx0LG4pO3JldHVybn1pZihyIT09MiYmZCYxJiZsKXtpZihyPT09MClsLnBlcnNpc3RlZCYmIWFbTnJdP28oYSx0LG4pOihsLmJlZm9yZUVudGVyKGEpLG8oYSx0LG4pLFcoKCk9PmwuZW50ZXIoYSksaSkpO2Vsc2V7bGV0e2xlYXZlOnIsZGVsYXlMZWF2ZTppLGFmdGVyTGVhdmU6Y309bCx1PSgpPT57ZS5jdHguaXNVbm1vdW50ZWQ/cyhhKTpvKGEsdCxuKX0sZD0oKT0+e2xldCBlPWEuX2lzTGVhdmluZ3x8ISFhW05yXTthLl9pc0xlYXZpbmcmJmFbTnJdKCEwKSxsLnBlcnNpc3RlZCYmIWU/dSgpOnIoYSwoKT0+e3UoKSxjJiZjKCl9KX07aT9pKGEsdSxkKTpkKCl9fWVsc2UgbyhhLHQsbil9LGNlPShlLHQsbixyPSExLGk9ITEpPT57bGV0e3R5cGU6YSxwcm9wczpvLHJlZjpzLGNoaWxkcmVuOmMsZHluYW1pY0NoaWxkcmVuOmwsc2hhcGVGbGFnOnUscGF0Y2hGbGFnOmQsZGlyczpmLGNhY2hlSW5kZXg6cCxtZW1vOm19PWU7aWYoZD09PS0yJiYoaT0hMSkscyE9bnVsbCYmKFdlKCksZWkocyxudWxsLG4sZSwhMCksR2UoKSkscCE9bnVsbCYmKHQucmVuZGVyQ2FjaGVbcF09dm9pZCAwKSx1JjI1Nil7dC5jdHguZGVhY3RpdmF0ZShlKTtyZXR1cm59bGV0IGg9dSYxJiZmLGc9IUVpKGUpLF87aWYoZyYmKF89byYmby5vblZub2RlQmVmb3JlVW5tb3VudCkmJndzKF8sdCxlKSx1JjYpTChlLmNvbXBvbmVudCxuLHIpO2Vsc2V7aWYodSYxMjgpe2Uuc3VzcGVuc2UudW5tb3VudChuLHIpO3JldHVybn1oJiZvcihlLG51bGwsdCxgYmVmb3JlVW5tb3VudGApLHUmNjQ/ZS50eXBlLnJlbW92ZShlLHQsbixtZSxyKTpsJiYhbC5oYXNPbmNlJiYoYSE9PUd8fGQ+MCYmZCY2NCk/dWUobCx0LG4sITEsITApOihhPT09RyYmZCYzODR8fCFpJiZ1JjE2KSYmdWUoYyx0LG4pLHImJkkoZSl9bGV0IHY9bSE9bnVsbCYmcD09bnVsbDsoZyYmKF89byYmby5vblZub2RlVW5tb3VudGVkKXx8aHx8dikmJlcoKCk9PntfJiZ3cyhfLHQsZSksaCYmb3IoZSxudWxsLHQsYHVubW91bnRlZGApLHYmJihlLmVsPW51bGwpfSxuKX0sST1lPT57bGV0e3R5cGU6dCxlbDpuLGFuY2hvcjpyLHRyYW5zaXRpb246aX09ZTtpZih0PT09Ryl7bGUobixyKTtyZXR1cm59aWYodD09PVFvKXtDKGUpO3JldHVybn1sZXQgYT0oKT0+e3MobiksaSYmIWkucGVyc2lzdGVkJiZpLmFmdGVyTGVhdmUmJmkuYWZ0ZXJMZWF2ZSgpfTtpZihlLnNoYXBlRmxhZyYxJiZpJiYhaS5wZXJzaXN0ZWQpe2xldHtsZWF2ZTp0LGRlbGF5TGVhdmU6cn09aSxvPSgpPT50KG4sYSk7cj9yKGUuZWwsYSxvKTpvKCl9ZWxzZSBhKCl9LGxlPShlLHQpPT57bGV0IG47Zm9yKDtlIT09dDspbj1oKGUpLHMoZSksZT1uO3ModCl9LEw9KGUsdCxuKT0+e2xldHtidW06cixzY29wZTppLGpvYjphLHN1YlRyZWU6byx1bTpzLG06YyxhOmx9PWU7SW8oYyksSW8obCksciYmTShyKSxpLnN0b3AoKSxhJiYoYS5mbGFnc3w9OCxjZShvLGUsdCxuKSkscyYmVyhzLHQpLFcoKCk9PntlLmlzVW5tb3VudGVkPSEwfSx0KX0sdWU9KGUsdCxuLHI9ITEsaT0hMSxhPTApPT57Zm9yKGxldCBvPWE7bzxlLmxlbmd0aDtvKyspY2UoZVtvXSx0LG4scixpKX0sZGU9ZT0+e2lmKGUuc2hhcGVGbGFnJjYpcmV0dXJuIGRlKGUuY29tcG9uZW50LnN1YlRyZWUpO2lmKGUuc2hhcGVGbGFnJjEyOClyZXR1cm4gZS5zdXNwZW5zZS5uZXh0KCk7bGV0IHQ9aChlLmFuY2hvcnx8ZS5lbCksbj10JiZ0W2JyXTtyZXR1cm4gbj9oKG4pOnR9LGZlPSExLHBlPShlLHQsbik9PntsZXQgcjtlPT1udWxsP3QuX3Zub2RlJiYoY2UodC5fdm5vZGUsbnVsbCxudWxsLCEwKSxyPXQuX3Zub2RlLmNvbXBvbmVudCk6dih0Ll92bm9kZXx8bnVsbCxlLHQsbnVsbCxudWxsLG51bGwsbiksdC5fdm5vZGU9ZSxmZXx8PShmZT0hMCxLbihyKSxxbigpLCExKX0sbWU9e3A6dix1bTpjZSxtOnNlLHI6SSxtdDpqLG1jOmVlLHBjOmFlLHBiYzp0ZSxuOmRlLG86ZX0saGUsZ2U7cmV0dXJuIGkmJihbaGUsZ2VdPWkobWUpKSx7cmVuZGVyOnBlLGh5ZHJhdGU6aGUsY3JlYXRlQXBwOkthKHBlLGhlKX19ZnVuY3Rpb24gQW8oe3R5cGU6ZSxwcm9wczp0fSxuKXtyZXR1cm4gbj09PWBzdmdgJiZlPT09YGZvcmVpZ25PYmplY3RgfHxuPT09YG1hdGhtbGAmJmU9PT1gYW5ub3RhdGlvbi14bWxgJiZ0JiZ0LmVuY29kaW5nJiZ0LmVuY29kaW5nLmluY2x1ZGVzKGBodG1sYCk/dm9pZCAwOm59ZnVuY3Rpb24gam8oe2VmZmVjdDplLGpvYjp0fSxuKXtuPyhlLmZsYWdzfD0zMix0LmZsYWdzfD00KTooZS5mbGFncyY9LTMzLHQuZmxhZ3MmPS01KX1mdW5jdGlvbiBNbyhlLHQpe3JldHVybighZXx8ZSYmIWUucGVuZGluZ0JyYW5jaCkmJnQmJiF0LnBlcnNpc3RlZH1mdW5jdGlvbiBObyhlLHQsbj0hMSl7bGV0IHI9ZS5jaGlsZHJlbixpPXQuY2hpbGRyZW47aWYoZChyKSYmZChpKSlmb3IobGV0IGU9MDtlPHIubGVuZ3RoO2UrKyl7bGV0IHQ9cltlXSxhPWlbZV07YS5zaGFwZUZsYWcmMSYmIWEuZHluYW1pY0NoaWxkcmVuJiYoKGEucGF0Y2hGbGFnPD0wfHxhLnBhdGNoRmxhZz09PTMyKSYmKGE9aVtlXT14cyhpW2VdKSxhLmVsPXQuZWwpLCFuJiZhLnBhdGNoRmxhZyE9PS0yJiZObyh0LGEpKSxhLnR5cGU9PT1abyYmKGEucGF0Y2hGbGFnPT09LTEmJihhPWlbZV09eHMoYSkpLGEuZWw9dC5lbCksYS50eXBlPT09SyYmIWEuZWwmJihhLmVsPXQuZWwpfX1mdW5jdGlvbiBQbyhlKXtsZXQgdD1lLnNsaWNlKCksbj1bMF0scixpLGEsbyxzLGM9ZS5sZW5ndGg7Zm9yKHI9MDtyPGM7cisrKXtsZXQgYz1lW3JdO2lmKGMhPT0wKXtpZihpPW5bbi5sZW5ndGgtMV0sZVtpXTxjKXt0W3JdPWksbi5wdXNoKHIpO2NvbnRpbnVlfWZvcihhPTAsbz1uLmxlbmd0aC0xO2E8bzspcz1hK28+PjEsZVtuW3NdXTxjP2E9cysxOm89cztjPGVbblthXV0mJihhPjAmJih0W3JdPW5bYS0xXSksblthXT1yKX19Zm9yKGE9bi5sZW5ndGgsbz1uW2EtMV07YS0tPjA7KW5bYV09byxvPXRbb107cmV0dXJuIG59ZnVuY3Rpb24gRm8oZSl7bGV0IHQ9ZS5zdWJUcmVlLmNvbXBvbmVudDtpZih0KXJldHVybiB0LmFzeW5jRGVwJiYhdC5hc3luY1Jlc29sdmVkP3Q6Rm8odCl9ZnVuY3Rpb24gSW8oZSl7aWYoZSlmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLmZsYWdzfD04fWZ1bmN0aW9uIExvKGUpe2lmKGUucGxhY2Vob2xkZXIpcmV0dXJuIGUucGxhY2Vob2xkZXI7bGV0IHQ9ZS5jb21wb25lbnQ7cmV0dXJuIHQ/TG8odC5zdWJUcmVlKTpudWxsfXZhciBSbz1lPT5lLl9faXNTdXNwZW5zZSx6bz0wLEJvPXtuYW1lOmBTdXNwZW5zZWAsX19pc1N1c3BlbnNlOiEwLHByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsbCl7aWYoZT09bnVsbClIbyh0LG4scixpLGEsbyxzLGMsbCk7ZWxzZXtpZihhJiZhLmRlcHM+MCYmIWUuc3VzcGVuc2UuaXNJbkZhbGxiYWNrKXt0LnN1c3BlbnNlPWUuc3VzcGVuc2UsdC5zdXNwZW5zZS52bm9kZT10LHQuZWw9ZS5lbDtyZXR1cm59VW8oZSx0LG4scixpLG8scyxjLGwpfX0saHlkcmF0ZTpHbyxub3JtYWxpemU6S299O2Z1bmN0aW9uIFZvKGUsdCl7bGV0IG49ZS5wcm9wcyYmZS5wcm9wc1t0XTtnKG4pJiZuKCl9ZnVuY3Rpb24gSG8oZSx0LG4scixpLGEsbyxzLGMpe2xldHtwOmwsbzp7Y3JlYXRlRWxlbWVudDp1fX09YyxkPXUoYGRpdmApLGY9ZS5zdXNwZW5zZT1XbyhlLGkscix0LGQsbixhLG8scyxjKTtsKG51bGwsZi5wZW5kaW5nQnJhbmNoPWUuc3NDb250ZW50LGQsbnVsbCxyLGYsYSxvKSxmLmRlcHM+MD8oVm8oZSxgb25QZW5kaW5nYCksVm8oZSxgb25GYWxsYmFja2ApLGwobnVsbCxlLnNzRmFsbGJhY2ssdCxuLHIsbnVsbCxhLG8pLFlvKGYsZS5zc0ZhbGxiYWNrKSk6Zi5yZXNvbHZlKCExLCEwKX1mdW5jdGlvbiBVbyhlLHQsbixyLGksYSxvLHMse3A6Yyx1bTpsLG86e2NyZWF0ZUVsZW1lbnQ6dX19KXtsZXQgZD10LnN1c3BlbnNlPWUuc3VzcGVuc2U7ZC52bm9kZT10LHQuZWw9ZS5lbDtsZXQgZj10LnNzQ29udGVudCxwPXQuc3NGYWxsYmFjayx7YWN0aXZlQnJhbmNoOm0scGVuZGluZ0JyYW5jaDpoLGlzSW5GYWxsYmFjazpnLGlzSHlkcmF0aW5nOl99PWQ7aWYoaClkLnBlbmRpbmdCcmFuY2g9ZixscyhoLGYpPyhjKGgsZixkLmhpZGRlbkNvbnRhaW5lcixudWxsLGksZCxhLG8scyksZC5kZXBzPD0wP2QucmVzb2x2ZSgpOmcmJihffHwoYyhtLHAsbixyLGksbnVsbCxhLG8scyksWW8oZCxwKSkpKTooZC5wZW5kaW5nSWQ9em8rKyxfPyhkLmlzSHlkcmF0aW5nPSExLGQuYWN0aXZlQnJhbmNoPWgpOmwoaCxpLGQpLGQuZGVwcz0wLGQuZWZmZWN0cy5sZW5ndGg9MCxkLmhpZGRlbkNvbnRhaW5lcj11KGBkaXZgKSxnPyhjKG51bGwsZixkLmhpZGRlbkNvbnRhaW5lcixudWxsLGksZCxhLG8scyksZC5kZXBzPD0wP2QucmVzb2x2ZSgpOihjKG0scCxuLHIsaSxudWxsLGEsbyxzKSxZbyhkLHApKSk6bSYmbHMobSxmKT8oYyhtLGYsbixyLGksZCxhLG8scyksZC5yZXNvbHZlKCEwKSk6KGMobnVsbCxmLGQuaGlkZGVuQ29udGFpbmVyLG51bGwsaSxkLGEsbyxzKSxkLmRlcHM8PTAmJmQucmVzb2x2ZSgpKSk7ZWxzZSBpZihtJiZscyhtLGYpKWMobSxmLG4scixpLGQsYSxvLHMpLFlvKGQsZik7ZWxzZSBpZihWbyh0LGBvblBlbmRpbmdgKSxkLnBlbmRpbmdCcmFuY2g9ZixkLnBlbmRpbmdJZD1mLnNoYXBlRmxhZyY1MTI/Zi5jb21wb25lbnQuc3VzcGVuc2VJZDp6bysrLGMobnVsbCxmLGQuaGlkZGVuQ29udGFpbmVyLG51bGwsaSxkLGEsbyxzKSxkLmRlcHM8PTApZC5yZXNvbHZlKCk7ZWxzZXtsZXR7dGltZW91dDplLHBlbmRpbmdJZDp0fT1kO2U+MD9zZXRUaW1lb3V0KCgpPT57ZC5wZW5kaW5nSWQ9PT10JiZkLmZhbGxiYWNrKHApfSxlKTplPT09MCYmZC5mYWxsYmFjayhwKX19ZnVuY3Rpb24gV28oZSx0LG4scixpLGEsbyxzLGMsbCx1PSExKXtsZXR7cDpkLG06Zix1bTpwLG46bSxvOntwYXJlbnROb2RlOmgscmVtb3ZlOmd9fT1sLF8sdj1YbyhlKTt2JiZ0JiZ0LnBlbmRpbmdCcmFuY2gmJihfPXQucGVuZGluZ0lkLHQuZGVwcysrKTtsZXQgeT1lLnByb3BzP2llKGUucHJvcHMudGltZW91dCk6dm9pZCAwLGI9YSx4PXt2bm9kZTplLHBhcmVudDp0LHBhcmVudENvbXBvbmVudDpuLG5hbWVzcGFjZTpvLGNvbnRhaW5lcjpyLGhpZGRlbkNvbnRhaW5lcjppLGRlcHM6MCxwZW5kaW5nSWQ6em8rKyx0aW1lb3V0OnR5cGVvZiB5PT1gbnVtYmVyYD95Oi0xLGFjdGl2ZUJyYW5jaDpudWxsLGlzRmFsbGJhY2tNb3VudFBlbmRpbmc6ITEscGVuZGluZ0JyYW5jaDpudWxsLGlzSW5GYWxsYmFjazohdSxpc0h5ZHJhdGluZzp1LGlzVW5tb3VudGVkOiExLGVmZmVjdHM6W10scmVzb2x2ZShlPSExLG49ITEpe2xldHt2bm9kZTpyLGFjdGl2ZUJyYW5jaDppLHBlbmRpbmdCcmFuY2g6byxwZW5kaW5nSWQ6cyxlZmZlY3RzOmMscGFyZW50Q29tcG9uZW50OmwsY29udGFpbmVyOnUsaXNJbkZhbGxiYWNrOmR9PXgsZz0hMTtpZih4LmlzSHlkcmF0aW5nKXguaXNIeWRyYXRpbmc9ITE7ZWxzZSBpZighZSl7Zz1pJiZvLnRyYW5zaXRpb24mJm8udHJhbnNpdGlvbi5tb2RlPT09YG91dC1pbmA7bGV0IGU9ITE7ZyYmKGkudHJhbnNpdGlvbi5hZnRlckxlYXZlPSgpPT57cz09PXgucGVuZGluZ0lkJiYoZihvLHUsYT09PWImJiFlP20oaSk6YSwwKSxHbihjKSxkJiZyLnNzRmFsbGJhY2smJihyLnNzRmFsbGJhY2suZWw9bnVsbCkpfSksaSYmIXguaXNGYWxsYmFja01vdW50UGVuZGluZyYmKGgoaS5lbCk9PT11JiYoYT1tKGkpLGU9ITApLHAoaSxsLHgsITApLCFnJiZkJiZyLnNzRmFsbGJhY2smJlcoKCk9PnIuc3NGYWxsYmFjay5lbD1udWxsLHgpKSxnfHxmKG8sdSxhLDApfXguaXNGYWxsYmFja01vdW50UGVuZGluZz0hMSxZbyh4LG8pLHgucGVuZGluZ0JyYW5jaD1udWxsLHguaXNJbkZhbGxiYWNrPSExO2xldCB5PXgucGFyZW50LFM9ITE7Zm9yKDt5Oyl7aWYoeS5wZW5kaW5nQnJhbmNoKXtmb3IobGV0IGU9MDtlPGMubGVuZ3RoO2UrKyl5LmVmZmVjdHMucHVzaChjW2VdKTtTPSEwO2JyZWFrfXk9eS5wYXJlbnR9IVMmJiFnJiZHbihjKSx4LmVmZmVjdHM9W10sdiYmdCYmdC5wZW5kaW5nQnJhbmNoJiZfPT09dC5wZW5kaW5nSWQmJih0LmRlcHMtLSx0LmRlcHM9PT0wJiYhbiYmdC5yZXNvbHZlKCkpLFZvKHIsYG9uUmVzb2x2ZWApfSxmYWxsYmFjayhlKXtpZigheC5wZW5kaW5nQnJhbmNoKXJldHVybjtsZXR7dm5vZGU6dCxhY3RpdmVCcmFuY2g6bixwYXJlbnRDb21wb25lbnQ6cixjb250YWluZXI6aSxuYW1lc3BhY2U6YX09eDtWbyh0LGBvbkZhbGxiYWNrYCk7bGV0IG89bShuKSxsPSgpPT57eC5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSExLHguaXNJbkZhbGxiYWNrJiYoZChudWxsLGUsaSxvLHIsbnVsbCxhLHMsYyksWW8oeCxlKSl9LHU9ZS50cmFuc2l0aW9uJiZlLnRyYW5zaXRpb24ubW9kZT09PWBvdXQtaW5gO3UmJih4LmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITAsbi50cmFuc2l0aW9uLmFmdGVyTGVhdmU9bCkseC5pc0luRmFsbGJhY2s9ITAscChuLHIsbnVsbCwhMCksdXx8bCgpfSxtb3ZlKGUsdCxuKXt4LmFjdGl2ZUJyYW5jaCYmZih4LmFjdGl2ZUJyYW5jaCxlLHQsbikseC5jb250YWluZXI9ZX0sbmV4dCgpe3JldHVybiB4LmFjdGl2ZUJyYW5jaCYmbSh4LmFjdGl2ZUJyYW5jaCl9LHJlZ2lzdGVyRGVwKGUsdCxuKXtsZXQgcj0hIXgucGVuZGluZ0JyYW5jaDtyJiZ4LmRlcHMrKztsZXQgaT1lLnZub2RlLmVsO2UuYXN5bmNEZXAuY2F0Y2godD0+e01uKHQsZSwwKX0pLnRoZW4oYT0+e2lmKGUuaXNVbm1vdW50ZWR8fHguaXNVbm1vdW50ZWR8fHgucGVuZGluZ0lkIT09ZS5zdXNwZW5zZUlkKXJldHVybjtqcygpLGUuYXN5bmNSZXNvbHZlZD0hMDtsZXR7dm5vZGU6c309ZTtJcyhlLGEsITEpLGkmJihzLmVsPWkpO2xldCBjPSFpJiZlLnN1YlRyZWUuZWw7dChlLHMsaChpfHxlLnN1YlRyZWUuZWwpLGk/bnVsbDptKGUuc3ViVHJlZSkseCxvLG4pLGMmJihzLnBsYWNlaG9sZGVyPW51bGwsZyhjKSksc28oZSxzLmVsKSxyJiYtLXguZGVwcz09PTAmJngucmVzb2x2ZSgpfSl9LHVubW91bnQoZSx0KXt4LmlzVW5tb3VudGVkPSEwLHguYWN0aXZlQnJhbmNoJiZwKHguYWN0aXZlQnJhbmNoLG4sZSx0KSx4LnBlbmRpbmdCcmFuY2gmJnAoeC5wZW5kaW5nQnJhbmNoLG4sZSx0KX19O3JldHVybiB4fWZ1bmN0aW9uIEdvKGUsdCxuLHIsaSxhLG8scyxjKXtsZXQgbD10LnN1c3BlbnNlPVdvKHQscixuLGUucGFyZW50Tm9kZSxkb2N1bWVudC5jcmVhdGVFbGVtZW50KGBkaXZgKSxudWxsLGksYSxvLHMsITApLHU9YyhlLGwucGVuZGluZ0JyYW5jaD10LnNzQ29udGVudCxuLGwsYSxvKTtyZXR1cm4gbC5kZXBzPT09MCYmbC5yZXNvbHZlKCExLCEwKSx1fWZ1bmN0aW9uIEtvKGUpe2xldHtzaGFwZUZsYWc6dCxjaGlsZHJlbjpufT1lLHI9dCYzMjtlLnNzQ29udGVudD1xbyhyP24uZGVmYXVsdDpuKSxlLnNzRmFsbGJhY2s9cj9xbyhuLmZhbGxiYWNrKTpxKEspfWZ1bmN0aW9uIHFvKGUpe2xldCB0O2lmKGcoZSkpe2xldCBuPXJzJiZlLl9jO24mJihlLl9kPSExLHRzKCkpLGU9ZSgpLG4mJihlLl9kPSEwLHQ9ZXMsbnMoKSl9cmV0dXJuIGQoZSkmJihlPXRvKGUpKSxlPWJzKGUpLHQmJiFlLmR5bmFtaWNDaGlsZHJlbiYmKGUuZHluYW1pY0NoaWxkcmVuPXQuZmlsdGVyKHQ9PnQhPT1lKSksZX1mdW5jdGlvbiBKbyhlLHQpe3QmJnQucGVuZGluZ0JyYW5jaD9kKGUpP3QuZWZmZWN0cy5wdXNoKC4uLmUpOnQuZWZmZWN0cy5wdXNoKGUpOkduKGUpfWZ1bmN0aW9uIFlvKGUsdCl7ZS5hY3RpdmVCcmFuY2g9dDtsZXR7dm5vZGU6bixwYXJlbnRDb21wb25lbnQ6cn09ZSxpPXQuZWw7Zm9yKDshaSYmdC5jb21wb25lbnQ7KXQ9dC5jb21wb25lbnQuc3ViVHJlZSxpPXQuZWw7bi5lbD1pLHImJnIuc3ViVHJlZT09PW4mJihyLnZub2RlLmVsPWksc28ocixpKSl9ZnVuY3Rpb24gWG8oZSl7bGV0IHQ9ZS5wcm9wcyYmZS5wcm9wcy5zdXNwZW5zaWJsZTtyZXR1cm4gdCE9bnVsbCYmdCE9PSExfXZhciBHPVN5bWJvbC5mb3IoYHYtZmd0YCksWm89U3ltYm9sLmZvcihgdi10eHRgKSxLPVN5bWJvbC5mb3IoYHYtY210YCksUW89U3ltYm9sLmZvcihgdi1zdGNgKSwkbz1bXSxlcz1udWxsO2Z1bmN0aW9uIHRzKGU9ITEpeyRvLnB1c2goZXM9ZT9udWxsOltdKX1mdW5jdGlvbiBucygpeyRvLnBvcCgpLGVzPSRvWyRvLmxlbmd0aC0xXXx8bnVsbH12YXIgcnM9MTtmdW5jdGlvbiBpcyhlLHQ9ITEpe3JzKz1lLGU8MCYmZXMmJnQmJihlcy5oYXNPbmNlPSEwKX1mdW5jdGlvbiBhcyhlKXtyZXR1cm4gZS5keW5hbWljQ2hpbGRyZW49cnM+MD9lc3x8bjpudWxsLG5zKCkscnM+MCYmZXMmJmVzLnB1c2goZSksZX1mdW5jdGlvbiBvcyhlLHQsbixyLGksYSl7cmV0dXJuIGFzKHBzKGUsdCxuLHIsaSxhLCEwKSl9ZnVuY3Rpb24gc3MoZSx0LG4scixpKXtyZXR1cm4gYXMocShlLHQsbixyLGksITApKX1mdW5jdGlvbiBjcyhlKXtyZXR1cm4gZT9lLl9fdl9pc1ZOb2RlPT09ITA6ITF9ZnVuY3Rpb24gbHMoZSx0KXtyZXR1cm4gZS50eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWZ1bmN0aW9uIHVzKGUpe312YXIgZHM9KHtrZXk6ZX0pPT5lPz9udWxsLGZzPSh7cmVmOmUscmVmX2tleTp0LHJlZl9mb3I6bn0pPT4odHlwZW9mIGU9PWBudW1iZXJgJiYoZT1gYCtlKSxlPT1udWxsP251bGw6XyhlKXx8SChlKXx8ZyhlKT97aTpVLHI6ZSxrOnQsZjohIW59OmUpO2Z1bmN0aW9uIHBzKGUsdD1udWxsLG49bnVsbCxyPTAsaT1udWxsLGE9ZT09PUc/MDoxLG89ITEscz0hMSl7bGV0IGM9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZSxwcm9wczp0LGtleTp0JiZkcyh0KSxyZWY6dCYmZnModCksc2NvcGVJZDokbixzbG90U2NvcGVJZHM6bnVsbCxjaGlsZHJlbjpuLGNvbXBvbmVudDpudWxsLHN1c3BlbnNlOm51bGwsc3NDb250ZW50Om51bGwsc3NGYWxsYmFjazpudWxsLGRpcnM6bnVsbCx0cmFuc2l0aW9uOm51bGwsZWw6bnVsbCxhbmNob3I6bnVsbCx0YXJnZXQ6bnVsbCx0YXJnZXRTdGFydDpudWxsLHRhcmdldEFuY2hvcjpudWxsLHN0YXRpY0NvdW50OjAsc2hhcGVGbGFnOmEscGF0Y2hGbGFnOnIsZHluYW1pY1Byb3BzOmksZHluYW1pY0NoaWxkcmVuOm51bGwsYXBwQ29udGV4dDpudWxsLGN0eDpVfTtyZXR1cm4gcz8oU3MoYyxuKSxhJjEyOCYmZS5ub3JtYWxpemUoYykpOm4mJihjLnNoYXBlRmxhZ3w9XyhuKT84OjE2KSxycz4wJiYhbyYmZXMmJihjLnBhdGNoRmxhZz4wfHxhJjYpJiZjLnBhdGNoRmxhZyE9PTMyJiZlcy5wdXNoKGMpLGN9dmFyIHE9bXM7ZnVuY3Rpb24gbXMoZSx0PW51bGwsbj1udWxsLHI9MCxpPW51bGwsYT0hMSl7aWYoKCFlfHxlPT09JGkpJiYoZT1LKSxjcyhlKSl7bGV0IHI9Z3MoZSx0LCEwKTtyZXR1cm4gbiYmU3MocixuKSxycz4wJiYhYSYmZXMmJihyLnNoYXBlRmxhZyY2P2VzW2VzLmluZGV4T2YoZSldPXI6ZXMucHVzaChyKSksci5wYXRjaEZsYWc9LTIscn1pZihLcyhlKSYmKGU9ZS5fX3ZjY09wdHMpLHQpe3Q9aHModCk7bGV0e2NsYXNzOmUsc3R5bGU6bn09dDtlJiYhXyhlKSYmKHQuY2xhc3M9TChlKSkseShuKSYmKEt0KG4pJiYhZChuKSYmKG49cyh7fSxuKSksdC5zdHlsZT1GKG4pKX1sZXQgbz1fKGUpPzE6Um8oZSk/MTI4OnhyKGUpPzY0OnkoZSk/NDpnKGUpPzI6MDtyZXR1cm4gcHMoZSx0LG4scixpLG8sYSwhMCl9ZnVuY3Rpb24gaHMoZSl7cmV0dXJuIGU/S3QoZSl8fHVvKGUpP3Moe30sZSk6ZTpudWxsfWZ1bmN0aW9uIGdzKGUsdCxuPSExLHI9ITEpe2xldHtwcm9wczppLHJlZjphLHBhdGNoRmxhZzpvLGNoaWxkcmVuOnMsdHJhbnNpdGlvbjpjfT1lLGw9dD9DcyhpfHx7fSx0KTppLHU9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZS50eXBlLHByb3BzOmwsa2V5OmwmJmRzKGwpLHJlZjp0JiZ0LnJlZj9uJiZhP2QoYSk/YS5jb25jYXQoZnModCkpOlthLGZzKHQpXTpmcyh0KTphLHNjb3BlSWQ6ZS5zY29wZUlkLHNsb3RTY29wZUlkczplLnNsb3RTY29wZUlkcyxjaGlsZHJlbjpzLHRhcmdldDplLnRhcmdldCx0YXJnZXRTdGFydDplLnRhcmdldFN0YXJ0LHRhcmdldEFuY2hvcjplLnRhcmdldEFuY2hvcixzdGF0aWNDb3VudDplLnN0YXRpY0NvdW50LHNoYXBlRmxhZzplLnNoYXBlRmxhZyxwYXRjaEZsYWc6dCYmZS50eXBlIT09Rz9vPT09LTE/MTY6b3wxNjpvLGR5bmFtaWNQcm9wczplLmR5bmFtaWNQcm9wcyxkeW5hbWljQ2hpbGRyZW46ZS5keW5hbWljQ2hpbGRyZW4sYXBwQ29udGV4dDplLmFwcENvbnRleHQsZGlyczplLmRpcnMsdHJhbnNpdGlvbjpjLGNvbXBvbmVudDplLmNvbXBvbmVudCxzdXNwZW5zZTplLnN1c3BlbnNlLHNzQ29udGVudDplLnNzQ29udGVudCYmZ3MoZS5zc0NvbnRlbnQpLHNzRmFsbGJhY2s6ZS5zc0ZhbGxiYWNrJiZncyhlLnNzRmFsbGJhY2spLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZWw6ZS5lbCxhbmNob3I6ZS5hbmNob3IsY3R4OmUuY3R4LGNlOmUuY2V9O3JldHVybiBjJiZyJiZLcih1LGMuY2xvbmUodSkpLHV9ZnVuY3Rpb24gX3MoZT1gIGAsdD0wKXtyZXR1cm4gcShabyxudWxsLGUsdCl9ZnVuY3Rpb24gdnMoZSx0KXtsZXQgbj1xKFFvLG51bGwsZSk7cmV0dXJuIG4uc3RhdGljQ291bnQ9dCxufWZ1bmN0aW9uIHlzKGU9YGAsdD0hMSl7cmV0dXJuIHQ/KHRzKCksc3MoSyxudWxsLGUpKTpxKEssbnVsbCxlKX1mdW5jdGlvbiBicyhlKXtyZXR1cm4gZT09bnVsbHx8dHlwZW9mIGU9PWBib29sZWFuYD9xKEspOmQoZSk/cShHLG51bGwsZS5zbGljZSgpKTpjcyhlKT94cyhlKTpxKFpvLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiB4cyhlKXtyZXR1cm4gZS5lbD09PW51bGwmJmUucGF0Y2hGbGFnIT09LTF8fGUubWVtbz9lOmdzKGUpfWZ1bmN0aW9uIFNzKGUsdCl7bGV0IG49MCx7c2hhcGVGbGFnOnJ9PWU7aWYodD09bnVsbCl0PW51bGw7ZWxzZSBpZihkKHQpKW49MTY7ZWxzZSBpZih0eXBlb2YgdD09YG9iamVjdGApe2lmKHImNjUpe2xldCBuPXQuZGVmYXVsdDtuJiYobi5fYyYmKG4uX2Q9ITEpLFNzKGUsbigpKSxuLl9jJiYobi5fZD0hMCkpO3JldHVybn17bj0zMjtsZXQgcj10Ll87IXImJiF1byh0KT90Ll9jdHg9VTpyPT09MyYmVSYmKFUuc2xvdHMuXz09PTE/dC5fPTE6KHQuXz0yLGUucGF0Y2hGbGFnfD0xMDI0KSl9fWVsc2UgaWYoZyh0KSl7aWYociY2NSl7U3MoZSx7ZGVmYXVsdDp0fSk7cmV0dXJufXQ9e2RlZmF1bHQ6dCxfY3R4OlV9LG49MzJ9ZWxzZSB0PVN0cmluZyh0KSxyJjY0PyhuPTE2LHQ9W19zKHQpXSk6bj04O2UuY2hpbGRyZW49dCxlLnNoYXBlRmxhZ3w9bn1mdW5jdGlvbiBDcyguLi5lKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXTtmb3IobGV0IGUgaW4gcilpZihlPT09YGNsYXNzYCl0LmNsYXNzIT09ci5jbGFzcyYmKHQuY2xhc3M9TChbdC5jbGFzcyxyLmNsYXNzXSkpO2Vsc2UgaWYoZT09PWBzdHlsZWApdC5zdHlsZT1GKFt0LnN0eWxlLHIuc3R5bGVdKTtlbHNlIGlmKGEoZSkpe2xldCBuPXRbZV0saT1yW2VdO2kmJm4hPT1pJiYhKGQobikmJm4uaW5jbHVkZXMoaSkpP3RbZV09bj9bXS5jb25jYXQobixpKTppOmk9PW51bGwmJm49PW51bGwmJiFvKGUpJiYodFtlXT1pKX1lbHNlIGUhPT1gYCYmKHRbZV09cltlXSl9cmV0dXJuIHR9ZnVuY3Rpb24gd3MoZSx0LG4scj1udWxsKXtqbihlLHQsNyxbbixyXSl9dmFyIFRzPVdhKCksRXM9MDtmdW5jdGlvbiBEcyhlLG4scil7bGV0IGk9ZS50eXBlLGE9KG4/bi5hcHBDb250ZXh0OmUuYXBwQ29udGV4dCl8fFRzLG89e3VpZDpFcysrLHZub2RlOmUsdHlwZTppLHBhcmVudDpuLGFwcENvbnRleHQ6YSxyb290Om51bGwsbmV4dDpudWxsLHN1YlRyZWU6bnVsbCxlZmZlY3Q6bnVsbCx1cGRhdGU6bnVsbCxqb2I6bnVsbCxzY29wZTpuZXcgU2UoITApLHJlbmRlcjpudWxsLHByb3h5Om51bGwsZXhwb3NlZDpudWxsLGV4cG9zZVByb3h5Om51bGwsd2l0aFByb3h5Om51bGwscHJvdmlkZXM6bj9uLnByb3ZpZGVzOk9iamVjdC5jcmVhdGUoYS5wcm92aWRlcyksaWRzOm4/bi5pZHM6W2BgLDAsMF0sYWNjZXNzQ2FjaGU6bnVsbCxyZW5kZXJDYWNoZTpbXSxjb21wb25lbnRzOm51bGwsZGlyZWN0aXZlczpudWxsLHByb3BzT3B0aW9uczpfbyhpLGEpLGVtaXRzT3B0aW9uczpRYShpLGEpLGVtaXQ6bnVsbCxlbWl0dGVkOm51bGwscHJvcHNEZWZhdWx0czp0LGluaGVyaXRBdHRyczppLmluaGVyaXRBdHRycyxjdHg6dCxkYXRhOnQscHJvcHM6dCxhdHRyczp0LHNsb3RzOnQscmVmczp0LHNldHVwU3RhdGU6dCxzZXR1cENvbnRleHQ6bnVsbCxzdXNwZW5zZTpyLHN1c3BlbnNlSWQ6cj9yLnBlbmRpbmdJZDowLGFzeW5jRGVwOm51bGwsYXN5bmNSZXNvbHZlZDohMSxpc01vdW50ZWQ6ITEsaXNVbm1vdW50ZWQ6ITEsaXNEZWFjdGl2YXRlZDohMSxiYzpudWxsLGM6bnVsbCxibTpudWxsLG06bnVsbCxidTpudWxsLHU6bnVsbCx1bTpudWxsLGJ1bTpudWxsLGRhOm51bGwsYTpudWxsLHJ0ZzpudWxsLHJ0YzpudWxsLGVjOm51bGwsc3A6bnVsbH07cmV0dXJuIG8uY3R4PXtfOm99LG8ucm9vdD1uP24ucm9vdDpvLG8uZW1pdD1YYS5iaW5kKG51bGwsbyksZS5jZSYmZS5jZShvKSxvfXZhciBKPW51bGwsWT0oKT0+Snx8VSxPcyxrczt7bGV0IGU9b2UoKSx0PSh0LG4pPT57bGV0IHI7cmV0dXJuKHI9ZVt0XSl8fChyPWVbdF09W10pLHIucHVzaChuKSxlPT57ci5sZW5ndGg+MT9yLmZvckVhY2godD0+dChlKSk6clswXShlKX19O09zPXQoYF9fVlVFX0lOU1RBTkNFX1NFVFRFUlNfX2AsZT0+Sj1lKSxrcz10KGBfX1ZVRV9TU1JfU0VUVEVSU19fYCxlPT5Ocz1lKX12YXIgQXM9ZT0+e2xldCB0PUo7cmV0dXJuIE9zKGUpLGUuc2NvcGUub24oKSwoKT0+e2Uuc2NvcGUub2ZmKCksT3ModCl9fSxqcz0oKT0+e0omJkouc2NvcGUub2ZmKCksT3MobnVsbCl9O2Z1bmN0aW9uIE1zKGUpe3JldHVybiBlLnZub2RlLnNoYXBlRmxhZyY0fXZhciBOcz0hMTtmdW5jdGlvbiBQcyhlLHQ9ITEsbj0hMSl7dCYma3ModCk7bGV0e3Byb3BzOnIsY2hpbGRyZW46aX09ZS52bm9kZSxhPU1zKGUpO2ZvKGUscixhLHQpLFRvKGUsaSxufHx0KTtsZXQgbz1hP0ZzKGUsdCk6dm9pZCAwO3JldHVybiB0JiZrcyghMSksb31mdW5jdGlvbiBGcyhlLHQpe2xldCBuPWUudHlwZTtlLmFjY2Vzc0NhY2hlPU9iamVjdC5jcmVhdGUobnVsbCksZS5wcm94eT1uZXcgUHJveHkoZS5jdHgsZmEpO2xldHtzZXR1cDpyfT1uO2lmKHIpe1dlKCk7bGV0IG49ZS5zZXR1cENvbnRleHQ9ci5sZW5ndGg+MT9VcyhlKTpudWxsLGk9QXMoZSksYT1BbihyLGUsMCxbZS5wcm9wcyxuXSksbz1iKGEpO2lmKEdlKCksaSgpLChvfHxlLnNwKSYmIUVpKGUpJiZYcihlKSxvKXtpZihhLnRoZW4oanMsanMpLHQpcmV0dXJuIGEudGhlbihuPT57a3MoITApO3RyeXtJcyhlLG4sdCl9ZmluYWxseXtrcyghMSl9fSkuY2F0Y2godD0+e01uKHQsZSwwKX0pO2UuYXN5bmNEZXA9YX1lbHNlIElzKGUsYSx0KX1lbHNlIFZzKGUsdCl9ZnVuY3Rpb24gSXMoZSx0LG4pe2codCk/ZS50eXBlLl9fc3NySW5saW5lUmVuZGVyP2Uuc3NyUmVuZGVyPXQ6ZS5yZW5kZXI9dDp5KHQpJiYoZS5zZXR1cFN0YXRlPWFuKHQpKSxWcyhlLG4pfXZhciBMcyxScztmdW5jdGlvbiB6cyhlKXtMcz1lLFJzPWU9PntlLnJlbmRlci5fcmMmJihlLndpdGhQcm94eT1uZXcgUHJveHkoZS5jdHgscGEpKX19dmFyIEJzPSgpPT4hTHM7ZnVuY3Rpb24gVnMoZSx0LG4pe2xldCBpPWUudHlwZTtpZighZS5yZW5kZXIpe2lmKCF0JiZMcyYmIWkucmVuZGVyKXtsZXQgdD1pLnRlbXBsYXRlfHxQYShlKS50ZW1wbGF0ZTtpZih0KXtsZXR7aXNDdXN0b21FbGVtZW50Om4sY29tcGlsZXJPcHRpb25zOnJ9PWUuYXBwQ29udGV4dC5jb25maWcse2RlbGltaXRlcnM6YSxjb21waWxlck9wdGlvbnM6b309aSxjPXMocyh7aXNDdXN0b21FbGVtZW50Om4sZGVsaW1pdGVyczphfSxyKSxvKTtpLnJlbmRlcj1Mcyh0LGMpfX1lLnJlbmRlcj1pLnJlbmRlcnx8cixScyYmUnMoZSl9e2xldCB0PUFzKGUpO1dlKCk7dHJ5e0FhKGUpfWZpbmFsbHl7R2UoKSx0KCl9fX12YXIgSHM9e2dldChlLHQpe3JldHVybiBCKGUsYGdldGAsYGApLGVbdF19fTtmdW5jdGlvbiBVcyhlKXtyZXR1cm57YXR0cnM6bmV3IFByb3h5KGUuYXR0cnMsSHMpLHNsb3RzOmUuc2xvdHMsZW1pdDplLmVtaXQsZXhwb3NlOnQ9PntlLmV4cG9zZWQ9dHx8e319fX1mdW5jdGlvbiBXcyhlKXtyZXR1cm4gZS5leHBvc2VkP2UuZXhwb3NlUHJveHl8fD1uZXcgUHJveHkoYW4ocXQoZS5leHBvc2VkKSkse2dldCh0LG4pe2lmKG4gaW4gdClyZXR1cm4gdFtuXTtpZihuIGluIHVhKXJldHVybiB1YVtuXShlKX0saGFzKGUsdCl7cmV0dXJuIHQgaW4gZXx8dCBpbiB1YX19KTplLnByb3h5fWZ1bmN0aW9uIEdzKGUsdD0hMCl7cmV0dXJuIGcoZSk/ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lOmUubmFtZXx8dCYmZS5fX25hbWV9ZnVuY3Rpb24gS3MoZSl7cmV0dXJuIGcoZSkmJmBfX3ZjY09wdHNgaW4gZX12YXIgcXM9KGUsdCk9Pm1uKGUsdCxOcyk7ZnVuY3Rpb24gSnMoZSx0LG4pe3RyeXtpcygtMSk7bGV0IHI9YXJndW1lbnRzLmxlbmd0aDtyZXR1cm4gcj09PTI/eSh0KSYmIWQodCk/Y3ModCk/cShlLG51bGwsW3RdKTpxKGUsdCk6cShlLG51bGwsdCk6KHI+Mz9uPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTpyPT09MyYmY3MobikmJihuPVtuXSkscShlLHQsbikpfWZpbmFsbHl7aXMoMSl9fWZ1bmN0aW9uIFlzKCl7fWZ1bmN0aW9uIFhzKGUsdCxuLHIpe2xldCBpPW5bcl07aWYoaSYmWnMoaSxlKSlyZXR1cm4gaTtsZXQgYT10KCk7cmV0dXJuIGEubWVtbz1lLnNsaWNlKCksYS5jYWNoZUluZGV4PXIsbltyXT1hfWZ1bmN0aW9uIFpzKGUsdCl7bGV0IG49ZS5tZW1vO2lmKG4ubGVuZ3RoIT10Lmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKylpZihqKG5bZV0sdFtlXSkpcmV0dXJuITE7cmV0dXJuIHJzPjAmJmVzJiZlcy5wdXNoKGUpLCEwfXZhciBRcz1gMy41LjQxYCwkcz1yLGVjPWtuLHRjPVhuLG5jPVFuLHJjPXtjcmVhdGVDb21wb25lbnRJbnN0YW5jZTpEcyxzZXR1cENvbXBvbmVudDpQcyxyZW5kZXJDb21wb25lbnRSb290OmVvLHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTplcixpc1ZOb2RlOmNzLG5vcm1hbGl6ZVZOb2RlOmJzLGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlOldzLGVuc3VyZVZhbGlkVk5vZGU6c2EscHVzaFdhcm5pbmdDb250ZXh0OlRuLHBvcFdhcm5pbmdDb250ZXh0OkVufSxpYz12b2lkIDAsYWM9dHlwZW9mIHdpbmRvdzxgdWAmJndpbmRvdy50cnVzdGVkVHlwZXM7aWYoYWMpdHJ5e2ljPWFjLmNyZWF0ZVBvbGljeShgdnVlYCx7Y3JlYXRlSFRNTDplPT5lfSl9Y2F0Y2h7fXZhciBvYz1pYz9lPT5pYy5jcmVhdGVIVE1MKGUpOmU9PmUsc2M9YGh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnYCxjYz1gaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTGAsbGM9dHlwZW9mIGRvY3VtZW50PGB1YD9kb2N1bWVudDpudWxsLHVjPWxjJiZsYy5jcmVhdGVFbGVtZW50KGB0ZW1wbGF0ZWApLGRjPXtpbnNlcnQ6KGUsdCxuKT0+e3QuaW5zZXJ0QmVmb3JlKGUsbnx8bnVsbCl9LHJlbW92ZTplPT57bGV0IHQ9ZS5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQoZSl9LGNyZWF0ZUVsZW1lbnQ6KGUsdCxuLHIpPT57bGV0IGk9dD09PWBzdmdgP2xjLmNyZWF0ZUVsZW1lbnROUyhzYyxlKTp0PT09YG1hdGhtbGA/bGMuY3JlYXRlRWxlbWVudE5TKGNjLGUpOm4/bGMuY3JlYXRlRWxlbWVudChlLHtpczpufSk6bGMuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZT09PWBzZWxlY3RgJiZyJiZyLm11bHRpcGxlIT1udWxsJiZpLnNldEF0dHJpYnV0ZShgbXVsdGlwbGVgLHIubXVsdGlwbGUpLGl9LGNyZWF0ZVRleHQ6ZT0+bGMuY3JlYXRlVGV4dE5vZGUoZSksY3JlYXRlQ29tbWVudDplPT5sYy5jcmVhdGVDb21tZW50KGUpLHNldFRleHQ6KGUsdCk9PntlLm5vZGVWYWx1ZT10fSxzZXRFbGVtZW50VGV4dDooZSx0KT0+e2UudGV4dENvbnRlbnQ9dH0scGFyZW50Tm9kZTplPT5lLnBhcmVudE5vZGUsbmV4dFNpYmxpbmc6ZT0+ZS5uZXh0U2libGluZyxxdWVyeVNlbGVjdG9yOmU9PmxjLnF1ZXJ5U2VsZWN0b3IoZSksc2V0U2NvcGVJZChlLHQpe2Uuc2V0QXR0cmlidXRlKHQsYGApfSxpbnNlcnRTdGF0aWNDb250ZW50KGUsdCxuLHIsaSxhKXtsZXQgbz1uP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkO2lmKGkmJihpPT09YXx8aS5uZXh0U2libGluZykpZm9yKDt0Lmluc2VydEJlZm9yZShpLmNsb25lTm9kZSghMCksbiksIShpPT09YXx8IShpPWkubmV4dFNpYmxpbmcpKTspO2Vsc2V7dWMuaW5uZXJIVE1MPW9jKHI9PT1gc3ZnYD9gPHN2Zz4ke2V9PC9zdmc+YDpyPT09YG1hdGhtbGA/YDxtYXRoPiR7ZX08L21hdGg+YDplKTtsZXQgaT11Yy5jb250ZW50O2lmKHI9PT1gc3ZnYHx8cj09PWBtYXRobWxgKXtsZXQgZT1pLmZpcnN0Q2hpbGQ7Zm9yKDtlLmZpcnN0Q2hpbGQ7KWkuYXBwZW5kQ2hpbGQoZS5maXJzdENoaWxkKTtpLnJlbW92ZUNoaWxkKGUpfXQuaW5zZXJ0QmVmb3JlKGksbil9cmV0dXJuW28/by5uZXh0U2libGluZzp0LmZpcnN0Q2hpbGQsbj9uLnByZXZpb3VzU2libGluZzp0Lmxhc3RDaGlsZF19fSxmYz1gdHJhbnNpdGlvbmAscGM9YGFuaW1hdGlvbmAsbWM9U3ltYm9sKGBfdnRjYCksaGM9e25hbWU6U3RyaW5nLHR5cGU6U3RyaW5nLGNzczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGR1cmF0aW9uOltTdHJpbmcsTnVtYmVyLE9iamVjdF0sZW50ZXJGcm9tQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsYXBwZWFyRnJvbUNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsbGVhdmVGcm9tQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmd9LGdjPXMoe30sTHIsaGMpLF9jPShlPT4oZS5kaXNwbGF5TmFtZT1gVHJhbnNpdGlvbmAsZS5wcm9wcz1nYyxlKSkoKGUse3Nsb3RzOnR9KT0+SnMoVnIsYmMoZSksdCkpLHZjPShlLHQ9W10pPT57ZChlKT9lLmZvckVhY2goZT0+ZSguLi50KSk6ZSYmZSguLi50KX0seWM9ZT0+ZT9kKGUpP2Uuc29tZShlPT5lLmxlbmd0aD4xKTplLmxlbmd0aD4xOiExO2Z1bmN0aW9uIGJjKGUpe2xldCB0PXt9O2ZvcihsZXQgbiBpbiBlKW4gaW4gaGN8fCh0W25dPWVbbl0pO2lmKGUuY3NzPT09ITEpcmV0dXJuIHQ7bGV0e25hbWU6bj1gdmAsdHlwZTpyLGR1cmF0aW9uOmksZW50ZXJGcm9tQ2xhc3M6YT1gJHtufS1lbnRlci1mcm9tYCxlbnRlckFjdGl2ZUNsYXNzOm89YCR7bn0tZW50ZXItYWN0aXZlYCxlbnRlclRvQ2xhc3M6Yz1gJHtufS1lbnRlci10b2AsYXBwZWFyRnJvbUNsYXNzOmw9YSxhcHBlYXJBY3RpdmVDbGFzczp1PW8sYXBwZWFyVG9DbGFzczpkPWMsbGVhdmVGcm9tQ2xhc3M6Zj1gJHtufS1sZWF2ZS1mcm9tYCxsZWF2ZUFjdGl2ZUNsYXNzOnA9YCR7bn0tbGVhdmUtYWN0aXZlYCxsZWF2ZVRvQ2xhc3M6bT1gJHtufS1sZWF2ZS10b2B9PWUsaD14YyhpKSxnPWgmJmhbMF0sXz1oJiZoWzFdLHtvbkJlZm9yZUVudGVyOnYsb25FbnRlcjp5LG9uRW50ZXJDYW5jZWxsZWQ6YixvbkxlYXZlOngsb25MZWF2ZUNhbmNlbGxlZDpTLG9uQmVmb3JlQXBwZWFyOkM9dixvbkFwcGVhcjp3PXksb25BcHBlYXJDYW5jZWxsZWQ6VD1ifT10LEU9KGUsdCxuLHIpPT57ZS5fZW50ZXJDYW5jZWxsZWQ9cix3YyhlLHQ/ZDpjKSx3YyhlLHQ/dTpvKSxuJiZuKCl9LEQ9KGUsdCk9PntlLl9pc0xlYXZpbmc9ITEsd2MoZSxmKSx3YyhlLG0pLHdjKGUscCksdCYmdCgpfSxlZT1lPT4odCxuKT0+e2xldCBpPWU/dzp5LG89KCk9PkUodCxlLG4pO3ZjKGksW3Qsb10pLFRjKCgpPT57d2ModCxlP2w6YSksQ2ModCxlP2Q6YykseWMoaSl8fERjKHQscixnLG8pfSl9O3JldHVybiBzKHQse29uQmVmb3JlRW50ZXIoZSl7dmModixbZV0pLENjKGUsYSksQ2MoZSxvKX0sb25CZWZvcmVBcHBlYXIoZSl7dmMoQyxbZV0pLENjKGUsbCksQ2MoZSx1KX0sb25FbnRlcjplZSghMSksb25BcHBlYXI6ZWUoITApLG9uTGVhdmUoZSx0KXtlLl9pc0xlYXZpbmc9ITA7bGV0IG49KCk9PkQoZSx0KTtDYyhlLGYpLGUuX2VudGVyQ2FuY2VsbGVkPyhDYyhlLHApLGpjKGUpKTooamMoZSksQ2MoZSxwKSksVGMoKCk9PntlLl9pc0xlYXZpbmcmJih3YyhlLGYpLENjKGUsbSkseWMoeCl8fERjKGUscixfLG4pKX0pLHZjKHgsW2Usbl0pfSxvbkVudGVyQ2FuY2VsbGVkKGUpe0UoZSwhMSx2b2lkIDAsITApLHZjKGIsW2VdKX0sb25BcHBlYXJDYW5jZWxsZWQoZSl7RShlLCEwLHZvaWQgMCwhMCksdmMoVCxbZV0pfSxvbkxlYXZlQ2FuY2VsbGVkKGUpe0QoZSksdmMoUyxbZV0pfX0pfWZ1bmN0aW9uIHhjKGUpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7aWYoeShlKSlyZXR1cm5bU2MoZS5lbnRlciksU2MoZS5sZWF2ZSldO3tsZXQgdD1TYyhlKTtyZXR1cm5bdCx0XX19ZnVuY3Rpb24gU2MoZSl7cmV0dXJuIGllKGUpfWZ1bmN0aW9uIENjKGUsdCl7dC5zcGxpdCgvXHMrLykuZm9yRWFjaCh0PT50JiZlLmNsYXNzTGlzdC5hZGQodCkpLChlW21jXXx8KGVbbWNdPW5ldyBTZXQpKS5hZGQodCl9ZnVuY3Rpb24gd2MoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LnJlbW92ZSh0KSk7bGV0IG49ZVttY107biYmKG4uZGVsZXRlKHQpLG4uc2l6ZXx8KGVbbWNdPXZvaWQgMCkpfWZ1bmN0aW9uIFRjKGUpe3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZShlKX0pfXZhciBFYz0wO2Z1bmN0aW9uIERjKGUsdCxuLHIpe2xldCBpPWUuX2VuZElkPSsrRWMsYT0oKT0+e2k9PT1lLl9lbmRJZCYmcigpfTtpZihuIT1udWxsKXJldHVybiBzZXRUaW1lb3V0KGEsbik7bGV0e3R5cGU6byx0aW1lb3V0OnMscHJvcENvdW50OmN9PU9jKGUsdCk7aWYoIW8pcmV0dXJuIHIoKTtsZXQgbD1vK2BlbmRgLHU9MCxkPSgpPT57ZS5yZW1vdmVFdmVudExpc3RlbmVyKGwsZiksYSgpfSxmPXQ9Pnt0LnRhcmdldD09PWUmJisrdT49YyYmZCgpfTtzZXRUaW1lb3V0KCgpPT57dTxjJiZkKCl9LHMrMSksZS5hZGRFdmVudExpc3RlbmVyKGwsZil9ZnVuY3Rpb24gT2MoZSx0KXtsZXQgbj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxyPWU9PihuW2VdfHxgYCkuc3BsaXQoYCwgYCksaT1yKGAke2ZjfURlbGF5YCksYT1yKGAke2ZjfUR1cmF0aW9uYCksbz1rYyhpLGEpLHM9cihgJHtwY31EZWxheWApLGM9cihgJHtwY31EdXJhdGlvbmApLGw9a2MocyxjKSx1PW51bGwsZD0wLGY9MDt0PT09ZmM/bz4wJiYodT1mYyxkPW8sZj1hLmxlbmd0aCk6dD09PXBjP2w+MCYmKHU9cGMsZD1sLGY9Yy5sZW5ndGgpOihkPU1hdGgubWF4KG8sbCksdT1kPjA/bz5sP2ZjOnBjOm51bGwsZj11P3U9PT1mYz9hLmxlbmd0aDpjLmxlbmd0aDowKTtsZXQgcD11PT09ZmMmJi9cYig/OnRyYW5zZm9ybXxhbGwpKD86LHwkKS8udGVzdChyKGAke2ZjfVByb3BlcnR5YCkudG9TdHJpbmcoKSk7cmV0dXJue3R5cGU6dSx0aW1lb3V0OmQscHJvcENvdW50OmYsaGFzVHJhbnNmb3JtOnB9fWZ1bmN0aW9uIGtjKGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXgoLi4udC5tYXAoKHQsbik9PkFjKHQpK0FjKGVbbl0pKSl9ZnVuY3Rpb24gQWMoZSl7cmV0dXJuIGU9PT1gYXV0b2A/MDpOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKGAsYCxgLmApKSoxZTN9ZnVuY3Rpb24gamMoZSl7cmV0dXJuKGU/ZS5vd25lckRvY3VtZW50OmRvY3VtZW50KS5ib2R5Lm9mZnNldEhlaWdodH1mdW5jdGlvbiBNYyhlLHQsbil7bGV0IHI9ZVttY107ciYmKHQ9KHQ/W3QsLi4ucl06Wy4uLnJdKS5qb2luKGAgYCkpLHQ9PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUoYGNsYXNzYCk6bj9lLnNldEF0dHJpYnV0ZShgY2xhc3NgLHQpOmUuY2xhc3NOYW1lPXR9dmFyIE5jPVN5bWJvbChgX3ZvZGApLFBjPVN5bWJvbChgX3ZzaGApLEZjPXtuYW1lOmBzaG93YCxiZWZvcmVNb3VudChlLHt2YWx1ZTp0fSx7dHJhbnNpdGlvbjpufSl7ZVtOY109ZS5zdHlsZS5kaXNwbGF5PT09YG5vbmVgP2BgOmUuc3R5bGUuZGlzcGxheSxuJiZ0P24uYmVmb3JlRW50ZXIoZSk6SWMoZSx0KX0sbW91bnRlZChlLHt2YWx1ZTp0fSx7dHJhbnNpdGlvbjpufSl7biYmdCYmbi5lbnRlcihlKX0sdXBkYXRlZChlLHt2YWx1ZTp0LG9sZFZhbHVlOm59LHt0cmFuc2l0aW9uOnJ9KXshdCE9IW4mJihyP3Q/KHIuYmVmb3JlRW50ZXIoZSksSWMoZSwhMCksci5lbnRlcihlKSk6ci5sZWF2ZShlLCgpPT57SWMoZSwhMSl9KTpJYyhlLHQpKX0sYmVmb3JlVW5tb3VudChlLHt2YWx1ZTp0fSl7SWMoZSx0KX19O2Z1bmN0aW9uIEljKGUsdCl7ZS5zdHlsZS5kaXNwbGF5PXQ/ZVtOY106YG5vbmVgLGVbUGNdPSF0fWZ1bmN0aW9uIExjKCl7RmMuZ2V0U1NSUHJvcHM9KHt2YWx1ZTplfSk9PntpZighZSlyZXR1cm57c3R5bGU6e2Rpc3BsYXk6YG5vbmVgfX19fXZhciBSYz1TeW1ib2woYGApO2Z1bmN0aW9uIHpjKGUpe2xldCB0PVkoKTtpZighdClyZXR1cm47bGV0IG49dC51dD0obj1lKHQucHJveHkpKT0+e0FycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtdi1vd25lcj0iJHt0LnVpZH0iXWApKS5mb3JFYWNoKGU9PlZjKGUsbikpfSxpPSgpPT57bGV0IHI9ZSh0LnByb3h5KTt0LmNlP1ZjKHQuY2Uscik6QmModC5zdWJUcmVlLHIpLG4ocil9O0hpKCgpPT57R24oaSl9KSxWaSgoKT0+e2hyKGkscix7Zmx1c2g6YHBvc3RgfSk7bGV0IGU9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoaSk7ZS5vYnNlcnZlKHQuc3ViVHJlZS5lbC5wYXJlbnROb2RlLHtjaGlsZExpc3Q6ITB9KSxHaSgoKT0+ZS5kaXNjb25uZWN0KCkpfSl9ZnVuY3Rpb24gQmMoZSx0KXtpZihlLnNoYXBlRmxhZyYxMjgpe2xldCBuPWUuc3VzcGVuc2U7ZT1uLmFjdGl2ZUJyYW5jaCxuLnBlbmRpbmdCcmFuY2gmJiFuLmlzSHlkcmF0aW5nJiZuLmVmZmVjdHMucHVzaCgoKT0+e0JjKG4uYWN0aXZlQnJhbmNoLHQpfSl9Zm9yKDtlLmNvbXBvbmVudDspZT1lLmNvbXBvbmVudC5zdWJUcmVlO2lmKGUuc2hhcGVGbGFnJjEmJmUuZWwpVmMoZS5lbCx0KTtlbHNlIGlmKGUudHlwZT09PUcpZS5jaGlsZHJlbi5mb3JFYWNoKGU9PkJjKGUsdCkpO2Vsc2UgaWYoZS50eXBlPT09UW8pe2xldHtlbDpuLGFuY2hvcjpyfT1lO2Zvcig7biYmKFZjKG4sdCksbiE9PXIpOyluPW4ubmV4dFNpYmxpbmd9fWZ1bmN0aW9uIFZjKGUsdCl7aWYoZS5ub2RlVHlwZT09PTEpe2xldCBuPWUuc3R5bGUscj1gYDtmb3IobGV0IGUgaW4gdCl7bGV0IGk9eGUodFtlXSk7bi5zZXRQcm9wZXJ0eShgLS0ke2V9YCxpKSxyKz1gLS0ke2V9OiAke2l9O2B9bltSY109cn19dmFyIEhjPS8oPzpefDspXHMqZGlzcGxheVxzKjovO2Z1bmN0aW9uIFVjKGUsdCxuKXtsZXQgcj1lLnN0eWxlLGk9XyhuKSxhPSExO2lmKG4mJiFpKXtpZih0KXtpZihfKHQpKWZvcihsZXQgZSBvZiB0LnNwbGl0KGA7YCkpe2xldCB0PWUuc2xpY2UoMCxlLmluZGV4T2YoYDpgKSkudHJpbSgpO25bdF0/P0djKHIsdCxgYCl9ZWxzZSBmb3IobGV0IGUgaW4gdCluW2VdPz9HYyhyLGUsYGApfWZvcihsZXQgaSBpbiBuKXtpPT09YGRpc3BsYXlgJiYoYT0hMCk7bGV0IG89bltpXTtvPT1udWxsP0djKHIsaSxgYCk6WWMoZSxpLCFfKHQpJiZ0P3RbaV06dm9pZCAwLG8pfHxHYyhyLGksbyl9fWVsc2UgaWYoaSl7aWYodCE9PW4pe2xldCBlPXJbUmNdO2UmJihuKz1gO2ArZSksci5jc3NUZXh0PW4sYT1IYy50ZXN0KG4pfX1lbHNlIHQmJmUucmVtb3ZlQXR0cmlidXRlKGBzdHlsZWApO05jIGluIGUmJihlW05jXT1hP3IuZGlzcGxheTpgYCxlW1BjXSYmKHIuZGlzcGxheT1gbm9uZWApKX12YXIgV2M9L1xzKiFpbXBvcnRhbnQkLztmdW5jdGlvbiBHYyhlLHQsbil7aWYoZChuKSluLmZvckVhY2gobj0+R2MoZSx0LG4pKTtlbHNlIGlmKG4/Pz1gYCx0LnN0YXJ0c1dpdGgoYC0tYCkpZS5zZXRQcm9wZXJ0eSh0LG4pO2Vsc2V7bGV0IHI9SmMoZSx0KTtXYy50ZXN0KG4pP2Uuc2V0UHJvcGVydHkoayhyKSxuLnJlcGxhY2UoV2MsYGApLGBpbXBvcnRhbnRgKTplW3JdPW59fXZhciBLYz1bYFdlYmtpdGAsYE1vemAsYG1zYF0scWM9e307ZnVuY3Rpb24gSmMoZSx0KXtsZXQgbj1xY1t0XTtpZihuKXJldHVybiBuO2xldCByPU8odCk7aWYociE9PWBmaWx0ZXJgJiZyIGluIGUpcmV0dXJuIHFjW3RdPXI7cj1BKHIpO2ZvcihsZXQgbj0wO248S2MubGVuZ3RoO24rKyl7bGV0IGk9S2Nbbl0rcjtpZihpIGluIGUpcmV0dXJuIHFjW3RdPWl9cmV0dXJuIHR9ZnVuY3Rpb24gWWMoZSx0LG4scil7cmV0dXJuIGUudGFnTmFtZT09PWBURVhUQVJFQWAmJih0PT09YHdpZHRoYHx8dD09PWBoZWlnaHRgKSYmXyhyKSYmbj09PXJ9dmFyIFhjPWBodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rYDtmdW5jdGlvbiBaYyhlLHQsbixyLGksYT1mZSh0KSl7ciYmdC5zdGFydHNXaXRoKGB4bGluazpgKT9uPT1udWxsP2UucmVtb3ZlQXR0cmlidXRlTlMoWGMsdC5zbGljZSg2LHQubGVuZ3RoKSk6ZS5zZXRBdHRyaWJ1dGVOUyhYYyx0LG4pOm49PW51bGx8fGEmJiFwZShuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LGE/YGA6dihuKT9TdHJpbmcobik6bil9ZnVuY3Rpb24gUWMoZSx0LG4scixpKXtpZih0PT09YGlubmVySFRNTGB8fHQ9PT1gdGV4dENvbnRlbnRgKXtuIT1udWxsJiYoZVt0XT10PT09YGlubmVySFRNTGA/b2Mobik6bik7cmV0dXJufWxldCBhPWUudGFnTmFtZTtpZih0PT09YHZhbHVlYCYmYSE9PWBQUk9HUkVTU2AmJiFhLmluY2x1ZGVzKGAtYCkpe2xldCByPWE9PT1gT1BUSU9OYD9lLmdldEF0dHJpYnV0ZShgdmFsdWVgKXx8YGA6ZS52YWx1ZSxpPW49PW51bGw/ZS50eXBlPT09YGNoZWNrYm94YD9gb25gOmBgOlN0cmluZyhuKTsociE9PWl8fCEoYF92YWx1ZWBpbiBlKSkmJihlLnZhbHVlPWkpLG4/P2UucmVtb3ZlQXR0cmlidXRlKHQpLGUuX3ZhbHVlPW47cmV0dXJufWxldCBvPSExO2lmKG49PT1gYHx8bj09bnVsbCl7bGV0IHI9dHlwZW9mIGVbdF07cj09PWBib29sZWFuYD9uPXBlKG4pOm49PW51bGwmJnI9PT1gc3RyaW5nYD8obj1gYCxvPSEwKTpyPT09YG51bWJlcmAmJihuPTAsbz0hMCl9dHJ5e2VbdF09bn1jYXRjaHt9byYmZS5yZW1vdmVBdHRyaWJ1dGUoaXx8dCl9ZnVuY3Rpb24gJGMoZSx0LG4scil7ZS5hZGRFdmVudExpc3RlbmVyKHQsbixyKX1mdW5jdGlvbiBlbChlLHQsbixyKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLHIpfXZhciB0bD1TeW1ib2woYF92ZWlgKTtmdW5jdGlvbiBubChlLHQsbixyLGk9bnVsbCl7bGV0IGE9ZVt0bF18fChlW3RsXT17fSksbz1hW3RdO2lmKHImJm8pby52YWx1ZT1yO2Vsc2V7bGV0W24sc109YWwodCk7cj8kYyhlLG4sYVt0XT1sbChyLGkpLHMpOm8mJihlbChlLG4sbyxzKSxhW3RdPXZvaWQgMCl9fXZhciBybD0vKE9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvLGlsPS9eb246Pyg/Ok9uY2V8UGFzc2l2ZXxDYXB0dXJlKSQvO2Z1bmN0aW9uIGFsKGUpe2xldCB0LG47Zm9yKDsobj1lLm1hdGNoKHJsKSkmJiFpbC50ZXN0KGUpOyl0fHw9e30sZT1lLnNsaWNlKDAsZS5sZW5ndGgtblsxXS5sZW5ndGgpLHRbblsxXS50b0xvd2VyQ2FzZSgpXT0hMDtyZXR1cm5bZVsyXT09PWA6YD9lLnNsaWNlKDMpOmsoZS5zbGljZSgyKSksdF19dmFyIG9sPTAsc2w9UHJvbWlzZS5yZXNvbHZlKCksY2w9KCk9Pm9sfHw9KHNsLnRoZW4oKCk9Pm9sPTApLERhdGUubm93KCkpO2Z1bmN0aW9uIGxsKGUsdCl7bGV0IG49ZT0+e2lmKCFlLl92dHMpZS5fdnRzPURhdGUubm93KCk7ZWxzZSBpZihlLl92dHM8PW4uYXR0YWNoZWQpcmV0dXJuO2xldCByPW4udmFsdWU7aWYoZChyKSl7bGV0IG49ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb247ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249KCk9PntuLmNhbGwoZSksZS5fc3RvcHBlZD0hMH07bGV0IGk9ci5zbGljZSgpLGE9W2VdO2ZvcihsZXQgbj0wO248aS5sZW5ndGgmJiFlLl9zdG9wcGVkO24rKyl7bGV0IGU9aVtuXTtlJiZqbihlLHQsNSxhKX19ZWxzZSBqbihyLHQsNSxbZV0pfTtyZXR1cm4gbi52YWx1ZT1lLG4uYXR0YWNoZWQ9Y2woKSxufXZhciB1bD1lPT5lLmNoYXJDb2RlQXQoMCk9PT0xMTEmJmUuY2hhckNvZGVBdCgxKT09PTExMCYmZS5jaGFyQ29kZUF0KDIpPjk2JiZlLmNoYXJDb2RlQXQoMik8MTIzLGRsPShlLHQsbixyLGkscyk9PntsZXQgYz1pPT09YHN2Z2A7dD09PWBjbGFzc2A/TWMoZSxyLGMpOnQ9PT1gc3R5bGVgP1VjKGUsbixyKTphKHQpP28odCl8fG5sKGUsdCxuLHIscyk6KHRbMF09PT1gLmA/KHQ9dC5zbGljZSgxKSwhMCk6dFswXT09PWBeYD8odD10LnNsaWNlKDEpLCExKTpmbChlLHQscixjKSk/KFFjKGUsdCxyKSwhZS50YWdOYW1lLmluY2x1ZGVzKGAtYCkmJih0PT09YHZhbHVlYHx8dD09PWBjaGVja2VkYHx8dD09PWBzZWxlY3RlZGApJiZaYyhlLHQscixjLHMsdCE9PWB2YWx1ZWApKTplLl9pc1Z1ZUNFJiYocGwoZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCFfKHIpKSk/UWMoZSxPKHQpLHIscyx0KToodD09PWB0cnVlLXZhbHVlYD9lLl90cnVlVmFsdWU9cjp0PT09YGZhbHNlLXZhbHVlYCYmKGUuX2ZhbHNlVmFsdWU9ciksWmMoZSx0LHIsYykpfTtmdW5jdGlvbiBmbChlLHQsbixyKXtpZihyKXJldHVybiEhKHQ9PT1gaW5uZXJIVE1MYHx8dD09PWB0ZXh0Q29udGVudGB8fHQgaW4gZSYmdWwodCkmJmcobikpO2lmKHQ9PT1gc3BlbGxjaGVja2B8fHQ9PT1gZHJhZ2dhYmxlYHx8dD09PWB0cmFuc2xhdGVgfHx0PT09YGF1dG9jb3JyZWN0YHx8dD09PWBzYW5kYm94YCYmZS50YWdOYW1lPT09YElGUkFNRWB8fHQ9PT1gZm9ybWB8fHQ9PT1gbGlzdGAmJmUudGFnTmFtZT09PWBJTlBVVGB8fHQ9PT1gdHlwZWAmJmUudGFnTmFtZT09PWBURVhUQVJFQWApcmV0dXJuITE7aWYodD09PWB3aWR0aGB8fHQ9PT1gaGVpZ2h0YCl7bGV0IHQ9ZS50YWdOYW1lO2lmKHQ9PT1gSU1HYHx8dD09PWBWSURFT2B8fHQ9PT1gQ0FOVkFTYHx8dD09PWBTT1VSQ0VgKXJldHVybiExfXJldHVybiB1bCh0KSYmXyhuKT8hMTp0IGluIGV9ZnVuY3Rpb24gcGwoZSx0KXtsZXQgbj1lLl9kZWYucHJvcHM7aWYoIW4pcmV0dXJuITE7bGV0IHI9Tyh0KTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLnNvbWUoZT0+TyhlKT09PXIpOk9iamVjdC5rZXlzKG4pLnNvbWUoZT0+TyhlKT09PXIpfXZhciBtbD17fTtmdW5jdGlvbiBobChlLHQsbil7bGV0IHI9SnIoZSx0KTt3KHIpJiYocj1zKHt9LHIsdCkpO2NsYXNzIGkgZXh0ZW5kcyB2bHtjb25zdHJ1Y3RvcihlKXtzdXBlcihyLGUsbil9fXJldHVybiBpLmRlZj1yLGl9dmFyIGdsPSgoZSx0KT0+aGwoZSx0LGx1KSksX2w9dHlwZW9mIEhUTUxFbGVtZW50PGB1YD9IVE1MRWxlbWVudDpjbGFzc3t9LHZsPWNsYXNzIGUgZXh0ZW5kcyBfbHtjb25zdHJ1Y3RvcihlLHQ9e30sbj1jdSl7c3VwZXIoKSx0aGlzLl9kZWY9ZSx0aGlzLl9wcm9wcz10LHRoaXMuX2NyZWF0ZUFwcD1uLHRoaXMuX2lzVnVlQ0U9ITAsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9hcHA9bnVsbCx0aGlzLl9ub25jZT10aGlzLl9kZWYubm9uY2UsdGhpcy5fY29ubmVjdGVkPSExLHRoaXMuX3Jlc29sdmVkPSExLHRoaXMuX3BhdGNoaW5nPSExLHRoaXMuX2RpcnR5PSExLHRoaXMuX251bWJlclByb3BzPW51bGwsdGhpcy5fc3R5bGVDaGlsZHJlbj1uZXcgV2Vha1NldCx0aGlzLl9zdHlsZUFuY2hvcnM9bmV3IFdlYWtNYXAsdGhpcy5fb2I9bnVsbCx0aGlzLnNoYWRvd1Jvb3QmJm4hPT1jdT90aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdDplLnNoYWRvd1Jvb3Q9PT0hMT90aGlzLl9yb290PXRoaXM6KHRoaXMuYXR0YWNoU2hhZG93KHMoe30sZS5zaGFkb3dSb290T3B0aW9ucyx7bW9kZTpgb3BlbmB9KSksdGhpcy5fcm9vdD10aGlzLnNoYWRvd1Jvb3QpfWNvbm5lY3RlZENhbGxiYWNrKCl7aWYoIXRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuOyF0aGlzLnNoYWRvd1Jvb3QmJiF0aGlzLl9yZXNvbHZlZCYmdGhpcy5fcGFyc2VTbG90cygpLHRoaXMuX2Nvbm5lY3RlZD0hMDtsZXQgdD10aGlzO2Zvcig7dCYmPXQuYXNzaWduZWRTbG90fHx0LnBhcmVudE5vZGV8fHQuaG9zdDspaWYodCBpbnN0YW5jZW9mIGUpe3RoaXMuX3BhcmVudD10O2JyZWFrfXRoaXMuX2luc3RhbmNlfHwodGhpcy5fcmVzb2x2ZWQ/dGhpcy5fbW91bnQodGhpcy5fZGVmKTp0JiZ0Ll9wZW5kaW5nUmVzb2x2ZT90aGlzLl9wZW5kaW5nUmVzb2x2ZT10Ll9wZW5kaW5nUmVzb2x2ZS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ1Jlc29sdmU9dm9pZCAwLHRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuIHRoaXMuX3Jlc29sdmVEZWYoKX0pOnRoaXMuX3Jlc29sdmVEZWYoKSl9X3NldFBhcmVudChlPXRoaXMuX3BhcmVudCl7ZSYmKHRoaXMuX2luc3RhbmNlLnBhcmVudD1lLl9pbnN0YW5jZSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dChlKSl9X2luaGVyaXRQYXJlbnRDb250ZXh0KGU9dGhpcy5fcGFyZW50KXtlJiZ0aGlzLl9hcHAmJk9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLl9hcHAuX2NvbnRleHQucHJvdmlkZXMsZS5faW5zdGFuY2UucHJvdmlkZXMpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fY29ubmVjdGVkPSExLFZuKCgpPT57dGhpcy5fY29ubmVjdGVkfHwodGhpcy5fb2ImJj0odGhpcy5fb2IuZGlzY29ubmVjdCgpLG51bGwpLHRoaXMuX2FwcCYmdGhpcy5fYXBwLnVubW91bnQoKSx0aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlLmNlPXZvaWQgMCksdGhpcy5fYXBwPXRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5fdGVsZXBvcnRUYXJnZXRzJiY9KHRoaXMuX3RlbGVwb3J0VGFyZ2V0cy5jbGVhcigpLHZvaWQgMCkpfSl9X3Byb2Nlc3NNdXRhdGlvbnMoZSl7Zm9yKGxldCB0IG9mIGUpdGhpcy5fc2V0QXR0cih0LmF0dHJpYnV0ZU5hbWUpfV9yZXNvbHZlRGVmKCl7aWYodGhpcy5fcGVuZGluZ1Jlc29sdmUpcmV0dXJuIHRoaXMuX3BlbmRpbmdSZXNvbHZlO2ZvcihsZXQgZT0wO2U8dGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDtlKyspdGhpcy5fc2V0QXR0cih0aGlzLmF0dHJpYnV0ZXNbZV0ubmFtZSk7dGhpcy5fb2I9bmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5fcHJvY2Vzc011dGF0aW9ucy5iaW5kKHRoaXMpKSx0aGlzLl9vYi5vYnNlcnZlKHRoaXMse2F0dHJpYnV0ZXM6ITB9KTtsZXQgZT0oZSx0PSExKT0+e3RoaXMuX3Jlc29sdmVkPSEwLHRoaXMuX3BlbmRpbmdSZXNvbHZlPXZvaWQgMDtsZXR7cHJvcHM6bixzdHlsZXM6cn09ZSxpO2lmKG4mJiFkKG4pKWZvcihsZXQgZSBpbiBuKXtsZXQgdD1uW2VdOyh0PT09TnVtYmVyfHx0JiZ0LnR5cGU9PT1OdW1iZXIpJiYoZSBpbiB0aGlzLl9wcm9wcyYmKHRoaXMuX3Byb3BzW2VdPWllKHRoaXMuX3Byb3BzW2VdKSksKGl8fD1PYmplY3QuY3JlYXRlKG51bGwpKVtPKGUpXT0hMCl9dGhpcy5fbnVtYmVyUHJvcHM9aSx0aGlzLl9yZXNvbHZlUHJvcHMoZSksdGhpcy5zaGFkb3dSb290JiZ0aGlzLl9hcHBseVN0eWxlcyhyKSx0aGlzLl9tb3VudChlKX0sdD10aGlzLl9kZWYuX19hc3luY0xvYWRlcjtpZih0KXJldHVybiB0aGlzLl9wZW5kaW5nUmVzb2x2ZT10KCkudGhlbih0PT57dC5jb25maWd1cmVBcHA9dGhpcy5fZGVmLmNvbmZpZ3VyZUFwcCxlKHRoaXMuX2RlZj10LCEwKX0pLHRoaXMuX3BlbmRpbmdSZXNvbHZlO2UodGhpcy5fZGVmKX1fbW91bnQoZSl7dGhpcy5fYXBwPXRoaXMuX2NyZWF0ZUFwcChlKSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dCgpLGUuY29uZmlndXJlQXBwJiZlLmNvbmZpZ3VyZUFwcCh0aGlzLl9hcHApLHRoaXMuX2FwcC5fY2VWTm9kZT10aGlzLl9jcmVhdGVWTm9kZSgpLHRoaXMuX2FwcC5tb3VudCh0aGlzLl9yb290KTtsZXQgdD10aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuZXhwb3NlZDtpZih0KWZvcihsZXQgZSBpbiB0KXUodGhpcyxlKXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsZSx7Z2V0OigpPT50bih0W2VdKX0pfV9yZXNvbHZlUHJvcHMoZSl7bGV0e3Byb3BzOnR9PWUsbj1kKHQpP3Q6T2JqZWN0LmtleXModHx8e30pO2ZvcihsZXQgZSBvZiBPYmplY3Qua2V5cyh0aGlzKSllWzBdIT09YF9gJiZuLmluY2x1ZGVzKGUpJiZ0aGlzLl9zZXRQcm9wKGUsdGhpc1tlXSk7Zm9yKGxldCBlIG9mIG4ubWFwKE8pKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2dldCgpe3JldHVybiB0aGlzLl9nZXRQcm9wKGUpfSxzZXQodCl7dGhpcy5fc2V0UHJvcChlLHQsITAsIXRoaXMuX3BhdGNoaW5nKX19KX1fc2V0QXR0cihlKXtpZihlLnN0YXJ0c1dpdGgoYGRhdGEtdi1gKSlyZXR1cm47bGV0IHQ9dGhpcy5oYXNBdHRyaWJ1dGUoZSksbj10P3RoaXMuZ2V0QXR0cmlidXRlKGUpOm1sLHI9TyhlKTt0JiZ0aGlzLl9udW1iZXJQcm9wcyYmdGhpcy5fbnVtYmVyUHJvcHNbcl0mJihuPWllKG4pKSx0aGlzLl9zZXRQcm9wKHIsbiwhMSwhMCl9X2dldFByb3AoZSl7cmV0dXJuIHRoaXMuX3Byb3BzW2VdfV9zZXRQcm9wKGUsdCxuPSEwLHI9ITEpe2lmKHQhPT10aGlzLl9wcm9wc1tlXSYmKHRoaXMuX2RpcnR5PSEwLHQ9PT1tbD9kZWxldGUgdGhpcy5fcHJvcHNbZV06KHRoaXMuX3Byb3BzW2VdPXQsZT09PWBrZXlgJiZ0aGlzLl9hcHAmJih0aGlzLl9hcHAuX2NlVk5vZGUua2V5PXQpKSxyJiZ0aGlzLl9pbnN0YW5jZSYmdGhpcy5fdXBkYXRlKCksbikpe2xldCBuPXRoaXMuX29iO24mJih0aGlzLl9wcm9jZXNzTXV0YXRpb25zKG4udGFrZVJlY29yZHMoKSksbi5kaXNjb25uZWN0KCkpLHQ9PT0hMD90aGlzLnNldEF0dHJpYnV0ZShrKGUpLGBgKTp0eXBlb2YgdD09YHN0cmluZ2B8fHR5cGVvZiB0PT1gbnVtYmVyYD90aGlzLnNldEF0dHJpYnV0ZShrKGUpLHQrYGApOnR8fHRoaXMucmVtb3ZlQXR0cmlidXRlKGsoZSkpLG4mJm4ub2JzZXJ2ZSh0aGlzLHthdHRyaWJ1dGVzOiEwfSl9fV91cGRhdGUoKXtsZXQgZT10aGlzLl9jcmVhdGVWTm9kZSgpO3RoaXMuX2FwcCYmKGUuYXBwQ29udGV4dD10aGlzLl9hcHAuX2NvbnRleHQpLG91KGUsdGhpcy5fcm9vdCl9X2NyZWF0ZVZOb2RlKCl7bGV0IGU9e307dGhpcy5zaGFkb3dSb290fHwoZS5vblZub2RlTW91bnRlZD1lLm9uVm5vZGVVcGRhdGVkPXRoaXMuX3JlbmRlclNsb3RzLmJpbmQodGhpcykpO2xldCB0PXEodGhpcy5fZGVmLHMoZSx0aGlzLl9wcm9wcykpO3JldHVybiB0aGlzLl9pbnN0YW5jZXx8KHQuY2U9ZT0+e3RoaXMuX2luc3RhbmNlPWUsZS5jZT10aGlzLGUuaXNDRT0hMDtsZXQgdD0oZSx0KT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoZSx3KHRbMF0pP3Moe2RldGFpbDp0fSx0WzBdKTp7ZGV0YWlsOnR9KSl9O2UuZW1pdD0oZSwuLi5uKT0+e3QoZSxuKSxrKGUpIT09ZSYmdChrKGUpLG4pfSx0aGlzLl9zZXRQYXJlbnQoKX0pLHR9X2FwcGx5U3R5bGVzKGUsdCxuKXtpZighZSlyZXR1cm47aWYodCl7aWYodD09PXRoaXMuX2RlZnx8dGhpcy5fc3R5bGVDaGlsZHJlbi5oYXModCkpcmV0dXJuO3RoaXMuX3N0eWxlQ2hpbGRyZW4uYWRkKHQpfWxldCByPXRoaXMuX25vbmNlLGk9dGhpcy5zaGFkb3dSb290LGE9bj90aGlzLl9nZXRTdHlsZUFuY2hvcihuKXx8dGhpcy5fZ2V0U3R5bGVBbmNob3IodGhpcy5fZGVmKTp0aGlzLl9nZXRSb290U3R5bGVJbnNlcnRpb25BbmNob3IoaSksbz1udWxsO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PTA7cy0tKXtsZXQgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBzdHlsZWApO3ImJmMuc2V0QXR0cmlidXRlKGBub25jZWAsciksYy50ZXh0Q29udGVudD1lW3NdLGkuaW5zZXJ0QmVmb3JlKGMsb3x8YSksbz1jLHM9PT0wJiYobnx8dGhpcy5fc3R5bGVBbmNob3JzLnNldCh0aGlzLl9kZWYsYyksdCYmdGhpcy5fc3R5bGVBbmNob3JzLnNldCh0LGMpKX19X2dldFN0eWxlQW5jaG9yKGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0PXRoaXMuX3N0eWxlQW5jaG9ycy5nZXQoZSk7cmV0dXJuIHQmJnQucGFyZW50Tm9kZT09PXRoaXMuc2hhZG93Um9vdD90Oih0JiZ0aGlzLl9zdHlsZUFuY2hvcnMuZGVsZXRlKGUpLG51bGwpfV9nZXRSb290U3R5bGVJbnNlcnRpb25BbmNob3IoZSl7Zm9yKGxldCB0PTA7dDxlLmNoaWxkTm9kZXMubGVuZ3RoO3QrKyl7bGV0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKCEobiBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpKXJldHVybiBufXJldHVybiBudWxsfV9wYXJzZVNsb3RzKCl7bGV0IGU9dGhpcy5fc2xvdHM9e30sdDtmb3IoO3Q9dGhpcy5maXJzdENoaWxkOyl7bGV0IG49dC5ub2RlVHlwZT09PTEmJnQuZ2V0QXR0cmlidXRlKGBzbG90YCl8fGBkZWZhdWx0YDsoZVtuXXx8KGVbbl09W10pKS5wdXNoKHQpLHRoaXMucmVtb3ZlQ2hpbGQodCl9fV9yZW5kZXJTbG90cygpe2xldCBlPXRoaXMuX2dldFNsb3RzKCksdD10aGlzLl9pbnN0YW5jZS50eXBlLl9fc2NvcGVJZDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXSxpPXIuZ2V0QXR0cmlidXRlKGBuYW1lYCl8fGBkZWZhdWx0YCxhPXRoaXMuX3Nsb3RzW2ldLG89ci5wYXJlbnROb2RlO2lmKGEpZm9yKGxldCBlIG9mIGEpe2lmKHQmJmUubm9kZVR5cGU9PT0xKXtsZXQgbj10K2Atc2Ascj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsMSk7ZS5zZXRBdHRyaWJ1dGUobixgYCk7bGV0IGk7Zm9yKDtpPXIubmV4dE5vZGUoKTspaS5zZXRBdHRyaWJ1dGUobixgYCl9by5pbnNlcnRCZWZvcmUoZSxyKX1lbHNlIGZvcig7ci5maXJzdENoaWxkOylvLmluc2VydEJlZm9yZShyLmZpcnN0Q2hpbGQscik7by5yZW1vdmVDaGlsZChyKX19X2dldFNsb3RzKCl7bGV0IGU9W3RoaXNdO3RoaXMuX3RlbGVwb3J0VGFyZ2V0cyYmZS5wdXNoKC4uLnRoaXMuX3RlbGVwb3J0VGFyZ2V0cyk7bGV0IHQ9bmV3IFNldDtmb3IobGV0IG4gb2YgZSl7bGV0IGU9bi5xdWVyeVNlbGVjdG9yQWxsKGBzbG90YCk7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5hZGQoZVtuXSl9cmV0dXJuIEFycmF5LmZyb20odCl9X2luamVjdENoaWxkU3R5bGUoZSx0KXt0aGlzLl9hcHBseVN0eWxlcyhlLnN0eWxlcyxlLHQpfV9iZWdpblBhdGNoKCl7dGhpcy5fcGF0Y2hpbmc9ITAsdGhpcy5fZGlydHk9ITF9X2VuZFBhdGNoKCl7dGhpcy5fcGF0Y2hpbmc9ITEsdGhpcy5fZGlydHkmJnRoaXMuX2luc3RhbmNlJiZ0aGlzLl91cGRhdGUoKX1faGFzU2hhZG93Um9vdCgpe3JldHVybiB0aGlzLl9kZWYuc2hhZG93Um9vdCE9PSExfV9yZW1vdmVDaGlsZFN0eWxlKGUpe319O2Z1bmN0aW9uIHlsKGUpe2xldCB0PVkoKTtyZXR1cm4gdCYmdC5jZXx8bnVsbH1mdW5jdGlvbiBibCgpe2xldCBlPXlsKCk7cmV0dXJuIGUmJmUuc2hhZG93Um9vdH1mdW5jdGlvbiB4bChlPWAkc3R5bGVgKXt7bGV0IG49WSgpO2lmKCFuKXJldHVybiB0O2xldCByPW4udHlwZS5fX2Nzc01vZHVsZXM7cmV0dXJuIHImJnJbZV18fHR9fXZhciBTbD1uZXcgV2Vha01hcCxDbD1uZXcgV2Vha01hcCx3bD1TeW1ib2woYF9tb3ZlQ2JgKSxUbD1TeW1ib2woYF9lbnRlckNiYCksRWw9KGU9PihkZWxldGUgZS5wcm9wcy5tb2RlLGUpKSh7bmFtZTpgVHJhbnNpdGlvbkdyb3VwYCxwcm9wczpzKHt9LGdjLHt0YWc6U3RyaW5nLG1vdmVDbGFzczpTdHJpbmd9KSxzZXR1cChlLHtzbG90czp0fSl7bGV0IG49WSgpLHI9RnIoKSxpLGE7cmV0dXJuIFVpKCgpPT57aWYoIWkubGVuZ3RoKXJldHVybjtsZXQgdD1lLm1vdmVDbGFzc3x8YCR7ZS5uYW1lfHxgdmB9LW1vdmVgO2lmKCFqbChpWzBdLmVsLG4udm5vZGUuZWwsdCkpe2k9W107cmV0dXJufWkuZm9yRWFjaChEbCksaS5mb3JFYWNoKE9sKTtsZXQgcj1pLmZpbHRlcihrbCk7amMobi52bm9kZS5lbCksci5mb3JFYWNoKGU9PntsZXQgbj1lLmVsLHI9bi5zdHlsZTtDYyhuLHQpLHIudHJhbnNmb3JtPXIud2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPWBgO2xldCBpPW5bd2xdPWU9PntlJiZlLnRhcmdldCE9PW58fCghZXx8ZS5wcm9wZXJ0eU5hbWUuZW5kc1dpdGgoYHRyYW5zZm9ybWApKSYmKG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgdHJhbnNpdGlvbmVuZGAsaSksblt3bF09bnVsbCx3YyhuLHQpKX07bi5hZGRFdmVudExpc3RlbmVyKGB0cmFuc2l0aW9uZW5kYCxpKX0pLGk9W119KSwoKT0+e2xldCBvPVYoZSkscz1iYyhvKSxjPW8udGFnfHxHO2lmKGk9W10sYSlmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7bGV0IHQ9YVtlXTt0LmVsJiZ0LmVsIGluc3RhbmNlb2YgRWxlbWVudCYmIXQuZWxbUGNdJiYoaS5wdXNoKHQpLEtyKHQsVXIodCxzLHIsbikpLFNsLnNldCh0LEFsKHQuZWwpKSl9YT10LmRlZmF1bHQ/cXIodC5kZWZhdWx0KCkpOltdO2ZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtsZXQgdD1hW2VdO3Qua2V5IT1udWxsJiZLcih0LFVyKHQscyxyLG4pKX1yZXR1cm4gcShjLG51bGwsYSl9fX0pO2Z1bmN0aW9uIERsKGUpe2xldCB0PWUuZWw7dFt3bF0mJnRbd2xdKCksdFtUbF0mJnRbVGxdKCl9ZnVuY3Rpb24gT2woZSl7Q2wuc2V0KGUsQWwoZS5lbCkpfWZ1bmN0aW9uIGtsKGUpe2xldCB0PVNsLmdldChlKSxuPUNsLmdldChlKSxyPXQubGVmdC1uLmxlZnQsaT10LnRvcC1uLnRvcDtpZihyfHxpKXtsZXQgdD1lLmVsLG49dC5zdHlsZSxhPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz0xLHM9MTtyZXR1cm4gdC5vZmZzZXRXaWR0aCYmKG89YS53aWR0aC90Lm9mZnNldFdpZHRoKSx0Lm9mZnNldEhlaWdodCYmKHM9YS5oZWlnaHQvdC5vZmZzZXRIZWlnaHQpLCghTnVtYmVyLmlzRmluaXRlKG8pfHxvPT09MCkmJihvPTEpLCghTnVtYmVyLmlzRmluaXRlKHMpfHxzPT09MCkmJihzPTEpLE1hdGguYWJzKG8tMSk8LjAxJiYobz0xKSxNYXRoLmFicyhzLTEpPC4wMSYmKHM9MSksbi50cmFuc2Zvcm09bi53ZWJraXRUcmFuc2Zvcm09YHRyYW5zbGF0ZSgke3Ivb31weCwke2kvc31weClgLG4udHJhbnNpdGlvbkR1cmF0aW9uPWAwc2AsZX19ZnVuY3Rpb24gQWwoZSl7bGV0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57bGVmdDp0LmxlZnQsdG9wOnQudG9wfX1mdW5jdGlvbiBqbChlLHQsbil7bGV0IHI9ZS5jbG9uZU5vZGUoKSxpPWVbbWNdO2kmJmkuZm9yRWFjaChlPT57ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChlPT5lJiZyLmNsYXNzTGlzdC5yZW1vdmUoZSkpfSksbi5zcGxpdCgvXHMrLykuZm9yRWFjaChlPT5lJiZyLmNsYXNzTGlzdC5hZGQoZSkpLHIuc3R5bGUuZGlzcGxheT1gbm9uZWA7bGV0IGE9dC5ub2RlVHlwZT09PTE/dDp0LnBhcmVudE5vZGU7YS5hcHBlbmRDaGlsZChyKTtsZXR7aGFzVHJhbnNmb3JtOm99PU9jKHIpO3JldHVybiBhLnJlbW92ZUNoaWxkKHIpLG99dmFyIE1sPWU9PntsZXQgdD1lLnByb3BzW2BvblVwZGF0ZTptb2RlbFZhbHVlYF18fCExO3JldHVybiBkKHQpP2U9Pk0odCxlKTp0fTtmdW5jdGlvbiBObChlKXtlLnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gUGwoZSl7bGV0IHQ9ZS50YXJnZXQ7dC5jb21wb3NpbmcmJih0LmNvbXBvc2luZz0hMSx0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGBpbnB1dGApKSl9dmFyIEZsPVN5bWJvbChgX2Fzc2lnbmApLElsPVN5bWJvbChgX2luaXRpYWxWYWx1ZWApO2Z1bmN0aW9uIExsKGUsdCxuKXtyZXR1cm4gdCYmKGU9ZS50cmltKCkpLG4mJihlPXJlKGUpKSxlfXZhciBSbD17Y3JlYXRlZChlLHttb2RpZmllcnM6e2xhenk6dCx0cmltOm4sbnVtYmVyOnJ9fSxpKXtlLnBhcmVudE5vZGUmJihlLnR5cGU9PT1gdGV4dGA/ZVtJbF09ZS5kZWZhdWx0VmFsdWUucmVwbGFjZSgvW1xyXG5dL2csYGApOmUudHlwZT09PWB0ZXh0YXJlYWAmJihlW0lsXT1lLmRlZmF1bHRWYWx1ZS5yZXBsYWNlKC9cclxuPy9nLGAKYCkpKSxlW0ZsXT1NbChpKTtsZXQgYT1yfHxpLnByb3BzJiZpLnByb3BzLnR5cGU9PT1gbnVtYmVyYDskYyhlLHQ/YGNoYW5nZWA6YGlucHV0YCx0PT57dC50YXJnZXQuY29tcG9zaW5nfHxlW0ZsXShMbChlLnZhbHVlLG4sYSkpfSksKG58fGEpJiYkYyhlLGBjaGFuZ2VgLCgpPT57ZS52YWx1ZT1MbChlLnZhbHVlLG4sYSl9KSx0fHwoJGMoZSxgY29tcG9zaXRpb25zdGFydGAsTmwpLCRjKGUsYGNvbXBvc2l0aW9uZW5kYCxQbCksJGMoZSxgY2hhbmdlYCxQbCkpfSxtb3VudGVkKGUse3ZhbHVlOnQsbW9kaWZpZXJzOnt0cmltOm4sbnVtYmVyOnJ9fSl7bGV0IGk9dD8/YGAsYT1lW0lsXTtkZWxldGUgZVtJbF0sYSE9PXZvaWQgMCYmKGUudHlwZT09PWB0ZXh0YHx8ZS50eXBlPT09YHRleHRhcmVhYCkmJmUudmFsdWUhPT1hP2VbRmxdKExsKGUudmFsdWUsbixyKSk6ZS52YWx1ZT1pfSxiZWZvcmVVcGRhdGUoZSx7dmFsdWU6dCxvbGRWYWx1ZTpuLG1vZGlmaWVyczp7bGF6eTpyLHRyaW06aSxudW1iZXI6YX19LG8pe2lmKGVbRmxdPU1sKG8pLGUuY29tcG9zaW5nKXJldHVybjtsZXQgcz0oYXx8ZS50eXBlPT09YG51bWJlcmApJiYhL14wXGQvLnRlc3QoZS52YWx1ZSk/cmUoZS52YWx1ZSk6ZS52YWx1ZSxjPXQ/P2BgO2lmKHM9PT1jKXJldHVybjtsZXQgbD1lLmdldFJvb3ROb2RlKCk7KGwgaW5zdGFuY2VvZiBEb2N1bWVudHx8bCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpJiZsLmFjdGl2ZUVsZW1lbnQ9PT1lJiZlLnR5cGUhPT1gcmFuZ2VgJiYociYmdD09PW58fGkmJmUudmFsdWUudHJpbSgpPT09Yyl8fChlLnZhbHVlPWMpfX0semw9e2RlZXA6ITAsY3JlYXRlZChlLHQsbil7ZVtGbF09TWwobiksJGMoZSxgY2hhbmdlYCwoKT0+e2xldCB0PWUuX21vZGVsVmFsdWUsbj1XbChlKSxyPWUuY2hlY2tlZCxpPWVbRmxdO2lmKGQodCkpe2xldCBlPWdlKHQsbiksYT1lIT09LTE7aWYociYmIWEpaSh0LmNvbmNhdChuKSk7ZWxzZSBpZighciYmYSl7bGV0IG49Wy4uLnRdO24uc3BsaWNlKGUsMSksaShuKX19ZWxzZSBpZihwKHQpKXtsZXQgZT1uZXcgU2V0KHQpO3I/ZS5hZGQobik6ZS5kZWxldGUobiksaShlKX1lbHNlIGkoR2woZSxyKSl9KX0sbW91bnRlZDpCbCxiZWZvcmVVcGRhdGUoZSx0LG4pe2VbRmxdPU1sKG4pLEJsKGUsdCxuKX19O2Z1bmN0aW9uIEJsKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0scil7ZS5fbW9kZWxWYWx1ZT10O2xldCBpO2lmKGQodCkpaT1nZSh0LHIucHJvcHMudmFsdWUpPi0xO2Vsc2UgaWYocCh0KSlpPXQuaGFzKHIucHJvcHMudmFsdWUpO2Vsc2V7aWYodD09PW4pcmV0dXJuO2k9aGUodCxHbChlLCEwKSl9ZS5jaGVja2VkIT09aSYmKGUuY2hlY2tlZD1pKX12YXIgVmw9e2NyZWF0ZWQoZSx7dmFsdWU6dH0sbil7ZS5jaGVja2VkPWhlKHQsbi5wcm9wcy52YWx1ZSksZVtGbF09TWwobiksJGMoZSxgY2hhbmdlYCwoKT0+e2VbRmxdKFdsKGUpKX0pfSxiZWZvcmVVcGRhdGUoZSx7dmFsdWU6dCxvbGRWYWx1ZTpufSxyKXtlW0ZsXT1NbChyKSx0IT09biYmKGUuY2hlY2tlZD1oZSh0LHIucHJvcHMudmFsdWUpKX19LEhsPXtkZWVwOiEwLGNyZWF0ZWQoZSx7dmFsdWU6dCxtb2RpZmllcnM6e251bWJlcjpufX0scil7ZS5fbW9kZWxWYWx1ZT10LCRjKGUsYGNoYW5nZWAsKCk9PntsZXQgdD1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoZS5vcHRpb25zLGU9PmUuc2VsZWN0ZWQpLm1hcChlPT5uP3JlKFdsKGUpKTpXbChlKSk7ZVtGbF0oZS5tdWx0aXBsZT9wKGUuX21vZGVsVmFsdWUpP25ldyBTZXQodCk6dDp0WzBdKSxlLl9hc3NpZ25pbmc9ITAsVm4oKCk9PntlLl9hc3NpZ25pbmc9ITF9KX0pLGVbRmxdPU1sKHIpfSxtb3VudGVkKGUse3ZhbHVlOnR9KXtVbChlLHQpfSxiZWZvcmVVcGRhdGUoZSx7dmFsdWU6dH0sbil7ZS5fbW9kZWxWYWx1ZT10LGVbRmxdPU1sKG4pfSx1cGRhdGVkKGUse3ZhbHVlOnR9KXtlLl9hc3NpZ25pbmd8fFVsKGUsdCl9fTtmdW5jdGlvbiBVbChlLHQpe2xldCBuPWUubXVsdGlwbGUscj1kKHQpO2lmKCEobiYmIXImJiFwKHQpKSl7Zm9yKGxldCBpPTAsYT1lLm9wdGlvbnMubGVuZ3RoO2k8YTtpKyspe2xldCBhPWUub3B0aW9uc1tpXSxvPVdsKGEpO2lmKG4pe2lmKHIpe2xldCBlPXR5cGVvZiBvO2Euc2VsZWN0ZWQ9ZT09PWBzdHJpbmdgfHxlPT09YG51bWJlcmA/dC5zb21lKGU9PlN0cmluZyhlKT09PVN0cmluZyhvKSk6Z2UodCxvKT4tMX1lbHNlIGEuc2VsZWN0ZWQ9dC5oYXMobyl9ZWxzZSBpZihoZShXbChhKSx0KSl7ZS5zZWxlY3RlZEluZGV4IT09aSYmKGUuc2VsZWN0ZWRJbmRleD1pKTtyZXR1cm59fSFuJiZlLnNlbGVjdGVkSW5kZXghPT0tMSYmKGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIFdsKGUpe3JldHVybmBfdmFsdWVgaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIEdsKGUsdCl7bGV0IG49dD9gX3RydWVWYWx1ZWA6YF9mYWxzZVZhbHVlYDtyZXR1cm4gbiBpbiBlP2Vbbl06dH12YXIgS2w9e2NyZWF0ZWQoZSx0LG4pe0psKGUsdCxuLG51bGwsYGNyZWF0ZWRgKX0sbW91bnRlZChlLHQsbil7SmwoZSx0LG4sbnVsbCxgbW91bnRlZGApfSxiZWZvcmVVcGRhdGUoZSx0LG4scil7SmwoZSx0LG4scixgYmVmb3JlVXBkYXRlYCl9LHVwZGF0ZWQoZSx0LG4scil7SmwoZSx0LG4scixgdXBkYXRlZGApfX07ZnVuY3Rpb24gcWwoZSx0KXtzd2l0Y2goZSl7Y2FzZWBTRUxFQ1RgOnJldHVybiBIbDtjYXNlYFRFWFRBUkVBYDpyZXR1cm4gUmw7ZGVmYXVsdDpzd2l0Y2godCl7Y2FzZWBjaGVja2JveGA6cmV0dXJuIHpsO2Nhc2VgcmFkaW9gOnJldHVybiBWbDtkZWZhdWx0OnJldHVybiBSbH19fWZ1bmN0aW9uIEpsKGUsdCxuLHIsaSl7bGV0IGE9cWwoZS50YWdOYW1lLG4ucHJvcHMmJm4ucHJvcHMudHlwZSlbaV07YSYmYShlLHQsbixyKX1mdW5jdGlvbiBZbCgpe1JsLmdldFNTUlByb3BzPSh7dmFsdWU6ZX0pPT4oe3ZhbHVlOmV9KSxWbC5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9LHQpPT57aWYodC5wcm9wcyYmaGUodC5wcm9wcy52YWx1ZSxlKSlyZXR1cm57Y2hlY2tlZDohMH19LHpsLmdldFNTUlByb3BzPSh7dmFsdWU6ZX0sdCk9PntpZihkKGUpKXtpZih0LnByb3BzJiZnZShlLHQucHJvcHMudmFsdWUpPi0xKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKHAoZSkpe2lmKHQucHJvcHMmJmUuaGFzKHQucHJvcHMudmFsdWUpKXJldHVybntjaGVja2VkOiEwfX1lbHNlIGlmKGUpcmV0dXJue2NoZWNrZWQ6ITB9fSxLbC5nZXRTU1JQcm9wcz0oZSx0KT0+e2lmKHR5cGVvZiB0LnR5cGUhPWBzdHJpbmdgKXJldHVybjtsZXQgbj1xbCh0LnR5cGUudG9VcHBlckNhc2UoKSx0LnByb3BzJiZ0LnByb3BzLnR5cGUpO2lmKG4uZ2V0U1NSUHJvcHMpcmV0dXJuIG4uZ2V0U1NSUHJvcHMoZSx0KX19dmFyIFhsPVtgY3RybGAsYHNoaWZ0YCxgYWx0YCxgbWV0YWBdLFpsPXtzdG9wOmU9PmUuc3RvcFByb3BhZ2F0aW9uKCkscHJldmVudDplPT5lLnByZXZlbnREZWZhdWx0KCksc2VsZjplPT5lLnRhcmdldCE9PWUuY3VycmVudFRhcmdldCxjdHJsOmU9PiFlLmN0cmxLZXksc2hpZnQ6ZT0+IWUuc2hpZnRLZXksYWx0OmU9PiFlLmFsdEtleSxtZXRhOmU9PiFlLm1ldGFLZXksbGVmdDplPT5gYnV0dG9uYGluIGUmJmUuYnV0dG9uIT09MCxtaWRkbGU6ZT0+YGJ1dHRvbmBpbiBlJiZlLmJ1dHRvbiE9PTEscmlnaHQ6ZT0+YGJ1dHRvbmBpbiBlJiZlLmJ1dHRvbiE9PTIsZXhhY3Q6KGUsdCk9PlhsLnNvbWUobj0+ZVtgJHtufUtleWBdJiYhdC5pbmNsdWRlcyhuKSl9LFFsPShlLHQpPT57aWYoIWUpcmV0dXJuIGU7bGV0IG49ZS5fd2l0aE1vZHN8fD17fSxyPXQuam9pbihgLmApO3JldHVybiBuW3JdfHwobltyXT0oKG4sLi4ucik9Pntmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IHI9WmxbdFtlXV07aWYociYmcihuLHQpKXJldHVybn1yZXR1cm4gZShuLC4uLnIpfSkpfSwkbD17ZXNjOmBlc2NhcGVgLHNwYWNlOmAgYCx1cDpgYXJyb3ctdXBgLGxlZnQ6YGFycm93LWxlZnRgLHJpZ2h0OmBhcnJvdy1yaWdodGAsZG93bjpgYXJyb3ctZG93bmAsZGVsZXRlOmBiYWNrc3BhY2VgfSxldT0oZSx0KT0+e2xldCBuPWUuX3dpdGhLZXlzfHw9e30scj10LmpvaW4oYC5gKTtyZXR1cm4gbltyXXx8KG5bcl09KG49PntpZighKGBrZXlgaW4gbikpcmV0dXJuO2xldCByPWsobi5rZXkpO2lmKHQuc29tZShlPT5lPT09cnx8JGxbZV09PT1yKSlyZXR1cm4gZShuKX0pKX0sdHU9cyh7cGF0Y2hQcm9wOmRsfSxkYyksbnUscnU9ITE7ZnVuY3Rpb24gaXUoKXtyZXR1cm4gbnV8fD1Ebyh0dSl9ZnVuY3Rpb24gYXUoKXtyZXR1cm4gbnU9cnU/bnU6T28odHUpLHJ1PSEwLG51fXZhciBvdT0oKC4uLmUpPT57aXUoKS5yZW5kZXIoLi4uZSl9KSxzdT0oKC4uLmUpPT57YXUoKS5oeWRyYXRlKC4uLmUpfSksY3U9KCguLi5lKT0+e2xldCB0PWl1KCkuY3JlYXRlQXBwKC4uLmUpLHttb3VudDpufT10O3JldHVybiB0Lm1vdW50PWU9PntsZXQgcj1kdShlKTtpZighcilyZXR1cm47bGV0IGk9dC5fY29tcG9uZW50OyFnKGkpJiYhaS5yZW5kZXImJiFpLnRlbXBsYXRlJiYoaS50ZW1wbGF0ZT1yLmlubmVySFRNTCksci5ub2RlVHlwZT09PTEmJihyLnRleHRDb250ZW50PWBgKTtsZXQgYT1uKHIsITEsdXUocikpO3JldHVybiByIGluc3RhbmNlb2YgRWxlbWVudCYmKHIucmVtb3ZlQXR0cmlidXRlKGB2LWNsb2FrYCksci5zZXRBdHRyaWJ1dGUoYGRhdGEtdi1hcHBgLGBgKSksYX0sdH0pLGx1PSgoLi4uZSk9PntsZXQgdD1hdSgpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57bGV0IHQ9ZHUoZSk7aWYodClyZXR1cm4gbih0LCEwLHV1KHQpKX0sdH0pO2Z1bmN0aW9uIHV1KGUpe2lmKGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybmBzdmdgO2lmKHR5cGVvZiBNYXRoTUxFbGVtZW50PT1gZnVuY3Rpb25gJiZlIGluc3RhbmNlb2YgTWF0aE1MRWxlbWVudClyZXR1cm5gbWF0aG1sYH1mdW5jdGlvbiBkdShlKXtyZXR1cm4gXyhlKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpOmV9dmFyIGZ1PSExLHB1PSgpPT57ZnV8fChmdT0hMCxZbCgpLExjKCkpfSxtdT10eXBlb2Ygd2luZG93PGB1YCxodSxndT1lPT5odT1lLF91PVN5bWJvbCgpO2Z1bmN0aW9uIHZ1KGUpe3JldHVybiBlJiZ0eXBlb2YgZT09YG9iamVjdGAmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PWBbb2JqZWN0IE9iamVjdF1gJiZ0eXBlb2YgZS50b0pTT04hPWBmdW5jdGlvbmB9dmFyIHl1PXR5cGVvZiB3aW5kb3c9PWBvYmplY3RgJiZ3aW5kb3cud2luZG93PT09d2luZG93P3dpbmRvdzp0eXBlb2Ygc2VsZj09YG9iamVjdGAmJnNlbGYuc2VsZj09PXNlbGY/c2VsZjp0eXBlb2YgZ2xvYmFsPT1gb2JqZWN0YCYmZ2xvYmFsLmdsb2JhbD09PWdsb2JhbD9nbG9iYWw6dHlwZW9mIGdsb2JhbFRoaXM9PWBvYmplY3RgP2dsb2JhbFRoaXM6e0hUTUxFbGVtZW50Om51bGx9O2Z1bmN0aW9uIGJ1KGUse2F1dG9Cb206dD0hMX09e30pe3JldHVybiB0JiYvXlxzKig/OnRleHRcL1xTKnxhcHBsaWNhdGlvblwveG1sfFxTKlwvXFMqXCt4bWwpXHMqOy4qY2hhcnNldFxzKj1ccyp1dGYtOC9pLnRlc3QoZS50eXBlKT9uZXcgQmxvYihbYO+7v2AsZV0se3R5cGU6ZS50eXBlfSk6ZX1mdW5jdGlvbiB4dShlLHQsbil7bGV0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3BlbihgR0VUYCxlKSxyLnJlc3BvbnNlVHlwZT1gYmxvYmAsci5vbmxvYWQ9ZnVuY3Rpb24oKXtFdShyLnJlc3BvbnNlLHQsbil9LHIub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoYGNvdWxkIG5vdCBkb3dubG9hZCBmaWxlYCl9LHIuc2VuZCgpfWZ1bmN0aW9uIFN1KGUpe2xldCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oYEhFQURgLGUsITEpO3RyeXt0LnNlbmQoKX1jYXRjaHt9cmV0dXJuIHQuc3RhdHVzPj0yMDAmJnQuc3RhdHVzPD0yOTl9ZnVuY3Rpb24gQ3UoZSl7dHJ5e2UuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChgY2xpY2tgKSl9Y2F0Y2h7bGV0IHQ9bmV3IE1vdXNlRXZlbnQoYGNsaWNrYCx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLHZpZXc6d2luZG93LGRldGFpbDowLHNjcmVlblg6ODAsc2NyZWVuWToyMCxjbGllbnRYOjgwLGNsaWVudFk6MjAsY3RybEtleTohMSxhbHRLZXk6ITEsc2hpZnRLZXk6ITEsbWV0YUtleTohMSxidXR0b246MCxyZWxhdGVkVGFyZ2V0Om51bGx9KTtlLmRpc3BhdGNoRXZlbnQodCl9fXZhciB3dT10eXBlb2YgbmF2aWdhdG9yPT1gb2JqZWN0YD9uYXZpZ2F0b3I6e3VzZXJBZ2VudDpgYH0sVHU9L01hY2ludG9zaC8udGVzdCh3dS51c2VyQWdlbnQpJiYvQXBwbGVXZWJLaXQvLnRlc3Qod3UudXNlckFnZW50KSYmIS9TYWZhcmkvLnRlc3Qod3UudXNlckFnZW50KSxFdT1tdT90eXBlb2YgSFRNTEFuY2hvckVsZW1lbnQ8YHVgJiZgZG93bmxvYWRgaW4gSFRNTEFuY2hvckVsZW1lbnQucHJvdG90eXBlJiYhVHU/RHU6YG1zU2F2ZU9yT3BlbkJsb2JgaW4gd3U/T3U6a3U6KCk9Pnt9O2Z1bmN0aW9uIER1KGUsdD1gZG93bmxvYWRgLG4pe2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGFgKTtyLmRvd25sb2FkPXQsci5yZWw9YG5vb3BlbmVyYCx0eXBlb2YgZT09YHN0cmluZ2A/KHIuaHJlZj1lLHIub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP0N1KHIpOlN1KHIuaHJlZik/eHUoZSx0LG4pOihyLnRhcmdldD1gX2JsYW5rYCxDdShyKSkpOihyLmhyZWY9VVJMLmNyZWF0ZU9iamVjdFVSTChlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTChyLmhyZWYpfSw0ZTQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtDdShyKX0sMCkpfWZ1bmN0aW9uIE91KGUsdD1gZG93bmxvYWRgLG4pe2lmKHR5cGVvZiBlPT1gc3RyaW5nYCl7aWYoU3UoZSkpeHUoZSx0LG4pO2Vsc2V7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgYWApO3QuaHJlZj1lLHQudGFyZ2V0PWBfYmxhbmtgLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtDdSh0KX0pfX1lbHNlIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKGJ1KGUsbiksdCl9ZnVuY3Rpb24ga3UoZSx0LG4scil7aWYocnx8PW9wZW4oYGAsYF9ibGFua2ApLHImJihyLmRvY3VtZW50LnRpdGxlPXIuZG9jdW1lbnQuYm9keS5pbm5lclRleHQ9YGRvd25sb2FkaW5nLi4uYCksdHlwZW9mIGU9PWBzdHJpbmdgKXJldHVybiB4dShlLHQsbik7bGV0IGk9ZS50eXBlPT09YGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbWAsYT0vY29uc3RydWN0b3IvaS50ZXN0KFN0cmluZyh5dS5IVE1MRWxlbWVudCkpfHxgc2FmYXJpYGluIHl1LG89L0NyaU9TXC9bXGRdKy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtpZigob3x8aSYmYXx8VHUpJiZ0eXBlb2YgRmlsZVJlYWRlcjxgdWApe2xldCB0PW5ldyBGaWxlUmVhZGVyO3Qub25sb2FkZW5kPWZ1bmN0aW9uKCl7bGV0IGU9dC5yZXN1bHQ7aWYodHlwZW9mIGUhPWBzdHJpbmdgKXRocm93IHI9bnVsbCxFcnJvcihgV3JvbmcgcmVhZGVyLnJlc3VsdCB0eXBlYCk7ZT1vP2U6ZS5yZXBsYWNlKC9eZGF0YTpbXjtdKjsvLGBkYXRhOmF0dGFjaG1lbnQvZmlsZTtgKSxyP3IubG9jYXRpb24uaHJlZj1lOmxvY2F0aW9uLmFzc2lnbihlKSxyPW51bGx9LHQucmVhZEFzRGF0YVVSTChlKX1lbHNle2xldCB0PVVSTC5jcmVhdGVPYmplY3RVUkwoZSk7cj9yLmxvY2F0aW9uLmFzc2lnbih0KTpsb2NhdGlvbi5ocmVmPXQscj1udWxsLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtVUkwucmV2b2tlT2JqZWN0VVJMKHQpfSw0ZTQpfX12YXJ7YXNzaWduOkF1fT1PYmplY3Q7ZnVuY3Rpb24ganUoKXtsZXQgZT1DZSghMCksdD1lLnJ1bigoKT0+WHQoe30pKSxuPVtdLHI9W10saT1xdCh7aW5zdGFsbChlKXtndShpKSxpLl9hPWUsZS5wcm92aWRlKF91LGkpLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHBpbmlhPWksci5mb3JFYWNoKGU9Pm4ucHVzaChlKSkscj1bXX0sdXNlKGUpe3JldHVybiB0aGlzLl9hP24ucHVzaChlKTpyLnB1c2goZSksdGhpc30sX3A6bixfYTpudWxsLF9lOmUsX3M6bmV3IE1hcCxzdGF0ZTp0fSk7cmV0dXJuIGl9dmFyIE11PSgpPT57fTtmdW5jdGlvbiBOdShlLHQsbixyPU11KXtlLmFkZCh0KTtsZXQgaT0oKT0+e2UuZGVsZXRlKHQpJiZyKCl9O3JldHVybiFuJiZ3ZSgpJiZUZShpKSxpfWZ1bmN0aW9uIFB1KGUsLi4udCl7ZS5mb3JFYWNoKGU9PntlKC4uLnQpfSl9dmFyIEZ1PWU9PmUoKSxJdT1TeW1ib2woKSxMdT1TeW1ib2woKTtmdW5jdGlvbiBSdShlLHQpe2UgaW5zdGFuY2VvZiBNYXAmJnQgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKCh0LG4pPT5lLnNldChuLHQpKTplIGluc3RhbmNlb2YgU2V0JiZ0IGluc3RhbmNlb2YgU2V0JiZ0LmZvckVhY2goZS5hZGQsZSk7Zm9yKGxldCBuIGluIHQpe2lmKCFPYmplY3QuaGFzT3duKHQsbikpY29udGludWU7bGV0IHI9dFtuXSxpPWVbbl07ZVtuXT12dShpKSYmdnUocikmJk9iamVjdC5oYXNPd24oZSxuKSYmIUgocikmJiFVdChyKT9SdShpLHIpOnJ9cmV0dXJuIGV9dmFyIHp1PVN5bWJvbCgpO2Z1bmN0aW9uIEJ1KGUpe3JldHVybiFlfHx0eXBlb2YgZSE9YG9iamVjdGB8fCFPYmplY3QuaGFzT3duKGUsenUpfXZhcnthc3NpZ246VnV9PU9iamVjdDtmdW5jdGlvbiBIdShlKXtyZXR1cm4hIShIKGUpJiZlLmVmZmVjdCl9ZnVuY3Rpb24gVXUoZSx0LG4scil7bGV0e3N0YXRlOmksYWN0aW9uczphLGdldHRlcnM6b309dCxzPW4uc3RhdGUudmFsdWVbZV0sYztmdW5jdGlvbiBsKCl7cmV0dXJuIHN8fChuLnN0YXRlLnZhbHVlW2VdPWk/aSgpOnt9KSxWdShjbihuLnN0YXRlLnZhbHVlW2VdKSxhLE9iamVjdC5rZXlzKG98fHt9KS5yZWR1Y2UoKHQscik9Pih0W3JdPXF0KHFzKCgpPT57Z3Uobik7bGV0IHQ9bi5fcy5nZXQoZSk7cmV0dXJuIG9bcl0uY2FsbCh0LHQpfSkpLHQpLHt9KSl9cmV0dXJuIGM9V3UoZSxsLHQsbixyLCEwKSxjfWZ1bmN0aW9uIFd1KGUsdCxuPXt9LHIsaSxhKXtsZXQgbyxzPVZ1KHthY3Rpb25zOnt9fSxuKSxjPXtkZWVwOiEwfSxsLHUsZD1uZXcgU2V0LGY9bmV3IFNldCxwLG09ci5zdGF0ZS52YWx1ZVtlXTshYSYmIW0mJihyLnN0YXRlLnZhbHVlW2VdPXt9KTtsZXQgaDtmdW5jdGlvbiBnKHQpe2xldCBuO2w9dT0hMSx0eXBlb2YgdD09YGZ1bmN0aW9uYD8odChyLnN0YXRlLnZhbHVlW2VdKSxuPXt0eXBlOmBwYXRjaCBmdW5jdGlvbmAsc3RvcmVJZDplLGV2ZW50czpwfSk6KFJ1KHIuc3RhdGUudmFsdWVbZV0sdCksbj17dHlwZTpgcGF0Y2ggb2JqZWN0YCxwYXlsb2FkOnQsc3RvcmVJZDplLGV2ZW50czpwfSk7bGV0IGk9aD1TeW1ib2woKTtWbigpLnRoZW4oKCk9PntoPT09aSYmKGw9ITApfSksdT0hMCxQdShkLG4sci5zdGF0ZS52YWx1ZVtlXSl9bGV0IF89YT9mdW5jdGlvbigpe2xldHtzdGF0ZTplfT1uLHQ9ZT9lKCk6e307dGhpcy4kcGF0Y2goZT0+e1Z1KGUsdCl9KX06TXU7ZnVuY3Rpb24gdigpe28uc3RvcCgpLGQuY2xlYXIoKSxmLmNsZWFyKCksci5fcy5kZWxldGUoZSl9bGV0IHk9KHQsbj1gYCk9PntpZihJdSBpbiB0KXJldHVybiB0W0x1XT1uLHQ7bGV0IGk9ZnVuY3Rpb24oKXtndShyKTtsZXQgbj1BcnJheS5mcm9tKGFyZ3VtZW50cyksYT1uZXcgU2V0LG89bmV3IFNldDtmdW5jdGlvbiBzKGUpe2EuYWRkKGUpfWZ1bmN0aW9uIGMoZSl7by5hZGQoZSl9UHUoZix7YXJnczpuLG5hbWU6aVtMdV0sc3RvcmU6YixhZnRlcjpzLG9uRXJyb3I6Y30pO2xldCBsO3RyeXtsPXQuYXBwbHkodGhpcyYmdGhpcy4kaWQ9PT1lP3RoaXM6YixuKX1jYXRjaChlKXt0aHJvdyBQdShvLGUpLGV9cmV0dXJuIGwgaW5zdGFuY2VvZiBQcm9taXNlP2wudGhlbihlPT4oUHUoYSxlKSxlKSkuY2F0Y2goZT0+KFB1KG8sZSksUHJvbWlzZS5yZWplY3QoZSkpKTooUHUoYSxsKSxsKX07cmV0dXJuIGlbSXVdPSEwLGlbTHVdPW4saX0sYj1SdCh7X3A6ciwkaWQ6ZSwkb25BY3Rpb246TnUuYmluZChudWxsLGYpLCRwYXRjaDpnLCRyZXNldDpfLCRzdWJzY3JpYmUodCxuPXt9KXtpZihkLmhhcyh0KSlyZXR1cm4gTXU7bGV0IGk9TnUoZCx0LG4uZGV0YWNoZWQsKCk9PmEoKSksYT1vLnJ1bigoKT0+aHIoKCk9PnIuc3RhdGUudmFsdWVbZV0scj0+eyhuLmZsdXNoPT09YHN5bmNgP3U6bCkmJnQoe3N0b3JlSWQ6ZSx0eXBlOmBkaXJlY3RgLGV2ZW50czpwfSxyKX0sVnUoe30sYyxuKSkpO3JldHVybiBpfSwkZGlzcG9zZTp2fSk7ci5fcy5zZXQoZSxiKTtsZXQgeD0oci5fYSYmci5fYS5ydW5XaXRoQ29udGV4dHx8RnUpKCgpPT5yLl9lLnJ1bigoKT0+KG89Q2UoKSkucnVuKCgpPT50KHthY3Rpb246eX0pKSkpO2ZvcihsZXQgdCBpbiB4KXtsZXQgbj14W3RdO0gobikmJiFIdShuKXx8VXQobik/YXx8KG0mJkJ1KG4pJiYoSChuKT9uLnZhbHVlPW1bdF06KChuIGluc3RhbmNlb2YgU2V0fHxuIGluc3RhbmNlb2YgTWFwKSYmbi5jbGVhcigpLFJ1KG4sbVt0XSkpKSxyLnN0YXRlLnZhbHVlW2VdW3RdPW4pOnR5cGVvZiBuPT1gZnVuY3Rpb25gJiYoeFt0XT15KG4sdCkscy5hY3Rpb25zW3RdPW4pfXJldHVybiBWdShiLHgpLFZ1KFYoYikseCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIiRzdGF0ZSIse2dldDooKT0+ci5zdGF0ZS52YWx1ZVtlXSxzZXQ6ZT0+e2codD0+e1Z1KHQsZSl9KX19KSxyLl9wLmZvckVhY2goZT0+e2xldCB0PW8ucnVuKCgpPT5lKHtzdG9yZTpiLGFwcDpyLl9hLHBpbmlhOnIsb3B0aW9uczpzfSkpO1Z1KGIsdCl9KSxtJiZhJiZuLmh5ZHJhdGUmJm4uaHlkcmF0ZShiLiRzdGF0ZSxtKSxsPSEwLHU9ITAsYn1mdW5jdGlvbiBHdShlLHQsbil7bGV0IHIsaT10eXBlb2YgdD09YGZ1bmN0aW9uYDtyPWk/bjp0O2Z1bmN0aW9uIGEobixhKXtsZXQgbz1scigpO3JldHVybiBufHw9bz9jcihfdSxudWxsKTpudWxsLG4mJmd1KG4pLG49aHUsbi5fcy5oYXMoZSl8fChpP1d1KGUsdCxyLG4pOlV1KGUscixuKSksbi5fcy5nZXQoZSl9cmV0dXJuIGEuJGlkPWUsYX1mdW5jdGlvbiBLdShlKXtsZXQgdD1WKGUpLG49e307Zm9yKGxldCByIGluIHQpe2xldCBpPXRbcl07aT8uZWZmZWN0P25bcl09cXMoe2dldDooKT0+ZVtyXSxzZXQodCl7ZVtyXT10fX0pOihIKGkpfHxVdChpKSkmJihuW3JdPWRuKGUscikpfXJldHVybiBufXZhciBxdT17cHJlZml4OmBmYXNgLGljb25OYW1lOmBtYWduaWZ5aW5nLWdsYXNzYCxpY29uOls1MTIsNTEyLFsxMjgyNjksYHNlYXJjaGBdLGBmMDAyYCxgTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZDMjk2LjMgNDAxLjEgMjUzLjkgNDE2IDIwOCA0MTYgOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDAgNDE2IDkzLjEgNDE2IDIwOHpNMjA4IDM1MmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6YF19LEp1PXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGtleWAsaWNvbjpbNTEyLDUxMixbMTI4MjczXSxgZjA4NGAsYE0zMzYgMzUyYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2UzQzMy4yIDAgMzM2IDAgMTYwIDc4LjggMTYwIDE3NmMwIDE4LjcgMi45IDM2LjggOC4zIDUzLjdMNyAzOTFjLTQuNSA0LjUtNyAxMC42LTcgMTdsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQwIDQwIDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwemBdfSxZdT17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0LXVwYCxpY29uOlszODQsNTEyLFtgc29ydC1hc2NgXSxgZjBkZWAsYE0zMiAyMjRjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhTLjIgMTc4LjUgOS40IDE2OS40bDE2MC0xNjBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOVMzNjQuOSAyMjQgMzUyIDIyNEwzMiAyMjR6YF19LFh1PXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGV5ZWAsaWNvbjpbNTc2LDUxMixbMTI4MDY1XSxgZjA2ZWAsYE0yODggMzJjLTgwLjggMC0xNDUuNSAzNi44LTE5Mi42IDgwLjYtNDYuOCA0My41LTc4LjEgOTUuNC05MyAxMzEuMS0zLjMgNy45LTMuMyAxNi43IDAgMjQuNiAxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xIDQ3LjEgNDMuNyAxMTEuOCA4MC42IDE5Mi42IDgwLjZzMTQ1LjUtMzYuOCAxOTIuNi04MC42YzQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjEgMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjYtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMS00Ny4xLTQzLjctMTExLjgtODAuNi0xOTIuNi04MC42ek0xNDQgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC02NGMwIDM1LjMtMjguNyA2NC02NCA2NC0xMS41IDAtMjIuMy0zLTMxLjctOC40LTEgMTAuOS0uMSAyMi4xIDIuOSAzMy4yIDEzLjcgNTEuMiA2Ni40IDgxLjYgMTE3LjYgNjcuOXM4MS42LTY2LjQgNjcuOS0xMTcuNmMtMTIuMi00NS43LTU1LjUtNzQuOC0xMDEuMS03MC44IDUuMyA5LjMgOC40IDIwLjEgOC40IDMxLjd6YF19LFp1PXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGNoZXZyb24tdXBgLGljb246WzQ0OCw1MTIsW10sYGYwNzdgLGBNMjAxLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMTczLjMgNTQuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTkyLTE5MnpgXX0sUXU9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hldnJvbi1yaWdodGAsaWNvbjpbMzIwLDUxMixbOTAwMl0sYGYwNTRgLGBNMzExLjEgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0My4yIDI1NiA3My45IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpgXX0sJHU9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgdXNlcnNgLGljb246WzY0MCw1MTIsW10sYGYwYzBgLGBNMzIwIDE2YTEwNCAxMDQgMCAxIDEgMCAyMDggMTA0IDEwNCAwIDEgMSAwLTIwOHpNOTYgODhhNzIgNzIgMCAxIDEgMCAxNDQgNzIgNzIgMCAxIDEgMC0xNDR6TTAgNDE2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4IDEyLjggMCAyNS4yIDEuOSAzNi45IDUuNC0zMi45IDM2LjgtNTIuOSA4NS40LTUyLjkgMTM4LjZsMCAxNmMwIDExLjQgMi40IDIyLjIgNi43IDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMnptNTIxLjMgNjRjNC4zLTkuOCA2LjctMjAuNiA2LjctMzJsMC0xNmMwLTUzLjItMjAtMTAxLjgtNTIuOS0xMzguNiAxMS43LTMuNSAyNC4xLTUuNCAzNi45LTUuNCA3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC04Ni43IDB6TTQ3MiAxNjBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwek0xNjAgNDMyYzAtODguNCA3MS42LTE2MCAxNjAtMTYwczE2MCA3MS42IDE2MCAxNjBsMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTZ6YF19LGVkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGhlYXJ0LXB1bHNlYCxpY29uOls1MTIsNTEyLFtgaGVhcnRiZWF0YF0sYGYyMWVgLGBNMjU2IDEwNy45TDI0MSA4Ny4xQzIxNiA1Mi41IDE3NS45IDMyIDEzMy4xIDMyIDU5LjYgMzIgMCA5MS42IDAgMTY1LjFsMCAyLjZjMCAyMy42IDYuMiA0OCAxNi42IDcyLjNsMTA2IDBjMy4yIDAgNi4xLTEuOSA3LjQtNC45bDMxLjgtNzYuM2MzLjctOC44IDEyLjMtMTQuNiAyMS44LTE0LjhzMTguMyA1LjQgMjIuMiAxNC4xbDUxLjMgMTEzLjkgNDEuNC04Mi44YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjNsMjMuMiA0Ni4zYzEuNCAyLjcgNC4xIDQuNCA3LjIgNC40bDEyMy42IDBjMTAuNS0yNC4zIDE2LjYtNDguNyAxNi42LTcyLjNsMC0yLjZDNTEyIDkxLjYgNDUyLjQgMzIgMzc4LjkgMzIgMzM2LjIgMzIgMjk2IDUyLjUgMjcxIDg3LjFsLTE1IDIwLjd6TTQ2OS42IDI4OGwtOTcuOCAwYy0yMS4yIDAtNDAuNi0xMi01MC4xLTMxbC0xLjctMy40LTQyLjUgODUuMWMtNC4xIDguMy0xMi43IDEzLjUtMjIgMTMuM3MtMTcuNi01LjctMjEuNC0xNC4xbC00OS4zLTEwOS41LTEwLjUgMjUuMmMtOC43IDIwLjktMjkuMSAzNC41LTUxLjcgMzQuNWwtODAuMiAwYzQ3LjIgNzMuOCAxMjMgMTQxLjcgMTcwLjQgMTc3LjkgMTIuNCA5LjQgMjcuNiAxNC4xIDQzLjEgMTQuMXMzMC44LTQuNiA0My4xLTE0LjFDMzQ2LjYgNDI5LjcgNDIyLjQgMzYxLjggNDY5LjYgMjg4emBdfSx0ZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBjaXJjbGUteG1hcmtgLGljb246WzUxMiw1MTIsWzYxNTMyLGB0aW1lcy1jaXJjbGVgLGB4bWFyay1jaXJjbGVgXSxgZjA1N2AsYE0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY3IDE2N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw1NSA1NSA1NS01NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU1IDU1IDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTU1LTU1LTU1IDU1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU1LTU1LTU1LTU1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpgXX0sbmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2lyY2xlLWV4Y2xhbWF0aW9uYCxpY29uOls1MTIsNTEyLFtgZXhjbGFtYXRpb24tY2lyY2xlYF0sYGYwNmFgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6bTAtMTkyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xOTJjLTE4LjIgMC0zMi43IDE1LjUtMzEuNCAzMy43bDcuNCAxMDRjLjkgMTIuNiAxMS40IDIyLjMgMjMuOSAyMi4zIDEyLjYgMCAyMy05LjcgMjMuOS0yMi4zbDcuNC0xMDRjMS4zLTE4LjItMTMuMS0zMy43LTMxLjQtMzMuN3pgXX0scmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hlY2tgLGljb246WzQ0OCw1MTIsWzEwMDAzLDEwMDA0XSxgZjAwY2AsYE00MzQuOCA3MC4xYzE0LjMgMTAuNCAxNy41IDMwLjQgNy4xIDQ0LjdsLTI1NiAzNTJjLTUuNSA3LjYtMTQgMTIuMy0yMy40IDEzLjFzLTE4LjUtMi43LTI1LjEtOS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDEwMS41IDEwMS41IDIzNC0zMjEuN2MxMC40LTE0LjMgMzAuNC0xNy41IDQ0LjctNy4xemBdfSxpZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBob3VzZWAsaWNvbjpbNTEyLDUxMixbMTI3OTY4LDYzNDk4LDYzNTAwLGBob21lYCxgaG9tZS1hbHRgLGBob21lLWxnLWFsdGBdLGBmMDE1YCxgTTI3Ny44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTMTguOCAyNzIgMzIgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjg4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNzYgMTYgMGMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LTM1LjFsLTIyNC0yMDh6TTI0MCAzMjBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2LTEyOCAwIDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6YF19LGFkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHNsaWRlcnNgLGljb246WzUxMiw1MTIsW2BzbGlkZXJzLWhgXSxgZjFkZWAsYE0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJsODYuNyAwYzEyLjMgMjguMyA0MC41IDQ4IDczLjMgNDhzNjEtMTkuNyA3My4zLTQ4TDQ4MCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMjY1LjMgNjRDMjUzIDM1LjcgMjI0LjggMTYgMTkyIDE2cy02MSAxOS43LTczLjMgNDhMMzIgNjR6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDhzLTYxIDE5LjctNzMuMyA0OEwzMiAyMjR6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDU0LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OEw0ODAgNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yNDYuNyAwYy0xMi4zLTI4LjMtNDAuNS00OC03My4zLTQ4cy02MSAxOS43LTczLjMgNDhMMzIgMzg0emBdfSxvZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0YCxpY29uOlszODQsNTEyLFtgdW5zb3J0ZWRgXSxgZjBkY2AsYE0yLjQgMjA0LjJjNSAxMiAxNi42IDE5LjggMjkuNiAxOS44bDMyMCAwYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXptMCAxMDMuNWMtNSAxMi0yLjIgMjUuNyA2LjkgMzQuOWwxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzY0LjkgMjg4IDM1MiAyODhMMzIgMjg4Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44emBdfSxzZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmB4bWFya2AsaWNvbjpbMzg0LDUxMixbMTI4NDczLDEwMDA1LDEwMDA2LDEwMDYwLDIxNSxgY2xvc2VgLGBtdWx0aXBseWAsYHJlbW92ZWAsYHRpbWVzYF0sYGYwMGRgLGBNNTUuMSA3My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wxNDcuMiAyNTYgOS45IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5Mi41IDMwMS4zIDMyOS45IDQzOC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMjM3LjggMjU2IDM3NS4xIDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5Mi41IDIxMC43IDU1LjEgNzMuNHpgXX0sY2Q9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2lyY2xlLWNoZWNrYCxpY29uOls1MTIsNTEyLFs2MTUzMyxgY2hlY2stY2lyY2xlYF0sYGYwNThgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6TTM3NCAxNDUuN2MtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNMMjIxLjEgMzE1LjIgMTY5IDI2My4xYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzUgNSAxMS44IDcuNSAxOC44IDdzMTMuNC00LjEgMTcuNS05LjhMMzc5LjMgMTc5LjJjNy44LTEwLjcgNS40LTI1LjctNS4zLTMzLjV6YF19LGxkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGN1YmVzYCxpY29uOls1MTIsNTEyLFtdLGBmMWIzYCxgTTI4NC0xLjNjLTE3LjMtMTAtMzguNy0xMC01NiAwTDE0My44IDQ3LjNjLTE3LjMgMTAtMjggMjguNS0yOCA0OC41bDAgMTAxLjktODguMyA1MWMtMTcuMyAxMC0yOCAyOC41LTI4IDQ4LjVsMCA5Ny4zYzAgMjAgMTAuNyAzOC41IDI4IDQ4LjVsODQuMyA0OC42YzE3LjMgMTAgMzguNyAxMCA1NiAwbDg4LjMtNTEgODguMyA1MWMxNy4zIDEwIDM4LjcgMTAgNTYgMEw0ODQuNSA0NDNjMTcuMy0xMCAyOC0yOC41IDI4LTQ4LjVsMC05Ny4zYzAtMjAtMTAuNy0zOC41LTI4LTQ4LjVsLTg4LjMtNTEgMC0xMDEuOWMwLTIwLTEwLjctMzguNS0yOC00OC41TDI4NC0xLjN6TTIzMiAyOTIuNmwwIDEwNi41LTg4LjMgNTFjLTEuMiAuNy0yLjYgMS4xLTQgMS4xbDAtMTA1LjMgOTIuMy01My4zem0yMzEuNCAuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNGwwIDk3LjNjMCAyLjktMS41IDUuNS00IDYuOWwtODQuMyA0OC42Yy0xLjIgLjctMi42IDEuMS00IDEuMWwwLTEwNS4zIDkxLjItNTIuNnpNMzQ4LjMgOTUuOGwwIDEwMS45LTkyLjMgNTMuMyAwLTEwNi41IDkxLjItNTIuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNHpgXX0sdWQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hldnJvbi1kb3duYCxpY29uOls0NDgsNTEyLFtdLGBmMDc4YCxgTTIwMS40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDMzOC43IDU0LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6YF19LGRkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHBsdWdgLGljb246WzQ0OCw1MTIsWzEyODI2OF0sYGYxZTZgLGBNMTI4LTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDY0YzAgOTUuMS02OS4yIDE3NC4xLTE2MCAxODkuM2wwIDY2LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02Ni43QzEwMS4yIDM5OC4xIDMyIDMxOS4xIDMyIDIyNGwwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlMxNC4zIDk2IDMyIDk2bDY0IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpgXX0sZmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgaW5ib3hgLGljb246WzUxMiw1MTIsW10sYGYwMWNgLGBNOTEuOCAzMkM1OS45IDMyIDMyLjkgNTUuNCAyOC40IDg2LjlMLjYgMjgxLjJjLS40IDMtLjYgNi0uNiA5LjFMMCA0MTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMzg0IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xMjUuN2MwLTMtLjItNi4xLS42LTkuMUw0ODMuNiA4Ni45QzQ3OS4xIDU1LjQgNDUyLjEgMzIgNDIwLjIgMzJMOTEuOCAzMnptMCA2NGwzMjguNSAwIDI3LjQgMTkyLTU5LjkgMGMtMTIuMSAwLTIzLjIgNi44LTI4LjYgMTcuN2wtMTQuMyAyOC42Yy01LjQgMTAuOC0xNi41IDE3LjctMjguNiAxNy43bC0xMjAuNCAwYy0xMi4xIDAtMjMuMi02LjgtMjguNi0xNy43bC0xNC4zLTI4LjZjLTUuNC0xMC44LTE2LjUtMTcuNy0yOC42LTE3LjdMNjQuMyAyODggOTEuOCA5NnpgXX0scGQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgZmlsZS1jc3ZgLGljb246WzU3Niw1MTIsW10sYGY2ZGRgLGBNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGw4MCAwIDAtMTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE3NiAwIDAtMTY1LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkwLjcgMTguN0MyNzguNyA2LjcgMjYyLjUgMCAyNDUuNSAwTDk2IDB6TTM1Ny41IDE3NkwyNjQgMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwyNDAgNTguNSAzNTcuNSAxNzZ6TTI2NCAzODBjLTI0LjMgMC00NCAxOS43LTQ0IDQ0bDAgODBjMCAyNC4zIDE5LjcgNDQgNDQgNDRsMTYgMGMyNC4zIDAgNDQtMTkuNyA0NC00NGwwLThjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwbDAgOGMwIDIuMi0xLjggNC00IDRsLTE2IDBjLTIuMiAwLTQtMS44LTQtNGwwLTgwYzAtMi4yIDEuOC00IDQtNGwxNiAwYzIuMiAwIDQgMS44IDQgNGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMjQuMy0xOS43LTQ0LTQ0LTQ0bC0xNiAwem0xMzYgMGMtMjguNyAwLTUyIDIzLjMtNTIgNTJzMjMuMyA1MiA1MiA1MmM2LjYgMCAxMiA1LjQgMTIgMTJzLTUuNCAxMi0xMiAxMmwtMzIgMGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBsMzIgMGMyOC43IDAgNTItMjMuMyA1Mi01MnMtMjMuMy01Mi01Mi01MmMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMmwyNCAwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGwtMjQgMHptOTYgMGMtMTEgMC0yMCA5LTIwIDIwbDAgMzEuNmMwIDM1LjUgMTAuNSA3MC4zIDMwLjIgOTkuOGw1LjEgNy43YzMuNyA1LjYgMTAgOC45IDE2LjYgOC45czEyLjktMy4zIDE2LjYtOC45bDUuMS03LjdjMTkuNy0yOS42IDMwLjItNjQuMyAzMC4yLTk5LjhsMC0zMS42YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMGwwIDMxLjZjMCAxOS42LTQuMSAzOC45LTEyIDU2LjctNy45LTE3LjgtMTItMzcuMS0xMi01Ni43bDAtMzEuNmMwLTExLTktMjAtMjAtMjB6YF19LG1kPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHRyaWFuZ2xlLWV4Y2xhbWF0aW9uYCxpY29uOls1MTIsNTEyLFs5ODg4LGBleGNsYW1hdGlvbi10cmlhbmdsZWAsYHdhcm5pbmdgXSxgZjA3MWAsYE0yNTYgMGMxNC43IDAgMjguMiA4LjEgMzUuMiAyMWwyMTYgNDAwYzYuNyAxMi40IDYuNCAyNy40LS44IDM5LjVTNDg2LjEgNDgwIDQ3MiA0ODBMNDAgNDgwYy0xNC4xIDAtMjcuMi03LjQtMzQuNC0xOS41cy03LjUtMjcuMS0uOC0zOS41bDIxNi00MDBjNy0xMi45IDIwLjUtMjEgMzUuMi0yMXptMCAzNTJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wLTE5MmMtMTguMiAwLTMyLjcgMTUuNS0zMS40IDMzLjdsNy40IDEwNGMuOSAxMi41IDExLjQgMjIuMyAyMy45IDIyLjMgMTIuNiAwIDIzLTkuNyAyMy45LTIyLjNsNy40LTEwNGMxLjMtMTguMi0xMy4xLTMzLjctMzEuNC0zMy43emBdfSxoZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBhcnJvdy1yaWdodC1hcnJvdy1sZWZ0YCxpY29uOls1MTIsNTEyLFs4NjQ0LGBleGNoYW5nZWBdLGBmMGVjYCxgTTUwMi42IDE1MC42bC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDAyLjcgMTYwIDMyIDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMTQuMyA5NiAzMiA5NmwzNzAuNyAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3ptLTM5Ny4zIDM1MmwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMTA5LjMgMzUyIDQ4MCAzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM3MC43IDAgNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwemBdfSxnZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBhcnJvdy1sZWZ0YCxpY29uOls1MTIsNTEyLFs4NTkyXSxgZjA2MGAsYE05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODggNDgwIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzcwLjcgMCAxMDUuNC0xMDUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHpgXX0sX2Q9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY29weWAsaWNvbjpbNDQ4LDUxMixbXSxgZjBjNWAsYE0xOTIgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMDAuNmMwLTE3LjQtNy4xLTM0LjEtMTkuNy00Ni4yTDM3MC42IDE3LjhDMzU4LjcgNi40IDM0Mi44IDAgMzI2LjMgMEwxOTIgMHpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE2LTY0IDAgMCAxNi0xOTIgMCAwLTI1NiAxNiAwIDAtNjQtMTYgMHpgXX0sdmQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgYXJyb3ctcm90YXRlLXJpZ2h0YCxpY29uOls1MTIsNTEyLFs4NjM1LGBhcnJvdy1yaWdodC1yb3RhdGVgLGBhcnJvdy1yb3RhdGUtZm9yd2FyZGAsYHJlZG9gXSxgZjAxZWAsYE00MzYuNyA3NC43TDQ0OCA4NS40IDQ0OCAzMmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgMTI4YzAgMTcuNy0xNC4zIDMyLTMyIDMybC0xMjggMGMtMTcuNyAwLTMyLTE0LjMtMzItMzJzMTQuMy0zMiAzMi0zMmw0Ny45IDAtNy42LTcuMmMtLjItLjItLjQtLjQtLjYtLjYtNzUtNzUtMTk2LjUtNzUtMjcxLjUgMHMtNzUgMTk2LjUgMCAyNzEuNSAxOTYuNSA3NSAyNzEuNSAwYzguMi04LjIgMTUuNS0xNi45IDIxLjktMjYuMSAxMC4xLTE0LjUgMzAuMS0xOCA0NC42LTcuOXMxOCAzMC4xIDcuOSA0NC42Yy04LjUgMTIuMi0xOC4yIDIzLjgtMjkuMSAzNC43LTEwMCAxMDAtMjYyLjEgMTAwLTM2MiAwUy0yNSAxNzUgNzUgNzVjOTkuOS05OS45IDI2MS43LTEwMCAzNjEuNy0uM3pgXX0seWQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgZXllLXNsYXNoYCxpY29uOls1NzYsNTEyLFtdLGBmMDcwYCxgTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTk2LjQtOTYuNGMyLjctMi40IDUuNC00LjggOC03LjIgNDYuOC00My41IDc4LjEtOTUuNCA5My0xMzEuMSAzLjMtNy45IDMuMy0xNi43IDAtMjQuNi0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xLTQ3LjEtNDMuNy0xMTEuOC04MC42LTE5Mi42LTgwLjYtNTYuOCAwLTEwNS42IDE4LjItMTQ2IDQ0LjJMNDEtMjQuOXpNMjA0LjUgMTM4LjdjMjMuNS0xNi44IDUyLjQtMjYuNyA4My41LTI2LjcgNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCAzMS4xLTkuOSA1OS45LTI2LjcgODMuNWwtMzQuNy0zNC43YzEyLjctMjEuNCAxNy00Ny43IDEwLjEtNzMuNy0xMy43LTUxLjItNjYuNC04MS42LTExNy42LTY3LjktOC42IDIuMy0xNi43IDUuNy0yNCAxMGwtMzQuNy0zNC43ek0zMjUuMyAzOTUuMWMtMTEuOSAzLjItMjQuNCA0LjktMzcuMyA0LjktNzkuNSAwLTE0NC02NC41LTE0NC0xNDQgMC0xMi45IDEuNy0yNS40IDQuOS0zNy4zTDY5LjQgMTM5LjJjLTMyLjYgMzYuOC01NSA3NS44LTY2LjkgMTA0LjUtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjYgMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMSA0Ny4xIDQzLjcgMTExLjggODAuNiAxOTIuNiA4MC42IDM3LjMgMCA3MS4yLTcuOSAxMDEuNS0yMC42bC02NC4yLTY0LjJ6YF19LGJkPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGFycm93LXVwLXJpZ2h0LWZyb20tc3F1YXJlYCxpY29uOls1MTIsNTEyLFtgZXh0ZXJuYWwtbGlua2BdLGBmMDhlYCxgTTMyMCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDgyLjcgMC0yMDEuNCAyMDEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NDggMTA5LjMgNDQ4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyMCAwek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZMMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBsMjU2IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC04MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkw4MCA0NDhjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI1NmMwLTguOCA3LjItMTYgMTYtMTZsODAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCA5NnpgXX0seGQ9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY29pbnNgLGljb246WzUxMiw1MTIsW10sYGY1MWVgLGBNMTI4IDk2bDAtMTZjMC00NC4yIDg2LTgwIDE5Mi04MFM1MTIgMzUuOCA1MTIgODBsMCAxNmMwIDMwLjYtNDEuMyA1Ny4yLTEwMiA3MC43LTIuNC0yLjgtNC45LTUuNS03LjQtOC0xNS41LTE1LjMtMzUuNS0yNi45LTU2LjQtMzUuNS00MS45LTE3LjUtOTYuNS0yNy4xLTE1NC4yLTI3LjEtMjEuOSAwLTQzLjMgMS40LTYzLjggNC4xLS4yLTEuMy0uMi0yLjctLjItNC4xek00MzIgMzUzbDAtNDYuMmMxNS4xLTMuOSAyOS4zLTguNSA0Mi4yLTEzLjkgMTMuMi01LjUgMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjRjMCAyNi44LTMxLjUgNTAuNS04MCA2NXptMC05NmwwLTMzYzAtNC41LS40LTguOC0xLTEzIDE1LjUtMy45IDMwLTguNiA0My4yLTE0LjJzMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjRjMCAyNi44LTMxLjUgNTAuNS04MCA2NXpNMCAyNDBsMC0xNmMwLTQ0LjIgODYtODAgMTkyLTgwczE5MiAzNS44IDE5MiA4MGwwIDE2YzAgNDQuMi04NiA4MC0xOTIgODBTMCAyODQuMiAwIDI0MHptMzg0IDk2YzAgNDQuMi04NiA4MC0xOTIgODBTMCAzODAuMiAwIDMzNmwwLTE1LjRjMTEuNiA4LjEgMjQuNSAxNC43IDM3LjggMjAuMyA0MS45IDE3LjUgOTYuNSAyNy4xIDE1NC4yIDI3LjFzMTEyLjMtOS43IDE1NC4yLTI3LjFjMTMuMi01LjUgMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjR6bTAgODAuNmwwIDE1LjRjMCA0NC4yLTg2IDgwLTE5MiA4MFMwIDQ3Ni4yIDAgNDMybDAtMTUuNGMxMS42IDguMSAyNC41IDE0LjcgMzcuOCAyMC4zIDQxLjkgMTcuNSA5Ni41IDI3LjEgMTU0LjIgMjcuMXMxMTIuMy05LjcgMTU0LjItMjcuMWMxMy4yLTUuNSAyNi4xLTEyLjIgMzcuOC0yMC4zemBdfSxTZD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBjaXJjbGUtaW5mb2AsaWNvbjpbNTEyLDUxMixbYGluZm8tY2lyY2xlYF0sYGYwNWFgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAwIDAtNTEyIDI1NiAyNTYgMCAxIDAgMCA1MTJ6TTIyNCAxNjBhMzIgMzIgMCAxIDEgNjQgMCAzMiAzMiAwIDEgMSAtNjQgMHptLTggNjRsNDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNGwwIDg4IDggMGMxMy4zIDAgMjQgMTAuNyAyNCAyNHMtMTAuNyAyNC0yNCAyNGwtODAgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNGwyNCAwIDAtNjQtMjQgMGMtMTMuMyAwLTI0LTEwLjctMjQtMjRzMTAuNy0yNCAyNC0yNHpgXX0sQ2Q9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgc29ydC1kb3duYCxpY29uOlszODQsNTEyLFtgc29ydC1kZXNjYF0sYGYwZGRgLGBNMzIgMjg4Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44Uy4yIDMzMy41IDkuNCAzNDIuNmwxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzY0LjkgMjg4IDM1MiAyODhMMzIgMjg4emBdfTtmdW5jdGlvbiB3ZChlKXt2YXIgdCxuLHI9YGA7aWYodHlwZW9mIGU9PWBzdHJpbmdgfHx0eXBlb2YgZT09YG51bWJlcmApcis9ZTtlbHNlIGlmKHR5cGVvZiBlPT1gb2JqZWN0YCl7aWYoQXJyYXkuaXNBcnJheShlKSl7dmFyIGk9ZS5sZW5ndGg7Zm9yKHQ9MDt0PGk7dCsrKWVbdF0mJihuPXdkKGVbdF0pKSYmKHImJihyKz1gIGApLHIrPW4pfWVsc2UgZm9yKG4gaW4gZSllW25dJiYociYmKHIrPWAgYCkscis9bil9cmV0dXJuIHJ9ZnVuY3Rpb24gVGQoKXtmb3IodmFyIGUsdCxuPTAscj1gYCxpPWFyZ3VtZW50cy5sZW5ndGg7bjxpO24rKykoZT1hcmd1bWVudHNbbl0pJiYodD13ZChlKSkmJihyJiYocis9YCBgKSxyKz10KTtyZXR1cm4gcn12YXIgRWQ9ZT0+dHlwZW9mIGU9PWBib29sZWFuYD9gJHtlfWA6ZT09PTA/YDBgOmUsRGQ9VGQsT2Q9KGUsdCk9Pm49PntpZih0Py52YXJpYW50cz09bnVsbClyZXR1cm4gRGQoZSxuPy5jbGFzcyxuPy5jbGFzc05hbWUpO2xldHt2YXJpYW50czpyLGRlZmF1bHRWYXJpYW50czppfT10LGE9T2JqZWN0LmtleXMocikubWFwKGU9PntsZXQgdD1uPy5bZV0sYT1pPy5bZV07aWYodD09PW51bGwpcmV0dXJuIG51bGw7bGV0IG89RWQodCl8fEVkKGEpO3JldHVybiByW2VdW29dfSksbz1uJiZPYmplY3QuZW50cmllcyhuKS5yZWR1Y2UoKGUsdCk9PntsZXRbbixyXT10O3JldHVybiByPT09dm9pZCAwfHwoZVtuXT1yKSxlfSx7fSk7cmV0dXJuIERkKGUsYSx0Py5jb21wb3VuZFZhcmlhbnRzPy5yZWR1Y2UoKGUsdCk9PntsZXR7Y2xhc3M6bixjbGFzc05hbWU6ciwuLi5hfT10O3JldHVybiBPYmplY3QuZW50cmllcyhhKS5ldmVyeShlPT57bGV0W3Qsbl09ZTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLmluY2x1ZGVzKHsuLi5pLC4uLm99W3RdKTp7Li4uaSwuLi5vfVt0XT09PW59KT9bLi4uZSxuLHJdOmV9LFtdKSxuPy5jbGFzcyxuPy5jbGFzc05hbWUpfSxrZD0oZSx0KT0+e2xldCBuPUFycmF5KGUubGVuZ3RoK3QubGVuZ3RoKTtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDtyKyspbltlLmxlbmd0aCtyXT10W3JdO3JldHVybiBufSxBZD0oZSx0KT0+KHtjbGFzc0dyb3VwSWQ6ZSx2YWxpZGF0b3I6dH0pLGpkPShlPW5ldyBNYXAsdD1udWxsLG4pPT4oe25leHRQYXJ0OmUsdmFsaWRhdG9yczp0LGNsYXNzR3JvdXBJZDpufSksTWQ9YC1gLE5kPVtdLFBkPWBhcmJpdHJhcnkuLmAsRmQ9ZT0+e2xldCB0PVJkKGUpLHtjb25mbGljdGluZ0NsYXNzR3JvdXBzOm4sY29uZmxpY3RpbmdDbGFzc0dyb3VwTW9kaWZpZXJzOnJ9PWU7cmV0dXJue2dldENsYXNzR3JvdXBJZDplPT57aWYoZS5zdGFydHNXaXRoKGBbYCkmJmUuZW5kc1dpdGgoYF1gKSlyZXR1cm4gTGQoZSk7bGV0IG49ZS5zcGxpdChNZCk7cmV0dXJuIElkKG4sKyhuWzBdPT09YGAmJm4ubGVuZ3RoPjEpLHQpfSxnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6KGUsdCk9PntpZih0KXtsZXQgdD1yW2VdLGk9bltlXTtyZXR1cm4gdD9pP2tkKGksdCk6dDppfHxOZH1yZXR1cm4gbltlXXx8TmR9fX0sSWQ9KGUsdCxuKT0+e2lmKGUubGVuZ3RoLXQ9PT0wKXJldHVybiBuLmNsYXNzR3JvdXBJZDtsZXQgcj1lW3RdLGk9bi5uZXh0UGFydC5nZXQocik7aWYoaSl7bGV0IG49SWQoZSx0KzEsaSk7aWYobilyZXR1cm4gbn1sZXQgYT1uLnZhbGlkYXRvcnM7aWYoYT09PW51bGwpcmV0dXJuO2xldCBvPXQ9PT0wP2Uuam9pbihNZCk6ZS5zbGljZSh0KS5qb2luKE1kKSxzPWEubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cztlKyspe2xldCB0PWFbZV07aWYodC52YWxpZGF0b3IobykpcmV0dXJuIHQuY2xhc3NHcm91cElkfX0sTGQ9ZT0+ZS5zbGljZSgxLC0xKS5pbmRleE9mKGA6YCk9PT0tMT92b2lkIDA6KCgpPT57bGV0IHQ9ZS5zbGljZSgxLC0xKSxuPXQuaW5kZXhPZihgOmApLHI9dC5zbGljZSgwLG4pO3JldHVybiByP1BkK3I6dm9pZCAwfSkoKSxSZD1lPT57bGV0e3RoZW1lOnQsY2xhc3NHcm91cHM6bn09ZTtyZXR1cm4gemQobix0KX0semQ9KGUsdCk9PntsZXQgbj1qZCgpO2ZvcihsZXQgciBpbiBlKXtsZXQgaT1lW3JdO0JkKGksbixyLHQpfXJldHVybiBufSxCZD0oZSx0LG4scik9PntsZXQgaT1lLmxlbmd0aDtmb3IobGV0IGE9MDthPGk7YSsrKXtsZXQgaT1lW2FdO1ZkKGksdCxuLHIpfX0sVmQ9KGUsdCxuLHIpPT57aWYodHlwZW9mIGU9PWBzdHJpbmdgKXtIZChlLHQsbik7cmV0dXJufWlmKHR5cGVvZiBlPT1gZnVuY3Rpb25gKXtVZChlLHQsbixyKTtyZXR1cm59V2QoZSx0LG4scil9LEhkPShlLHQsbik9PntsZXQgcj1lPT09YGA/dDpHZCh0LGUpO3IuY2xhc3NHcm91cElkPW59LFVkPShlLHQsbixyKT0+e2lmKEtkKGUpKXtCZChlKHIpLHQsbixyKTtyZXR1cm59dC52YWxpZGF0b3JzPT09bnVsbCYmKHQudmFsaWRhdG9ycz1bXSksdC52YWxpZGF0b3JzLnB1c2goQWQobixlKSl9LFdkPShlLHQsbixyKT0+e2xldCBpPU9iamVjdC5lbnRyaWVzKGUpLGE9aS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7bGV0W2Esb109aVtlXTtCZChvLEdkKHQsYSksbixyKX19LEdkPShlLHQpPT57bGV0IG49ZSxyPXQuc3BsaXQoTWQpLGk9ci5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7bGV0IHQ9cltlXSxpPW4ubmV4dFBhcnQuZ2V0KHQpO2l8fChpPWpkKCksbi5uZXh0UGFydC5zZXQodCxpKSksbj1pfXJldHVybiBufSxLZD1lPT5gaXNUaGVtZUdldHRlcmBpbiBlJiZlLmlzVGhlbWVHZXR0ZXI9PT0hMCxxZD1lPT57aWYoZTwxKXJldHVybntnZXQ6KCk9PnZvaWQgMCxzZXQ6KCk9Pnt9fTtsZXQgdD0wLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPU9iamVjdC5jcmVhdGUobnVsbCksaT0oaSxhKT0+e25baV09YSx0KyssdD5lJiYodD0wLHI9bixuPU9iamVjdC5jcmVhdGUobnVsbCkpfTtyZXR1cm57Z2V0KGUpe2xldCB0PW5bZV07aWYodCE9PXZvaWQgMClyZXR1cm4gdDtpZigodD1yW2VdKSE9PXZvaWQgMClyZXR1cm4gaShlLHQpLHR9LHNldChlLHQpe2UgaW4gbj9uW2VdPXQ6aShlLHQpfX19LEpkPWAhYCxZZD1gOmAsWGQ9W10sWmQ9KGUsdCxuLHIsaSk9Pih7bW9kaWZpZXJzOmUsaGFzSW1wb3J0YW50TW9kaWZpZXI6dCxiYXNlQ2xhc3NOYW1lOm4sbWF5YmVQb3N0Zml4TW9kaWZpZXJQb3NpdGlvbjpyLGlzRXh0ZXJuYWw6aX0pLFFkPWU9PntsZXR7cHJlZml4OnQsZXhwZXJpbWVudGFsUGFyc2VDbGFzc05hbWU6bn09ZSxyPWU9PntsZXQgdD1bXSxuPTAscj0wLGk9MCxhLG89ZS5sZW5ndGg7Zm9yKGxldCBzPTA7czxvO3MrKyl7bGV0IG89ZVtzXTtpZihuPT09MCYmcj09PTApe2lmKG89PT1ZZCl7dC5wdXNoKGUuc2xpY2UoaSxzKSksaT1zKzE7Y29udGludWV9aWYobz09PWAvYCl7YT1zO2NvbnRpbnVlfX1vPT09YFtgP24rKzpvPT09YF1gP24tLTpvPT09YChgP3IrKzpvPT09YClgJiZyLS19bGV0IHM9dC5sZW5ndGg9PT0wP2U6ZS5zbGljZShpKSxjPXMsbD0hMTtzLmVuZHNXaXRoKEpkKT8oYz1zLnNsaWNlKDAsLTEpLGw9ITApOnMuc3RhcnRzV2l0aChKZCkmJihjPXMuc2xpY2UoMSksbD0hMCk7bGV0IHU9YSYmYT5pP2EtaTp2b2lkIDA7cmV0dXJuIFpkKHQsbCxjLHUpfTtpZih0KXtsZXQgZT10K1lkLG49cjtyPXQ9PnQuc3RhcnRzV2l0aChlKT9uKHQuc2xpY2UoZS5sZW5ndGgpKTpaZChYZCwhMSx0LHZvaWQgMCwhMCl9aWYobil7bGV0IGU9cjtyPXQ9Pm4oe2NsYXNzTmFtZTp0LHBhcnNlQ2xhc3NOYW1lOmV9KX1yZXR1cm4gcn0sJGQ9ZT0+e2xldCB0PW5ldyBNYXA7cmV0dXJuIGUub3JkZXJTZW5zaXRpdmVNb2RpZmllcnMuZm9yRWFjaCgoZSxuKT0+e3Quc2V0KGUsMWU2K24pfSksZT0+e2xldCBuPVtdLHI9W107Zm9yKGxldCBpPTA7aTxlLmxlbmd0aDtpKyspe2xldCBhPWVbaV0sbz1hWzBdPT09YFtgLHM9dC5oYXMoYSk7b3x8cz8oci5sZW5ndGg+MCYmKHIuc29ydCgpLG4ucHVzaCguLi5yKSxyPVtdKSxuLnB1c2goYSkpOnIucHVzaChhKX1yZXR1cm4gci5sZW5ndGg+MCYmKHIuc29ydCgpLG4ucHVzaCguLi5yKSksbn19LGVmPWU9Pih7Y2FjaGU6cWQoZS5jYWNoZVNpemUpLHBhcnNlQ2xhc3NOYW1lOlFkKGUpLHNvcnRNb2RpZmllcnM6JGQoZSkscG9zdGZpeExvb2t1cENsYXNzR3JvdXBJZHM6dGYoZSksLi4uRmQoZSl9KSx0Zj1lPT57bGV0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKSxuPWUucG9zdGZpeExvb2t1cENsYXNzR3JvdXBzO2lmKG4pZm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspdFtuW2VdXT0hMDtyZXR1cm4gdH0sbmY9L1xzKy8scmY9KGUsdCk9PntsZXR7cGFyc2VDbGFzc05hbWU6bixnZXRDbGFzc0dyb3VwSWQ6cixnZXRDb25mbGljdGluZ0NsYXNzR3JvdXBJZHM6aSxzb3J0TW9kaWZpZXJzOmEscG9zdGZpeExvb2t1cENsYXNzR3JvdXBJZHM6b309dCxzPVtdLGM9ZS50cmltKCkuc3BsaXQobmYpLGw9YGA7Zm9yKGxldCBlPWMubGVuZ3RoLTE7ZT49MDstLWUpe2xldCB0PWNbZV0se2lzRXh0ZXJuYWw6dSxtb2RpZmllcnM6ZCxoYXNJbXBvcnRhbnRNb2RpZmllcjpmLGJhc2VDbGFzc05hbWU6cCxtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOm19PW4odCk7aWYodSl7bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpO2NvbnRpbnVlfWxldCBoPSEhbSxnO2lmKGgpe2c9cihwLnN1YnN0cmluZygwLG0pKTtsZXQgZT1nJiZvW2ddP3IocCk6dm9pZCAwO2UmJmUhPT1nJiYoZz1lLGg9ITEpfWVsc2UgZz1yKHApO2lmKCFnKXtpZighaCl7bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpO2NvbnRpbnVlfWlmKGc9cihwKSwhZyl7bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpO2NvbnRpbnVlfWg9ITF9bGV0IF89ZC5sZW5ndGg9PT0wP2BgOmQubGVuZ3RoPT09MT9kWzBdOmEoZCkuam9pbihgOmApLHY9Zj9fK0pkOl8seT12K2c7aWYocy5pbmRleE9mKHkpPi0xKWNvbnRpbnVlO3MucHVzaCh5KTtsZXQgYj1pKGcsaCk7Zm9yKGxldCBlPTA7ZTxiLmxlbmd0aDsrK2Upe2xldCB0PWJbZV07cy5wdXNoKHYrdCl9bD10KyhsLmxlbmd0aD4wP2AgYCtsOmwpfXJldHVybiBsfSxhZj0oLi4uZSk9PntsZXQgdD0wLG4scixpPWBgO2Zvcig7dDxlLmxlbmd0aDspKG49ZVt0KytdKSYmKHI9b2YobikpJiYoaSYmKGkrPWAgYCksaSs9cik7cmV0dXJuIGl9LG9mPWU9PntpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIGU7bGV0IHQsbj1gYDtmb3IobGV0IHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiYodD1vZihlW3JdKSkmJihuJiYobis9YCBgKSxuKz10KTtyZXR1cm4gbn0sc2Y9KGUsLi4udCk9PntsZXQgbixyLGksYSxvPW89PihuPWVmKHQucmVkdWNlKChlLHQpPT50KGUpLGUoKSkpLHI9bi5jYWNoZS5nZXQsaT1uLmNhY2hlLnNldCxhPXMscyhvKSkscz1lPT57bGV0IHQ9cihlKTtpZih0KXJldHVybiB0O2xldCBhPXJmKGUsbik7cmV0dXJuIGkoZSxhKSxhfTtyZXR1cm4gYT1vLCguLi5lKT0+YShhZiguLi5lKSl9LGNmPVtdLFg9ZT0+e2xldCB0PXQ9PnRbZV18fGNmO3JldHVybiB0LmlzVGhlbWVHZXR0ZXI9ITAsdH0sbGY9L15cWyg/Oihcd1tcdy1dKik6KT8oLispXF0kL2ksdWY9L15cKCg/Oihcd1tcdy1dKik6KT8oLispXCkkL2ksZGY9L15cZCsoPzpcLlxkKyk/XC9cZCsoPzpcLlxkKyk/JC8sZmY9L14oXGQrKFwuXGQrKT8pPyh4c3xzbXxtZHxsZ3x4bCkkLyxwZj0vXGQrKCV8cHh8cj9lbXxbc2RsXT92KFtod2liXXxtaW58bWF4KXxwdHxwY3xpbnxjbXxtbXxjYXB8Y2h8ZXh8cj9saHxjcSh3fGh8aXxifG1pbnxtYXgpKXxcYihjYWxjfG1pbnxtYXh8Y2xhbXApXCguK1wpfF4wJC8sbWY9L14ocmdiYT98aHNsYT98aHdifChvayk/KGxhYnxsY2gpfGNvbG9yLW1peClcKC4rXCkkLyxoZj0vXihpbnNldF8pPy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApXy0/KChcZCspP1wuPyhcZCspW2Etel0rfDApLyxnZj0vXih1cmx8aW1hZ2V8aW1hZ2Utc2V0fGNyb3NzLWZhZGV8ZWxlbWVudHwocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWx8Y29uaWMpLWdyYWRpZW50KVwoLitcKSQvLF9mPWU9PmRmLnRlc3QoZSksWj1lPT4hIWUmJiFOdW1iZXIuaXNOYU4oTnVtYmVyKGUpKSx2Zj1lPT4hIWUmJk51bWJlci5pc0ludGVnZXIoTnVtYmVyKGUpKSx5Zj1lPT5lLmVuZHNXaXRoKGAlYCkmJlooZS5zbGljZSgwLC0xKSksYmY9ZT0+ZmYudGVzdChlKSx4Zj0oKT0+ITAsU2Y9ZT0+cGYudGVzdChlKSYmIW1mLnRlc3QoZSksQ2Y9KCk9PiExLHdmPWU9PmhmLnRlc3QoZSksVGY9ZT0+Z2YudGVzdChlKSxFZj1lPT4hUShlKSYmISQoZSksRGY9ZT0+ZS5zdGFydHNXaXRoKGBAY29udGFpbmVyYCkmJihlWzEwXT09PWAvYCYmZVsxMV0hPT12b2lkIDB8fGVbMTFdPT09YHNgJiZlWzE2XSE9PXZvaWQgMCYmZS5zdGFydHNXaXRoKGAtc2l6ZS9gLDEwKXx8ZVsxMV09PT1gbmAmJmVbMThdIT09dm9pZCAwJiZlLnN0YXJ0c1dpdGgoYC1ub3JtYWwvYCwxMCkpLE9mPWU9PlVmKGUscWYsQ2YpLFE9ZT0+bGYudGVzdChlKSxrZj1lPT5VZihlLEpmLFNmKSxBZj1lPT5VZihlLFlmLFopLGpmPWU9PlVmKGUsWmYseGYpLE1mPWU9PlVmKGUsWGYsQ2YpLE5mPWU9PlVmKGUsR2YsQ2YpLFBmPWU9PlVmKGUsS2YsVGYpLEZmPWU9PlVmKGUsUWYsd2YpLCQ9ZT0+dWYudGVzdChlKSxJZj1lPT5XZihlLEpmKSxMZj1lPT5XZihlLFhmKSxSZj1lPT5XZihlLEdmKSx6Zj1lPT5XZihlLHFmKSxCZj1lPT5XZihlLEtmKSxWZj1lPT5XZihlLFFmLCEwKSxIZj1lPT5XZihlLFpmLCEwKSxVZj0oZSx0LG4pPT57bGV0IHI9bGYuZXhlYyhlKTtyZXR1cm4gcj9yWzFdP3QoclsxXSk6bihyWzJdKTohMX0sV2Y9KGUsdCxuPSExKT0+e2xldCByPXVmLmV4ZWMoZSk7cmV0dXJuIHI/clsxXT90KHJbMV0pOm46ITF9LEdmPWU9PmU9PT1gcG9zaXRpb25gfHxlPT09YHBlcmNlbnRhZ2VgLEtmPWU9PmU9PT1gaW1hZ2VgfHxlPT09YHVybGAscWY9ZT0+ZT09PWBsZW5ndGhgfHxlPT09YHNpemVgfHxlPT09YGJnLXNpemVgLEpmPWU9PmU9PT1gbGVuZ3RoYCxZZj1lPT5lPT09YG51bWJlcmAsWGY9ZT0+ZT09PWBmYW1pbHktbmFtZWAsWmY9ZT0+ZT09PWBudW1iZXJgfHxlPT09YHdlaWdodGAsUWY9ZT0+ZT09PWBzaGFkb3dgLCRmPXNmKCgpPT57bGV0IGU9WChgY29sb3JgKSx0PVgoYGZvbnRgKSxuPVgoYHRleHRgKSxyPVgoYGZvbnQtd2VpZ2h0YCksaT1YKGB0cmFja2luZ2ApLGE9WChgbGVhZGluZ2ApLG89WChgYnJlYWtwb2ludGApLHM9WChgY29udGFpbmVyYCksYz1YKGBzcGFjaW5nYCksbD1YKGByYWRpdXNgKSx1PVgoYHNoYWRvd2ApLGQ9WChgaW5zZXQtc2hhZG93YCksZj1YKGB0ZXh0LXNoYWRvd2ApLHA9WChgZHJvcC1zaGFkb3dgKSxtPVgoYGJsdXJgKSxoPVgoYHBlcnNwZWN0aXZlYCksZz1YKGBhc3BlY3RgKSxfPVgoYGVhc2VgKSx2PVgoYGFuaW1hdGVgKSx5PSgpPT5bYGF1dG9gLGBhdm9pZGAsYGFsbGAsYGF2b2lkLXBhZ2VgLGBwYWdlYCxgbGVmdGAsYHJpZ2h0YCxgY29sdW1uYF0sYj0oKT0+W2BjZW50ZXJgLGB0b3BgLGBib3R0b21gLGBsZWZ0YCxgcmlnaHRgLGB0b3AtbGVmdGAsYGxlZnQtdG9wYCxgdG9wLXJpZ2h0YCxgcmlnaHQtdG9wYCxgYm90dG9tLXJpZ2h0YCxgcmlnaHQtYm90dG9tYCxgYm90dG9tLWxlZnRgLGBsZWZ0LWJvdHRvbWBdLHg9KCk9PlsuLi5iKCksJCxRXSxTPSgpPT5bYGF1dG9gLGBoaWRkZW5gLGBjbGlwYCxgdmlzaWJsZWAsYHNjcm9sbGBdLEM9KCk9PltgYXV0b2AsYGNvbnRhaW5gLGBub25lYF0sdz0oKT0+WyQsUSxjXSxUPSgpPT5bX2YsYGZ1bGxgLGBhdXRvYCwuLi53KCldLEU9KCk9Plt2Zixgbm9uZWAsYHN1YmdyaWRgLCQsUV0sRD0oKT0+W2BhdXRvYCx7c3BhbjpbYGZ1bGxgLHZmLCQsUV19LHZmLCQsUV0sZWU9KCk9Plt2ZixgYXV0b2AsJCxRXSxPPSgpPT5bYGF1dG9gLGBtaW5gLGBtYXhgLGBmcmAsJCxRXSx0ZT0oKT0+W2BzdGFydGAsYGVuZGAsYGNlbnRlcmAsYGJldHdlZW5gLGBhcm91bmRgLGBldmVubHlgLGBzdHJldGNoYCxgYmFzZWxpbmVgLGBjZW50ZXItc2FmZWAsYGVuZC1zYWZlYF0saz0oKT0+W2BzdGFydGAsYGVuZGAsYGNlbnRlcmAsYHN0cmV0Y2hgLGBjZW50ZXItc2FmZWAsYGVuZC1zYWZlYF0sQT0oKT0+W2BhdXRvYCwuLi53KCldLG5lPSgpPT5bX2YsYGF1dG9gLGBmdWxsYCxgZHZ3YCxgZHZoYCxgbHZ3YCxgbHZoYCxgc3Z3YCxgc3ZoYCxgbWluYCxgbWF4YCxgZml0YCwuLi53KCldLGo9KCk9PltfZixgc2NyZWVuYCxgZnVsbGAsYGR2d2AsYGx2d2AsYHN2d2AsYG1pbmAsYG1heGAsYGZpdGAsLi4udygpXSxNPSgpPT5bX2YsYHNjcmVlbmAsYGZ1bGxgLGBsaGAsYGR2aGAsYGx2aGAsYHN2aGAsYG1pbmAsYG1heGAsYGZpdGAsLi4udygpXSxOPSgpPT5bZSwkLFFdLHJlPSgpPT5bLi4uYigpLFJmLE5mLHtwb3NpdGlvbjpbJCxRXX1dLGllPSgpPT5bYG5vLXJlcGVhdGAse3JlcGVhdDpbYGAsYHhgLGB5YCxgc3BhY2VgLGByb3VuZGBdfV0sYWU9KCk9PltgYXV0b2AsYGNvdmVyYCxgY29udGFpbmAsemYsT2Yse3NpemU6WyQsUV19XSxvZT0oKT0+W3lmLElmLGtmXSxQPSgpPT5bYGAsYG5vbmVgLGBmdWxsYCxsLCQsUV0sRj0oKT0+W2BgLFosSWYsa2ZdLHNlPSgpPT5bYHNvbGlkYCxgZGFzaGVkYCxgZG90dGVkYCxgZG91YmxlYF0sY2U9KCk9Pltgbm9ybWFsYCxgbXVsdGlwbHlgLGBzY3JlZW5gLGBvdmVybGF5YCxgZGFya2VuYCxgbGlnaHRlbmAsYGNvbG9yLWRvZGdlYCxgY29sb3ItYnVybmAsYGhhcmQtbGlnaHRgLGBzb2Z0LWxpZ2h0YCxgZGlmZmVyZW5jZWAsYGV4Y2x1c2lvbmAsYGh1ZWAsYHNhdHVyYXRpb25gLGBjb2xvcmAsYGx1bWlub3NpdHlgXSxJPSgpPT5bWix5ZixSZixOZl0sbGU9KCk9PltgYCxgbm9uZWAsbSwkLFFdLEw9KCk9Pltgbm9uZWAsWiwkLFFdLHVlPSgpPT5bYG5vbmVgLFosJCxRXSxkZT0oKT0+W1osJCxRXSxmZT0oKT0+W19mLGBmdWxsYCwuLi53KCldO3JldHVybntjYWNoZVNpemU6NTAwLHRoZW1lOnthbmltYXRlOltgc3BpbmAsYHBpbmdgLGBwdWxzZWAsYGJvdW5jZWBdLGFzcGVjdDpbYHZpZGVvYF0sYmx1cjpbYmZdLGJyZWFrcG9pbnQ6W2JmXSxjb2xvcjpbeGZdLGNvbnRhaW5lcjpbYmZdLCJkcm9wLXNoYWRvdyI6W2JmXSxlYXNlOltgaW5gLGBvdXRgLGBpbi1vdXRgXSxmb250OltFZl0sImZvbnQtd2VpZ2h0IjpbYHRoaW5gLGBleHRyYWxpZ2h0YCxgbGlnaHRgLGBub3JtYWxgLGBtZWRpdW1gLGBzZW1pYm9sZGAsYGJvbGRgLGBleHRyYWJvbGRgLGBibGFja2BdLCJpbnNldC1zaGFkb3ciOltiZl0sbGVhZGluZzpbYG5vbmVgLGB0aWdodGAsYHNudWdgLGBub3JtYWxgLGByZWxheGVkYCxgbG9vc2VgXSxwZXJzcGVjdGl2ZTpbYGRyYW1hdGljYCxgbmVhcmAsYG5vcm1hbGAsYG1pZHJhbmdlYCxgZGlzdGFudGAsYG5vbmVgXSxyYWRpdXM6W2JmXSxzaGFkb3c6W2JmXSxzcGFjaW5nOltgcHhgLFpdLHRleHQ6W2JmXSwidGV4dC1zaGFkb3ciOltiZl0sdHJhY2tpbmc6W2B0aWdodGVyYCxgdGlnaHRgLGBub3JtYWxgLGB3aWRlYCxgd2lkZXJgLGB3aWRlc3RgXX0sY2xhc3NHcm91cHM6e2FzcGVjdDpbe2FzcGVjdDpbYGF1dG9gLGBzcXVhcmVgLF9mLFEsJCxnXX1dLGNvbnRhaW5lcjpbYGNvbnRhaW5lcmBdLCJjb250YWluZXItdHlwZSI6W3siQGNvbnRhaW5lciI6W2BgLGBub3JtYWxgLGBzaXplYCwkLFFdfV0sImNvbnRhaW5lci1uYW1lZCI6W0RmXSxjb2x1bW5zOlt7Y29sdW1uczpbWixRLCQsc119XSwiYnJlYWstYWZ0ZXIiOlt7ImJyZWFrLWFmdGVyIjp5KCl9XSwiYnJlYWstYmVmb3JlIjpbeyJicmVhay1iZWZvcmUiOnkoKX1dLCJicmVhay1pbnNpZGUiOlt7ImJyZWFrLWluc2lkZSI6W2BhdXRvYCxgYXZvaWRgLGBhdm9pZC1wYWdlYCxgYXZvaWQtY29sdW1uYF19XSwiYm94LWRlY29yYXRpb24iOlt7ImJveC1kZWNvcmF0aW9uIjpbYHNsaWNlYCxgY2xvbmVgXX1dLGJveDpbe2JveDpbYGJvcmRlcmAsYGNvbnRlbnRgXX1dLGRpc3BsYXk6W2BibG9ja2AsYGlubGluZS1ibG9ja2AsYGlubGluZWAsYGZsZXhgLGBpbmxpbmUtZmxleGAsYHRhYmxlYCxgaW5saW5lLXRhYmxlYCxgdGFibGUtY2FwdGlvbmAsYHRhYmxlLWNlbGxgLGB0YWJsZS1jb2x1bW5gLGB0YWJsZS1jb2x1bW4tZ3JvdXBgLGB0YWJsZS1mb290ZXItZ3JvdXBgLGB0YWJsZS1oZWFkZXItZ3JvdXBgLGB0YWJsZS1yb3ctZ3JvdXBgLGB0YWJsZS1yb3dgLGBmbG93LXJvb3RgLGBncmlkYCxgaW5saW5lLWdyaWRgLGBjb250ZW50c2AsYGxpc3QtaXRlbWAsYGhpZGRlbmBdLHNyOltgc3Itb25seWAsYG5vdC1zci1vbmx5YF0sZmxvYXQ6W3tmbG9hdDpbYHJpZ2h0YCxgbGVmdGAsYG5vbmVgLGBzdGFydGAsYGVuZGBdfV0sY2xlYXI6W3tjbGVhcjpbYGxlZnRgLGByaWdodGAsYGJvdGhgLGBub25lYCxgc3RhcnRgLGBlbmRgXX1dLGlzb2xhdGlvbjpbYGlzb2xhdGVgLGBpc29sYXRpb24tYXV0b2BdLCJvYmplY3QtZml0Ijpbe29iamVjdDpbYGNvbnRhaW5gLGBjb3ZlcmAsYGZpbGxgLGBub25lYCxgc2NhbGUtZG93bmBdfV0sIm9iamVjdC1wb3NpdGlvbiI6W3tvYmplY3Q6eCgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpTKCl9XSwib3ZlcmZsb3cteCI6W3sib3ZlcmZsb3cteCI6UygpfV0sIm92ZXJmbG93LXkiOlt7Im92ZXJmbG93LXkiOlMoKX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOkMoKX1dLCJvdmVyc2Nyb2xsLXgiOlt7Im92ZXJzY3JvbGwteCI6QygpfV0sIm92ZXJzY3JvbGwteSI6W3sib3ZlcnNjcm9sbC15IjpDKCl9XSxwb3NpdGlvbjpbYHN0YXRpY2AsYGZpeGVkYCxgYWJzb2x1dGVgLGByZWxhdGl2ZWAsYHN0aWNreWBdLGluc2V0Olt7aW5zZXQ6VCgpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOlQoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpUKCl9XSxzdGFydDpbeyJpbnNldC1zIjpUKCksc3RhcnQ6VCgpfV0sZW5kOlt7Imluc2V0LWUiOlQoKSxlbmQ6VCgpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6VCgpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6VCgpfV0sdG9wOlt7dG9wOlQoKX1dLHJpZ2h0Olt7cmlnaHQ6VCgpfV0sYm90dG9tOlt7Ym90dG9tOlQoKX1dLGxlZnQ6W3tsZWZ0OlQoKX1dLHZpc2liaWxpdHk6W2B2aXNpYmxlYCxgaW52aXNpYmxlYCxgY29sbGFwc2VgXSx6Olt7ejpbdmYsYGF1dG9gLCQsUV19XSxiYXNpczpbe2Jhc2lzOltfZixgZnVsbGAsYGF1dG9gLHMsLi4udygpXX1dLCJmbGV4LWRpcmVjdGlvbiI6W3tmbGV4Oltgcm93YCxgcm93LXJldmVyc2VgLGBjb2xgLGBjb2wtcmV2ZXJzZWBdfV0sImZsZXgtd3JhcCI6W3tmbGV4Oltgbm93cmFwYCxgd3JhcGAsYHdyYXAtcmV2ZXJzZWBdfV0sZmxleDpbe2ZsZXg6W1osX2YsYGF1dG9gLGBpbml0aWFsYCxgbm9uZWAsUV19XSxncm93Olt7Z3JvdzpbYGAsWiwkLFFdfV0sc2hyaW5rOlt7c2hyaW5rOltgYCxaLCQsUV19XSxvcmRlcjpbe29yZGVyOlt2ZixgZmlyc3RgLGBsYXN0YCxgbm9uZWAsJCxRXX1dLCJncmlkLWNvbHMiOlt7ImdyaWQtY29scyI6RSgpfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOkQoKX1dLCJjb2wtc3RhcnQiOlt7ImNvbC1zdGFydCI6ZWUoKX1dLCJjb2wtZW5kIjpbeyJjb2wtZW5kIjplZSgpfV0sImdyaWQtcm93cyI6W3siZ3JpZC1yb3dzIjpFKCl9XSwicm93LXN0YXJ0LWVuZCI6W3tyb3c6RCgpfV0sInJvdy1zdGFydCI6W3sicm93LXN0YXJ0IjplZSgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOmVlKCl9XSwiZ3JpZC1mbG93IjpbeyJncmlkLWZsb3ciOltgcm93YCxgY29sYCxgZGVuc2VgLGByb3ctZGVuc2VgLGBjb2wtZGVuc2VgXX1dLCJhdXRvLWNvbHMiOlt7ImF1dG8tY29scyI6TygpfV0sImF1dG8tcm93cyI6W3siYXV0by1yb3dzIjpPKCl9XSxnYXA6W3tnYXA6dygpfV0sImdhcC14IjpbeyJnYXAteCI6dygpfV0sImdhcC15IjpbeyJnYXAteSI6dygpfV0sImp1c3RpZnktY29udGVudCI6W3tqdXN0aWZ5OlsuLi50ZSgpLGBub3JtYWxgXX1dLCJqdXN0aWZ5LWl0ZW1zIjpbeyJqdXN0aWZ5LWl0ZW1zIjpbLi4uaygpLGBub3JtYWxgXX1dLCJqdXN0aWZ5LXNlbGYiOlt7Imp1c3RpZnktc2VsZiI6W2BhdXRvYCwuLi5rKCldfV0sImFsaWduLWNvbnRlbnQiOlt7Y29udGVudDpbYG5vcm1hbGAsLi4udGUoKV19XSwiYWxpZ24taXRlbXMiOlt7aXRlbXM6Wy4uLmsoKSx7YmFzZWxpbmU6W2BgLGBsYXN0YF19XX1dLCJhbGlnbi1zZWxmIjpbe3NlbGY6W2BhdXRvYCwuLi5rKCkse2Jhc2VsaW5lOltgYCxgbGFzdGBdfV19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6dGUoKX1dLCJwbGFjZS1pdGVtcyI6W3sicGxhY2UtaXRlbXMiOlsuLi5rKCksYGJhc2VsaW5lYF19XSwicGxhY2Utc2VsZiI6W3sicGxhY2Utc2VsZiI6W2BhdXRvYCwuLi5rKCldfV0scDpbe3A6dygpfV0scHg6W3tweDp3KCl9XSxweTpbe3B5OncoKX1dLHBzOlt7cHM6dygpfV0scGU6W3twZTp3KCl9XSxwYnM6W3twYnM6dygpfV0scGJlOlt7cGJlOncoKX1dLHB0Olt7cHQ6dygpfV0scHI6W3twcjp3KCl9XSxwYjpbe3BiOncoKX1dLHBsOlt7cGw6dygpfV0sbTpbe206QSgpfV0sbXg6W3tteDpBKCl9XSxteTpbe215OkEoKX1dLG1zOlt7bXM6QSgpfV0sbWU6W3ttZTpBKCl9XSxtYnM6W3ttYnM6QSgpfV0sbWJlOlt7bWJlOkEoKX1dLG10Olt7bXQ6QSgpfV0sbXI6W3ttcjpBKCl9XSxtYjpbe21iOkEoKX1dLG1sOlt7bWw6QSgpfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOncoKX1dLCJzcGFjZS14LXJldmVyc2UiOltgc3BhY2UteC1yZXZlcnNlYF0sInNwYWNlLXkiOlt7InNwYWNlLXkiOncoKX1dLCJzcGFjZS15LXJldmVyc2UiOltgc3BhY2UteS1yZXZlcnNlYF0sc2l6ZTpbe3NpemU6bmUoKX1dLCJpbmxpbmUtc2l6ZSI6W3tpbmxpbmU6W2BhdXRvYCwuLi5qKCldfV0sIm1pbi1pbmxpbmUtc2l6ZSI6W3sibWluLWlubGluZSI6W2BhdXRvYCwuLi5qKCldfV0sIm1heC1pbmxpbmUtc2l6ZSI6W3sibWF4LWlubGluZSI6W2Bub25lYCwuLi5qKCldfV0sImJsb2NrLXNpemUiOlt7YmxvY2s6W2BhdXRvYCwuLi5NKCldfV0sIm1pbi1ibG9jay1zaXplIjpbeyJtaW4tYmxvY2siOltgYXV0b2AsLi4uTSgpXX1dLCJtYXgtYmxvY2stc2l6ZSI6W3sibWF4LWJsb2NrIjpbYG5vbmVgLC4uLk0oKV19XSx3Olt7dzpbcyxgc2NyZWVuYCwuLi5uZSgpXX1dLCJtaW4tdyI6W3sibWluLXciOltzLGBzY3JlZW5gLGBub25lYCwuLi5uZSgpXX1dLCJtYXgtdyI6W3sibWF4LXciOltzLGBzY3JlZW5gLGBub25lYCxgcHJvc2VgLHtzY3JlZW46W29dfSwuLi5uZSgpXX1dLGg6W3toOltgc2NyZWVuYCxgbGhgLC4uLm5lKCldfV0sIm1pbi1oIjpbeyJtaW4taCI6W2BzY3JlZW5gLGBsaGAsYG5vbmVgLC4uLm5lKCldfV0sIm1heC1oIjpbeyJtYXgtaCI6W2BzY3JlZW5gLGBsaGAsLi4ubmUoKV19XSwiZm9udC1zaXplIjpbe3RleHQ6W2BiYXNlYCxuLElmLGtmXX1dLCJmb250LXNtb290aGluZyI6W2BhbnRpYWxpYXNlZGAsYHN1YnBpeGVsLWFudGlhbGlhc2VkYF0sImZvbnQtc3R5bGUiOltgaXRhbGljYCxgbm90LWl0YWxpY2BdLCJmb250LXdlaWdodCI6W3tmb250OltyLEhmLGpmXX1dLCJmb250LXN0cmV0Y2giOlt7ImZvbnQtc3RyZXRjaCI6W2B1bHRyYS1jb25kZW5zZWRgLGBleHRyYS1jb25kZW5zZWRgLGBjb25kZW5zZWRgLGBzZW1pLWNvbmRlbnNlZGAsYG5vcm1hbGAsYHNlbWktZXhwYW5kZWRgLGBleHBhbmRlZGAsYGV4dHJhLWV4cGFuZGVkYCxgdWx0cmEtZXhwYW5kZWRgLHlmLFFdfV0sImZvbnQtZmFtaWx5Ijpbe2ZvbnQ6W0xmLE1mLHRdfV0sImZvbnQtZmVhdHVyZXMiOlt7ImZvbnQtZmVhdHVyZXMiOltRXX1dLCJmdm4tbm9ybWFsIjpbYG5vcm1hbC1udW1zYF0sImZ2bi1vcmRpbmFsIjpbYG9yZGluYWxgXSwiZnZuLXNsYXNoZWQtemVybyI6W2BzbGFzaGVkLXplcm9gXSwiZnZuLWZpZ3VyZSI6W2BsaW5pbmctbnVtc2AsYG9sZHN0eWxlLW51bXNgXSwiZnZuLXNwYWNpbmciOltgcHJvcG9ydGlvbmFsLW51bXNgLGB0YWJ1bGFyLW51bXNgXSwiZnZuLWZyYWN0aW9uIjpbYGRpYWdvbmFsLWZyYWN0aW9uc2AsYHN0YWNrZWQtZnJhY3Rpb25zYF0sdHJhY2tpbmc6W3t0cmFja2luZzpbaSwkLFFdfV0sImxpbmUtY2xhbXAiOlt7ImxpbmUtY2xhbXAiOltaLGBub25lYCwkLEFmXX1dLGxlYWRpbmc6W3tsZWFkaW5nOlthLC4uLncoKV19XSwibGlzdC1pbWFnZSI6W3sibGlzdC1pbWFnZSI6W2Bub25lYCwkLFFdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbYGluc2lkZWAsYG91dHNpZGVgXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbYGRpc2NgLGBkZWNpbWFsYCxgbm9uZWAsJCxRXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OltgbGVmdGAsYGNlbnRlcmAsYHJpZ2h0YCxganVzdGlmeWAsYHN0YXJ0YCxgZW5kYF19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6TigpfV0sInRleHQtY29sb3IiOlt7dGV4dDpOKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbYHVuZGVybGluZWAsYG92ZXJsaW5lYCxgbGluZS10aHJvdWdoYCxgbm8tdW5kZXJsaW5lYF0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsuLi5zZSgpLGB3YXZ5YF19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltaLGBmcm9tLWZvbnRgLGBhdXRvYCwkLGtmXX1dLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiOlt7ZGVjb3JhdGlvbjpOKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W1osYGF1dG9gLCQsUV19XSwidGV4dC10cmFuc2Zvcm0iOltgdXBwZXJjYXNlYCxgbG93ZXJjYXNlYCxgY2FwaXRhbGl6ZWAsYG5vcm1hbC1jYXNlYF0sInRleHQtb3ZlcmZsb3ciOltgdHJ1bmNhdGVgLGB0ZXh0LWVsbGlwc2lzYCxgdGV4dC1jbGlwYF0sInRleHQtd3JhcCI6W3t0ZXh0Oltgd3JhcGAsYG5vd3JhcGAsYGJhbGFuY2VgLGBwcmV0dHlgXX1dLGluZGVudDpbe2luZGVudDp3KCl9XSwidGFiLXNpemUiOlt7dGFiOlt2ZiwkLFFdfV0sInZlcnRpY2FsLWFsaWduIjpbe2FsaWduOltgYmFzZWxpbmVgLGB0b3BgLGBtaWRkbGVgLGBib3R0b21gLGB0ZXh0LXRvcGAsYHRleHQtYm90dG9tYCxgc3ViYCxgc3VwZXJgLCQsUV19XSx3aGl0ZXNwYWNlOlt7d2hpdGVzcGFjZTpbYG5vcm1hbGAsYG5vd3JhcGAsYHByZWAsYHByZS1saW5lYCxgcHJlLXdyYXBgLGBicmVhay1zcGFjZXNgXX1dLGJyZWFrOlt7YnJlYWs6W2Bub3JtYWxgLGB3b3Jkc2AsYGFsbGAsYGtlZXBgXX1dLHdyYXA6W3t3cmFwOltgYnJlYWstd29yZGAsYGFueXdoZXJlYCxgbm9ybWFsYF19XSxoeXBoZW5zOlt7aHlwaGVuczpbYG5vbmVgLGBtYW51YWxgLGBhdXRvYF19XSxjb250ZW50Olt7Y29udGVudDpbYG5vbmVgLCQsUV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbYGZpeGVkYCxgbG9jYWxgLGBzY3JvbGxgXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YCxgdGV4dGBdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YF19XSwiYmctcG9zaXRpb24iOlt7Ymc6cmUoKX1dLCJiZy1yZXBlYXQiOlt7Ymc6aWUoKX1dLCJiZy1zaXplIjpbe2JnOmFlKCl9XSwiYmctaW1hZ2UiOlt7Ymc6W2Bub25lYCx7bGluZWFyOlt7dG86W2B0YCxgdHJgLGByYCxgYnJgLGBiYCxgYmxgLGBsYCxgdGxgXX0sdmYsJCxRXSxyYWRpYWw6W2BgLCQsUV0sY29uaWM6W3ZmLCQsUV19LEJmLFBmXX1dLCJiZy1jb2xvciI6W3tiZzpOKCl9XSwiZ3JhZGllbnQtZnJvbS1wb3MiOlt7ZnJvbTpvZSgpfV0sImdyYWRpZW50LXZpYS1wb3MiOlt7dmlhOm9lKCl9XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOm9lKCl9XSwiZ3JhZGllbnQtZnJvbSI6W3tmcm9tOk4oKX1dLCJncmFkaWVudC12aWEiOlt7dmlhOk4oKX1dLCJncmFkaWVudC10byI6W3t0bzpOKCl9XSxyb3VuZGVkOlt7cm91bmRlZDpQKCl9XSwicm91bmRlZC1zIjpbeyJyb3VuZGVkLXMiOlAoKX1dLCJyb3VuZGVkLWUiOlt7InJvdW5kZWQtZSI6UCgpfV0sInJvdW5kZWQtdCI6W3sicm91bmRlZC10IjpQKCl9XSwicm91bmRlZC1yIjpbeyJyb3VuZGVkLXIiOlAoKX1dLCJyb3VuZGVkLWIiOlt7InJvdW5kZWQtYiI6UCgpfV0sInJvdW5kZWQtbCI6W3sicm91bmRlZC1sIjpQKCl9XSwicm91bmRlZC1zcyI6W3sicm91bmRlZC1zcyI6UCgpfV0sInJvdW5kZWQtc2UiOlt7InJvdW5kZWQtc2UiOlAoKX1dLCJyb3VuZGVkLWVlIjpbeyJyb3VuZGVkLWVlIjpQKCl9XSwicm91bmRlZC1lcyI6W3sicm91bmRlZC1lcyI6UCgpfV0sInJvdW5kZWQtdGwiOlt7InJvdW5kZWQtdGwiOlAoKX1dLCJyb3VuZGVkLXRyIjpbeyJyb3VuZGVkLXRyIjpQKCl9XSwicm91bmRlZC1iciI6W3sicm91bmRlZC1iciI6UCgpfV0sInJvdW5kZWQtYmwiOlt7InJvdW5kZWQtYmwiOlAoKX1dLCJib3JkZXItdyI6W3tib3JkZXI6RigpfV0sImJvcmRlci13LXgiOlt7ImJvcmRlci14IjpGKCl9XSwiYm9yZGVyLXcteSI6W3siYm9yZGVyLXkiOkYoKX1dLCJib3JkZXItdy1zIjpbeyJib3JkZXItcyI6RigpfV0sImJvcmRlci13LWUiOlt7ImJvcmRlci1lIjpGKCl9XSwiYm9yZGVyLXctYnMiOlt7ImJvcmRlci1icyI6RigpfV0sImJvcmRlci13LWJlIjpbeyJib3JkZXItYmUiOkYoKX1dLCJib3JkZXItdy10IjpbeyJib3JkZXItdCI6RigpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjpGKCl9XSwiYm9yZGVyLXctYiI6W3siYm9yZGVyLWIiOkYoKX1dLCJib3JkZXItdy1sIjpbeyJib3JkZXItbCI6RigpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6RigpfV0sImRpdmlkZS14LXJldmVyc2UiOltgZGl2aWRlLXgtcmV2ZXJzZWBdLCJkaXZpZGUteSI6W3siZGl2aWRlLXkiOkYoKX1dLCJkaXZpZGUteS1yZXZlcnNlIjpbYGRpdmlkZS15LXJldmVyc2VgXSwiYm9yZGVyLXN0eWxlIjpbe2JvcmRlcjpbLi4uc2UoKSxgaGlkZGVuYCxgbm9uZWBdfV0sImRpdmlkZS1zdHlsZSI6W3tkaXZpZGU6Wy4uLnNlKCksYGhpZGRlbmAsYG5vbmVgXX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOk4oKX1dLCJib3JkZXItY29sb3IteCI6W3siYm9yZGVyLXgiOk4oKX1dLCJib3JkZXItY29sb3IteSI6W3siYm9yZGVyLXkiOk4oKX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOk4oKX1dLCJib3JkZXItY29sb3ItZSI6W3siYm9yZGVyLWUiOk4oKX1dLCJib3JkZXItY29sb3ItYnMiOlt7ImJvcmRlci1icyI6TigpfV0sImJvcmRlci1jb2xvci1iZSI6W3siYm9yZGVyLWJlIjpOKCl9XSwiYm9yZGVyLWNvbG9yLXQiOlt7ImJvcmRlci10IjpOKCl9XSwiYm9yZGVyLWNvbG9yLXIiOlt7ImJvcmRlci1yIjpOKCl9XSwiYm9yZGVyLWNvbG9yLWIiOlt7ImJvcmRlci1iIjpOKCl9XSwiYm9yZGVyLWNvbG9yLWwiOlt7ImJvcmRlci1sIjpOKCl9XSwiZGl2aWRlLWNvbG9yIjpbe2RpdmlkZTpOKCl9XSwib3V0bGluZS1zdHlsZSI6W3tvdXRsaW5lOlsuLi5zZSgpLGBub25lYCxgaGlkZGVuYF19XSwib3V0bGluZS1vZmZzZXQiOlt7Im91dGxpbmUtb2Zmc2V0IjpbWiwkLFFdfV0sIm91dGxpbmUtdyI6W3tvdXRsaW5lOltgYCxaLElmLGtmXX1dLCJvdXRsaW5lLWNvbG9yIjpbe291dGxpbmU6TigpfV0sc2hhZG93Olt7c2hhZG93OltgYCxgbm9uZWAsdSxWZixGZl19XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzpOKCl9XSwiaW5zZXQtc2hhZG93IjpbeyJpbnNldC1zaGFkb3ciOltgbm9uZWAsZCxWZixGZl19XSwiaW5zZXQtc2hhZG93LWNvbG9yIjpbeyJpbnNldC1zaGFkb3ciOk4oKX1dLCJyaW5nLXciOlt7cmluZzpGKCl9XSwicmluZy13LWluc2V0IjpbYHJpbmctaW5zZXRgXSwicmluZy1jb2xvciI6W3tyaW5nOk4oKX1dLCJyaW5nLW9mZnNldC13IjpbeyJyaW5nLW9mZnNldCI6W1osa2ZdfV0sInJpbmctb2Zmc2V0LWNvbG9yIjpbeyJyaW5nLW9mZnNldCI6TigpfV0sImluc2V0LXJpbmctdyI6W3siaW5zZXQtcmluZyI6RigpfV0sImluc2V0LXJpbmctY29sb3IiOlt7Imluc2V0LXJpbmciOk4oKX1dLCJ0ZXh0LXNoYWRvdyI6W3sidGV4dC1zaGFkb3ciOltgbm9uZWAsZixWZixGZl19XSwidGV4dC1zaGFkb3ctY29sb3IiOlt7InRleHQtc2hhZG93IjpOKCl9XSxvcGFjaXR5Olt7b3BhY2l0eTpbWiwkLFFdfV0sIm1peC1ibGVuZCI6W3sibWl4LWJsZW5kIjpbLi4uY2UoKSxgcGx1cy1kYXJrZXJgLGBwbHVzLWxpZ2h0ZXJgXX1dLCJiZy1ibGVuZCI6W3siYmctYmxlbmQiOmNlKCl9XSwibWFzay1jbGlwIjpbeyJtYXNrLWNsaXAiOltgYm9yZGVyYCxgcGFkZGluZ2AsYGNvbnRlbnRgLGBmaWxsYCxgc3Ryb2tlYCxgdmlld2BdfSxgbWFzay1uby1jbGlwYF0sIm1hc2stY29tcG9zaXRlIjpbe21hc2s6W2BhZGRgLGBzdWJ0cmFjdGAsYGludGVyc2VjdGAsYGV4Y2x1ZGVgXX1dLCJtYXNrLWltYWdlLWxpbmVhci1wb3MiOlt7Im1hc2stbGluZWFyIjpbWl19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpJKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6TigpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLWNvbG9yIjpbeyJtYXNrLWxpbmVhci10byI6TigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLXBvcyI6W3sibWFzay10LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXQtdG8tcG9zIjpbeyJtYXNrLXQtdG8iOkkoKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1jb2xvciI6W3sibWFzay10LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6TigpfV0sIm1hc2staW1hZ2Utci1mcm9tLXBvcyI6W3sibWFzay1yLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXItdG8tcG9zIjpbeyJtYXNrLXItdG8iOkkoKX1dLCJtYXNrLWltYWdlLXItZnJvbS1jb2xvciI6W3sibWFzay1yLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXItdG8tY29sb3IiOlt7Im1hc2stci10byI6TigpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOkkoKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWItdG8tY29sb3IiOlt7Im1hc2stYi10byI6TigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLXBvcyI6W3sibWFzay1sLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWwtdG8tcG9zIjpbeyJtYXNrLWwtdG8iOkkoKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1jb2xvciI6W3sibWFzay1sLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6TigpfV0sIm1hc2staW1hZ2UteC1mcm9tLXBvcyI6W3sibWFzay14LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXgtdG8tcG9zIjpbeyJtYXNrLXgtdG8iOkkoKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1jb2xvciI6W3sibWFzay14LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXgtdG8tY29sb3IiOlt7Im1hc2steC10byI6TigpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOkkoKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXktdG8tY29sb3IiOlt7Im1hc2steS10byI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsIjpbeyJtYXNrLXJhZGlhbCI6WyQsUV19XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1wb3MiOlt7Im1hc2stcmFkaWFsLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1wb3MiOlt7Im1hc2stcmFkaWFsLXRvIjpJKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1jb2xvciI6W3sibWFzay1yYWRpYWwtZnJvbSI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLWNvbG9yIjpbeyJtYXNrLXJhZGlhbC10byI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6W2BjaXJjbGVgLGBlbGxpcHNlYF19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbYHNpZGVgLGBjb3JuZXJgXSxmYXJ0aGVzdDpbYHNpZGVgLGBjb3JuZXJgXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOmIoKX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W1pdfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1wb3MiOlt7Im1hc2stY29uaWMtZnJvbSI6SSgpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tcG9zIjpbeyJtYXNrLWNvbmljLXRvIjpJKCl9XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLWNvbG9yIjpbeyJtYXNrLWNvbmljLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLWNvbG9yIjpbeyJtYXNrLWNvbmljLXRvIjpOKCl9XSwibWFzay1tb2RlIjpbe21hc2s6W2BhbHBoYWAsYGx1bWluYW5jZWAsYG1hdGNoYF19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YCxgZmlsbGAsYHN0cm9rZWAsYHZpZXdgXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6cmUoKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOmllKCl9XSwibWFzay1zaXplIjpbe21hc2s6YWUoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6W2BhbHBoYWAsYGx1bWluYW5jZWBdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbYG5vbmVgLCQsUV19XSxmaWx0ZXI6W3tmaWx0ZXI6W2BgLGBub25lYCwkLFFdfV0sYmx1cjpbe2JsdXI6bGUoKX1dLGJyaWdodG5lc3M6W3ticmlnaHRuZXNzOltaLCQsUV19XSxjb250cmFzdDpbe2NvbnRyYXN0OltaLCQsUV19XSwiZHJvcC1zaGFkb3ciOlt7ImRyb3Atc2hhZG93IjpbYGAsYG5vbmVgLHAsVmYsRmZdfV0sImRyb3Atc2hhZG93LWNvbG9yIjpbeyJkcm9wLXNoYWRvdyI6TigpfV0sZ3JheXNjYWxlOlt7Z3JheXNjYWxlOltgYCxaLCQsUV19XSwiaHVlLXJvdGF0ZSI6W3siaHVlLXJvdGF0ZSI6W1osJCxRXX1dLGludmVydDpbe2ludmVydDpbYGAsWiwkLFFdfV0sc2F0dXJhdGU6W3tzYXR1cmF0ZTpbWiwkLFFdfV0sc2VwaWE6W3tzZXBpYTpbYGAsWiwkLFFdfV0sImJhY2tkcm9wLWZpbHRlciI6W3siYmFja2Ryb3AtZmlsdGVyIjpbYGAsYG5vbmVgLCQsUV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6bGUoKX1dLCJiYWNrZHJvcC1icmlnaHRuZXNzIjpbeyJiYWNrZHJvcC1icmlnaHRuZXNzIjpbWiwkLFFdfV0sImJhY2tkcm9wLWNvbnRyYXN0IjpbeyJiYWNrZHJvcC1jb250cmFzdCI6W1osJCxRXX1dLCJiYWNrZHJvcC1ncmF5c2NhbGUiOlt7ImJhY2tkcm9wLWdyYXlzY2FsZSI6W2BgLFosJCxRXX1dLCJiYWNrZHJvcC1odWUtcm90YXRlIjpbeyJiYWNrZHJvcC1odWUtcm90YXRlIjpbWiwkLFFdfV0sImJhY2tkcm9wLWludmVydCI6W3siYmFja2Ryb3AtaW52ZXJ0IjpbYGAsWiwkLFFdfV0sImJhY2tkcm9wLW9wYWNpdHkiOlt7ImJhY2tkcm9wLW9wYWNpdHkiOltaLCQsUV19XSwiYmFja2Ryb3Atc2F0dXJhdGUiOlt7ImJhY2tkcm9wLXNhdHVyYXRlIjpbWiwkLFFdfV0sImJhY2tkcm9wLXNlcGlhIjpbeyJiYWNrZHJvcC1zZXBpYSI6W2BgLFosJCxRXX1dLCJib3JkZXItY29sbGFwc2UiOlt7Ym9yZGVyOltgY29sbGFwc2VgLGBzZXBhcmF0ZWBdfV0sImJvcmRlci1zcGFjaW5nIjpbeyJib3JkZXItc3BhY2luZyI6dygpfV0sImJvcmRlci1zcGFjaW5nLXgiOlt7ImJvcmRlci1zcGFjaW5nLXgiOncoKX1dLCJib3JkZXItc3BhY2luZy15IjpbeyJib3JkZXItc3BhY2luZy15Ijp3KCl9XSwidGFibGUtbGF5b3V0Ijpbe3RhYmxlOltgYXV0b2AsYGZpeGVkYF19XSxjYXB0aW9uOlt7Y2FwdGlvbjpbYHRvcGAsYGJvdHRvbWBdfV0sdHJhbnNpdGlvbjpbe3RyYW5zaXRpb246W2BgLGBhbGxgLGBjb2xvcnNgLGBvcGFjaXR5YCxgc2hhZG93YCxgdHJhbnNmb3JtYCxgbm9uZWAsJCxRXX1dLCJ0cmFuc2l0aW9uLWJlaGF2aW9yIjpbe3RyYW5zaXRpb246W2Bub3JtYWxgLGBkaXNjcmV0ZWBdfV0sZHVyYXRpb246W3tkdXJhdGlvbjpbWixgaW5pdGlhbGAsJCxRXX1dLGVhc2U6W3tlYXNlOltgbGluZWFyYCxgaW5pdGlhbGAsXywkLFFdfV0sZGVsYXk6W3tkZWxheTpbWiwkLFFdfV0sYW5pbWF0ZTpbe2FuaW1hdGU6W2Bub25lYCx2LCQsUV19XSxiYWNrZmFjZTpbe2JhY2tmYWNlOltgaGlkZGVuYCxgdmlzaWJsZWBdfV0scGVyc3BlY3RpdmU6W3twZXJzcGVjdGl2ZTpbaCwkLFFdfV0sInBlcnNwZWN0aXZlLW9yaWdpbiI6W3sicGVyc3BlY3RpdmUtb3JpZ2luIjp4KCl9XSxyb3RhdGU6W3tyb3RhdGU6TCgpfV0sInJvdGF0ZS14IjpbeyJyb3RhdGUteCI6TCgpfV0sInJvdGF0ZS15IjpbeyJyb3RhdGUteSI6TCgpfV0sInJvdGF0ZS16IjpbeyJyb3RhdGUteiI6TCgpfV0sc2NhbGU6W3tzY2FsZTp1ZSgpfV0sInNjYWxlLXgiOlt7InNjYWxlLXgiOnVlKCl9XSwic2NhbGUteSI6W3sic2NhbGUteSI6dWUoKX1dLCJzY2FsZS16IjpbeyJzY2FsZS16Ijp1ZSgpfV0sInNjYWxlLTNkIjpbYHNjYWxlLTNkYF0sc2tldzpbe3NrZXc6ZGUoKX1dLCJza2V3LXgiOlt7InNrZXcteCI6ZGUoKX1dLCJza2V3LXkiOlt7InNrZXcteSI6ZGUoKX1dLHRyYW5zZm9ybTpbe3RyYW5zZm9ybTpbJCxRLGBgLGBub25lYCxgZ3B1YCxgY3B1YF19XSwidHJhbnNmb3JtLW9yaWdpbiI6W3tvcmlnaW46eCgpfV0sInRyYW5zZm9ybS1zdHlsZSI6W3t0cmFuc2Zvcm06W2AzZGAsYGZsYXRgXX1dLHRyYW5zbGF0ZTpbe3RyYW5zbGF0ZTpmZSgpfV0sInRyYW5zbGF0ZS14IjpbeyJ0cmFuc2xhdGUteCI6ZmUoKX1dLCJ0cmFuc2xhdGUteSI6W3sidHJhbnNsYXRlLXkiOmZlKCl9XSwidHJhbnNsYXRlLXoiOlt7InRyYW5zbGF0ZS16IjpmZSgpfV0sInRyYW5zbGF0ZS1ub25lIjpbYHRyYW5zbGF0ZS1ub25lYF0sem9vbTpbe3pvb206W3ZmLCQsUV19XSxhY2NlbnQ6W3thY2NlbnQ6TigpfV0sYXBwZWFyYW5jZTpbe2FwcGVhcmFuY2U6W2Bub25lYCxgYXV0b2BdfV0sImNhcmV0LWNvbG9yIjpbe2NhcmV0Ok4oKX1dLCJjb2xvci1zY2hlbWUiOlt7c2NoZW1lOltgbm9ybWFsYCxgZGFya2AsYGxpZ2h0YCxgbGlnaHQtZGFya2AsYG9ubHktZGFya2AsYG9ubHktbGlnaHRgXX1dLGN1cnNvcjpbe2N1cnNvcjpbYGF1dG9gLGBkZWZhdWx0YCxgcG9pbnRlcmAsYHdhaXRgLGB0ZXh0YCxgbW92ZWAsYGhlbHBgLGBub3QtYWxsb3dlZGAsYG5vbmVgLGBjb250ZXh0LW1lbnVgLGBwcm9ncmVzc2AsYGNlbGxgLGBjcm9zc2hhaXJgLGB2ZXJ0aWNhbC10ZXh0YCxgYWxpYXNgLGBjb3B5YCxgbm8tZHJvcGAsYGdyYWJgLGBncmFiYmluZ2AsYGFsbC1zY3JvbGxgLGBjb2wtcmVzaXplYCxgcm93LXJlc2l6ZWAsYG4tcmVzaXplYCxgZS1yZXNpemVgLGBzLXJlc2l6ZWAsYHctcmVzaXplYCxgbmUtcmVzaXplYCxgbnctcmVzaXplYCxgc2UtcmVzaXplYCxgc3ctcmVzaXplYCxgZXctcmVzaXplYCxgbnMtcmVzaXplYCxgbmVzdy1yZXNpemVgLGBud3NlLXJlc2l6ZWAsYHpvb20taW5gLGB6b29tLW91dGAsJCxRXX1dLCJmaWVsZC1zaXppbmciOlt7ImZpZWxkLXNpemluZyI6W2BmaXhlZGAsYGNvbnRlbnRgXX1dLCJwb2ludGVyLWV2ZW50cyI6W3sicG9pbnRlci1ldmVudHMiOltgYXV0b2AsYG5vbmVgXX1dLHJlc2l6ZTpbe3Jlc2l6ZTpbYG5vbmVgLGBgLGB5YCxgeGBdfV0sInNjcm9sbC1iZWhhdmlvciI6W3tzY3JvbGw6W2BhdXRvYCxgc21vb3RoYF19XSwic2Nyb2xsYmFyLXRodW1iLWNvbG9yIjpbeyJzY3JvbGxiYXItdGh1bWIiOk4oKX1dLCJzY3JvbGxiYXItdHJhY2stY29sb3IiOlt7InNjcm9sbGJhci10cmFjayI6TigpfV0sInNjcm9sbGJhci1ndXR0ZXIiOlt7InNjcm9sbGJhci1ndXR0ZXIiOltgYXV0b2AsYHN0YWJsZWAsYGJvdGhgXX1dLCJzY3JvbGxiYXItdyI6W3tzY3JvbGxiYXI6W2BhdXRvYCxgdGhpbmAsYG5vbmVgXX1dLCJzY3JvbGwtbSI6W3sic2Nyb2xsLW0iOncoKX1dLCJzY3JvbGwtbXgiOlt7InNjcm9sbC1teCI6dygpfV0sInNjcm9sbC1teSI6W3sic2Nyb2xsLW15Ijp3KCl9XSwic2Nyb2xsLW1zIjpbeyJzY3JvbGwtbXMiOncoKX1dLCJzY3JvbGwtbWUiOlt7InNjcm9sbC1tZSI6dygpfV0sInNjcm9sbC1tYnMiOlt7InNjcm9sbC1tYnMiOncoKX1dLCJzY3JvbGwtbWJlIjpbeyJzY3JvbGwtbWJlIjp3KCl9XSwic2Nyb2xsLW10IjpbeyJzY3JvbGwtbXQiOncoKX1dLCJzY3JvbGwtbXIiOlt7InNjcm9sbC1tciI6dygpfV0sInNjcm9sbC1tYiI6W3sic2Nyb2xsLW1iIjp3KCl9XSwic2Nyb2xsLW1sIjpbeyJzY3JvbGwtbWwiOncoKX1dLCJzY3JvbGwtcCI6W3sic2Nyb2xsLXAiOncoKX1dLCJzY3JvbGwtcHgiOlt7InNjcm9sbC1weCI6dygpfV0sInNjcm9sbC1weSI6W3sic2Nyb2xsLXB5Ijp3KCl9XSwic2Nyb2xsLXBzIjpbeyJzY3JvbGwtcHMiOncoKX1dLCJzY3JvbGwtcGUiOlt7InNjcm9sbC1wZSI6dygpfV0sInNjcm9sbC1wYnMiOlt7InNjcm9sbC1wYnMiOncoKX1dLCJzY3JvbGwtcGJlIjpbeyJzY3JvbGwtcGJlIjp3KCl9XSwic2Nyb2xsLXB0IjpbeyJzY3JvbGwtcHQiOncoKX1dLCJzY3JvbGwtcHIiOlt7InNjcm9sbC1wciI6dygpfV0sInNjcm9sbC1wYiI6W3sic2Nyb2xsLXBiIjp3KCl9XSwic2Nyb2xsLXBsIjpbeyJzY3JvbGwtcGwiOncoKX1dLCJzbmFwLWFsaWduIjpbe3NuYXA6W2BzdGFydGAsYGVuZGAsYGNlbnRlcmAsYGFsaWduLW5vbmVgXX1dLCJzbmFwLXN0b3AiOlt7c25hcDpbYG5vcm1hbGAsYGFsd2F5c2BdfV0sInNuYXAtdHlwZSI6W3tzbmFwOltgbm9uZWAsYHhgLGB5YCxgYm90aGBdfV0sInNuYXAtc3RyaWN0bmVzcyI6W3tzbmFwOltgbWFuZGF0b3J5YCxgcHJveGltaXR5YF19XSx0b3VjaDpbe3RvdWNoOltgYXV0b2AsYG5vbmVgLGBtYW5pcHVsYXRpb25gXX1dLCJ0b3VjaC14IjpbeyJ0b3VjaC1wYW4iOltgeGAsYGxlZnRgLGByaWdodGBdfV0sInRvdWNoLXkiOlt7InRvdWNoLXBhbiI6W2B5YCxgdXBgLGBkb3duYF19XSwidG91Y2gtcHoiOltgdG91Y2gtcGluY2gtem9vbWBdLHNlbGVjdDpbe3NlbGVjdDpbYG5vbmVgLGB0ZXh0YCxgYWxsYCxgYXV0b2BdfV0sIndpbGwtY2hhbmdlIjpbeyJ3aWxsLWNoYW5nZSI6W2BhdXRvYCxgc2Nyb2xsYCxgY29udGVudHNgLGB0cmFuc2Zvcm1gLCQsUV19XSxmaWxsOlt7ZmlsbDpbYG5vbmVgLC4uLk4oKV19XSwic3Ryb2tlLXciOlt7c3Ryb2tlOltaLElmLGtmLEFmXX1dLHN0cm9rZTpbe3N0cm9rZTpbYG5vbmVgLC4uLk4oKV19XSwiZm9yY2VkLWNvbG9yLWFkanVzdCI6W3siZm9yY2VkLWNvbG9yLWFkanVzdCI6W2BhdXRvYCxgbm9uZWBdfV19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cHM6eyJjb250YWluZXItbmFtZWQiOltgY29udGFpbmVyLXR5cGVgXSxvdmVyZmxvdzpbYG92ZXJmbG93LXhgLGBvdmVyZmxvdy15YF0sb3ZlcnNjcm9sbDpbYG92ZXJzY3JvbGwteGAsYG92ZXJzY3JvbGwteWBdLGluc2V0OltgaW5zZXQteGAsYGluc2V0LXlgLGBpbnNldC1ic2AsYGluc2V0LWJlYCxgc3RhcnRgLGBlbmRgLGB0b3BgLGByaWdodGAsYGJvdHRvbWAsYGxlZnRgXSwiaW5zZXQteCI6W2ByaWdodGAsYGxlZnRgXSwiaW5zZXQteSI6W2B0b3BgLGBib3R0b21gXSxmbGV4OltgYmFzaXNgLGBncm93YCxgc2hyaW5rYF0sZ2FwOltgZ2FwLXhgLGBnYXAteWBdLHA6W2BweGAsYHB5YCxgcHNgLGBwZWAsYHBic2AsYHBiZWAsYHB0YCxgcHJgLGBwYmAsYHBsYF0scHg6W2BwcmAsYHBsYF0scHk6W2BwdGAsYHBiYF0sbTpbYG14YCxgbXlgLGBtc2AsYG1lYCxgbWJzYCxgbWJlYCxgbXRgLGBtcmAsYG1iYCxgbWxgXSxteDpbYG1yYCxgbWxgXSxteTpbYG10YCxgbWJgXSxzaXplOltgd2AsYGhgXSwiZm9udC1zaXplIjpbYGxlYWRpbmdgXSwiZnZuLW5vcm1hbCI6W2Bmdm4tb3JkaW5hbGAsYGZ2bi1zbGFzaGVkLXplcm9gLGBmdm4tZmlndXJlYCxgZnZuLXNwYWNpbmdgLGBmdm4tZnJhY3Rpb25gXSwiZnZuLW9yZGluYWwiOltgZnZuLW5vcm1hbGBdLCJmdm4tc2xhc2hlZC16ZXJvIjpbYGZ2bi1ub3JtYWxgXSwiZnZuLWZpZ3VyZSI6W2Bmdm4tbm9ybWFsYF0sImZ2bi1zcGFjaW5nIjpbYGZ2bi1ub3JtYWxgXSwiZnZuLWZyYWN0aW9uIjpbYGZ2bi1ub3JtYWxgXSwibGluZS1jbGFtcCI6W2BkaXNwbGF5YCxgb3ZlcmZsb3dgXSxyb3VuZGVkOltgcm91bmRlZC1zYCxgcm91bmRlZC1lYCxgcm91bmRlZC10YCxgcm91bmRlZC1yYCxgcm91bmRlZC1iYCxgcm91bmRlZC1sYCxgcm91bmRlZC1zc2AsYHJvdW5kZWQtc2VgLGByb3VuZGVkLWVlYCxgcm91bmRlZC1lc2AsYHJvdW5kZWQtdGxgLGByb3VuZGVkLXRyYCxgcm91bmRlZC1icmAsYHJvdW5kZWQtYmxgXSwicm91bmRlZC1zIjpbYHJvdW5kZWQtc3NgLGByb3VuZGVkLWVzYF0sInJvdW5kZWQtZSI6W2Byb3VuZGVkLXNlYCxgcm91bmRlZC1lZWBdLCJyb3VuZGVkLXQiOltgcm91bmRlZC10bGAsYHJvdW5kZWQtdHJgXSwicm91bmRlZC1yIjpbYHJvdW5kZWQtdHJgLGByb3VuZGVkLWJyYF0sInJvdW5kZWQtYiI6W2Byb3VuZGVkLWJyYCxgcm91bmRlZC1ibGBdLCJyb3VuZGVkLWwiOltgcm91bmRlZC10bGAsYHJvdW5kZWQtYmxgXSwiYm9yZGVyLXNwYWNpbmciOltgYm9yZGVyLXNwYWNpbmcteGAsYGJvcmRlci1zcGFjaW5nLXlgXSwiYm9yZGVyLXciOltgYm9yZGVyLXcteGAsYGJvcmRlci13LXlgLGBib3JkZXItdy1zYCxgYm9yZGVyLXctZWAsYGJvcmRlci13LWJzYCxgYm9yZGVyLXctYmVgLGBib3JkZXItdy10YCxgYm9yZGVyLXctcmAsYGJvcmRlci13LWJgLGBib3JkZXItdy1sYF0sImJvcmRlci13LXgiOltgYm9yZGVyLXctcmAsYGJvcmRlci13LWxgXSwiYm9yZGVyLXcteSI6W2Bib3JkZXItdy10YCxgYm9yZGVyLXctYmBdLCJib3JkZXItY29sb3IiOltgYm9yZGVyLWNvbG9yLXhgLGBib3JkZXItY29sb3IteWAsYGJvcmRlci1jb2xvci1zYCxgYm9yZGVyLWNvbG9yLWVgLGBib3JkZXItY29sb3ItYnNgLGBib3JkZXItY29sb3ItYmVgLGBib3JkZXItY29sb3ItdGAsYGJvcmRlci1jb2xvci1yYCxgYm9yZGVyLWNvbG9yLWJgLGBib3JkZXItY29sb3ItbGBdLCJib3JkZXItY29sb3IteCI6W2Bib3JkZXItY29sb3ItcmAsYGJvcmRlci1jb2xvci1sYF0sImJvcmRlci1jb2xvci15IjpbYGJvcmRlci1jb2xvci10YCxgYm9yZGVyLWNvbG9yLWJgXSx0cmFuc2xhdGU6W2B0cmFuc2xhdGUteGAsYHRyYW5zbGF0ZS15YCxgdHJhbnNsYXRlLW5vbmVgXSwidHJhbnNsYXRlLW5vbmUiOltgdHJhbnNsYXRlYCxgdHJhbnNsYXRlLXhgLGB0cmFuc2xhdGUteWAsYHRyYW5zbGF0ZS16YF0sInNjcm9sbC1tIjpbYHNjcm9sbC1teGAsYHNjcm9sbC1teWAsYHNjcm9sbC1tc2AsYHNjcm9sbC1tZWAsYHNjcm9sbC1tYnNgLGBzY3JvbGwtbWJlYCxgc2Nyb2xsLW10YCxgc2Nyb2xsLW1yYCxgc2Nyb2xsLW1iYCxgc2Nyb2xsLW1sYF0sInNjcm9sbC1teCI6W2BzY3JvbGwtbXJgLGBzY3JvbGwtbWxgXSwic2Nyb2xsLW15IjpbYHNjcm9sbC1tdGAsYHNjcm9sbC1tYmBdLCJzY3JvbGwtcCI6W2BzY3JvbGwtcHhgLGBzY3JvbGwtcHlgLGBzY3JvbGwtcHNgLGBzY3JvbGwtcGVgLGBzY3JvbGwtcGJzYCxgc2Nyb2xsLXBiZWAsYHNjcm9sbC1wdGAsYHNjcm9sbC1wcmAsYHNjcm9sbC1wYmAsYHNjcm9sbC1wbGBdLCJzY3JvbGwtcHgiOltgc2Nyb2xsLXByYCxgc2Nyb2xsLXBsYF0sInNjcm9sbC1weSI6W2BzY3JvbGwtcHRgLGBzY3JvbGwtcGJgXSx0b3VjaDpbYHRvdWNoLXhgLGB0b3VjaC15YCxgdG91Y2gtcHpgXSwidG91Y2gteCI6W2B0b3VjaGBdLCJ0b3VjaC15IjpbYHRvdWNoYF0sInRvdWNoLXB6IjpbYHRvdWNoYF19LGNvbmZsaWN0aW5nQ2xhc3NHcm91cE1vZGlmaWVyczp7ImZvbnQtc2l6ZSI6W2BsZWFkaW5nYF19LHBvc3RmaXhMb29rdXBDbGFzc0dyb3VwczpbYGNvbnRhaW5lci10eXBlYF0sb3JkZXJTZW5zaXRpdmVNb2RpZmllcnM6W2AqYCxgKipgLGBhZnRlcmAsYGJhY2tkcm9wYCxgYmVmb3JlYCxgZGV0YWlscy1jb250ZW50YCxgZmlsZWAsYGZpcnN0LWxldHRlcmAsYGZpcnN0LWxpbmVgLGBtYXJrZXJgLGBwbGFjZWhvbGRlcmAsYHNlbGVjdGlvbmBdfX0pO2Z1bmN0aW9uIGVwKC4uLmUpe3JldHVybiAkZihUZChlKSl9ZnVuY3Rpb24gdHAoZSx0KXtyZXR1cm4gd2UoKT8oVGUoZSx0KSwhMCk6ITF9ZnVuY3Rpb24gbnAoZSl7bGV0IHQ9ITEsbixyPUNlKCEwKTtyZXR1cm4oKC4uLmkpPT4odHx8PShuPXIucnVuKCgpPT5lKC4uLmkpKSwhMCksbikpfXZhciBycD10eXBlb2Ygd2luZG93PGB1YCYmdHlwZW9mIGRvY3VtZW50PGB1YDt0eXBlb2YgV29ya2VyR2xvYmFsU2NvcGU8YHVgJiZnbG9iYWxUaGlzIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGU7dmFyIGlwPWU9PmUhPT12b2lkIDAsYXA9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxvcD1lPT5hcC5jYWxsKGUpPT09YFtvYmplY3QgT2JqZWN0XWAsc3A9Y3AoKTtmdW5jdGlvbiBjcCgpe3ZhciBlLHQ7cmV0dXJuIHJwJiYhISgoZT13aW5kb3cpIT1udWxsJiYoZT1lLm5hdmlnYXRvcikhPW51bGwmJmUudXNlckFnZW50KSYmKC9pUCg/OmFkfGhvbmV8b2QpLy50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KXx8KCh0PXdpbmRvdyk9PW51bGx8fCh0PXQubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6dC5tYXhUb3VjaFBvaW50cyk+MiYmL2lQYWR8TWFjaW50b3NoLy50ZXN0KHdpbmRvdz8ubmF2aWdhdG9yLnVzZXJBZ2VudCkpfWZ1bmN0aW9uIGxwKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6W2VdfWZ1bmN0aW9uIHVwKGUpe3JldHVybiBlfHxZKCl9ZnVuY3Rpb24gZHAoZSl7aWYoIXJwKXJldHVybiBlO2xldCB0PTAsbixyLGk9KCk9PnstLXQsciYmdDw9MCYmKHIuc3RvcCgpLG49dm9pZCAwLHI9dm9pZCAwKX07cmV0dXJuKCguLi5hKT0+KHQrPTEscnx8KHI9Q2UoITApLG49ci5ydW4oKCk9PmUoLi4uYSkpKSx0cChpKSxuKSl9ZnVuY3Rpb24gZnAoZSl7cmV0dXJuIFJ0KEgoZSk/bmV3IFByb3h5KHt9LHtnZXQodCxuLHIpe3JldHVybiB0bihSZWZsZWN0LmdldChlLnZhbHVlLG4scikpfSxzZXQodCxuLHIpe3JldHVybiBIKGUudmFsdWVbbl0pJiYhSChyKT9lLnZhbHVlW25dLnZhbHVlPXI6ZS52YWx1ZVtuXT1yLCEwfSxkZWxldGVQcm9wZXJ0eSh0LG4pe3JldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGUudmFsdWUsbil9LGhhcyh0LG4pe3JldHVybiBSZWZsZWN0LmhhcyhlLnZhbHVlLG4pfSxvd25LZXlzKCl7cmV0dXJuIE9iamVjdC5rZXlzKGUudmFsdWUpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoKXtyZXR1cm57ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9fX0pOmUpfWZ1bmN0aW9uIHBwKGUpe3JldHVybiBmcChxcyhlKSl9ZnVuY3Rpb24gbXAoZSwuLi50KXtsZXQgbj10LmZsYXQoKSxyPW5bMF07cmV0dXJuIHBwKCgpPT5PYmplY3QuZnJvbUVudHJpZXModHlwZW9mIHI9PWBmdW5jdGlvbmA/T2JqZWN0LmVudHJpZXMoY24oZSkpLmZpbHRlcigoW2UsdF0pPT4hcihubih0KSxlKSk6T2JqZWN0LmVudHJpZXMoY24oZSkpLmZpbHRlcihlPT4hbi5pbmNsdWRlcyhlWzBdKSkpKX1mdW5jdGlvbiBocChlLHQ9MWU0KXtyZXR1cm4gc24oKG4scik9PntsZXQgaT1ubihlKSxhLG89KCk9PnNldFRpbWVvdXQoKCk9PntpPW5uKGUpLHIoKX0sbm4odCkpO3JldHVybiB0cCgoKT0+e2NsZWFyVGltZW91dChhKX0pLHtnZXQoKXtyZXR1cm4gbigpLGl9LHNldChlKXtpPWUscigpLGNsZWFyVGltZW91dChhKSxhPW8oKX19fSl9ZnVuY3Rpb24gZ3AoZSx0KXt1cCh0KSYmV2koZSx0KX1mdW5jdGlvbiBfcChlLHQsbil7cmV0dXJuIGhyKGUsdCx7Li4ubixpbW1lZGlhdGU6ITB9KX12YXIgdnA9cnA/d2luZG93OnZvaWQgMDtycCYmd2luZG93LmRvY3VtZW50LHJwJiZ3aW5kb3cubmF2aWdhdG9yLHJwJiZ3aW5kb3cubG9jYXRpb247ZnVuY3Rpb24geXAoZSl7bGV0IHQ9bm4oZSk7cmV0dXJuIHQ/LiRlbD8/dH1mdW5jdGlvbiBicCguLi5lKXtsZXQgdD0oZSx0LG4scik9PihlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpLCgpPT5lLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLHIpKSxuPXFzKCgpPT57bGV0IHQ9bHAobm4oZVswXSkpLmZpbHRlcihlPT5lIT1udWxsKTtyZXR1cm4gdC5ldmVyeShlPT50eXBlb2YgZSE9YHN0cmluZ2ApP3Q6dm9pZCAwfSk7cmV0dXJuIF9wKCgpPT5bbi52YWx1ZT8ubWFwKGU9PnlwKGUpKT8/W3ZwXS5maWx0ZXIoZT0+ZSE9bnVsbCksbHAobm4obi52YWx1ZT9lWzFdOmVbMF0pKSxscCh0bihuLnZhbHVlP2VbMl06ZVsxXSkpLG5uKG4udmFsdWU/ZVszXTplWzJdKV0sKFtlLG4scixpXSxhLG8pPT57aWYoIWU/Lmxlbmd0aHx8IW4/Lmxlbmd0aHx8IXI/Lmxlbmd0aClyZXR1cm47bGV0IHM9b3AoaSk/ey4uLml9OmksYz1lLmZsYXRNYXAoZT0+bi5mbGF0TWFwKG49PnIubWFwKHI9PnQoZSxuLHIscykpKSk7bygoKT0+e2MuZm9yRWFjaChlPT5lKCkpfSl9LHtmbHVzaDpgcG9zdGB9KX1mdW5jdGlvbiB4cCgpe2xldCBlPVp0KCExKSx0PVkoKTtyZXR1cm4gdCYmVmkoKCk9PntlLnZhbHVlPSEwfSx0KSxlfWZ1bmN0aW9uIFNwKGUpe2xldCB0PXhwKCk7cmV0dXJuIHFzKCgpPT4odC52YWx1ZSwhIWUoKSkpfWZ1bmN0aW9uIENwKGUpe3JldHVybiB0eXBlb2YgZT09YGZ1bmN0aW9uYD9lOnR5cGVvZiBlPT1gc3RyaW5nYD90PT50LmtleT09PWU6QXJyYXkuaXNBcnJheShlKT90PT5lLmluY2x1ZGVzKHQua2V5KTooKT0+ITB9ZnVuY3Rpb24gd3AoLi4uZSl7bGV0IHQsbixyPXt9O2UubGVuZ3RoPT09Mz8odD1lWzBdLG49ZVsxXSxyPWVbMl0pOmUubGVuZ3RoPT09Mj90eXBlb2YgZVsxXT09YG9iamVjdGA/KHQ9ITAsbj1lWzBdLHI9ZVsxXSk6KHQ9ZVswXSxuPWVbMV0pOih0PSEwLG49ZVswXSk7bGV0e3RhcmdldDppPXZwLGV2ZW50TmFtZTphPWBrZXlkb3duYCxwYXNzaXZlOm89ITEsZGVkdXBlOnM9ITF9PXIsYz1DcCh0KTtyZXR1cm4gYnAoaSxhLGU9PntlLnJlcGVhdCYmbm4ocyl8fGMoZSkmJm4oZSl9LG8pfWZ1bmN0aW9uIFRwKGUpe3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKX1mdW5jdGlvbiBFcChlLHQsbj17fSl7bGV0e3dpbmRvdzpyPXZwLC4uLml9PW4sYSxvPVNwKCgpPT5yJiZgUmVzaXplT2JzZXJ2ZXJgaW4gcikscz0oKT0+e2EmJj0oYS5kaXNjb25uZWN0KCksdm9pZCAwKX0sYz1ocihxcygoKT0+e2xldCB0PW5uKGUpO3JldHVybiBBcnJheS5pc0FycmF5KHQpP3QubWFwKGU9PnlwKGUpKTpbeXAodCldfSksZT0+e2lmKHMoKSxvLnZhbHVlJiZyKXthPW5ldyBSZXNpemVPYnNlcnZlcih0KTtmb3IobGV0IHQgb2YgZSl0JiZhLm9ic2VydmUodCxpKX19LHtpbW1lZGlhdGU6ITAsZmx1c2g6YHBvc3RgfSksbD0oKT0+e3MoKSxjKCl9O3JldHVybiB0cChsKSx7aXNTdXBwb3J0ZWQ6byxzdG9wOmx9fWZ1bmN0aW9uIERwKGUsdCxuLHI9e30pe3ZhciBpLGE7bGV0e2Nsb25lOm89ITEscGFzc2l2ZTpzPSExLGV2ZW50TmFtZTpjLGRlZXA6bD0hMSxkZWZhdWx0VmFsdWU6dSxzaG91bGRFbWl0OmR9PXIsZj1ZKCkscD1ufHxmPy5lbWl0fHwoZj09bnVsbHx8KGk9Zi4kZW1pdCk9PW51bGw/dm9pZCAwOmkuYmluZChmKSl8fChmPT1udWxsfHwoYT1mLnByb3h5KT09bnVsbHx8KGE9YS4kZW1pdCk9PW51bGw/dm9pZCAwOmEuYmluZChmPy5wcm94eSkpLG09Yzt0fHw9YG1vZGVsVmFsdWVgLG18fD1gdXBkYXRlOiR7dC50b1N0cmluZygpfWA7bGV0IGg9ZT0+bz90eXBlb2Ygbz09YGZ1bmN0aW9uYD9vKGUpOlRwKGUpOmUsZz0oKT0+aXAoZVt0XSk/aChlW3RdKTp1LF89ZT0+e2Q/ZChlKSYmcChtLGUpOnAobSxlKX07aWYocyl7bGV0IG49WHQoZygpKSxyPSExO3JldHVybiBocigoKT0+ZVt0XSxlPT57cnx8KHI9ITAsbi52YWx1ZT1oKGUpLFZuKCgpPT5yPSExKSl9KSxocihuLG49PnshciYmKG4hPT1lW3RdfHxsKSYmXyhuKX0se2RlZXA6bH0pLG59cmV0dXJuIHFzKHtnZXQoKXtyZXR1cm4gZygpfSxzZXQoZSl7XyhlKX19KX1mdW5jdGlvbiBPcChlKXtyZXR1cm4gZT9lLmZsYXRNYXAoZT0+ZS50eXBlPT09Rz9PcChlLmNoaWxkcmVuKTpbZV0pOltdfXZhciBrcD1Kcih7bmFtZTpgUHJpbWl0aXZlU2xvdGAsaW5oZXJpdEF0dHJzOiExLHNldHVwKGUse2F0dHJzOnQsc2xvdHM6bn0pe3JldHVybigpPT57aWYoIW4uZGVmYXVsdClyZXR1cm4gbnVsbDtsZXQgZT1PcChuLmRlZmF1bHQoKSkscj1lLmZpbmRJbmRleChlPT5lLnR5cGUhPT1LKTtpZihyPT09LTEpcmV0dXJuIGU7bGV0IGk9ZVtyXTtkZWxldGUgaS5wcm9wcz8ucmVmO2xldCBhPWkucHJvcHM/Q3ModCxpLnByb3BzKTp0LG89Z3Moey4uLmkscHJvcHM6e319LGEpO3JldHVybiBlLmxlbmd0aD09PTE/bzooZVtyXT1vLGUpfX19KSxBcD1bYGFyZWFgLGBpbWdgLGBpbnB1dGBdLGpwPUpyKHtuYW1lOmBQcmltaXRpdmVgLGluaGVyaXRBdHRyczohMSxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGFzOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0OmBkaXZgfX0sc2V0dXAoZSx7YXR0cnM6dCxzbG90czpufSl7bGV0IHI9ZS5hc0NoaWxkP2B0ZW1wbGF0ZWA6ZS5hcztyZXR1cm4gdHlwZW9mIHI9PWBzdHJpbmdgJiZBcC5pbmNsdWRlcyhyKT8oKT0+SnMocix0KTpyPT09YHRlbXBsYXRlYD8oKT0+SnMoa3AsdCx7ZGVmYXVsdDpuLmRlZmF1bHR9KTooKT0+SnMoZS5hcyx0LHtkZWZhdWx0Om4uZGVmYXVsdH0pfX0pLE1wPUpyKHtfX25hbWU6YEJ1dHRvbmAscHJvcHM6e3ZhcmlhbnQ6e30sc2l6ZTp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOntkZWZhdWx0OmBidXR0b25gfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4obixyKT0+KHRzKCksc3ModG4oanApLHsiZGF0YS1zbG90IjpgYnV0dG9uYCwiZGF0YS12YXJpYW50IjplLnZhcmlhbnQsImRhdGEtc2l6ZSI6ZS5zaXplLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsY2xhc3M6TCh0bihlcCkodG4oTnApKHt2YXJpYW50OmUudmFyaWFudCxzaXplOmUuc2l6ZX0pLHQuY2xhc3MpKX0se2RlZmF1bHQ6aXIoKCk9PltvYShuLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgZGF0YS12YXJpYW50YCxgZGF0YS1zaXplYCxgYXNgLGBhcy1jaGlsZGAsYGNsYXNzYF0pKX19KSxOcD1PZChgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIGFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUgZGFyazphcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlLzUwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1jbGlwLXBhZGRpbmcgdGV4dC1zbSBmb250LW1lZGl1bSBmb2N1cy12aXNpYmxlOnJpbmctMyBhcmlhLWludmFsaWQ6cmluZy0zIGFjdGl2ZTpub3QtYXJpYS1baGFzcG9wdXBdOnRyYW5zbGF0ZS15LXB4IFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTQgZ3JvdXAvYnV0dG9uIGlubGluZS1mbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCB0cmFuc2l0aW9uLWFsbCBvdXRsaW5lLW5vbmUgc2VsZWN0LW5vbmUgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLXByaW1hcnkvODBgLG91dGxpbmU6YGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZGFyazpiZy1pbnB1dC8zMCBkYXJrOmJvcmRlci1pbnB1dCBkYXJrOmhvdmVyOmJnLWlucHV0LzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRgLHNlY29uZGFyeTpgYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwIGFyaWEtZXhwYW5kZWQ6Ymctc2Vjb25kYXJ5IGFyaWEtZXhwYW5kZWQ6dGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZGAsZ2hvc3Q6YGhvdmVyOmJnLW11dGVkIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBkYXJrOmhvdmVyOmJnLW11dGVkLzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRgLGRlc3RydWN0aXZlOmBiZy1kZXN0cnVjdGl2ZS8xMCBob3ZlcjpiZy1kZXN0cnVjdGl2ZS8yMCBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvNDAgZGFyazpiZy1kZXN0cnVjdGl2ZS8yMCB0ZXh0LWRlc3RydWN0aXZlIGZvY3VzLXZpc2libGU6Ym9yZGVyLWRlc3RydWN0aXZlLzQwIGRhcms6aG92ZXI6YmctZGVzdHJ1Y3RpdmUvMzBgLGxpbms6YHRleHQtcHJpbWFyeSB1bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6dW5kZXJsaW5lYH0sc2l6ZTp7ZGVmYXVsdDpgaC04IGdhcC0xLjUgcHgtMi41IGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTIgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0yYCx4czpgaC02IGdhcC0xIHJvdW5kZWQtW21pbih2YXIoLS1yYWRpdXMtbWQpLDEwcHgpXSBweC0yIHRleHQteHMgaW4tZGF0YS1bc2xvdD1idXR0b24tZ3JvdXBdOnJvdW5kZWQtbGcgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMS41IGhhcy1kYXRhLVtpY29uPWlubGluZS1zdGFydF06cGwtMS41IFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTNgLHNtOmBoLTcgZ2FwLTEgcm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTJweCldIHB4LTIuNSB0ZXh0LVswLjhyZW1dIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWxnIGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTEuNSBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTEuNSBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS0zLjVgLGxnOmBoLTkgZ2FwLTEuNSBweC0yLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMiBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTJgLGljb246YHNpemUtOGAsImljb24teHMiOmBzaXplLTYgcm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTBweCldIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWxnIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTNgLCJpY29uLXNtIjpgc2l6ZS03IHJvdW5kZWQtW21pbih2YXIoLS1yYWRpdXMtbWQpLDEycHgpXSBpbi1kYXRhLVtzbG90PWJ1dHRvbi1ncm91cF06cm91bmRlZC1sZ2AsImljb24tbGciOmBzaXplLTlgfX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OmBkZWZhdWx0YCxzaXplOmBkZWZhdWx0YH19KSxQcD1bYGRhdGEtc2l6ZWBdLEZwPUpyKHtfX25hbWU6YENhcmRgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxzaXplOntkZWZhdWx0OmBkZWZhdWx0YH19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKG4scik9Pih0cygpLG9zKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZGAsImRhdGEtc2l6ZSI6ZS5zaXplLGNsYXNzOkwodG4oZXApKGByaW5nLWZvcmVncm91bmQvMTAgYmctY2FyZCB0ZXh0LWNhcmQtZm9yZWdyb3VuZCBnYXAtNCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC14bCBweS00IHRleHQtc20gcmluZy0xIGhhcy1kYXRhLVtzbG90PWNhcmQtZm9vdGVyXTpwYi0wIGhhcy1bPmltZzpmaXJzdC1jaGlsZF06cHQtMCBkYXRhLVtzaXplPXNtXTpnYXAtMyBkYXRhLVtzaXplPXNtXTpweS0zIGRhdGEtW3NpemU9c21dOmhhcy1kYXRhLVtzbG90PWNhcmQtZm9vdGVyXTpwYi0wICo6W2ltZzpmaXJzdC1jaGlsZF06cm91bmRlZC10LXhsICo6W2ltZzpsYXN0LWNoaWxkXTpyb3VuZGVkLWIteGwgZ3JvdXAvY2FyZCBmbGV4IGZsZXgtY29sYCx0LmNsYXNzKSl9LFtvYShuLiRzbG90cyxgZGVmYXVsdGApXSwxMCxQcCkpfX0pLElwPUpyKHtfX25hbWU6YENhcmRDb250ZW50YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih0cygpLG9zKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZC1jb250ZW50YCxjbGFzczpMKHRuKGVwKShgcHgtNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOnB4LTNgLHQuY2xhc3MpKX0sW29hKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxMcD1Kcih7X19uYW1lOmBDYXJkSGVhZGVyYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9Pih0cygpLG9zKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZC1oZWFkZXJgLGNsYXNzOkwodG4oZXApKGBnYXAtMSByb3VuZGVkLXQteGwgcHgtNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOnB4LTMgWy5ib3JkZXItYl06cGItNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOlsuYm9yZGVyLWJdOnBiLTMgZ3JvdXAvY2FyZC1oZWFkZXIgQGNvbnRhaW5lci9jYXJkLWhlYWRlciBncmlkIGF1dG8tcm93cy1taW4gaXRlbXMtc3RhcnQgaGFzLWRhdGEtW3Nsb3Q9Y2FyZC1hY3Rpb25dOmdyaWQtY29scy1bMWZyX2F1dG9dIGhhcy1kYXRhLVtzbG90PWNhcmQtZGVzY3JpcHRpb25dOmdyaWQtcm93cy1bYXV0b19hdXRvXWAsdC5jbGFzcykpfSxbb2EoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLFJwPUpyKHtfX25hbWU6YENhcmRUaXRsZWAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLG4pPT4odHMoKSxvcyhgZGl2YCx7ImRhdGEtc2xvdCI6YGNhcmQtdGl0bGVgLGNsYXNzOkwodG4oZXApKGB0ZXh0LWJhc2UgbGVhZGluZy1zbnVnIGZvbnQtbWVkaXVtIGdyb3VwLWRhdGEtW3NpemU9c21dL2NhcmQ6dGV4dC1zbSBmb250LWhlYWRpbmdgLHQuY2xhc3MpKX0sW29hKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSx6cD1gbGxtZ3dBZG1pbktleWA7ZnVuY3Rpb24gQnAoKXt0cnl7cmV0dXJuIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oenApPz9gYH1jYXRjaHtyZXR1cm5gYH19ZnVuY3Rpb24gVnAoZSl7dHJ5e3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oenAsZSl9Y2F0Y2h7fX1mdW5jdGlvbiBIcCgpe3RyeXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHpwKX1jYXRjaHt9fXZhciBVcD1HdShgYXV0aGAse3N0YXRlOigpPT4oe2FwaUtleTpCcCgpLGVycm9yOmBgfSksZ2V0dGVyczp7aXNBdXRoZW50aWNhdGVkOmU9PmUuYXBpS2V5IT09YGB9LGFjdGlvbnM6e3N1Ym1pdChlKXtlJiYodGhpcy5hcGlLZXk9ZSx0aGlzLmVycm9yPWBgLFZwKGUpKX0scmVqZWN0KGUpe3RoaXMuYXBpS2V5PWBgLHRoaXMuZXJyb3I9ZSxIcCgpfX19KSxXcD1jbGFzcyBleHRlbmRzIEVycm9ye3N0YXR1cztjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUpLHRoaXMubmFtZT1gQWRtaW5BcGlFcnJvcmAsdGhpcy5zdGF0dXM9dH19O2FzeW5jIGZ1bmN0aW9uIEdwKGUsdCl7bGV0IG49YCR7dH06IEhUVFAgJHtlLnN0YXR1c31gO3RyeXtyZXR1cm4oYXdhaXQgZS5qc29uKCkpLmVycm9yPy5tZXNzYWdlfHxufWNhdGNoe3JldHVybiBufX1hc3luYyBmdW5jdGlvbiBLcChlKXtsZXQgdD1VcCgpLG49dC5hcGlLZXkscj1hd2FpdCBmZXRjaChlLHtjcmVkZW50aWFsczpgc2FtZS1vcmlnaW5gLGhlYWRlcnM6bj97IngtYXBpLWtleSI6bn06e319KTtpZighci5vayl7bGV0IGk9YXdhaXQgR3AocixlKTt0aHJvdyhyLnN0YXR1cz09PTQwMXx8ci5zdGF0dXM9PT00MDMpJiZ0LmFwaUtleT09PW4mJnQucmVqZWN0KGBpbnZhbGlkIGtleSwgb3Igbm90IGFuIGFkbWluYCksbmV3IFdwKGksci5zdGF0dXMpfXJldHVybiBhd2FpdCByLmpzb24oKX1mdW5jdGlvbiBxcChlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpTdHJpbmcoZSl9ZnVuY3Rpb24gSnAoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBXcCYmKGUuc3RhdHVzPT09NDAxfHxlLnN0YXR1cz09PTQwMyl9ZnVuY3Rpb24gWXAoZSl7cmV0dXJuIGV8fCh0eXBlb2YgZG9jdW1lbnQ+YHVgP3ZvaWQgMDpkb2N1bWVudCl9ZnVuY3Rpb24gWHAoe2ludGVydmFsTXM6ZSx0aWNrOnQsZG9jOm59KXtsZXQgcj1ZcChuKSxpLGE9ITE7ZnVuY3Rpb24gbygpe2khPT12b2lkIDAmJihjbGVhckludGVydmFsKGkpLGk9dm9pZCAwKX1mdW5jdGlvbiBzKCl7bygpLGk9c2V0SW50ZXJ2YWwodCxlKX1mdW5jdGlvbiBjKCl7ciYmKHIuaGlkZGVuP28oKToodCgpLHMoKSkpfWZ1bmN0aW9uIGwoKXthfHwoYT0hMCxyPy5oaWRkZW58fCh0KCkscygpKSxyPy5hZGRFdmVudExpc3RlbmVyKGB2aXNpYmlsaXR5Y2hhbmdlYCxjKSl9ZnVuY3Rpb24gdSgpe2E9ITEsbygpLHI/LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHZpc2liaWxpdHljaGFuZ2VgLGMpfXJldHVybntzdGFydDpsLHN0b3A6dX19dmFyIFpwPXtzdWNjZXNzOjNlMyxpbmZvOjNlMyxlcnJvcjo2ZTN9LFFwPUd1KGB0b2FzdHNgLHtzdGF0ZTooKT0+KHt0b2FzdHM6W10sbmV4dElkOjEsdGltZXJzOnt9fSksYWN0aW9uczp7cHVzaCh7a2luZDplLG1lc3NhZ2U6dCx0aW1lb3V0TXM6bn0pe2xldCByPXRoaXMudG9hc3RzW3RoaXMudG9hc3RzLmxlbmd0aC0xXTtpZihyJiZyLmtpbmQ9PT1lJiZyLm1lc3NhZ2U9PT10KXJldHVybjtsZXQgaT10aGlzLm5leHRJZCsrLGE9e2lkOmksa2luZDplLG1lc3NhZ2U6dCx0aW1lb3V0TXM6bj8/WnBbZV19O2lmKHRoaXMudG9hc3RzLnB1c2goYSksdGhpcy50b2FzdHMubGVuZ3RoPjMpe2xldCBlPXRoaXMudG9hc3RzLnNoaWZ0KCk7ZSYmdGhpcy5jbGVhclRpbWVyKGUuaWQpfXRoaXMudGltZXJzW2ldPXNldFRpbWVvdXQoKCk9PnRoaXMuZGlzbWlzcyhpKSxhLnRpbWVvdXRNcyl9LGRpc21pc3MoZSl7dGhpcy5jbGVhclRpbWVyKGUpLHRoaXMudG9hc3RzPXRoaXMudG9hc3RzLmZpbHRlcih0PT50LmlkIT09ZSl9LGNsZWFyVGltZXIoZSl7bGV0IHQ9dGhpcy50aW1lcnNbZV07dCE9PXZvaWQgMCYmKGNsZWFyVGltZW91dCh0KSxkZWxldGUgdGhpcy50aW1lcnNbZV0pfX19KSwkcD01ZTMsZW09R3UoYGRhc2hib2FyZGAse3N0YXRlOigpPT4oe292ZXJ2aWV3Om51bGwsdXNhZ2U6bnVsbCx0YXJnZXRzOm51bGwsbGFzdFVwZGF0ZWQ6bnVsbCxlcnJvcjpgYCxwb2xsZXI6dm9pZCAwLHJlZnJlc2hpbmc6ITEsdG9hc3RlZEZvckZhaWx1cmU6ITF9KSxhY3Rpb25zOnthc3luYyByZWZyZXNoKCl7aWYoVXAoKS5pc0F1dGhlbnRpY2F0ZWQmJiF0aGlzLnJlZnJlc2hpbmcpe3RoaXMucmVmcmVzaGluZz0hMDt0cnl7YXdhaXQgdGhpcy5kb1JlZnJlc2goKX1maW5hbGx5e3RoaXMucmVmcmVzaGluZz0hMX19fSxhc3luYyBkb1JlZnJlc2goKXtsZXQgZT10aGlzLm92ZXJ2aWV3IT09bnVsbHx8dGhpcy51c2FnZSE9PW51bGx8fHRoaXMudGFyZ2V0cyE9PW51bGwsW3QsbixyXT1hd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoW0twKGAvYWRtaW4vYXBpL292ZXJ2aWV3YCksS3AoYC9hZG1pbi9hcGkvdXNhZ2VgKSxLcChgL2FkbWluL2FwaS90YXJnZXRzYCldKTt0LnN0YXR1cz09PWBmdWxmaWxsZWRgJiYodGhpcy5vdmVydmlldz10LnZhbHVlKSxuLnN0YXR1cz09PWBmdWxmaWxsZWRgJiYodGhpcy51c2FnZT1uLnZhbHVlKSxyLnN0YXR1cz09PWBmdWxmaWxsZWRgJiYodGhpcy50YXJnZXRzPXIudmFsdWUpO2xldCBpPVtdO2lmKHQuc3RhdHVzPT09YHJlamVjdGVkYCYmaS5wdXNoKHtsYWJlbDpgb3ZlcnZpZXdgLHJlYXNvbjp0LnJlYXNvbn0pLG4uc3RhdHVzPT09YHJlamVjdGVkYCYmaS5wdXNoKHtsYWJlbDpgdXNhZ2VgLHJlYXNvbjpuLnJlYXNvbn0pLHIuc3RhdHVzPT09YHJlamVjdGVkYCYmaS5wdXNoKHtsYWJlbDpgdGFyZ2V0c2AscmVhc29uOnIucmVhc29ufSksaS5sZW5ndGg9PT0wKXt0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlLHRoaXMuZXJyb3I9YGAsdGhpcy50b2FzdGVkRm9yRmFpbHVyZT0hMTtyZXR1cm59aS5zb21lKCh7cmVhc29uOmV9KT0+SnAoZSkpfHwoaS5sZW5ndGg8MyYmKHRoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUpLHRoaXMuZXJyb3I9aS5tYXAoKHtsYWJlbDplLHJlYXNvbjp0fSk9PmAke2V9OiAke3FwKHQpfWApLmpvaW4oYDsgYCksZSYmIXRoaXMudG9hc3RlZEZvckZhaWx1cmUmJlFwKCkucHVzaCh7a2luZDpgZXJyb3JgLG1lc3NhZ2U6YERhc2hib2FyZCByZWZyZXNoIGZhaWxlZDogJHt0aGlzLmVycm9yfWB9KSx0aGlzLnRvYXN0ZWRGb3JGYWlsdXJlPSEwKX0sc3RhcnRQb2xsaW5nKCl7dGhpcy5wb2xsZXJ8fCh0aGlzLnBvbGxlcj1YcCh7aW50ZXJ2YWxNczokcCx0aWNrOigpPT52b2lkIHRoaXMucmVmcmVzaCgpfSksdGhpcy5wb2xsZXIuc3RhcnQoKSl9fX0pLHRtPVtgaG9tZWAsYHNwZW5kYCxgY29uc3VtZXJzYCxgbW9kZWxzYCxgcmVsaWFiaWxpdHlgLGBjb25maWdgLGB0YXJnZXRzYF0sbm09YGhvbWVgLHJtPVt7aWQ6YGhvbWVgLGxhYmVsOmBIb21lYCxpY29uOmlkfSx7aWQ6YHNwZW5kYCxsYWJlbDpgU3BlbmRgLGljb246eGR9LHtpZDpgY29uc3VtZXJzYCxsYWJlbDpgQ29uc3VtZXJzYCxpY29uOiR1fSx7aWQ6YG1vZGVsc2AsbGFiZWw6YE1vZGVsc2AsaWNvbjpsZH0se2lkOmByZWxpYWJpbGl0eWAsbGFiZWw6YFJlbGlhYmlsaXR5YCxpY29uOmVkfSx7aWQ6YGNvbmZpZ2AsbGFiZWw6YENvbmZpZ2AsaWNvbjphZH0se2lkOmB0YXJnZXRzYCxsYWJlbDpgTUNQICYgQWdlbnRzYCxpY29uOmRkfV07ZnVuY3Rpb24gaW0oZSl7cmV0dXJuIHRtLmluY2x1ZGVzKGUpfXZhciBhbT1bYDI0aGAsYDQ4aGAsYDdkYCxgMTRkYCxgMzBkYCxgM21vYCxgNm1vYCxgMTJtb2BdLG9tPXsiMjRoIjp7d2luZG93OmBob3VyYCxzcGFuOjI0fSwiNDhoIjp7d2luZG93OmBob3VyYCxzcGFuOjQ4fSwiN2QiOnt3aW5kb3c6YGRheWAsc3Bhbjo3fSwiMTRkIjp7d2luZG93OmBkYXlgLHNwYW46MTR9LCIzMGQiOnt3aW5kb3c6YGRheWAsc3BhbjozMH0sIjNtbyI6e3dpbmRvdzpgbW9udGhgLHNwYW46M30sIjZtbyI6e3dpbmRvdzpgbW9udGhgLHNwYW46Nn0sIjEybW8iOnt3aW5kb3c6YG1vbnRoYCxzcGFuOjEyfX0sc209e2hvdXI6NDgsZGF5OjM1LG1vbnRoOjEzfSxjbT1bYG5vbmVgLGBwcmV2YF0sbG09YG5vbmVgO2Z1bmN0aW9uIHVtKGUpe2xldHt3aW5kb3c6dCxzcGFuOm59PW9tW2VdLHI9c21bdF07cmV0dXJuIDIqbj5yP3thdmFpbGFibGU6ITEsb2Zmc2V0Om4scmVhc29uOmByZXRlbnRpb24gbGltaXRgfTp7YXZhaWxhYmxlOiEwLG9mZnNldDpufX1mdW5jdGlvbiBkbShlLHQpe3JldHVybiBlPT09YG1vbnRoYD97d2luZG93OmBtb250aGAsc3Bhbjp0fTplPT09YGRheWA/e3dpbmRvdzpgZGF5YCxzcGFuOnR9Ont3aW5kb3c6YGRheWAsc3Bhbjo3fX1mdW5jdGlvbiBmbShlLHQpe3JldHVybiBlPT09YGhvdXJgP2BTaG93aW5nIGxhc3QgJHtkbShlLHQpLnNwYW59IGRheXMg4oCUIHBlci1ob3VyIGRhdGEgaXMgbm90IGtlcHQgZm9yIHRoaXMgdmlldy5gOm51bGx9ZnVuY3Rpb24gcG0oZSl7cmV0dXJuIGFtLmluY2x1ZGVzKGUpfWZ1bmN0aW9uIG1tKGUpe3JldHVybiBjbS5pbmNsdWRlcyhlKX1mdW5jdGlvbiBobShlKXtsZXQgdD1uZXcgVVJMU2VhcmNoUGFyYW1zO2ZvcihsZXQgbiBvZiBlLnNjb3BlKXQuYXBwZW5kKGBzY29wZWAsbik7cmV0dXJuIHQuc2V0KGBtZXRyaWNgLGUubWV0cmljKSx0LnNldChgd2luZG93YCxlLndpbmRvdyksdC5zZXQoYHNwYW5gLFN0cmluZyhlLnNwYW4pKSxlLm9mZnNldCYmdC5zZXQoYG9mZnNldGAsU3RyaW5nKGUub2Zmc2V0KSksYC9hZG1pbi9hcGkvdXNhZ2Uvc2VyaWVzPyR7dC50b1N0cmluZygpfWB9ZnVuY3Rpb24gZ20oZSl7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztyZXR1cm4gdC5zZXQoYGtpbmRgLGUua2luZCksZS53aW5kb3cmJnQuc2V0KGB3aW5kb3dgLGUud2luZG93KSxlLnNwYW4hPT12b2lkIDAmJnQuc2V0KGBzcGFuYCxTdHJpbmcoZS5zcGFuKSksZS5vZmZzZXQmJnQuc2V0KGBvZmZzZXRgLFN0cmluZyhlLm9mZnNldCkpLGUubWV0cmljcyYmZS5tZXRyaWNzLmxlbmd0aD4wJiZ0LnNldChgbWV0cmljc2AsZS5tZXRyaWNzLmpvaW4oYCxgKSksZS5saW1pdCE9PXZvaWQgMCYmdC5zZXQoYGxpbWl0YCxTdHJpbmcoZS5saW1pdCkpLGUuZ3JvdXAmJnQuc2V0KGBncm91cGAsZS5ncm91cCksZS51c2VyJiZ0LnNldChgdXNlcmAsZS51c2VyKSxlLm1vZGVsJiZ0LnNldChgbW9kZWxgLGUubW9kZWwpLGUudGFyZ2V0JiZ0LnNldChgdGFyZ2V0YCxlLnRhcmdldCksYC9hZG1pbi9hcGkvdXNhZ2UvdG90YWxzPyR7dC50b1N0cmluZygpfWB9dmFyIF9tPUd1KGBuYXZgLHtzdGF0ZTooKT0+KHtwYWdlOm5tLHBhcmFtczp7fX0pLGFjdGlvbnM6e2dvVG8oZSx0PXt9KXt0aGlzLnBhZ2U9ZSx0aGlzLnBhcmFtcz10fX19KSx2bT1Kcih7X19uYW1lOmBTa2VsZXRvbmAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLG4pPT4odHMoKSxvcyhgZGl2YCx7ImRhdGEtc2xvdCI6YHNrZWxldG9uYCxjbGFzczpMKHRuKGVwKShgYW5pbWF0ZS1wdWxzZSByb3VuZGVkLW1kIGJnLW11dGVkIG1vdGlvbi1yZWR1Y2U6YW5pbWF0ZS1ub25lYCx0LmNsYXNzKSl9LG51bGwsMikpfX0pO2V4cG9ydHt1ZCBhcyAkLEppIGFzICRuLFd0IGFzICRyLEJvIGFzICR0LGtwIGFzIEEsSnMgYXMgQW4sUXMgYXMgQXIsZGMgYXMgQXQsZHAgYXMgQixCcyBhcyBCbixYcyBhcyBCcixIbCBhcyBCdCxVcCBhcyBDLEYgYXMgQ2ksX2EgYXMgQ24sU2EgYXMgQ3IsdmwgYXMgQ3QsRnAgYXMgRCxZIGFzIERuLHhhIGFzIERyLGdsIGFzIER0LElwIGFzIEUsdGMgYXMgRW4sZHIgYXMgRXIsaGwgYXMgRXQsYnAgYXMgRixDaSBhcyBGbixtciBhcyBGcix5bCBhcyBGdCxncCBhcyBHLFZuIGFzIEduLGduIGFzIEdyLFZyIGFzIEd0LHNwIGFzIEgsVGEgYXMgSG4sU2UgYXMgSHIsRmMgYXMgSHQseHAgYXMgSSxTaSBhcyBJbixPYSBhcyBJcixibCBhcyBJdCxnZCBhcyBKLFdpIGFzIEpuLENlIGFzIEpyLE9uIGFzIEp0LGVwIGFzIEssTWkgYXMgS24sc24gYXMgS3IsTHIgYXMgS3QsRXAgYXMgTCxZcyBhcyBMbixpciBhcyBMcix6bCBhcyBMdCx2cCBhcyBNLGxyIGFzIE1uLGhyIGFzIE1yLG91IGFzIE10LHdwIGFzIE4sYmkgYXMgTm4sZnIgYXMgTnIseGwgYXMgTnQsTXAgYXMgTyxxciBhcyBPbixaciBhcyBPcixzdSBhcyBPdCx5cCBhcyBQLHdpIGFzIFBuLHByIGFzIFByLHpjIGFzIFB0LHJkIGFzIFEsVmkgYXMgUW4sVXQgYXMgUXIsUW8gYXMgUXQsRHAgYXMgUixjciBhcyBSbixiYSBhcyBScixLbCBhcyBSdCxxcCBhcyBTLHVlIGFzIFNpLHlhIGFzIFNuLHVzIGFzIFNyLEVsIGFzIFN0LExwIGFzIFQsbmUgYXMgVGksdmEgYXMgVG4sSmEgYXMgVHIsbHUgYXMgVHQsbXAgYXMgVSxFYSBhcyBVbixEZSBhcyBVcixldSBhcyBVdCxycCBhcyBWLGNzIGFzIFZuLHJyIGFzIFZyLFJsIGFzIFZ0LGhwIGFzIFcsQ3MgYXMgV24saG4gYXMgV3IsUWwgYXMgV3QsdmQgYXMgWCxOaSBhcyBYbixibiBhcyBYcixHIGFzIFh0LGhkIGFzIFksSGkgYXMgWW4sd2UgYXMgWXIsZWMgYXMgWXQsYmQgYXMgWixZaSBhcyBabixLdCBhcyBacixBaSBhcyBadCxRcCBhcyBfLGVuIGFzIF9pLHEgYXMgX24sbmMgYXMgX3Isc2QgYXMgX3Qsb20gYXMgYSxhbiBhcyBhaSxncyBhcyBhbixuciBhcyBhcix0ZCBhcyBhdCxLcCBhcyBiLEEgYXMgYmksaGEgYXMgYm4scmMgYXMgYnIsS3UgYXMgYnQsZG0gYXMgYyxYdCBhcyBjaSxzcyBhcyBjbixHbiBhcyBjcix5ZCBhcyBjdCxobSBhcyBkLFp0IGFzIGRpLE9vIGFzIGRuLG9hIGFzIGRyLEp1IGFzIGR0LEggYXMgZWksQXIgYXMgZW4scWkgYXMgZXIsUXUgYXMgZXQsZ20gYXMgZixWZSBhcyBmaSxEYSBhcyBmbixRaSBhcyBmcixxdSBhcyBmdCxlbSBhcyBnLG5uIGFzIGdpLF9zIGFzIGduLGlzIGFzIGdyLG1kIGFzIGd0LGltIGFzIGgsY24gYXMgaGksdnMgYXMgaG4sVXIgYXMgaHIsWXUgYXMgaHQsYW0gYXMgaSx4biBhcyBpaSxBbiBhcyBpbix0cyBhcyBpcixTZCBhcyBpdCxPcCBhcyBqLE1uIGFzIGpuLCRzIGFzIGpyLGRsIGFzIGp0LGpwIGFzIGssaHMgYXMga24sRnIgYXMga3IscHUgYXMga3QsbW0gYXMgbCx6dCBhcyBsaSx5cyBhcyBsbix6cyBhcyBscixwZCBhcyBsdCxybSBhcyBtLGRuIGFzIG1pLGFhIGFzIG1uLGVhIGFzIG1yLENkIGFzIG10LF9tIGFzIG4scXQgYXMgbmksRG4gYXMgbm4sR2kgYXMgbnIsY2QgYXMgbnQsdW0gYXMgbyxSdCBhcyBvaSxxcyBhcyBvbixzciBhcyBvcixfZCBhcyBvdCxubSBhcyBwLFYgYXMgcGksRG8gYXMgcG4sdGEgYXMgcHIsb2QgYXMgcHQsT2QgYXMgcSxCaSBhcyBxbixCZSBhcyBxcixLIGFzIHF0LGxtIGFzIHIsVGUgYXMgcmksam4gYXMgcm4sVWkgYXMgcnIsbmQgYXMgcnQsZm0gYXMgcyxCdCBhcyBzaSxwcyBhcyBzbix0ciBhcyBzcixYdSBhcyBzdCx2bSBhcyB0LEd0IGFzIHRpLFpvIGFzIHRuLEtpIGFzIHRyLFp1IGFzIHR0LHBtIGFzIHUsVnQgYXMgdWksb3MgYXMgdW4saWEgYXMgdXIsZmQgYXMgdXQsWHAgYXMgdix0biBhcyB2aSxEaSBhcyB2bixLciBhcyB2cixqdSBhcyB2dCxScCBhcyB3LHZlIGFzIHdpLG1hIGFzIHduLFlyIGFzIHdyLGN1IGFzIHd0LEpwIGFzIHgsTCBhcyB4aSxnYSBhcyB4bixjYSBhcyB4cixfYyBhcyB4dCxXcCBhcyB5LE8gYXMgeWksSnIgYXMgeW4sdXIgYXMgeXIsR3UgYXMgeXQsbnAgYXMgeixacyBhcyB6bixhciBhcyB6cixWbCBhcyB6dH07",
),
},
"SkeletonChart-1Y_5s9f0.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e19uIGFzIGUsaXIgYXMgdCx0IGFzIG4sdW4gYXMgcix2aSBhcyBpLHluIGFzIGF9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjt2YXIgbz17Y2xhc3M6YGgtNzIgdy1mdWxsYH0scz1hKHtfX25hbWU6YFNrZWxldG9uQ2hhcnRgLHNldHVwKGEpe3JldHVybihhLHMpPT4odCgpLHIoYGRpdmAsbyxbZShpKG4pLHtjbGFzczpgaC1mdWxsIHctZnVsbGB9KV0pKX19KTtleHBvcnR7cyBhcyB0fTs=",
),
},
"SpendPage-CN4owVU0.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsQyBhcyB0LEQgYXMgbixFIGFzIHIsTHIgYXMgaSxNciBhcyBhLFFuIGFzIG8sUyBhcyBzLFQgYXMgYyxYdCBhcyBsLF9uIGFzIHUsYiBhcyBkLGMgYXMgZixjaSBhcyBwLGNuIGFzIG0sZCBhcyBoLGV0IGFzIGcsZiBhcyBfLGcgYXMgdixnbiBhcyB5LGlyIGFzIGIsbG4gYXMgeCxuIGFzIFMsbnIgYXMgZWUsb24gYXMgQyxzbiBhcyB3LHVuIGFzIFQsdXIgYXMgRSx2IGFzIEQsdmkgYXMgTyx3IGFzIGssd2kgYXMgQSx4IGFzIGoseSBhcyBNLHluIGFzIE4seXQgYXMgdGV9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7biBhcyBuZSxyIGFzIHJlLHQgYXMgaWV9ZnJvbSIuL3RhYnMtQ3VoNkZRMGouanMiO2ltcG9ydHtsIGFzIFAsbiBhcyBGLHQgYXMgSSx2IGFzIEx9ZnJvbSIuL2luZGV4LTg4Q1RSTkhQLmpzIjtpbXBvcnR7dCBhcyBSfWZyb20iLi9FcnJvclN0YXRlLURESk9LSmx6LmpzIjtpbXBvcnR7UyBhcyBhZSxhIGFzIG9lLGIgYXMgc2UsZiBhcyBjZSxpIGFzIHosayBhcyBCLG8gYXMgVixwIGFzIEgscyBhcyBVLHQgYXMgVyx4IGFzIEd9ZnJvbSIuL2JhZGdlLUJKTGctUjNNLmpzIjtpbXBvcnR7aSBhcyBLLG4gYXMgcSxvIGFzIGxlLHIgYXMgdWV9ZnJvbSIuL2NvbHVtbnMtQ29lY25mNzQuanMiO2ltcG9ydHthIGFzIGRlLGMgYXMgSixpIGFzIGZlLG4gYXMgcGUsbyBhcyBZLHIgYXMgbWUscyBhcyBoZSx0IGFzIGdlfWZyb20iLi9idXJuZG93bi1lR2NhLWVsYy5qcyI7aW1wb3J0e24gYXMgX2UsdCBhcyB2ZX1mcm9tIi4vVHJ5TG9uZ2VyUmFuZ2VCdXR0b24tQmgxOXlpdjguanMiO2ltcG9ydHt0IGFzIHllfWZyb20iLi9Mb2FkU3RhdGVWaWV3LUJFYnNleDdZLmpzIjtpbXBvcnR7dCBhcyBiZX1mcm9tIi4vRW50aXR5TGluay1CUjZwbGFXVi5qcyI7aW1wb3J0e24gYXMgeGUsdCBhcyBTZX1mcm9tIi4vQ2hhcnRDYXJkLUNBQ1NJWDFmLmpzIjtpbXBvcnR7dCBhcyBDZX1mcm9tIi4vQ2xhbXBlZFJhbmdlTm90aWNlLUNoX0hxeUJPLmpzIjtpbXBvcnR7dCBhcyB3ZX1mcm9tIi4vU3RhdERpc2FibGVkQWxlcnQtQkp0SFJYd0UuanMiO2ltcG9ydHt0IGFzIFRlfWZyb20iLi9jYXRhbG9nLUM5NU5UYVh0LmpzIjtpbXBvcnR7YSBhcyBYLGMgYXMgRWUsaSBhcyBEZSxsIGFzIE9lLG8gYXMgWixyIGFzIGtlLHMgYXMgQWUsdCBhcyBqZX1mcm9tIi4vc2VyaWVzLURac3VBWEhJLmpzIjtpbXBvcnR7biBhcyBNZSx0IGFzIE5lfWZyb20iLi9jaGFydC1wYWxldHRlLWhtNFpJa0FYLmpzIjt2YXIgUGU9W2Btb2RlbGAsYHByb3ZpZGVyYCxgZ3JvdXBgXTtmdW5jdGlvbiBGZShlKXtyZXR1cm4gUGUuaW5jbHVkZXMoZSl9dmFyIEllPVtgY29zdGAsYHJlcWAsYHRva2luYCxgdG9rb3V0YF0sUT17Y29zdDpgQ29zdGAscmVxOmBSZXF1ZXN0c2AsdG9raW46YFRva2VucyBpbmAsdG9rb3V0OmBUb2tlbnMgb3V0YH07ZnVuY3Rpb24gTGUoZSl7cmV0dXJuIEllLmluY2x1ZGVzKGUpfXZhciBSZT0xMDAsJD0xMDAsemU9NmU0LEJlPXRlKGBzcGVuZGAse3N0YXRlOigpPT4oe2J5OmBtb2RlbGAsbWV0cmljOmBjb3N0YCxkcmlsbDpgYCxidWNrZXRzOltdLGJyZWFrZG93bjpbXSxvdGhlclBvaW50czpudWxsLHRvdGFsUG9pbnRzOltdLGNvbXBhcmlzb25Qb2ludHM6bnVsbCxjb21wYXJpc29uVW5hdmFpbGFibGVSZWFzb246bnVsbCxtb2RlbFJhbmtpbmc6W10scHJpY2luZ0hlYWx0aFJhbmtpbmc6W10sYnVybmRvd25CdWNrZXRzOltdLGJ1cm5kb3duUG9pbnRzOltdLGJ1cm5kb3duQnVkZ2V0TWljcm9zOm51bGwsZHJpbGxkb3duUm93czpbXSxkcmlsbGRvd25NZXRyaWNzOltdLGRyaWxsZG93bkRpc2FibGVkOiExLGxvYWRpbmc6ITEsYnJlYWtkb3duRXJyb3I6YGAscmFua2luZ0Vycm9yOmBgLHByaWNpbmdIZWFsdGhFcnJvcjpgYCxkcmlsbGRvd25FcnJvcjpgYCxidXJuZG93bkVycm9yOmBgLHByaWNpbmdIZWFsdGhMb2FkaW5nOiExLGRyaWxsZG93bkxvYWRpbmc6ITEsYnVybmRvd25Mb2FkaW5nOiExLHByaWNpbmdIZWFsdGhMb2FkZWQ6ITEsZHJpbGxkb3duTG9hZGVkOiExLHByaWNpbmdIZWFsdGhXaW5kb3c6bnVsbCxwcmljaW5nSGVhbHRoU3BhbjpudWxsLGRyaWxsZG93bldpbmRvdzpudWxsLGRyaWxsZG93blNwYW46bnVsbCxkcmlsbGRvd25EcmlsbEZldGNoZWRGb3I6bnVsbCxicmVha2Rvd25CeUZldGNoZWRGb3I6bnVsbCxicmVha2Rvd25NZXRyaWNGZXRjaGVkRm9yOm51bGwsYnJlYWtkb3duV2luZG93Om51bGwsYnJlYWtkb3duU3BhbjpudWxsLGJyZWFrZG93blNjb3BlOm51bGwsYnJlYWtkb3duUmVxSWQ6MCxyYW5raW5nUmVxSWQ6MCxwcmljaW5nSGVhbHRoUmVxSWQ6MCxidXJuZG93blJlcUlkOjAsZHJpbGxkb3duUmVxSWQ6MCxyZWZyZXNoUmVxSWQ6MCxwb2xsZXI6dm9pZCAwfSksZ2V0dGVyczp7YnVybmRvd25BdmFpbGFibGU6KCk9PlZlKEkoKS5zY29wZSkhPT1udWxsfSxhY3Rpb25zOntzZXRTZWxlY3Rpb24oZSl7bGV0IHQ9ITE7ZS5ieSE9PXZvaWQgMCYmZS5ieSE9PXRoaXMuYnkmJih0aGlzLmJ5PWUuYnksdD0hMCksZS5tZXRyaWMhPT12b2lkIDAmJmUubWV0cmljIT09dGhpcy5tZXRyaWMmJih0aGlzLm1ldHJpYz1lLm1ldHJpYyx0PSEwKSxlLmRyaWxsIT09dm9pZCAwJiZlLmRyaWxsIT09dGhpcy5kcmlsbCYmKHRoaXMuZHJpbGw9ZS5kcmlsbCx0PSEwKSx0JiZ0aGlzLnJlZnJlc2goKX0sYXN5bmMgcmVmcmVzaCgpe2lmKCF0KCkuaXNBdXRoZW50aWNhdGVkKXJldHVybjtsZXQgZT0rK3RoaXMucmVmcmVzaFJlcUlkO3RoaXMubG9hZGluZz0hMDt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuZmV0Y2hNb2RlbFJhbmtpbmcoKS50aGVuKCgpPT50aGlzLmZldGNoQnJlYWtkb3duKCkpLHRoaXMuZmV0Y2hQcmljaW5nSGVhbHRoUmFua2luZygpLHRoaXMuZmV0Y2hCdXJuZG93bigpLHRoaXMuZmV0Y2hEcmlsbGRvd24oKV0pfWZpbmFsbHl7ZT09PXRoaXMucmVmcmVzaFJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19LGFzeW5jIGZldGNoTW9kZWxSYW5raW5nKCl7bGV0IGU9SSgpLHQ9Kyt0aGlzLnJhbmtpbmdSZXFJZDt0cnl7bGV0IG49YXdhaXQgZChgL2FkbWluL2FwaS91c2FnZS9tb2RlbHM/bWV0cmljPSR7dGhpcy5tZXRyaWN9JndpbmRvdz0ke2Uud2luZG93fSZzcGFuPSR7ZS5zcGFufSZsaW1pdD0ke1JlfSZkZXRhaWw9MWApO2lmKHQhPT10aGlzLnJhbmtpbmdSZXFJZClyZXR1cm47dGhpcy5tb2RlbFJhbmtpbmc9bi5tb2RlbHMsdGhpcy5yYW5raW5nRXJyb3I9YGB9Y2F0Y2goZSl7aWYodCE9PXRoaXMucmFua2luZ1JlcUlkfHxqKGUpKXJldHVybjt0aGlzLnJhbmtpbmdFcnJvcj1zKGUpfX0sYXN5bmMgZmV0Y2hQcmljaW5nSGVhbHRoUmFua2luZygpe2xldCBlPUkoKTsodGhpcy5wcmljaW5nSGVhbHRoV2luZG93IT09ZS53aW5kb3d8fHRoaXMucHJpY2luZ0hlYWx0aFNwYW4hPT1lLnNwYW4pJiYodGhpcy5wcmljaW5nSGVhbHRoTG9hZGVkPSExKSx0aGlzLnByaWNpbmdIZWFsdGhXaW5kb3c9ZS53aW5kb3csdGhpcy5wcmljaW5nSGVhbHRoU3Bhbj1lLnNwYW47bGV0IHQ9Kyt0aGlzLnByaWNpbmdIZWFsdGhSZXFJZDt0aGlzLnByaWNpbmdIZWFsdGhMb2FkaW5nPSEwO3RyeXtsZXQgbj1hd2FpdCBkKGAvYWRtaW4vYXBpL3VzYWdlL21vZGVscz9tZXRyaWM9cmVxJndpbmRvdz0ke2Uud2luZG93fSZzcGFuPSR7ZS5zcGFufSZsaW1pdD0ke1JlfSZkZXRhaWw9MWApO2lmKHQhPT10aGlzLnByaWNpbmdIZWFsdGhSZXFJZClyZXR1cm47dGhpcy5wcmljaW5nSGVhbHRoUmFua2luZz1uLm1vZGVscyx0aGlzLnByaWNpbmdIZWFsdGhFcnJvcj1gYCx0aGlzLnByaWNpbmdIZWFsdGhMb2FkZWQ9ITB9Y2F0Y2goZSl7aWYodCE9PXRoaXMucHJpY2luZ0hlYWx0aFJlcUlkfHxqKGUpKXJldHVybjt0aGlzLnByaWNpbmdIZWFsdGhFcnJvcj1zKGUpfWZpbmFsbHl7dD09PXRoaXMucHJpY2luZ0hlYWx0aFJlcUlkJiYodGhpcy5wcmljaW5nSGVhbHRoTG9hZGluZz0hMSl9fSxhc3luYyBmZXRjaEJyZWFrZG93bigpe2xldCBlPUkoKTsodGhpcy5icmVha2Rvd25CeUZldGNoZWRGb3IhPT10aGlzLmJ5fHx0aGlzLmJyZWFrZG93bk1ldHJpY0ZldGNoZWRGb3IhPT10aGlzLm1ldHJpY3x8dGhpcy5icmVha2Rvd25XaW5kb3chPT1lLndpbmRvd3x8dGhpcy5icmVha2Rvd25TcGFuIT09ZS5zcGFufHx0aGlzLmJyZWFrZG93blNjb3BlIT09ZS5zY29wZSkmJih0aGlzLmJ1Y2tldHM9W10pLHRoaXMuYnJlYWtkb3duQnlGZXRjaGVkRm9yPXRoaXMuYnksdGhpcy5icmVha2Rvd25NZXRyaWNGZXRjaGVkRm9yPXRoaXMubWV0cmljLHRoaXMuYnJlYWtkb3duV2luZG93PWUud2luZG93LHRoaXMuYnJlYWtkb3duU3Bhbj1lLnNwYW4sdGhpcy5icmVha2Rvd25TY29wZT1lLnNjb3BlO2xldCB0PSsrdGhpcy5icmVha2Rvd25SZXFJZDt0cnl7aWYoZS5zY29wZT09PWBhbGxgP2F3YWl0IHRoaXMuZmV0Y2hCcmVha2Rvd25GbGVldFdpZGUoZS53aW5kb3csZS5zcGFuLHQpOmUuc2NvcGUuc3RhcnRzV2l0aChgZ3JvdXA6YCl8fGUuc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKT9hd2FpdCB0aGlzLmZldGNoQnJlYWtkb3duU2luZ2xlU2NvcGUoZS5zY29wZSxlLndpbmRvdyxlLnNwYW4sdCk6YXdhaXQgdGhpcy5mZXRjaEJyZWFrZG93blByb3ZpZGVyU2NvcGUoZS5zY29wZS5zbGljZSg5KSxlLndpbmRvdyxlLnNwYW4sdCksdCE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO3RoaXMuYnJlYWtkb3duRXJyb3I9YGAsZS5jbXBTcGVjLnJlcXVlc3RlZD9hd2FpdCB0aGlzLmZldGNoQ29tcGFyaXNvbihlLnNjb3BlLGUud2luZG93LGUuc3BhbixlLmNtcFNwZWMub2Zmc2V0LHQpOih0aGlzLmNvbXBhcmlzb25Qb2ludHM9bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1udWxsKX1jYXRjaChlKXtpZih0IT09dGhpcy5icmVha2Rvd25SZXFJZHx8aihlKSlyZXR1cm47dGhpcy5icmVha2Rvd25FcnJvcj1zKGUpfX0sYXN5bmMgZmV0Y2hCcmVha2Rvd25GbGVldFdpZGUoZSx0LG4pe2xldCByPWF3YWl0IHRoaXMuZmV0Y2hTZXJpZXMoW2B0b3RhbGBdLHRoaXMubWV0cmljLGUsdCwwKTtpZihuIT09dGhpcy5icmVha2Rvd25SZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPXIuYnVja2V0cztsZXQgaT1yLnNlcmllcy5maW5kKGU9PmUuc2NvcGU9PT1gdG90YWxgKT8ucG9pbnRzPz9BcnJheShyLmJ1Y2tldHMubGVuZ3RoKS5maWxsKDApO2lmKHRoaXMudG90YWxQb2ludHM9aSx0aGlzLmJ5PT09YG1vZGVsYCl7bGV0IHI9dGhpcy5tb2RlbFJhbmtpbmcuc2xpY2UoMCwxMCkubWFwKGU9PmBtb2RlbDoke2UuaWR9YCk7aWYoci5sZW5ndGg9PT0wKXt0aGlzLmJyZWFrZG93bj1bXSx0aGlzLm90aGVyUG9pbnRzPWplKGksW10pO3JldHVybn1sZXQgYT1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKHIsdGhpcy5tZXRyaWMsZSx0LDApO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjtsZXQgbz1rZShhLnNlcmllcywxMCk7dGhpcy5icmVha2Rvd249byx0aGlzLm90aGVyUG9pbnRzPWplKGksbyk7cmV0dXJufWlmKHRoaXMuYnk9PT1gcHJvdmlkZXJgKXtsZXQgcj10aGlzLm1vZGVsUmFua2luZy5zbGljZSgwLCQpLm1hcChlPT5gbW9kZWw6JHtlLmlkfWApO2lmKHIubGVuZ3RoPT09MCl7dGhpcy5icmVha2Rvd249W10sdGhpcy5vdGhlclBvaW50cz1udWxsO3JldHVybn1sZXQgaT1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKHIsdGhpcy5tZXRyaWMsZSx0LDApO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjt0aGlzLmJyZWFrZG93bj1EZShpLnNlcmllcyksdGhpcy5vdGhlclBvaW50cz1udWxsO3JldHVybn1sZXQgYT1hd2FpdCBkKF8oe2tpbmQ6YGdyb3VwYCx3aW5kb3c6ZSxzcGFuOnQsbWV0cmljczpbdGhpcy5tZXRyaWNdfSkpO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjtsZXQgbz1hLnJvd3Muc2xpY2UoMCwkKS5tYXAoZT0+YGdyb3VwOiR7ZS5pZH1gKTtpZihvLmxlbmd0aD09PTApe3RoaXMuYnJlYWtkb3duPVtdLHRoaXMub3RoZXJQb2ludHM9bnVsbDtyZXR1cm59bGV0IHM9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhvLHRoaXMubWV0cmljLGUsdCwwKTtuPT09dGhpcy5icmVha2Rvd25SZXFJZCYmKHRoaXMuYnJlYWtkb3duPXMuc2VyaWVzLHRoaXMub3RoZXJQb2ludHM9bnVsbCl9LGFzeW5jIGZldGNoQnJlYWtkb3duU2luZ2xlU2NvcGUoZSx0LG4scil7bGV0IGk9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhbZV0sdGhpcy5tZXRyaWMsdCxuLDApO2lmKHIhPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjt0aGlzLmJ1Y2tldHM9aS5idWNrZXRzO2xldCBhPWkuc2VyaWVzLmZpbmQodD0+dC5zY29wZT09PWUpPy5wb2ludHM/P0FycmF5KGkuYnVja2V0cy5sZW5ndGgpLmZpbGwoMCk7dGhpcy5icmVha2Rvd249W3tzY29wZTplLHBvaW50czphfV0sdGhpcy5vdGhlclBvaW50cz1udWxsLHRoaXMudG90YWxQb2ludHM9YX0sYXN5bmMgZmV0Y2hCcmVha2Rvd25Qcm92aWRlclNjb3BlKGUsdCxuLHIpe2xldCBpPXRoaXMubW9kZWxSYW5raW5nLmZpbHRlcih0PT50LmlkLnN0YXJ0c1dpdGgoYCR7ZX0vYCkpLnNsaWNlKDAsJCkubWFwKGU9PmBtb2RlbDoke2UuaWR9YCk7aWYoaS5sZW5ndGg9PT0wKXt0aGlzLmJ1Y2tldHM9W10sdGhpcy5icmVha2Rvd249W10sdGhpcy5vdGhlclBvaW50cz1udWxsLHRoaXMudG90YWxQb2ludHM9W107cmV0dXJufWxldCBhPWF3YWl0IHRoaXMuZmV0Y2hTZXJpZXMoaSx0aGlzLm1ldHJpYyx0LG4sMCk7aWYociE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO3RoaXMuYnVja2V0cz1hLmJ1Y2tldHM7bGV0W29dPURlKGEuc2VyaWVzKSxzPW8/LnBvaW50cz8/QXJyYXkoYS5idWNrZXRzLmxlbmd0aCkuZmlsbCgwKTt0aGlzLmJyZWFrZG93bj1be3Njb3BlOmBwcm92aWRlcjoke2V9YCxwb2ludHM6c31dLHRoaXMub3RoZXJQb2ludHM9bnVsbCx0aGlzLnRvdGFsUG9pbnRzPXN9LGFzeW5jIGZldGNoQ29tcGFyaXNvbihlLHQsbixyLGkpe2xldCBhPWU9PT1gYWxsYD9gdG90YWxgOmUuc3RhcnRzV2l0aChgcHJvdmlkZXI6YCk/bnVsbDplO2lmKGE9PT1udWxsKXt0aGlzLmNvbXBhcmlzb25Qb2ludHM9bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1gQ29tcGFyaXNvbiBpcyBub3QgYXZhaWxhYmxlIGZvciBhIHNpbmdsZS1wcm92aWRlciBzY29wZS5gO3JldHVybn1sZXQgbz1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKFthXSx0aGlzLm1ldHJpYyx0LG4scik7aT09PXRoaXMuYnJlYWtkb3duUmVxSWQmJih0aGlzLmNvbXBhcmlzb25Qb2ludHM9by5zZXJpZXMuZmluZChlPT5lLnNjb3BlPT09YSk/LnBvaW50cz8/bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1udWxsKX0sYXN5bmMgZmV0Y2hTZXJpZXMoZSx0LG4scixpKXtyZXR1cm4gZChoKHtzY29wZTplLG1ldHJpYzp0LHdpbmRvdzpuLHNwYW46cixvZmZzZXQ6aXx8dm9pZCAwfSkpfSxhc3luYyBmZXRjaEJ1cm5kb3duKCl7bGV0IGU9SSgpLHQ9Kyt0aGlzLmJ1cm5kb3duUmVxSWQsbj1WZShlLnNjb3BlKTtpZihuPT09bnVsbCl7dGhpcy5idXJuZG93bkJ1Y2tldHM9W10sdGhpcy5idXJuZG93blBvaW50cz1bXSx0aGlzLmJ1cm5kb3duQnVkZ2V0TWljcm9zPW51bGwsdGhpcy5idXJuZG93bkVycm9yPWBgLHRoaXMuYnVybmRvd25Mb2FkaW5nPSExO3JldHVybn10aGlzLmJ1cm5kb3duTG9hZGluZz0hMDt0cnl7bGV0IGU9cGUobmV3IERhdGUpLHI9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhbbl0sYGNvc3RgLGBkYXlgLGUsMCk7aWYodCE9PXRoaXMuYnVybmRvd25SZXFJZClyZXR1cm47dGhpcy5idXJuZG93bkJ1Y2tldHM9ci5idWNrZXRzLHRoaXMuYnVybmRvd25Qb2ludHM9ci5zZXJpZXMuZmluZChlPT5lLnNjb3BlPT09bik/LnBvaW50cz8/QXJyYXkoci5idWNrZXRzLmxlbmd0aCkuZmlsbCgwKSx0aGlzLmJ1cm5kb3duQnVkZ2V0TWljcm9zPUhlKG4pLHRoaXMuYnVybmRvd25FcnJvcj1gYH1jYXRjaChlKXtpZih0IT09dGhpcy5idXJuZG93blJlcUlkfHxqKGUpKXJldHVybjt0aGlzLmJ1cm5kb3duRXJyb3I9cyhlKX1maW5hbGx5e3Q9PT10aGlzLmJ1cm5kb3duUmVxSWQmJih0aGlzLmJ1cm5kb3duTG9hZGluZz0hMSl9fSxhc3luYyBmZXRjaERyaWxsZG93bigpe2xldCBlPUkoKTsodGhpcy5kcmlsbGRvd25XaW5kb3chPT1lLndpbmRvd3x8dGhpcy5kcmlsbGRvd25TcGFuIT09ZS5zcGFufHx0aGlzLmRyaWxsZG93bkRyaWxsRmV0Y2hlZEZvciE9PXRoaXMuZHJpbGwpJiYodGhpcy5kcmlsbGRvd25Mb2FkZWQ9ITEpLHRoaXMuZHJpbGxkb3duV2luZG93PWUud2luZG93LHRoaXMuZHJpbGxkb3duU3Bhbj1lLnNwYW4sdGhpcy5kcmlsbGRvd25EcmlsbEZldGNoZWRGb3I9dGhpcy5kcmlsbDtsZXQgdD0rK3RoaXMuZHJpbGxkb3duUmVxSWQsbj1YKHRoaXMuZHJpbGwpO3RoaXMuZHJpbGxkb3duTG9hZGluZz0hMDt0cnl7bGV0IHI9bi5raW5kPT09YHVzZXJtb2RlbGA/e2tpbmQ6YHVzZXJtb2RlbGAsLi4uZihlLndpbmRvdyxlLnNwYW4pLHVzZXI6bi51c2VyfTpuLmtpbmQ9PT1gdXNlcmA/e2tpbmQ6YHVzZXJgLHdpbmRvdzplLndpbmRvdyxzcGFuOmUuc3Bhbixncm91cDpuLmdyb3VwLG1ldHJpY3M6W2ByZXFgLGB0b2tpbmAsYHRva291dGAsYGNvc3RgXX06e2tpbmQ6YGdyb3VwYCx3aW5kb3c6ZS53aW5kb3csc3BhbjplLnNwYW4sbWV0cmljczpbYHJlcWAsYHRva2luYCxgdG9rb3V0YCxgY29zdGBdfSxpPWF3YWl0IGQoXyhyKSk7aWYodCE9PXRoaXMuZHJpbGxkb3duUmVxSWQpcmV0dXJuO3RoaXMuZHJpbGxkb3duUm93cz1pLnJvd3MsdGhpcy5kcmlsbGRvd25NZXRyaWNzPWkubWV0cmljcyx0aGlzLmRyaWxsZG93bkRpc2FibGVkPSExLHRoaXMuZHJpbGxkb3duRXJyb3I9YGAsdGhpcy5kcmlsbGRvd25Mb2FkZWQ9ITB9Y2F0Y2goZSl7aWYodCE9PXRoaXMuZHJpbGxkb3duUmVxSWR8fGooZSkpcmV0dXJuO2lmKGUgaW5zdGFuY2VvZiBNJiZlLnN0YXR1cz09PTQwNCl7dGhpcy5kcmlsbGRvd25Sb3dzPVtdLHRoaXMuZHJpbGxkb3duTWV0cmljcz1bXSx0aGlzLmRyaWxsZG93bkRpc2FibGVkPSEwLHRoaXMuZHJpbGxkb3duRXJyb3I9YGAsdGhpcy5kcmlsbGRvd25Mb2FkZWQ9ITA7cmV0dXJufXRoaXMuZHJpbGxkb3duRXJyb3I9cyhlKX1maW5hbGx5e3Q9PT10aGlzLmRyaWxsZG93blJlcUlkJiYodGhpcy5kcmlsbGRvd25Mb2FkaW5nPSExKX19LHN0YXJ0UG9sbGluZygpe3RoaXMucG9sbGVyfHwodGhpcy5wb2xsZXI9RCh7aW50ZXJ2YWxNczp6ZSx0aWNrOigpPT52b2lkIHRoaXMucmVmcmVzaCgpfSksdGhpcy5wb2xsZXIuc3RhcnQoKSl9LHN0b3BQb2xsaW5nKCl7dGhpcy5wb2xsZXI/LnN0b3AoKSx0aGlzLnBvbGxlcj12b2lkIDB9fX0pO2Z1bmN0aW9uIFZlKGUpe3JldHVybiBlPT09YGFsbGA/YHRvdGFsYDplLnN0YXJ0c1dpdGgoYGdyb3VwOmApfHxlLnN0YXJ0c1dpdGgoYHVzZXI6YCk/ZTpudWxsfWZ1bmN0aW9uIEhlKGUpe2xldCB0PXYoKSxuPUVlKGUsdC5vdmVydmlldz8uZ3JvdXBzPz9bXSx0LnVzYWdlPy51c2Vycz8/W10pPy5jb3N0UGVyTW9udGhVU0Q7cmV0dXJuIG4mJm4+MD9zZShuKTpudWxsfXZhciBVZT17ImFyaWEtbGFiZWwiOmBCcmVhZGNydW1iYCxjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxXZT1bYGRpc2FibGVkYF0sR2U9e2NsYXNzOmBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmRgfSxLZT17Y2xhc3M6YGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZGB9LHFlPU4oe19fbmFtZTpgQXR0cmlidXRpb25EcmlsbGRvd25gLHByb3BzOntyb3dzOnt9LG1ldHJpY3M6e30sZHJpbGw6e30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sdXNlck1vZGVsU3RhdHNFbmFibGVkOnt0eXBlOkJvb2xlYW59LHdpbmRvdzp7fSxzcGFuOnt9LGxvYWRpbmc6e3R5cGU6Qm9vbGVhbn0sbG9hZGVkOnt0eXBlOkJvb2xlYW59LGVycm9yOnt9LG9uUmV0cnk6e3R5cGU6RnVuY3Rpb259fSxlbWl0czpbYHVwZGF0ZTpkcmlsbGBdLHNldHVwKHQse2VtaXQ6YX0pe2xldCBvPXQscz1hLGQ9QygoKT0+WChvLmRyaWxsKSksZj1wKGBgKTtmdW5jdGlvbiBoKCl7cyhgdXBkYXRlOmRyaWxsYCxgYCl9ZnVuY3Rpb24gXygpe2YudmFsdWUmJnMoYHVwZGF0ZTpkcmlsbGAsWihgZ3JvdXBgLGYudmFsdWUpKX1mdW5jdGlvbiB2KGUpe2xldCB0PWQudmFsdWU7dC5raW5kPT09YGdyb3VwYD9zKGB1cGRhdGU6ZHJpbGxgLFooYGdyb3VwYCxlKSk6dC5raW5kPT09YHVzZXJgJiZvLnVzZXJNb2RlbFN0YXRzRW5hYmxlZCYmKGYudmFsdWU9dC5ncm91cCxzKGB1cGRhdGU6ZHJpbGxgLFooYHVzZXJgLGUpKSl9bGV0IFM9QygoKT0+ZC52YWx1ZS5raW5kPT09YGdyb3VwYD9gR3JvdXBgOmQudmFsdWUua2luZD09PWB1c2VyYD9gVXNlcmA6YE1vZGVsYCk7ZnVuY3Rpb24gZWUodCl7bGV0IG49ZC52YWx1ZTtyZXR1cm4gbi5raW5kPT09YHVzZXJtb2RlbGA/ZShiZSx7bGFiZWw6dC5pZCxraW5kOmBtb2RlbGAsaWQ6dC5pZH0pOm4ua2luZD09PWBncm91cGB8fG8udXNlck1vZGVsU3RhdHNFbmFibGVkP2UoYGJ1dHRvbmAse3R5cGU6YGJ1dHRvbmAsY2xhc3M6YGlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBnYXAtMSByb3VuZGVkLXNtIGhvdmVyOnRleHQtcHJpbWFyeSBob3Zlcjp1bmRlcmxpbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTBgLG9uQ2xpY2s6KCk9PnYodC5pZCl9LFt0LmlkLGUoTCx7aWNvbjpnLGNsYXNzOmBzaXplLTNgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSldKTplKGBzcGFuYCx7fSx0LmlkKX1sZXQgRT1DKCgpPT5be2lkOmBpZGAsaGVhZGVyOlMudmFsdWUsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6ZX0pPT5lZShlLm9yaWdpbmFsKX0sLi4uby5tZXRyaWNzLm1hcCh0PT4oe2lkOnQsaGVhZGVyOlFbdF0/P3QsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnZhbHVlc1t0XT8/MCxjZWxsOih7cm93Om59KT0+e2xldCByPW4ub3JpZ2luYWwudmFsdWVzW3RdPz8wO3JldHVybiB0PT09YGNvc3RgP1Uocik6ZShsZSx7dmFsdWU6cn0pfX0pKV0pLEQ9QygoKT0+ZC52YWx1ZS5raW5kPT09YHVzZXJgJiYoIW8udXNlck1vZGVsU3RhdHNFbmFibGVkfHxvLmRpc2FibGVkKSksaj1DKCgpPT5HKHtsb2FkaW5nOm8ubG9hZGluZyxoYXNEYXRhOm8ubG9hZGVkLGVycm9yOm8uZXJyb3J9KSksTT1DKCgpPT4hRC52YWx1ZSYmby5yb3dzLmxlbmd0aD09PTApO3JldHVybihlLGEpPT4oYigpLG0oTyhuKSxudWxsLHtkZWZhdWx0OmkoKCk9Plt1KE8oYyksbnVsbCx7ZGVmYXVsdDppKCgpPT5bdShPKGspLG51bGwse2RlZmF1bHQ6aSgoKT0+Wy4uLmFbMF18fD1beShgQXR0cmlidXRpb25gLC0xKV1dKSxfOjF9KSx1KE8oUCksbnVsbCx7ZGVmYXVsdDppKCgpPT5bLi4uYVsxXXx8PVt5KGBEcmlsbCBmcm9tIGdyb3VwcyBpbnRvIHVzZXJzIGludG8gdGhlIG1vZGVscyB0aGV5IHVzZWQuYCwtMSldXSksXzoxfSksdyhgbmF2YCxVZSxbdyhgYnV0dG9uYCx7dHlwZTpgYnV0dG9uYCxjbGFzczpgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGhvdmVyOnVuZGVybGluZWAsZGlzYWJsZWQ6ZC52YWx1ZS5raW5kPT09YGdyb3VwYCxvbkNsaWNrOmh9LGAgQWxsIGdyb3VwcyBgLDgsV2UpLGQudmFsdWUua2luZD09PWB1c2VyYD8oYigpLFQobCx7a2V5OjB9LFt1KE8oTCkse2ljb246TyhnKSxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSx3KGBzcGFuYCxHZSxBKGQudmFsdWUuZ3JvdXApLDEpXSw2NCkpOngoYGAsITApLGQudmFsdWUua2luZD09PWB1c2VybW9kZWxgPyhiKCksVChsLHtrZXk6MX0sW3UoTyhMKSx7aWNvbjpPKGcpLGNsYXNzOmBzaXplLTNgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLGYudmFsdWU/KGIoKSxUKGBidXR0b25gLHtrZXk6MCx0eXBlOmBidXR0b25gLGNsYXNzOmBob3Zlcjp0ZXh0LWZvcmVncm91bmQgaG92ZXI6dW5kZXJsaW5lYCxvbkNsaWNrOl99LEEoZi52YWx1ZSksMSkpOngoYGAsITApLHUoTyhMKSx7aWNvbjpPKGcpLGNsYXNzOmBzaXplLTNgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLHcoYHNwYW5gLEtlLEEoZC52YWx1ZS51c2VyKSwxKV0sNjQpKTp4KGBgLCEwKV0pXSksXzoxfSksdShPKHIpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0OmkoKCk9PltkLnZhbHVlLmtpbmQ9PT1gdXNlcm1vZGVsYD8oYigpLG0oQ2Use2tleTowLHdpbmRvdzp0LndpbmRvdyxzcGFuOnQuc3Bhbn0sbnVsbCw4LFtgd2luZG93YCxgc3BhbmBdKSk6eChgYCwhMCksRC52YWx1ZT8oYigpLG0od2Use2tleToxLHRpdGxlOmBQZXItdXNlci1tb2RlbCBzdGF0aXN0aWNzIGFyZSBvZmZgLCJjb25maWcta2V5IjpgYWRtaW4uc3RhdHMudXNlck1vZGVsYCxwdXJwb3NlOmB0byBzZWUgcGVyLW1vZGVsIGF0dHJpYnV0aW9uIGZvciB0aGlzIHVzZXIuYH0pKTpqLnZhbHVlPT09YHNrZWxldG9uYD8oYigpLG0oYWUse2tleToyLHJvd3M6NSxjb2xzOnQubWV0cmljcy5sZW5ndGgrMX0sbnVsbCw4LFtgY29sc2BdKSk6ai52YWx1ZT09PWBlcnJvcmA/KGIoKSxtKFIse2tleTozLG1lc3NhZ2U6dC5lcnJvciwib24tcmV0cnkiOnQub25SZXRyeX0sbnVsbCw4LFtgbWVzc2FnZWAsYG9uLXJldHJ5YF0pKTpNLnZhbHVlPyhiKCksbShCLHtrZXk6NCx0aXRsZTpgTm8gdHJhZmZpYyBpbiB0aGlzIHJhbmdlLmB9LHtkZWZhdWx0OmkoKCk9Plt1KHZlKV0pLF86MX0pKTooYigpLG0oSyx7a2V5OjUsY29sdW1uczpFLnZhbHVlLGRhdGE6dC5yb3dzLCJlbXB0eS1tZXNzYWdlIjpgbm9uZWB9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYF0pKV0pLF86MX0pXSksXzoxfSkpfX0pLEplPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LFllPXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtIHNtOmdyaWQtY29scy0zYH0sWGU9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFplPU4oe19fbmFtZTpgQnVybkRvd25DaGFydGAscHJvcHM6e2J1Y2tldHM6e30scG9pbnRzOnt9LGJ1ZGdldE1pY3Jvczp7fSxub3c6e30sbG9hZGluZzp7dHlwZTpCb29sZWFufSxlcnJvcjp7fSxvblJldHJ5Ont0eXBlOkZ1bmN0aW9ufX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPUMoKCk9Pkcoe2xvYWRpbmc6dC5sb2FkaW5nPz8hMSxoYXNEYXRhOnQuYnVja2V0cy5sZW5ndGg+MCxlcnJvcjp0LmVycm9yPz9gYH0pKSxyPUMoKCk9PnQuYnVja2V0cy5tYXAoZT0+eihlLGBkYXlgKSkpLGE9QygoKT0+Z2UodC5wb2ludHMpKSxvPUMoKCk9PmEudmFsdWUuYXQoLTEpPz8wKSxzPUMoKCk9Plt7bGFiZWw6YFNwZW50IChNVEQpYCxkYXRhOmEudmFsdWUsY29sb3I6YC0tY2hhcnQtY29zdGB9XSksYz1DKCgpPT50LmJ1ZGdldE1pY3Jvcz09PW51bGw/W106W3tsYWJlbDpgQnVkZ2V0YCxkYXRhOkFycmF5KGEudmFsdWUubGVuZ3RoKS5maWxsKHQuYnVkZ2V0TWljcm9zKSxjb2xvcjpgLS1kZXN0cnVjdGl2ZWB9XSksbD1DKCgpPT50LmJ1ZGdldE1pY3Jvcz09PW51bGw/bnVsbDptZShvLnZhbHVlLHQuYnVkZ2V0TWljcm9zLHQubm93KSksZD1DKCgpPT50LmJ1ZGdldE1pY3JvcyE9PW51bGwmJm8udmFsdWU+PXQuYnVkZ2V0TWljcm9zKTtyZXR1cm4odCxhKT0+KGIoKSxtKFNlLHt0aXRsZTpgQnVybi1kb3duYCxkZXNjcmlwdGlvbjpgQ3VtdWxhdGl2ZSBzcGVuZCB0aGlzIFVUQyBjYWxlbmRhciBtb250aCBhZ2FpbnN0IHRoZSBjb25maWd1cmVkIGJ1ZGdldC5gLHN0YXRlOm4udmFsdWUsZXJyb3I6ZS5lcnJvcj8/YGAsIm9uLXJldHJ5IjplLm9uUmV0cnl9LHtkZWZhdWx0OmkoKCk9Plt3KGBkaXZgLEplLFt3KGBkaXZgLFllLFt1KEose2xhYmVsOmBTcGVudCBzbyBmYXJgLHRvbmU6ZC52YWx1ZT9gZGVzdHJ1Y3RpdmVgOmBkZWZhdWx0YH0se2RlZmF1bHQ6aSgoKT0+W3koQShPKFUpKG8udmFsdWUpKSwxKV0pLF86MX0sOCxbYHRvbmVgXSksZS5idWRnZXRNaWNyb3M9PT1udWxsP3goYGAsITApOihiKCksbShKLHtrZXk6MCxsYWJlbDpgQnVkZ2V0YH0se2RlZmF1bHQ6aSgoKT0+W3koQShPKFUpKGUuYnVkZ2V0TWljcm9zKSksMSldKSxfOjF9KSksZS5idWRnZXRNaWNyb3M9PT1udWxsP3goYGAsITApOihiKCksbShKLHtrZXk6MSxsYWJlbDpgUHJvamVjdGVkIHJ1bi1vdXRgLHRvbmU6ZC52YWx1ZT9gZGVzdHJ1Y3RpdmVgOmBkZWZhdWx0YCxoaW50OmwudmFsdWU9PT1udWxsP08oX2UpOnZvaWQgMH0se2RlZmF1bHQ6aSgoKT0+W3koQShsLnZhbHVlPT09bnVsbD9gYDpPKEgpKGwudmFsdWUpKSwxKV0pLF86MX0sOCxbYHRvbmVgLGBoaW50YF0pKV0pLGUuYnVkZ2V0TWljcm9zPT09bnVsbD8oYigpLFQoYHBgLFhlLGBObyBidWRnZXQgY29uZmlndXJlZCBmb3IgdGhpcyBzY29wZS5gKSk6eChgYCwhMCksdSh4ZSx7bGFiZWxzOnIudmFsdWUsZGF0YXNldHM6cy52YWx1ZSwiY29tcGFyaXNvbi1kYXRhc2V0cyI6Yy52YWx1ZSwidmFsdWUtZm9ybWF0dGVyIjpPKFUpLGFyaWFMYWJlbDpgQ3VtdWxhdGl2ZSBzcGVuZCB0aGlzIG1vbnRoIGFnYWluc3QgdGhlIGNvbmZpZ3VyZWQgYnVkZ2V0YH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgLGBjb21wYXJpc29uLWRhdGFzZXRzYCxgdmFsdWUtZm9ybWF0dGVyYF0pXSldKSxfOjF9LDgsW2BzdGF0ZWAsYGVycm9yYCxgb24tcmV0cnlgXSkpfX0pO2Z1bmN0aW9uIFFlKGUpe3JldHVybiBlLmZpbHRlcihlPT5lLmZyZWUpLm1hcChlPT4oe3Rva2Vuc0luOmUudG9rZW5zSW4/PzAsdG9rZW5zT3V0OmUudG9rZW5zT3V0Pz8wfSkpfWZ1bmN0aW9uICRlKGUsdCxuKXtsZXQgcj0wO2ZvcihsZXQgaSBvZiBlKXIrPWkudG9rZW5zSW4qdCtpLnRva2Vuc091dCpuO3JldHVybiBNYXRoLnJvdW5kKHIpfXZhciBldD1uZXcgU2V0KFtgZnJlZWAsYHVucHJpY2VkYF0pO2Z1bmN0aW9uIHR0KGUsdCl7bGV0IG49bnVsbDtmb3IobGV0IHIgb2YgZSl7aWYoci5yZXF1ZXN0cz09PXZvaWQgMCljb250aW51ZTtsZXQgZT10LmdldChyLmlkKTshZXx8ZXQuaGFzKGUucHJpY2VTb3VyY2UpfHwobj09PW51bGx8fHIucmVxdWVzdHM+KG4ucmVxdWVzdHM/PzApKSYmKG49cil9cmV0dXJuIG4/LmlkPz9udWxsfXZhciBudD17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0scnQ9e2tleToxLGNsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zIHRleHQtY2hhcnQtcmVxdWVzdHNgfSxpdD17a2V5OjB9LGF0PXtrZXk6MCxjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtcyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxvdD17a2V5OjEsY2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXMgdGV4dC1jaGFydC1yZXF1ZXN0c2B9LHN0PXtrZXk6MixjbGFzczpgdGV4dC14cyB0ZXh0LXN0YXR1cy13YXJuYH0sY3Q9Tih7X19uYW1lOmBDb3N0QXZvaWRlZENhcmRgLHByb3BzOnttb2RlbHM6e30sY2F0YWxvZzp7fSxyZWZNb2RlbDp7fSxjYWNoZVN0YXRzRW5hYmxlZDp7dHlwZTpCb29sZWFufSxjYWNoZVNhdmluZ3NBdmFpbGFibGU6e3R5cGU6Qm9vbGVhbn0sY2FjaGVTYXZpbmdzTm90ZTp7fX0sZW1pdHM6W2B1cGRhdGU6cmVmTW9kZWxgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgYT1lLG89dCxzPUMoKCk9PntsZXQgZT1bXTtmb3IobGV0IHQgb2YgYS5tb2RlbHMpe2xldCBuPWEuY2F0YWxvZy5nZXQodC5pZCk7IW58fG4ucHJpY2VTb3VyY2U9PT1gZnJlZWB8fG4ucHJpY2VTb3VyY2U9PT1gdW5wcmljZWRgfHxlLnB1c2goe2lkOnQuaWQscmVxdWVzdHM6dC5yZXF1ZXN0cz8/MH0pfXJldHVybiBlLnNvcnQoKGUsdCk9PnQucmVxdWVzdHMtZS5yZXF1ZXN0cyl9KSxsPUMoKCk9PnMudmFsdWUubWFwKGU9Pih7dmFsdWU6ZS5pZCxsYWJlbDplLmlkfSkpKSxkPUMoKCk9PnR0KGEubW9kZWxzLGEuY2F0YWxvZykpLGY9QygoKT0+YS5yZWZNb2RlbHx8ZC52YWx1ZSkscD1DKCgpPT5mLnZhbHVlP2EuY2F0YWxvZy5nZXQoZi52YWx1ZSk6dm9pZCAwKSxoPUMoKCk9PntsZXQgZT1wLnZhbHVlO3JldHVybiFlfHxlLmlucHV0UGVyTVRva1VzZD09PXZvaWQgMHx8ZS5vdXRwdXRQZXJNVG9rVXNkPT09dm9pZCAwP251bGw6JGUoUWUoYS5tb2RlbHMpLGUuaW5wdXRQZXJNVG9rVXNkLGUub3V0cHV0UGVyTVRva1VzZCl9KSxnPUMoKCk9PntsZXQgZT0wO2ZvcihsZXQgdCBvZiBhLm1vZGVscyllKz10LmNhY2hlU2F2ZWRNaWNyb1VzZD8/MDtyZXR1cm4gZX0pO2Z1bmN0aW9uIF8oZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZvKGB1cGRhdGU6cmVmTW9kZWxgLGUpfXJldHVybih0LGEpPT4oYigpLG0oTyhuKSxudWxsLHtkZWZhdWx0OmkoKCk9Plt1KE8oYykse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00IHNtOmZsZXgtcm93IHNtOml0ZW1zLXN0YXJ0IHNtOmp1c3RpZnktYmV0d2VlbmB9LHtkZWZhdWx0OmkoKCk9Plt3KGBkaXZgLG51bGwsW3UoTyhrKSxudWxsLHtkZWZhdWx0OmkoKCk9PlsuLi5hWzBdfHw9W3koYENvc3QgYXZvaWRlZGAsLTEpXV0pLF86MX0pLHUoTyhQKSxudWxsLHtkZWZhdWx0OmkoKCk9PlsuLi5hWzFdfHw9W3koYFdoYXQgZnJlZS10aWVyIHRyYWZmaWMgaW4gcmFuZ2Ugd291bGQgaGF2ZSBjb3N0IGF0IGEgcmVhbCBtb2RlbCdzIG93biByYXRlcy5gLC0xKV1dKSxfOjF9KV0pLHMudmFsdWUubGVuZ3RoPjA/KGIoKSxtKEYse2tleTowLGxhYmVsOmBSZWZlcmVuY2UgbW9kZWxgLCJtb2RlbC12YWx1ZSI6Zi52YWx1ZT8/YGAsb3B0aW9uczpsLnZhbHVlLHBsYWNlaG9sZGVyOmBQaWNrIGEgcmVmZXJlbmNlIG1vZGVsYCwidHJpZ2dlci1jbGFzcyI6YHctNTZgLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpffSxudWxsLDgsW2Btb2RlbC12YWx1ZWAsYG9wdGlvbnNgXSkpOngoYGAsITApXSksXzoxfSksdShPKHIpLHtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtYH0se2RlZmF1bHQ6aSgoKT0+W3coYGRpdmAsbnVsbCxbYVsyXXx8PXcoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYENvc3QgYXZvaWRlZCAoZnJlZS10aWVyIHRyYWZmaWMpYCwtMSksaC52YWx1ZT09PW51bGw/KGIoKSxUKGBwYCxudCxBKHMudmFsdWUubGVuZ3RoPT09MD9gTm8gcHJpY2VkIG1vZGVsIHNlcnZlZCBpbiByYW5nZSB0byBjb21wYXJlIGFnYWluc3QuYDpgUGljayBhIHJlZmVyZW5jZSBtb2RlbCBhYm92ZS5gKSwxKSk6KGIoKSxUKGBwYCxydCxBKE8oVSkoaC52YWx1ZSkpLDEpKV0pLGUuY2FjaGVTdGF0c0VuYWJsZWQ/KGIoKSxUKGBkaXZgLGl0LFthWzNdfHw9dyhgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ2FjaGUgc2F2aW5nc2AsLTEpLGUuY2FjaGVTYXZpbmdzQXZhaWxhYmxlPyhiKCksVChgcGAsb3QsQShPKFUpKGcudmFsdWUpKSwxKSk6KGIoKSxUKGBwYCxhdCxgbi9hYCkpLGUuY2FjaGVTYXZpbmdzTm90ZT8oYigpLFQoYHBgLHN0LEEoZS5jYWNoZVNhdmluZ3NOb3RlKSwxKSk6eChgYCwhMCldKSk6eChgYCwhMCldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBsdChlLHQpe2xldCBuPVtdO2ZvcihsZXQgciBvZiBlKXtsZXQgZT10LmdldChyLmlkKTtlJiZuLnB1c2goe2lkOnIuaWQscHJpY2VTb3VyY2U6ZS5wcmljZVNvdXJjZSxkaXNwbGF5RnJlZTplLmRpc3BsYXlGcmVlPz8hMSxyZXF1ZXN0czpyLnJlcXVlc3RzPz8wLHRva2Vuc0luOnIudG9rZW5zSW4/PzAsdG9rZW5zT3V0OnIudG9rZW5zT3V0Pz8wLGNvc3RNaWNyb1VzZDpyLmNvc3RNaWNyb1VzZD8/MCxjb250ZXh0VG9rZW5zOmUuY29udGV4dFRva2VucyxpbnB1dFBlck1Ub2tVc2Q6ZS5pbnB1dFBlck1Ub2tVc2Qsb3V0cHV0UGVyTVRva1VzZDplLm91dHB1dFBlck1Ub2tVc2QsYWxpYXNlczplLmFsaWFzZXN9KX1yZXR1cm4gbn12YXIgdXQ9e3VucHJpY2VkOjAsb3ZlcnJpZGU6MSxidWlsdGluOjIsbGl0ZWxsbTozLGZyZWU6NH07ZnVuY3Rpb24gZHQoZSl7cmV0dXJuWy4uLmVdLnNvcnQoKGUsdCk9PntsZXQgbj11dFtlLnByaWNlU291cmNlXS11dFt0LnByaWNlU291cmNlXTtyZXR1cm4gbj09PTA/dC5yZXF1ZXN0cy1lLnJlcXVlc3RzOm59KX12YXIgZnQ9e2NsYXNzOmBmbGV4IGp1c3RpZnktZW5kYH0scHQ9Tih7X19uYW1lOmBQcmljaW5nSGVhbHRoVGFibGVgLHByb3BzOnttb2RlbHM6e30sY2F0YWxvZzp7fSxsb2FkaW5nOnt0eXBlOkJvb2xlYW59LGxvYWRlZDp7dHlwZTpCb29sZWFufSxlcnJvcjp7fSxvblJldHJ5Ont0eXBlOkZ1bmN0aW9ufX0sc2V0dXAodCl7bGV0IGE9dCxvPUMoKCk9PmR0KGx0KGEubW9kZWxzLGEuY2F0YWxvZykpKSxzPUMoKCk9Pkcoe2xvYWRpbmc6YS5sb2FkaW5nLGhhc0RhdGE6YS5sb2FkZWQsZXJyb3I6YS5lcnJvcn0pKSxsPUMoKCk9Pm8udmFsdWUuZmlsdGVyKGU9PmUucHJpY2VTb3VyY2U9PT1gdW5wcmljZWRgKS5sZW5ndGgpLGQ9e3VucHJpY2VkOmBkZXN0cnVjdGl2ZWAsZnJlZTpgc2Vjb25kYXJ5YCxvdmVycmlkZTpgb3V0bGluZWAsYnVpbHRpbjpgb3V0bGluZWAsbGl0ZWxsbTpgb3V0bGluZWB9O2Z1bmN0aW9uIGYodCl7cmV0dXJuIGUoVyx7YXM6YHNwYW5gLHZhcmlhbnQ6ZFt0LnByaWNlU291cmNlXSxjbGFzczpgZm9udC1ub3JtYWxgfSwoKT0+dC5wcmljZVNvdXJjZSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdC5pbnB1dFBlck1Ub2tVc2Q9PT12b2lkIDB8fHQub3V0cHV0UGVyTVRva1VzZD09PXZvaWQgMD9lKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGDigJRgKTplKGBzcGFuYCx7fSxjZSh0LmlucHV0UGVyTVRva1VzZCx0Lm91dHB1dFBlck1Ub2tVc2QpKX1sZXQgaD1be2lkOmBpZGAsaGVhZGVyOmBNb2RlbGAsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6dH0pPT5lKGJlLHtsYWJlbDp0Lm9yaWdpbmFsLmlkLGtpbmQ6YG1vZGVsYCxpZDp0Lm9yaWdpbmFsLmlkfSl9LHtpZDpgc291cmNlYCxoZWFkZXI6YFNvdXJjZWAsYWNjZXNzb3JGbjplPT5lLnByaWNlU291cmNlLGNlbGw6KHtyb3c6ZX0pPT5mKGUub3JpZ2luYWwpfSx7aWQ6YHByaWNlYCxoZWFkZXI6YFByaWNlYCxlbmFibGVTb3J0aW5nOiExLGNlbGw6KHtyb3c6ZX0pPT5wKGUub3JpZ2luYWwpfSxxKGBjb250ZXh0YCxgQ29udGV4dGAsZT0+ZS5jb250ZXh0VG9rZW5zLFYpLC4uLnVlKCldO2Z1bmN0aW9uIGcoKXtyZXR1cm4gZmUoW2BpZGAsYHByaWNlU291cmNlYCxgZGlzcGxheUZyZWVgLGByZXF1ZXN0c2AsYHRva2Vuc0luYCxgdG9rZW5zT3V0YCxgY29zdE1pY3JvVXNkYCxgY29udGV4dFRva2Vuc2AsYGlucHV0UGVyTVRva1VzZGAsYG91dHB1dFBlck1Ub2tVc2RgXSxvLnZhbHVlLm1hcChlPT5bZS5pZCxlLnByaWNlU291cmNlLGUuZGlzcGxheUZyZWUsZS5yZXF1ZXN0cyxlLnRva2Vuc0luLGUudG9rZW5zT3V0LGUuY29zdE1pY3JvVXNkLGUuY29udGV4dFRva2Vucz8/YGAsZS5pbnB1dFBlck1Ub2tVc2Q/P2BgLGUub3V0cHV0UGVyTVRva1VzZD8/YGBdKSl9cmV0dXJuKGUsYSk9PihiKCksbShPKG4pLG51bGwse2RlZmF1bHQ6aSgoKT0+W3UoTyhjKSxudWxsLHtkZWZhdWx0OmkoKCk9Plt1KE8oaykse2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMmB9LHtkZWZhdWx0OmkoKCk9PlthWzBdfHw9eShgIFByaWNpbmcgaGVhbHRoIGAsLTEpLGwudmFsdWU+MD8oYigpLG0oTyhXKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgLGNsYXNzOmBmb250LW5vcm1hbGB9LHtkZWZhdWx0OmkoKCk9Plt5KEEobC52YWx1ZSkrYCB1bnByaWNlZGAsMSldKSxfOjF9KSk6eChgYCwhMCldKSxfOjF9KSx1KE8oUCksbnVsbCx7ZGVmYXVsdDppKCgpPT5bLi4uYVsxXXx8PVt5KGBFdmVyeSBtb2RlbCBzZXJ2ZWQgaW4gcmFuZ2UsIGpvaW5lZCB3aXRoIGl0cyBiaWxsaW5nIHByaWNlIHNvdXJjZS5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHUoTyhyKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgfSx7ZGVmYXVsdDppKCgpPT5bdSh5ZSx7c3RhdGU6cy52YWx1ZSxlcnJvcjp0LmVycm9yLCJvbi1yZXRyeSI6dC5vblJldHJ5LHNrZWxldG9uOmB0YWJsZWAscm93czo1LGNvbHM6aC5sZW5ndGgsZW1wdHk6by52YWx1ZS5sZW5ndGg9PT0wfSx7ZW1wdHk6aSgoKT0+W3UoQix7dGl0bGU6YE5vIHRyYWZmaWMgaW4gdGhpcyByYW5nZS5gfSx7ZGVmYXVsdDppKCgpPT5bdSh2ZSldKSxfOjF9KV0pLGRlZmF1bHQ6aSgoKT0+W3UoSyx7Y29sdW1uczpoLGRhdGE6by52YWx1ZSwiZW1wdHktbWVzc2FnZSI6YG5vbmVgfSxudWxsLDgsW2BkYXRhYF0pLHcoYGRpdmAsZnQsW3UoWSx7ZmlsZW5hbWU6YHByaWNpbmctaGVhbHRoLmNzdmAsYnVpbGQ6Z30pXSldKSxfOjF9LDgsW2BzdGF0ZWAsYGVycm9yYCxgb24tcmV0cnlgLGBjb2xzYCxgZW1wdHlgXSldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBtdChlKXtyZXR1cm4gZT09PWBob3VyYD97YXZhaWxhYmxlOiExLG5vdGU6YENhY2hlIHNhdmluZ3MgYXJlIG5vdCB0cmFja2VkIHBlciBob3VyIOKAlCBwaWNrIGEgZGF5IG9yIG1vbnRoIHJhbmdlIGluc3RlYWQuYH06ZT09PWBtb250aGA/e2F2YWlsYWJsZTohMCxub3RlOmBDb3ZlcnMgb25seSB0aGUgbW9zdCByZWNlbnQgMzUgZGF5cyAoZGF5LWJ1Y2tldCByZXRlbnRpb24pLCBub3QgdGhlIGZ1bGwgc2VsZWN0ZWQgcmFuZ2UuYH06e2F2YWlsYWJsZTohMCxub3RlOm51bGx9fXZhciBodD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxndD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTQgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIHNtOmp1c3RpZnktYmV0d2VlbmB9LF90PXtjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0zYH0sdnQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0seXQ9e2NsYXNzOmB0ZXh0LXJpZ2h0YH0sYnQ9e2NsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHh0PXtjbGFzczpgdGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSxTdD17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sQ3Q9e2NsYXNzOmBmb250LW1vbm8gdGV4dC14c2B9LHd0PXtrZXk6MSxjbGFzczpgdGV4dC1zbSBicmVhay13b3JkcyB0ZXh0LWRlc3RydWN0aXZlYH0sVHQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIGJyZWFrLXdvcmRzIHRleHQtZGVzdHJ1Y3RpdmVgfSxFdD17a2V5OjMsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sRHQ9e2tleTo0LGNsYXNzOmB0ZXh0LXNtIGJyZWFrLXdvcmRzIHRleHQtZGVzdHJ1Y3RpdmVgfSxPdD17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTQgbGc6Z3JpZC1jb2xzLTJgfSxrdD1OKHtfX25hbWU6YFNwZW5kUGFnZWAsc2V0dXAoZSl7bGV0IHQ9e21vZGVsOmBCeSBtb2RlbGAscHJvdmlkZXI6YEJ5IHByb3ZpZGVyYCxncm91cDpgQnkgZ3JvdXBgfSxuPUllLm1hcChlPT4oe3ZhbHVlOmUsbGFiZWw6UVtlXX0pKSxyPVMoKSxzPUkoKSxjPXYoKSxkPVRlKCksZj1CZSgpLHtub3c6cCxzdGFydDpoLHN0b3A6Z309ZGUoKSxfPUMoKCk9PnIucGFyYW1zLmJ5JiZGZShyLnBhcmFtcy5ieSk/ci5wYXJhbXMuYnk6YG1vZGVsYCksRD1DKCgpPT5yLnBhcmFtcy5tZXRyaWMmJkxlKHIucGFyYW1zLm1ldHJpYyk/ci5wYXJhbXMubWV0cmljOmBjb3N0YCksaz1DKCgpPT5yLnBhcmFtcy5yZWY/P2BgKSxqPUMoKCk9PnIucGFyYW1zLmRyaWxsPz9gYCk7ZnVuY3Rpb24gTShlKXtsZXQgdD17Ynk6ZS5ieT8/Xy52YWx1ZSxtZXRyaWM6ZS5tZXRyaWM/P0QudmFsdWUscmVmOmUucmVmPz9rLnZhbHVlLGRyaWxsOmUuZHJpbGw/P2oudmFsdWV9LG49e307dC5ieSE9PWBtb2RlbGAmJihuLmJ5PXQuYnkpLHQubWV0cmljIT09YGNvc3RgJiYobi5tZXRyaWM9dC5tZXRyaWMpLHQucmVmIT09YGAmJihuLnJlZj10LnJlZiksdC5kcmlsbCE9PWBgJiYobi5kcmlsbD10LmRyaWxsKSxyLmdvVG8oYHNwZW5kYCxuKX1mdW5jdGlvbiBOKGUpe3R5cGVvZiBlPT1gc3RyaW5nYCYmRmUoZSkmJk0oe2J5OmV9KX1mdW5jdGlvbiB0ZShlKXt0eXBlb2YgZT09YHN0cmluZ2AmJkxlKGUpJiZNKHttZXRyaWM6ZX0pfWZ1bmN0aW9uIFAoZSl7TSh7cmVmOmV9KX1mdW5jdGlvbiBMKGUpe00oe2RyaWxsOmV9KX1sZXQgUj1DKCgpPT5zLnNjb3BlIT09YGFsbGApO2EoW18sRCxqXSwoW2UsdCxuXSk9PntmLnNldFNlbGVjdGlvbih7Ynk6ZSxtZXRyaWM6dCxkcmlsbDpufSl9KSxhKCgpPT5bcy5yYW5nZSxzLmNtcCxzLnNjb3BlXSwoKT0+dm9pZCBmLnJlZnJlc2goKSksbygoKT0+e2YuJHBhdGNoKHtieTpfLnZhbHVlLG1ldHJpYzpELnZhbHVlLGRyaWxsOmoudmFsdWV9KSxkLmVuc3VyZUxvYWRlZCgpLGYuc3RhcnRQb2xsaW5nKCksaCgpfSksZWUoKCk9PntmLnN0b3BQb2xsaW5nKCksZygpfSk7ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIE9lKGUpfWxldCBzZT1DKCgpPT5mLmJ1Y2tldHMubWFwKGU9PnooZSxzLndpbmRvdykpKSxjZT1DKCgpPT57bGV0IGU9Zi5icmVha2Rvd24ubWFwKChlLHQpPT4oe2xhYmVsOmFlKGUuc2NvcGUpLGRhdGE6ZS5wb2ludHMsY29sb3I6TWUodCxOZSl9KSk7cmV0dXJuIGYub3RoZXJQb2ludHMmJmUucHVzaCh7bGFiZWw6YE90aGVyYCxkYXRhOmYub3RoZXJQb2ludHMsY29sb3I6YC0tbXV0ZWQtZm9yZWdyb3VuZGB9KSxlfSksQj1DKCgpPT5mLmNvbXBhcmlzb25Qb2ludHM/W3tsYWJlbDpgVG90YWxgLGRhdGE6Zi5jb21wYXJpc29uUG9pbnRzLGNvbG9yOmAtLWZvcmVncm91bmRgLGxhYmVsU3VmZml4OmAgKHByZXZpb3VzIHBlcmlvZClgfV06W10pLFY9QygoKT0+RC52YWx1ZT09PWBjb3N0YD9VOm9lKSxIPUMoKCk9PmYudG90YWxQb2ludHMucmVkdWNlKChlLHQpPT5lK3QsMCkpLFc9QygoKT0+e2xldCBlPUFlKHMuc2NvcGUpO3JldHVybiBlP2Uua2luZD09PWBncm91cGA/Yy51c2FnZT8uZ3JvdXBzLmZpbmQodD0+dC5pZD09PWUuaWQpPy5jb3N0UGVyTW9udGhNaWNyb1VzZD8/MDplLmtpbmQ9PT1gdXNlcmA/Yy51c2FnZT8udXNlcnMuZmluZCh0PT50LmlkPT09ZS5pZCk/LmNvc3RQZXJNb250aE1pY3JvVXNkPz8wOjA6Yy51c2FnZT8udG90YWwuY29zdFBlck1vbnRoTWljcm9Vc2Q/PzB9KSxLPUMoKCk9PkVlKHMuc2NvcGUsYy5vdmVydmlldz8uZ3JvdXBzPz9bXSxjLnVzYWdlPy51c2Vycz8/W10pKSxxPUMoKCk9PntsZXQgZT1BZShzLnNjb3BlKTtyZXR1cm4hZXx8ZS5raW5kPT09YGdyb3VwYHx8ZS5raW5kPT09YHVzZXJgfSksbGU9QygoKT0+Yy5vdmVydmlldz8uZmVhdHVyZXMudXNlck1vZGVsU3RhdHM/PyExKSx1ZT1DKCgpPT5jLm92ZXJ2aWV3Py5mZWF0dXJlcy5jYWNoZVN0YXRzPz8hMSksSj1DKCgpPT5tdChzLndpbmRvdykpLGZlPUMoKCk9PkoudmFsdWUuYXZhaWxhYmxlKSxwZT1DKCgpPT5KLnZhbHVlLm5vdGUpLFk9QygoKT0+Ryh7bG9hZGluZzpmLmxvYWRpbmcsaGFzRGF0YTpmLmJ1Y2tldHMubGVuZ3RoPjAsZXJyb3I6Zi5icmVha2Rvd25FcnJvcn0pKTtmdW5jdGlvbiBtZSgpe2xldCBlPVtmLmZldGNoUHJpY2luZ0hlYWx0aFJhbmtpbmcoKV07cmV0dXJuIGQuZXJyb3ImJmUucHVzaChkLmZldGNoKCkpLFByb21pc2UuYWxsKGUpLnRoZW4oKCk9PnZvaWQgMCl9cmV0dXJuKGUscik9PihiKCksVChgZGl2YCxodCxbdyhgZGl2YCxndCxbdyhgZGl2YCxfdCxbdyhgZGl2YCx2dCxbclswXXx8PXcoYHNwYW5gLHtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQnJlYWtkb3duYCwtMSksdShPKHJlKSx7Im1vZGVsLXZhbHVlIjpfLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpOfSx7ZGVmYXVsdDppKCgpPT5bdShPKG5lKSxudWxsLHtkZWZhdWx0OmkoKCk9PlsoYighMCksVChsLG51bGwsRShPKFBlKSxlPT4oYigpLG0oTyhpZSkse2tleTplLHZhbHVlOmUsZGlzYWJsZWQ6Ui52YWx1ZX0se2RlZmF1bHQ6aSgoKT0+W3koQSh0W2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYCxgZGlzYWJsZWRgXSkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSx1KEYse2xhYmVsOmBNZXRyaWNgLCJtb2RlbC12YWx1ZSI6RC52YWx1ZSxvcHRpb25zOk8obiksInRyaWdnZXItY2xhc3MiOmB3LTQwYCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dGV9LG51bGwsOCxbYG1vZGVsLXZhbHVlYCxgb3B0aW9uc2BdKV0pLHcoYGRpdmAseXQsW3coYHBgLGJ0LEEoTyhRKVtELnZhbHVlXSkrYCBpbiByYW5nZWAsMSksdyhgcGAseHQsQShWLnZhbHVlKEgudmFsdWUpKSwxKV0pXSksUi52YWx1ZT8oYigpLFQoYHBgLFN0LFtyWzFdfHw9eShgIFNob3dpbmcgYCwtMSksdyhgc3BhbmAsQ3QsQShPKHMpLnNjb3BlKSwxKSxyWzJdfHw9eShgIGRpcmVjdGx5IOKAlCBjbGVhciB0aGUgc2NvcGUgZmlsdGVyIHRvIGJyZWFrIHNwZW5kIGRvd24gYnkgbW9kZWwsIHByb3ZpZGVyLCBvciBncm91cC4gYCwtMSldKSk6eChgYCwhMCksTyhkKS5lcnJvcj8oYigpLFQoYHBgLHd0LEEoTyhkKS5lcnJvciksMSkpOngoYGAsITApLE8oZikucmFua2luZ0Vycm9yPyhiKCksVChgcGAsVHQsQShPKGYpLnJhbmtpbmdFcnJvciksMSkpOngoYGAsITApLE8ocykuY21wU3BlYy5yZXF1ZXN0ZWQmJk8oZikuY29tcGFyaXNvblVuYXZhaWxhYmxlUmVhc29uPyhiKCksVChgcGAsRXQsQShPKGYpLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbiksMSkpOngoYGAsITApLHUoU2Use2JhcmU6YGAsc3RhdGU6WS52YWx1ZSxlcnJvcjpPKGYpLmJyZWFrZG93bkVycm9yLCJvbi1yZXRyeSI6TyhmKS5yZWZyZXNoLGxhYmVsczpzZS52YWx1ZSxkYXRhc2V0czpjZS52YWx1ZSwiY29tcGFyaXNvbi1kYXRhc2V0cyI6Qi52YWx1ZSxzdGFja2VkOmBgLCJ2YWx1ZS1mb3JtYXR0ZXIiOlYudmFsdWUsImFyaWEtbGFiZWwiOmAke08oUSlbRC52YWx1ZV19IGJyZWFrZG93biAke3RbXy52YWx1ZV0udG9Mb3dlckNhc2UoKX0gb3ZlciB0aW1lYH0sbnVsbCw4LFtgc3RhdGVgLGBlcnJvcmAsYG9uLXJldHJ5YCxgbGFiZWxzYCxgZGF0YXNldHNgLGBjb21wYXJpc29uLWRhdGFzZXRzYCxgdmFsdWUtZm9ybWF0dGVyYCxgYXJpYS1sYWJlbGBdKSxPKGYpLmJyZWFrZG93bkVycm9yJiZZLnZhbHVlPT09YHJlYWR5YD8oYigpLFQoYHBgLER0LEEoTyhmKS5icmVha2Rvd25FcnJvciksMSkpOngoYGAsITApLHcoYGRpdmAsT3QsW08oZikuYnVybmRvd25BdmFpbGFibGU/KGIoKSxtKFplLHtrZXk6MCxidWNrZXRzOk8oZikuYnVybmRvd25CdWNrZXRzLHBvaW50czpPKGYpLmJ1cm5kb3duUG9pbnRzLCJidWRnZXQtbWljcm9zIjpPKGYpLmJ1cm5kb3duQnVkZ2V0TWljcm9zLG5vdzpPKHApLGxvYWRpbmc6TyhmKS5idXJuZG93bkxvYWRpbmcsZXJyb3I6TyhmKS5idXJuZG93bkVycm9yLCJvbi1yZXRyeSI6TyhmKS5yZWZyZXNofSxudWxsLDgsW2BidWNrZXRzYCxgcG9pbnRzYCxgYnVkZ2V0LW1pY3Jvc2AsYG5vd2AsYGxvYWRpbmdgLGBlcnJvcmAsYG9uLXJldHJ5YF0pKTp4KGBgLCEwKSxxLnZhbHVlPyhiKCksbShoZSx7a2V5OjEsIm10ZC1taWNyb3MiOlcudmFsdWUsbGltaXRzOksudmFsdWUsbm93Ok8ocCl9LG51bGwsOCxbYG10ZC1taWNyb3NgLGBsaW1pdHNgLGBub3dgXSkpOngoYGAsITApXSksdShjdCx7bW9kZWxzOk8oZikubW9kZWxSYW5raW5nLGNhdGFsb2c6TyhkKS5tb2RlbHNCeUlkLCJyZWYtbW9kZWwiOmsudmFsdWUsImNhY2hlLXN0YXRzLWVuYWJsZWQiOnVlLnZhbHVlLCJjYWNoZS1zYXZpbmdzLWF2YWlsYWJsZSI6ZmUudmFsdWUsImNhY2hlLXNhdmluZ3Mtbm90ZSI6cGUudmFsdWUsIm9uVXBkYXRlOnJlZk1vZGVsIjpQfSxudWxsLDgsW2Btb2RlbHNgLGBjYXRhbG9nYCxgcmVmLW1vZGVsYCxgY2FjaGUtc3RhdHMtZW5hYmxlZGAsYGNhY2hlLXNhdmluZ3MtYXZhaWxhYmxlYCxgY2FjaGUtc2F2aW5ncy1ub3RlYF0pLHUocHQse21vZGVsczpPKGYpLnByaWNpbmdIZWFsdGhSYW5raW5nLGNhdGFsb2c6TyhkKS5tb2RlbHNCeUlkLGxvYWRpbmc6TyhmKS5wcmljaW5nSGVhbHRoTG9hZGluZyxsb2FkZWQ6TyhmKS5wcmljaW5nSGVhbHRoTG9hZGVkLGVycm9yOk8oZikucHJpY2luZ0hlYWx0aEVycm9yfHxPKGQpLmVycm9yLCJvbi1yZXRyeSI6bWV9LG51bGwsOCxbYG1vZGVsc2AsYGNhdGFsb2dgLGBsb2FkaW5nYCxgbG9hZGVkYCxgZXJyb3JgXSksdShxZSx7cm93czpPKGYpLmRyaWxsZG93blJvd3MsbWV0cmljczpPKGYpLmRyaWxsZG93bk1ldHJpY3MsZHJpbGw6ai52YWx1ZSxkaXNhYmxlZDpPKGYpLmRyaWxsZG93bkRpc2FibGVkLCJ1c2VyLW1vZGVsLXN0YXRzLWVuYWJsZWQiOmxlLnZhbHVlLHdpbmRvdzpPKHMpLndpbmRvdyxzcGFuOk8ocykuc3Bhbixsb2FkaW5nOk8oZikuZHJpbGxkb3duTG9hZGluZyxsb2FkZWQ6TyhmKS5kcmlsbGRvd25Mb2FkZWQsZXJyb3I6TyhmKS5kcmlsbGRvd25FcnJvciwib24tcmV0cnkiOk8oZikuZmV0Y2hEcmlsbGRvd24sIm9uVXBkYXRlOmRyaWxsIjpMfSxudWxsLDgsW2Byb3dzYCxgbWV0cmljc2AsYGRyaWxsYCxgZGlzYWJsZWRgLGB1c2VyLW1vZGVsLXN0YXRzLWVuYWJsZWRgLGB3aW5kb3dgLGBzcGFuYCxgbG9hZGluZ2AsYGxvYWRlZGAsYGVycm9yYCxgb24tcmV0cnlgXSldKSl9fSk7ZXhwb3J0e2t0IGFzIGRlZmF1bHR9Ow==",
),
},
"StatDisabledAlert-BJtHRXwE.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0xyIGFzIGUsTyBhcyB0LF9uIGFzIG4sY24gYXMgcixnbiBhcyBpLGlyIGFzIGEsbiBhcyBvLHNuIGFzIHMsdmkgYXMgYyx3aSBhcyBsLHluIGFzIHV9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7XyBhcyBkLGcgYXMgZixoIGFzIHB9ZnJvbSIuL2luZGV4LTg4Q1RSTkhQLmpzIjt2YXIgbT17Y2xhc3M6YGZvbnQtbW9ubyB0ZXh0LXhzYH0saD11KHtfX25hbWU6YFN0YXREaXNhYmxlZEFsZXJ0YCxwcm9wczp7dGl0bGU6e30sY29uZmlnS2V5Ont9LHB1cnBvc2U6e319LHNldHVwKHUpe2xldCBoPXUsZz1vKCk7cmV0dXJuKG8sdSk9PihhKCkscihjKGQpLHt2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6ZSgoKT0+W24oYyhwKSxudWxsLHtkZWZhdWx0OmUoKCk9PltpKGwoaC50aXRsZSksMSldKSxfOjF9KSxuKGMoZikse2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSx7ZGVmYXVsdDplKCgpPT5bcyhgc3BhbmAsbnVsbCxbdVsxXXx8PWkoYEVuYWJsZSBgLC0xKSxzKGBjb2RlYCxtLGwoaC5jb25maWdLZXkpLDEpLGkoYCBpbiB0aGUgbWlkZGxld2FyZSBjb25maWcgYCtsKGgucHVycG9zZSksMSldKSxuKGModCkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6dVswXXx8PWU9PmMoZykuZ29UbyhgY29uZmlnYCl9LHtkZWZhdWx0OmUoKCk9PlsuLi51WzJdfHw9W2koYE9wZW4gQ29uZmlnYCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0pKX19KTtleHBvcnR7aCBhcyB0fTs=",
),
},
"TargetsPage-BL0aofsX.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsRCBhcyB0LEUgYXMgbixMciBhcyByLE1yIGFzIGksUyBhcyBhLFQgYXMgbyxYdCBhcyBzLF9uIGFzIGMsYiBhcyBsLGMgYXMgdSxjaSBhcyBkLGNuIGFzIGYsZWkgYXMgcCxmIGFzIG0sZyBhcyBoLGduIGFzIGcsaXIgYXMgXyxsbiBhcyB2LG4gYXMgeSxvaSBhcyBiLG9uIGFzIHgsdW4gYXMgUyx2aSBhcyBDLHcsd2kgYXMgVCx5biBhcyBFfWZyb20iLi9Ta2VsZXRvbi1EME5udkhZMS5qcyI7aW1wb3J0e18gYXMgRCxnIGFzIE8sbCBhcyBrLHQgYXMgQX1mcm9tIi4vaW5kZXgtODhDVFJOSFAuanMiO2ltcG9ydHt0IGFzIGp9ZnJvbSIuL0Vycm9yU3RhdGUtRERKT0tKbHouanMiO2ltcG9ydHtTIGFzIE0sYyBhcyBOLGsgYXMgUCx0IGFzIEYsdSBhcyBJLHggYXMgTH1mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHtpIGFzIFIsdCBhcyB6fWZyb20iLi9jb2x1bW5zLUNvZWNuZjc0LmpzIjtpbXBvcnR7dCBhcyBCfWZyb20iLi9Mb2FkU3RhdGVWaWV3LUJFYnNleDdZLmpzIjtpbXBvcnR7biBhcyBWLHQgYXMgSH1mcm9tIi4vdXNlU2VhcmNoUXVlcnktQlNrQzhiR2QuanMiO2ltcG9ydHt0IGFzIFV9ZnJvbSIuL0NsYW1wZWRSYW5nZU5vdGljZS1DaF9IcXlCTy5qcyI7dmFyIFc9YG5vdCBvYnNlcnZlZCB5ZXQg4oCUIG5vIHRyYWZmaWMgYW5kIHByb2JlcyBkaXNhYmxlZCBvciBub3QgeWV0IHJ1bmA7ZnVuY3Rpb24gRyhlKXtsZXQgdD1OKGUubGFzdENoZWNrKTtyZXR1cm4gdD9gdW5oZWFsdGh5ICgke3R9KWA6YHVuaGVhbHRoeWB9ZnVuY3Rpb24gSyhlKXtsZXQgdD1lLmNvbnNlY3V0aXZlRmFpbHVyZXM9PT0xP2BmYWlsdXJlYDpgZmFpbHVyZXNgLG49ZS5zb3VyY2U/YCB2aWEgJHtlLnNvdXJjZX1gOmBgLHI9YCR7ZS5jb25zZWN1dGl2ZUZhaWx1cmVzfSBjb25zZWN1dGl2ZSAke3R9JHtufWA7cmV0dXJuIGUubGFzdEVycm9yP2Ake3J9OiAke2UubGFzdEVycm9yfWA6cn1mdW5jdGlvbiBxKGUpe2xldCB0PU4oZS5sYXN0Q2hlY2spO3JldHVybiB0P2Uuc291cmNlP2Ake3R9IHZpYSAke2Uuc291cmNlfWA6dDplLnNvdXJjZT9gdmlhICR7ZS5zb3VyY2V9YDpgYH1mdW5jdGlvbiBKKGUpe2lmKGUuY29uc2VjdXRpdmVGYWlsdXJlczw9MCYmIWUubGFzdEVycm9yKXJldHVybiBXO2xldCB0PWUuY29uc2VjdXRpdmVGYWlsdXJlcz09PTE/YGZhaWx1cmVgOmBmYWlsdXJlc2Asbj1lLnNvdXJjZT9gIHZpYSAke2Uuc291cmNlfWA6YGAscj1gJHtlLmNvbnNlY3V0aXZlRmFpbHVyZXN9ICR7dH0gc28gZmFyJHtufWA7cmV0dXJuIGUubGFzdEVycm9yP2Ake3J9OiAke2UubGFzdEVycm9yfWA6cn1mdW5jdGlvbiBZKHQpe2lmKHQuc3RhdGU9PT1gdW5oZWFsdGh5YClyZXR1cm4gZShGLHthczpgc3BhbmAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6Syh0KX0sKCk9PkcodCkpO2lmKHQuc3RhdGU9PT1gaGVhbHRoeWApe2xldCBuPXQubGF0ZW5jeU1zPT09dm9pZCAwP2BgOmAgwrcgJHtJKHQubGF0ZW5jeU1zKX1gO3JldHVybiBlKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsdGl0bGU6cSh0KX0sYGhlYWx0aHkke259YCl9cmV0dXJuIGUoRix7YXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6Sih0KX0sKCk9PmB1bmtub3duYCl9ZnVuY3Rpb24gWCh0KXtyZXR1cm5be2lkOmBuYW1lYCxoZWFkZXI6YE5hbWVgLGFjY2Vzc29yRm46ZT0+ZS5uYW1lLGNlbGw6KHtyb3c6bn0pPT50P2UoYGJ1dHRvbmAse3R5cGU6YGJ1dHRvbmAsY2xhc3M6YGN1cnNvci1wb2ludGVyIHJvdW5kZWQtc20gZm9udC1tZWRpdW0gaG92ZXI6dGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MGAsdGl0bGU6YFZpZXcgJHtuLm9yaWdpbmFsLm5hbWV9J3MgY2FsbGVyc2Asb25DbGljazplPT57ZS5zdG9wUHJvcGFnYXRpb24oKSx0KG4ub3JpZ2luYWwpfX0sbi5vcmlnaW5hbC5uYW1lKTplKGBzcGFuYCx7Y2xhc3M6YGZvbnQtbWVkaXVtYH0sbi5vcmlnaW5hbC5uYW1lKX0se2lkOmB1cmxgLGhlYWRlcjpgVVJMYCxhY2Nlc3NvckZuOmU9PmUudXJsLGNlbGw6KHtyb3c6dH0pPT5lKGBzcGFuYCx7Y2xhc3M6YGJsb2NrIG1heC13LXhzIHRydW5jYXRlIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsdGl0bGU6dC5vcmlnaW5hbC51cmx9LHQub3JpZ2luYWwudXJsKX0se2lkOmBoZWFsdGhgLGhlYWRlcjpgSGVhbHRoYCxlbmFibGVTb3J0aW5nOiExLGFjY2Vzc29yRm46ZT0+ZS5oZWFsdGguc3RhdGUsY2VsbDooe3JvdzplfSk9PlkoZS5vcmlnaW5hbC5oZWFsdGgpfSx7aWQ6YGFjY2Vzc2AsaGVhZGVyOmBBY2Nlc3NgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT4oZS5hY2Nlc3M/P1tdKS5qb2luKGAsIGApLGNlbGw6KHtyb3c6dH0pPT57bGV0IG49dC5vcmlnaW5hbC5hY2Nlc3M7cmV0dXJuIG49PW51bGw/ZShgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQWxsIGdyb3Vwc2ApOm4ubGVuZ3RoPT09MD9lKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBObyBncm91cHNgKTplKGBkaXZgLHtjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LG4ubWFwKHQ9PmUoRix7a2V5OnQsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbW9ubyBmb250LW5vcm1hbGB9LCgpPT50KSkpfX0seihgcmVxTWluYCxgcmVxL21pbmAsZT0+ZS5jb3VudGVycy5yZXF1ZXN0c1Blck1pbnV0ZSkseihgcmVxRGF5YCxgcmVxL2RheWAsZT0+ZS5jb3VudGVycy5yZXF1ZXN0c1BlckRheSkseihgcmVxTW9udGhgLGByZXEvbW9udGhgLGU9PmUuY291bnRlcnMucmVxdWVzdHNQZXJNb250aCldfWZ1bmN0aW9uIFooZSx0KXtyZXR1cm5gJHtlfS8ke3R9YH1mdW5jdGlvbiBlZShlKXtsZXQgdD1lLmluZGV4T2YoYC9gKTtpZih0PT09LTEpcmV0dXJuIG51bGw7bGV0IG49ZS5zbGljZSgwLHQpLHI9ZS5zbGljZSh0KzEpO3JldHVybiByPT09YGB8fG4hPT1gbWNwYCYmbiE9PWBhZ2VudGA/bnVsbDp7a2luZDpuLG5hbWU6cn19ZnVuY3Rpb24gdGUoZSx0KXtsZXQgbj1lZShlKTtpZihuKXJldHVybntraW5kOmByZWZgLHJlZjpaKG4ua2luZCxuLm5hbWUpLG5hbWU6bi5uYW1lfTtpZih0PT09bnVsbClyZXR1cm57a2luZDpgcGVuZGluZ2B9O2xldCByPXQubWNwU2VydmVycy5zb21lKHQ9PnQubmFtZT09PWUpLGk9dC5hZ2VudHMuc29tZSh0PT50Lm5hbWU9PT1lKTtyZXR1cm4gciYmaT97a2luZDpgbm90aWNlYCxtZXNzYWdlOmAiJHtlfSIgbWF0Y2hlcyBib3RoIGFuIE1DUCBzZXJ2ZXIgYW5kIGFuIGFnZW50IOKAlCB1c2UgIm1jcC8ke2V9IiBvciAiYWdlbnQvJHtlfSIgdG8gcGljayBvbmUuYH06cj97a2luZDpgcmVmYCxyZWY6WihgbWNwYCxlKSxuYW1lOmV9Omk/e2tpbmQ6YHJlZmAscmVmOlooYGFnZW50YCxlKSxuYW1lOmV9OntraW5kOmBub3RpY2VgLG1lc3NhZ2U6YE5vIE1DUCBzZXJ2ZXIgb3IgYWdlbnQgbmFtZWQgIiR7ZX0iIGlzIGNvbmZpZ3VyZWQuYH19ZnVuY3Rpb24gUShlKXtsZXQgdD1lLmluZGV4T2YoYC9gKTtpZih0PT09LTEpcmV0dXJue2tpbmQ6YGAsdGFyZ2V0OmBgLGNhbGxlcjplfTtsZXQgbj1lLnNsaWNlKDAsdCkscj1lLnNsaWNlKHQrMSksaT1yLmluZGV4T2YoYC9gKTtyZXR1cm4gaT09PS0xP3traW5kOm4sdGFyZ2V0OnIsY2FsbGVyOmBgfTp7a2luZDpuLHRhcmdldDpyLnNsaWNlKDAsaSksY2FsbGVyOnIuc2xpY2UoaSsxKX19ZnVuY3Rpb24gbmUodCl7bGV0IG49W107cmV0dXJuIHQmJm4ucHVzaCh7aWQ6YHRhcmdldGAsaGVhZGVyOmBUYXJnZXRgLGFjY2Vzc29yRm46ZT0+e2xldCB0PVEoZS5pZCk7cmV0dXJuYCR7dC5raW5kfS8ke3QudGFyZ2V0fWB9LGNlbGw6KHtyb3c6dH0pPT57bGV0IG49USh0Lm9yaWdpbmFsLmlkKTtyZXR1cm4gZShgc3BhbmAse2NsYXNzOmBmb250LW1vbm8gdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgJHtuLmtpbmR9LyR7bi50YXJnZXR9YCl9fSksbi5wdXNoKHtpZDpgY2FsbGVyYCxoZWFkZXI6YENhbGxlcmAsYWNjZXNzb3JGbjplPT5RKGUuaWQpLmNhbGxlcnx8ZS5pZCxjZWxsOih7cm93OnR9KT0+e2xldCBuPVEodC5vcmlnaW5hbC5pZCkuY2FsbGVyO3JldHVybiBlKGBzcGFuYCx7Y2xhc3M6YGZvbnQtbWVkaXVtYH0sbnx8dC5vcmlnaW5hbC5pZCl9fSksbi5wdXNoKHooYHJlcXVlc3RzYCxgUmVxdWVzdHNgLGU9PmUudmFsdWVzLnJlcT8/MCkpLG59dmFyICQ9RSh7X19uYW1lOmBUYXJnZXRDYWxsZXJzYCxwcm9wczp7dGFyZ2V0Ont9LHRpdGxlOnt9LGxpbWl0OntkZWZhdWx0OjEwfX0sc2V0dXAoZSl7bGV0IHM9ZSxwPUEoKSxoPWQoW10pLHY9ZCghMSkseT1kKCExKSxiPWQoYGApLFM9MDthc3luYyBmdW5jdGlvbiBFKCl7bGV0IGU9KytTO3YudmFsdWU9ITAsaC52YWx1ZT1bXSx5LnZhbHVlPSExLGIudmFsdWU9YGA7dHJ5e2xldHt3aW5kb3c6dCxzcGFuOm59PXUocC53aW5kb3cscC5zcGFuKSxyPWF3YWl0IGwobSh7a2luZDpgdGFyZ2V0Y2FsbGVyYCx3aW5kb3c6dCxzcGFuOm4sbWV0cmljczpbYHJlcWBdLGxpbWl0OnMubGltaXQsdGFyZ2V0OnMudGFyZ2V0fSkpO2lmKGUhPT1TKXJldHVybjtoLnZhbHVlPXIucm93cyx5LnZhbHVlPSEwfWNhdGNoKHQpe2lmKGUhPT1TKXJldHVybjtiLnZhbHVlPWEodCl9ZmluYWxseXtlPT09UyYmKHYudmFsdWU9ITEpfX1pKFsoKT0+cy50YXJnZXQsKCk9PnAud2luZG93LCgpPT5wLnNwYW5dLCgpPT52b2lkIEUoKSx7aW1tZWRpYXRlOiEwfSk7bGV0IEQ9eCgoKT0+bmUoIXMudGFyZ2V0KSksTz14KCgpPT5MKHtsb2FkaW5nOnYudmFsdWUsaGFzRGF0YTp5LnZhbHVlLGVycm9yOmIudmFsdWV9KSk7cmV0dXJuKGksYSk9PihfKCksZihDKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2MoQyhvKSxudWxsLHtkZWZhdWx0OnIoKCk9PltjKEModyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bZyhUKGUudGl0bGUpLDEpXSksXzoxfSksYyhDKGspLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmFbMF18fD1bZyhgUmFua2VkIGJ5IHJlcXVlc3RzLCBtb3N0IHJlY2VudCBkYXkvbW9udGggd2luZG93IGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgcmFuZ2UuYCwtMSldXSksXzoxfSldKSxfOjF9KSxjKEMobikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zYH0se2RlZmF1bHQ6cigoKT0+W2MoVSx7d2luZG93OkMocCkud2luZG93LHNwYW46QyhwKS5zcGFufSxudWxsLDgsW2B3aW5kb3dgLGBzcGFuYF0pLGMoQix7c3RhdGU6Ty52YWx1ZSxlcnJvcjpiLnZhbHVlLCJvbi1yZXRyeSI6RSxza2VsZXRvbjpgdGFibGVgLHJvd3M6NSxjb2xzOkQudmFsdWUubGVuZ3RofSx7ZGVmYXVsdDpyKCgpPT5bYyhSLHtjb2x1bW5zOkQudmFsdWUsZGF0YTpoLnZhbHVlLCJlbXB0eS1tZXNzYWdlIjpgbm8gY2FsbGVycyByZWNvcmRlZCBpbiB0aGlzIHdpbmRvd2B9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYF0pXSksXzoxfSw4LFtgc3RhdGVgLGBlcnJvcmAsYGNvbHNgXSldKSxfOjF9KV0pLF86MX0pKX19KSxyZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxpZT1FKHtfX25hbWU6YFRhcmdldHNWaWV3YCxlbWl0czpbYHNlbGVjdGBdLHNldHVwKGUse2VtaXQ6aX0pe2xldCBhPWgoKSxsPXgoKCk9PmEudGFyZ2V0cyksdT1pO2Z1bmN0aW9uIGQoZSl7cmV0dXJuIHQ9PnUoYHNlbGVjdGAsWihlLHQubmFtZSksdC5uYW1lKX1sZXR7cXVlcnk6bSxub3JtYWxpemVkOnYsaGFzUXVlcnk6eX09SCgpO2Z1bmN0aW9uIGIoZSl7cmV0dXJuIGUubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHYudmFsdWUpfWxldCBUPXgoKCk9PntsZXQgZT1sLnZhbHVlPy5tY3BTZXJ2ZXJzPz9bXTtyZXR1cm4geS52YWx1ZT9lLmZpbHRlcihiKTplfSksRT14KCgpPT57bGV0IGU9bC52YWx1ZT8uYWdlbnRzPz9bXTtyZXR1cm4geS52YWx1ZT9lLmZpbHRlcihiKTplfSk7ZnVuY3Rpb24gRChlLHQpe3JldHVybiBlP3kudmFsdWUmJnQ9PT0wP2BubyB0YXJnZXRzIG1hdGNoICIke20udmFsdWV9ImA6YG5vbmVgOmBub25lIGNvbmZpZ3VyZWRgfWxldCBPPXgoKCk9PkQobC52YWx1ZT8ubWNwU2VydmVycy5sZW5ndGg/PzAsVC52YWx1ZS5sZW5ndGgpKSxBPXgoKCk9PkQobC52YWx1ZT8uYWdlbnRzLmxlbmd0aD8/MCxFLnZhbHVlLmxlbmd0aCkpLE49eCgoKT0+TCh7bG9hZGluZzohMCxoYXNEYXRhOmEudGFyZ2V0cyE9PW51bGwsZXJyb3I6YS5lcnJvcn0pKSxGPXgoKCk9Pk4udmFsdWU9PT1gcmVhZHlgJiYobC52YWx1ZT8ubWNwU2VydmVycy5sZW5ndGg/PzApPT09MCYmKGwudmFsdWU/LmFnZW50cy5sZW5ndGg/PzApPT09MCksST1YKGQoYG1jcGApKSx6PVgoZChgYWdlbnRgKSk7cmV0dXJuKGUsaSk9PihfKCksUyhgZGl2YCxyZSxbYyhWLHttb2RlbFZhbHVlOkMobSksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMF18fD1lPT5wKG0pP20udmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgTUNQIHNlcnZlcnMgb3IgYWdlbnRzYCxjbGFzczpgbWF4LXctc21gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLEYudmFsdWU/KF8oKSxmKEModCkse2tleTowfSx7ZGVmYXVsdDpyKCgpPT5bYyhDKG4pLG51bGwse2RlZmF1bHQ6cigoKT0+W2MoUCx7dGl0bGU6YE5vIE1DUCBzZXJ2ZXJzIG9yIGFnZW50cyBjb25maWd1cmVkLmAsZGVzY3JpcHRpb246YEFkZCBhbiBtY3BTZXJ2ZXJzIG9yIGFnZW50cyBlbnRyeSB0byB0aGUgbWlkZGxld2FyZSBjb25maWcgdG8gc2VlIHRoZW0gaGVyZS5gfSldKSxfOjF9KV0pLF86MX0pKTooXygpLFMocyx7a2V5OjF9LFtjKEModCksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bYyhDKG8pLG51bGwse2RlZmF1bHQ6cigoKT0+W2MoQyh3KSxudWxsLHtkZWZhdWx0OnIoKCk9PlsuLi5pWzFdfHw9W2coYE1DUCBzZXJ2ZXJzYCwtMSldXSksXzoxfSksYyhDKGspLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLmlbMl18fD1bZyhgIENvbmZpZ3VyZWQgTUNQIHByb3h5IHRhcmdldHMsIHRoZSBncm91cHMgYWxsb3dlZCB0byByZWFjaCB0aGVtLCBhbmQgdGhlaXIgcmVxdWVzdCBjb3VudGVycy4gQ2xpY2sgYSBuYW1lIHRvIHNlZSBpdHMgY2FsbGVycy4gYCwtMSldXSksXzoxfSldKSxfOjF9KSxjKEMobiksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bTi52YWx1ZT09PWBza2VsZXRvbmA/KF8oKSxmKE0se2tleTowLHJvd3M6Myxjb2xzOkMoSSkubGVuZ3RofSxudWxsLDgsW2Bjb2xzYF0pKTpOLnZhbHVlPT09YGVycm9yYD8oXygpLGYoaix7a2V5OjEsbWVzc2FnZTpDKGEpLmVycm9yfSxudWxsLDgsW2BtZXNzYWdlYF0pKTooXygpLGYoUix7a2V5OjIsY29sdW1uczpDKEkpLGRhdGE6VC52YWx1ZSwiZW1wdHktbWVzc2FnZSI6Ty52YWx1ZX0sbnVsbCw4LFtgY29sdW1uc2AsYGRhdGFgLGBlbXB0eS1tZXNzYWdlYF0pKV0pLF86MX0pXSksXzoxfSksYyhDKHQpLG51bGwse2RlZmF1bHQ6cigoKT0+W2MoQyhvKSxudWxsLHtkZWZhdWx0OnIoKCk9PltjKEModyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uaVszXXx8PVtnKGBBZ2VudHNgLC0xKV1dKSxfOjF9KSxjKEMoayksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uaVs0XXx8PVtnKGAgQ29uZmlndXJlZCBBMkEgYWdlbnQgcHJveHkgdGFyZ2V0cywgdGhlIGdyb3VwcyBhbGxvd2VkIHRvIHJlYWNoIHRoZW0sIGFuZCB0aGVpciByZXF1ZXN0IGNvdW50ZXJzLiBDbGljayBhIG5hbWUgdG8gc2VlIGl0cyBjYWxsZXJzLiBgLC0xKV1dKSxfOjF9KV0pLF86MX0pLGMoQyhuKSxudWxsLHtkZWZhdWx0OnIoKCk9PltOLnZhbHVlPT09YHNrZWxldG9uYD8oXygpLGYoTSx7a2V5OjAscm93czozLGNvbHM6Qyh6KS5sZW5ndGh9LG51bGwsOCxbYGNvbHNgXSkpOk4udmFsdWU9PT1gZXJyb3JgPyhfKCksZihqLHtrZXk6MSxtZXNzYWdlOkMoYSkuZXJyb3J9LG51bGwsOCxbYG1lc3NhZ2VgXSkpOihfKCksZihSLHtrZXk6Mixjb2x1bW5zOkMoeiksZGF0YTpFLnZhbHVlLCJlbXB0eS1tZXNzYWdlIjpBLnZhbHVlfSxudWxsLDgsW2Bjb2x1bW5zYCxgZGF0YWAsYGVtcHR5LW1lc3NhZ2VgXSkpXSksXzoxfSldKSxfOjF9KV0sNjQpKV0pKX19KSxhZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxvZT1FKHtfX25hbWU6YFRhcmdldHNQYWdlYCxzZXR1cChlKXtsZXQgdD15KCksbj1oKCksaT14KCgpPT50LnBhcmFtcy50YXJnZXQ/P2BgKSxhPXgoKCk9PmkudmFsdWU9PT1gYD9udWxsOnRlKGkudmFsdWUsbi50YXJnZXRzKSksbz1iKHt9KSxzPXgoKCk9PntsZXQgZT1hLnZhbHVlO3JldHVybiBvW2kudmFsdWVdPz8oZT8ua2luZD09PWByZWZgP2UubmFtZTppLnZhbHVlKX0pO2Z1bmN0aW9uIGwoZSxuKXtvW2VdPW4sdC5nb1RvKGB0YXJnZXRzYCx7Li4udC5wYXJhbXMsdGFyZ2V0OmV9KX1yZXR1cm4oZSx0KT0+KF8oKSxTKGBkaXZgLGFlLFtjKGllLHtvblNlbGVjdDpsfSksYS52YWx1ZT8ua2luZD09PWByZWZgPyhfKCksZigkLHtrZXk6MCx0YXJnZXQ6YS52YWx1ZS5yZWYsdGl0bGU6YENhbGxlcnMgb2YgJHtzLnZhbHVlfWB9LG51bGwsOCxbYHRhcmdldGAsYHRpdGxlYF0pKTphLnZhbHVlPy5raW5kPT09YG5vdGljZWA/KF8oKSxmKEMoRCkse2tleToxLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6cigoKT0+W2MoQyhPKSxudWxsLHtkZWZhdWx0OnIoKCk9PltnKFQoYS52YWx1ZS5tZXNzYWdlKSwxKV0pLF86MX0pXSksXzoxfSkpOnYoYGAsITApLGMoJCx7dGl0bGU6YFRvcCBjYWxsZXJzLCBhY3Jvc3MgZXZlcnkgdGFyZ2V0YH0pXSkpfX0pO2V4cG9ydHtvZSBhcyBkZWZhdWx0fTs=",
),
},
"TryLongerRangeButton-Bh19yiv8.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0xyIGFzIGUsTyBhcyB0LGNuIGFzIG4sZ24gYXMgcixpLGlyIGFzIGEsbG4gYXMgbyxvbiBhcyBzLHZpIGFzIGMseW4gYXMgbH1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHt0IGFzIHV9ZnJvbSIuL2luZGV4LTg4Q1RSTkhQLmpzIjtpbXBvcnR7YiBhcyBkfWZyb20iLi9iYWRnZS1CSkxnLVIzTS5qcyI7ZnVuY3Rpb24gZihlKXtsZXQgdD1lLmdldFVUQ0Z1bGxZZWFyKCksbj1lLmdldFVUQ01vbnRoKCkscj1EYXRlLlVUQyh0LG4sMSksaT1EYXRlLlVUQyh0LG4rMSwxKTtyZXR1cm4oZS5nZXRUaW1lKCktcikvKGktcil9ZnVuY3Rpb24gcChlLHQpe3JldHVybiB0PC4wMj9udWxsOk1hdGgucm91bmQoZS90KX1mdW5jdGlvbiBtKGUsdCl7aWYoZT09PW51bGx8fHQ9PT12b2lkIDB8fHQ8PTApcmV0dXJue2xpbWl0TWljcm9zOm51bGwscmVtYWluaW5nTWljcm9zOm51bGwsd2lsbEV4Y2VlZDohMX07bGV0IG49ZCh0KSxyPW4tZTtyZXR1cm57bGltaXRNaWNyb3M6bixyZW1haW5pbmdNaWNyb3M6cix3aWxsRXhjZWVkOnI8MH19dmFyIGg9YG5vdCBlbm91Z2ggZGF0YSB5ZXRgLGc9YFByb2plY3RlZCB0byBleGNlZWQgdGhlIGNvbmZpZ3VyZWQgY29zdC9tb250aCBsaW1pdGA7ZnVuY3Rpb24gXyhlLHQpe2xldCBuPXAoZS5jb3N0UGVyTW9udGhNaWNyb1VzZCxmKHQpKTtyZXR1cm4gbj09PW51bGw/e21pY3JvczpudWxsLHdpbGxFeGNlZWQ6ITF9OnttaWNyb3M6bix3aWxsRXhjZWVkOm0obixlLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEKS53aWxsRXhjZWVkfX12YXIgdj1sKHtfX25hbWU6YFRyeUxvbmdlclJhbmdlQnV0dG9uYCxzZXR1cChsKXtsZXQgZD11KCksZj1zKCgpPT57bGV0IGU9aS5pbmRleE9mKGQucmFuZ2UpO3JldHVybiBpW2UrMV0/P251bGx9KTtmdW5jdGlvbiBwKCl7Zi52YWx1ZSYmZC5zZXRGaWx0ZXJzKHtyYW5nZTpmLnZhbHVlfSl9cmV0dXJuKGkscyk9PmYudmFsdWU/KGEoKSxuKGModCkse2tleTowLHR5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLG9uQ2xpY2s6cH0se2RlZmF1bHQ6ZSgoKT0+Wy4uLnNbMF18fD1bcihgVHJ5IGEgbG9uZ2VyIHJhbmdlYCwtMSldXSksXzoxfSkpOm8oYGAsITApfX0pO2V4cG9ydHtfIGFzIGEsbSBhcyBpLGggYXMgbixmIGFzIG8sZyBhcyByLHAgYXMgcyx2IGFzIHR9Ow==",
),
},
"badge-BJLg-R3M.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0sgYXMgZSxMciBhcyB0LFUgYXMgbixXbiBhcyByLFh0IGFzIGksX24gYXMgYSxjbiBhcyBvLGRyIGFzIHMsZnIgYXMgYyxpciBhcyBsLGsgYXMgdSxsbiBhcyBkLHEgYXMgZixzbiBhcyBwLHQgYXMgbSx1biBhcyBoLHVyIGFzIGcsdXQgYXMgXyx2aSBhcyB2LHdpIGFzIHkseGkgYXMgYix5biBhcyB4fWZyb20iLi9Ta2VsZXRvbi1EME5udkhZMS5qcyI7dmFyIFM9e3JvbGU6YHN0YXR1c2AsY2xhc3M6YGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGdhcC0yIHB4LTQgcHktOCB0ZXh0LWNlbnRlcmB9LEM9e2NsYXNzOmB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZGB9LHc9e2tleTowLGNsYXNzOmBtYXgtdy1zbSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFQ9e2tleToxLGNsYXNzOmBtdC0xYH0sRT14KHtfX25hbWU6YEVtcHR5U3RhdGVgLHByb3BzOntpY29uOntkZWZhdWx0OigpPT5ffSx0aXRsZTp7fSxkZXNjcmlwdGlvbjp7fX0sc2V0dXAoZSl7cmV0dXJuKHQsbik9PntsZXQgcj1jKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gbCgpLGgoYGRpdmAsUyxbYShyLHtpY29uOmUuaWNvbixjbGFzczpgc2l6ZS02IHRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkscChgcGAsQyx5KGUudGl0bGUpLDEpLGUuZGVzY3JpcHRpb24/KGwoKSxoKGBwYCx3LHkoZS5kZXNjcmlwdGlvbiksMSkpOmQoYGAsITApLHQuJHNsb3RzLmRlZmF1bHQ/KGwoKSxoKGBkaXZgLFQsW3ModC4kc2xvdHMsYGRlZmF1bHRgKV0pKTpkKGBgLCEwKV0pfX19KSxEPXsiZGF0YS1zbG90IjpgdGFibGUtY29udGFpbmVyYCxjbGFzczpgcmVsYXRpdmUgdy1mdWxsIG92ZXJmbG93LXgtYXV0b2B9LE89eCh7X19uYW1lOmBUYWJsZWAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cCh0KXtsZXQgbj10O3JldHVybih0LHIpPT4obCgpLGgoYGRpdmAsRCxbcChgdGFibGVgLHsiZGF0YS1zbG90IjpgdGFibGVgLGNsYXNzOmIodihlKShgdy1mdWxsIGNhcHRpb24tYm90dG9tIHRleHQtc21gLG4uY2xhc3MpKX0sW3ModC4kc2xvdHMsYGRlZmF1bHRgKV0sMildKSl9fSksaz14KHtfX25hbWU6YFRhYmxlQm9keWAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cCh0KXtsZXQgbj10O3JldHVybih0LHIpPT4obCgpLGgoYHRib2R5YCx7ImRhdGEtc2xvdCI6YHRhYmxlLWJvZHlgLGNsYXNzOmIodihlKShgWyZfdHI6bGFzdC1jaGlsZF06Ym9yZGVyLTBgLG4uY2xhc3MpKX0sW3ModC4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLEE9eCh7X19uYW1lOmBUYWJsZUNlbGxgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAodCl7bGV0IG49dDtyZXR1cm4odCxyKT0+KGwoKSxoKGB0ZGAseyJkYXRhLXNsb3QiOmB0YWJsZS1jZWxsYCxjbGFzczpiKHYoZSkoYHAtMiBhbGlnbi1taWRkbGUgd2hpdGVzcGFjZS1ub3dyYXAgWyY6aGFzKFtyb2xlPWNoZWNrYm94XSldOnByLTBgLG4uY2xhc3MpKX0sW3ModC4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLGo9eCh7X19uYW1lOmBUYWJsZVJvd2AscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cCh0KXtsZXQgbj10O3JldHVybih0LHIpPT4obCgpLGgoYHRyYCx7ImRhdGEtc2xvdCI6YHRhYmxlLXJvd2AsY2xhc3M6Yih2KGUpKGBob3ZlcjpiZy1tdXRlZC81MCBkYXRhLVtzdGF0ZT1zZWxlY3RlZF06YmctbXV0ZWQgYm9yZGVyLWIgdHJhbnNpdGlvbi1jb2xvcnMgaGFzLWFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQvNTBgLG4uY2xhc3MpKX0sW3ModC4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLE09eCh7X19uYW1lOmBUYWJsZUhlYWRgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAodCl7bGV0IG49dDtyZXR1cm4odCxyKT0+KGwoKSxoKGB0aGAseyJkYXRhLXNsb3QiOmB0YWJsZS1oZWFkYCxjbGFzczpiKHYoZSkoYHRleHQtZm9yZWdyb3VuZCBoLTEwIHB4LTIgdGV4dC1sZWZ0IGFsaWduLW1pZGRsZSBmb250LW1lZGl1bSB3aGl0ZXNwYWNlLW5vd3JhcCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMGAsbi5jbGFzcykpfSxbcyh0LiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksTj14KHtfX25hbWU6YFRhYmxlSGVhZGVyYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKHQpe2xldCBuPXQ7cmV0dXJuKHQscik9PihsKCksaChgdGhlYWRgLHsiZGF0YS1zbG90IjpgdGFibGUtaGVhZGVyYCxjbGFzczpiKHYoZSkoYFsmX3RyXTpib3JkZXItYmAsbi5jbGFzcykpfSxbcyh0LiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksZWU9eCh7X19uYW1lOmBTa2VsZXRvblRhYmxlYCxwcm9wczp7cm93czp7ZGVmYXVsdDo1fSxjb2xzOntkZWZhdWx0OjR9fSxzZXR1cChlKXtyZXR1cm4obixyKT0+KGwoKSxvKHYoTyksbnVsbCx7ZGVmYXVsdDp0KCgpPT5bYSh2KE4pLG51bGwse2RlZmF1bHQ6dCgoKT0+W2EodihqKSxudWxsLHtkZWZhdWx0OnQoKCk9PlsobCghMCksaChpLG51bGwsZyhlLmNvbHMsZT0+KGwoKSxvKHYoTSkse2tleTplfSx7ZGVmYXVsdDp0KCgpPT5bYSh2KG0pLHtjbGFzczpgaC00IHctMTZgfSldKSxfOjF9KSkpLDEyOCkpXSksXzoxfSldKSxfOjF9KSxhKHYoayksbnVsbCx7ZGVmYXVsdDp0KCgpPT5bKGwoITApLGgoaSxudWxsLGcoZS5yb3dzLG49PihsKCksbyh2KGopLHtrZXk6bn0se2RlZmF1bHQ6dCgoKT0+WyhsKCEwKSxoKGksbnVsbCxnKGUuY29scyxlPT4obCgpLG8odihBKSx7a2V5OmV9LHtkZWZhdWx0OnQoKCk9PlthKHYobSkse2NsYXNzOmBoLTQgdy1mdWxsIG1heC13LTMyYH0pXSksXzoxfSkpKSwxMjgpKV0pLF86MX0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBQKHtsb2FkaW5nOmUsaGFzRGF0YTp0LGVycm9yOm59KXtyZXR1cm4gdD9gcmVhZHlgOm4/YGVycm9yYDplP2Bza2VsZXRvbmA6YGVtcHR5YH1mdW5jdGlvbiBGKGUsdCl7cmV0dXJuYCR7ZX0vJHt0fWB9dmFyIEk9MWU2O2Z1bmN0aW9uIEwoZSl7cmV0dXJuIE1hdGgucm91bmQoZSpJKX1mdW5jdGlvbiBSKGUpe3JldHVybiBlL0l9ZnVuY3Rpb24geihlKXtyZXR1cm5gJCR7UihlKS50b0ZpeGVkKDQpfWB9ZnVuY3Rpb24gQihlKXtyZXR1cm4gZS50b0xvY2FsZURhdGVTdHJpbmcodm9pZCAwLHttb250aDpgc2hvcnRgLGRheTpgbnVtZXJpY2B9KX1mdW5jdGlvbiBWKGUpe3JldHVybiBlLnRvTG9jYWxlU3RyaW5nKGBlbi1VU2ApfWZ1bmN0aW9uIEgoZSl7bGV0IHQ9TWF0aC5hYnMoZSk7aWYodDwxZTQpcmV0dXJuIFYoZSk7bGV0IG49ZTwwP2AtYDpgYCxbcixpXT10PDFlNj9bMWUzLGBrYF06dDwxZTk/WzFlNixgTWBdOlsxZTksYEJgXSxhPXQvcixvPTMtKE1hdGguZmxvb3IoYSk+PTEwMD8zOk1hdGguZmxvb3IoYSk+PTEwPzI6MSkscz0xMCoqbyxjPShNYXRoLmZsb29yKHQqcy9yKS9zKS50b0ZpeGVkKG8pO3JldHVybiBvPjAmJihjPWMucmVwbGFjZSgvMCskLyxgYCkucmVwbGFjZSgvXC4kLyxgYCkpLGAke259JHtjfSR7aX1gfWZ1bmN0aW9uIFUoZSl7cmV0dXJuIGU+MCYmIShlJmUtMSl9ZnVuY3Rpb24gVyhlKXtyZXR1cm4gZTwxMDI0P2Ake2V9YDpVKGUpP2U8MTA0ODU3Nj9gJHtNYXRoLnJvdW5kKGUvMTAyNCl9a2A6YCR7TWF0aC5yb3VuZChlLzEwNDg1NzYpfU1gOmU8MWU2P2Ake01hdGgucm91bmQoZS8xZTMpfWtgOmAke01hdGgucm91bmQoZS8xZTYpfU1gfWZ1bmN0aW9uIEcoZSl7cmV0dXJuYCQke2UudG9GaXhlZCgyKX1gfWZ1bmN0aW9uIEsoZSx0KXtyZXR1cm4gZT09PTAmJnQ9PT0wP2BmcmVlYDpgaW4gJHtHKGUpfSAvIG91dCAke0codCl9IHBlciBNVG9rYH1mdW5jdGlvbiBxKGUpe3JldHVybiBlPDFlMz9gJHtNYXRoLnJvdW5kKGUpfW1zYDpgJHsoZS8xZTMpLnRvRml4ZWQoMSl9c2B9ZnVuY3Rpb24gSihlLHQpe2lmKCFlfHxlPT09YDAwMDEtMDEtMDFUMDA6MDA6MDBaYClyZXR1cm4gbnVsbDtsZXQgbj1uZXcgRGF0ZShlKS5nZXRUaW1lKCk7cmV0dXJuIE51bWJlci5pc05hTihuKT9udWxsOk1hdGgubWF4KDAsTWF0aC5yb3VuZCgodC1uKS8xZTMpKX1mdW5jdGlvbiBZKGUpe2xldCB0PUooZSxEYXRlLm5vdygpKTtyZXR1cm4gdD09PW51bGw/YGA6YCAoJHt0fXMgYWdvKWB9ZnVuY3Rpb24gWChlLHQ9RGF0ZS5ub3coKSl7bGV0IG49SihlLHQpO3JldHVybiBuPT09bnVsbD9gYDpgJHtufXMgYWdvYH1mdW5jdGlvbiBaKGUpe2lmKCFlfHxlPT09YDAwMDEtMDEtMDFUMDA6MDA6MDBaYClyZXR1cm5gYDtsZXQgdD1uZXcgRGF0ZShlKS5nZXRUaW1lKCk7aWYoTnVtYmVyLmlzTmFOKHQpKXJldHVybmBgO2xldCBuPU1hdGgucm91bmQoKHQtRGF0ZS5ub3coKSkvMWUzKTtyZXR1cm4gbjw9MD9gYDpgaW4gJHtufXNgfWZ1bmN0aW9uIFEoZSl7aWYoIWV8fGU9PT1gMDAwMS0wMS0wMVQwMDowMDowMFpgKXJldHVybmBuZXZlcmA7bGV0IHQ9bmV3IERhdGUoZSk7cmV0dXJuIE51bWJlci5pc05hTih0LmdldFRpbWUoKSk/ZTp0LnRvTG9jYWxlU3RyaW5nKCl9ZnVuY3Rpb24gJChlLHQpe3JldHVybiBlP1kodCk/YHJlZnJlc2hlZGA6YHBlbmRpbmdgOmBvZmZgfWZ1bmN0aW9uIHRlKGUsdCl7c3dpdGNoKCQoZSx0KSl7Y2FzZWBvZmZgOnJldHVybmBkaXNjb3Zlcnkgb2ZmYDtjYXNlYHBlbmRpbmdgOnJldHVybmBwZW5kaW5nYDtjYXNlYHJlZnJlc2hlZGA6cmV0dXJuYHJlZnJlc2hlZCR7WSh0KX1gfX1mdW5jdGlvbiBuZShlLHQpe3N3aXRjaCgkKGUsdCkpe2Nhc2Vgb2ZmYDpyZXR1cm5gZGlzY292ZXJ5IG9mZmA7Y2FzZWBwZW5kaW5nYDpyZXR1cm5gcGVuZGluZ2A7Y2FzZWByZWZyZXNoZWRgOnJldHVybiBRKHQpfX1mdW5jdGlvbiByZShlKXtpZighZSlyZXR1cm5gbm9uZWA7bGV0IHQ9W107cmV0dXJuIGUucmVxdWVzdHNQZXJNaW51dGUmJnQucHVzaChgcmVxL21pbiAke2UucmVxdWVzdHNQZXJNaW51dGV9YCksZS5yZXF1ZXN0c1BlckRheSYmdC5wdXNoKGByZXEvZGF5ICR7ZS5yZXF1ZXN0c1BlckRheX1gKSxlLnRva2Vuc1BlckRheSYmdC5wdXNoKGB0b2svZGF5ICR7ZS50b2tlbnNQZXJEYXl9YCksZS50b2tlbnNQZXJNb250aCYmdC5wdXNoKGB0b2svbW9udGggJHtlLnRva2Vuc1Blck1vbnRofWApLGUuY29zdFBlckRheVVTRCYmdC5wdXNoKGBjb3N0L2RheSAkJHtlLmNvc3RQZXJEYXlVU0R9YCksZS5jb3N0UGVyTW9udGhVU0QmJnQucHVzaChgY29zdC9tb250aCAkJHtlLmNvc3RQZXJNb250aFVTRH1gKSx0Lmxlbmd0aD90LmpvaW4oYCwgYCk6YG5vbmVgfWZ1bmN0aW9uIGllKGUsdCl7c3dpdGNoKHQpe2Nhc2VgaG91cmA6cmV0dXJuYCR7ZS5zbGljZSg4LDEwKX06MDAgVVRDYDtjYXNlYGRheWA6e2xldCB0PU51bWJlcihlLnNsaWNlKDAsNCkpLG49TnVtYmVyKGUuc2xpY2UoNCw2KSkscj1OdW1iZXIoZS5zbGljZSg2LDgpKTtyZXR1cm4gbmV3IERhdGUodCxuLTEscikudG9Mb2NhbGVEYXRlU3RyaW5nKHZvaWQgMCx7bW9udGg6YHNob3J0YCxkYXk6YG51bWVyaWNgfSl9Y2FzZWBtb250aGA6e2xldCB0PU51bWJlcihlLnNsaWNlKDAsNCkpLG49TnVtYmVyKGUuc2xpY2UoNCw2KSk7cmV0dXJuIG5ldyBEYXRlKHQsbi0xLDEpLnRvTG9jYWxlRGF0ZVN0cmluZyh2b2lkIDAse21vbnRoOmBzaG9ydGAseWVhcjpgbnVtZXJpY2B9KX19fXZhciBhZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTEuNWB9LG9lPXtjbGFzczpgZmxleCBtaW4tdy0wIGZsZXgtMSBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxzZT14KHtfX25hbWU6YFNrZWxldG9uTGlzdGAscHJvcHM6e3Jvd3M6e2RlZmF1bHQ6NX19LHNldHVwKGUpe3JldHVybih0LG4pPT4obCgpLGgoYG9sYCxhZSxbKGwoITApLGgoaSxudWxsLGcoZS5yb3dzLGU9PihsKCksaChgbGlgLHtrZXk6ZSxjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zYH0sW3AoYHNwYW5gLG9lLFthKHYobSkse2NsYXNzOmBoLTMgdy00IHNocmluay0wYH0pLGEodihtKSx7Y2xhc3M6YGgtNCB3LWZ1bGwgbWF4LXctNDBgfSldKSxhKHYobSkse2NsYXNzOmBoLTQgdy0xMiBzaHJpbmstMGB9KV0pKSksMTI4KSldKSl9fSksY2U9eCh7X19uYW1lOmBCYWRnZWAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sdmFyaWFudDp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoaSl7bGV0IGE9aSxjPW4oYSxgY2xhc3NgKTtyZXR1cm4obixkKT0+KGwoKSxvKHYodSkscih7ImRhdGEtc2xvdCI6YGJhZGdlYCwiZGF0YS12YXJpYW50IjppLnZhcmlhbnQsY2xhc3M6dihlKSh2KGxlKSh7dmFyaWFudDppLnZhcmlhbnR9KSxhLmNsYXNzKX0sdihjKSkse2RlZmF1bHQ6dCgoKT0+W3Mobi4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYsW2BkYXRhLXZhcmlhbnRgLGBjbGFzc2BdKSl9fSksbGU9ZihgaC01IGdhcC0xIHJvdW5kZWQtNHhsIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgcHgtMiBweS0wLjUgdGV4dC14cyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBoYXMtZGF0YS1baWNvbj1pbmxpbmUtZW5kXTpwci0xLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0xLjUgWyY+c3ZnXTpzaXplLTMhIGdyb3VwL2JhZGdlIGlubGluZS1mbGV4IHctZml0IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXAgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctMyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgWyY+c3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLXByaW1hcnkvODBgLHNlY29uZGFyeTpgYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLXNlY29uZGFyeS84MGAsZGVzdHJ1Y3RpdmU6YGJnLWRlc3RydWN0aXZlLzEwIFthXTpob3ZlcjpiZy1kZXN0cnVjdGl2ZS8yMCBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvNDAgdGV4dC1kZXN0cnVjdGl2ZSBkYXJrOmJnLWRlc3RydWN0aXZlLzIwYCxvdXRsaW5lOmBib3JkZXItYm9yZGVyIHRleHQtZm9yZWdyb3VuZCBbYV06aG92ZXI6YmctbXV0ZWQgW2FdOmhvdmVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsZ2hvc3Q6YGhvdmVyOmJnLW11dGVkIGhvdmVyOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCBkYXJrOmhvdmVyOmJnLW11dGVkLzUwYCxsaW5rOmB0ZXh0LXByaW1hcnkgdW5kZXJsaW5lLW9mZnNldC00IGhvdmVyOnVuZGVybGluZWB9fSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6YGRlZmF1bHRgfX0pO2V4cG9ydHtOIGFzIEMsayBhcyBELEEgYXMgRSxPLGVlIGFzIFMsaiBhcyBULG5lIGFzIF8sSCBhcyBhLEwgYXMgYixYIGFzIGMscmUgYXMgZCxLIGFzIGYsUiBhcyBnLFogYXMgaCxpZSBhcyBpLEUgYXMgayxWIGFzIGwsUSBhcyBtLHNlIGFzIG4sVyBhcyBvLEIgYXMgcCxZIGFzIHIseiBhcyBzLGNlIGFzIHQscSBhcyB1LHRlIGFzIHYsTSBhcyB3LFAgYXMgeCxGIGFzIHl9Ow==",
),
},
"burndown-eGca-elc.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0QgYXMgZSxFIGFzIHQsSm4gYXMgbixMciBhcyByLE8gYXMgaSxUIGFzIGEsX24gYXMgbyxhdCBhcyBzLGNpIGFzIGMsY24gYXMgbCxkciBhcyB1LGZyIGFzIGQsZ24gYXMgZixpciBhcyBwLGxuIGFzIG0sbHQgYXMgaCxudCBhcyBnLG9uIGFzIF8sc24gYXMgdix1biBhcyB5LHYgYXMgYix2aSBhcyB4LHcgYXMgUyx3aSBhcyBDLHhpIGFzIHcseW4gYXMgVH1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHtsIGFzIEV9ZnJvbSIuL2luZGV4LTg4Q1RSTkhQLmpzIjtpbXBvcnR7dCBhcyBEfWZyb20iLi9jbGlwYm9hcmQtQjczZlowYzEuanMiO2ltcG9ydHtzIGFzIE99ZnJvbSIuL2JhZGdlLUJKTGctUjNNLmpzIjtpbXBvcnR7aSBhcyBrLG4gYXMgQSxvIGFzIGosciBhcyBNLHMgYXMgTn1mcm9tIi4vVHJ5TG9uZ2VyUmFuZ2VCdXR0b24tQmgxOXlpdjguanMiO3ZhciBQPXtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sRj17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sST1bYHRpdGxlYF0sTD1UKHtfX25hbWU6YFN0YXRJdGVtYCxwcm9wczp7bGFiZWw6e30sdG9uZTp7ZGVmYXVsdDpgZGVmYXVsdGB9LHRpdGxlOntkZWZhdWx0OnZvaWQgMH0saGludDp7ZGVmYXVsdDp2b2lkIDB9fSxzZXR1cChlKXtsZXQgdD17ZGVmYXVsdDp2b2lkIDAsZGVzdHJ1Y3RpdmU6YHRleHQtZGVzdHJ1Y3RpdmVgLGFjY2VudDpgdGV4dC1jaGFydC1yZXF1ZXN0c2AsbXV0ZWQ6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9O3JldHVybihuLHIpPT4ocCgpLHkoYGRpdmAsbnVsbCxbdihgcGAsUCxDKGUubGFiZWwpLDEpLGUuaGludD8ocCgpLHkoYHBgLEYsQyhlLmhpbnQpLDEpKToocCgpLHkoYHBgLHtrZXk6MSxjbGFzczp3KFtgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2AsdFtlLnRvbmVdXSksdGl0bGU6ZS50aXRsZX0sW3Uobi4kc2xvdHMsYGRlZmF1bHRgKV0sMTAsSSkpXSkpfX0pLFI9VCh7X19uYW1lOmBDb3N0Rm9yZWNhc3RDYXJkYCxwcm9wczp7bXRkTWljcm9zOnt9LGxpbWl0czp7fSxub3c6e319LHNldHVwKG4pe2xldCBpPW4scz1fKCgpPT5qKGkubm93KSksYz1fKCgpPT5OKGkubXRkTWljcm9zLHMudmFsdWUpKSx1PV8oKCk9PmsoYy52YWx1ZSxpLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEKSk7cmV0dXJuKGkscyk9PihwKCksbCh4KGUpLG51bGwse2RlZmF1bHQ6cigoKT0+W28oeChhKSxudWxsLHtkZWZhdWx0OnIoKCk9PltvKHgoUyksbnVsbCx7ZGVmYXVsdDpyKCgpPT5bLi4uc1swXXx8PVtmKGBDb3N0IGZvcmVjYXN0YCwtMSldXSksXzoxfSksbyh4KEUpLG51bGwse2RlZmF1bHQ6cigoKT0+Wy4uLnNbMV18fD1bZihgUHJvamVjdGVkIG1vbnRoLWVuZCBzcGVuZCwgZXh0cmFwb2xhdGVkIGZyb20gbW9udGgtdG8tZGF0ZSB1c2FnZSAoVVRDIGNhbGVuZGFyIG1vbnRoKS5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLG8oeCh0KSx7Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdGV4dC1zbSBzbTpncmlkLWNvbHMtM2B9LHtkZWZhdWx0OnIoKCk9PltvKEwse2xhYmVsOmBNb250aCB0byBkYXRlYH0se2RlZmF1bHQ6cigoKT0+W2YoQyh4KE8pKG4ubXRkTWljcm9zKSksMSldKSxfOjF9KSxvKEwse2xhYmVsOmBQcm9qZWN0ZWQgbW9udGgtZW5kYCx0b25lOnUudmFsdWUud2lsbEV4Y2VlZD9gZGVzdHJ1Y3RpdmVgOmBkZWZhdWx0YCx0aXRsZTp1LnZhbHVlLndpbGxFeGNlZWQ/eChNKTp2b2lkIDAsaGludDpjLnZhbHVlPT09bnVsbD94KEEpOnZvaWQgMH0se2RlZmF1bHQ6cigoKT0+W2YoQyhjLnZhbHVlPT09bnVsbD9gYDp4KE8pKGMudmFsdWUpKSwxKV0pLF86MX0sOCxbYHRvbmVgLGB0aXRsZWAsYGhpbnRgXSksdS52YWx1ZS5saW1pdE1pY3Jvcz09PW51bGw/bShgYCwhMCk6KHAoKSxsKEwse2tleTowLGxhYmVsOmBMaW1pdGB9LHtkZWZhdWx0OnIoKCk9PltmKEMoeChPKSh1LnZhbHVlLmxpbWl0TWljcm9zKSksMSldKSxfOjF9KSldKSxfOjF9KV0pLF86MX0pKX19KSx6PWB0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04O2AsQj0xZTM7YXN5bmMgZnVuY3Rpb24gVihlLHQsbj16KXtpZih0eXBlb2YgZG9jdW1lbnQ+YHVgKXJldHVybmBmYWlsZWRgO3RyeXtsZXQgcj1uZXcgQmxvYihbdF0se3R5cGU6bn0pLGk9VVJMLmNyZWF0ZU9iamVjdFVSTChyKSxhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGFgKTtyZXR1cm4gYS5ocmVmPWksYS5kb3dubG9hZD1lLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSksYS5jbGljaygpLGEucmVtb3ZlKCksc2V0VGltZW91dCgoKT0+VVJMLnJldm9rZU9iamVjdFVSTChpKSxCKSxgZG93bmxvYWRlZGB9Y2F0Y2h7cmV0dXJuIEQodCl9fXZhciBIPTI1MDAsVT1UKHtfX25hbWU6YENzdkV4cG9ydEJ1dHRvbmAscHJvcHM6e2ZpbGVuYW1lOnt9LGJ1aWxkOnt0eXBlOkZ1bmN0aW9ufX0sc2V0dXAoZSl7bGV0IHQ9ZSxhPWMoITEpLG89YyhudWxsKSx1LGY9e2Rvd25sb2FkZWQ6YERvd25sb2FkZWRgLGNvcGllZDpgQ29waWVkYCxzZWxlY3RlZDpgU2VsZWN0ZWQg4oCUIHByZXNzIOKMmC9DdHJsK0NgLGZhaWxlZDpgRXhwb3J0IGZhaWxlZGB9LG09XygoKT0+by52YWx1ZT9mW28udmFsdWVdOmBFeHBvcnQgQ1NWYCkseT1fKCgpPT5vLnZhbHVlPT09YGZhaWxlZGApO2Z1bmN0aW9uIGIoKXt1IT09dm9pZCAwJiZjbGVhclRpbWVvdXQodSksdT1zZXRUaW1lb3V0KCgpPT57by52YWx1ZT1udWxsLHU9dm9pZCAwfSxIKX1hc3luYyBmdW5jdGlvbiBTKCl7aWYoIWEudmFsdWUpe2EudmFsdWU9ITA7dHJ5e28udmFsdWU9YXdhaXQgVih0LmZpbGVuYW1lLHQuYnVpbGQoKSksYigpfWZpbmFsbHl7YS52YWx1ZT0hMX19fXJldHVybiBuKCgpPT57dSE9PXZvaWQgMCYmY2xlYXJUaW1lb3V0KHUpfSksKGUsdCk9PntsZXQgbj1kKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gcCgpLGwoeChpKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsZGlzYWJsZWQ6YS52YWx1ZSxvbkNsaWNrOlN9LHtkZWZhdWx0OnIoKCk9PltvLnZhbHVlPT09YGZhaWxlZGA/KHAoKSxsKG4se2tleTowLGljb246eChzKSxjbGFzczpgc2l6ZS0zLjUgdGV4dC1kZXN0cnVjdGl2ZWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkpOm8udmFsdWU/KHAoKSxsKG4se2tleToxLGljb246eChnKSxjbGFzczpgc2l6ZS0zLjUgdGV4dC1jaGFydC1yZXF1ZXN0c2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkpOihwKCksbChuLHtrZXk6MixpY29uOngoaCksY2xhc3M6YHNpemUtMy41YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSksdihgc3BhbmAse2NsYXNzOncoeS52YWx1ZT9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwKX0sQyhtLnZhbHVlKSwzKV0pLF86MX0sOCxbYGRpc2FibGVkYF0pfX19KSxXPTZlNDtmdW5jdGlvbiBHKGU9Vyl7bGV0IHQ9YyhuZXcgRGF0ZSksbjtmdW5jdGlvbiByKCl7bnx8KG49Yih7aW50ZXJ2YWxNczplLHRpY2s6KCk9Pnt0LnZhbHVlPW5ldyBEYXRlfX0pLG4uc3RhcnQoKSl9ZnVuY3Rpb24gaSgpe24/LnN0b3AoKSxuPXZvaWQgMH1yZXR1cm57bm93OnQsc3RhcnQ6cixzdG9wOml9fXZhciBLPWBccgpgLHE9L1siLFxyXG5dLyxKPS9eWz0rXC1AXHRccl0vO2Z1bmN0aW9uIFkoZSl7bGV0IHQ9ZT09bnVsbD9gYDpTdHJpbmcoZSk7cmV0dXJuIEoudGVzdCh0KSYmKHQ9YCcke3R9YCkscS50ZXN0KHQpP2AiJHt0LnJlcGxhY2UoLyIvZyxgIiJgKX0iYDp0fWZ1bmN0aW9uIFgoZSx0KXtyZXR1cm5bZSwuLi50XS5tYXAoZT0+ZS5tYXAoWSkuam9pbihgLGApKS5qb2luKEspK0t9dmFyIFo9ODY0ZTU7ZnVuY3Rpb24gUShlKXtsZXQgdD1lLmdldFVUQ0Z1bGxZZWFyKCksbj1lLmdldFVUQ01vbnRoKCk7cmV0dXJuKERhdGUuVVRDKHQsbisxLDEpLURhdGUuVVRDKHQsbiwxKSkvWn1mdW5jdGlvbiAkKGUpe3JldHVybiBlLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBlZShlKXtsZXQgdD0wO3JldHVybiBlLm1hcChlPT50Kz1lKX1mdW5jdGlvbiB0ZShlLHQsbil7aWYodDw9MClyZXR1cm4gbnVsbDtpZihlPj10KXJldHVybiBuZXcgRGF0ZShuLmdldFRpbWUoKSk7bGV0IHI9aihuKSpRKG4pO2lmKHI8MSlyZXR1cm4gbnVsbDtsZXQgaT1lL3I7aWYoaTw9MClyZXR1cm4gbnVsbDtsZXQgYT0odC1lKS9pO3JldHVybiBuZXcgRGF0ZShuLmdldFRpbWUoKSthKlopfWV4cG9ydHtHIGFzIGEsTCBhcyBjLFggYXMgaSwkIGFzIG4sVSBhcyBvLHRlIGFzIHIsUiBhcyBzLGVlIGFzIHR9Ow==",
),
},
"catalog-C95NTaXt.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0MgYXMgZSxTIGFzIHQsYiBhcyBuLHggYXMgcix5dCBhcyBpfWZyb20iLi9Ta2VsZXRvbi1EME5udkhZMS5qcyI7dmFyIGE9M2U1LG89aShgY2F0YWxvZ2Ase3N0YXRlOigpPT4oe2RhdGE6bnVsbCxmZXRjaGVkQXQ6bnVsbCxsb2FkaW5nOiExLGVycm9yOmBgLHJlcUlkOjB9KSxnZXR0ZXJzOntzdGFsZShlKXtyZXR1cm4hZS5mZXRjaGVkQXR8fERhdGUubm93KCktZS5mZXRjaGVkQXQuZ2V0VGltZSgpPmF9LG1vZGVsc0J5SWQoZSl7bGV0IHQ9bmV3IE1hcDtmb3IobGV0IG4gb2YgZS5kYXRhPy5wcm92aWRlcnM/P1tdKWZvcihsZXQgZSBvZiBuLm1vZGVscyl0LnNldChlLmlkLGUpO3JldHVybiB0fX0sYWN0aW9uczp7YXN5bmMgZW5zdXJlTG9hZGVkKGU9ITEpeyFlJiZ0aGlzLmRhdGEmJiF0aGlzLnN0YWxlfHxhd2FpdCB0aGlzLmZldGNoKCl9LGFzeW5jIGZldGNoKCl7aWYoIWUoKS5pc0F1dGhlbnRpY2F0ZWQpcmV0dXJuO2xldCBpPSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCBlPWF3YWl0IG4oYC9hZG1pbi9hcGkvY2F0YWxvZ2ApO2lmKGkhPT10aGlzLnJlcUlkKXJldHVybjt0aGlzLmRhdGE9ZSx0aGlzLmZldGNoZWRBdD1uZXcgRGF0ZSx0aGlzLmVycm9yPWBgfWNhdGNoKGUpe2lmKGkhPT10aGlzLnJlcUlkfHxyKGUpKXJldHVybjt0aGlzLmVycm9yPXQoZSl9ZmluYWxseXtpPT09dGhpcy5yZXFJZCYmKHRoaXMubG9hZGluZz0hMSl9fX19KTtleHBvcnR7byBhcyB0fTs=",
),
},
"chart-palette-hm4ZIkAX.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"dmFyIGU9W2AtLWNoYXJ0LXJlcXVlc3RzYCxgLS1jaGFydC10b2tlbnMtaW5gLGAtLWNoYXJ0LXRva2Vucy1vdXRgLGAtLWNoYXJ0LWNvc3RgXSx0PVsuLi5lLGAtLWNoYXJ0LXNlcmllcy1hYCxgLS1jaGFydC1zZXJpZXMtYmAsYC0tY2hhcnQtc2VyaWVzLWNgLGAtLWNoYXJ0LXNlcmllcy1kYF07ZnVuY3Rpb24gbih0LG49ZSl7cmV0dXJuIG5bdCVuLmxlbmd0aF19ZXhwb3J0e24sdH07",
),
},
"clipboard-B73fZ0c1.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"YXN5bmMgZnVuY3Rpb24gZShlLHQpe2lmKG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCl0cnl7cmV0dXJuIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLGBjb3BpZWRgfWNhdGNoe31pZighdClyZXR1cm5gZmFpbGVkYDtsZXQgbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO24uc2VsZWN0Tm9kZUNvbnRlbnRzKHQpO2xldCByPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm4gcj8oci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKG4pLGBzZWxlY3RlZGApOmBmYWlsZWRgfWV4cG9ydHtlIGFzIHR9Ow==",
),
},
"columns-Coecnf74.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0FuIGFzIGUsSyBhcyB0LExyIGFzIG4sTXIgYXMgcixOciBhcyBpLFUgYXMgYSxXbiBhcyBvLFh0IGFzIHMsX24gYXMgYyxjaSBhcyBsLGNuIGFzIHUsZGkgYXMgZCxkciBhcyBmLGVpIGFzIHAsZnIgYXMgbSxnbiBhcyBoLGh0IGFzIGcsaXIgYXMgXyxsbiBhcyB2LG10IGFzIGVlLG9uIGFzIHkscHQgYXMgdGUsc24gYXMgbmUsdW4gYXMgYix1ciBhcyB4LHZpIGFzIFMsd2kgYXMgQyx4aSBhcyB3LHluIGFzIFR9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7QyBhcyByZSxEIGFzIGllLEUgYXMgYWUsTyBhcyBvZSxUIGFzIEUsYSBhcyBzZSxsIGFzIGNlLHMgYXMgbGUsdyBhcyB1ZX1mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO3ZhciBkZT17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEwYH0sZmU9VCh7X19uYW1lOmBUYWJsZUVtcHR5YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sY29sc3Bhbjp7ZGVmYXVsdDoxfX0sc2V0dXAoZSl7bGV0IHI9ZSxpPWEocixgY2xhc3NgKTtyZXR1cm4oZSxhKT0+KF8oKSx1KEUsbnVsbCx7ZGVmYXVsdDpuKCgpPT5bYyhhZSxvKHtjbGFzczpTKHQpKGBwLTQgd2hpdGVzcGFjZS1ub3dyYXAgYWxpZ24tbWlkZGxlIHRleHQtc20gdGV4dC1mb3JlZ3JvdW5kYCxyLmNsYXNzKX0sUyhpKSkse2RlZmF1bHQ6bigoKT0+W25lKGBkaXZgLGRlLFtmKGUuJHNsb3RzLGBkZWZhdWx0YCldKV0pLF86M30sMTYsW2BjbGFzc2BdKV0pLF86M30pKX19KTtmdW5jdGlvbiBEKGUsdCl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gP2UodCk6ZX1mdW5jdGlvbiBPKGUsdCl7cmV0dXJuIG49Pnt0LnNldFN0YXRlKHQ9Pih7Li4udCxbZV06RChuLHRbZV0pfSkpfX1mdW5jdGlvbiBrKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRnVuY3Rpb259ZnVuY3Rpb24gcGUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJmUuZXZlcnkoZT0+dHlwZW9mIGU9PWBudW1iZXJgKX1mdW5jdGlvbiBtZShlLHQpe2xldCBuPVtdLHI9ZT0+e2UuZm9yRWFjaChlPT57bi5wdXNoKGUpO2xldCBpPXQoZSk7aSE9bnVsbCYmaS5sZW5ndGgmJnIoaSl9KX07cmV0dXJuIHIoZSksbn1mdW5jdGlvbiBBKGUsdCxuKXtsZXQgcj1bXSxpO3JldHVybiBhPT57bGV0IG87bi5rZXkmJm4uZGVidWcmJihvPURhdGUubm93KCkpO2xldCBzPWUoYSk7aWYoIShzLmxlbmd0aCE9PXIubGVuZ3RofHxzLnNvbWUoKGUsdCk9PnJbdF0hPT1lKSkpcmV0dXJuIGk7cj1zO2xldCBjO2lmKG4ua2V5JiZuLmRlYnVnJiYoYz1EYXRlLm5vdygpKSxpPXQoLi4ucyksbj09bnVsbHx8bi5vbkNoYW5nZT09bnVsbHx8bi5vbkNoYW5nZShpKSxuLmtleSYmbi5kZWJ1ZyYmbiE9bnVsbCYmbi5kZWJ1ZygpKXtsZXQgZT1NYXRoLnJvdW5kKChEYXRlLm5vdygpLW8pKjEwMCkvMTAwLHQ9TWF0aC5yb3VuZCgoRGF0ZS5ub3coKS1jKSoxMDApLzEwMCxyPXQvMTYsaT0oZSx0KT0+e2ZvcihlPVN0cmluZyhlKTtlLmxlbmd0aDx0OyllPWAgYCtlO3JldHVybiBlfTtjb25zb2xlLmluZm8oYCVj4o+xICR7aSh0LDUpfSAvJHtpKGUsNSl9IG1zYCxgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogLjZyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICBjb2xvcjogaHNsKCR7TWF0aC5tYXgoMCxNYXRoLm1pbigxMjAtMTIwKnIsMTIwKSl9ZGVnIDEwMCUgMzElKTtgLG4/LmtleSl9cmV0dXJuIGl9fWZ1bmN0aW9uIGooZSx0LG4scil7cmV0dXJue2RlYnVnOigpPT5lPy5kZWJ1Z0FsbD8/ZVt0XSxrZXk6ITEsb25DaGFuZ2U6cn19ZnVuY3Rpb24gaGUoZSx0LG4scil7bGV0IGk9e2lkOmAke3QuaWR9XyR7bi5pZH1gLHJvdzp0LGNvbHVtbjpuLGdldFZhbHVlOigpPT50LmdldFZhbHVlKHIpLHJlbmRlclZhbHVlOigpPT5pLmdldFZhbHVlKCk/P2Uub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlLGdldENvbnRleHQ6QSgoKT0+W2Usbix0LGldLChlLHQsbixyKT0+KHt0YWJsZTplLGNvbHVtbjp0LHJvdzpuLGNlbGw6cixnZXRWYWx1ZTpyLmdldFZhbHVlLHJlbmRlclZhbHVlOnIucmVuZGVyVmFsdWV9KSxqKGUub3B0aW9ucyxgZGVidWdDZWxsc2AsYGNlbGwuZ2V0Q29udGV4dGApKX07cmV0dXJuIGUuX2ZlYXR1cmVzLmZvckVhY2gocj0+e3IuY3JlYXRlQ2VsbD09bnVsbHx8ci5jcmVhdGVDZWxsKGksbix0LGUpfSx7fSksaX1mdW5jdGlvbiBnZShlLHQsbixyKXtsZXQgaT17Li4uZS5fZ2V0RGVmYXVsdENvbHVtbkRlZigpLC4uLnR9LGE9aS5hY2Nlc3NvcktleSxvPWkuaWQ/PyhhP3R5cGVvZiBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VBbGw9PWBmdW5jdGlvbmA/YS5yZXBsYWNlQWxsKGAuYCxgX2ApOmEucmVwbGFjZSgvXC4vZyxgX2ApOnZvaWQgMCk/Pyh0eXBlb2YgaS5oZWFkZXI9PWBzdHJpbmdgP2kuaGVhZGVyOnZvaWQgMCkscztpZihpLmFjY2Vzc29yRm4/cz1pLmFjY2Vzc29yRm46YSYmKHM9YS5pbmNsdWRlcyhgLmApP2U9PntsZXQgdD1lO2ZvcihsZXQgZSBvZiBhLnNwbGl0KGAuYCkpdD10Py5bZV07cmV0dXJuIHR9OmU9PmVbaS5hY2Nlc3NvcktleV0pLCFvKXRocm93IEVycm9yKCk7bGV0IGM9e2lkOmAke1N0cmluZyhvKX1gLGFjY2Vzc29yRm46cyxwYXJlbnQ6cixkZXB0aDpuLGNvbHVtbkRlZjppLGNvbHVtbnM6W10sZ2V0RmxhdENvbHVtbnM6QSgoKT0+WyEwXSwoKT0+W2MsLi4uYy5jb2x1bW5zPy5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSldLGooZS5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBjb2x1bW4uZ2V0RmxhdENvbHVtbnNgKSksZ2V0TGVhZkNvbHVtbnM6QSgoKT0+W2UuX2dldE9yZGVyQ29sdW1uc0ZuKCldLGU9Pnt2YXIgdDtyZXR1cm4odD1jLmNvbHVtbnMpIT1udWxsJiZ0Lmxlbmd0aD9lKGMuY29sdW1ucy5mbGF0TWFwKGU9PmUuZ2V0TGVhZkNvbHVtbnMoKSkpOltjXX0saihlLm9wdGlvbnMsYGRlYnVnQ29sdW1uc2AsYGNvbHVtbi5nZXRMZWFmQ29sdW1uc2ApKX07Zm9yKGxldCB0IG9mIGUuX2ZlYXR1cmVzKXQuY3JlYXRlQ29sdW1uPT1udWxsfHx0LmNyZWF0ZUNvbHVtbihjLGUpO3JldHVybiBjfXZhciBNPWBkZWJ1Z0hlYWRlcnNgO2Z1bmN0aW9uIF9lKGUsdCxuKXtsZXQgcj17aWQ6bi5pZD8/dC5pZCxjb2x1bW46dCxpbmRleDpuLmluZGV4LGlzUGxhY2Vob2xkZXI6ISFuLmlzUGxhY2Vob2xkZXIscGxhY2Vob2xkZXJJZDpuLnBsYWNlaG9sZGVySWQsZGVwdGg6bi5kZXB0aCxzdWJIZWFkZXJzOltdLGNvbFNwYW46MCxyb3dTcGFuOjAsaGVhZGVyR3JvdXA6bnVsbCxnZXRMZWFmSGVhZGVyczooKT0+e2xldCBlPVtdLHQ9bj0+e24uc3ViSGVhZGVycyYmbi5zdWJIZWFkZXJzLmxlbmd0aCYmbi5zdWJIZWFkZXJzLm1hcCh0KSxlLnB1c2gobil9O3JldHVybiB0KHIpLGV9LGdldENvbnRleHQ6KCk9Pih7dGFibGU6ZSxoZWFkZXI6cixjb2x1bW46dH0pfTtyZXR1cm4gZS5fZmVhdHVyZXMuZm9yRWFjaCh0PT57dC5jcmVhdGVIZWFkZXI9PW51bGx8fHQuY3JlYXRlSGVhZGVyKHIsZSl9KSxyfXZhciB2ZT17Y3JlYXRlVGFibGU6ZT0+e2UuZ2V0SGVhZGVyR3JvdXBzPUEoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnQsZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLCh0LG4scixpKT0+e2xldCBhPXI/Lm1hcChlPT5uLmZpbmQodD0+dC5pZD09PWUpKS5maWx0ZXIoQm9vbGVhbik/P1tdLG89aT8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKT8/W10scz1uLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZS5pZCkpJiYhKGkhPW51bGwmJmkuaW5jbHVkZXMoZS5pZCkpKTtyZXR1cm4gTih0LFsuLi5hLC4uLnMsLi4ub10sZSl9LGooZS5vcHRpb25zLE0sYGdldEhlYWRlckdyb3Vwc2ApKSxlLmdldENlbnRlckhlYWRlckdyb3Vwcz1BKCgpPT5bZS5nZXRBbGxDb2x1bW5zKCksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLHIsaSk9PihuPW4uZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlLmlkKSkmJiEoaSE9bnVsbCYmaS5pbmNsdWRlcyhlLmlkKSkpLE4odCxuLGUsYGNlbnRlcmApKSxqKGUub3B0aW9ucyxNLGBnZXRDZW50ZXJIZWFkZXJHcm91cHNgKSksZS5nZXRMZWZ0SGVhZGVyR3JvdXBzPUEoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLCh0LG4scik9Pk4odCxyPy5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pPz9bXSxlLGBsZWZ0YCksaihlLm9wdGlvbnMsTSxgZ2V0TGVmdEhlYWRlckdyb3Vwc2ApKSxlLmdldFJpZ2h0SGVhZGVyR3JvdXBzPUEoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwodCxuLHIpPT5OKHQscj8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKT8/W10sZSxgcmlnaHRgKSxqKGUub3B0aW9ucyxNLGBnZXRSaWdodEhlYWRlckdyb3Vwc2ApKSxlLmdldEZvb3Rlckdyb3Vwcz1BKCgpPT5bZS5nZXRIZWFkZXJHcm91cHMoKV0sZT0+Wy4uLmVdLnJldmVyc2UoKSxqKGUub3B0aW9ucyxNLGBnZXRGb290ZXJHcm91cHNgKSksZS5nZXRMZWZ0Rm9vdGVyR3JvdXBzPUEoKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKV0sZT0+Wy4uLmVdLnJldmVyc2UoKSxqKGUub3B0aW9ucyxNLGBnZXRMZWZ0Rm9vdGVyR3JvdXBzYCkpLGUuZ2V0Q2VudGVyRm9vdGVyR3JvdXBzPUEoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxlPT5bLi4uZV0ucmV2ZXJzZSgpLGooZS5vcHRpb25zLE0sYGdldENlbnRlckZvb3Rlckdyb3Vwc2ApKSxlLmdldFJpZ2h0Rm9vdGVyR3JvdXBzPUEoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksaihlLm9wdGlvbnMsTSxgZ2V0UmlnaHRGb290ZXJHcm91cHNgKSksZS5nZXRGbGF0SGVhZGVycz1BKCgpPT5bZS5nZXRIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksaihlLm9wdGlvbnMsTSxgZ2V0RmxhdEhlYWRlcnNgKSksZS5nZXRMZWZ0RmxhdEhlYWRlcnM9QSgoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxqKGUub3B0aW9ucyxNLGBnZXRMZWZ0RmxhdEhlYWRlcnNgKSksZS5nZXRDZW50ZXJGbGF0SGVhZGVycz1BKCgpPT5bZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksaihlLm9wdGlvbnMsTSxgZ2V0Q2VudGVyRmxhdEhlYWRlcnNgKSksZS5nZXRSaWdodEZsYXRIZWFkZXJzPUEoKCk9PltlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLGU9PmUubWFwKGU9PmUuaGVhZGVycykuZmxhdCgpLGooZS5vcHRpb25zLE0sYGdldFJpZ2h0RmxhdEhlYWRlcnNgKSksZS5nZXRDZW50ZXJMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRDZW50ZXJGbGF0SGVhZGVycygpXSxlPT5lLmZpbHRlcihlPT57dmFyIHQ7cmV0dXJuISgodD1lLnN1YkhlYWRlcnMpIT1udWxsJiZ0Lmxlbmd0aCl9KSxqKGUub3B0aW9ucyxNLGBnZXRDZW50ZXJMZWFmSGVhZGVyc2ApKSxlLmdldExlZnRMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRMZWZ0RmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEoKHQ9ZS5zdWJIZWFkZXJzKSE9bnVsbCYmdC5sZW5ndGgpfSksaihlLm9wdGlvbnMsTSxgZ2V0TGVmdExlYWZIZWFkZXJzYCkpLGUuZ2V0UmlnaHRMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRSaWdodEZsYXRIZWFkZXJzKCldLGU9PmUuZmlsdGVyKGU9Pnt2YXIgdDtyZXR1cm4hKCh0PWUuc3ViSGVhZGVycykhPW51bGwmJnQubGVuZ3RoKX0pLGooZS5vcHRpb25zLE0sYGdldFJpZ2h0TGVhZkhlYWRlcnNgKSksZS5nZXRMZWFmSGVhZGVycz1BKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCksZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKSxlLmdldFJpZ2h0SGVhZGVyR3JvdXBzKCldLChlLHQsbik9PlsuLi5lWzBdPy5oZWFkZXJzPz9bXSwuLi50WzBdPy5oZWFkZXJzPz9bXSwuLi5uWzBdPy5oZWFkZXJzPz9bXV0ubWFwKGU9PmUuZ2V0TGVhZkhlYWRlcnMoKSkuZmxhdCgpLGooZS5vcHRpb25zLE0sYGdldExlYWZIZWFkZXJzYCkpfX07ZnVuY3Rpb24gTihlLHQsbixyKXtsZXQgaT0wLGE9ZnVuY3Rpb24oZSx0KXt0PT09dm9pZCAwJiYodD0xKSxpPU1hdGgubWF4KGksdCksZS5maWx0ZXIoZT0+ZS5nZXRJc1Zpc2libGUoKSkuZm9yRWFjaChlPT57dmFyIG47KG49ZS5jb2x1bW5zKSE9bnVsbCYmbi5sZW5ndGgmJmEoZS5jb2x1bW5zLHQrMSl9LDApfTthKGUpO2xldCBvPVtdLHM9KGUsdCk9PntsZXQgaT17ZGVwdGg6dCxpZDpbcixgJHt0fWBdLmZpbHRlcihCb29sZWFuKS5qb2luKGBfYCksaGVhZGVyczpbXX0sYT1bXTtlLmZvckVhY2goZT0+e2xldCBvPVsuLi5hXS5yZXZlcnNlKClbMF0scz1lLmNvbHVtbi5kZXB0aD09PWkuZGVwdGgsYyxsPSExO2lmKHMmJmUuY29sdW1uLnBhcmVudD9jPWUuY29sdW1uLnBhcmVudDooYz1lLmNvbHVtbixsPSEwKSxvJiZvPy5jb2x1bW49PT1jKW8uc3ViSGVhZGVycy5wdXNoKGUpO2Vsc2V7bGV0IGk9X2UobixjLHtpZDpbcix0LGMuaWQsZT8uaWRdLmZpbHRlcihCb29sZWFuKS5qb2luKGBfYCksaXNQbGFjZWhvbGRlcjpsLHBsYWNlaG9sZGVySWQ6bD9gJHthLmZpbHRlcihlPT5lLmNvbHVtbj09PWMpLmxlbmd0aH1gOnZvaWQgMCxkZXB0aDp0LGluZGV4OmEubGVuZ3RofSk7aS5zdWJIZWFkZXJzLnB1c2goZSksYS5wdXNoKGkpfWkuaGVhZGVycy5wdXNoKGUpLGUuaGVhZGVyR3JvdXA9aX0pLG8ucHVzaChpKSx0PjAmJnMoYSx0LTEpfTtzKHQubWFwKChlLHQpPT5fZShuLGUse2RlcHRoOmksaW5kZXg6dH0pKSxpLTEpLG8ucmV2ZXJzZSgpO2xldCBjPWU9PmUuZmlsdGVyKGU9PmUuY29sdW1uLmdldElzVmlzaWJsZSgpKS5tYXAoZT0+e2xldCB0PTAsbj0wLHI9WzBdO2Uuc3ViSGVhZGVycyYmZS5zdWJIZWFkZXJzLmxlbmd0aD8ocj1bXSxjKGUuc3ViSGVhZGVycykuZm9yRWFjaChlPT57bGV0e2NvbFNwYW46bixyb3dTcGFuOml9PWU7dCs9bixyLnB1c2goaSl9KSk6dD0xO2xldCBpPU1hdGgubWluKC4uLnIpO3JldHVybiBuKz1pLGUuY29sU3Bhbj10LGUucm93U3Bhbj1uLHtjb2xTcGFuOnQscm93U3BhbjpufX0pO3JldHVybiBjKG9bMF0/LmhlYWRlcnM/P1tdKSxvfXZhciB5ZT0oZSx0LG4scixpLGEsbyk9PntsZXQgcz17aWQ6dCxpbmRleDpyLG9yaWdpbmFsOm4sZGVwdGg6aSxwYXJlbnRJZDpvLF92YWx1ZXNDYWNoZTp7fSxfdW5pcXVlVmFsdWVzQ2FjaGU6e30sZ2V0VmFsdWU6dD0+e2lmKHMuX3ZhbHVlc0NhY2hlLmhhc093blByb3BlcnR5KHQpKXJldHVybiBzLl92YWx1ZXNDYWNoZVt0XTtsZXQgbj1lLmdldENvbHVtbih0KTtpZihuIT1udWxsJiZuLmFjY2Vzc29yRm4pcmV0dXJuIHMuX3ZhbHVlc0NhY2hlW3RdPW4uYWNjZXNzb3JGbihzLm9yaWdpbmFsLHIpLHMuX3ZhbHVlc0NhY2hlW3RdfSxnZXRVbmlxdWVWYWx1ZXM6dD0+e2lmKHMuX3VuaXF1ZVZhbHVlc0NhY2hlLmhhc093blByb3BlcnR5KHQpKXJldHVybiBzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XTtsZXQgbj1lLmdldENvbHVtbih0KTtpZihuIT1udWxsJiZuLmFjY2Vzc29yRm4pcmV0dXJuIG4uY29sdW1uRGVmLmdldFVuaXF1ZVZhbHVlcz8ocy5fdW5pcXVlVmFsdWVzQ2FjaGVbdF09bi5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzKHMub3JpZ2luYWwscikscy5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pOihzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XT1bcy5nZXRWYWx1ZSh0KV0scy5fdW5pcXVlVmFsdWVzQ2FjaGVbdF0pfSxyZW5kZXJWYWx1ZTp0PT5zLmdldFZhbHVlKHQpPz9lLm9wdGlvbnMucmVuZGVyRmFsbGJhY2tWYWx1ZSxzdWJSb3dzOmE/P1tdLGdldExlYWZSb3dzOigpPT5tZShzLnN1YlJvd3MsZT0+ZS5zdWJSb3dzKSxnZXRQYXJlbnRSb3c6KCk9PnMucGFyZW50SWQ/ZS5nZXRSb3cocy5wYXJlbnRJZCwhMCk6dm9pZCAwLGdldFBhcmVudFJvd3M6KCk9PntsZXQgZT1bXSx0PXM7Zm9yKDs7KXtsZXQgbj10LmdldFBhcmVudFJvdygpO2lmKCFuKWJyZWFrO2UucHVzaChuKSx0PW59cmV0dXJuIGUucmV2ZXJzZSgpfSxnZXRBbGxDZWxsczpBKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpXSx0PT50Lm1hcCh0PT5oZShlLHMsdCx0LmlkKSksaihlLm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldEFsbENlbGxzYCkpLF9nZXRBbGxDZWxsc0J5Q29sdW1uSWQ6QSgoKT0+W3MuZ2V0QWxsQ2VsbHMoKV0sZT0+ZS5yZWR1Y2UoKGUsdCk9PihlW3QuY29sdW1uLmlkXT10LGUpLHt9KSxqKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0QWxsQ2VsbHNCeUNvbHVtbklkYCkpfTtmb3IobGV0IHQ9MDt0PGUuX2ZlYXR1cmVzLmxlbmd0aDt0Kyspe2xldCBuPWUuX2ZlYXR1cmVzW3RdO249PW51bGx8fG4uY3JlYXRlUm93PT1udWxsfHxuLmNyZWF0ZVJvdyhzLGUpfXJldHVybiBzfSxiZT17Y3JlYXRlQ29sdW1uOihlLHQpPT57ZS5fZ2V0RmFjZXRlZFJvd01vZGVsPXQub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJnQub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwodCxlLmlkKSxlLmdldEZhY2V0ZWRSb3dNb2RlbD0oKT0+ZS5fZ2V0RmFjZXRlZFJvd01vZGVsP2UuX2dldEZhY2V0ZWRSb3dNb2RlbCgpOnQuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpLGUuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXM9dC5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJnQub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKHQsZS5pZCksZS5nZXRGYWNldGVkVW5pcXVlVmFsdWVzPSgpPT5lLl9nZXRGYWNldGVkVW5pcXVlVmFsdWVzP2UuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXMoKTpuZXcgTWFwLGUuX2dldEZhY2V0ZWRNaW5NYXhWYWx1ZXM9dC5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMmJnQub3B0aW9ucy5nZXRGYWNldGVkTWluTWF4VmFsdWVzKHQsZS5pZCksZS5nZXRGYWNldGVkTWluTWF4VmFsdWVzPSgpPT57aWYoZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcylyZXR1cm4gZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcygpfX19LHhlPShlLHQsbik9Pnt2YXIgcixpO2xldCBhPW49PW51bGx8fChyPW4udG9TdHJpbmcoKSk9PW51bGw/dm9pZCAwOnIudG9Mb3dlckNhc2UoKTtyZXR1cm4hISgoaT1lLmdldFZhbHVlKHQpKSE9bnVsbCYmKGk9aS50b1N0cmluZygpKSE9bnVsbCYmKGk9aS50b0xvd2VyQ2FzZSgpKSE9bnVsbCYmaS5pbmNsdWRlcyhhKSl9O3hlLmF1dG9SZW1vdmU9ZT0+SShlKTt2YXIgU2U9KGUsdCxuKT0+e3ZhciByO3JldHVybiEhKChyPWUuZ2V0VmFsdWUodCkpIT1udWxsJiYocj1yLnRvU3RyaW5nKCkpIT1udWxsJiZyLmluY2x1ZGVzKG4pKX07U2UuYXV0b1JlbW92ZT1lPT5JKGUpO3ZhciBDZT0oZSx0LG4pPT57dmFyIHI7cmV0dXJuKChyPWUuZ2V0VmFsdWUodCkpPT1udWxsfHwocj1yLnRvU3RyaW5nKCkpPT1udWxsP3ZvaWQgMDpyLnRvTG93ZXJDYXNlKCkpPT09bj8udG9Mb3dlckNhc2UoKX07Q2UuYXV0b1JlbW92ZT1lPT5JKGUpO3ZhciB3ZT0oZSx0LG4pPT5lLmdldFZhbHVlKHQpPy5pbmNsdWRlcyhuKTt3ZS5hdXRvUmVtb3ZlPWU9PkkoZSk7dmFyIFRlPShlLHQsbik9PiFuLnNvbWUobj0+e3ZhciByO3JldHVybiEoKHI9ZS5nZXRWYWx1ZSh0KSkhPW51bGwmJnIuaW5jbHVkZXMobikpfSk7VGUuYXV0b1JlbW92ZT1lPT5JKGUpfHwhKGUhPW51bGwmJmUubGVuZ3RoKTt2YXIgRWU9KGUsdCxuKT0+bi5zb21lKG49PmUuZ2V0VmFsdWUodCk/LmluY2x1ZGVzKG4pKTtFZS5hdXRvUmVtb3ZlPWU9PkkoZSl8fCEoZSE9bnVsbCYmZS5sZW5ndGgpO3ZhciBEZT0oZSx0LG4pPT5lLmdldFZhbHVlKHQpPT09bjtEZS5hdXRvUmVtb3ZlPWU9PkkoZSk7dmFyIE9lPShlLHQsbik9PmUuZ2V0VmFsdWUodCk9PW47T2UuYXV0b1JlbW92ZT1lPT5JKGUpO3ZhciBQPShlLHQsbik9PntsZXRbcixpXT1uLGE9ZS5nZXRWYWx1ZSh0KTtyZXR1cm4gYT49ciYmYTw9aX07UC5yZXNvbHZlRmlsdGVyVmFsdWU9ZT0+e2xldFt0LG5dPWUscj10eXBlb2YgdD09YG51bWJlcmA/dDpwYXJzZUZsb2F0KHQpLGk9dHlwZW9mIG49PWBudW1iZXJgP246cGFyc2VGbG9hdChuKSxhPXQ9PT1udWxsfHxOdW1iZXIuaXNOYU4ocik/LTEvMDpyLG89bj09PW51bGx8fE51bWJlci5pc05hTihpKT8xLzA6aTtpZihhPm8pe2xldCBlPWE7YT1vLG89ZX1yZXR1cm5bYSxvXX0sUC5hdXRvUmVtb3ZlPWU9PkkoZSl8fEkoZVswXSkmJkkoZVsxXSk7dmFyIEY9e2luY2x1ZGVzU3RyaW5nOnhlLGluY2x1ZGVzU3RyaW5nU2Vuc2l0aXZlOlNlLGVxdWFsc1N0cmluZzpDZSxhcnJJbmNsdWRlczp3ZSxhcnJJbmNsdWRlc0FsbDpUZSxhcnJJbmNsdWRlc1NvbWU6RWUsZXF1YWxzOkRlLHdlYWtFcXVhbHM6T2UsaW5OdW1iZXJSYW5nZTpQfTtmdW5jdGlvbiBJKGUpe3JldHVybiBlPT1udWxsfHxlPT09YGB9dmFyIGtlPXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe2ZpbHRlckZuOmBhdXRvYH0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbkZpbHRlcnM6W10sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOk8oYGNvbHVtbkZpbHRlcnNgLGUpLGZpbHRlckZyb21MZWFmUm93czohMSxtYXhMZWFmUm93RmlsdGVyRGVwdGg6MTAwfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvRmlsdGVyRm49KCk9PntsZXQgbj10LmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdPy5nZXRWYWx1ZShlLmlkKTtyZXR1cm4gdHlwZW9mIG49PWBzdHJpbmdgP0YuaW5jbHVkZXNTdHJpbmc6dHlwZW9mIG49PWBudW1iZXJgP0YuaW5OdW1iZXJSYW5nZTp0eXBlb2Ygbj09YGJvb2xlYW5gfHx0eXBlb2Ygbj09YG9iamVjdGAmJm4/Ri5lcXVhbHM6QXJyYXkuaXNBcnJheShuKT9GLmFyckluY2x1ZGVzOkYud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+ayhlLmNvbHVtbkRlZi5maWx0ZXJGbik/ZS5jb2x1bW5EZWYuZmlsdGVyRm46ZS5jb2x1bW5EZWYuZmlsdGVyRm49PT1gYXV0b2A/ZS5nZXRBdXRvRmlsdGVyRm4oKTp0Lm9wdGlvbnMuZmlsdGVyRm5zPy5bZS5jb2x1bW5EZWYuZmlsdGVyRm5dPz9GW2UuY29sdW1uRGVmLmZpbHRlckZuXSxlLmdldENhbkZpbHRlcj0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZUNvbHVtbkZpbHRlcj8/ITApJiYodC5vcHRpb25zLmVuYWJsZUNvbHVtbkZpbHRlcnM/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVGaWx0ZXJzPz8hMCkmJiEhZS5hY2Nlc3NvckZuLGUuZ2V0SXNGaWx0ZXJlZD0oKT0+ZS5nZXRGaWx0ZXJJbmRleCgpPi0xLGUuZ2V0RmlsdGVyVmFsdWU9KCk9Pnt2YXIgbjtyZXR1cm4obj10LmdldFN0YXRlKCkuY29sdW1uRmlsdGVycyk9PW51bGx8fChuPW4uZmluZCh0PT50LmlkPT09ZS5pZCkpPT1udWxsP3ZvaWQgMDpuLnZhbHVlfSxlLmdldEZpbHRlckluZGV4PSgpPT50LmdldFN0YXRlKCkuY29sdW1uRmlsdGVycz8uZmluZEluZGV4KHQ9PnQuaWQ9PT1lLmlkKT8/LTEsZS5zZXRGaWx0ZXJWYWx1ZT1uPT57dC5zZXRDb2x1bW5GaWx0ZXJzKHQ9PntsZXQgcj1lLmdldEZpbHRlckZuKCksaT10Py5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxhPUQobixpP2kudmFsdWU6dm9pZCAwKTtpZihBZShyLGEsZSkpcmV0dXJuIHQ/LmZpbHRlcih0PT50LmlkIT09ZS5pZCk/P1tdO2xldCBvPXtpZDplLmlkLHZhbHVlOmF9O3JldHVybiBpP3Q/Lm1hcCh0PT50LmlkPT09ZS5pZD9vOnQpPz9bXTp0IT1udWxsJiZ0Lmxlbmd0aD9bLi4udCxvXTpbb119KX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuY29sdW1uRmlsdGVycz17fSxlLmNvbHVtbkZpbHRlcnNNZXRhPXt9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5GaWx0ZXJzPXQ9PntsZXQgbj1lLmdldEFsbExlYWZDb2x1bW5zKCk7ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZT09bnVsbHx8ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZShlPT5EKHQsZSk/LmZpbHRlcihlPT57bGV0IHQ9bi5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtyZXR1cm4hKHQmJkFlKHQuZ2V0RmlsdGVyRm4oKSxlLnZhbHVlLHQpKX0pKX0sZS5yZXNldENvbHVtbkZpbHRlcnM9dD0+e2Uuc2V0Q29sdW1uRmlsdGVycyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5jb2x1bW5GaWx0ZXJzPz9bXSl9LGUuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbD0oKT0+ZS5nZXRDb3JlUm93TW9kZWwoKSxlLmdldEZpbHRlcmVkUm93TW9kZWw9KCk9PighZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZpbHRlcmVkUm93TW9kZWwmJihlLl9nZXRGaWx0ZXJlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsRmlsdGVyaW5nfHwhZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD9lLmdldFByZUZpbHRlcmVkUm93TW9kZWwoKTplLl9nZXRGaWx0ZXJlZFJvd01vZGVsKCkpfX07ZnVuY3Rpb24gQWUoZSx0LG4pe3JldHVybihlJiZlLmF1dG9SZW1vdmU/ZS5hdXRvUmVtb3ZlKHQsbik6ITEpfHx0PT09dm9pZCAwfHx0eXBlb2YgdD09YHN0cmluZ2AmJiF0fXZhciBMPXtzdW06KGUsdCxuKT0+bi5yZWR1Y2UoKHQsbik9PntsZXQgcj1uLmdldFZhbHVlKGUpO3JldHVybiB0Kyh0eXBlb2Ygcj09YG51bWJlcmA/cjowKX0sMCksbWluOihlLHQsbik9PntsZXQgcjtyZXR1cm4gbi5mb3JFYWNoKHQ9PntsZXQgbj10LmdldFZhbHVlKGUpO24hPW51bGwmJihyPm58fHI9PT12b2lkIDAmJm4+PW4pJiYocj1uKX0pLHJ9LG1heDooZSx0LG4pPT57bGV0IHI7cmV0dXJuIG4uZm9yRWFjaCh0PT57bGV0IG49dC5nZXRWYWx1ZShlKTtuIT1udWxsJiYocjxufHxyPT09dm9pZCAwJiZuPj1uKSYmKHI9bil9KSxyfSxleHRlbnQ6KGUsdCxuKT0+e2xldCByLGk7cmV0dXJuIG4uZm9yRWFjaCh0PT57bGV0IG49dC5nZXRWYWx1ZShlKTtuIT1udWxsJiYocj09PXZvaWQgMD9uPj1uJiYocj1pPW4pOihyPm4mJihyPW4pLGk8biYmKGk9bikpKX0pLFtyLGldfSxtZWFuOihlLHQpPT57bGV0IG49MCxyPTA7aWYodC5mb3JFYWNoKHQ9PntsZXQgaT10LmdldFZhbHVlKGUpO2khPW51bGwmJihpPStpKT49aSYmKCsrbixyKz1pKX0pLG4pcmV0dXJuIHIvbn0sbWVkaWFuOihlLHQpPT57aWYoIXQubGVuZ3RoKXJldHVybjtsZXQgbj10Lm1hcCh0PT50LmdldFZhbHVlKGUpKTtpZighcGUobikpcmV0dXJuO2lmKG4ubGVuZ3RoPT09MSlyZXR1cm4gblswXTtsZXQgcj1NYXRoLmZsb29yKG4ubGVuZ3RoLzIpLGk9bi5zb3J0KChlLHQpPT5lLXQpO3JldHVybiBuLmxlbmd0aCUyPT0wPyhpW3ItMV0raVtyXSkvMjppW3JdfSx1bmlxdWU6KGUsdCk9PkFycmF5LmZyb20obmV3IFNldCh0Lm1hcCh0PT50LmdldFZhbHVlKGUpKSkudmFsdWVzKCkpLHVuaXF1ZUNvdW50OihlLHQpPT5uZXcgU2V0KHQubWFwKHQ9PnQuZ2V0VmFsdWUoZSkpKS5zaXplLGNvdW50OihlLHQpPT50Lmxlbmd0aH0samU9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7YWdncmVnYXRlZENlbGw6ZT0+e3ZhciB0O3JldHVybigodD1lLmdldFZhbHVlKCkpPT1udWxsfHx0LnRvU3RyaW5nPT1udWxsP3ZvaWQgMDp0LnRvU3RyaW5nKCkpPz9udWxsfSxhZ2dyZWdhdGlvbkZuOmBhdXRvYH0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2dyb3VwaW5nOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR3JvdXBpbmdDaGFuZ2U6TyhgZ3JvdXBpbmdgLGUpLGdyb3VwZWRDb2x1bW5Nb2RlOmByZW9yZGVyYH0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UudG9nZ2xlR3JvdXBpbmc9KCk9Pnt0LnNldEdyb3VwaW5nKHQ9PnQhPW51bGwmJnQuaW5jbHVkZXMoZS5pZCk/dC5maWx0ZXIodD0+dCE9PWUuaWQpOlsuLi50Pz9bXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZz8/ITApJiYodC5vcHRpb25zLmVuYWJsZUdyb3VwaW5nPz8hMCkmJighIWUuYWNjZXNzb3JGbnx8ISFlLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKSxlLmdldElzR3JvdXBlZD0oKT0+dC5nZXRTdGF0ZSgpLmdyb3VwaW5nPy5pbmNsdWRlcyhlLmlkKSxlLmdldEdyb3VwZWRJbmRleD0oKT0+dC5nZXRTdGF0ZSgpLmdyb3VwaW5nPy5pbmRleE9mKGUuaWQpLGUuZ2V0VG9nZ2xlR3JvdXBpbmdIYW5kbGVyPSgpPT57bGV0IHQ9ZS5nZXRDYW5Hcm91cCgpO3JldHVybigpPT57dCYmZS50b2dnbGVHcm91cGluZygpfX0sZS5nZXRBdXRvQWdncmVnYXRpb25Gbj0oKT0+e2xldCBuPXQuZ2V0Q29yZVJvd01vZGVsKCkuZmxhdFJvd3NbMF0/LmdldFZhbHVlKGUuaWQpO2lmKHR5cGVvZiBuPT1gbnVtYmVyYClyZXR1cm4gTC5zdW07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pPT09YFtvYmplY3QgRGF0ZV1gKXJldHVybiBMLmV4dGVudH0sZS5nZXRBZ2dyZWdhdGlvbkZuPSgpPT57aWYoIWUpdGhyb3cgRXJyb3IoKTtyZXR1cm4gayhlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuKT9lLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuOmUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm49PT1gYXV0b2A/ZS5nZXRBdXRvQWdncmVnYXRpb25GbigpOnQub3B0aW9ucy5hZ2dyZWdhdGlvbkZucz8uW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dPz9MW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0R3JvdXBpbmc9dD0+ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkdyb3VwaW5nQ2hhbmdlKHQpLGUucmVzZXRHcm91cGluZz10PT57ZS5zZXRHcm91cGluZyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5ncm91cGluZz8/W10pfSxlLmdldFByZUdyb3VwZWRSb3dNb2RlbD0oKT0+ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRHcm91cGVkUm93TW9kZWw9KCk9PighZS5fZ2V0R3JvdXBlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsJiYoZS5fZ2V0R3JvdXBlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRHcm91cGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxHcm91cGluZ3x8IWUuX2dldEdyb3VwZWRSb3dNb2RlbD9lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpOmUuX2dldEdyb3VwZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PiEhZS5ncm91cGluZ0NvbHVtbklkLGUuZ2V0R3JvdXBpbmdWYWx1ZT1uPT57aWYoZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm4gZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXTtsZXQgcj10LmdldENvbHVtbihuKTtyZXR1cm4gciE9bnVsbCYmci5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZT8oZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXT1yLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKGUub3JpZ2luYWwpLGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl0pOmUuZ2V0VmFsdWUobil9LGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGU9e319LGNyZWF0ZUNlbGw6KGUsdCxuLHIpPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PnQuZ2V0SXNHcm91cGVkKCkmJnQuaWQ9PT1uLmdyb3VwaW5nQ29sdW1uSWQsZS5nZXRJc1BsYWNlaG9sZGVyPSgpPT4hZS5nZXRJc0dyb3VwZWQoKSYmdC5nZXRJc0dyb3VwZWQoKSxlLmdldElzQWdncmVnYXRlZD0oKT0+e3ZhciB0O3JldHVybiFlLmdldElzR3JvdXBlZCgpJiYhZS5nZXRJc1BsYWNlaG9sZGVyKCkmJiEhKCh0PW4uc3ViUm93cykhPW51bGwmJnQubGVuZ3RoKX19fTtmdW5jdGlvbiBNZShlLHQsbil7aWYoISh0IT1udWxsJiZ0Lmxlbmd0aCl8fCFuKXJldHVybiBlO2xldCByPWUuZmlsdGVyKGU9PiF0LmluY2x1ZGVzKGUuaWQpKTtyZXR1cm4gbj09PWByZW1vdmVgP3I6Wy4uLnQubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSwuLi5yXX12YXIgTmU9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbk9yZGVyOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uT3JkZXJDaGFuZ2U6TyhgY29sdW1uT3JkZXJgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRJbmRleD1BKGU9PltVKHQsZSldLHQ9PnQuZmluZEluZGV4KHQ9PnQuaWQ9PT1lLmlkKSxqKHQub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0SW5kZXhgKSksZS5nZXRJc0ZpcnN0Q29sdW1uPW49PlUodCxuKVswXT8uaWQ9PT1lLmlkLGUuZ2V0SXNMYXN0Q29sdW1uPW49PntsZXQgcj1VKHQsbik7cmV0dXJuIHJbci5sZW5ndGgtMV0/LmlkPT09ZS5pZH19LGNyZWF0ZVRhYmxlOmU9PntlLnNldENvbHVtbk9yZGVyPXQ9PmUub3B0aW9ucy5vbkNvbHVtbk9yZGVyQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5PcmRlckNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uT3JkZXI9dD0+e2Uuc2V0Q29sdW1uT3JkZXIodD9bXTplLmluaXRpYWxTdGF0ZS5jb2x1bW5PcmRlcj8/W10pfSxlLl9nZXRPcmRlckNvbHVtbnNGbj1BKCgpPT5bZS5nZXRTdGF0ZSgpLmNvbHVtbk9yZGVyLGUuZ2V0U3RhdGUoKS5ncm91cGluZyxlLm9wdGlvbnMuZ3JvdXBlZENvbHVtbk1vZGVdLChlLHQsbik9PnI9PntsZXQgaT1bXTtpZighKGUhPW51bGwmJmUubGVuZ3RoKSlpPXI7ZWxzZXtsZXQgdD1bLi4uZV0sbj1bLi4ucl07Zm9yKDtuLmxlbmd0aCYmdC5sZW5ndGg7KXtsZXQgZT10LnNoaWZ0KCkscj1uLmZpbmRJbmRleCh0PT50LmlkPT09ZSk7cj4tMSYmaS5wdXNoKG4uc3BsaWNlKHIsMSlbMF0pfWk9Wy4uLmksLi4ubl19cmV0dXJuIE1lKGksdCxuKX0saihlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBfZ2V0T3JkZXJDb2x1bW5zRm5gKSl9fSxSPSgpPT4oe2xlZnQ6W10scmlnaHQ6W119KSxQZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uUGlubmluZzpSKCksLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5QaW5uaW5nQ2hhbmdlOk8oYGNvbHVtblBpbm5pbmdgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5waW49bj0+e2xldCByPWUuZ2V0TGVhZkNvbHVtbnMoKS5tYXAoZT0+ZS5pZCkuZmlsdGVyKEJvb2xlYW4pO3Quc2V0Q29sdW1uUGlubmluZyhlPT5uPT09YHJpZ2h0YD97bGVmdDooZT8ubGVmdD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKSxyaWdodDpbLi4uKGU/LnJpZ2h0Pz9bXSkuZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlKSkpLC4uLnJdfTpuPT09YGxlZnRgP3tsZWZ0OlsuLi4oZT8ubGVmdD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKSwuLi5yXSxyaWdodDooZT8ucmlnaHQ/P1tdKS5maWx0ZXIoZT0+IShyIT1udWxsJiZyLmluY2x1ZGVzKGUpKSl9OntsZWZ0OihlPy5sZWZ0Pz9bXSkuZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlKSkpLHJpZ2h0OihlPy5yaWdodD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKX0pfSxlLmdldENhblBpbj0oKT0+ZS5nZXRMZWFmQ29sdW1ucygpLnNvbWUoZT0+KGUuY29sdW1uRGVmLmVuYWJsZVBpbm5pbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVDb2x1bW5QaW5uaW5nPz90Lm9wdGlvbnMuZW5hYmxlUGlubmluZz8/ITApKSxlLmdldElzUGlubmVkPSgpPT57bGV0IG49ZS5nZXRMZWFmQ29sdW1ucygpLm1hcChlPT5lLmlkKSx7bGVmdDpyLHJpZ2h0Oml9PXQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLGE9bi5zb21lKGU9PnI/LmluY2x1ZGVzKGUpKSxvPW4uc29tZShlPT5pPy5pbmNsdWRlcyhlKSk7cmV0dXJuIGE/YGxlZnRgOm8/YHJpZ2h0YDohMX0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciBuO2xldCByPWUuZ2V0SXNQaW5uZWQoKTtyZXR1cm4gcj8oKG49dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpPT1udWxsfHwobj1uW3JdKT09bnVsbD92b2lkIDA6bi5pbmRleE9mKGUuaWQpKT8/LTE6MH19LGNyZWF0ZVJvdzooZSx0KT0+e2UuZ2V0Q2VudGVyVmlzaWJsZUNlbGxzPUEoKCk9PltlLl9nZXRBbGxWaXNpYmxlQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0LG4pPT57bGV0IHI9Wy4uLnQ/P1tdLC4uLm4/P1tdXTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaW5jbHVkZXMoZS5jb2x1bW4uaWQpKX0saih0Lm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldENlbnRlclZpc2libGVDZWxsc2ApKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9QSgoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4odD8/W10pLm1hcCh0PT5lLmZpbmQoZT0+ZS5jb2x1bW4uaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246YGxlZnRgfSkpLGoodC5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBnZXRMZWZ0VmlzaWJsZUNlbGxzYCkpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHM9QSgoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KHQ/P1tdKS5tYXAodD0+ZS5maW5kKGU9PmUuY29sdW1uLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKS5tYXAoZT0+KHsuLi5lLHBvc2l0aW9uOmByaWdodGB9KSksaih0Lm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldFJpZ2h0VmlzaWJsZUNlbGxzYCkpfSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5QaW5uaW5nPXQ9PmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2UodCksZS5yZXNldENvbHVtblBpbm5pbmc9dD0+ZS5zZXRDb2x1bW5QaW5uaW5nKHQ/UigpOmUuaW5pdGlhbFN0YXRlPy5jb2x1bW5QaW5uaW5nPz9SKCkpLGUuZ2V0SXNTb21lQ29sdW1uc1Bpbm5lZD10PT57bGV0IG49ZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmc7cmV0dXJuIHQ/ISFuW3RdPy5sZW5ndGg6ISEobi5sZWZ0Py5sZW5ndGh8fG4ucmlnaHQ/Lmxlbmd0aCl9LGUuZ2V0TGVmdExlYWZDb2x1bW5zPUEoKCk9PltlLmdldEFsbExlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdF0sKGUsdCk9Pih0Pz9bXSkubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSxqKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0TGVmdExlYWZDb2x1bW5zYCkpLGUuZ2V0UmlnaHRMZWFmQ29sdW1ucz1BKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KHQ/P1tdKS5tYXAodD0+ZS5maW5kKGU9PmUuaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLGooZS5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRSaWdodExlYWZDb2x1bW5zYCkpLGUuZ2V0Q2VudGVyTGVhZkNvbHVtbnM9QSgoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0LG4pPT57bGV0IHI9Wy4uLnQ/P1tdLC4uLm4/P1tdXTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaW5jbHVkZXMoZS5pZCkpfSxqKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0Q2VudGVyTGVhZkNvbHVtbnNgKSl9fTtmdW5jdGlvbiBGZShlKXtyZXR1cm4gZXx8KHR5cGVvZiBkb2N1bWVudDxgdWA/ZG9jdW1lbnQ6bnVsbCl9dmFyIHo9e3NpemU6MTUwLG1pblNpemU6MjAsbWF4U2l6ZToyKio1My0xfSxCPSgpPT4oe3N0YXJ0T2Zmc2V0Om51bGwsc3RhcnRTaXplOm51bGwsZGVsdGFPZmZzZXQ6bnVsbCxkZWx0YVBlcmNlbnRhZ2U6bnVsbCxpc1Jlc2l6aW5nQ29sdW1uOiExLGNvbHVtblNpemluZ1N0YXJ0OltdfSksSWU9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9PnosZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uU2l6aW5nOnt9LGNvbHVtblNpemluZ0luZm86QigpLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe2NvbHVtblJlc2l6ZU1vZGU6YG9uRW5kYCxjb2x1bW5SZXNpemVEaXJlY3Rpb246YGx0cmAsb25Db2x1bW5TaXppbmdDaGFuZ2U6TyhgY29sdW1uU2l6aW5nYCxlKSxvbkNvbHVtblNpemluZ0luZm9DaGFuZ2U6TyhgY29sdW1uU2l6aW5nSW5mb2AsZSl9KSxjcmVhdGVDb2x1bW46KGUsdCk9PntlLmdldFNpemU9KCk9PntsZXQgbj10LmdldFN0YXRlKCkuY29sdW1uU2l6aW5nW2UuaWRdO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLmNvbHVtbkRlZi5taW5TaXplPz96Lm1pblNpemUsbj8/ZS5jb2x1bW5EZWYuc2l6ZT8/ei5zaXplKSxlLmNvbHVtbkRlZi5tYXhTaXplPz96Lm1heFNpemUpfSxlLmdldFN0YXJ0PUEoZT0+W2UsVSh0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKDAsZS5nZXRJbmRleCh0KSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLGoodC5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRTdGFydGApKSxlLmdldEFmdGVyPUEoZT0+W2UsVSh0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKGUuZ2V0SW5kZXgodCkrMSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLGoodC5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBZnRlcmApKSxlLnJlc2V0U2l6ZT0oKT0+e3Quc2V0Q29sdW1uU2l6aW5nKHQ9PntsZXR7W2UuaWRdOm4sLi4ucn09dDtyZXR1cm4gcn0pfSxlLmdldENhblJlc2l6ZT0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZVJlc2l6aW5nPz8hMCkmJih0Lm9wdGlvbnMuZW5hYmxlQ29sdW1uUmVzaXppbmc/PyEwKSxlLmdldElzUmVzaXppbmc9KCk9PnQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmdJbmZvLmlzUmVzaXppbmdDb2x1bW49PT1lLmlkfSxjcmVhdGVIZWFkZXI6KGUsdCk9PntlLmdldFNpemU9KCk9PntsZXQgdD0wLG49ZT0+e2Uuc3ViSGVhZGVycy5sZW5ndGg/ZS5zdWJIZWFkZXJzLmZvckVhY2gobik6dCs9ZS5jb2x1bW4uZ2V0U2l6ZSgpPz8wfTtyZXR1cm4gbihlKSx0fSxlLmdldFN0YXJ0PSgpPT57aWYoZS5pbmRleD4wKXtsZXQgdD1lLmhlYWRlckdyb3VwLmhlYWRlcnNbZS5pbmRleC0xXTtyZXR1cm4gdC5nZXRTdGFydCgpK3QuZ2V0U2l6ZSgpfXJldHVybiAwfSxlLmdldFJlc2l6ZUhhbmRsZXI9bj0+e2xldCByPXQuZ2V0Q29sdW1uKGUuY29sdW1uLmlkKSxpPXI/LmdldENhblJlc2l6ZSgpO3JldHVybiBhPT57aWYoIXJ8fCFpfHwoYS5wZXJzaXN0PT1udWxsfHxhLnBlcnNpc3QoKSxIKGEpJiZhLnRvdWNoZXMmJmEudG91Y2hlcy5sZW5ndGg+MSkpcmV0dXJuO2xldCBvPWUuZ2V0U2l6ZSgpLHM9ZT9lLmdldExlYWZIZWFkZXJzKCkubWFwKGU9PltlLmNvbHVtbi5pZCxlLmNvbHVtbi5nZXRTaXplKCldKTpbW3IuaWQsci5nZXRTaXplKCldXSxjPUgoYSk/TWF0aC5yb3VuZChhLnRvdWNoZXNbMF0uY2xpZW50WCk6YS5jbGllbnRYLGw9e30sdT0oZSxuKT0+e3R5cGVvZiBuPT1gbnVtYmVyYCYmKHQuc2V0Q29sdW1uU2l6aW5nSW5mbyhlPT57bGV0IHI9dC5vcHRpb25zLmNvbHVtblJlc2l6ZURpcmVjdGlvbj09PWBydGxgPy0xOjEsaT0obi0oZT8uc3RhcnRPZmZzZXQ/PzApKSpyLGE9TWF0aC5tYXgoaS8oZT8uc3RhcnRTaXplPz8wKSwtLjk5OTk5OSk7cmV0dXJuIGUuY29sdW1uU2l6aW5nU3RhcnQuZm9yRWFjaChlPT57bGV0W3Qsbl09ZTtsW3RdPU1hdGgucm91bmQoTWF0aC5tYXgobituKmEsMCkqMTAwKS8xMDB9KSx7Li4uZSxkZWx0YU9mZnNldDppLGRlbHRhUGVyY2VudGFnZTphfX0pLCh0Lm9wdGlvbnMuY29sdW1uUmVzaXplTW9kZT09PWBvbkNoYW5nZWB8fGU9PT1gZW5kYCkmJnQuc2V0Q29sdW1uU2l6aW5nKGU9Pih7Li4uZSwuLi5sfSkpKX0sZD1lPT51KGBtb3ZlYCxlKSxmPWU9Pnt1KGBlbmRgLGUpLHQuc2V0Q29sdW1uU2l6aW5nSW5mbyhlPT4oey4uLmUsaXNSZXNpemluZ0NvbHVtbjohMSxzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsY29sdW1uU2l6aW5nU3RhcnQ6W119KSl9LHA9RmUobiksbT17bW92ZUhhbmRsZXI6ZT0+ZChlLmNsaWVudFgpLHVwSGFuZGxlcjplPT57cD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgbW91c2Vtb3ZlYCxtLm1vdmVIYW5kbGVyKSxwPy5yZW1vdmVFdmVudExpc3RlbmVyKGBtb3VzZXVwYCxtLnVwSGFuZGxlciksZihlLmNsaWVudFgpfX0saD17bW92ZUhhbmRsZXI6ZT0+KGUuY2FuY2VsYWJsZSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKSxkKGUudG91Y2hlc1swXS5jbGllbnRYKSwhMSksdXBIYW5kbGVyOmU9PntwPy5yZW1vdmVFdmVudExpc3RlbmVyKGB0b3VjaG1vdmVgLGgubW92ZUhhbmRsZXIpLHA/LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRvdWNoZW5kYCxoLnVwSGFuZGxlciksZS5jYW5jZWxhYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLGYoZS50b3VjaGVzWzBdPy5jbGllbnRYKX19LGc9TGUoKT97cGFzc2l2ZTohMX06ITE7SChhKT8ocD8uYWRkRXZlbnRMaXN0ZW5lcihgdG91Y2htb3ZlYCxoLm1vdmVIYW5kbGVyLGcpLHA/LmFkZEV2ZW50TGlzdGVuZXIoYHRvdWNoZW5kYCxoLnVwSGFuZGxlcixnKSk6KHA/LmFkZEV2ZW50TGlzdGVuZXIoYG1vdXNlbW92ZWAsbS5tb3ZlSGFuZGxlcixnKSxwPy5hZGRFdmVudExpc3RlbmVyKGBtb3VzZXVwYCxtLnVwSGFuZGxlcixnKSksdC5zZXRDb2x1bW5TaXppbmdJbmZvKGU9Pih7Li4uZSxzdGFydE9mZnNldDpjLHN0YXJ0U2l6ZTpvLGRlbHRhT2Zmc2V0OjAsZGVsdGFQZXJjZW50YWdlOjAsY29sdW1uU2l6aW5nU3RhcnQ6cyxpc1Jlc2l6aW5nQ29sdW1uOnIuaWR9KSl9fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uU2l6aW5nPXQ9PmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlKHQpLGUuc2V0Q29sdW1uU2l6aW5nSW5mbz10PT5lLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlKHQpLGUucmVzZXRDb2x1bW5TaXppbmc9dD0+e2Uuc2V0Q29sdW1uU2l6aW5nKHQ/e306ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nPz97fSl9LGUucmVzZXRIZWFkZXJTaXplSW5mbz10PT57ZS5zZXRDb2x1bW5TaXppbmdJbmZvKHQ/QigpOmUuaW5pdGlhbFN0YXRlLmNvbHVtblNpemluZ0luZm8/P0IoKSl9LGUuZ2V0VG90YWxTaXplPSgpPT5lLmdldEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MCxlLmdldExlZnRUb3RhbFNpemU9KCk9PmUuZ2V0TGVmdEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MCxlLmdldENlbnRlclRvdGFsU2l6ZT0oKT0+ZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKVswXT8uaGVhZGVycy5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCk/PzAsZS5nZXRSaWdodFRvdGFsU2l6ZT0oKT0+ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MH19LFY9bnVsbDtmdW5jdGlvbiBMZSgpe2lmKHR5cGVvZiBWPT1gYm9vbGVhbmApcmV0dXJuIFY7bGV0IGU9ITE7dHJ5e2xldCB0PXtnZXQgcGFzc2l2ZSgpe3JldHVybiBlPSEwLCExfX0sbj0oKT0+e307d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHRlc3RgLG4sdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRlc3RgLG4pfWNhdGNoe2U9ITF9cmV0dXJuIFY9ZSxWfWZ1bmN0aW9uIEgoZSl7cmV0dXJuIGUudHlwZT09PWB0b3VjaHN0YXJ0YH12YXIgUmU9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtblZpc2liaWxpdHk6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOk8oYGNvbHVtblZpc2liaWxpdHlgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS50b2dnbGVWaXNpYmlsaXR5PW49PntlLmdldENhbkhpZGUoKSYmdC5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ9Pih7Li4udCxbZS5pZF06bj8/IWUuZ2V0SXNWaXNpYmxlKCl9KSl9LGUuZ2V0SXNWaXNpYmxlPSgpPT57bGV0IG49ZS5jb2x1bW5zO3JldHVybihuLmxlbmd0aD9uLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGUoKSk6dC5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHk/LltlLmlkXSk/PyEwfSxlLmdldENhbkhpZGU9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVIaWRpbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVIaWRpbmc/PyEwKSxlLmdldFRvZ2dsZVZpc2liaWxpdHlIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVWaXNpYmlsaXR5PT1udWxsfHxlLnRvZ2dsZVZpc2liaWxpdHkodC50YXJnZXQuY2hlY2tlZCl9fSxjcmVhdGVSb3c6KGUsdCk9PntlLl9nZXRBbGxWaXNpYmxlQ2VsbHM9QSgoKT0+W2UuZ2V0QWxsQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uVmlzaWJpbGl0eV0sZT0+ZS5maWx0ZXIoZT0+ZS5jb2x1bW4uZ2V0SXNWaXNpYmxlKCkpLGoodC5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBfZ2V0QWxsVmlzaWJsZUNlbGxzYCkpLGUuZ2V0VmlzaWJsZUNlbGxzPUEoKCk9PltlLmdldExlZnRWaXNpYmxlQ2VsbHMoKSxlLmdldENlbnRlclZpc2libGVDZWxscygpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHMoKV0sKGUsdCxuKT0+Wy4uLmUsLi4udCwuLi5uXSxqKHQub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0VmlzaWJsZUNlbGxzYCkpfSxjcmVhdGVUYWJsZTplPT57bGV0IHQ9KHQsbik9PkEoKCk9PltuKCksbigpLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZSgpKS5tYXAoZT0+ZS5pZCkuam9pbihgX2ApXSxlPT5lLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZT09bnVsbD92b2lkIDA6ZS5nZXRJc1Zpc2libGUoKSksaihlLm9wdGlvbnMsYGRlYnVnQ29sdW1uc2AsdCkpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPXQoYGdldFZpc2libGVGbGF0Q29sdW1uc2AsKCk9PmUuZ2V0QWxsRmxhdENvbHVtbnMoKSksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zYCwoKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpKSxlLmdldExlZnRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1uc2AsKCk9PmUuZ2V0TGVmdExlYWZDb2x1bW5zKCkpLGUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnNgLCgpPT5lLmdldFJpZ2h0TGVhZkNvbHVtbnMoKSksZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zYCwoKT0+ZS5nZXRDZW50ZXJMZWFmQ29sdW1ucygpKSxlLnNldENvbHVtblZpc2liaWxpdHk9dD0+ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uVmlzaWJpbGl0eT10PT57ZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ/e306ZS5pbml0aWFsU3RhdGUuY29sdW1uVmlzaWJpbGl0eT8/e30pfSxlLnRvZ2dsZUFsbENvbHVtbnNWaXNpYmxlPXQ9Pnt0Pz89IWUuZ2V0SXNBbGxDb2x1bW5zVmlzaWJsZSgpLGUuc2V0Q29sdW1uVmlzaWJpbGl0eShlLmdldEFsbExlYWZDb2x1bW5zKCkucmVkdWNlKChlLG4pPT4oey4uLmUsW24uaWRdOnR8fCEobi5nZXRDYW5IaWRlIT1udWxsJiZuLmdldENhbkhpZGUoKSl9KSx7fSkpfSxlLmdldElzQWxsQ29sdW1uc1Zpc2libGU9KCk9PiFlLmdldEFsbExlYWZDb2x1bW5zKCkuc29tZShlPT4hKGUuZ2V0SXNWaXNpYmxlIT1udWxsJiZlLmdldElzVmlzaWJsZSgpKSksZS5nZXRJc1NvbWVDb2x1bW5zVmlzaWJsZT0oKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGU9PW51bGw/dm9pZCAwOmUuZ2V0SXNWaXNpYmxlKCkpLGUuZ2V0VG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHlIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVBbGxDb2x1bW5zVmlzaWJsZSh0LnRhcmdldD8uY2hlY2tlZCl9fX07ZnVuY3Rpb24gVShlLHQpe3JldHVybiB0P3Q9PT1gY2VudGVyYD9lLmdldENlbnRlclZpc2libGVMZWFmQ29sdW1ucygpOnQ9PT1gbGVmdGA/ZS5nZXRMZWZ0VmlzaWJsZUxlYWZDb2x1bW5zKCk6ZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCl9dmFyIHplPXtjcmVhdGVUYWJsZTplPT57ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwoZSxgX19nbG9iYWxfX2ApLGUuZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsPSgpPT5lLm9wdGlvbnMubWFudWFsRmlsdGVyaW5nfHwhZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsP2UuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpOmUuX2dldEdsb2JhbEZhY2V0ZWRSb3dNb2RlbCgpLGUuX2dldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM9ZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJmUub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKGUsYF9fZ2xvYmFsX19gKSxlLmdldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM9KCk9PmUuX2dldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM/ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcygpOm5ldyBNYXAsZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMoZSxgX19nbG9iYWxfX2ApLGUuZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcz0oKT0+e2lmKGUuX2dldEdsb2JhbEZhY2V0ZWRNaW5NYXhWYWx1ZXMpcmV0dXJuIGUuX2dldEdsb2JhbEZhY2V0ZWRNaW5NYXhWYWx1ZXMoKX19fSxCZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Z2xvYmFsRmlsdGVyOnZvaWQgMCwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkdsb2JhbEZpbHRlckNoYW5nZTpPKGBnbG9iYWxGaWx0ZXJgLGUpLGdsb2JhbEZpbHRlckZuOmBhdXRvYCxnZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXI6dD0+e3ZhciBuO2xldCByPShuPWUuZ2V0Q29yZVJvd01vZGVsKCkuZmxhdFJvd3NbMF0pPT1udWxsfHwobj1uLl9nZXRBbGxDZWxsc0J5Q29sdW1uSWQoKVt0LmlkXSk9PW51bGw/dm9pZCAwOm4uZ2V0VmFsdWUoKTtyZXR1cm4gdHlwZW9mIHI9PWBzdHJpbmdgfHx0eXBlb2Ygcj09YG51bWJlcmB9fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRDYW5HbG9iYWxGaWx0ZXI9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVHbG9iYWxGaWx0ZXI/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVHbG9iYWxGaWx0ZXI/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVGaWx0ZXJzPz8hMCkmJigodC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcj09bnVsbD92b2lkIDA6dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcihlKSk/PyEwKSYmISFlLmFjY2Vzc29yRm59LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+Ri5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57bGV0e2dsb2JhbEZpbHRlckZuOnR9PWUub3B0aW9ucztyZXR1cm4gayh0KT90OnQ9PT1gYXV0b2A/ZS5nZXRHbG9iYWxBdXRvRmlsdGVyRm4oKTplLm9wdGlvbnMuZmlsdGVyRm5zPy5bdF0/P0ZbdF19LGUuc2V0R2xvYmFsRmlsdGVyPXQ9PntlLm9wdGlvbnMub25HbG9iYWxGaWx0ZXJDaGFuZ2U9PW51bGx8fGUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZSh0KX0sZS5yZXNldEdsb2JhbEZpbHRlcj10PT57ZS5zZXRHbG9iYWxGaWx0ZXIodD92b2lkIDA6ZS5pbml0aWFsU3RhdGUuZ2xvYmFsRmlsdGVyKX19fSxWZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7ZXhwYW5kZWQ6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25FeHBhbmRlZENoYW5nZTpPKGBleHBhbmRlZGAsZSkscGFnaW5hdGVFeHBhbmRlZFJvd3M6ITB9KSxjcmVhdGVUYWJsZTplPT57bGV0IHQ9ITEsbj0hMTtlLl9hdXRvUmVzZXRFeHBhbmRlZD0oKT0+e2lmKCF0KXtlLl9xdWV1ZSgoKT0+e3Q9ITB9KTtyZXR1cm59aWYoZS5vcHRpb25zLmF1dG9SZXNldEFsbD8/ZS5vcHRpb25zLmF1dG9SZXNldEV4cGFuZGVkPz8hZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYobilyZXR1cm47bj0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLG49ITF9KX19LGUuc2V0RXhwYW5kZWQ9dD0+ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkV4cGFuZGVkQ2hhbmdlKHQpLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkPXQ9Pnt0Pz8hZS5nZXRJc0FsbFJvd3NFeHBhbmRlZCgpP2Uuc2V0RXhwYW5kZWQoITApOmUuc2V0RXhwYW5kZWQoe30pfSxlLnJlc2V0RXhwYW5kZWQ9dD0+e2Uuc2V0RXhwYW5kZWQodD97fTplLmluaXRpYWxTdGF0ZT8uZXhwYW5kZWQ/P3t9KX0sZS5nZXRDYW5Tb21lUm93c0V4cGFuZD0oKT0+ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PmUuZ2V0Q2FuRXhwYW5kKCkpLGUuZ2V0VG9nZ2xlQWxsUm93c0V4cGFuZGVkSGFuZGxlcj0oKT0+dD0+e3QucGVyc2lzdD09bnVsbHx8dC5wZXJzaXN0KCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQoKX0sZS5nZXRJc1NvbWVSb3dzRXhwYW5kZWQ9KCk9PntsZXQgdD1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIHQ9PT0hMHx8T2JqZWN0LnZhbHVlcyh0KS5zb21lKEJvb2xlYW4pfSxlLmdldElzQWxsUm93c0V4cGFuZGVkPSgpPT57bGV0IHQ9ZS5nZXRTdGF0ZSgpLmV4cGFuZGVkO3JldHVybiB0eXBlb2YgdD09YGJvb2xlYW5gP3Q9PT0hMDohKCFPYmplY3Qua2V5cyh0KS5sZW5ndGh8fGUuZ2V0Um93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PiFlLmdldElzRXhwYW5kZWQoKSkpfSxlLmdldEV4cGFuZGVkRGVwdGg9KCk9PntsZXQgdD0wO3JldHVybihlLmdldFN0YXRlKCkuZXhwYW5kZWQ9PT0hMD9PYmplY3Qua2V5cyhlLmdldFJvd01vZGVsKCkucm93c0J5SWQpOk9iamVjdC5rZXlzKGUuZ2V0U3RhdGUoKS5leHBhbmRlZCkpLmZvckVhY2goZT0+e2xldCBuPWUuc3BsaXQoYC5gKTt0PU1hdGgubWF4KHQsbi5sZW5ndGgpfSksdH0sZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsPSgpPT5lLmdldFNvcnRlZFJvd01vZGVsKCksZS5nZXRFeHBhbmRlZFJvd01vZGVsPSgpPT4oIWUuX2dldEV4cGFuZGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRFeHBhbmRlZFJvd01vZGVsJiYoZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZ3x8IWUuX2dldEV4cGFuZGVkUm93TW9kZWw/ZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCk6ZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS50b2dnbGVFeHBhbmRlZD1uPT57dC5zZXRFeHBhbmRlZChyPT57bGV0IGk9cj09PSEwfHwhIShyIT1udWxsJiZyW2UuaWRdKSxhPXt9O2lmKHI9PT0hMD9PYmplY3Qua2V5cyh0LmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2goZT0+e2FbZV09ITB9KTphPXIsbj8/PSFpLCFpJiZuKXJldHVybnsuLi5hLFtlLmlkXTohMH07aWYoaSYmIW4pe2xldHtbZS5pZF06dCwuLi5ufT1hO3JldHVybiBufXJldHVybiByfSl9LGUuZ2V0SXNFeHBhbmRlZD0oKT0+e2xldCBuPXQuZ2V0U3RhdGUoKS5leHBhbmRlZDtyZXR1cm4hISgodC5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ9PW51bGw/dm9pZCAwOnQub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKT8/KG49PT0hMHx8bj8uW2UuaWRdKSl9LGUuZ2V0Q2FuRXhwYW5kPSgpPT57dmFyIG47cmV0dXJuKHQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQ9PW51bGw/dm9pZCAwOnQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQoZSkpPz8oKHQub3B0aW9ucy5lbmFibGVFeHBhbmRpbmc/PyEwKSYmISEoKG49ZS5zdWJSb3dzKSE9bnVsbCYmbi5sZW5ndGgpKX0sZS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZD0oKT0+e2xldCBuPSEwLHI9ZTtmb3IoO24mJnIucGFyZW50SWQ7KXI9dC5nZXRSb3coci5wYXJlbnRJZCwhMCksbj1yLmdldElzRXhwYW5kZWQoKTtyZXR1cm4gbn0sZS5nZXRUb2dnbGVFeHBhbmRlZEhhbmRsZXI9KCk9PntsZXQgdD1lLmdldENhbkV4cGFuZCgpO3JldHVybigpPT57dCYmZS50b2dnbGVFeHBhbmRlZCgpfX19fSxXPTAsRz0xMCxLPSgpPT4oe3BhZ2VJbmRleDpXLHBhZ2VTaXplOkd9KSxIZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Li4uZSxwYWdpbmF0aW9uOnsuLi5LKCksLi4uZT8ucGFnaW5hdGlvbn19KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uUGFnaW5hdGlvbkNoYW5nZTpPKGBwYWdpbmF0aW9uYCxlKX0pLGNyZWF0ZVRhYmxlOmU9PntsZXQgdD0hMSxuPSExO2UuX2F1dG9SZXNldFBhZ2VJbmRleD0oKT0+e2lmKCF0KXtlLl9xdWV1ZSgoKT0+e3Q9ITB9KTtyZXR1cm59aWYoZS5vcHRpb25zLmF1dG9SZXNldEFsbD8/ZS5vcHRpb25zLmF1dG9SZXNldFBhZ2VJbmRleD8/IWUub3B0aW9ucy5tYW51YWxQYWdpbmF0aW9uKXtpZihuKXJldHVybjtuPSEwLGUuX3F1ZXVlKCgpPT57ZS5yZXNldFBhZ2VJbmRleCgpLG49ITF9KX19LGUuc2V0UGFnaW5hdGlvbj10PT5lLm9wdGlvbnMub25QYWdpbmF0aW9uQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25QYWdpbmF0aW9uQ2hhbmdlKGU9PkQodCxlKSksZS5yZXNldFBhZ2luYXRpb249dD0+e2Uuc2V0UGFnaW5hdGlvbih0P0soKTplLmluaXRpYWxTdGF0ZS5wYWdpbmF0aW9uPz9LKCkpfSxlLnNldFBhZ2VJbmRleD10PT57ZS5zZXRQYWdpbmF0aW9uKG49PntsZXQgcj1EKHQsbi5wYWdlSW5kZXgpLGk9ZS5vcHRpb25zLnBhZ2VDb3VudD09PXZvaWQgMHx8ZS5vcHRpb25zLnBhZ2VDb3VudD09PS0xPzIqKjUzLTE6ZS5vcHRpb25zLnBhZ2VDb3VudC0xO3JldHVybiByPU1hdGgubWF4KDAsTWF0aC5taW4ocixpKSksey4uLm4scGFnZUluZGV4OnJ9fSl9LGUucmVzZXRQYWdlSW5kZXg9dD0+e3ZhciBuO2Uuc2V0UGFnZUluZGV4KHQ/VzooKG49ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwobj1uLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpuLnBhZ2VJbmRleCk/P1cpfSxlLnJlc2V0UGFnZVNpemU9dD0+e3ZhciBuO2Uuc2V0UGFnZVNpemUodD9HOigobj1lLmluaXRpYWxTdGF0ZSk9PW51bGx8fChuPW4ucGFnaW5hdGlvbik9PW51bGw/dm9pZCAwOm4ucGFnZVNpemUpPz9HKX0sZS5zZXRQYWdlU2l6ZT10PT57ZS5zZXRQYWdpbmF0aW9uKGU9PntsZXQgbj1NYXRoLm1heCgxLEQodCxlLnBhZ2VTaXplKSkscj1lLnBhZ2VTaXplKmUucGFnZUluZGV4LGk9TWF0aC5mbG9vcihyL24pO3JldHVybnsuLi5lLHBhZ2VJbmRleDppLHBhZ2VTaXplOm59fSl9LGUuc2V0UGFnZUNvdW50PXQ9PmUuc2V0UGFnaW5hdGlvbihuPT57bGV0IHI9RCh0LGUub3B0aW9ucy5wYWdlQ291bnQ/Py0xKTtyZXR1cm4gdHlwZW9mIHI9PWBudW1iZXJgJiYocj1NYXRoLm1heCgtMSxyKSksey4uLm4scGFnZUNvdW50OnJ9fSksZS5nZXRQYWdlT3B0aW9ucz1BKCgpPT5bZS5nZXRQYWdlQ291bnQoKV0sZT0+e2xldCB0PVtdO3JldHVybiBlJiZlPjAmJih0PVsuLi5BcnJheShlKV0uZmlsbChudWxsKS5tYXAoKGUsdCk9PnQpKSx0fSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFBhZ2VPcHRpb25zYCkpLGUuZ2V0Q2FuUHJldmlvdXNQYWdlPSgpPT5lLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlSW5kZXg+MCxlLmdldENhbk5leHRQYWdlPSgpPT57bGV0e3BhZ2VJbmRleDp0fT1lLmdldFN0YXRlKCkucGFnaW5hdGlvbixuPWUuZ2V0UGFnZUNvdW50KCk7cmV0dXJuIG49PT0tMXx8biE9PTAmJnQ8bi0xfSxlLnByZXZpb3VzUGFnZT0oKT0+ZS5zZXRQYWdlSW5kZXgoZT0+ZS0xKSxlLm5leHRQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlPT5lKzEpLGUuZmlyc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleCgwKSxlLmxhc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlLmdldFBhZ2VDb3VudCgpLTEpLGUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsPSgpPT5lLmdldEV4cGFuZGVkUm93TW9kZWwoKSxlLmdldFBhZ2luYXRpb25Sb3dNb2RlbD0oKT0+KCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwmJmUub3B0aW9ucy5nZXRQYWdpbmF0aW9uUm93TW9kZWwmJihlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw9ZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb258fCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTplLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwoKSksZS5nZXRQYWdlQ291bnQ9KCk9PmUub3B0aW9ucy5wYWdlQ291bnQ/P01hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpLGUuZ2V0Um93Q291bnQ9KCk9PmUub3B0aW9ucy5yb3dDb3VudD8/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5yb3dzLmxlbmd0aH19LFVlPSgpPT4oe3RvcDpbXSxib3R0b206W119KSxXZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7cm93UGlubmluZzpVZSgpLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uUm93UGlubmluZ0NoYW5nZTpPKGByb3dQaW5uaW5nYCxlKX0pLGNyZWF0ZVJvdzooZSx0KT0+e2UucGluPShuLHIsaSk9PntsZXQgYT1yP2UuZ2V0TGVhZlJvd3MoKS5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSk6W10sbz1pP2UuZ2V0UGFyZW50Um93cygpLm1hcChlPT57bGV0e2lkOnR9PWU7cmV0dXJuIHR9KTpbXSxzPW5ldyBTZXQoWy4uLm8sZS5pZCwuLi5hXSk7dC5zZXRSb3dQaW5uaW5nKGU9Pm49PT1gYm90dG9tYD97dG9wOihlPy50b3A/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpLGJvdHRvbTpbLi4uKGU/LmJvdHRvbT8/W10pLmZpbHRlcihlPT4hKHMhPW51bGwmJnMuaGFzKGUpKSksLi4uQXJyYXkuZnJvbShzKV19Om49PT1gdG9wYD97dG9wOlsuLi4oZT8udG9wPz9bXSkuZmlsdGVyKGU9PiEocyE9bnVsbCYmcy5oYXMoZSkpKSwuLi5BcnJheS5mcm9tKHMpXSxib3R0b206KGU/LmJvdHRvbT8/W10pLmZpbHRlcihlPT4hKHMhPW51bGwmJnMuaGFzKGUpKSl9Ont0b3A6KGU/LnRvcD8/W10pLmZpbHRlcihlPT4hKHMhPW51bGwmJnMuaGFzKGUpKSksYm90dG9tOihlPy5ib3R0b20/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpfSl9LGUuZ2V0Q2FuUGluPSgpPT57bGV0e2VuYWJsZVJvd1Bpbm5pbmc6bixlbmFibGVQaW5uaW5nOnJ9PXQub3B0aW9ucztyZXR1cm4gdHlwZW9mIG49PWBmdW5jdGlvbmA/bihlKTpuPz9yPz8hMH0sZS5nZXRJc1Bpbm5lZD0oKT0+e2xldCBuPVtlLmlkXSx7dG9wOnIsYm90dG9tOml9PXQuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLGE9bi5zb21lKGU9PnI/LmluY2x1ZGVzKGUpKSxvPW4uc29tZShlPT5pPy5pbmNsdWRlcyhlKSk7cmV0dXJuIGE/YHRvcGA6bz9gYm90dG9tYDohMX0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e2xldCBuPWUuZ2V0SXNQaW5uZWQoKTtyZXR1cm4gbj8oKG49PT1gdG9wYD90LmdldFRvcFJvd3MoKTp0LmdldEJvdHRvbVJvd3MoKSk/Lm1hcChlPT57bGV0e2lkOnR9PWU7cmV0dXJuIHR9KSk/LmluZGV4T2YoZS5pZCk/Py0xOi0xfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Um93UGlubmluZz10PT5lLm9wdGlvbnMub25Sb3dQaW5uaW5nQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Sb3dQaW5uaW5nQ2hhbmdlKHQpLGUucmVzZXRSb3dQaW5uaW5nPXQ9PmUuc2V0Um93UGlubmluZyh0P1VlKCk6ZS5pbml0aWFsU3RhdGU/LnJvd1Bpbm5pbmc/P1VlKCkpLGUuZ2V0SXNTb21lUm93c1Bpbm5lZD10PT57bGV0IG49ZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmc7cmV0dXJuIHQ/ISFuW3RdPy5sZW5ndGg6ISEobi50b3A/Lmxlbmd0aHx8bi5ib3R0b20/Lmxlbmd0aCl9LGUuX2dldFBpbm5lZFJvd3M9KHQsbixyKT0+KGUub3B0aW9ucy5rZWVwUGlubmVkUm93cz8/ITA/KG4/P1tdKS5tYXAodD0+e2xldCBuPWUuZ2V0Um93KHQsITApO3JldHVybiBuLmdldElzQWxsUGFyZW50c0V4cGFuZGVkKCk/bjpudWxsfSk6KG4/P1tdKS5tYXAoZT0+dC5maW5kKHQ9PnQuaWQ9PT1lKSkpLmZpbHRlcihCb29sZWFuKS5tYXAoZT0+KHsuLi5lLHBvc2l0aW9uOnJ9KSksZS5nZXRUb3BSb3dzPUEoKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3BdLCh0LG4pPT5lLl9nZXRQaW5uZWRSb3dzKHQsbixgdG9wYCksaihlLm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldFRvcFJvd3NgKSksZS5nZXRCb3R0b21Sb3dzPUEoKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy5ib3R0b21dLCh0LG4pPT5lLl9nZXRQaW5uZWRSb3dzKHQsbixgYm90dG9tYCksaihlLm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldEJvdHRvbVJvd3NgKSksZS5nZXRDZW50ZXJSb3dzPUEoKCk9PltlLmdldFJvd01vZGVsKCkucm93cyxlLmdldFN0YXRlKCkucm93UGlubmluZy50b3AsZS5nZXRTdGF0ZSgpLnJvd1Bpbm5pbmcuYm90dG9tXSwoZSx0LG4pPT57bGV0IHI9bmV3IFNldChbLi4udD8/W10sLi4ubj8/W11dKTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaGFzKGUuaWQpKX0saihlLm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldENlbnRlclJvd3NgKSl9fSxHZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7cm93U2VsZWN0aW9uOnt9LC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uUm93U2VsZWN0aW9uQ2hhbmdlOk8oYHJvd1NlbGVjdGlvbmAsZSksZW5hYmxlUm93U2VsZWN0aW9uOiEwLGVuYWJsZU11bHRpUm93U2VsZWN0aW9uOiEwLGVuYWJsZVN1YlJvd1NlbGVjdGlvbjohMH0pLGNyZWF0ZVRhYmxlOmU9PntlLnNldFJvd1NlbGVjdGlvbj10PT5lLm9wdGlvbnMub25Sb3dTZWxlY3Rpb25DaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vblJvd1NlbGVjdGlvbkNoYW5nZSh0KSxlLnJlc2V0Um93U2VsZWN0aW9uPXQ9PmUuc2V0Um93U2VsZWN0aW9uKHQ/e306ZS5pbml0aWFsU3RhdGUucm93U2VsZWN0aW9uPz97fSksZS50b2dnbGVBbGxSb3dzU2VsZWN0ZWQ9dD0+e2Uuc2V0Um93U2VsZWN0aW9uKG49Pnt0PXQ9PT12b2lkIDA/IWUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQoKTp0O2xldCByPXsuLi5ufSxpPWUuZ2V0UHJlR3JvdXBlZFJvd01vZGVsKCkuZmxhdFJvd3M7cmV0dXJuIHQ/aS5mb3JFYWNoKGU9PntlLmdldENhblNlbGVjdCgpJiYocltlLmlkXT0hMCl9KTppLmZvckVhY2goZT0+e2RlbGV0ZSByW2UuaWRdfSkscn0pfSxlLnRvZ2dsZUFsbFBhZ2VSb3dzU2VsZWN0ZWQ9dD0+ZS5zZXRSb3dTZWxlY3Rpb24obj0+e2xldCByPXQ9PT12b2lkIDA/IWUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKCk6dCxpPXsuLi5ufTtyZXR1cm4gZS5nZXRSb3dNb2RlbCgpLnJvd3MuZm9yRWFjaCh0PT57S2UoaSx0LmlkLHIsITAsZSl9KSxpfSksZS5nZXRQcmVTZWxlY3RlZFJvd01vZGVsPSgpPT5lLmdldENvcmVSb3dNb2RlbCgpLGUuZ2V0U2VsZWN0ZWRSb3dNb2RlbD1BKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldENvcmVSb3dNb2RlbCgpXSwodCxuKT0+T2JqZWN0LmtleXModCkubGVuZ3RoP3FlKGUsbik6e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LGooZS5vcHRpb25zLGBkZWJ1Z1RhYmxlYCxgZ2V0U2VsZWN0ZWRSb3dNb2RlbGApKSxlLmdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbD1BKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldEZpbHRlcmVkUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9xZShlLG4pOntyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbGApKSxlLmdldEdyb3VwZWRTZWxlY3RlZFJvd01vZGVsPUEoKCk9PltlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLGUuZ2V0U29ydGVkUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9xZShlLG4pOntyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxqKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldEdyb3VwZWRTZWxlY3RlZFJvd01vZGVsYCkpLGUuZ2V0SXNBbGxSb3dzU2VsZWN0ZWQ9KCk9PntsZXQgdD1lLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cyx7cm93U2VsZWN0aW9uOm59PWUuZ2V0U3RhdGUoKSxyPSEhKHQubGVuZ3RoJiZPYmplY3Qua2V5cyhuKS5sZW5ndGgpO3JldHVybiByJiZ0LnNvbWUoZT0+ZS5nZXRDYW5TZWxlY3QoKSYmIW5bZS5pZF0pJiYocj0hMSkscn0sZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQ9KCk9PntsZXQgdD1lLmdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLmZsYXRSb3dzLmZpbHRlcihlPT5lLmdldENhblNlbGVjdCgpKSx7cm93U2VsZWN0aW9uOm59PWUuZ2V0U3RhdGUoKSxyPSEhdC5sZW5ndGg7cmV0dXJuIHImJnQuc29tZShlPT4hbltlLmlkXSkmJihyPSExKSxyfSxlLmdldElzU29tZVJvd3NTZWxlY3RlZD0oKT0+e2xldCB0PU9iamVjdC5rZXlzKGUuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24/P3t9KS5sZW5ndGg7cmV0dXJuIHQ+MCYmdDxlLmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93cy5sZW5ndGh9LGUuZ2V0SXNTb21lUGFnZVJvd3NTZWxlY3RlZD0oKT0+e2xldCB0PWUuZ2V0UGFnaW5hdGlvblJvd01vZGVsKCkuZmxhdFJvd3M7cmV0dXJuIWUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkKCkmJnQuZmlsdGVyKGU9PmUuZ2V0Q2FuU2VsZWN0KCkpLnNvbWUoZT0+ZS5nZXRJc1NlbGVjdGVkKCl8fGUuZ2V0SXNTb21lU2VsZWN0ZWQoKSl9LGUuZ2V0VG9nZ2xlQWxsUm93c1NlbGVjdGVkSGFuZGxlcj0oKT0+dD0+e2UudG9nZ2xlQWxsUm93c1NlbGVjdGVkKHQudGFyZ2V0LmNoZWNrZWQpfSxlLmdldFRvZ2dsZUFsbFBhZ2VSb3dzU2VsZWN0ZWRIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkKHQudGFyZ2V0LmNoZWNrZWQpfX0sY3JlYXRlUm93OihlLHQpPT57ZS50b2dnbGVTZWxlY3RlZD0obixyKT0+e2xldCBpPWUuZ2V0SXNTZWxlY3RlZCgpO3Quc2V0Um93U2VsZWN0aW9uKGE9PntpZihuPW49PT12b2lkIDA/IWk6bixlLmdldENhblNlbGVjdCgpJiZpPT09bilyZXR1cm4gYTtsZXQgbz17Li4uYX07cmV0dXJuIEtlKG8sZS5pZCxuLHI/LnNlbGVjdENoaWxkcmVuPz8hMCx0KSxvfSl9LGUuZ2V0SXNTZWxlY3RlZD0oKT0+e2xldHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiBKZShlLG4pfSxlLmdldElzU29tZVNlbGVjdGVkPSgpPT57bGV0e3Jvd1NlbGVjdGlvbjpufT10LmdldFN0YXRlKCk7cmV0dXJuIFllKGUsbik9PT1gc29tZWB9LGUuZ2V0SXNBbGxTdWJSb3dzU2VsZWN0ZWQ9KCk9PntsZXR7cm93U2VsZWN0aW9uOm59PXQuZ2V0U3RhdGUoKTtyZXR1cm4gWWUoZSxuKT09PWBhbGxgfSxlLmdldENhblNlbGVjdD0oKT0+dHlwZW9mIHQub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb249PWBmdW5jdGlvbmA/dC5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbihlKTp0Lm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uPz8hMCxlLmdldENhblNlbGVjdFN1YlJvd3M9KCk9PnR5cGVvZiB0Lm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uPT1gZnVuY3Rpb25gP3Qub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24oZSk6dC5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbj8/ITAsZS5nZXRDYW5NdWx0aVNlbGVjdD0oKT0+dHlwZW9mIHQub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbj09YGZ1bmN0aW9uYD90Lm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24oZSk6dC5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uPz8hMCxlLmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcj0oKT0+e2xldCB0PWUuZ2V0Q2FuU2VsZWN0KCk7cmV0dXJuIG49Pnt0JiZlLnRvZ2dsZVNlbGVjdGVkKG4udGFyZ2V0Py5jaGVja2VkKX19fX0sS2U9KGUsdCxuLHIsaSk9Pnt2YXIgYTtsZXQgbz1pLmdldFJvdyh0LCEwKTtuPyhvLmdldENhbk11bHRpU2VsZWN0KCl8fE9iamVjdC5rZXlzKGUpLmZvckVhY2godD0+ZGVsZXRlIGVbdF0pLG8uZ2V0Q2FuU2VsZWN0KCkmJihlW3RdPSEwKSk6ZGVsZXRlIGVbdF0sciYmKGE9by5zdWJSb3dzKSE9bnVsbCYmYS5sZW5ndGgmJm8uZ2V0Q2FuU2VsZWN0U3ViUm93cygpJiZvLnN1YlJvd3MuZm9yRWFjaCh0PT5LZShlLHQuaWQsbixyLGkpKX07ZnVuY3Rpb24gcWUoZSx0KXtsZXQgbj1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLHI9W10saT17fSxhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGU9Pnt2YXIgdDtsZXQgbz1KZShlLG4pO2lmKG8mJihyLnB1c2goZSksaVtlLmlkXT1lKSwodD1lLnN1YlJvd3MpIT1udWxsJiZ0Lmxlbmd0aCYmKGU9ey4uLmUsc3ViUm93czphKGUuc3ViUm93cyl9KSxvKXJldHVybiBlfSkuZmlsdGVyKEJvb2xlYW4pfTtyZXR1cm57cm93czphKHQucm93cyksZmxhdFJvd3M6cixyb3dzQnlJZDppfX1mdW5jdGlvbiBKZShlLHQpe3JldHVybiB0W2UuaWRdPz8hMX1mdW5jdGlvbiBZZShlLHQsbil7dmFyIHI7aWYoISgocj1lLnN1YlJvd3MpIT1udWxsJiZyLmxlbmd0aCkpcmV0dXJuITE7bGV0IGk9ITAsYT0hMTtyZXR1cm4gZS5zdWJSb3dzLmZvckVhY2goZT0+e2lmKCEoYSYmIWkpJiYoZS5nZXRDYW5TZWxlY3QoKSYmKEplKGUsdCk/YT0hMDppPSExKSxlLnN1YlJvd3MmJmUuc3ViUm93cy5sZW5ndGgpKXtsZXQgbj1ZZShlLHQpO249PT1gYWxsYD9hPSEwOihuPT09YHNvbWVgJiYoYT0hMCksaT0hMSl9fSksaT9gYWxsYDphP2Bzb21lYDohMX12YXIgWGU9LyhbMC05XSspL2dtLFplPShlLHQsbik9PnJ0KEooZS5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSxKKHQuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCkpLFFlPShlLHQsbik9PnJ0KEooZS5nZXRWYWx1ZShuKSksSih0LmdldFZhbHVlKG4pKSksJGU9KGUsdCxuKT0+cShKKGUuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCksSih0LmdldFZhbHVlKG4pKS50b0xvd2VyQ2FzZSgpKSxldD0oZSx0LG4pPT5xKEooZS5nZXRWYWx1ZShuKSksSih0LmdldFZhbHVlKG4pKSksdHQ9KGUsdCxuKT0+e2xldCByPWUuZ2V0VmFsdWUobiksaT10LmdldFZhbHVlKG4pO3JldHVybiByPmk/MTpyPGk/LTE6MH0sbnQ9KGUsdCxuKT0+cShlLmdldFZhbHVlKG4pLHQuZ2V0VmFsdWUobikpO2Z1bmN0aW9uIHEoZSx0KXtyZXR1cm4gZT09PXQ/MDplPnQ/MTotMX1mdW5jdGlvbiBKKGUpe3JldHVybiB0eXBlb2YgZT09YG51bWJlcmA/aXNOYU4oZSl8fGU9PT0xLzB8fGU9PT0tMS8wP2BgOlN0cmluZyhlKTp0eXBlb2YgZT09YHN0cmluZ2A/ZTpgYH1mdW5jdGlvbiBydChlLHQpe2xldCBuPWUuc3BsaXQoWGUpLmZpbHRlcihCb29sZWFuKSxyPXQuc3BsaXQoWGUpLmZpbHRlcihCb29sZWFuKTtmb3IoO24ubGVuZ3RoJiZyLmxlbmd0aDspe2xldCBlPW4uc2hpZnQoKSx0PXIuc2hpZnQoKSxpPXBhcnNlSW50KGUsMTApLGE9cGFyc2VJbnQodCwxMCksbz1baSxhXS5zb3J0KCk7aWYoaXNOYU4ob1swXSkpe2lmKGU+dClyZXR1cm4gMTtpZih0PmUpcmV0dXJuLTE7Y29udGludWV9aWYoaXNOYU4ob1sxXSkpcmV0dXJuIGlzTmFOKGkpPy0xOjE7aWYoaT5hKXJldHVybiAxO2lmKGE+aSlyZXR1cm4tMX1yZXR1cm4gbi5sZW5ndGgtci5sZW5ndGh9dmFyIFk9e2FscGhhbnVtZXJpYzpaZSxhbHBoYW51bWVyaWNDYXNlU2Vuc2l0aXZlOlFlLHRleHQ6JGUsdGV4dENhc2VTZW5zaXRpdmU6ZXQsZGF0ZXRpbWU6dHQsYmFzaWM6bnR9LGl0PVt2ZSxSZSxOZSxQZSxiZSxrZSx6ZSxCZSx7Z2V0SW5pdGlhbFN0YXRlOmU9Pih7c29ydGluZzpbXSwuLi5lfSksZ2V0RGVmYXVsdENvbHVtbkRlZjooKT0+KHtzb3J0aW5nRm46YGF1dG9gLHNvcnRVbmRlZmluZWQ6MX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Tb3J0aW5nQ2hhbmdlOk8oYHNvcnRpbmdgLGUpLGlzTXVsdGlTb3J0RXZlbnQ6ZT0+ZS5zaGlmdEtleX0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UuZ2V0QXV0b1NvcnRpbmdGbj0oKT0+e2xldCBuPXQuZ2V0RmlsdGVyZWRSb3dNb2RlbCgpLmZsYXRSb3dzLnNsaWNlKDEwKSxyPSExO2ZvcihsZXQgdCBvZiBuKXtsZXQgbj10Py5nZXRWYWx1ZShlLmlkKTtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobik9PT1gW29iamVjdCBEYXRlXWApcmV0dXJuIFkuZGF0ZXRpbWU7aWYodHlwZW9mIG49PWBzdHJpbmdgJiYocj0hMCxuLnNwbGl0KFhlKS5sZW5ndGg+MSkpcmV0dXJuIFkuYWxwaGFudW1lcmljfXJldHVybiByP1kudGV4dDpZLmJhc2ljfSxlLmdldEF1dG9Tb3J0RGlyPSgpPT50eXBlb2YgdC5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3NbMF0/LmdldFZhbHVlKGUuaWQpPT1gc3RyaW5nYD9gYXNjYDpgZGVzY2AsZS5nZXRTb3J0aW5nRm49KCk9PntpZighZSl0aHJvdyBFcnJvcigpO3JldHVybiBrKGUuY29sdW1uRGVmLnNvcnRpbmdGbik/ZS5jb2x1bW5EZWYuc29ydGluZ0ZuOmUuY29sdW1uRGVmLnNvcnRpbmdGbj09PWBhdXRvYD9lLmdldEF1dG9Tb3J0aW5nRm4oKTp0Lm9wdGlvbnMuc29ydGluZ0Zucz8uW2UuY29sdW1uRGVmLnNvcnRpbmdGbl0/P1lbZS5jb2x1bW5EZWYuc29ydGluZ0ZuXX0sZS50b2dnbGVTb3J0aW5nPShuLHIpPT57bGV0IGk9ZS5nZXROZXh0U29ydGluZ09yZGVyKCksYT1uIT1udWxsO3Quc2V0U29ydGluZyhvPT57bGV0IHM9bz8uZmluZCh0PT50LmlkPT09ZS5pZCksYz1vPy5maW5kSW5kZXgodD0+dC5pZD09PWUuaWQpLGw9W10sdSxkPWE/bjppPT09YGRlc2NgO3JldHVybiB1PW8hPW51bGwmJm8ubGVuZ3RoJiZlLmdldENhbk11bHRpU29ydCgpJiZyP3M/YHRvZ2dsZWA6YGFkZGA6byE9bnVsbCYmby5sZW5ndGgmJmMhPT1vLmxlbmd0aC0xP2ByZXBsYWNlYDpzP2B0b2dnbGVgOmByZXBsYWNlYCx1PT09YHRvZ2dsZWAmJihhfHxpfHwodT1gcmVtb3ZlYCkpLHU9PT1gYWRkYD8obD1bLi4ubyx7aWQ6ZS5pZCxkZXNjOmR9XSxsLnNwbGljZSgwLGwubGVuZ3RoLSh0Lm9wdGlvbnMubWF4TXVsdGlTb3J0Q29sQ291bnQ/PzIqKjUzLTEpKSk6bD11PT09YHRvZ2dsZWA/by5tYXAodD0+dC5pZD09PWUuaWQ/ey4uLnQsZGVzYzpkfTp0KTp1PT09YHJlbW92ZWA/by5maWx0ZXIodD0+dC5pZCE9PWUuaWQpOlt7aWQ6ZS5pZCxkZXNjOmR9XSxsfSl9LGUuZ2V0Rmlyc3RTb3J0RGlyPSgpPT5lLmNvbHVtbkRlZi5zb3J0RGVzY0ZpcnN0Pz90Lm9wdGlvbnMuc29ydERlc2NGaXJzdD8/ZS5nZXRBdXRvU29ydERpcigpPT09YGRlc2NgP2BkZXNjYDpgYXNjYCxlLmdldE5leHRTb3J0aW5nT3JkZXI9bj0+e2xldCByPWUuZ2V0Rmlyc3RTb3J0RGlyKCksaT1lLmdldElzU29ydGVkKCk7cmV0dXJuIGk/aSE9PXImJih0Lm9wdGlvbnMuZW5hYmxlU29ydGluZ1JlbW92YWw/PyEwKSYmKCFufHwodC5vcHRpb25zLmVuYWJsZU11bHRpUmVtb3ZlPz8hMCkpPyExOmk9PT1gZGVzY2A/YGFzY2A6YGRlc2NgOnJ9LGUuZ2V0Q2FuU29ydD0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZVNvcnRpbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVTb3J0aW5nPz8hMCkmJiEhZS5hY2Nlc3NvckZuLGUuZ2V0Q2FuTXVsdGlTb3J0PSgpPT5lLmNvbHVtbkRlZi5lbmFibGVNdWx0aVNvcnQ/P3Qub3B0aW9ucy5lbmFibGVNdWx0aVNvcnQ/PyEhZS5hY2Nlc3NvckZuLGUuZ2V0SXNTb3J0ZWQ9KCk9PntsZXQgbj10LmdldFN0YXRlKCkuc29ydGluZz8uZmluZCh0PT50LmlkPT09ZS5pZCk7cmV0dXJuIG4/bi5kZXNjP2BkZXNjYDpgYXNjYDohMX0sZS5nZXRTb3J0SW5kZXg9KCk9PnQuZ2V0U3RhdGUoKS5zb3J0aW5nPy5maW5kSW5kZXgodD0+dC5pZD09PWUuaWQpPz8tMSxlLmNsZWFyU29ydGluZz0oKT0+e3Quc2V0U29ydGluZyh0PT50IT1udWxsJiZ0Lmxlbmd0aD90LmZpbHRlcih0PT50LmlkIT09ZS5pZCk6W10pfSxlLmdldFRvZ2dsZVNvcnRpbmdIYW5kbGVyPSgpPT57bGV0IG49ZS5nZXRDYW5Tb3J0KCk7cmV0dXJuIHI9PntuJiYoci5wZXJzaXN0PT1udWxsfHxyLnBlcnNpc3QoKSxlLnRvZ2dsZVNvcnRpbmc9PW51bGx8fGUudG9nZ2xlU29ydGluZyh2b2lkIDAsZS5nZXRDYW5NdWx0aVNvcnQoKT90Lm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudD09bnVsbD92b2lkIDA6dC5vcHRpb25zLmlzTXVsdGlTb3J0RXZlbnQocik6ITEpKX19fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRTb3J0aW5nPXQ9PmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vblNvcnRpbmdDaGFuZ2UodCksZS5yZXNldFNvcnRpbmc9dD0+e2Uuc2V0U29ydGluZyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5zb3J0aW5nPz9bXSl9LGUuZ2V0UHJlU29ydGVkUm93TW9kZWw9KCk9PmUuZ2V0R3JvdXBlZFJvd01vZGVsKCksZS5nZXRTb3J0ZWRSb3dNb2RlbD0oKT0+KCFlLl9nZXRTb3J0ZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldFNvcnRlZFJvd01vZGVsJiYoZS5fZ2V0U29ydGVkUm93TW9kZWw9ZS5vcHRpb25zLmdldFNvcnRlZFJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsU29ydGluZ3x8IWUuX2dldFNvcnRlZFJvd01vZGVsP2UuZ2V0UHJlU29ydGVkUm93TW9kZWwoKTplLl9nZXRTb3J0ZWRSb3dNb2RlbCgpKX19LGplLFZlLEhlLFdlLEdlLEllXTtmdW5jdGlvbiBhdChlKXtsZXQgdD1bLi4uaXQsLi4uZS5fZmVhdHVyZXM/P1tdXSxuPXtfZmVhdHVyZXM6dH0scj1uLl9mZWF0dXJlcy5yZWR1Y2UoKGUsdCk9Pk9iamVjdC5hc3NpZ24oZSx0LmdldERlZmF1bHRPcHRpb25zPT1udWxsP3ZvaWQgMDp0LmdldERlZmF1bHRPcHRpb25zKG4pKSx7fSksaT1lPT5uLm9wdGlvbnMubWVyZ2VPcHRpb25zP24ub3B0aW9ucy5tZXJnZU9wdGlvbnMocixlKTp7Li4uciwuLi5lfSxhPXsuLi5lLmluaXRpYWxTdGF0ZT8/e319O24uX2ZlYXR1cmVzLmZvckVhY2goZT0+e2E9KGUuZ2V0SW5pdGlhbFN0YXRlPT1udWxsP3ZvaWQgMDplLmdldEluaXRpYWxTdGF0ZShhKSk/P2F9KTtsZXQgbz1bXSxzPSExLGM9e19mZWF0dXJlczp0LG9wdGlvbnM6ey4uLnIsLi4uZX0saW5pdGlhbFN0YXRlOmEsX3F1ZXVlOmU9PntvLnB1c2goZSksc3x8KHM9ITAsUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2Zvcig7by5sZW5ndGg7KW8uc2hpZnQoKSgpO3M9ITF9KS5jYXRjaChlPT5zZXRUaW1lb3V0KCgpPT57dGhyb3cgZX0pKSl9LHJlc2V0OigpPT57bi5zZXRTdGF0ZShuLmluaXRpYWxTdGF0ZSl9LHNldE9wdGlvbnM6ZT0+e2xldCB0PUQoZSxuLm9wdGlvbnMpO24ub3B0aW9ucz1pKHQpfSxnZXRTdGF0ZTooKT0+bi5vcHRpb25zLnN0YXRlLHNldFN0YXRlOmU9PntuLm9wdGlvbnMub25TdGF0ZUNoYW5nZT09bnVsbHx8bi5vcHRpb25zLm9uU3RhdGVDaGFuZ2UoZSl9LF9nZXRSb3dJZDooZSx0LHIpPT4obi5vcHRpb25zLmdldFJvd0lkPT1udWxsP3ZvaWQgMDpuLm9wdGlvbnMuZ2V0Um93SWQoZSx0LHIpKT8/YCR7cj9bci5pZCx0XS5qb2luKGAuYCk6dH1gLGdldENvcmVSb3dNb2RlbDooKT0+KG4uX2dldENvcmVSb3dNb2RlbHx8PW4ub3B0aW9ucy5nZXRDb3JlUm93TW9kZWwobiksbi5fZ2V0Q29yZVJvd01vZGVsKCkpLGdldFJvd01vZGVsOigpPT5uLmdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLGdldFJvdzooZSx0KT0+e2xldCByPSh0P24uZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsKCk6bi5nZXRSb3dNb2RlbCgpKS5yb3dzQnlJZFtlXTtpZighciYmKHI9bi5nZXRDb3JlUm93TW9kZWwoKS5yb3dzQnlJZFtlXSwhcikpdGhyb3cgRXJyb3IoKTtyZXR1cm4gcn0sX2dldERlZmF1bHRDb2x1bW5EZWY6QSgoKT0+W24ub3B0aW9ucy5kZWZhdWx0Q29sdW1uXSxlPT4oZT8/PXt9LHtoZWFkZXI6ZT0+e2xldCB0PWUuaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWY7cmV0dXJuIHQuYWNjZXNzb3JLZXk/dC5hY2Nlc3NvcktleTp0LmFjY2Vzc29yRm4/dC5pZDpudWxsfSxjZWxsOmU9Pnt2YXIgdDtyZXR1cm4oKHQ9ZS5yZW5kZXJWYWx1ZSgpKT09bnVsbHx8dC50b1N0cmluZz09bnVsbD92b2lkIDA6dC50b1N0cmluZygpKT8/bnVsbH0sLi4ubi5fZmVhdHVyZXMucmVkdWNlKChlLHQpPT5PYmplY3QuYXNzaWduKGUsdC5nZXREZWZhdWx0Q29sdW1uRGVmPT1udWxsP3ZvaWQgMDp0LmdldERlZmF1bHRDb2x1bW5EZWYoKSkse30pLC4uLmV9KSxqKGUsYGRlYnVnQ29sdW1uc2AsYF9nZXREZWZhdWx0Q29sdW1uRGVmYCkpLF9nZXRDb2x1bW5EZWZzOigpPT5uLm9wdGlvbnMuY29sdW1ucyxnZXRBbGxDb2x1bW5zOkEoKCk9PltuLl9nZXRDb2x1bW5EZWZzKCldLGU9PntsZXQgdD1mdW5jdGlvbihlLHIsaSl7cmV0dXJuIGk9PT12b2lkIDAmJihpPTApLGUubWFwKGU9PntsZXQgYT1nZShuLGUsaSxyKSxvPWU7cmV0dXJuIGEuY29sdW1ucz1vLmNvbHVtbnM/dChvLmNvbHVtbnMsYSxpKzEpOltdLGF9KX07cmV0dXJuIHQoZSl9LGooZSxgZGVidWdDb2x1bW5zYCxgZ2V0QWxsQ29sdW1uc2ApKSxnZXRBbGxGbGF0Q29sdW1uczpBKCgpPT5bbi5nZXRBbGxDb2x1bW5zKCldLGU9PmUuZmxhdE1hcChlPT5lLmdldEZsYXRDb2x1bW5zKCkpLGooZSxgZGVidWdDb2x1bW5zYCxgZ2V0QWxsRmxhdENvbHVtbnNgKSksX2dldEFsbEZsYXRDb2x1bW5zQnlJZDpBKCgpPT5bbi5nZXRBbGxGbGF0Q29sdW1ucygpXSxlPT5lLnJlZHVjZSgoZSx0KT0+KGVbdC5pZF09dCxlKSx7fSksaihlLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBbGxGbGF0Q29sdW1uc0J5SWRgKSksZ2V0QWxsTGVhZkNvbHVtbnM6QSgoKT0+W24uZ2V0QWxsQ29sdW1ucygpLG4uX2dldE9yZGVyQ29sdW1uc0ZuKCldLChlLHQpPT50KGUuZmxhdE1hcChlPT5lLmdldExlYWZDb2x1bW5zKCkpKSxqKGUsYGRlYnVnQ29sdW1uc2AsYGdldEFsbExlYWZDb2x1bW5zYCkpLGdldENvbHVtbjplPT5uLl9nZXRBbGxGbGF0Q29sdW1uc0J5SWQoKVtlXX07T2JqZWN0LmFzc2lnbihuLGMpO2ZvcihsZXQgZT0wO2U8bi5fZmVhdHVyZXMubGVuZ3RoO2UrKyl7bGV0IHQ9bi5fZmVhdHVyZXNbZV07dD09bnVsbHx8dC5jcmVhdGVUYWJsZT09bnVsbHx8dC5jcmVhdGVUYWJsZShuKX1yZXR1cm4gbn1mdW5jdGlvbiBvdCgpe3JldHVybiBlPT5BKCgpPT5bZS5vcHRpb25zLmRhdGFdLHQ9PntsZXQgbj17cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0scj1mdW5jdGlvbih0LGksYSl7aT09PXZvaWQgMCYmKGk9MCk7bGV0IG89W107Zm9yKGxldCBjPTA7Yzx0Lmxlbmd0aDtjKyspe2xldCBsPXllKGUsZS5fZ2V0Um93SWQodFtjXSxjLGEpLHRbY10sYyxpLHZvaWQgMCxhPy5pZCk7aWYobi5mbGF0Um93cy5wdXNoKGwpLG4ucm93c0J5SWRbbC5pZF09bCxvLnB1c2gobCksZS5vcHRpb25zLmdldFN1YlJvd3Mpe3ZhciBzO2wub3JpZ2luYWxTdWJSb3dzPWUub3B0aW9ucy5nZXRTdWJSb3dzKHRbY10sYyksKHM9bC5vcmlnaW5hbFN1YlJvd3MpIT1udWxsJiZzLmxlbmd0aCYmKGwuc3ViUm93cz1yKGwub3JpZ2luYWxTdWJSb3dzLGkrMSxsKSl9fXJldHVybiBvfTtyZXR1cm4gbi5yb3dzPXIodCksbn0saihlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBnZXRSb3dNb2RlbGAsKCk9PmUuX2F1dG9SZXNldFBhZ2VJbmRleCgpKSl9ZnVuY3Rpb24gc3QoKXtyZXR1cm4gZT0+QSgoKT0+W2UuZ2V0U3RhdGUoKS5zb3J0aW5nLGUuZ2V0UHJlU29ydGVkUm93TW9kZWwoKV0sKHQsbik9PntpZighbi5yb3dzLmxlbmd0aHx8ISh0IT1udWxsJiZ0Lmxlbmd0aCkpcmV0dXJuIG47bGV0IHI9ZS5nZXRTdGF0ZSgpLnNvcnRpbmcsaT1bXSxhPXIuZmlsdGVyKHQ9PmUuZ2V0Q29sdW1uKHQuaWQpPy5nZXRDYW5Tb3J0KCkpLG89e307YS5mb3JFYWNoKHQ9PntsZXQgbj1lLmdldENvbHVtbih0LmlkKTtuJiYob1t0LmlkXT17c29ydFVuZGVmaW5lZDpuLmNvbHVtbkRlZi5zb3J0VW5kZWZpbmVkLGludmVydFNvcnRpbmc6bi5jb2x1bW5EZWYuaW52ZXJ0U29ydGluZyxzb3J0aW5nRm46bi5nZXRTb3J0aW5nRm4oKX0pfSk7bGV0IHM9ZT0+e2xldCB0PWUubWFwKGU9Pih7Li4uZX0pKTtyZXR1cm4gdC5zb3J0KChlLHQpPT57Zm9yKGxldCBuPTA7bjxhLmxlbmd0aDtuKz0xKXtsZXQgcj1hW25dLGk9b1tyLmlkXSxzPWkuc29ydFVuZGVmaW5lZCxjPXI/LmRlc2M/PyExLGw9MDtpZihzKXtsZXQgbj1lLmdldFZhbHVlKHIuaWQpLGk9dC5nZXRWYWx1ZShyLmlkKSxhPW49PT12b2lkIDAsbz1pPT09dm9pZCAwO2lmKGF8fG8pe2lmKHM9PT1gZmlyc3RgKXJldHVybiBhPy0xOjE7aWYocz09PWBsYXN0YClyZXR1cm4gYT8xOi0xO2w9YSYmbz8wOmE/czotc319aWYobD09PTAmJihsPWkuc29ydGluZ0ZuKGUsdCxyLmlkKSksbCE9PTApcmV0dXJuIGMmJihsKj0tMSksaS5pbnZlcnRTb3J0aW5nJiYobCo9LTEpLGx9cmV0dXJuIGUuaW5kZXgtdC5pbmRleH0pLHQuZm9yRWFjaChlPT57dmFyIHQ7aS5wdXNoKGUpLCh0PWUuc3ViUm93cykhPW51bGwmJnQubGVuZ3RoJiYoZS5zdWJSb3dzPXMoZS5zdWJSb3dzKSl9KSx0fTtyZXR1cm57cm93czpzKG4ucm93cyksZmxhdFJvd3M6aSxyb3dzQnlJZDpuLnJvd3NCeUlkfX0saihlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBnZXRTb3J0ZWRSb3dNb2RlbGAsKCk9PmUuX2F1dG9SZXNldFBhZ2VJbmRleCgpKSl9ZnVuY3Rpb24gWCgpe3JldHVybiEwfXZhciBjdD1TeW1ib2woYG1lcmdlLXByb3h5YCksbHQ9e2dldChlLHQsbil7cmV0dXJuIHQ9PT1jdD9uOmUuZ2V0KHQpfSxoYXMoZSx0KXtyZXR1cm4gZS5oYXModCl9LHNldDpYLGRlbGV0ZVByb3BlcnR5OlgsZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCl7cmV0dXJue2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiBlLmdldCh0KX0sc2V0OlgsZGVsZXRlUHJvcGVydHk6WH19LG93bktleXMoZSl7cmV0dXJuIGUua2V5cygpfX07ZnVuY3Rpb24gdXQoZSl7cmV0dXJuYHZhbHVlYGluIGU/ZS52YWx1ZTplfWZ1bmN0aW9uIFooKXt2YXIgZT1bLi4uYXJndW1lbnRzXTtyZXR1cm4gbmV3IFByb3h5KHtnZXQodCl7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2xldCByPXV0KGVbbl0pW3RdO2lmKHIhPT12b2lkIDApcmV0dXJuIHJ9fSxoYXModCl7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0paWYodCBpbiB1dChlW25dKSlyZXR1cm4hMDtyZXR1cm4hMX0sa2V5cygpe2xldCB0PVtdO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQucHVzaCguLi5PYmplY3Qua2V5cyh1dChlW25dKSkpO3JldHVyblsuLi5BcnJheS5mcm9tKG5ldyBTZXQodCkpXX19LGx0KX12YXIgUT1UKHtwcm9wczpbYHJlbmRlcmAsYHByb3BzYF0sc2V0dXA6dD0+KCk9PnR5cGVvZiB0LnJlbmRlcj09YGZ1bmN0aW9uYHx8dHlwZW9mIHQucmVuZGVyPT1gb2JqZWN0YD9lKHQucmVuZGVyLHQucHJvcHMpOnQucmVuZGVyfSk7ZnVuY3Rpb24gZHQoZSl7cmV0dXJuIFooZSx7ZGF0YTpTKGUuZGF0YSl9KX1mdW5jdGlvbiBmdChlKXtsZXQgdD1wKGUuZGF0YSksbj1hdChaKHtzdGF0ZTp7fSxvblN0YXRlQ2hhbmdlOigpPT57fSxyZW5kZXJGYWxsYmFja1ZhbHVlOm51bGwsbWVyZ2VPcHRpb25zKGUsbil7cmV0dXJuIHQ/ey4uLmUsLi4ubn06WihlLG4pfX0sdD9kdChlKTplKSk7aWYodCl7bGV0IHQ9ZChlLmRhdGEpO3IodCwoKT0+e24uc2V0U3RhdGUoZT0+KHsuLi5lLGRhdGE6dC52YWx1ZX0pKX0se2ltbWVkaWF0ZTohMH0pfWxldCBhPWwobi5pbml0aWFsU3RhdGUpO3JldHVybiBpKCgpPT57bi5zZXRPcHRpb25zKG49PntsZXQgcj1uZXcgUHJveHkoe30se2dldDooZSx0KT0+YS52YWx1ZVt0XX0pO3JldHVybiBaKG4sdD9kdChlKTplLHtzdGF0ZTpaKHIsZS5zdGF0ZT8/e30pLG9uU3RhdGVDaGFuZ2U6dD0+e3QgaW5zdGFuY2VvZiBGdW5jdGlvbj9hLnZhbHVlPXQoYS52YWx1ZSk6YS52YWx1ZT10LGUub25TdGF0ZUNoYW5nZT09bnVsbHx8ZS5vblN0YXRlQ2hhbmdlKHQpfX0pfSl9KSxufXZhciBwdD1bYHRpdGxlYF0sbXQ9eyJhcmlhLWhpZGRlbiI6YHRydWVgfSxodD17Y2xhc3M6YHNyLW9ubHlgfSxndD1UKHtfX25hbWU6YENvbXBhY3ROdW1iZXJgLHByb3BzOnt2YWx1ZTp7fX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPXkoKCk9PnNlKHQudmFsdWUpKSxyPXkoKCk9PmNlKHQudmFsdWUpKTtyZXR1cm4oZSx0KT0+KF8oKSxiKGBzcGFuYCx7dGl0bGU6ci52YWx1ZX0sW25lKGBzcGFuYCxtdCxDKG4udmFsdWUpLDEpLG5lKGBzcGFuYCxodCxDKHIudmFsdWUpLDEpXSw4LHB0KSl9fSksX3Q9W2BhcmlhLWxhYmVsYF0sdnQ9VCh7X19uYW1lOmBTb3J0SGVhZGVyQnV0dG9uYCxwcm9wczp7aGVhZGVyOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49eSgoKT0+dC5oZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkpLHI9eSgoKT0+bi52YWx1ZT09PWBhc2NgP2c6bi52YWx1ZT09PWBkZXNjYD9lZTp0ZSksaT15KCgpPT57bGV0IGU9dC5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYD9lOnQuaGVhZGVyLmNvbHVtbi5pZH0pLGE9eSgoKT0+e2xldCBlPW4udmFsdWU9PT1gYXNjYD9gYXNjZW5kaW5nYDpuLnZhbHVlPT09YGRlc2NgP2BkZXNjZW5kaW5nYDpgbm9uZWA7cmV0dXJuYFNvcnQgYnkgJHtpLnZhbHVlfSwgY3VycmVudGx5ICR7ZX1gfSk7ZnVuY3Rpb24gbygpe3QuaGVhZGVyLmNvbHVtbi50b2dnbGVTb3J0aW5nKG4udmFsdWU9PT1gYXNjYCl9cmV0dXJuKHQsaSk9PntsZXQgcz1tKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gXygpLGIoYGJ1dHRvbmAse3R5cGU6YGJ1dHRvbmAsImFyaWEtbGFiZWwiOmEudmFsdWUsY2xhc3M6YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSByb3VuZGVkIHB4LTEuNSBweS0wLjUgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6cmluZy0zIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGZvY3VzLXZpc2libGU6b3V0bGluZS0xIGZvY3VzLXZpc2libGU6b3V0bGluZS1yaW5nYCxvbkNsaWNrOm99LFtlLmhlYWRlci5pc1BsYWNlaG9sZGVyP3YoYGAsITApOihfKCksdShTKFEpLHtrZXk6MCxyZW5kZXI6ZS5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXIscHJvcHM6ZS5oZWFkZXIuZ2V0Q29udGV4dCgpfSxudWxsLDgsW2ByZW5kZXJgLGBwcm9wc2BdKSksYyhzLHtpY29uOnIudmFsdWUsY2xhc3M6dyhbYHNpemUtMyBzaHJpbmstMGAsbi52YWx1ZT9gdGV4dC1mb3JlZ3JvdW5kYDpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzYwYF0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSldLDgsX3QpfX19KSx5dD1UKHtfX25hbWU6YERhdGFUYWJsZWAscHJvcHM6e2NvbHVtbnM6e30sZGF0YTp7fSxyb3dDbGFzczp7dHlwZTpGdW5jdGlvbn0sZW1wdHlNZXNzYWdlOnt9LHNvcnRpbmc6e319LGVtaXRzOltgdXBkYXRlOnNvcnRpbmdgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgcj1lLGk9dCxhPWwoW10pLG89ZnQoe2dldCBkYXRhKCl7cmV0dXJuIHIuZGF0YX0sZ2V0IGNvbHVtbnMoKXtyZXR1cm4gci5jb2x1bW5zfSxnZXRDb3JlUm93TW9kZWw6b3QoKSxnZXRTb3J0ZWRSb3dNb2RlbDpzdCgpLG9uU29ydGluZ0NoYW5nZTplPT57bGV0IHQ9ci5zb3J0aW5nPz9hLnZhbHVlLG49dHlwZW9mIGU9PWBmdW5jdGlvbmA/ZSh0KTplO3Iuc29ydGluZz09PXZvaWQgMD9hLnZhbHVlPW46aShgdXBkYXRlOnNvcnRpbmdgLG4pfSxzdGF0ZTp7Z2V0IHNvcnRpbmcoKXtyZXR1cm4gci5zb3J0aW5nPz9hLnZhbHVlfX19KTtmdW5jdGlvbiBkKGUpe2lmKGU9PT1gYXNjYClyZXR1cm5gYXNjZW5kaW5nYDtpZihlPT09YGRlc2NgKXJldHVybmBkZXNjZW5kaW5nYH1yZXR1cm4odCxyKT0+KF8oKSx1KFMob2UpLG51bGwse2RlZmF1bHQ6bigoKT0+W2MoUyhyZSksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bKF8oITApLGIocyxudWxsLHgoUyhvKS5nZXRIZWFkZXJHcm91cHMoKSxlPT4oXygpLHUoUyhFKSx7a2V5OmUuaWR9LHtkZWZhdWx0Om4oKCk9PlsoXyghMCksYihzLG51bGwseChlLmhlYWRlcnMsZT0+KF8oKSx1KFModWUpLHtrZXk6ZS5pZCxjbGFzczp3KGUuY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5hbGlnbj09PWByaWdodGA/YHRleHQtcmlnaHRgOnZvaWQgMCksImFyaWEtc29ydCI6ZS5jb2x1bW4uZ2V0Q2FuU29ydCgpP2QoZS5jb2x1bW4uZ2V0SXNTb3J0ZWQoKSk/P2Bub25lYDp2b2lkIDB9LHtkZWZhdWx0Om4oKCk9PltlLmNvbHVtbi5nZXRDYW5Tb3J0KCk/KF8oKSx1KHZ0LHtrZXk6MCxoZWFkZXI6ZSxjbGFzczpgLW14LTEuNWB9LG51bGwsOCxbYGhlYWRlcmBdKSk6ZS5pc1BsYWNlaG9sZGVyP3YoYGAsITApOihfKCksdShTKFEpLHtrZXk6MSxyZW5kZXI6ZS5jb2x1bW4uY29sdW1uRGVmLmhlYWRlcixwcm9wczplLmdldENvbnRleHQoKX0sbnVsbCw4LFtgcmVuZGVyYCxgcHJvcHNgXSkpXSksXzoyfSwxMDMyLFtgY2xhc3NgLGBhcmlhLXNvcnRgXSkpKSwxMjgpKV0pLF86Mn0sMTAyNCkpKSwxMjgpKV0pLF86MX0pLGMoUyhpZSksbnVsbCx7ZGVmYXVsdDpuKCgpPT5bUyhvKS5nZXRSb3dNb2RlbCgpLnJvd3MubGVuZ3RoPT09MD8oXygpLHUoUyhmZSkse2tleTowLGNvbHNwYW46ZS5jb2x1bW5zLmxlbmd0aCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6bigoKT0+W2goQyhlLmVtcHR5TWVzc2FnZT8/YG5vbmVgKSwxKV0pLF86MX0sOCxbYGNvbHNwYW5gXSkpOnYoYGAsITApLChfKCEwKSxiKHMsbnVsbCx4KFMobykuZ2V0Um93TW9kZWwoKS5yb3dzLHQ9PihfKCksdShTKEUpLHtrZXk6dC5pZCxjbGFzczp3KGUucm93Q2xhc3M/Lih0Lm9yaWdpbmFsKSl9LHtkZWZhdWx0Om4oKCk9PlsoXyghMCksYihzLG51bGwseCh0LmdldFZpc2libGVDZWxscygpLGU9PihfKCksdShTKGFlKSx7a2V5OmUuaWQsY2xhc3M6dyhlLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uYWxpZ249PT1gcmlnaHRgP2B0ZXh0LXJpZ2h0IHRhYnVsYXItbnVtc2A6dm9pZCAwKX0se2RlZmF1bHQ6bigoKT0+W2MoUyhRKSx7cmVuZGVyOmUuY29sdW1uLmNvbHVtbkRlZi5jZWxsLHByb3BzOmUuZ2V0Q29udGV4dCgpfSxudWxsLDgsW2ByZW5kZXJgLGBwcm9wc2BdKV0pLF86Mn0sMTAzMixbYGNsYXNzYF0pKSksMTI4KSldKSxfOjJ9LDEwMzIsW2BjbGFzc2BdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9KSl9fSk7ZnVuY3Rpb24gJCh0LG4scil7cmV0dXJue2lkOnQsaGVhZGVyOm4sbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5yKGUpLGNlbGw6KHtyb3c6dH0pPT5lKGd0LHt2YWx1ZTpyKHQub3JpZ2luYWwpfSl9fWZ1bmN0aW9uIGJ0KGUsdCxuKXtyZXR1cm57aWQ6ZSxoZWFkZXI6dCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9Pm4oZSksY2VsbDooe3JvdzplfSk9PmxlKG4oZS5vcmlnaW5hbCkpfX1mdW5jdGlvbiB4dCh0LG4scixpLGEpe2xldCBvPWE/LnNvcnRTZW50aW5lbD8/MDtyZXR1cm57aWQ6dCxoZWFkZXI6bixtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PnIoZSk/P28sY2VsbDooe3Jvdzp0fSk9PntsZXQgbj1yKHQub3JpZ2luYWwpO3JldHVybiBlKGBzcGFuYCx7Y2xhc3M6YHRhYnVsYXItbnVtc2B9LG49PT12b2lkIDA/YOKAlGA6aShuKSl9fX1mdW5jdGlvbiBTdCgpe3JldHVyblskKGByZXF1ZXN0c2AsYFJlcXVlc3RzYCxlPT5lLnJlcXVlc3RzKSwkKGB0b2tlbnNJbmAsYFRva2VucyBpbmAsZT0+ZS50b2tlbnNJbiksJChgdG9rZW5zT3V0YCxgVG9rZW5zIG91dGAsZT0+ZS50b2tlbnNPdXQpLGJ0KGBjb3N0YCxgQ29zdGAsZT0+ZS5jb3N0TWljcm9Vc2QpXX1leHBvcnR7dnQgYXMgYSxvdCBhcyBjLHl0IGFzIGksc3QgYXMgbCx4dCBhcyBuLGd0IGFzIG8sU3QgYXMgcixmdCBhcyBzLCQgYXMgdH07",
),
},
"consumers-CwwkOiMv.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0MgYXMgZSxTIGFzIHQsYiBhcyBuLGMgYXMgcixkIGFzIGksZiBhcyBhLHggYXMgbyx5IGFzIHMseXQgYXMgY31mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO3ZhciBsPTZlNDtmdW5jdGlvbiB1KCl7cmV0dXJue2xvYWRpbmc6ITEscmVxRXJyb3I6YGAsY29zdEVycm9yOmBgLG1vZGVsRXJyb3I6YGAscmVxU2VyaWVzOm51bGwsY29zdFNlcmllczpudWxsLG1vZGVsVG90YWxzOm51bGwsbW9kZWxUb3RhbHNVbmF2YWlsYWJsZTohMSxmZXRjaGVkQXQ6bnVsbCxyZXFJZDowLHdpbmRvdzpudWxsLHNwYW46bnVsbH19ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5zdGF0dXM9PT1gcmVqZWN0ZWRgP3QoZS5yZWFzb24pOmBgfXZhciBmPWMoYGNvbnN1bWVyc2Ase3N0YXRlOigpPT4oe2RhdGE6bnVsbCxsb2FkaW5nOiExLGVycm9yOmBgLGZldGNoZWRBdDpudWxsLGRldGFpbDp7fX0pLGFjdGlvbnM6e2FzeW5jIGZldGNoQ29uc3VtZXJzKCl7aWYoZSgpLmlzQXV0aGVudGljYXRlZCYmIXRoaXMubG9hZGluZyl7dGhpcy5sb2FkaW5nPSEwO3RyeXt0aGlzLmRhdGE9YXdhaXQgbihgL2FkbWluL2FwaS9jb25zdW1lcnNgKSx0aGlzLmVycm9yPWBgLHRoaXMuZmV0Y2hlZEF0PURhdGUubm93KCl9Y2F0Y2goZSl7aWYobyhlKSlyZXR1cm47dGhpcy5lcnJvcj10KGUpfWZpbmFsbHl7dGhpcy5sb2FkaW5nPSExfX19LGFzeW5jIGVuc3VyZUNvbnN1bWVycygpe3RoaXMubG9hZGluZ3x8dGhpcy5kYXRhJiZ0aGlzLmZldGNoZWRBdCE9PW51bGwmJkRhdGUubm93KCktdGhpcy5mZXRjaGVkQXQ8bHx8YXdhaXQgdGhpcy5mZXRjaENvbnN1bWVycygpfSxhc3luYyBmZXRjaFVzZXJEZXRhaWwodCxjLGwsZil7aWYoIWUoKS5pc0F1dGhlbnRpY2F0ZWQpcmV0dXJuO2xldCBwPXRoaXMuZGV0YWlsW3RdPz91KCksbT1wLnJlcUlkKzEsaD1wLndpbmRvdyE9PW51bGwmJihwLndpbmRvdyE9PWN8fHAuc3BhbiE9PWwpO3RoaXMuZGV0YWlsW3RdPXsuLi5wLGxvYWRpbmc6ITAscmVxSWQ6bSxyZXFTZXJpZXM6aD9udWxsOnAucmVxU2VyaWVzLGNvc3RTZXJpZXM6aD9udWxsOnAuY29zdFNlcmllcyxtb2RlbFRvdGFsczpoP251bGw6cC5tb2RlbFRvdGFscyxyZXFFcnJvcjpoP2BgOnAucmVxRXJyb3IsY29zdEVycm9yOmg/YGA6cC5jb3N0RXJyb3IsbW9kZWxFcnJvcjpoP2BgOnAubW9kZWxFcnJvcn07bGV0IGc9cihjLGwpLFtfLHYseV09YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFtuKGkoe3Njb3BlOltgdXNlcjoke3R9YF0sbWV0cmljOmByZXFgLHdpbmRvdzpjLHNwYW46bH0pKSxuKGkoe3Njb3BlOltgdXNlcjoke3R9YF0sbWV0cmljOmBjb3N0YCx3aW5kb3c6YyxzcGFuOmx9KSksZj9uKGEoe2tpbmQ6YHVzZXJtb2RlbGAsdXNlcjp0LHdpbmRvdzpnLndpbmRvdyxzcGFuOmcuc3BhbixtZXRyaWNzOltgcmVxYCxgY29zdGBdfSkpOlByb21pc2UucmVzb2x2ZShudWxsKV0pO2lmKHRoaXMuZGV0YWlsW3RdPy5yZXFJZCE9PW18fFtfLHYseV0uc29tZShlPT5lLnN0YXR1cz09PWByZWplY3RlZGAmJm8oZS5yZWFzb24pKSlyZXR1cm47bGV0IGI9eS5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZ5LnJlYXNvbiBpbnN0YW5jZW9mIHMmJnkucmVhc29uLnN0YXR1cz09PTQwNCx4PXRoaXMuZGV0YWlsW3RdPz91KCk7dGhpcy5kZXRhaWxbdF09e2xvYWRpbmc6ITEscmVxRXJyb3I6ZChfKSxjb3N0RXJyb3I6ZCh2KSxtb2RlbEVycm9yOmI/YGA6ZCh5KSxyZXFTZXJpZXM6Xy5zdGF0dXM9PT1gZnVsZmlsbGVkYD9fLnZhbHVlOngucmVxU2VyaWVzLGNvc3RTZXJpZXM6di5zdGF0dXM9PT1gZnVsZmlsbGVkYD92LnZhbHVlOnguY29zdFNlcmllcyxtb2RlbFRvdGFsczp5LnN0YXR1cz09PWBmdWxmaWxsZWRgP3kudmFsdWU6Yj9udWxsOngubW9kZWxUb3RhbHMsbW9kZWxUb3RhbHNVbmF2YWlsYWJsZTpiLGZldGNoZWRBdDpEYXRlLm5vdygpLHJlcUlkOm0sd2luZG93OmMsc3BhbjpsfX19fSk7ZXhwb3J0e2YgYXMgdH07",
),
},
"events-R9yQlBc0.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0MgYXMgZSxTIGFzIHQsXyBhcyBuLGIgYXMgcix2IGFzIGkseCBhcyBhLHl0IGFzIG99ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjt2YXIgcz01ZTMsYz0yMDAsbD1vKGBldmVudHNgLHtzdGF0ZTooKT0+KHtldmVudHM6W10sc291cmNlOmByZXBsaWNhYCxyZXBsaWNhOmBgLGNhcGFjaXR5OjAsZGVncmFkZWQ6ITEsbGFzdFVwZGF0ZWQ6bnVsbCxlcnJvcjpgYCxraW5kRmlsdGVyOmBgLHVzZXJGaWx0ZXI6YGAscG9sbGVyOnZvaWQgMCxyZWZyZXNoaW5nOiExLHRvYXN0ZWRGb3JGYWlsdXJlOiExfSksYWN0aW9uczp7YXN5bmMgcmVmcmVzaCgpe2lmKCFlKCkuaXNBdXRoZW50aWNhdGVkfHx0aGlzLnJlZnJlc2hpbmcpcmV0dXJuO3RoaXMucmVmcmVzaGluZz0hMDtsZXQgaT10aGlzLmxhc3RVcGRhdGVkIT09bnVsbDt0cnl7bGV0IGU9YXdhaXQgcihgL2FkbWluL2FwaS9ldmVudHM/bGltaXQ9JHtjfWApO3RoaXMuZXZlbnRzPWUuZXZlbnRzLHRoaXMuc291cmNlPWUuc291cmNlLHRoaXMucmVwbGljYT1lLnJlcGxpY2EsdGhpcy5jYXBhY2l0eT1lLmNhcGFjaXR5LHRoaXMuZGVncmFkZWQ9ZS5kZWdyYWRlZD8/ITEsdGhpcy5sYXN0VXBkYXRlZD1uZXcgRGF0ZSx0aGlzLmVycm9yPWBgLHRoaXMudG9hc3RlZEZvckZhaWx1cmU9ITF9Y2F0Y2goZSl7aWYoYShlKSlyZXR1cm47dGhpcy5lcnJvcj10KGUpLGkmJiF0aGlzLnRvYXN0ZWRGb3JGYWlsdXJlJiZuKCkucHVzaCh7a2luZDpgZXJyb3JgLG1lc3NhZ2U6YEV2ZW50cyByZWZyZXNoIGZhaWxlZDogJHt0aGlzLmVycm9yfWB9KSx0aGlzLnRvYXN0ZWRGb3JGYWlsdXJlPSEwfWZpbmFsbHl7dGhpcy5yZWZyZXNoaW5nPSExfX0sc2V0S2luZEZpbHRlcihlKXt0aGlzLmtpbmRGaWx0ZXI9ZX0sc2V0VXNlckZpbHRlcihlKXt0aGlzLnVzZXJGaWx0ZXI9ZX0sc3RhcnRQb2xsaW5nKCl7dGhpcy5wb2xsZXJ8fCh0aGlzLnBvbGxlcj1pKHtpbnRlcnZhbE1zOnMsdGljazooKT0+dm9pZCB0aGlzLnJlZnJlc2goKX0pLHRoaXMucG9sbGVyLnN0YXJ0KCkpfSxzdG9wUG9sbGluZygpe3RoaXMucG9sbGVyPy5zdG9wKCksdGhpcy5wb2xsZXI9dm9pZCAwfX19KTtleHBvcnR7bCBhcyB0fTs=",
),
},
"events-filter-Cieu1UBR.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"dmFyIGU9e3JhdGVfbGltaXQ6YFJhdGUgbGltaXRgLGJ1ZGdldDpgQnVkZ2V0YCxzdG9yZV9kb3duOmBTdG9yZSBkb3duYCx1cHN0cmVhbTpgVXBzdHJlYW0gZXJyb3JgLHRpbWVvdXQ6YFRpbWVvdXRgLHVucHJpY2VkOmBVbnByaWNlZCBtb2RlbGAsY2FwYWNpdHk6YENhcGFjaXR5YH0sdD1PYmplY3Qua2V5cyhlKTtmdW5jdGlvbiBuKHQpe3JldHVybiBlW3RdPz90fWZ1bmN0aW9uIHIoZSl7c3dpdGNoKGUpe2Nhc2VgcmF0ZV9saW1pdGA6Y2FzZWBidWRnZXRgOmNhc2VgY2FwYWNpdHlgOnJldHVybmBkZXN0cnVjdGl2ZWA7Y2FzZWBzdG9yZV9kb3duYDpjYXNlYHVwc3RyZWFtYDpjYXNlYHRpbWVvdXRgOnJldHVybmBzZWNvbmRhcnlgO2RlZmF1bHQ6cmV0dXJuYG91dGxpbmVgfX1mdW5jdGlvbiBpKGUsdCl7bGV0IG49dC5raW5kLHI9dC51c2VyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybiBlLmZpbHRlcihlPT57aWYobiYmZS5raW5kIT09bilyZXR1cm4hMTtpZighcilyZXR1cm4hMDtsZXQgdD1lLnVzZXI/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocik/PyExLGk9ZS5ncm91cD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhyKT8/ITE7cmV0dXJuIHR8fGl9KX1leHBvcnR7biBhcyBhLGksZSBhcyBuLHIsdH07",
),
},
"index-88CTRNHP.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bImFzc2V0cy9Ib21lUGFnZS1CdE5uMDBIVi5qcyIsImFzc2V0cy9Ta2VsZXRvbi1EME5udkhZMS5qcyIsImFzc2V0cy90YWJzLUN1aDZGUTBqLmpzIiwiYXNzZXRzL3VzZUlkLVRjWEJ3VU9oLmpzIiwiYXNzZXRzL0Vycm9yU3RhdGUtRERKT0tKbHouanMiLCJhc3NldHMvYmFkZ2UtQkpMZy1SM00uanMiLCJhc3NldHMvVHJ5TG9uZ2VyUmFuZ2VCdXR0b24tQmgxOXlpdjguanMiLCJhc3NldHMvTG9hZFN0YXRlVmlldy1CRWJzZXg3WS5qcyIsImFzc2V0cy9Ta2VsZXRvbkNoYXJ0LTFZXzVzOWYwLmpzIiwiYXNzZXRzL0VudGl0eUxpbmstQlI2cGxhV1YuanMiLCJhc3NldHMvZXZlbnRzLVI5eVFsQmMwLmpzIiwiYXNzZXRzL2V2ZW50cy1maWx0ZXItQ2lldTFVQlIuanMiLCJhc3NldHMva3BpLVAwOFV2cktpLmpzIiwiYXNzZXRzL3VzYWdlLWJhcnMtQkpPWUhzdVIuanMiLCJhc3NldHMvU3BlbmRQYWdlLUNONG93VlUwLmpzIiwiYXNzZXRzL2NvbHVtbnMtQ29lY25mNzQuanMiLCJhc3NldHMvYnVybmRvd24tZUdjYS1lbGMuanMiLCJhc3NldHMvY2xpcGJvYXJkLUI3M2ZaMGMxLmpzIiwiYXNzZXRzL0NoYXJ0Q2FyZC1DQUNTSVgxZi5qcyIsImFzc2V0cy9DbGFtcGVkUmFuZ2VOb3RpY2UtQ2hfSHF5Qk8uanMiLCJhc3NldHMvU3RhdERpc2FibGVkQWxlcnQtQkp0SFJYd0UuanMiLCJhc3NldHMvY2F0YWxvZy1DOTVOVGFYdC5qcyIsImFzc2V0cy9zZXJpZXMtRFpzdUFYSEkuanMiLCJhc3NldHMvY2hhcnQtcGFsZXR0ZS1obTRaSWtBWC5qcyIsImFzc2V0cy9Db25zdW1lcnNQYWdlLUJfNDlfVUNJLmpzIiwiYXNzZXRzL3NlYXJjaC1leHBhbmQtQi13Uk9jbkwuanMiLCJhc3NldHMvdXNlQ29weUZlZWRiYWNrLUNqUnpPTy1XLmpzIiwiYXNzZXRzL2NvbnN1bWVycy1Dd3drT2lNdi5qcyIsImFzc2V0cy91c2VTZWFyY2hRdWVyeS1CU2tDOGJHZC5qcyIsImFzc2V0cy9Nb2RlbHNQYWdlLURPLTE5Uk5YLmpzIiwiYXNzZXRzL3JlbGlhYmlsaXR5LUNZZEpxXzc0LmpzIiwiYXNzZXRzL1JlbGlhYmlsaXR5UGFnZS1ELXNPTHRXWi5qcyIsImFzc2V0cy9Db25maWdQYWdlLUJTRXEyLWZvLmpzIiwiYXNzZXRzL1RhcmdldHNQYWdlLUJMMGFvZnNYLmpzIl0pKSk9PmkubWFwKGk9PmRbaV0pOwppbXBvcnR7YSBhcyBlLGkgYXMgdCxuLG8gYXMgcixyIGFzIGkscyBhcyBhLHQgYXMgb31mcm9tIi4vdXNlSWQtVGNYQndVT2guanMiO2ltcG9ydHskIGFzIHMsQSBhcyBjLEFuIGFzIGwsQiBhcyB1LEJyIGFzIGQsQyBhcyBmLENpIGFzIHAsRCBhcyBtLERuIGFzIGgsRSBhcyBnLEYgYXMgXyxHIGFzIHYsR24gYXMgeSxIIGFzIGIsSG4gYXMgeCxJIGFzIFMsSm4gYXMgQyxLIGFzIHcsTCBhcyBULExyIGFzIEUsTSBhcyBlZSxNciBhcyBELE4gYXMgdGUsTnIgYXMgTyxPIGFzIG5lLFAgYXMgcmUsUHIgYXMgaWUsUSBhcyBhZSxRbiBhcyBvZSxSIGFzIHNlLFJuIGFzIGNlLFNpIGFzIGxlLFN0IGFzIHVlLFQgYXMgZGUsVSBhcyBmZSxVdCBhcyBwZSxWIGFzIG1lLFZ0IGFzIGhlLFcgYXMgZ2UsV24gYXMgayxXdCBhcyBfZSxYdCBhcyB2ZSxZIGFzIHllLFlyIGFzIGJlLF8gYXMgeGUsX24gYXMgQSxfdCBhcyBTZSxhIGFzIENlLGNpIGFzIGosY24gYXMgTSxjdCBhcyB3ZSxkaSBhcyBUZSxkciBhcyBOLGR0IGFzIEVlLGVpIGFzIERlLGVuIGFzIE9lLGZyIGFzIGtlLGcgYXMgQWUsZ2kgYXMgamUsZ24gYXMgTWUsZ3QgYXMgTmUsaCBhcyBQZSxoaSBhcyBGZSxpIGFzIEllLGlyIGFzIFAsaXQgYXMgTGUsaiBhcyBSZSxrIGFzIEYsa24gYXMgemUsbCBhcyBCZSxsbiBhcyBJLG0gYXMgVmUsbXIgYXMgSGUsbiBhcyBVZSxuaSBhcyBXZSxuciBhcyBHZSxvIGFzIEtlLG9pIGFzIHFlLG9uIGFzIEwsb3IgYXMgSmUscCBhcyBZZSxxIGFzIFhlLHIgYXMgWmUscmkgYXMgUWUscnQgYXMgJGUsc24gYXMgUixzdCBhcyBldCx0IGFzIHR0LHR0IGFzIG50LHUgYXMgcnQsdWkgYXMgaXQsdW4gYXMgeix1ciBhcyBhdCx2aSBhcyBCLHZuIGFzIG90LHZ0IGFzIHN0LHcgYXMgY3Qsd2kgYXMgVix3ciBhcyBsdCx3dCBhcyB1dCx4aSBhcyBkdCx5biBhcyBILHl0IGFzIGZ0LHogYXMgcHQsenIgYXMgbXR9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtmdW5jdGlvbiBodChlLHQpeyh0PT1udWxsfHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZ3QoZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX1mdW5jdGlvbiBfdChlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBodChlKX1mdW5jdGlvbiB2dChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IFR5cGVFcnJvcihgQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uYCl9ZnVuY3Rpb24geXQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxgdmFsdWVgaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLEF0KHIua2V5KSxyKX19ZnVuY3Rpb24gYnQoZSx0LG4pe3JldHVybiB0JiZ5dChlLnByb3RvdHlwZSx0KSxuJiZ5dChlLG4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLGV9ZnVuY3Rpb24geHQoZSx0KXt2YXIgbj10eXBlb2YgU3ltYm9sPGB1YCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW2BAQGl0ZXJhdG9yYF07aWYoIW4pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChuPU10KGUpKXx8dCYmZSYmdHlwZW9mIGUubGVuZ3RoPT1gbnVtYmVyYCl7biYmKGU9bik7dmFyIHI9MCxpPWZ1bmN0aW9uKCl7fTtyZXR1cm57czppLG46ZnVuY3Rpb24oKXtyZXR1cm4gcj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbcisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjppfX10aHJvdyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfXZhciBhLG89ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe249bi5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9bi5uZXh0KCk7cmV0dXJuIG89ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxhPWV9LGY6ZnVuY3Rpb24oKXt0cnl7b3x8bi5yZXR1cm49PW51bGx8fG4ucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGF9fX19ZnVuY3Rpb24gVShlLHQsbil7cmV0dXJuKHQ9QXQodCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gU3QoZSl7aWYodHlwZW9mIFN5bWJvbDxgdWAmJmVbU3ltYm9sLml0ZXJhdG9yXSE9bnVsbHx8ZVtgQEBpdGVyYXRvcmBdIT1udWxsKXJldHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIEN0KGUsdCl7dmFyIG49ZT09bnVsbD9udWxsOnR5cGVvZiBTeW1ib2w8YHVgJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbYEBAaXRlcmF0b3JgXTtpZihuIT1udWxsKXt2YXIgcixpLGEsbyxzPVtdLGM9ITAsbD0hMTt0cnl7aWYoYT0obj1uLmNhbGwoZSkpLm5leHQsdD09PTApe2lmKE9iamVjdChuKSE9PW4pcmV0dXJuO2M9ITF9ZWxzZSBmb3IoOyEoYz0ocj1hLmNhbGwobikpLmRvbmUpJiYocy5wdXNoKHIudmFsdWUpLHMubGVuZ3RoIT09dCk7Yz0hMCk7fWNhdGNoKGUpe2w9ITAsaT1lfWZpbmFsbHl7dHJ5e2lmKCFjJiZuLnJldHVybiE9bnVsbCYmKG89bi5yZXR1cm4oKSxPYmplY3QobykhPT1vKSlyZXR1cm59ZmluYWxseXtpZihsKXRocm93IGl9fXJldHVybiBzfX1mdW5jdGlvbiB3dCgpe3Rocm93IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIFR0KCl7dGhyb3cgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS4KSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLmApfWZ1bmN0aW9uIEV0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF09PW51bGw/e306YXJndW1lbnRzW3RdO3QlMj9FdChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24odCl7VShlLHQsblt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpFdChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSl9cmV0dXJuIGV9ZnVuY3Rpb24gRHQoZSx0KXtyZXR1cm4gZ3QoZSl8fEN0KGUsdCl8fE10KGUsdCl8fHd0KCl9ZnVuY3Rpb24gT3QoZSl7cmV0dXJuIF90KGUpfHxTdChlKXx8TXQoZSl8fFR0KCl9ZnVuY3Rpb24ga3QoZSx0KXtpZih0eXBlb2YgZSE9YG9iamVjdGB8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0fHxgZGVmYXVsdGApO2lmKHR5cGVvZiByIT1gb2JqZWN0YClyZXR1cm4gcjt0aHJvdyBUeXBlRXJyb3IoYEBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuYCl9cmV0dXJuKHQ9PT1gc3RyaW5nYD9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBBdChlKXt2YXIgdD1rdChlLGBzdHJpbmdgKTtyZXR1cm4gdHlwZW9mIHQ9PWBzeW1ib2xgP3Q6dCtgYH1mdW5jdGlvbiBqdChlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBqdD10eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYD9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9gc3ltYm9sYDp0eXBlb2YgZX0sanQoZSl9ZnVuY3Rpb24gTXQoZSx0KXtpZihlKXtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIGh0KGUsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4gbj09PWBPYmplY3RgJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT1gTWFwYHx8bj09PWBTZXRgP0FycmF5LmZyb20oZSk6bj09PWBBcmd1bWVudHNgfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9odChlLHQpOnZvaWQgMH19dmFyIE50PWZ1bmN0aW9uKCl7fSxQdD17fSxGdD17fSxJdD1udWxsLEx0PXttYXJrOk50LG1lYXN1cmU6TnR9O3RyeXt0eXBlb2Ygd2luZG93PGB1YCYmKFB0PXdpbmRvdyksdHlwZW9mIGRvY3VtZW50PGB1YCYmKEZ0PWRvY3VtZW50KSx0eXBlb2YgTXV0YXRpb25PYnNlcnZlcjxgdWAmJihJdD1NdXRhdGlvbk9ic2VydmVyKSx0eXBlb2YgcGVyZm9ybWFuY2U8YHVgJiYoTHQ9cGVyZm9ybWFuY2UpfWNhdGNoe312YXIgUnQ9KFB0Lm5hdmlnYXRvcnx8e30pLnVzZXJBZ2VudCx6dD1SdD09PXZvaWQgMD9gYDpSdCxCdD1QdCxHPUZ0LFZ0PUl0LEh0PUx0O0J0LmRvY3VtZW50O3ZhciBVdD0hIUcuZG9jdW1lbnRFbGVtZW50JiYhIUcuaGVhZCYmdHlwZW9mIEcuYWRkRXZlbnRMaXN0ZW5lcj09YGZ1bmN0aW9uYCYmdHlwZW9mIEcuY3JlYXRlRWxlbWVudD09YGZ1bmN0aW9uYCxXdD1+enQuaW5kZXhPZihgTVNJRWApfHx+enQuaW5kZXhPZihgVHJpZGVudC9gKSxHdCxLdD0vZmEoa3xrZHxzfHJ8bHx0fGR8ZHJ8ZGx8ZHR8YnxzbHJ8c2xwcnx3c2J8dGx8bnN8bmRzfGVzfGd0fGpyfGpmcnxqZHJ8dXNifHVmc2J8dWRzYnxjcnxzc3xzcnxzbHxzdHxzZHN8c2RyfHNkbHxzZHR8c2xkcnxzbHBkcnxwcnxtc3x2cyk/W1wtXCBdLyxxdD0vRm9udCA/QXdlc29tZSA/KFs1NjcgXSopKFNvbGlkfFJlZ3VsYXJ8TGlnaHR8VGhpbnxEdW90b25lfEJyYW5kc3xGcmVlfFByb3xTaGFycCBEdW90b25lfFNoYXJwfEtpdHxOb3Rkb2cgRHVvfE5vdGRvZ3xDaGlzZWx8RXRjaHxHcmFwaGl0ZXxUaHVtYnByaW50fEplbGx5IEZpbGx8SmVsbHkgRHVvfEplbGx5fFV0aWxpdHl8VXRpbGl0eSBGaWxsfFV0aWxpdHkgRHVvfFNsYWIgUHJlc3N8U2xhYnxTbGFiIER1b3xTbGFiIFByZXNzIER1b3xQaXhlbHxNb3NhaWN8VmVsbHVtfFdoaXRlYm9hcmQpPy4qL2ksSnQ9e2NsYXNzaWM6e2ZhOmBzb2xpZGAsZmFzOmBzb2xpZGAsImZhLXNvbGlkIjpgc29saWRgLGZhcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWw6YGxpZ2h0YCwiZmEtbGlnaHQiOmBsaWdodGAsZmF0OmB0aGluYCwiZmEtdGhpbiI6YHRoaW5gLGZhYjpgYnJhbmRzYCwiZmEtYnJhbmRzIjpgYnJhbmRzYH0sZHVvdG9uZTp7ZmE6YHNvbGlkYCxmYWQ6YHNvbGlkYCwiZmEtc29saWQiOmBzb2xpZGAsImZhLWR1b3RvbmUiOmBzb2xpZGAsZmFkcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWRsOmBsaWdodGAsImZhLWxpZ2h0IjpgbGlnaHRgLGZhZHQ6YHRoaW5gLCJmYS10aGluIjpgdGhpbmB9LHNoYXJwOntmYTpgc29saWRgLGZhc3M6YHNvbGlkYCwiZmEtc29saWQiOmBzb2xpZGAsZmFzcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNsOmBsaWdodGAsImZhLWxpZ2h0IjpgbGlnaHRgLGZhc3Q6YHRoaW5gLCJmYS10aGluIjpgdGhpbmB9LCJzaGFycC1kdW90b25lIjp7ZmE6YHNvbGlkYCxmYXNkczpgc29saWRgLCJmYS1zb2xpZCI6YHNvbGlkYCxmYXNkcjpgcmVndWxhcmAsImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNkbDpgbGlnaHRgLCJmYS1saWdodCI6YGxpZ2h0YCxmYXNkdDpgdGhpbmAsImZhLXRoaW4iOmB0aGluYH0sc2xhYjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNscjpgcmVndWxhcmB9LCJzbGFiLXByZXNzIjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNscHI6YHJlZ3VsYXJgfSwic2xhYi1kdW8iOnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhc2xkcjpgcmVndWxhcmB9LCJzbGFiLXByZXNzLWR1byI6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFzbHBkcjpgcmVndWxhcmB9LHRodW1icHJpbnQ6eyJmYS1saWdodCI6YGxpZ2h0YCxmYXRsOmBsaWdodGB9LHZlbGx1bTp7ImZhLXNvbGlkIjpgc29saWRgLGZhdnM6YHNvbGlkYH0scGl4ZWw6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFwcjpgcmVndWxhcmB9LG1vc2FpYzp7ImZhLXNvbGlkIjpgc29saWRgLGZhbXM6YHNvbGlkYH0sd2hpdGVib2FyZDp7ImZhLXNlbWlib2xkIjpgc2VtaWJvbGRgLGZhd3NiOmBzZW1pYm9sZGB9LG5vdGRvZzp7ImZhLXNvbGlkIjpgc29saWRgLGZhbnM6YHNvbGlkYH0sIm5vdGRvZy1kdW8iOnsiZmEtc29saWQiOmBzb2xpZGAsZmFuZHM6YHNvbGlkYH0sZXRjaDp7ImZhLXNvbGlkIjpgc29saWRgLGZhZXM6YHNvbGlkYH0sZ3JhcGhpdGU6eyJmYS10aGluIjpgdGhpbmAsZmFndDpgdGhpbmB9LGplbGx5OnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhanI6YHJlZ3VsYXJgfSwiamVsbHktZmlsbCI6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFqZnI6YHJlZ3VsYXJgfSwiamVsbHktZHVvIjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWpkcjpgcmVndWxhcmB9LGNoaXNlbDp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWNyOmByZWd1bGFyYH0sdXRpbGl0eTp7ImZhLXNlbWlib2xkIjpgc2VtaWJvbGRgLGZhdXNiOmBzZW1pYm9sZGB9LCJ1dGlsaXR5LWR1byI6eyJmYS1zZW1pYm9sZCI6YHNlbWlib2xkYCxmYXVkc2I6YHNlbWlib2xkYH0sInV0aWxpdHktZmlsbCI6eyJmYS1zZW1pYm9sZCI6YHNlbWlib2xkYCxmYXVmc2I6YHNlbWlib2xkYH19LFl0PXtHUk9VUDpgZHVvdG9uZS1ncm91cGAsU1dBUF9PUEFDSVRZOmBzd2FwLW9wYWNpdHlgLFBSSU1BUlk6YHByaW1hcnlgLFNFQ09OREFSWTpgc2Vjb25kYXJ5YH0sWHQ9W2BmYS1jbGFzc2ljYCxgZmEtZHVvdG9uZWAsYGZhLXNoYXJwYCxgZmEtc2hhcnAtZHVvdG9uZWAsYGZhLXRodW1icHJpbnRgLGBmYS13aGl0ZWJvYXJkYCxgZmEtbm90ZG9nYCxgZmEtbm90ZG9nLWR1b2AsYGZhLWNoaXNlbGAsYGZhLWV0Y2hgLGBmYS1ncmFwaGl0ZWAsYGZhLWplbGx5YCxgZmEtamVsbHktZmlsbGAsYGZhLWplbGx5LWR1b2AsYGZhLXNsYWJgLGBmYS1zbGFiLXByZXNzYCxgZmEtc2xhYi1wcmVzcy1kdW9gLGBmYS1zbGFiLWR1b2AsYGZhLW1vc2FpY2AsYGZhLXBpeGVsYCxgZmEtdmVsbHVtYCxgZmEtdXRpbGl0eWAsYGZhLXV0aWxpdHktZHVvYCxgZmEtdXRpbGl0eS1maWxsYF0sSz1gY2xhc3NpY2AsWnQ9YGR1b3RvbmVgLFF0PWBzaGFycGAsJHQ9YHNoYXJwLWR1b3RvbmVgLGVuPWBjaGlzZWxgLHRuPWBldGNoYCxubj1gZ3JhcGhpdGVgLHJuPWBqZWxseWAsYW49YGplbGx5LWR1b2Asb249YGplbGx5LWZpbGxgLHNuPWBtb3NhaWNgLGNuPWBub3Rkb2dgLGxuPWBub3Rkb2ctZHVvYCx1bj1gcGl4ZWxgLGRuPWBzbGFiYCxmbj1gc2xhYi1kdW9gLHBuPWBzbGFiLXByZXNzYCxtbj1gc2xhYi1wcmVzcy1kdW9gLGhuPWB0aHVtYnByaW50YCxnbj1gdXRpbGl0eWAsX249YHV0aWxpdHktZHVvYCx2bj1gdXRpbGl0eS1maWxsYCx5bj1gdmVsbHVtYCxibj1gd2hpdGVib2FyZGAseG49YENsYXNzaWNgLFNuPWBEdW90b25lYCxDbj1gU2hhcnBgLHduPWBTaGFycCBEdW90b25lYCxUbj1gQ2hpc2VsYCxFbj1gRXRjaGAsRG49YEdyYXBoaXRlYCxPbj1gSmVsbHlgLGtuPWBKZWxseSBEdW9gLEFuPWBKZWxseSBGaWxsYCxqbj1gTW9zYWljYCxNbj1gTm90ZG9nYCxObj1gTm90ZG9nIER1b2AsUG49YFBpeGVsYCxGbj1gU2xhYmAsSW49YFNsYWIgRHVvYCxMbj1gU2xhYiBQcmVzc2AsUm49YFNsYWIgUHJlc3MgRHVvYCx6bj1gVGh1bWJwcmludGAsQm49YFV0aWxpdHlgLFZuPWBVdGlsaXR5IER1b2AsSG49YFV0aWxpdHkgRmlsbGAsVW49YFZlbGx1bWAsV249YFdoaXRlYm9hcmRgLEduPVtLLFp0LFF0LCR0LGVuLHRuLG5uLHJuLGFuLG9uLHNuLGNuLGxuLHVuLGRuLGZuLHBuLG1uLGhuLGduLF9uLHZuLHluLGJuXTtHdD17fSxVKFUoVShVKFUoVShVKFUoVShVKEd0LEsseG4pLFp0LFNuKSxRdCxDbiksJHQsd24pLGVuLFRuKSx0bixFbiksbm4sRG4pLHJuLE9uKSxhbixrbiksb24sQW4pLFUoVShVKFUoVShVKFUoVShVKFUoR3Qsc24sam4pLGNuLE1uKSxsbixObiksdW4sUG4pLGRuLEZuKSxmbixJbikscG4sTG4pLG1uLFJuKSxobix6biksZ24sQm4pLFUoVShVKFUoR3QsX24sVm4pLHZuLEhuKSx5bixVbiksYm4sV24pO3ZhciBLbj17Y2xhc3NpYzp7OTAwOmBmYXNgLDQwMDpgZmFyYCxub3JtYWw6YGZhcmAsMzAwOmBmYWxgLDEwMDpgZmF0YH0sZHVvdG9uZTp7OTAwOmBmYWRgLDQwMDpgZmFkcmAsMzAwOmBmYWRsYCwxMDA6YGZhZHRgfSxzaGFycDp7OTAwOmBmYXNzYCw0MDA6YGZhc3JgLDMwMDpgZmFzbGAsMTAwOmBmYXN0YH0sInNoYXJwLWR1b3RvbmUiOns5MDA6YGZhc2RzYCw0MDA6YGZhc2RyYCwzMDA6YGZhc2RsYCwxMDA6YGZhc2R0YH0sc2xhYjp7NDAwOmBmYXNscmB9LCJzbGFiLXByZXNzIjp7NDAwOmBmYXNscHJgfSwic2xhYi1kdW8iOns0MDA6YGZhc2xkcmB9LCJzbGFiLXByZXNzLWR1byI6ezQwMDpgZmFzbHBkcmB9LHZlbGx1bTp7OTAwOmBmYXZzYH0sbW9zYWljOns5MDA6YGZhbXNgfSxwaXhlbDp7NDAwOmBmYXByYH0sd2hpdGVib2FyZDp7NjAwOmBmYXdzYmB9LHRodW1icHJpbnQ6ezMwMDpgZmF0bGB9LG5vdGRvZzp7OTAwOmBmYW5zYH0sIm5vdGRvZy1kdW8iOns5MDA6YGZhbmRzYH0sZXRjaDp7OTAwOmBmYWVzYH0sZ3JhcGhpdGU6ezEwMDpgZmFndGB9LGNoaXNlbDp7NDAwOmBmYWNyYH0samVsbHk6ezQwMDpgZmFqcmB9LCJqZWxseS1maWxsIjp7NDAwOmBmYWpmcmB9LCJqZWxseS1kdW8iOns0MDA6YGZhamRyYH0sdXRpbGl0eTp7NjAwOmBmYXVzYmB9LCJ1dGlsaXR5LWR1byI6ezYwMDpgZmF1ZHNiYH0sInV0aWxpdHktZmlsbCI6ezYwMDpgZmF1ZnNiYH19LHFuPXsiRm9udCBBd2Vzb21lIDcgRnJlZSI6ezkwMDpgZmFzYCw0MDA6YGZhcmB9LCJGb250IEF3ZXNvbWUgNyBQcm8iOns5MDA6YGZhc2AsNDAwOmBmYXJgLG5vcm1hbDpgZmFyYCwzMDA6YGZhbGAsMTAwOmBmYXRgfSwiRm9udCBBd2Vzb21lIDcgQnJhbmRzIjp7NDAwOmBmYWJgLG5vcm1hbDpgZmFiYH0sIkZvbnQgQXdlc29tZSA3IER1b3RvbmUiOns5MDA6YGZhZGAsNDAwOmBmYWRyYCxub3JtYWw6YGZhZHJgLDMwMDpgZmFkbGAsMTAwOmBmYWR0YH0sIkZvbnQgQXdlc29tZSA3IFNoYXJwIjp7OTAwOmBmYXNzYCw0MDA6YGZhc3JgLG5vcm1hbDpgZmFzcmAsMzAwOmBmYXNsYCwxMDA6YGZhc3RgfSwiRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSI6ezkwMDpgZmFzZHNgLDQwMDpgZmFzZHJgLG5vcm1hbDpgZmFzZHJgLDMwMDpgZmFzZGxgLDEwMDpgZmFzZHRgfSwiRm9udCBBd2Vzb21lIDcgSmVsbHkiOns0MDA6YGZhanJgLG5vcm1hbDpgZmFqcmB9LCJGb250IEF3ZXNvbWUgNyBKZWxseSBGaWxsIjp7NDAwOmBmYWpmcmAsbm9ybWFsOmBmYWpmcmB9LCJGb250IEF3ZXNvbWUgNyBKZWxseSBEdW8iOns0MDA6YGZhamRyYCxub3JtYWw6YGZhamRyYH0sIkZvbnQgQXdlc29tZSA3IFNsYWIiOns0MDA6YGZhc2xyYCxub3JtYWw6YGZhc2xyYH0sIkZvbnQgQXdlc29tZSA3IFNsYWIgUHJlc3MiOns0MDA6YGZhc2xwcmAsbm9ybWFsOmBmYXNscHJgfSwiRm9udCBBd2Vzb21lIDcgU2xhYiBEdW8iOns0MDA6YGZhc2xkcmAsbm9ybWFsOmBmYXNsZHJgfSwiRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyBEdW8iOns0MDA6YGZhc2xwZHJgLG5vcm1hbDpgZmFzbHBkcmB9LCJGb250IEF3ZXNvbWUgNyBQaXhlbCI6ezQwMDpgZmFwcmAsbm9ybWFsOmBmYXByYH0sIkZvbnQgQXdlc29tZSA3IE1vc2FpYyI6ezkwMDpgZmFtc2Asbm9ybWFsOmBmYW1zYH0sIkZvbnQgQXdlc29tZSA3IFZlbGx1bSI6ezkwMDpgZmF2c2Asbm9ybWFsOmBmYXZzYH0sIkZvbnQgQXdlc29tZSA3IFRodW1icHJpbnQiOnszMDA6YGZhdGxgLG5vcm1hbDpgZmF0bGB9LCJGb250IEF3ZXNvbWUgNyBOb3Rkb2ciOns5MDA6YGZhbnNgLG5vcm1hbDpgZmFuc2B9LCJGb250IEF3ZXNvbWUgNyBOb3Rkb2cgRHVvIjp7OTAwOmBmYW5kc2Asbm9ybWFsOmBmYW5kc2B9LCJGb250IEF3ZXNvbWUgNyBFdGNoIjp7OTAwOmBmYWVzYCxub3JtYWw6YGZhZXNgfSwiRm9udCBBd2Vzb21lIDcgR3JhcGhpdGUiOnsxMDA6YGZhZ3RgLG5vcm1hbDpgZmFndGB9LCJGb250IEF3ZXNvbWUgNyBDaGlzZWwiOns0MDA6YGZhY3JgLG5vcm1hbDpgZmFjcmB9LCJGb250IEF3ZXNvbWUgNyBXaGl0ZWJvYXJkIjp7NjAwOmBmYXdzYmAsbm9ybWFsOmBmYXdzYmB9LCJGb250IEF3ZXNvbWUgNyBVdGlsaXR5Ijp7NjAwOmBmYXVzYmAsbm9ybWFsOmBmYXVzYmB9LCJGb250IEF3ZXNvbWUgNyBVdGlsaXR5IER1byI6ezYwMDpgZmF1ZHNiYCxub3JtYWw6YGZhdWRzYmB9LCJGb250IEF3ZXNvbWUgNyBVdGlsaXR5IEZpbGwiOns2MDA6YGZhdWZzYmAsbm9ybWFsOmBmYXVmc2JgfX0sSm49bmV3IE1hcChbW2BjbGFzc2ljYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYCxgcmVndWxhcmAsYGxpZ2h0YCxgdGhpbmAsYGJyYW5kc2BdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgZHVvdG9uZWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYWRgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHNoYXJwYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc3NgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHNoYXJwLWR1b3RvbmVgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzZHNgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYGNoaXNlbGAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYWNyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2BldGNoYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhZXNgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgZ3JhcGhpdGVgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFndGAsZGVmYXVsdFN0eWxlSWQ6YHRoaW5gLHN0eWxlSWRzOltgdGhpbmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjEwMH1dLFtgamVsbHlgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFqcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgamVsbHktZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhamRyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2BqZWxseS1maWxsYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhamZyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2Btb3NhaWNgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFtc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sW2Bub3Rkb2dgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFuc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sW2Bub3Rkb2ctZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhbmRzYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHBpeGVsYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhcHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHNsYWJgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzbHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHNsYWItZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2xkcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgc2xhYi1wcmVzc2Ase2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXNscHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHNsYWItcHJlc3MtZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2xwZHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYHRodW1icHJpbnRgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF0bGAsZGVmYXVsdFN0eWxlSWQ6YGxpZ2h0YCxzdHlsZUlkczpbYGxpZ2h0YF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6MzAwfV0sW2B1dGlsaXR5YCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhdXNiYCxkZWZhdWx0U3R5bGVJZDpgc2VtaWJvbGRgLHN0eWxlSWRzOltgc2VtaWJvbGRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo2MDB9XSxbYHV0aWxpdHktZHVvYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhdWRzYmAsZGVmYXVsdFN0eWxlSWQ6YHNlbWlib2xkYCxzdHlsZUlkczpbYHNlbWlib2xkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NjAwfV0sW2B1dGlsaXR5LWZpbGxgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF1ZnNiYCxkZWZhdWx0U3R5bGVJZDpgc2VtaWJvbGRgLHN0eWxlSWRzOltgc2VtaWJvbGRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo2MDB9XSxbYHZlbGx1bWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXZzYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYHdoaXRlYm9hcmRgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF3c2JgLGRlZmF1bHRTdHlsZUlkOmBzZW1pYm9sZGAsc3R5bGVJZHM6W2BzZW1pYm9sZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjYwMH1dXSksWW49e2NoaXNlbDp7cmVndWxhcjpgZmFjcmB9LGNsYXNzaWM6e2JyYW5kczpgZmFiYCxsaWdodDpgZmFsYCxyZWd1bGFyOmBmYXJgLHNvbGlkOmBmYXNgLHRoaW46YGZhdGB9LGR1b3RvbmU6e2xpZ2h0OmBmYWRsYCxyZWd1bGFyOmBmYWRyYCxzb2xpZDpgZmFkYCx0aGluOmBmYWR0YH0sZXRjaDp7c29saWQ6YGZhZXNgfSxncmFwaGl0ZTp7dGhpbjpgZmFndGB9LGplbGx5OntyZWd1bGFyOmBmYWpyYH0sImplbGx5LWR1byI6e3JlZ3VsYXI6YGZhamRyYH0sImplbGx5LWZpbGwiOntyZWd1bGFyOmBmYWpmcmB9LG1vc2FpYzp7c29saWQ6YGZhbXNgfSxub3Rkb2c6e3NvbGlkOmBmYW5zYH0sIm5vdGRvZy1kdW8iOntzb2xpZDpgZmFuZHNgfSxwaXhlbDp7cmVndWxhcjpgZmFwcmB9LHNoYXJwOntsaWdodDpgZmFzbGAscmVndWxhcjpgZmFzcmAsc29saWQ6YGZhc3NgLHRoaW46YGZhc3RgfSwic2hhcnAtZHVvdG9uZSI6e2xpZ2h0OmBmYXNkbGAscmVndWxhcjpgZmFzZHJgLHNvbGlkOmBmYXNkc2AsdGhpbjpgZmFzZHRgfSxzbGFiOntyZWd1bGFyOmBmYXNscmB9LCJzbGFiLWR1byI6e3JlZ3VsYXI6YGZhc2xkcmB9LCJzbGFiLXByZXNzIjp7cmVndWxhcjpgZmFzbHByYH0sInNsYWItcHJlc3MtZHVvIjp7cmVndWxhcjpgZmFzbHBkcmB9LHRodW1icHJpbnQ6e2xpZ2h0OmBmYXRsYH0sdXRpbGl0eTp7c2VtaWJvbGQ6YGZhdXNiYH0sInV0aWxpdHktZHVvIjp7c2VtaWJvbGQ6YGZhdWRzYmB9LCJ1dGlsaXR5LWZpbGwiOntzZW1pYm9sZDpgZmF1ZnNiYH0sdmVsbHVtOntzb2xpZDpgZmF2c2B9LHdoaXRlYm9hcmQ6e3NlbWlib2xkOmBmYXdzYmB9fSxYbj1bYGZha2AsYGZhLWtpdGAsYGZha2RgLGBmYS1raXQtZHVvdG9uZWBdLFpuPXtraXQ6e2Zhazpga2l0YCwiZmEta2l0Ijpga2l0YH0sImtpdC1kdW90b25lIjp7ZmFrZDpga2l0LWR1b3RvbmVgLCJmYS1raXQtZHVvdG9uZSI6YGtpdC1kdW90b25lYH19LFFuPVtga2l0YF07VShVKHt9LGBraXRgLGBLaXRgKSxga2l0LWR1b3RvbmVgLGBLaXQgRHVvdG9uZWApO3ZhciAkbj17a2l0OnsiZmEta2l0IjpgZmFrYH0sImtpdC1kdW90b25lIjp7ImZhLWtpdC1kdW90b25lIjpgZmFrZGB9fSxlcj17IkZvbnQgQXdlc29tZSBLaXQiOns0MDA6YGZha2Asbm9ybWFsOmBmYWtgfSwiRm9udCBBd2Vzb21lIEtpdCBEdW90b25lIjp7NDAwOmBmYWtkYCxub3JtYWw6YGZha2RgfX0sdHI9e2tpdDp7ZmFrOmBmYS1raXRgfSwia2l0LWR1b3RvbmUiOntmYWtkOmBmYS1raXQtZHVvdG9uZWB9fSxucj17a2l0OntraXQ6YGZha2B9LCJraXQtZHVvdG9uZSI6eyJraXQtZHVvdG9uZSI6YGZha2RgfX0scnIsaXI9e0dST1VQOmBkdW90b25lLWdyb3VwYCxTV0FQX09QQUNJVFk6YHN3YXAtb3BhY2l0eWAsUFJJTUFSWTpgcHJpbWFyeWAsU0VDT05EQVJZOmBzZWNvbmRhcnlgfSxhcj1bYGZhLWNsYXNzaWNgLGBmYS1kdW90b25lYCxgZmEtc2hhcnBgLGBmYS1zaGFycC1kdW90b25lYCxgZmEtdGh1bWJwcmludGAsYGZhLXdoaXRlYm9hcmRgLGBmYS1ub3Rkb2dgLGBmYS1ub3Rkb2ctZHVvYCxgZmEtY2hpc2VsYCxgZmEtZXRjaGAsYGZhLWdyYXBoaXRlYCxgZmEtamVsbHlgLGBmYS1qZWxseS1maWxsYCxgZmEtamVsbHktZHVvYCxgZmEtc2xhYmAsYGZhLXNsYWItcHJlc3NgLGBmYS1zbGFiLXByZXNzLWR1b2AsYGZhLXNsYWItZHVvYCxgZmEtbW9zYWljYCxgZmEtcGl4ZWxgLGBmYS12ZWxsdW1gLGBmYS11dGlsaXR5YCxgZmEtdXRpbGl0eS1kdW9gLGBmYS11dGlsaXR5LWZpbGxgXTtycj17fSxVKFUoVShVKFUoVShVKFUoVShVKHJyLGBjbGFzc2ljYCxgQ2xhc3NpY2ApLGBkdW90b25lYCxgRHVvdG9uZWApLGBzaGFycGAsYFNoYXJwYCksYHNoYXJwLWR1b3RvbmVgLGBTaGFycCBEdW90b25lYCksYGNoaXNlbGAsYENoaXNlbGApLGBldGNoYCxgRXRjaGApLGBncmFwaGl0ZWAsYEdyYXBoaXRlYCksYGplbGx5YCxgSmVsbHlgKSxgamVsbHktZHVvYCxgSmVsbHkgRHVvYCksYGplbGx5LWZpbGxgLGBKZWxseSBGaWxsYCksVShVKFUoVShVKFUoVShVKFUoVShycixgbW9zYWljYCxgTW9zYWljYCksYG5vdGRvZ2AsYE5vdGRvZ2ApLGBub3Rkb2ctZHVvYCxgTm90ZG9nIER1b2ApLGBwaXhlbGAsYFBpeGVsYCksYHNsYWJgLGBTbGFiYCksYHNsYWItZHVvYCxgU2xhYiBEdW9gKSxgc2xhYi1wcmVzc2AsYFNsYWIgUHJlc3NgKSxgc2xhYi1wcmVzcy1kdW9gLGBTbGFiIFByZXNzIER1b2ApLGB0aHVtYnByaW50YCxgVGh1bWJwcmludGApLGB1dGlsaXR5YCxgVXRpbGl0eWApLFUoVShVKFUocnIsYHV0aWxpdHktZHVvYCxgVXRpbGl0eSBEdW9gKSxgdXRpbGl0eS1maWxsYCxgVXRpbGl0eSBGaWxsYCksYHZlbGx1bWAsYFZlbGx1bWApLGB3aGl0ZWJvYXJkYCxgV2hpdGVib2FyZGApLFUoVSh7fSxga2l0YCxgS2l0YCksYGtpdC1kdW90b25lYCxgS2l0IER1b3RvbmVgKTt2YXIgb3I9e2NsYXNzaWM6eyJmYS1icmFuZHMiOmBmYWJgLCJmYS1kdW90b25lIjpgZmFkYCwiZmEtbGlnaHQiOmBmYWxgLCJmYS1yZWd1bGFyIjpgZmFyYCwiZmEtc29saWQiOmBmYXNgLCJmYS10aGluIjpgZmF0YH0sZHVvdG9uZTp7ImZhLXJlZ3VsYXIiOmBmYWRyYCwiZmEtbGlnaHQiOmBmYWRsYCwiZmEtdGhpbiI6YGZhZHRgfSxzaGFycDp7ImZhLXNvbGlkIjpgZmFzc2AsImZhLXJlZ3VsYXIiOmBmYXNyYCwiZmEtbGlnaHQiOmBmYXNsYCwiZmEtdGhpbiI6YGZhc3RgfSwic2hhcnAtZHVvdG9uZSI6eyJmYS1zb2xpZCI6YGZhc2RzYCwiZmEtcmVndWxhciI6YGZhc2RyYCwiZmEtbGlnaHQiOmBmYXNkbGAsImZhLXRoaW4iOmBmYXNkdGB9LHNsYWI6eyJmYS1yZWd1bGFyIjpgZmFzbHJgfSwic2xhYi1wcmVzcyI6eyJmYS1yZWd1bGFyIjpgZmFzbHByYH0sInNsYWItZHVvIjp7ImZhLXJlZ3VsYXIiOmBmYXNsZHJgfSwic2xhYi1wcmVzcy1kdW8iOnsiZmEtcmVndWxhciI6YGZhc2xwZHJgfSxwaXhlbDp7ImZhLXJlZ3VsYXIiOmBmYXByYH0sbW9zYWljOnsiZmEtc29saWQiOmBmYW1zYH0sdmVsbHVtOnsiZmEtc29saWQiOmBmYXZzYH0sd2hpdGVib2FyZDp7ImZhLXNlbWlib2xkIjpgZmF3c2JgfSx0aHVtYnByaW50OnsiZmEtbGlnaHQiOmBmYXRsYH0sbm90ZG9nOnsiZmEtc29saWQiOmBmYW5zYH0sIm5vdGRvZy1kdW8iOnsiZmEtc29saWQiOmBmYW5kc2B9LGV0Y2g6eyJmYS1zb2xpZCI6YGZhZXNgfSxncmFwaGl0ZTp7ImZhLXRoaW4iOmBmYWd0YH0samVsbHk6eyJmYS1yZWd1bGFyIjpgZmFqcmB9LCJqZWxseS1maWxsIjp7ImZhLXJlZ3VsYXIiOmBmYWpmcmB9LCJqZWxseS1kdW8iOnsiZmEtcmVndWxhciI6YGZhamRyYH0sY2hpc2VsOnsiZmEtcmVndWxhciI6YGZhY3JgfSx1dGlsaXR5OnsiZmEtc2VtaWJvbGQiOmBmYXVzYmB9LCJ1dGlsaXR5LWR1byI6eyJmYS1zZW1pYm9sZCI6YGZhdWRzYmB9LCJ1dGlsaXR5LWZpbGwiOnsiZmEtc2VtaWJvbGQiOmBmYXVmc2JgfX0sc3I9e2NsYXNzaWM6W2BmYXNgLGBmYXJgLGBmYWxgLGBmYXRgLGBmYWRgXSxkdW90b25lOltgZmFkcmAsYGZhZGxgLGBmYWR0YF0sc2hhcnA6W2BmYXNzYCxgZmFzcmAsYGZhc2xgLGBmYXN0YF0sInNoYXJwLWR1b3RvbmUiOltgZmFzZHNgLGBmYXNkcmAsYGZhc2RsYCxgZmFzZHRgXSxzbGFiOltgZmFzbHJgXSwic2xhYi1wcmVzcyI6W2BmYXNscHJgXSwic2xhYi1kdW8iOltgZmFzbGRyYF0sInNsYWItcHJlc3MtZHVvIjpbYGZhc2xwZHJgXSxwaXhlbDpbYGZhcHJgXSxtb3NhaWM6W2BmYW1zYF0sdmVsbHVtOltgZmF2c2BdLHdoaXRlYm9hcmQ6W2BmYXdzYmBdLHRodW1icHJpbnQ6W2BmYXRsYF0sbm90ZG9nOltgZmFuc2BdLCJub3Rkb2ctZHVvIjpbYGZhbmRzYF0sZXRjaDpbYGZhZXNgXSxncmFwaGl0ZTpbYGZhZ3RgXSxqZWxseTpbYGZhanJgXSwiamVsbHktZmlsbCI6W2BmYWpmcmBdLCJqZWxseS1kdW8iOltgZmFqZHJgXSxjaGlzZWw6W2BmYWNyYF0sdXRpbGl0eTpbYGZhdXNiYF0sInV0aWxpdHktZHVvIjpbYGZhdWRzYmBdLCJ1dGlsaXR5LWZpbGwiOltgZmF1ZnNiYF19LGNyPXtjbGFzc2ljOntmYWI6YGZhLWJyYW5kc2AsZmFkOmBmYS1kdW90b25lYCxmYWw6YGZhLWxpZ2h0YCxmYXI6YGZhLXJlZ3VsYXJgLGZhczpgZmEtc29saWRgLGZhdDpgZmEtdGhpbmB9LGR1b3RvbmU6e2ZhZHI6YGZhLXJlZ3VsYXJgLGZhZGw6YGZhLWxpZ2h0YCxmYWR0OmBmYS10aGluYH0sc2hhcnA6e2Zhc3M6YGZhLXNvbGlkYCxmYXNyOmBmYS1yZWd1bGFyYCxmYXNsOmBmYS1saWdodGAsZmFzdDpgZmEtdGhpbmB9LCJzaGFycC1kdW90b25lIjp7ZmFzZHM6YGZhLXNvbGlkYCxmYXNkcjpgZmEtcmVndWxhcmAsZmFzZGw6YGZhLWxpZ2h0YCxmYXNkdDpgZmEtdGhpbmB9LHNsYWI6e2Zhc2xyOmBmYS1yZWd1bGFyYH0sInNsYWItcHJlc3MiOntmYXNscHI6YGZhLXJlZ3VsYXJgfSwic2xhYi1kdW8iOntmYXNsZHI6YGZhLXJlZ3VsYXJgfSwic2xhYi1wcmVzcy1kdW8iOntmYXNscGRyOmBmYS1yZWd1bGFyYH0scGl4ZWw6e2ZhcHI6YGZhLXJlZ3VsYXJgfSxtb3NhaWM6e2ZhbXM6YGZhLXNvbGlkYH0sdmVsbHVtOntmYXZzOmBmYS1zb2xpZGB9LHdoaXRlYm9hcmQ6e2Zhd3NiOmBmYS1zZW1pYm9sZGB9LHRodW1icHJpbnQ6e2ZhdGw6YGZhLWxpZ2h0YH0sbm90ZG9nOntmYW5zOmBmYS1zb2xpZGB9LCJub3Rkb2ctZHVvIjp7ZmFuZHM6YGZhLXNvbGlkYH0sZXRjaDp7ZmFlczpgZmEtc29saWRgfSxncmFwaGl0ZTp7ZmFndDpgZmEtdGhpbmB9LGplbGx5OntmYWpyOmBmYS1yZWd1bGFyYH0sImplbGx5LWZpbGwiOntmYWpmcjpgZmEtcmVndWxhcmB9LCJqZWxseS1kdW8iOntmYWpkcjpgZmEtcmVndWxhcmB9LGNoaXNlbDp7ZmFjcjpgZmEtcmVndWxhcmB9LHV0aWxpdHk6e2ZhdXNiOmBmYS1zZW1pYm9sZGB9LCJ1dGlsaXR5LWR1byI6e2ZhdWRzYjpgZmEtc2VtaWJvbGRgfSwidXRpbGl0eS1maWxsIjp7ZmF1ZnNiOmBmYS1zZW1pYm9sZGB9fSxscj1gZmEuZmFzLmZhci5mYWwuZmF0LmZhZC5mYWRyLmZhZGwuZmFkdC5mYWIuZmFzcy5mYXNyLmZhc2wuZmFzdC5mYXNkcy5mYXNkci5mYXNkbC5mYXNkdC5mYXNsci5mYXNscHIuZmFzbGRyLmZhc2xwZHIuZmFwci5mYW1zLmZhdnMuZmF3c2IuZmF0bC5mYW5zLmZhbmRzLmZhZXMuZmFndC5mYWpyLmZhamZyLmZhamRyLmZhY3IuZmF1c2IuZmF1ZHNiLmZhdWZzYmAuc3BsaXQoYC5gKS5jb25jYXQoYXIsW2BmYS1zb2xpZGAsYGZhLXJlZ3VsYXJgLGBmYS1saWdodGAsYGZhLXRoaW5gLGBmYS1kdW90b25lYCxgZmEtYnJhbmRzYCxgZmEtc2VtaWJvbGRgXSksdXI9W2Bzb2xpZGAsYHJlZ3VsYXJgLGBsaWdodGAsYHRoaW5gLGBkdW90b25lYCxgYnJhbmRzYCxgc2VtaWJvbGRgXSxkcj1bMSwyLDMsNCw1LDYsNyw4LDksMTBdLGZyPWRyLmNvbmNhdChbMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjBdKSxwcj1bXS5jb25jYXQoT3QoT2JqZWN0LmtleXMoc3IpKSx1cixbYGF3YCxgZndgLGBwdWxsLWxlZnRgLGBwdWxsLXJpZ2h0YF0sW2AyeHNgLGB4c2AsYHNtYCxgbGdgLGB4bGAsYDJ4bGAsYGJlYXRgLGBiZWF0LWZhZGVgLGBib3JkZXJgLGBib3VuY2VgLGBidXp6YCxgY2FudmFzLXNxdWFyZWAsYGNhbnZhcy1yb29teWAsYGZhZGVgLGBmbGlwLTM2MGAsYGZsaXAtYm90aGAsYGZsaXAtaG9yaXpvbnRhbGAsYGZsaXAtdmVydGljYWxgLGBmbGlwYCxgZmxvYXRgLGBpbnZlcnNlYCxgamVsbG9gLGBsYXllcnNgLGBsYXllcnMtYm90dG9tLWxlZnRgLGBsYXllcnMtYm90dG9tLXJpZ2h0YCxgbGF5ZXJzLWNvdW50ZXJgLGBsYXllcnMtdGV4dGAsYGxheWVycy10b3AtbGVmdGAsYGxheWVycy10b3AtcmlnaHRgLGBsaWAsYHB1bGwtZW5kYCxgcHVsbC1zdGFydGAsYHB1bHNlYCxgcm90YXRlLTE4MGAsYHJvdGF0ZS0yNzBgLGByb3RhdGUtOTBgLGByb3RhdGUtYnlgLGBzaGFrZWAsYHNwaW4tcHVsc2VgLGBzcGluLXJldmVyc2VgLGBzcGluYCxgc3Bpbi1zbmFwYCxgc3Bpbi1zbmFwLTRgLGBzcGluLXNuYXAtOGAsYHN0YWNrLTF4YCxgc3RhY2stMnhgLGBzdGFja2AsYHN3aW5nYCxgdWxgLGB3YWdgLGB3aWR0aC1hdXRvYCxgd2lkdGgtZml4ZWRgLGlyLkdST1VQLGlyLlNXQVBfT1BBQ0lUWSxpci5QUklNQVJZLGlyLlNFQ09OREFSWV0sZHIubWFwKGZ1bmN0aW9uKGUpe3JldHVybmAke2V9eGB9KSxmci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuYHctJHtlfWB9KSksbXI9eyJGb250IEF3ZXNvbWUgNSBGcmVlIjp7OTAwOmBmYXNgLDQwMDpgZmFyYH0sIkZvbnQgQXdlc29tZSA1IFBybyI6ezkwMDpgZmFzYCw0MDA6YGZhcmAsbm9ybWFsOmBmYXJgLDMwMDpgZmFsYH0sIkZvbnQgQXdlc29tZSA1IEJyYW5kcyI6ezQwMDpgZmFiYCxub3JtYWw6YGZhYmB9LCJGb250IEF3ZXNvbWUgNSBEdW90b25lIjp7OTAwOmBmYWRgfX0saHI9YF9fX0ZPTlRfQVdFU09NRV9fX2AsZ3I9MTYsX3I9YGZhYCx2cj1gc3ZnLWlubGluZS0tZmFgLHlyPWBkYXRhLWZhLWkyc3ZnYCxicj1gZGF0YS1mYS1wc2V1ZG8tZWxlbWVudGAseHI9YGRhdGEtZmEtcHNldWRvLWVsZW1lbnQtcGVuZGluZ2AsU3I9YGRhdGEtcHJlZml4YCxDcj1gZGF0YS1pY29uYCx3cj1gZm9udGF3ZXNvbWUtaTJzdmdgLFRyPWBhc3luY2AsRXI9W2BIVE1MYCxgSEVBRGAsYFNUWUxFYCxgU0NSSVBUYF0sRHI9W2A6OmJlZm9yZWAsYDo6YWZ0ZXJgLGA6YmVmb3JlYCxgOmFmdGVyYF0sT3I9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuITB9Y2F0Y2h7cmV0dXJuITF9fSgpO2Z1bmN0aW9uIGtyKGUpe3JldHVybiBuZXcgUHJveHkoZSx7Z2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQgaW4gZT9lW3RdOmVbS119fSl9dmFyIEFyPVcoe30sSnQpO0FyW0tdPVcoVyhXKFcoe30seyJmYS1kdW90b25lIjpgZHVvdG9uZWB9KSxKdFtLXSksWm4ua2l0KSxabltga2l0LWR1b3RvbmVgXSk7dmFyIGpyPWtyKEFyKSxNcj1XKHt9LFluKTtNcltLXT1XKFcoVyhXKHt9LHtkdW90b25lOmBmYWRgfSksTXJbS10pLG5yLmtpdCksbnJbYGtpdC1kdW90b25lYF0pO3ZhciBOcj1rcihNciksUHI9Vyh7fSxjcik7UHJbS109VyhXKHt9LFByW0tdKSx0ci5raXQpO3ZhciBGcj1rcihQciksSXI9Vyh7fSxvcik7SXJbS109VyhXKHt9LElyW0tdKSwkbi5raXQpLGtyKElyKTt2YXIgTHI9S3QsUnI9YGZhLWxheWVycy10ZXh0YCx6cj1xdDtrcihXKHt9LEtuKSk7dmFyIEJyPVtgY2xhc3NgLGBkYXRhLXByZWZpeGAsYGRhdGEtaWNvbmAsYGRhdGEtZmEtdHJhbnNmb3JtYCxgZGF0YS1mYS1tYXNrYF0sVnI9WXQsSHI9W10uY29uY2F0KE90KFFuKSxPdChwcikpLFVyPUJ0LkZvbnRBd2Vzb21lQ29uZmlnfHx7fTtmdW5jdGlvbiBXcihlKXt2YXIgdD1HLnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtgK2UrYF1gKTtpZih0KXJldHVybiB0LmdldEF0dHJpYnV0ZShlKX1mdW5jdGlvbiBHcihlKXtyZXR1cm4gZT09PWBgPyEwOmU9PT1gZmFsc2VgPyExOmU9PT1gdHJ1ZWB8fGV9RyYmdHlwZW9mIEcucXVlcnlTZWxlY3Rvcj09YGZ1bmN0aW9uYCYmW1tgZGF0YS1mYW1pbHktcHJlZml4YCxgZmFtaWx5UHJlZml4YF0sW2BkYXRhLWNzcy1wcmVmaXhgLGBjc3NQcmVmaXhgXSxbYGRhdGEtZmFtaWx5LWRlZmF1bHRgLGBmYW1pbHlEZWZhdWx0YF0sW2BkYXRhLXN0eWxlLWRlZmF1bHRgLGBzdHlsZURlZmF1bHRgXSxbYGRhdGEtcmVwbGFjZW1lbnQtY2xhc3NgLGByZXBsYWNlbWVudENsYXNzYF0sW2BkYXRhLWF1dG8tcmVwbGFjZS1zdmdgLGBhdXRvUmVwbGFjZVN2Z2BdLFtgZGF0YS1hdXRvLWFkZC1jc3NgLGBhdXRvQWRkQ3NzYF0sW2BkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHNgLGBzZWFyY2hQc2V1ZG9FbGVtZW50c2BdLFtgZGF0YS1zZWFyY2gtcHNldWRvLWVsZW1lbnRzLXdhcm5pbmdzYCxgc2VhcmNoUHNldWRvRWxlbWVudHNXYXJuaW5nc2BdLFtgZGF0YS1zZWFyY2gtcHNldWRvLWVsZW1lbnRzLWZ1bGwtc2NhbmAsYHNlYXJjaFBzZXVkb0VsZW1lbnRzRnVsbFNjYW5gXSxbYGRhdGEtb2JzZXJ2ZS1tdXRhdGlvbnNgLGBvYnNlcnZlTXV0YXRpb25zYF0sW2BkYXRhLW11dGF0ZS1hcHByb2FjaGAsYG11dGF0ZUFwcHJvYWNoYF0sW2BkYXRhLWtlZXAtb3JpZ2luYWwtc291cmNlYCxga2VlcE9yaWdpbmFsU291cmNlYF0sW2BkYXRhLW1lYXN1cmUtcGVyZm9ybWFuY2VgLGBtZWFzdXJlUGVyZm9ybWFuY2VgXSxbYGRhdGEtc2hvdy1taXNzaW5nLWljb25zYCxgc2hvd01pc3NpbmdJY29uc2BdXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PUR0KGUsMiksbj10WzBdLHI9dFsxXSxpPUdyKFdyKG4pKTtpIT1udWxsJiYoVXJbcl09aSl9KTt2YXIgS3I9e3N0eWxlRGVmYXVsdDpgc29saWRgLGZhbWlseURlZmF1bHQ6Syxjc3NQcmVmaXg6X3IscmVwbGFjZW1lbnRDbGFzczp2cixhdXRvUmVwbGFjZVN2ZzohMCxhdXRvQWRkQ3NzOiEwLHNlYXJjaFBzZXVkb0VsZW1lbnRzOiExLHNlYXJjaFBzZXVkb0VsZW1lbnRzV2FybmluZ3M6ITAsc2VhcmNoUHNldWRvRWxlbWVudHNGdWxsU2NhbjohMSxvYnNlcnZlTXV0YXRpb25zOiEwLG11dGF0ZUFwcHJvYWNoOmBhc3luY2Asa2VlcE9yaWdpbmFsU291cmNlOiEwLG1lYXN1cmVQZXJmb3JtYW5jZTohMSxzaG93TWlzc2luZ0ljb25zOiEwfTtVci5mYW1pbHlQcmVmaXgmJihVci5jc3NQcmVmaXg9VXIuZmFtaWx5UHJlZml4KTt2YXIgcXI9VyhXKHt9LEtyKSxVcik7cXIuYXV0b1JlcGxhY2VTdmd8fChxci5vYnNlcnZlTXV0YXRpb25zPSExKTt2YXIgcT17fTtPYmplY3Qua2V5cyhLcikuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkocSxlLHtlbnVtZXJhYmxlOiEwLHNldDpmdW5jdGlvbih0KXtxcltlXT10LEpyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUocSl9KX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHFyW2VdfX0pfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHEsImZhbWlseVByZWZpeCIse2VudW1lcmFibGU6ITAsc2V0OmZ1bmN0aW9uKGUpe3FyLmNzc1ByZWZpeD1lLEpyLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUocSl9KX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHFyLmNzc1ByZWZpeH19KSxCdC5Gb250QXdlc29tZUNvbmZpZz1xO3ZhciBKcj1bXTtmdW5jdGlvbiBZcihlKXtyZXR1cm4gSnIucHVzaChlKSxmdW5jdGlvbigpe0pyLnNwbGljZShKci5pbmRleE9mKGUpLDEpfX12YXIgWHI9Z3IsWnI9e3NpemU6MTYseDowLHk6MCxyb3RhdGU6MCxmbGlwWDohMSxmbGlwWTohMX07ZnVuY3Rpb24gUXIoZSl7aWYoISghZXx8IVV0KSl7dmFyIHQ9Ry5jcmVhdGVFbGVtZW50KGBzdHlsZWApO3Quc2V0QXR0cmlidXRlKGB0eXBlYCxgdGV4dC9jc3NgKSx0LmlubmVySFRNTD1lO2Zvcih2YXIgbj1HLmhlYWQuY2hpbGROb2RlcyxyPW51bGwsaT1uLmxlbmd0aC0xO2k+LTE7aS0tKXt2YXIgYT1uW2ldLG89KGEudGFnTmFtZXx8YGApLnRvVXBwZXJDYXNlKCk7W2BTVFlMRWAsYExJTktgXS5pbmRleE9mKG8pPi0xJiYocj1hKX1yZXR1cm4gRy5oZWFkLmluc2VydEJlZm9yZSh0LHIpLGV9fXZhciAkcj1gMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpgO2Z1bmN0aW9uIGVpKCl7Zm9yKHZhciBlPTEyLHQ9YGA7ZS0tPjA7KXQrPSRyW01hdGgucmFuZG9tKCkqNjJ8MF07cmV0dXJuIHR9ZnVuY3Rpb24gdGkoZSl7Zm9yKHZhciB0PVtdLG49KGV8fFtdKS5sZW5ndGg+Pj4wO24tLTspdFtuXT1lW25dO3JldHVybiB0fWZ1bmN0aW9uIG5pKGUpe3JldHVybiBlLmNsYXNzTGlzdD90aShlLmNsYXNzTGlzdCk6KGUuZ2V0QXR0cmlidXRlKGBjbGFzc2ApfHxgYCkuc3BsaXQoYCBgKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KX1mdW5jdGlvbiByaShlKXtyZXR1cm5gJHtlfWAucmVwbGFjZSgvJi9nLGAmYW1wO2ApLnJlcGxhY2UoLyIvZyxgJnF1b3Q7YCkucmVwbGFjZSgvJy9nLGAmIzM5O2ApLnJlcGxhY2UoLzwvZyxgJmx0O2ApLnJlcGxhY2UoLz4vZyxgJmd0O2ApfWZ1bmN0aW9uIGlpKGUpe3JldHVybiBPYmplY3Qua2V5cyhlfHx7fSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQrYCR7bn09IiR7cmkoZVtuXSl9IiBgfSxgYCkudHJpbSgpfWZ1bmN0aW9uIGFpKGUpe3JldHVybiBPYmplY3Qua2V5cyhlfHx7fSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQrYCR7bn06ICR7ZVtuXS50cmltKCl9O2B9LGBgKX1mdW5jdGlvbiBvaShlKXtyZXR1cm4gZS5zaXplIT09WnIuc2l6ZXx8ZS54IT09WnIueHx8ZS55IT09WnIueXx8ZS5yb3RhdGUhPT1aci5yb3RhdGV8fGUuZmxpcFh8fGUuZmxpcFl9ZnVuY3Rpb24gc2koZSl7dmFyIHQ9ZS50cmFuc2Zvcm0sbj1lLmNvbnRhaW5lcldpZHRoLHI9ZS5pY29uV2lkdGg7cmV0dXJue291dGVyOnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke24vMn0gMjU2KWB9LGlubmVyOnt0cmFuc2Zvcm06YCR7YHRyYW5zbGF0ZSgke3QueCozMn0sICR7dC55KjMyfSkgYH0gJHtgc2NhbGUoJHt0LnNpemUvMTYqKHQuZmxpcFg/LTE6MSl9LCAke3Quc2l6ZS8xNioodC5mbGlwWT8tMToxKX0pIGB9ICR7YHJvdGF0ZSgke3Qucm90YXRlfSAwIDApYH1gfSxwYXRoOnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke3IvMiotMX0gLTI1NilgfX19ZnVuY3Rpb24gY2koZSl7dmFyIHQ9ZS50cmFuc2Zvcm0sbj1lLndpZHRoLHI9bj09PXZvaWQgMD9ncjpuLGk9ZS5oZWlnaHQsYT1pPT09dm9pZCAwP2dyOmksbz1lLnN0YXJ0Q2VudGVyZWQscz1vIT09dm9pZCAwJiZvLGM9YGA7cmV0dXJuIGMrPXMmJld0P2B0cmFuc2xhdGUoJHt0LngvWHItci8yfWVtLCAke3QueS9Yci1hLzJ9ZW0pIGA6cz9gdHJhbnNsYXRlKGNhbGMoLTUwJSArICR7dC54L1hyfWVtKSwgY2FsYygtNTAlICsgJHt0LnkvWHJ9ZW0pKSBgOmB0cmFuc2xhdGUoJHt0LngvWHJ9ZW0sICR7dC55L1hyfWVtKSBgLGMrPWBzY2FsZSgke3Quc2l6ZS9YcioodC5mbGlwWD8tMToxKX0sICR7dC5zaXplL1hyKih0LmZsaXBZPy0xOjEpfSkgYCxjKz1gcm90YXRlKCR7dC5yb3RhdGV9ZGVnKSBgLGN9dmFyIGxpPWA6cm9vdCwgOmhvc3QgewogIC0tZmEtZm9udC1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRnJlZSc7CiAgLS1mYS1mb250LXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEZyZWUnOwogIC0tZmEtZm9udC1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgUHJvJzsKICAtLWZhLWZvbnQtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgUHJvJzsKICAtLWZhLWZvbnQtZHVvdG9uZTogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWR1b3RvbmUtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWR1b3RvbmUtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IER1b3RvbmUnOwogIC0tZmEtZm9udC1kdW90b25lLXRoaW46IG5vcm1hbCAxMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IER1b3RvbmUnOwogIC0tZmEtZm9udC1icmFuZHM6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEJyYW5kcyc7CiAgLS1mYS1mb250LXNoYXJwLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCc7CiAgLS1mYS1mb250LXNoYXJwLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwJzsKICAtLWZhLWZvbnQtc2hhcnAtbGlnaHQ6IG5vcm1hbCAzMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwJzsKICAtLWZhLWZvbnQtc2hhcnAtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAnOwogIC0tZmEtZm9udC1zaGFycC1kdW90b25lLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSc7CiAgLS1mYS1mb250LXNoYXJwLWR1b3RvbmUtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAgRHVvdG9uZSc7CiAgLS1mYS1mb250LXNsYWItcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYic7CiAgLS1mYS1mb250LXNsYWItcHJlc3MtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyc7CiAgLS1mYS1mb250LXNsYWItZHVvLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNsYWIgRHVvJzsKICAtLWZhLWZvbnQtc2xhYi1wcmVzcy1kdW8tcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyBEdW8nOwogIC0tZmEtZm9udC1waXhlbC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBQaXhlbCc7CiAgLS1mYS1mb250LW1vc2FpYy1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgTW9zYWljJzsKICAtLWZhLWZvbnQtdmVsbHVtLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBWZWxsdW0nOwogIC0tZmEtZm9udC13aGl0ZWJvYXJkLXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBXaGl0ZWJvYXJkJzsKICAtLWZhLWZvbnQtdGh1bWJwcmludC1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgVGh1bWJwcmludCc7CiAgLS1mYS1mb250LW5vdGRvZy1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgTm90ZG9nJzsKICAtLWZhLWZvbnQtbm90ZG9nLWR1by1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgTm90ZG9nIER1byc7CiAgLS1mYS1mb250LWV0Y2gtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEV0Y2gnOwogIC0tZmEtZm9udC1ncmFwaGl0ZS10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBHcmFwaGl0ZSc7CiAgLS1mYS1mb250LWplbGx5LXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEplbGx5JzsKICAtLWZhLWZvbnQtamVsbHktZmlsbC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBKZWxseSBGaWxsJzsKICAtLWZhLWZvbnQtamVsbHktZHVvLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEplbGx5IER1byc7CiAgLS1mYS1mb250LWNoaXNlbC1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBDaGlzZWwnOwogIC0tZmEtZm9udC11dGlsaXR5LXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBVdGlsaXR5JzsKICAtLWZhLWZvbnQtdXRpbGl0eS1kdW8tc2VtaWJvbGQ6IG5vcm1hbCA2MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRHVvJzsKICAtLWZhLWZvbnQtdXRpbGl0eS1maWxsLXNlbWlib2xkOiBub3JtYWwgNjAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBVdGlsaXR5IEZpbGwnOwp9Cgouc3ZnLWlubGluZS0tZmEgewogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogIGRpc3BsYXk6IHZhcigtLWZhLWRpc3BsYXksIGlubGluZS1ibG9jayk7CiAgaGVpZ2h0OiAxZW07CiAgb3ZlcmZsb3c6IHZpc2libGU7CiAgdmVydGljYWwtYWxpZ246IC0wLjEyNWVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCwgMS4yNWVtKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtMnhzIHsKICB2ZXJ0aWNhbC1hbGlnbjogMC4xZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXhzIHsKICB2ZXJ0aWNhbC1hbGlnbjogMGVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1zbSB7CiAgdmVydGljYWwtYWxpZ246IC0wLjA3MTQyODU3MTRlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEtbGcgewogIHZlcnRpY2FsLWFsaWduOiAtMC4yZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXhsIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMjVlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEtMnhsIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMzEyNWVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1wdWxsLWxlZnQsCi5zdmctaW5saW5lLS1mYSAuZmEtcHVsbC1zdGFydCB7CiAgZmxvYXQ6IGlubGluZS1zdGFydDsKICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtcHVsbC1yaWdodCwKLnN2Zy1pbmxpbmUtLWZhIC5mYS1wdWxsLWVuZCB7CiAgZmxvYXQ6IGlubGluZS1lbmQ7CiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtbGkgewogIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTsKICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGMoLTEgKiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKSk7CiAgaW5zZXQtYmxvY2stc3RhcnQ6IDAuMjVlbTsgLyogc3luY2luZyB2ZXJ0aWNhbCBhbGlnbm1lbnQgd2l0aCBXZWIgRm9udCByZW5kZXJpbmcgKi8KfQoKLmZhLWxheWVycy1jb3VudGVyLCAuZmEtbGF5ZXJzLXRleHQgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouZmEtbGF5ZXJzIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAxZW07CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07CiAgd2lkdGg6IHZhcigtLWZhLXdpZHRoLCAxLjI1ZW0pOwp9Ci5mYS1sYXllcnMgLnN2Zy1pbmxpbmUtLWZhIHsKICBpbnNldDogMDsKICBtYXJnaW46IGF1dG87CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7Cn0KCi5mYS1sYXllcnMtdGV4dCB7CiAgbGVmdDogNTAlOwogIHRvcDogNTAlOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7Cn0KCi5mYS1sYXllcnMtY291bnRlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmEtY291bnRlci1iYWNrZ3JvdW5kLWNvbG9yLCAjZmYyNTNhKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1mYS1jb3VudGVyLWJvcmRlci1yYWRpdXMsIDFlbSk7CiAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7CiAgbGluZS1oZWlnaHQ6IHZhcigtLWZhLWNvdW50ZXItbGluZS1oZWlnaHQsIDEpOwogIG1heC13aWR0aDogdmFyKC0tZmEtY291bnRlci1tYXgtd2lkdGgsIDVlbSk7CiAgbWluLXdpZHRoOiB2YXIoLS1mYS1jb3VudGVyLW1pbi13aWR0aCwgMS41ZW0pOwogIG92ZXJmbG93OiBoaWRkZW47CiAgcGFkZGluZzogdmFyKC0tZmEtY291bnRlci1wYWRkaW5nLCAwLjI1ZW0gMC41ZW0pOwogIHJpZ2h0OiB2YXIoLS1mYS1yaWdodCwgMCk7CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgdG9wOiB2YXIoLS1mYS10b3AsIDApOwogIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtY291bnRlci1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDsKfQoKLmZhLWxheWVycy1ib3R0b20tcmlnaHQgewogIGJvdHRvbTogdmFyKC0tZmEtYm90dG9tLCAwKTsKICByaWdodDogdmFyKC0tZmEtcmlnaHQsIDApOwogIHRvcDogYXV0bzsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDsKfQoKLmZhLWxheWVycy1ib3R0b20tbGVmdCB7CiAgYm90dG9tOiB2YXIoLS1mYS1ib3R0b20sIDApOwogIGxlZnQ6IHZhcigtLWZhLWxlZnQsIDApOwogIHJpZ2h0OiBhdXRvOwogIHRvcDogYXV0bzsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBsZWZ0Owp9CgouZmEtbGF5ZXJzLXRvcC1yaWdodCB7CiAgdG9wOiB2YXIoLS1mYS10b3AsIDApOwogIHJpZ2h0OiB2YXIoLS1mYS1yaWdodCwgMCk7CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1sYXllcnMtc2NhbGUsIDAuMjUpKTsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgcmlnaHQ7Cn0KCi5mYS1sYXllcnMtdG9wLWxlZnQgewogIGxlZnQ6IHZhcigtLWZhLWxlZnQsIDApOwogIHJpZ2h0OiBhdXRvOwogIHRvcDogdmFyKC0tZmEtdG9wLCAwKTsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0Owp9CgouZmEtMXggewogIGZvbnQtc2l6ZTogMWVtOwp9CgouZmEtMnggewogIGZvbnQtc2l6ZTogMmVtOwp9CgouZmEtM3ggewogIGZvbnQtc2l6ZTogM2VtOwp9CgouZmEtNHggewogIGZvbnQtc2l6ZTogNGVtOwp9CgouZmEtNXggewogIGZvbnQtc2l6ZTogNWVtOwp9CgouZmEtNnggewogIGZvbnQtc2l6ZTogNmVtOwp9CgouZmEtN3ggewogIGZvbnQtc2l6ZTogN2VtOwp9CgouZmEtOHggewogIGZvbnQtc2l6ZTogOGVtOwp9CgouZmEtOXggewogIGZvbnQtc2l6ZTogOWVtOwp9CgouZmEtMTB4IHsKICBmb250LXNpemU6IDEwZW07Cn0KCi5mYS0yeHMgewogIGZvbnQtc2l6ZTogY2FsYygxMCAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAxMHB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDEwICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAxMCAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS14cyB7CiAgZm9udC1zaXplOiBjYWxjKDEyIC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDEycHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMTIgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDEyIC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLXNtIHsKICBmb250LXNpemU6IGNhbGMoMTQgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMTRweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAxNCAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMTQgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEtbGcgewogIGZvbnQtc2l6ZTogY2FsYygyMCAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAyMHB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDIwICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAyMCAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS14bCB7CiAgZm9udC1zaXplOiBjYWxjKDI0IC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDI0cHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMjQgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDI0IC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLTJ4bCB7CiAgZm9udC1zaXplOiBjYWxjKDMyIC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDMycHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMzIgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDMyIC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLXdpZHRoLWF1dG8gewogIC0tZmEtd2lkdGg6IGF1dG87Cn0KCi5mYS1mdywKLmZhLXdpZHRoLWZpeGVkIHsKICAtLWZhLXdpZHRoOiAxLjI1ZW07Cn0KCi5mYS1jYW52YXMtc3F1YXJlIHsKICBwYWRkaW5nLWJsb2NrOiAwLjEyNWVtOwogIG1hcmdpbi1ibG9jay1lbmQ6IC0wLjEyNWVtOwp9CgouZmEtY2FudmFzLXJvb215IHsKICBwYWRkaW5nLWJsb2NrOiAwLjI1ZW07CiAgcGFkZGluZy1pbmxpbmU6IDAuMTI1ZW07CiAgbWFyZ2luLWJsb2NrLWVuZDogLTAuMjVlbTsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKfQoKLmZhLXVsIHsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tZmEtbGktbWFyZ2luLCAyLjVlbSk7CiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7Cn0KLmZhLXVsID4gbGkgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLmZhLWxpIHsKICBpbnNldC1pbmxpbmUtc3RhcnQ6IGNhbGMoLTEgKiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKSk7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB3aWR0aDogdmFyKC0tZmEtbGktd2lkdGgsIDJlbSk7CiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7Cn0KCi8qIEhlYWRzIFVwOiBCb3JkZXJlZCBJY29ucyB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQgaW4gdGhlIGZ1dHVyZSEKICAtIFRoaXMgZmVhdHVyZSB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZSBvZiBGb250IEF3ZXNvbWUgKHY4KSEKICAtIFlvdSBtYXkgY29udGludWUgdG8gdXNlIGl0IGluIHRoaXMgdmVyc2lvbiAqdjcpLCBidXQgaXQgd2lsbCBub3QgYmUgc3VwcG9ydGVkIGluIEZvbnQgQXdlc29tZSB2OC4KKi8KLyogTm90ZXM6CiogLS1Ae3YuJGNzcy1wcmVmaXh9LWJvcmRlci13aWR0aCA9IDEvMTYgYnkgZGVmYXVsdCAodG8gcmVuZGVyIGFzIH4xcHggYmFzZWQgb24gYSAxNnB4IGRlZmF1bHQgZm9udC1zaXplKQoqIC0tQHt2LiRjc3MtcHJlZml4fS1ib3JkZXItcGFkZGluZyA9CiAgKiogMy8xNiBmb3IgdmVydGljYWwgcGFkZGluZyAodG8gZ2l2ZSB+MnB4IG9mIHZlcnRpY2FsIHdoaXRlc3BhY2UgYXJvdW5kIGFuIGljb24gY29uc2lkZXJpbmcgaXQncyB2ZXJ0aWNhbCBhbGlnbm1lbnQpCiAgKiogNC8xNiBmb3IgaG9yaXpvbnRhbCBwYWRkaW5nICh0byBnaXZlIH40cHggb2YgaG9yaXpvbnRhbCB3aGl0ZXNwYWNlIGFyb3VuZCBhbiBpY29uKQoqLwouZmEtYm9yZGVyIHsKICBib3JkZXItY29sb3I6IHZhcigtLWZhLWJvcmRlci1jb2xvciwgI2VlZSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tZmEtYm9yZGVyLXJhZGl1cywgMC4xZW0pOwogIGJvcmRlci1zdHlsZTogdmFyKC0tZmEtYm9yZGVyLXN0eWxlLCBzb2xpZCk7CiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1mYS1ib3JkZXItd2lkdGgsIDAuMDYyNWVtKTsKICBib3gtc2l6aW5nOiB2YXIoLS1mYS1ib3JkZXItYm94LXNpemluZywgY29udGVudC1ib3gpOwogIHBhZGRpbmc6IHZhcigtLWZhLWJvcmRlci1wYWRkaW5nLCAwLjE4NzVlbSAwLjI1ZW0pOwp9CgouZmEtcHVsbC1sZWZ0LAouZmEtcHVsbC1zdGFydCB7CiAgZmxvYXQ6IGlubGluZS1zdGFydDsKICBtYXJnaW4taW5saW5lLWVuZDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQoKLmZhLXB1bGwtcmlnaHQsCi5mYS1wdWxsLWVuZCB7CiAgZmxvYXQ6IGlubGluZS1lbmQ7CiAgbWFyZ2luLWlubGluZS1zdGFydDogdmFyKC0tZmEtcHVsbC1tYXJnaW4sIDAuM2VtKTsKfQoKLmZhLWJlYXQgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1iZWF0OwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1ib3VuY2UgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1ib3VuY2U7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGN1YmljLWJlemllcigwLjI4LCAwLjg0LCAwLjQyLCAxKSk7Cn0KCi5mYS1mYWRlIHsKICBhbmltYXRpb24tbmFtZTogZmEtZmFkZTsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpOwp9CgouZmEtYmVhdC1mYWRlIHsKICBhbmltYXRpb24tbmFtZTogZmEtYmVhdC1mYWRlOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1mbGlwIHsKICBhbmltYXRpb24tbmFtZTogZmEtZmxpcDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDEuNXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1mbGlwLTM2MCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWZsaXAtMzYwOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1zaGFrZSB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLXNoYWtlOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMC43NXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1zcGluIHsKICBhbmltYXRpb24tbmFtZTogZmEtc3BpbjsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDJzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4tcmV2ZXJzZSB7CiAgLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwp9CgouZmEtcHVsc2UsCi5mYS1zcGluLXB1bHNlIHsKICBhbmltYXRpb24tbmFtZTogZmEtc3BpbjsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIHN0ZXBzKDgpKTsKfQoKLmZhLXNwaW4tc25hcCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLXNwaW4tc25hcDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDNzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4tc25hcC00IHsKICBhbmltYXRpb24tbmFtZTogZmEtc3Bpbi1zbmFwLTQ7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAyLjRzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLXNwaW4tc25hcC04IHsKICBhbmltYXRpb24tbmFtZTogZmEtc3Bpbi1zbmFwLTg7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCA0cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7Cn0KCi5mYS1idXp6IHsKICBhbmltYXRpb24tbmFtZTogZmEtYnV6ejsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDAuNnMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpOwp9CgouZmEtd2FnIHsKICBhbmltYXRpb24tbmFtZTogZmEtd2FnOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMC45cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2Utb3V0KTsKICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gY2VudGVyOwp9CgouZmEtZmxvYXQgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1mbG9hdDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDNzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1pbi1vdXQpOwogIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07Cn0KCi5mYS1zd2luZyB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLXN3aW5nOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMS4ycyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2Utb3V0KTsKICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyOwp9CgouZmEtamVsbG8gewogIGFuaW1hdGlvbi1uYW1lOiBmYS1qZWxsbzsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDAuOXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLW91dCk7Cn0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgLmZhLWJlYXQsCiAgLmZhLWJvdW5jZSwKICAuZmEtZmFkZSwKICAuZmEtYmVhdC1mYWRlLAogIC5mYS1mbGlwLAogIC5mYS1mbGlwLTM2MCwKICAuZmEtcHVsc2UsCiAgLmZhLXNoYWtlLAogIC5mYS1zcGluLAogIC5mYS1zcGluLXB1bHNlLAogIC5mYS1idXp6LAogIC5mYS1mbG9hdCwKICAuZmEtamVsbG8sCiAgLmZhLXNwaW4tc25hcCwKICAuZmEtc3Bpbi1zbmFwLTQsCiAgLmZhLXNwaW4tc25hcC04LAogIC5mYS1zd2luZywKICAuZmEtd2FnIHsKICAgIGFuaW1hdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJlYXQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQogIDI1JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMS4yNSAqIHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKSk7CiAgfQogIDQ1JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMS4yMiAqIHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjIpKSk7CiAgfQogIDY1JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMS4yNSAqIHZhcigtLWZhLWJlYXQtc2NhbGUsIDEuMjUpKSk7CiAgfQogIDkwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJvdW5jZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZyk7CiAgfQogIDE0JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1zdGFydC1zY2FsZS14LCAxLjA2KSwgdmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXksIDAuOTQpKSB0cmFuc2xhdGVZKHZhcigtLWZhLWJvdW5jZS1hbnRpY2lwYXRpb24sIDNweCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICAzMiUgewogICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS14LCAwLjk0KSwgdmFyKC0tZmEtYm91bmNlLWp1bXAtc2NhbGUteSwgMS4xMikpIHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsIDAuNWVtKSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAuNjYsIDAuNjYsIDEpOwogIH0KICA1MiUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKSB0cmFuc2xhdGVZKGNhbGMoLTEgKiB2YXIoLS1mYS1ib3VuY2UtaGVpZ2h0LCAwLjVlbSkgKiAxLjEpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjUsIDAsIDEsIDAuNSk7CiAgfQogIDcwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXgsIDEuMDYpLCB2YXIoLS1mYS1ib3VuY2UtbGFuZC1zY2FsZS15LCAwLjkyKSkgdHJhbnNsYXRlWSgwKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjMzLCAwLjY2LCAxKTsKICB9CiAgODUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCwgMS4wNCkgdHJhbnNsYXRlWShjYWxjKC0ycHggKiB2YXIoLS1mYS1ib3VuY2UtcmVib3VuZCwgMSkpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLCAwLjY2LCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmFkZSB7CiAgMCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjQsIDEpOwogIH0KICA0MCUgewogICAgb3BhY2l0eTogdmFyKC0tZmEtZmFkZS1vcGFjaXR5LCAwLjQpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtYmVhdC1mYWRlIHsKICAwJSB7CiAgICBvcGFjaXR5OiB2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjQsIDEpOwogIH0KICAyNSUgewogICAgb3BhY2l0eTogY2FsYyh2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KSArIDAuNCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4yOCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgNDUlIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4yNSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgNjUlIHsKICAgIG9wYWNpdHk6IGNhbGModmFyKC0tZmEtYmVhdC1mYWRlLW9wYWNpdHksIDAuNCkgKyAwLjQpOwogICAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1iZWF0LWZhZGUtc2NhbGUsIDEuMjgpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDEwMCUgewogICAgb3BhY2l0eTogdmFyKC0tZmEtYmVhdC1mYWRlLW9wYWNpdHksIDAuNCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWZsaXAgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCAwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNCwgMSk7CiAgfQogIDglIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSh2YXIoLS1mYS1mbGlwLWFudGljaXBhdGlvbi1zY2FsZSwgMC45NSkpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICAzNSUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIGNhbGModmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykgKiAwLjYpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKICB9CiAgNjUlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCBjYWxjKHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpICogMC41KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMC42NiwgMC42NiwgMSk7CiAgfQogIDkyJSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDJlbSkgc2NhbGUoMSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgY2FsYyh2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMzYwZGVnKSAqIHZhcigtLWZhLWZsaXAtb3ZlcnNob290LCAxLjA0KSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCB2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMzYwZGVnKSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmxpcC0zNjAgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCAwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNCwgMSk7CiAgfQogIDglIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSh2YXIoLS1mYS1mbGlwLWFudGljaXBhdGlvbi1zY2FsZSwgMC45NSkpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIGNhbGModmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykgKiAwLjYpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjY2LCAwLjY2LCAxKTsKICB9CiAgODAlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCBjYWxjKHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpICogdmFyKC0tZmEtZmxpcC1vdmVyc2hvb3QsIDEuMDQpKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1zaGFrZSB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjgsIDEpOwogIH0KICA4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNWRlZykgdHJhbnNsYXRlWCgxcHgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMjAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0yMmRlZykgdHJhbnNsYXRlWCgtMXB4KTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDM1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxNWRlZykgdHJhbnNsYXRlWCgxcHgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC05ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDY1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDc4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtM2RlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA5MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4gewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtc3Bpbi1zbmFwIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICAxMiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNjBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDE2LjY3JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgMjguNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEyMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMzMuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEyMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNDUuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNjIlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNjYuNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI0MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNzguNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgODMuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMwMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgOTUuMzMlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4tc25hcC00IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICAxNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDI1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNzUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgOTAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNwaW4tc25hcC04IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA5JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTIuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDIxLjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICAyNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDM0JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDM3LjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNDYuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA1OSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjI1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA2Mi41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMjVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDcxLjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgNzUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgODQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDMxNWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgODcuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzE1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA5Ni41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1idXp6IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMSwgMCwgMC45LCAxKTsKICB9CiAgNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkpIHJvdGF0ZSgwLjVkZWcpOwogIH0KICAxMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpKSkgcm90YXRlKC0wLjVkZWcpOwogIH0KICAxNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkpIHJvdGF0ZSgwLjNkZWcpOwogIH0KICAyMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpKSkgcm90YXRlKC0wLjNkZWcpOwogIH0KICAyNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGModmFyKC0tZmEtYnV6ei1kaXN0YW5jZSwgNHB4KSAqIDAuNykpIHJvdGF0ZSgwLjJkZWcpOwogIH0KICAzMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpICogMC43KSkgcm90YXRlKC0wLjJkZWcpOwogIH0KICAzNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGModmFyKC0tZmEtYnV6ei1kaXN0YW5jZSwgNHB4KSAqIDAuNCkpIHJvdGF0ZSgwLjFkZWcpOwogIH0KICA0MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApIHJvdGF0ZSgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXdhZyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjYsIDEpOwogIH0KICAxMiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtd2FnLWFuZ2xlLCAxMmRlZykpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgMjQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDJkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMiwgMCwgMC42LCAxKTsKICB9CiAgMzYlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKGNhbGModmFyKC0tZmEtd2FnLWFuZ2xlLCAxMmRlZykgKiAwLjg1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICA0OCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjYsIDEpOwogIH0KICA1OCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoY2FsYyh2YXIoLS1mYS13YWctYW5nbGUsIDEyZGVnKSAqIDAuNikpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgNjglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWZsb2F0IHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgdHJhbnNsYXRlWCgwKSByb3RhdGUoMGRlZykgc2NhbGUodmFyKC0tZmEtZmxvYXQtc3F1YXNoLXgsIDEuMDIpLCB2YXIoLS1mYS1mbG9hdC1zcXVhc2gteSwgMC45OCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICAxNSUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTAuNCAqIHZhcigtLWZhLWZsb2F0LWhlaWdodCwgNnB4KSkpIHRyYW5zbGF0ZVgodmFyKC0tZmEtZmxvYXQtZHJpZnQsIDFweCkpIHJvdGF0ZSh2YXIoLS1mYS1mbG9hdC10aWx0LCAxZGVnKSkgc2NhbGUoMSwgMSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMC42NiwgMC42NiwgMSk7CiAgfQogIDM1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWZhLWZsb2F0LWhlaWdodCwgNnB4KSkpIHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpIHNjYWxlKHZhcigtLWZhLWZsb2F0LXN0cmV0Y2gteCwgMC45OCksIHZhcigtLWZhLWZsb2F0LXN0cmV0Y2gteSwgMS4wMykpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNSwgMCwgMC41LCAwKTsKICB9CiAgNTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0wLjkyICogdmFyKC0tZmEtZmxvYXQtaGVpZ2h0LCA2cHgpKSkgdHJhbnNsYXRlWChjYWxjKC0wLjUgKiB2YXIoLS1mYS1mbG9hdC1kcmlmdCwgMXB4KSkpIHJvdGF0ZShjYWxjKC0wLjUgKiB2YXIoLS1mYS1mbG9hdC10aWx0LCAxZGVnKSkpIHNjYWxlKDAuOTk1LCAxLjAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLCAwLjY2LCAwLjMzKTsKICB9CiAgNzAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0wLjMgKiB2YXIoLS1mYS1mbG9hdC1oZWlnaHQsIDZweCkpKSB0cmFuc2xhdGVYKGNhbGMoLTEgKiB2YXIoLS1mYS1mbG9hdC1kcmlmdCwgMXB4KSkpIHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtZmxvYXQtdGlsdCwgMWRlZykpKSBzY2FsZSgxLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjY2LCAwLjY2LCAxKTsKICB9CiAgOTAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKDAuMDUgKiB2YXIoLS1mYS1mbG9hdC1oZWlnaHQsIDZweCkpKSB0cmFuc2xhdGVYKDApIHJvdGF0ZSgwZGVnKSBzY2FsZSh2YXIoLS1mYS1mbG9hdC1zcXVhc2gteCwgMS4wMiksIHZhcigtLWZhLWZsb2F0LXNxdWFzaC15LCAwLjk4KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpIHNjYWxlKHZhcigtLWZhLWZsb2F0LXNxdWFzaC14LCAxLjAyKSwgdmFyKC0tZmEtZmxvYXQtc3F1YXNoLXksIDAuOTgpKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1zd2luZyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjgsIDEpOwogIH0KICA4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1mYS1zd2luZy1hbmdsZSwgMjJkZWcpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDE4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuODUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDI4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykgKiAwLjY1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC42NSwgMSk7CiAgfQogIDM4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuNDUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDQ4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykgKiAwLjI1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA1NiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoY2FsYygtMSAqIHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykgKiAwLjEpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDY0JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1qZWxsbyB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuOCwgMSk7CiAgfQogIDEyJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWplbGxvLXNjYWxlLXgsIDEuMTUpLCBjYWxjKDIgLSB2YXIoLS1mYS1qZWxsby1zY2FsZS14LCAxLjE1KSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMjQlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYygyIC0gdmFyKC0tZmEtamVsbG8tc2NhbGUteSwgMS4xMikpLCB2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zLCAwLCAwLjcsIDEpOwogIH0KICAzNiUgewogICAgdHJhbnNmb3JtOiBzY2FsZShjYWxjKDEgKyAodmFyKC0tZmEtamVsbG8tc2NhbGUteCwgMS4xNSkgLSAxKSAqIDAuNSksIGNhbGMoMiAtICgxICsgKHZhcigtLWZhLWplbGxvLXNjYWxlLXgsIDEuMTUpIC0gMSkgKiAwLjUpKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA0OCUgewogICAgdHJhbnNmb3JtOiBzY2FsZShjYWxjKDIgLSAoMSArICh2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSAtIDEpICogMC4zKSksIGNhbGMoMSArICh2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSAtIDEpICogMC4zKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA1OCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyLCAwLjk4KTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgfQogIDY4JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgfQp9Ci5mYS1yb3RhdGUtOTAgewogIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKfQoKLmZhLXJvdGF0ZS0xODAgewogIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7Cn0KCi5mYS1yb3RhdGUtMjcwIHsKICB0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpOwp9CgouZmEtZmxpcC1ob3Jpem9udGFsIHsKICB0cmFuc2Zvcm06IHNjYWxlKC0xLCAxKTsKfQoKLmZhLWZsaXAtdmVydGljYWwgewogIHRyYW5zZm9ybTogc2NhbGUoMSwgLTEpOwp9CgouZmEtZmxpcC1ib3RoLAouZmEtZmxpcC1ob3Jpem9udGFsLmZhLWZsaXAtdmVydGljYWwgewogIHRyYW5zZm9ybTogc2NhbGUoLTEsIC0xKTsKfQoKLmZhLXJvdGF0ZS1ieSB7CiAgdHJhbnNmb3JtOiByb3RhdGUodmFyKC0tZmEtcm90YXRlLWFuZ2xlLCAwKSk7Cn0KCi5zdmctaW5saW5lLS1mYSAuZmEtcHJpbWFyeSB7CiAgZmlsbDogdmFyKC0tZmEtcHJpbWFyeS1jb2xvciwgY3VycmVudENvbG9yKTsKICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpOwp9Cgouc3ZnLWlubGluZS0tZmEgLmZhLXNlY29uZGFyeSB7CiAgZmlsbDogdmFyKC0tZmEtc2Vjb25kYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpOwogIG9wYWNpdHk6IHZhcigtLWZhLXNlY29uZGFyeS1vcGFjaXR5LCAwLjQpOwp9Cgouc3ZnLWlubGluZS0tZmEuZmEtc3dhcC1vcGFjaXR5IC5mYS1wcmltYXJ5IHsKICBvcGFjaXR5OiB2YXIoLS1mYS1zZWNvbmRhcnktb3BhY2l0eSwgMC40KTsKfQoKLnN2Zy1pbmxpbmUtLWZhLmZhLXN3YXAtb3BhY2l0eSAuZmEtc2Vjb25kYXJ5IHsKICBvcGFjaXR5OiB2YXIoLS1mYS1wcmltYXJ5LW9wYWNpdHksIDEpOwp9Cgouc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtcHJpbWFyeSwKLnN2Zy1pbmxpbmUtLWZhIG1hc2sgLmZhLXNlY29uZGFyeSB7CiAgZmlsbDogYmxhY2s7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1pbnZlcnNlIHsKICBmaWxsOiB2YXIoLS1mYS1pbnZlcnNlLCAjZmZmKTsKfQoKLmZhLXN0YWNrIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgaGVpZ2h0OiAyZW07CiAgbGluZS1oZWlnaHQ6IDJlbTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogMi41ZW07Cn0KCi5mYS1pbnZlcnNlIHsKICBjb2xvcjogdmFyKC0tZmEtaW52ZXJzZSwgI2ZmZik7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1zdGFjay0xeCB7CiAgLS1mYS13aWR0aDogMS4yNWVtOwogIGhlaWdodDogMWVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCk7Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXN0YWNrLTJ4IHsKICAtLWZhLXdpZHRoOiAyLjVlbTsKICBoZWlnaHQ6IDJlbTsKICB3aWR0aDogdmFyKC0tZmEtd2lkdGgpOwp9CgouZmEtc3RhY2stMXgsCi5mYS1zdGFjay0yeCB7CiAgaW5zZXQ6IDA7CiAgbWFyZ2luOiBhdXRvOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB6LWluZGV4OiB2YXIoLS1mYS1zdGFjay16LWluZGV4LCBhdXRvKTsKfWA7ZnVuY3Rpb24gdWkoKXt2YXIgZT1fcix0PXZyLG49cS5jc3NQcmVmaXgscj1xLnJlcGxhY2VtZW50Q2xhc3MsaT1saTtpZihuIT09ZXx8ciE9PXQpe3ZhciBhPVJlZ0V4cChgXFwuJHtlfVxcLWAsYGdgKSxvPVJlZ0V4cChgXFwtLSR7ZX1cXC1gLGBnYCkscz1SZWdFeHAoYFxcLiR7dH1gLGBnYCk7aT1pLnJlcGxhY2UoYSxgLiR7bn0tYCkucmVwbGFjZShvLGAtLSR7bn0tYCkucmVwbGFjZShzLGAuJHtyfWApfXJldHVybiBpfXZhciBkaT0hMTtmdW5jdGlvbiBmaSgpe3EuYXV0b0FkZENzcyYmIWRpJiYoUXIodWkoKSksZGk9ITApfXZhciBwaT17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbTp7Y3NzOnVpLGluc2VydENzczpmaX19fSxob29rczpmdW5jdGlvbigpe3JldHVybntiZWZvcmVET01FbGVtZW50Q3JlYXRpb246ZnVuY3Rpb24oKXtmaSgpfSxiZWZvcmVJMnN2ZzpmdW5jdGlvbigpe2ZpKCl9fX19LG1pPUJ0fHx7fTttaVtocl18fChtaVtocl09e30pLG1pW2hyXS5zdHlsZXN8fChtaVtocl0uc3R5bGVzPXt9KSxtaVtocl0uaG9va3N8fChtaVtocl0uaG9va3M9e30pLG1pW2hyXS5zaGltc3x8KG1pW2hyXS5zaGltcz1bXSk7dmFyIGhpPW1pW2hyXSxnaT1bXSxfaT1mdW5jdGlvbigpe0cucmVtb3ZlRXZlbnRMaXN0ZW5lcihgRE9NQ29udGVudExvYWRlZGAsX2kpLHZpPTEsZ2kubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KX0sdmk9ITE7VXQmJih2aT0oRy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/L15sb2FkZWR8XmMvOi9ebG9hZGVkfF5pfF5jLykudGVzdChHLnJlYWR5U3RhdGUpLHZpfHxHLmFkZEV2ZW50TGlzdGVuZXIoYERPTUNvbnRlbnRMb2FkZWRgLF9pKSk7ZnVuY3Rpb24geWkoZSl7VXQmJih2aT9zZXRUaW1lb3V0KGUsMCk6Z2kucHVzaChlKSl9ZnVuY3Rpb24gYmkoZSl7dmFyIHQ9ZS50YWcsbj1lLmF0dHJpYnV0ZXMscj1uPT09dm9pZCAwP3t9Om4saT1lLmNoaWxkcmVuLGE9aT09PXZvaWQgMD9bXTppO3JldHVybiB0eXBlb2YgZT09YHN0cmluZ2A/cmkoZSk6YDwke3R9ICR7aWkocil9PiR7YS5tYXAoYmkpLmpvaW4oYGApfTwvJHt0fT5gfWZ1bmN0aW9uIHhpKGUsdCxuKXtpZihlJiZlW3RdJiZlW3RdW25dKXJldHVybntwcmVmaXg6dCxpY29uTmFtZTpuLGljb246ZVt0XVtuXX19dmFyIFNpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scixpLGEpe3JldHVybiBlLmNhbGwodCxuLHIsaSxhKX19LENpPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPU9iamVjdC5rZXlzKGUpLGE9aS5sZW5ndGgsbz1yPT09dm9pZCAwP3Q6U2kodCxyKSxzLGMsbDtmb3Iobj09PXZvaWQgMD8ocz0xLGw9ZVtpWzBdXSk6KHM9MCxsPW4pO3M8YTtzKyspYz1pW3NdLGw9byhsLGVbY10sYyxlKTtyZXR1cm4gbH07ZnVuY3Rpb24gd2koZSl7cmV0dXJuIE90KGUpLmxlbmd0aD09PTE/ZS5jb2RlUG9pbnRBdCgwKS50b1N0cmluZygxNik6bnVsbH1mdW5jdGlvbiBUaShlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkucmVkdWNlKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZVtuXTtyZXR1cm4gci5pY29uP3Rbci5pY29uTmFtZV09ci5pY29uOnRbbl09cix0fSx7fSl9ZnVuY3Rpb24gRWkoZSx0KXt2YXIgbj0oYXJndW1lbnRzLmxlbmd0aD4yJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOnt9KS5za2lwSG9va3Mscj1uIT09dm9pZCAwJiZuLGk9VGkodCk7dHlwZW9mIGhpLmhvb2tzLmFkZFBhY2s9PWBmdW5jdGlvbmAmJiFyP2hpLmhvb2tzLmFkZFBhY2soZSxUaSh0KSk6aGkuc3R5bGVzW2VdPVcoVyh7fSxoaS5zdHlsZXNbZV18fHt9KSxpKSxlPT09YGZhc2AmJkVpKGBmYWAsdCl9dmFyIERpPWhpLnN0eWxlcyxPaT1oaS5zaGltcyxraT1PYmplY3Qua2V5cyhGciksQWk9a2kucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09T2JqZWN0LmtleXMoRnJbdF0pLGV9LHt9KSxqaT1udWxsLE1pPXt9LE5pPXt9LFBpPXt9LEZpPXt9LElpPXt9O2Z1bmN0aW9uIExpKGUpe3JldHVybn5Ici5pbmRleE9mKGUpfWZ1bmN0aW9uIFJpKGUsdCl7dmFyIG49dC5zcGxpdChgLWApLHI9blswXSxpPW4uc2xpY2UoMSkuam9pbihgLWApO3JldHVybiByPT09ZSYmaSE9PWBgJiYhTGkoaSk/aTpudWxsfXZhciB6aT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBDaShEaSxmdW5jdGlvbih0LG4scil7cmV0dXJuIHRbcl09Q2kobixlLHt9KSx0fSx7fSl9O01pPWUoZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0WzNdJiYoZVt0WzNdXT1uKSx0WzJdJiZ0WzJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBudW1iZXJgfSkuZm9yRWFjaChmdW5jdGlvbih0KXtlW3QudG9TdHJpbmcoMTYpXT1ufSksZX0pLE5pPWUoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlW25dPW4sdFsyXSYmdFsyXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYH0pLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1ufSksZX0pLElpPWUoZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRbMl07cmV0dXJuIGVbbl09bixyLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1ufSksZX0pO3ZhciB0PWBmYXJgaW4gRGl8fHEuYXV0b0ZldGNoU3ZnLG49Q2koT2ksZnVuY3Rpb24oZSxuKXt2YXIgcj1uWzBdLGk9blsxXSxhPW5bMl07cmV0dXJuIGk9PT1gZmFyYCYmIXQmJihpPWBmYXNgKSx0eXBlb2Ygcj09YHN0cmluZ2AmJihlLm5hbWVzW3JdPXtwcmVmaXg6aSxpY29uTmFtZTphfSksdHlwZW9mIHI9PWBudW1iZXJgJiYoZS51bmljb2Rlc1tyLnRvU3RyaW5nKDE2KV09e3ByZWZpeDppLGljb25OYW1lOmF9KSxlfSx7bmFtZXM6e30sdW5pY29kZXM6e319KTtQaT1uLm5hbWVzLEZpPW4udW5pY29kZXMsamk9SmkocS5zdHlsZURlZmF1bHQse2ZhbWlseTpxLmZhbWlseURlZmF1bHR9KX07WXIoZnVuY3Rpb24oZSl7amk9SmkoZS5zdHlsZURlZmF1bHQse2ZhbWlseTpxLmZhbWlseURlZmF1bHR9KX0pLHppKCk7ZnVuY3Rpb24gQmkoZSx0KXtyZXR1cm4oTWlbZV18fHt9KVt0XX1mdW5jdGlvbiBWaShlLHQpe3JldHVybihOaVtlXXx8e30pW3RdfWZ1bmN0aW9uIEhpKGUsdCl7cmV0dXJuKElpW2VdfHx7fSlbdF19ZnVuY3Rpb24gVWkoZSl7cmV0dXJuIFBpW2VdfHx7cHJlZml4Om51bGwsaWNvbk5hbWU6bnVsbH19ZnVuY3Rpb24gV2koZSl7dmFyIHQ9RmlbZV0sbj1CaShgZmFzYCxlKTtyZXR1cm4gdHx8KG4/e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpufTpudWxsKXx8e3ByZWZpeDpudWxsLGljb25OYW1lOm51bGx9fWZ1bmN0aW9uIEdpKCl7cmV0dXJuIGppfXZhciBLaT1mdW5jdGlvbigpe3JldHVybntwcmVmaXg6bnVsbCxpY29uTmFtZTpudWxsLHJlc3Q6W119fTtmdW5jdGlvbiBxaShlKXt2YXIgdD1LLG49a2kucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09YCR7cS5jc3NQcmVmaXh9LSR7dH1gLGV9LHt9KTtyZXR1cm4gR24uZm9yRWFjaChmdW5jdGlvbihyKXsoZS5pbmNsdWRlcyhuW3JdKXx8ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBBaVtyXS5pbmNsdWRlcyhlKX0pKSYmKHQ9cil9KSx0fWZ1bmN0aW9uIEppKGUpe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30pLmZhbWlseSxuPXQ9PT12b2lkIDA/Szp0LHI9anJbbl1bZV07aWYobj09PVp0JiYhZSlyZXR1cm5gZmFkYDt2YXIgaT1OcltuXVtlXXx8TnJbbl1bcl0sYT1lIGluIGhpLnN0eWxlcz9lOm51bGw7cmV0dXJuIGl8fGF8fG51bGx9ZnVuY3Rpb24gWWkoZSl7dmFyIHQ9W10sbj1udWxsO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHI9UmkocS5jc3NQcmVmaXgsZSk7cj9uPXI6ZSYmdC5wdXNoKGUpfSkse2ljb25OYW1lOm4scmVzdDp0fX1mdW5jdGlvbiBYaShlKXtyZXR1cm4gZS5zb3J0KCkuZmlsdGVyKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbi5pbmRleE9mKGUpPT09dH0pfXZhciBaaT1sci5jb25jYXQoWG4pO2Z1bmN0aW9uIFFpKGUpe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30pLnNraXBMb29rdXBzLG49dCE9PXZvaWQgMCYmdCxyPW51bGwsaT1YaShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gWmkuaW5jbHVkZXMoZSl9KSksYT1YaShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hWmkuaW5jbHVkZXMoZSl9KSksbz1EdChpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gcj1lLCFYdC5pbmNsdWRlcyhlKX0pLDEpWzBdLHM9bz09PXZvaWQgMD9udWxsOm8sYz1xaShpKSxsPVcoVyh7fSxZaShhKSkse30se3ByZWZpeDpKaShzLHtmYW1pbHk6Y30pfSk7cmV0dXJuIFcoVyhXKHt9LGwpLG5hKHt2YWx1ZXM6ZSxmYW1pbHk6YyxzdHlsZXM6RGksY29uZmlnOnEsY2Fub25pY2FsOmwsZ2l2ZW5QcmVmaXg6cn0pKSwkaShuLHIsbCkpfWZ1bmN0aW9uICRpKGUsdCxuKXt2YXIgcj1uLnByZWZpeCxpPW4uaWNvbk5hbWU7aWYoZXx8IXJ8fCFpKXJldHVybntwcmVmaXg6cixpY29uTmFtZTppfTt2YXIgYT10PT09YGZhYD9VaShpKTp7fSxvPUhpKHIsaSk7cmV0dXJuIGk9YS5pY29uTmFtZXx8b3x8aSxyPWEucHJlZml4fHxyLHI9PT1gZmFyYCYmIURpLmZhciYmRGkuZmFzJiYhcS5hdXRvRmV0Y2hTdmcmJihyPWBmYXNgKSx7cHJlZml4OnIsaWNvbk5hbWU6aX19dmFyIGVhPUduLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PUt8fGUhPT1adH0pLHRhPU9iamVjdC5rZXlzKGNyKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1LfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3Qua2V5cyhjcltlXSl9KS5mbGF0KCk7ZnVuY3Rpb24gbmEoZSl7dmFyIHQ9ZS52YWx1ZXMsbj1lLmZhbWlseSxyPWUuY2Fub25pY2FsLGk9ZS5naXZlblByZWZpeCxhPWk9PT12b2lkIDA/YGA6aSxvPWUuc3R5bGVzLHM9bz09PXZvaWQgMD97fTpvLGM9ZS5jb25maWcsbD1jPT09dm9pZCAwP3t9OmMsdT1uPT09WnQsZD10LmluY2x1ZGVzKGBmYS1kdW90b25lYCl8fHQuaW5jbHVkZXMoYGZhZGApLGY9bC5mYW1pbHlEZWZhdWx0PT09YGR1b3RvbmVgLHA9ci5wcmVmaXg9PT1gZmFkYHx8ci5wcmVmaXg9PT1gZmEtZHVvdG9uZWA7cmV0dXJuIXUmJihkfHxmfHxwKSYmKHIucHJlZml4PWBmYWRgKSwodC5pbmNsdWRlcyhgZmEtYnJhbmRzYCl8fHQuaW5jbHVkZXMoYGZhYmApKSYmKHIucHJlZml4PWBmYWJgKSwhci5wcmVmaXgmJmVhLmluY2x1ZGVzKG4pJiYoT2JqZWN0LmtleXMocykuZmluZChmdW5jdGlvbihlKXtyZXR1cm4gdGEuaW5jbHVkZXMoZSl9KXx8bC5hdXRvRmV0Y2hTdmcpJiYoci5wcmVmaXg9Sm4uZ2V0KG4pLmRlZmF1bHRTaG9ydFByZWZpeElkLHIuaWNvbk5hbWU9SGkoci5wcmVmaXgsci5pY29uTmFtZSl8fHIuaWNvbk5hbWUpLChyLnByZWZpeD09PWBmYWB8fGE9PT1gZmFgKSYmKHIucHJlZml4PUdpKCl8fGBmYXNgKSxyfXZhciByYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt2dCh0aGlzLGUpLHRoaXMuZGVmaW5pdGlvbnM9e319cmV0dXJuIGJ0KGUsW3trZXk6YGFkZGAsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9Wy4uLmFyZ3VtZW50c10ucmVkdWNlKHRoaXMuX3B1bGxEZWZpbml0aW9ucyx7fSk7T2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXtlLmRlZmluaXRpb25zW25dPVcoVyh7fSxlLmRlZmluaXRpb25zW25dfHx7fSksdFtuXSksRWkobix0W25dKTt2YXIgcj1GcltLXVtuXTtyJiZFaShyLHRbbl0pLHppKCl9KX19LHtrZXk6YHJlc2V0YCx2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZGVmaW5pdGlvbnM9e319fSx7a2V5OmBfcHVsbERlZmluaXRpb25zYCx2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXQucHJlZml4JiZ0Lmljb25OYW1lJiZ0Lmljb24/ezA6dH06dDtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKHQpe3ZhciByPW5bdF0saT1yLnByZWZpeCxhPXIuaWNvbk5hbWUsbz1yLmljb24scz1vWzJdO2VbaV18fChlW2ldPXt9KSxzLmxlbmd0aD4wJiZzLmZvckVhY2goZnVuY3Rpb24odCl7dHlwZW9mIHQ9PWBzdHJpbmdgJiYoZVtpXVt0XT1vKX0pLGVbaV1bYV09b30pLGV9fV0pfSgpLGlhPVtdLGFhPXt9LG9hPXt9LHNhPU9iamVjdC5rZXlzKG9hKTtmdW5jdGlvbiBjYShlLHQpe3ZhciBuPXQubWl4b3V0c1RvO3JldHVybiBpYT1lLGFhPXt9LE9iamVjdC5rZXlzKG9hKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3NhLmluZGV4T2YoZSk9PT0tMSYmZGVsZXRlIG9hW2VdfSksaWEuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLm1peG91dD9lLm1peG91dCgpOnt9O2lmKE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24oZSl7dHlwZW9mIHRbZV09PWBmdW5jdGlvbmAmJihuW2VdPXRbZV0pLGp0KHRbZV0pPT09YG9iamVjdGAmJk9iamVjdC5rZXlzKHRbZV0pLmZvckVhY2goZnVuY3Rpb24ocil7bltlXXx8KG5bZV09e30pLG5bZV1bcl09dFtlXVtyXX0pfSksZS5ob29rcyl7dmFyIHI9ZS5ob29rcygpO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7YWFbZV18fChhYVtlXT1bXSksYWFbZV0ucHVzaChyW2VdKX0pfWUucHJvdmlkZXMmJmUucHJvdmlkZXMob2EpfSksbn1mdW5jdGlvbiBsYShlLHQpe3ZhciBuPVsuLi5hcmd1bWVudHNdLnNsaWNlKDIpO3JldHVybihhYVtlXXx8W10pLmZvckVhY2goZnVuY3Rpb24oZSl7dD1lLmFwcGx5KG51bGwsW3RdLmNvbmNhdChuKSl9KSx0fWZ1bmN0aW9uIHVhKGUpe3ZhciB0PVsuLi5hcmd1bWVudHNdLnNsaWNlKDEpOyhhYVtlXXx8W10pLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5hcHBseShudWxsLHQpfSl9ZnVuY3Rpb24gZGEoKXt2YXIgZT1hcmd1bWVudHNbMF0sdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7cmV0dXJuIG9hW2VdP29hW2VdLmFwcGx5KG51bGwsdCk6dm9pZCAwfWZ1bmN0aW9uIGZhKGUpe2UucHJlZml4PT09YGZhYCYmKGUucHJlZml4PWBmYXNgKTt2YXIgdD1lLmljb25OYW1lLG49ZS5wcmVmaXh8fEdpKCk7aWYodClyZXR1cm4gdD1IaShuLHQpfHx0LHhpKHBhLmRlZmluaXRpb25zLG4sdCl8fHhpKGhpLnN0eWxlcyxuLHQpfXZhciBwYT1uZXcgcmEsSj17bm9BdXRvOmZ1bmN0aW9uKCl7cS5hdXRvUmVwbGFjZVN2Zz0hMSxxLm9ic2VydmVNdXRhdGlvbnM9ITEsdWEoYG5vQXV0b2ApfSxjb25maWc6cSxkb206e2kyc3ZnOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9O3JldHVybiBVdD8odWEoYGJlZm9yZUkyc3ZnYCxlKSxkYShgcHNldWRvRWxlbWVudHMyc3ZnYCxlKSxkYShgaTJzdmdgLGUpKTpQcm9taXNlLnJlamVjdChFcnJvcihgT3BlcmF0aW9uIHJlcXVpcmVzIGEgRE9NIG9mIHNvbWUga2luZC5gKSl9LHdhdGNoOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9LHQ9ZS5hdXRvUmVwbGFjZVN2Z1Jvb3Q7cS5hdXRvUmVwbGFjZVN2Zz09PSExJiYocS5hdXRvUmVwbGFjZVN2Zz0hMCkscS5vYnNlcnZlTXV0YXRpb25zPSEwLHlpKGZ1bmN0aW9uKCl7bWEoe2F1dG9SZXBsYWNlU3ZnUm9vdDp0fSksdWEoYHdhdGNoYCxlKX0pfX0scGFyc2U6e2ljb246ZnVuY3Rpb24oZSl7aWYoZT09PW51bGwpcmV0dXJuIG51bGw7aWYoanQoZSk9PT1gb2JqZWN0YCYmZS5wcmVmaXgmJmUuaWNvbk5hbWUpcmV0dXJue3ByZWZpeDplLnByZWZpeCxpY29uTmFtZTpIaShlLnByZWZpeCxlLmljb25OYW1lKXx8ZS5pY29uTmFtZX07aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg9PT0yKXt2YXIgdD1lWzFdLmluZGV4T2YoYGZhLWApPT09MD9lWzFdLnNsaWNlKDMpOmVbMV0sbj1KaShlWzBdKTtyZXR1cm57cHJlZml4Om4saWNvbk5hbWU6SGkobix0KXx8dH19aWYodHlwZW9mIGU9PWBzdHJpbmdgJiYoZS5pbmRleE9mKGAke3EuY3NzUHJlZml4fS1gKT4tMXx8ZS5tYXRjaChMcikpKXt2YXIgcj1RaShlLnNwbGl0KGAgYCkse3NraXBMb29rdXBzOiEwfSk7cmV0dXJue3ByZWZpeDpyLnByZWZpeHx8R2koKSxpY29uTmFtZTpIaShyLnByZWZpeCxyLmljb25OYW1lKXx8ci5pY29uTmFtZX19aWYodHlwZW9mIGU9PWBzdHJpbmdgKXt2YXIgaT1HaSgpO3JldHVybntwcmVmaXg6aSxpY29uTmFtZTpIaShpLGUpfHxlfX19fSxsaWJyYXJ5OnBhLGZpbmRJY29uRGVmaW5pdGlvbjpmYSx0b0h0bWw6Yml9LG1hPWZ1bmN0aW9uKCl7dmFyIGU9KGFyZ3VtZW50cy5sZW5ndGg+MCYmYXJndW1lbnRzWzBdIT09dm9pZCAwP2FyZ3VtZW50c1swXTp7fSkuYXV0b1JlcGxhY2VTdmdSb290LHQ9ZT09PXZvaWQgMD9HOmU7KE9iamVjdC5rZXlzKGhpLnN0eWxlcykubGVuZ3RoPjB8fHEuYXV0b0ZldGNoU3ZnKSYmVXQmJnEuYXV0b1JlcGxhY2VTdmcmJkouZG9tLmkyc3ZnKHtub2RlOnR9KX07ZnVuY3Rpb24gaGEoZSx0KXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImFic3RyYWN0Iix7Z2V0OnR9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiaHRtbCIse2dldDpmdW5jdGlvbigpe3JldHVybiBlLmFic3RyYWN0Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gYmkoZSl9KX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwibm9kZSIse2dldDpmdW5jdGlvbigpe2lmKFV0KXt2YXIgdD1HLmNyZWF0ZUVsZW1lbnQoYGRpdmApO3JldHVybiB0LmlubmVySFRNTD1lLmh0bWwsdC5jaGlsZHJlbn19fSksZX1mdW5jdGlvbiBnYShlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5tYWluLHI9ZS5tYXNrLGk9ZS5hdHRyaWJ1dGVzLGE9ZS5zdHlsZXMsbz1lLnRyYW5zZm9ybTtpZihvaShvKSYmbi5mb3VuZCYmIXIuZm91bmQpe3ZhciBzPXt4Om4ud2lkdGgvbi5oZWlnaHQvMix5Oi41fTtpLnN0eWxlPWFpKFcoVyh7fSxhKSx7fSx7InRyYW5zZm9ybS1vcmlnaW4iOmAke3MueCtvLngvMTZ9ZW0gJHtzLnkrby55LzE2fWVtYH0pKX1yZXR1cm5be3RhZzpgc3ZnYCxhdHRyaWJ1dGVzOmksY2hpbGRyZW46dH1dfWZ1bmN0aW9uIF9hKGUpe3ZhciB0PWUucHJlZml4LG49ZS5pY29uTmFtZSxyPWUuY2hpbGRyZW4saT1lLmF0dHJpYnV0ZXMsYT1lLnN5bWJvbCxvPWE9PT0hMD9gJHt0fS0ke3EuY3NzUHJlZml4fS0ke259YDphO3JldHVyblt7dGFnOmBzdmdgLGF0dHJpYnV0ZXM6e3N0eWxlOmBkaXNwbGF5OiBub25lO2B9LGNoaWxkcmVuOlt7dGFnOmBzeW1ib2xgLGF0dHJpYnV0ZXM6VyhXKHt9LGkpLHt9LHtpZDpvfSksY2hpbGRyZW46cn1dfV19ZnVuY3Rpb24gdmEoZSl7cmV0dXJuW2BhcmlhLWxhYmVsYCxgYXJpYS1sYWJlbGxlZGJ5YCxgdGl0bGVgLGByb2xlYF0uc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdCBpbiBlfSl9ZnVuY3Rpb24geWEoZSl7dmFyIHQ9ZS5pY29ucyxuPXQubWFpbixyPXQubWFzayxpPWUucHJlZml4LGE9ZS5pY29uTmFtZSxvPWUudHJhbnNmb3JtLHM9ZS5zeW1ib2wsYz1lLm1hc2tJZCxsPWUuZXh0cmEsdT1lLndhdGNoYWJsZSxkPXUhPT12b2lkIDAmJnUsZj1yLmZvdW5kP3I6bixwPWYud2lkdGgsbT1mLmhlaWdodCxoPVtxLnJlcGxhY2VtZW50Q2xhc3MsYT9gJHtxLmNzc1ByZWZpeH0tJHthfWA6YGBdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gbC5jbGFzc2VzLmluZGV4T2YoZSk9PT0tMX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PWBgfHwhIWV9KS5jb25jYXQobC5jbGFzc2VzKS5qb2luKGAgYCksZz17Y2hpbGRyZW46W10sYXR0cmlidXRlczpXKFcoe30sbC5hdHRyaWJ1dGVzKSx7fSx7ImRhdGEtcHJlZml4IjppLCJkYXRhLWljb24iOmEsY2xhc3M6aCxyb2xlOmwuYXR0cmlidXRlcy5yb2xlfHxgaW1nYCx2aWV3Qm94OmAwIDAgJHtwfSAke219YH0pfTshdmEobC5hdHRyaWJ1dGVzKSYmIWwuYXR0cmlidXRlc1tgYXJpYS1oaWRkZW5gXSYmKGcuYXR0cmlidXRlc1tgYXJpYS1oaWRkZW5gXT1gdHJ1ZWApLGQmJihnLmF0dHJpYnV0ZXNbeXJdPWBgKTt2YXIgXz1XKFcoe30sZykse30se3ByZWZpeDppLGljb25OYW1lOmEsbWFpbjpuLG1hc2s6cixtYXNrSWQ6Yyx0cmFuc2Zvcm06byxzeW1ib2w6cyxzdHlsZXM6Vyh7fSxsLnN0eWxlcyl9KSx2PXIuZm91bmQmJm4uZm91bmQ/ZGEoYGdlbmVyYXRlQWJzdHJhY3RNYXNrYCxfKXx8e2NoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319OmRhKGBnZW5lcmF0ZUFic3RyYWN0SWNvbmAsXyl8fHtjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOnt9fSx5PXYuY2hpbGRyZW4sYj12LmF0dHJpYnV0ZXM7cmV0dXJuIF8uY2hpbGRyZW49eSxfLmF0dHJpYnV0ZXM9YixzP19hKF8pOmdhKF8pfWZ1bmN0aW9uIGJhKGUpe3ZhciB0PWUuY29udGVudCxuPWUud2lkdGgscj1lLmhlaWdodCxpPWUudHJhbnNmb3JtLGE9ZS5leHRyYSxvPWUud2F0Y2hhYmxlLHM9byE9PXZvaWQgMCYmbyxjPVcoVyh7fSxhLmF0dHJpYnV0ZXMpLHt9LHtjbGFzczphLmNsYXNzZXMuam9pbihgIGApfSk7cyYmKGNbeXJdPWBgKTt2YXIgbD1XKHt9LGEuc3R5bGVzKTtvaShpKSYmKGwudHJhbnNmb3JtPWNpKHt0cmFuc2Zvcm06aSxzdGFydENlbnRlcmVkOiEwLHdpZHRoOm4saGVpZ2h0OnJ9KSxsW2Atd2Via2l0LXRyYW5zZm9ybWBdPWwudHJhbnNmb3JtKTt2YXIgdT1haShsKTt1Lmxlbmd0aD4wJiYoYy5zdHlsZT11KTt2YXIgZD1bXTtyZXR1cm4gZC5wdXNoKHt0YWc6YHNwYW5gLGF0dHJpYnV0ZXM6YyxjaGlsZHJlbjpbdF19KSxkfWZ1bmN0aW9uIHhhKGUpe3ZhciB0PWUuY29udGVudCxuPWUuZXh0cmEscj1XKFcoe30sbi5hdHRyaWJ1dGVzKSx7fSx7Y2xhc3M6bi5jbGFzc2VzLmpvaW4oYCBgKX0pLGk9YWkobi5zdHlsZXMpO2kubGVuZ3RoPjAmJihyLnN0eWxlPWkpO3ZhciBhPVtdO3JldHVybiBhLnB1c2goe3RhZzpgc3BhbmAsYXR0cmlidXRlczpyLGNoaWxkcmVuOlt0XX0pLGF9dmFyIFNhPWhpLnN0eWxlcztmdW5jdGlvbiBDYShlKXt2YXIgdD1lWzBdLG49ZVsxXSxyPUR0KGUuc2xpY2UoNCksMSlbMF0saT1udWxsO3JldHVybiBpPUFycmF5LmlzQXJyYXkocik/e3RhZzpgZ2AsYXR0cmlidXRlczp7Y2xhc3M6YCR7cS5jc3NQcmVmaXh9LSR7VnIuR1JPVVB9YH0sY2hpbGRyZW46W3t0YWc6YHBhdGhgLGF0dHJpYnV0ZXM6e2NsYXNzOmAke3EuY3NzUHJlZml4fS0ke1ZyLlNFQ09OREFSWX1gLGZpbGw6YGN1cnJlbnRDb2xvcmAsZDpyWzBdfX0se3RhZzpgcGF0aGAsYXR0cmlidXRlczp7Y2xhc3M6YCR7cS5jc3NQcmVmaXh9LSR7VnIuUFJJTUFSWX1gLGZpbGw6YGN1cnJlbnRDb2xvcmAsZDpyWzFdfX1dfTp7dGFnOmBwYXRoYCxhdHRyaWJ1dGVzOntmaWxsOmBjdXJyZW50Q29sb3JgLGQ6cn19LHtmb3VuZDohMCx3aWR0aDp0LGhlaWdodDpuLGljb246aX19dmFyIHdhPXtmb3VuZDohMSx3aWR0aDo1MTIsaGVpZ2h0OjUxMn07ZnVuY3Rpb24gVGEoZSx0KXshT3ImJiFxLnNob3dNaXNzaW5nSWNvbnMmJmUmJmNvbnNvbGUuZXJyb3IoYEljb24gd2l0aCBuYW1lICIke2V9IiBhbmQgcHJlZml4ICIke3R9IiBpcyBtaXNzaW5nLmApfWZ1bmN0aW9uIEVhKGUsdCl7dmFyIG49dDtyZXR1cm4gdD09PWBmYWAmJnEuc3R5bGVEZWZhdWx0IT09bnVsbCYmKHQ9R2koKSksbmV3IFByb21pc2UoZnVuY3Rpb24ocixpKXtpZihuPT09YGZhYCl7dmFyIGE9VWkoZSl8fHt9O2U9YS5pY29uTmFtZXx8ZSx0PWEucHJlZml4fHx0fWlmKGUmJnQmJlNhW3RdJiZTYVt0XVtlXSl7dmFyIG89U2FbdF1bZV07cmV0dXJuIHIoQ2EobykpfVRhKGUsdCkscihXKFcoe30sd2EpLHt9LHtpY29uOnEuc2hvd01pc3NpbmdJY29ucyYmZSYmZGEoYG1pc3NpbmdJY29uQWJzdHJhY3RgKXx8e319KSl9KX12YXIgRGE9ZnVuY3Rpb24oKXt9LE9hPXEubWVhc3VyZVBlcmZvcm1hbmNlJiZIdCYmSHQubWFyayYmSHQubWVhc3VyZT9IdDp7bWFyazpEYSxtZWFzdXJlOkRhfSxrYT1gRkEgIjcuMy4xImAsQWE9ZnVuY3Rpb24oZSl7cmV0dXJuIE9hLm1hcmsoYCR7a2F9ICR7ZX0gYmVnaW5zYCksZnVuY3Rpb24oKXtyZXR1cm4gamEoZSl9fSxqYT1mdW5jdGlvbihlKXtPYS5tYXJrKGAke2thfSAke2V9IGVuZHNgKSxPYS5tZWFzdXJlKGAke2thfSAke2V9YCxgJHtrYX0gJHtlfSBiZWdpbnNgLGAke2thfSAke2V9IGVuZHNgKX0sTWE9e2JlZ2luOkFhLGVuZDpqYX0sTmE9ZnVuY3Rpb24oKXt9O2Z1bmN0aW9uIFBhKGUpe3JldHVybiB0eXBlb2YoZS5nZXRBdHRyaWJ1dGU/ZS5nZXRBdHRyaWJ1dGUoeXIpOm51bGwpPT1gc3RyaW5nYH1mdW5jdGlvbiBGYShlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZT9lLmdldEF0dHJpYnV0ZShTcik6bnVsbCxuPWUuZ2V0QXR0cmlidXRlP2UuZ2V0QXR0cmlidXRlKENyKTpudWxsO3JldHVybiB0JiZufWZ1bmN0aW9uIElhKGUpe3JldHVybiBlJiZlLmNsYXNzTGlzdCYmZS5jbGFzc0xpc3QuY29udGFpbnMmJmUuY2xhc3NMaXN0LmNvbnRhaW5zKHEucmVwbGFjZW1lbnRDbGFzcyl9ZnVuY3Rpb24gTGEoKXtyZXR1cm4gcS5hdXRvUmVwbGFjZVN2Zz09PSEwP0hhLnJlcGxhY2U6SGFbcS5hdXRvUmVwbGFjZVN2Z118fEhhLnJlcGxhY2V9ZnVuY3Rpb24gUmEoZSl7cmV0dXJuIEcuY3JlYXRlRWxlbWVudE5TKGBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z2AsZSl9ZnVuY3Rpb24gemEoZSl7cmV0dXJuIEcuY3JlYXRlRWxlbWVudChlKX1mdW5jdGlvbiBCYShlKXt2YXIgdD0oYXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9KS5jZUZuLG49dD09PXZvaWQgMD9lLnRhZz09PWBzdmdgP1JhOnphOnQ7aWYodHlwZW9mIGU9PWBzdHJpbmdgKXJldHVybiBHLmNyZWF0ZVRleHROb2RlKGUpO3ZhciByPW4oZS50YWcpO3JldHVybiBPYmplY3Qua2V5cyhlLmF0dHJpYnV0ZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Iuc2V0QXR0cmlidXRlKHQsZS5hdHRyaWJ1dGVzW3RdKX0pLChlLmNoaWxkcmVufHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXtyLmFwcGVuZENoaWxkKEJhKGUse2NlRm46bn0pKX0pLHJ9ZnVuY3Rpb24gVmEoZSl7dmFyIHQ9YCAke2Uub3V0ZXJIVE1MfSBgO3JldHVybiB0PWAke3R9Rm9udCBBd2Vzb21lIGZvbnRhd2Vzb21lLmNvbSBgLHR9dmFyIEhhPXtyZXBsYWNlOmZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07aWYodC5wYXJlbnROb2RlKXtpZihlWzFdLmZvckVhY2goZnVuY3Rpb24oZSl7dC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShCYShlKSx0KX0pLHQuZ2V0QXR0cmlidXRlKHlyKT09PW51bGwmJnEua2VlcE9yaWdpbmFsU291cmNlKXt2YXIgbj1HLmNyZWF0ZUNvbW1lbnQoVmEodCkpO3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobix0KX1lbHNlIHQucmVtb3ZlKCl9fSxuZXN0OmZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0sbj1lWzFdO2lmKH5uaSh0KS5pbmRleE9mKHEucmVwbGFjZW1lbnRDbGFzcykpcmV0dXJuIEhhLnJlcGxhY2UoZSk7dmFyIHI9UmVnRXhwKGAke3EuY3NzUHJlZml4fS0uKmApO2lmKGRlbGV0ZSBuWzBdLmF0dHJpYnV0ZXMuaWQsblswXS5hdHRyaWJ1dGVzLmNsYXNzKXt2YXIgaT1uWzBdLmF0dHJpYnV0ZXMuY2xhc3Muc3BsaXQoYCBgKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD09PXEucmVwbGFjZW1lbnRDbGFzc3x8dC5tYXRjaChyKT9lLnRvU3ZnLnB1c2godCk6ZS50b05vZGUucHVzaCh0KSxlfSx7dG9Ob2RlOltdLHRvU3ZnOltdfSk7blswXS5hdHRyaWJ1dGVzLmNsYXNzPWkudG9Tdmcuam9pbihgIGApLGkudG9Ob2RlLmxlbmd0aD09PTA/dC5yZW1vdmVBdHRyaWJ1dGUoYGNsYXNzYCk6dC5zZXRBdHRyaWJ1dGUoYGNsYXNzYCxpLnRvTm9kZS5qb2luKGAgYCkpfXZhciBhPW4ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBiaShlKX0pLmpvaW4oYApgKTt0LnNldEF0dHJpYnV0ZSh5cixgYCksdC5pbm5lckhUTUw9YX19O2Z1bmN0aW9uIFVhKGUpe2UoKX1mdW5jdGlvbiBXYShlLHQpe3ZhciBuPXR5cGVvZiB0PT1gZnVuY3Rpb25gP3Q6TmE7aWYoZS5sZW5ndGg9PT0wKW4oKTtlbHNle3ZhciByPVVhO3EubXV0YXRlQXBwcm9hY2g9PT1UciYmKHI9QnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxVYSkscihmdW5jdGlvbigpe3ZhciB0PUxhKCkscj1NYS5iZWdpbihgbXV0YXRlYCk7ZS5tYXAodCkscigpLG4oKX0pfX12YXIgR2E9ITE7ZnVuY3Rpb24gS2EoKXtHYT0hMH1mdW5jdGlvbiBxYSgpe0dhPSExfXZhciBKYT1udWxsO2Z1bmN0aW9uIFlhKGUpe2lmKFZ0JiZxLm9ic2VydmVNdXRhdGlvbnMpe3ZhciB0PWUudHJlZUNhbGxiYWNrLG49dD09PXZvaWQgMD9OYTp0LHI9ZS5ub2RlQ2FsbGJhY2ssaT1yPT09dm9pZCAwP05hOnIsYT1lLnBzZXVkb0VsZW1lbnRzQ2FsbGJhY2ssbz1hPT09dm9pZCAwP05hOmEscz1lLm9ic2VydmVNdXRhdGlvbnNSb290LGM9cz09PXZvaWQgMD9HOnM7SmE9bmV3IFZ0KGZ1bmN0aW9uKGUpe2lmKCFHYSl7dmFyIHQ9R2koKTt0aShlKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUudHlwZT09PWBjaGlsZExpc3RgJiZlLmFkZGVkTm9kZXMubGVuZ3RoPjAmJiFQYShlLmFkZGVkTm9kZXNbMF0pJiYocS5zZWFyY2hQc2V1ZG9FbGVtZW50cyYmbyhlLnRhcmdldCksbihlLnRhcmdldCkpLGUudHlwZT09PWBhdHRyaWJ1dGVzYCYmZS50YXJnZXQucGFyZW50Tm9kZSYmcS5zZWFyY2hQc2V1ZG9FbGVtZW50cyYmbyhbZS50YXJnZXRdLCEwKSxlLnR5cGU9PT1gYXR0cmlidXRlc2AmJlBhKGUudGFyZ2V0KSYmfkJyLmluZGV4T2YoZS5hdHRyaWJ1dGVOYW1lKSl7aWYoZS5hdHRyaWJ1dGVOYW1lPT09YGNsYXNzYCYmRmEoZS50YXJnZXQpKXt2YXIgcj1RaShuaShlLnRhcmdldCkpLGE9ci5wcmVmaXgscz1yLmljb25OYW1lO2UudGFyZ2V0LnNldEF0dHJpYnV0ZShTcixhfHx0KSxzJiZlLnRhcmdldC5zZXRBdHRyaWJ1dGUoQ3Iscyl9ZWxzZSBJYShlLnRhcmdldCkmJmkoZS50YXJnZXQpfX0pfX0pLFV0JiZKYS5vYnNlcnZlKGMse2NoaWxkTGlzdDohMCxhdHRyaWJ1dGVzOiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pfX1mdW5jdGlvbiBYYSgpe0phJiZKYS5kaXNjb25uZWN0KCl9ZnVuY3Rpb24gWmEoZSl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUoYHN0eWxlYCksbj1bXTtyZXR1cm4gdCYmKG49dC5zcGxpdChgO2ApLnJlZHVjZShmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3BsaXQoYDpgKSxyPW5bMF0saT1uLnNsaWNlKDEpO3JldHVybiByJiZpLmxlbmd0aD4wJiYoZVtyXT1pLmpvaW4oYDpgKS50cmltKCkpLGV9LHt9KSksbn1mdW5jdGlvbiBRYShlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZShgZGF0YS1wcmVmaXhgKSxuPWUuZ2V0QXR0cmlidXRlKGBkYXRhLWljb25gKSxyPWUuaW5uZXJUZXh0PT09dm9pZCAwP2BgOmUuaW5uZXJUZXh0LnRyaW0oKSxpPVFpKG5pKGUpKTtyZXR1cm4gaS5wcmVmaXh8fD1HaSgpLHQmJm4mJihpLnByZWZpeD10LGkuaWNvbk5hbWU9biksaS5pY29uTmFtZSYmaS5wcmVmaXg/aTooaS5wcmVmaXgmJnIubGVuZ3RoPjAmJihpLmljb25OYW1lPVZpKGkucHJlZml4LGUuaW5uZXJUZXh0KXx8QmkoaS5wcmVmaXgsd2koZS5pbm5lclRleHQpKSksIWkuaWNvbk5hbWUmJnEuYXV0b0ZldGNoU3ZnJiZlLmZpcnN0Q2hpbGQmJmUuZmlyc3RDaGlsZC5ub2RlVHlwZT09PU5vZGUuVEVYVF9OT0RFJiYoaS5pY29uTmFtZT1lLmZpcnN0Q2hpbGQuZGF0YSksaSl9ZnVuY3Rpb24gJGEoZSl7cmV0dXJuIHRpKGUuYXR0cmlidXRlcykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubmFtZSE9PWBjbGFzc2AmJmUubmFtZSE9PWBzdHlsZWAmJihlW3QubmFtZV09dC52YWx1ZSksZX0se30pfWZ1bmN0aW9uIGVvKCl7cmV0dXJue2ljb25OYW1lOm51bGwscHJlZml4Om51bGwsdHJhbnNmb3JtOlpyLHN5bWJvbDohMSxtYXNrOntpY29uTmFtZTpudWxsLHByZWZpeDpudWxsLHJlc3Q6W119LG1hc2tJZDpudWxsLGV4dHJhOntjbGFzc2VzOltdLHN0eWxlczp7fSxhdHRyaWJ1dGVzOnt9fX19ZnVuY3Rpb24gdG8oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOntzdHlsZVBhcnNlcjohMH0sbj1RYShlKSxyPW4uaWNvbk5hbWUsaT1uLnByZWZpeCxhPW4ucmVzdCxvPSRhKGUpLHM9bGEoYHBhcnNlTm9kZUF0dHJpYnV0ZXNgLHt9LGUpO3JldHVybiBXKHtpY29uTmFtZTpyLHByZWZpeDppLHRyYW5zZm9ybTpacixtYXNrOntpY29uTmFtZTpudWxsLHByZWZpeDpudWxsLHJlc3Q6W119LG1hc2tJZDpudWxsLHN5bWJvbDohMSxleHRyYTp7Y2xhc3NlczphLHN0eWxlczp0LnN0eWxlUGFyc2VyP1phKGUpOltdLGF0dHJpYnV0ZXM6b319LHMpfXZhciBubz1oaS5zdHlsZXM7ZnVuY3Rpb24gcm8oZSl7dmFyIHQ9cS5hdXRvUmVwbGFjZVN2Zz09PWBuZXN0YD90byhlLHtzdHlsZVBhcnNlcjohMX0pOnRvKGUpO3JldHVybn50LmV4dHJhLmNsYXNzZXMuaW5kZXhPZihScik/ZGEoYGdlbmVyYXRlTGF5ZXJzVGV4dGAsZSx0KTpkYShgZ2VuZXJhdGVTdmdSZXBsYWNlbWVudE11dGF0aW9uYCxlLHQpfWZ1bmN0aW9uIGlvKCl7cmV0dXJuW10uY29uY2F0KE90KFhuKSxPdChscikpfWZ1bmN0aW9uIGFvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO2lmKCFVdClyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7dmFyIG49Ry5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LHI9ZnVuY3Rpb24oZSl7cmV0dXJuIG4uYWRkKGAke3dyfS0ke2V9YCl9LGk9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ucmVtb3ZlKGAke3dyfS0ke2V9YCl9LGE9cS5hdXRvRmV0Y2hTdmc/aW8oKTpYdC5jb25jYXQoT2JqZWN0LmtleXMobm8pKTthLmluY2x1ZGVzKGBmYWApfHxhLnB1c2goYGZhYCk7dmFyIG89W2AuJHtScn06bm90KFske3lyfV0pYF0uY29uY2F0KGEubWFwKGZ1bmN0aW9uKGUpe3JldHVybmAuJHtlfTpub3QoWyR7eXJ9XSlgfSkpLmpvaW4oYCwgYCk7aWYoby5sZW5ndGg9PT0wKXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2YXIgcz1bXTt0cnl7cz10aShlLnF1ZXJ5U2VsZWN0b3JBbGwobykpfWNhdGNoe31pZihzLmxlbmd0aD4wKXIoYHBlbmRpbmdgKSxpKGBjb21wbGV0ZWApO2Vsc2UgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciBjPU1hLmJlZ2luKGBvblRyZWVgKSxsPXMucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dHJ5e3ZhciBuPXJvKHQpO24mJmUucHVzaChuKX1jYXRjaChlKXtPcnx8ZS5uYW1lPT09YE1pc3NpbmdJY29uYCYmY29uc29sZS5lcnJvcihlKX1yZXR1cm4gZX0sW10pO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLG4pe1Byb21pc2UuYWxsKGwpLnRoZW4oZnVuY3Rpb24obil7V2EobixmdW5jdGlvbigpe3IoYGFjdGl2ZWApLHIoYGNvbXBsZXRlYCksaShgcGVuZGluZ2ApLHR5cGVvZiB0PT1gZnVuY3Rpb25gJiZ0KCksYygpLGUoKX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7YygpLG4oZSl9KX0pfWZ1bmN0aW9uIG9vKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTpudWxsO3JvKGUpLnRoZW4oZnVuY3Rpb24oZSl7ZSYmV2EoW2VdLHQpfSl9ZnVuY3Rpb24gc28oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxyPSh0fHx7fSkuaWNvbj90OmZhKHR8fHt9KSxpPW4ubWFzaztyZXR1cm4gaSYmPShpfHx7fSkuaWNvbj9pOmZhKGl8fHt9KSxlKHIsVyhXKHt9LG4pLHt9LHttYXNrOml9KSl9fXZhciBjbz1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sbj10LnRyYW5zZm9ybSxyPW49PT12b2lkIDA/WnI6bixpPXQuc3ltYm9sLGE9aSE9PXZvaWQgMCYmaSxvPXQubWFzayxzPW89PT12b2lkIDA/bnVsbDpvLGM9dC5tYXNrSWQsbD1jPT09dm9pZCAwP251bGw6Yyx1PXQuY2xhc3NlcyxkPXU9PT12b2lkIDA/W106dSxmPXQuYXR0cmlidXRlcyxwPWY9PT12b2lkIDA/e306ZixtPXQuc3R5bGVzLGg9bT09PXZvaWQgMD97fTptO2lmKGUpe3ZhciBnPWUucHJlZml4LF89ZS5pY29uTmFtZSx2PWUuaWNvbjtyZXR1cm4gaGEoVyh7dHlwZTpgaWNvbmB9LGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHVhKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHtpY29uRGVmaW5pdGlvbjplLHBhcmFtczp0fSkseWEoe2ljb25zOnttYWluOkNhKHYpLG1hc2s6cz9DYShzLmljb24pOntmb3VuZDohMSx3aWR0aDpudWxsLGhlaWdodDpudWxsLGljb246e319fSxwcmVmaXg6ZyxpY29uTmFtZTpfLHRyYW5zZm9ybTpXKFcoe30sWnIpLHIpLHN5bWJvbDphLG1hc2tJZDpsLGV4dHJhOnthdHRyaWJ1dGVzOnAsc3R5bGVzOmgsY2xhc3NlczpkfX0pfSl9fSxsbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2ljb246c28oY28pfX0saG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57bXV0YXRpb25PYnNlcnZlckNhbGxiYWNrczpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmVlQ2FsbGJhY2s9YW8sZS5ub2RlQ2FsbGJhY2s9b28sZX19fSxwcm92aWRlczpmdW5jdGlvbihlKXtlLmkyc3ZnPWZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZSxuPXQ9PT12b2lkIDA/Rzp0LHI9ZS5jYWxsYmFjaztyZXR1cm4gYW8obixyPT09dm9pZCAwP2Z1bmN0aW9uKCl7fTpyKX0sZS5nZW5lcmF0ZVN2Z1JlcGxhY2VtZW50TXV0YXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj10Lmljb25OYW1lLHI9dC5wcmVmaXgsaT10LnRyYW5zZm9ybSxhPXQuc3ltYm9sLG89dC5tYXNrLHM9dC5tYXNrSWQsYz10LmV4dHJhO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGwpe1Byb21pc2UuYWxsKFtFYShuLHIpLG8uaWNvbk5hbWU/RWEoby5pY29uTmFtZSxvLnByZWZpeCk6UHJvbWlzZS5yZXNvbHZlKHtmb3VuZDohMSx3aWR0aDo1MTIsaGVpZ2h0OjUxMixpY29uOnt9fSldKS50aGVuKGZ1bmN0aW9uKG8pe3ZhciBsPUR0KG8sMiksdT1sWzBdLGQ9bFsxXTt0KFtlLHlhKHtpY29uczp7bWFpbjp1LG1hc2s6ZH0scHJlZml4OnIsaWNvbk5hbWU6bix0cmFuc2Zvcm06aSxzeW1ib2w6YSxtYXNrSWQ6cyxleHRyYTpjLHdhdGNoYWJsZTohMH0pXSl9KS5jYXRjaChsKX0pfSxlLmdlbmVyYXRlQWJzdHJhY3RJY29uPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmF0dHJpYnV0ZXMscj1lLm1haW4saT1lLnRyYW5zZm9ybSxhPWUuc3R5bGVzLG89YWkoYSk7by5sZW5ndGg+MCYmKG4uc3R5bGU9byk7dmFyIHM7cmV0dXJuIG9pKGkpJiYocz1kYShgZ2VuZXJhdGVBYnN0cmFjdFRyYW5zZm9ybUdyb3VwaW5nYCx7bWFpbjpyLHRyYW5zZm9ybTppLGNvbnRhaW5lcldpZHRoOnIud2lkdGgsaWNvbldpZHRoOnIud2lkdGh9KSksdC5wdXNoKHN8fHIuaWNvbikse2NoaWxkcmVuOnQsYXR0cmlidXRlczpufX19fSx1bz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2xheWVyOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPXQuY2xhc3NlcyxyPW49PT12b2lkIDA/W106bjtyZXR1cm4gaGEoe3R5cGU6YGxheWVyYH0sZnVuY3Rpb24oKXt1YShgYmVmb3JlRE9NRWxlbWVudENyZWF0aW9uYCx7YXNzZW1ibGVyOmUscGFyYW1zOnR9KTt2YXIgbj1bXTtyZXR1cm4gZShmdW5jdGlvbihlKXtBcnJheS5pc0FycmF5KGUpP2UubWFwKGZ1bmN0aW9uKGUpe249bi5jb25jYXQoZS5hYnN0cmFjdCl9KTpuPW4uY29uY2F0KGUuYWJzdHJhY3QpfSksW3t0YWc6YHNwYW5gLGF0dHJpYnV0ZXM6e2NsYXNzOltgJHtxLmNzc1ByZWZpeH0tbGF5ZXJzYF0uY29uY2F0KE90KHIpKS5qb2luKGAgYCl9LGNoaWxkcmVuOm59XX0pfX19fSxmbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue2NvdW50ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LG49dC50aXRsZSxyPW49PT12b2lkIDA/bnVsbDpuLGk9dC5jbGFzc2VzLGE9aT09PXZvaWQgMD9bXTppLG89dC5hdHRyaWJ1dGVzLHM9bz09PXZvaWQgMD97fTpvLGM9dC5zdHlsZXMsbD1jPT09dm9pZCAwP3t9OmM7cmV0dXJuIGhhKHt0eXBlOmBjb3VudGVyYCxjb250ZW50OmV9LGZ1bmN0aW9uKCl7cmV0dXJuIHVhKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHtjb250ZW50OmUscGFyYW1zOnR9KSx4YSh7Y29udGVudDplLnRvU3RyaW5nKCksdGl0bGU6cixleHRyYTp7YXR0cmlidXRlczpzLHN0eWxlczpsLGNsYXNzZXM6W2Ake3EuY3NzUHJlZml4fS1sYXllcnMtY291bnRlcmBdLmNvbmNhdChPdChhKSl9fSl9KX19fX0scG89e21peG91dDpmdW5jdGlvbigpe3JldHVybnt0ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPXQudHJhbnNmb3JtLHI9bj09PXZvaWQgMD9acjpuLGk9dC5jbGFzc2VzLGE9aT09PXZvaWQgMD9bXTppLG89dC5hdHRyaWJ1dGVzLHM9bz09PXZvaWQgMD97fTpvLGM9dC5zdHlsZXMsbD1jPT09dm9pZCAwP3t9OmM7cmV0dXJuIGhhKHt0eXBlOmB0ZXh0YCxjb250ZW50OmV9LGZ1bmN0aW9uKCl7cmV0dXJuIHVhKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHtjb250ZW50OmUscGFyYW1zOnR9KSxiYSh7Y29udGVudDplLHRyYW5zZm9ybTpXKFcoe30sWnIpLHIpLGV4dHJhOnthdHRyaWJ1dGVzOnMsc3R5bGVzOmwsY2xhc3NlczpbYCR7cS5jc3NQcmVmaXh9LWxheWVycy10ZXh0YF0uY29uY2F0KE90KGEpKX19KX0pfX19LHByb3ZpZGVzOmZ1bmN0aW9uKGUpe2UuZ2VuZXJhdGVMYXllcnNUZXh0PWZ1bmN0aW9uKGUsdCl7dmFyIG49dC50cmFuc2Zvcm0scj10LmV4dHJhLGk9bnVsbCxhPW51bGw7aWYoV3Qpe3ZhciBvPXBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUoZSkuZm9udFNpemUsMTApLHM9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpPXMud2lkdGgvbyxhPXMuaGVpZ2h0L299cmV0dXJuIFByb21pc2UucmVzb2x2ZShbZSxiYSh7Y29udGVudDplLmlubmVySFRNTCx3aWR0aDppLGhlaWdodDphLHRyYW5zZm9ybTpuLGV4dHJhOnIsd2F0Y2hhYmxlOiEwfSldKX19fSxtbz1SZWdFeHAoYCJgLGB1Z2ApLGhvPVsxMTA1OTIwLDExMTIzMTldLGdvPVcoVyhXKFcoe30se0ZvbnRBd2Vzb21lOntub3JtYWw6YGZhc2AsNDAwOmBmYXNgfX0pLHFuKSxtciksZXIpLF9vPU9iamVjdC5rZXlzKGdvKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0LnRvTG93ZXJDYXNlKCldPWdvW3RdLGV9LHt9KSx2bz1PYmplY3Qua2V5cyhfbykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49X29bdF07cmV0dXJuIGVbdF09bls5MDBdfHxPdChPYmplY3QuZW50cmllcyhuKSlbMF1bMV0sZX0se30pO2Z1bmN0aW9uIHlvKGUpe3JldHVybiB3aShPdChlLnJlcGxhY2UobW8sYGApKVswXXx8YGApfWZ1bmN0aW9uIGJvKGUpe3ZhciB0PWUuZ2V0UHJvcGVydHlWYWx1ZShgZm9udC1mZWF0dXJlLXNldHRpbmdzYCkuaW5jbHVkZXMoYHNzMDFgKSxuPWUuZ2V0UHJvcGVydHlWYWx1ZShgY29udGVudGApLnJlcGxhY2UobW8sYGApLHI9bi5jb2RlUG9pbnRBdCgwKSxpPXI+PWhvWzBdJiZyPD1ob1sxXSxhPW4ubGVuZ3RoPT09MiYmblswXT09PW5bMV07cmV0dXJuIGl8fGF8fHR9ZnVuY3Rpb24geG8oZSx0KXt2YXIgbj1lLnJlcGxhY2UoL15bJyJdfFsnIl0kL2csYGApLnRvTG93ZXJDYXNlKCkscj1wYXJzZUludCh0KSxpPWlzTmFOKHIpP2Bub3JtYWxgOnI7cmV0dXJuKF9vW25dfHx7fSlbaV18fHZvW25dfWZ1bmN0aW9uIFNvKGUsdCl7dmFyIG49YCR7eHJ9JHt0LnJlcGxhY2UoYDpgLGAtYCl9YDtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixpKXtpZihlLmdldEF0dHJpYnV0ZShuKSE9PW51bGwpcmV0dXJuIHIoKTt2YXIgYT10aShlLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlKGJyKT09PXR9KVswXSxvPUJ0LmdldENvbXB1dGVkU3R5bGUoZSx0KSxzPW8uZ2V0UHJvcGVydHlWYWx1ZShgZm9udC1mYW1pbHlgKSxjPXMubWF0Y2goenIpLGw9by5nZXRQcm9wZXJ0eVZhbHVlKGBmb250LXdlaWdodGApLHU9by5nZXRQcm9wZXJ0eVZhbHVlKGBjb250ZW50YCk7aWYoYSYmIWMpcmV0dXJuIGUucmVtb3ZlQ2hpbGQoYSkscigpO2lmKGMmJnUhPT1gbm9uZWAmJnUhPT1gYCl7dmFyIGQ9by5nZXRQcm9wZXJ0eVZhbHVlKGBjb250ZW50YCksZj14byhzLGwpLHA9eW8oZCksbT1jWzBdLnN0YXJ0c1dpdGgoYEZvbnRBd2Vzb21lYCksaD1ibyhvKSxnPUJpKGYscCksXz1nO2lmKG0pe3ZhciB2PVdpKHApO3YuaWNvbk5hbWUmJnYucHJlZml4JiYoZz12Lmljb25OYW1lLGY9di5wcmVmaXgpfWlmKGcmJiFoJiYoIWF8fGEuZ2V0QXR0cmlidXRlKFNyKSE9PWZ8fGEuZ2V0QXR0cmlidXRlKENyKSE9PV8pKXtlLnNldEF0dHJpYnV0ZShuLF8pLGEmJmUucmVtb3ZlQ2hpbGQoYSk7dmFyIHk9ZW8oKSxiPXkuZXh0cmE7Yi5hdHRyaWJ1dGVzW2JyXT10LEVhKGcsZikudGhlbihmdW5jdGlvbihpKXt2YXIgYT15YShXKFcoe30seSkse30se2ljb25zOnttYWluOmksbWFzazpLaSgpfSxwcmVmaXg6ZixpY29uTmFtZTpfLGV4dHJhOmIsd2F0Y2hhYmxlOiEwfSkpLG89Ry5jcmVhdGVFbGVtZW50TlMoYGh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnYCxgc3ZnYCk7dD09PWA6OmJlZm9yZWA/ZS5pbnNlcnRCZWZvcmUobyxlLmZpcnN0Q2hpbGQpOmUuYXBwZW5kQ2hpbGQobyksby5vdXRlckhUTUw9YS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGJpKGUpfSkuam9pbihgCmApLGUucmVtb3ZlQXR0cmlidXRlKG4pLHIoKX0pLmNhdGNoKGkpfWVsc2UgcigpfWVsc2UgcigpfSl9ZnVuY3Rpb24gQ28oZSl7cmV0dXJuIFByb21pc2UuYWxsKFtTbyhlLGA6OmJlZm9yZWApLFNvKGUsYDo6YWZ0ZXJgKV0pfWZ1bmN0aW9uIHdvKGUpe3JldHVybiBlLnBhcmVudE5vZGUhPT1kb2N1bWVudC5oZWFkJiYhfkVyLmluZGV4T2YoZS50YWdOYW1lLnRvVXBwZXJDYXNlKCkpJiYhZS5nZXRBdHRyaWJ1dGUoYnIpJiYoIWUucGFyZW50Tm9kZXx8ZS5wYXJlbnROb2RlLnRhZ05hbWUhPT1gc3ZnYCl9dmFyIFRvPWZ1bmN0aW9uKGUpe3JldHVybiEhZSYmRHIuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gZS5pbmNsdWRlcyh0KX0pfSxFbz1mdW5jdGlvbihlKXtpZighZSlyZXR1cm5bXTt2YXIgdD1uZXcgU2V0LG49ZS5zcGxpdCgvLCg/IVteKCldKlwpKS8pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KTtuPW4uZmxhdE1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbmNsdWRlcyhgKGApP2U6ZS5zcGxpdChgLGApLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KX0pO3ZhciByPXh0KG4pLGk7dHJ5e2ZvcihyLnMoKTshKGk9ci5uKCkpLmRvbmU7KXt2YXIgYT1pLnZhbHVlO2lmKFRvKGEpKXt2YXIgbz1Eci5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yZXBsYWNlKHQsYGApfSxhKTtvIT09YGAmJm8hPT1gKmAmJnQuYWRkKG8pfX19Y2F0Y2goZSl7ci5lKGUpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIHR9O2Z1bmN0aW9uIERvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwJiZhcmd1bWVudHNbMV07aWYoVXQpe3ZhciBuO2lmKHQpbj1lO2Vsc2UgaWYocS5zZWFyY2hQc2V1ZG9FbGVtZW50c0Z1bGxTY2FuKW49ZS5xdWVyeVNlbGVjdG9yQWxsKGAqYCk7ZWxzZXt2YXIgcj1uZXcgU2V0LGk9eHQoZG9jdW1lbnQuc3R5bGVTaGVldHMpLGE7dHJ5e2ZvcihpLnMoKTshKGE9aS5uKCkpLmRvbmU7KXt2YXIgbz1hLnZhbHVlO3RyeXt2YXIgcz14dChvLmNzc1J1bGVzKSxjO3RyeXtmb3Iocy5zKCk7IShjPXMubigpKS5kb25lOyl7dmFyIGw9Yy52YWx1ZSx1PXh0KEVvKGwuc2VsZWN0b3JUZXh0KSksZDt0cnl7Zm9yKHUucygpOyEoZD11Lm4oKSkuZG9uZTspe3ZhciBmPWQudmFsdWU7ci5hZGQoZil9fWNhdGNoKGUpe3UuZShlKX1maW5hbGx5e3UuZigpfX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9fWNhdGNoKGUpe3Euc2VhcmNoUHNldWRvRWxlbWVudHNXYXJuaW5ncyYmY29uc29sZS53YXJuKGBGb250IEF3ZXNvbWU6IGNhbm5vdCBwYXJzZSBzdHlsZXNoZWV0OiAke28uaHJlZn0gKCR7ZS5tZXNzYWdlfSkKSWYgaXQgZGVjbGFyZXMgYW55IEZvbnQgQXdlc29tZSBDU1MgcHNldWRvLWVsZW1lbnRzLCB0aGV5IHdpbGwgbm90IGJlIHJlbmRlcmVkIGFzIFNWRyBpY29ucy4gQWRkIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHRvIHRoZSA8bGluaz4sIGVuYWJsZSBzZWFyY2hQc2V1ZG9FbGVtZW50c0Z1bGxTY2FuIGZvciBzbG93ZXIgYnV0IG1vcmUgdGhvcm91Z2ggRE9NIHBhcnNpbmcsIG9yIHN1cHByZXNzIHRoaXMgd2FybmluZyBieSBzZXR0aW5nIHNlYXJjaFBzZXVkb0VsZW1lbnRzV2FybmluZ3MgdG8gZmFsc2UuYCl9fX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1pZighci5zaXplKXJldHVybjt2YXIgcD1BcnJheS5mcm9tKHIpLmpvaW4oYCwgYCk7dHJ5e249ZS5xdWVyeVNlbGVjdG9yQWxsKHApfWNhdGNoe319cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7dmFyIHI9dGkobikuZmlsdGVyKHdvKS5tYXAoQ28pLGk9TWEuYmVnaW4oYHNlYXJjaFBzZXVkb0VsZW1lbnRzYCk7S2EoKSxQcm9taXNlLmFsbChyKS50aGVuKGZ1bmN0aW9uKCl7aSgpLHFhKCksZSgpfSkuY2F0Y2goZnVuY3Rpb24oKXtpKCkscWEoKSx0KCl9KX0pfX12YXIgT289e2hvb2tzOmZ1bmN0aW9uKCl7cmV0dXJue211dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucHNldWRvRWxlbWVudHNDYWxsYmFjaz1EbyxlfX19LHByb3ZpZGVzOmZ1bmN0aW9uKGUpe2UucHNldWRvRWxlbWVudHMyc3ZnPWZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZSxuPXQ9PT12b2lkIDA/Rzp0O3Euc2VhcmNoUHNldWRvRWxlbWVudHMmJkRvKG4pfX19LGtvPSExLEFvPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9tOnt1bndhdGNoOmZ1bmN0aW9uKCl7S2EoKSxrbz0hMH19fX0saG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57Ym9vdHN0cmFwOmZ1bmN0aW9uKCl7WWEobGEoYG11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja3NgLHt9KSl9LG5vQXV0bzpmdW5jdGlvbigpe1hhKCl9LHdhdGNoOmZ1bmN0aW9uKGUpe3ZhciB0PWUub2JzZXJ2ZU11dGF0aW9uc1Jvb3Q7a28/cWEoKTpZYShsYShgbXV0YXRpb25PYnNlcnZlckNhbGxiYWNrc2Ase29ic2VydmVNdXRhdGlvbnNSb290OnR9KSl9fX19LGpvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkuc3BsaXQoYCBgKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRvTG93ZXJDYXNlKCkuc3BsaXQoYC1gKSxyPW5bMF0saT1uLnNsaWNlKDEpLmpvaW4oYC1gKTtpZihyJiZpPT09YGhgKXJldHVybiBlLmZsaXBYPSEwLGU7aWYociYmaT09PWB2YClyZXR1cm4gZS5mbGlwWT0hMCxlO2lmKGk9cGFyc2VGbG9hdChpKSxpc05hTihpKSlyZXR1cm4gZTtzd2l0Y2gocil7Y2FzZWBncm93YDplLnNpemUrPWk7YnJlYWs7Y2FzZWBzaHJpbmtgOmUuc2l6ZS09aTticmVhaztjYXNlYGxlZnRgOmUueC09aTticmVhaztjYXNlYHJpZ2h0YDplLngrPWk7YnJlYWs7Y2FzZWB1cGA6ZS55LT1pO2JyZWFrO2Nhc2VgZG93bmA6ZS55Kz1pO2JyZWFrO2Nhc2Vgcm90YXRlYDplLnJvdGF0ZSs9aX1yZXR1cm4gZX0se3NpemU6MTYseDowLHk6MCxmbGlwWDohMSxmbGlwWTohMSxyb3RhdGU6MH0pfSxNbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue3BhcnNlOnt0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7cmV0dXJuIGpvKGUpfX19fSxob29rczpmdW5jdGlvbigpe3JldHVybntwYXJzZU5vZGVBdHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtdHJhbnNmb3JtYCk7cmV0dXJuIG4mJihlLnRyYW5zZm9ybT1qbyhuKSksZX19fSxwcm92aWRlczpmdW5jdGlvbihlKXtlLmdlbmVyYXRlQWJzdHJhY3RUcmFuc2Zvcm1Hcm91cGluZz1mdW5jdGlvbihlKXt2YXIgdD1lLm1haW4sbj1lLnRyYW5zZm9ybSxyPWUuY29udGFpbmVyV2lkdGgsaT1lLmljb25XaWR0aCxhPXtvdXRlcjp7dHJhbnNmb3JtOmB0cmFuc2xhdGUoJHtyLzJ9IDI1NilgfSxpbm5lcjp7dHJhbnNmb3JtOmAke2B0cmFuc2xhdGUoJHtuLngqMzJ9LCAke24ueSozMn0pIGB9ICR7YHNjYWxlKCR7bi5zaXplLzE2KihuLmZsaXBYPy0xOjEpfSwgJHtuLnNpemUvMTYqKG4uZmxpcFk/LTE6MSl9KSBgfSAke2Byb3RhdGUoJHtuLnJvdGF0ZX0gMCAwKWB9YH0scGF0aDp7dHJhbnNmb3JtOmB0cmFuc2xhdGUoJHtpLzIqLTF9IC0yNTYpYH19O3JldHVybnt0YWc6YGdgLGF0dHJpYnV0ZXM6Vyh7fSxhLm91dGVyKSxjaGlsZHJlbjpbe3RhZzpgZ2AsYXR0cmlidXRlczpXKHt9LGEuaW5uZXIpLGNoaWxkcmVuOlt7dGFnOnQuaWNvbi50YWcsY2hpbGRyZW46dC5pY29uLmNoaWxkcmVuLGF0dHJpYnV0ZXM6VyhXKHt9LHQuaWNvbi5hdHRyaWJ1dGVzKSxhLnBhdGgpfV19XX19fX0sTm89e3g6MCx5OjAsd2lkdGg6YDEwMCVgLGhlaWdodDpgMTAwJWB9O2Z1bmN0aW9uIFBvKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTohMDtyZXR1cm4gZS5hdHRyaWJ1dGVzJiYoZS5hdHRyaWJ1dGVzLmZpbGx8fHQpJiYoZS5hdHRyaWJ1dGVzLmZpbGw9YGJsYWNrYCksZX1mdW5jdGlvbiBGbyhlKXtyZXR1cm4gZS50YWc9PT1gZ2A/ZS5jaGlsZHJlbjpbZV19Y2EoW3BpLGxvLHVvLGZvLHBvLE9vLEFvLE1vLHtob29rczpmdW5jdGlvbigpe3JldHVybntwYXJzZU5vZGVBdHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtbWFza2ApLHI9bj9RaShuLnNwbGl0KGAgYCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pKTpLaSgpO3JldHVybiByLnByZWZpeHx8PUdpKCksZS5tYXNrPXIsZS5tYXNrSWQ9dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtbWFzay1pZGApLGV9fX0scHJvdmlkZXM6ZnVuY3Rpb24oZSl7ZS5nZW5lcmF0ZUFic3RyYWN0TWFzaz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5hdHRyaWJ1dGVzLHI9ZS5tYWluLGk9ZS5tYXNrLGE9ZS5tYXNrSWQsbz1lLnRyYW5zZm9ybSxzPXIud2lkdGgsYz1yLmljb24sbD1pLndpZHRoLHU9aS5pY29uLGQ9c2koe3RyYW5zZm9ybTpvLGNvbnRhaW5lcldpZHRoOmwsaWNvbldpZHRoOnN9KSxmPXt0YWc6YHJlY3RgLGF0dHJpYnV0ZXM6VyhXKHt9LE5vKSx7fSx7ZmlsbDpgd2hpdGVgfSl9LHA9Yy5jaGlsZHJlbj97Y2hpbGRyZW46Yy5jaGlsZHJlbi5tYXAoUG8pfTp7fSxtPXt0YWc6YGdgLGF0dHJpYnV0ZXM6Vyh7fSxkLmlubmVyKSxjaGlsZHJlbjpbUG8oVyh7dGFnOmMudGFnLGF0dHJpYnV0ZXM6VyhXKHt9LGMuYXR0cmlidXRlcyksZC5wYXRoKX0scCkpXX0saD17dGFnOmBnYCxhdHRyaWJ1dGVzOlcoe30sZC5vdXRlciksY2hpbGRyZW46W21dfSxnPWBtYXNrLSR7YXx8ZWkoKX1gLF89YGNsaXAtJHthfHxlaSgpfWAsdj17dGFnOmBtYXNrYCxhdHRyaWJ1dGVzOlcoVyh7fSxObykse30se2lkOmcsbWFza1VuaXRzOmB1c2VyU3BhY2VPblVzZWAsbWFza0NvbnRlbnRVbml0czpgdXNlclNwYWNlT25Vc2VgfSksY2hpbGRyZW46W2YsaF19LHk9e3RhZzpgZGVmc2AsY2hpbGRyZW46W3t0YWc6YGNsaXBQYXRoYCxhdHRyaWJ1dGVzOntpZDpffSxjaGlsZHJlbjpGbyh1KX0sdl19O3JldHVybiB0LnB1c2goeSx7dGFnOmByZWN0YCxhdHRyaWJ1dGVzOlcoe2ZpbGw6YGN1cnJlbnRDb2xvcmAsImNsaXAtcGF0aCI6YHVybCgjJHtffSlgLG1hc2s6YHVybCgjJHtnfSlgfSxObyl9KSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOm59fX19LHtwcm92aWRlczpmdW5jdGlvbihlKXt2YXIgdD0hMTtCdC5tYXRjaE1lZGlhJiYodD1CdC5tYXRjaE1lZGlhKGAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKWApLm1hdGNoZXMpLGUubWlzc2luZ0ljb25BYnN0cmFjdD1mdW5jdGlvbigpe3ZhciBlPVtdLG49e2ZpbGw6YGN1cnJlbnRDb2xvcmB9LHI9e2F0dHJpYnV0ZVR5cGU6YFhNTGAscmVwZWF0Q291bnQ6YGluZGVmaW5pdGVgLGR1cjpgMnNgfTtlLnB1c2goe3RhZzpgcGF0aGAsYXR0cmlidXRlczpXKFcoe30sbikse30se2Q6YE0xNTYuNSw0NDcuN2wtMTIuNiwyOS41Yy0xOC43LTkuNS0zNS45LTIxLjItNTEuNS0zNC45bDIyLjctMjIuN0MxMjcuNiw0MzAuNSwxNDEuNSw0NDAsMTU2LjUsNDQ3Ljd6IE00MC42LDI3Mkg4LjUgYzEuNCwyMS4yLDUuNCw0MS43LDExLjcsNjEuMUw1MCwzMjEuMkM0NS4xLDMwNS41LDQxLjgsMjg5LDQwLjYsMjcyeiBNNDAuNiwyNDBjMS40LTE4LjgsNS4yLTM3LDExLjEtNTQuMWwtMjkuNS0xMi42IEMxNC43LDE5NC4zLDEwLDIxNi43LDguNSwyNDBINDAuNnogTTY0LjMsMTU2LjVjNy44LTE0LjksMTcuMi0yOC44LDI4LjEtNDEuNUw2OS43LDkyLjNjLTEzLjcsMTUuNi0yNS41LDMyLjgtMzQuOSw1MS41IEw2NC4zLDE1Ni41eiBNMzk3LDQxOS42Yy0xMy45LDEyLTI5LjQsMjIuMy00Ni4xLDMwLjRsMTEuOSwyOS44YzIwLjctOS45LDM5LjgtMjIuNiw1Ni45LTM3LjZMMzk3LDQxOS42eiBNMTE1LDkyLjQgYzEzLjktMTIsMjkuNC0yMi4zLDQ2LjEtMzAuNGwtMTEuOS0yOS44Yy0yMC43LDkuOS0zOS44LDIyLjYtNTYuOCwzNy42TDExNSw5Mi40eiBNNDQ3LjcsMzU1LjVjLTcuOCwxNC45LTE3LjIsMjguOC0yOC4xLDQxLjUgbDIyLjcsMjIuN2MxMy43LTE1LjYsMjUuNS0zMi45LDM0LjktNTEuNUw0NDcuNywzNTUuNXogTTQ3MS40LDI3MmMtMS40LDE4LjgtNS4yLDM3LTExLjEsNTQuMWwyOS41LDEyLjYgYzcuNS0yMS4xLDEyLjItNDMuNSwxMy42LTY2LjhINDcxLjR6IE0zMjEuMiw0NjJjLTE1LjcsNS0zMi4yLDguMi00OS4yLDkuNHYzMi4xYzIxLjItMS40LDQxLjctNS40LDYxLjEtMTEuN0wzMjEuMiw0NjJ6IE0yNDAsNDcxLjRjLTE4LjgtMS40LTM3LTUuMi01NC4xLTExLjFsLTEyLjYsMjkuNWMyMS4xLDcuNSw0My41LDEyLjIsNjYuOCwxMy42VjQ3MS40eiBNNDYyLDE5MC44YzUsMTUuNyw4LjIsMzIuMiw5LjQsNDkuMmgzMi4xIGMtMS40LTIxLjItNS40LTQxLjctMTEuNy02MS4xTDQ2MiwxOTAuOHogTTkyLjQsMzk3Yy0xMi0xMy45LTIyLjMtMjkuNC0zMC40LTQ2LjFsLTI5LjgsMTEuOWM5LjksMjAuNywyMi42LDM5LjgsMzcuNiw1Ni45IEw5Mi40LDM5N3ogTTI3Miw0MC42YzE4LjgsMS40LDM2LjksNS4yLDU0LjEsMTEuMWwxMi42LTI5LjVDMzE3LjcsMTQuNywyOTUuMywxMCwyNzIsOC41VjQwLjZ6IE0xOTAuOCw1MCBjMTUuNy01LDMyLjItOC4yLDQ5LjItOS40VjguNWMtMjEuMiwxLjQtNDEuNyw1LjQtNjEuMSwxMS43TDE5MC44LDUweiBNNDQyLjMsOTIuM0w0MTkuNiwxMTVjMTIsMTMuOSwyMi4zLDI5LjQsMzAuNSw0Ni4xIGwyOS44LTExLjlDNDcwLDEyOC41LDQ1Ny4zLDEwOS40LDQ0Mi4zLDkyLjN6IE0zOTcsOTIuNGwyMi43LTIyLjdjLTE1LjYtMTMuNy0zMi44LTI1LjUtNTEuNS0zNC45bC0xMi42LDI5LjUgQzM3MC40LDcyLjEsMzg0LjQsODEuNSwzOTcsOTIuNHpgfSl9KTt2YXIgaT1XKFcoe30scikse30se2F0dHJpYnV0ZU5hbWU6YG9wYWNpdHlgfSksYT17dGFnOmBjaXJjbGVgLGF0dHJpYnV0ZXM6VyhXKHt9LG4pLHt9LHtjeDpgMjU2YCxjeTpgMzY0YCxyOmAyOGB9KSxjaGlsZHJlbjpbXX07cmV0dXJuIHR8fGEuY2hpbGRyZW4ucHVzaCh7dGFnOmBhbmltYXRlYCxhdHRyaWJ1dGVzOlcoVyh7fSxyKSx7fSx7YXR0cmlidXRlTmFtZTpgcmAsdmFsdWVzOmAyODsxNDsyODsyODsxNDsyODtgfSl9LHt0YWc6YGFuaW1hdGVgLGF0dHJpYnV0ZXM6VyhXKHt9LGkpLHt9LHt2YWx1ZXM6YDE7MDsxOzE7MDsxO2B9KX0pLGUucHVzaChhKSxlLnB1c2goe3RhZzpgcGF0aGAsYXR0cmlidXRlczpXKFcoe30sbikse30se29wYWNpdHk6YDFgLGQ6YE0yNjMuNywzMTJoLTE2Yy02LjYsMC0xMi01LjQtMTItMTJjMC03MSw3Ny40LTYzLjksNzcuNC0xMDcuOGMwLTIwLTE3LjgtNDAuMi01Ny40LTQwLjJjLTI5LjEsMC00NC4zLDkuNi01OS4yLDI4LjcgYy0zLjksNS0xMS4xLDYtMTYuMiwyLjRsLTEzLjEtOS4yYy01LjYtMy45LTYuOS0xMS44LTIuNi0xNy4yYzIxLjItMjcuMiw0Ni40LTQ0LjcsOTEuMi00NC43YzUyLjMsMCw5Ny40LDI5LjgsOTcuNCw4MC4yIGMwLDY3LjYtNzcuNCw2My41LTc3LjQsMTA3LjhDMjc1LjcsMzA2LjYsMjcwLjMsMzEyLDI2My43LDMxMnpgfSksY2hpbGRyZW46dD9bXTpbe3RhZzpgYW5pbWF0ZWAsYXR0cmlidXRlczpXKFcoe30saSkse30se3ZhbHVlczpgMTswOzA7MDswOzE7YH0pfV19KSx0fHxlLnB1c2goe3RhZzpgcGF0aGAsYXR0cmlidXRlczpXKFcoe30sbikse30se29wYWNpdHk6YDBgLGQ6YE0yMzIuNSwxMzQuNWw3LDE2OGMwLjMsNi40LDUuNiwxMS41LDEyLDExLjVoOWM2LjQsMCwxMS43LTUuMSwxMi0xMS41bDctMTY4YzAuMy02LjgtNS4yLTEyLjUtMTItMTIuNWgtMjMgQzIzNy43LDEyMiwyMzIuMiwxMjcuNywyMzIuNSwxMzQuNXpgfSksY2hpbGRyZW46W3t0YWc6YGFuaW1hdGVgLGF0dHJpYnV0ZXM6VyhXKHt9LGkpLHt9LHt2YWx1ZXM6YDA7MDsxOzE7MDswO2B9KX1dfSkse3RhZzpgZ2AsYXR0cmlidXRlczp7Y2xhc3M6YG1pc3NpbmdgfSxjaGlsZHJlbjplfX19fSx7aG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57cGFyc2VOb2RlQXR0cmlidXRlczpmdW5jdGlvbihlLHQpe3ZhciBuPXQuZ2V0QXR0cmlidXRlKGBkYXRhLWZhLXN5bWJvbGApO3JldHVybiBlLnN5bWJvbD1uPT09bnVsbD8hMTpuPT09YGB8fG4sZX19fX1dLHttaXhvdXRzVG86Sn0pLEoubm9BdXRvO3ZhciBJbz1KLmNvbmZpZztKLmxpYnJhcnksSi5kb207dmFyIExvPUoucGFyc2U7Si5maW5kSWNvbkRlZmluaXRpb24sSi50b0h0bWw7dmFyIFJvPUouaWNvbjtKLmxheWVyO3ZhciB6bz1KLnRleHQ7Si5jb3VudGVyO2Z1bmN0aW9uIEJvKGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBWbyhlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBCbyhlKX1mdW5jdGlvbiBZKGUsdCxuKXtyZXR1cm4odD1Zbyh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBIbyhlKXtpZih0eXBlb2YgU3ltYm9sPGB1YCYmZVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxlW2BAQGl0ZXJhdG9yYF0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gVW8oKXt0aHJvdyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gV28oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XT09bnVsbD97fTphcmd1bWVudHNbdF07dCUyP1dvKE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtZKGUsdCxuW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOldvKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBHbyhlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG4scixpPUtvKGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik9PT0tMSYme30ucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYoaVtuXT1lW25dKX1yZXR1cm4gaX1mdW5jdGlvbiBLbyhlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG49e307Zm9yKHZhciByIGluIGUpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbChlLHIpKXtpZih0LmluZGV4T2YocikhPT0tMSljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gcW8oZSl7cmV0dXJuIFZvKGUpfHxIbyhlKXx8Wm8oZSl8fFVvKCl9ZnVuY3Rpb24gSm8oZSx0KXtpZih0eXBlb2YgZSE9YG9iamVjdGB8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0fHxgZGVmYXVsdGApO2lmKHR5cGVvZiByIT1gb2JqZWN0YClyZXR1cm4gcjt0aHJvdyBUeXBlRXJyb3IoYEBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuYCl9cmV0dXJuKHQ9PT1gc3RyaW5nYD9TdHJpbmc6TnVtYmVyKShlKX1mdW5jdGlvbiBZbyhlKXt2YXIgdD1KbyhlLGBzdHJpbmdgKTtyZXR1cm4gdHlwZW9mIHQ9PWBzeW1ib2xgP3Q6dCtgYH1mdW5jdGlvbiBYbyhlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBYbz10eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYD9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZ0eXBlb2YgU3ltYm9sPT1gZnVuY3Rpb25gJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9gc3ltYm9sYDp0eXBlb2YgZX0sWG8oZSl9ZnVuY3Rpb24gWm8oZSx0KXtpZihlKXtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIEJvKGUsdCk7dmFyIG49e30udG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4gbj09PWBPYmplY3RgJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLG49PT1gTWFwYHx8bj09PWBTZXRgP0FycmF5LmZyb20oZSk6bj09PWBBcmd1bWVudHNgfHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT9CbyhlLHQpOnZvaWQgMH19ZnVuY3Rpb24gUW8oZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+MHx8IUFycmF5LmlzQXJyYXkodCkmJnQ/WSh7fSxlLHQpOnt9fWZ1bmN0aW9uICRvKGUpe3ZhciB0LG49KHQ9eyJmYS1zcGluIjplLnNwaW4sImZhLXB1bHNlIjplLnB1bHNlLCJmYS1mdyI6ZS5maXhlZFdpZHRoLCJmYS1ib3JkZXIiOmUuYm9yZGVyLCJmYS1saSI6ZS5saXN0SXRlbSwiZmEtaW52ZXJzZSI6ZS5pbnZlcnNlLCJmYS1mbGlwIjplLmZsaXA9PT0hMCwiZmEtZmxpcC1ob3Jpem9udGFsIjplLmZsaXA9PT1gaG9yaXpvbnRhbGB8fGUuZmxpcD09PWBib3RoYCwiZmEtZmxpcC12ZXJ0aWNhbCI6ZS5mbGlwPT09YHZlcnRpY2FsYHx8ZS5mbGlwPT09YGJvdGhgfSxZKFkoWShZKFkoWShZKFkoWShZKHQsYGZhLSR7ZS5zaXplfWAsZS5zaXplIT09bnVsbCksYGZhLXJvdGF0ZS0ke2Uucm90YXRpb259YCxlLnJvdGF0aW9uIT09bnVsbCksYGZhLXJvdGF0ZS1ieWAsZS5yb3RhdGVCeSksYGZhLXB1bGwtJHtlLnB1bGx9YCxlLnB1bGwhPT1udWxsKSxgZmEtc3dhcC1vcGFjaXR5YCxlLnN3YXBPcGFjaXR5KSxgZmEtYm91bmNlYCxlLmJvdW5jZSksYGZhLXNoYWtlYCxlLnNoYWtlKSxgZmEtYmVhdGAsZS5iZWF0KSxgZmEtZmFkZWAsZS5mYWRlKSxgZmEtYmVhdC1mYWRlYCxlLmJlYXRGYWRlKSxZKFkoWShZKFkoWShZKFkoWShZKHQsYGZhLWZsYXNoYCxlLmZsYXNoKSxgZmEtc3Bpbi1wdWxzZWAsZS5zcGluUHVsc2UpLGBmYS1zcGluLXJldmVyc2VgLGUuc3BpblJldmVyc2UpLGBmYS13aWR0aC1hdXRvYCxlLndpZHRoQXV0byksYGZhLWNhbnZhcy1zcXVhcmVgLGUuY2FudmFzU3F1YXJlKSxgZmEtY2FudmFzLXJvb215YCxlLmNhbnZhc1Jvb215KSxgZmEtZmxpcC0zNjBgLGUuZmxpcDM2MCksYGZhLWJ1enpgLGUuYnV6eiksYGZhLWZsb2F0YCxlLmZsb2F0KSxgZmEtamVsbG9gLGUuamVsbG8pLFkoWShZKFkoWSh0LGBmYS1zcGluLXNuYXBgLGUuc3BpblNuYXApLGBmYS1zcGluLXNuYXAtNGAsZS5zcGluU25hcDQpLGBmYS1zcGluLXNuYXAtOGAsZS5zcGluU25hcDgpLGBmYS1zd2luZ2AsZS5zd2luZyksYGZhLXdhZ2AsZS53YWcpKTtyZXR1cm4gT2JqZWN0LmtleXMobikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdP2U6bnVsbH0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pfXZhciBlcz10eXBlb2YgZ2xvYmFsVGhpczxgdWA/Z2xvYmFsVGhpczp0eXBlb2Ygd2luZG93PGB1YD93aW5kb3c6dHlwZW9mIGdsb2JhbDxgdWA/Z2xvYmFsOnR5cGVvZiBzZWxmPGB1YD9zZWxmOnt9LHRzPXtleHBvcnRzOnt9fTsoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKGUsdCxyKXtpZighbCh0KXx8ZCh0KXx8Zih0KXx8cCh0KXx8Yyh0KSlyZXR1cm4gdDt2YXIgaSxhPTAsbz0wO2lmKHUodCkpZm9yKGk9W10sbz10Lmxlbmd0aDthPG87YSsrKWkucHVzaChuKGUsdFthXSxyKSk7ZWxzZSBmb3IodmFyIHMgaW4gaT17fSx0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHMpJiYoaVtlKHMscildPW4oZSx0W3NdLHIpKTtyZXR1cm4gaX0scj1mdW5jdGlvbihlLHQpe3R8fD17fTt2YXIgbj10LnNlcGFyYXRvcnx8YF9gLHI9dC5zcGxpdHx8Lyg/PVtBLVpdKS87cmV0dXJuIGUuc3BsaXQocikuam9pbihuKX0saT1mdW5jdGlvbihlKXtyZXR1cm4gbShlKT9lOihlPWUucmVwbGFjZSgvW1wtX1xzXSsoLik/L2csZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD90LnRvVXBwZXJDYXNlKCk6YGB9KSxlLnN1YnN0cigwLDEpLnRvTG93ZXJDYXNlKCkrZS5zdWJzdHIoMSkpfSxhPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZSk7cmV0dXJuIHQuc3Vic3RyKDAsMSkudG9VcHBlckNhc2UoKSt0LnN1YnN0cigxKX0sbz1mdW5jdGlvbihlLHQpe3JldHVybiByKGUsdCkudG9Mb3dlckNhc2UoKX0scz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09T2JqZWN0KGUpfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSk9PWBbb2JqZWN0IEFycmF5XWB9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuY2FsbChlKT09YFtvYmplY3QgRGF0ZV1gfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSk9PWBbb2JqZWN0IFJlZ0V4cF1gfSxwPWZ1bmN0aW9uKGUpe3JldHVybiBzLmNhbGwoZSk9PWBbb2JqZWN0IEJvb2xlYW5dYH0sbT1mdW5jdGlvbihlKXtyZXR1cm4gZS09MCxlPT09ZX0saD1mdW5jdGlvbihlLHQpe3ZhciBuPXQmJmBwcm9jZXNzYGluIHQ/dC5wcm9jZXNzOnQ7cmV0dXJuIHR5cGVvZiBuPT1gZnVuY3Rpb25gP2Z1bmN0aW9uKHQscil7cmV0dXJuIG4odCxlLHIpfTplfSxnPXtjYW1lbGl6ZTppLGRlY2FtZWxpemU6byxwYXNjYWxpemU6YSxkZXBhc2NhbGl6ZTpvLGNhbWVsaXplS2V5czpmdW5jdGlvbihlLHQpe3JldHVybiBuKGgoaSx0KSxlKX0sZGVjYW1lbGl6ZUtleXM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihoKG8sdCksZSx0KX0scGFzY2FsaXplS2V5czpmdW5jdGlvbihlLHQpe3JldHVybiBuKGgoYSx0KSxlKX0sZGVwYXNjYWxpemVLZXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVjYW1lbGl6ZUtleXMuYXBwbHkodGhpcyxhcmd1bWVudHMpfX07ZS5leHBvcnRzP2UuZXhwb3J0cz1nOnQuaHVtcHM9Z30pKGVzKX0pKHRzKTt2YXIgbnM9dHMuZXhwb3J0cyxycz1bYGdyYWRpZW50RmlsbGBdLGlzPVtgY2xhc3NgLGBzdHlsZWBdLGFzPVtgdHlwZWAsYHN0b3BzYCxgaWRgXTtmdW5jdGlvbiBvcyhlKXtyZXR1cm4gZS5zcGxpdChgO2ApLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltKCl9KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj10LmluZGV4T2YoYDpgKSxyPW5zLmNhbWVsaXplKHQuc2xpY2UoMCxuKSk7cmV0dXJuIGVbcl09dC5zbGljZShuKzEpLnRyaW0oKSxlfSx7fSl9ZnVuY3Rpb24gc3MoZSl7cmV0dXJuIGUuc3BsaXQoL1xzKy8pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlW3RdPSEwLGV9LHt9KX1mdW5jdGlvbiBjcyhlLHQpe3JldHVybiBsKGBzdG9wYCxYKHtrZXk6YCR7dH0tJHtlLm9mZnNldH1gLG9mZnNldDplLm9mZnNldCwic3RvcC1jb2xvciI6ZS5jb2xvcn0sZS5vcGFjaXR5IT09dm9pZCAwJiZ7InN0b3Atb3BhY2l0eSI6ZS5vcGFjaXR5fSkpfWZ1bmN0aW9uIGxzKGUpe2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm4gZTt2YXIgdD0oZS5jaGlsZHJlbnx8W10pLm1hcChscyk7cmV0dXJuIGUudGFnPT09YHBhdGhgJiZlLmF0dHJpYnV0ZXMmJmBmaWxsYGluIGUuYXR0cmlidXRlcz9YKFgoe30sZSkse30se2F0dHJpYnV0ZXM6WChYKHt9LGUuYXR0cmlidXRlcykse30se2ZpbGw6dm9pZCAwfSksY2hpbGRyZW46dH0pOlgoWCh7fSxlKSx7fSx7Y2hpbGRyZW46dH0pfWZ1bmN0aW9uIHVzKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fTtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIGU7dmFyIHI9dC5ncmFkaWVudEZpbGwsaT1yPT09dm9pZCAwP251bGw6cixhPUdvKHQscnMpLG89aXx8YGZpbGxgaW4gbj9scyhlKTplLHM9KG8uY2hpbGRyZW58fFtdKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHVzKGUse30se30pfSksYz1PYmplY3Qua2V5cyhvLmF0dHJpYnV0ZXN8fHt9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmF0dHJpYnV0ZXNbdF07c3dpdGNoKHQpe2Nhc2VgY2xhc3NgOmUuY2xhc3M9c3Mobik7YnJlYWs7Y2FzZWBzdHlsZWA6ZS5zdHlsZT1vcyhuKTticmVhaztkZWZhdWx0OmUuYXR0cnNbdF09bn1yZXR1cm4gZX0se2F0dHJzOnt9LGNsYXNzOnt9LHN0eWxlOnt9fSk7bi5jbGFzczt2YXIgdT1uLnN0eWxlLGQ9dT09PXZvaWQgMD97fTp1LGY9R28obixpcyk7aWYoaSYmaS5pZCYmKGkudHlwZT09PWBsaW5lYXJgfHxpLnR5cGU9PT1gcmFkaWFsYCkpe3ZhciBwPWkudHlwZSxtPWkuc3RvcHMsaD1tPT09dm9pZCAwP1tdOm0sZz1pLmlkLF89R28oaSxhcyksdj1sKHA9PT1gbGluZWFyYD9gbGluZWFyR3JhZGllbnRgOmByYWRpYWxHcmFkaWVudGAsWChYKHt9LF8pLHt9LHtpZDpnfSksaC5tYXAoY3MpKTtyZXR1cm4gbChvLnRhZyxYKFgoWChYKHt9LGEpLHt9LHtjbGFzczpjLmNsYXNzLHN0eWxlOlgoWCh7fSxjLnN0eWxlKSxkKX0sYy5hdHRycyksZikse30se2ZpbGw6YHVybCgjJHtnfSlgfSksW3ZdLmNvbmNhdChxbyhzKSkpfXJldHVybiBsKGUudGFnLFgoWChYKHt9LGEpLHt9LHtjbGFzczpjLmNsYXNzLHN0eWxlOlgoWCh7fSxjLnN0eWxlKSxkKX0sYy5hdHRycyksZikscyl9dmFyIGRzPSExO3RyeXtkcz0hMH1jYXRjaHt9ZnVuY3Rpb24gZnMoKXtpZighZHMmJmNvbnNvbGUmJnR5cGVvZiBjb25zb2xlLmVycm9yPT1gZnVuY3Rpb25gKXt2YXIgZTsoZT1jb25zb2xlKS5lcnJvci5hcHBseShlLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHBzKGUpe2lmKGUmJlhvKGUpPT09YG9iamVjdGAmJmUucHJlZml4JiZlLmljb25OYW1lJiZlLmljb24pcmV0dXJuIGU7aWYoTG8uaWNvbilyZXR1cm4gTG8uaWNvbihlKTtpZihlPT09bnVsbClyZXR1cm4gbnVsbDtpZihYbyhlKT09PWBvYmplY3RgJiZlLnByZWZpeCYmZS5pY29uTmFtZSlyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTIpcmV0dXJue3ByZWZpeDplWzBdLGljb25OYW1lOmVbMV19O2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm57cHJlZml4OmBmYXNgLGljb25OYW1lOmV9fXZhciBtcz1IKHtuYW1lOmBGb250QXdlc29tZUljb25gLHByb3BzOntib3JkZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmaXhlZFdpZHRoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmxpcDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITEsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVyblshMCwhMSxgaG9yaXpvbnRhbGAsYHZlcnRpY2FsYCxgYm90aGBdLmluZGV4T2YoZSk+LTF9fSxpY29uOnt0eXBlOltPYmplY3QsQXJyYXksU3RyaW5nXSxyZXF1aXJlZDohMH0sbWFzazp7dHlwZTpbT2JqZWN0LEFycmF5LFN0cmluZ10sZGVmYXVsdDpudWxsfSxtYXNrSWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sbGlzdEl0ZW06e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwdWxsOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGwsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybltgcmlnaHRgLGBsZWZ0YF0uaW5kZXhPZihlKT4tMX19LHB1bHNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scm90YXRpb246e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuWzkwLDE4MCwyNzBdLmluZGV4T2YoTnVtYmVyLnBhcnNlSW50KGUsMTApKT4tMX19LHJvdGF0ZUJ5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3dhcE9wYWNpdHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaXplOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGwsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybltgMnhzYCxgeHNgLGBzbWAsYGxnYCxgeGxgLGAyeGxgLGAxeGAsYDJ4YCxgM3hgLGA0eGAsYDV4YCxgNnhgLGA3eGAsYDh4YCxgOXhgLGAxMHhgXS5pbmRleE9mKGUpPi0xfX0sc3Bpbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRyYW5zZm9ybTp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDpudWxsfSxzeW1ib2w6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSx0aXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSx0aXRsZUlkOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGludmVyc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxib3VuY2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaGFrZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGJlYXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmYWRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYmVhdEZhZGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmbGFzaDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5QdWxzZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5SZXZlcnNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sd2lkdGhBdXRvOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FudmFzU3F1YXJlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FudmFzUm9vbXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxncmFkaWVudEZpbGw6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlLmlkIT1gc3RyaW5nYHx8IWUuaWQ/KGNvbnNvbGUud2FybihgRm9udEF3ZXNvbWVJY29uOiBncmFkaWVudEZpbGwuaWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKSwhMSk6ZS50eXBlIT09YGxpbmVhcmAmJmUudHlwZSE9PWByYWRpYWxgPyhjb25zb2xlLndhcm4oYEZvbnRBd2Vzb21lSWNvbjogZ3JhZGllbnRGaWxsLnR5cGUgbXVzdCBiZSAibGluZWFyIiBvciAicmFkaWFsImApLCExKTohMH19LGZsaXAzNjA6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxidXp6Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmxvYXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxqZWxsbzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5TbmFwOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3BpblNuYXA0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3BpblNuYXA4Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3dpbmc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx3YWc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sc2V0dXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmF0dHJzLHI9TChmdW5jdGlvbigpe3JldHVybiBwcyhlLmljb24pfSksaT1MKGZ1bmN0aW9uKCl7cmV0dXJuIFFvKGBjbGFzc2VzYCwkbyhlKSl9KSxhPUwoZnVuY3Rpb24oKXtyZXR1cm4gUW8oYHRyYW5zZm9ybWAsdHlwZW9mIGUudHJhbnNmb3JtPT1gc3RyaW5nYD9Mby50cmFuc2Zvcm0oZS50cmFuc2Zvcm0pOmUudHJhbnNmb3JtKX0pLG89TChmdW5jdGlvbigpe3JldHVybiBRbyhgbWFza2AscHMoZS5tYXNrKSl9KSxzPUwoZnVuY3Rpb24oKXt2YXIgdD1YKFgoWChYKHt9LGkudmFsdWUpLGEudmFsdWUpLG8udmFsdWUpLHt9LHtzeW1ib2w6ZS5zeW1ib2wsbWFza0lkOmUubWFza0lkfSk7cmV0dXJuIHQudGl0bGU9ZS50aXRsZSx0LnRpdGxlSWQ9ZS50aXRsZUlkLFJvKHIudmFsdWUsdCl9KTtEKHMsZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGZzKGBDb3VsZCBub3QgZmluZCBvbmUgb3IgbW9yZSBpY29uKHMpYCxyLnZhbHVlLG8udmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksZS5ncmFkaWVudEZpbGwmJmUuc3ltYm9sJiZmcyhgZ3JhZGllbnRGaWxsIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBzeW1ib2wgaXMgdHJ1ZSBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7dmFyIGM9TChmdW5jdGlvbigpe3JldHVybiBzLnZhbHVlP3VzKHMudmFsdWUuYWJzdHJhY3RbMF0se2dyYWRpZW50RmlsbDplLnN5bWJvbD9udWxsOmUuZ3JhZGllbnRGaWxsfSxuKTpudWxsfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGMudmFsdWV9fX0pO0goe25hbWU6YEZvbnRBd2Vzb21lTGF5ZXJzYCxwcm9wczp7Zml4ZWRXaWR0aDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc2xvdHMscj1Jby5mYW1pbHlQcmVmaXgsaT1MKGZ1bmN0aW9uKCl7cmV0dXJuW2Ake3J9LWxheWVyc2BdLmNvbmNhdChxbyhlLmZpeGVkV2lkdGg/W2Ake3J9LWZ3YF06W10pKX0pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBsKGBkaXZgLHtjbGFzczppLnZhbHVlfSxuLmRlZmF1bHQ/bi5kZWZhdWx0KCk6W10pfX19KSxIKHtuYW1lOmBGb250QXdlc29tZUxheWVyc1RleHRgLHByb3BzOnt2YWx1ZTp7dHlwZTpbU3RyaW5nLE51bWJlcl0sZGVmYXVsdDpgYH0sdHJhbnNmb3JtOnt0eXBlOltTdHJpbmcsT2JqZWN0XSxkZWZhdWx0Om51bGx9LGNvdW50ZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsLHZhbGlkYXRvcjpmdW5jdGlvbihlKXtyZXR1cm5bYGJvdHRvbS1sZWZ0YCxgYm90dG9tLXJpZ2h0YCxgdG9wLWxlZnRgLGB0b3AtcmlnaHRgXS5pbmRleE9mKGUpPi0xfX19LHNldHVwOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5hdHRycyxyPUlvLmZhbWlseVByZWZpeCxpPUwoZnVuY3Rpb24oKXtyZXR1cm4gUW8oYGNsYXNzZXNgLFtdLmNvbmNhdChxbyhlLmNvdW50ZXI/W2Ake3J9LWxheWVycy1jb3VudGVyYF06W10pLHFvKGUucG9zaXRpb24/W2Ake3J9LWxheWVycy0ke2UucG9zaXRpb259YF06W10pKSl9KSxhPUwoZnVuY3Rpb24oKXtyZXR1cm4gUW8oYHRyYW5zZm9ybWAsdHlwZW9mIGUudHJhbnNmb3JtPT1gc3RyaW5nYD9Mby50cmFuc2Zvcm0oZS50cmFuc2Zvcm0pOmUudHJhbnNmb3JtKX0pLG89TChmdW5jdGlvbigpe3ZhciB0PXpvKGUudmFsdWUudG9TdHJpbmcoKSxYKFgoe30sYS52YWx1ZSksaS52YWx1ZSkpLmFic3RyYWN0O3JldHVybiBlLmNvdW50ZXImJih0WzBdLmF0dHJpYnV0ZXMuY2xhc3M9dFswXS5hdHRyaWJ1dGVzLmNsYXNzLnJlcGxhY2UoYGZhLWxheWVycy10ZXh0YCxgYCkpLHRbMF19KSxzPUwoZnVuY3Rpb24oKXtyZXR1cm4gdXMoby52YWx1ZSx7fSxuKX0pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBzLnZhbHVlfX19KTt2YXIgaHM9e3ByZWZpeDpgZmFiYCxpY29uTmFtZTpgZ2l0aHViYCxpY29uOls1MTIsNTEyLFtdLGBmMDliYCxgTTIxNi41IDM2Mi41Yy02Ni04LTExMi41LTU1LjUtMTEyLjUtMTE3IDAtMjUgOS01MiAyNC03MC02LjUtMTYuNS01LjUtNTEuNSAyLTY2IDIwLTIuNSA0NyA4IDYzIDIyLjUgMTktNiAzOS05IDYzLjUtOXM0NC41IDMgNjIuNSA4LjVjMTUuNS0xNCA0My0yNC41IDYzLTIyIDcgMTMuNSA4IDQ4LjUgMS41IDY1LjUgMTYgMTkgMjQuNSA0NC41IDI0LjUgNzAuNSAwIDYxLjUtNDYuNSAxMDgtMTEzLjUgMTE2LjUgMTcgMTEgMjguNSAzNSAyOC41IDYyLjVsMCA1MkMzMjMgNDkxLjUgMzM1LjUgNTAwIDM1MC41IDQ5NCA0NDEgNDU5LjUgNTEyIDM2OSA1MTIgMjU3IDUxMiAxMTUuNSAzOTcgMCAyNTUuNSAwUzAgMTE1LjUgMCAyNTdjMCAxMTEgNzAuNSAyMDMgMTY1LjUgMjM3LjUgMTMuNSA1IDI2LjUtNCAyNi41LTE3LjVsMC00MGMtNyAzLTE2IDUtMjQgNS0zMyAwLTUyLjUtMTgtNjYuNS01MS41LTUuNS0xMy41LTExLjUtMjEuNS0yMy0yMy02LS41LTgtMy04LTYgMC02IDEwLTEwLjUgMjAtMTAuNSAxNC41IDAgMjcgOSA0MCAyNy41IDEwIDE0LjUgMjAuNSAyMSAzMyAyMXMyMC41LTQuNSAzMi0xNmM4LjUtOC41IDE1LTE2IDIxLTIxemBdfSxncz1IKHtfX25hbWU6YEFsZXJ0YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sdmFyaWFudDp7fX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4obixyKT0+KFAoKSx6KGBkaXZgLHsiZGF0YS1zbG90IjpgYWxlcnRgLGNsYXNzOmR0KEIodykoQih5cykoe3ZhcmlhbnQ6ZS52YXJpYW50fSksdC5jbGFzcykpLHJvbGU6YGFsZXJ0YH0sW04obi4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLF9zPUgoe19fbmFtZTpgQWxlcnREZXNjcmlwdGlvbmAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLG4pPT4oUCgpLHooYGRpdmAseyJkYXRhLXNsb3QiOmBhbGVydC1kZXNjcmlwdGlvbmAsY2xhc3M6ZHQoQih3KShgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRleHQtc20gdGV4dC1iYWxhbmNlIG1kOnRleHQtcHJldHR5IFsmX3A6bm90KDpsYXN0LWNoaWxkKV06bWItNCBbJl9hXTp1bmRlcmxpbmUgWyZfYV06dW5kZXJsaW5lLW9mZnNldC0zIFsmX2FdOmhvdmVyOnRleHQtZm9yZWdyb3VuZGAsdC5jbGFzcykpfSxbTihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksdnM9SCh7X19uYW1lOmBBbGVydFRpdGxlYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihQKCkseihgZGl2YCx7ImRhdGEtc2xvdCI6YGFsZXJ0LXRpdGxlYCxjbGFzczpkdChCKHcpKGBmb250LW1lZGl1bSBncm91cC1oYXMtWz5zdmddL2FsZXJ0OmNvbC1zdGFydC0yIGZvbnQtaGVhZGluZyBbJl9hXTp1bmRlcmxpbmUgWyZfYV06dW5kZXJsaW5lLW9mZnNldC0zIFsmX2FdOmhvdmVyOnRleHQtZm9yZWdyb3VuZGAsdC5jbGFzcykpfSxbTihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSkseXM9WGUoYGdyaWQgZ2FwLTAuNSByb3VuZGVkLWxnIGJvcmRlciBweC0yLjUgcHktMiB0ZXh0LWxlZnQgdGV4dC1zbSBoYXMtZGF0YS1bc2xvdD1hbGVydC1hY3Rpb25dOnJlbGF0aXZlIGhhcy1kYXRhLVtzbG90PWFsZXJ0LWFjdGlvbl06cHItMTggaGFzLVs+c3ZnXTpncmlkLWNvbHMtW2F1dG9fMWZyXSBoYXMtWz5zdmddOmdhcC14LTIgKjpbc3ZnXTpyb3ctc3Bhbi0yICo6W3N2Z106dHJhbnNsYXRlLXktMC41ICo6W3N2Z106dGV4dC1jdXJyZW50ICo6W3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTQgZ3JvdXAvYWxlcnQgcmVsYXRpdmUgdy1mdWxsYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLWNhcmQgdGV4dC1jYXJkLWZvcmVncm91bmRgLGRlc3RydWN0aXZlOmB0ZXh0LWRlc3RydWN0aXZlIGJnLWNhcmQgKjpkYXRhLVtzbG90PWFsZXJ0LWRlc2NyaXB0aW9uXTp0ZXh0LWRlc3RydWN0aXZlLzkwICo6W3N2Z106dGV4dC1jdXJyZW50YCx3YXJuOmB0ZXh0LXN0YXR1cy13YXJuIGJnLWNhcmQgKjpkYXRhLVtzbG90PWFsZXJ0LWRlc2NyaXB0aW9uXTp0ZXh0LXN0YXR1cy13YXJuLzkwICo6W3N2Z106dGV4dC1jdXJyZW50YH19LGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDpgZGVmYXVsdGB9fSk7ZnVuY3Rpb24gYnMoZSl7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYD9gJyR7ZX0nYDpuZXcgd3MoKS5zZXJpYWxpemUoZSl9dmFyIHhzPWAgXy0sOzohPy4nIigpW117fUAqL1xcJiMlXGBeKzw9Pnx+JDAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emAsU3M9KGZ1bmN0aW9uKCl7bGV0IGU9bmV3IFVpbnQ4QXJyYXkoMTI4KTtmb3IobGV0IHQ9MDt0PDY5O3QrKyllW3hzLmNoYXJDb2RlQXQodCldPXQrMTtmb3IobGV0IHQ9NjU7dDw9OTA7dCsrKWVbdF09ZVt0KzMyXTtyZXR1cm4gZX0pKCk7ZnVuY3Rpb24gQ3MoZSx0KXtpZihlPT09dClyZXR1cm4gMDtsZXQgbj1NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCkscj0wO2ZvcihsZXQgaT0wO2k8bjtpKyspe2xldCBuPWUuY2hhckNvZGVBdChpKSxhPXQuY2hhckNvZGVBdChpKTtpZihuPT09YSljb250aW51ZTtsZXQgbz1uPDEyOCYmU3Nbbl0/U3Nbbl06bisxMjgscz1hPDEyOCYmU3NbYV0/U3NbYV06YSsxMjg7aWYobyE9PXMpcmV0dXJuIG88cz8tMToxO3I9PT0wJiYocj1uPmE/LTE6MSl9cmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGg/cjplLmxlbmd0aDx0Lmxlbmd0aD8tMToxfXZhciB3cz0oZnVuY3Rpb24oKXtjbGFzcyBleyNlPW5ldyBNYXA7Y29tcGFyZShlLHQpe2xldCBuPXR5cGVvZiBlLHI9dHlwZW9mIHQ7cmV0dXJuIG49PT1gc3RyaW5nYCYmcj09PWBzdHJpbmdgP0NzKGUsdCk6bj09PWBudW1iZXJgJiZyPT09YG51bWJlcmA/ZS10OkNzKHRoaXMuc2VyaWFsaXplKGUsITApLHRoaXMuc2VyaWFsaXplKHQsITApKX1zZXJpYWxpemUoZSx0KXtpZihlPT09bnVsbClyZXR1cm5gbnVsbGA7c3dpdGNoKHR5cGVvZiBlKXtjYXNlYHN0cmluZ2A6cmV0dXJuIHQ/ZTpgJyR7ZX0nYDtjYXNlYGJpZ2ludGA6cmV0dXJuYCR7ZX1uYDtjYXNlYG9iamVjdGA6cmV0dXJuIHRoaXMuJG9iamVjdChlKTtjYXNlYGZ1bmN0aW9uYDpyZXR1cm4gdGhpcy4kZnVuY3Rpb24oZSl9cmV0dXJuIFN0cmluZyhlKX1zZXJpYWxpemVPYmplY3QoZSl7bGV0IHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO2lmKHQhPT1gW29iamVjdCBPYmplY3RdYClyZXR1cm4gdGhpcy5zZXJpYWxpemVCdWlsdEluVHlwZSh0Lmxlbmd0aDwxMD9gdW5rbm93bjoke3R9YDp0LnNsaWNlKDgsLTEpLGUpO2xldCBuPWUuY29uc3RydWN0b3Iscj1uPT09T2JqZWN0fHxuPT09dm9pZCAwP2BgOm4ubmFtZTtpZihyIT09YGAmJmdsb2JhbFRoaXNbcl09PT1uKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKHIsZSk7aWYoYHRvSlNPTmBpbiBlJiZ0eXBlb2YgZS50b0pTT049PWBmdW5jdGlvbmApe2xldCB0PWUudG9KU09OKCk7cmV0dXJuIHIrKHR5cGVvZiB0PT1gb2JqZWN0YCYmdD90aGlzLiRvYmplY3QodCk6YCgke3RoaXMuc2VyaWFsaXplKHQpfSlgKX1sZXQgaT1PYmplY3Qua2V5cyhlKS5zb3J0KENzKSxhPWAke3J9e2A7Zm9yKGxldCB0PTA7dDxpLmxlbmd0aDt0Kyspe2xldCBuPWlbdF07YSs9YCR7bn06JHt0aGlzLnNlcmlhbGl6ZShlW25dKX1gLHQ8aS5sZW5ndGgtMSYmKGErPWAsYCl9cmV0dXJuIGErYH1gfXNlcmlhbGl6ZUJ1aWx0SW5UeXBlKGUsdCl7bGV0IG49dGhpc1tgJGArZV07aWYobilyZXR1cm4gbi5jYWxsKHRoaXMsdCk7aWYodHlwZW9mIHQuZW50cmllcz09YGZ1bmN0aW9uYClyZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKGUsdC5lbnRyaWVzKCkpO3Rocm93IEVycm9yKGBDYW5ub3Qgc2VyaWFsaXplICR7ZX1gKX1zZXJpYWxpemVPYmplY3RFbnRyaWVzKGUsdCl7bGV0IG49QXJyYXkuZnJvbSh0KS5zb3J0KChlLHQpPT50aGlzLmNvbXBhcmUoZVswXSx0WzBdKSkscj1gJHtlfXtgO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKXtsZXRbdCxpXT1uW2VdO3IrPWAke3RoaXMuc2VyaWFsaXplKHQsITApfToke3RoaXMuc2VyaWFsaXplKGkpfWAsZTxuLmxlbmd0aC0xJiYocis9YCxgKX1yZXR1cm4gcitgfWB9JG9iamVjdChlKXtsZXQgdD10aGlzLiNlLmdldChlKTtyZXR1cm4gdD09PXZvaWQgMCYmKHRoaXMuI2Uuc2V0KGUsYCMke3RoaXMuI2Uuc2l6ZX1gKSx0PXRoaXMuc2VyaWFsaXplT2JqZWN0KGUpLHRoaXMuI2Uuc2V0KGUsdCkpLHR9JGZ1bmN0aW9uKGUpe2xldCB0PUZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO3JldHVybiB0LnNsaWNlKC0xNSk9PT1gW25hdGl2ZSBjb2RlXSB9YD9gJHtlLm5hbWV8fGBgfSgpW25hdGl2ZV1gOmAke2UubmFtZX0oJHtlLmxlbmd0aH0pJHt0LnJlcGxhY2UoL1xzKlxuXHMqL2csYGApfWB9JEFycmF5KGUpe2xldCB0PWBbYDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl0Kz10aGlzLnNlcmlhbGl6ZShlW25dKSxuPGUubGVuZ3RoLTEmJih0Kz1gLGApO3JldHVybiB0K2BdYH0kRGF0ZShlKXt0cnl7cmV0dXJuYERhdGUoJHtlLnRvSVNPU3RyaW5nKCl9KWB9Y2F0Y2h7cmV0dXJuYERhdGUobnVsbClgfX0kQXJyYXlCdWZmZXIoZSl7cmV0dXJuYEFycmF5QnVmZmVyWyR7bmV3IFVpbnQ4QXJyYXkoZSkuam9pbihgLGApfV1gfSRTZXQoZSl7cmV0dXJuYFNldCR7dGhpcy4kQXJyYXkoQXJyYXkuZnJvbShlKS5zb3J0KChlLHQpPT50aGlzLmNvbXBhcmUoZSx0KSkpfWB9JE1hcChlKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVPYmplY3RFbnRyaWVzKGBNYXBgLGUuZW50cmllcygpKX19Zm9yKGxldCB0IG9mW2BFcnJvcmAsYFJlZ0V4cGAsYFVSTGBdKWUucHJvdG90eXBlW2AkYCt0XT1mdW5jdGlvbihlKXtyZXR1cm5gJHt0fSgke2V9KWB9O2ZvcihsZXQgdCBvZltgSW50OEFycmF5YCxgVWludDhBcnJheWAsYFVpbnQ4Q2xhbXBlZEFycmF5YCxgSW50MTZBcnJheWAsYFVpbnQxNkFycmF5YCxgSW50MzJBcnJheWAsYFVpbnQzMkFycmF5YCxgRmxvYXQzMkFycmF5YCxgRmxvYXQ2NEFycmF5YF0pZS5wcm90b3R5cGVbYCRgK3RdPWZ1bmN0aW9uKGUpe3JldHVybmAke3R9WyR7ZS5qb2luKGAsYCl9XWB9O2ZvcihsZXQgdCBvZltgQmlnSW50NjRBcnJheWAsYEJpZ1VpbnQ2NEFycmF5YF0pZS5wcm90b3R5cGVbYCRgK3RdPWZ1bmN0aW9uKGUpe3JldHVybmAke3R9WyR7ZS5qb2luKGBuLGApfSR7ZS5sZW5ndGg+MD9gbmA6YGB9XWB9O3JldHVybiBlfSkoKTtmdW5jdGlvbiBUcyhlLHQpe3JldHVybiBlPT09dHx8YnMoZSk9PT1icyh0KX1mdW5jdGlvbiBFcyhlLHQ9LTEvMCxuPTEvMCl7cmV0dXJuIE1hdGgubWluKG4sTWF0aC5tYXgodCxlKSl9ZnVuY3Rpb24gWigpe2xldCBlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtmb3IoO2UhPW51bGwmJmUuc2hhZG93Um9vdCE9bnVsbCYmZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQhPW51bGw7KWU9ZS5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGV9ZnVuY3Rpb24gRHMoZSx0LG4pe2xldCByPW4ub3JpZ2luYWxFdmVudC50YXJnZXQsaT1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiEwLGRldGFpbDpufSk7dCYmci5hZGRFdmVudExpc3RlbmVyKGUsdCx7b25jZTohMH0pLHIuZGlzcGF0Y2hFdmVudChpKX1mdW5jdGlvbiBPcyhlKXtyZXR1cm4gZT09bnVsbH12YXIgUT1xZSh7bGF5ZXJzUm9vdDpuZXcgU2V0LGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOm5ldyBTZXQsb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50czp2b2lkIDAsYnJhbmNoZXM6bmV3IFNldH0pO2Z1bmN0aW9uIGtzKGUpe2lmKHR5cGVvZiBlIT1gb2JqZWN0YHx8IWUpcmV0dXJuITE7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0IT09bnVsbCYmdCE9PU9iamVjdC5wcm90b3R5cGUmJk9iamVjdC5nZXRQcm90b3R5cGVPZih0KSE9PW51bGx8fFN5bWJvbC5pdGVyYXRvciBpbiBlPyExOlN5bWJvbC50b1N0cmluZ1RhZyBpbiBlP09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PWBbb2JqZWN0IE1vZHVsZV1gOiEwfWZ1bmN0aW9uIEFzKGUsdCxuPWAuYCxyKXtpZigha3ModCkpcmV0dXJuIEFzKGUse30sbixyKTtsZXQgaT17Li4udH07Zm9yKGxldCB0IG9mIE9iamVjdC5rZXlzKGUpKXtpZih0PT09YF9fcHJvdG9fX2B8fHQ9PT1gY29uc3RydWN0b3JgKWNvbnRpbnVlO2xldCBhPWVbdF07YSE9bnVsbCYmKHImJnIoaSx0LGEsbil8fChpW3RdPUFycmF5LmlzQXJyYXkoYSkmJkFycmF5LmlzQXJyYXkoaVt0XSk/Wy4uLmEsLi4uaVt0XV06a3MoYSkmJmtzKGlbdF0pP0FzKGEsaVt0XSwobj9gJHtufS5gOmBgKSt0LnRvU3RyaW5nKCkscik6YSkpfXJldHVybiBpfWZ1bmN0aW9uIGpzKGUpe3JldHVybiguLi50KT0+dC5yZWR1Y2UoKHQsbik9PkFzKHQsbixgYCxlKSx7fSl9dmFyIE1zPWpzKCksTnM9dSgoKT0+e2xldCBlPWoobmV3IE1hcCksdD1qKCksbj1MKCgpPT57Zm9yKGxldCB0IG9mIGUudmFsdWUudmFsdWVzKCkpaWYodClyZXR1cm4hMDtyZXR1cm4hMX0pLGk9cih7c2Nyb2xsQm9keTpqKCEwKX0pLGE9bnVsbCxvPSgpPT57ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9YGAsZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW5SaWdodD1gYCxRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0wJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPWBgKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoYC0tc2Nyb2xsYmFyLXdpZHRoYCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz10LnZhbHVlPz9gYCxiJiZhPy4oKSx0LnZhbHVlPXZvaWQgMH07cmV0dXJuIEQobiwoZSxyKT0+e2lmKCFtZSlyZXR1cm47aWYoIWUpe3ImJm8oKTtyZXR1cm59dC52YWx1ZT09PXZvaWQgMCYmKHQudmFsdWU9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyk7bGV0IHM9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGM9e3BhZGRpbmc6cyxtYXJnaW46MH0sbD1pLnNjcm9sbEJvZHk/LnZhbHVlP3R5cGVvZiBpLnNjcm9sbEJvZHkudmFsdWU9PWBvYmplY3RgP01zKHtwYWRkaW5nOmkuc2Nyb2xsQm9keS52YWx1ZS5wYWRkaW5nPT09ITA/czppLnNjcm9sbEJvZHkudmFsdWUucGFkZGluZyxtYXJnaW46aS5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbj09PSEwP3M6aS5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbn0sYyk6Yzp7cGFkZGluZzowLG1hcmdpbjowfTtzPjAmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10eXBlb2YgbC5wYWRkaW5nPT1gbnVtYmVyYD9gJHtsLnBhZGRpbmd9cHhgOlN0cmluZyhsLnBhZGRpbmcpLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9dHlwZW9mIGwubWFyZ2luPT1gbnVtYmVyYD9gJHtsLm1hcmdpbn1weGA6U3RyaW5nKGwubWFyZ2luKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYC0tc2Nyb2xsYmFyLXdpZHRoYCxgJHtzfXB4YCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1gaGlkZGVuYCksYiYmKGE9Xyhkb2N1bWVudCxgdG91Y2htb3ZlYCxlPT5JcyhlKSx7cGFzc2l2ZTohMX0pKSx5KCgpPT57bi52YWx1ZSYmKGRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz1gbm9uZWAsZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1gaGlkZGVuYCl9KX0se2ltbWVkaWF0ZTohMCxmbHVzaDpgc3luY2B9KSxlfSk7ZnVuY3Rpb24gUHMoZSl7bGV0IHQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsNyksbj1OcygpO24udmFsdWUuc2V0KHQsZT8/ITEpO2xldCByPUwoe2dldDooKT0+bi52YWx1ZS5nZXQodCk/PyExLHNldDplPT5uLnZhbHVlLnNldCh0LGUpfSk7cmV0dXJuIHYoKCk9PntuLnZhbHVlLmRlbGV0ZSh0KX0pLHJ9ZnVuY3Rpb24gRnMoZSl7bGV0IHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSk7aWYodC5vdmVyZmxvd1g9PT1gc2Nyb2xsYHx8dC5vdmVyZmxvd1k9PT1gc2Nyb2xsYHx8dC5vdmVyZmxvd1g9PT1gYXV0b2AmJmUuY2xpZW50V2lkdGg8ZS5zY3JvbGxXaWR0aHx8dC5vdmVyZmxvd1k9PT1gYXV0b2AmJmUuY2xpZW50SGVpZ2h0PGUuc2Nyb2xsSGVpZ2h0KXJldHVybiEwO3tsZXQgdD1lLnBhcmVudE5vZGU7cmV0dXJuISh0IGluc3RhbmNlb2YgRWxlbWVudCl8fHQudGFnTmFtZT09PWBCT0RZYD8hMTpGcyh0KX19ZnVuY3Rpb24gSXMoZSl7bGV0IHQ9ZXx8d2luZG93LmV2ZW50LG49dC50YXJnZXQ7cmV0dXJuIG4gaW5zdGFuY2VvZiBFbGVtZW50JiZGcyhuKT8hMTp0LnRvdWNoZXMubGVuZ3RoPjF8fCh0LnByZXZlbnREZWZhdWx0JiZ0LmNhbmNlbGFibGUmJnQucHJldmVudERlZmF1bHQoKSwhMSl9dmFyIExzPTA7ZnVuY3Rpb24gUnMoKXtPKGU9PntpZighbWUpcmV0dXJuO2xldCB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLXJla2EtZm9jdXMtZ3VhcmRdYCk7ZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoYGFmdGVyYmVnaW5gLHRbMF0/P3pzKCkpLGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGBiZWZvcmVlbmRgLHRbMV0/P3pzKCkpLExzKyssZSgoKT0+e0xzPT09MSYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtcmVrYS1mb2N1cy1ndWFyZF1gKS5mb3JFYWNoKGU9PmUucmVtb3ZlKCkpLExzLS19KX0pfWZ1bmN0aW9uIHpzKCl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgc3BhbmApO3JldHVybiBlLnNldEF0dHJpYnV0ZShgZGF0YS1yZWthLWZvY3VzLWd1YXJkYCxgYCksZS50YWJJbmRleD0wLGUuc3R5bGUub3V0bGluZT1gbm9uZWAsZS5zdHlsZS5vcGFjaXR5PWAwYCxlLnN0eWxlLnBvc2l0aW9uPWBmaXhlZGAsZS5zdHlsZS5wb2ludGVyRXZlbnRzPWBub25lYCxlfWZ1bmN0aW9uIEJzKGUpe3JldHVybiBMKCgpPT4hamUoZSl8fCEhcmUoZSk/LmNsb3Nlc3QoYGZvcm1gKSl9dmFyIFZzPWZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZG9jdW1lbnQ+YHVgP251bGw6KEFycmF5LmlzQXJyYXkoZSk/ZVswXTplKS5vd25lckRvY3VtZW50LmJvZHl9LEhzPW5ldyBXZWFrTWFwLFVzPW5ldyBXZWFrTWFwLFdzPXt9LEdzPTAsS3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJihlLmhvc3R8fEtzKGUucGFyZW50Tm9kZSkpfSxxcz1mdW5jdGlvbihlLHQpe3JldHVybiB0Lm1hcChmdW5jdGlvbih0KXtpZihlLmNvbnRhaW5zKHQpKXJldHVybiB0O3ZhciBuPUtzKHQpO3JldHVybiBuJiZlLmNvbnRhaW5zKG4pP246KGNvbnNvbGUuZXJyb3IoYGFyaWEtaGlkZGVuYCx0LGBpbiBub3QgY29udGFpbmVkIGluc2lkZWAsZSxgLiBEb2luZyBub3RoaW5nYCksbnVsbCl9KS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSl9LEpzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXFzKHQsQXJyYXkuaXNBcnJheShlKT9lOltlXSk7V3Nbbl18fChXc1tuXT1uZXcgV2Vha01hcCk7dmFyIGE9V3Nbbl0sbz1bXSxzPW5ldyBTZXQsYz1uZXcgU2V0KGkpLGw9ZnVuY3Rpb24oZSl7IWV8fHMuaGFzKGUpfHwocy5hZGQoZSksbChlLnBhcmVudE5vZGUpKX07aS5mb3JFYWNoKGwpO3ZhciB1PWZ1bmN0aW9uKGUpeyFlfHxjLmhhcyhlKXx8QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChlLmNoaWxkcmVuLGZ1bmN0aW9uKGUpe2lmKHMuaGFzKGUpKXUoZSk7ZWxzZSB0cnl7dmFyIHQ9ZS5nZXRBdHRyaWJ1dGUociksaT10IT09bnVsbCYmdCE9PWBmYWxzZWAsYz0oSHMuZ2V0KGUpfHwwKSsxLGw9KGEuZ2V0KGUpfHwwKSsxO0hzLnNldChlLGMpLGEuc2V0KGUsbCksby5wdXNoKGUpLGM9PT0xJiZpJiZVcy5zZXQoZSwhMCksbD09PTEmJmUuc2V0QXR0cmlidXRlKG4sYHRydWVgKSxpfHxlLnNldEF0dHJpYnV0ZShyLGB0cnVlYCl9Y2F0Y2godCl7Y29uc29sZS5lcnJvcihgYXJpYS1oaWRkZW46IGNhbm5vdCBvcGVyYXRlIG9uIGAsZSx0KX19KX07cmV0dXJuIHUodCkscy5jbGVhcigpLEdzKyssZnVuY3Rpb24oKXtvLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9SHMuZ2V0KGUpLTEsaT1hLmdldChlKS0xO0hzLnNldChlLHQpLGEuc2V0KGUsaSksdHx8KFVzLmhhcyhlKXx8ZS5yZW1vdmVBdHRyaWJ1dGUociksVXMuZGVsZXRlKGUpKSxpfHxlLnJlbW92ZUF0dHJpYnV0ZShuKX0pLEdzLS0sR3N8fChIcz1uZXcgV2Vha01hcCxIcz1uZXcgV2Vha01hcCxVcz1uZXcgV2Vha01hcCxXcz17fSl9fSxZcz1mdW5jdGlvbihlLHQsbil7bj09PXZvaWQgMCYmKG49YGRhdGEtYXJpYS1oaWRkZW5gKTt2YXIgcj1BcnJheS5mcm9tKEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pLGk9dHx8VnMoZSk7cmV0dXJuIGk/KHIucHVzaC5hcHBseShyLEFycmF5LmZyb20oaS5xdWVyeVNlbGVjdG9yQWxsKGBbYXJpYS1saXZlXSwgc2NyaXB0YCkpKSxKcyhyLGksbixgYXJpYS1oaWRkZW5gKSk6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O2Z1bmN0aW9uIFhzKGUpe2xldCB0O0QoKCk9PnJlKGUpLGU9PntsZXQgbj0hMTt0cnl7bj0hIWU/LmNsb3Nlc3QoYFtwb3BvdmVyXTpub3QoOnBvcG92ZXItb3BlbilgKX1jYXRjaHt9ZSYmIW4/dD1ZcyhlKTp0JiZ0KCl9KSxHZSgoKT0+e3QmJnQoKX0pfWZ1bmN0aW9uIFpzKGUpe2xldCB0PWooKSxuPUwoKCk9PnQudmFsdWU/LndpZHRoPz8wKSxyPUwoKCk9PnQudmFsdWU/LmhlaWdodD8/MCksaTtyZXR1cm4gb2UoKCk9PntsZXQgbj1yZShlKTtuPyh0LnZhbHVlPXt3aWR0aDpuLm9mZnNldFdpZHRoLGhlaWdodDpuLm9mZnNldEhlaWdodH0saT1uZXcgUmVzaXplT2JzZXJ2ZXIoZT0+e2lmKCFBcnJheS5pc0FycmF5KGUpfHwhZS5sZW5ndGgpcmV0dXJuO2xldCByPWVbMF0saSxhO2lmKGBib3JkZXJCb3hTaXplYGluIHIpe2xldCBlPXIuYm9yZGVyQm94U2l6ZSx0PUFycmF5LmlzQXJyYXkoZSk/ZVswXTplO2k9dC5pbmxpbmVTaXplLGE9dC5ibG9ja1NpemV9ZWxzZSBpPW4ub2Zmc2V0V2lkdGgsYT1uLm9mZnNldEhlaWdodDt0LnZhbHVlPXt3aWR0aDppLGhlaWdodDphfX0pLGkub2JzZXJ2ZShuLHtib3g6YGJvcmRlci1ib3hgfSkpOnQudmFsdWU9dm9pZCAwfSksR2UoKCk9PntpPy5kaXNjb25uZWN0KCksaT12b2lkIDB9KSx7d2lkdGg6bixoZWlnaHQ6cn19ZnVuY3Rpb24gUXMoZSx0KXtsZXQgbj1qKGUpO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHRbbi52YWx1ZV1bZV0/P24udmFsdWV9cmV0dXJue3N0YXRlOm4sZGlzcGF0Y2g6ZT0+e24udmFsdWU9cihlKX19fWZ1bmN0aW9uICRzKGUpe2xldCB0PWdlKGBgLDFlMyk7cmV0dXJue3NlYXJjaDp0LGhhbmRsZVR5cGVhaGVhZFNlYXJjaDoobixyKT0+e2lmKHQudmFsdWUrPW4sZSllKG4pO2Vsc2V7bGV0IGU9WigpLG49ci5tYXAoZT0+KHsuLi5lLHRleHRWYWx1ZTplLnZhbHVlPy50ZXh0VmFsdWU/P2UucmVmLnRleHRDb250ZW50Py50cmltKCk/P2BgfSkpLGk9bi5maW5kKHQ9PnQucmVmPT09ZSksYT10YyhuLm1hcChlPT5lLnRleHRWYWx1ZSksdC52YWx1ZSxpPy50ZXh0VmFsdWUpLG89bi5maW5kKGU9PmUudGV4dFZhbHVlPT09YSk7cmV0dXJuIG8mJm8ucmVmLmZvY3VzKCksbz8ucmVmfX0scmVzZXRUeXBlYWhlYWQ6KCk9Pnt0LnZhbHVlPWBgfX19ZnVuY3Rpb24gZWMoZSx0KXtyZXR1cm4gZS5tYXAoKG4scik9PmVbKHQrciklZS5sZW5ndGhdKX1mdW5jdGlvbiB0YyhlLHQsbil7bGV0IHI9dC5sZW5ndGg+MSYmQXJyYXkuZnJvbSh0KS5ldmVyeShlPT5lPT09dFswXSk/dFswXTp0LGk9bj9lLmluZGV4T2Yobik6LTEsYT1lYyhlLE1hdGgubWF4KGksMCkpO3IubGVuZ3RoPT09MSYmKGE9YS5maWx0ZXIoZT0+ZSE9PW4pKTtsZXQgbz1hLmZpbmQoZT0+ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoci50b0xvd2VyQ2FzZSgpKSk7cmV0dXJuIG89PT1uP3ZvaWQgMDpvfWZ1bmN0aW9uIG5jKGUsdCl7bGV0IG49aih7fSkscj1qKGBub25lYCksaT1qKGUpLGE9ZS52YWx1ZT9gbW91bnRlZGA6YHVubW91bnRlZGAsbyxzPXQudmFsdWU/Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc/P2VlLHtzdGF0ZTpjLGRpc3BhdGNoOmx9PVFzKGEse21vdW50ZWQ6e1VOTU9VTlQ6YHVubW91bnRlZGAsQU5JTUFUSU9OX09VVDpgdW5tb3VudFN1c3BlbmRlZGB9LHVubW91bnRTdXNwZW5kZWQ6e01PVU5UOmBtb3VudGVkYCxBTklNQVRJT05fRU5EOmB1bm1vdW50ZWRgfSx1bm1vdW50ZWQ6e01PVU5UOmBtb3VudGVkYH19KSx1PWU9PntpZihtZSl7bGV0IG49bmV3IEN1c3RvbUV2ZW50KGUse2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMX0pO3QudmFsdWU/LmRpc3BhdGNoRXZlbnQobil9fTtEKGUsYXN5bmMoZSxpKT0+e2xldCBhPWkhPT1lO2lmKGF3YWl0IHkoKSxhKXtsZXQgYT1yLnZhbHVlLG89cmModC52YWx1ZSk7ZT8obChgTU9VTlRgKSx1KGBlbnRlcmApLG89PT1gbm9uZWAmJnUoYGFmdGVyLWVudGVyYCkpOm89PT1gbm9uZWB8fG89PT1gdW5kZWZpbmVkYHx8bi52YWx1ZT8uZGlzcGxheT09PWBub25lYD8obChgVU5NT1VOVGApLHUoYGxlYXZlYCksdShgYWZ0ZXItbGVhdmVgKSk6aSYmYSE9PW8/KGwoYEFOSU1BVElPTl9PVVRgKSx1KGBsZWF2ZWApKToobChgVU5NT1VOVGApLHUoYGFmdGVyLWxlYXZlYCkpfX0se2ltbWVkaWF0ZTohMH0pO2xldCBkPWU9PntpZihlLnRhcmdldCE9PXQudmFsdWUpcmV0dXJuO2xldCBuPXJjKHQudmFsdWUpLHI9bi5pbmNsdWRlcyhDU1MuZXNjYXBlKGUuYW5pbWF0aW9uTmFtZSkpLGE9Yy52YWx1ZT09PWBtb3VudGVkYD9gZW50ZXJgOmBsZWF2ZWA7aWYociYmKHUoYGFmdGVyLSR7YX1gKSxsKGBBTklNQVRJT05fRU5EYCksIWkudmFsdWUpKXtsZXQgZT10LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO3QudmFsdWUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9YGZvcndhcmRzYCxvPXM/LnNldFRpbWVvdXQoKCk9Pnt0LnZhbHVlPy5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT09PWBmb3J3YXJkc2AmJih0LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPWUpfSl9bj09PWBub25lYCYmbChgQU5JTUFUSU9OX0VORGApfSxmPWU9PntlLnRhcmdldD09PXQudmFsdWUmJihyLnZhbHVlPXJjKHQudmFsdWUpKX0scD1EKHQsKGUsdCk9PntlPyhuLnZhbHVlPWdldENvbXB1dGVkU3R5bGUoZSksZS5hZGRFdmVudExpc3RlbmVyKGBhbmltYXRpb25zdGFydGAsZiksZS5hZGRFdmVudExpc3RlbmVyKGBhbmltYXRpb25jYW5jZWxgLGQpLGUuYWRkRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uZW5kYCxkKSk6KGwoYEFOSU1BVElPTl9FTkRgKSxvIT09dm9pZCAwJiZzPy5jbGVhclRpbWVvdXQobyksdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uc3RhcnRgLGYpLHQ/LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbmNhbmNlbGAsZCksdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uZW5kYCxkKSl9LHtpbW1lZGlhdGU6ITB9KSxtPUQoYywoKT0+e2xldCBlPXJjKHQudmFsdWUpO3IudmFsdWU9Yy52YWx1ZT09PWBtb3VudGVkYD9lOmBub25lYH0pO3JldHVybiBHZSgoKT0+e3AoKSxtKCksdC52YWx1ZSYmKHQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uc3RhcnRgLGYpLHQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uY2FuY2VsYCxkKSx0LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbmVuZGAsZCkpLG8hPT12b2lkIDAmJnM/LmNsZWFyVGltZW91dChvKX0pLHtpc1ByZXNlbnQ6TCgoKT0+W2Btb3VudGVkYCxgdW5tb3VudFN1c3BlbmRlZGBdLmluY2x1ZGVzKGMudmFsdWUpKX19ZnVuY3Rpb24gcmMoZSl7cmV0dXJuIGUmJmdldENvbXB1dGVkU3R5bGUoZSkuYW5pbWF0aW9uTmFtZXx8YG5vbmVgfXZhciBpYz1IKHtuYW1lOmBQcmVzZW5jZWAscHJvcHM6e3ByZXNlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMH0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFufX0sc2xvdHM6e30sc2V0dXAoZSx7c2xvdHM6dCxleHBvc2U6bn0pe2xldHtwcmVzZW50OnIsZm9yY2VNb3VudDppfT1GZShlKSxhPWooKSx7aXNQcmVzZW50Om99PW5jKHIsYSk7bih7cHJlc2VudDpvfSk7bGV0IHM9dC5kZWZhdWx0KHtwcmVzZW50Om8udmFsdWV9KTtzPVJlKHN8fFtdKTtsZXQgYz1oKCk7aWYocyYmcz8ubGVuZ3RoPjEpe2xldCBlPWM/LnBhcmVudD8udHlwZS5uYW1lP2A8JHtjLnBhcmVudC50eXBlLm5hbWV9IC8+YDpgY29tcG9uZW50YDt0aHJvdyBFcnJvcihbYERldGVjdGVkIGFuIGludmFsaWQgY2hpbGRyZW4gZm9yIFxgJHtlfVxgIGZvciAgXGBQcmVzZW5jZVxgIGNvbXBvbmVudC5gLGBgLCJOb3RlOiBQcmVzZW5jZSB3b3JrcyBzaW1pbGFybHkgdG8gYHYtaWZgIGRpcmVjdGx5LCBidXQgaXQgd2FpdHMgZm9yIGFuaW1hdGlvbi90cmFuc2l0aW9uIHRvIGZpbmlzaGVkIGJlZm9yZSB1bm1vdW50aW5nLiBTbyBpdCBleHBlY3Qgb25seSBvbmUgZGlyZWN0IGNoaWxkIG9mIHZhbGlkIFZOb2RlIHR5cGUuIixgWW91IGNhbiBhcHBseSBhIGZldyBzb2x1dGlvbnM6YCxbIlByb3ZpZGUgYSBzaW5nbGUgY2hpbGQgZWxlbWVudCBzbyB0aGF0IGBwcmVzZW5jZWAgZGlyZWN0aXZlIGF0dGFjaCBjb3JyZWN0bHkuIixgRW5zdXJlIHRoZSBmaXJzdCBjaGlsZCBpcyBhbiBhY3R1YWwgZWxlbWVudCBpbnN0ZWFkIG9mIGEgcmF3IHRleHQgbm9kZSBvciBjb21tZW50IG5vZGUuYF0ubWFwKGU9PmAgIC0gJHtlfWApLmpvaW4oYApgKV0uam9pbihgCmApKX1yZXR1cm4oKT0+aS52YWx1ZXx8ci52YWx1ZXx8by52YWx1ZT9sKHQuZGVmYXVsdCh7cHJlc2VudDpvLnZhbHVlfSlbMF0se3JlZjplPT57bGV0IHQ9cmUoZSk7cmV0dXJuIHQ/Lmhhc0F0dHJpYnV0ZT09PXZvaWQgMHx8KHQ/Lmhhc0F0dHJpYnV0ZShgZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXJgKT9hLnZhbHVlPXQuZmlyc3RFbGVtZW50Q2hpbGQ6YS52YWx1ZT10KSx0fX0pOm51bGx9fSk7ZnVuY3Rpb24gYWMoKXtsZXQgZT1qKCk7cmV0dXJue3ByaW1pdGl2ZUVsZW1lbnQ6ZSxjdXJyZW50RWxlbWVudDpMKCgpPT5bYCN0ZXh0YCxgI2NvbW1lbnRgXS5pbmNsdWRlcyhlLnZhbHVlPy4kZWwubm9kZU5hbWUpP2UudmFsdWU/LiRlbC5uZXh0RWxlbWVudFNpYmxpbmc6cmUoZSkpfX12YXIgb2M9YGRpc21pc3NhYmxlTGF5ZXIucG9pbnRlckRvd25PdXRzaWRlYCxzYz1gZGlzbWlzc2FibGVMYXllci5mb2N1c091dHNpZGVgO2Z1bmN0aW9uIGNjKGUsdCl7aWYoISh0IGluc3RhbmNlb2YgRWxlbWVudCkpcmV0dXJuITE7bGV0IG49dC5jbG9zZXN0KGBbZGF0YS1kaXNtaXNzYWJsZS1sYXllcl1gKSxyPWUuZGF0YXNldC5kaXNtaXNzYWJsZUxheWVyPT09YGA/ZTplLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLWRpc21pc3NhYmxlLWxheWVyXWApLGk9QXJyYXkuZnJvbShlLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZGlzbWlzc2FibGUtbGF5ZXJdYCkpO3JldHVybiEhKG4mJihyPT09bnx8aS5pbmRleE9mKHIpPGkuaW5kZXhPZihuKSkpfWZ1bmN0aW9uIGxjKGUsdCxuPSEwKXtsZXQgcj10Py52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcz8uZG9jdW1lbnQsaT1qKCExKSxhPWooKCk9Pnt9KTtyZXR1cm4gTyhvPT57aWYoIW1lfHwhamUobikpcmV0dXJuO2xldCBzPWFzeW5jIG49PntsZXQgbz1uLnRhcmdldDtpZighKCF0Py52YWx1ZXx8IW8pKXtpZihjYyh0LnZhbHVlLG8pKXtpLnZhbHVlPSExO3JldHVybn1pZihuLnRhcmdldCYmIWkudmFsdWUpe2xldCB0PXtvcmlnaW5hbEV2ZW50Om59O2Z1bmN0aW9uIGkoKXtEcyhvYyxlLHQpfW4ucG9pbnRlclR5cGU9PT1gdG91Y2hgPyhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlKSxhLnZhbHVlPWksci5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsYS52YWx1ZSx7b25jZTohMH0pKTppKCl9ZWxzZSByLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlKTtpLnZhbHVlPSExfX0sYz13aW5kb3cuc2V0VGltZW91dCgoKT0+e3IuYWRkRXZlbnRMaXN0ZW5lcihgcG9pbnRlcmRvd25gLHMpfSwwKTtvKCgpPT57d2luZG93LmNsZWFyVGltZW91dChjKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoYHBvaW50ZXJkb3duYCxzKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlKX0pfSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT57amUobikmJihpLnZhbHVlPSEwKX19fWZ1bmN0aW9uIHVjKGUsdCxuPSEwKXtsZXQgcj10Py52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcz8uZG9jdW1lbnQsaT1qKCExKTtyZXR1cm4gTyhhPT57aWYoIW1lfHwhamUobikpcmV0dXJuO2xldCBvPWFzeW5jIG49PntpZighdD8udmFsdWUpcmV0dXJuO2F3YWl0IHkoKSxhd2FpdCB5KCk7bGV0IHI9bi50YXJnZXQ7IXQudmFsdWV8fCFyfHxjYyh0LnZhbHVlLHIpfHxuLnRhcmdldCYmIWkudmFsdWUmJkRzKHNjLGUse29yaWdpbmFsRXZlbnQ6bn0pfTtyLmFkZEV2ZW50TGlzdGVuZXIoYGZvY3VzaW5gLG8pLGEoKCk9PnIucmVtb3ZlRXZlbnRMaXN0ZW5lcihgZm9jdXNpbmAsbykpfSkse29uRm9jdXNDYXB0dXJlOigpPT57amUobikmJihpLnZhbHVlPSEwKX0sb25CbHVyQ2FwdHVyZTooKT0+e2plKG4pJiYoaS52YWx1ZT0hMSl9fX12YXIgZGM9SCh7X19uYW1lOmBEaXNtaXNzYWJsZUxheWVyYCxwcm9wczp7ZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxwcmVzZW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH19LGVtaXRzOltgZXNjYXBlS2V5RG93bmAsYHBvaW50ZXJEb3duT3V0c2lkZWAsYGZvY3VzT3V0c2lkZWAsYGludGVyYWN0T3V0c2lkZWAsYGRpc21pc3NgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgcj1lLGk9bix7Zm9yd2FyZFJlZjphLGN1cnJlbnRFbGVtZW50Om99PXQoKSxzPUwoKCk9Pm8udmFsdWU/Lm93bmVyRG9jdW1lbnQ/P2dsb2JhbFRoaXMuZG9jdW1lbnQpLGM9TCgoKT0+US5sYXllcnNSb290KSxsPUwoKCk9Pm8udmFsdWU/QXJyYXkuZnJvbShjLnZhbHVlKS5pbmRleE9mKG8udmFsdWUpOi0xKSx1PUwoKCk9PlEubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZT4wKSxkPUwoKCk9PntsZXQgZT1BcnJheS5mcm9tKGMudmFsdWUpLFt0XT1bLi4uUS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0uc2xpY2UoLTEpLG49ZS5pbmRleE9mKHQpO3JldHVybiBsLnZhbHVlPj1ufSksZj1sYyhhc3luYyBlPT57bGV0IHQ9Wy4uLlEuYnJhbmNoZXNdLnNvbWUodD0+dD8uY29udGFpbnMoZS50YXJnZXQpKTshci5wcmVzZW50fHwhZC52YWx1ZXx8dHx8KGkoYHBvaW50ZXJEb3duT3V0c2lkZWAsZSksaShgaW50ZXJhY3RPdXRzaWRlYCxlKSxhd2FpdCB5KCksZS5kZWZhdWx0UHJldmVudGVkfHxpKGBkaXNtaXNzYCkpfSxvKSxtPXVjKGU9PntsZXQgdD1bLi4uUS5icmFuY2hlc10uc29tZSh0PT50Py5jb250YWlucyhlLnRhcmdldCkpOyFyLnByZXNlbnR8fHR8fChpKGBmb2N1c091dHNpZGVgLGUpLGkoYGludGVyYWN0T3V0c2lkZWAsZSksZS5kZWZhdWx0UHJldmVudGVkfHxpKGBkaXNtaXNzYCkpfSxvKTtyZXR1cm4gdGUoYEVzY2FwZWAsZT0+e3IucHJlc2VudCYmbC52YWx1ZT09PWMudmFsdWUuc2l6ZS0xJiYoaShgZXNjYXBlS2V5RG93bmAsZSksZS5kZWZhdWx0UHJldmVudGVkfHxpKGBkaXNtaXNzYCkpfSksRChbbywoKT0+ci5kaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsKCk9PnIucHJlc2VudF0sKFtlLHQsbl0scixpKT0+eyFlfHwhbnx8dCYmKFEubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZT09PTAmJihRLm9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM9cy52YWx1ZS5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMscy52YWx1ZS5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM9YG5vbmVgKSxRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmFkZChlKSxpKCgpPT57US5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUoZSksUS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPT09MCYmIU9zKFEub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cykmJihzLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz1RLm9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMpfSkpfSx7aW1tZWRpYXRlOiEwfSksRChbbywoKT0+ci5wcmVzZW50XSwoW2UsdF0sbixyKT0+eyFlfHwhdHx8KGMudmFsdWUuYWRkKGUpLHIoKCk9PntjLnZhbHVlLmRlbGV0ZShlKX0pKX0se2ltbWVkaWF0ZTohMH0pLE8oZT0+e2UoKCk9PntvLnZhbHVlJiYoYy52YWx1ZS5kZWxldGUoby52YWx1ZSksUS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUoby52YWx1ZSkpfSl9KSwoZSx0KT0+KFAoKSxNKEIoRikse3JlZjpCKGEpLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXMsImRhdGEtZGlzbWlzc2FibGUtbGF5ZXIiOmBgLHN0eWxlOnAoe3BvaW50ZXJFdmVudHM6dS52YWx1ZT9kLnZhbHVlP2BhdXRvYDpgbm9uZWA6dm9pZCAwfSksb25Gb2N1c0NhcHR1cmU6QihtKS5vbkZvY3VzQ2FwdHVyZSxvbkJsdXJDYXB0dXJlOkIobSkub25CbHVyQ2FwdHVyZSxvblBvaW50ZXJkb3duQ2FwdHVyZTpCKGYpLm9uUG9pbnRlckRvd25DYXB0dXJlfSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgYXMtY2hpbGRgLGBhc2AsYHN0eWxlYCxgb25Gb2N1c0NhcHR1cmVgLGBvbkJsdXJDYXB0dXJlYCxgb25Qb2ludGVyZG93bkNhcHR1cmVgXSkpfX0pLGZjPXB0KCgpPT5qKFtdKSk7ZnVuY3Rpb24gcGMoKXtsZXQgZT1mYygpO3JldHVybnthZGQodCl7bGV0IG49ZS52YWx1ZVswXTt0IT09biYmbj8ucGF1c2UoKSxlLnZhbHVlPW1jKGUudmFsdWUsdCksZS52YWx1ZS51bnNoaWZ0KHQpfSxyZW1vdmUodCl7ZS52YWx1ZT1tYyhlLnZhbHVlLHQpLGUudmFsdWVbMF0/LnJlc3VtZSgpfX19ZnVuY3Rpb24gbWMoZSx0KXtsZXQgbj1bLi4uZV0scj1uLmluZGV4T2YodCk7cmV0dXJuIHIhPT0tMSYmbi5zcGxpY2UociwxKSxufXZhciBoYz1gZm9jdXNTY29wZS5hdXRvRm9jdXNPbk1vdW50YCxnYz1gZm9jdXNTY29wZS5hdXRvRm9jdXNPblVubW91bnRgLF9jPXtidWJibGVzOiExLGNhbmNlbGFibGU6ITB9O2Z1bmN0aW9uIHZjKGUse3NlbGVjdDp0PSExfT17fSl7bGV0IG49WigpO2ZvcihsZXQgciBvZiBlKWlmKHdjKHIse3NlbGVjdDp0fSksWigpIT09bilyZXR1cm4hMH1mdW5jdGlvbiB5YyhlKXtsZXQgdD1iYyhlKTtyZXR1cm5beGModCxlKSx4Yyh0LnJldmVyc2UoKSxlKV19ZnVuY3Rpb24gYmMoZSl7bGV0IHQ9W10sbj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQse2FjY2VwdE5vZGU6ZT0+e2xldCB0PWUudGFnTmFtZT09PWBJTlBVVGAmJmUudHlwZT09PWBoaWRkZW5gO3JldHVybiBlLmRpc2FibGVkfHxlLmhpZGRlbnx8dD9Ob2RlRmlsdGVyLkZJTFRFUl9TS0lQOmUudGFiSW5kZXg+PTA/Tm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOk5vZGVGaWx0ZXIuRklMVEVSX1NLSVB9fSk7Zm9yKDtuLm5leHROb2RlKCk7KXQucHVzaChuLmN1cnJlbnROb2RlKTtyZXR1cm4gdH1mdW5jdGlvbiB4YyhlLHQpe2ZvcihsZXQgbiBvZiBlKWlmKCFTYyhuLHt1cFRvOnR9KSlyZXR1cm4gbn1mdW5jdGlvbiBTYyhlLHt1cFRvOnR9KXtpZihnZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHk9PT1gaGlkZGVuYClyZXR1cm4hMDtmb3IoO2U7KXtpZih0IT09dm9pZCAwJiZlPT09dClyZXR1cm4hMTtpZihnZXRDb21wdXRlZFN0eWxlKGUpLmRpc3BsYXk9PT1gbm9uZWApcmV0dXJuITA7ZT1lLnBhcmVudEVsZW1lbnR9cmV0dXJuITF9ZnVuY3Rpb24gQ2MoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50JiZgc2VsZWN0YGluIGV9ZnVuY3Rpb24gd2MoZSx7c2VsZWN0OnQ9ITF9PXt9KXtpZihlJiZlLmZvY3VzKXtsZXQgbj1aKCk7ZS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUhPT1uJiZDYyhlKSYmdCYmZS5zZWxlY3QoKX19dmFyIFRjPUgoe19fbmFtZTpgRm9jdXNTY29wZWAscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSx0cmFwcGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0scHJlc2VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOltgbW91bnRBdXRvRm9jdXNgLGB1bm1vdW50QXV0b0ZvY3VzYF0sc2V0dXAoZSx7ZW1pdDpufSl7bGV0IHI9ZSxpPW4se2N1cnJlbnRSZWY6YSxjdXJyZW50RWxlbWVudDpvfT10KCkscz1qKG51bGwpLGM9cGMoKSxsPXFlKHtwYXVzZWQ6ITEscGF1c2UoKXt0aGlzLnBhdXNlZD0hMH0scmVzdW1lKCl7dGhpcy5wYXVzZWQ9ITF9fSk7TyhlPT57aWYoIW1lKXJldHVybjtsZXQgdD1vLnZhbHVlO2lmKCFyLnRyYXBwZWQpcmV0dXJuO2Z1bmN0aW9uIG4oZSl7aWYobC5wYXVzZWR8fCF0KXJldHVybjtsZXQgbj1lLnRhcmdldDt0LmNvbnRhaW5zKG4pP3MudmFsdWU9bjp3YyhzLnZhbHVlLHtzZWxlY3Q6ITB9KX1mdW5jdGlvbiBpKGUpe2lmKGwucGF1c2VkfHwhdClyZXR1cm47bGV0IG49ZS5yZWxhdGVkVGFyZ2V0O24hPT1udWxsJiYodC5jb250YWlucyhuKXx8d2Mocy52YWx1ZSx7c2VsZWN0OiEwfSkpfWZ1bmN0aW9uIGEoZSl7bGV0IG49cy52YWx1ZTtuIT09bnVsbCYmZS5zb21lKGU9PmUucmVtb3ZlZE5vZGVzLmxlbmd0aD4wKSYmKHQuY29udGFpbnMobil8fHdjKHQpKX1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGBmb2N1c2luYCxuKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGBmb2N1c291dGAsaSk7bGV0IGM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoYSk7dCYmYy5vYnNlcnZlKHQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksZSgoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGZvY3VzaW5gLG4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGZvY3Vzb3V0YCxpKSxjLmRpc2Nvbm5lY3QoKX0pfSk7ZnVuY3Rpb24gdShlLHQpe2xldCBuPW5ldyBDdXN0b21FdmVudChoYyxfYykscj1lPT5pKGBtb3VudEF1dG9Gb2N1c2AsZSk7ZS5hZGRFdmVudExpc3RlbmVyKGhjLHIpLGUuZGlzcGF0Y2hFdmVudChuKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoaGMsciksbi5kZWZhdWx0UHJldmVudGVkfHwodmMoYmMoZSkse3NlbGVjdDohMH0pLFooKT09PXQmJndjKGUpKX1PKGFzeW5jIGU9PntsZXQgdD1vLnZhbHVlO2lmKGF3YWl0IHkoKSwhdClyZXR1cm47ci5wcmVzZW50IT09ITEmJmMuYWRkKGwpO2xldCBuPVooKTshdC5jb250YWlucyhuKSYmci5wcmVzZW50IT09ITEmJnUodCxuKSxlKCgpPT57bGV0IGU9bmV3IEN1c3RvbUV2ZW50KGdjLF9jKSxyPWU9PntpKGB1bm1vdW50QXV0b0ZvY3VzYCxlKX07dC5hZGRFdmVudExpc3RlbmVyKGdjLHIpLHQuZGlzcGF0Y2hFdmVudChlKSx0LnNldEF0dHJpYnV0ZShgZGF0YS1mb2N1cy1zY29wZS11bm1vdW50aW5nYCxgYCksc2V0VGltZW91dCgoKT0+e2UuZGVmYXVsdFByZXZlbnRlZHx8d2Mobj8/ZG9jdW1lbnQuYm9keSx7c2VsZWN0OiEwfSksdC5yZW1vdmVFdmVudExpc3RlbmVyKGdjLHIpLGMucmVtb3ZlKGwpLHQucmVtb3ZlQXR0cmlidXRlKGBkYXRhLWZvY3VzLXNjb3BlLXVubW91bnRpbmdgKX0sMCl9KX0pLEQoKCk9PnIucHJlc2VudCxhc3luYyhlLHQpPT57aWYoIW1lKXJldHVybjtpZihlPT09ITEmJnQ9PT0hMCl7Yy5yZW1vdmUobCk7cmV0dXJufWlmKGUhPT0hMHx8dCE9PSExKXJldHVybjtjLmFkZChsKSxhd2FpdCB5KCk7bGV0IG49by52YWx1ZTtpZighbilyZXR1cm47bGV0IHI9WigpO24uY29udGFpbnMocil8fHUobixyKX0pO2Z1bmN0aW9uIGQoZSl7aWYoIXIubG9vcCYmIXIudHJhcHBlZHx8bC5wYXVzZWQpcmV0dXJuO2xldCB0PWUua2V5PT09YFRhYmAmJiFlLmFsdEtleSYmIWUuY3RybEtleSYmIWUubWV0YUtleSxuPVooKTtpZih0JiZuKXtsZXQgdD1lLmN1cnJlbnRUYXJnZXQsW2ksYV09eWModCk7aSYmYT8hZS5zaGlmdEtleSYmbj09PWE/KGUucHJldmVudERlZmF1bHQoKSxyLmxvb3AmJndjKGkse3NlbGVjdDohMH0pKTplLnNoaWZ0S2V5JiZuPT09aSYmKGUucHJldmVudERlZmF1bHQoKSxyLmxvb3AmJndjKGEse3NlbGVjdDohMH0pKTpuPT09dCYmZS5wcmV2ZW50RGVmYXVsdCgpfX1yZXR1cm4oZSx0KT0+KFAoKSxNKEIoRikse3JlZl9rZXk6YGN1cnJlbnRSZWZgLHJlZjphLHRhYmluZGV4OmAtMWAsImFzLWNoaWxkIjplLmFzQ2hpbGQsYXM6ZS5hcyxvbktleWRvd246ZH0se2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzLWNoaWxkYCxgYXNgXSkpfX0pLEVjPVtgRW50ZXJgLGAgYF0sRGM9W2BBcnJvd0Rvd25gLGBQYWdlVXBgLGBIb21lYF0sT2M9W2BBcnJvd1VwYCxgUGFnZURvd25gLGBFbmRgXTtbLi4uRGMsLi4uT2NdLFsuLi5FY10sWy4uLkVjXTtmdW5jdGlvbiBrYyhlKXtsZXQgdD1aKCk7Zm9yKGxldCBuIG9mIGUpaWYobj09PXR8fChuLmZvY3VzKCksWigpIT09dCkpcmV0dXJufXZhciBBYz1IKHtfX25hbWU6YFRlbGVwb3J0YCxwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPXIoe30pLGk9TCgoKT0+dC50bz8/bi50ZWxlcG9ydFRvPy52YWx1ZT8/YGJvZHlgKSxhPVMoKTtyZXR1cm4oZSx0KT0+QihhKXx8ZS5mb3JjZU1vdW50PyhQKCksTShPZSx7a2V5OjAsdG86aS52YWx1ZSxkaXNhYmxlZDplLmRpc2FibGVkLGRlZmVyOmUuZGVmZXJ9LFtOKGUuJHNsb3RzLGBkZWZhdWx0YCldLDgsW2B0b2AsYGRpc2FibGVkYCxgZGVmZXJgXSkpOkkoYHYtaWZgLCEwKX19KSxqYz1gZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbWA7ZnVuY3Rpb24gTWMoZT17fSl7bGV0e2tleTp0PWBgLGlzUHJvdmlkZXI6bj0hMX09ZSxyPWAke3R9Q29sbGVjdGlvblByb3ZpZGVyYCxpO2lmKG4pe2xldCBlPWoobmV3IE1hcCk7aT17Y29sbGVjdGlvblJlZjpqKCksaXRlbU1hcDplfSxKZShyLGkpfWVsc2UgaT1jZShyKTtsZXQgYT0oZT0hMSk9PntsZXQgdD1pLmNvbGxlY3Rpb25SZWYudmFsdWU7aWYoIXQpcmV0dXJuW107bGV0IG49QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwoYFske2pjfV1gKSkscj1uZXcgTWFwKG4ubWFwKChlLHQpPT5bZSx0XSkpLGE9QXJyYXkuZnJvbShpLml0ZW1NYXAudmFsdWUudmFsdWVzKCkpLnNvcnQoKGUsdCk9PihyLmdldChlLnJlZik/Py0xKS0oci5nZXQodC5yZWYpPz8tMSkpO3JldHVybiBlP2E6YS5maWx0ZXIoZT0+ZS5yZWYuZGF0YXNldC5kaXNhYmxlZCE9PWBgKX0sbz1IKHtuYW1lOmBDb2xsZWN0aW9uU2xvdGAsaW5oZXJpdEF0dHJzOiExLHNldHVwKGUse3Nsb3RzOnQsYXR0cnM6bn0pe2xldHtwcmltaXRpdmVFbGVtZW50OnIsY3VycmVudEVsZW1lbnQ6YX09YWMoKTtyZXR1cm4gRChhLCgpPT57aS5jb2xsZWN0aW9uUmVmLnZhbHVlPWEudmFsdWV9KSwoKT0+bChjLHtyZWY6ciwuLi5ufSx0KX19KSxzPUgoe25hbWU6YENvbGxlY3Rpb25JdGVtYCxpbmhlcml0QXR0cnM6ITEscHJvcHM6e3ZhbHVlOnt2YWxpZGF0b3I6KCk9PiEwfX0sc2V0dXAoZSx7c2xvdHM6dCxhdHRyczpufSl7bGV0e3ByaW1pdGl2ZUVsZW1lbnQ6cixjdXJyZW50RWxlbWVudDphfT1hYygpO3JldHVybiBPKHQ9PntpZihhLnZhbHVlKXtsZXQgbj1XZShhLnZhbHVlKTtpLml0ZW1NYXAudmFsdWUuc2V0KG4se3JlZjphLnZhbHVlLHZhbHVlOmUudmFsdWV9KSx0KCgpPT5pLml0ZW1NYXAudmFsdWUuZGVsZXRlKG4pKX19KSwoKT0+bChjLHsuLi5uLFtqY106YGAscmVmOnJ9LHQpfX0pO3JldHVybntnZXRJdGVtczphLHJlYWN0aXZlSXRlbXM6TCgoKT0+QXJyYXkuZnJvbShpLml0ZW1NYXAudmFsdWUudmFsdWVzKCkpKSxpdGVtTWFwU2l6ZTpMKCgpPT5pLml0ZW1NYXAudmFsdWUuc2l6ZSksQ29sbGVjdGlvblNsb3Q6byxDb2xsZWN0aW9uSXRlbTpzfX12YXIgTmM9SCh7X19uYW1lOmBWaXN1YWxseUhpZGRlbmAscHJvcHM6e2ZlYXR1cmU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGZvY3VzYWJsZWB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzcGFuYH19LHNldHVwKGUpe3JldHVybihlLHQpPT4oUCgpLE0oQihGKSx7YXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCwiYXJpYS1oaWRkZW4iOmUuZmVhdHVyZT09PWBmb2N1c2FibGVgfHxlLmZlYXR1cmU9PT1gZnVsbHktaGlkZGVuYD9gdHJ1ZWA6dm9pZCAwLCJkYXRhLWhpZGRlbiI6ZS5mZWF0dXJlPT09YGZ1bGx5LWhpZGRlbmA/YGA6dm9pZCAwLHRhYmluZGV4OmUuZmVhdHVyZT09PWBmdWxseS1oaWRkZW5gP2AtMWA6dm9pZCAwLHN0eWxlOntwb3NpdGlvbjpgYWJzb2x1dGVgLGJvcmRlcjowLHdpZHRoOmAxcHhgLGhlaWdodDpgMXB4YCxwYWRkaW5nOjAsbWFyZ2luOmAtMXB4YCxvdmVyZmxvdzpgaGlkZGVuYCxjbGlwOmByZWN0KDAsIDAsIDAsIDApYCxjbGlwUGF0aDpgaW5zZXQoNTAlKWAsd2hpdGVTcGFjZTpgbm93cmFwYCx3b3JkV3JhcDpgbm9ybWFsYCx0b3A6YC0xcHhgLGxlZnQ6YC0xcHhgfX0se2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzYCxgYXMtY2hpbGRgLGBhcmlhLWhpZGRlbmAsYGRhdGEtaGlkZGVuYCxgdGFiaW5kZXhgXSkpfX0pLFtQYyxGY109YShgUG9wcGVyUm9vdGApLEljPUgoe2luaGVyaXRBdHRyczohMSxfX25hbWU6YFBvcHBlclJvb3RgLHNldHVwKGUpe2xldCB0PWooKTtyZXR1cm4gRmMoe2FuY2hvcjp0LG9uQW5jaG9yQ2hhbmdlOmU9PnQudmFsdWU9ZX0pLChlLHQpPT5OKGUuJHNsb3RzLGBkZWZhdWx0YCl9fSksTGM9SCh7X19uYW1lOmBQb3BwZXJBbmNob3JgLHByb3BzOntyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IG49ZSx7Zm9yd2FyZFJlZjpyLGN1cnJlbnRFbGVtZW50Oml9PXQoKSxhPVBjKCk7cmV0dXJuIGllKCgpPT57YS5vbkFuY2hvckNoYW5nZShuLnJlZmVyZW5jZT8/aS52YWx1ZSl9KSwoZSx0KT0+KFAoKSxNKEIoRikse3JlZjpCKHIpLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGR9LHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYF0pKX19KTtmdW5jdGlvbiBSYyhlKXtyZXR1cm4gZSE9PW51bGx9ZnVuY3Rpb24gemMoZSl7cmV0dXJue25hbWU6YHRyYW5zZm9ybU9yaWdpbmAsb3B0aW9uczplLGZuKHQpe2xldHtwbGFjZW1lbnQ6bixyZWN0czpyLG1pZGRsZXdhcmVEYXRhOml9PXQsYT1pLmFycm93Py5jZW50ZXJPZmZzZXQhPT0wLG89YT8wOmUuYXJyb3dXaWR0aCxzPWE/MDplLmFycm93SGVpZ2h0LFtjLGxdPUJjKG4pLHU9e3N0YXJ0OmUuZGlyPT09YHJ0bGA/YDEwMCVgOmAwJWAsY2VudGVyOmA1MCVgLGVuZDplLmRpcj09PWBydGxgP2AwJWA6YDEwMCVgfVtsXSxkPXtzdGFydDpgMCVgLGNlbnRlcjpgNTAlYCxlbmQ6YDEwMCVgfVtsXSxmPShpLmFycm93Py54Pz8wKStvLzIscD0oaS5hcnJvdz8ueT8/MCkrcy8yLG09YGAsaD1gYDtyZXR1cm4gYz09PWBib3R0b21gPyhtPWE/dTpgJHtmfXB4YCxoPWAkey1zfXB4YCk6Yz09PWB0b3BgPyhtPWE/dTpgJHtmfXB4YCxoPWAke3IuZmxvYXRpbmcuaGVpZ2h0K3N9cHhgKTpjPT09YHJpZ2h0YD8obT1gJHstc31weGAsaD1hP2Q6YCR7cH1weGApOmM9PT1gbGVmdGAmJihtPWAke3IuZmxvYXRpbmcud2lkdGgrc31weGAsaD1hP2Q6YCR7cH1weGApLHtkYXRhOnt4Om0seTpofX19fX1mdW5jdGlvbiBCYyhlKXtsZXRbdCxuPWBjZW50ZXJgXT1lLnNwbGl0KGAtYCk7cmV0dXJuW3Qsbl19dmFyIFZjPVtgdG9wYCxgcmlnaHRgLGBib3R0b21gLGBsZWZ0YF0sSGM9TWF0aC5taW4sVWM9TWF0aC5tYXgsV2M9TWF0aC5yb3VuZCxHYz1NYXRoLmZsb29yLEtjPWU9Pih7eDplLHk6ZX0pLHFjPXtsZWZ0OmByaWdodGAscmlnaHQ6YGxlZnRgLGJvdHRvbTpgdG9wYCx0b3A6YGJvdHRvbWB9O2Z1bmN0aW9uIEpjKGUsdCxuKXtyZXR1cm4gVWMoZSxIYyh0LG4pKX1mdW5jdGlvbiBZYyhlLHQpe3JldHVybiB0eXBlb2YgZT09YGZ1bmN0aW9uYD9lKHQpOmV9ZnVuY3Rpb24gWGMoZSl7cmV0dXJuIGUuc3BsaXQoYC1gKVswXX1mdW5jdGlvbiBaYyhlKXtyZXR1cm4gZS5zcGxpdChgLWApWzFdfWZ1bmN0aW9uIFFjKGUpe3JldHVybiBlPT09YHhgP2B5YDpgeGB9ZnVuY3Rpb24gJGMoZSl7cmV0dXJuIGU9PT1geWA/YGhlaWdodGA6YHdpZHRoYH1mdW5jdGlvbiBlbChlKXtsZXQgdD1lWzBdO3JldHVybiB0PT09YHRgfHx0PT09YGJgP2B5YDpgeGB9ZnVuY3Rpb24gdGwoZSl7cmV0dXJuIFFjKGVsKGUpKX1mdW5jdGlvbiBubChlLHQsbil7bj09PXZvaWQgMCYmKG49ITEpO2xldCByPVpjKGUpLGk9dGwoZSksYT0kYyhpKSxvPWk9PT1geGA/cj09PShuP2BlbmRgOmBzdGFydGApP2ByaWdodGA6YGxlZnRgOnI9PT1gc3RhcnRgP2Bib3R0b21gOmB0b3BgO3JldHVybiB0LnJlZmVyZW5jZVthXT50LmZsb2F0aW5nW2FdJiYobz1kbChvKSksW28sZGwobyldfWZ1bmN0aW9uIHJsKGUpe2xldCB0PWRsKGUpO3JldHVybltpbChlKSx0LGlsKHQpXX1mdW5jdGlvbiBpbChlKXtyZXR1cm4gZS5pbmNsdWRlcyhgc3RhcnRgKT9lLnJlcGxhY2UoYHN0YXJ0YCxgZW5kYCk6ZS5yZXBsYWNlKGBlbmRgLGBzdGFydGApfXZhciBhbD1bYGxlZnRgLGByaWdodGBdLG9sPVtgcmlnaHRgLGBsZWZ0YF0sc2w9W2B0b3BgLGBib3R0b21gXSxjbD1bYGJvdHRvbWAsYHRvcGBdO2Z1bmN0aW9uIGxsKGUsdCxuKXtzd2l0Y2goZSl7Y2FzZWB0b3BgOmNhc2VgYm90dG9tYDpyZXR1cm4gbj90P29sOmFsOnQ/YWw6b2w7Y2FzZWBsZWZ0YDpjYXNlYHJpZ2h0YDpyZXR1cm4gdD9zbDpjbDtkZWZhdWx0OnJldHVybltdfX1mdW5jdGlvbiB1bChlLHQsbixyKXtsZXQgaT1aYyhlKSxhPWxsKFhjKGUpLG49PT1gc3RhcnRgLHIpO3JldHVybiBpJiYoYT1hLm1hcChlPT5lK2AtYCtpKSx0JiYoYT1hLmNvbmNhdChhLm1hcChpbCkpKSksYX1mdW5jdGlvbiBkbChlKXtsZXQgdD1YYyhlKTtyZXR1cm4gcWNbdF0rZS5zbGljZSh0Lmxlbmd0aCl9ZnVuY3Rpb24gZmwoZSl7cmV0dXJue3RvcDplLnRvcD8/MCxyaWdodDplLnJpZ2h0Pz8wLGJvdHRvbTplLmJvdHRvbT8/MCxsZWZ0OmUubGVmdD8/MH19ZnVuY3Rpb24gcGwoZSl7cmV0dXJuIHR5cGVvZiBlPT1gbnVtYmVyYD97dG9wOmUscmlnaHQ6ZSxib3R0b206ZSxsZWZ0OmV9OmZsKGUpfWZ1bmN0aW9uIG1sKGUpe2xldHt4OnQseTpuLHdpZHRoOnIsaGVpZ2h0Oml9PWU7cmV0dXJue3dpZHRoOnIsaGVpZ2h0OmksdG9wOm4sbGVmdDp0LHJpZ2h0OnQrcixib3R0b206bitpLHg6dCx5Om59fWZ1bmN0aW9uIGhsKGUsdCxuKXtsZXR7cmVmZXJlbmNlOnIsZmxvYXRpbmc6aX09ZSxhPWVsKHQpLG89dGwodCkscz0kYyhvKSxjPVhjKHQpLGw9YT09PWB5YCx1PXIueCtyLndpZHRoLzItaS53aWR0aC8yLGQ9ci55K3IuaGVpZ2h0LzItaS5oZWlnaHQvMixmPXJbc10vMi1pW3NdLzIscDtzd2l0Y2goYyl7Y2FzZWB0b3BgOnA9e3g6dSx5OnIueS1pLmhlaWdodH07YnJlYWs7Y2FzZWBib3R0b21gOnA9e3g6dSx5OnIueStyLmhlaWdodH07YnJlYWs7Y2FzZWByaWdodGA6cD17eDpyLngrci53aWR0aCx5OmR9O2JyZWFrO2Nhc2VgbGVmdGA6cD17eDpyLngtaS53aWR0aCx5OmR9O2JyZWFrO2RlZmF1bHQ6cD17eDpyLngseTpyLnl9fWxldCBtPVpjKHQpO3JldHVybiBtJiYocFtvXSs9ZioobT09PWBlbmRgPzE6LTEpKihuJiZsPy0xOjEpKSxwfWFzeW5jIGZ1bmN0aW9uIGdsKGUsdCl7dD09PXZvaWQgMCYmKHQ9e30pO2xldHt4Om4seTpyLHBsYXRmb3JtOmkscmVjdHM6YSxlbGVtZW50czpvLHN0cmF0ZWd5OnN9PWUse2JvdW5kYXJ5OmM9YGNsaXBwaW5nQW5jZXN0b3JzYCxyb290Qm91bmRhcnk6bD1gdmlld3BvcnRgLGVsZW1lbnRDb250ZXh0OnU9YGZsb2F0aW5nYCxhbHRCb3VuZGFyeTpkPSExLHBhZGRpbmc6Zj0wfT1ZYyh0LGUpLHA9cGwoZiksbT1vW2Q/dT09PWBmbG9hdGluZ2A/YHJlZmVyZW5jZWA6YGZsb2F0aW5nYDp1XSxoPW1sKGF3YWl0IGkuZ2V0Q2xpcHBpbmdSZWN0KHtlbGVtZW50OmF3YWl0KGkuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDppLmlzRWxlbWVudChtKSk/PyEwP206bS5jb250ZXh0RWxlbWVudHx8YXdhaXQoaS5nZXREb2N1bWVudEVsZW1lbnQ9PW51bGw/dm9pZCAwOmkuZ2V0RG9jdW1lbnRFbGVtZW50KG8uZmxvYXRpbmcpKSxib3VuZGFyeTpjLHJvb3RCb3VuZGFyeTpsLHN0cmF0ZWd5OnN9KSksZz11PT09YGZsb2F0aW5nYD97eDpuLHk6cix3aWR0aDphLmZsb2F0aW5nLndpZHRoLGhlaWdodDphLmZsb2F0aW5nLmhlaWdodH06YS5yZWZlcmVuY2UsXz1hd2FpdChpLmdldE9mZnNldFBhcmVudD09bnVsbD92b2lkIDA6aS5nZXRPZmZzZXRQYXJlbnQoby5mbG9hdGluZykpLHY9YXdhaXQoaS5pc0VsZW1lbnQ9PW51bGw/dm9pZCAwOmkuaXNFbGVtZW50KF8pKSYmYXdhaXQoaS5nZXRTY2FsZT09bnVsbD92b2lkIDA6aS5nZXRTY2FsZShfKSl8fHt4OjEseToxfSx5PW1sKGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Q/YXdhaXQgaS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCh7ZWxlbWVudHM6byxyZWN0Omcsb2Zmc2V0UGFyZW50Ol8sc3RyYXRlZ3k6c30pOmcpO3JldHVybnt0b3A6KGgudG9wLXkudG9wK3AudG9wKS92LnksYm90dG9tOih5LmJvdHRvbS1oLmJvdHRvbStwLmJvdHRvbSkvdi55LGxlZnQ6KGgubGVmdC15LmxlZnQrcC5sZWZ0KS92LngscmlnaHQ6KHkucmlnaHQtaC5yaWdodCtwLnJpZ2h0KS92Lnh9fXZhciBfbD01MCx2bD1hc3luYyhlLHQsbik9PntsZXR7cGxhY2VtZW50OnI9YGJvdHRvbWAsc3RyYXRlZ3k6aT1gYWJzb2x1dGVgLG1pZGRsZXdhcmU6YT1bXSxwbGF0Zm9ybTpvfT1uLHM9by5kZXRlY3RPdmVyZmxvdz9vOnsuLi5vLGRldGVjdE92ZXJmbG93OmdsfSxjPWF3YWl0KG8uaXNSVEw9PW51bGw/dm9pZCAwOm8uaXNSVEwodCkpLGw9YXdhaXQgby5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6aX0pLHt4OnUseTpkfT1obChsLHIsYyksZj1yLHA9MCxtPXt9O2ZvcihsZXQgbj0wO248YS5sZW5ndGg7bisrKXtsZXQgaD1hW25dO2lmKCFoKWNvbnRpbnVlO2xldHtuYW1lOmcsZm46X309aCx7eDp2LHksZGF0YTpiLHJlc2V0Onh9PWF3YWl0IF8oe3g6dSx5OmQsaW5pdGlhbFBsYWNlbWVudDpyLHBsYWNlbWVudDpmLHN0cmF0ZWd5OmksbWlkZGxld2FyZURhdGE6bSxyZWN0czpsLHBsYXRmb3JtOnMsZWxlbWVudHM6e3JlZmVyZW5jZTplLGZsb2F0aW5nOnR9fSk7dT12Pz91LGQ9eT8/ZCxtW2ddPXsuLi5tW2ddLC4uLmJ9LHgmJnA8X2wmJihwKyssdHlwZW9mIHg9PWBvYmplY3RgJiYoeC5wbGFjZW1lbnQmJihmPXgucGxhY2VtZW50KSx4LnJlY3RzJiYobD14LnJlY3RzPT09ITA/YXdhaXQgby5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6aX0pOngucmVjdHMpLHt4OnUseTpkfT1obChsLGYsYykpLG49LTEpfXJldHVybnt4OnUseTpkLHBsYWNlbWVudDpmLHN0cmF0ZWd5OmksbWlkZGxld2FyZURhdGE6bX19LHlsPWU9Pih7bmFtZTpgYXJyb3dgLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtsZXR7eDpuLHk6cixwbGFjZW1lbnQ6aSxyZWN0czphLHBsYXRmb3JtOm8sZWxlbWVudHM6cyxtaWRkbGV3YXJlRGF0YTpjfT10LHtlbGVtZW50OmwscGFkZGluZzp1PTB9PVljKGUsdCl8fHt9O2lmKGw9PW51bGwpcmV0dXJue307bGV0IGQ9cGwodSksZj17eDpuLHk6cn0scD10bChpKSxtPSRjKHApLGg9YXdhaXQgby5nZXREaW1lbnNpb25zKGwpLGc9cD09PWB5YCxfPWc/YHRvcGA6YGxlZnRgLHY9Zz9gYm90dG9tYDpgcmlnaHRgLHk9Zz9gY2xpZW50SGVpZ2h0YDpgY2xpZW50V2lkdGhgLGI9YS5yZWZlcmVuY2VbbV0rYS5yZWZlcmVuY2VbcF0tZltwXS1hLmZsb2F0aW5nW21dLHg9ZltwXS1hLnJlZmVyZW5jZVtwXSxTPWF3YWl0KG8uZ2V0T2Zmc2V0UGFyZW50PT1udWxsP3ZvaWQgMDpvLmdldE9mZnNldFBhcmVudChsKSksQz1TP1NbeV06MDsoIUN8fCFhd2FpdChvLmlzRWxlbWVudD09bnVsbD92b2lkIDA6by5pc0VsZW1lbnQoUykpKSYmKEM9cy5mbG9hdGluZ1t5XXx8YS5mbG9hdGluZ1ttXSk7bGV0IHc9Yi8yLXgvMixUPUMvMi1oW21dLzItMSxFPUhjKGRbX10sVCksZWU9SGMoZFt2XSxUKSxEPUMtaFttXS1lZSx0ZT1DLzItaFttXS8yK3csTz1KYyhFLHRlLEQpLG5lPSFjLmFycm93JiZaYyhpKSE9bnVsbCYmdGUhPT1PJiZhLnJlZmVyZW5jZVttXS8yLSh0ZTxFP0U6ZWUpLWhbbV0vMjwwLHJlPW5lP3RlPEU/dGUtRTp0ZS1EOjA7cmV0dXJue1twXTpmW3BdK3JlLGRhdGE6e1twXTpPLGNlbnRlck9mZnNldDp0ZS1PLXJlLC4uLm5lJiZ7YWxpZ25tZW50T2Zmc2V0OnJlfX0scmVzZXQ6bmV9fX0pLGJsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6YGZsaXBgLG9wdGlvbnM6ZSxhc3luYyBmbih0KXt2YXIgbjtsZXR7cGxhY2VtZW50OnIsbWlkZGxld2FyZURhdGE6aSxyZWN0czphLGluaXRpYWxQbGFjZW1lbnQ6byxwbGF0Zm9ybTpzLGVsZW1lbnRzOmN9PXQse21haW5BeGlzOmw9ITAsY3Jvc3NBeGlzOnU9ITAsZmFsbGJhY2tQbGFjZW1lbnRzOmQsZmFsbGJhY2tTdHJhdGVneTpmPWBiZXN0Rml0YCxmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uOnA9YG5vbmVgLGZsaXBBbGlnbm1lbnQ6bT0hMCwuLi5ofT1ZYyhlLHQpO2lmKChuPWkuYXJyb3cpIT1udWxsJiZuLmFsaWdubWVudE9mZnNldClyZXR1cm57fTtsZXQgZz1YYyhyKSxfPWVsKG8pLHY9WGMobyk9PT1vLHk9YXdhaXQocy5pc1JUTD09bnVsbD92b2lkIDA6cy5pc1JUTChjLmZsb2F0aW5nKSksYj1kfHwodnx8IW0/W2RsKG8pXTpybChvKSkseD1wIT09YG5vbmVgOyFkJiZ4JiZiLnB1c2goLi4udWwobyxtLHAseSkpO2xldCBTPVtvLC4uLmJdLEM9YXdhaXQgcy5kZXRlY3RPdmVyZmxvdyh0LGgpLHc9W10sVD1pLmZsaXA/Lm92ZXJmbG93c3x8W107aWYobCYmdy5wdXNoKENbZ10pLHUpe2xldCBlPW5sKHIsYSx5KTt3LnB1c2goQ1tlWzBdXSxDW2VbMV1dKX1pZihUPVsuLi5ULHtwbGFjZW1lbnQ6cixvdmVyZmxvd3M6d31dLCF3LmV2ZXJ5KGU9PmU8PTApKXtsZXQgZT0oaS5mbGlwPy5pbmRleHx8MCkrMSx0PVNbZV07aWYodCYmKHUhPT1gYWxpZ25tZW50YHx8Xz09PWVsKHQpfHxULmV2ZXJ5KGU9PmVsKGUucGxhY2VtZW50KSE9PV98fGUub3ZlcmZsb3dzWzBdPjApKSlyZXR1cm57ZGF0YTp7aW5kZXg6ZSxvdmVyZmxvd3M6VH0scmVzZXQ6e3BsYWNlbWVudDp0fX07bGV0IG49VC5maWx0ZXIoZT0+ZS5vdmVyZmxvd3NbMF08PTApLnNvcnQoKGUsdCk9PmUub3ZlcmZsb3dzWzFdLXQub3ZlcmZsb3dzWzFdKVswXT8ucGxhY2VtZW50O2lmKCFuKXN3aXRjaChmKXtjYXNlYGJlc3RGaXRgOntsZXQgZT1ULmZpbHRlcihlPT57aWYoeCl7bGV0IHQ9ZWwoZS5wbGFjZW1lbnQpO3JldHVybiB0PT09X3x8dD09PWB5YH1yZXR1cm4hMH0pLm1hcChlPT5bZS5wbGFjZW1lbnQsZS5vdmVyZmxvd3MuZmlsdGVyKGU9PmU+MCkucmVkdWNlKChlLHQpPT5lK3QsMCldKS5zb3J0KChlLHQpPT5lWzFdLXRbMV0pWzBdPy5bMF07ZSYmKG49ZSk7YnJlYWt9Y2FzZWBpbml0aWFsUGxhY2VtZW50YDpuPW99aWYociE9PW4pcmV0dXJue3Jlc2V0OntwbGFjZW1lbnQ6bn19fXJldHVybnt9fX19O2Z1bmN0aW9uIHhsKGUsdCl7cmV0dXJue3RvcDplLnRvcC10LmhlaWdodCxyaWdodDplLnJpZ2h0LXQud2lkdGgsYm90dG9tOmUuYm90dG9tLXQuaGVpZ2h0LGxlZnQ6ZS5sZWZ0LXQud2lkdGh9fWZ1bmN0aW9uIFNsKGUpe3JldHVybiBWYy5zb21lKHQ9PmVbdF0+PTApfXZhciBDbD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOmBoaWRlYCxvcHRpb25zOmUsYXN5bmMgZm4odCl7bGV0e3JlY3RzOm4scGxhdGZvcm06cn09dCx7c3RyYXRlZ3k6aT1gcmVmZXJlbmNlSGlkZGVuYCwuLi5hfT1ZYyhlLHQpO3N3aXRjaChpKXtjYXNlYHJlZmVyZW5jZUhpZGRlbmA6e2xldCBlPXhsKGF3YWl0IHIuZGV0ZWN0T3ZlcmZsb3codCx7Li4uYSxlbGVtZW50Q29udGV4dDpgcmVmZXJlbmNlYH0pLG4ucmVmZXJlbmNlKTtyZXR1cm57ZGF0YTp7cmVmZXJlbmNlSGlkZGVuT2Zmc2V0czplLHJlZmVyZW5jZUhpZGRlbjpTbChlKX19fWNhc2VgZXNjYXBlZGA6e2xldCBlPXhsKGF3YWl0IHIuZGV0ZWN0T3ZlcmZsb3codCx7Li4uYSxhbHRCb3VuZGFyeTohMH0pLG4uZmxvYXRpbmcpO3JldHVybntkYXRhOntlc2NhcGVkT2Zmc2V0czplLGVzY2FwZWQ6U2woZSl9fX1kZWZhdWx0OnJldHVybnt9fX19fSx3bD1uZXcgU2V0KFtgbGVmdGAsYHRvcGBdKTthc3luYyBmdW5jdGlvbiBUbChlLHQpe2xldHtwbGFjZW1lbnQ6bixwbGF0Zm9ybTpyLGVsZW1lbnRzOml9PWUsYT1hd2FpdChyLmlzUlRMPT1udWxsP3ZvaWQgMDpyLmlzUlRMKGkuZmxvYXRpbmcpKSxvPVhjKG4pLHM9WmMobiksYz1lbChuKT09PWB5YCxsPXdsLmhhcyhvKT8tMToxLHU9YSYmYz8tMToxLGQ9WWModCxlKSx7bWFpbkF4aXM6Zixjcm9zc0F4aXM6cCxhbGlnbm1lbnRBeGlzOm19PXR5cGVvZiBkPT1gbnVtYmVyYD97bWFpbkF4aXM6ZCxjcm9zc0F4aXM6MCxhbGlnbm1lbnRBeGlzOm51bGx9OnttYWluQXhpczpkLm1haW5BeGlzfHwwLGNyb3NzQXhpczpkLmNyb3NzQXhpc3x8MCxhbGlnbm1lbnRBeGlzOmQuYWxpZ25tZW50QXhpc307cmV0dXJuIHMmJnR5cGVvZiBtPT1gbnVtYmVyYCYmKHA9cz09PWBlbmRgP20qLTE6bSksYz97eDpwKnUseTpmKmx9Ont4OmYqbCx5OnAqdX19dmFyIEVsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT0wKSx7bmFtZTpgb2Zmc2V0YCxvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG47bGV0e3g6cix5OmkscGxhY2VtZW50OmEsbWlkZGxld2FyZURhdGE6b309dCxzPWF3YWl0IFRsKHQsZSk7cmV0dXJuIGE9PT1vLm9mZnNldD8ucGxhY2VtZW50JiYobj1vLmFycm93KSE9bnVsbCYmbi5hbGlnbm1lbnRPZmZzZXQ/e306e3g6citzLngseTppK3MueSxkYXRhOnsuLi5zLHBsYWNlbWVudDphfX19fX0sRGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZTpgc2hpZnRgLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtsZXR7eDpuLHk6cixwbGFjZW1lbnQ6aSxwbGF0Zm9ybTphfT10LHttYWluQXhpczpvPSEwLGNyb3NzQXhpczpzPSExLGxpbWl0ZXI6Yz17Zm46ZT0+e2xldHt4OnQseTpufT1lO3JldHVybnt4OnQseTpufX19LC4uLmx9PVljKGUsdCksdT17eDpuLHk6cn0sZD1hd2FpdCBhLmRldGVjdE92ZXJmbG93KHQsbCksZj1lbChpKSxwPVFjKGYpLG09dVtwXSxoPXVbZl0sZz0oZSx0KT0+SmModCtkW2U9PT1geWA/YHRvcGA6YGxlZnRgXSx0LHQtZFtlPT09YHlgP2Bib3R0b21gOmByaWdodGBdKTtvJiYobT1nKHAsbSkpLHMmJihoPWcoZixoKSk7bGV0IF89Yy5mbih7Li4udCxbcF06bSxbZl06aH0pO3JldHVybnsuLi5fLGRhdGE6e3g6Xy54LW4seTpfLnktcixlbmFibGVkOntbcF06byxbZl06c319fX19fSxPbD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtvcHRpb25zOmUsZm4odCl7bGV0e3g6bix5OnIscGxhY2VtZW50OmkscmVjdHM6YSxtaWRkbGV3YXJlRGF0YTpvfT10LHtvZmZzZXQ6cz0wLG1haW5BeGlzOmM9ITAsY3Jvc3NBeGlzOmw9ITB9PVljKGUsdCksdT17eDpuLHk6cn0sZD1lbChpKSxmPVFjKGQpLHA9dVtmXSxtPXVbZF0saD1ZYyhzLHQpLGc9dHlwZW9mIGg9PWBudW1iZXJgP3ttYWluQXhpczpoLGNyb3NzQXhpczowfTp7bWFpbkF4aXM6aC5tYWluQXhpcz8/MCxjcm9zc0F4aXM6aC5jcm9zc0F4aXM/PzB9O2lmKGMpe2xldCBlPWY9PT1geWA/YGhlaWdodGA6YHdpZHRoYCx0PWEucmVmZXJlbmNlW2ZdLWEuZmxvYXRpbmdbZV0rZy5tYWluQXhpcyxuPWEucmVmZXJlbmNlW2ZdK2EucmVmZXJlbmNlW2VdLWcubWFpbkF4aXM7cDx0P3A9dDpwPm4mJihwPW4pfWlmKGwpe2xldCBlPWY9PT1geWA/YHdpZHRoYDpgaGVpZ2h0YCx0PXdsLmhhcyhYYyhpKSksbj1hLnJlZmVyZW5jZVtkXS1hLmZsb2F0aW5nW2VdKyh0JiZvLm9mZnNldD8uW2RdfHwwKSsodD8wOmcuY3Jvc3NBeGlzKSxyPWEucmVmZXJlbmNlW2RdK2EucmVmZXJlbmNlW2VdKyh0PzA6by5vZmZzZXQ/LltkXXx8MCktKHQ/Zy5jcm9zc0F4aXM6MCk7bTxuP209bjptPnImJihtPXIpfXJldHVybntbZl06cCxbZF06bX19fX0sa2w9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZTpgc2l6ZWAsb3B0aW9uczplLGFzeW5jIGZuKHQpe2xldHtwbGFjZW1lbnQ6bixyZWN0czpyLHBsYXRmb3JtOmksZWxlbWVudHM6YX09dCx7YXBwbHk6bz0oKT0+e30sLi4uc309WWMoZSx0KSxjPWF3YWl0IGkuZGV0ZWN0T3ZlcmZsb3codCxzKSxsPVhjKG4pLHU9WmMobiksZD1lbChuKT09PWB5YCx7d2lkdGg6ZixoZWlnaHQ6cH09ci5mbG9hdGluZyxtLGg7bD09PWB0b3BgfHxsPT09YGJvdHRvbWA/KG09bCxoPXU9PT0oYXdhaXQoaS5pc1JUTD09bnVsbD92b2lkIDA6aS5pc1JUTChhLmZsb2F0aW5nKSk/YHN0YXJ0YDpgZW5kYCk/YGxlZnRgOmByaWdodGApOihoPWwsbT11PT09YGVuZGA/YHRvcGA6YGJvdHRvbWApO2xldCBnPXAtYy50b3AtYy5ib3R0b20sXz1mLWMubGVmdC1jLnJpZ2h0LHY9SGMocC1jW21dLGcpLHk9SGMoZi1jW2hdLF8pLGI9dC5taWRkbGV3YXJlRGF0YS5zaGlmdCx4PSFiLFM9dixDPXk7YiE9bnVsbCYmYi5lbmFibGVkLngmJihDPV8pLGIhPW51bGwmJmIuZW5hYmxlZC55JiYoUz1nKSx4JiYhdSYmKGQ/Qz1mLTIqVWMoYy5sZWZ0LGMucmlnaHQpOlM9cC0yKlVjKGMudG9wLGMuYm90dG9tKSksYXdhaXQgbyh7Li4udCxhdmFpbGFibGVXaWR0aDpDLGF2YWlsYWJsZUhlaWdodDpTfSk7bGV0IHc9YXdhaXQgaS5nZXREaW1lbnNpb25zKGEuZmxvYXRpbmcpO3JldHVybiBmIT09dy53aWR0aHx8cCE9PXcuaGVpZ2h0P3tyZXNldDp7cmVjdHM6ITB9fTp7fX19fTtmdW5jdGlvbiBBbCgpe3JldHVybiB0eXBlb2Ygd2luZG93PGB1YH1mdW5jdGlvbiBqbChlKXtyZXR1cm4gTmwoZSk/KGUubm9kZU5hbWV8fGBgKS50b0xvd2VyQ2FzZSgpOmAjZG9jdW1lbnRgfWZ1bmN0aW9uICQoZSl7dmFyIHQ7cmV0dXJuKGU9PW51bGx8fCh0PWUub3duZXJEb2N1bWVudCk9PW51bGw/dm9pZCAwOnQuZGVmYXVsdFZpZXcpfHx3aW5kb3d9ZnVuY3Rpb24gTWwoZSl7cmV0dXJuKChObChlKT9lLm93bmVyRG9jdW1lbnQ6ZS5kb2N1bWVudCl8fHdpbmRvdy5kb2N1bWVudCk/LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBObChlKXtyZXR1cm4gQWwoKT9lIGluc3RhbmNlb2YgTm9kZXx8ZSBpbnN0YW5jZW9mICQoZSkuTm9kZTohMX1mdW5jdGlvbiBQbChlKXtyZXR1cm4gQWwoKT9lIGluc3RhbmNlb2YgRWxlbWVudHx8ZSBpbnN0YW5jZW9mICQoZSkuRWxlbWVudDohMX1mdW5jdGlvbiBGbChlKXtyZXR1cm4gQWwoKT9lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR8fGUgaW5zdGFuY2VvZiAkKGUpLkhUTUxFbGVtZW50OiExfWZ1bmN0aW9uIElsKGUpe3JldHVybiFBbCgpfHx0eXBlb2YgU2hhZG93Um9vdD5gdWA/ITE6ZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3R8fGUgaW5zdGFuY2VvZiAkKGUpLlNoYWRvd1Jvb3R9ZnVuY3Rpb24gTGwoZSl7bGV0e292ZXJmbG93OnQsb3ZlcmZsb3dYOm4sb3ZlcmZsb3dZOnIsZGlzcGxheTppfT1KbChlKTtyZXR1cm4vYXV0b3xzY3JvbGx8b3ZlcmxheXxoaWRkZW58Y2xpcC8udGVzdCh0K3IrbikmJmkhPT1gaW5saW5lYCYmaSE9PWBjb250ZW50c2B9ZnVuY3Rpb24gUmwoZSl7cmV0dXJuL14odGFibGV8dGR8dGgpJC8udGVzdChqbChlKSl9ZnVuY3Rpb24gemwoZSl7dHJ5e2lmKGUubWF0Y2hlcyhgOnBvcG92ZXItb3BlbmApKXJldHVybiEwfWNhdGNoe310cnl7cmV0dXJuIGUubWF0Y2hlcyhgOm1vZGFsYCl9Y2F0Y2h7cmV0dXJuITF9fXZhciBCbD0vdHJhbnNmb3JtfHRyYW5zbGF0ZXxzY2FsZXxyb3RhdGV8cGVyc3BlY3RpdmV8ZmlsdGVyLyxWbD0vcGFpbnR8bGF5b3V0fHN0cmljdHxjb250ZW50LyxIbD1lPT4hIWUmJmUhPT1gbm9uZWAsVWw7ZnVuY3Rpb24gV2woZSl7bGV0IHQ9UGwoZSk/SmwoZSk6ZTtyZXR1cm4gSGwodC50cmFuc2Zvcm0pfHxIbCh0LnRyYW5zbGF0ZSl8fEhsKHQuc2NhbGUpfHxIbCh0LnJvdGF0ZSl8fEhsKHQucGVyc3BlY3RpdmUpfHwhS2woKSYmKEhsKHQuYmFja2Ryb3BGaWx0ZXIpfHxIbCh0LmZpbHRlcikpfHxCbC50ZXN0KHQud2lsbENoYW5nZXx8YGApfHxWbC50ZXN0KHQuY29udGFpbnx8YGApfWZ1bmN0aW9uIEdsKGUpe2xldCB0PVhsKGUpO2Zvcig7RmwodCkmJiFxbCh0KTspe2lmKFdsKHQpKXJldHVybiB0O2lmKHpsKHQpKXJldHVybiBudWxsO3Q9WGwodCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gS2woKXtyZXR1cm4gVWw/Pz10eXBlb2YgQ1NTPGB1YCYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoYC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyYCxgbm9uZWApLFVsfWZ1bmN0aW9uIHFsKGUpe3JldHVybi9eKGh0bWx8Ym9keXwjZG9jdW1lbnQpJC8udGVzdChqbChlKSl9ZnVuY3Rpb24gSmwoZSl7cmV0dXJuICQoZSkuZ2V0Q29tcHV0ZWRTdHlsZShlKX1mdW5jdGlvbiBZbChlKXtyZXR1cm4gUGwoZSk/e3Njcm9sbExlZnQ6ZS5zY3JvbGxMZWZ0LHNjcm9sbFRvcDplLnNjcm9sbFRvcH06e3Njcm9sbExlZnQ6ZS5zY3JvbGxYLHNjcm9sbFRvcDplLnNjcm9sbFl9fWZ1bmN0aW9uIFhsKGUpe2lmKGpsKGUpPT09YGh0bWxgKXJldHVybiBlO2xldCB0PWUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fElsKGUpJiZlLmhvc3R8fE1sKGUpO3JldHVybiBJbCh0KT90Lmhvc3Q6dH1mdW5jdGlvbiBabChlKXtsZXQgdD1YbChlKTtyZXR1cm4gcWwodCk/KGUub3duZXJEb2N1bWVudHx8ZSkuYm9keTpGbCh0KSYmTGwodCk/dDpabCh0KX1mdW5jdGlvbiBRbChlLHQsbil7dD09PXZvaWQgMCYmKHQ9W10pLG49PT12b2lkIDAmJihuPSEwKTtsZXQgcj1abChlKSxpPXI9PT1lLm93bmVyRG9jdW1lbnQ/LmJvZHksYT0kKHIpO2lmKGkpe2xldCBlPSRsKGEpO3JldHVybiB0LmNvbmNhdChhLGEudmlzdWFsVmlld3BvcnR8fFtdLExsKHIpP3I6W10sZSYmbj9RbChlKTpbXSl9cmV0dXJuIHQuY29uY2F0KHIsUWwocixbXSxuKSl9ZnVuY3Rpb24gJGwoZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gZXUoZSl7bGV0IHQ9SmwoZSksbj1wYXJzZUZsb2F0KHQud2lkdGgpfHwwLHI9cGFyc2VGbG9hdCh0LmhlaWdodCl8fDAsaT1GbChlKSxhPWk/ZS5vZmZzZXRXaWR0aDpuLG89aT9lLm9mZnNldEhlaWdodDpyLHM9V2MobikhPT1hfHxXYyhyKSE9PW87cmV0dXJuIHMmJihuPWEscj1vKSx7d2lkdGg6bixoZWlnaHQ6ciwkOnN9fWZ1bmN0aW9uIHR1KGUpe3JldHVybiBQbChlKT9lOmUuY29udGV4dEVsZW1lbnR9ZnVuY3Rpb24gbnUoZSl7bGV0IHQ9dHUoZSk7aWYoIUZsKHQpKXJldHVybiBLYygxKTtsZXQgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt3aWR0aDpyLGhlaWdodDppLCQ6YX09ZXUodCksbz0oYT9XYyhuLndpZHRoKTpuLndpZHRoKS9yLHM9KGE/V2Mobi5oZWlnaHQpOm4uaGVpZ2h0KS9pO3JldHVybighb3x8IU51bWJlci5pc0Zpbml0ZShvKSkmJihvPTEpLCghc3x8IU51bWJlci5pc0Zpbml0ZShzKSkmJihzPTEpLHt4Om8seTpzfX12YXIgcnU9S2MoMCk7ZnVuY3Rpb24gaXUoZSl7bGV0IHQ9JChlKTtyZXR1cm4hS2woKXx8IXQudmlzdWFsVmlld3BvcnQ/cnU6e3g6dC52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LHk6dC52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3B9fWZ1bmN0aW9uIGF1KGUsdCxuKXtyZXR1cm4gdD09PXZvaWQgMCYmKHQ9ITEpLCEhbiYmdCYmbj09PSQoZSl9ZnVuY3Rpb24gb3UoZSx0LG4scil7dD09PXZvaWQgMCYmKHQ9ITEpLG49PT12b2lkIDAmJihuPSExKTtsZXQgaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGE9dHUoZSksbz1LYygxKTt0JiYocj9QbChyKSYmKG89bnUocikpOm89bnUoZSkpO2xldCBzPWF1KGEsbixyKT9pdShhKTpLYygwKSxjPShpLmxlZnQrcy54KS9vLngsbD0oaS50b3Arcy55KS9vLnksdT1pLndpZHRoL28ueCxkPWkuaGVpZ2h0L28ueTtpZihhJiZyKXtsZXQgZT0kKGEpLHQ9UGwocik/JChyKTpyLG49ZSxpPSRsKG4pO2Zvcig7aSYmdCE9PW47KXtsZXQgZT1udShpKSx0PWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1KbChpKSxhPXQubGVmdCsoaS5jbGllbnRMZWZ0K3BhcnNlRmxvYXQoci5wYWRkaW5nTGVmdCkpKmUueCxvPXQudG9wKyhpLmNsaWVudFRvcCtwYXJzZUZsb2F0KHIucGFkZGluZ1RvcCkpKmUueTtjKj1lLngsbCo9ZS55LHUqPWUueCxkKj1lLnksYys9YSxsKz1vLG49JChpKSxpPSRsKG4pfX1yZXR1cm4gbWwoe3dpZHRoOnUsaGVpZ2h0OmQseDpjLHk6bH0pfWZ1bmN0aW9uIHN1KGUsdCl7bGV0IG49WWwoZSkuc2Nyb2xsTGVmdDtyZXR1cm4gdD90LmxlZnQrbjpvdShNbChlKSkubGVmdCtufWZ1bmN0aW9uIGN1KGUsdCl7bGV0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57eDpuLmxlZnQrdC5zY3JvbGxMZWZ0LXN1KGUsbikseTpuLnRvcCt0LnNjcm9sbFRvcH19ZnVuY3Rpb24gbHUoZSl7bGV0e2VsZW1lbnRzOnQscmVjdDpuLG9mZnNldFBhcmVudDpyLHN0cmF0ZWd5Oml9PWUsYT1pPT09YGZpeGVkYCxvPU1sKHIpLHM9dD96bCh0LmZsb2F0aW5nKTohMTtpZihyPT09b3x8cyYmYSlyZXR1cm4gbjtsZXQgYz17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowfSxsPUtjKDEpLHU9S2MoMCksZD1GbChyKTtpZigoZHx8IWEpJiYoKGpsKHIpIT09YGJvZHlgfHxMbChvKSkmJihjPVlsKHIpKSxkKSl7bGV0IGU9b3Uocik7bD1udShyKSx1Lng9ZS54K3IuY2xpZW50TGVmdCx1Lnk9ZS55K3IuY2xpZW50VG9wfWxldCBmPW8mJiFkJiYhYT9jdShvLGMpOktjKDApO3JldHVybnt3aWR0aDpuLndpZHRoKmwueCxoZWlnaHQ6bi5oZWlnaHQqbC55LHg6bi54KmwueC1jLnNjcm9sbExlZnQqbC54K3UueCtmLngseTpuLnkqbC55LWMuc2Nyb2xsVG9wKmwueSt1LnkrZi55fX1mdW5jdGlvbiB1dShlKXtyZXR1cm4gZS5nZXRDbGllbnRSZWN0cz9BcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSk6W119ZnVuY3Rpb24gZHUoZSl7bGV0IHQ9WWwoZSksbj1lLm93bmVyRG9jdW1lbnQuYm9keSxyPVVjKGUuc2Nyb2xsV2lkdGgsZS5jbGllbnRXaWR0aCxuLnNjcm9sbFdpZHRoLG4uY2xpZW50V2lkdGgpLGk9VWMoZS5zY3JvbGxIZWlnaHQsZS5jbGllbnRIZWlnaHQsbi5zY3JvbGxIZWlnaHQsbi5jbGllbnRIZWlnaHQpLGE9LXQuc2Nyb2xsTGVmdCtzdShlKSxvPS10LnNjcm9sbFRvcDtyZXR1cm4gSmwobikuZGlyZWN0aW9uPT09YHJ0bGAmJihhKz1VYyhlLmNsaWVudFdpZHRoLG4uY2xpZW50V2lkdGgpLXIpLHt3aWR0aDpyLGhlaWdodDppLHg6YSx5Om99fXZhciBmdT0yNTtmdW5jdGlvbiBwdShlLHQsbil7bj09PXZvaWQgMCYmKG49YHZpZXdwb3J0YCk7bGV0IHI9bj09PWBsYXlvdXRWaWV3cG9ydGAsaT0kKGUpLGE9TWwoZSksbz1pLnZpc3VhbFZpZXdwb3J0LHM9YS5jbGllbnRXaWR0aCxjPWEuY2xpZW50SGVpZ2h0LGw9MCx1PTA7aWYobyl7bGV0IGU9IUtsKCl8fHQ9PT1gZml4ZWRgO3I/ZXx8KGw9LW8ub2Zmc2V0TGVmdCx1PS1vLm9mZnNldFRvcCk6KHM9by53aWR0aCxjPW8uaGVpZ2h0LGUmJihsPW8ub2Zmc2V0TGVmdCx1PW8ub2Zmc2V0VG9wKSl9aWYoc3UoYSk8PTApe2xldCBlPWEub3duZXJEb2N1bWVudCx0PWUuYm9keSxuPWdldENvbXB1dGVkU3R5bGUodCkscj1lLmNvbXBhdE1vZGU9PT1gQ1NTMUNvbXBhdGAmJnBhcnNlRmxvYXQobi5tYXJnaW5MZWZ0KStwYXJzZUZsb2F0KG4ubWFyZ2luUmlnaHQpfHwwLGk9TWF0aC5hYnMoYS5jbGllbnRXaWR0aC10LmNsaWVudFdpZHRoLXIpLG89Z2V0Q29tcHV0ZWRTdHlsZShhKS5zY3JvbGxiYXJHdXR0ZXI9PT1gc3RhYmxlIGJvdGgtZWRnZXNgP2kvMjppO288PWZ1JiYocy09byl9cmV0dXJue3dpZHRoOnMsaGVpZ2h0OmMseDpsLHk6dX19ZnVuY3Rpb24gbXUoZSx0KXtsZXQgbj1vdShlLCEwLHQ9PT1gZml4ZWRgKSxyPW4udG9wK2UuY2xpZW50VG9wLGk9bi5sZWZ0K2UuY2xpZW50TGVmdCxhPW51KGUpO3JldHVybnt3aWR0aDplLmNsaWVudFdpZHRoKmEueCxoZWlnaHQ6ZS5jbGllbnRIZWlnaHQqYS55LHg6aSphLngseTpyKmEueX19ZnVuY3Rpb24gaHUoZSx0LG4pe2xldCByO2lmKHQ9PT1gdmlld3BvcnRgfHx0PT09YGxheW91dFZpZXdwb3J0YClyPXB1KGUsbix0KTtlbHNlIGlmKHQ9PT1gZG9jdW1lbnRgKXI9ZHUoTWwoZSkpO2Vsc2UgaWYoUGwodCkpcj1tdSh0LG4pO2Vsc2V7bGV0IG49aXUoZSk7cj17eDp0Lngtbi54LHk6dC55LW4ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIG1sKHIpfWZ1bmN0aW9uIGd1KGUsdCl7bGV0IG49dC5nZXQoZSk7aWYobilyZXR1cm4gbjtsZXQgcj1RbChlLFtdLCExKS5maWx0ZXIoZT0+UGwoZSkmJmpsKGUpIT09YGJvZHlgKSxpPW51bGwsYT1KbChlKS5wb3NpdGlvbj09PWBmaXhlZGAsbz1hP1hsKGUpOmU7Zm9yKDtQbChvKSYmIXFsKG8pOyl7bGV0IGU9SmwobyksdD1XbChvKSxuPWk/aS5wb3NpdGlvbjphP2BmaXhlZGA6YGA7IXQmJihuPT09YGZpeGVkYHx8bj09PWBhYnNvbHV0ZWAmJmUucG9zaXRpb249PT1gc3RhdGljYCk/cj1yLmZpbHRlcihlPT5lIT09byk6aT1lLG89WGwobyl9cmV0dXJuIHQuc2V0KGUscikscn1mdW5jdGlvbiBfdShlKXtsZXR7ZWxlbWVudDp0LGJvdW5kYXJ5Om4scm9vdEJvdW5kYXJ5OnIsc3RyYXRlZ3k6aX09ZSxhPVsuLi5uPT09YGNsaXBwaW5nQW5jZXN0b3JzYD96bCh0KT9bXTpndSh0LHRoaXMuX2MpOltdLmNvbmNhdChuKSxyXSxvPWh1KHQsYVswXSxpKSxzPW8udG9wLGM9by5yaWdodCxsPW8uYm90dG9tLHU9by5sZWZ0O2ZvcihsZXQgZT0xO2U8YS5sZW5ndGg7ZSsrKXtsZXQgbj1odSh0LGFbZV0saSk7cz1VYyhuLnRvcCxzKSxjPUhjKG4ucmlnaHQsYyksbD1IYyhuLmJvdHRvbSxsKSx1PVVjKG4ubGVmdCx1KX1yZXR1cm57d2lkdGg6Yy11LGhlaWdodDpsLXMseDp1LHk6c319ZnVuY3Rpb24gdnUoZSl7bGV0e3dpZHRoOnQsaGVpZ2h0Om59PWV1KGUpO3JldHVybnt3aWR0aDp0LGhlaWdodDpufX1mdW5jdGlvbiB5dShlLHQsbil7bGV0IHI9RmwodCksaT1NbCh0KSxhPW49PT1gZml4ZWRgLG89b3UoZSwhMCxhLHQpLHM9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sYz1LYygwKTtpZigocnx8IWEpJiYoKGpsKHQpIT09YGJvZHlgfHxMbChpKSkmJihzPVlsKHQpKSxyKSl7bGV0IGU9b3UodCwhMCxhLHQpO2MueD1lLngrdC5jbGllbnRMZWZ0LGMueT1lLnkrdC5jbGllbnRUb3B9IXImJmkmJihjLng9c3UoaSkpO2xldCBsPWkmJiFyJiYhYT9jdShpLHMpOktjKDApO3JldHVybnt4Om8ubGVmdCtzLnNjcm9sbExlZnQtYy54LWwueCx5Om8udG9wK3Muc2Nyb2xsVG9wLWMueS1sLnksd2lkdGg6by53aWR0aCxoZWlnaHQ6by5oZWlnaHR9fWZ1bmN0aW9uIGJ1KGUpe3JldHVybiBKbChlKS5wb3NpdGlvbj09PWBzdGF0aWNgfWZ1bmN0aW9uIHh1KGUsdCl7aWYoIUZsKGUpfHxKbChlKS5wb3NpdGlvbj09PWBmaXhlZGApcmV0dXJuIG51bGw7aWYodClyZXR1cm4gdChlKTtsZXQgbj1lLm9mZnNldFBhcmVudDtyZXR1cm4gTWwoZSk9PT1uJiYobj1uLm93bmVyRG9jdW1lbnQuYm9keSksbn1mdW5jdGlvbiBTdShlLHQpe2xldCBuPSQoZSk7aWYoemwoZSkpcmV0dXJuIG47aWYoIUZsKGUpKXtsZXQgdD1YbChlKTtmb3IoO3QmJiFxbCh0KTspe2lmKFBsKHQpJiYhYnUodCkpcmV0dXJuIHQ7dD1YbCh0KX1yZXR1cm4gbn1sZXQgcj14dShlLHQpO2Zvcig7ciYmUmwocikmJmJ1KHIpOylyPXh1KHIsdCk7cmV0dXJuIHImJnFsKHIpJiZidShyKSYmIVdsKHIpP246cnx8R2woZSl8fG59dmFyIEN1PWFzeW5jIGZ1bmN0aW9uKGUpe2xldCB0PXRoaXMuZ2V0T2Zmc2V0UGFyZW50fHxTdSxuPXRoaXMuZ2V0RGltZW5zaW9ucyxyPWF3YWl0IG4oZS5mbG9hdGluZyk7cmV0dXJue3JlZmVyZW5jZTp5dShlLnJlZmVyZW5jZSxhd2FpdCB0KGUuZmxvYXRpbmcpLGUuc3RyYXRlZ3kpLGZsb2F0aW5nOnt4OjAseTowLHdpZHRoOnIud2lkdGgsaGVpZ2h0OnIuaGVpZ2h0fX19O2Z1bmN0aW9uIHd1KGUpe3JldHVybiBKbChlKS5kaXJlY3Rpb249PT1gcnRsYH12YXIgVHU9e2NvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0Omx1LGdldERvY3VtZW50RWxlbWVudDpNbCxnZXRDbGlwcGluZ1JlY3Q6X3UsZ2V0T2Zmc2V0UGFyZW50OlN1LGdldEVsZW1lbnRSZWN0czpDdSxnZXRDbGllbnRSZWN0czp1dSxnZXREaW1lbnNpb25zOnZ1LGdldFNjYWxlOm51LGlzRWxlbWVudDpQbCxpc1JUTDp3dX07ZnVuY3Rpb24gRXUoZSx0KXtyZXR1cm4gZS54PT09dC54JiZlLnk9PT10LnkmJmUud2lkdGg9PT10LndpZHRoJiZlLmhlaWdodD09PXQuaGVpZ2h0fWZ1bmN0aW9uIER1KGUsdCxuKXtsZXQgcj1udWxsLGksYT1NbChlKTtmdW5jdGlvbiBvKCl7dmFyIGU7Y2xlYXJUaW1lb3V0KGkpLChlPXIpPT1udWxsfHxlLmRpc2Nvbm5lY3QoKSxyPW51bGx9ZnVuY3Rpb24gcyhuLGMpe249PT12b2lkIDAmJihuPSExKSxjPT09dm9pZCAwJiYoYz0xKSxvKCk7bGV0IGw9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7bGVmdDp1LHRvcDpkLHdpZHRoOmYsaGVpZ2h0OnB9PWw7aWYobnx8dCgpLCFmfHwhcClyZXR1cm47bGV0IG09R2MoZCksaD1HYyhhLmNsaWVudFdpZHRoLSh1K2YpKSxnPUdjKGEuY2xpZW50SGVpZ2h0LShkK3ApKSxfPUdjKHUpLHY9e3Jvb3RNYXJnaW46LW0rYHB4IGArLWgrYHB4IGArLWcrYHB4IGArLV8rYHB4YCx0aHJlc2hvbGQ6VWMoMCxIYygxLGMpKXx8MX0seT0hMDtmdW5jdGlvbiBiKHQpe2xldCBuPXRbMF0uaW50ZXJzZWN0aW9uUmF0aW87aWYoIUV1KGwsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSkpcmV0dXJuIHMoKTtpZihuIT09Yyl7aWYoIXkpcmV0dXJuIHMoKTtuP3MoITEsbik6aT1zZXRUaW1lb3V0KCgpPT57cyghMSwxZS03KX0sMWUzKX15PSExfXRyeXtyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihiLHsuLi52LHJvb3Q6YS5vd25lckRvY3VtZW50fSl9Y2F0Y2h7cj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix2KX1yLm9ic2VydmUoZSl9bGV0IGM9JChlKSxsPSgpPT5zKG4pO3JldHVybiBjLmFkZEV2ZW50TGlzdGVuZXIoYHJlc2l6ZWAsbCkscyghMCksKCk9PntjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYHJlc2l6ZWAsbCksbygpfX1mdW5jdGlvbiBPdShlLHQsbixyKXtyPT09dm9pZCAwJiYocj17fSk7bGV0e2FuY2VzdG9yU2Nyb2xsOmk9ITAsYW5jZXN0b3JSZXNpemU6YT0hMCxlbGVtZW50UmVzaXplOm89dHlwZW9mIFJlc2l6ZU9ic2VydmVyPT1gZnVuY3Rpb25gLGxheW91dFNoaWZ0OnM9dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyPT1gZnVuY3Rpb25gLGFuaW1hdGlvbkZyYW1lOmM9ITF9PXIsbD10dShlKSx1PWl8fGE/Wy4uLmw/UWwobCk6W10sLi4udD9RbCh0KTpbXV06W107dS5mb3JFYWNoKGU9PntpJiZlLmFkZEV2ZW50TGlzdGVuZXIoYHNjcm9sbGAsbiksYSYmZS5hZGRFdmVudExpc3RlbmVyKGByZXNpemVgLG4pfSk7bGV0IGQ9bCYmcz9EdShsLG4sYSk6bnVsbCxmPS0xLHA9bnVsbDtvJiYocD1uZXcgUmVzaXplT2JzZXJ2ZXIoZT0+e2xldFtyXT1lO3ImJnIudGFyZ2V0PT09bCYmcCYmdCYmKHAudW5vYnNlcnZlKHQpLGNhbmNlbEFuaW1hdGlvbkZyYW1lKGYpLGY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dmFyIGU7KGU9cCk9PW51bGx8fGUub2JzZXJ2ZSh0KX0pKSxuKCl9KSxsJiYhYyYmcC5vYnNlcnZlKGwpLHQmJnAub2JzZXJ2ZSh0KSk7bGV0IG0saD1jP291KGUpOm51bGw7YyYmZygpO2Z1bmN0aW9uIGcoKXtsZXQgdD1vdShlKTtoJiYhRXUoaCx0KSYmbigpLGg9dCxtPXJlcXVlc3RBbmltYXRpb25GcmFtZShnKX1yZXR1cm4gbigpLCgpPT57dmFyIGU7dS5mb3JFYWNoKGU9PntpJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYHNjcm9sbGAsbiksYSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGByZXNpemVgLG4pfSksZD8uKCksKGU9cCk9PW51bGx8fGUuZGlzY29ubmVjdCgpLHA9bnVsbCxjJiZjYW5jZWxBbmltYXRpb25GcmFtZShtKX19dmFyIGt1PUVsLEF1PURsLGp1PWJsLE11PWtsLE51PUNsLFB1PXlsLEZ1PU9sLEl1PShlLHQsbik9PntsZXQgcj1uZXcgTWFwLGk9bj8/e30sYT17Li4uVHUsLi4uaS5wbGF0Zm9ybSxfYzpyfTtyZXR1cm4gdmwoZSx0LHsuLi5pLHBsYXRmb3JtOmF9KX07ZnVuY3Rpb24gTHUoZSl7cmV0dXJuIHR5cGVvZiBlPT1gb2JqZWN0YCYmISFlJiZgJGVsYGluIGV9ZnVuY3Rpb24gUnUoZSl7aWYoTHUoZSkpe2xldCB0PWUuJGVsO3JldHVybiBObCh0KSYmamwodCk9PT1gI2NvbW1lbnRgP251bGw6dH1yZXR1cm4gZX1mdW5jdGlvbiB6dShlKXtyZXR1cm4gdHlwZW9mIGU9PWBmdW5jdGlvbmA/ZSgpOkIoZSl9ZnVuY3Rpb24gQnUoZSl7cmV0dXJue25hbWU6YGFycm93YCxvcHRpb25zOmUsZm4odCl7bGV0IG49UnUoenUoZS5lbGVtZW50KSk7cmV0dXJuIG49PW51bGw/e306UHUoe2VsZW1lbnQ6bixwYWRkaW5nOmUucGFkZGluZ30pLmZuKHQpfX19ZnVuY3Rpb24gVnUoZSl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+YHVgPzE6KGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5kZXZpY2VQaXhlbFJhdGlvfHwxfWZ1bmN0aW9uIEh1KGUsdCl7bGV0IG49VnUoZSk7cmV0dXJuIE1hdGgucm91bmQodCpuKS9ufWZ1bmN0aW9uIFV1KGUsdCxuKXtuPT09dm9pZCAwJiYobj17fSk7bGV0IHI9bi53aGlsZUVsZW1lbnRzTW91bnRlZCxpPUwoKCk9Pnp1KG4ub3Blbik/PyEwKSxhPUwoKCk9Pnp1KG4ubWlkZGxld2FyZSkpLG89TCgoKT0+enUobi5wbGFjZW1lbnQpPz9gYm90dG9tYCkscz1MKCgpPT56dShuLnN0cmF0ZWd5KT8/YGFic29sdXRlYCksYz1MKCgpPT56dShuLnRyYW5zZm9ybSk/PyEwKSxsPUwoKCk9PlJ1KGUudmFsdWUpKSx1PUwoKCk9PlJ1KHQudmFsdWUpKSxkPWooMCksZj1qKDApLHA9aihzLnZhbHVlKSxtPWooby52YWx1ZSksaD1UZSh7fSksZz1qKCExKSxfPUwoKCk9PntsZXQgZT17cG9zaXRpb246cC52YWx1ZSxsZWZ0OmAwYCx0b3A6YDBgfTtpZighdS52YWx1ZSlyZXR1cm4gZTtsZXQgdD1IdSh1LnZhbHVlLGQudmFsdWUpLG49SHUodS52YWx1ZSxmLnZhbHVlKTtyZXR1cm4gYy52YWx1ZT97Li4uZSx0cmFuc2Zvcm06YHRyYW5zbGF0ZShgK3QrYHB4LCBgK24rYHB4KWAsLi4uVnUodS52YWx1ZSk+PTEuNSYme3dpbGxDaGFuZ2U6YHRyYW5zZm9ybWB9fTp7cG9zaXRpb246cC52YWx1ZSxsZWZ0OnQrYHB4YCx0b3A6bitgcHhgfX0pLHY7ZnVuY3Rpb24geSgpe2lmKGwudmFsdWU9PW51bGx8fHUudmFsdWU9PW51bGwpcmV0dXJuO2xldCBlPWkudmFsdWU7SXUobC52YWx1ZSx1LnZhbHVlLHttaWRkbGV3YXJlOmEudmFsdWUscGxhY2VtZW50Om8udmFsdWUsc3RyYXRlZ3k6cy52YWx1ZX0pLnRoZW4odD0+e2QudmFsdWU9dC54LGYudmFsdWU9dC55LHAudmFsdWU9dC5zdHJhdGVneSxtLnZhbHVlPXQucGxhY2VtZW50LGgudmFsdWU9dC5taWRkbGV3YXJlRGF0YSxnLnZhbHVlPWUhPT0hMX0pfWZ1bmN0aW9uIGIoKXt0eXBlb2Ygdj09YGZ1bmN0aW9uYCYmKHYoKSx2PXZvaWQgMCl9ZnVuY3Rpb24geCgpe2lmKGIoKSxyPT09dm9pZCAwKXt5KCk7cmV0dXJufWlmKGwudmFsdWUhPW51bGwmJnUudmFsdWUhPW51bGwpe3Y9cihsLnZhbHVlLHUudmFsdWUseSk7cmV0dXJufX1mdW5jdGlvbiBTKCl7aS52YWx1ZXx8KGcudmFsdWU9ITEpfXJldHVybiBEKFthLG8scyxpXSx5LHtmbHVzaDpgc3luY2B9KSxEKFtsLHVdLHgse2ZsdXNoOmBzeW5jYH0pLEQoaSxTLHtmbHVzaDpgc3luY2B9KSxiZSgpJiZRZShiKSx7eDppdChkKSx5Oml0KGYpLHN0cmF0ZWd5Oml0KHApLHBsYWNlbWVudDppdChtKSxtaWRkbGV3YXJlRGF0YTppdChoKSxpc1Bvc2l0aW9uZWQ6aXQoZyksZmxvYXRpbmdTdHlsZXM6Xyx1cGRhdGU6eX19dmFyIFd1PVtgZGlyYF0sR3U9e3NpZGU6YGJvdHRvbWAsc2lkZU9mZnNldDowLHNpZGVGbGlwOiEwLGFsaWduOmBjZW50ZXJgLGFsaWduT2Zmc2V0OjAsYWxpZ25GbGlwOiEwLGFycm93UGFkZGluZzowLGhpZGVTaGlmdGVkQXJyb3c6ITAsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OigpPT5bXSxjb2xsaXNpb25QYWRkaW5nOjAsc3RpY2t5OmBwYXJ0aWFsYCxoaWRlV2hlbkRldGFjaGVkOiExLHBvc2l0aW9uU3RyYXRlZ3k6YGZpeGVkYCx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5OmBvcHRpbWl6ZWRgLHByaW9yaXRpemVQb3NpdGlvbjohMX0sW0t1LHF1XT1hKGBQb3BwZXJDb250ZW50YCksSnU9SCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgUG9wcGVyQ29udGVudGAscHJvcHM6eCh7bWVtb0RlcGVuZGVuY2llczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHsuLi5HdX0pLGVtaXRzOltgcGxhY2VkYF0sc2V0dXAobix7ZW1pdDpyfSl7bGV0IGk9bixhPXIsbz1QYygpLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6Y309dCgpLGw9ZShMKCgpPT5pLmRpcikpLHU9aigpLGY9aigpLHt3aWR0aDptLGhlaWdodDpofT1acyhmKSxnPUwoKCk9Pmkuc2lkZSsoaS5hbGlnbj09PWBjZW50ZXJgP2BgOmAtJHtpLmFsaWdufWApKSxfPUwoKCk9PnR5cGVvZiBpLmNvbGxpc2lvblBhZGRpbmc9PWBudW1iZXJgP2kuY29sbGlzaW9uUGFkZGluZzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsLi4uaS5jb2xsaXNpb25QYWRkaW5nfSksdj1MKCgpPT5BcnJheS5pc0FycmF5KGkuY29sbGlzaW9uQm91bmRhcnkpP2kuY29sbGlzaW9uQm91bmRhcnk6W2kuY29sbGlzaW9uQm91bmRhcnldKSx5PUwoKCk9Pih7cGFkZGluZzpfLnZhbHVlLGJvdW5kYXJ5OnYudmFsdWUuZmlsdGVyKFJjKSxhbHRCb3VuZGFyeTp2LnZhbHVlLmxlbmd0aD4wfSkpLGI9TCgoKT0+KHttYWluQXhpczppLnNpZGVGbGlwLGNyb3NzQXhpczppLmFsaWduRmxpcH0pKSx4PUwoKCk9PltrdSh7bWFpbkF4aXM6aS5zaWRlT2Zmc2V0K2gudmFsdWUsYWxpZ25tZW50QXhpczppLmFsaWduT2Zmc2V0fSksaS5wcmlvcml0aXplUG9zaXRpb24mJmkuYXZvaWRDb2xsaXNpb25zJiZqdSh7Li4ueS52YWx1ZSwuLi5iLnZhbHVlfSksaS5hdm9pZENvbGxpc2lvbnMmJkF1KHttYWluQXhpczohMCxjcm9zc0F4aXM6ISFpLnByaW9yaXRpemVQb3NpdGlvbixsaW1pdGVyOmkuc3RpY2t5PT09YHBhcnRpYWxgP0Z1KCk6dm9pZCAwLC4uLnkudmFsdWV9KSwhaS5wcmlvcml0aXplUG9zaXRpb24mJmkuYXZvaWRDb2xsaXNpb25zJiZqdSh7Li4ueS52YWx1ZSwuLi5iLnZhbHVlfSksTXUoey4uLnkudmFsdWUsYXBwbHk6KHtlbGVtZW50czplLHJlY3RzOnQsYXZhaWxhYmxlV2lkdGg6bixhdmFpbGFibGVIZWlnaHQ6cn0pPT57bGV0e3dpZHRoOmksaGVpZ2h0OmF9PXQucmVmZXJlbmNlLG89ZS5mbG9hdGluZy5zdHlsZTtvLnNldFByb3BlcnR5KGAtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS13aWR0aGAsYCR7bn1weGApLG8uc2V0UHJvcGVydHkoYC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodGAsYCR7cn1weGApLG8uc2V0UHJvcGVydHkoYC0tcmVrYS1wb3BwZXItYW5jaG9yLXdpZHRoYCxgJHtpfXB4YCksby5zZXRQcm9wZXJ0eShgLS1yZWthLXBvcHBlci1hbmNob3ItaGVpZ2h0YCxgJHthfXB4YCl9fSksZi52YWx1ZSYmQnUoe2VsZW1lbnQ6Zi52YWx1ZSxwYWRkaW5nOmkuYXJyb3dQYWRkaW5nfSksemMoe2Fycm93V2lkdGg6bS52YWx1ZSxhcnJvd0hlaWdodDpoLnZhbHVlLGRpcjpsLnZhbHVlfSksaS5oaWRlV2hlbkRldGFjaGVkJiZOdSh7c3RyYXRlZ3k6YHJlZmVyZW5jZUhpZGRlbmAsLi4ueS52YWx1ZX0pXSkse2Zsb2F0aW5nU3R5bGVzOlMscGxhY2VtZW50OkMsaXNQb3NpdGlvbmVkOncsbWlkZGxld2FyZURhdGE6VCx1cGRhdGU6ZWV9PVV1KEwoKCk9PmkucmVmZXJlbmNlPz9vLmFuY2hvci52YWx1ZSksdSx7c3RyYXRlZ3k6aS5wb3NpdGlvblN0cmF0ZWd5LHBsYWNlbWVudDpnLHdoaWxlRWxlbWVudHNNb3VudGVkOiguLi5lKT0+T3UoLi4uZSx7bGF5b3V0U2hpZnQ6IWkuZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQsYW5pbWF0aW9uRnJhbWU6aS51cGRhdGVQb3NpdGlvblN0cmF0ZWd5PT09YGFsd2F5c2B9KSxtaWRkbGV3YXJlOnh9KSxEPUwoKCk9PkJjKEMudmFsdWUpWzBdKSx0ZT1MKCgpPT5CYyhDLnZhbHVlKVsxXSk7aWUoKCk9Pnt3LnZhbHVlJiZhKGBwbGFjZWRgKX0pO2xldCBuZT1MKCgpPT57bGV0IGU9VC52YWx1ZS5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MDtyZXR1cm4gaS5oaWRlU2hpZnRlZEFycm93JiZlfSkscmU9aihgYCk7cmV0dXJuIE8oKCk9PntjLnZhbHVlJiYocmUudmFsdWU9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYy52YWx1ZSkuekluZGV4KX0pLHF1KHtwbGFjZWRTaWRlOkQsb25BcnJvd0NoYW5nZTplPT5mLnZhbHVlPWUsYXJyb3dYOkwoKCk9PlQudmFsdWUuYXJyb3c/Lng/PzApLGFycm93WTpMKCgpPT5ULnZhbHVlLmFycm93Py55Pz8wKSxzaG91bGRIaWRlQXJyb3c6bmV9KSwoZSx0KT0+KFAoKSx6KGBkaXZgLHtyZWZfa2V5OmBmbG9hdGluZ1JlZmAscmVmOnUsImRhdGEtcmVrYS1wb3BwZXItY29udGVudC13cmFwcGVyIjpgYCxkaXI6QihsKSxzdHlsZTpwKHsuLi5CKFMpLHRyYW5zZm9ybTpCKHcpP0IoUykudHJhbnNmb3JtOmB0cmFuc2xhdGUoMCwgLTIwMCUpYCxtaW5XaWR0aDpgbWF4LWNvbnRlbnRgLHpJbmRleDpyZS52YWx1ZSwiLS1yZWthLXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luIjpbQihUKS50cmFuc2Zvcm1PcmlnaW4/LngsQihUKS50cmFuc2Zvcm1PcmlnaW4/LnldLmpvaW4oYCBgKSwuLi5CKFQpLmhpZGU/LnJlZmVyZW5jZUhpZGRlbiYme3Zpc2liaWxpdHk6YGhpZGRlbmAscG9pbnRlckV2ZW50czpgbm9uZWB9fSl9LFtpLm1lbW9EZXBlbmRlbmNpZXM/ZChbaS5hc0NoaWxkLGkuYXMsRC52YWx1ZSx0ZS52YWx1ZSxCKHcpLC4uLk9iamVjdC52YWx1ZXMoZS4kYXR0cnMpLC4uLmkubWVtb0RlcGVuZGVuY2llc10sKCk9PihQKCksTShCKEYpLGsoe2tleTowLHJlZjpCKHMpfSxlLiRhdHRycyx7ImFzLWNoaWxkIjppLmFzQ2hpbGQsYXM6aS5hcywiZGF0YS1zaWRlIjpELnZhbHVlLCJkYXRhLWFsaWduIjp0ZS52YWx1ZSxzdHlsZTp7YW5pbWF0aW9uOkIodyk/dm9pZCAwOmBub25lYH19KSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGFzLWNoaWxkYCxgYXNgLGBkYXRhLXNpZGVgLGBkYXRhLWFsaWduYCxgc3R5bGVgXSkpLHQsMCk6KFAoKSxNKEIoRiksayh7a2V5OjEscmVmOkIocyl9LGUuJGF0dHJzLHsiYXMtY2hpbGQiOmkuYXNDaGlsZCxhczppLmFzLCJkYXRhLXNpZGUiOkQudmFsdWUsImRhdGEtYWxpZ24iOnRlLnZhbHVlLGRpcjpCKGwpLHN0eWxlOnthbmltYXRpb246Qih3KT92b2lkIDA6YG5vbmVgfX0pLHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2LFtgYXMtY2hpbGRgLGBhc2AsYGRhdGEtc2lkZWAsYGRhdGEtYWxpZ25gLGBkaXJgLGBzdHlsZWBdKSldLDEyLFd1KSl9fSk7ZnVuY3Rpb24gWXUoZSl7bGV0IHQ9cih7bm9uY2U6aigpfSk7cmV0dXJuIEwoKCk9PmU/LnZhbHVlfHx0Lm5vbmNlPy52YWx1ZSl9dmFyIFh1PVtgIGAsYEVudGVyYCxgQXJyb3dVcGAsYEFycm93RG93bmBdLFp1PVtgIGAsYEVudGVyYF07ZnVuY3Rpb24gUXUoZSx0LG4pe3JldHVybiBlPT09dm9pZCAwPyExOkFycmF5LmlzQXJyYXkoZSk/ZS5zb21lKGU9PiR1KGUsdCxuKSk6JHUoZSx0LG4pfWZ1bmN0aW9uICR1KGUsdCxuKXtyZXR1cm4gZT09PXZvaWQgMHx8dD09PXZvaWQgMD8hMTp0eXBlb2YgZT09YHN0cmluZ2A/ZT09PXQ6dHlwZW9mIG49PWBmdW5jdGlvbmA/bihlLHQpOnR5cGVvZiBuPT1gc3RyaW5nYD9lPy5bbl09PT10Py5bbl06VHMoZSx0KX1mdW5jdGlvbiBlZChlKXtyZXR1cm4gZT09bnVsbHx8ZT09PWBgfHxBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTB9dmFyIHRkPVtgdmFsdWVgXSxbbmQscmRdPWEoYFNlbGVjdFJvb3RgKSxpZD1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RSb290YCxwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxudWxsYWJsZVZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmBgfSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXSxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbmFtZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYCxgdXBkYXRlOm9wZW5gXSxzZXR1cCh0LHtlbWl0Om59KXtsZXQgcj10LGk9bix7cmVxdWlyZWQ6YSxkaXNhYmxlZDpvLG11bHRpcGxlOnMsZGlyOmN9PUZlKHIpLGw9c2UocixgbW9kZWxWYWx1ZWAsaSx7ZGVmYXVsdFZhbHVlOnIuZGVmYXVsdFZhbHVlPz8ocy52YWx1ZT9bXTp2b2lkIDApLHBhc3NpdmU6ci5tb2RlbFZhbHVlPT09dm9pZCAwLGRlZXA6ITB9KSx1PXNlKHIsYG9wZW5gLGkse2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRPcGVuLHBhc3NpdmU6ci5vcGVuPT09dm9pZCAwfSksZD1qKCksZj1qKCkscD1qKHt4OjAseTowfSksbT1MKCgpPT5zLnZhbHVlJiZBcnJheS5pc0FycmF5KGwudmFsdWUpP2wudmFsdWU/Lmxlbmd0aD09PTA6T3MobC52YWx1ZSkpO01jKHtpc1Byb3ZpZGVyOiEwfSk7bGV0IGg9ZShjKSxnPUJzKGQpLF89aihuZXcgU2V0KSx2PUwoKCk9PkFycmF5LmZyb20oXy52YWx1ZSkubWFwKGU9PmUudmFsdWUpLmpvaW4oYDtgKSk7ZnVuY3Rpb24geShlKXtpZihzLnZhbHVlKXtsZXQgdD1BcnJheS5pc0FycmF5KGwudmFsdWUpP1suLi5sLnZhbHVlXTpbXSxuPXQuZmluZEluZGV4KHQ9PiR1KHQsZSxyLmJ5KSk7bj09PS0xP3QucHVzaChlKTp0LnNwbGljZShuLDEpLGwudmFsdWU9Wy4uLnRdfWVsc2UgbC52YWx1ZT1lfWZ1bmN0aW9uIGIoZSl7cmV0dXJuIEFycmF5LmZyb20oXy52YWx1ZSkuZmluZCh0PT5RdShlLHQudmFsdWUsci5ieSkpfXJldHVybiByZCh7dHJpZ2dlckVsZW1lbnQ6ZCxvblRyaWdnZXJDaGFuZ2U6ZT0+e2QudmFsdWU9ZX0sdmFsdWVFbGVtZW50OmYsb25WYWx1ZUVsZW1lbnRDaGFuZ2U6ZT0+e2YudmFsdWU9ZX0sY29udGVudElkOmBgLG1vZGVsVmFsdWU6bCxvblZhbHVlQ2hhbmdlOnksYnk6ci5ieSxvcGVuOnUsbXVsdGlwbGU6cyxyZXF1aXJlZDphLG9uT3BlbkNoYW5nZTplPT57dS52YWx1ZT1lfSxkaXI6aCx0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWY6cCxkaXNhYmxlZDpvLGlzRW1wdHlNb2RlbFZhbHVlOm0sb3B0aW9uc1NldDpfLG9uT3B0aW9uQWRkOmU9PntsZXQgdD1iKGUudmFsdWUpO3QmJl8udmFsdWUuZGVsZXRlKHQpLF8udmFsdWUuYWRkKGUpfSxvbk9wdGlvblJlbW92ZTplPT57bGV0IHQ9YihlLnZhbHVlKTt0JiZfLnZhbHVlLmRlbGV0ZSh0KX19KSwoZSx0KT0+KFAoKSxNKEIoSWMpLG51bGwse2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgLHttb2RlbFZhbHVlOkIobCksb3BlbjpCKHUpfSksQihnKSYmZS5uYW1lPyhQKCksTShhZCx7a2V5OnYudmFsdWUsImFyaWEtaGlkZGVuIjpgdHJ1ZWAsdGFiaW5kZXg6YC0xYCxtdWx0aXBsZTpCKHMpLHJlcXVpcmVkOkIoYSksbmFtZTplLm5hbWUsYXV0b2NvbXBsZXRlOmUuYXV0b2NvbXBsZXRlLGRpc2FibGVkOkIobyksdmFsdWU6QihsKX0se2RlZmF1bHQ6RSgoKT0+W0IoT3MpKEIobCkpPyhQKCkseihgb3B0aW9uYCx7a2V5OjAsdmFsdWU6ZS5udWxsYWJsZVZhbHVlfSxudWxsLDgsdGQpKTpJKGB2LWlmYCwhMCksKFAoITApLHoodmUsbnVsbCxhdChBcnJheS5mcm9tKF8udmFsdWUpLGU9PihQKCkseihgb3B0aW9uYCxrKHtrZXk6ZS52YWx1ZT8/YGB9LHtyZWZfZm9yOiEwfSxlKSxudWxsLDE2KSkpLDEyOCkpXSksXzoxfSw4LFtgbXVsdGlwbGVgLGByZXF1aXJlZGAsYG5hbWVgLGBhdXRvY29tcGxldGVgLGBkaXNhYmxlZGAsYHZhbHVlYF0pKTpJKGB2LWlmYCwhMCldKSxfOjN9KSl9fSksYWQ9SCh7X19uYW1lOmBCdWJibGVTZWxlY3RgLHByb3BzOnthdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9ybTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWUsbj1qKCkscj1uZCgpO0QoKCk9PnQudmFsdWUsKGUsdCk9PntsZXQgcj13aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGB2YWx1ZWApLnNldDtpZihlIT09dCYmaSYmbi52YWx1ZSl7bGV0IHQ9bmV3IEV2ZW50KGBjaGFuZ2VgLHtidWJibGVzOiEwfSk7aS5jYWxsKG4udmFsdWUsZSksbi52YWx1ZS5kaXNwYXRjaEV2ZW50KHQpfX0pO2Z1bmN0aW9uIGkoZSl7ci5vblZhbHVlQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1yZXR1cm4oZSxyKT0+KFAoKSxNKEIoTmMpLHsiYXMtY2hpbGQiOmBgfSx7ZGVmYXVsdDpFKCgpPT5bUihgc2VsZWN0YCxrKHtyZWZfa2V5OmBzZWxlY3RFbGVtZW50YCxyZWY6bn0sdCx7b25JbnB1dDppfSksW04oZS4kc2xvdHMsYGRlZmF1bHRgKV0sMTYpXSksXzozfSkpfX0pLG9kPUgoe19fbmFtZTpgU2VsZWN0UG9wcGVyUG9zaXRpb25gLHByb3BzOnttZW1vRGVwZW5kZW5jaWVzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHN0YXJ0YH0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9aShlKTtyZXR1cm4oZSxuKT0+KFAoKSxNKEIoSnUpLGsoQih0KSx7c3R5bGU6e2JveFNpemluZzpgYm9yZGVyLWJveGAsIi0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjpgdmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbilgLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjpgdmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKWAsIi0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjpgdmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodClgLCItLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgiOmB2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpYCwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCI6YHZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpYH19KSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNikpfX0pLHNkPXtvblZpZXdwb3J0Q2hhbmdlOigpPT57fSxpdGVtVGV4dFJlZkNhbGxiYWNrOigpPT57fSxpdGVtUmVmQ2FsbGJhY2s6KCk9Pnt9fSxbY2QsbGRdPWEoYFNlbGVjdENvbnRlbnRgKSx1ZD1IKHtfX25hbWU6YFNlbGVjdENvbnRlbnRJbXBsYCxwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGl0ZW0tYWxpZ25lZGB9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbWVtb0RlcGVuZGVuY2llczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzdGFydGB9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbYGNsb3NlQXV0b0ZvY3VzYCxgZXNjYXBlS2V5RG93bmAsYHBvaW50ZXJEb3duT3V0c2lkZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPWUscj10LGE9bmQoKTtScygpLFBzKG4uYm9keUxvY2spO2xldHtDb2xsZWN0aW9uU2xvdDpvLGdldEl0ZW1zOnN9PU1jKCksYz1qKCk7WHMoYyk7bGV0e3NlYXJjaDpsLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDp1fT0kcygpLGQ9aigpLGY9aigpLHA9aigpLG09aighMSksaD1qKCExKSxnPWooITEpO2Z1bmN0aW9uIF8oKXtmLnZhbHVlJiZjLnZhbHVlJiZrYyhbZi52YWx1ZSxjLnZhbHVlXSl9RChtLCgpPT57XygpfSk7bGV0e29uT3BlbkNoYW5nZTp2LHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjp5fT1hO08oZT0+e2lmKCFjLnZhbHVlKXJldHVybjtsZXQgdD17eDowLHk6MH0sbj1lPT57dD17eDpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVgpLSh5LnZhbHVlPy54Pz8wKSkseTpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVkpLSh5LnZhbHVlPy55Pz8wKSl9fSxyPWU9PntlLnBvaW50ZXJUeXBlIT09YHRvdWNoYCYmKHQueDw9MTAmJnQueTw9MTA/ZS5wcmV2ZW50RGVmYXVsdCgpOmMudmFsdWU/LmNvbnRhaW5zKGUudGFyZ2V0KXx8dighMSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcm1vdmVgLG4pLHkudmFsdWU9bnVsbCl9O3kudmFsdWUhPT1udWxsJiYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihgcG9pbnRlcm1vdmVgLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYHBvaW50ZXJ1cGAscix7Y2FwdHVyZTohMCxvbmNlOiEwfSkpLGUoKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGBwb2ludGVybW92ZWAsbiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcnVwYCxyLHtjYXB0dXJlOiEwfSl9KX0pO2Z1bmN0aW9uIGIoZSl7bGV0IHQ9ZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5O2lmKGUua2V5PT09YFRhYmAmJmUucHJldmVudERlZmF1bHQoKSwhdCYmZS5rZXkubGVuZ3RoPT09MSYmdShlLmtleSxzKCkpLFtgQXJyb3dVcGAsYEFycm93RG93bmAsYEhvbWVgLGBFbmRgXS5pbmNsdWRlcyhlLmtleSkpe2xldCB0PVsuLi5zKCkubWFwKGU9PmUucmVmKV07aWYoW2BBcnJvd1VwYCxgRW5kYF0uaW5jbHVkZXMoZS5rZXkpJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpKSxbYEFycm93VXBgLGBBcnJvd0Rvd25gXS5pbmNsdWRlcyhlLmtleSkpe2xldCBuPWUudGFyZ2V0LHI9dC5pbmRleE9mKG4pO3Q9dC5zbGljZShyKzEpfXNldFRpbWVvdXQoKCk9PmtjKHQpKSxlLnByZXZlbnREZWZhdWx0KCl9fWxldCB4PUwoKCk9Pm4ucG9zaXRpb249PT1gcG9wcGVyYD9uOnt9KSxTPWkoeC52YWx1ZSk7cmV0dXJuIGxkKHtjb250ZW50OmMsdmlld3BvcnQ6ZCxvblZpZXdwb3J0Q2hhbmdlOmU9PntkLnZhbHVlPWV9LGl0ZW1SZWZDYWxsYmFjazooZSx0LG4pPT57bGV0IHI9IWgudmFsdWUmJiFuLGk9UXUoYS5tb2RlbFZhbHVlLnZhbHVlLHQsYS5ieSk7aWYoYS5tdWx0aXBsZS52YWx1ZSl7aWYoZy52YWx1ZSlyZXR1cm47KGl8fHIpJiYoZi52YWx1ZT1lLGkmJihnLnZhbHVlPSEwKSl9ZWxzZShpfHxyKSYmKGYudmFsdWU9ZSk7ciYmKGgudmFsdWU9ITApfSxzZWxlY3RlZEl0ZW06ZixzZWxlY3RlZEl0ZW1UZXh0OnAsb25JdGVtTGVhdmU6KCk9PntjLnZhbHVlPy5mb2N1cygpfSxpdGVtVGV4dFJlZkNhbGxiYWNrOihlLHQsbik9PntsZXQgcj0haC52YWx1ZSYmIW47KFF1KGEubW9kZWxWYWx1ZS52YWx1ZSx0LGEuYnkpfHxyKSYmKHAudmFsdWU9ZSl9LGZvY3VzU2VsZWN0ZWRJdGVtOl8scG9zaXRpb246bi5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6bSxzZWFyY2hSZWY6bH0pLChlLHQpPT4oUCgpLE0oQihvKSxudWxsLHtkZWZhdWx0OkUoKCk9PltBKEIoVGMpLHsiYXMtY2hpbGQiOmBgLG9uTW91bnRBdXRvRm9jdXM6dFs2XXx8PV9lKCgpPT57fSxbYHByZXZlbnRgXSksb25Vbm1vdW50QXV0b0ZvY3VzOnRbN118fD1lPT57cihgY2xvc2VBdXRvRm9jdXNgLGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQmJihCKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUucHJldmVudERlZmF1bHQoKSl9fSx7ZGVmYXVsdDpFKCgpPT5bQShCKGRjKSx7ImFzLWNoaWxkIjpgYCwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjplLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkZvY3VzT3V0c2lkZTp0WzJdfHw9X2UoKCk9Pnt9LFtgcHJldmVudGBdKSxvbkRpc21pc3M6dFszXXx8PWU9PkIoYSkub25PcGVuQ2hhbmdlKCExKSxvbkVzY2FwZUtleURvd246dFs0XXx8PWU9PnIoYGVzY2FwZUtleURvd25gLGUpLG9uUG9pbnRlckRvd25PdXRzaWRlOnRbNV18fD1lPT5yKGBwb2ludGVyRG93bk91dHNpZGVgLGUpfSx7ZGVmYXVsdDpFKCgpPT5bKFAoKSxNKEhlKGUucG9zaXRpb249PT1gcG9wcGVyYD9vZDpwZCksayh7Li4uZS4kYXR0cnMsLi4uQihTKX0se2lkOkIoYSkuY29udGVudElkLHJlZjplPT57aWYoIWUpcmV0dXJuO2xldCB0PUIocmUpKGUpO3Q/Lmhhc0F0dHJpYnV0ZShgZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXJgKT9jLnZhbHVlPXQuZmlyc3RFbGVtZW50Q2hpbGQ6Yy52YWx1ZT10fSxyb2xlOmBsaXN0Ym94YCwiZGF0YS1zdGF0ZSI6QihhKS5vcGVuLnZhbHVlP2BvcGVuYDpgY2xvc2VkYCxkaXI6QihhKS5kaXIudmFsdWUsc3R5bGU6e2Rpc3BsYXk6YGZsZXhgLGZsZXhEaXJlY3Rpb246YGNvbHVtbmAsb3V0bGluZTpgbm9uZWB9LG9uQ29udGV4dG1lbnU6dFswXXx8PV9lKCgpPT57fSxbYHByZXZlbnRgXSksb25QbGFjZWQ6dFsxXXx8PWU9Pm0udmFsdWU9ITAsb25LZXlkb3duOmJ9KSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGlkYCxgZGF0YS1zdGF0ZWAsYGRpcmAsYG9uS2V5ZG93bmBdKSldKSxfOjN9LDgsW2BkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHNgXSldKSxfOjN9KV0pLF86M30pKX19KSxbZGQsZmRdPWEoYFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25gKSxwZD1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2BwbGFjZWRgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgcj1lLGk9bix7Z2V0SXRlbXM6YX09TWMoKSxvPW5kKCkscz1jZCgpLGM9aighMSksbD1qKCEwKSx1PWooKSx7Zm9yd2FyZFJlZjpkLGN1cnJlbnRFbGVtZW50OmZ9PXQoKSx7dmlld3BvcnQ6bSxzZWxlY3RlZEl0ZW06aCxzZWxlY3RlZEl0ZW1UZXh0OmcsZm9jdXNTZWxlY3RlZEl0ZW06X309cztmdW5jdGlvbiB2KCl7aWYoby50cmlnZ2VyRWxlbWVudC52YWx1ZSYmby52YWx1ZUVsZW1lbnQudmFsdWUmJnUudmFsdWUmJmYudmFsdWUmJm0/LnZhbHVlJiZoPy52YWx1ZSYmZz8udmFsdWUpe2xldCBlPW8udHJpZ2dlckVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdD1mLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by52YWx1ZUVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1nLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKG8uZGlyLnZhbHVlIT09YHJ0bGApe2xldCBpPXIubGVmdC10LmxlZnQsYT1uLmxlZnQtaSxvPWUubGVmdC1hLHM9ZS53aWR0aCtvLGM9TWF0aC5tYXgocyx0LndpZHRoKSxsPXdpbmRvdy5pbm5lcldpZHRoLTEwLGQ9RXMoYSwxMCxNYXRoLm1heCgxMCxsLWMpKTt1LnZhbHVlLnN0eWxlLm1pbldpZHRoPWAke3N9cHhgLHUudmFsdWUuc3R5bGUubGVmdD1gJHtkfXB4YH1lbHNle2xldCBpPXQucmlnaHQtci5yaWdodCxhPXdpbmRvdy5pbm5lcldpZHRoLW4ucmlnaHQtaSxvPXdpbmRvdy5pbm5lcldpZHRoLWUucmlnaHQtYSxzPWUud2lkdGgrbyxjPU1hdGgubWF4KHMsdC53aWR0aCksbD13aW5kb3cuaW5uZXJXaWR0aC0xMCxkPUVzKGEsMTAsTWF0aC5tYXgoMTAsbC1jKSk7dS52YWx1ZS5zdHlsZS5taW5XaWR0aD1gJHtzfXB4YCx1LnZhbHVlLnN0eWxlLnJpZ2h0PWAke2R9cHhgfWxldCBzPWEoKS5tYXAoZT0+ZS5yZWYpLGw9d2luZG93LmlubmVySGVpZ2h0LTIwLGQ9bS52YWx1ZS5zY3JvbGxIZWlnaHQscD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShmLnZhbHVlKSxfPU51bWJlci5wYXJzZUludChwLmJvcmRlclRvcFdpZHRoLDEwKSx2PU51bWJlci5wYXJzZUludChwLnBhZGRpbmdUb3AsMTApLHk9TnVtYmVyLnBhcnNlSW50KHAuYm9yZGVyQm90dG9tV2lkdGgsMTApLGI9TnVtYmVyLnBhcnNlSW50KHAucGFkZGluZ0JvdHRvbSwxMCkseD1fK3YrZCtiK3ksUz1NYXRoLm1pbihoLnZhbHVlLm9mZnNldEhlaWdodCo1LHgpLEM9d2luZG93LmdldENvbXB1dGVkU3R5bGUobS52YWx1ZSksdz1OdW1iZXIucGFyc2VJbnQoQy5wYWRkaW5nVG9wLDEwKSxUPU51bWJlci5wYXJzZUludChDLnBhZGRpbmdCb3R0b20sMTApLEU9ZS50b3ArZS5oZWlnaHQvMi0xMCxlZT1sLUUsRD1oLnZhbHVlLm9mZnNldEhlaWdodC8yLHRlPWgudmFsdWUub2Zmc2V0VG9wK0QsTz1fK3YrdGUsbmU9eC1PO2lmKE88PUUpe2xldCBlPWgudmFsdWU9PT1zLmF0KC0xKTt1LnZhbHVlLnN0eWxlLmJvdHRvbT1gMHB4YDtsZXQgdD1mLnZhbHVlLmNsaWVudEhlaWdodC1tLnZhbHVlLm9mZnNldFRvcC1tLnZhbHVlLm9mZnNldEhlaWdodCxuPU8rTWF0aC5tYXgoZWUsRCsoZT9UOjApK3QreSk7dS52YWx1ZS5zdHlsZS5oZWlnaHQ9YCR7bn1weGB9ZWxzZXtsZXQgZT1oLnZhbHVlPT09c1swXTt1LnZhbHVlLnN0eWxlLnRvcD1gMHB4YDtsZXQgdD1NYXRoLm1heChFLF8rbS52YWx1ZS5vZmZzZXRUb3ArKGU/dzowKStEKStuZTt1LnZhbHVlLnN0eWxlLmhlaWdodD1gJHt0fXB4YCxtLnZhbHVlLnNjcm9sbFRvcD1PLUUrbS52YWx1ZS5vZmZzZXRUb3B9dS52YWx1ZS5zdHlsZS5tYXJnaW49YDEwcHggMGAsdS52YWx1ZS5zdHlsZS5taW5IZWlnaHQ9YCR7U31weGAsdS52YWx1ZS5zdHlsZS5tYXhIZWlnaHQ9YCR7bH1weGAsaShgcGxhY2VkYCkscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5jLnZhbHVlPSEwKX19bGV0IGI9aihgYCk7b2UoYXN5bmMoKT0+e2F3YWl0IHkoKSx2KCksZi52YWx1ZSYmKGIudmFsdWU9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZi52YWx1ZSkuekluZGV4KX0pO2Z1bmN0aW9uIHgoZSl7ZSYmbC52YWx1ZT09PSEwJiYodigpLF8/LigpLGwudmFsdWU9ITEpfXJldHVybiBUKG8udHJpZ2dlckVsZW1lbnQsKCk9Pnt2KCl9KSxmZCh7Y29udGVudFdyYXBwZXI6dSxzaG91bGRFeHBhbmRPblNjcm9sbFJlZjpjLG9uU2Nyb2xsQnV0dG9uQ2hhbmdlOnh9KSwoZSx0KT0+KFAoKSx6KGBkaXZgLHtyZWZfa2V5OmBjb250ZW50V3JhcHBlckVsZW1lbnRgLHJlZjp1LHN0eWxlOnAoe2Rpc3BsYXk6YGZsZXhgLGZsZXhEaXJlY3Rpb246YGNvbHVtbmAscG9zaXRpb246YGZpeGVkYCx6SW5kZXg6Yi52YWx1ZX0pfSxbQShCKEYpLGsoe3JlZjpCKGQpLHN0eWxlOntib3hTaXppbmc6YGJvcmRlci1ib3hgLG1heEhlaWdodDpgMTAwJWB9fSx7Li4uZS4kYXR0cnMsLi4ucn0pLHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2KV0sNCkpfX0pLG1kPUgoe2luaGVyaXRBdHRyczohMSxfX25hbWU6YFNlbGVjdFByb3ZpZGVyYCxwcm9wczp7Y29udGV4dDp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITB9fSxzZXR1cChlKXtyZXR1cm4gcmQoZS5jb250ZXh0KSxsZChzZCksKGUsdCk9Pk4oZS4kc2xvdHMsYGRlZmF1bHRgKX19KSxoZD17a2V5OjF9LGdkPUgoe2luaGVyaXRBdHRyczohMSxfX25hbWU6YFNlbGVjdENvbnRlbnRgLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYm9keUxvY2s6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sbWVtb0RlcGVuZGVuY2llczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExfSxhcnJvd1BhZGRpbmc6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHN0aWNreTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGhpZGVXaGVuRGV0YWNoZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxlbWl0czpbYGNsb3NlQXV0b0ZvY3VzYCxgZXNjYXBlS2V5RG93bmAsYHBvaW50ZXJEb3duT3V0c2lkZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCByPWUsaT1uKHIsdCksYT1uZCgpLG89aigpO29lKCgpPT57by52YWx1ZT1uZXcgRG9jdW1lbnRGcmFnbWVudH0pO2xldCBzPWooKSxjPUwoKCk9PnIuZm9yY2VNb3VudHx8YS5vcGVuLnZhbHVlKSxsPWooYy52YWx1ZSksdTtmdW5jdGlvbiBkKCl7dSYmPShjbGVhclRpbWVvdXQodSksdm9pZCAwKX1yZXR1cm4gRChjLChlLHQsbik9PntkKCksdT1zZXRUaW1lb3V0KCgpPT57bC52YWx1ZT1jLnZhbHVlLHU9dm9pZCAwfSksbihkKX0pLEdlKGQpLChlLHQpPT5jLnZhbHVlfHxsLnZhbHVlfHxzLnZhbHVlPy5wcmVzZW50PyhQKCksTShCKGljKSx7a2V5OjAscmVmX2tleTpgcHJlc2VuY2VSZWZgLHJlZjpzLHByZXNlbnQ6Yy52YWx1ZX0se2RlZmF1bHQ6RSgoKT0+W0EodWQsbGUoemUoey4uLkIoaSksLi4uZS4kYXR0cnN9KSkse2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpXSksXzozfSw4LFtgcHJlc2VudGBdKSk6by52YWx1ZT8oUCgpLHooYGRpdmAsaGQsWyhQKCksTShPZSx7dG86by52YWx1ZX0sW0EobWQse2NvbnRleHQ6QihhKX0se2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGNvbnRleHRgXSldLDgsW2B0b2BdKSldKSk6SShgdi1pZmAsITApfX0pLF9kPUgoe19fbmFtZTpgU2VsZWN0SWNvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzcGFuYH19LHNldHVwKGUpe3JldHVybihlLHQpPT4oUCgpLE0oQihGKSx7ImFyaWEtaGlkZGVuIjpgdHJ1ZWAsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZH0se2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bdFswXXx8PU1lKGDilrxgKV0pXSksXzozfSw4LFtgYXNgLGBhcy1jaGlsZGBdKSl9fSksW3ZkLHlkXT1hKGBTZWxlY3RJdGVtYCksYmQ9SCh7X19uYW1lOmBTZWxlY3RJdGVtYCxwcm9wczp7dmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMH0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sdGV4dFZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2BzZWxlY3RgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgcj1lLGk9bix7ZGlzYWJsZWQ6YX09RmUocikscz1uZCgpLGM9Y2QoKSx7Zm9yd2FyZFJlZjpsLGN1cnJlbnRFbGVtZW50OnV9PXQoKSx7Q29sbGVjdGlvbkl0ZW06ZH09TWMoKSxmPUwoKCk9PlF1KHMubW9kZWxWYWx1ZT8udmFsdWUsci52YWx1ZSxzLmJ5KSkscD1qKCExKSxtPWooci50ZXh0VmFsdWU/P2BgKSxoPW8odm9pZCAwLGByZWthLXNlbGVjdC1pdGVtLXRleHRgKTthc3luYyBmdW5jdGlvbiBnKGUpe2UuZGVmYXVsdFByZXZlbnRlZHx8RHMoYHNlbGVjdC5zZWxlY3RgLF8se29yaWdpbmFsRXZlbnQ6ZSx2YWx1ZTpyLnZhbHVlfSl9YXN5bmMgZnVuY3Rpb24gXyhlKXthd2FpdCB5KCksaShgc2VsZWN0YCxlKSwhZS5kZWZhdWx0UHJldmVudGVkJiYoYS52YWx1ZXx8KHMub25WYWx1ZUNoYW5nZShyLnZhbHVlKSxzLm11bHRpcGxlLnZhbHVlfHxzLm9uT3BlbkNoYW5nZSghMSkpKX1hc3luYyBmdW5jdGlvbiB2KGUpe2F3YWl0IHkoKSwhZS5kZWZhdWx0UHJldmVudGVkJiYoYS52YWx1ZT9jLm9uSXRlbUxlYXZlPy4oKTplLmN1cnJlbnRUYXJnZXQ/LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSkpfWFzeW5jIGZ1bmN0aW9uIGIoZSl7YXdhaXQgeSgpLCFlLmRlZmF1bHRQcmV2ZW50ZWQmJmUuY3VycmVudFRhcmdldD09PVooKSYmYy5vbkl0ZW1MZWF2ZT8uKCl9YXN5bmMgZnVuY3Rpb24geChlKXthd2FpdCB5KCksIWUuZGVmYXVsdFByZXZlbnRlZCYmKGMuc2VhcmNoUmVmPy52YWx1ZT09PWBgfHxlLmtleSE9PWAgYCkmJihadS5pbmNsdWRlcyhlLmtleSkmJmcoZSksZS5rZXk9PT1gIGAmJmUucHJldmVudERlZmF1bHQoKSl9aWYoci52YWx1ZT09PWBgKXRocm93IEVycm9yKGBBIDxTZWxlY3RJdGVtIC8+IG11c3QgaGF2ZSBhIHZhbHVlIHByb3AgdGhhdCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGJlY2F1c2UgdGhlIFNlbGVjdCB2YWx1ZSBjYW4gYmUgc2V0IHRvIGFuIGVtcHR5IHN0cmluZyB0byBjbGVhciB0aGUgc2VsZWN0aW9uIGFuZCBzaG93IHRoZSBwbGFjZWhvbGRlci5gKTtyZXR1cm4gb2UoKCk9Pnt1LnZhbHVlJiZjLml0ZW1SZWZDYWxsYmFjayh1LnZhbHVlLHIudmFsdWUsci5kaXNhYmxlZCl9KSx5ZCh7dmFsdWU6ci52YWx1ZSxkaXNhYmxlZDphLHRleHRJZDpoLGlzU2VsZWN0ZWQ6Zixvbkl0ZW1UZXh0Q2hhbmdlOmU9PnttLnZhbHVlPSgobS52YWx1ZXx8ZT8udGV4dENvbnRlbnQpPz9gYCkudHJpbSgpfX0pLChlLHQpPT4oUCgpLE0oQihkKSx7dmFsdWU6e3RleHRWYWx1ZTptLnZhbHVlfX0se2RlZmF1bHQ6RSgoKT0+W0EoQihGKSx7cmVmOkIobCkscm9sZTpgb3B0aW9uYCwiYXJpYS1sYWJlbGxlZGJ5IjpCKGgpLCJkYXRhLWhpZ2hsaWdodGVkIjpwLnZhbHVlP2BgOnZvaWQgMCwiYXJpYS1zZWxlY3RlZCI6Zi52YWx1ZSwiZGF0YS1zdGF0ZSI6Zi52YWx1ZT9gY2hlY2tlZGA6YHVuY2hlY2tlZGAsImFyaWEtZGlzYWJsZWQiOkIoYSl8fHZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6QihhKT9gYDp2b2lkIDAsdGFiaW5kZXg6QihhKT92b2lkIDA6LTEsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxvbkZvY3VzOnRbMF18fD1lPT5wLnZhbHVlPSEwLG9uQmx1cjp0WzFdfHw9ZT0+cC52YWx1ZT0hMSxvblBvaW50ZXJ1cDpnLG9uUG9pbnRlcmRvd246dFsyXXx8PWU9PntlLmN1cnJlbnRUYXJnZXQuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KX0sb25Ub3VjaGVuZDp0WzNdfHw9X2UoKCk9Pnt9LFtgcHJldmVudGAsYHN0b3BgXSksb25Qb2ludGVybW92ZTp2LG9uUG9pbnRlcmxlYXZlOmIsb25LZXlkb3duOnh9LHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2BhcmlhLWxhYmVsbGVkYnlgLGBkYXRhLWhpZ2hsaWdodGVkYCxgYXJpYS1zZWxlY3RlZGAsYGRhdGEtc3RhdGVgLGBhcmlhLWRpc2FibGVkYCxgZGF0YS1kaXNhYmxlZGAsYHRhYmluZGV4YCxgYXNgLGBhcy1jaGlsZGBdKV0pLF86M30sOCxbYHZhbHVlYF0pKX19KSx4ZD1IKHtfX25hbWU6YFNlbGVjdEl0ZW1JbmRpY2F0b3JgLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtsZXQgdD1lLG49dmQoKTtyZXR1cm4oZSxyKT0+QihuKS5pc1NlbGVjdGVkLnZhbHVlPyhQKCksTShCKEYpLGsoe2tleTowLCJhcmlhLWhpZGRlbiI6YHRydWVgfSx0KSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNikpOkkoYHYtaWZgLCEwKX19KSxTZD1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RJdGVtVGV4dGAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzcGFuYH19LHNldHVwKGUpe2xldCBuPWUscj1uZCgpLGk9Y2QoKSxhPXZkKCkse2ZvcndhcmRSZWY6byxjdXJyZW50RWxlbWVudDpzfT10KCksYz1MKCgpPT4oe3ZhbHVlOmEudmFsdWUsZGlzYWJsZWQ6YS5kaXNhYmxlZC52YWx1ZSx0ZXh0Q29udGVudDpzLnZhbHVlPy50ZXh0Q29udGVudD8/YS52YWx1ZT8udG9TdHJpbmcoKT8/YGB9KSk7cmV0dXJuIG9lKCgpPT57cy52YWx1ZSYmKGEub25JdGVtVGV4dENoYW5nZShzLnZhbHVlKSxpLml0ZW1UZXh0UmVmQ2FsbGJhY2socy52YWx1ZSxhLnZhbHVlLGEuZGlzYWJsZWQudmFsdWUpLHIub25PcHRpb25BZGQoYy52YWx1ZSkpfSksR2UoKCk9PntyLm9uT3B0aW9uUmVtb3ZlKGMudmFsdWUpfSksKGUsdCk9PihQKCksTShCKEYpLGsoe2lkOkIoYSkudGV4dElkLHJlZjpCKG8pfSx7Li4ubiwuLi5lLiRhdHRyc30pLHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2LFtgaWRgXSkpfX0pLENkPUgoe19fbmFtZTpgU2VsZWN0UG9ydGFsYCxwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KFAoKSxNKEIoQWMpLGxlKHplKHQpKSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNikpfX0pLHdkPUgoe19fbmFtZTpgU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbGAsZW1pdHM6W2BhdXRvU2Nyb2xsYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IG49dCx7Z2V0SXRlbXM6cn09TWMoKSxpPWNkKCksYT1qKG51bGwpO2Z1bmN0aW9uIG8oKXthLnZhbHVlIT09bnVsbCYmKHdpbmRvdy5jbGVhckludGVydmFsKGEudmFsdWUpLGEudmFsdWU9bnVsbCl9TygoKT0+e3IoKS5tYXAoZT0+ZS5yZWYpLmZpbmQoZT0+ZT09PVooKSk/LnNjcm9sbEludG9WaWV3KHtibG9jazpgbmVhcmVzdGB9KX0pO2Z1bmN0aW9uIHMoKXthLnZhbHVlPT09bnVsbCYmKGEudmFsdWU9d2luZG93LnNldEludGVydmFsKCgpPT57bihgYXV0b1Njcm9sbGApfSw1MCkpfWZ1bmN0aW9uIGMoKXtpLm9uSXRlbUxlYXZlPy4oKSxhLnZhbHVlPT09bnVsbCYmKGEudmFsdWU9d2luZG93LnNldEludGVydmFsKCgpPT57bihgYXV0b1Njcm9sbGApfSw1MCkpfXJldHVybiBDKCgpPT5vKCkpLChlLHQpPT4oUCgpLE0oQihGKSxrKHsiYXJpYS1oaWRkZW4iOmB0cnVlYCxzdHlsZTp7ZmxleFNocmluazowfX0sZS4kcGFyZW50Py4kcHJvcHMse29uUG9pbnRlcmRvd246cyxvblBvaW50ZXJtb3ZlOmMsb25Qb2ludGVybGVhdmU6dFswXXx8PSgpPT57bygpfX0pLHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2KSl9fSksVGQ9SCh7X19uYW1lOmBTZWxlY3RTY3JvbGxEb3duQnV0dG9uYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IG49Y2QoKSxyPW4ucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYD9kZCgpOnZvaWQgMCx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50OmF9PXQoKSxvPWooITEpO3JldHVybiBPKGU9PntpZihuLnZpZXdwb3J0Py52YWx1ZSYmbi5pc1Bvc2l0aW9uZWQ/LnZhbHVlKXtsZXQgdD1uLnZpZXdwb3J0LnZhbHVlO2Z1bmN0aW9uIHIoKXtsZXQgZT10LnNjcm9sbEhlaWdodC10LmNsaWVudEhlaWdodDtvLnZhbHVlPU1hdGguY2VpbCh0LnNjcm9sbFRvcCk8ZX1yKCksdC5hZGRFdmVudExpc3RlbmVyKGBzY3JvbGxgLHIpLGUoKCk9PnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgc2Nyb2xsYCxyKSl9fSksRChhLCgpPT57YS52YWx1ZSYmcj8ub25TY3JvbGxCdXR0b25DaGFuZ2UoYS52YWx1ZSl9KSwoZSx0KT0+by52YWx1ZT8oUCgpLE0od2Qse2tleTowLHJlZjpCKGkpLG9uQXV0b1Njcm9sbDp0WzBdfHw9KCk9PntsZXR7dmlld3BvcnQ6ZSxzZWxlY3RlZEl0ZW06dH09QihuKTtlPy52YWx1ZSYmdD8udmFsdWUmJihlLnZhbHVlLnNjcm9sbFRvcD1lLnZhbHVlLnNjcm9sbFRvcCt0LnZhbHVlLm9mZnNldEhlaWdodCl9fSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw1MTIpKTpJKGB2LWlmYCwhMCl9fSksRWQ9SCh7X19uYW1lOmBTZWxlY3RTY3JvbGxVcEJ1dHRvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCBuPWNkKCkscj1uLnBvc2l0aW9uPT09YGl0ZW0tYWxpZ25lZGA/ZGQoKTp2b2lkIDAse2ZvcndhcmRSZWY6aSxjdXJyZW50RWxlbWVudDphfT10KCksbz1qKCExKTtyZXR1cm4gTyhlPT57aWYobi52aWV3cG9ydD8udmFsdWUmJm4uaXNQb3NpdGlvbmVkPy52YWx1ZSl7bGV0IHQ9bi52aWV3cG9ydC52YWx1ZTtmdW5jdGlvbiByKCl7by52YWx1ZT10LnNjcm9sbFRvcD4wfXIoKSx0LmFkZEV2ZW50TGlzdGVuZXIoYHNjcm9sbGAsciksZSgoKT0+dC5yZW1vdmVFdmVudExpc3RlbmVyKGBzY3JvbGxgLHIpKX19KSxEKGEsKCk9PnthLnZhbHVlJiZyPy5vblNjcm9sbEJ1dHRvbkNoYW5nZShhLnZhbHVlKX0pLChlLHQpPT5vLnZhbHVlPyhQKCksTSh3ZCx7a2V5OjAscmVmOkIoaSksb25BdXRvU2Nyb2xsOnRbMF18fD0oKT0+e2xldHt2aWV3cG9ydDplLHNlbGVjdGVkSXRlbTp0fT1CKG4pO2U/LnZhbHVlJiZ0Py52YWx1ZSYmKGUudmFsdWUuc2Nyb2xsVG9wPWUudmFsdWUuc2Nyb2xsVG9wLXQudmFsdWUub2Zmc2V0SGVpZ2h0KX19LHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDUxMikpOkkoYHYtaWZgLCEwKX19KSxEZD1IKHtfX25hbWU6YFNlbGVjdFRyaWdnZXJgLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGJ1dHRvbmB9fSxzZXR1cChlKXtsZXQgbj1lLHI9bmQoKSx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50OmF9PXQoKSxzPUwoKCk9PnIuZGlzYWJsZWQ/LnZhbHVlfHxuLmRpc2FibGVkKTtyLmNvbnRlbnRJZHx8PW8odm9pZCAwLGByZWthLXNlbGVjdC1jb250ZW50YCksb2UoKCk9PntyLm9uVHJpZ2dlckNoYW5nZShhLnZhbHVlKX0pO2xldHtnZXRJdGVtczpjfT1NYygpLHtzZWFyY2g6bCxoYW5kbGVUeXBlYWhlYWRTZWFyY2g6dSxyZXNldFR5cGVhaGVhZDpkfT0kcygpO2Z1bmN0aW9uIGYoKXtzLnZhbHVlfHwoci5vbk9wZW5DaGFuZ2UoITApLGQoKSl9ZnVuY3Rpb24gcChlKXtmKCksci50cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYudmFsdWU9e3g6TWF0aC5yb3VuZChlLnBhZ2VYKSx5Ok1hdGgucm91bmQoZS5wYWdlWSl9fWZ1bmN0aW9uIG0oZSl7cmV0dXJuIGUuYnV0dG9uPT09MCYmZS5jdHJsS2V5PT09ITF9bGV0IGg9ITE7ZnVuY3Rpb24gZyhlKXtpZihlLnBvaW50ZXJUeXBlPT09YHRvdWNoYClyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB0PWUudGFyZ2V0O3QuaGFzUG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpJiZ0LnJlbGVhc2VQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCksbShlKSYmKHAoZSksaD0hMCl9ZnVuY3Rpb24gXyhlKXttKGUpJiZlLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gdihlKXtofHxlLmN1cnJlbnRUYXJnZXQ/LmZvY3VzKCksaD0hMX1yZXR1cm4oZSx0KT0+KFAoKSxNKEIoTGMpLHsiYXMtY2hpbGQiOmBgLHJlZmVyZW5jZTplLnJlZmVyZW5jZX0se2RlZmF1bHQ6RSgoKT0+W0EoQihGKSx7cmVmOkIoaSkscm9sZTpgY29tYm9ib3hgLHR5cGU6ZS5hcz09PWBidXR0b25gP2BidXR0b25gOnZvaWQgMCwiYXJpYS1jb250cm9scyI6QihyKS5jb250ZW50SWQsImFyaWEtZXhwYW5kZWQiOkIocikub3Blbi52YWx1ZXx8ITEsImFyaWEtcmVxdWlyZWQiOkIocikucmVxdWlyZWQ/LnZhbHVlLCJhcmlhLWF1dG9jb21wbGV0ZSI6YG5vbmVgLGRpc2FibGVkOnMudmFsdWUsZGlyOkIocik/LmRpci52YWx1ZSwiZGF0YS1zdGF0ZSI6QihyKT8ub3Blbi52YWx1ZT9gb3BlbmA6YGNsb3NlZGAsImRhdGEtZGlzYWJsZWQiOnMudmFsdWU/YGA6dm9pZCAwLCJkYXRhLXBsYWNlaG9sZGVyIjpCKGVkKShCKHIpLm1vZGVsVmFsdWU/LnZhbHVlKT9gYDp2b2lkIDAsImFzLWNoaWxkIjplLmFzQ2hpbGQsYXM6ZS5hcyxvbkNsaWNrOnYsb25Qb2ludGVyZG93bjpnLG9uTW91c2Vkb3duOl8sb25Qb2ludGVydXA6dFswXXx8PV9lKGU9PntlLnBvaW50ZXJUeXBlPT09YHRvdWNoYCYmcChlKX0sW2BwcmV2ZW50YF0pLG9uS2V5ZG93bjp0WzFdfHw9ZT0+e2xldCB0PUIobCkhPT1gYDshKGUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSkmJmUua2V5Lmxlbmd0aD09PTEmJnQmJmUua2V5PT09YCBgfHwoQih1KShlLmtleSxCKGMpKCkpLEIoWHUpLmluY2x1ZGVzKGUua2V5KSYmKGYoKSxlLnByZXZlbnREZWZhdWx0KCkpKX19LHtkZWZhdWx0OkUoKCk9PltOKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2B0eXBlYCxgYXJpYS1jb250cm9sc2AsYGFyaWEtZXhwYW5kZWRgLGBhcmlhLXJlcXVpcmVkYCxgZGlzYWJsZWRgLGBkaXJgLGBkYXRhLXN0YXRlYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtcGxhY2Vob2xkZXJgLGBhcy1jaGlsZGAsYGFzYF0pXSksXzozfSw4LFtgcmVmZXJlbmNlYF0pKX19KSxPZD1IKHtfX25hbWU6YFNlbGVjdFZhbHVlYCxwcm9wczp7cGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzcGFuYH19LHNldHVwKGUpe2xldCBuPWUse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDppfT10KCksYT1uZCgpO29lKCgpPT57YS52YWx1ZUVsZW1lbnQ9aX0pO2xldCBvPUwoKCk9PntsZXQgZT1bXSx0PUFycmF5LmZyb20oYS5vcHRpb25zU2V0LnZhbHVlKSxuPWU9PnQuZmluZCh0PT5RdShlLHQudmFsdWUsYS5ieSkpO3JldHVybiBlPUFycmF5LmlzQXJyYXkoYS5tb2RlbFZhbHVlLnZhbHVlKT9hLm1vZGVsVmFsdWUudmFsdWUubWFwKGU9Pm4oZSk/LnRleHRDb250ZW50Pz9gYCk6W24oYS5tb2RlbFZhbHVlLnZhbHVlKT8udGV4dENvbnRlbnQ/P2BgXSxlLmZpbHRlcihCb29sZWFuKX0pLHM9TCgoKT0+by52YWx1ZS5sZW5ndGg/by52YWx1ZS5qb2luKGAsIGApOm4ucGxhY2Vob2xkZXIpO3JldHVybihlLHQpPT4oUCgpLE0oQihGKSx7cmVmOkIociksYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxzdHlsZTp7cG9pbnRlckV2ZW50czpgbm9uZWB9LCJkYXRhLXBsYWNlaG9sZGVyIjpvLnZhbHVlLmxlbmd0aD92b2lkIDA6bi5wbGFjZWhvbGRlcn0se2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgLHtzZWxlY3RlZExhYmVsOm8udmFsdWUsbW9kZWxWYWx1ZTpCKGEpLm1vZGVsVmFsdWUudmFsdWV9LCgpPT5bTWUoVihzLnZhbHVlKSwxKV0pXSksXzozfSw4LFtgYXNgLGBhcy1jaGlsZGAsYGRhdGEtcGxhY2Vob2xkZXJgXSkpfX0pLGtkPUgoe19fbmFtZTpgU2VsZWN0Vmlld3BvcnRgLHByb3BzOntub25jZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCBuPWUse25vbmNlOnJ9PUZlKG4pLGk9WXUociksYT1jZCgpLG89YS5wb3NpdGlvbj09PWBpdGVtLWFsaWduZWRgP2RkKCk6dm9pZCAwLHtmb3J3YXJkUmVmOnMsY3VycmVudEVsZW1lbnQ6Y309dCgpO29lKCgpPT57YT8ub25WaWV3cG9ydENoYW5nZShjLnZhbHVlKX0pO2xldCBsPWooMCk7ZnVuY3Rpb24gdShlKXtsZXQgdD1lLmN1cnJlbnRUYXJnZXQse3Nob3VsZEV4cGFuZE9uU2Nyb2xsUmVmOm4sY29udGVudFdyYXBwZXI6cn09bz8/e307aWYobj8udmFsdWUmJnI/LnZhbHVlKXtsZXQgZT1NYXRoLmFicyhsLnZhbHVlLXQuc2Nyb2xsVG9wKTtpZihlPjApe2xldCBuPXdpbmRvdy5pbm5lckhlaWdodC0yMCxpPU51bWJlci5wYXJzZUZsb2F0KHIudmFsdWUuc3R5bGUubWluSGVpZ2h0KSxhPU51bWJlci5wYXJzZUZsb2F0KHIudmFsdWUuc3R5bGUuaGVpZ2h0KSxvPU1hdGgubWF4KGksYSk7aWYobzxuKXtsZXQgaT1vK2UsYT1NYXRoLm1pbihuLGkpLHM9aS1hO3IudmFsdWUuc3R5bGUuaGVpZ2h0PWAke2F9cHhgLHIudmFsdWUuc3R5bGUuYm90dG9tPT09YDBweGAmJih0LnNjcm9sbFRvcD1zPjA/czowLHIudmFsdWUuc3R5bGUuanVzdGlmeUNvbnRlbnQ9YGZsZXgtZW5kYCl9fX1sLnZhbHVlPXQuc2Nyb2xsVG9wfXJldHVybihlLHQpPT4oUCgpLHoodmUsbnVsbCxbQShCKEYpLGsoe3JlZjpCKHMpLCJkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0IjpgYCxyb2xlOmBwcmVzZW50YXRpb25gfSx7Li4uZS4kYXR0cnMsLi4ubn0se3N0eWxlOntwb3NpdGlvbjpgcmVsYXRpdmVgLGZsZXg6MSxvdmVyZmxvdzpgaGlkZGVuIGF1dG9gfSxvblNjcm9sbDp1fSkse2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpLEEoQihGKSx7YXM6YHN0eWxlYCxub25jZTpCKGkpfSx7ZGVmYXVsdDpFKCgpPT50WzBdfHw9W01lKGAgLyogSGlkZSBzY3JvbGxiYXJzIGNyb3NzLWJyb3dzZXIgYW5kIGVuYWJsZSBtb21lbnR1bSBzY3JvbGwgZm9yIHRvdWNoIGRldmljZXMgKi8gW2RhdGEtcmVrYS1zZWxlY3Qtdmlld3BvcnRdIHsgc2Nyb2xsYmFyLXdpZHRoOm5vbmU7IC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9IFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XTo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lOyB9IGApXSksXzoxLF9fOlswXX0sOCxbYG5vbmNlYF0pXSw2NCkpfX0pLEFkPUgoe19fbmFtZTpgQ2FyZERlc2NyaXB0aW9uYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihQKCkseihgZGl2YCx7ImRhdGEtc2xvdCI6YGNhcmQtZGVzY3JpcHRpb25gLGNsYXNzOmR0KEIodykoYHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0ZXh0LXNtYCx0LmNsYXNzKSl9LFtOKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxqZD1IKHtfX25hbWU6YElucHV0YCxwcm9wczp7ZGVmYXVsdFZhbHVlOnt9LG1vZGVsVmFsdWU6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LGVtaXRzOltgdXBkYXRlOm1vZGVsVmFsdWVgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgbj1lLHI9c2UobixgbW9kZWxWYWx1ZWAsdCx7cGFzc2l2ZTohMCxkZWZhdWx0VmFsdWU6bi5kZWZhdWx0VmFsdWV9KTtyZXR1cm4oZSx0KT0+bXQoKFAoKSx6KGBpbnB1dGAseyJvblVwZGF0ZTptb2RlbFZhbHVlIjp0WzBdfHw9ZT0+RGUocik/ci52YWx1ZT1lOm51bGwsImRhdGEtc2xvdCI6YGlucHV0YCxjbGFzczpkdChCKHcpKGBkYXJrOmJnLWlucHV0LzMwIGJvcmRlci1pbnB1dCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBkYXJrOmFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUvNTAgZGlzYWJsZWQ6YmctaW5wdXQvNTAgZGFyazpkaXNhYmxlZDpiZy1pbnB1dC84MCBoLTggcm91bmRlZC1sZyBib3JkZXIgYmctdHJhbnNwYXJlbnQgcHgtMi41IHB5LTEgdGV4dC1iYXNlIHRyYW5zaXRpb24tY29sb3JzIGZpbGU6aC02IGZpbGU6dGV4dC1zbSBmaWxlOmZvbnQtbWVkaXVtIGZvY3VzLXZpc2libGU6cmluZy0zIGFyaWEtaW52YWxpZDpyaW5nLTMgbWQ6dGV4dC1zbSB3LWZ1bGwgbWluLXctMCBvdXRsaW5lLW5vbmUgZmlsZTppbmxpbmUtZmxleCBmaWxlOmJvcmRlci0wIGZpbGU6YmctdHJhbnNwYXJlbnQgZmlsZTp0ZXh0LWZvcmVncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBgLG4uY2xhc3MpKX0sbnVsbCwyKSksW1toZSxCKHIpXV0pfX0pLE1kPXtjbGFzczpgbXgtYXV0byBmbGV4IG1pbi1oLVs3MHZoXSBtYXgtdy1tZCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBweC00YH0sTmQ9e2NsYXNzOmBmbGV4IHNpemUtMTIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeWB9LFBkPXtjbGFzczpgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTFgfSxGZD17ImFyaWEtbGFiZWxsZWRieSI6YGF1dGhnYXRlLXNlY3VyaXR5LWhlYWRpbmdgLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xLjUgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxJZD17Y2xhc3M6YGZsZXggaXRlbXMtc3RhcnQgZ2FwLTEuNWB9LExkPXtjbGFzczpgZmxleCBpdGVtcy1zdGFydCBnYXAtMS41YH0sUmQ9e2NsYXNzOmBmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0xLjVgfSx6ZD17Y2xhc3M6YHJlbGF0aXZlYH0sQmQ9KChlLHQpPT57bGV0IG49ZS5fX3ZjY09wdHN8fGU7Zm9yKGxldFtlLHJdb2YgdCluW2VdPXI7cmV0dXJuIG59KShIKHtfX25hbWU6YEF1dGhHYXRlYCxzZXR1cChlKXtsZXQgdD1mKCksbj1BZSgpLHI9aihgYCksaT1qKCExKSxhPWoobnVsbCksbz1MKCgpPT5yLnZhbHVlLnRyaW0oKSE9PWBgKTtmdW5jdGlvbiBzKCl7bGV0IGU9ci52YWx1ZTtyLnZhbHVlPWBgLHQuc3VibWl0KGUpLG4ucmVmcmVzaCgpfWZ1bmN0aW9uIGMoKXt5KCgpPT5hLnZhbHVlPy4kZWw/LmZvY3VzKCkpfXJldHVybiBvZShjKSxEKCgpPT50LmVycm9yLGU9PntlJiZjKCl9KSwoZSxuKT0+e2xldCBjPWtlKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gUCgpLHooYGRpdmAsTWQsW0EoQihtKSxudWxsLHtkZWZhdWx0OkUoKCk9PltBKEIoZGUpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTMgdGV4dC1jZW50ZXJgfSx7ZGVmYXVsdDpFKCgpPT5bUihgZGl2YCxOZCxbQShjLHtpY29uOkIoRWUpLGNsYXNzOmBzaXplLTVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksUihgZGl2YCxQZCxbblszXXx8PVIoYHNwYW5gLHtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTExNIEdhdGV3YXlgLC0xKSxBKEIoY3QpLHtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkYH0se2RlZmF1bHQ6RSgoKT0+Wy4uLm5bMl18fD1bTWUoYEFkbWluIGtleSByZXF1aXJlZGAsLTEpXV0pLF86MX0pXSksQShCKEFkKSxudWxsLHtkZWZhdWx0OkUoKCk9PlsuLi5uWzRdfHw9W01lKGBFbnRlciBhbiBhZG1pbiBBUEkga2V5IHRvIGNvbnRpbnVlLmAsLTEpXV0pLF86MX0pXSksXzoxfSksQShCKGcpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHtkZWZhdWx0OkUoKCk9PltuWzEwXXx8PVIoYGgyYCx7aWQ6YGF1dGhnYXRlLXNlY3VyaXR5LWhlYWRpbmdgLGNsYXNzOmBzci1vbmx5YH0sYCBIb3cgdGhpcyBrZXkgaXMgaGFuZGxlZCBgLC0xKSxSKGB1bGAsRmQsW1IoYGxpYCxJZCxbQShjLHtpY29uOkIoYWUpLGNsYXNzOmBtdC0wLjUgc2l6ZS0zIHNocmluay0wYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxuWzVdfHw9Uihgc3BhbmAsbnVsbCxgS2VwdCBvbmx5IGluIHRoaXMgdGFiJ3Mgc2Vzc2lvbiBzdG9yYWdlYCwtMSldKSxSKGBsaWAsTGQsW0EoYyx7aWNvbjpCKGFlKSxjbGFzczpgbXQtMC41IHNpemUtMyBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksbls2XXx8PVIoYHNwYW5gLG51bGwsYE5ldmVyIHdyaXR0ZW4gdG8gZGlza2AsLTEpXSksUihgbGlgLFJkLFtBKGMse2ljb246QihhZSksY2xhc3M6YG10LTAuNSBzaXplLTMgc2hyaW5rLTBgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLG5bN118fD1SKGBzcGFuYCxudWxsLGBTZW50IG9ubHkgdG8gdGhpcyBwYWdlJ3Mgb3duIC9hZG1pbi9hcGkvKiByZXF1ZXN0c2AsLTEpXSldKSxSKGBmb3JtYCx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgLG9uU3VibWl0Ol9lKHMsW2BwcmV2ZW50YF0pfSxbUihgZGl2YCx6ZCxbQShCKGpkKSx7cmVmX2tleTpga2V5SW5wdXRFbGAscmVmOmEsbW9kZWxWYWx1ZTpyLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpuWzBdfHw9ZT0+ci52YWx1ZT1lLHR5cGU6aS52YWx1ZT9gdGV4dGA6YHBhc3N3b3JkYCxhdXRvY29tcGxldGU6YG9mZmAscGxhY2Vob2xkZXI6YEFQSSBrZXlgLCJhcmlhLWxhYmVsIjpgQWRtaW4gQVBJIGtleWAsImFyaWEtaW52YWxpZCI6ISFCKHQpLmVycm9yLCJhcmlhLWRlc2NyaWJlZGJ5IjpCKHQpLmVycm9yP2BhdXRoZ2F0ZS1lcnJvcmA6dm9pZCAwLGNsYXNzOmR0KFtgaC0xMCBwci0xMGAseyJhdXRoZ2F0ZS1zaGFrZSI6Qih0KS5lcnJvcn1dKX0sbnVsbCw4LFtgbW9kZWxWYWx1ZWAsYHR5cGVgLGBhcmlhLWludmFsaWRgLGBhcmlhLWRlc2NyaWJlZGJ5YCxgY2xhc3NgXSksQShCKG5lKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBnaG9zdGAsc2l6ZTpgaWNvbi14c2AsY2xhc3M6YGFic29sdXRlIHRvcC0xLzIgcmlnaHQtMS41IC10cmFuc2xhdGUteS0xLzIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZGAsImFyaWEtbGFiZWwiOmkudmFsdWU/YEhpZGUga2V5YDpgU2hvdyBrZXlgLG9uQ2xpY2s6blsxXXx8PWU9PmkudmFsdWU9IWkudmFsdWV9LHtkZWZhdWx0OkUoKCk9PltBKGMse2ljb246aS52YWx1ZT9CKHdlKTpCKGV0KSxjbGFzczpgc2l6ZS0zLjVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksXzoxfSw4LFtgYXJpYS1sYWJlbGBdKV0pLEEoQihuZSkse3R5cGU6YHN1Ym1pdGAsY2xhc3M6YGgtMTAgdy1mdWxsYCxkaXNhYmxlZDohby52YWx1ZX0se2RlZmF1bHQ6RSgoKT0+Wy4uLm5bOF18fD1bTWUoYCBDb250aW51ZSBgLC0xKV1dKSxfOjF9LDgsW2BkaXNhYmxlZGBdKV0sMzIpLEIodCkuZXJyb3I/KFAoKSxNKEIoZ3MpLHtrZXk6MCxpZDpgYXV0aGdhdGUtZXJyb3JgLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6RSgoKT0+W0EoQih2cyksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bLi4ubls5XXx8PVtNZShgQXV0aGVudGljYXRpb24gZmFpbGVkYCwtMSldXSksXzoxfSksQShCKF9zKSxudWxsLHtkZWZhdWx0OkUoKCk9PltNZShWKEIodCkuZXJyb3IpLDEpXSksXzoxfSldKSxfOjF9KSk6SShgYCwhMCldKSxfOjF9KV0pLF86MX0pXSl9fX0pLFtbYF9fc2NvcGVJZGAsYGRhdGEtdi1iNmQ2ZmIxZWBdXSksVmQ9e2NsYXNzOmBtdC0xIGxpc3QtZGlzYyBzcGFjZS15LTAuNSBwbC00IGZvbnQtbW9ubyB0ZXh0LXhzYH0sSGQ9e2tleTowLGNsYXNzOmBtdC0xIHRleHQteHNgfSxVZD1IKHtfX25hbWU6YENvbmZpZ1dhcm5pbmdzQmFubmVyYCxwcm9wczp7d2FybmluZ3M6e30sd2FybmluZ3NEcm9wcGVkOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49aighMSk7ZnVuY3Rpb24gcigpe24udmFsdWU9IW4udmFsdWV9cmV0dXJuKGUsaSk9PntsZXQgYT1rZShgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIHQud2FybmluZ3MubGVuZ3RoPjA/KFAoKSxNKEIoZ3MpLHtrZXk6MCx2YXJpYW50OmB3YXJuYH0se2RlZmF1bHQ6RSgoKT0+W0EoYSx7aWNvbjpCKE5lKSxjbGFzczpgc2l6ZS00YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxBKEIodnMpLHtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0se2RlZmF1bHQ6RSgoKT0+W1IoYHNwYW5gLG51bGwsVih0Lndhcm5pbmdzLmxlbmd0aCkrYCBjb25maWd1cmF0aW9uIGArVih0Lndhcm5pbmdzLmxlbmd0aD09PTE/YHdhcm5pbmdgOmB3YXJuaW5nc2ApLDEpLEEoQihuZSkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgZ2hvc3RgLHNpemU6YHhzYCwiYXJpYS1leHBhbmRlZCI6bi52YWx1ZSwiYXJpYS1sYWJlbCI6YCR7bi52YWx1ZT9gSGlkZWA6YFNob3dgfSBjb25maWd1cmF0aW9uIHdhcm5pbmcgZGV0YWlsc2Asb25DbGljazpyfSx7ZGVmYXVsdDpFKCgpPT5bTWUoVihuLnZhbHVlP2BIaWRlYDpgU2hvd2ApLDEpXSksXzoxfSw4LFtgYXJpYS1leHBhbmRlZGAsYGFyaWEtbGFiZWxgXSldKSxfOjF9KSxuLnZhbHVlPyhQKCksTShCKF9zKSx7a2V5OjB9LHtkZWZhdWx0OkUoKCk9PltSKGB1bGAsVmQsWyhQKCEwKSx6KHZlLG51bGwsYXQodC53YXJuaW5ncywoZSx0KT0+KFAoKSx6KGBsaWAse2tleTp0fSxWKGUpLDEpKSksMTI4KSldKSx0Lndhcm5pbmdzRHJvcHBlZD8oUCgpLHooYHBgLEhkLGBhbmQgYCtWKHQud2FybmluZ3NEcm9wcGVkKStgIG1vcmUgd2VyZSBub3Qga2VwdGAsMSkpOkkoYGAsITApXSksXzoxfSkpOkkoYGAsITApXSksXzoxfSkpOkkoYGAsITApfX19KSxXZD1IKHtfX25hbWU6YFNlbGVjdGAscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbn0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbn0sZGVmYXVsdFZhbHVlOnt9LG1vZGVsVmFsdWU6e30sbnVsbGFibGVWYWx1ZTp7fSxieTp7dHlwZTpbU3RyaW5nLEZ1bmN0aW9uXX0sZGlyOnt9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW59LGF1dG9jb21wbGV0ZTp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufSxuYW1lOnt9LHJlcXVpcmVkOnt0eXBlOkJvb2xlYW59fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYCxgdXBkYXRlOm9wZW5gXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgcj1uKGUsdCk7cmV0dXJuKGUsdCk9PihQKCksTShCKGlkKSxrKHsiZGF0YS1zbG90Ijpgc2VsZWN0YH0sQihyKSkse2RlZmF1bHQ6RSh0PT5bTihlLiRzbG90cyxgZGVmYXVsdGAsbGUoemUodCkpKV0pLF86M30sMTYpKX19KSxHZD1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RDb250ZW50YCxwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFufSxwb3NpdGlvbjp7ZGVmYXVsdDpgaXRlbS1hbGlnbmVkYH0sYm9keUxvY2s6e3R5cGU6Qm9vbGVhbn0sbWVtb0RlcGVuZGVuY2llczp7fSxzaWRlOnt9LHNpZGVPZmZzZXQ6e30sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbn0sYWxpZ246e2RlZmF1bHQ6YGNlbnRlcmB9LGFsaWduT2Zmc2V0Ont9LGFsaWduRmxpcDp7dHlwZTpCb29sZWFufSxhdm9pZENvbGxpc2lvbnM6e3R5cGU6Qm9vbGVhbn0sY29sbGlzaW9uQm91bmRhcnk6e30sY29sbGlzaW9uUGFkZGluZzp7fSxhcnJvd1BhZGRpbmc6e30saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFufSxzdGlja3k6e30saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFufSxwb3NpdGlvblN0cmF0ZWd5Ont9LHVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k6e30sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbn0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW59LHJlZmVyZW5jZTp7fSxkaXI6e30sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbn0sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LGVtaXRzOltgY2xvc2VBdXRvRm9jdXNgLGBlc2NhcGVLZXlEb3duYCxgcG9pbnRlckRvd25PdXRzaWRlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IHI9ZSxpPXQsYT1mZShyLGBjbGFzc2ApLG89bihhLGkpO3JldHVybih0LG4pPT4oUCgpLE0oQihDZCksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bQShCKGdkKSxrKHsiZGF0YS1zbG90Ijpgc2VsZWN0LWNvbnRlbnRgLCJkYXRhLWFsaWduLXRyaWdnZXIiOmUucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYH0sey4uLnQuJGF0dHJzLC4uLkIobyl9LHtjbGFzczpCKHcpKGBiZy1wb3BvdmVyIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIGRhdGEtb3BlbjphbmltYXRlLWluIGRhdGEtY2xvc2VkOmFuaW1hdGUtb3V0IGRhdGEtY2xvc2VkOmZhZGUtb3V0LTAgZGF0YS1vcGVuOmZhZGUtaW4tMCBkYXRhLWNsb3NlZDp6b29tLW91dC05NSBkYXRhLW9wZW46em9vbS1pbi05NSBkYXRhLVtzaWRlPWJvdHRvbV06c2xpZGUtaW4tZnJvbS10b3AtMiBkYXRhLVtzaWRlPWxlZnRdOnNsaWRlLWluLWZyb20tcmlnaHQtMiBkYXRhLVtzaWRlPXJpZ2h0XTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBkYXRhLVtzaWRlPXRvcF06c2xpZGUtaW4tZnJvbS1ib3R0b20tMiByaW5nLWZvcmVncm91bmQvMTAgbWluLXctMzYgcm91bmRlZC1sZyBzaGFkb3ctbWQgcmluZy0xIGR1cmF0aW9uLTEwMCBkYXRhLVtzaWRlPWlubGluZS1zdGFydF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9aW5saW5lLWVuZF06c2xpZGUtaW4tZnJvbS1sZWZ0LTIgY24tbWVudS10cmFuc2x1Y2VudCByZWxhdGl2ZSB6LTUwIG1heC1oLSgtLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCkgb3JpZ2luLSgtLXJla2Etc2VsZWN0LWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbikgb3ZlcmZsb3cteC1oaWRkZW4gb3ZlcmZsb3cteS1hdXRvIGRhdGEtW2FsaWduLXRyaWdnZXI9dHJ1ZV06YW5pbWF0ZS1ub25lYCxlLnBvc2l0aW9uPT09YHBvcHBlcmAmJmBkYXRhLVtzaWRlPWJvdHRvbV06dHJhbnNsYXRlLXktMSBkYXRhLVtzaWRlPWxlZnRdOi10cmFuc2xhdGUteC0xIGRhdGEtW3NpZGU9cmlnaHRdOnRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT10b3BdOi10cmFuc2xhdGUteS0xYCxyLmNsYXNzKX0pLHtkZWZhdWx0OkUoKCk9PltBKEIoWWQpKSxBKEIoa2QpLHsiZGF0YS1wb3NpdGlvbiI6ZS5wb3NpdGlvbixjbGFzczpkdChCKHcpKGBkYXRhLVtwb3NpdGlvbj1wb3BwZXJdOmgtKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpIGRhdGEtW3Bvc2l0aW9uPXBvcHBlcl06dy1mdWxsIGRhdGEtW3Bvc2l0aW9uPXBvcHBlcl06bWluLXctKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aClgKSl9LHtkZWZhdWx0OkUoKCk9PltOKHQuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2BkYXRhLXBvc2l0aW9uYCxgY2xhc3NgXSksQShCKEpkKSldKSxfOjN9LDE2LFtgZGF0YS1hbGlnbi10cmlnZ2VyYCxgY2xhc3NgXSldKSxfOjN9KSl9fSksS2Q9e2NsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHJpZ2h0LTIgZmxleCBzaXplLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyYH0scWQ9SCh7X19uYW1lOmBTZWxlY3RJdGVtYCxwcm9wczp7dmFsdWU6e30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sdGV4dFZhbHVlOnt9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1mZSh0LGBjbGFzc2ApLHI9aShuKTtyZXR1cm4oZSxuKT0+KFAoKSxNKEIoYmQpLGsoeyJkYXRhLXNsb3QiOmBzZWxlY3QtaXRlbWB9LEIocikse2NsYXNzOkIodykoYGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIG5vdC1kYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTpmb2N1czoqKjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGdhcC0xLjUgcm91bmRlZC1tZCBweS0xIHByLTggcGwtMS41IHRleHQtc20gWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCAqOltzcGFuXTpsYXN0OmZsZXggKjpbc3Bhbl06bGFzdDppdGVtcy1jZW50ZXIgKjpbc3Bhbl06bGFzdDpnYXAtMiByZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIgb3V0bGluZS1oaWRkZW4gc2VsZWN0LW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBgLHQuY2xhc3MpfSkse2RlZmF1bHQ6RSgoKT0+W1IoYHNwYW5gLEtkLFtBKEIoeGQpLG51bGwse2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGluZGljYXRvci1pY29uYCx7fSwoKT0+W0EoQihtcykse2ljb246QihhZSksY2xhc3M6YHBvaW50ZXItZXZlbnRzLW5vbmUgc2l6ZS0zLjVgfSxudWxsLDgsW2BpY29uYF0pXSldKSxfOjN9KV0pLEEoQihTZCksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSldKSxfOjN9LDE2LFtgY2xhc3NgXSkpfX0pLEpkPUgoe19fbmFtZTpgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1mZSh0LGBjbGFzc2ApLHI9aShuKTtyZXR1cm4oZSxuKT0+KFAoKSxNKEIoVGQpLGsoeyJkYXRhLXNsb3QiOmBzZWxlY3Qtc2Nyb2xsLWRvd24tYnV0dG9uYH0sQihyKSx7Y2xhc3M6Qih3KShgYmctcG9wb3ZlciB6LTEwIGZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEgWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNGAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpFKCgpPT5bTihlLiRzbG90cyxgZGVmYXVsdGAse30sKCk9PltBKEIobXMpLHtpY29uOkIocyksY2xhc3M6YHNpemUtNGB9LG51bGwsOCxbYGljb25gXSldKV0pLF86M30sMTYsW2BjbGFzc2BdKSl9fSksWWQ9SCh7X19uYW1lOmBTZWxlY3RTY3JvbGxVcEJ1dHRvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1mZSh0LGBjbGFzc2ApLHI9aShuKTtyZXR1cm4oZSxuKT0+KFAoKSxNKEIoRWQpLGsoeyJkYXRhLXNsb3QiOmBzZWxlY3Qtc2Nyb2xsLXVwLWJ1dHRvbmB9LEIocikse2NsYXNzOkIodykoYGJnLXBvcG92ZXIgei0xMCBmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTRgLHQuY2xhc3MpfSkse2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bQShCKG1zKSx7aWNvbjpCKG50KSxjbGFzczpgc2l6ZS00YH0sbnVsbCw4LFtgaWNvbmBdKV0pXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSxYZD1IKHtfX25hbWU6YFNlbGVjdFRyaWdnZXJgLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFufSxyZWZlcmVuY2U6e30sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxzaXplOntkZWZhdWx0OmBkZWZhdWx0YH19LHNldHVwKGUpe2xldCB0PWUsbj1mZSh0LGBjbGFzc2AsYHNpemVgKSxyPWkobik7cmV0dXJuKG4saSk9PihQKCksTShCKERkKSxrKHsiZGF0YS1zbG90Ijpgc2VsZWN0LXRyaWdnZXJgLCJkYXRhLXNpemUiOmUuc2l6ZX0sQihyKSx7Y2xhc3M6Qih3KShgYm9yZGVyLWlucHV0IGRhdGEtcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6YmctaW5wdXQvMzAgZGFyazpob3ZlcjpiZy1pbnB1dC81MCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBkYXJrOmFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUvNTAgZ2FwLTEuNSByb3VuZGVkLWxnIGJvcmRlciBiZy10cmFuc3BhcmVudCBweS0yIHByLTIgcGwtMi41IHRleHQtc20gdHJhbnNpdGlvbi1jb2xvcnMgc2VsZWN0LW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTMgYXJpYS1pbnZhbGlkOnJpbmctMyBkYXRhLVtzaXplPWRlZmF1bHRdOmgtOCBkYXRhLVtzaXplPXNtXTpoLTcgZGF0YS1bc2l6ZT1zbV06cm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTBweCldICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOmdhcC0xLjUgWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCBmbGV4IHctZml0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gd2hpdGVzcGFjZS1ub3dyYXAgb3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOmxpbmUtY2xhbXAtMSAqOmRhdGEtW3Nsb3Q9c2VsZWN0LXZhbHVlXTpmbGV4ICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOml0ZW1zLWNlbnRlciBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMGAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpFKCgpPT5bTihuLiRzbG90cyxgZGVmYXVsdGApLEEoQihfZCkseyJhcy1jaGlsZCI6YGB9LHtkZWZhdWx0OkUoKCk9PltBKEIobXMpLHtpY29uOkIocyksY2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzaXplLTQgcG9pbnRlci1ldmVudHMtbm9uZWB9LG51bGwsOCxbYGljb25gXSldKSxfOjF9KV0pLF86M30sMTYsW2BkYXRhLXNpemVgLGBjbGFzc2BdKSl9fSksWmQ9SCh7X19uYW1lOmBTZWxlY3RWYWx1ZWAscHJvcHM6e3BsYWNlaG9sZGVyOnt9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e319LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihQKCksTShCKE9kKSxrKHsiZGF0YS1zbG90Ijpgc2VsZWN0LXZhbHVlYH0sdCkse2RlZmF1bHQ6RSgoKT0+W04oZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpKX19KSxRZD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSwkZD1gX19hbGxfX2AsZWY9SCh7X19uYW1lOmBMYWJlbGVkU2VsZWN0YCxwcm9wczp7bGFiZWw6e30sbW9kZWxWYWx1ZTp7fSxvcHRpb25zOnt9LGFsbExhYmVsOntkZWZhdWx0OnZvaWQgMH0scGxhY2Vob2xkZXI6e2RlZmF1bHQ6dm9pZCAwfSx0cmlnZ2VyQ2xhc3M6e2RlZmF1bHQ6dm9pZCAwfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPWUscj10LGk9YGxhYmVsZWQtc2VsZWN0LSR7bHQoKX1gLGE9TCgoKT0+bi5tb2RlbFZhbHVlPT09YGAmJm4uYWxsTGFiZWwhPT12b2lkIDA/JGQ6bi5tb2RlbFZhbHVlKTtmdW5jdGlvbiBvKGUpe3R5cGVvZiBlPT1gc3RyaW5nYCYmcihgdXBkYXRlOm1vZGVsVmFsdWVgLGU9PT0kZD9gYDplKX1yZXR1cm4odCxuKT0+KFAoKSx6KGBkaXZgLFFkLFtSKGBsYWJlbGAse2lkOmksY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sVihlLmxhYmVsKSwxKSxBKEIoV2QpLHsibW9kZWwtdmFsdWUiOmEudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm99LHtkZWZhdWx0OkUoKCk9PltBKEIoWGQpLHsiYXJpYS1sYWJlbGxlZGJ5IjppLGNsYXNzOmR0KGUudHJpZ2dlckNsYXNzKX0se2RlZmF1bHQ6RSgoKT0+W0EoQihaZCkse3BsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXJ9LG51bGwsOCxbYHBsYWNlaG9sZGVyYF0pXSksXzoxfSw4LFtgY2xhc3NgXSksQShCKEdkKSxudWxsLHtkZWZhdWx0OkUoKCk9PltlLmFsbExhYmVsPT09dm9pZCAwP0koYGAsITApOihQKCksTShCKHFkKSx7a2V5OjAsdmFsdWU6JGR9LHtkZWZhdWx0OkUoKCk9PltNZShWKGUuYWxsTGFiZWwpLDEpXSksXzoxfSkpLChQKCEwKSx6KHZlLG51bGwsYXQoZS5vcHRpb25zLGU9PihQKCksTShCKHFkKSx7a2V5OmUudmFsdWUsdmFsdWU6ZS52YWx1ZX0se2RlZmF1bHQ6RSgoKT0+W01lKFYoZS5sYWJlbCksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pKX19KSx0Zj17cHJvdmlkZXJzOmBtb2RlbHNgLHVzYWdlOmBjb25zdW1lcnNgLGNoYXJ0czpgc3BlbmRgLGV2ZW50czpgcmVsaWFiaWxpdHlgLHRhcmdldHM6YHRhcmdldHNgfTtmdW5jdGlvbiBuZihlKXtsZXQgdD1lLnN0YXJ0c1dpdGgoYCNgKT9lLnNsaWNlKDEpOmUsbj10LmluZGV4T2YoYD9gKSxyPW49PT0tMT90OnQuc2xpY2UoMCxuKSxpPW49PT0tMT9gYDp0LnNsaWNlKG4rMSk7aWYoUGUocikpcmV0dXJue3BhZ2U6cixxdWVyeTpuZXcgVVJMU2VhcmNoUGFyYW1zKGkpfTtsZXQgYT10ZltyXTtyZXR1cm4gYT97cGFnZTphLHF1ZXJ5Om5ldyBVUkxTZWFyY2hQYXJhbXN9OntwYWdlOlllLHF1ZXJ5Om5ldyBVUkxTZWFyY2hQYXJhbXMoaSl9fWZ1bmN0aW9uIHJmKGUsdCl7bGV0IG49T2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbLGVdKT0+ZSE9PWBgKTtyZXR1cm4gbi5sZW5ndGg9PT0wP2AjJHtlfWA6YCMke2V9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyhuKS50b1N0cmluZygpfWB9dmFyIGFmPS9eKGFsbHxncm91cDouK3x1c2VyOi4rfHByb3ZpZGVyOi4rKSQvO2Z1bmN0aW9uIG9mKGUpe2xldCB0PXt9LG49ZS5nZXQoYHJhbmdlYCk7biYmcnQobikmJih0LnJhbmdlPW4pO2xldCByPWUuZ2V0KGBjbXBgKTtyJiZCZShyKSYmKHQuY21wPXIpO2xldCBpPWUuZ2V0KGBzY29wZWApO3JldHVybiBpJiZhZi50ZXN0KGkpJiYodC5zY29wZT1pKSx0fXZhciBzZj1uZXcgU2V0KFtgcmFuZ2VgLGBjbXBgLGBzY29wZWBdKTtmdW5jdGlvbiBjZihlKXtsZXQgdD17fTtmb3IobGV0W24scl1vZiBlLmVudHJpZXMoKSlzZi5oYXMobil8fHIhPT1gYCYmKHRbbl09cik7cmV0dXJuIHR9dmFyIGxmPWZ0KGBmaWx0ZXJzYCx7c3RhdGU6KCk9Pih7cmFuZ2U6YDdkYCxjbXA6WmUsc2NvcGU6YGFsbGB9KSxnZXR0ZXJzOnt3aW5kb3c6ZT0+Q2VbZS5yYW5nZV0ud2luZG93LHNwYW46ZT0+Q2VbZS5yYW5nZV0uc3BhbixjbXBTcGVjOmU9PntsZXQgdD1LZShlLnJhbmdlKTtyZXR1cm57Li4udCxyZXF1ZXN0ZWQ6ZS5jbXA9PT1gcHJldmAmJnQuYXZhaWxhYmxlfX19LGFjdGlvbnM6e3NldEZpbHRlcnMoZSl7ZS5yYW5nZSE9PXZvaWQgMCYmKHRoaXMucmFuZ2U9ZS5yYW5nZSksZS5jbXAhPT12b2lkIDAmJih0aGlzLmNtcD1lLmNtcCksZS5zY29wZSE9PXZvaWQgMCYmKHRoaXMuc2NvcGU9ZS5zY29wZSl9fX0pLHVmPXtjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtZW5kIGdhcC0zYH0sZGY9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sZmY9SCh7X19uYW1lOmBHbG9iYWxGaWx0ZXJCYXJgLHNldHVwKGUpe2xldCB0PXsiMjRoIjpgTGFzdCAyNCBob3Vyc2AsIjQ4aCI6YExhc3QgNDggaG91cnNgLCI3ZCI6YExhc3QgNyBkYXlzYCwiMTRkIjpgTGFzdCAxNCBkYXlzYCwiMzBkIjpgTGFzdCAzMCBkYXlzYCwiM21vIjpgTGFzdCAzIG1vbnRoc2AsIjZtbyI6YExhc3QgNiBtb250aHNgLCIxMm1vIjpgTGFzdCAxMiBtb250aHNgfSxuPUllLm1hcChlPT4oe3ZhbHVlOmUsbGFiZWw6dFtlXX0pKSxyPWxmKCk7ZnVuY3Rpb24gaShlKXt0eXBlb2YgZT09YHN0cmluZ2AmJnIuc2V0RmlsdGVycyh7cmFuZ2U6ZX0pfWZ1bmN0aW9uIGEoKXtpZihyLmNtcD09PWBwcmV2YCl7ci5zZXRGaWx0ZXJzKHtjbXA6YG5vbmVgfSk7cmV0dXJufXIuY21wU3BlYy5hdmFpbGFibGUmJnIuc2V0RmlsdGVycyh7Y21wOmBwcmV2YH0pfWxldCBvPUwoKCk9PnIuY21wIT09YHByZXZgJiYhci5jbXBTcGVjLmF2YWlsYWJsZSkscz1MKCgpPT5yLmNtcD09PWBwcmV2YCYmIXIuY21wU3BlYy5hdmFpbGFibGU/YENvbXBhcmlzb24gdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2UgKCR7ci5jbXBTcGVjLnJlYXNvbn0pIOKAlCBjbGljayB0byB0dXJuIG9mZmA6ci5jbXBTcGVjLmF2YWlsYWJsZT9gQ29tcGFyZSBhZ2FpbnN0IHRoZSBwcmV2aW91cyBlcXVhbC1sZW5ndGggcGVyaW9kYDpgQ29tcGFyaXNvbiB1bmF2YWlsYWJsZSBmb3IgdGhpcyByYW5nZTogJHtyLmNtcFNwZWMucmVhc29ufWApLGM9aihyLnNjb3BlKTtEKCgpPT5yLnNjb3BlLGU9PntjLnZhbHVlPWV9KTtmdW5jdGlvbiBsKCl7bGV0IGU9Yy52YWx1ZS50cmltKCl8fGBhbGxgO2FmLnRlc3QoZSk/ci5zZXRGaWx0ZXJzKHtzY29wZTplfSk6Yy52YWx1ZT1yLnNjb3BlfXJldHVybihlLHQpPT57bGV0IHU9a2UoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBQKCkseihgZGl2YCx1ZixbQShlZix7bGFiZWw6YFJhbmdlYCwibW9kZWwtdmFsdWUiOkIocikucmFuZ2Usb3B0aW9uczpCKG4pLCJ0cmlnZ2VyLWNsYXNzIjpgdy0zNmAsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOml9LG51bGwsOCxbYG1vZGVsLXZhbHVlYCxgb3B0aW9uc2BdKSxBKEIobmUpLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YG91dGxpbmVgLCJhcmlhLXByZXNzZWQiOkIocikuY21wPT09YHByZXZgLGRpc2FibGVkOm8udmFsdWUsdGl0bGU6cy52YWx1ZSxvbkNsaWNrOmF9LHtkZWZhdWx0OkUoKCk9PltBKHUse2ljb246Qih5ZSksY2xhc3M6YHNpemUtMy41YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSx0WzFdfHw9TWUoYCB2cyBwcmV2aW91cyBwZXJpb2QgYCwtMSldKSxfOjF9LDgsW2BhcmlhLXByZXNzZWRgLGBkaXNhYmxlZGAsYHRpdGxlYF0pLFIoYGRpdmAsZGYsW3RbMl18fD1SKGBsYWJlbGAse2ZvcjpgZ2xvYmFsLWZpbHRlci1zY29wZWAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFNjb3BlYCwtMSksQShCKGpkKSx7aWQ6YGdsb2JhbC1maWx0ZXItc2NvcGVgLG1vZGVsVmFsdWU6Yy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6dFswXXx8PWU9PmMudmFsdWU9ZSxjbGFzczpgdy00OGAscGxhY2Vob2xkZXI6YGFsbGAsdGl0bGU6YGFsbCwgZ3JvdXA6PG5hbWU+LCB1c2VyOjxuYW1lPiwgb3IgcHJvdmlkZXI6PG5hbWU+YCxvbktleXVwOnBlKGwsW2BlbnRlcmBdKSxvbkJsdXI6bH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pXSl9fX0pLHBmPXsiYXJpYS1sYWJlbCI6YFByaW1hcnlgLGNsYXNzOmBmbGV4IGdhcC0xIG92ZXJmbG93LXgtYXV0byBib3JkZXItYiBib3JkZXItYm9yZGVyIHBiLTIgbWQ6dy01MiBtZDpzaHJpbmstMCBtZDpmbGV4LWNvbCBtZDpib3JkZXItciBtZDpib3JkZXItYi0wIG1kOnByLTMgbWQ6cGItMGB9LG1mPVtgYXJpYS1jdXJyZW50YCxgb25DbGlja2BdLGhmPUgoe19fbmFtZTpgU2lkZWJhck5hdmAsc2V0dXAoZSl7bGV0IHQ9VWUoKTtyZXR1cm4oZSxuKT0+e2xldCByPWtlKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gUCgpLHooYG5hdmAscGYsWyhQKCEwKSx6KHZlLG51bGwsYXQoQihWZSksZT0+KFAoKSx6KGBidXR0b25gLHtrZXk6ZS5pZCx0eXBlOmBidXR0b25gLCJhcmlhLWN1cnJlbnQiOkIodCkucGFnZT09PWUuaWQ/YHBhZ2VgOnZvaWQgMCxjbGFzczpkdChbYGZsZXggc2hyaW5rLTAgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgbWQ6dy1mdWxsYCxCKHQpLnBhZ2U9PT1lLmlkP2BiZy1hY2NlbnQgdGV4dC1hY2NlbnQtZm9yZWdyb3VuZGA6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRgXSksb25DbGljazpuPT5CKHQpLmdvVG8oZS5pZCl9LFtBKHIse2ljb246ZS5pY29uLGNsYXNzOmBzaXplLTRgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLFIoYHNwYW5gLG51bGwsVihlLmxhYmVsKSwxKV0sMTAsbWYpKSksMTI4KSldKX19fSksZ2Y9e2NsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIGZpeGVkIGluc2V0LXgtMCBib3R0b20tMCB6LTUwIGZsZXggZmxleC1jb2wtcmV2ZXJzZSBnYXAtMiBwLTQgcGItW2NhbGMoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKzFyZW0pXSBzbTppbnNldC14LWF1dG8gc206cmlnaHQtNCBzbTpib3R0b20tNCBzbTp3LTk2YH0sX2Y9eyJhcmlhLWxpdmUiOmBhc3NlcnRpdmVgLGNsYXNzOmBmbGV4IGZsZXgtY29sLXJldmVyc2UgZ2FwLTJgfSx2Zj17Y2xhc3M6YG1pbi13LTAgZmxleC0xIHRleHQtc21gfSx5Zj17ImFyaWEtbGl2ZSI6YHBvbGl0ZWAsY2xhc3M6YGZsZXggZmxleC1jb2wtcmV2ZXJzZSBnYXAtMmB9LGJmPXtjbGFzczpgbWluLXctMCBmbGV4LTEgdGV4dC1zbWB9LHhmPUgoe19fbmFtZTpgVG9hc3RWaWV3cG9ydGAsc2V0dXAoZSl7bGV0IHQ9eGUoKSxuPXtzdWNjZXNzOmFlLGVycm9yOk5lLGluZm86TGV9LHI9e3N1Y2Nlc3M6YHRleHQtY2hhcnQtcmVxdWVzdHNgLGVycm9yOmB0ZXh0LWRlc3RydWN0aXZlYCxpbmZvOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxpPUwoKCk9PnQudG9hc3RzLmZpbHRlcihlPT5lLmtpbmQhPT1gZXJyb3JgKSksYT1MKCgpPT50LnRvYXN0cy5maWx0ZXIoZT0+ZS5raW5kPT09YGVycm9yYCkpO2Z1bmN0aW9uIG8oZSl7dC5kaXNtaXNzKGUuaWQpfXJldHVybihlLHQpPT57bGV0IHM9a2UoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBQKCkseihgZGl2YCxnZixbUihgZGl2YCxfZixbQSh1ZSx7dGFnOmBkaXZgLGNsYXNzOmBmbGV4IGZsZXgtY29sLXJldmVyc2UgZ2FwLTJgLCJlbnRlci1hY3RpdmUtY2xhc3MiOmB0cmFuc2l0aW9uIGR1cmF0aW9uLTE1MCBlYXNlLW91dCBtb3Rpb24tcmVkdWNlOnRyYW5zaXRpb24tbm9uZWAsImVudGVyLWZyb20tY2xhc3MiOmB0cmFuc2xhdGUteS0yIG9wYWNpdHktMGAsImxlYXZlLWFjdGl2ZS1jbGFzcyI6YHRyYW5zaXRpb24gZHVyYXRpb24tMTUwIGVhc2UtaW4gbW90aW9uLXJlZHVjZTp0cmFuc2l0aW9uLW5vbmVgLCJsZWF2ZS10by1jbGFzcyI6YG9wYWNpdHktMGB9LHtkZWZhdWx0OkUoKCk9PlsoUCghMCkseih2ZSxudWxsLGF0KGEudmFsdWUsZT0+KFAoKSx6KGBkaXZgLHtrZXk6ZS5pZCxjbGFzczpgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0yIHJvdW5kZWQtbGcgYm9yZGVyIGJnLXBvcG92ZXIgcHgtMyBweS0yLjUgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LWxnYH0sW0Eocyx7aWNvbjpuW2Uua2luZF0sY2xhc3M6ZHQoW2BtdC0wLjUgc2l6ZS0zLjUgc2hyaW5rLTBgLHJbZS5raW5kXV0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksUihgcGAsdmYsVihlLm1lc3NhZ2UpLDEpLEEoQihuZSkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgZ2hvc3RgLHNpemU6YGljb25gLGNsYXNzOmAtbXQtMSAtbXItMSBzaXplLTYgc2hyaW5rLTAgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZGAsImFyaWEtbGFiZWwiOmBEaXNtaXNzOiAke2UubWVzc2FnZX1gLG9uQ2xpY2s6dD0+byhlKX0se2RlZmF1bHQ6RSgoKT0+W0Eocyx7aWNvbjpCKFNlKSxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0sOCxbYGFyaWEtbGFiZWxgLGBvbkNsaWNrYF0pXSkpKSwxMjgpKV0pLF86MX0pXSksUihgZGl2YCx5ZixbQSh1ZSx7dGFnOmBkaXZgLGNsYXNzOmBmbGV4IGZsZXgtY29sLXJldmVyc2UgZ2FwLTJgLCJlbnRlci1hY3RpdmUtY2xhc3MiOmB0cmFuc2l0aW9uIGR1cmF0aW9uLTE1MCBlYXNlLW91dCBtb3Rpb24tcmVkdWNlOnRyYW5zaXRpb24tbm9uZWAsImVudGVyLWZyb20tY2xhc3MiOmB0cmFuc2xhdGUteS0yIG9wYWNpdHktMGAsImxlYXZlLWFjdGl2ZS1jbGFzcyI6YHRyYW5zaXRpb24gZHVyYXRpb24tMTUwIGVhc2UtaW4gbW90aW9uLXJlZHVjZTp0cmFuc2l0aW9uLW5vbmVgLCJsZWF2ZS10by1jbGFzcyI6YG9wYWNpdHktMGB9LHtkZWZhdWx0OkUoKCk9PlsoUCghMCkseih2ZSxudWxsLGF0KGkudmFsdWUsZT0+KFAoKSx6KGBkaXZgLHtrZXk6ZS5pZCxjbGFzczpgcG9pbnRlci1ldmVudHMtYXV0byBmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0yIHJvdW5kZWQtbGcgYm9yZGVyIGJnLXBvcG92ZXIgcHgtMyBweS0yLjUgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgc2hhZG93LWxnYH0sW0Eocyx7aWNvbjpuW2Uua2luZF0sY2xhc3M6ZHQoW2BtdC0wLjUgc2l6ZS0zLjUgc2hyaW5rLTBgLHJbZS5raW5kXV0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksUihgcGAsYmYsVihlLm1lc3NhZ2UpLDEpLEEoQihuZSkse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgZ2hvc3RgLHNpemU6YGljb25gLGNsYXNzOmAtbXQtMSAtbXItMSBzaXplLTYgc2hyaW5rLTAgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZGAsImFyaWEtbGFiZWwiOmBEaXNtaXNzOiAke2UubWVzc2FnZX1gLG9uQ2xpY2s6dD0+byhlKX0se2RlZmF1bHQ6RSgoKT0+W0Eocyx7aWNvbjpCKFNlKSxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0sOCxbYGFyaWEtbGFiZWxgLGBvbkNsaWNrYF0pXSkpKSwxMjgpKV0pLF86MX0pXSldKX19fSk7ZnVuY3Rpb24gU2YoKXtsZXQgZT1sZigpLHQ9VWUoKTtmdW5jdGlvbiBuKG4pe2xldHtwYWdlOnIscXVlcnk6aX09bmYobiksYT1vZihpKTtlLnNldEZpbHRlcnMoe3JhbmdlOmEucmFuZ2U/P2A3ZGAsY21wOmEuY21wPz9gbm9uZWAsc2NvcGU6YS5zY29wZT8/YGFsbGB9KSx0LmdvVG8ocixjZihpKSl9bGV0IHI9dHlwZW9mIHdpbmRvdzxgdWA7ciYmbih3aW5kb3cubG9jYXRpb24uaGFzaCk7bGV0IGk9TCgoKT0+e2xldCBuPXt9O3JldHVybiBlLnJhbmdlIT09YDdkYCYmKG4ucmFuZ2U9ZS5yYW5nZSksZS5jbXAhPT1gbm9uZWAmJihuLmNtcD1lLmNtcCksZS5zY29wZSE9PWBhbGxgJiYobi5zY29wZT1lLnNjb3BlKSxPYmplY3QuYXNzaWduKG4sdC5wYXJhbXMpLHJmKHQucGFnZSxuKX0pO0QoaSxlPT57ciYmd2luZG93LmxvY2F0aW9uLmhhc2ghPT1lJiZ3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCxgYCxlKX0se2ltbWVkaWF0ZTohMH0pO2Z1bmN0aW9uIGEoKXtuKHdpbmRvdy5sb2NhdGlvbi5oYXNoKX1yJiYob2UoKCk9PndpbmRvdy5hZGRFdmVudExpc3RlbmVyKGBoYXNoY2hhbmdlYCxhKSksR2UoKCk9PndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGBoYXNoY2hhbmdlYCxhKSkpfXZhciBDZj0oZnVuY3Rpb24oKXtsZXQgZT10eXBlb2YgZG9jdW1lbnQ8YHVgJiZkb2N1bWVudC5jcmVhdGVFbGVtZW50KGBsaW5rYCkucmVsTGlzdDtyZXR1cm4gZSYmZS5zdXBwb3J0cyYmZS5zdXBwb3J0cyhgbW9kdWxlcHJlbG9hZGApP2Btb2R1bGVwcmVsb2FkYDpgcHJlbG9hZGB9KSgpLHdmPWZ1bmN0aW9uKGUpe3JldHVybmAvYWRtaW4vYCtlfSxUZj17fSxFZj1mdW5jdGlvbihlLHQsbil7bGV0IHI9UHJvbWlzZS5yZXNvbHZlKCk7aWYodCYmdC5sZW5ndGg+MCl7bGV0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYGxpbmtgKSxpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYG1ldGFbcHJvcGVydHk9Y3NwLW5vbmNlXWApLGE9aT8ubm9uY2V8fGk/LmdldEF0dHJpYnV0ZShgbm9uY2VgKTtmdW5jdGlvbiBvKGUpe3JldHVybiBQcm9taXNlLmFsbChlLm1hcChlPT5Qcm9taXNlLnJlc29sdmUoZSkudGhlbihlPT4oe3N0YXR1czpgZnVsZmlsbGVkYCx2YWx1ZTplfSksZT0+KHtzdGF0dXM6YHJlamVjdGVkYCxyZWFzb246ZX0pKSkpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGltcG9ydC5tZXRhLnJlc29sdmU/aW1wb3J0Lm1ldGEucmVzb2x2ZShlKTpuZXcgVVJMKGUsaW1wb3J0Lm1ldGEudXJsKS5ocmVmfXI9byh0Lm1hcCh0PT57aWYodD13Zih0LG4pLHQ9cyh0KSx0IGluIFRmKXJldHVybjtUZlt0XT0hMDtsZXQgcj10LmVuZHNXaXRoKGAuY3NzYCk7Zm9yKGxldCBuPWUubGVuZ3RoLTE7bj49MDtuLS0pe2xldCBpPWVbbl07aWYoaS5ocmVmPT09dCYmKCFyfHxpLnJlbD09PWBzdHlsZXNoZWV0YCkpcmV0dXJufWxldCBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGxpbmtgKTtpZihpLnJlbD1yP2BzdHlsZXNoZWV0YDpDZixyfHwoaS5hcz1gc2NyaXB0YCksaS5jcm9zc09yaWdpbj1gYCxpLmhyZWY9dCxhJiZpLnNldEF0dHJpYnV0ZShgbm9uY2VgLGEpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaSkscilyZXR1cm4gbmV3IFByb21pc2UoKGUsbik9PntpLmFkZEV2ZW50TGlzdGVuZXIoYGxvYWRgLGUpLGkuYWRkRXZlbnRMaXN0ZW5lcihgZXJyb3JgLCgpPT5uKEVycm9yKGBVbmFibGUgdG8gcHJlbG9hZCBDU1MgZm9yICR7dH1gKSkpfSl9KSl9ZnVuY3Rpb24gaShlKXtsZXQgdD1uZXcgRXZlbnQoYHZpdGU6cHJlbG9hZEVycm9yYCx7Y2FuY2VsYWJsZTohMH0pO2lmKHQucGF5bG9hZD1lLHdpbmRvdy5kaXNwYXRjaEV2ZW50KHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQpdGhyb3cgZX1yZXR1cm4gci50aGVuKHQ9Pntmb3IobGV0IGUgb2YgdHx8W10pZS5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZpKGUucmVhc29uKTtyZXR1cm4gZSgpLmNhdGNoKGkpfSl9LERmPXtjbGFzczpgZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTQgcHgtNCBweS02IHNtOnB4LTYgbGc6cHgtOGB9LE9mPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LGtmPXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yYH0sQWY9e2tleTowLGNsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0samY9e2tleToyLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00IG1kOmZsZXgtcm93YH0sTWY9e2NsYXNzOmBtaW4tdy0wIGZsZXgtMWB9LE5mPWBodHRwczovL2dpdGh1Yi5jb20vbHVrYXN6cmFjenlsby90cmFlZmlrLWxsbWdhdGV3YXlgLFBmPXV0KEgoe19fbmFtZTpgQXBwYCxzZXR1cChlKXtsZXQgdD1mKCksbj1BZSgpLHI9VWUoKTtTZigpO2xldCBpPXtob21lOm90KCgpPT5FZigoKT0+aW1wb3J0KGAuL0hvbWVQYWdlLUJ0Tm4wMEhWLmpzYCksX192aXRlX19tYXBEZXBzKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzXSkpKSxzcGVuZDpvdCgoKT0+RWYoKCk9PmltcG9ydChgLi9TcGVuZFBhZ2UtQ040b3dWVTAuanNgKSxfX3ZpdGVfX21hcERlcHMoWzE0LDEsMiwzLDQsNSwxNSwxNiwxNyw2LDcsOCw5LDE4LDE5LDIwLDIxLDIyLDEyLDEzLDIzXSkpKSxjb25zdW1lcnM6b3QoKCk9PkVmKCgpPT5pbXBvcnQoYC4vQ29uc3VtZXJzUGFnZS1CXzQ5X1VDSS5qc2ApLF9fdml0ZV9fbWFwRGVwcyhbMjQsMSwyNSwzLDI2LDE3LDUsMiw0LDI3LDE1LDEzLDE2LDYsNyw4LDI4LDksMTgsMTksMjAsMTBdKSkpLG1vZGVsczpvdCgoKT0+RWYoKCk9PmltcG9ydChgLi9Nb2RlbHNQYWdlLURPLTE5Uk5YLmpzYCksX192aXRlX19tYXBEZXBzKFsyOSwxLDI1LDMsMjYsMTcsNSw0LDE1LDI4LDksMjAsMTIsMTMsMjEsMzAsMjJdKSkpLHJlbGlhYmlsaXR5Om90KCgpPT5FZigoKT0+aW1wb3J0KGAuL1JlbGlhYmlsaXR5UGFnZS1ELXNPTHRXWi5qc2ApLF9fdml0ZV9fbWFwRGVwcyhbMzEsMSw0LDUsMTUsOCwyOCwxOCwyMCwxMCwxMSwxMiwxMywyMiwzMCwyM10pKSksY29uZmlnOm90KCgpPT5FZigoKT0+aW1wb3J0KGAuL0NvbmZpZ1BhZ2UtQlNFcTItZm8uanNgKSxfX3ZpdGVfX21hcERlcHMoWzMyLDEsMiwzLDI2LDE3LDQsMjddKSkpLHRhcmdldHM6b3QoKCk9PkVmKCgpPT5pbXBvcnQoYC4vVGFyZ2V0c1BhZ2UtQkwwYW9mc1guanNgKSxfX3ZpdGVfX21hcERlcHMoWzMzLDEsNCw1LDE1LDcsOCwyOCwxOV0pKSl9LGE9TCgoKT0+aVtyLnBhZ2VdKSxvPUwoKCk9PntpZihuLmVycm9yKXJldHVybmByZWZyZXNoIGZhaWxlZDogJHtuLmVycm9yfWA7bGV0IGU9bi5vdmVydmlldz8ucmVwbGljYTtyZXR1cm5gbGFzdCB1cGRhdGVkICR7bi5sYXN0VXBkYXRlZD8udG9Mb2NhbGVUaW1lU3RyaW5nKCk/P2BgfSR7ZT9gIMK3IHJlcGxpY2EgJHtlfWA6YGB9YH0pLHM9TCgoKT0+IW4uZXJyb3ImJiFuLmxhc3RVcGRhdGVkKTtyZXR1cm4gb2UoKCk9PntuLnN0YXJ0UG9sbGluZygpfSksKGUscik9PntsZXQgaT1rZShgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIFAoKSx6KHZlLG51bGwsW1IoYGRpdmAsRGYsW1IoYGhlYWRlcmAsT2YsW1IoYGRpdmAsa2YsW3JbMF18fD1SKGBoMWAse2NsYXNzOmB0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRgfSxgTExNIEdhdGV3YXkg4oCUIEFkbWluYCwtMSksQShCKG5lKSx7YXM6YGFgLGhyZWY6TmYsdGFyZ2V0OmBfYmxhbmtgLHJlbDpgbm9vcGVuZXIgbm9yZWZlcnJlcmAsdmFyaWFudDpgZ2hvc3RgLHNpemU6YGljb25gLCJhcmlhLWxhYmVsIjpgR2l0SHViIHJlcG9zaXRvcnlgLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6RSgoKT0+W0EoaSx7aWNvbjpCKGhzKSxjbGFzczpgc2l6ZS00YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0pXSksQih0KS5pc0F1dGhlbnRpY2F0ZWQ/KFAoKSx6KGBwYCxBZixbcy52YWx1ZT8oUCgpLHoodmUse2tleTowfSxbQShCKHR0KSx7Y2xhc3M6YGgtNCB3LTQwYH0pLHJbMV18fD1SKGBzcGFuYCx7Y2xhc3M6YHNyLW9ubHlgfSxgTG9hZGluZyBkYXNoYm9hcmQgc3RhdHVz4oCmYCwtMSldLDY0KSk6KFAoKSx6KHZlLHtrZXk6MX0sW0IobikuZXJyb3I/KFAoKSxNKGkse2tleTowLGljb246QigkZSksY2xhc3M6YHNpemUtMy41IHRleHQtZGVzdHJ1Y3RpdmVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pKTpJKGBgLCEwKSxSKGBzcGFuYCx7Y2xhc3M6ZHQoQihuKS5lcnJvcj9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwKX0sVihvLnZhbHVlKSwzKV0sNjQpKV0pKTpJKGBgLCEwKSxCKHQpLmlzQXV0aGVudGljYXRlZD8oUCgpLE0oZmYse2tleToxfSkpOkkoYGAsITApXSksQih0KS5pc0F1dGhlbnRpY2F0ZWQ/KFAoKSxNKFVkLHtrZXk6MCx3YXJuaW5nczpCKG4pLm92ZXJ2aWV3Py53YXJuaW5ncz8/W10sIndhcm5pbmdzLWRyb3BwZWQiOkIobikub3ZlcnZpZXc/Lndhcm5pbmdzRHJvcHBlZH0sbnVsbCw4LFtgd2FybmluZ3NgLGB3YXJuaW5ncy1kcm9wcGVkYF0pKTpJKGBgLCEwKSxCKHQpLmlzQXV0aGVudGljYXRlZD8oUCgpLHooYGRpdmAsamYsW0EoaGYpLFIoYG1haW5gLE1mLFsoUCgpLE0oSGUoYS52YWx1ZSkpKV0pXSkpOihQKCksTShCZCx7a2V5OjF9KSldKSxBKHhmKV0sNjQpfX19KSk7UGYudXNlKHN0KCkpLFBmLmNvbXBvbmVudChgRm9udEF3ZXNvbWVJY29uYCxtcyksUGYubW91bnQoYCNhcHBgKTtleHBvcnR7Z3MgYXMgXyxxZCBhcyBhLGpkIGFzIGMsaWMgYXMgZCxPcyBhcyBmLF9zIGFzIGcsdnMgYXMgaCxYZCBhcyBpLEFkIGFzIGwsVHMgYXMgbSxlZiBhcyBuLEdkIGFzIG8sWiBhcyBwLFpkIGFzIHIsV2QgYXMgcyxsZiBhcyB0LE1jIGFzIHUsbXMgYXMgdn07",
),
},
"index-BD5bBisO.css": {
contentType: "text/css; charset=utf-8",
body: decodeAdminAsset(
"QGtleWZyYW1lcyBhdXRoZ2F0ZS1zaGFrZS1iNmQ2ZmIxZXsxMCUsOTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTFweCl9MjAlLDgwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDJweCl9MzAlLDUwJSw3MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX00MCUsNjAle3RyYW5zZm9ybTp0cmFuc2xhdGUoNHB4KX19QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2Upey5hdXRoZ2F0ZS1zaGFrZVtkYXRhLXYtYjZkNmZiMWVde2FuaW1hdGlvbjouNHMgZWFzZS1pbi1vdXQgYXV0aGdhdGUtc2hha2UtYjZkNmZiMWV9fUBsYXllciBwcm9wZXJ0aWVze0BzdXBwb3J0cyAoKCgtd2Via2l0LWh5cGhlbnM6bm9uZSkpIGFuZCAobm90IChtYXJnaW4tdHJpbTppbmxpbmUpKSkgb3IgKCgtbW96LW9yaWVudDppbmxpbmUpIGFuZCAobm90IChjb2xvcjpyZ2IoZnJvbSByZWQgciBnIGIpKSkpezpyb290LDpob3N0ey0tc2hpbW1lci1hbmdsZToyMGRlZ30qLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXRyYW5zbGF0ZS16OjA7LS10dy1yb3RhdGUteDppbml0aWFsOy0tdHctcm90YXRlLXk6aW5pdGlhbDstLXR3LXJvdGF0ZS16OmluaXRpYWw7LS10dy1za2V3LXg6aW5pdGlhbDstLXR3LXNrZXcteTppbml0aWFsOy0tdHctc3BhY2UteS1yZXZlcnNlOjA7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7LS10dy1sZWFkaW5nOmluaXRpYWw7LS10dy1mb250LXdlaWdodDppbml0aWFsOy0tdHctdHJhY2tpbmc6aW5pdGlhbDstLXR3LW9yZGluYWw6aW5pdGlhbDstLXR3LXNsYXNoZWQtemVybzppbml0aWFsOy0tdHctbnVtZXJpYy1maWd1cmU6aW5pdGlhbDstLXR3LW51bWVyaWMtc3BhY2luZzppbml0aWFsOy0tdHctbnVtZXJpYy1mcmFjdGlvbjppbml0aWFsOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctc2hhZG93LWFscGhhOjEwMCU7LS10dy1pbnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctaW5zZXQtc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LXJpbmctY29sb3I6aW5pdGlhbDstLXR3LXJpbmctc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXJpbmctY29sb3I6aW5pdGlhbDstLXR3LWluc2V0LXJpbmctc2hhZG93OjAgMCAjMDAwMDstLXR3LXJpbmctaW5zZXQ6aW5pdGlhbDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOjBweDstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiNmZmY7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctb3V0bGluZS1zdHlsZTpzb2xpZDstLXR3LWJsdXI6aW5pdGlhbDstLXR3LWJyaWdodG5lc3M6aW5pdGlhbDstLXR3LWNvbnRyYXN0OmluaXRpYWw7LS10dy1ncmF5c2NhbGU6aW5pdGlhbDstLXR3LWh1ZS1yb3RhdGU6aW5pdGlhbDstLXR3LWludmVydDppbml0aWFsOy0tdHctb3BhY2l0eTppbml0aWFsOy0tdHctc2F0dXJhdGU6aW5pdGlhbDstLXR3LXNlcGlhOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdzppbml0aWFsOy0tdHctZHJvcC1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWFscGhhOjEwMCU7LS10dy1kcm9wLXNoYWRvdy1zaXplOmluaXRpYWw7LS10dy1kdXJhdGlvbjppbml0aWFsOy0tdHctZWFzZTppbml0aWFsOy0tdHctY29udGVudDoiIjstLXR3LWFuaW1hdGlvbi1kZWxheTowczstLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb246bm9ybWFsOy0tdHctYW5pbWF0aW9uLWR1cmF0aW9uOmluaXRpYWw7LS10dy1hbmltYXRpb24tZmlsbC1tb2RlOm5vbmU7LS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7LS10dy1lbnRlci1ibHVyOjA7LS10dy1lbnRlci1vcGFjaXR5OjE7LS10dy1lbnRlci1yb3RhdGU6MDstLXR3LWVudGVyLXNjYWxlOjE7LS10dy1lbnRlci10cmFuc2xhdGUteDowOy0tdHctZW50ZXItdHJhbnNsYXRlLXk6MDstLXR3LWV4aXQtYmx1cjowOy0tdHctZXhpdC1vcGFjaXR5OjE7LS10dy1leGl0LXJvdGF0ZTowOy0tdHctZXhpdC1zY2FsZToxOy0tdHctZXhpdC10cmFuc2xhdGUteDowOy0tdHctZXhpdC10cmFuc2xhdGUteTowOy0tc2Nyb2xsLWZhZGUtdDowOy0tc2Nyb2xsLWZhZGUtYjowOy0tc2Nyb2xsLWZhZGUtczowOy0tc2Nyb2xsLWZhZGUtZTowOy0tc2Nyb2xsLWZhZGUtbWFzazppbml0aWFsOy0tc2hpbW1lci1pbWFnZTppbml0aWFsOy0tc2hpbW1lci10ZXh0LWZpbGw6aW5pdGlhbH19fUBsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWY7LS1zcGFjaW5nOi4yNXJlbTstLWNvbnRhaW5lci14czoyMHJlbTstLWNvbnRhaW5lci1zbToyNHJlbTstLWNvbnRhaW5lci1tZDoyOHJlbTstLXRleHQteHM6Ljc1cmVtOy0tdGV4dC14cy0tbGluZS1oZWlnaHQ6Y2FsYygxIC8gLjc1KTstLXRleHQtc206Ljg3NXJlbTstLXRleHQtc20tLWxpbmUtaGVpZ2h0OmNhbGMoMS4yNSAvIC44NzUpOy0tdGV4dC1iYXNlOjFyZW07LS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0OmNhbGMoMS41IC8gMSk7LS10ZXh0LWxnOjEuMTI1cmVtOy0tdGV4dC1sZy0tbGluZS1oZWlnaHQ6Y2FsYygxLjc1IC8gMS4xMjUpOy0tdGV4dC14bDoxLjI1cmVtOy0tdGV4dC14bC0tbGluZS1oZWlnaHQ6Y2FsYygxLjc1IC8gMS4yNSk7LS10ZXh0LTJ4bDoxLjVyZW07LS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6Y2FsYygyIC8gMS41KTstLWZvbnQtd2VpZ2h0LW5vcm1hbDo0MDA7LS1mb250LXdlaWdodC1tZWRpdW06NTAwOy0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6NjAwOy0tdHJhY2tpbmctdGlnaHQ6LS4wMjVlbTstLWxlYWRpbmctc251ZzoxLjM3NTstLXJhZGl1cy1tZDpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpOy0tcmFkaXVzLTR4bDoycmVtOy0tZWFzZS1pbjpjdWJpYy1iZXppZXIoLjQsIDAsIDEsIDEpOy0tZWFzZS1vdXQ6Y3ViaWMtYmV6aWVyKDAsIDAsIC4yLCAxKTstLWFuaW1hdGUtc3BpbjpzcGluIDFzIGxpbmVhciBpbmZpbml0ZTstLWFuaW1hdGUtcHVsc2U6cHVsc2UgMnMgY3ViaWMtYmV6aWVyKC40LCAwLCAuNiwgMSkgaW5maW5pdGU7LS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb246LjE1czstLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSk7LS1kZWZhdWx0LWZvbnQtZmFtaWx5OnVpLXNhbnMtc2VyaWYsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgc2Fucy1zZXJpZjstLWRlZmF1bHQtbW9uby1mb250LWZhbWlseTp1aS1tb25vc3BhY2UsICJTRiBNb25vIiwgIkNhc2NhZGlhIENvZGUiLCAiUm9ib3RvIE1vbm8iLCBDb25zb2xhcywgbW9ub3NwYWNlfX1AbGF5ZXIgYmFzZXsqLDphZnRlciw6YmVmb3JlLDo6YmFja2Ryb3B7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9aHRtbCw6aG9zdHstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTt0YWItc2l6ZTo0O2xpbmUtaGVpZ2h0OjEuNTtmb250LWZhbWlseTp2YXIoLS1kZWZhdWx0LWZvbnQtZmFtaWx5LC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgIlNlZ29lIFVJIiwgUm9ib3RvLCAiSGVsdmV0aWNhIE5ldWUiLCAiTm90byBTYW5zIiwgQXJpYWwsIHNhbnMtc2VyaWYsICJBcHBsZSBDb2xvciBFbW9qaSIsICJTZWdvZSBVSSBFbW9qaSIsICJTZWdvZSBVSSBTeW1ib2wiLCAiTm90byBDb2xvciBFbW9qaSIpO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtZm9udC12YXJpYXRpb24tc2V0dGluZ3Msbm9ybWFsKTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDstd2Via2l0LXRleHQtZGVjb3JhdGlvbjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246aW5oZXJpdH1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9Y29kZSxrYmQsc2FtcCxwcmV7Zm9udC1mYW1pbHk6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmFtaWx5LHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfTotbW96LWZvY3VzcmluZzp3aGVyZSg6bm90KGlmcmFtZSkpe291dGxpbmU6YXV0b31wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lfWltZyxzdmcsdmlkZW8sY2FudmFzLGF1ZGlvLGlmcmFtZSxlbWJlZCxvYmplY3R7dmVydGljYWwtYWxpZ246bWlkZGxlO2Rpc3BsYXk6YmxvY2t9aW1nLHZpZGVve21heC13aWR0aDoxMDAlO2hlaWdodDphdXRvfWJ1dHRvbixpbnB1dCxzZWxlY3Qsb3B0Z3JvdXAsdGV4dGFyZWF7Zm9udDppbmhlcml0O2ZvbnQtZmVhdHVyZS1zZXR0aW5nczppbmhlcml0O2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOmluaGVyaXQ7bGV0dGVyLXNwYWNpbmc6aW5oZXJpdDtjb2xvcjppbmhlcml0O29wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JvcmRlci1yYWRpdXM6MH06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3Vwe2ZvbnQtd2VpZ2h0OmJvbGRlcn06d2hlcmUoc2VsZWN0OmlzKFttdWx0aXBsZV0sW3NpemVdKSkgb3B0Z3JvdXAgb3B0aW9ue3BhZGRpbmctaW5saW5lLXN0YXJ0OjIwcHh9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnttYXJnaW4taW5saW5lLWVuZDo0cHh9OjpwbGFjZWhvbGRlcntvcGFjaXR5OjF9QHN1cHBvcnRzIChub3QgKCgtd2Via2l0LWFwcGVhcmFuY2U6LWFwcGxlLXBheS1idXR0b24pKSkgb3IgKGNvbnRhaW4taW50cmluc2ljLXNpemU6MXB4KXs6OnBsYWNlaG9sZGVye2NvbG9yOmN1cnJlbnRDb2xvcn1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7OjpwbGFjZWhvbGRlcntjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIGN1cnJlbnRjb2xvciA1MCUsIHRyYW5zcGFyZW50KX19fXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWV7bWluLWhlaWdodDoxbGg7dGV4dC1hbGlnbjppbmhlcml0fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0e2Rpc3BsYXk6aW5saW5lLWZsZXh9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXJ7cGFkZGluZzowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0e3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC15ZWFyLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZGF5LWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1ob3VyLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29uZC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWlsbGlzZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1lcmlkaWVtLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcntsaW5lLWhlaWdodDoxfTotbW96LXVpLWludmFsaWR7Ym94LXNoYWRvdzpub25lfWJ1dHRvbixpbnB1dDp3aGVyZShbdHlwZT1idXR0b25dLFt0eXBlPXJlc2V0XSxbdHlwZT1zdWJtaXRdKXthcHBlYXJhbmNlOmJ1dHRvbn06OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2FwcGVhcmFuY2U6YnV0dG9ufTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b306Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W2hpZGRlbl06d2hlcmUoOm5vdChbaGlkZGVuPXVudGlsLWZvdW5kXSkpe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Kntib3JkZXItY29sb3I6dmFyKC0tYm9yZGVyKTtvdXRsaW5lLWNvbG9yOnZhcigtLXJpbmcpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsqe291dGxpbmUtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1yaW5nKSA1MCUsIHRyYW5zcGFyZW50KX19Ym9keXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhY2tncm91bmQpO2NvbG9yOnZhcigtLWZvcmVncm91bmQpO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtcztmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxzYW5zLXNlcmlmfX1AbGF5ZXIgY29tcG9uZW50cztAbGF5ZXIgdXRpbGl0aWVzey5cQGNvbnRhaW5lclwvY2FyZC1oZWFkZXJ7Y29udGFpbmVyOmNhcmQtaGVhZGVyL2lubGluZS1zaXplfS5wb2ludGVyLWV2ZW50cy1hdXRve3BvaW50ZXItZXZlbnRzOmF1dG99LnBvaW50ZXItZXZlbnRzLW5vbmV7cG9pbnRlci1ldmVudHM6bm9uZX0uY29sbGFwc2V7dmlzaWJpbGl0eTpjb2xsYXBzZX0uaW52aXNpYmxle3Zpc2liaWxpdHk6aGlkZGVufS52aXNpYmxle3Zpc2liaWxpdHk6dmlzaWJsZX0uc3Itb25seXtjbGlwLXBhdGg6aW5zZXQoNTAlKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjA7d2lkdGg6MXB4O2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7cGFkZGluZzowO3Bvc2l0aW9uOmFic29sdXRlO292ZXJmbG93OmhpZGRlbn0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LmZpeGVke3Bvc2l0aW9uOmZpeGVkfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0uc3RhdGlje3Bvc2l0aW9uOnN0YXRpY30uaW5zZXQteC0we2luc2V0LWlubGluZTowfS5pbnNldC15LTB7aW5zZXQtYmxvY2s6MH0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTV7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0udG9wLTEwMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwMCl9LnJpZ2h0LTF7cmlnaHQ6dmFyKC0tc3BhY2luZyl9LnJpZ2h0LTFcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnJpZ2h0LTJ7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5ib3R0b20tMHtib3R0b206MH0ubGVmdC0we2xlZnQ6MH0ubGVmdC0yXC41e2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnotMTB7ei1pbmRleDoxMH0uei01MHt6LWluZGV4OjUwfS5jb2wtc3Bhbi1mdWxse2dyaWQtY29sdW1uOjEvLTF9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAod2lkdGg+PTQwcmVtKXsuY29udGFpbmVye21heC13aWR0aDo0MHJlbX19QG1lZGlhICh3aWR0aD49NDhyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjQ4cmVtfX1AbWVkaWEgKHdpZHRoPj02NHJlbSl7LmNvbnRhaW5lcnttYXgtd2lkdGg6NjRyZW19fUBtZWRpYSAod2lkdGg+PTgwcmVtKXsuY29udGFpbmVye21heC13aWR0aDo4MHJlbX19QG1lZGlhICh3aWR0aD49OTZyZW0pey5jb250YWluZXJ7bWF4LXdpZHRoOjk2cmVtfX0uLW14LTFcLjV7bWFyZ2luLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEuNSl9Lm14LWF1dG97bWFyZ2luLWlubGluZTphdXRvfS4tbXQtMXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAtMSl9Lm10LTBcLjV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5tdC0xe21hcmdpbi10b3A6dmFyKC0tc3BhY2luZyl9Lm10LTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Li1tci0xe21hcmdpbi1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEpfS5tYi0xXC41e21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9Lm1iLTJ7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lm1iLTN7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm1sLTF7bWFyZ2luLWxlZnQ6dmFyKC0tc3BhY2luZyl9Lm1sLWF1dG97bWFyZ2luLWxlZnQ6YXV0b30uYmxvY2t7ZGlzcGxheTpibG9ja30uY29udGVudHN7ZGlzcGxheTpjb250ZW50c30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5oaWRkZW57ZGlzcGxheTpub25lfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1ibG9ja3tkaXNwbGF5OmlubGluZS1ibG9ja30uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0udGFibGV7ZGlzcGxheTp0YWJsZX0udGFibGUtY2VsbHtkaXNwbGF5OnRhYmxlLWNlbGx9LnRhYmxlLXJvd3tkaXNwbGF5OnRhYmxlLXJvd30uc2l6ZS0yXC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0uc2l6ZS0ze3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5zaXplLTNcLjV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS5zaXplLTR7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnNpemUtNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0uc2l6ZS02e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA2KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5zaXplLTd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNyl9LnNpemUtOHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0uc2l6ZS05e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA5KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDkpfS5zaXplLTEye3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxMik7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LmgtMVwuNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmgtM3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5oLTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uaC01e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9LmgtNntoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5oLTd7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA3KX0uaC04e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LmgtOXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDkpfS5oLTEwe2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApfS5oLTY0e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNjQpfS5oLTcye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNzIpfS5oLVxbY2FsY1woMTAwXCUtMXB4XClcXXtoZWlnaHQ6Y2FsYygxMDAlIC0gMXB4KX0uaC1mdWxse2hlaWdodDoxMDAlfS5tYXgtaC1cKC0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XCl7bWF4LWhlaWdodDp2YXIoLS1yZWthLXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpfS5taW4taC1cWzcwdmhcXXttaW4taGVpZ2h0Ojcwdmh9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnctMTJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEyKX0udy0xNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTQpfS53LTE2e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxNil9LnctMjB7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIwKX0udy0yNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpfS53LTI4e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAyOCl9LnctMzZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDM2KX0udy00MHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNDApfS53LTQ0e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0NCl9LnctNDh7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQ4KX0udy01Nnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNTYpfS53LWZpdHt3aWR0aDpmaXQtY29udGVudH0udy1mdWxse3dpZHRoOjEwMCV9Lm1heC13LTMye21heC13aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMzIpfS5tYXgtdy00MHttYXgtd2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQwKX0ubWF4LXctZnVsbHttYXgtd2lkdGg6MTAwJX0ubWF4LXctbWR7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1tZCl9Lm1heC13LXNte21heC13aWR0aDp2YXIoLS1jb250YWluZXItc20pfS5tYXgtdy14c3ttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLXhzKX0ubWluLXctMHttaW4td2lkdGg6MH0ubWluLXctMzZ7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzNil9LmZsZXgtMXtmbGV4OjF9LnNocmluay0we2ZsZXgtc2hyaW5rOjB9LmNhcHRpb24tYm90dG9te2NhcHRpb24tc2lkZTpib3R0b219Lm9yaWdpbi1cKC0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pfS4tdHJhbnNsYXRlLXktMVwvMnstLXR3LXRyYW5zbGF0ZS15OmNhbGMoY2FsYygxIC8gMiAqIDEwMCUpICogLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2xhdGUteS0yey0tdHctdHJhbnNsYXRlLXk6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2Zvcm17dHJhbnNmb3JtOnZhcigtLXR3LXJvdGF0ZS14LCkgdmFyKC0tdHctcm90YXRlLXksKSB2YXIoLS10dy1yb3RhdGUteiwpIHZhcigtLXR3LXNrZXcteCwpIHZhcigtLXR3LXNrZXcteSwpfS5hbmltYXRlLXB1bHNle2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXB1bHNlKX0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNwaW4pfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9Lmxpc3QtZGlzY3tsaXN0LXN0eWxlLXR5cGU6ZGlzY30uYXV0by1yb3dzLW1pbntncmlkLWF1dG8tcm93czptaW4tY29udGVudH0uZ3JpZC1jb2xzLTF7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC1jb2wtcmV2ZXJzZXtmbGV4LWRpcmVjdGlvbjpjb2x1bW4tcmV2ZXJzZX0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uanVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LXN0YXJ0e2p1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0fS5nYXAtMFwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0uZ2FwLTF7Z2FwOnZhcigtLXNwYWNpbmcpfS5nYXAtMVwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmdhcC0ye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LmdhcC0ze2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LmdhcC00e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LmdhcC02e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9OndoZXJlKC5zcGFjZS15LTBcLjU+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfS5nYXAteC0ze2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5nYXAteC00e2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5nYXAteC02e2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5nYXAteS0xe3Jvdy1nYXA6dmFyKC0tc3BhY2luZyl9LmdhcC15LTFcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0udHJ1bmNhdGV7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWF1dG97b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ub3ZlcmZsb3cteS1oaWRkZW57b3ZlcmZsb3cteTpoaWRkZW59LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtNHhse2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLTR4bCl9LnJvdW5kZWQtXFttaW5cKHZhclwoLS1yYWRpdXMtbWRcKVwsMTBweFwpXF17Ym9yZGVyLXJhZGl1czptaW4odmFyKC0tcmFkaXVzLW1kKSwgMTBweCl9LnJvdW5kZWQtXFttaW5cKHZhclwoLS1yYWRpdXMtbWRcKVwsMTJweFwpXF17Ym9yZGVyLXJhZGl1czptaW4odmFyKC0tcmFkaXVzLW1kKSwgMTJweCl9LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjIxNDc0ODM2NDdweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyl9LnJvdW5kZWQtbWR7Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpfS5yb3VuZGVkLXNte2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpIC0gNHB4KX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9LnJvdW5kZWQtdC14bHtib3JkZXItdG9wLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KX0uYm9yZGVye2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDoxcHh9LmJvcmRlci1ie2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYm9yZGVyLWJvcmRlcntib3JkZXItY29sb3I6dmFyKC0tYm9yZGVyKX0uYm9yZGVyLWlucHV0e2JvcmRlci1jb2xvcjp2YXIoLS1pbnB1dCl9LmJvcmRlci1zdGF0dXMtd2FyblwvNDB7Ym9yZGVyLWNvbG9yOnZhcigtLXN0YXR1cy13YXJuKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJvcmRlci1zdGF0dXMtd2FyblwvNDB7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tc3RhdHVzLXdhcm4pIDQwJSwgdHJhbnNwYXJlbnQpfX0uYm9yZGVyLXRyYW5zcGFyZW50e2JvcmRlci1jb2xvcjojMDAwMH0uYmctYWNjZW50e2JhY2tncm91bmQtY29sb3I6dmFyKC0tYWNjZW50KX0uYmctYmFja2dyb3VuZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhY2tncm91bmQpfS5iZy1iYXItYW1iZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1iYXItYW1iZXIpfS5iZy1jYXJke2JhY2tncm91bmQtY29sb3I6dmFyKC0tY2FyZCl9LmJnLWRlc3RydWN0aXZlLC5iZy1kZXN0cnVjdGl2ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy1kZXN0cnVjdGl2ZVwvMTB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAxMCUsIHRyYW5zcGFyZW50KX19LmJnLW11dGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfS5iZy1wb3BvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tcG9wb3Zlcil9LmJnLXByaW1hcnksLmJnLXByaW1hcnlcLzEwe2JhY2tncm91bmQtY29sb3I6dmFyKC0tcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5iZy1wcmltYXJ5XC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tcHJpbWFyeSkgMTAlLCB0cmFuc3BhcmVudCl9fS5iZy1zZWNvbmRhcnl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1zZWNvbmRhcnkpfS5iZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5iZy1jbGlwLXBhZGRpbmd7YmFja2dyb3VuZC1jbGlwOnBhZGRpbmctYm94fS5wLTBcLjc1e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC43NSl9LnAtMntwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucC0ze3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5wLTR7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB4LTFcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnB4LTJ7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5weC0yXC41e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5weC0ze3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHgtNHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnB5LTBcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5weS0xe3BhZGRpbmctYmxvY2s6dmFyKC0tc3BhY2luZyl9LnB5LTJ7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnB5LTJcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ucHktM3twYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHktNHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ucHktNntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0ucHktOHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0ucHktMTB7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApfS5wdC0we3BhZGRpbmctdG9wOjB9LnByLTJ7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnByLTh7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnByLTEwe3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwKX0ucGItMVwuNXtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0ucGItMntwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnBiLTJcLjV7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnBiLVxbY2FsY1woZW52XChzYWZlLWFyZWEtaW5zZXQtYm90dG9tXClcKzFyZW1cKVxde3BhZGRpbmctYm90dG9tOmNhbGMoZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pICsgMXJlbSl9LnBsLTFcLjV7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5wbC0yXC41e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ucGwtNHtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5wbC04e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnRleHQtY2VudGVye3RleHQtYWxpZ246Y2VudGVyfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LmFsaWduLW1pZGRsZXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LmZvbnQtaGVhZGluZ3tmb250LWZhbWlseTp2YXIoLS1mb250LXNhbnMpfS5mb250LW1vbm97Zm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLFNGIE1vbm8sQ2FzY2FkaWEgQ29kZSxSb2JvdG8gTW9ubyxDb25zb2xhcyxtb25vc3BhY2V9LnRleHQtMnhse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LTJ4bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQpKX0udGV4dC1iYXNle2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWJhc2UpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1iYXNlLS1saW5lLWhlaWdodCkpfS50ZXh0LWxne2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LWxnKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtbGctLWxpbmUtaGVpZ2h0KSl9LnRleHQtc217Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0udGV4dC14bHtmb250LXNpemU6dmFyKC0tdGV4dC14bCk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXhsLS1saW5lLWhlaWdodCkpfS50ZXh0LXhze2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXhzKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQteHMtLWxpbmUtaGVpZ2h0KSl9LnRleHQtXFswXC44cmVtXF17Zm9udC1zaXplOi44cmVtfS5sZWFkaW5nLXNudWd7LS10dy1sZWFkaW5nOnZhcigtLWxlYWRpbmctc251Zyk7bGluZS1oZWlnaHQ6dmFyKC0tbGVhZGluZy1zbnVnKX0uZm9udC1tZWRpdW17LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSl9LmZvbnQtbm9ybWFsey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpfS5mb250LXNlbWlib2xkey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKX0udHJhY2tpbmctdGlnaHR7LS10dy10cmFja2luZzp2YXIoLS10cmFja2luZy10aWdodCk7bGV0dGVyLXNwYWNpbmc6dmFyKC0tdHJhY2tpbmctdGlnaHQpfS50ZXh0LWJhbGFuY2V7dGV4dC13cmFwOmJhbGFuY2V9LmJyZWFrLXdvcmRze292ZXJmbG93LXdyYXA6YnJlYWstd29yZH0uYnJlYWstYWxse3dvcmQtYnJlYWs6YnJlYWstYWxsfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2UtcHJle3doaXRlLXNwYWNlOnByZX0udGV4dC1hY2NlbnQtZm9yZWdyb3VuZHtjb2xvcjp2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCl9LnRleHQtY2FyZC1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLWNhcmQtZm9yZWdyb3VuZCl9LnRleHQtY2hhcnQtcmVxdWVzdHN7Y29sb3I6dmFyKC0tY2hhcnQtcmVxdWVzdHMpfS50ZXh0LWRlc3RydWN0aXZle2NvbG9yOnZhcigtLWRlc3RydWN0aXZlKX0udGV4dC1mb3JlZ3JvdW5kLC50ZXh0LWZvcmVncm91bmRcLzYwe2NvbG9yOnZhcigtLWZvcmVncm91bmQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC1mb3JlZ3JvdW5kXC82MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWZvcmVncm91bmQpIDYwJSwgdHJhbnNwYXJlbnQpfX0udGV4dC1pbmhlcml0e2NvbG9yOmluaGVyaXR9LnRleHQtbXV0ZWQtZm9yZWdyb3VuZCwudGV4dC1tdXRlZC1mb3JlZ3JvdW5kXC80MHtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNDB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSA0MCUsIHRyYW5zcGFyZW50KX19LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNjB7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LW11dGVkLWZvcmVncm91bmRcLzYwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkgNjAlLCB0cmFuc3BhcmVudCl9fS50ZXh0LXBvcG92ZXItZm9yZWdyb3VuZHtjb2xvcjp2YXIoLS1wb3BvdmVyLWZvcmVncm91bmQpfS50ZXh0LXByaW1hcnl7Y29sb3I6dmFyKC0tcHJpbWFyeSl9LnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLXByaW1hcnktZm9yZWdyb3VuZCl9LnRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmR7Y29sb3I6dmFyKC0tc2Vjb25kYXJ5LWZvcmVncm91bmQpfS50ZXh0LXN0YXR1cy13YXJue2NvbG9yOnZhcigtLXN0YXR1cy13YXJuKX0udGFidWxhci1udW1zey0tdHctbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS10dy1vcmRpbmFsLCkgdmFyKC0tdHctc2xhc2hlZC16ZXJvLCkgdmFyKC0tdHctbnVtZXJpYy1maWd1cmUsKSB2YXIoLS10dy1udW1lcmljLXNwYWNpbmcsKSB2YXIoLS10dy1udW1lcmljLWZyYWN0aW9uLCl9LnVuZGVybGluZS1vZmZzZXQtNHt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6NHB4fS5vcGFjaXR5LTB7b3BhY2l0eTowfS5zaGFkb3ctbGd7LS10dy1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKSwgMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSk7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLCB2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LW1key0tdHctc2hhZG93OjAgNHB4IDZweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDJweCA0cHggLTJweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5yaW5nLC5yaW5nLTF7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygxcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5yaW5nLWZvcmVncm91bmRcLzEwey0tdHctcmluZy1jb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnJpbmctZm9yZWdyb3VuZFwvMTB7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZm9yZWdyb3VuZCkgMTAlLCB0cmFuc3BhcmVudCl9fS5vdXRsaW5lLWhpZGRlbnstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9QG1lZGlhIChmb3JjZWQtY29sb3JzOmFjdGl2ZSl7Lm91dGxpbmUtaGlkZGVue291dGxpbmUtb2Zmc2V0OjJweDtvdXRsaW5lOjJweCBzb2xpZCAjMDAwMH19Lm91dGxpbmV7b3V0bGluZS1zdHlsZTp2YXIoLS10dy1vdXRsaW5lLXN0eWxlKTtvdXRsaW5lLXdpZHRoOjFweH0uZmlsdGVye2ZpbHRlcjp2YXIoLS10dy1ibHVyLCkgdmFyKC0tdHctYnJpZ2h0bmVzcywpIHZhcigtLXR3LWNvbnRyYXN0LCkgdmFyKC0tdHctZ3JheXNjYWxlLCkgdmFyKC0tdHctaHVlLXJvdGF0ZSwpIHZhcigtLXR3LWludmVydCwpIHZhcigtLXR3LXNhdHVyYXRlLCkgdmFyKC0tdHctc2VwaWEsKSB2YXIoLS10dy1kcm9wLXNoYWRvdywpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG8sb3BhY2l0eSxib3gtc2hhZG93LHRyYW5zZm9ybSx0cmFuc2xhdGUsc2NhbGUscm90YXRlLGZpbHRlciwtd2Via2l0LWJhY2tkcm9wLWZpbHRlcixiYWNrZHJvcC1maWx0ZXIsZGlzcGxheSxjb250ZW50LXZpc2liaWxpdHksb3ZlcmxheSxwb2ludGVyLWV2ZW50czt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLWFsbHt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LmR1cmF0aW9uLTEwMHstLXR3LWR1cmF0aW9uOi4xczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMTUwey0tdHctZHVyYXRpb246LjE1czt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmVhc2UtaW57LS10dy1lYXNlOnZhcigtLWVhc2UtaW4pO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWVhc2UtaW4pfS5lYXNlLW91dHstLXR3LWVhc2U6dmFyKC0tZWFzZS1vdXQpO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLWVhc2Utb3V0KX0ub3V0bGluZS1ub25ley0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uc2VsZWN0LW5vbmV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lO3VzZXItc2VsZWN0Om5vbmV9LnNlbGVjdC10ZXh0ey13ZWJraXQtdXNlci1zZWxlY3Q6dGV4dDt1c2VyLXNlbGVjdDp0ZXh0fS5ydW5uaW5ne2FuaW1hdGlvbi1wbGF5LXN0YXRlOnJ1bm5pbmd9Lm5vdC1sYXN0XDpib3JkZXItYjpub3QoOmxhc3QtY2hpbGQpe2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjFweH0uZ3JvdXAtaGFzLVxbXD5zdmdcXVwvYWxlcnRcOmNvbC1zdGFydC0yOmlzKDp3aGVyZSguZ3JvdXBcL2FsZXJ0KTpoYXMoPnN2ZykgKil7Z3JpZC1jb2x1bW4tc3RhcnQ6Mn0uZ3JvdXAtYXJpYS1leHBhbmRlZFwvYWNjb3JkaW9uLXRyaWdnZXJcOmhpZGRlbjppcyg6d2hlcmUoLmdyb3VwXC9hY2NvcmRpb24tdHJpZ2dlcilbYXJpYS1leHBhbmRlZD10cnVlXSAqKXtkaXNwbGF5Om5vbmV9Lmdyb3VwLWFyaWEtZXhwYW5kZWRcL2FjY29yZGlvbi10cmlnZ2VyXDppbmxpbmU6aXMoOndoZXJlKC5ncm91cFwvYWNjb3JkaW9uLXRyaWdnZXIpW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0gKil7ZGlzcGxheTppbmxpbmV9Lmdyb3VwLWRhdGEtXFtzaXplXD1zbVxdXC9jYXJkXDpweC0zOmlzKDp3aGVyZSguZ3JvdXBcL2NhcmQpW2RhdGEtc2l6ZT1zbV0gKil7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5ncm91cC1kYXRhLVxbc2l6ZVw9c21cXVwvY2FyZFw6dGV4dC1zbTppcyg6d2hlcmUoLmdyb3VwXC9jYXJkKVtkYXRhLXNpemU9c21dICope2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6YmctdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKil7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZ3JvdXAtZGF0YS1ob3Jpem9udGFsXC90YWJzXDpoLTg6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICope2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6bWF4LXctZnVsbDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKil7bWF4LXdpZHRoOjEwMCV9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6ZmxleC1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKXtmbGV4Om5vbmV9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6anVzdGlmeS1zdGFydDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKil7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6b3ZlcmZsb3cteC1hdXRvOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKXtvdmVyZmxvdy14OmF1dG99Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6b3ZlcmZsb3cteS1oaWRkZW46aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICope292ZXJmbG93LXk6aGlkZGVufS5ncm91cC1kYXRhLXZlcnRpY2FsXC90YWJzXDpoLWZpdDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICope2hlaWdodDpmaXQtY29udGVudH0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6dy1mdWxsOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPXZlcnRpY2FsXSkgKil7d2lkdGg6MTAwJX0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6ZmxleC1jb2w6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmp1c3RpZnktc3RhcnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKXtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0uZmlsZVw6aW5saW5lLWZsZXg6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWZsZXh9LmZpbGVcOmgtNjo6ZmlsZS1zZWxlY3Rvci1idXR0b257aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0uZmlsZVw6Ym9yZGVyLTA6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDowfS5maWxlXDpiZy10cmFuc3BhcmVudDo6ZmlsZS1zZWxlY3Rvci1idXR0b257YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZmlsZVw6dGV4dC1zbTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0uZmlsZVw6Zm9udC1tZWRpdW06OmZpbGUtc2VsZWN0b3ItYnV0dG9uey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pfS5maWxlXDp0ZXh0LWZvcmVncm91bmQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2NvbG9yOnZhcigtLWZvcmVncm91bmQpfS5wbGFjZWhvbGRlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kOjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX0uYWZ0ZXJcOmFic29sdXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cG9zaXRpb246YWJzb2x1dGV9LmFmdGVyXDpib3R0b20tXFstNXB4XF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtib3R0b206LTVweH0uYWZ0ZXJcOmJnLWZvcmVncm91bmQ6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWZvcmVncm91bmQpfS5hZnRlclw6b3BhY2l0eS0wOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7b3BhY2l0eTowfS5hZnRlclw6dHJhbnNpdGlvbi1vcGFjaXR5OmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dHJhbnNpdGlvbi1wcm9wZXJ0eTpvcGFjaXR5O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6YWZ0ZXJcOmluc2V0LXgtMDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKik6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmU6MH0uZ3JvdXAtZGF0YS1ob3Jpem9udGFsXC90YWJzXDphZnRlclw6Ym90dG9tLVxbLTVweFxdOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2JvdHRvbTotNXB4fS5ncm91cC1kYXRhLWhvcml6b250YWxcL3RhYnNcOmFmdGVyXDpoLTBcLjU6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmFmdGVyXDppbnNldC15LTA6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWJsb2NrOjB9Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmFmdGVyXDotcmlnaHQtMTppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKX0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6YWZ0ZXJcOnctMFwuNTppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0ubGFzdFw6Ym9yZGVyLTA6bGFzdC1jaGlsZHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0ubGFzdFw6cGItMDpsYXN0LWNoaWxke3BhZGRpbmctYm90dG9tOjB9QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy1hY2NlbnQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1hY2NlbnQpfS5ob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzIwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLWRlc3RydWN0aXZlXC8yMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDIwJSwgdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLW11dGVkOmhvdmVyLC5ob3Zlclw6YmctbXV0ZWRcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLW11dGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQpIDUwJSwgdHJhbnNwYXJlbnQpfX0uaG92ZXJcOmJnLXNlY29uZGFyeVwvODA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1zZWNvbmRhcnkpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaG92ZXJcOmJnLXNlY29uZGFyeVwvODA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLXNlY29uZGFyeSkgODAlLCB0cmFuc3BhcmVudCl9fS5ob3Zlclw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjp2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCl9LmhvdmVyXDp0ZXh0LWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9LmhvdmVyXDp0ZXh0LW11dGVkLWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9LmhvdmVyXDp0ZXh0LXByaW1hcnk6aG92ZXJ7Y29sb3I6dmFyKC0tcHJpbWFyeSl9LmhvdmVyXDp1bmRlcmxpbmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5ob3Zlclw6b3BhY2l0eS05MDpob3ZlcntvcGFjaXR5Oi45fX0uZm9jdXNcOmJnLWFjY2VudDpmb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFjY2VudCl9LmZvY3VzXDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kOmZvY3VzLDppcygubm90LWRhdGEtXFt2YXJpYW50XD1kZXN0cnVjdGl2ZVxdXDpmb2N1c1w6XCpcKlw6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZDpub3QoW2RhdGEtdmFyaWFudD1kZXN0cnVjdGl2ZV0pOmZvY3VzICope2NvbG9yOnZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKX0uZm9jdXMtdmlzaWJsZVw6Ym9yZGVyLWRlc3RydWN0aXZlXC80MDpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzQwOmZvY3VzLXZpc2libGV7Ym9yZGVyLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDQwJSwgdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6Ym9yZGVyLXJpbmc6Zm9jdXMtdmlzaWJsZXtib3JkZXItY29sb3I6dmFyKC0tcmluZyl9LmZvY3VzLXZpc2libGVcOnJpbmctMjpmb2N1cy12aXNpYmxley0tdHctcmluZy1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCwpIDAgMCAwIGNhbGMoMnB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yLGN1cnJlbnRjb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLCB2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KX0uZm9jdXMtdmlzaWJsZVw6cmluZy0zOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygzcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLWRlc3RydWN0aXZlXC8yMDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpyaW5nLWRlc3RydWN0aXZlXC8yMDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAyMCUsIHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOnJpbmctcmluZ1wvNTA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tcmluZyl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5mb2N1cy12aXNpYmxlXDpyaW5nLXJpbmdcLzUwOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tcmluZykgNTAlLCB0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLTE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLXJpbmc6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lLWNvbG9yOnZhcigtLXJpbmcpfS5mb2N1cy12aXNpYmxlXDpvdXRsaW5lLW5vbmU6Zm9jdXMtdmlzaWJsZXstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LmZvY3VzLXZpc2libGVcOmFmdGVyXDpib3JkZXItcmluZzpmb2N1cy12aXNpYmxlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLWNvbG9yOnZhcigtLXJpbmcpfS5hY3RpdmVcOm5vdC1hcmlhLVxbaGFzcG9wdXBcXVw6dHJhbnNsYXRlLXktcHg6YWN0aXZlOm5vdChbYXJpYS1oYXNwb3B1cF0pey0tdHctdHJhbnNsYXRlLXk6MXB4O3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kaXNhYmxlZFw6cG9pbnRlci1ldmVudHMtbm9uZTpkaXNhYmxlZHtwb2ludGVyLWV2ZW50czpub25lfS5kaXNhYmxlZFw6Y3Vyc29yLW5vdC1hbGxvd2VkOmRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZH0uZGlzYWJsZWRcOmJnLWlucHV0XC81MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRpc2FibGVkXDpiZy1pbnB1dFwvNTA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWlucHV0KSA1MCUsIHRyYW5zcGFyZW50KX19LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9OndoZXJlKFtkYXRhLXNsb3Q9YnV0dG9uLWdyb3VwXSkgLmluLWRhdGEtXFtzbG90XD1idXR0b24tZ3JvdXBcXVw6cm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cyl9Lmhhcy1hcmlhLWV4cGFuZGVkXDpiZy1tdXRlZFwvNTA6aGFzKFthcmlhLWV4cGFuZGVkPXRydWVdKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW11dGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7Lmhhcy1hcmlhLWV4cGFuZGVkXDpiZy1tdXRlZFwvNTA6aGFzKFthcmlhLWV4cGFuZGVkPXRydWVdKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQpIDUwJSwgdHJhbnNwYXJlbnQpfX0uaGFzLWRhdGEtXFtpY29uXD1pbmxpbmUtZW5kXF1cOnByLTE6aGFzKFtkYXRhLWljb249aW5saW5lLWVuZF0pe3BhZGRpbmctcmlnaHQ6dmFyKC0tc3BhY2luZyl9Lmhhcy1kYXRhLVxbaWNvblw9aW5saW5lLWVuZFxdXDpwci0xXC41OmhhcyhbZGF0YS1pY29uPWlubGluZS1lbmRdKXtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5oYXMtZGF0YS1cW2ljb25cPWlubGluZS1lbmRcXVw6cHItMjpoYXMoW2RhdGEtaWNvbj1pbmxpbmUtZW5kXSl7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lmhhcy1kYXRhLVxbaWNvblw9aW5saW5lLXN0YXJ0XF1cOnBsLTE6aGFzKFtkYXRhLWljb249aW5saW5lLXN0YXJ0XSl7cGFkZGluZy1sZWZ0OnZhcigtLXNwYWNpbmcpfS5oYXMtZGF0YS1cW2ljb25cPWlubGluZS1zdGFydFxdXDpwbC0xXC41OmhhcyhbZGF0YS1pY29uPWlubGluZS1zdGFydF0pe3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0uaGFzLWRhdGEtXFtpY29uXD1pbmxpbmUtc3RhcnRcXVw6cGwtMjpoYXMoW2RhdGEtaWNvbj1pbmxpbmUtc3RhcnRdKXtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5oYXMtZGF0YS1cW3Nsb3RcPWFsZXJ0LWFjdGlvblxdXDpyZWxhdGl2ZTpoYXMoW2RhdGEtc2xvdD1hbGVydC1hY3Rpb25dKXtwb3NpdGlvbjpyZWxhdGl2ZX0uaGFzLWRhdGEtXFtzbG90XD1hbGVydC1hY3Rpb25cXVw6cHItMTg6aGFzKFtkYXRhLXNsb3Q9YWxlcnQtYWN0aW9uXSl7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTgpfS5oYXMtZGF0YS1cW3Nsb3RcPWNhcmQtYWN0aW9uXF1cOmdyaWQtY29scy1cWzFmcl9hdXRvXF06aGFzKFtkYXRhLXNsb3Q9Y2FyZC1hY3Rpb25dKXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIGF1dG99Lmhhcy1kYXRhLVxbc2xvdFw9Y2FyZC1kZXNjcmlwdGlvblxdXDpncmlkLXJvd3MtXFthdXRvX2F1dG9cXTpoYXMoW2RhdGEtc2xvdD1jYXJkLWRlc2NyaXB0aW9uXSl7Z3JpZC10ZW1wbGF0ZS1yb3dzOmF1dG8gYXV0b30uaGFzLWRhdGEtXFtzbG90XD1jYXJkLWZvb3RlclxdXDpwYi0wOmhhcyhbZGF0YS1zbG90PWNhcmQtZm9vdGVyXSl7cGFkZGluZy1ib3R0b206MH0uaGFzLVxbXD5pbWdcOmZpcnN0LWNoaWxkXF1cOnB0LTA6aGFzKD5pbWc6Zmlyc3QtY2hpbGQpe3BhZGRpbmctdG9wOjB9Lmhhcy1cW1w+c3ZnXF1cOmdyaWQtY29scy1cW2F1dG9fMWZyXF06aGFzKD5zdmcpe2dyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcn0uaGFzLVxbXD5zdmdcXVw6Z2FwLXgtMjpoYXMoPnN2Zyl7Y29sdW1uLWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LmFyaWEtZXhwYW5kZWRcOmJnLW11dGVkW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9LmFyaWEtZXhwYW5kZWRcOmJnLXNlY29uZGFyeVthcmlhLWV4cGFuZGVkPXRydWVde2JhY2tncm91bmQtY29sb3I6dmFyKC0tc2Vjb25kYXJ5KX0uYXJpYS1leHBhbmRlZFw6dGV4dC1mb3JlZ3JvdW5kW2FyaWEtZXhwYW5kZWQ9dHJ1ZV17Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9LmFyaWEtZXhwYW5kZWRcOnRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmRbYXJpYS1leHBhbmRlZD10cnVlXXtjb2xvcjp2YXIoLS1zZWNvbmRhcnktZm9yZWdyb3VuZCl9LmFyaWEtaW52YWxpZFw6Ym9yZGVyLWRlc3RydWN0aXZlW2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfS5hcmlhLWludmFsaWRcOnJpbmctM1thcmlhLWludmFsaWQ9dHJ1ZV17LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygzcHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5hcmlhLWludmFsaWRcOnJpbmctZGVzdHJ1Y3RpdmVcLzIwW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYXJpYS1pbnZhbGlkXDpyaW5nLWRlc3RydWN0aXZlXC8yMFthcmlhLWludmFsaWQ9dHJ1ZV17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDIwJSwgdHJhbnNwYXJlbnQpfX0uZGF0YS1wbGFjZWhvbGRlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kW2RhdGEtcGxhY2Vob2xkZXJde2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfS5kYXRhLVxbYWxpZ24tdHJpZ2dlclw9dHJ1ZVxdXDphbmltYXRlLW5vbmVbZGF0YS1hbGlnbi10cmlnZ2VyPXRydWVde2FuaW1hdGlvbjpub25lfS5kYXRhLVxbZGlzYWJsZWRcXVw6cG9pbnRlci1ldmVudHMtbm9uZVtkYXRhLWRpc2FibGVkXXtwb2ludGVyLWV2ZW50czpub25lfS5kYXRhLVxbZGlzYWJsZWRcXVw6b3BhY2l0eS01MFtkYXRhLWRpc2FibGVkXXtvcGFjaXR5Oi41fS5kYXRhLVxbcG9zaXRpb25cPXBvcHBlclxdXDpoLVwoLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodFwpW2RhdGEtcG9zaXRpb249cG9wcGVyXXtoZWlnaHQ6dmFyKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpfS5kYXRhLVxbcG9zaXRpb25cPXBvcHBlclxdXDp3LWZ1bGxbZGF0YS1wb3NpdGlvbj1wb3BwZXJde3dpZHRoOjEwMCV9LmRhdGEtXFtwb3NpdGlvblw9cG9wcGVyXF1cOm1pbi13LVwoLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoXClbZGF0YS1wb3NpdGlvbj1wb3BwZXJde21pbi13aWR0aDp2YXIoLS1yZWthLXNlbGVjdC10cmlnZ2VyLXdpZHRoKX0uZGF0YS1cW3NpZGVcPWJvdHRvbVxdXDp0cmFuc2xhdGUteS0xW2RhdGEtc2lkZT1ib3R0b21dey0tdHctdHJhbnNsYXRlLXk6dmFyKC0tc3BhY2luZyk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRhdGEtXFtzaWRlXD1ib3R0b21cXVw6c2xpZGUtaW4tZnJvbS10b3AtMltkYXRhLXNpZGU9Ym90dG9tXXstLXR3LWVudGVyLXRyYW5zbGF0ZS15OmNhbGMoMip2YXIoLS1zcGFjaW5nKSotMSl9LmRhdGEtXFtzaWRlXD1pbmxpbmUtZW5kXF1cOnNsaWRlLWluLWZyb20tbGVmdC0yW2RhdGEtc2lkZT1pbmxpbmUtZW5kXXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OmNhbGMoMip2YXIoLS1zcGFjaW5nKSotMSl9LmRhdGEtXFtzaWRlXD1pbmxpbmUtc3RhcnRcXVw6c2xpZGUtaW4tZnJvbS1yaWdodC0yW2RhdGEtc2lkZT1pbmxpbmUtc3RhcnRdey0tdHctZW50ZXItdHJhbnNsYXRlLXg6Y2FsYygyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW3NpZGVcPWxlZnRcXVw6LXRyYW5zbGF0ZS14LTFbZGF0YS1zaWRlPWxlZnRdey0tdHctdHJhbnNsYXRlLXg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPWxlZnRcXVw6c2xpZGUtaW4tZnJvbS1yaWdodC0yW2RhdGEtc2lkZT1sZWZ0XXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OmNhbGMoMip2YXIoLS1zcGFjaW5nKSl9LmRhdGEtXFtzaWRlXD1yaWdodFxdXDp0cmFuc2xhdGUteC0xW2RhdGEtc2lkZT1yaWdodF17LS10dy10cmFuc2xhdGUteDp2YXIoLS1zcGFjaW5nKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPXJpZ2h0XF1cOnNsaWRlLWluLWZyb20tbGVmdC0yW2RhdGEtc2lkZT1yaWdodF17LS10dy1lbnRlci10cmFuc2xhdGUteDpjYWxjKDIqdmFyKC0tc3BhY2luZykqLTEpfS5kYXRhLVxbc2lkZVw9dG9wXF1cOi10cmFuc2xhdGUteS0xW2RhdGEtc2lkZT10b3Bdey0tdHctdHJhbnNsYXRlLXk6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPXRvcFxdXDpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yW2RhdGEtc2lkZT10b3Bdey0tdHctZW50ZXItdHJhbnNsYXRlLXk6Y2FsYygyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW3NpemVcPWRlZmF1bHRcXVw6aC04W2RhdGEtc2l6ZT1kZWZhdWx0XXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS5kYXRhLVxbc2l6ZVw9c21cXVw6aC03W2RhdGEtc2l6ZT1zbV17aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA3KX0uZGF0YS1cW3NpemVcPXNtXF1cOmdhcC0zW2RhdGEtc2l6ZT1zbV17Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uZGF0YS1cW3NpemVcPXNtXF1cOnJvdW5kZWQtXFttaW5cKHZhclwoLS1yYWRpdXMtbWRcKVwsMTBweFwpXF1bZGF0YS1zaXplPXNtXXtib3JkZXItcmFkaXVzOm1pbih2YXIoLS1yYWRpdXMtbWQpLCAxMHB4KX0uZGF0YS1cW3NpemVcPXNtXF1cOnB5LTNbZGF0YS1zaXplPXNtXXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uZGF0YS1cW3NpemVcPXNtXF1cOmhhcy1kYXRhLVxbc2xvdFw9Y2FyZC1mb290ZXJcXVw6cGItMFtkYXRhLXNpemU9c21dOmhhcyhbZGF0YS1zbG90PWNhcmQtZm9vdGVyXSl7cGFkZGluZy1ib3R0b206MH06aXMoLlwqXCpcOmRhdGEtXFtzbG90XD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXF1cOm1sLWF1dG8gKilbZGF0YS1zbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25de21hcmdpbi1sZWZ0OmF1dG99OmlzKC5cKlwqXDpkYXRhLVxbc2xvdFw9YWNjb3JkaW9uLXRyaWdnZXItaWNvblxdXDpzaXplLTQgKilbZGF0YS1zbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25de3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfTppcyguXCpcKlw6ZGF0YS1cW3Nsb3RcPWFjY29yZGlvbi10cmlnZ2VyLWljb25cXVw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kICopW2RhdGEtc2xvdD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXXtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX06aXMoLlwqXDpkYXRhLVxbc2xvdFw9YWxlcnQtZGVzY3JpcHRpb25cXVw6dGV4dC1kZXN0cnVjdGl2ZVwvOTA+KilbZGF0YS1zbG90PWFsZXJ0LWRlc2NyaXB0aW9uXXtjb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezppcyguXCpcOmRhdGEtXFtzbG90XD1hbGVydC1kZXNjcmlwdGlvblxdXDp0ZXh0LWRlc3RydWN0aXZlXC85MD4qKVtkYXRhLXNsb3Q9YWxlcnQtZGVzY3JpcHRpb25de2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDkwJSwgdHJhbnNwYXJlbnQpfX06aXMoLlwqXDpkYXRhLVxbc2xvdFw9YWxlcnQtZGVzY3JpcHRpb25cXVw6dGV4dC1zdGF0dXMtd2FyblwvOTA+KilbZGF0YS1zbG90PWFsZXJ0LWRlc2NyaXB0aW9uXXtjb2xvcjp2YXIoLS1zdGF0dXMtd2Fybil9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezppcyguXCpcOmRhdGEtXFtzbG90XD1hbGVydC1kZXNjcmlwdGlvblxdXDp0ZXh0LXN0YXR1cy13YXJuXC85MD4qKVtkYXRhLXNsb3Q9YWxlcnQtZGVzY3JpcHRpb25de2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tc3RhdHVzLXdhcm4pIDkwJSwgdHJhbnNwYXJlbnQpfX06aXMoLlwqXDpkYXRhLVxbc2xvdFw9c2VsZWN0LXZhbHVlXF1cOmxpbmUtY2xhbXAtMT4qKVtkYXRhLXNsb3Q9c2VsZWN0LXZhbHVlXXstd2Via2l0LWxpbmUtY2xhbXA6MTstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7ZGlzcGxheTotd2Via2l0LWJveDtvdmVyZmxvdzpoaWRkZW59OmlzKC5cKlw6ZGF0YS1cW3Nsb3RcPXNlbGVjdC12YWx1ZVxdXDpmbGV4PiopW2RhdGEtc2xvdD1zZWxlY3QtdmFsdWVde2Rpc3BsYXk6ZmxleH06aXMoLlwqXDpkYXRhLVxbc2xvdFw9c2VsZWN0LXZhbHVlXF1cOml0ZW1zLWNlbnRlcj4qKVtkYXRhLXNsb3Q9c2VsZWN0LXZhbHVlXXthbGlnbi1pdGVtczpjZW50ZXJ9OmlzKC5cKlw6ZGF0YS1cW3Nsb3RcPXNlbGVjdC12YWx1ZVxdXDpnYXAtMVwuNT4qKVtkYXRhLXNsb3Q9c2VsZWN0LXZhbHVlXXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmRhdGEtXFtzdGF0ZVw9c2VsZWN0ZWRcXVw6YmctbXV0ZWRbZGF0YS1zdGF0ZT1zZWxlY3RlZF17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9LmRhdGEtXFt2YXJpYW50XD1saW5lXF1cOnJvdW5kZWQtbm9uZVtkYXRhLXZhcmlhbnQ9bGluZV17Ym9yZGVyLXJhZGl1czowfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5tb3Rpb24tcmVkdWNlXDphbmltYXRlLW5vbmV7YW5pbWF0aW9uOm5vbmV9Lm1vdGlvbi1yZWR1Y2VcOnRyYW5zaXRpb24tbm9uZXt0cmFuc2l0aW9uLXByb3BlcnR5Om5vbmV9fUBtZWRpYSAod2lkdGg+PTQwcmVtKXsuc21cOmluc2V0LXgtYXV0b3tpbnNldC1pbmxpbmU6YXV0b30uc21cOnJpZ2h0LTR7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5zbVw6Ym90dG9tLTR7Ym90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uc21cOnctOTZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDk2KX0uc21cOmdyaWQtY29scy0ye2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMixtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy0ze2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMyxtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy00e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCxtaW5tYXgoMCwxZnIpKX0uc21cOmdyaWQtY29scy01e2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNSxtaW5tYXgoMCwxZnIpKX0uc21cOmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30uc21cOml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9LnNtXDppdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9LnNtXDppdGVtcy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5zbVw6anVzdGlmeS1iZXR3ZWVue2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVufS5zbVw6cHgtNntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9fUBtZWRpYSAod2lkdGg+PTQ4cmVtKXsubWRcOnctNTJ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUyKX0ubWRcOnctZnVsbHt3aWR0aDoxMDAlfS5tZFw6c2hyaW5rLTB7ZmxleC1zaHJpbms6MH0ubWRcOmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0ubWRcOmZsZXgtcm93e2ZsZXgtZGlyZWN0aW9uOnJvd30ubWRcOmJvcmRlci1ye2JvcmRlci1yaWdodC1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1yaWdodC13aWR0aDoxcHh9Lm1kXDpib3JkZXItYi0we2JvcmRlci1ib3R0b20tc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItYm90dG9tLXdpZHRoOjB9Lm1kXDpwci0ze3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5tZFw6cGItMHtwYWRkaW5nLWJvdHRvbTowfS5tZFw6dGV4dC1zbXtmb250LXNpemU6dmFyKC0tdGV4dC1zbSk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXNtLS1saW5lLWhlaWdodCkpfS5tZFw6dGV4dC1wcmV0dHl7dGV4dC13cmFwOnByZXR0eX19QG1lZGlhICh3aWR0aD49NjRyZW0pey5sZ1w6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5sZ1w6Z3JpZC1jb2xzLTR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpfS5sZ1w6cHgtOHtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9fUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcOmJvcmRlci1pbnB1dHtib3JkZXItY29sb3I6dmFyKC0taW5wdXQpfS5kYXJrXDpiZy1kZXN0cnVjdGl2ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpiZy1kZXN0cnVjdGl2ZVwvMjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAyMCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmJnLWlucHV0XC8zMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRhcmtcOmJnLWlucHV0XC8zMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDMwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6dGV4dC1tdXRlZC1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5kYXJrXDpob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzMwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6aG92ZXJcOmJnLWRlc3RydWN0aXZlXC8zMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDMwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6aG92ZXJcOmJnLWlucHV0XC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWlucHV0KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRhcmtcOmhvdmVyXDpiZy1pbnB1dFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWlucHV0KSA1MCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmhvdmVyXDpiZy1tdXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpob3Zlclw6YmctbXV0ZWRcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZCkgNTAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDpob3Zlclw6dGV4dC1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOnZhcigtLWZvcmVncm91bmQpfX0uZGFya1w6Zm9jdXMtdmlzaWJsZVw6cmluZy1kZXN0cnVjdGl2ZVwvNDA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6Zm9jdXMtdmlzaWJsZVw6cmluZy1kZXN0cnVjdGl2ZVwvNDA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgNDAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDpkaXNhYmxlZFw6YmctaW5wdXRcLzgwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6ZGlzYWJsZWRcOmJnLWlucHV0XC84MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDgwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6YXJpYS1pbnZhbGlkXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzUwW2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6YXJpYS1pbnZhbGlkXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzUwW2FyaWEtaW52YWxpZD10cnVlXXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgNTAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDphcmlhLWludmFsaWRcOnJpbmctZGVzdHJ1Y3RpdmVcLzQwW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6YXJpYS1pbnZhbGlkXDpyaW5nLWRlc3RydWN0aXZlXC80MFthcmlhLWludmFsaWQ9dHJ1ZV17LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDQwJSwgdHJhbnNwYXJlbnQpfX19LmRhdGEtb3Blblw6YW5pbWF0ZS1hY2NvcmRpb24tZG93bjp3aGVyZShbZGF0YS1zdGF0ZT1vcGVuXSksLmRhdGEtb3Blblw6YW5pbWF0ZS1hY2NvcmRpb24tZG93bjp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXthbmltYXRpb246YWNjb3JkaW9uLWRvd24gdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4ycykpdmFyKC0tdHctZWFzZSxlYXNlLW91dCl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtb3Blblw6YW5pbWF0ZS1pbjp3aGVyZShbZGF0YS1zdGF0ZT1vcGVuXSksLmRhdGEtb3Blblw6YW5pbWF0ZS1pbjp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXthbmltYXRpb246ZW50ZXIgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4xNXMpKXZhcigtLXR3LWVhc2UsZWFzZSl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtb3Blblw6ZmFkZS1pbi0wOndoZXJlKFtkYXRhLXN0YXRlPW9wZW5dKSwuZGF0YS1vcGVuXDpmYWRlLWluLTA6d2hlcmUoW2RhdGEtb3Blbl06bm90KFtkYXRhLW9wZW49ZmFsc2VdKSl7LS10dy1lbnRlci1vcGFjaXR5OjB9LmRhdGEtb3Blblw6em9vbS1pbi05NTp3aGVyZShbZGF0YS1zdGF0ZT1vcGVuXSksLmRhdGEtb3Blblw6em9vbS1pbi05NTp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXstLXR3LWVudGVyLXNjYWxlOi45NX0uZGF0YS1jbG9zZWRcOmFuaW1hdGUtYWNjb3JkaW9uLXVwOndoZXJlKFtkYXRhLXN0YXRlPWNsb3NlZF0pLC5kYXRhLWNsb3NlZFw6YW5pbWF0ZS1hY2NvcmRpb24tdXA6d2hlcmUoW2RhdGEtY2xvc2VkXTpub3QoW2RhdGEtY2xvc2VkPWZhbHNlXSkpe2FuaW1hdGlvbjphY2NvcmRpb24tdXAgdmFyKC0tdHctYW5pbWF0aW9uLWR1cmF0aW9uLHZhcigtLXR3LWR1cmF0aW9uLC4ycykpdmFyKC0tdHctZWFzZSxlYXNlLW91dCl2YXIoLS10dy1hbmltYXRpb24tZGVsYXksMHMpdmFyKC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwxKXZhcigtLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb24sbm9ybWFsKXZhcigtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGUsbm9uZSl9LmRhdGEtY2xvc2VkXDphbmltYXRlLW91dDp3aGVyZShbZGF0YS1zdGF0ZT1jbG9zZWRdKSwuZGF0YS1jbG9zZWRcOmFuaW1hdGUtb3V0OndoZXJlKFtkYXRhLWNsb3NlZF06bm90KFtkYXRhLWNsb3NlZD1mYWxzZV0pKXthbmltYXRpb246ZXhpdCB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjE1cykpdmFyKC0tdHctZWFzZSxlYXNlKXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1jbG9zZWRcOmZhZGUtb3V0LTA6d2hlcmUoW2RhdGEtc3RhdGU9Y2xvc2VkXSksLmRhdGEtY2xvc2VkXDpmYWRlLW91dC0wOndoZXJlKFtkYXRhLWNsb3NlZF06bm90KFtkYXRhLWNsb3NlZD1mYWxzZV0pKXstLXR3LWV4aXQtb3BhY2l0eTowfS5kYXRhLWNsb3NlZFw6em9vbS1vdXQtOTU6d2hlcmUoW2RhdGEtc3RhdGU9Y2xvc2VkXSksLmRhdGEtY2xvc2VkXDp6b29tLW91dC05NTp3aGVyZShbZGF0YS1jbG9zZWRdOm5vdChbZGF0YS1jbG9zZWQ9ZmFsc2VdKSl7LS10dy1leGl0LXNjYWxlOi45NX0uZGF0YS1hY3RpdmVcOmJnLWJhY2tncm91bmQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhdGEtYWN0aXZlXDpiZy1iYWNrZ3JvdW5kOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhY2tncm91bmQpfS5kYXRhLWFjdGl2ZVw6dGV4dC1mb3JlZ3JvdW5kOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5kYXRhLWFjdGl2ZVw6dGV4dC1mb3JlZ3JvdW5kOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX0uZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWRlZmF1bHRcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6c2hhZG93LXNtOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWRlZmF1bHRdICopOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5ncm91cC1kYXRhLVxbdmFyaWFudFw9ZGVmYXVsdFxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpzaGFkb3ctc206aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9ZGVmYXVsdF0gKik6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpey0tdHctc2hhZG93OjAgMXB4IDNweCAwIHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpLCAwIDFweCAycHggLTFweCB2YXIoLS10dy1zaGFkb3ctY29sb3IsIzAwMDAwMDFhKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6YmctdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6IzAwMDB9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOnNoYWRvdy1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpzaGFkb3ctbm9uZTppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7LS10dy1zaGFkb3c6MCAwICMwMDAwO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9OmlzKC5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDphZnRlclw6b3BhY2l0eS0xMDA6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmFmdGVyXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSkpOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7b3BhY2l0eToxfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcOmRhdGEtYWN0aXZlXDpib3JkZXItaW5wdXQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmRhdGEtYWN0aXZlXDpib3JkZXItaW5wdXQ6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JvcmRlci1jb2xvcjp2YXIoLS1pbnB1dCl9LmRhcmtcOmRhdGEtYWN0aXZlXDpiZy1pbnB1dFwvMzA6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmRhdGEtYWN0aXZlXDpiZy1pbnB1dFwvMzA6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6ZGF0YS1hY3RpdmVcOmJnLWlucHV0XC8zMDp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6ZGF0YS1hY3RpdmVcOmJnLWlucHV0XC8zMDp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWlucHV0KSAzMCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmRhdGEtYWN0aXZlXDp0ZXh0LWZvcmVncm91bmQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmRhdGEtYWN0aXZlXDp0ZXh0LWZvcmVncm91bmQ6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2NvbG9yOnZhcigtLWZvcmVncm91bmQpfS5kYXJrXDpncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpib3JkZXItdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhcmtcOmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmJvcmRlci10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7Ym9yZGVyLWNvbG9yOiMwMDAwfS5kYXJrXDpncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6Z3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6YmctdHJhbnNwYXJlbnQ6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6IzAwMDB9fS5kYXRhLWhvcml6b250YWxcOmZsZXgtY29sOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKXtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LlxbXCZfYVxdXDp1bmRlcmxpbmUgYXt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LlxbXCZfYVxdXDp1bmRlcmxpbmUtb2Zmc2V0LTMgYXt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4fUBtZWRpYSAoaG92ZXI6aG92ZXIpey5cW1wmX2FcXVw6aG92ZXJcOnRleHQtZm9yZWdyb3VuZCBhOmhvdmVye2NvbG9yOnZhcigtLWZvcmVncm91bmQpfX0uXFtcJl9wXDpub3RcKFw6bGFzdC1jaGlsZFwpXF1cOm1iLTQgcDpub3QoOmxhc3QtY2hpbGQpe21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5cW1wmX3N2Z1xdXDpwb2ludGVyLWV2ZW50cy1ub25lIHN2Z3twb2ludGVyLWV2ZW50czpub25lfS5cW1wmX3N2Z1xdXDpzaHJpbmstMCBzdmd7ZmxleC1zaHJpbms6MH0uXFtcJl9zdmdcOm5vdFwoXFtjbGFzc1wqXD1zaXplLVxdXClcXVw6c2l6ZS0zIHN2Zzpub3QoW2NsYXNzKj1zaXplLV0pe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5cW1wmX3N2Z1w6bm90XChcW2NsYXNzXCpcPXNpemUtXF1cKVxdXDpzaXplLTNcLjUgc3ZnOm5vdChbY2xhc3MqPXNpemUtXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS5cW1wmX3N2Z1w6bm90XChcW2NsYXNzXCpcPXNpemUtXF1cKVxdXDpzaXplLTQgc3ZnOm5vdChbY2xhc3MqPXNpemUtXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LlxbXCZfdHJcXVw6Ym9yZGVyLWIgdHJ7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5cW1wmX3RyXDpsYXN0LWNoaWxkXF1cOmJvcmRlci0wIHRyOmxhc3QtY2hpbGR7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjB9LlxbXCZcOmhhc1woXFtyb2xlXD1jaGVja2JveFxdXClcXVw6cHItMDpoYXMoW3JvbGU9Y2hlY2tib3hdKXtwYWRkaW5nLXJpZ2h0OjB9LlxbXC5ib3JkZXItYlxdXDpwYi00LmJvcmRlci1ie3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uZ3JvdXAtZGF0YS1cW3NpemVcPXNtXF1cL2NhcmRcOlxbXC5ib3JkZXItYlxdXDpwYi0zOmlzKDp3aGVyZSguZ3JvdXBcL2NhcmQpW2RhdGEtc2l6ZT1zbV0gKikuYm9yZGVyLWJ7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfUBtZWRpYSAoaG92ZXI6aG92ZXIpey5cW2FcXVw6aG92ZXJcOmJnLWRlc3RydWN0aXZlXC8yMDppcyhhKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbYVxdXDpob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzIwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgMjAlLCB0cmFuc3BhcmVudCl9fS5cW2FcXVw6aG92ZXJcOmJnLW11dGVkOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfS5cW2FcXVw6aG92ZXJcOmJnLXByaW1hcnlcLzgwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tcHJpbWFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5cW2FcXVw6aG92ZXJcOmJnLXByaW1hcnlcLzgwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1wcmltYXJ5KSA4MCUsIHRyYW5zcGFyZW50KX19LlxbYVxdXDpob3Zlclw6Ymctc2Vjb25kYXJ5XC84MDppcyhhKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5cW2FcXVw6aG92ZXJcOmJnLXNlY29uZGFyeVwvODA6aXMoYSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLXNlY29uZGFyeSkgODAlLCB0cmFuc3BhcmVudCl9fS5cW2FcXVw6aG92ZXJcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZDppcyhhKTpob3Zlcntjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX19OmlzKC5cKlw6XFtpbWdcOmZpcnN0LWNoaWxkXF1cOnJvdW5kZWQtdC14bD4qKTppcyhpbWc6Zmlyc3QtY2hpbGQpe2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgKyA0cHgpfTppcyguXCpcOlxbaW1nXDpsYXN0LWNoaWxkXF1cOnJvdW5kZWQtYi14bD4qKTppcyhpbWc6bGFzdC1jaGlsZCl7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KTtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9OmlzKC5cKlw6XFtzcGFuXF1cOmxhc3RcOmZsZXg+Kik6aXMoc3Bhbik6bGFzdC1jaGlsZHtkaXNwbGF5OmZsZXh9OmlzKC5cKlw6XFtzcGFuXF1cOmxhc3RcOml0ZW1zLWNlbnRlcj4qKTppcyhzcGFuKTpsYXN0LWNoaWxke2FsaWduLWl0ZW1zOmNlbnRlcn06aXMoLlwqXDpcW3NwYW5cXVw6bGFzdFw6Z2FwLTI+Kik6aXMoc3Bhbik6bGFzdC1jaGlsZHtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfTppcyguXCpcOlxbc3ZnXF1cOnJvdy1zcGFuLTI+Kik6aXMoc3ZnKXtncmlkLXJvdzpzcGFuIDIvc3BhbiAyfTppcyguXCpcOlxbc3ZnXF1cOnRyYW5zbGF0ZS15LTBcLjU+Kik6aXMoc3ZnKXstLXR3LXRyYW5zbGF0ZS15OmNhbGModmFyKC0tc3BhY2luZykgKiAuNSk7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9OmlzKC5cKlw6XFtzdmdcXVw6dGV4dC1jdXJyZW50PiopOmlzKHN2Zyl7Y29sb3I6Y3VycmVudENvbG9yfTppcyguXCpcOlxbc3ZnXDpub3RcKFxbY2xhc3NcKlw9c2l6ZS1cXVwpXF1cOnNpemUtND4qKTppcyhzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LlxbXCZcPnN2Z1xdXDpwb2ludGVyLWV2ZW50cy1ub25lPnN2Z3twb2ludGVyLWV2ZW50czpub25lfS5cW1wmXD5zdmdcXVw6c2l6ZS0zXCE+c3Zne3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzKSFpbXBvcnRhbnQ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKSFpbXBvcnRhbnR9fUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1kZWxheXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MHN9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6bm9ybWFsfUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWFuaW1hdGlvbi1maWxsLW1vZGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOm5vbmV9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1lbnRlci1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZW50ZXItcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWVudGVyLXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1leGl0LW9wYWNpdHl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZXhpdC1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZXhpdC1zY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1leGl0LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtdHJhbnNsYXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tc2Nyb2xsLWZhZGUtdHtzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS1zY3JvbGwtZmFkZS1ie3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXNjcm9sbC1mYWRlLXN7c3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tc2Nyb2xsLWZhZGUtZXtzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS1zY3JvbGwtZmFkZS1tYXNre3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tc2hpbW1lci1hbmdsZXtzeW50YXg6IjxhbmdsZT4iO2luaGVyaXRzOnRydWU7aW5pdGlhbC12YWx1ZToyMGRlZ31AcHJvcGVydHkgLS1zaGltbWVyLWltYWdle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tc2hpbW1lci10ZXh0LWZpbGx7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuc2hpbW1lcnstd2Via2l0LXRleHQtZmlsbC1jb2xvcjpjdXJyZW50Q29sb3I7YmFja2dyb3VuZC1pbWFnZTpub25lO2FuaW1hdGlvbjpub25lfX06cm9vdHstLWJhY2tncm91bmQ6b2tsY2goOTklIC4wMDQgNzUpOy0tZm9yZWdyb3VuZDpva2xjaCgxOSUgLjAxMiA3NSk7LS1jYXJkOm9rbGNoKDk5LjUlIC4wMDMgNzUpOy0tY2FyZC1mb3JlZ3JvdW5kOm9rbGNoKDE5JSAuMDEyIDc1KTstLXBvcG92ZXI6b2tsY2goOTkuNSUgLjAwMyA3NSk7LS1wb3BvdmVyLWZvcmVncm91bmQ6b2tsY2goMTklIC4wMTIgNzUpOy0tcHJpbWFyeTpva2xjaCg0NiUgLjA5IDIwMCk7LS1wcmltYXJ5LWZvcmVncm91bmQ6b2tsY2goOTglIC4wMDYgMjAwKTstLXNlY29uZGFyeTpva2xjaCg5NSUgLjAwNiA3NSk7LS1zZWNvbmRhcnktZm9yZWdyb3VuZDpva2xjaCgyMiUgLjAxIDc1KTstLW11dGVkOm9rbGNoKDk1JSAuMDA2IDc1KTstLW11dGVkLWZvcmVncm91bmQ6b2tsY2goNDglIC4wMTIgNzUpOy0tYWNjZW50Om9rbGNoKDkzJSAuMDIgMjAwKTstLWFjY2VudC1mb3JlZ3JvdW5kOm9rbGNoKDI4JSAuMDUgMjAwKTstLWRlc3RydWN0aXZlOm9rbGNoKDU1JSAuMiAyNSk7LS1ib3JkZXI6b2tsY2goOTAlIC4wMDcgNzUpOy0taW5wdXQ6b2tsY2goOTAlIC4wMDcgNzUpOy0tcmluZzpva2xjaCg1NSUgLjA5IDIwMCk7LS1yYWRpdXM6LjM3NXJlbTstLWNoYXJ0LXJlcXVlc3RzOiMwMDllNzM7LS1jaGFydC10b2tlbnMtaW46IzAwNzJiMjstLWNoYXJ0LXRva2Vucy1vdXQ6I2U2OWYwMDstLWNoYXJ0LWNvc3Q6I2Q1NWUwMDstLWNoYXJ0LXNlcmllcy1hOiM1NmI0ZTk7LS1jaGFydC1zZXJpZXMtYjojOGE2ZDAwOy0tY2hhcnQtc2VyaWVzLWM6I2NjNzlhNzstLWNoYXJ0LXNlcmllcy1kOiM0ZDRkNGQ7LS1zdGF0dXMtd2FybjojYTM1YzAwOy0tYmFyLWFtYmVyOiNhMzVjMDB9QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXs6cm9vdHstLWJhY2tncm91bmQ6b2tsY2goMTclIC4wMDcgNzUpOy0tZm9yZWdyb3VuZDpva2xjaCg5NSUgLjAwNSA3NSk7LS1jYXJkOm9rbGNoKDIxJSAuMDA5IDc1KTstLWNhcmQtZm9yZWdyb3VuZDpva2xjaCg5NSUgLjAwNSA3NSk7LS1wb3BvdmVyOm9rbGNoKDIxJSAuMDA5IDc1KTstLXBvcG92ZXItZm9yZWdyb3VuZDpva2xjaCg5NSUgLjAwNSA3NSk7LS1wcmltYXJ5Om9rbGNoKDc0JSAuMTEgMjAwKTstLXByaW1hcnktZm9yZWdyb3VuZDpva2xjaCgxNiUgLjAxMiAyMDApOy0tc2Vjb25kYXJ5Om9rbGNoKDI3JSAuMDExIDc1KTstLXNlY29uZGFyeS1mb3JlZ3JvdW5kOm9rbGNoKDkzJSAuMDA1IDc1KTstLW11dGVkOm9rbGNoKDI3JSAuMDExIDc1KTstLW11dGVkLWZvcmVncm91bmQ6b2tsY2goNjglIC4wMTIgNzUpOy0tYWNjZW50Om9rbGNoKDMyJSAuMDM1IDIwMCk7LS1hY2NlbnQtZm9yZWdyb3VuZDpva2xjaCg5MSUgLjAzIDIwMCk7LS1kZXN0cnVjdGl2ZTpva2xjaCg2OCUgLjE5IDI1KTstLWJvcmRlcjpva2xjaCgxMDAlIDAgMC8uMTIpOy0taW5wdXQ6b2tsY2goMTAwJSAwIDAvLjE2KTstLXJpbmc6b2tsY2goNjIlIC4xIDIwMCk7LS1jaGFydC1yZXF1ZXN0czojMTZiODkxOy0tY2hhcnQtdG9rZW5zLWluOiM0MDk4ZDc7LS1jaGFydC10b2tlbnMtb3V0OiNmMGFjMWY7LS1jaGFydC1jb3N0OiNlODc2M2E7LS1jaGFydC1zZXJpZXMtYTojNTZiNGU5Oy0tY2hhcnQtc2VyaWVzLWI6I2YwZTQ0MjstLWNoYXJ0LXNlcmllcy1jOiNjYzc5YTc7LS1jaGFydC1zZXJpZXMtZDojYjhiOGI4Oy0tc3RhdHVzLXdhcm46I2YwYWMxZjstLWJhci1hbWJlcjojZjBhYzFmfX1AcHJvcGVydHkgLS10dy10cmFuc2xhdGUteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy10cmFuc2xhdGUteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy10cmFuc2xhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1yb3RhdGUteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXp7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1za2V3LXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1za2V3LXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zcGFjZS15LXJldmVyc2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctYm9yZGVyLXN0eWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTpzb2xpZH1AcHJvcGVydHkgLS10dy1sZWFkaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZm9udC13ZWlnaHR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy10cmFja2luZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW9yZGluYWx7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zbGFzaGVkLXplcm97c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1udW1lcmljLWZpZ3VyZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtc3BhY2luZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtZnJhY3Rpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1yaW5nLWluc2V0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtd2lkdGh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojZmZmfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LW91dGxpbmUtc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1zaXple3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHVyYXRpb257c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1lYXNle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udGVudHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6IiJ9QGtleWZyYW1lcyBzcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMzYwZGVnKX19QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19QGtleWZyYW1lcyBlbnRlcnswJXtvcGFjaXR5OnZhcigtLXR3LWVudGVyLW9wYWNpdHksMSk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKHZhcigtLXR3LWVudGVyLXRyYW5zbGF0ZS14LDApLHZhcigtLXR3LWVudGVyLXRyYW5zbGF0ZS15LDApLDApc2NhbGUzZCh2YXIoLS10dy1lbnRlci1zY2FsZSwxKSx2YXIoLS10dy1lbnRlci1zY2FsZSwxKSx2YXIoLS10dy1lbnRlci1zY2FsZSwxKSlyb3RhdGUodmFyKC0tdHctZW50ZXItcm90YXRlLDApKTtmaWx0ZXI6Ymx1cih2YXIoLS10dy1lbnRlci1ibHVyLDApKX19QGtleWZyYW1lcyBleGl0e3Rve29wYWNpdHk6dmFyKC0tdHctZXhpdC1vcGFjaXR5LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS10dy1leGl0LXRyYW5zbGF0ZS14LDApLHZhcigtLXR3LWV4aXQtdHJhbnNsYXRlLXksMCksMClzY2FsZTNkKHZhcigtLXR3LWV4aXQtc2NhbGUsMSksdmFyKC0tdHctZXhpdC1zY2FsZSwxKSx2YXIoLS10dy1leGl0LXNjYWxlLDEpKXJvdGF0ZSh2YXIoLS10dy1leGl0LXJvdGF0ZSwwKSk7ZmlsdGVyOmJsdXIodmFyKC0tdHctZXhpdC1ibHVyLDApKX19QGtleWZyYW1lcyBhY2NvcmRpb24tZG93bnswJXtoZWlnaHQ6MH10b3toZWlnaHQ6dmFyKC0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsdmFyKC0tYWNjb3JkaW9uLXBhbmVsLWhlaWdodCxhdXRvKSl9fUBrZXlmcmFtZXMgYWNjb3JkaW9uLXVwezAle2hlaWdodDp2YXIoLS1yZWthLWFjY29yZGlvbi1jb250ZW50LWhlaWdodCx2YXIoLS1hY2NvcmRpb24tcGFuZWwtaGVpZ2h0LGF1dG8pKX10b3toZWlnaHQ6MH19Cg==",
),
},
"kpi-P08UvrKi.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e2IgYXMgZX1mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHtpIGFzIHR9ZnJvbSIuL3VzYWdlLWJhcnMtQkpPWUhzdVIuanMiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4hTnVtYmVyLmlzRmluaXRlKGUpfHxlPD0wP251bGw6KGUtKE51bWJlci5pc0Zpbml0ZSh0KT90OjApKS9lfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGU9PT1udWxsP2Buby10cmFmZmljYDplPC45P2BzZXZlcmVgOmU8Ljk5P2BkZWdyYWRlZGA6YGhlYWx0aHlgfWZ1bmN0aW9uIGkoZSx0KXtsZXQgcj1uKGUsdCk7cmV0dXJuIHIhPT1udWxsJiZyPC45OX1mdW5jdGlvbiBhKGUpe3JldHVybiBlPj0xP2AxMDAlYDpgJHtNYXRoLmZsb29yKGUqMTAwKX0lYH1mdW5jdGlvbiBvKGUsdCl7cmV0dXJuIU51bWJlci5pc0Zpbml0ZShlKXx8ZTw9MD9udWxsOihOdW1iZXIuaXNGaW5pdGUodCk/dDowKS9lfWZ1bmN0aW9uIHMoZSx0PWBubyBkYXRhYCl7cmV0dXJuIGU9PT1udWxsP3Q6ZTw9MD9gMCVgOmAke01hdGguY2VpbChlKjEwMCl9JWB9ZnVuY3Rpb24gYyhlLHQsbil7cmV0dXJuIGU9PT0xP3Q6bn1mdW5jdGlvbiBsKGUsdCl7aWYoZTw9MClyZXR1cm5gbm8gdHJhZmZpYyBpbiB0aGUgbGFzdCBtaW51dGVgO2xldCByPW4oZSx0KSxpPXI9PT1udWxsP2BgOmAgKCR7YShyKX0pYDtyZXR1cm5gJHtlfSAke2MoZSxgYXR0ZW1wdGAsYGF0dGVtcHRzYCl9LCAke3R9ICR7Yyh0LGBmYWlsdXJlYCxgZmFpbHVyZXNgKX0gaW4gdGhlIGxhc3QgbWludXRlJHtpfWB9ZnVuY3Rpb24gdShlLHQpe2lmKGU8PTApcmV0dXJuYG5vIHRyYWZmaWMgdG9kYXlgO2xldCByPW4oZSx0KSxpPXI9PT1udWxsP2BgOmAgKCR7YShyKX0pYDtyZXR1cm5gJHtlfSAke2MoZSxgYXR0ZW1wdGAsYGF0dGVtcHRzYCl9LCAke3R9ICR7Yyh0LGBmYWlsdXJlYCxgZmFpbHVyZXNgKX0gdG9kYXkke2l9YH1mdW5jdGlvbiBkKHQpe2xldCBuPTA7Zm9yKGxldCByIG9mIHQpe2xldCB0PXIubGltaXRzPy5jb3N0UGVyTW9udGhVU0Q7dCYmdD4wJiYobis9ZSh0KSl9cmV0dXJuIG59ZnVuY3Rpb24gZihlLHQpe3JldHVybiB0PD0wP251bGw6ZS90fWZ1bmN0aW9uIHAoZSl7aWYoZT09PW51bGwpcmV0dXJuYG9rYDtzd2l0Y2godChlKSl7Y2FzZWBub3JtYWxgOnJldHVybmBva2A7Y2FzZWBhbWJlcmA6cmV0dXJuYHdhcm5gO2Nhc2VgcmVkYDpyZXR1cm5gY3JpdGljYWxgfX1mdW5jdGlvbiBtKGUpe3JldHVybiBlLmZpbHRlcihlPT5lLmhlYWx0aFN0YXRlIT09YGNsb3NlZGApLmxlbmd0aH1mdW5jdGlvbiBoKGUpe2xldCB0PTAscj0wO2ZvcihsZXQgbiBvZiBlKXQrPW4uYXR0ZW1wdHNNaW51dGUscis9bi5mYWlsdXJlc01pbnV0ZTtsZXQgaT1uKHQscik7cmV0dXJue3JhdGU6aT09PW51bGw/bnVsbDoxLWksYXR0ZW1wdHM6dCxmYWlsdXJlczpyfX1mdW5jdGlvbiBnKGUpe2lmKGU9PT1udWxsKXJldHVybmBva2A7c3dpdGNoKHIoMS1lKSl7Y2FzZWBuby10cmFmZmljYDpjYXNlYGhlYWx0aHlgOnJldHVybmBva2A7Y2FzZWBkZWdyYWRlZGA6cmV0dXJuYHdhcm5gO2Nhc2Vgc2V2ZXJlYDpyZXR1cm5gY3JpdGljYWxgfX1leHBvcnR7bSBhcyBhLHMgYXMgYyxsIGFzIGQsbyBhcyBmLGggYXMgaSxhIGFzIGwsbiBhcyBtLHAgYXMgbixkIGFzIG8sciBhcyBwLGcgYXMgcix1IGFzIHMsZiBhcyB0LGkgYXMgdX07",
),
},
"reliability-CYdJq_74.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e1MgYXMgZSxiIGFzIHQsZCBhcyBuLGcgYXMgcix4IGFzIGkseXQgYXMgYX1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO2ltcG9ydHt0IGFzIG99ZnJvbSIuL2luZGV4LTg4Q1RSTkhQLmpzIjtpbXBvcnR7biBhcyBzfWZyb20iLi9zZXJpZXMtRFpzdUFYSEkuanMiO2Z1bmN0aW9uIGMoZSx0KXtyZXR1cm4gZT09PWBob3VyYD97d2luZG93OmBob3VyYCxzcGFuOnR9OmU9PT1gZGF5YD97d2luZG93OmBkYXlgLHNwYW46dH06e3dpbmRvdzpgZGF5YCxzcGFuOjMwfX1mdW5jdGlvbiBsKGUsdCl7bGV0IG49bmV3IE1hcCh0LnNlcmllcy5tYXAoZT0+W2Uuc2NvcGUsZS5wb2ludHNdKSk7cmV0dXJuIGUuc2VyaWVzLm1hcChlPT4oe3Njb3BlOmUuc2NvcGUscG9pbnRzOnMobi5nZXQoZS5zY29wZSk/P0FycmF5KGUucG9pbnRzLmxlbmd0aCkuZmlsbCgwKSxlLnBvaW50cyl9KSl9dmFyIHU9YShgcmVsaWFiaWxpdHlgLHtzdGF0ZTooKT0+KHtidWNrZXRzOltdLHdpbmRvd1VzZWQ6YGRheWAsZXJyb3JSYXRlOltdLHRpbWVvdXRzOltdLGZhaWxvdmVyczpbXSxyZWplY3Rpb25zOltdLHVucHJpY2VkOltdLGxvYWRpbmc6ITEsbGFzdFVwZGF0ZWQ6bnVsbCxlcnJvcjpgYCxyZXFJZDowLHByb3ZpZGVyUGVyZkJ1Y2tldHM6W10scHJvdmlkZXJQZXJmV2luZG93VXNlZDpgZGF5YCxwcm92aWRlclBlcmZQb2ludHM6W10scHJvdmlkZXJQZXJmTGF0ZW5jeUVuYWJsZWQ6ITEscHJvdmlkZXJQZXJmTG9hZGluZzohMSxwcm92aWRlclBlcmZFcnJvcjpgYCxwcm92aWRlclBlcmZSZXFJZDowfSksYWN0aW9uczp7YXN5bmMgZmV0Y2goKXtsZXQgYT1yKCkub3ZlcnZpZXc7aWYoYT09PW51bGwpcmV0dXJuO2xldCBzPSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCBlPW8oKSxyPWEucHJvdmlkZXJzLm1hcChlPT5lLm5hbWUpO2lmKHIubGVuZ3RoPT09MCl7aWYocyE9PXRoaXMucmVxSWQpcmV0dXJuO3RoaXMuYnVja2V0cz1bXSx0aGlzLndpbmRvd1VzZWQ9YyhlLndpbmRvdyxlLnNwYW4pLndpbmRvdyx0aGlzLmVycm9yUmF0ZT1bXSx0aGlzLnRpbWVvdXRzPVtdLHRoaXMuZmFpbG92ZXJzPVtdLHRoaXMucmVqZWN0aW9ucz1bXSx0aGlzLnVucHJpY2VkPVtdLHRoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUsdGhpcy5lcnJvcj1gYDtyZXR1cm59bGV0e3dpbmRvdzppLHNwYW46dX09YyhlLndpbmRvdyxlLnNwYW4pLGQ9ci5tYXAoZT0+YHByb3ZpZGVyOiR7ZX1gKSxbZixwLG0saCxnLF9dPWF3YWl0IFByb21pc2UuYWxsKFt0KG4oe3Njb3BlOmQsbWV0cmljOmBhdHRlbXB0YCx3aW5kb3c6aSxzcGFuOnV9KSksdChuKHtzY29wZTpkLG1ldHJpYzpgZmFpbGAsd2luZG93Omksc3Bhbjp1fSkpLHQobih7c2NvcGU6ZCxtZXRyaWM6YHRpbWVvdXRgLHdpbmRvdzppLHNwYW46dX0pKSx0KG4oe3Njb3BlOmQsbWV0cmljOmBmb3ZlcmAsd2luZG93Omksc3Bhbjp1fSkpLHQobih7c2NvcGU6W2B0b3RhbGBdLG1ldHJpYzpgcmVqYCx3aW5kb3c6aSxzcGFuOnV9KSksdChuKHtzY29wZTpbYHRvdGFsYF0sbWV0cmljOmByNDAyYCx3aW5kb3c6aSxzcGFuOnV9KSldKTtpZihzIT09dGhpcy5yZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPWYuYnVja2V0cyx0aGlzLndpbmRvd1VzZWQ9aSx0aGlzLmVycm9yUmF0ZT1sKGYscCksdGhpcy50aW1lb3V0cz1tLnNlcmllcyx0aGlzLmZhaWxvdmVycz1oLnNlcmllcyx0aGlzLnJlamVjdGlvbnM9Zy5zZXJpZXNbMF0/LnBvaW50cz8/W10sdGhpcy51bnByaWNlZD1fLnNlcmllc1swXT8ucG9pbnRzPz9bXSx0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlLHRoaXMuZXJyb3I9YGB9Y2F0Y2godCl7aWYocyE9PXRoaXMucmVxSWR8fGkodCkpcmV0dXJuO3RoaXMuZXJyb3I9ZSh0KX1maW5hbGx5e3M9PT10aGlzLnJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19LGFzeW5jIGZldGNoUHJvdmlkZXJQZXJmKG4pe2xldCBhPSsrdGhpcy5wcm92aWRlclBlcmZSZXFJZCxzPXIoKS5vdmVydmlldz8uZmVhdHVyZXMubGF0ZW5jeVN0YXRzPz8hMTtpZighbnx8IXMpe2lmKGEhPT10aGlzLnByb3ZpZGVyUGVyZlJlcUlkKXJldHVybjt0aGlzLnByb3ZpZGVyUGVyZkJ1Y2tldHM9W10sdGhpcy5wcm92aWRlclBlcmZQb2ludHM9W10sdGhpcy5wcm92aWRlclBlcmZMYXRlbmN5RW5hYmxlZD0hMSx0aGlzLnByb3ZpZGVyUGVyZkVycm9yPWBgLHRoaXMucHJvdmlkZXJQZXJmTG9hZGluZz0hMTtyZXR1cm59dGhpcy5wcm92aWRlclBlcmZMb2FkaW5nPSEwO3RyeXtsZXQgZT1vKCkse3dpbmRvdzpyLHNwYW46aX09YyhlLndpbmRvdyxlLnNwYW4pLHM9bmV3IFVSTFNlYXJjaFBhcmFtcyh7a2luZDpgcHJvdmlkZXJgLHdpbmRvdzpyLHNwYW46U3RyaW5nKGkpLHNlcmllczpgMWB9KTtzLmFwcGVuZChgaWRgLG4pO2xldCBsPWF3YWl0IHQoYC9hZG1pbi9hcGkvcGVyZm9ybWFuY2U/JHtzLnRvU3RyaW5nKCl9YCk7aWYoYSE9PXRoaXMucHJvdmlkZXJQZXJmUmVxSWQpcmV0dXJuO3RoaXMucHJvdmlkZXJQZXJmQnVja2V0cz1sLmJ1Y2tldHM/P1tdLHRoaXMucHJvdmlkZXJQZXJmV2luZG93VXNlZD1yLHRoaXMucHJvdmlkZXJQZXJmUG9pbnRzPWwucG9pbnRzPz9bXSx0aGlzLnByb3ZpZGVyUGVyZkxhdGVuY3lFbmFibGVkPWwubGF0ZW5jeUVuYWJsZWQsdGhpcy5wcm92aWRlclBlcmZFcnJvcj1gYH1jYXRjaCh0KXtpZihhIT09dGhpcy5wcm92aWRlclBlcmZSZXFJZHx8aSh0KSlyZXR1cm47dGhpcy5wcm92aWRlclBlcmZFcnJvcj1lKHQpfWZpbmFsbHl7YT09PXRoaXMucHJvdmlkZXJQZXJmUmVxSWQmJih0aGlzLnByb3ZpZGVyUGVyZkxvYWRpbmc9ITEpfX19fSk7ZXhwb3J0e3UgYXMgbixjIGFzIHR9Ow==",
),
},
"search-expand-B-wROcnL.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e2EgYXMgZSxpIGFzIHQsbixyLHMgYXMgaSx0IGFzIGF9ZnJvbSIuL3VzZUlkLVRjWEJ3VU9oLmpzIjtpbXBvcnR7JCBhcyBvLEYgYXMgcyxHbiBhcyBjLEsgYXMgbCxMciBhcyB1LE1yIGFzIGQsT3IgYXMgZixRIGFzIHAsUW4gYXMgbSxSIGFzIGgsU2kgYXMgZyxVIGFzIF8sVXQgYXMgdixXbiBhcyB5LF8gYXMgYixfbiBhcyB4LGNpIGFzIFMsY24gYXMgQyxkciBhcyB3LGZyIGFzIFQsZ3QgYXMgRSxoaSBhcyBELGlyIGFzIE8sayxrbiBhcyBBLGxuIGFzIGVlLG9uIGFzIGosb3QgYXMgTSxzbiBhcyBOLHR0IGFzIHRlLHVuIGFzIG5lLHZpIGFzIFAsd2kgYXMgRix4aSBhcyBJLHluIGFzIEx9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7ZCBhcyByZSxmIGFzIGllLG0gYXMgUn1mcm9tIi4vaW5kZXgtODhDVFJOSFAuanMiO2ltcG9ydHt0IGFzIHp9ZnJvbSIuL3VzZUNvcHlGZWVkYmFjay1DalJ6T08tVy5qcyI7aW1wb3J0e3QgYXMgQn1mcm9tIi4vY2xpcGJvYXJkLUI3M2ZaMGMxLmpzIjtpbXBvcnR7ZiBhcyBWLG8gYXMgSCx0IGFzIFV9ZnJvbSIuL2JhZGdlLUJKTGctUjNNLmpzIjtmdW5jdGlvbiBXKGUsdCl7cmV0dXJuIGllKGUpPyExOkFycmF5LmlzQXJyYXkoZSk/ZS5zb21lKGU9PlIoZSx0KSk6UihlLHQpfXZhciBHPVtgSU5QVVRgLGBURVhUQVJFQWBdO2Z1bmN0aW9uIEsoZSx0LG4scj17fSl7aWYoIXR8fHIuZW5hYmxlSWdub3JlZEVsZW1lbnQmJkcuaW5jbHVkZXModC5ub2RlTmFtZSkpcmV0dXJuIG51bGw7bGV0e2Fycm93S2V5T3B0aW9uczppPWBib3RoYCxhdHRyaWJ1dGVOYW1lOmE9YFtkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXWAsaXRlbXNBcnJheTpvPVtdLGxvb3A6cz0hMCxkaXI6Yz1gbHRyYCxwcmV2ZW50U2Nyb2xsOmw9ITAsZm9jdXM6dT0hMX09cixbZCxmLHAsbSxoLGddPVtlLmtleT09PWBBcnJvd1JpZ2h0YCxlLmtleT09PWBBcnJvd0xlZnRgLGUua2V5PT09YEFycm93VXBgLGUua2V5PT09YEFycm93RG93bmAsZS5rZXk9PT1gSG9tZWAsZS5rZXk9PT1gRW5kYF0sXz1wfHxtLHY9ZHx8ZjtpZighaCYmIWcmJighXyYmIXZ8fGk9PT1gdmVydGljYWxgJiZ2fHxpPT09YGhvcml6b250YWxgJiZfKSlyZXR1cm4gbnVsbDtsZXQgeT1uP0FycmF5LmZyb20obi5xdWVyeVNlbGVjdG9yQWxsKGEpKTpvO2lmKCF5Lmxlbmd0aClyZXR1cm4gbnVsbDtsJiZlLnByZXZlbnREZWZhdWx0KCk7bGV0IGI9bnVsbDtyZXR1cm4gdnx8Xz9iPXEoeSx0LHtnb0ZvcndhcmQ6Xz9tOmM9PT1gbHRyYD9kOmYsbG9vcDpzfSk6aD9iPXkuYXQoMCl8fG51bGw6ZyYmKGI9eS5hdCgtMSl8fG51bGwpLHUmJmI/LmZvY3VzKCksYn1mdW5jdGlvbiBxKGUsdCxuLHI9ZS5pbmNsdWRlcyh0KT9lLmxlbmd0aDplLmxlbmd0aCsxKXtpZigtLXI9PT0wKXJldHVybiBudWxsO2xldCBpPWUuaW5kZXhPZih0KSxhO2lmKGE9aT09PS0xP24uZ29Gb3J3YXJkPzA6ZS5sZW5ndGgtMTpuLmdvRm9yd2FyZD9pKzE6aS0xLCFuLmxvb3AmJihhPDB8fGE+PWUubGVuZ3RoKSlyZXR1cm4gbnVsbDtsZXQgbz1lWyhhK2UubGVuZ3RoKSVlLmxlbmd0aF07cmV0dXJuIG8/by5oYXNBdHRyaWJ1dGUoYGRpc2FibGVkYCkmJm8uZ2V0QXR0cmlidXRlKGBkaXNhYmxlZGApIT09YGZhbHNlYD9xKGUsbyxuLHIpOm86bnVsbH12YXJbSixZXT1pKGBDb2xsYXBzaWJsZVJvb3RgKSxhZT1MKHtfX25hbWU6YENvbGxhcHNpYmxlUm9vdGAscHJvcHM6e2RlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2B1cGRhdGU6b3BlbmBdLHNldHVwKGUse2V4cG9zZTpuLGVtaXQ6cn0pe2xldCBpPWUsYT1oKGksYG9wZW5gLHIse2RlZmF1bHRWYWx1ZTppLmRlZmF1bHRPcGVuLHBhc3NpdmU6aS5vcGVuPT09dm9pZCAwfSkse2Rpc2FibGVkOm8sdW5tb3VudE9uSGlkZTpzfT1EKGkpO3JldHVybiBZKHtjb250ZW50SWQ6YGAsZGlzYWJsZWQ6byxvcGVuOmEsdW5tb3VudE9uSGlkZTpzLG9uT3BlblRvZ2dsZTooKT0+e28udmFsdWV8fChhLnZhbHVlPSFhLnZhbHVlKX19KSxuKHtvcGVuOmF9KSx0KCksKGUsdCk9PihPKCksQyhQKGspLHthczplLmFzLCJhcy1jaGlsZCI6aS5hc0NoaWxkLCJkYXRhLXN0YXRlIjpQKGEpP2BvcGVuYDpgY2xvc2VkYCwiZGF0YS1kaXNhYmxlZCI6UChvKT9gYDp2b2lkIDB9LHtkZWZhdWx0OnUoKCk9Plt3KGUuJHNsb3RzLGBkZWZhdWx0YCx7b3BlbjpQKGEpfSldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgXSkpfX0pLG9lPUwoe2luaGVyaXRBdHRyczohMSxfX25hbWU6YENvbGxhcHNpYmxlQ29udGVudGAscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2Bjb250ZW50Rm91bmRgXSxzZXR1cChlLHtlbWl0Om59KXtsZXQgcj1lLGk9bixvPUooKTtvLmNvbnRlbnRJZHx8PWEodm9pZCAwLGByZWthLWNvbGxhcHNpYmxlLWNvbnRlbnRgKTtsZXQgbD1TKCkse2ZvcndhcmRSZWY6ZixjdXJyZW50RWxlbWVudDpwfT10KCksaD1TKDApLGc9UygwKSxfPWooKCk9Pm8ub3Blbi52YWx1ZSksdj1TKF8udmFsdWUpLGI9UygpO2QoKCk9PltfLnZhbHVlLGwudmFsdWU/LnByZXNlbnRdLGFzeW5jKCk9Pnthd2FpdCBjKCk7bGV0IGU9cC52YWx1ZTtpZighZSlyZXR1cm47Yi52YWx1ZT1iLnZhbHVlfHx7dHJhbnNpdGlvbkR1cmF0aW9uOmUuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uLGFuaW1hdGlvbk5hbWU6ZS5zdHlsZS5hbmltYXRpb25OYW1lfSxlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1gMHNgLGUuc3R5bGUuYW5pbWF0aW9uTmFtZT1gbm9uZWA7bGV0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtnLnZhbHVlPXQuaGVpZ2h0LGgudmFsdWU9dC53aWR0aCx2LnZhbHVlfHwoZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249Yi52YWx1ZS50cmFuc2l0aW9uRHVyYXRpb24sZS5zdHlsZS5hbmltYXRpb25OYW1lPWIudmFsdWUuYW5pbWF0aW9uTmFtZSl9LHtpbW1lZGlhdGU6ITB9KTtsZXQgVD1qKCgpPT52LnZhbHVlJiZvLm9wZW4udmFsdWUpO3JldHVybiBtKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57di52YWx1ZT0hMX0pfSkscyhwLGBiZWZvcmVtYXRjaGAsZT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e28ub25PcGVuVG9nZ2xlKCksaShgY29udGVudEZvdW5kYCl9KX0pLChlLHQpPT4oTygpLEMoUChyZSkse3JlZl9rZXk6YHByZXNlbnRSZWZgLHJlZjpsLHByZXNlbnQ6ZS5mb3JjZU1vdW50fHxQKG8pLm9wZW4udmFsdWUsImZvcmNlLW1vdW50IjohMH0se2RlZmF1bHQ6dSgoe3ByZXNlbnQ6dH0pPT5beChQKGspLHkoZS4kYXR0cnMse2lkOlAobykuY29udGVudElkLHJlZjpQKGYpLCJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOmUuYXMsaGlkZGVuOnQ/dm9pZCAwOlAobykudW5tb3VudE9uSGlkZS52YWx1ZT9gYDpgdW50aWwtZm91bmRgLCJkYXRhLXN0YXRlIjpULnZhbHVlP3ZvaWQgMDpQKG8pLm9wZW4udmFsdWU/YG9wZW5gOmBjbG9zZWRgLCJkYXRhLWRpc2FibGVkIjpQKG8pLmRpc2FibGVkPy52YWx1ZT9gYDp2b2lkIDAsc3R5bGU6eyItLXJla2EtY29sbGFwc2libGUtY29udGVudC1oZWlnaHQiOmAke2cudmFsdWV9cHhgLCItLXJla2EtY29sbGFwc2libGUtY29udGVudC13aWR0aCI6YCR7aC52YWx1ZX1weGB9fSkse2RlZmF1bHQ6dSgoKT0+WyFQKG8pLnVubW91bnRPbkhpZGUudmFsdWV8fHQ/dyhlLiRzbG90cyxgZGVmYXVsdGAse2tleTowfSk6ZWUoYHYtaWZgLCEwKV0pLF86Mn0sMTA0MCxbYGlkYCxgYXMtY2hpbGRgLGBhc2AsYGhpZGRlbmAsYGRhdGEtc3RhdGVgLGBkYXRhLWRpc2FibGVkYCxgc3R5bGVgXSldKSxfOjN9LDgsW2BwcmVzZW50YF0pKX19KSxzZT1MKHtfX25hbWU6YENvbGxhcHNpYmxlVHJpZ2dlcmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBidXR0b25gfX0sc2V0dXAoZSl7bGV0IG49ZTt0KCk7bGV0IHI9SigpO3JldHVybihlLHQpPT4oTygpLEMoUChrKSx7dHlwZTplLmFzPT09YGJ1dHRvbmA/YGJ1dHRvbmA6dm9pZCAwLGFzOmUuYXMsImFzLWNoaWxkIjpuLmFzQ2hpbGQsImFyaWEtY29udHJvbHMiOlAocikuY29udGVudElkLCJhcmlhLWV4cGFuZGVkIjpQKHIpLm9wZW4udmFsdWUsImRhdGEtc3RhdGUiOlAocikub3Blbi52YWx1ZT9gb3BlbmA6YGNsb3NlZGAsImRhdGEtZGlzYWJsZWQiOlAocikuZGlzYWJsZWQ/LnZhbHVlP2BgOnZvaWQgMCxkaXNhYmxlZDpQKHIpLmRpc2FibGVkPy52YWx1ZSxvbkNsaWNrOlAocikub25PcGVuVG9nZ2xlfSx7ZGVmYXVsdDp1KCgpPT5bdyhlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgdHlwZWAsYGFzYCxgYXMtY2hpbGRgLGBhcmlhLWNvbnRyb2xzYCxgYXJpYS1leHBhbmRlZGAsYGRhdGEtc3RhdGVgLGBkYXRhLWRpc2FibGVkYCxgZGlzYWJsZWRgLGBvbkNsaWNrYF0pKX19KTtmdW5jdGlvbiBjZSh7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bn0pe2xldCByPW58fHQ7cmV0dXJuIG4hPT12b2lkIDB8fHQhPT12b2lkIDA/QXJyYXkuaXNBcnJheShyKT9gbXVsdGlwbGVgOmBzaW5nbGVgOmU/P2BzaW5nbGVgfWZ1bmN0aW9uIGxlKHt0eXBlOmUsZGVmYXVsdFZhbHVlOnQsbW9kZWxWYWx1ZTpufSl7cmV0dXJuIGV8fGNlKHt0eXBlOmUsZGVmYXVsdFZhbHVlOnQsbW9kZWxWYWx1ZTpufSl9ZnVuY3Rpb24gdWUoe3R5cGU6ZSxkZWZhdWx0VmFsdWU6dH0pe3JldHVybiB0PT09dm9pZCAwP2U9PT1gc2luZ2xlYD92b2lkIDA6W106dH1mdW5jdGlvbiBkZShlLHQpe2xldCBuPWooKCk9PmxlKGUpKSxyPWgoZSxgbW9kZWxWYWx1ZWAsdCx7ZGVmYXVsdFZhbHVlOnVlKGUpLHBhc3NpdmU6ZS5tb2RlbFZhbHVlPT09dm9pZCAwLGRlZXA6ITB9KTtmdW5jdGlvbiBpKGUpe2lmKG4udmFsdWU9PT1gc2luZ2xlYClyLnZhbHVlPVIoZSxyLnZhbHVlKT92b2lkIDA6ZTtlbHNle2xldCB0PUFycmF5LmlzQXJyYXkoci52YWx1ZSk/Wy4uLnIudmFsdWV8fFtdXTpbci52YWx1ZV0uZmlsdGVyKEJvb2xlYW4pO2lmKFcodCxlKSl7bGV0IG49dC5maW5kSW5kZXgodD0+Uih0LGUpKTt0LnNwbGljZShuLDEpfWVsc2UgdC5wdXNoKGUpO3IudmFsdWU9dH19cmV0dXJue21vZGVsVmFsdWU6cixjaGFuZ2VNb2RlbFZhbHVlOmksaXNTaW5nbGU6aigoKT0+bi52YWx1ZT09PWBzaW5nbGVgKX19dmFyW1gsZmVdPWkoYEFjY29yZGlvblJvb3RgKSxwZT1MKHtfX25hbWU6YEFjY29yZGlvblJvb3RgLHByb3BzOntjb2xsYXBzaWJsZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHZlcnRpY2FsYH0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sdHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAobix7ZW1pdDpyfSl7bGV0IGk9bixhPXIse2RpcjpvLGRpc2FibGVkOnMsdW5tb3VudE9uSGlkZTpjfT1EKGkpLGw9ZShvKSx7bW9kZWxWYWx1ZTpkLGNoYW5nZU1vZGVsVmFsdWU6Zixpc1NpbmdsZTpwfT1kZShpLGEpLHtmb3J3YXJkUmVmOm0sY3VycmVudEVsZW1lbnQ6aH09dCgpO3JldHVybiBmZSh7ZGlzYWJsZWQ6cyxkaXJlY3Rpb246bCxvcmllbnRhdGlvbjppLm9yaWVudGF0aW9uLHBhcmVudEVsZW1lbnQ6aCxpc1NpbmdsZTpwLGNvbGxhcHNpYmxlOmkuY29sbGFwc2libGUsbW9kZWxWYWx1ZTpkLGNoYW5nZU1vZGVsVmFsdWU6Zix1bm1vdW50T25IaWRlOmN9KSwoZSx0KT0+KE8oKSxDKFAoaykse3JlZjpQKG0pLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXN9LHtkZWZhdWx0OnUoKCk9Plt3KGUuJHNsb3RzLGBkZWZhdWx0YCx7bW9kZWxWYWx1ZTpQKGQpfSldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYF0pKX19KSxaPWZ1bmN0aW9uKGUpe3JldHVybiBlLk9wZW49YG9wZW5gLGUuQ2xvc2VkPWBjbG9zZWRgLGV9KFp8fHt9KSxbUSxtZV09aShgQWNjb3JkaW9uSXRlbWApLGhlPUwoe19fbmFtZTpgQWNjb3JkaW9uSXRlbWAscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHZhbHVlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cChlLHtleHBvc2U6bn0pe2xldCByPWUsaT1YKCksYT1qKCgpPT5pLmlzU2luZ2xlLnZhbHVlP3IudmFsdWU9PT1pLm1vZGVsVmFsdWUudmFsdWU6QXJyYXkuaXNBcnJheShpLm1vZGVsVmFsdWUudmFsdWUpJiZpLm1vZGVsVmFsdWUudmFsdWUuaW5jbHVkZXMoci52YWx1ZSkpLG89aigoKT0+aS5kaXNhYmxlZC52YWx1ZXx8ci5kaXNhYmxlZCkscz1qKCgpPT5vLnZhbHVlP2BgOnZvaWQgMCksYz1qKCgpPT5hLnZhbHVlP1ouT3BlbjpaLkNsb3NlZCk7bih7b3BlbjphLGRhdGFEaXNhYmxlZDpzfSk7bGV0e2N1cnJlbnRSZWY6bCxjdXJyZW50RWxlbWVudDpkfT10KCk7bWUoe29wZW46YSxkYXRhU3RhdGU6YyxkaXNhYmxlZDpvLGRhdGFEaXNhYmxlZDpzLHRyaWdnZXJJZDpgYCxjdXJyZW50UmVmOmwsY3VycmVudEVsZW1lbnQ6ZCx2YWx1ZTpqKCgpPT5yLnZhbHVlKX0pO2Z1bmN0aW9uIGYoZSl7bGV0IHQ9ZS50YXJnZXQ7aWYoQXJyYXkuZnJvbShpLnBhcmVudEVsZW1lbnQudmFsdWU/LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtXWApPz9bXSkuZmluZEluZGV4KGU9PmU9PT10KT09PS0xKXJldHVybiBudWxsO0soZSx0LGkucGFyZW50RWxlbWVudC52YWx1ZSx7YXJyb3dLZXlPcHRpb25zOmkub3JpZW50YXRpb24sZGlyOmkuZGlyZWN0aW9uLnZhbHVlLGZvY3VzOiEwfSl9cmV0dXJuKGUsdCk9PihPKCksQyhQKGFlKSx7ImRhdGEtb3JpZW50YXRpb24iOlAoaSkub3JpZW50YXRpb24sImRhdGEtZGlzYWJsZWQiOnMudmFsdWUsImRhdGEtc3RhdGUiOmMudmFsdWUsZGlzYWJsZWQ6by52YWx1ZSxvcGVuOmEudmFsdWUsYXM6ci5hcywiYXMtY2hpbGQiOnIuYXNDaGlsZCwidW5tb3VudC1vbi1oaWRlIjpyLnVubW91bnRPbkhpZGU/P1AoaSkudW5tb3VudE9uSGlkZS52YWx1ZSxvbktleWRvd246dihmLFtgdXBgLGBkb3duYCxgbGVmdGAsYHJpZ2h0YCxgaG9tZWAsYGVuZGBdKX0se2RlZmF1bHQ6dSgoKT0+W3coZS4kc2xvdHMsYGRlZmF1bHRgLHtvcGVuOmEudmFsdWV9KV0pLF86M30sOCxbYGRhdGEtb3JpZW50YXRpb25gLGBkYXRhLWRpc2FibGVkYCxgZGF0YS1zdGF0ZWAsYGRpc2FibGVkYCxgb3BlbmAsYGFzYCxgYXMtY2hpbGRgLGB1bm1vdW50LW9uLWhpZGVgXSkpfX0pLGdlPUwoe19fbmFtZTpgQWNjb3JkaW9uQ29udGVudGAscHJvcHM6e2ZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IG49ZSxyPVgoKSxpPVEoKTtyZXR1cm4gdCgpLChlLHQpPT4oTygpLEMoUChvZSkse3JvbGU6YHJlZ2lvbmAsImFzLWNoaWxkIjpuLmFzQ2hpbGQsYXM6ZS5hcywiZm9yY2UtbW91bnQiOm4uZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjpQKGkpLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6UChpKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOlAoaSkuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjpQKHIpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjpgdmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKWAsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOmB2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KWB9LG9uQ29udGVudEZvdW5kOnRbMF18fD1lPT5QKHIpLmNoYW5nZU1vZGVsVmFsdWUoUChpKS52YWx1ZS52YWx1ZSl9LHtkZWZhdWx0OnUoKCk9Plt3KGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYCxgZm9yY2UtbW91bnRgLGBhcmlhLWxhYmVsbGVkYnlgLGBkYXRhLXN0YXRlYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gXSkpfX0pLF9lPUwoe19fbmFtZTpgQWNjb3JkaW9uSGVhZGVyYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGgzYH19LHNldHVwKGUpe2xldCBuPWUscj1YKCksaT1RKCk7cmV0dXJuIHQoKSwoZSx0KT0+KE8oKSxDKFAoaykse2FzOm4uYXMsImFzLWNoaWxkIjpuLmFzQ2hpbGQsImRhdGEtb3JpZW50YXRpb24iOlAocikub3JpZW50YXRpb24sImRhdGEtc3RhdGUiOlAoaSkuZGF0YVN0YXRlLnZhbHVlLCJkYXRhLWRpc2FibGVkIjpQKGkpLmRhdGFEaXNhYmxlZC52YWx1ZX0se2RlZmF1bHQ6dSgoKT0+W3coZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzYCxgYXMtY2hpbGRgLGBkYXRhLW9yaWVudGF0aW9uYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgXSkpfX0pLHZlPUwoe19fbmFtZTpgQWNjb3JkaW9uVHJpZ2dlcmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWUsbj1YKCkscj1RKCk7ci50cmlnZ2VySWR8fD1hKHZvaWQgMCxgcmVrYS1hY2NvcmRpb24tdHJpZ2dlcmApO2Z1bmN0aW9uIGkoKXtsZXQgZT1uLmlzU2luZ2xlLnZhbHVlJiZyLm9wZW4udmFsdWUmJiFuLmNvbGxhcHNpYmxlO3IuZGlzYWJsZWQudmFsdWV8fGV8fG4uY2hhbmdlTW9kZWxWYWx1ZShyLnZhbHVlLnZhbHVlKX1yZXR1cm4oZSxhKT0+KE8oKSxDKFAoc2UpLHtpZDpQKHIpLnRyaWdnZXJJZCxyZWY6UChyKS5jdXJyZW50UmVmLCJkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtIjpgYCxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJhcmlhLWRpc2FibGVkIjpQKHIpLmRpc2FibGVkLnZhbHVlfHx2b2lkIDAsImFyaWEtZXhwYW5kZWQiOlAocikub3Blbi52YWx1ZXx8ITEsImRhdGEtZGlzYWJsZWQiOlAocikuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjpQKG4pLm9yaWVudGF0aW9uLCJkYXRhLXN0YXRlIjpQKHIpLmRhdGFTdGF0ZS52YWx1ZSxkaXNhYmxlZDpQKHIpLmRpc2FibGVkLnZhbHVlLG9uQ2xpY2s6aX0se2RlZmF1bHQ6dSgoKT0+W3coZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGlkYCxgYXNgLGBhcy1jaGlsZGAsYGFyaWEtZGlzYWJsZWRgLGBhcmlhLWV4cGFuZGVkYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gLGBkYXRhLXN0YXRlYCxgZGlzYWJsZWRgXSkpfX0pLHllPVtgdGl0bGVgXSxiZT1MKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBEZXRhaWxGaWVsZGAscHJvcHM6e2xhYmVsOnt9LGxhYmVsVGl0bGU6e2RlZmF1bHQ6dm9pZCAwfSxudW1lcmljOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX19LHNldHVwKGUpe3JldHVybih0LG4pPT4oTygpLG5lKGBkaXZgLG51bGwsW04oYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCx0aXRsZTplLmxhYmVsVGl0bGV9LEYoZS5sYWJlbCksOSx5ZSksTihgZGRgLHkodC4kYXR0cnMse2NsYXNzOmUubnVtZXJpYz9gdGFidWxhci1udW1zYDp2b2lkIDB9KSxbdyh0LiRzbG90cyxgZGVmYXVsdGApXSwxNildKSl9fSksJD1MKHtfX25hbWU6YE1vZGVsQ2hpcGAscHJvcHM6e2lkOnt9LGNvbnRleHRUb2tlbnM6e30saW5wdXRQZXJNVG9rVXNkOnt9LG91dHB1dFBlck1Ub2tVc2Q6e319LHNldHVwKGUpe2xldCB0PWUsbj1mKGBsYWJlbGApLHtzdGF0ZTpyLHNldDppfT16KCksYT1iKCk7YXN5bmMgZnVuY3Rpb24gbygpe2xldCBlPWF3YWl0IEIodC5pZCxuLnZhbHVlPz92b2lkIDApO2koZSksZT09PWBmYWlsZWRgJiZhLnB1c2goe2tpbmQ6YGVycm9yYCxtZXNzYWdlOmBDb3VsZCBub3QgY29weSAke3QuaWR9LmB9KX1sZXQgcz17aWRsZTpNLGNvcGllZDpwLHNlbGVjdGVkOnAsZmFpbGVkOkV9LGM9aigoKT0+KHtpZGxlOmBDb3B5ICR7dC5pZH1gLGNvcGllZDpgQ29waWVkYCxzZWxlY3RlZDpgU2VsZWN0ZWQg4oCUIHByZXNzIEN0cmwvQ21kK0NgLGZhaWxlZDpgQ29weSBmYWlsZWRgfSkpLGw9aigoKT0+e2xldCBlPVtdO3JldHVybiB0LmlucHV0UGVyTVRva1VzZCE9PXZvaWQgMCYmdC5vdXRwdXRQZXJNVG9rVXNkIT09dm9pZCAwJiZlLnB1c2goVih0LmlucHV0UGVyTVRva1VzZCx0Lm91dHB1dFBlck1Ub2tVc2QpKSx0LmNvbnRleHRUb2tlbnMhPT12b2lkIDAmJmUucHVzaChgJHtIKHQuY29udGV4dFRva2Vucyl9IGNvbnRleHRgKSxlLmpvaW4oYCDCtyBgKX0pLGQ9aigoKT0+e2xldCBlPWMudmFsdWVbci52YWx1ZV07cmV0dXJuIGwudmFsdWU/YCR7ZX0gwrcgJHtsLnZhbHVlfWA6ZX0pO3JldHVybih0LG4pPT57bGV0IGk9VChgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIE8oKSxDKFAoVSkse2FzOmBidXR0b25gLHR5cGU6YGJ1dHRvbmAsdmFyaWFudDpgc2Vjb25kYXJ5YCxjbGFzczpJKFtgbWF4LXctZnVsbCBjdXJzb3ItcG9pbnRlciBnYXAtMSB0cnVuY2F0ZSBmb250LW1vbm8gdGV4dC14cyBmb250LW5vcm1hbCB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZGAsUChyKT09PWBmYWlsZWRgP2B0ZXh0LWRlc3RydWN0aXZlYDpgYF0pLHRpdGxlOmQudmFsdWUsImFyaWEtbGFiZWwiOmQudmFsdWUsb25DbGljazpvfSx7ZGVmYXVsdDp1KCgpPT5bTihgc3BhbmAse3JlZjpgbGFiZWxgLGNsYXNzOmBtaW4tdy0wIHRydW5jYXRlIHNlbGVjdC10ZXh0YH0sRihlLmlkKSw1MTMpLHgoaSx7aWNvbjpzW1AocildLGNsYXNzOmBzaXplLTIuNSBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldKSxfOjF9LDgsW2BjbGFzc2AsYHRpdGxlYCxgYXJpYS1sYWJlbGBdKX19fSkseGU9TCh7X19uYW1lOmBBY2NvcmRpb25gLHByb3BzOntjb2xsYXBzaWJsZTp7dHlwZTpCb29sZWFufSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufSxkaXI6e30sb3JpZW50YXRpb246e30sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LHR5cGU6e30sbW9kZWxWYWx1ZTp7fSxkZWZhdWx0VmFsdWU6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LGVtaXRzOltgdXBkYXRlOm1vZGVsVmFsdWVgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgcj1lLGk9dCxhPV8ocixgY2xhc3NgKSxvPW4oYSxpKTtyZXR1cm4oZSx0KT0+KE8oKSxDKFAocGUpLHkoeyJkYXRhLXNsb3QiOmBhY2NvcmRpb25gfSxQKG8pLHtjbGFzczpQKGwpKGBmbGV4IHctZnVsbCBmbGV4LWNvbGAsci5jbGFzcyl9KSx7ZGVmYXVsdDp1KHQ9Plt3KGUuJHNsb3RzLGBkZWZhdWx0YCxnKEEodCkpKV0pLF86M30sMTYsW2BjbGFzc2BdKSl9fSksU2U9TCh7X19uYW1lOmBBY2NvcmRpb25Db250ZW50YCxwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lLG49Xyh0LGBjbGFzc2ApO3JldHVybihlLHIpPT4oTygpLEMoUChnZSkseSh7ImRhdGEtc2xvdCI6YGFjY29yZGlvbi1jb250ZW50YH0sUChuKSx7Y2xhc3M6YGRhdGEtb3BlbjphbmltYXRlLWFjY29yZGlvbi1kb3duIGRhdGEtY2xvc2VkOmFuaW1hdGUtYWNjb3JkaW9uLXVwIHRleHQtc20gb3ZlcmZsb3ctaGlkZGVuYH0pLHtkZWZhdWx0OnUoKCk9PltOKGBkaXZgLHtjbGFzczpJKFAobCkoYHB0LTAgcGItMi41IFsmX2FdOnVuZGVybGluZSBbJl9hXTp1bmRlcmxpbmUtb2Zmc2V0LTMgWyZfYV06aG92ZXI6dGV4dC1mb3JlZ3JvdW5kIFsmX3A6bm90KDpsYXN0LWNoaWxkKV06bWItNGAsdC5jbGFzcykpfSxbdyhlLiRzbG90cyxgZGVmYXVsdGApXSwyKV0pLF86M30sMTYpKX19KSxDZT1MKHtfX25hbWU6YEFjY29yZGlvbkl0ZW1gLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFufSx2YWx1ZTp7fSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW59LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1fKHQsYGNsYXNzYCksaT1yKG4pO3JldHVybihlLG4pPT4oTygpLEMoUChoZSkseSh7ImRhdGEtc2xvdCI6YGFjY29yZGlvbi1pdGVtYH0sUChpKSx7Y2xhc3M6UChsKShgbm90LWxhc3Q6Ym9yZGVyLWJgLHQuY2xhc3MpfSkse2RlZmF1bHQ6dSh0PT5bdyhlLiRzbG90cyxgZGVmYXVsdGAsZyhBKHQpKSldKSxfOjN9LDE2LFtgY2xhc3NgXSkpfX0pLHdlPUwoe19fbmFtZTpgQWNjb3JkaW9uVHJpZ2dlcmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0saGVhZGVyQ2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1fKHQsYGNsYXNzYCxgaGVhZGVyQ2xhc3NgKTtyZXR1cm4oZSxyKT0+e2xldCBpPVQoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBPKCksQyhQKF9lKSx7Y2xhc3M6SShQKGwpKGBmbGV4YCx0LmhlYWRlckNsYXNzKSl9LHtkZWZhdWx0OnUoKCk9Plt4KFAodmUpLHkoeyJkYXRhLXNsb3QiOmBhY2NvcmRpb24tdHJpZ2dlcmB9LFAobikse2NsYXNzOlAobCkoYGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTphZnRlcjpib3JkZXItcmluZyAqKjpkYXRhLVtzbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25dOnRleHQtbXV0ZWQtZm9yZWdyb3VuZCByb3VuZGVkLWxnIHB5LTIuNSB0ZXh0LWxlZnQgdGV4dC1zbSBmb250LW1lZGl1bSBob3Zlcjp1bmRlcmxpbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTMgKio6ZGF0YS1bc2xvdD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXTptbC1hdXRvICoqOmRhdGEtW3Nsb3Q9YWNjb3JkaW9uLXRyaWdnZXItaWNvbl06c2l6ZS00IGdyb3VwL2FjY29yZGlvbi10cmlnZ2VyIHJlbGF0aXZlIGZsZXggZmxleC0xIGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IHRyYW5zaXRpb24tYWxsIG91dGxpbmUtbm9uZSBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTBgLHQuY2xhc3MpfSkse2RlZmF1bHQ6dSgoKT0+W3coZS4kc2xvdHMsYGRlZmF1bHRgKSx3KGUuJHNsb3RzLGBpY29uYCx7fSwoKT0+W3goaSx7aWNvbjpQKG8pLCJkYXRhLXNsb3QiOmBhY2NvcmRpb24tdHJpZ2dlci1pY29uYCwiYXJpYS1oaWRkZW4iOmB0cnVlYCxjbGFzczpgcG9pbnRlci1ldmVudHMtbm9uZSBzaHJpbmstMCBncm91cC1hcmlhLWV4cGFuZGVkL2FjY29yZGlvbi10cmlnZ2VyOmhpZGRlbmB9LG51bGwsOCxbYGljb25gXSkseChpLHtpY29uOlAodGUpLCJkYXRhLXNsb3QiOmBhY2NvcmRpb24tdHJpZ2dlci1pY29uYCwiYXJpYS1oaWRkZW4iOmB0cnVlYCxjbGFzczpgcG9pbnRlci1ldmVudHMtbm9uZSBoaWRkZW4gc2hyaW5rLTAgZ3JvdXAtYXJpYS1leHBhbmRlZC9hY2NvcmRpb24tdHJpZ2dlcjppbmxpbmVgfSxudWxsLDgsW2BpY29uYF0pXSldKSxfOjN9LDE2LFtgY2xhc3NgXSldKSxfOjN9LDgsW2BjbGFzc2BdKX19fSk7ZnVuY3Rpb24gVGUoZSx0LG4pe2lmKCF0KXJldHVybiBuZXcgU2V0KGUubWFudWFsbHlFeHBhbmRlZCk7bGV0IHI9bmV3IFNldChlLm1hbnVhbGx5RXhwYW5kZWQpO2ZvcihsZXQgdCBvZiBuKWUubWFudWFsbHlDb2xsYXBzZWQuaGFzKHQpfHxyLmFkZCh0KTtyZXR1cm4gcn1mdW5jdGlvbiBFZShlLHQsbil7bj8oZS5tYW51YWxseUV4cGFuZGVkLmRlbGV0ZSh0KSxlLm1hbnVhbGx5Q29sbGFwc2VkLmFkZCh0KSk6KGUubWFudWFsbHlDb2xsYXBzZWQuZGVsZXRlKHQpLGUubWFudWFsbHlFeHBhbmRlZC5hZGQodCkpfWZ1bmN0aW9uIERlKGUpe2UubWFudWFsbHlDb2xsYXBzZWQuY2xlYXIoKX1leHBvcnR7Q2UgYXMgYSwkIGFzIGMsd2UgYXMgaSxiZSBhcyBsLFRlIGFzIG4sU2UgYXMgbyxFZSBhcyByLHhlIGFzIHMsRGUgYXMgdH07",
),
},
"series-DZsuAXHI.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e2cgYXMgZX1mcm9tIi4vYmFkZ2UtQkpMZy1SM00uanMiO2ltcG9ydHtvIGFzIHR9ZnJvbSIuL2twaS1QMDhVdnJLaS5qcyI7ZnVuY3Rpb24gbihlKXtmb3IobGV0IHQgb2ZbYGdyb3VwYCxgdXNlcmAsYG1vZGVsYCxgcHJvdmlkZXJgXSl7bGV0IG49YCR7dH06YDtpZihlLnN0YXJ0c1dpdGgobikpcmV0dXJue2tpbmQ6dCxpZDplLnNsaWNlKG4ubGVuZ3RoKX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihlKXtyZXR1cm4gbihlKT8uaWQ/P2V9ZnVuY3Rpb24gaShlLHQpe3JldHVybmAke2V9OiR7dH1gfWZ1bmN0aW9uIGEoZSl7aWYoZT09PWBgKXJldHVybntraW5kOmBncm91cGB9O2xldCB0PW4oZSk7cmV0dXJuIHQ/LmtpbmQ9PT1gZ3JvdXBgP3traW5kOmB1c2VyYCxncm91cDp0LmlkfTp7a2luZDpgdXNlcm1vZGVsYCx1c2VyOnQ/LmtpbmQ9PT1gdXNlcmA/dC5pZDplfX1mdW5jdGlvbiBvKHIsaSxhKXtsZXQgbz1uKHIpO2lmKCFvKXtsZXQgbj10KGkpO3JldHVybiBuPjA/e2Nvc3RQZXJNb250aFVTRDplKG4pfTp2b2lkIDB9aWYoby5raW5kPT09YGdyb3VwYClyZXR1cm4gaS5maW5kKGU9PmUubmFtZT09PW8uaWQpPy5saW1pdHM7aWYoby5raW5kPT09YHVzZXJgKXJldHVybiBhLmZpbmQoZT0+ZS5pZD09PW8uaWQpPy5saW1pdHN9ZnVuY3Rpb24gcyhlKXtsZXQgdD0wO2ZvcihsZXQgbiBvZiBlKXQrPW47cmV0dXJuIHR9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiB0PD0wP1tdOlsuLi5lXS5zb3J0KChlLHQpPT5zKHQucG9pbnRzKS1zKGUucG9pbnRzKSkuc2xpY2UoMCx0KX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGUubWFwKChlLG4pPT57bGV0IHI9MDtmb3IobGV0IGUgb2YgdClyKz1lLnBvaW50c1tuXT8/MDtyZXR1cm4gTWF0aC5tYXgoMCxlLXIpfSl9ZnVuY3Rpb24gdShlKXtsZXQgdD1uZXcgTWFwO2ZvcihsZXQgciBvZiBlKXtsZXQgZT1uKHIuc2NvcGUpLGk9ZT8ua2luZD09PWBtb2RlbGA/ZS5pZDpyLnNjb3BlLGE9aS5pbmRleE9mKGAvYCksbz1hPT09LTE/aTppLnNsaWNlKDAsYSkscz10LmdldChvKT8/QXJyYXkoci5wb2ludHMubGVuZ3RoKS5maWxsKDApO2ZvcihsZXQgZT0wO2U8ci5wb2ludHMubGVuZ3RoO2UrKylzW2VdPShzW2VdPz8wKSsoci5wb2ludHNbZV0/PzApO3Quc2V0KG8scyl9cmV0dXJuIEFycmF5LmZyb20odC5lbnRyaWVzKCkpLm1hcCgoW2UsdF0pPT4oe3Njb3BlOmUscG9pbnRzOnR9KSkuc29ydCgoZSx0KT0+cyh0LnBvaW50cyktcyhlLnBvaW50cykpfWZ1bmN0aW9uIGQoZSx0KXtyZXR1cm4gdC5tYXAoKHQsbik9PnQ+MD8oZVtuXT8/MCkvdDpudWxsKX1leHBvcnR7YSxvIGFzIGMsdSBhcyBpLHIgYXMgbCxkIGFzIG4saSBhcyBvLGMgYXMgcixuIGFzIHMsbCBhcyB0fTs=",
),
},
"tabs-Cuh6FQ0j.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e2EgYXMgZSxpIGFzIHQsbixyLHMgYXMgaSx0IGFzIGF9ZnJvbSIuL3VzZUlkLVRjWEJ3VU9oLmpzIjtpbXBvcnR7R24gYXMgbyxLIGFzIHMsTHIgYXMgYyxNciBhcyBsLFFuIGFzIHUsUiBhcyBkLFNpIGFzIGYsVSBhcyBwLFV0IGFzIG0sV24gYXMgaCxXdCBhcyBnLF9uIGFzIF8sY2kgYXMgdixjbiBhcyB5LGRpIGFzIGIsZHIgYXMgeCxoaSBhcyBTLGlyIGFzIEMsayBhcyB3LGtuIGFzIFQsbnIgYXMgRSxvbiBhcyBELHEgYXMgTyx2aSBhcyBrLHluIGFzIEF9ZnJvbSIuL1NrZWxldG9uLUQwTm52SFkxLmpzIjtpbXBvcnR7cCBhcyBqLHUgYXMgTX1mcm9tIi4vaW5kZXgtODhDVFJOSFAuanMiO3ZhciBOPWByb3ZpbmdGb2N1c0dyb3VwLm9uRW50cnlGb2N1c2AsUD17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfSxGPXtBcnJvd0xlZnQ6YHByZXZgLEFycm93VXA6YHByZXZgLEFycm93UmlnaHQ6YG5leHRgLEFycm93RG93bjpgbmV4dGAsUGFnZVVwOmBmaXJzdGAsSG9tZTpgZmlyc3RgLFBhZ2VEb3duOmBsYXN0YCxFbmQ6YGxhc3RgfTtmdW5jdGlvbiBJKGUsdCl7cmV0dXJuIHQ9PT1gcnRsYD9lPT09YEFycm93TGVmdGA/YEFycm93UmlnaHRgOmU9PT1gQXJyb3dSaWdodGA/YEFycm93TGVmdGA6ZTplfWZ1bmN0aW9uIEwoZSx0LG4pe2xldCByPUkoZS5rZXksbik7aWYoISh0PT09YHZlcnRpY2FsYCYmW2BBcnJvd0xlZnRgLGBBcnJvd1JpZ2h0YF0uaW5jbHVkZXMocikpJiYhKHQ9PT1gaG9yaXpvbnRhbGAmJltgQXJyb3dVcGAsYEFycm93RG93bmBdLmluY2x1ZGVzKHIpKSlyZXR1cm4gRltyXX1mdW5jdGlvbiBSKGUsdD0hMSl7bGV0IG49aigpO2ZvcihsZXQgciBvZiBlKWlmKHI9PT1ufHwoci5mb2N1cyh7cHJldmVudFNjcm9sbDp0fSksaigpIT09bikpcmV0dXJufWZ1bmN0aW9uIHooZSx0KXtyZXR1cm4gZS5tYXAoKG4scik9PmVbKHQrciklZS5sZW5ndGhdKX12YXJbQixWXT1pKGBSb3ZpbmdGb2N1c0dyb3VwYCksSD1BKHtfX25hbWU6YFJvdmluZ0ZvY3VzR3JvdXBgLHByb3BzOntvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDp2b2lkIDB9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGxvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxjdXJyZW50VGFiU3RvcElkOnt0eXBlOltTdHJpbmcsbnVsbF0scmVxdWlyZWQ6ITF9LGRlZmF1bHRDdXJyZW50VGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0scHJldmVudFNjcm9sbE9uRW50cnlGb2N1czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LGVtaXRzOltgZW50cnlGb2N1c2AsYHVwZGF0ZTpjdXJyZW50VGFiU3RvcElkYF0sc2V0dXAodCx7ZXhwb3NlOm4sZW1pdDpyfSl7bGV0IGk9dCxhPXIse2xvb3A6byxvcmllbnRhdGlvbjpzLGRpcjpsfT1TKGkpLHU9ZShsKSxmPWQoaSxgY3VycmVudFRhYlN0b3BJZGAsYSx7ZGVmYXVsdFZhbHVlOmkuZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQscGFzc2l2ZTppLmN1cnJlbnRUYWJTdG9wSWQ9PT12b2lkIDB9KSxwPXYoITEpLG09dighMSksaD12KDApLHtnZXRJdGVtczpnLENvbGxlY3Rpb25TbG90OmJ9PU0oe2lzUHJvdmlkZXI6ITB9KTtmdW5jdGlvbiBUKGUpe2xldCB0PSFtLnZhbHVlO2lmKGUuY3VycmVudFRhcmdldCYmZS50YXJnZXQ9PT1lLmN1cnJlbnRUYXJnZXQmJnQmJiFwLnZhbHVlKXtsZXQgdD1uZXcgQ3VzdG9tRXZlbnQoTixQKTtpZihlLmN1cnJlbnRUYXJnZXQuZGlzcGF0Y2hFdmVudCh0KSxhKGBlbnRyeUZvY3VzYCx0KSwhdC5kZWZhdWx0UHJldmVudGVkKXtsZXQgZT1nKCkubWFwKGU9PmUucmVmKS5maWx0ZXIoZT0+ZS5kYXRhc2V0LmRpc2FibGVkIT09YGApO1IoW2UuZmluZChlPT5lLmdldEF0dHJpYnV0ZShgZGF0YS1hY3RpdmVgKT09PWBgKSxlLmZpbmQoZT0+ZS5nZXRBdHRyaWJ1dGUoYGRhdGEtaGlnaGxpZ2h0ZWRgKT09PWBgKSxlLmZpbmQoZT0+ZS5pZD09PWYudmFsdWUpLC4uLmVdLmZpbHRlcihCb29sZWFuKSxpLnByZXZlbnRTY3JvbGxPbkVudHJ5Rm9jdXMpfX1tLnZhbHVlPSExfWZ1bmN0aW9uIEUoKXtzZXRUaW1lb3V0KCgpPT57bS52YWx1ZT0hMX0sMSl9cmV0dXJuIG4oe2dldEl0ZW1zOmd9KSxWKHtsb29wOm8sZGlyOnUsb3JpZW50YXRpb246cyxjdXJyZW50VGFiU3RvcElkOmYsb25JdGVtRm9jdXM6ZT0+e2YudmFsdWU9ZX0sb25JdGVtU2hpZnRUYWI6KCk9PntwLnZhbHVlPSEwfSxvbkZvY3VzYWJsZUl0ZW1BZGQ6KCk9PntoLnZhbHVlKyt9LG9uRm9jdXNhYmxlSXRlbVJlbW92ZTooKT0+e2gudmFsdWUtLX19KSwoZSx0KT0+KEMoKSx5KGsoYiksbnVsbCx7ZGVmYXVsdDpjKCgpPT5bXyhrKHcpLHt0YWJpbmRleDpwLnZhbHVlfHxoLnZhbHVlPT09MD8tMTowLCJkYXRhLW9yaWVudGF0aW9uIjprKHMpLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsZGlyOmsodSksc3R5bGU6e291dGxpbmU6YG5vbmVgfSxvbk1vdXNlZG93bjp0WzBdfHw9ZT0+bS52YWx1ZT0hMCxvbk1vdXNldXA6RSxvbkZvY3VzOlQsb25CbHVyOnRbMV18fD1lPT5wLnZhbHVlPSExfSx7ZGVmYXVsdDpjKCgpPT5beChlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgdGFiaW5kZXhgLGBkYXRhLW9yaWVudGF0aW9uYCxgYXNgLGBhcy1jaGlsZGAsYGRpcmBdKV0pLF86M30pKX19KSxVPUEoe19fbmFtZTpgUm92aW5nRm9jdXNJdGVtYCxwcm9wczp7dGFiU3RvcElkOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZm9jdXNhYmxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYWN0aXZlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsbG93U2hpZnRLZXk6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHNwYW5gfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPUIoKSxyPWEoKSxpPUQoKCk9PnQudGFiU3RvcElkfHxyKSxzPUQoKCk9Pm4uY3VycmVudFRhYlN0b3BJZC52YWx1ZT09PWkudmFsdWUpLHtnZXRJdGVtczpkLENvbGxlY3Rpb25JdGVtOmZ9PU0oKTt1KCgpPT57dC5mb2N1c2FibGUmJm4ub25Gb2N1c2FibGVJdGVtQWRkKCl9KSxFKCgpPT57dC5mb2N1c2FibGUmJm4ub25Gb2N1c2FibGVJdGVtUmVtb3ZlKCl9KSxsKCgpPT50LmZvY3VzYWJsZSwoZSx0KT0+e2UhPT10JiYoZT9uLm9uRm9jdXNhYmxlSXRlbUFkZCgpOm4ub25Gb2N1c2FibGVJdGVtUmVtb3ZlKCkpfSk7ZnVuY3Rpb24gcChlKXtpZihlLmtleT09PWBUYWJgJiZlLnNoaWZ0S2V5KXtuLm9uSXRlbVNoaWZ0VGFiKCk7cmV0dXJufWlmKGUudGFyZ2V0IT09ZS5jdXJyZW50VGFyZ2V0KXJldHVybjtsZXQgcj1MKGUsbi5vcmllbnRhdGlvbi52YWx1ZSxuLmRpci52YWx1ZSk7aWYociE9PXZvaWQgMCl7aWYoZS5tZXRhS2V5fHxlLmN0cmxLZXl8fGUuYWx0S2V5fHwhdC5hbGxvd1NoaWZ0S2V5JiZlLnNoaWZ0S2V5KXJldHVybjtlLnByZXZlbnREZWZhdWx0KCk7bGV0IGk9Wy4uLmQoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT5lLmRhdGFzZXQuZGlzYWJsZWQhPT1gYCldO2lmKHI9PT1gbGFzdGApaS5yZXZlcnNlKCk7ZWxzZSBpZihyPT09YHByZXZgfHxyPT09YG5leHRgKXtyPT09YHByZXZgJiZpLnJldmVyc2UoKTtsZXQgdD1pLmluZGV4T2YoZS5jdXJyZW50VGFyZ2V0KTtpPW4ubG9vcC52YWx1ZT96KGksdCsxKTppLnNsaWNlKHQrMSl9bygoKT0+UihpKSl9fXJldHVybihlLHQpPT4oQygpLHkoayhmKSxudWxsLHtkZWZhdWx0OmMoKCk9PltfKGsodykse3RhYmluZGV4OnMudmFsdWU/MDotMSwiZGF0YS1vcmllbnRhdGlvbiI6ayhuKS5vcmllbnRhdGlvbi52YWx1ZSwiZGF0YS1hY3RpdmUiOmUuYWN0aXZlP2BgOnZvaWQgMCwiZGF0YS1kaXNhYmxlZCI6ZS5mb2N1c2FibGU/dm9pZCAwOmBgLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsb25Nb3VzZWRvd246dFswXXx8PXQ9PntlLmZvY3VzYWJsZT9rKG4pLm9uSXRlbUZvY3VzKGkudmFsdWUpOnQucHJldmVudERlZmF1bHQoKX0sb25Gb2N1czp0WzFdfHw9ZT0+ayhuKS5vbkl0ZW1Gb2N1cyhpLnZhbHVlKSxvbktleWRvd246cH0se2RlZmF1bHQ6YygoKT0+W3goZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYHRhYmluZGV4YCxgZGF0YS1vcmllbnRhdGlvbmAsYGRhdGEtYWN0aXZlYCxgZGF0YS1kaXNhYmxlZGAsYGFzYCxgYXMtY2hpbGRgXSldKSxfOjN9KSl9fSksW1csR109aShgVGFic1Jvb3RgKSxLPUEoe19fbmFtZTpgVGFic1Jvb3RgLHByb3BzOntkZWZhdWx0VmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sb3JpZW50YXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGhvcml6b250YWxgfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhY3RpdmF0aW9uTW9kZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYXV0b21hdGljYH0sbW9kZWxWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKG4se2VtaXQ6cn0pe2xldCBpPW4sbz1yLHtvcmllbnRhdGlvbjpzLHVubW91bnRPbkhpZGU6bCxkaXI6dX09UyhpKSxmPWUodSk7dCgpO2xldCBwPWQoaSxgbW9kZWxWYWx1ZWAsbyx7ZGVmYXVsdFZhbHVlOmkuZGVmYXVsdFZhbHVlLHBhc3NpdmU6aS5tb2RlbFZhbHVlPT09dm9pZCAwfSksbT12KCksaD1iKG5ldyBTZXQpO3JldHVybiBHKHttb2RlbFZhbHVlOnAsY2hhbmdlTW9kZWxWYWx1ZTplPT57cC52YWx1ZT1lfSxvcmllbnRhdGlvbjpzLGRpcjpmLHVubW91bnRPbkhpZGU6bCxhY3RpdmF0aW9uTW9kZTppLmFjdGl2YXRpb25Nb2RlLGJhc2VJZDphKHZvaWQgMCxgcmVrYS10YWJzYCksdGFic0xpc3Q6bSxjb250ZW50SWRzOmgscmVnaXN0ZXJDb250ZW50OmU9PntoLnZhbHVlPW5ldyBTZXQoWy4uLmgudmFsdWUsZV0pfSx1bnJlZ2lzdGVyQ29udGVudDplPT57bGV0IHQ9bmV3IFNldChoLnZhbHVlKTt0LmRlbGV0ZShlKSxoLnZhbHVlPXR9fSksKGUsdCk9PihDKCkseShrKHcpLHtkaXI6ayhmKSwiZGF0YS1vcmllbnRhdGlvbiI6ayhzKSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzfSx7ZGVmYXVsdDpjKCgpPT5beChlLiRzbG90cyxgZGVmYXVsdGAse21vZGVsVmFsdWU6ayhwKX0pXSksXzozfSw4LFtgZGlyYCxgZGF0YS1vcmllbnRhdGlvbmAsYGFzLWNoaWxkYCxgYXNgXSkpfX0pO2Z1bmN0aW9uIHEoZSx0KXtyZXR1cm5gJHtlfS10cmlnZ2VyLSR7dH1gfWZ1bmN0aW9uIEooZSx0KXtyZXR1cm5gJHtlfS1jb250ZW50LSR7dH1gfXZhciBZPUEoe19fbmFtZTpgVGFic0xpc3RgLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0e2xvb3A6bn09UyhlKSx7Zm9yd2FyZFJlZjpyLGN1cnJlbnRFbGVtZW50Oml9PXQoKSxhPVcoKTtyZXR1cm4gYS50YWJzTGlzdD1pLChlLHQpPT4oQygpLHkoayhIKSx7ImFzLWNoaWxkIjpgYCxvcmllbnRhdGlvbjprKGEpLm9yaWVudGF0aW9uLnZhbHVlLGRpcjprKGEpLmRpci52YWx1ZSxsb29wOmsobil9LHtkZWZhdWx0OmMoKCk9PltfKGsodykse3JlZjprKHIpLHJvbGU6YHRhYmxpc3RgLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXMsImFyaWEtb3JpZW50YXRpb24iOmsoYSkub3JpZW50YXRpb24udmFsdWV9LHtkZWZhdWx0OmMoKCk9Plt4KGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYCxgYXJpYS1vcmllbnRhdGlvbmBdKV0pLF86M30sOCxbYG9yaWVudGF0aW9uYCxgZGlyYCxgbG9vcGBdKSl9fSksWD1BKHtfX25hbWU6YFRhYnNUcmlnZ2VyYCxwcm9wczp7dmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBidXR0b25gfX0sc2V0dXAoZSl7bGV0IG49ZSx7Zm9yd2FyZFJlZjpyfT10KCksaT1XKCksYT1EKCgpPT5xKGkuYmFzZUlkLG4udmFsdWUpKSxvPUQoKCk9PmkuY29udGVudElkcy52YWx1ZS5oYXMobi52YWx1ZSk/SihpLmJhc2VJZCxuLnZhbHVlKTp2b2lkIDApLHM9RCgoKT0+bi52YWx1ZT09PWkubW9kZWxWYWx1ZS52YWx1ZSk7cmV0dXJuKGUsdCk9PihDKCkseShrKFUpLHsiYXMtY2hpbGQiOmBgLGZvY3VzYWJsZTohZS5kaXNhYmxlZCxhY3RpdmU6cy52YWx1ZX0se2RlZmF1bHQ6YygoKT0+W18oayh3KSx7aWQ6YS52YWx1ZSxyZWY6ayhyKSxyb2xlOmB0YWJgLHR5cGU6ZS5hcz09PWBidXR0b25gP2BidXR0b25gOnZvaWQgMCxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLCJhcmlhLXNlbGVjdGVkIjpzLnZhbHVlP2B0cnVlYDpgZmFsc2VgLCJhcmlhLWNvbnRyb2xzIjpvLnZhbHVlLCJkYXRhLXN0YXRlIjpzLnZhbHVlP2BhY3RpdmVgOmBpbmFjdGl2ZWAsZGlzYWJsZWQ6ZS5kaXNhYmxlZCwiZGF0YS1kaXNhYmxlZCI6ZS5kaXNhYmxlZD9gYDp2b2lkIDAsImRhdGEtb3JpZW50YXRpb24iOmsoaSkub3JpZW50YXRpb24udmFsdWUsb25Nb3VzZWRvd246dFswXXx8PWcodD0+eyFlLmRpc2FibGVkJiZ0LmN0cmxLZXk9PT0hMT9rKGkpLmNoYW5nZU1vZGVsVmFsdWUoZS52YWx1ZSk6dC5wcmV2ZW50RGVmYXVsdCgpfSxbYGxlZnRgXSksb25LZXlkb3duOnRbMV18fD1tKHQ9PmsoaSkuY2hhbmdlTW9kZWxWYWx1ZShlLnZhbHVlKSxbYGVudGVyYCxgc3BhY2VgXSksb25Gb2N1czp0WzJdfHw9KCk9PntsZXQgdD1rKGkpLmFjdGl2YXRpb25Nb2RlIT09YG1hbnVhbGA7IXMudmFsdWUmJiFlLmRpc2FibGVkJiZ0JiZrKGkpLmNoYW5nZU1vZGVsVmFsdWUoZS52YWx1ZSl9fSx7ZGVmYXVsdDpjKCgpPT5beChlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgaWRgLGB0eXBlYCxgYXNgLGBhcy1jaGlsZGAsYGFyaWEtc2VsZWN0ZWRgLGBhcmlhLWNvbnRyb2xzYCxgZGF0YS1zdGF0ZWAsYGRpc2FibGVkYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gXSldKSxfOjN9LDgsW2Bmb2N1c2FibGVgLGBhY3RpdmVgXSkpfX0pLFo9QSh7X19uYW1lOmBUYWJzYCxwcm9wczp7ZGVmYXVsdFZhbHVlOnt9LG9yaWVudGF0aW9uOnt9LGRpcjp7fSxhY3RpdmF0aW9uTW9kZTp7fSxtb2RlbFZhbHVlOnt9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCByPWUsaT10LGE9cChyLGBjbGFzc2ApLG89bihhLGkpO3JldHVybihlLHQpPT4oQygpLHkoayhLKSxoKHsiZGF0YS1zbG90IjpgdGFic2AsImRhdGEtb3JpZW50YXRpb24iOmsobykub3JpZW50YXRpb258fGBob3Jpem9udGFsYH0sayhvKSx7Y2xhc3M6ayhzKShgZ2FwLTIgZ3JvdXAvdGFicyBmbGV4IGRhdGEtaG9yaXpvbnRhbDpmbGV4LWNvbGAsci5jbGFzcyl9KSx7ZGVmYXVsdDpjKHQ9Plt4KGUuJHNsb3RzLGBkZWZhdWx0YCxmKFQodCkpKV0pLF86M30sMTYsW2BkYXRhLW9yaWVudGF0aW9uYCxgY2xhc3NgXSkpfX0pLFE9QSh7X19uYW1lOmBUYWJzTGlzdGAscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSx2YXJpYW50OntkZWZhdWx0OmBkZWZhdWx0YH19LHNldHVwKGUpe2xldCB0PWUsbj1wKHQsYGNsYXNzYCxgdmFyaWFudGApO3JldHVybihyLGkpPT4oQygpLHkoayhZKSxoKHsiZGF0YS1zbG90IjpgdGFicy1saXN0YCwiZGF0YS12YXJpYW50IjplLnZhcmlhbnR9LGsobikse2NsYXNzOmsocykoayhlZSkoe3ZhcmlhbnQ6ZS52YXJpYW50fSksdC5jbGFzcyl9KSx7ZGVmYXVsdDpjKCgpPT5beChyLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGRhdGEtdmFyaWFudGAsYGNsYXNzYF0pKX19KSwkPUEoe19fbmFtZTpgVGFic1RyaWdnZXJgLHByb3BzOnt2YWx1ZTp7fSxkaXNhYmxlZDp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lLG49cCh0LGBjbGFzc2ApLGk9cihuKTtyZXR1cm4oZSxuKT0+KEMoKSx5KGsoWCksaCh7ImRhdGEtc2xvdCI6YHRhYnMtdHJpZ2dlcmAsY2xhc3M6ayhzKShgZ2FwLTEuNSByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgcHgtMS41IHB5LTAuNSB0ZXh0LXNtIGZvbnQtbWVkaXVtIGdyb3VwLWRhdGEtW3ZhcmlhbnQ9ZGVmYXVsdF0vdGFicy1saXN0OmRhdGEtYWN0aXZlOnNoYWRvdy1zbSBncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpkYXRhLWFjdGl2ZTpzaGFkb3ctbm9uZSBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS00IGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTEgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0xIHJlbGF0aXZlIGlubGluZS1mbGV4IGgtW2NhbGMoMTAwJS0xcHgpXSBmbGV4LTEgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHdoaXRlc3BhY2Utbm93cmFwIHRleHQtZm9yZWdyb3VuZC82MCB0cmFuc2l0aW9uLWFsbCBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpmbGV4LW5vbmUgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOnctZnVsbCBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6anVzdGlmeS1zdGFydCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctMyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBmb2N1cy12aXNpYmxlOm91dGxpbmUtMSBmb2N1cy12aXNpYmxlOm91dGxpbmUtcmluZyBkaXNhYmxlZDpwb2ludGVyLWV2ZW50cy1ub25lIGRpc2FibGVkOm9wYWNpdHktNTAgZGFyazp0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazpob3Zlcjp0ZXh0LWZvcmVncm91bmQgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBgLGBncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpiZy10cmFuc3BhcmVudCBncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpkYXRhLWFjdGl2ZTpiZy10cmFuc3BhcmVudCBkYXJrOmdyb3VwLWRhdGEtW3ZhcmlhbnQ9bGluZV0vdGFicy1saXN0OmRhdGEtYWN0aXZlOmJvcmRlci10cmFuc3BhcmVudCBkYXJrOmdyb3VwLWRhdGEtW3ZhcmlhbnQ9bGluZV0vdGFicy1saXN0OmRhdGEtYWN0aXZlOmJnLXRyYW5zcGFyZW50YCxgZGF0YS1hY3RpdmU6YmctYmFja2dyb3VuZCBkYXRhLWFjdGl2ZTp0ZXh0LWZvcmVncm91bmQgZGFyazpkYXRhLWFjdGl2ZTpib3JkZXItaW5wdXQgZGFyazpkYXRhLWFjdGl2ZTpiZy1pbnB1dC8zMCBkYXJrOmRhdGEtYWN0aXZlOnRleHQtZm9yZWdyb3VuZGAsYGFmdGVyOmFic29sdXRlIGFmdGVyOmJnLWZvcmVncm91bmQgYWZ0ZXI6b3BhY2l0eS0wIGFmdGVyOnRyYW5zaXRpb24tb3BhY2l0eSBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczphZnRlcjppbnNldC14LTAgZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6YWZ0ZXI6Ym90dG9tLVstNXB4XSBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczphZnRlcjpoLTAuNSBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6YWZ0ZXI6aW5zZXQteS0wIGdyb3VwLWRhdGEtdmVydGljYWwvdGFiczphZnRlcjotcmlnaHQtMSBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6YWZ0ZXI6dy0wLjUgZ3JvdXAtZGF0YS1bdmFyaWFudD1saW5lXS90YWJzLWxpc3Q6ZGF0YS1hY3RpdmU6YWZ0ZXI6b3BhY2l0eS0xMDBgLHQuY2xhc3MpfSxrKGkpKSx7ZGVmYXVsdDpjKCgpPT5beChlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSxlZT1PKGByb3VuZGVkLWxnIHAtMC43NSBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpoLTggZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6bWF4LXctZnVsbCBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpqdXN0aWZ5LXN0YXJ0IGdyb3VwLWRhdGEtaG9yaXpvbnRhbC90YWJzOm92ZXJmbG93LXgtYXV0byBncm91cC1kYXRhLWhvcml6b250YWwvdGFiczpvdmVyZmxvdy15LWhpZGRlbiBkYXRhLVt2YXJpYW50PWxpbmVdOnJvdW5kZWQtbm9uZSBncm91cC90YWJzLWxpc3QgaW5saW5lLWZsZXggdy1maXQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6aC1maXQgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOmZsZXgtY29sYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLW11dGVkYCxsaW5lOmBnYXAtMSBiZy10cmFuc3BhcmVudGB9fSxkZWZhdWx0VmFyaWFudHM6e3ZhcmlhbnQ6YGRlZmF1bHRgfX0pO2V4cG9ydHtRIGFzIG4sWiBhcyByLCQgYXMgdH07",
),
},
"usage-bars-BJOYHsuR.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e2IgYXMgZSxsIGFzIHQscyBhcyBufWZyb20iLi9iYWRnZS1CSkxnLVIzTS5qcyI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hTnVtYmVyLmlzRmluaXRlKGUpfHxlPC44P2Bub3JtYWxgOmU8MT9gYW1iZXJgOmByZWRgfXZhciBpPXtyZXFNaW46YHJlcS9taW5gLHJlcURheTpgcmVxL2RheWAsdG9rRGF5OmB0b2tlbnMgKGluK291dCkvZGF5YCx0b2tNb250aDpgdG9rZW5zIChpbitvdXQpL21vbnRoYCxjb3N0RGF5OmBjb3N0L2RheWAsY29zdE1vbnRoOmBjb3N0L21vbnRoYH07ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJue2lkOmUsdXNlZDp0LGxpbWl0Om4scmF0aW86dC9ufX1mdW5jdGlvbiBvKHQpe2xldCBuPXQubGltaXRzO2lmKCFufHx0LnN0b3JlRG93bilyZXR1cm5bXTtsZXQgcj1bXTtpZihuLnJlcXVlc3RzUGVyTWludXRlJiZyLnB1c2goYShgcmVxTWluYCx0LnJlcXVlc3RzUGVyTWludXRlLG4ucmVxdWVzdHNQZXJNaW51dGUpKSxuLnJlcXVlc3RzUGVyRGF5JiZyLnB1c2goYShgcmVxRGF5YCx0LnJlcXVlc3RzUGVyRGF5LG4ucmVxdWVzdHNQZXJEYXkpKSxuLnRva2Vuc1BlckRheSYmci5wdXNoKGEoYHRva0RheWAsdC50b2tlbnNJblBlckRheSt0LnRva2Vuc091dFBlckRheSxuLnRva2Vuc1BlckRheSkpLG4udG9rZW5zUGVyTW9udGgmJnIucHVzaChhKGB0b2tNb250aGAsdC50b2tlbnNJblBlck1vbnRoK3QudG9rZW5zT3V0UGVyTW9udGgsbi50b2tlbnNQZXJNb250aCkpLG4uY29zdFBlckRheVVTRCl7bGV0IGk9ZShuLmNvc3RQZXJEYXlVU0QpO2k+MCYmci5wdXNoKGEoYGNvc3REYXlgLHQuY29zdFBlckRheU1pY3JvVXNkLGkpKX1pZihuLmNvc3RQZXJNb250aFVTRCl7bGV0IGk9ZShuLmNvc3RQZXJNb250aFVTRCk7aT4wJiZyLnB1c2goYShgY29zdE1vbnRoYCx0LmNvc3RQZXJNb250aE1pY3JvVXNkLGkpKX1yZXR1cm4gcn1mdW5jdGlvbiBzKGUpe3JldHVybiBlLmlkLnN0YXJ0c1dpdGgoYGNvc3RgKT9gJHtuKGUudXNlZCl9IC8gJHtuKGUubGltaXQpfWA6YCR7dChlLnVzZWQpfSAvICR7dChlLmxpbWl0KX1gfWV4cG9ydHtyIGFzIGksbyBhcyBuLHMgYXMgcixpIGFzIHR9Ow==",
),
},
"useCopyFeedback-CjRzOO-W.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e2NpIGFzIGUsbnIgYXMgdH1mcm9tIi4vU2tlbGV0b24tRDBObnZIWTEuanMiO3ZhciBuPTE1MDA7ZnVuY3Rpb24gcigpe2xldCByPWUoYGlkbGVgKSxpO2Z1bmN0aW9uIGEoZSl7ci52YWx1ZT1lLGNsZWFyVGltZW91dChpKSxpPXNldFRpbWVvdXQoKCk9PntyLnZhbHVlPWBpZGxlYH0sbil9cmV0dXJuIHQoKCk9PmNsZWFyVGltZW91dChpKSkse3N0YXRlOnIsc2V0OmF9fWV4cG9ydHtyIGFzIHR9Ow==",
),
},
"useId-TcXBwUOh.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0eyRuIGFzIGUsJHIgYXMgdCwkdCBhcyBuLEFuIGFzIHIsQXIgYXMgaSxBdCBhcyBhLEJuIGFzIG8sQnIgYXMgZWUsQnQgYXMgdGUsQ2kgYXMgbmUsQ24gYXMgcmUsQ3IgYXMgaWUsQ3QgYXMgYWUsRG4gYXMgcyxEciBhcyBvZSxEdCBhcyBzZSxFbiBhcyBjZSxFciBhcyBsZSxFdCBhcyB1ZSxGbiBhcyBkZSxGciBhcyBmZSxGdCBhcyBwZSxHbiBhcyBtZSxHciBhcyBoZSxHdCBhcyBjLEhuIGFzIGwsSHIgYXMgdSxIdCBhcyBkLEluIGFzIGYsSXIgYXMgcCxJdCBhcyBtLEpuIGFzIGgsSnIgYXMgZyxKdCBhcyBfLEtuIGFzIHYsS3IgYXMgeSxLdCBhcyBiLExuIGFzIHgsTHIgYXMgUyxMdCBhcyBDLE1uIGFzIHcsTXIgYXMgVCxNdCBhcyBFLE5uIGFzIEQsTnIgYXMgTyxOdCBhcyBrLE9uIGFzIEEsT3IgYXMgaixPdCBhcyBNLFAgYXMgTixQbiBhcyBQLFByIGFzIEYsUHQgYXMgSSxRbiBhcyBMLFFyIGFzIFIsUXQgYXMgZ2UsUm4gYXMgeixSciBhcyBfZSxSdCBhcyB2ZSxTaSBhcyB5ZSxTbiBhcyBiZSxTciBhcyB4ZSxTdCBhcyBTZSxUaSBhcyBCLFRuIGFzIENlLFRyIGFzIHdlLFR0IGFzIFRlLFVuIGFzIEVlLFVyIGFzIERlLFV0IGFzIE9lLFZuIGFzIGtlLFZyIGFzIEFlLFZ0IGFzIGplLFduIGFzIE1lLFdyIGFzIE5lLFd0IGFzIFBlLFhuIGFzIEZlLFhyIGFzIEllLFh0IGFzIExlLFluIGFzIFJlLFlyIGFzIHplLFl0IGFzIEJlLFpuIGFzIFZlLFpyIGFzIEhlLFp0IGFzIFVlLF9pIGFzIFYsX24gYXMgV2UsX3IgYXMgR2UsYWkgYXMgS2UsYW4gYXMgcWUsYXIgYXMgSmUsYmkgYXMgWWUsYm4gYXMgWGUsYnIgYXMgWmUsY2kgYXMgSCxjbiBhcyBRZSxjciBhcyBVLGRpIGFzICRlLGRuIGFzIGV0LGRyIGFzIHR0LGVpIGFzIG50LGVuIGFzIHJ0LGVyIGFzIGl0LGZpIGFzIGF0LGZuIGFzIG90LGZyIGFzIHN0LGdpIGFzIGN0LGduIGFzIGx0LGdyIGFzIHV0LGhpIGFzIGR0LGhuIGFzIGZ0LGhyIGFzIHB0LGlpIGFzIG10LGluIGFzIGh0LGlyIGFzIGd0LGpuIGFzIF90LGpyIGFzIHZ0LGp0IGFzIHl0LGtuIGFzIGJ0LGtyIGFzIHh0LGt0IGFzIFN0LGxpIGFzIEN0LGxuIGFzIHd0LGxyIGFzIFR0LG1pIGFzIFcsbW4gYXMgRXQsbXIgYXMgRHQsbmkgYXMgT3Qsbm4gYXMga3QsbnIgYXMgQXQsb2kgYXMganQsb24gYXMgRyxvciBhcyBLLHBpIGFzIE10LHBuIGFzIE50LHByIGFzIFB0LHFuIGFzIEZ0LHFyIGFzIEl0LHF0IGFzIEx0LHJpIGFzIFJ0LHJuIGFzIHp0LHJyIGFzIHEsc2kgYXMgQnQsc24gYXMgVnQsc3IgYXMgSHQsdGkgYXMgVXQsdG4gYXMgV3QsdHIgYXMgR3QsdWkgYXMgS3QsdW4gYXMgcXQsdXIgYXMgSnQsdmkgYXMgWXQsdm4gYXMgWHQsdnIgYXMgWnQsd2kgYXMgUXQsd24gYXMgJHQsd3IgYXMgSix3dCBhcyBlbix4aSBhcyB0bix4biBhcyBubix4ciBhcyBybix4dCBhcyBhbix5aSBhcyBZLHluIGFzIG9uLHlyIGFzIHNuLHpuIGFzIGNuLHpyIGFzIGxuLHp0IGFzIHVufWZyb20iLi9Ta2VsZXRvbi1EME5udkhZMS5qcyI7dmFyIFg9T2JqZWN0LmRlZmluZVByb3BlcnR5LGRuPSgoZSx0KT0+e2xldCBuPXt9O2Zvcih2YXIgciBpbiBlKVgobixyLHtnZXQ6ZVtyXSxlbnVtZXJhYmxlOiEwfSk7cmV0dXJuIHR8fFgobixTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOmBNb2R1bGVgfSksbn0pKHtCYXNlVHJhbnNpdGlvbjooKT0+YyxCYXNlVHJhbnNpdGlvblByb3BzVmFsaWRhdG9yczooKT0+YixDb21tZW50OigpPT5MdCxEZXByZWNhdGlvblR5cGVzOigpPT5udWxsLEVmZmVjdFNjb3BlOigpPT51LEVycm9yQ29kZXM6KCk9Pl8sRXJyb3JUeXBlU3RyaW5nczooKT0+QmUsRnJhZ21lbnQ6KCk9PkxlLEtlZXBBbGl2ZTooKT0+VWUsUmVhY3RpdmVFZmZlY3Q6KCk9PkRlLFN0YXRpYzooKT0+Z2UsU3VzcGVuc2U6KCk9Pm4sVGVsZXBvcnQ6KCk9PnJ0LFRleHQ6KCk9Pld0LFRyYWNrT3BUeXBlczooKT0+TmUsVHJhbnNpdGlvbjooKT0+YW4sVHJhbnNpdGlvbkdyb3VwOigpPT5TZSxUcmlnZ2VyT3BUeXBlczooKT0+aGUsVnVlRWxlbWVudDooKT0+YWUsYXNzZXJ0TnVtYmVyOigpPT5rdCxjYWxsV2l0aEFzeW5jRXJyb3JIYW5kbGluZzooKT0+enQsY2FsbFdpdGhFcnJvckhhbmRsaW5nOigpPT5odCxjYW1lbGl6ZTooKT0+WSxjYXBpdGFsaXplOigpPT5ZZSxjbG9uZVZOb2RlOigpPT5xZSxjb21wYXRVdGlsczooKT0+bnVsbCxjb21waWxlOigpPT5mbixjb21wdXRlZDooKT0+RyxjcmVhdGVBcHA6KCk9PmVuLGNyZWF0ZUJsb2NrOigpPT5RZSxjcmVhdGVDb21tZW50Vk5vZGU6KCk9Pnd0LGNyZWF0ZUVsZW1lbnRCbG9jazooKT0+cXQsY3JlYXRlRWxlbWVudFZOb2RlOigpPT5WdCxjcmVhdGVIeWRyYXRpb25SZW5kZXJlcjooKT0+ZXQsY3JlYXRlUHJvcHNSZXN0UHJveHk6KCk9Pm90LGNyZWF0ZVJlbmRlcmVyOigpPT5OdCxjcmVhdGVTU1JBcHA6KCk9PlRlLGNyZWF0ZVNsb3RzOigpPT5FdCxjcmVhdGVTdGF0aWNWTm9kZTooKT0+ZnQsY3JlYXRlVGV4dFZOb2RlOigpPT5sdCxjcmVhdGVWTm9kZTooKT0+V2UsY3VzdG9tUmVmOigpPT55LGRlZmluZUFzeW5jQ29tcG9uZW50OigpPT5YdCxkZWZpbmVDb21wb25lbnQ6KCk9Pm9uLGRlZmluZUN1c3RvbUVsZW1lbnQ6KCk9PnVlLGRlZmluZUVtaXRzOigpPT5YZSxkZWZpbmVFeHBvc2U6KCk9Pm5uLGRlZmluZU1vZGVsOigpPT5iZSxkZWZpbmVPcHRpb25zOigpPT5yZSxkZWZpbmVQcm9wczooKT0+JHQsZGVmaW5lU1NSQ3VzdG9tRWxlbWVudDooKT0+c2UsZGVmaW5lU2xvdHM6KCk9PkNlLGRldnRvb2xzOigpPT5jZSxlZmZlY3Q6KCk9Pkl0LGVmZmVjdFNjb3BlOigpPT5nLGdldEN1cnJlbnRJbnN0YW5jZTooKT0+cyxnZXRDdXJyZW50U2NvcGU6KCk9PnplLGdldEN1cnJlbnRXYXRjaGVyOigpPT5JZSxnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW46KCk9PkEsZ3VhcmRSZWFjdGl2ZVByb3BzOigpPT5idCxoOigpPT5yLGhhbmRsZUVycm9yOigpPT5fdCxoYXNJbmplY3Rpb25Db250ZXh0OigpPT53LGh5ZHJhdGU6KCk9Pk0saHlkcmF0ZU9uSWRsZTooKT0+RCxoeWRyYXRlT25JbnRlcmFjdGlvbjooKT0+UCxoeWRyYXRlT25NZWRpYVF1ZXJ5OigpPT5kZSxoeWRyYXRlT25WaXNpYmxlOigpPT5mLGluaXRDdXN0b21Gb3JtYXR0ZXI6KCk9PngsaW5pdERpcmVjdGl2ZXNGb3JTU1I6KCk9PlN0LGluamVjdDooKT0+eixpc01lbW9TYW1lOigpPT5jbixpc1Byb3h5OigpPT5IZSxpc1JlYWN0aXZlOigpPT5SLGlzUmVhZG9ubHk6KCk9PnQsaXNSZWY6KCk9Pm50LGlzUnVudGltZU9ubHk6KCk9Pm8saXNTaGFsbG93OigpPT5VdCxpc1ZOb2RlOigpPT5rZSxtYXJrUmF3OigpPT5PdCxtZXJnZURlZmF1bHRzOigpPT5sLG1lcmdlTW9kZWxzOigpPT5FZSxtZXJnZVByb3BzOigpPT5NZSxuZXh0VGljazooKT0+bWUsbm9kZU9wczooKT0+YSxub3JtYWxpemVDbGFzczooKT0+dG4sbm9ybWFsaXplUHJvcHM6KCk9PnllLG5vcm1hbGl6ZVN0eWxlOigpPT5uZSxvbkFjdGl2YXRlZDooKT0+dixvbkJlZm9yZU1vdW50OigpPT5GdCxvbkJlZm9yZVVubW91bnQ6KCk9Pmgsb25CZWZvcmVVcGRhdGU6KCk9PlJlLG9uRGVhY3RpdmF0ZWQ6KCk9PkZlLG9uRXJyb3JDYXB0dXJlZDooKT0+VmUsb25Nb3VudGVkOigpPT5MLG9uUmVuZGVyVHJhY2tlZDooKT0+ZSxvblJlbmRlclRyaWdnZXJlZDooKT0+aXQsb25TY29wZURpc3Bvc2U6KCk9PlJ0LG9uU2VydmVyUHJlZmV0Y2g6KCk9Pkd0LG9uVW5tb3VudGVkOigpPT5BdCxvblVwZGF0ZWQ6KCk9PnEsb25XYXRjaGVyQ2xlYW51cDooKT0+bXQsb3BlbkJsb2NrOigpPT5ndCxwYXRjaFByb3A6KCk9Pnl0LHBvcFNjb3BlSWQ6KCk9PkplLHByb3ZpZGU6KCk9PksscHJveHlSZWZzOigpPT5LZSxwdXNoU2NvcGVJZDooKT0+SHQscXVldWVQb3N0Rmx1c2hDYjooKT0+VSxyZWFjdGl2ZTooKT0+anQscmVhZG9ubHk6KCk9PkJ0LHJlZjooKT0+SCxyZWdpc3RlclJ1bnRpbWVDb21waWxlcjooKT0+VHQscmVuZGVyOigpPT5FLHJlbmRlckxpc3Q6KCk9Pkp0LHJlbmRlclNsb3Q6KCk9PnR0LHJlc29sdmVDb21wb25lbnQ6KCk9PnN0LHJlc29sdmVEaXJlY3RpdmU6KCk9PlB0LHJlc29sdmVEeW5hbWljQ29tcG9uZW50OigpPT5EdCxyZXNvbHZlRmlsdGVyOigpPT5udWxsLHJlc29sdmVUcmFuc2l0aW9uSG9va3M6KCk9PnB0LHNldEJsb2NrVHJhY2tpbmc6KCk9PnV0LHNldERldnRvb2xzSG9vazooKT0+R2Usc2V0VHJhbnNpdGlvbkhvb2tzOigpPT5adCxzaGFsbG93UmVhY3RpdmU6KCk9PkN0LHNoYWxsb3dSZWFkb25seTooKT0+S3Qsc2hhbGxvd1JlZjooKT0+JGUsc3NyQ29udGV4dEtleTooKT0+c24sc3NyVXRpbHM6KCk9PlplLHN0b3A6KCk9PmF0LHRvRGlzcGxheVN0cmluZzooKT0+UXQsdG9IYW5kbGVyS2V5OigpPT5CLHRvSGFuZGxlcnM6KCk9PnJuLHRvUmF3OigpPT5NdCx0b1JlZjooKT0+Vyx0b1JlZnM6KCk9PmR0LHRvVmFsdWU6KCk9PmN0LHRyYW5zZm9ybVZOb2RlQXJnczooKT0+eGUsdHJpZ2dlclJlZjooKT0+Vix1bnJlZjooKT0+WXQsdXNlQXR0cnM6KCk9PmllLHVzZUNzc01vZHVsZTooKT0+ayx1c2VDc3NWYXJzOigpPT5JLHVzZUhvc3Q6KCk9PnBlLHVzZUlkOigpPT5KLHVzZU1vZGVsOigpPT53ZSx1c2VTU1JDb250ZXh0OigpPT5sZSx1c2VTaGFkb3dSb290OigpPT5tLHVzZVNsb3RzOigpPT5vZSx1c2VUZW1wbGF0ZVJlZjooKT0+aix1c2VUcmFuc2l0aW9uU3RhdGU6KCk9Pnh0LHZNb2RlbENoZWNrYm94OigpPT5DLHZNb2RlbER5bmFtaWM6KCk9PnZlLHZNb2RlbFJhZGlvOigpPT51bix2TW9kZWxTZWxlY3Q6KCk9PnRlLHZNb2RlbFRleHQ6KCk9PmplLHZTaG93OigpPT5kLHZlcnNpb246KCk9Pmksd2FybjooKT0+dnQsd2F0Y2g6KCk9PlQsd2F0Y2hFZmZlY3Q6KCk9Pk8sd2F0Y2hQb3N0RWZmZWN0OigpPT5GLHdhdGNoU3luY0VmZmVjdDooKT0+ZmUsd2l0aEFzeW5jQ29udGV4dDooKT0+cCx3aXRoQ3R4OigpPT5TLHdpdGhEZWZhdWx0czooKT0+X2Usd2l0aERpcmVjdGl2ZXM6KCk9PmxuLHdpdGhLZXlzOigpPT5PZSx3aXRoTWVtbzooKT0+ZWUsd2l0aE1vZGlmaWVyczooKT0+UGUsd2l0aFNjb3BlSWQ6KCk9PkFlfSksZm49KCk9Pnt9O2Z1bmN0aW9uIFooZSx0KXtsZXQgbj10eXBlb2YgZT09YHN0cmluZ2AmJiF0P2Ake2V9Q29udGV4dGA6dCxyPVN5bWJvbChuKTtyZXR1cm5bdD0+e2xldCBuPXoocix0KTtpZihufHxuPT09bnVsbClyZXR1cm4gbjt0aHJvdyBFcnJvcihgSW5qZWN0aW9uIFxgJHtyLnRvU3RyaW5nKCl9XGAgbm90IGZvdW5kLiBDb21wb25lbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiAke0FycmF5LmlzQXJyYXkoZSk/YG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6ICR7ZS5qb2luKGAsIGApfWA6YFxgJHtlfVxgYH1gKX0sZT0+KEsocixlKSxlKV19dmFyW1EscG5dPVooYENvbmZpZ1Byb3ZpZGVyYCk7ZnVuY3Rpb24gbW4oZSl7bGV0IHQ9USh7ZGlyOkgoYGx0cmApfSk7cmV0dXJuIEcoKCk9PmU/LnZhbHVlfHx0LmRpcj8udmFsdWV8fGBsdHJgKX1mdW5jdGlvbiBobihlKXtsZXQgdD1zKCksbj10Py50eXBlLmVtaXRzLHI9e307cmV0dXJuIG4/Lmxlbmd0aHx8Y29uc29sZS53YXJuKGBObyBlbWl0dGVkIGV2ZW50IGZvdW5kLiBQbGVhc2UgY2hlY2sgY29tcG9uZW50OiAke3Q/LnR5cGUuX19uYW1lfWApLG4/LmZvckVhY2godD0+e3JbQihZKHQpKV09KC4uLm4pPT5lKHQsLi4ubil9KSxyfWZ1bmN0aW9uIGduKCl7bGV0IGU9cygpLHQ9SCgpLG49RygoKT0+cigpKTtxKCgpPT57bi52YWx1ZSE9PXIoKSYmVih0KX0pO2Z1bmN0aW9uIHIoKXtyZXR1cm4gdC52YWx1ZSYmYCRlbGBpbiB0LnZhbHVlJiZbYCN0ZXh0YCxgI2NvbW1lbnRgXS5pbmNsdWRlcyh0LnZhbHVlLiRlbC5ub2RlTmFtZSk/dC52YWx1ZS4kZWwubmV4dEVsZW1lbnRTaWJsaW5nOk4odCl9bGV0IGk9T2JqZWN0LmFzc2lnbih7fSxlLmV4cG9zZWQpLGE9e307Zm9yKGxldCB0IGluIGUucHJvcHMpT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5lLnByb3BzW3RdfSk7aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApZm9yKGxldCBlIGluIGkpT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5pW2VdfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD1hO2Z1bmN0aW9uIG8obil7aWYodC52YWx1ZT1uLG4mJihPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiJGVsIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5uIGluc3RhbmNlb2YgRWxlbWVudD9uOm4uJGVsfSksIShuIGluc3RhbmNlb2YgRWxlbWVudCkmJiFPYmplY3QuaGFzT3duKG4sYCRlbGApKSl7bGV0IHQ9bi4kLmV4cG9zZWQscj1PYmplY3QuYXNzaWduKHt9LGEpO2ZvcihsZXQgZSBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+dFtlXX0pO2UuZXhwb3NlZD1yfX1yZXR1cm57Zm9yd2FyZFJlZjpvLGN1cnJlbnRSZWY6dCxjdXJyZW50RWxlbWVudDpufX1mdW5jdGlvbiAkKGUpe2xldCB0PXMoKSxuPU9iamVjdC5rZXlzKHQ/LnR5cGUucHJvcHM/P3t9KS5yZWR1Y2UoKGUsbik9PntsZXQgcj0odD8udHlwZS5wcm9wc1tuXSkuZGVmYXVsdDtyZXR1cm4gciE9PXZvaWQgMCYmKGVbbl09ciksZX0se30pLHI9VyhlKTtyZXR1cm4gRygoKT0+e2xldCBlPXt9LGk9dD8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyhpKS5mb3JFYWNoKHQ9PntlW1kodCldPWlbdF19KSxPYmplY3Qua2V5cyh7Li4ubiwuLi5lfSkucmVkdWNlKChlLHQpPT4oci52YWx1ZVt0XSE9PXZvaWQgMCYmKGVbdF09ci52YWx1ZVt0XSksZSkse30pfSl9ZnVuY3Rpb24gX24oZSx0KXtsZXQgbj0kKGUpLHI9dD9obih0KTp7fTtyZXR1cm4gRygoKT0+KHsuLi5uLnZhbHVlLC4uLnJ9KSl9dmFyIHZuPTA7ZnVuY3Rpb24geW4oZSx0PWByZWthYCl7aWYoZSlyZXR1cm4gZTtsZXQgbixyPVEoe3VzZUlkOnZvaWQgMH0pO3JldHVybiBuPXIudXNlSWQ/ci51c2VJZCgpOmB1c2VJZGBpbiBkbj9KPy4oKTpgJHsrK3ZufWAsdD9gJHt0fS0ke259YDpufWV4cG9ydHttbiBhcyBhLGduIGFzIGksX24gYXMgbixRIGFzIG8sJCBhcyByLFogYXMgcyx5biBhcyB0fTs=",
),
},
"useSearchQuery-BSkC8bGd.js": {
contentType: "text/javascript; charset=utf-8",
body: decodeAdminAsset(
"aW1wb3J0e0sgYXMgZSxMciBhcyB0LE8gYXMgbixfbiBhcyByLF90IGFzIGksY2kgYXMgYSxjbiBhcyBvLGZyIGFzIHMsZnQgYXMgYyxpciBhcyBsLGxuIGFzIHUsb24gYXMgZCx1biBhcyBmLHZpIGFzIHAseGkgYXMgbSx5biBhcyBofWZyb20iLi9Ta2VsZXRvbi1EME5udkhZMS5qcyI7aW1wb3J0e2MgYXMgZ31mcm9tIi4vaW5kZXgtODhDVFJOSFAuanMiO3ZhciBfPWgoe19fbmFtZTpgU2VhcmNoSW5wdXRgLHByb3BzOnttb2RlbFZhbHVlOnt9LHBsYWNlaG9sZGVyOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAoYSx7ZW1pdDpofSl7bGV0IF89YSx2PWgseT1kKCgpPT5fLm1vZGVsVmFsdWUubGVuZ3RoPjApO2Z1bmN0aW9uIGIoZSl7dihgdXBkYXRlOm1vZGVsVmFsdWVgLFN0cmluZyhlKSl9ZnVuY3Rpb24geCgpe3YoYHVwZGF0ZTptb2RlbFZhbHVlYCxgYCl9cmV0dXJuKGQsaCk9PntsZXQgdj1zKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gbCgpLGYoYGRpdmAse2NsYXNzOm0ocChlKShgcmVsYXRpdmVgLF8uY2xhc3MpKX0sW3Iodix7aWNvbjpwKGMpLGNsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHRvcC0xLzIgbGVmdC0yLjUgc2l6ZS0zLjUgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LW11dGVkLWZvcmVncm91bmRgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLHIocChnKSx7Im1vZGVsLXZhbHVlIjphLm1vZGVsVmFsdWUsdHlwZTpgdGV4dGAscGxhY2Vob2xkZXI6YS5wbGFjZWhvbGRlciwiYXJpYS1sYWJlbCI6YS5wbGFjZWhvbGRlcixjbGFzczpgcHItOCBwbC04YCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6Yn0sbnVsbCw4LFtgbW9kZWwtdmFsdWVgLGBwbGFjZWhvbGRlcmAsYGFyaWEtbGFiZWxgXSkseS52YWx1ZT8obCgpLG8ocChuKSx7a2V5OjAsdHlwZTpgYnV0dG9uYCx2YXJpYW50OmBnaG9zdGAsc2l6ZTpgaWNvbi14c2AsImFyaWEtbGFiZWwiOmBDbGVhciBzZWFyY2hgLGNsYXNzOmBhYnNvbHV0ZSB0b3AtMS8yIHJpZ2h0LTEgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kYCxvbkNsaWNrOnh9LHtkZWZhdWx0OnQoKCk9PltyKHYse2ljb246cChpKSxjbGFzczpgc2l6ZS0zLjVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksXzoxfSkpOnUoYGAsITApXSwyKX19fSk7ZnVuY3Rpb24gdihlKXtsZXQgdD1lPz9hKGBgKSxuPWQoKCk9PnQudmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCkpO3JldHVybntxdWVyeTp0LG5vcm1hbGl6ZWQ6bixoYXNRdWVyeTpkKCgpPT5uLnZhbHVlLmxlbmd0aD4wKX19ZXhwb3J0e18gYXMgbix2IGFzIHR9Ow==",
),
},
}