mirror of
https://github.com/lukaszraczylo/traefik-llmgateway.git
synced 2026-10-12 04:54:45 +00:00
A sidebar replaces the flat tabs with seven pages, and one filter bar sets the time range, comparison period and scope for all of them. - Home: spend against budget, forecast, request rate, error rate, open breakers, top users and models, recent events and warnings. - Spend: spend over time with comparison, budget burn-down, an attribution drill-down from group to user to model, pricing health and cost avoided by free models. - Consumers: a directory with last seen and limit bars, an access matrix, and a detail page per user. - Models: the catalog with billing prices, fleet latency and error rates, and provider health. - Reliability: error, timeout, failover, 429 and 402 trends, events, and latency per provider. - Config: the redacted config and a change helper that emits YAML or users.json snippets to paste into git. - MCP & Agents: callers per target. Page state lives in the URL hash, and old tab links map to the new pages. The replaced views are removed. admin_assets_gen.go is regenerated. Claude-Session: https://claude.ai/code/session_01V5jYJNxpDFdJkyyExpADrv
236 lines
1.1 MiB
Plaintext
236 lines
1.1 MiB
Plaintext
// Code generated by webui/generate.mjs; DO NOT EDIT.
|
|
//
|
|
// Source: webui/dist/ (vite build output), digest 416a7df5cafd2da6.
|
|
// 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+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4gc3JjPSIvYWRtaW4vYXNzZXRzL2luZGV4LUJpVFFfZ0NFLmpzIj48L3NjcmlwdD4KICAgIDxsaW5rIHJlbD0ibW9kdWxlcHJlbG9hZCIgY3Jvc3NvcmlnaW4gaHJlZj0iL2FkbWluL2Fzc2V0cy9uYXYtRHpiME9UTl8uanMiPgogICAgPGxpbmsgcmVsPSJtb2R1bGVwcmVsb2FkIiBjcm9zc29yaWdpbiBocmVmPSIvYWRtaW4vYXNzZXRzL0NhcmREZXNjcmlwdGlvbi1JZE90MzE3Yy5qcyI+CiAgICA8bGluayByZWw9Im1vZHVsZXByZWxvYWQiIGNyb3Nzb3JpZ2luIGhyZWY9Ii9hZG1pbi9hc3NldHMvUHJlc2VuY2UtQ3VRVUdGeVMuanMiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYWRtaW4vYXNzZXRzL2luZGV4LURZWF9xaXFSLmNzcyI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBpZD0iYXBwIj48L2Rpdj4KICA8L2JvZHk+CjwvaHRtbD4K",
|
|
)
|
|
|
|
// adminAssets maps each hashed filename under /admin/assets/ (admin.go's
|
|
// serveAdminAsset) to its content.
|
|
var adminAssets = map[string]adminAsset{
|
|
"CardDescription-IdOt317c.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0eyRyIGFzIGUsQSBhcyB0LEF0IGFzIG4sQiBhcyByLEJyIGFzIGksQ24gYXMgYSxDdCBhcyBvLEV0IGFzIHMsRiBhcyBjLEZuIGFzIGwsR3IgYXMgdSxIciBhcyBkLElyIGFzIGYsSnIgYXMgcCxKdCBhcyBtLEtyIGFzIGgsTCBhcyBnLEx0IGFzIF8sTSBhcyB2LE5yIGFzIHksTnQgYXMgZWUsT24gYXMgdGUsT3IgYXMgbmUsT3QgYXMgcmUsUW4gYXMgYixRciBhcyB4LFIgYXMgaWUsUm4gYXMgYWUsUnIgYXMgUyxTbiBhcyBvZSxVciBhcyBDLFZyIGFzIHcsV3IgYXMgc2UsWHIgYXMgY2UsWHQgYXMgbGUsWW4gYXMgdWUsWXIgYXMgZGUsWnIgYXMgZmUsYWkgYXMgVCxjaSBhcyBwZSxkbiBhcyBtZSxkdCBhcyBoZSxlaSBhcyBFLGZ0IGFzIGdlLGd0IGFzIF9lLGhuIGFzIHZlLGlpIGFzIEQsam4gYXMgTyxqciBhcyB5ZSxqdCBhcyBiZSxrLG5pIGFzIEEsb2kgYXMgeGUscGkgYXMgU2UscXIgYXMgQ2UscXQgYXMgaixyaSBhcyB3ZSxyciBhcyBUZSxzaSBhcyBNLHRpIGFzIEVlLHZuIGFzIERlLHZ0IGFzIE9lLHcgYXMga2Usd24gYXMgTix6IGFzIFAsenIgYXMgQWUsenQgYXMgRn1mcm9tIi4vbmF2LUR6YjBPVE5fLmpzIjt2YXIgamU9dm9pZCAwLE1lPXR5cGVvZiB3aW5kb3c8YHVgJiZ3aW5kb3cudHJ1c3RlZFR5cGVzO2lmKE1lKXRyeXtqZT1NZS5jcmVhdGVQb2xpY3koYHZ1ZWAse2NyZWF0ZUhUTUw6ZT0+ZX0pfWNhdGNoe312YXIgTmU9amU/ZT0+amUuY3JlYXRlSFRNTChlKTplPT5lLFBlPWBodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z2AsRmU9YGh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxgLEk9dHlwZW9mIGRvY3VtZW50PGB1YD9kb2N1bWVudDpudWxsLEllPUkmJkkuY3JlYXRlRWxlbWVudChgdGVtcGxhdGVgKSxMZT17aW5zZXJ0OihlLHQsbik9Pnt0Lmluc2VydEJlZm9yZShlLG58fG51bGwpfSxyZW1vdmU6ZT0+e2xldCB0PWUucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKGUpfSxjcmVhdGVFbGVtZW50OihlLHQsbixyKT0+e2xldCBpPXQ9PT1gc3ZnYD9JLmNyZWF0ZUVsZW1lbnROUyhQZSxlKTp0PT09YG1hdGhtbGA/SS5jcmVhdGVFbGVtZW50TlMoRmUsZSk6bj9JLmNyZWF0ZUVsZW1lbnQoZSx7aXM6bn0pOkkuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZT09PWBzZWxlY3RgJiZyJiZyLm11bHRpcGxlIT1udWxsJiZpLnNldEF0dHJpYnV0ZShgbXVsdGlwbGVgLHIubXVsdGlwbGUpLGl9LGNyZWF0ZVRleHQ6ZT0+SS5jcmVhdGVUZXh0Tm9kZShlKSxjcmVhdGVDb21tZW50OmU9PkkuY3JlYXRlQ29tbWVudChlKSxzZXRUZXh0OihlLHQpPT57ZS5ub2RlVmFsdWU9dH0sc2V0RWxlbWVudFRleHQ6KGUsdCk9PntlLnRleHRDb250ZW50PXR9LHBhcmVudE5vZGU6ZT0+ZS5wYXJlbnROb2RlLG5leHRTaWJsaW5nOmU9PmUubmV4dFNpYmxpbmcscXVlcnlTZWxlY3RvcjplPT5JLnF1ZXJ5U2VsZWN0b3IoZSksc2V0U2NvcGVJZChlLHQpe2Uuc2V0QXR0cmlidXRlKHQsYGApfSxpbnNlcnRTdGF0aWNDb250ZW50KGUsdCxuLHIsaSxhKXtsZXQgbz1uP24ucHJldmlvdXNTaWJsaW5nOnQubGFzdENoaWxkO2lmKGkmJihpPT09YXx8aS5uZXh0U2libGluZykpZm9yKDt0Lmluc2VydEJlZm9yZShpLmNsb25lTm9kZSghMCksbiksIShpPT09YXx8IShpPWkubmV4dFNpYmxpbmcpKTspO2Vsc2V7SWUuaW5uZXJIVE1MPU5lKHI9PT1gc3ZnYD9gPHN2Zz4ke2V9PC9zdmc+YDpyPT09YG1hdGhtbGA/YDxtYXRoPiR7ZX08L21hdGg+YDplKTtsZXQgaT1JZS5jb250ZW50O2lmKHI9PT1gc3ZnYHx8cj09PWBtYXRobWxgKXtsZXQgZT1pLmZpcnN0Q2hpbGQ7Zm9yKDtlLmZpcnN0Q2hpbGQ7KWkuYXBwZW5kQ2hpbGQoZS5maXJzdENoaWxkKTtpLnJlbW92ZUNoaWxkKGUpfXQuaW5zZXJ0QmVmb3JlKGksbil9cmV0dXJuW28/by5uZXh0U2libGluZzp0LmZpcnN0Q2hpbGQsbj9uLnByZXZpb3VzU2libGluZzp0Lmxhc3RDaGlsZF19fSxMPWB0cmFuc2l0aW9uYCxSPWBhbmltYXRpb25gLHo9U3ltYm9sKGBfdnRjYCksUmU9e25hbWU6U3RyaW5nLHR5cGU6U3RyaW5nLGNzczp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITB9LGR1cmF0aW9uOltTdHJpbmcsTnVtYmVyLE9iamVjdF0sZW50ZXJGcm9tQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsYXBwZWFyRnJvbUNsYXNzOlN0cmluZyxhcHBlYXJBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyVG9DbGFzczpTdHJpbmcsbGVhdmVGcm9tQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmd9LHplPUMoe30sZ2UsUmUpLEJlPShlPT4oZS5kaXNwbGF5TmFtZT1gVHJhbnNpdGlvbmAsZS5wcm9wcz16ZSxlKSkoKGUse3Nsb3RzOnR9KT0+bGUoaGUsSGUoZSksdCkpLEI9KGUsdD1bXSk9PntwKGUpP2UuZm9yRWFjaChlPT5lKC4uLnQpKTplJiZlKC4uLnQpfSxWZT1lPT5lP3AoZSk/ZS5zb21lKGU9PmUubGVuZ3RoPjEpOmUubGVuZ3RoPjE6ITE7ZnVuY3Rpb24gSGUoZSl7bGV0IHQ9e307Zm9yKGxldCBuIGluIGUpbiBpbiBSZXx8KHRbbl09ZVtuXSk7aWYoZS5jc3M9PT0hMSlyZXR1cm4gdDtsZXR7bmFtZTpuPWB2YCx0eXBlOnIsZHVyYXRpb246aSxlbnRlckZyb21DbGFzczphPWAke259LWVudGVyLWZyb21gLGVudGVyQWN0aXZlQ2xhc3M6bz1gJHtufS1lbnRlci1hY3RpdmVgLGVudGVyVG9DbGFzczpzPWAke259LWVudGVyLXRvYCxhcHBlYXJGcm9tQ2xhc3M6Yz1hLGFwcGVhckFjdGl2ZUNsYXNzOmw9byxhcHBlYXJUb0NsYXNzOnU9cyxsZWF2ZUZyb21DbGFzczpkPWAke259LWxlYXZlLWZyb21gLGxlYXZlQWN0aXZlQ2xhc3M6Zj1gJHtufS1sZWF2ZS1hY3RpdmVgLGxlYXZlVG9DbGFzczpwPWAke259LWxlYXZlLXRvYH09ZSxtPVVlKGkpLGg9bSYmbVswXSxnPW0mJm1bMV0se29uQmVmb3JlRW50ZXI6XyxvbkVudGVyOnYsb25FbnRlckNhbmNlbGxlZDp5LG9uTGVhdmU6ZWUsb25MZWF2ZUNhbmNlbGxlZDp0ZSxvbkJlZm9yZUFwcGVhcjpuZT1fLG9uQXBwZWFyOnJlPXYsb25BcHBlYXJDYW5jZWxsZWQ6Yj15fT10LHg9KGUsdCxuLHIpPT57ZS5fZW50ZXJDYW5jZWxsZWQ9cixIKGUsdD91OnMpLEgoZSx0P2w6byksbiYmbigpfSxpZT0oZSx0KT0+e2UuX2lzTGVhdmluZz0hMSxIKGUsZCksSChlLHApLEgoZSxmKSx0JiZ0KCl9LGFlPWU9Pih0LG4pPT57bGV0IGk9ZT9yZTp2LG89KCk9PngodCxlLG4pO0IoaSxbdCxvXSksR2UoKCk9PntIKHQsZT9jOmEpLFYodCxlP3U6cyksVmUoaSl8fHFlKHQscixoLG8pfSl9O3JldHVybiBDKHQse29uQmVmb3JlRW50ZXIoZSl7QihfLFtlXSksVihlLGEpLFYoZSxvKX0sb25CZWZvcmVBcHBlYXIoZSl7QihuZSxbZV0pLFYoZSxjKSxWKGUsbCl9LG9uRW50ZXI6YWUoITEpLG9uQXBwZWFyOmFlKCEwKSxvbkxlYXZlKGUsdCl7ZS5faXNMZWF2aW5nPSEwO2xldCBuPSgpPT5pZShlLHQpO1YoZSxkKSxlLl9lbnRlckNhbmNlbGxlZD8oVihlLGYpLFplKGUpKTooWmUoZSksVihlLGYpKSxHZSgoKT0+e2UuX2lzTGVhdmluZyYmKEgoZSxkKSxWKGUscCksVmUoZWUpfHxxZShlLHIsZyxuKSl9KSxCKGVlLFtlLG5dKX0sb25FbnRlckNhbmNlbGxlZChlKXt4KGUsITEsdm9pZCAwLCEwKSxCKHksW2VdKX0sb25BcHBlYXJDYW5jZWxsZWQoZSl7eChlLCEwLHZvaWQgMCwhMCksQihiLFtlXSl9LG9uTGVhdmVDYW5jZWxsZWQoZSl7aWUoZSksQih0ZSxbZV0pfX0pfWZ1bmN0aW9uIFVlKGUpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7aWYoZmUoZSkpcmV0dXJuW1dlKGUuZW50ZXIpLFdlKGUubGVhdmUpXTt7bGV0IHQ9V2UoZSk7cmV0dXJuW3QsdF19fWZ1bmN0aW9uIFdlKGUpe3JldHVybiBTZShlKX1mdW5jdGlvbiBWKGUsdCl7dC5zcGxpdCgvXHMrLykuZm9yRWFjaCh0PT50JiZlLmNsYXNzTGlzdC5hZGQodCkpLChlW3pdfHwoZVt6XT1uZXcgU2V0KSkuYWRkKHQpfWZ1bmN0aW9uIEgoZSx0KXt0LnNwbGl0KC9ccysvKS5mb3JFYWNoKHQ9PnQmJmUuY2xhc3NMaXN0LnJlbW92ZSh0KSk7bGV0IG49ZVt6XTtuJiYobi5kZWxldGUodCksbi5zaXplfHwoZVt6XT12b2lkIDApKX1mdW5jdGlvbiBHZShlKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSl9KX12YXIgS2U9MDtmdW5jdGlvbiBxZShlLHQsbixyKXtsZXQgaT1lLl9lbmRJZD0rK0tlLGE9KCk9PntpPT09ZS5fZW5kSWQmJnIoKX07aWYobiE9bnVsbClyZXR1cm4gc2V0VGltZW91dChhLG4pO2xldHt0eXBlOm8sdGltZW91dDpzLHByb3BDb3VudDpjfT1KZShlLHQpO2lmKCFvKXJldHVybiByKCk7bGV0IGw9bytgZW5kYCx1PTAsZD0oKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihsLGYpLGEoKX0sZj10PT57dC50YXJnZXQ9PT1lJiYrK3U+PWMmJmQoKX07c2V0VGltZW91dCgoKT0+e3U8YyYmZCgpfSxzKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihsLGYpfWZ1bmN0aW9uIEplKGUsdCl7bGV0IG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSkscj1lPT4obltlXXx8YGApLnNwbGl0KGAsIGApLGk9cihgJHtMfURlbGF5YCksYT1yKGAke0x9RHVyYXRpb25gKSxvPVllKGksYSkscz1yKGAke1J9RGVsYXlgKSxjPXIoYCR7Un1EdXJhdGlvbmApLGw9WWUocyxjKSx1PW51bGwsZD0wLGY9MDt0PT09TD9vPjAmJih1PUwsZD1vLGY9YS5sZW5ndGgpOnQ9PT1SP2w+MCYmKHU9UixkPWwsZj1jLmxlbmd0aCk6KGQ9TWF0aC5tYXgobyxsKSx1PWQ+MD9vPmw/TDpSOm51bGwsZj11P3U9PT1MP2EubGVuZ3RoOmMubGVuZ3RoOjApO2xldCBwPXU9PT1MJiYvXGIoPzp0cmFuc2Zvcm18YWxsKSg/Oix8JCkvLnRlc3QocihgJHtMfVByb3BlcnR5YCkudG9TdHJpbmcoKSk7cmV0dXJue3R5cGU6dSx0aW1lb3V0OmQscHJvcENvdW50OmYsaGFzVHJhbnNmb3JtOnB9fWZ1bmN0aW9uIFllKGUsdCl7Zm9yKDtlLmxlbmd0aDx0Lmxlbmd0aDspZT1lLmNvbmNhdChlKTtyZXR1cm4gTWF0aC5tYXgoLi4udC5tYXAoKHQsbik9PlhlKHQpK1hlKGVbbl0pKSl9ZnVuY3Rpb24gWGUoZSl7cmV0dXJuIGU9PT1gYXV0b2A/MDpOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKGAsYCxgLmApKSoxZTN9ZnVuY3Rpb24gWmUoZSl7cmV0dXJuKGU/ZS5vd25lckRvY3VtZW50OmRvY3VtZW50KS5ib2R5Lm9mZnNldEhlaWdodH1mdW5jdGlvbiBRZShlLHQsbil7bGV0IHI9ZVt6XTtyJiYodD0odD9bdCwuLi5yXTpbLi4ucl0pLmpvaW4oYCBgKSksdD09bnVsbD9lLnJlbW92ZUF0dHJpYnV0ZShgY2xhc3NgKTpuP2Uuc2V0QXR0cmlidXRlKGBjbGFzc2AsdCk6ZS5jbGFzc05hbWU9dH12YXIgVT1TeW1ib2woYF92b2RgKSwkZT1TeW1ib2woYF92c2hgKSxldD17bmFtZTpgc2hvd2AsYmVmb3JlTW91bnQoZSx7dmFsdWU6dH0se3RyYW5zaXRpb246bn0pe2VbVV09ZS5zdHlsZS5kaXNwbGF5PT09YG5vbmVgP2BgOmUuc3R5bGUuZGlzcGxheSxuJiZ0P24uYmVmb3JlRW50ZXIoZSk6VyhlLHQpfSxtb3VudGVkKGUse3ZhbHVlOnR9LHt0cmFuc2l0aW9uOm59KXtuJiZ0JiZuLmVudGVyKGUpfSx1cGRhdGVkKGUse3ZhbHVlOnQsb2xkVmFsdWU6bn0se3RyYW5zaXRpb246cn0peyF0IT0hbiYmKHI/dD8oci5iZWZvcmVFbnRlcihlKSxXKGUsITApLHIuZW50ZXIoZSkpOnIubGVhdmUoZSwoKT0+e1coZSwhMSl9KTpXKGUsdCkpfSxiZWZvcmVVbm1vdW50KGUse3ZhbHVlOnR9KXtXKGUsdCl9fTtmdW5jdGlvbiBXKGUsdCl7ZS5zdHlsZS5kaXNwbGF5PXQ/ZVtVXTpgbm9uZWAsZVskZV09IXR9ZnVuY3Rpb24gdHQoKXtldC5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9KT0+e2lmKCFlKXJldHVybntzdHlsZTp7ZGlzcGxheTpgbm9uZWB9fX19dmFyIG50PVN5bWJvbChgYCk7ZnVuY3Rpb24gcnQoZSl7bGV0IHQ9aigpO2lmKCF0KXJldHVybjtsZXQgbj10LnV0PShuPWUodC5wcm94eSkpPT57QXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS12LW93bmVyPSIke3QudWlkfSJdYCkpLmZvckVhY2goZT0+RyhlLG4pKX0scj0oKT0+e2xldCByPWUodC5wcm94eSk7dC5jZT9HKHQuY2Uscik6aXQodC5zdWJUcmVlLHIpLG4ocil9O3ZlKCgpPT57dGUocil9KSxEZSgoKT0+e2IocixpLHtmbHVzaDpgcG9zdGB9KTtsZXQgZT1uZXcgTXV0YXRpb25PYnNlcnZlcihyKTtlLm9ic2VydmUodC5zdWJUcmVlLmVsLnBhcmVudE5vZGUse2NoaWxkTGlzdDohMH0pLG9lKCgpPT5lLmRpc2Nvbm5lY3QoKSl9KX1mdW5jdGlvbiBpdChlLHQpe2lmKGUuc2hhcGVGbGFnJjEyOCl7bGV0IG49ZS5zdXNwZW5zZTtlPW4uYWN0aXZlQnJhbmNoLG4ucGVuZGluZ0JyYW5jaCYmIW4uaXNIeWRyYXRpbmcmJm4uZWZmZWN0cy5wdXNoKCgpPT57aXQobi5hY3RpdmVCcmFuY2gsdCl9KX1mb3IoO2UuY29tcG9uZW50OyllPWUuY29tcG9uZW50LnN1YlRyZWU7aWYoZS5zaGFwZUZsYWcmMSYmZS5lbClHKGUuZWwsdCk7ZWxzZSBpZihlLnR5cGU9PT1fZSllLmNoaWxkcmVuLmZvckVhY2goZT0+aXQoZSx0KSk7ZWxzZSBpZihlLnR5cGU9PT1PZSl7bGV0e2VsOm4sYW5jaG9yOnJ9PWU7Zm9yKDtuJiYoRyhuLHQpLG4hPT1yKTspbj1uLm5leHRTaWJsaW5nfX1mdW5jdGlvbiBHKGUsdCl7aWYoZS5ub2RlVHlwZT09PTEpe2xldCBuPWUuc3R5bGUscj1gYDtmb3IobGV0IGUgaW4gdCl7bGV0IGk9cGUodFtlXSk7bi5zZXRQcm9wZXJ0eShgLS0ke2V9YCxpKSxyKz1gLS0ke2V9OiAke2l9O2B9bltudF09cn19dmFyIGF0PS8oPzpefDspXHMqZGlzcGxheVxzKjovO2Z1bmN0aW9uIG90KGUsdCxuKXtsZXQgcj1lLnN0eWxlLGk9QShuKSxhPSExO2lmKG4mJiFpKXtpZih0KXtpZihBKHQpKWZvcihsZXQgZSBvZiB0LnNwbGl0KGA7YCkpe2xldCB0PWUuc2xpY2UoMCxlLmluZGV4T2YoYDpgKSkudHJpbSgpO25bdF0/P0socix0LGBgKX1lbHNlIGZvcihsZXQgZSBpbiB0KW5bZV0/P0socixlLGBgKX1mb3IobGV0IGkgaW4gbil7aT09PWBkaXNwbGF5YCYmKGE9ITApO2xldCBvPW5baV07bz09bnVsbD9LKHIsaSxgYCk6ZHQoZSxpLCFBKHQpJiZ0P3RbaV06dm9pZCAwLG8pfHxLKHIsaSxvKX19ZWxzZSBpZihpKXtpZih0IT09bil7bGV0IGU9cltudF07ZSYmKG4rPWA7YCtlKSxyLmNzc1RleHQ9bixhPWF0LnRlc3Qobil9fWVsc2UgdCYmZS5yZW1vdmVBdHRyaWJ1dGUoYHN0eWxlYCk7VSBpbiBlJiYoZVtVXT1hP3IuZGlzcGxheTpgYCxlWyRlXSYmKHIuZGlzcGxheT1gbm9uZWApKX12YXIgc3Q9L1xzKiFpbXBvcnRhbnQkLztmdW5jdGlvbiBLKGUsdCxuKXtpZihwKG4pKW4uZm9yRWFjaChuPT5LKGUsdCxuKSk7ZWxzZSBpZihuPz89YGAsdC5zdGFydHNXaXRoKGAtLWApKWUuc2V0UHJvcGVydHkodCxuKTtlbHNle2xldCByPXV0KGUsdCk7c3QudGVzdChuKT9lLnNldFByb3BlcnR5KHUociksbi5yZXBsYWNlKHN0LGBgKSxgaW1wb3J0YW50YCk6ZVtyXT1ufX12YXIgY3Q9W2BXZWJraXRgLGBNb3pgLGBtc2BdLGx0PXt9O2Z1bmN0aW9uIHV0KGUsdCl7bGV0IG49bHRbdF07aWYobilyZXR1cm4gbjtsZXQgcj13KHQpO2lmKHIhPT1gZmlsdGVyYCYmciBpbiBlKXJldHVybiBsdFt0XT1yO3I9ZChyKTtmb3IobGV0IG49MDtuPGN0Lmxlbmd0aDtuKyspe2xldCBpPWN0W25dK3I7aWYoaSBpbiBlKXJldHVybiBsdFt0XT1pfXJldHVybiB0fWZ1bmN0aW9uIGR0KGUsdCxuLHIpe3JldHVybiBlLnRhZ05hbWU9PT1gVEVYVEFSRUFgJiYodD09PWB3aWR0aGB8fHQ9PT1gaGVpZ2h0YCkmJkEocikmJm49PT1yfXZhciBmdD1gaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua2A7ZnVuY3Rpb24gcHQoZSx0LG4scixpLGE9RWUodCkpe3ImJnQuc3RhcnRzV2l0aChgeGxpbms6YCk/bj09bnVsbD9lLnJlbW92ZUF0dHJpYnV0ZU5TKGZ0LHQuc2xpY2UoNix0Lmxlbmd0aCkpOmUuc2V0QXR0cmlidXRlTlMoZnQsdCxuKTpuPT1udWxsfHxhJiYhaChuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LGE/YGA6d2Uobik/U3RyaW5nKG4pOm4pfWZ1bmN0aW9uIG10KGUsdCxuLHIsaSl7aWYodD09PWBpbm5lckhUTUxgfHx0PT09YHRleHRDb250ZW50YCl7biE9bnVsbCYmKGVbdF09dD09PWBpbm5lckhUTUxgP05lKG4pOm4pO3JldHVybn1sZXQgYT1lLnRhZ05hbWU7aWYodD09PWB2YWx1ZWAmJmEhPT1gUFJPR1JFU1NgJiYhYS5pbmNsdWRlcyhgLWApKXtsZXQgcj1hPT09YE9QVElPTmA/ZS5nZXRBdHRyaWJ1dGUoYHZhbHVlYCl8fGBgOmUudmFsdWUsaT1uPT1udWxsP2UudHlwZT09PWBjaGVja2JveGA/YG9uYDpgYDpTdHJpbmcobik7KHIhPT1pfHwhKGBfdmFsdWVgaW4gZSkpJiYoZS52YWx1ZT1pKSxuPz9lLnJlbW92ZUF0dHJpYnV0ZSh0KSxlLl92YWx1ZT1uO3JldHVybn1sZXQgbz0hMTtpZihuPT09YGB8fG49PW51bGwpe2xldCByPXR5cGVvZiBlW3RdO3I9PT1gYm9vbGVhbmA/bj1oKG4pOm49PW51bGwmJnI9PT1gc3RyaW5nYD8obj1gYCxvPSEwKTpyPT09YG51bWJlcmAmJihuPTAsbz0hMCl9dHJ5e2VbdF09bn1jYXRjaHt9byYmZS5yZW1vdmVBdHRyaWJ1dGUoaXx8dCl9ZnVuY3Rpb24gcShlLHQsbixyKXtlLmFkZEV2ZW50TGlzdGVuZXIodCxuLHIpfWZ1bmN0aW9uIGh0KGUsdCxuLHIpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4scil9dmFyIGd0PVN5bWJvbChgX3ZlaWApO2Z1bmN0aW9uIF90KGUsdCxuLHIsaT1udWxsKXtsZXQgYT1lW2d0XXx8KGVbZ3RdPXt9KSxvPWFbdF07aWYociYmbylvLnZhbHVlPXI7ZWxzZXtsZXRbbixzXT1idCh0KTtyP3EoZSxuLGFbdF09d3QocixpKSxzKTpvJiYoaHQoZSxuLG8scyksYVt0XT12b2lkIDApfX12YXIgdnQ9LyhPbmNlfFBhc3NpdmV8Q2FwdHVyZSkkLyx5dD0vXm9uOj8oPzpPbmNlfFBhc3NpdmV8Q2FwdHVyZSkkLztmdW5jdGlvbiBidChlKXtsZXQgdCxuO2Zvcig7KG49ZS5tYXRjaCh2dCkpJiYheXQudGVzdChlKTspdHx8PXt9LGU9ZS5zbGljZSgwLGUubGVuZ3RoLW5bMV0ubGVuZ3RoKSx0W25bMV0udG9Mb3dlckNhc2UoKV09ITA7cmV0dXJuW2VbMl09PT1gOmA/ZS5zbGljZSgzKTp1KGUuc2xpY2UoMikpLHRdfXZhciB4dD0wLFN0PVByb21pc2UucmVzb2x2ZSgpLEN0PSgpPT54dHx8PShTdC50aGVuKCgpPT54dD0wKSxEYXRlLm5vdygpKTtmdW5jdGlvbiB3dChlLHQpe2xldCBuPWU9PntpZighZS5fdnRzKWUuX3Z0cz1EYXRlLm5vdygpO2Vsc2UgaWYoZS5fdnRzPD1uLmF0dGFjaGVkKXJldHVybjtsZXQgcj1uLnZhbHVlO2lmKHAocikpe2xldCBuPWUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uO2Uuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPSgpPT57bi5jYWxsKGUpLGUuX3N0b3BwZWQ9ITB9O2xldCBpPXIuc2xpY2UoKSxhPVtlXTtmb3IobGV0IG49MDtuPGkubGVuZ3RoJiYhZS5fc3RvcHBlZDtuKyspe2xldCBlPWlbbl07ZSYmbyhlLHQsNSxhKX19ZWxzZSBvKHIsdCw1LFtlXSl9O3JldHVybiBuLnZhbHVlPWUsbi5hdHRhY2hlZD1DdCgpLG59dmFyIFR0PWU9PmUuY2hhckNvZGVBdCgwKT09PTExMSYmZS5jaGFyQ29kZUF0KDEpPT09MTEwJiZlLmNoYXJDb2RlQXQoMik+OTYmJmUuY2hhckNvZGVBdCgyKTwxMjMsRXQ9KGUsdCxuLHIsaSxhKT0+e2xldCBvPWk9PT1gc3ZnYDt0PT09YGNsYXNzYD9RZShlLHIsbyk6dD09PWBzdHlsZWA/b3QoZSxuLHIpOngodCk/Y2UodCl8fF90KGUsdCxuLHIsYSk6KHRbMF09PT1gLmA/KHQ9dC5zbGljZSgxKSwhMCk6dFswXT09PWBeYD8odD10LnNsaWNlKDEpLCExKTpEdChlLHQscixvKSk/KG10KGUsdCxyKSwhZS50YWdOYW1lLmluY2x1ZGVzKGAtYCkmJih0PT09YHZhbHVlYHx8dD09PWBjaGVja2VkYHx8dD09PWBzZWxlY3RlZGApJiZwdChlLHQscixvLGEsdCE9PWB2YWx1ZWApKTplLl9pc1Z1ZUNFJiYoT3QoZSx0KXx8ZS5fZGVmLl9fYXN5bmNMb2FkZXImJigvW0EtWl0vLnRlc3QodCl8fCFBKHIpKSk/bXQoZSx3KHQpLHIsYSx0KToodD09PWB0cnVlLXZhbHVlYD9lLl90cnVlVmFsdWU9cjp0PT09YGZhbHNlLXZhbHVlYCYmKGUuX2ZhbHNlVmFsdWU9cikscHQoZSx0LHIsbykpfTtmdW5jdGlvbiBEdChlLHQsbixyKXtpZihyKXJldHVybiEhKHQ9PT1gaW5uZXJIVE1MYHx8dD09PWB0ZXh0Q29udGVudGB8fHQgaW4gZSYmVHQodCkmJmRlKG4pKTtpZih0PT09YHNwZWxsY2hlY2tgfHx0PT09YGRyYWdnYWJsZWB8fHQ9PT1gdHJhbnNsYXRlYHx8dD09PWBhdXRvY29ycmVjdGB8fHQ9PT1gc2FuZGJveGAmJmUudGFnTmFtZT09PWBJRlJBTUVgfHx0PT09YGZvcm1gfHx0PT09YGxpc3RgJiZlLnRhZ05hbWU9PT1gSU5QVVRgfHx0PT09YHR5cGVgJiZlLnRhZ05hbWU9PT1gVEVYVEFSRUFgKXJldHVybiExO2lmKHQ9PT1gd2lkdGhgfHx0PT09YGhlaWdodGApe2xldCB0PWUudGFnTmFtZTtpZih0PT09YElNR2B8fHQ9PT1gVklERU9gfHx0PT09YENBTlZBU2B8fHQ9PT1gU09VUkNFYClyZXR1cm4hMX1yZXR1cm4gVHQodCkmJkEobik/ITE6dCBpbiBlfWZ1bmN0aW9uIE90KGUsdCl7bGV0IG49ZS5fZGVmLnByb3BzO2lmKCFuKXJldHVybiExO2xldCByPXcodCk7cmV0dXJuIEFycmF5LmlzQXJyYXkobik/bi5zb21lKGU9PncoZSk9PT1yKTpPYmplY3Qua2V5cyhuKS5zb21lKGU9PncoZSk9PT1yKX12YXIga3Q9e307ZnVuY3Rpb24gQXQodCxuLHIpe2xldCBpPUYodCxuKTtlKGkpJiYoaT1DKHt9LGksbikpO2NsYXNzIGEgZXh0ZW5kcyBOdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihpLGUscil9fXJldHVybiBhLmRlZj1pLGF9dmFyIGp0PSgoZSx0KT0+QXQoZSx0LHluKSksTXQ9dHlwZW9mIEhUTUxFbGVtZW50PGB1YD9IVE1MRWxlbWVudDpjbGFzc3t9LE50PWNsYXNzIHQgZXh0ZW5kcyBNdHtjb25zdHJ1Y3RvcihlLHQ9e30sbj12bil7c3VwZXIoKSx0aGlzLl9kZWY9ZSx0aGlzLl9wcm9wcz10LHRoaXMuX2NyZWF0ZUFwcD1uLHRoaXMuX2lzVnVlQ0U9ITAsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9hcHA9bnVsbCx0aGlzLl9ub25jZT10aGlzLl9kZWYubm9uY2UsdGhpcy5fY29ubmVjdGVkPSExLHRoaXMuX3Jlc29sdmVkPSExLHRoaXMuX3BhdGNoaW5nPSExLHRoaXMuX2RpcnR5PSExLHRoaXMuX251bWJlclByb3BzPW51bGwsdGhpcy5fc3R5bGVDaGlsZHJlbj1uZXcgV2Vha1NldCx0aGlzLl9zdHlsZUFuY2hvcnM9bmV3IFdlYWtNYXAsdGhpcy5fb2I9bnVsbCx0aGlzLnNoYWRvd1Jvb3QmJm4hPT12bj90aGlzLl9yb290PXRoaXMuc2hhZG93Um9vdDplLnNoYWRvd1Jvb3Q9PT0hMT90aGlzLl9yb290PXRoaXM6KHRoaXMuYXR0YWNoU2hhZG93KEMoe30sZS5zaGFkb3dSb290T3B0aW9ucyx7bW9kZTpgb3BlbmB9KSksdGhpcy5fcm9vdD10aGlzLnNoYWRvd1Jvb3QpfWNvbm5lY3RlZENhbGxiYWNrKCl7aWYoIXRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuOyF0aGlzLnNoYWRvd1Jvb3QmJiF0aGlzLl9yZXNvbHZlZCYmdGhpcy5fcGFyc2VTbG90cygpLHRoaXMuX2Nvbm5lY3RlZD0hMDtsZXQgZT10aGlzO2Zvcig7ZSYmPWUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fGUuaG9zdDspaWYoZSBpbnN0YW5jZW9mIHQpe3RoaXMuX3BhcmVudD1lO2JyZWFrfXRoaXMuX2luc3RhbmNlfHwodGhpcy5fcmVzb2x2ZWQ/dGhpcy5fbW91bnQodGhpcy5fZGVmKTplJiZlLl9wZW5kaW5nUmVzb2x2ZT90aGlzLl9wZW5kaW5nUmVzb2x2ZT1lLl9wZW5kaW5nUmVzb2x2ZS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ1Jlc29sdmU9dm9pZCAwLHRoaXMuaXNDb25uZWN0ZWQpcmV0dXJuIHRoaXMuX3Jlc29sdmVEZWYoKX0pOnRoaXMuX3Jlc29sdmVEZWYoKSl9X3NldFBhcmVudChlPXRoaXMuX3BhcmVudCl7ZSYmKHRoaXMuX2luc3RhbmNlLnBhcmVudD1lLl9pbnN0YW5jZSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dChlKSl9X2luaGVyaXRQYXJlbnRDb250ZXh0KGU9dGhpcy5fcGFyZW50KXtlJiZ0aGlzLl9hcHAmJk9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLl9hcHAuX2NvbnRleHQucHJvdmlkZXMsZS5faW5zdGFuY2UucHJvdmlkZXMpfWRpc2Nvbm5lY3RlZENhbGxiYWNrKCl7dGhpcy5fY29ubmVjdGVkPSExLG1lKCgpPT57dGhpcy5fY29ubmVjdGVkfHwodGhpcy5fb2ImJj0odGhpcy5fb2IuZGlzY29ubmVjdCgpLG51bGwpLHRoaXMuX2FwcCYmdGhpcy5fYXBwLnVubW91bnQoKSx0aGlzLl9pbnN0YW5jZSYmKHRoaXMuX2luc3RhbmNlLmNlPXZvaWQgMCksdGhpcy5fYXBwPXRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5fdGVsZXBvcnRUYXJnZXRzJiY9KHRoaXMuX3RlbGVwb3J0VGFyZ2V0cy5jbGVhcigpLHZvaWQgMCkpfSl9X3Byb2Nlc3NNdXRhdGlvbnMoZSl7Zm9yKGxldCB0IG9mIGUpdGhpcy5fc2V0QXR0cih0LmF0dHJpYnV0ZU5hbWUpfV9yZXNvbHZlRGVmKCl7aWYodGhpcy5fcGVuZGluZ1Jlc29sdmUpcmV0dXJuIHRoaXMuX3BlbmRpbmdSZXNvbHZlO2ZvcihsZXQgZT0wO2U8dGhpcy5hdHRyaWJ1dGVzLmxlbmd0aDtlKyspdGhpcy5fc2V0QXR0cih0aGlzLmF0dHJpYnV0ZXNbZV0ubmFtZSk7dGhpcy5fb2I9bmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5fcHJvY2Vzc011dGF0aW9ucy5iaW5kKHRoaXMpKSx0aGlzLl9vYi5vYnNlcnZlKHRoaXMse2F0dHJpYnV0ZXM6ITB9KTtsZXQgZT0oZSx0PSExKT0+e3RoaXMuX3Jlc29sdmVkPSEwLHRoaXMuX3BlbmRpbmdSZXNvbHZlPXZvaWQgMDtsZXR7cHJvcHM6bixzdHlsZXM6cn09ZSxpO2lmKG4mJiFwKG4pKWZvcihsZXQgZSBpbiBuKXtsZXQgdD1uW2VdOyh0PT09TnVtYmVyfHx0JiZ0LnR5cGU9PT1OdW1iZXIpJiYoZSBpbiB0aGlzLl9wcm9wcyYmKHRoaXMuX3Byb3BzW2VdPVNlKHRoaXMuX3Byb3BzW2VdKSksKGl8fD1PYmplY3QuY3JlYXRlKG51bGwpKVt3KGUpXT0hMCl9dGhpcy5fbnVtYmVyUHJvcHM9aSx0aGlzLl9yZXNvbHZlUHJvcHMoZSksdGhpcy5zaGFkb3dSb290JiZ0aGlzLl9hcHBseVN0eWxlcyhyKSx0aGlzLl9tb3VudChlKX0sdD10aGlzLl9kZWYuX19hc3luY0xvYWRlcjtpZih0KXJldHVybiB0aGlzLl9wZW5kaW5nUmVzb2x2ZT10KCkudGhlbih0PT57dC5jb25maWd1cmVBcHA9dGhpcy5fZGVmLmNvbmZpZ3VyZUFwcCxlKHRoaXMuX2RlZj10LCEwKX0pLHRoaXMuX3BlbmRpbmdSZXNvbHZlO2UodGhpcy5fZGVmKX1fbW91bnQoZSl7dGhpcy5fYXBwPXRoaXMuX2NyZWF0ZUFwcChlKSx0aGlzLl9pbmhlcml0UGFyZW50Q29udGV4dCgpLGUuY29uZmlndXJlQXBwJiZlLmNvbmZpZ3VyZUFwcCh0aGlzLl9hcHApLHRoaXMuX2FwcC5fY2VWTm9kZT10aGlzLl9jcmVhdGVWTm9kZSgpLHRoaXMuX2FwcC5tb3VudCh0aGlzLl9yb290KTtsZXQgdD10aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuZXhwb3NlZDtpZih0KWZvcihsZXQgZSBpbiB0KXNlKHRoaXMsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2dldDooKT0+Uyh0W2VdKX0pfV9yZXNvbHZlUHJvcHMoZSl7bGV0e3Byb3BzOnR9PWUsbj1wKHQpP3Q6T2JqZWN0LmtleXModHx8e30pO2ZvcihsZXQgZSBvZiBPYmplY3Qua2V5cyh0aGlzKSllWzBdIT09YF9gJiZuLmluY2x1ZGVzKGUpJiZ0aGlzLl9zZXRQcm9wKGUsdGhpc1tlXSk7Zm9yKGxldCBlIG9mIG4ubWFwKHcpKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2dldCgpe3JldHVybiB0aGlzLl9nZXRQcm9wKGUpfSxzZXQodCl7dGhpcy5fc2V0UHJvcChlLHQsITAsIXRoaXMuX3BhdGNoaW5nKX19KX1fc2V0QXR0cihlKXtpZihlLnN0YXJ0c1dpdGgoYGRhdGEtdi1gKSlyZXR1cm47bGV0IHQ9dGhpcy5oYXNBdHRyaWJ1dGUoZSksbj10P3RoaXMuZ2V0QXR0cmlidXRlKGUpOmt0LHI9dyhlKTt0JiZ0aGlzLl9udW1iZXJQcm9wcyYmdGhpcy5fbnVtYmVyUHJvcHNbcl0mJihuPVNlKG4pKSx0aGlzLl9zZXRQcm9wKHIsbiwhMSwhMCl9X2dldFByb3AoZSl7cmV0dXJuIHRoaXMuX3Byb3BzW2VdfV9zZXRQcm9wKGUsdCxuPSEwLHI9ITEpe2lmKHQhPT10aGlzLl9wcm9wc1tlXSYmKHRoaXMuX2RpcnR5PSEwLHQ9PT1rdD9kZWxldGUgdGhpcy5fcHJvcHNbZV06KHRoaXMuX3Byb3BzW2VdPXQsZT09PWBrZXlgJiZ0aGlzLl9hcHAmJih0aGlzLl9hcHAuX2NlVk5vZGUua2V5PXQpKSxyJiZ0aGlzLl9pbnN0YW5jZSYmdGhpcy5fdXBkYXRlKCksbikpe2xldCBuPXRoaXMuX29iO24mJih0aGlzLl9wcm9jZXNzTXV0YXRpb25zKG4udGFrZVJlY29yZHMoKSksbi5kaXNjb25uZWN0KCkpLHQ9PT0hMD90aGlzLnNldEF0dHJpYnV0ZSh1KGUpLGBgKTp0eXBlb2YgdD09YHN0cmluZ2B8fHR5cGVvZiB0PT1gbnVtYmVyYD90aGlzLnNldEF0dHJpYnV0ZSh1KGUpLHQrYGApOnR8fHRoaXMucmVtb3ZlQXR0cmlidXRlKHUoZSkpLG4mJm4ub2JzZXJ2ZSh0aGlzLHthdHRyaWJ1dGVzOiEwfSl9fV91cGRhdGUoKXtsZXQgZT10aGlzLl9jcmVhdGVWTm9kZSgpO3RoaXMuX2FwcCYmKGUuYXBwQ29udGV4dD10aGlzLl9hcHAuX2NvbnRleHQpLGduKGUsdGhpcy5fcm9vdCl9X2NyZWF0ZVZOb2RlKCl7bGV0IHQ9e307dGhpcy5zaGFkb3dSb290fHwodC5vblZub2RlTW91bnRlZD10Lm9uVm5vZGVVcGRhdGVkPXRoaXMuX3JlbmRlclNsb3RzLmJpbmQodGhpcykpO2xldCBuPV8odGhpcy5fZGVmLEModCx0aGlzLl9wcm9wcykpO3JldHVybiB0aGlzLl9pbnN0YW5jZXx8KG4uY2U9dD0+e3RoaXMuX2luc3RhbmNlPXQsdC5jZT10aGlzLHQuaXNDRT0hMDtsZXQgbj0odCxuKT0+e3RoaXMuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQodCxlKG5bMF0pP0Moe2RldGFpbDpufSxuWzBdKTp7ZGV0YWlsOm59KSl9O3QuZW1pdD0oZSwuLi50KT0+e24oZSx0KSx1KGUpIT09ZSYmbih1KGUpLHQpfSx0aGlzLl9zZXRQYXJlbnQoKX0pLG59X2FwcGx5U3R5bGVzKGUsdCxuKXtpZighZSlyZXR1cm47aWYodCl7aWYodD09PXRoaXMuX2RlZnx8dGhpcy5fc3R5bGVDaGlsZHJlbi5oYXModCkpcmV0dXJuO3RoaXMuX3N0eWxlQ2hpbGRyZW4uYWRkKHQpfWxldCByPXRoaXMuX25vbmNlLGk9dGhpcy5zaGFkb3dSb290LGE9bj90aGlzLl9nZXRTdHlsZUFuY2hvcihuKXx8dGhpcy5fZ2V0U3R5bGVBbmNob3IodGhpcy5fZGVmKTp0aGlzLl9nZXRSb290U3R5bGVJbnNlcnRpb25BbmNob3IoaSksbz1udWxsO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PTA7cy0tKXtsZXQgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBzdHlsZWApO3ImJmMuc2V0QXR0cmlidXRlKGBub25jZWAsciksYy50ZXh0Q29udGVudD1lW3NdLGkuaW5zZXJ0QmVmb3JlKGMsb3x8YSksbz1jLHM9PT0wJiYobnx8dGhpcy5fc3R5bGVBbmNob3JzLnNldCh0aGlzLl9kZWYsYyksdCYmdGhpcy5fc3R5bGVBbmNob3JzLnNldCh0LGMpKX19X2dldFN0eWxlQW5jaG9yKGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0PXRoaXMuX3N0eWxlQW5jaG9ycy5nZXQoZSk7cmV0dXJuIHQmJnQucGFyZW50Tm9kZT09PXRoaXMuc2hhZG93Um9vdD90Oih0JiZ0aGlzLl9zdHlsZUFuY2hvcnMuZGVsZXRlKGUpLG51bGwpfV9nZXRSb290U3R5bGVJbnNlcnRpb25BbmNob3IoZSl7Zm9yKGxldCB0PTA7dDxlLmNoaWxkTm9kZXMubGVuZ3RoO3QrKyl7bGV0IG49ZS5jaGlsZE5vZGVzW3RdO2lmKCEobiBpbnN0YW5jZW9mIEhUTUxTdHlsZUVsZW1lbnQpKXJldHVybiBufXJldHVybiBudWxsfV9wYXJzZVNsb3RzKCl7bGV0IGU9dGhpcy5fc2xvdHM9e30sdDtmb3IoO3Q9dGhpcy5maXJzdENoaWxkOyl7bGV0IG49dC5ub2RlVHlwZT09PTEmJnQuZ2V0QXR0cmlidXRlKGBzbG90YCl8fGBkZWZhdWx0YDsoZVtuXXx8KGVbbl09W10pKS5wdXNoKHQpLHRoaXMucmVtb3ZlQ2hpbGQodCl9fV9yZW5kZXJTbG90cygpe2xldCBlPXRoaXMuX2dldFNsb3RzKCksdD10aGlzLl9pbnN0YW5jZS50eXBlLl9fc2NvcGVJZDtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXSxpPXIuZ2V0QXR0cmlidXRlKGBuYW1lYCl8fGBkZWZhdWx0YCxhPXRoaXMuX3Nsb3RzW2ldLG89ci5wYXJlbnROb2RlO2lmKGEpZm9yKGxldCBlIG9mIGEpe2lmKHQmJmUubm9kZVR5cGU9PT0xKXtsZXQgbj10K2Atc2Ascj1kb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGUsMSk7ZS5zZXRBdHRyaWJ1dGUobixgYCk7bGV0IGk7Zm9yKDtpPXIubmV4dE5vZGUoKTspaS5zZXRBdHRyaWJ1dGUobixgYCl9by5pbnNlcnRCZWZvcmUoZSxyKX1lbHNlIGZvcig7ci5maXJzdENoaWxkOylvLmluc2VydEJlZm9yZShyLmZpcnN0Q2hpbGQscik7by5yZW1vdmVDaGlsZChyKX19X2dldFNsb3RzKCl7bGV0IGU9W3RoaXNdO3RoaXMuX3RlbGVwb3J0VGFyZ2V0cyYmZS5wdXNoKC4uLnRoaXMuX3RlbGVwb3J0VGFyZ2V0cyk7bGV0IHQ9bmV3IFNldDtmb3IobGV0IG4gb2YgZSl7bGV0IGU9bi5xdWVyeVNlbGVjdG9yQWxsKGBzbG90YCk7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5hZGQoZVtuXSl9cmV0dXJuIEFycmF5LmZyb20odCl9X2luamVjdENoaWxkU3R5bGUoZSx0KXt0aGlzLl9hcHBseVN0eWxlcyhlLnN0eWxlcyxlLHQpfV9iZWdpblBhdGNoKCl7dGhpcy5fcGF0Y2hpbmc9ITAsdGhpcy5fZGlydHk9ITF9X2VuZFBhdGNoKCl7dGhpcy5fcGF0Y2hpbmc9ITEsdGhpcy5fZGlydHkmJnRoaXMuX2luc3RhbmNlJiZ0aGlzLl91cGRhdGUoKX1faGFzU2hhZG93Um9vdCgpe3JldHVybiB0aGlzLl9kZWYuc2hhZG93Um9vdCE9PSExfV9yZW1vdmVDaGlsZFN0eWxlKGUpe319O2Z1bmN0aW9uIFB0KGUpe2xldCB0PWooKTtyZXR1cm4gdCYmdC5jZXx8bnVsbH1mdW5jdGlvbiBGdCgpe2xldCBlPVB0KCk7cmV0dXJuIGUmJmUuc2hhZG93Um9vdH1mdW5jdGlvbiBJdChlPWAkc3R5bGVgKXt7bGV0IHQ9aigpO2lmKCF0KXJldHVybiBBZTtsZXQgbj10LnR5cGUuX19jc3NNb2R1bGVzO3JldHVybiBuJiZuW2VdfHxBZX19dmFyIEx0PW5ldyBXZWFrTWFwLFJ0PW5ldyBXZWFrTWFwLEo9U3ltYm9sKGBfbW92ZUNiYCksenQ9U3ltYm9sKGBfZW50ZXJDYmApLEJ0PShlPT4oZGVsZXRlIGUucHJvcHMubW9kZSxlKSkoe25hbWU6YFRyYW5zaXRpb25Hcm91cGAscHJvcHM6Qyh7fSx6ZSx7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSksc2V0dXAoZSx7c2xvdHM6dH0pe2xldCBuPWooKSxyPXVlKCksaSxvO3JldHVybiBhKCgpPT57aWYoIWkubGVuZ3RoKXJldHVybjtsZXQgdD1lLm1vdmVDbGFzc3x8YCR7ZS5uYW1lfHxgdmB9LW1vdmVgO2lmKCFHdChpWzBdLmVsLG4udm5vZGUuZWwsdCkpe2k9W107cmV0dXJufWkuZm9yRWFjaChWdCksaS5mb3JFYWNoKEh0KTtsZXQgcj1pLmZpbHRlcihVdCk7WmUobi52bm9kZS5lbCksci5mb3JFYWNoKGU9PntsZXQgbj1lLmVsLHI9bi5zdHlsZTtWKG4sdCksci50cmFuc2Zvcm09ci53ZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249YGA7bGV0IGk9bltKXT1lPT57ZSYmZS50YXJnZXQhPT1ufHwoIWV8fGUucHJvcGVydHlOYW1lLmVuZHNXaXRoKGB0cmFuc2Zvcm1gKSkmJihuLnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRyYW5zaXRpb25lbmRgLGkpLG5bSl09bnVsbCxIKG4sdCkpfTtuLmFkZEV2ZW50TGlzdGVuZXIoYHRyYW5zaXRpb25lbmRgLGkpfSksaT1bXX0pLCgpPT57bGV0IGE9eShlKSxzPUhlKGEpLGM9YS50YWd8fF9lO2lmKGk9W10sbylmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IHQ9b1tlXTt0LmVsJiZ0LmVsIGluc3RhbmNlb2YgRWxlbWVudCYmIXQuZWxbJGVdJiYoaS5wdXNoKHQpLGFlKHQsbCh0LHMscixuKSksTHQuc2V0KHQsV3QodC5lbCkpKX1vPXQuZGVmYXVsdD9tKHQuZGVmYXVsdCgpKTpbXTtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrKyl7bGV0IHQ9b1tlXTt0LmtleSE9bnVsbCYmYWUodCxsKHQscyxyLG4pKX1yZXR1cm4gXyhjLG51bGwsbyl9fX0pO2Z1bmN0aW9uIFZ0KGUpe2xldCB0PWUuZWw7dFtKXSYmdFtKXSgpLHRbenRdJiZ0W3p0XSgpfWZ1bmN0aW9uIEh0KGUpe1J0LnNldChlLFd0KGUuZWwpKX1mdW5jdGlvbiBVdChlKXtsZXQgdD1MdC5nZXQoZSksbj1SdC5nZXQoZSkscj10LmxlZnQtbi5sZWZ0LGk9dC50b3Atbi50b3A7aWYocnx8aSl7bGV0IHQ9ZS5lbCxuPXQuc3R5bGUsYT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89MSxzPTE7cmV0dXJuIHQub2Zmc2V0V2lkdGgmJihvPWEud2lkdGgvdC5vZmZzZXRXaWR0aCksdC5vZmZzZXRIZWlnaHQmJihzPWEuaGVpZ2h0L3Qub2Zmc2V0SGVpZ2h0KSwoIU51bWJlci5pc0Zpbml0ZShvKXx8bz09PTApJiYobz0xKSwoIU51bWJlci5pc0Zpbml0ZShzKXx8cz09PTApJiYocz0xKSxNYXRoLmFicyhvLTEpPC4wMSYmKG89MSksTWF0aC5hYnMocy0xKTwuMDEmJihzPTEpLG4udHJhbnNmb3JtPW4ud2Via2l0VHJhbnNmb3JtPWB0cmFuc2xhdGUoJHtyL299cHgsJHtpL3N9cHgpYCxuLnRyYW5zaXRpb25EdXJhdGlvbj1gMHNgLGV9fWZ1bmN0aW9uIFd0KGUpe2xldCB0PWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2xlZnQ6dC5sZWZ0LHRvcDp0LnRvcH19ZnVuY3Rpb24gR3QoZSx0LG4pe2xldCByPWUuY2xvbmVOb2RlKCksaT1lW3pdO2kmJmkuZm9yRWFjaChlPT57ZS5zcGxpdCgvXHMrLykuZm9yRWFjaChlPT5lJiZyLmNsYXNzTGlzdC5yZW1vdmUoZSkpfSksbi5zcGxpdCgvXHMrLykuZm9yRWFjaChlPT5lJiZyLmNsYXNzTGlzdC5hZGQoZSkpLHIuc3R5bGUuZGlzcGxheT1gbm9uZWA7bGV0IGE9dC5ub2RlVHlwZT09PTE/dDp0LnBhcmVudE5vZGU7YS5hcHBlbmRDaGlsZChyKTtsZXR7aGFzVHJhbnNmb3JtOm99PUplKHIpO3JldHVybiBhLnJlbW92ZUNoaWxkKHIpLG99dmFyIFk9ZT0+e2xldCB0PWUucHJvcHNbYG9uVXBkYXRlOm1vZGVsVmFsdWVgXXx8ITE7cmV0dXJuIHAodCk/ZT0+Q2UodCxlKTp0fTtmdW5jdGlvbiBLdChlKXtlLnRhcmdldC5jb21wb3Npbmc9ITB9ZnVuY3Rpb24gcXQoZSl7bGV0IHQ9ZS50YXJnZXQ7dC5jb21wb3NpbmcmJih0LmNvbXBvc2luZz0hMSx0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KGBpbnB1dGApKSl9dmFyIFg9U3ltYm9sKGBfYXNzaWduYCksWj1TeW1ib2woYF9pbml0aWFsVmFsdWVgKTtmdW5jdGlvbiBKdChlLHQsbil7cmV0dXJuIHQmJihlPWUudHJpbSgpKSxuJiYoZT14ZShlKSksZX12YXIgUT17Y3JlYXRlZChlLHttb2RpZmllcnM6e2xhenk6dCx0cmltOm4sbnVtYmVyOnJ9fSxpKXtlLnBhcmVudE5vZGUmJihlLnR5cGU9PT1gdGV4dGA/ZVtaXT1lLmRlZmF1bHRWYWx1ZS5yZXBsYWNlKC9bXHJcbl0vZyxgYCk6ZS50eXBlPT09YHRleHRhcmVhYCYmKGVbWl09ZS5kZWZhdWx0VmFsdWUucmVwbGFjZSgvXHJcbj8vZyxgCmApKSksZVtYXT1ZKGkpO2xldCBhPXJ8fGkucHJvcHMmJmkucHJvcHMudHlwZT09PWBudW1iZXJgO3EoZSx0P2BjaGFuZ2VgOmBpbnB1dGAsdD0+e3QudGFyZ2V0LmNvbXBvc2luZ3x8ZVtYXShKdChlLnZhbHVlLG4sYSkpfSksKG58fGEpJiZxKGUsYGNoYW5nZWAsKCk9PntlLnZhbHVlPUp0KGUudmFsdWUsbixhKX0pLHR8fChxKGUsYGNvbXBvc2l0aW9uc3RhcnRgLEt0KSxxKGUsYGNvbXBvc2l0aW9uZW5kYCxxdCkscShlLGBjaGFuZ2VgLHF0KSl9LG1vdW50ZWQoZSx7dmFsdWU6dCxtb2RpZmllcnM6e3RyaW06bixudW1iZXI6cn19KXtsZXQgaT10Pz9gYCxhPWVbWl07ZGVsZXRlIGVbWl0sYSE9PXZvaWQgMCYmKGUudHlwZT09PWB0ZXh0YHx8ZS50eXBlPT09YHRleHRhcmVhYCkmJmUudmFsdWUhPT1hP2VbWF0oSnQoZS52YWx1ZSxuLHIpKTplLnZhbHVlPWl9LGJlZm9yZVVwZGF0ZShlLHt2YWx1ZTp0LG9sZFZhbHVlOm4sbW9kaWZpZXJzOntsYXp5OnIsdHJpbTppLG51bWJlcjphfX0sbyl7aWYoZVtYXT1ZKG8pLGUuY29tcG9zaW5nKXJldHVybjtsZXQgcz0oYXx8ZS50eXBlPT09YG51bWJlcmApJiYhL14wXGQvLnRlc3QoZS52YWx1ZSk/eGUoZS52YWx1ZSk6ZS52YWx1ZSxjPXQ/P2BgO2lmKHM9PT1jKXJldHVybjtsZXQgbD1lLmdldFJvb3ROb2RlKCk7KGwgaW5zdGFuY2VvZiBEb2N1bWVudHx8bCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpJiZsLmFjdGl2ZUVsZW1lbnQ9PT1lJiZlLnR5cGUhPT1gcmFuZ2VgJiYociYmdD09PW58fGkmJmUudmFsdWUudHJpbSgpPT09Yyl8fChlLnZhbHVlPWMpfX0sWXQ9e2RlZXA6ITAsY3JlYXRlZChlLHQsbil7ZVtYXT1ZKG4pLHEoZSxgY2hhbmdlYCwoKT0+e2xldCB0PWUuX21vZGVsVmFsdWUsbj0kKGUpLHI9ZS5jaGVja2VkLGk9ZVtYXTtpZihwKHQpKXtsZXQgZT1UKHQsbiksYT1lIT09LTE7aWYociYmIWEpaSh0LmNvbmNhdChuKSk7ZWxzZSBpZighciYmYSl7bGV0IG49Wy4uLnRdO24uc3BsaWNlKGUsMSksaShuKX19ZWxzZSBpZihFKHQpKXtsZXQgZT1uZXcgU2V0KHQpO3I/ZS5hZGQobik6ZS5kZWxldGUobiksaShlKX1lbHNlIGkoZW4oZSxyKSl9KX0sbW91bnRlZDpYdCxiZWZvcmVVcGRhdGUoZSx0LG4pe2VbWF09WShuKSxYdChlLHQsbil9fTtmdW5jdGlvbiBYdChlLHt2YWx1ZTp0LG9sZFZhbHVlOm59LHIpe2UuX21vZGVsVmFsdWU9dDtsZXQgaTtpZihwKHQpKWk9VCh0LHIucHJvcHMudmFsdWUpPi0xO2Vsc2UgaWYoRSh0KSlpPXQuaGFzKHIucHJvcHMudmFsdWUpO2Vsc2V7aWYodD09PW4pcmV0dXJuO2k9RCh0LGVuKGUsITApKX1lLmNoZWNrZWQhPT1pJiYoZS5jaGVja2VkPWkpfXZhciBadD17Y3JlYXRlZChlLHt2YWx1ZTp0fSxuKXtlLmNoZWNrZWQ9RCh0LG4ucHJvcHMudmFsdWUpLGVbWF09WShuKSxxKGUsYGNoYW5nZWAsKCk9PntlW1hdKCQoZSkpfSl9LGJlZm9yZVVwZGF0ZShlLHt2YWx1ZTp0LG9sZFZhbHVlOm59LHIpe2VbWF09WShyKSx0IT09biYmKGUuY2hlY2tlZD1EKHQsci5wcm9wcy52YWx1ZSkpfX0sUXQ9e2RlZXA6ITAsY3JlYXRlZChlLHt2YWx1ZTp0LG1vZGlmaWVyczp7bnVtYmVyOm59fSxyKXtlLl9tb2RlbFZhbHVlPXQscShlLGBjaGFuZ2VgLCgpPT57bGV0IHQ9QXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGUub3B0aW9ucyxlPT5lLnNlbGVjdGVkKS5tYXAoZT0+bj94ZSgkKGUpKTokKGUpKTtlW1hdKGUubXVsdGlwbGU/RShlLl9tb2RlbFZhbHVlKT9uZXcgU2V0KHQpOnQ6dFswXSksZS5fYXNzaWduaW5nPSEwLG1lKCgpPT57ZS5fYXNzaWduaW5nPSExfSl9KSxlW1hdPVkocil9LG1vdW50ZWQoZSx7dmFsdWU6dH0peyR0KGUsdCl9LGJlZm9yZVVwZGF0ZShlLHt2YWx1ZTp0fSxuKXtlLl9tb2RlbFZhbHVlPXQsZVtYXT1ZKG4pfSx1cGRhdGVkKGUse3ZhbHVlOnR9KXtlLl9hc3NpZ25pbmd8fCR0KGUsdCl9fTtmdW5jdGlvbiAkdChlLHQpe2xldCBuPWUubXVsdGlwbGUscj1wKHQpO2lmKCEobiYmIXImJiFFKHQpKSl7Zm9yKGxldCBpPTAsYT1lLm9wdGlvbnMubGVuZ3RoO2k8YTtpKyspe2xldCBhPWUub3B0aW9uc1tpXSxvPSQoYSk7aWYobil7aWYocil7bGV0IGU9dHlwZW9mIG87YS5zZWxlY3RlZD1lPT09YHN0cmluZ2B8fGU9PT1gbnVtYmVyYD90LnNvbWUoZT0+U3RyaW5nKGUpPT09U3RyaW5nKG8pKTpUKHQsbyk+LTF9ZWxzZSBhLnNlbGVjdGVkPXQuaGFzKG8pfWVsc2UgaWYoRCgkKGEpLHQpKXtlLnNlbGVjdGVkSW5kZXghPT1pJiYoZS5zZWxlY3RlZEluZGV4PWkpO3JldHVybn19IW4mJmUuc2VsZWN0ZWRJbmRleCE9PS0xJiYoZS5zZWxlY3RlZEluZGV4PS0xKX19ZnVuY3Rpb24gJChlKXtyZXR1cm5gX3ZhbHVlYGluIGU/ZS5fdmFsdWU6ZS52YWx1ZX1mdW5jdGlvbiBlbihlLHQpe2xldCBuPXQ/YF90cnVlVmFsdWVgOmBfZmFsc2VWYWx1ZWA7cmV0dXJuIG4gaW4gZT9lW25dOnR9dmFyIHRuPXtjcmVhdGVkKGUsdCxuKXtybihlLHQsbixudWxsLGBjcmVhdGVkYCl9LG1vdW50ZWQoZSx0LG4pe3JuKGUsdCxuLG51bGwsYG1vdW50ZWRgKX0sYmVmb3JlVXBkYXRlKGUsdCxuLHIpe3JuKGUsdCxuLHIsYGJlZm9yZVVwZGF0ZWApfSx1cGRhdGVkKGUsdCxuLHIpe3JuKGUsdCxuLHIsYHVwZGF0ZWRgKX19O2Z1bmN0aW9uIG5uKGUsdCl7c3dpdGNoKGUpe2Nhc2VgU0VMRUNUYDpyZXR1cm4gUXQ7Y2FzZWBURVhUQVJFQWA6cmV0dXJuIFE7ZGVmYXVsdDpzd2l0Y2godCl7Y2FzZWBjaGVja2JveGA6cmV0dXJuIFl0O2Nhc2VgcmFkaW9gOnJldHVybiBadDtkZWZhdWx0OnJldHVybiBRfX19ZnVuY3Rpb24gcm4oZSx0LG4scixpKXtsZXQgYT1ubihlLnRhZ05hbWUsbi5wcm9wcyYmbi5wcm9wcy50eXBlKVtpXTthJiZhKGUsdCxuLHIpfWZ1bmN0aW9uIGFuKCl7US5nZXRTU1JQcm9wcz0oe3ZhbHVlOmV9KT0+KHt2YWx1ZTplfSksWnQuZ2V0U1NSUHJvcHM9KHt2YWx1ZTplfSx0KT0+e2lmKHQucHJvcHMmJkQodC5wcm9wcy52YWx1ZSxlKSlyZXR1cm57Y2hlY2tlZDohMH19LFl0LmdldFNTUlByb3BzPSh7dmFsdWU6ZX0sdCk9PntpZihwKGUpKXtpZih0LnByb3BzJiZUKGUsdC5wcm9wcy52YWx1ZSk+LTEpcmV0dXJue2NoZWNrZWQ6ITB9fWVsc2UgaWYoRShlKSl7aWYodC5wcm9wcyYmZS5oYXModC5wcm9wcy52YWx1ZSkpcmV0dXJue2NoZWNrZWQ6ITB9fWVsc2UgaWYoZSlyZXR1cm57Y2hlY2tlZDohMH19LHRuLmdldFNTUlByb3BzPShlLHQpPT57aWYodHlwZW9mIHQudHlwZSE9YHN0cmluZ2ApcmV0dXJuO2xldCBuPW5uKHQudHlwZS50b1VwcGVyQ2FzZSgpLHQucHJvcHMmJnQucHJvcHMudHlwZSk7aWYobi5nZXRTU1JQcm9wcylyZXR1cm4gbi5nZXRTU1JQcm9wcyhlLHQpfX12YXIgb249W2BjdHJsYCxgc2hpZnRgLGBhbHRgLGBtZXRhYF0sc249e3N0b3A6ZT0+ZS5zdG9wUHJvcGFnYXRpb24oKSxwcmV2ZW50OmU9PmUucHJldmVudERlZmF1bHQoKSxzZWxmOmU9PmUudGFyZ2V0IT09ZS5jdXJyZW50VGFyZ2V0LGN0cmw6ZT0+IWUuY3RybEtleSxzaGlmdDplPT4hZS5zaGlmdEtleSxhbHQ6ZT0+IWUuYWx0S2V5LG1ldGE6ZT0+IWUubWV0YUtleSxsZWZ0OmU9PmBidXR0b25gaW4gZSYmZS5idXR0b24hPT0wLG1pZGRsZTplPT5gYnV0dG9uYGluIGUmJmUuYnV0dG9uIT09MSxyaWdodDplPT5gYnV0dG9uYGluIGUmJmUuYnV0dG9uIT09MixleGFjdDooZSx0KT0+b24uc29tZShuPT5lW2Ake259S2V5YF0mJiF0LmluY2x1ZGVzKG4pKX0sY249KGUsdCk9PntpZighZSlyZXR1cm4gZTtsZXQgbj1lLl93aXRoTW9kc3x8PXt9LHI9dC5qb2luKGAuYCk7cmV0dXJuIG5bcl18fChuW3JdPSgobiwuLi5yKT0+e2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSsrKXtsZXQgcj1zblt0W2VdXTtpZihyJiZyKG4sdCkpcmV0dXJufXJldHVybiBlKG4sLi4ucil9KSl9LGxuPXtlc2M6YGVzY2FwZWAsc3BhY2U6YCBgLHVwOmBhcnJvdy11cGAsbGVmdDpgYXJyb3ctbGVmdGAscmlnaHQ6YGFycm93LXJpZ2h0YCxkb3duOmBhcnJvdy1kb3duYCxkZWxldGU6YGJhY2tzcGFjZWB9LHVuPShlLHQpPT57bGV0IG49ZS5fd2l0aEtleXN8fD17fSxyPXQuam9pbihgLmApO3JldHVybiBuW3JdfHwobltyXT0obj0+e2lmKCEoYGtleWBpbiBuKSlyZXR1cm47bGV0IHI9dShuLmtleSk7aWYodC5zb21lKGU9PmU9PT1yfHxsbltlXT09PXIpKXJldHVybiBlKG4pfSkpfSxkbj1DKHtwYXRjaFByb3A6RXR9LExlKSxmbixwbj0hMTtmdW5jdGlvbiBtbigpe3JldHVybiBmbnx8PWVlKGRuKX1mdW5jdGlvbiBobigpe3JldHVybiBmbj1wbj9mbjpiZShkbikscG49ITAsZm59dmFyIGduPSgoLi4uZSk9PnttbigpLnJlbmRlciguLi5lKX0pLF9uPSgoLi4uZSk9PntobigpLmh5ZHJhdGUoLi4uZSl9KSx2bj0oKC4uLmUpPT57bGV0IHQ9bW4oKS5jcmVhdGVBcHAoLi4uZSkse21vdW50Om59PXQ7cmV0dXJuIHQubW91bnQ9ZT0+e2xldCByPXhuKGUpO2lmKCFyKXJldHVybjtsZXQgaT10Ll9jb21wb25lbnQ7IWRlKGkpJiYhaS5yZW5kZXImJiFpLnRlbXBsYXRlJiYoaS50ZW1wbGF0ZT1yLmlubmVySFRNTCksci5ub2RlVHlwZT09PTEmJihyLnRleHRDb250ZW50PWBgKTtsZXQgYT1uKHIsITEsYm4ocikpO3JldHVybiByIGluc3RhbmNlb2YgRWxlbWVudCYmKHIucmVtb3ZlQXR0cmlidXRlKGB2LWNsb2FrYCksci5zZXRBdHRyaWJ1dGUoYGRhdGEtdi1hcHBgLGBgKSksYX0sdH0pLHluPSgoLi4uZSk9PntsZXQgdD1obigpLmNyZWF0ZUFwcCguLi5lKSx7bW91bnQ6bn09dDtyZXR1cm4gdC5tb3VudD1lPT57bGV0IHQ9eG4oZSk7aWYodClyZXR1cm4gbih0LCEwLGJuKHQpKX0sdH0pO2Z1bmN0aW9uIGJuKGUpe2lmKGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50KXJldHVybmBzdmdgO2lmKHR5cGVvZiBNYXRoTUxFbGVtZW50PT1gZnVuY3Rpb25gJiZlIGluc3RhbmNlb2YgTWF0aE1MRWxlbWVudClyZXR1cm5gbWF0aG1sYH1mdW5jdGlvbiB4bihlKXtyZXR1cm4gQShlKT9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpOmV9dmFyIFNuPSExLENuPSgpPT57U258fChTbj0hMCxhbigpLHR0KCkpfSx3bj1GKHtfX25hbWU6YEFsZXJ0YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sdmFyaWFudDp7fX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4ocixpKT0+KE4oKSxuKGBkaXZgLHsiZGF0YS1zbG90IjpgYWxlcnRgLGNsYXNzOk0oUyhQKShTKEVuKSh7dmFyaWFudDplLnZhcmlhbnR9KSx0LmNsYXNzKSkscm9sZTpgYWxlcnRgfSxbTyhyLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksVG49Rih7X19uYW1lOmBBbGVydERlc2NyaXB0aW9uYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUscik9PihOKCksbihgZGl2YCx7ImRhdGEtc2xvdCI6YGFsZXJ0LWRlc2NyaXB0aW9uYCxjbGFzczpNKFMoUCkoYHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0ZXh0LXNtIHRleHQtYmFsYW5jZSBtZDp0ZXh0LXByZXR0eSBbJl9wOm5vdCg6bGFzdC1jaGlsZCldOm1iLTQgWyZfYV06dW5kZXJsaW5lIFsmX2FdOnVuZGVybGluZS1vZmZzZXQtMyBbJl9hXTpob3Zlcjp0ZXh0LWZvcmVncm91bmRgLHQuY2xhc3MpKX0sW08oZS4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLEVuPXIoYGdyaWQgZ2FwLTAuNSByb3VuZGVkLWxnIGJvcmRlciBweC0yLjUgcHktMiB0ZXh0LWxlZnQgdGV4dC1zbSBoYXMtZGF0YS1bc2xvdD1hbGVydC1hY3Rpb25dOnJlbGF0aXZlIGhhcy1kYXRhLVtzbG90PWFsZXJ0LWFjdGlvbl06cHItMTggaGFzLVs+c3ZnXTpncmlkLWNvbHMtW2F1dG9fMWZyXSBoYXMtWz5zdmddOmdhcC14LTIgKjpbc3ZnXTpyb3ctc3Bhbi0yICo6W3N2Z106dHJhbnNsYXRlLXktMC41ICo6W3N2Z106dGV4dC1jdXJyZW50ICo6W3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTQgZ3JvdXAvYWxlcnQgcmVsYXRpdmUgdy1mdWxsYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLWNhcmQgdGV4dC1jYXJkLWZvcmVncm91bmRgLGRlc3RydWN0aXZlOmB0ZXh0LWRlc3RydWN0aXZlIGJnLWNhcmQgKjpkYXRhLVtzbG90PWFsZXJ0LWRlc2NyaXB0aW9uXTp0ZXh0LWRlc3RydWN0aXZlLzkwICo6W3N2Z106dGV4dC1jdXJyZW50YCx3YXJuOmB0ZXh0LXN0YXR1cy13YXJuIGJnLWNhcmQgKjpkYXRhLVtzbG90PWFsZXJ0LWRlc2NyaXB0aW9uXTp0ZXh0LXN0YXR1cy13YXJuLzkwICo6W3N2Z106dGV4dC1jdXJyZW50YH19LGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDpgZGVmYXVsdGB9fSksRG49az93aW5kb3c6dm9pZCAwO2smJndpbmRvdy5kb2N1bWVudCxrJiZ3aW5kb3cubmF2aWdhdG9yLGsmJndpbmRvdy5sb2NhdGlvbjtmdW5jdGlvbiBPbihlKXtsZXQgdD1mKGUpO3JldHVybiB0Py4kZWw/P3R9ZnVuY3Rpb24ga24oLi4uZSl7bGV0IHQ9KGUsdCxuLHIpPT4oZS5hZGRFdmVudExpc3RlbmVyKHQsbixyKSwoKT0+ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixyKSksbj1zKCgpPT57bGV0IHQ9YyhmKGVbMF0pKS5maWx0ZXIoZT0+ZSE9bnVsbCk7cmV0dXJuIHQuZXZlcnkoZT0+dHlwZW9mIGUhPWBzdHJpbmdgKT90OnZvaWQgMH0pO3JldHVybiBpZSgoKT0+W24udmFsdWU/Lm1hcChlPT5PbihlKSk/P1tEbl0uZmlsdGVyKGU9PmUhPW51bGwpLGMoZihuLnZhbHVlP2VbMV06ZVswXSkpLGMoUyhuLnZhbHVlP2VbMl06ZVsxXSkpLGYobi52YWx1ZT9lWzNdOmVbMl0pXSwoW2UsbixyLGldLGEsbyk9PntpZighZT8ubGVuZ3RofHwhbj8ubGVuZ3RofHwhcj8ubGVuZ3RoKXJldHVybjtsZXQgcz12KGkpP3suLi5pfTppLGM9ZS5mbGF0TWFwKGU9Pm4uZmxhdE1hcChuPT5yLm1hcChyPT50KGUsbixyLHMpKSkpO28oKCk9PntjLmZvckVhY2goZT0+ZSgpKX0pfSx7Zmx1c2g6YHBvc3RgfSl9ZnVuY3Rpb24gQW4oKXtsZXQgZT15ZSghMSksdD1qKCk7cmV0dXJuIHQmJkRlKCgpPT57ZS52YWx1ZT0hMH0sdCksZX1mdW5jdGlvbiBqbihlKXtsZXQgdD1BbigpO3JldHVybiBzKCgpPT4odC52YWx1ZSwhIWUoKSkpfWZ1bmN0aW9uIE1uKGUpe3JldHVybiB0eXBlb2YgZT09YGZ1bmN0aW9uYD9lOnR5cGVvZiBlPT1gc3RyaW5nYD90PT50LmtleT09PWU6QXJyYXkuaXNBcnJheShlKT90PT5lLmluY2x1ZGVzKHQua2V5KTooKT0+ITB9ZnVuY3Rpb24gTm4oLi4uZSl7bGV0IHQsbixyPXt9O2UubGVuZ3RoPT09Mz8odD1lWzBdLG49ZVsxXSxyPWVbMl0pOmUubGVuZ3RoPT09Mj90eXBlb2YgZVsxXT09YG9iamVjdGA/KHQ9ITAsbj1lWzBdLHI9ZVsxXSk6KHQ9ZVswXSxuPWVbMV0pOih0PSEwLG49ZVswXSk7bGV0e3RhcmdldDppPURuLGV2ZW50TmFtZTphPWBrZXlkb3duYCxwYXNzaXZlOm89ITEsZGVkdXBlOnM9ITF9PXIsYz1Nbih0KTtyZXR1cm4ga24oaSxhLGU9PntlLnJlcGVhdCYmZihzKXx8YyhlKSYmbihlKX0sbyl9ZnVuY3Rpb24gUG4oZSl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpfWZ1bmN0aW9uIEZuKGUsdCxuPXt9KXtsZXR7d2luZG93OnI9RG4sLi4uaX09bixhLG89am4oKCk9PnImJmBSZXNpemVPYnNlcnZlcmBpbiByKSxjPSgpPT57YSYmPShhLmRpc2Nvbm5lY3QoKSx2b2lkIDApfSxsPWIocygoKT0+e2xldCB0PWYoZSk7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/dC5tYXAoZT0+T24oZSkpOltPbih0KV19KSxlPT57aWYoYygpLG8udmFsdWUmJnIpe2E9bmV3IFJlc2l6ZU9ic2VydmVyKHQpO2ZvcihsZXQgdCBvZiBlKXQmJmEub2JzZXJ2ZSh0LGkpfX0se2ltbWVkaWF0ZTohMCxmbHVzaDpgcG9zdGB9KSx1PSgpPT57YygpLGwoKX07cmV0dXJuIGcodSkse2lzU3VwcG9ydGVkOm8sc3RvcDp1fX1mdW5jdGlvbiBJbihlLG4scixpPXt9KXt2YXIgYSxvO2xldHtjbG9uZTpjPSExLHBhc3NpdmU6bD0hMSxldmVudE5hbWU6dSxkZWVwOmQ9ITEsZGVmYXVsdFZhbHVlOmYsc2hvdWxkRW1pdDpwfT1pLG09aigpLGg9cnx8bT8uZW1pdHx8KG09PW51bGx8fChhPW0uJGVtaXQpPT1udWxsP3ZvaWQgMDphLmJpbmQobSkpfHwobT09bnVsbHx8KG89bS5wcm94eSk9PW51bGx8fChvPW8uJGVtaXQpPT1udWxsP3ZvaWQgMDpvLmJpbmQobT8ucHJveHkpKSxnPXU7bnx8PWBtb2RlbFZhbHVlYCxnfHw9YHVwZGF0ZToke24udG9TdHJpbmcoKX1gO2xldCBfPWU9PmM/dHlwZW9mIGM9PWBmdW5jdGlvbmA/YyhlKTpQbihlKTplLHY9KCk9PnQoZVtuXSk/XyhlW25dKTpmLHk9ZT0+e3A/cChlKSYmaChnLGUpOmgoZyxlKX07aWYobCl7bGV0IHQ9bmUodigpKSxyPSExO3JldHVybiBiKCgpPT5lW25dLGU9PntyfHwocj0hMCx0LnZhbHVlPV8oZSksbWUoKCk9PnI9ITEpKX0pLGIodCx0PT57IXImJih0IT09ZVtuXXx8ZCkmJnkodCl9LHtkZWVwOmR9KSx0fXJldHVybiBzKHtnZXQoKXtyZXR1cm4gdigpfSxzZXQoZSl7eShlKX19KX12YXIgTG49Rih7X19uYW1lOmBCdXR0b25gLHByb3BzOnt2YXJpYW50Ont9LHNpemU6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7ZGVmYXVsdDpgYnV0dG9uYH19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKG4scik9PihOKCkscmUoUyhrZSkseyJkYXRhLXNsb3QiOmBidXR0b25gLCJkYXRhLXZhcmlhbnQiOmUudmFyaWFudCwiZGF0YS1zaXplIjplLnNpemUsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxjbGFzczpNKFMoUCkoUyhSbikoe3ZhcmlhbnQ6ZS52YXJpYW50LHNpemU6ZS5zaXplfSksdC5jbGFzcykpfSx7ZGVmYXVsdDpUZSgoKT0+W08obi4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGRhdGEtdmFyaWFudGAsYGRhdGEtc2l6ZWAsYGFzYCxgYXMtY2hpbGRgLGBjbGFzc2BdKSl9fSksUm49cihgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MCBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIGFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUgZGFyazphcmlhLWludmFsaWQ6Ym9yZGVyLWRlc3RydWN0aXZlLzUwIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBiZy1jbGlwLXBhZGRpbmcgdGV4dC1zbSBmb250LW1lZGl1bSBmb2N1cy12aXNpYmxlOnJpbmctMyBhcmlhLWludmFsaWQ6cmluZy0zIGFjdGl2ZTpub3QtYXJpYS1baGFzcG9wdXBdOnRyYW5zbGF0ZS15LXB4IFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTQgZ3JvdXAvYnV0dG9uIGlubGluZS1mbGV4IHNocmluay0wIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3aGl0ZXNwYWNlLW5vd3JhcCB0cmFuc2l0aW9uLWFsbCBvdXRsaW5lLW5vbmUgc2VsZWN0LW5vbmUgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wYCx7dmFyaWFudHM6e3ZhcmlhbnQ6e2RlZmF1bHQ6YGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLXByaW1hcnkvODBgLG91dGxpbmU6YGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgZGFyazpiZy1pbnB1dC8zMCBkYXJrOmJvcmRlci1pbnB1dCBkYXJrOmhvdmVyOmJnLWlucHV0LzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRgLHNlY29uZGFyeTpgYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwIGFyaWEtZXhwYW5kZWQ6Ymctc2Vjb25kYXJ5IGFyaWEtZXhwYW5kZWQ6dGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZGAsZ2hvc3Q6YGhvdmVyOmJnLW11dGVkIGhvdmVyOnRleHQtZm9yZWdyb3VuZCBkYXJrOmhvdmVyOmJnLW11dGVkLzUwIGFyaWEtZXhwYW5kZWQ6YmctbXV0ZWQgYXJpYS1leHBhbmRlZDp0ZXh0LWZvcmVncm91bmRgLGRlc3RydWN0aXZlOmBiZy1kZXN0cnVjdGl2ZS8xMCBob3ZlcjpiZy1kZXN0cnVjdGl2ZS8yMCBmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvMjAgZGFyazpmb2N1cy12aXNpYmxlOnJpbmctZGVzdHJ1Y3RpdmUvNDAgZGFyazpiZy1kZXN0cnVjdGl2ZS8yMCB0ZXh0LWRlc3RydWN0aXZlIGZvY3VzLXZpc2libGU6Ym9yZGVyLWRlc3RydWN0aXZlLzQwIGRhcms6aG92ZXI6YmctZGVzdHJ1Y3RpdmUvMzBgLGxpbms6YHRleHQtcHJpbWFyeSB1bmRlcmxpbmUtb2Zmc2V0LTQgaG92ZXI6dW5kZXJsaW5lYH0sc2l6ZTp7ZGVmYXVsdDpgaC04IGdhcC0xLjUgcHgtMi41IGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTIgaGFzLWRhdGEtW2ljb249aW5saW5lLXN0YXJ0XTpwbC0yYCx4czpgaC02IGdhcC0xIHJvdW5kZWQtW21pbih2YXIoLS1yYWRpdXMtbWQpLDEwcHgpXSBweC0yIHRleHQteHMgaW4tZGF0YS1bc2xvdD1idXR0b24tZ3JvdXBdOnJvdW5kZWQtbGcgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMS41IGhhcy1kYXRhLVtpY29uPWlubGluZS1zdGFydF06cGwtMS41IFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTNgLHNtOmBoLTcgZ2FwLTEgcm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTJweCldIHB4LTIuNSB0ZXh0LVswLjhyZW1dIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWxnIGhhcy1kYXRhLVtpY29uPWlubGluZS1lbmRdOnByLTEuNSBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTEuNSBbJl9zdmc6bm90KFtjbGFzcyo9c2l6ZS1dKV06c2l6ZS0zLjVgLGxnOmBoLTkgZ2FwLTEuNSBweC0yLjUgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMiBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTJgLGljb246YHNpemUtOGAsImljb24teHMiOmBzaXplLTYgcm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTBweCldIGluLWRhdGEtW3Nsb3Q9YnV0dG9uLWdyb3VwXTpyb3VuZGVkLWxnIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTNgLCJpY29uLXNtIjpgc2l6ZS03IHJvdW5kZWQtW21pbih2YXIoLS1yYWRpdXMtbWQpLDEycHgpXSBpbi1kYXRhLVtzbG90PWJ1dHRvbi1ncm91cF06cm91bmRlZC1sZ2AsImljb24tbGciOmBzaXplLTlgfX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OmBkZWZhdWx0YCxzaXplOmBkZWZhdWx0YH19KSx6bj1GKHtfX25hbWU6YENhcmREZXNjcmlwdGlvbmAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLHIpPT4oTigpLG4oYGRpdmAseyJkYXRhLXNsb3QiOmBjYXJkLWRlc2NyaXB0aW9uYCxjbGFzczpNKFMoUCkoYHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0ZXh0LXNtYCx0LmNsYXNzKSl9LFtPKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KTtleHBvcnR7WnQgYXMgQSxnbiBhcyBDLEZ0IGFzIEQsUHQgYXMgRSxjbiBhcyBGLFEgYXMgTSxldCBhcyBOLFl0IGFzIE8sdW4gYXMgUCxFdCBhcyBTLHJ0IGFzIFQsQXQgYXMgXyxPbiBhcyBhLENuIGFzIGIsRm4gYXMgYyx3biBhcyBkLEJlIGFzIGYseW4gYXMgZyx2biBhcyBoLE5uIGFzIGksUXQgYXMgaix0biBhcyBrLEluIGFzIGwsTnQgYXMgbSxMbiBhcyBuLGtuIGFzIG8sQnQgYXMgcCxEbiBhcyByLEFuIGFzIHMsem4gYXMgdCxUbiBhcyB1LGp0IGFzIHYsSXQgYXMgdyxMZSBhcyB4LF9uIGFzIHl9Ow==",
|
|
),
|
|
},
|
|
"ClampedRangeNotice-Bvhm1e-B.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0V0IGFzIGUsSXQgYXMgdCxMdCBhcyBuLE90IGFzIHIsUnIgYXMgaSxkaSBhcyBhLGt0IGFzIG8sbyBhcyBzLHJyIGFzIGMsd24gYXMgbCx6dCBhcyB1fWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHtkLHUgYXMgZn1mcm9tIi4vQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIjt2YXIgcD11KHtfX25hbWU6YENsYW1wZWRSYW5nZU5vdGljZWAscHJvcHM6e3dpbmRvdzp7fSxzcGFuOnt9fSxzZXR1cCh1KXtsZXQgcD11LG09ZSgoKT0+cyhwLndpbmRvdyxwLnNwYW4pKTtyZXR1cm4oZSxzKT0+bS52YWx1ZT8obCgpLHIoaShkKSx7a2V5OjAsdmFyaWFudDpgd2FybmB9LHtkZWZhdWx0OmMoKCk9PltuKGkoZiksbnVsbCx7ZGVmYXVsdDpjKCgpPT5bdChhKG0udmFsdWUpLDEpXSksXzoxfSldKSxfOjF9KSk6byhgYCwhMCl9fSk7ZXhwb3J0e3AgYXMgdH07",
|
|
),
|
|
},
|
|
"CompactNumber-B1ihQZH7.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0F0IGFzIGUsRHQgYXMgdCxFdCBhcyBuLGRpIGFzIHIsd24gYXMgaSx6dCBhcyBhfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHtjIGFzIG8saSBhcyBzfWZyb20iLi9iYWRnZS1uczBqOE9Vci5qcyI7dmFyIGM9W2B0aXRsZWBdLGw9eyJhcmlhLWhpZGRlbiI6YHRydWVgfSx1PXtjbGFzczpgc3Itb25seWB9LGQ9YSh7X19uYW1lOmBDb21wYWN0TnVtYmVyYCxwcm9wczp7dmFsdWU6e319LHNldHVwKGEpe2xldCBkPWEsZj1uKCgpPT5zKGQudmFsdWUpKSxwPW4oKCk9Pm8oZC52YWx1ZSkpO3JldHVybihuLGEpPT4oaSgpLGUoYHNwYW5gLHt0aXRsZTpwLnZhbHVlfSxbdChgc3BhbmAsbCxyKGYudmFsdWUpLDEpLHQoYHNwYW5gLHUscihwLnZhbHVlKSwxKV0sOCxjKSl9fSk7ZXhwb3J0e2QgYXMgdH07",
|
|
),
|
|
},
|
|
"ConfigPage-BPgQjjSB.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FuIGFzIGUsQXQgYXMgdCxDIGFzIG4sRHQgYXMgcixFciBhcyBpLEV0IGFzIGEsSXQgYXMgbyxKbiBhcyBzLEx0IGFzIGMsTW4gYXMgbCxPciBhcyB1LE90IGFzIGQsUnIgYXMgZixTIGFzIHAsU24gYXMgbSxXIGFzIGgsWiBhcyBnLF8sYXIgYXMgdixiIGFzIHksZGkgYXMgYixndCBhcyB4LGggYXMgUyxrdCBhcyBDLGx0IGFzIHcsb3QgYXMgVCxyciBhcyBFLHNpIGFzIEQsdCBhcyBPLHYgYXMgayx2biBhcyBBLHduIGFzIGoseCBhcyBNLHkgYXMgTix6dCBhcyBQfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHtPIGFzIGVlLGQgYXMgRixuIGFzIHRlLHQgYXMgbmUsdSBhcyBJfWZyb20iLi9DYXJkRGVzY3JpcHRpb24tSWRPdDMxN2MuanMiO2ltcG9ydHtuIGFzIHJlLHIgYXMgaWUsdCBhcyBhZX1mcm9tIi4vdGFicy1CYkdKeUNSci5qcyI7aW1wb3J0e2EgYXMgTCxpIGFzIFIsbiBhcyB6LG8gYXMgQixyIGFzIFYscyBhcyBILHUgYXMgb2V9ZnJvbSIuL2luZGV4LUJpVFFfZ0NFLmpzIjtpbXBvcnR7dCBhcyBzZX1mcm9tIi4vY2xpcGJvYXJkLUI3M2ZaMGMxLmpzIjtpbXBvcnR7dCBhcyBjZX1mcm9tIi4vY29uc3VtZXJzLXdCLWl0am5mLmpzIjt2YXIgbGU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xLjVgfSx1ZT17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMmB9LGRlPXtrZXk6MCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxVPVAoe19fbmFtZTpgU25pcHBldEJsb2NrYCxwcm9wczp7dGV4dDp7fSxsYWJlbDp7fX0sc2V0dXAoZSl7bGV0IG49ZSxpPXMoYHByZWApLGE9dShgaWRsZWApLGQ7YXN5bmMgZnVuY3Rpb24gcCgpe2EudmFsdWU9YXdhaXQgc2Uobi50ZXh0LGkudmFsdWU/P3ZvaWQgMCksY2xlYXJUaW1lb3V0KGQpLGQ9c2V0VGltZW91dCgoKT0+e2EudmFsdWU9YGlkbGVgfSwxNTAwKX1sZXQgXz17aWRsZTpgQ29weWAsY29waWVkOmBDb3BpZWRgLHNlbGVjdGVkOmBTZWxlY3RlZCDigJQgcHJlc3Mg4oyYL0N0cmwrQ2AsZmFpbGVkOmBDb3B5IGZhaWxlZGB9O3JldHVybiBtKCgpPT5jbGVhclRpbWVvdXQoZCkpLChuLGkpPT57bGV0IHM9bChgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIGooKSx0KGBkaXZgLGxlLFtyKGBkaXZgLHVlLFtlLmxhYmVsPyhqKCksdChgc3BhbmAsZGUsYihlLmxhYmVsKSwxKSk6QyhgYCwhMCksYyhmKHRlKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsY2xhc3M6YG1sLWF1dG9gLG9uQ2xpY2s6cH0se2RlZmF1bHQ6RSgoKT0+W2Mocyx7aWNvbjphLnZhbHVlPT09YGlkbGVgP2YoZyk6YS52YWx1ZT09PWBmYWlsZWRgP2YoVCk6ZihoKSxjbGFzczpEKFtgc2l6ZS0zLjVgLGEudmFsdWU9PT1gZmFpbGVkYD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSksImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gLGBjbGFzc2BdKSxvKGAgYCtiKF9bYS52YWx1ZV0pLDEpXSksXzoxfSldKSxyKGBwcmVgLHtyZWY6YHByZWAsY2xhc3M6YG92ZXJmbG93LXgtYXV0byByb3VuZGVkLW1kIGJvcmRlciBiZy1tdXRlZCBwLTMgZm9udC1tb25vIHRleHQteHMgc2VsZWN0LXRleHQgd2hpdGVzcGFjZS1wcmVgfSxiKGUudGV4dCksNTEzKV0pfX19KSxmZT1gICBgLHBlPS9eW0EtWmEtel9dW0EtWmEtejAtOS5fLV0qJC8sbWU9bmV3IFNldChbYHRydWVgLGBmYWxzZWAsYHllc2AsYG5vYCxgeWAsYG5gLGBvbmAsYG9mZmAsYG51bGxgLGBuaWxgLGBuYW5gLGBpbmZgXSk7ZnVuY3Rpb24gaGUoZSl7cmV0dXJuIXBlLnRlc3QoZSl8fG1lLmhhcyhlLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGdlKGUpe3JldHVybiBoZShlKX12YXIgX2U9UmVnRXhwKGBbXFx1MDA3ZlxcdTAwODAtXFx1MDA5Zlx1MjAyOFx1MjAyOV1gLGBnYCk7ZnVuY3Rpb24gdmUoZSl7cmV0dXJuIGUucmVwbGFjZShfZSxlPT57bGV0IHQ9ZS5jb2RlUG9pbnRBdCgwKTtyZXR1cm4gdDw9MjU1P2BcXHgke3QudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsYDBgKX1gOmBcXHUke3QudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDQsYDBgKX1gfSl9ZnVuY3Rpb24gVyhlKXtyZXR1cm4gZ2UoZSk/dmUoSlNPTi5zdHJpbmdpZnkoZSkpOmV9ZnVuY3Rpb24gRyhlKXtyZXR1cm4gZT09PW51bGw/YG51bGxgOnR5cGVvZiBlPT1gYm9vbGVhbmB8fHR5cGVvZiBlPT1gbnVtYmVyYD9TdHJpbmcoZSk6aGUoZSk/dmUoSlNPTi5zdHJpbmdpZnkoZSkpOmV9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUubGVuZ3RoPT09MD9gW11gOmBbJHtlLm1hcChlPT5HKGUpKS5qb2luKGAsIGApfV1gfWZ1bmN0aW9uIGJlKGUpe3JldHVybiBlLmxlbmd0aD09PTA/YHt9YDpgeyAke2UubWFwKChbZSx0XSk9PmAke1coZSl9OiAke0codCl9YCkuam9pbihgLCBgKX0gfWB9ZnVuY3Rpb24geGUoZSl7cmV0dXJuIHR5cGVvZiBlPT1gb2JqZWN0YCYmISFlJiYhQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBLKGUpe3JldHVybiBlPT09bnVsbHx8dHlwZW9mIGU9PWBzdHJpbmdgfHx0eXBlb2YgZT09YG51bWJlcmB8fHR5cGVvZiBlPT1gYm9vbGVhbmB9ZnVuY3Rpb24gU2UoZSx0KXtsZXQgbj1mZS5yZXBlYXQodCkscj1bXTtmb3IobGV0W2ksYV1vZiBPYmplY3QuZW50cmllcyhlKSl7aWYoYT09PXZvaWQgMCljb250aW51ZTtsZXQgZT1gJHtufSR7VyhpKX06YDtpZihLKGEpKXIucHVzaChgJHtlfSAke0coYSl9YCk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGEpKXtpZihhLmV2ZXJ5KEspKXIucHVzaChgJHtlfSAke3llKGEpfWApO2Vsc2V7ci5wdXNoKGUpO2ZvcihsZXQgZSBvZiBhKXIucHVzaChgJHtufSR7ZmV9LSAke0soZSk/RyhlKTpKU09OLnN0cmluZ2lmeShlKX1gKX19ZWxzZSB4ZShhKSYmKE9iamVjdC5rZXlzKGEpLmZpbHRlcihlPT5hW2VdIT09dm9pZCAwKS5sZW5ndGg9PT0wP3IucHVzaChgJHtlfSB7fWApOihyLnB1c2goZSksci5wdXNoKC4uLlNlKGEsdCsxKSkpKX1yZXR1cm4gcn1mdW5jdGlvbiBDZShlLHQ9MCl7cmV0dXJuIFNlKGUsdCkuam9pbihgCmApfWZ1bmN0aW9uIHdlKGUsdCl7bGV0IG49dCxyPVtgc3BlY2AsYHBsdWdpbmAsYGxsbWdhdGV3YXlgLC4uLmVdO2ZvcihsZXQgZT1yLmxlbmd0aC0xO2U+PTA7ZS0tKW49e1tyW2VdXTpufTtyZXR1cm4gQ2Uobil9ZnVuY3Rpb24gcShlKXtpZihlPT09bnVsbHx8dHlwZW9mIGU9PWBzdHJpbmdgfHx0eXBlb2YgZT09YG51bWJlcmB8fHR5cGVvZiBlPT1gYm9vbGVhbmApcmV0dXJuIGU7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZS5tYXAocSk7aWYodHlwZW9mIGU9PWBvYmplY3RgKXtsZXQgdD17fTtmb3IobGV0W24scl1vZiBPYmplY3QuZW50cmllcyhlKSl0W25dPXEocik7cmV0dXJuIHR9cmV0dXJuIFN0cmluZyhlKX12YXIgVGU9L15bYS16QS1aMC05Ll8tXSskLztmdW5jdGlvbiBFZShlKXtyZXR1cm4gVGUudGVzdChlKX1mdW5jdGlvbiBKKGUpe3JldHVybiBlLnRyaW0oKSE9PWBgfWZ1bmN0aW9uIFkoZSl7cmV0dXJuIE51bWJlci5pc0Zpbml0ZShlKSYmZT49MH1mdW5jdGlvbiBEZShlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49MH1mdW5jdGlvbiBPZShlLHQpe3JldHVybiB0Lmxlbmd0aD4wJiZlLmxlbmd0aD09PTA/YEEgcGVyc29uYWwgZ3JhbnQgbmFtaW5nIG1vZGVscyBuZWVkcyBhdCBsZWFzdCBvbmUgcHJvdmlkZXIgdG9vIOKAlCBhbiBlbXB0eSBwcm92aWRlcnMgbGlzdCBtZWFucyBFVkVSWSBjb25maWd1cmVkIHByb3ZpZGVyIChub3Qgbm9uZSksIHNvIHRoaXMgd291bGQgc2lsZW50bHkgd2lkZW4gYWNjZXNzIGZhciBiZXlvbmQgd2hhdCB3YXMgdHlwZWQgKGF1dGguZ28gcmVqZWN0cyBpdCkuYDpudWxsfXZhciBrZT1bYHJlcXVlc3RzUGVyTWludXRlYCxgcmVxdWVzdHNQZXJEYXlgLGB0b2tlbnNQZXJEYXlgLGB0b2tlbnNQZXJNb250aGAsYGNvc3RQZXJEYXlVU0RgLGBjb3N0UGVyTW9udGhVU0RgXTtmdW5jdGlvbiBYKGUpe2xldCB0PVtdO2ZvcihsZXQgbiBvZiBrZSl7bGV0IHI9ZVtuXTtyJiZ0LnB1c2goW24scl0pfXJldHVybiB0fWZ1bmN0aW9uIEFlKGUsdCl7bGV0IG49e307Zm9yKGxldFtlLHJdb2YgWCh0KSluW2VdPXI7cmV0dXJuIHdlKFtgZ3JvdXBzYCxlXSx7bGltaXRzOm59KX1mdW5jdGlvbiBaKGUpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1mdW5jdGlvbiBRKGUpe3JldHVybmBbJHtlLm1hcChaKS5qb2luKGAsIGApfV1gfWZ1bmN0aW9uICQoZSl7cmV0dXJuYHske1goZSkubWFwKChbZSx0XSk9PmAke1ooZSl9OiAke3R9YCkuam9pbihgLCBgKX19YH1mdW5jdGlvbiBqZShlKXtyZXR1cm5gImxpbWl0cyI6ICR7JChlKX1gfWZ1bmN0aW9uIE1lKGUsdCl7cmV0dXJuIHdlKFtgZ3JvdXBzYCxlXSx7cHJvdmlkZXJzOnQucHJvdmlkZXJzLG1vZGVsczp0Lm1vZGVscyxtY3BTZXJ2ZXJzOnQubWNwU2VydmVycyxhZ2VudHM6dC5hZ2VudHN9KX1mdW5jdGlvbiBOZShlKXtsZXQgdD1bXTtyZXR1cm4gZS5wcm92aWRlcnMubGVuZ3RoPjAmJnQucHVzaChgInByb3ZpZGVycyI6ICR7UShlLnByb3ZpZGVycyl9YCksZS5tb2RlbHMubGVuZ3RoPjAmJnQucHVzaChgIm1vZGVscyI6ICR7UShlLm1vZGVscyl9YCksdC5qb2luKGAsIGApfWZ1bmN0aW9uIFBlKGUsdCl7bGV0IG49W107dC5jb250ZXh0VG9rZW5zIT09dm9pZCAwJiZuLnB1c2goW2Bjb250ZXh0VG9rZW5zYCx0LmNvbnRleHRUb2tlbnNdKSx0LmZyZWUhPT12b2lkIDAmJm4ucHVzaChbYGZyZWVgLHQuZnJlZV0pO2xldCByPWJlKG4pO3JldHVybltgc3BlYzpgLGAgIHBsdWdpbjpgLGAgICAgbGxtZ2F0ZXdheTpgLGAgICAgICBtb2RlbE1ldGE6YCxgICAgICAgICAke0pTT04uc3RyaW5naWZ5KGUpfTogJHtyfWBdLmpvaW4oYApgKX1mdW5jdGlvbiBGZShlLHQpe2xldCBuPWJlKFtbYGlucHV0UGVyTWAsdC5pbnB1dFBlck1dLFtgb3V0cHV0UGVyTWAsdC5vdXRwdXRQZXJNXV0pO3JldHVybltgc3BlYzpgLGAgIHBsdWdpbjpgLGAgICAgbGxtZ2F0ZXdheTpgLGAgICAgICBwcmljaW5nOmAsYCAgICAgICAgJHtXKGUpfTogJHtufWBdLmpvaW4oYApgKX12YXIgSWU9YHNrLWxsbWd3LVJFUExBQ0VfTUVgO2Z1bmN0aW9uIExlKCl7bGV0IGU9Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzMikpLHQ9YGA7Zm9yKGxldCBuIG9mIGUpdCs9U3RyaW5nLmZyb21DaGFyQ29kZShuKTtyZXR1cm5gc2stbGxtZ3ctJHtidG9hKHQpLnJlcGxhY2UoL1wrL2csYC1gKS5yZXBsYWNlKC9cLy9nLGBfYCkucmVwbGFjZSgvPSskLyxgYCl9YH1mdW5jdGlvbiBSZShlKXtsZXQgdD1bYCJuYW1lIjogJHtaKGUubmFtZSl9YCxgImFwaUtleSI6ICR7WihlLmFwaUtleSl9YF07cmV0dXJuIGUuZ3JvdXAmJnQucHVzaChgImdyb3VwIjogJHtaKGUuZ3JvdXApfWApLGUuZ3JvdXBzJiZlLmdyb3Vwcy5sZW5ndGg+MCYmdC5wdXNoKGAiZ3JvdXBzIjogJHtRKGUuZ3JvdXBzKX1gKSxlLnByb3ZpZGVycyYmZS5wcm92aWRlcnMubGVuZ3RoPjAmJnQucHVzaChgInByb3ZpZGVycyI6ICR7UShlLnByb3ZpZGVycyl9YCksZS5tb2RlbHMmJmUubW9kZWxzLmxlbmd0aD4wJiZ0LnB1c2goYCJtb2RlbHMiOiAke1EoZS5tb2RlbHMpfWApLGUubGltaXRzJiZYKGUubGltaXRzKS5sZW5ndGg+MCYmdC5wdXNoKGAibGltaXRzIjogJHskKGUubGltaXRzKX1gKSxlLmFkbWluJiZ0LnB1c2goYCJhZG1pbiI6ICR7RyghMCl9YCksYHske3Quam9pbihgLCBgKX19YH12YXIgemU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sQmU9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sVmU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sSGU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sVWU9e2lkOmBncmFudC10YXJnZXQtbmFtZS1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sV2U9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sR2U9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sS2U9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0scWU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sSmU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sWWU9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFhlPVAoe19fbmFtZTpgR3JhbnRGb3JtYCxwcm9wczp7Z3JvdXBOYW1lczp7fSx1c2VyTmFtZXM6e319LHNldHVwKG4pe2xldCBpPW4scz11KGBncm91cGApLGw9dShgYCkscD11KGBgKSxtPXUoYGApLGg9dShgYCksZz11KGBgKTtmdW5jdGlvbiBfKGUpe2xldCB0PW5ldyBTZXQ7Zm9yKGxldCBuIG9mIGUuc3BsaXQoYCxgKSl7bGV0IGU9bi50cmltKCk7ZSYmdC5hZGQoZSl9cmV0dXJuIEFycmF5LmZyb20odCl9bGV0IHY9YSgoKT0+XyhwLnZhbHVlKSkseT1hKCgpPT5fKG0udmFsdWUpKSxTPWEoKCk9Pl8oaC52YWx1ZSkpLHc9YSgoKT0+XyhnLnZhbHVlKSksVD1hKCgpPT5zLnZhbHVlPT09YGdyb3VwYD9pLmdyb3VwTmFtZXM6aS51c2VyTmFtZXMpLEQ9YSgoKT0+cy52YWx1ZT09PWBncm91cGA/RWUobC52YWx1ZS50cmltKCkpOkoobC52YWx1ZSkpLE89YSgoKT0+cy52YWx1ZT09PWB1c2VyYD9PZSh2LnZhbHVlLHkudmFsdWUpOm51bGwpLGs9YSgoKT0+di52YWx1ZS5sZW5ndGg9PT0wJiZ5LnZhbHVlLmxlbmd0aD09PTAmJlMudmFsdWUubGVuZ3RoPT09MCYmdy52YWx1ZS5sZW5ndGg9PT0wKSxBPWEoKCk9PiFELnZhbHVlfHxPLnZhbHVlfHxrLnZhbHVlP251bGw6cy52YWx1ZT09PWBncm91cGA/TWUobC52YWx1ZS50cmltKCkse3Byb3ZpZGVyczp2LnZhbHVlLG1vZGVsczp5LnZhbHVlLG1jcFNlcnZlcnM6Uy52YWx1ZSxhZ2VudHM6dy52YWx1ZX0pOk5lKHtwcm92aWRlcnM6di52YWx1ZSxtb2RlbHM6eS52YWx1ZX0pfHxudWxsKTtyZXR1cm4obixpKT0+KGooKSx0KGBkaXZgLHplLFtyKGBkaXZgLEJlLFtyKGBkaXZgLFZlLFtpWzhdfHw9cihgbGFiZWxgLHtpZDpgZ3JhbnQtdGFyZ2V0LWtpbmQtbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBUYXJnZXRgLC0xKSxjKGYoQikseyJtb2RlbC12YWx1ZSI6cy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVswXXx8PWU9PnMudmFsdWU9ZX0se2RlZmF1bHQ6RSgoKT0+W2MoZihWKSx7ImFyaWEtbGFiZWxsZWRieSI6YGdyYW50LXRhcmdldC1raW5kLWxhYmVsYH0se2RlZmF1bHQ6RSgoKT0+W2MoZih6KSldKSxfOjF9KSxjKGYoTCksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bYyhmKFIpLHt2YWx1ZTpgZ3JvdXBgfSx7ZGVmYXVsdDpFKCgpPT5bLi4uaVs2XXx8PVtvKGBHcm91cGAsLTEpXV0pLF86MX0pLGMoZihSKSx7dmFsdWU6YHVzZXJgfSx7ZGVmYXVsdDpFKCgpPT5bLi4uaVs3XXx8PVtvKGBVc2VyIChwZXJzb25hbCBncmFudCwgZXhpc3RpbmcgdXNlcnMuanNvbiBlbnRyeSlgLC0xKV1dKSxfOjF9KV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSldKSxyKGBkaXZgLEhlLFtyKGBsYWJlbGAsVWUsYihzLnZhbHVlPT09YGdyb3VwYD9gR3JvdXAgbmFtZWA6YFVzZXIgbmFtZWApLDEpLGMoZihCKSx7Im1vZGVsLXZhbHVlIjpsLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzFdfHw9ZT0+bC52YWx1ZT1TdHJpbmcoZSl9LHtkZWZhdWx0OkUoKCk9PltjKGYoVikseyJhcmlhLWxhYmVsbGVkYnkiOmBncmFudC10YXJnZXQtbmFtZS1sYWJlbGB9LHtkZWZhdWx0OkUoKCk9PltjKGYoeikse3BsYWNlaG9sZGVyOmBTZWxlY3TigKZgfSldKSxfOjF9KSxjKGYoTCksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bKGooITApLHQoeCxudWxsLGUoVC52YWx1ZSxlPT4oaigpLGQoZihSKSx7a2V5OmUsdmFsdWU6ZX0se2RlZmF1bHQ6RSgoKT0+W28oYihlKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSldKSxyKGBkaXZgLFdlLFtyKGBkaXZgLEdlLFtpWzldfHw9cihgbGFiZWxgLHtmb3I6YGdyYW50LXByb3ZpZGVyc2AsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByb3ZpZGVycyAoY29tbWEtc2VwYXJhdGVkLCBlbXB0eSA9IGFsbClgLC0xKSxjKGYoSCkse2lkOmBncmFudC1wcm92aWRlcnNgLG1vZGVsVmFsdWU6cC52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVsyXXx8PWU9PnAudmFsdWU9ZSxwbGFjZWhvbGRlcjpgYW50aHJvcGljLCBvcGVuYWlgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSkscihgZGl2YCxLZSxbaVsxMF18fD1yKGBsYWJlbGAse2ZvcjpgZ3JhbnQtbW9kZWxzYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTW9kZWxzIChjb21tYS1zZXBhcmF0ZWQsIGVtcHR5ID0gYWxsKWAsLTEpLGMoZihIKSx7aWQ6YGdyYW50LW1vZGVsc2AsbW9kZWxWYWx1ZTptLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzNdfHw9ZT0+bS52YWx1ZT1lLHBsYWNlaG9sZGVyOmBhbnRocm9waWMvY2xhdWRlLXNvbm5ldC01YH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLHMudmFsdWU9PT1gZ3JvdXBgPyhqKCksdCh4LHtrZXk6MH0sW3IoYGRpdmAscWUsW2lbMTFdfHw9cihgbGFiZWxgLHtmb3I6YGdyYW50LW1jcGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE1DUCBzZXJ2ZXJzIChjb21tYS1zZXBhcmF0ZWQsIGVtcHR5ID0gYWxsKWAsLTEpLGMoZihIKSx7aWQ6YGdyYW50LW1jcGAsbW9kZWxWYWx1ZTpoLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzRdfHw9ZT0+aC52YWx1ZT1lLHBsYWNlaG9sZGVyOmBmZXRjaCwgd2VhdGhlcmB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxyKGBkaXZgLEplLFtpWzEyXXx8PXIoYGxhYmVsYCx7Zm9yOmBncmFudC1hZ2VudHNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBBZ2VudHMgKGNvbW1hLXNlcGFyYXRlZCwgZW1wdHkgPSBhbGwpYCwtMSksYyhmKEgpLHtpZDpgZ3JhbnQtYWdlbnRzYCxtb2RlbFZhbHVlOmcudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbNV18fD1lPT5nLnZhbHVlPWUscGxhY2Vob2xkZXI6YGFnZW50a2l0YH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pXSw2NCkpOkMoYGAsITApXSksTy52YWx1ZT8oaigpLGQoZihGKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpFKCgpPT5bYyhmKEkpLG51bGwse2RlZmF1bHQ6RSgoKT0+W28oYihPLnZhbHVlKSwxKV0pLF86MX0pXSksXzoxfSkpOkMoYGAsITApLEEudmFsdWU/KGooKSxkKFUse2tleToxLGxhYmVsOnMudmFsdWU9PT1gZ3JvdXBgP2BQYXN0ZSBpbnRvIG1pZGRsZXdhcmUueWFtbGA6YE1lcmdlIGludG8gJHtsLnZhbHVlfeKAmXMgdXNlcnMuanNvbiBsaW5lYCx0ZXh0OkEudmFsdWV9LG51bGwsOCxbYGxhYmVsYCxgdGV4dGBdKSk6KGooKSx0KGBwYCxZZSxgUGljayBhIHRhcmdldCBhbmQgYXQgbGVhc3Qgb25lIGxpc3QgdG8gYnVpbGQgYSBzbmlwcGV0LmApKV0pKX19KSxaZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxRZT17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgc206Z3JpZC1jb2xzLTJgfSwkZT17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxldD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSx0dD17aWQ6YGxpbWl0cy10YXJnZXQtbmFtZS1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sbnQ9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0zYH0scnQ9W2Bmb3JgXSxpdD17a2V5OjB9LGF0PXtrZXk6MX0sb3Q9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHN0PVAoe19fbmFtZTpgTGltaXRzRm9ybWAscHJvcHM6e2dyb3VwTmFtZXM6e30sdXNlck5hbWVzOnt9fSxzZXR1cChuKXtsZXQgcz1uLGw9dShgZ3JvdXBgKSxwPXUoYGApLG09bmV3IFNldChbYHJlcXVlc3RzUGVyTWludXRlYCxgcmVxdWVzdHNQZXJEYXlgLGB0b2tlbnNQZXJEYXlgLGB0b2tlbnNQZXJNb250aGBdKTtmdW5jdGlvbiBoKGUsdCl7cmV0dXJuIG0uaGFzKGUpP0RlKHQpOlkodCl9bGV0IGc9W3trZXk6YHJlcXVlc3RzUGVyTWludXRlYCxsYWJlbDpgUmVxdWVzdHMvbWludXRlYH0se2tleTpgcmVxdWVzdHNQZXJEYXlgLGxhYmVsOmBSZXF1ZXN0cy9kYXlgfSx7a2V5OmB0b2tlbnNQZXJEYXlgLGxhYmVsOmBUb2tlbnMvZGF5IChpbitvdXQpYH0se2tleTpgdG9rZW5zUGVyTW9udGhgLGxhYmVsOmBUb2tlbnMvbW9udGggKGluK291dClgfSx7a2V5OmBjb3N0UGVyRGF5VVNEYCxsYWJlbDpgQ29zdC9kYXkgKFVTRClgfSx7a2V5OmBjb3N0UGVyTW9udGhVU0RgLGxhYmVsOmBDb3N0L21vbnRoIChVU0QpYH1dLF89aSh7cmVxdWVzdHNQZXJNaW51dGU6YGAscmVxdWVzdHNQZXJEYXk6YGAsdG9rZW5zUGVyRGF5OmBgLHRva2Vuc1Blck1vbnRoOmBgLGNvc3RQZXJEYXlVU0Q6YGAsY29zdFBlck1vbnRoVVNEOmBgfSksdj1hKCgpPT5sLnZhbHVlPT09YGdyb3VwYD9zLmdyb3VwTmFtZXM6cy51c2VyTmFtZXMpLHk9YSgoKT0+Zy5maWx0ZXIoKHtrZXk6ZX0pPT5fW2VdLnRyaW0oKSE9PWBgJiYhaChlLE51bWJlcihfW2VdKSkpLm1hcChlPT5lLmxhYmVsKSksUz1hKCgpPT5nLmZpbHRlcigoe2tleTplfSk9Pm0uaGFzKGUpJiZfW2VdLnRyaW0oKSE9PWBgJiYhaChlLE51bWJlcihfW2VdKSkpLm1hcChlPT5lLmxhYmVsKSksdz1hKCgpPT5nLmZpbHRlcigoe2tleTplfSk9PiFtLmhhcyhlKSYmX1tlXS50cmltKCkhPT1gYCYmIWgoZSxOdW1iZXIoX1tlXSkpKS5tYXAoZT0+ZS5sYWJlbCkpLFQ9YSgoKT0+e2xldCBlPXt9O2ZvcihsZXR7a2V5OnR9b2YgZyl7bGV0IG49TnVtYmVyKF9bdF0pO19bdF0udHJpbSgpIT09YGAmJmgodCxuKSYmbj4wJiYoZVt0XT1uKX1yZXR1cm4gZX0pLEQ9YSgoKT0+bC52YWx1ZT09PWBncm91cGA/RWUocC52YWx1ZS50cmltKCkpOkoocC52YWx1ZSkpLE89YSgoKT0+IUQudmFsdWV8fHkudmFsdWUubGVuZ3RoPjB8fE9iamVjdC5rZXlzKFQudmFsdWUpLmxlbmd0aD09PTA/bnVsbDpsLnZhbHVlPT09YGdyb3VwYD9BZShwLnZhbHVlLnRyaW0oKSxULnZhbHVlKTpqZShULnZhbHVlKSk7cmV0dXJuKG4saSk9PihqKCksdChgZGl2YCxaZSxbcihgZGl2YCxRZSxbcihgZGl2YCwkZSxbaVs0XXx8PXIoYGxhYmVsYCx7aWQ6YGxpbWl0cy10YXJnZXQta2luZC1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFRhcmdldGAsLTEpLGMoZihCKSx7Im1vZGVsLXZhbHVlIjpsLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjppWzBdfHw9ZT0+bC52YWx1ZT1lfSx7ZGVmYXVsdDpFKCgpPT5bYyhmKFYpLHsiYXJpYS1sYWJlbGxlZGJ5IjpgbGltaXRzLXRhcmdldC1raW5kLWxhYmVsYH0se2RlZmF1bHQ6RSgoKT0+W2MoZih6KSldKSxfOjF9KSxjKGYoTCksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bYyhmKFIpLHt2YWx1ZTpgZ3JvdXBgfSx7ZGVmYXVsdDpFKCgpPT5bLi4uaVsyXXx8PVtvKGBHcm91cGAsLTEpXV0pLF86MX0pLGMoZihSKSx7dmFsdWU6YHVzZXJgfSx7ZGVmYXVsdDpFKCgpPT5bLi4uaVszXXx8PVtvKGBVc2VyIChleGlzdGluZyB1c2Vycy5qc29uIGVudHJ5KWAsLTEpXV0pLF86MX0pXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pLHIoYGRpdmAsZXQsW3IoYGxhYmVsYCx0dCxiKGwudmFsdWU9PT1gZ3JvdXBgP2BHcm91cCBuYW1lYDpgVXNlciBuYW1lYCksMSksYyhmKEIpLHsibW9kZWwtdmFsdWUiOnAudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmlbMV18fD1lPT5wLnZhbHVlPVN0cmluZyhlKX0se2RlZmF1bHQ6RSgoKT0+W2MoZihWKSx7ImFyaWEtbGFiZWxsZWRieSI6YGxpbWl0cy10YXJnZXQtbmFtZS1sYWJlbGB9LHtkZWZhdWx0OkUoKCk9PltjKGYoeikse3BsYWNlaG9sZGVyOmBTZWxlY3TigKZgfSldKSxfOjF9KSxjKGYoTCksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bKGooITApLHQoeCxudWxsLGUodi52YWx1ZSxlPT4oaigpLGQoZihSKSx7a2V5OmUsdmFsdWU6ZX0se2RlZmF1bHQ6RSgoKT0+W28oYihlKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSldKSxyKGBkaXZgLG50LFsoaigpLHQoeCxudWxsLGUoZyxlPT5yKGBkaXZgLHtrZXk6ZS5rZXksY2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxbcihgbGFiZWxgLHtmb3I6YGxpbWl0cy0ke2Uua2V5fWAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYihlLmxhYmVsKSw5LHJ0KSxjKGYoSCkse2lkOmBsaW1pdHMtJHtlLmtleX1gLG1vZGVsVmFsdWU6X1tlLmtleV0sIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnQ9Pl9bZS5rZXldPXQsdHlwZTpgbnVtYmVyYCxtaW46YDBgLHN0ZXA6ZihtKS5oYXMoZS5rZXkpP2AxYDpgYW55YCxwbGFjZWhvbGRlcjpgdW5zZXRgfSxudWxsLDgsW2BpZGAsYG1vZGVsVmFsdWVgLGBvblVwZGF0ZTptb2RlbFZhbHVlYCxgc3RlcGBdKV0pKSw2NCkpXSkseS52YWx1ZS5sZW5ndGg/KGooKSxkKGYoRikse2tleTowLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6RSgoKT0+W2MoZihJKSxudWxsLHtkZWZhdWx0OkUoKCk9PltTLnZhbHVlLmxlbmd0aD8oaigpLHQoYHBgLGl0LGBFbnRlciBhIG5vbi1uZWdhdGl2ZSB3aG9sZSBudW1iZXIgZm9yOiBgK2IoUy52YWx1ZS5qb2luKGAsIGApKStgLmAsMSkpOkMoYGAsITApLHcudmFsdWUubGVuZ3RoPyhqKCksdChgcGAsYXQsYEVudGVyIGEgbm9uLW5lZ2F0aXZlIG51bWJlciBmb3I6IGArYih3LnZhbHVlLmpvaW4oYCwgYCkpK2AuYCwxKSk6QyhgYCwhMCldKSxfOjF9KV0pLF86MX0pKTpDKGBgLCEwKSxPLnZhbHVlPyhqKCksZChVLHtrZXk6MSxsYWJlbDpsLnZhbHVlPT09YGdyb3VwYD9gUGFzdGUgaW50byBtaWRkbGV3YXJlLnlhbWxgOmBNZXJnZSBpbnRvICR7cC52YWx1ZX3igJlzIHVzZXJzLmpzb24gbGluZWAsdGV4dDpPLnZhbHVlfSxudWxsLDgsW2BsYWJlbGAsYHRleHRgXSkpOihqKCksdChgcGAsb3QsYFBpY2sgYSB0YXJnZXQgYW5kIGF0IGxlYXN0IG9uZSBsaW1pdCB0byBidWlsZCBhIHNuaXBwZXQuYCkpXSkpfX0pLGN0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LGx0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LHV0PXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMiBzbTppdGVtcy1lbmRgfSxkdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxmdD17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHBiLTEuNSB0ZXh0LXNtYH0scHQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LG10PVAoe19fbmFtZTpgTW9kZWxNZXRhRm9ybWAsc2V0dXAoZSl7bGV0IG49dShgYCksaT11KGBgKSxzPXUoITEpLGw9YSgoKT0+bi52YWx1ZS50cmltKCkhPT1gYCkscD1hKCgpPT5OdW1iZXIoaS52YWx1ZSkpLG09YSgoKT0+aS52YWx1ZS50cmltKCkhPT1gYCksaD1hKCgpPT4hbS52YWx1ZXx8RGUocC52YWx1ZSkmJnAudmFsdWU+MCksZz1hKCgpPT4hbC52YWx1ZXx8IWgudmFsdWV8fCFtLnZhbHVlJiYhcy52YWx1ZT9udWxsOlBlKG4udmFsdWUudHJpbSgpLHtjb250ZXh0VG9rZW5zOm0udmFsdWU/cC52YWx1ZTp2b2lkIDAsZnJlZTpzLnZhbHVlfHx2b2lkIDB9KSk7cmV0dXJuKGUsYSk9PihqKCksdChgZGl2YCxjdCxbcihgZGl2YCxsdCxbYVszXXx8PXIoYGxhYmVsYCx7Zm9yOmBtb2RlbG1ldGEtbW9kZWwtaWRgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNb2RlbCBpZCAocHJvdmlkZXIvbW9kZWwpYCwtMSksYyhmKEgpLHtpZDpgbW9kZWxtZXRhLW1vZGVsLWlkYCxtb2RlbFZhbHVlOm4udmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMF18fD1lPT5uLnZhbHVlPWUscGxhY2Vob2xkZXI6YGd4MTAvY3VycmVudGAsY2xhc3M6YGZvbnQtbW9ub2B9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxyKGBkaXZgLHV0LFtyKGBkaXZgLGR0LFthWzRdfHw9cihgbGFiZWxgLHtmb3I6YG1vZGVsbWV0YS1jb250ZXh0YCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ29udGV4dCB3aW5kb3cgKHRva2VucylgLC0xKSxjKGYoSCkse2lkOmBtb2RlbG1ldGEtY29udGV4dGAsbW9kZWxWYWx1ZTppLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzFdfHw9ZT0+aS52YWx1ZT1lLHR5cGU6YG51bWJlcmAsbWluOmAxYCxzdGVwOmAxYCxwbGFjZWhvbGRlcjpgMTMxMDcyYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLHIoYGxhYmVsYCxmdCxbdihyKGBpbnB1dGAse2lkOmBtb2RlbG1ldGEtZnJlZWAsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMl18fD1lPT5zLnZhbHVlPWUsdHlwZTpgY2hlY2tib3hgLGNsYXNzOmBzaXplLTQgcm91bmRlZCBib3JkZXItaW5wdXRgfSxudWxsLDUxMiksW1tlZSxzLnZhbHVlXV0pLGFbNV18fD1vKGAgRnJlZSAoYmlsbGVkIGFzICQwIHJlZ2FyZGxlc3Mgb2YgYW55IHJlc29sdmVkIHByaWNlKSBgLC0xKV0pXSksbS52YWx1ZSYmIWgudmFsdWU/KGooKSxkKGYoRikse2tleTowLHZhcmlhbnQ6YGRlc3RydWN0aXZlYH0se2RlZmF1bHQ6RSgoKT0+W2MoZihJKSxudWxsLHtkZWZhdWx0OkUoKCk9PlsuLi5hWzZdfHw9W28oYENvbnRleHQgd2luZG93IG11c3QgYmUgYSBwb3NpdGl2ZSB3aG9sZSBudW1iZXIgb2YgdG9rZW5zLmAsLTEpXV0pLF86MX0pXSksXzoxfSkpOkMoYGAsITApLGcudmFsdWU/KGooKSxkKFUse2tleToxLGxhYmVsOmBQYXN0ZSBpbnRvIG1pZGRsZXdhcmUueWFtbGAsdGV4dDpnLnZhbHVlfSxudWxsLDgsW2B0ZXh0YF0pKTooaigpLHQoYHBgLHB0LGBFbnRlciBhIG1vZGVsIGlkIGFuZCBzZXQgYSBjb250ZXh0IHdpbmRvdyBhbmQvb3IgZnJlZSB0byBidWlsZCBhIHNuaXBwZXQuYCkpXSkpfX0pLGh0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LGd0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LF90PXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtMyBzbTpncmlkLWNvbHMtMmB9LHZ0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LHl0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMWB9LGJ0PXtrZXk6MixjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx4dD1QKHtfX25hbWU6YFByaWNpbmdGb3JtYCxzZXR1cChuKXtsZXQgaT11KGBgKSxvPXUoYGApLHM9dShgYCksbD1hKCgpPT5pLnZhbHVlLnRyaW0oKSE9PWBgKSxwPWEoKCk9Pk51bWJlcihvLnZhbHVlKSksbT1hKCgpPT5OdW1iZXIocy52YWx1ZSkpLGg9YSgoKT0+by52YWx1ZS50cmltKCkhPT1gYCYmWShwLnZhbHVlKSksZz1hKCgpPT5zLnZhbHVlLnRyaW0oKSE9PWBgJiZZKG0udmFsdWUpKSxfPWEoKCk9PntsZXQgZT1bXTtyZXR1cm4gby52YWx1ZS50cmltKCkhPT1gYCYmIWgudmFsdWUmJmUucHVzaChgSW5wdXQgcHJpY2UvTVRvayBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5gKSxzLnZhbHVlLnRyaW0oKSE9PWBgJiYhZy52YWx1ZSYmZS5wdXNoKGBPdXRwdXQgcHJpY2UvTVRvayBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci5gKSwoaC52YWx1ZSYmIWcudmFsdWV8fCFoLnZhbHVlJiZnLnZhbHVlKSYmZS5wdXNoKGBTZXQgYm90aCBpbnB1dCBhbmQgb3V0cHV0IHByaWNlL01Ub2sg4oCUIGEgb25lLXNpZGVkIG92ZXJyaWRlIGhhcyBubyBiaWxsaW5nIG1lYW5pbmcuYCksZX0pLHY9YSgoKT0+IWwudmFsdWV8fCFoLnZhbHVlfHwhZy52YWx1ZT9udWxsOkZlKGkudmFsdWUudHJpbSgpLHtpbnB1dFBlck06cC52YWx1ZSxvdXRwdXRQZXJNOm0udmFsdWV9KSk7cmV0dXJuKG4sYSk9PihqKCksdChgZGl2YCxodCxbcihgZGl2YCxndCxbYVszXXx8PXIoYGxhYmVsYCx7Zm9yOmBwcmljaW5nLW1vZGVsLWlkYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTW9kZWwgaWQgKHByb3ZpZGVyL21vZGVsKWAsLTEpLGMoZihIKSx7aWQ6YHByaWNpbmctbW9kZWwtaWRgLG1vZGVsVmFsdWU6aS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8PWU9PmkudmFsdWU9ZSxwbGFjZWhvbGRlcjpgb3BlbmFpL2dwdC00YCxjbGFzczpgZm9udC1tb25vYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLHIoYGRpdmAsX3QsW3IoYGRpdmAsdnQsW2FbNF18fD1yKGBsYWJlbGAse2ZvcjpgcHJpY2luZy1pbnB1dGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYElucHV0IHByaWNlIC8gTVRvayAoVVNEKWAsLTEpLGMoZihIKSx7aWQ6YHByaWNpbmctaW5wdXRgLG1vZGVsVmFsdWU6by52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVsxXXx8PWU9Pm8udmFsdWU9ZSx0eXBlOmBudW1iZXJgLG1pbjpgMGAsc3RlcDpgYW55YCxwbGFjZWhvbGRlcjpgMC41MGB9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxyKGBkaXZgLHl0LFthWzVdfHw9cihgbGFiZWxgLHtmb3I6YHByaWNpbmctb3V0cHV0YCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgT3V0cHV0IHByaWNlIC8gTVRvayAoVVNEKWAsLTEpLGMoZihIKSx7aWQ6YHByaWNpbmctb3V0cHV0YCxtb2RlbFZhbHVlOnMudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMl18fD1lPT5zLnZhbHVlPWUsdHlwZTpgbnVtYmVyYCxtaW46YDBgLHN0ZXA6YGFueWAscGxhY2Vob2xkZXI6YDEuNTBgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSldKSxfLnZhbHVlLmxlbmd0aD8oaigpLGQoZihGKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpFKCgpPT5bYyhmKEkpLG51bGwse2RlZmF1bHQ6RSgoKT0+WyhqKCEwKSx0KHgsbnVsbCxlKF8udmFsdWUsKGUsbik9PihqKCksdChgcGAse2tleTpufSxiKGUpLDEpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKTpDKGBgLCEwKSx2LnZhbHVlPyhqKCksZChVLHtrZXk6MSxsYWJlbDpgUGFzdGUgaW50byBtaWRkbGV3YXJlLnlhbWxgLHRleHQ6di52YWx1ZX0sbnVsbCw4LFtgdGV4dGBdKSk6KGooKSx0KGBwYCxidCxgRW50ZXIgYSBtb2RlbCBpZCBhbmQgYm90aCBwcmljZXMgdG8gYnVpbGQgYSBzbmlwcGV0LmApKV0pKX19KSxTdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxDdD17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgc206Z3JpZC1jb2xzLTJgfSx3dD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxUdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxFdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxEdD17Y2xhc3M6YGZsZXggZ2FwLTJgfSxPdD17a2V5OjAsY2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sa3Q9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sQXQ9e2NsYXNzOmBncmlkIGdyaWQtY29scy0xIGdhcC0zIHNtOmdyaWQtY29scy0yYH0sanQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sTXQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sTnQ9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtYH0sUHQ9e2tleToyLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEZ0PVAoe19fbmFtZTpgVXNlckZvcm1gLHByb3BzOntncm91cE5hbWVzOnt9fSxzZXR1cChuKXtsZXQgaT1uLHM9dShgYCksbD11KEllKSxwPXUoYGApLG09dShgYCksaD11KGBgKSxnPXUoYGApLF89dSghMSk7ZnVuY3Rpb24geSgpe2wudmFsdWU9TGUoKX1mdW5jdGlvbiBTKGUpe2xldCB0PW5ldyBTZXQ7Zm9yKGxldCBuIG9mIGUuc3BsaXQoYCxgKSl7bGV0IGU9bi50cmltKCk7ZSYmdC5hZGQoZSl9cmV0dXJuIEFycmF5LmZyb20odCl9bGV0IHc9YSgoKT0+UyhtLnZhbHVlKSksVD1hKCgpPT5TKGgudmFsdWUpKSxEPWEoKCk9PlMoZy52YWx1ZSkpLE89YSgoKT0+SihzLnZhbHVlKSksaz1hKCgpPT5wLnZhbHVlIT09YGApLEE9YSgoKT0+bC52YWx1ZS50cmltKCkhPT1gYCYmbC52YWx1ZSE9PWBzay1sbG1ndy1SRVBMQUNFX01FYCksTT1hKCgpPT5PZShULnZhbHVlLEQudmFsdWUpKSxOPWEoKCk9PntpZighTy52YWx1ZXx8IWsudmFsdWV8fCFBLnZhbHVlfHxNLnZhbHVlKXJldHVybiBudWxsO2xldCBlPXcudmFsdWUubGVuZ3RoPjA/W3AudmFsdWUsLi4udy52YWx1ZV06bnVsbDtyZXR1cm4gUmUoe25hbWU6cy52YWx1ZS50cmltKCksYXBpS2V5OmwudmFsdWUudHJpbSgpLGdyb3VwOmU/dm9pZCAwOnAudmFsdWUsZ3JvdXBzOmU/P3ZvaWQgMCxwcm92aWRlcnM6VC52YWx1ZSxtb2RlbHM6RC52YWx1ZSxhZG1pbjpfLnZhbHVlfSl9KTtyZXR1cm4obixhKT0+KGooKSx0KGBkaXZgLFN0LFtyKGBkaXZgLEN0LFtyKGBkaXZgLHd0LFthWzddfHw9cihgbGFiZWxgLHtmb3I6YHVzZXItbmFtZWAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE5hbWVgLC0xKSxjKGYoSCkse2lkOmB1c2VyLW5hbWVgLG1vZGVsVmFsdWU6cy52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8PWU9PnMudmFsdWU9ZSxwbGFjZWhvbGRlcjpgYWxpY2VgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSkscihgZGl2YCxUdCxbYVs4XXx8PXIoYGxhYmVsYCx7aWQ6YHVzZXItZ3JvdXAtbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBQcmltYXJ5IGdyb3VwYCwtMSksYyhmKEIpLHsibW9kZWwtdmFsdWUiOnAudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMV18fD1lPT5wLnZhbHVlPVN0cmluZyhlKX0se2RlZmF1bHQ6RSgoKT0+W2MoZihWKSx7ImFyaWEtbGFiZWxsZWRieSI6YHVzZXItZ3JvdXAtbGFiZWxgfSx7ZGVmYXVsdDpFKCgpPT5bYyhmKHopLHtwbGFjZWhvbGRlcjpgU2VsZWN04oCmYH0pXSksXzoxfSksYyhmKEwpLG51bGwse2RlZmF1bHQ6RSgoKT0+WyhqKCEwKSx0KHgsbnVsbCxlKGkuZ3JvdXBOYW1lcyxlPT4oaigpLGQoZihSKSx7a2V5OmUsdmFsdWU6ZX0se2RlZmF1bHQ6RSgoKT0+W28oYihlKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSldKSxyKGBkaXZgLEV0LFthWzEwXXx8PXIoYGxhYmVsYCx7Zm9yOmB1c2VyLWFwaS1rZXlgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBBUEkga2V5YCwtMSkscihgZGl2YCxEdCxbYyhmKEgpLHtpZDpgdXNlci1hcGkta2V5YCxtb2RlbFZhbHVlOmwudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMl18fD1lPT5sLnZhbHVlPWUsY2xhc3M6YGZvbnQtbW9ub2B9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSksYyhmKHRlKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCxzaXplOmBzbWAsb25DbGljazp5fSx7ZGVmYXVsdDpFKCgpPT5bLi4uYVs5XXx8PVtvKGBHZW5lcmF0ZWAsLTEpXV0pLF86MX0pXSksbC52YWx1ZT09PWYoYHNrLWxsbWd3LVJFUExBQ0VfTUVgKT8oaigpLHQoYHBgLE90LGBTdGlsbCB0aGUgcGxhY2Vob2xkZXIg4oCUIGNsaWNrIEdlbmVyYXRlIGZvciBhIHJlYWwga2V5LmApKTpDKGBgLCEwKV0pLHIoYGRpdmAsa3QsW2FbMTFdfHw9cihgbGFiZWxgLHtmb3I6YHVzZXItZXh0cmEtZ3JvdXBzYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQWRkaXRpb25hbCBncm91cHMgKGNvbW1hLXNlcGFyYXRlZCwgb3B0aW9uYWwpYCwtMSksYyhmKEgpLHtpZDpgdXNlci1leHRyYS1ncm91cHNgLG1vZGVsVmFsdWU6bS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVszXXx8PWU9Pm0udmFsdWU9ZSxwbGFjZWhvbGRlcjpgZnJpZW5kc2B9LG51bGwsOCxbYG1vZGVsVmFsdWVgXSldKSxyKGBkaXZgLEF0LFtyKGBkaXZgLGp0LFthWzEyXXx8PXIoYGxhYmVsYCx7Zm9yOmB1c2VyLXByb3ZpZGVyc2AsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFBlcnNvbmFsIGdyYW50OiBwcm92aWRlcnMgKG9wdGlvbmFsKWAsLTEpLGMoZihIKSx7aWQ6YHVzZXItcHJvdmlkZXJzYCxtb2RlbFZhbHVlOmgudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbNF18fD1lPT5oLnZhbHVlPWUscGxhY2Vob2xkZXI6YGd4MTBgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSkscihgZGl2YCxNdCxbYVsxM118fD1yKGBsYWJlbGAse2ZvcjpgdXNlci1tb2RlbHNgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBQZXJzb25hbCBncmFudDogbW9kZWxzIChvcHRpb25hbClgLC0xKSxjKGYoSCkse2lkOmB1c2VyLW1vZGVsc2AsbW9kZWxWYWx1ZTpnLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzVdfHw9ZT0+Zy52YWx1ZT1lLHBsYWNlaG9sZGVyOmBneDEwL2N1cnJlbnRgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSldKSxyKGBsYWJlbGAsTnQsW3YocihgaW5wdXRgLHsib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVs2XXx8PWU9Pl8udmFsdWU9ZSx0eXBlOmBjaGVja2JveGAsY2xhc3M6YHNpemUtNCByb3VuZGVkIGJvcmRlci1pbnB1dGB9LG51bGwsNTEyKSxbW2VlLF8udmFsdWVdXSksYVsxNF18fD1vKGAgQWRtaW4gKGZ1bGwgYWNjZXNzIHRvIC9hZG1pbi9hcGkvKikgYCwtMSldKSxNLnZhbHVlPyhqKCksZChmKEYpLHtrZXk6MCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0OkUoKCk9PltjKGYoSSksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bbyhiKE0udmFsdWUpLDEpXSksXzoxfSldKSxfOjF9KSk6QyhgYCwhMCksTi52YWx1ZT8oaigpLGQoVSx7a2V5OjEsbGFiZWw6YEFkZCBhcyBhIG5ldyBsaW5lIGluIHVzZXJzLmpzb25gLHRleHQ6Ti52YWx1ZX0sbnVsbCw4LFtgdGV4dGBdKSk6KGooKSx0KGBwYCxQdCxgRmlsbCBpbiBhIG5hbWUsIGdyb3VwLCBhbmQgYSByZWFsIChnZW5lcmF0ZWQpIEFQSSBrZXkgdG8gYnVpbGQgYSBzbmlwcGV0LmApKV0pKX19KSxJdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxMdD1QKHtfX25hbWU6YENoYW5nZUhlbHBlcmAscHJvcHM6e2dyb3VwTmFtZXM6e30sdXNlck5hbWVzOnt9fSxzZXR1cChuKXtsZXQgcj1bYGxpbWl0c2AsYGdyYW50YCxgcHJpY2luZ2AsYG1vZGVsYCxgdXNlcmBdLGk9e2xpbWl0czpgTGltaXRzYCxncmFudDpgQWNjZXNzIGdyYW50YCxwcmljaW5nOmBQcmljaW5nYCxtb2RlbDpgTW9kZWwgbWV0YWRhdGFgLHVzZXI6YE5ldyB1c2VyYH0scz1uLGw9TygpLHU9YSgoKT0+e2xldCBlPWwucGFyYW1zLmhlbHBlcjtyZXR1cm4gci5pbmNsdWRlcyhlPz9gYCk/ZTpgbGltaXRzYH0pO2Z1bmN0aW9uIHAoZSl7dHlwZW9mIGUhPWBzdHJpbmdgfHwhci5pbmNsdWRlcyhlKXx8bC5nb1RvKGBjb25maWdgLHsuLi5sLnBhcmFtcyxoZWxwZXI6ZX0pfXJldHVybihuLGEpPT4oaigpLHQoYGRpdmAsSXQsW2MoZihpZSkseyJtb2RlbC12YWx1ZSI6dS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6cH0se2RlZmF1bHQ6RSgoKT0+W2MoZihyZSksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bKGooKSx0KHgsbnVsbCxlKHIsZT0+YyhmKGFlKSx7a2V5OmUsdmFsdWU6ZX0se2RlZmF1bHQ6RSgoKT0+W28oYihpW2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSw2NCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKSx1LnZhbHVlPT09YGxpbWl0c2A/KGooKSxkKHN0LHtrZXk6MCwiZ3JvdXAtbmFtZXMiOnMuZ3JvdXBOYW1lcywidXNlci1uYW1lcyI6cy51c2VyTmFtZXN9LG51bGwsOCxbYGdyb3VwLW5hbWVzYCxgdXNlci1uYW1lc2BdKSk6dS52YWx1ZT09PWBncmFudGA/KGooKSxkKFhlLHtrZXk6MSwiZ3JvdXAtbmFtZXMiOnMuZ3JvdXBOYW1lcywidXNlci1uYW1lcyI6cy51c2VyTmFtZXN9LG51bGwsOCxbYGdyb3VwLW5hbWVzYCxgdXNlci1uYW1lc2BdKSk6dS52YWx1ZT09PWBwcmljaW5nYD8oaigpLGQoeHQse2tleToyfSkpOnUudmFsdWU9PT1gbW9kZWxgPyhqKCksZChtdCx7a2V5OjN9KSk6KGooKSxkKEZ0LHtrZXk6NCwiZ3JvdXAtbmFtZXMiOnMuZ3JvdXBOYW1lc30sbnVsbCw4LFtgZ3JvdXAtbmFtZXNgXSkpXSkpfX0pLFJ0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHp0PVAoe19fbmFtZTpgQ29uZmlnVHJlZWAscHJvcHM6e2NvbmZpZzp7fSx3YXJuaW5nczp7fX0sc2V0dXAobil7bGV0IHI9bixpPWEoKCk9PkNlKHEoci5jb25maWcpKSk7cmV0dXJuKHIsYSk9PihqKCksdChgZGl2YCxSdCxbKGooITApLHQoeCxudWxsLGUobi53YXJuaW5ncywoZSx0KT0+KGooKSxkKGYoRikse2tleTp0LHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDpFKCgpPT5bYyhmKG9lKSxudWxsLHtkZWZhdWx0OkUoKCk9PlsuLi5hWzBdfHw9W28oYENvbmZpZyB3YXJuaW5nYCwtMSldXSksXzoxfSksYyhmKEkpLG51bGwse2RlZmF1bHQ6RSgoKT0+W28oYihlKSwxKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMjQpKSksMTI4KSksYyhVLHtsYWJlbDpgUmVkYWN0ZWQgcnVubmluZyBjb25maWcgKHJlYWQtb25seSlgLHRleHQ6aS52YWx1ZX0sbnVsbCw4LFtgdGV4dGBdKV0pKX19KSxCdD13KGBjb25maWdgLHtzdGF0ZTooKT0+KHtkYXRhOm51bGwsbG9hZGluZzohMSxlcnJvcjpgYH0pLGFjdGlvbnM6e2FzeW5jIGZldGNoQ29uZmlnKCl7aWYoTigpLmlzQXV0aGVudGljYXRlZCl7dGhpcy5sb2FkaW5nPSEwO3RyeXt0aGlzLmRhdGE9YXdhaXQgayhgL2FkbWluL2FwaS9jb25maWdgKSx0aGlzLmVycm9yPWBgfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBfJiYoZS5zdGF0dXM9PT00MDF8fGUuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj1lIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1maW5hbGx5e3RoaXMubG9hZGluZz0hMX19fSxhc3luYyBlbnN1cmVDb25maWcoKXt0aGlzLmxvYWRpbmd8fHRoaXMuZGF0YXx8YXdhaXQgdGhpcy5mZXRjaENvbmZpZygpfX19KSxWdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxIdD17a2V5OjEsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sVXQ9UCh7X19uYW1lOmBDb25maWdQYWdlYCxzZXR1cChlKXtsZXQgcj1CdCgpLGk9UygpLHM9Y2UoKTtBKCgpPT57ci5lbnN1cmVDb25maWcoKSxzLmVuc3VyZUNvbnN1bWVycygpfSk7bGV0IGw9YSgoKT0+KGkub3ZlcnZpZXc/Lmdyb3Vwcz8/W10pLm1hcChlPT5lLm5hbWUpKSx1PWEoKCk9PihzLmRhdGE/LnVzZXJzPz9bXSkubWFwKGU9PmUubmFtZSkpO3JldHVybihlLGkpPT4oaigpLHQoYGRpdmAsVnQsW2YocikuZXJyb3I/KGooKSxkKGYobikse2tleTowfSx7ZGVmYXVsdDpFKCgpPT5bYyhmKE0pLG51bGwse2RlZmF1bHQ6RSgoKT0+W2MoZih5KSxudWxsLHtkZWZhdWx0OkUoKCk9PlsuLi5pWzBdfHw9W28oYENvbmZpZ2AsLTEpXV0pLF86MX0pLGMoZihuZSkse2NsYXNzOmB0ZXh0LWRlc3RydWN0aXZlYH0se2RlZmF1bHQ6RSgoKT0+W28oYihmKHIpLmVycm9yKSwxKV0pLF86MX0pXSksXzoxfSldKSxfOjF9KSk6ZihyKS5sb2FkaW5nJiYhZihyKS5kYXRhPyhqKCksdChgcGAsSHQsYGxvYWRpbmfigKZgKSk6ZihyKS5kYXRhPyhqKCksZCh6dCx7a2V5OjIsY29uZmlnOmYocikuZGF0YS5jb25maWcsd2FybmluZ3M6ZihyKS5kYXRhLndhcm5pbmdzfSxudWxsLDgsW2Bjb25maWdgLGB3YXJuaW5nc2BdKSk6QyhgYCwhMCksYyhmKG4pLG51bGwse2RlZmF1bHQ6RSgoKT0+W2MoZihNKSxudWxsLHtkZWZhdWx0OkUoKCk9PltjKGYoeSksbnVsbCx7ZGVmYXVsdDpFKCgpPT5bLi4uaVsxXXx8PVtvKGBDaGFuZ2UgaGVscGVyYCwtMSldXSksXzoxfSksYyhmKG5lKSxudWxsLHtkZWZhdWx0OkUoKCk9PlsuLi5pWzJdfHw9W28oYEJ1aWxkIGEgcGFzdGUtcmVhZHkgc25pcHBldCBmb3IgbWlkZGxld2FyZS55YW1sIG9yIHVzZXJzLmpzb24g4oCUIG5vdGhpbmcgaGVyZSB3cml0ZXMgdG8gdGhlIHJ1bm5pbmcgY29uZmlnLmAsLTEpXV0pLF86MX0pXSksXzoxfSksYyhmKHApLG51bGwse2RlZmF1bHQ6RSgoKT0+W2MoTHQseyJncm91cC1uYW1lcyI6bC52YWx1ZSwidXNlci1uYW1lcyI6dS52YWx1ZX0sbnVsbCw4LFtgZ3JvdXAtbmFtZXNgLGB1c2VyLW5hbWVzYF0pXSksXzoxfSldKSxfOjF9KV0pKX19KTtleHBvcnR7VXQgYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"ConsumersPage-DZ5nHr-A.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FuIGFzIGUsQXQgYXMgdCxDIGFzIG4sRHQgYXMgcixFciBhcyBpLEV0IGFzIGEsSXQgYXMgbyxMdCBhcyBzLE1uIGFzIGMsT3IgYXMgbCxPdCBhcyB1LFFuIGFzIGQsUnIgYXMgZixTIGFzIHAsU24gYXMgZWUsViBhcyBtLFcgYXMgaCxYdCBhcyBnLGIgYXMgXyxiciBhcyB2LGRpIGFzIHksZ3QgYXMgYixoIGFzIHRlLGt0IGFzIHgsb3QgYXMgUyxyciBhcyBDLHNpIGFzIHcsc3QgYXMgVCx0IGFzIEUsdWkgYXMgbmUsdm4gYXMgRCx3biBhcyBPLHggYXMgayx6IGFzIEEsenQgYXMgan1mcm9tIi4vbmF2LUR6YjBPVE5fLmpzIjtpbXBvcnR7ZCBhcyBNLG4gYXMgTix0IGFzIFAsdSBhcyByZX1mcm9tIi4vQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIjtpbXBvcnR7YSBhcyBGLGMgYXMgaWUsaSBhcyBhZSxuIGFzIG9lLG8gYXMgSSxyIGFzIHNlLHMgYXMgY2UsdCBhcyBsZX1mcm9tIi4vc2VhcmNoLWV4cGFuZC1CMXFuSzFINS5qcyI7aW1wb3J0e24gYXMgdWUsciBhcyBMLHQgYXMgUn1mcm9tIi4vdGFicy1CYkdKeUNSci5qcyI7aW1wb3J0e3QgYXMgen1mcm9tIi4vaW5kZXgtQmlUUV9nQ0UuanMiO2ltcG9ydHt0IGFzIGRlfWZyb20iLi9jb25zdW1lcnMtd0ItaXRqbmYuanMiO2ltcG9ydHthIGFzIGZlLGMgYXMgQixkIGFzIHBlLGkgYXMgbWUsbCBhcyBWLG4gYXMgaGUsbyBhcyBnZSxyIGFzIF9lLHMgYXMgSCx0IGFzIHZlLHUgYXMgeWV9ZnJvbSIuL0RhdGFUYWJsZS1EVnVlTkZ1QS5qcyI7aW1wb3J0e2MgYXMgVSxmIGFzIGJlLG8gYXMgVyxyIGFzIHhlLHQgYXMgRyx1IGFzIEt9ZnJvbSIuL2JhZGdlLW5zMGo4T1VyLmpzIjtpbXBvcnR7dCBhcyBxfWZyb20iLi9Db21wYWN0TnVtYmVyLUIxaWhRWkg3LmpzIjtpbXBvcnR7YSBhcyBKLGkgYXMgWSxuIGFzIFNlLG8gYXMgQ2UsciBhcyB3ZSxzIGFzIFRlLHQgYXMgRWV9ZnJvbSIuL2ZvcmVjYXN0LUJNU2tnNVhzLmpzIjtpbXBvcnR7YSBhcyBEZSxpIGFzIE9lLG8gYXMga2UsciBhcyBBZSxzIGFzIGplfWZyb20iLi9idXJuZG93bi1DcXRkWFNZay5qcyI7aW1wb3J0e24gYXMgTWUsdCBhcyBOZX1mcm9tIi4vdXNlU2VhcmNoUXVlcnktRHlzQnQtSW4uanMiO2ltcG9ydHt0IGFzIFh9ZnJvbSIuL0VudGl0eUxpbmstQ292c0ZqRWwuanMiO2ltcG9ydHt0IGFzIFBlfWZyb20iLi9DbGFtcGVkUmFuZ2VOb3RpY2UtQnZobTFlLUIuanMiO2ltcG9ydHt0IGFzIEZlfWZyb20iLi9UaW1lU2VyaWVzQ2hhcnQtQlA1SWNVeWcuanMiO2ltcG9ydHt0IGFzIEllfWZyb20iLi9ldmVudHMtQlBGSUJ2NE0uanMiO2Z1bmN0aW9uIExlKGUsdCl7dC52YWx1ZT10eXBlb2YgZT09YGZ1bmN0aW9uYD9lKHQudmFsdWUpOmV9ZnVuY3Rpb24gUmUoZSx0KXtpZighZS5hbGxvd2VkUHJvdmlkZXJzLmluY2x1ZGVzKHQpKXJldHVybnthbGxvd2VkOiExfTtsZXQgbj1lLm1vZGVsQWNjZXNzW3RdO2lmKCFuKXJldHVybnthbGxvd2VkOiEwfTtsZXQgcj1uLmFsbG93ZWQ9PT0wJiZuLnRvdGFsPjB8fHZvaWQgMDtyZXR1cm57YWxsb3dlZDohMCxkZXRhaWw6YCR7bi5hbGxvd2VkfS8ke24udG90YWx9IG1vZGVsc2AsemVybzpyfX1mdW5jdGlvbiBaKGUsdCl7cmV0dXJuIHQuYWNjZXNzPT09dm9pZCAwfHx0LmFjY2Vzcz09PW51bGw/e2FsbG93ZWQ6ITB9OnthbGxvd2VkOnQuYWNjZXNzLmluY2x1ZGVzKGUubmFtZSl9fWZ1bmN0aW9uIHplKGUsdCxuLHIpe3JldHVybiBlLm1hcChlPT4oe2dyb3VwOmUubmFtZSxwcm92aWRlcnM6T2JqZWN0LmZyb21FbnRyaWVzKHQubWFwKHQ9Plt0LFJlKGUsdCldKSksbWNwU2VydmVyczpPYmplY3QuZnJvbUVudHJpZXMobi5tYXAodD0+W3QubmFtZSxaKGUsdCldKSksYWdlbnRzOk9iamVjdC5mcm9tRW50cmllcyhyLm1hcCh0PT5bdC5uYW1lLFooZSx0KV0pKX0pKX12YXIgUT17a2V5OjAsImFyaWEtaGlkZGVuIjpgdHJ1ZWAsY2xhc3M6YG1sLTEgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxCZT17Y2xhc3M6YHNyLW9ubHlgfSxWZT1qKHtfX25hbWU6YEFjY2Vzc01hdHJpeGAsc2V0dXAoaSl7bGV0IGw9ZGUoKSxkPXRlKCk7RCgoKT0+e2wuZW5zdXJlQ29uc3VtZXJzKCl9KTtsZXQgZWU9YSgoKT0+KGQub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10pLm1hcChlPT5lLm5hbWUpKSxtPWEoKCk9PmQudGFyZ2V0cz8ubWNwU2VydmVycz8/W10pLGc9YSgoKT0+ZC50YXJnZXRzPy5hZ2VudHM/P1tdKSx2PWEoKCk9PlsuLi5lZS52YWx1ZS5tYXAoZT0+KHtrZXk6ZSxsYWJlbDplLHNlY3Rpb246YHByb3ZpZGVyc2B9KSksLi4ubS52YWx1ZS5tYXAoZT0+KHtrZXk6ZS5uYW1lLGxhYmVsOmAke2UubmFtZX0gKE1DUClgLHNlY3Rpb246YG1jcFNlcnZlcnNgfSkpLC4uLmcudmFsdWUubWFwKGU9Pih7a2V5OmUubmFtZSxsYWJlbDpgJHtlLm5hbWV9IChhZ2VudClgLHNlY3Rpb246YGFnZW50c2B9KSldKSxFPWEoKCk9PnplKGwuZGF0YT8uZ3JvdXBzPz9bXSxlZS52YWx1ZSxtLnZhbHVlLGcudmFsdWUpKSxuZT17YWxsb3dlZDohMX07ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlW3Quc2VjdGlvbl1bdC5rZXldPz9uZX1mdW5jdGlvbiBqKGUpe3JldHVybiBlLmFsbG93ZWQ/ZS56ZXJvP2BBbGxvd2VkLCBidXQgJHtlLmRldGFpbH0gcmVhY2hhYmxlIOKAlCB0aGUgbW9kZWwgZ3JhbnQgbWF0Y2hlcyBub25lIG9mIHRoaXMgcHJvdmlkZXIncyBtb2RlbHNgOmUuZGV0YWlsP2BBbGxvd2VkLCAke2UuZGV0YWlsfWA6YEFsbG93ZWRgOmBOb3QgYWxsb3dlZGB9ZnVuY3Rpb24gTShlKXtyZXR1cm4gZS5hbGxvd2VkP2UuemVybz9TOmg6VH1mdW5jdGlvbiBOKGUpe3JldHVybiBlLmFsbG93ZWQ/ZS56ZXJvP2B0ZXh0LXN0YXR1cy13YXJuYDpgdGV4dC1jaGFydC1yZXF1ZXN0c2A6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZC80MGB9cmV0dXJuKGksYSk9PntsZXQgZD1jKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gTygpLHUoZihuKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoayksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcyhmKF8pLG51bGwse2RlZmF1bHQ6QygoKT0+Wy4uLmFbMF18fD1bbyhgQWNjZXNzIG1hdHJpeGAsLTEpXV0pLF86MX0pLHMoZihQKSxudWxsLHtkZWZhdWx0OkMoKCk9PlsuLi5hWzFdfHw9W28oYFdoaWNoIGdyb3VwcyBjYW4gcmVhY2ggd2hpY2ggcHJvdmlkZXJzLCBNQ1Agc2VydmVycywgYW5kIGFnZW50cy5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLGYobCkuZXJyb3I/KE8oKSx1KGYocCkse2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpDKCgpPT5bbyh5KGYobCkuZXJyb3IpLDEpXSksXzoxfSkpOkUudmFsdWUubGVuZ3RoPT09MD8oTygpLHUoZihwKSx7a2V5OjEsY2xhc3M6YHB5LTYgdGV4dC1jZW50ZXIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx7ZGVmYXVsdDpDKCgpPT5bbyh5KGYobCkubG9hZGluZz9gbG9hZGluZ+KApmA6YG5vIGdyb3VwcyBjb25maWd1cmVkYCksMSldKSxfOjF9KSk6KE8oKSx1KGYocCkse2tleToyLGNsYXNzOmBvdmVyZmxvdy14LWF1dG9gfSx7ZGVmYXVsdDpDKCgpPT5bcyhmKHBlKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoZ2UpLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihCKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoSCksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bLi4uYVsyXXx8PVtvKGBHcm91cGAsLTEpXV0pLF86MX0pLChPKCEwKSx0KGIsbnVsbCxlKHYudmFsdWUsZT0+KE8oKSx1KGYoSCkse2tleTplLmtleStlLnNlY3Rpb259LHtkZWZhdWx0OkMoKCk9PltvKHkoZS5sYWJlbCksMSldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSxfOjF9KV0pLF86MX0pLHMoZih5ZSksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bKE8oITApLHQoYixudWxsLGUoRS52YWx1ZSxuPT4oTygpLHUoZihCKSx7a2V5Om4uZ3JvdXB9LHtkZWZhdWx0OkMoKCk9PltzKGYoSCkse3Njb3BlOmByb3dgLGNsYXNzOmBmb250LW1lZGl1bWB9LHtkZWZhdWx0OkMoKCk9PltvKHkobi5ncm91cCksMSldKSxfOjJ9LDEwMjQpLChPKCEwKSx0KGIsbnVsbCxlKHYudmFsdWUsZT0+KE8oKSx1KGYoVikse2tleTplLmtleStlLnNlY3Rpb24sY2xhc3M6YHRleHQtY2VudGVyYCx0aXRsZTpBKG4sZSkuZGV0YWlsfSx7ZGVmYXVsdDpDKCgpPT5bcyhkLHtpY29uOk0oQShuLGUpKSxjbGFzczp3KFtOKEEobixlKSksYHNpemUtMy41YF0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksQShuLGUpLmRldGFpbD8oTygpLHQoYHNwYW5gLFEseShBKG4sZSkuZGV0YWlsKSwxKSk6eChgYCwhMCkscihgc3BhbmAsQmUseShqKEEobixlKSkpLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpKSwxMjgpKV0pLF86Mn0sMTAyNCkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSldKSxfOjF9KSldKSxfOjF9KX19fSksSGU9W2BhcmlhLWxhYmVsYCxgYXJpYS12YWx1ZW5vd2AsYGFyaWEtdmFsdWV0ZXh0YCxgdGl0bGVgXSxVZT1qKHtfX25hbWU6YFVzYWdlQmFyYCxwcm9wczp7cmF0aW86e30sbGFiZWw6e30sdmFsdWVUZXh0Ont9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgbj1lLGk9YSgoKT0+VGUobi5yYXRpbykpLG89YSgoKT0+TWF0aC5taW4oMTAwLE1hdGgubWF4KDAsbi5yYXRpbyoxMDApKSkscz1hKCgpPT5NYXRoLnJvdW5kKG8udmFsdWUpKSxjPXtub3JtYWw6YGJnLXByaW1hcnlgLGFtYmVyOmBiZy1iYXItYW1iZXJgLHJlZDpgYmctZGVzdHJ1Y3RpdmVgfTtyZXR1cm4oYSxsKT0+KE8oKSx0KGBzcGFuYCx7cm9sZTpgbWV0ZXJgLCJhcmlhLWxhYmVsIjplLmxhYmVsLCJhcmlhLXZhbHVlbm93IjpzLnZhbHVlLCJhcmlhLXZhbHVlbWluIjpgMGAsImFyaWEtdmFsdWVtYXgiOmAxMDBgLCJhcmlhLXZhbHVldGV4dCI6ZS52YWx1ZVRleHQsdGl0bGU6ZS52YWx1ZVRleHQsY2xhc3M6dyhmKEEpKGByZWxhdGl2ZSBpbmxpbmUtYmxvY2sgaC0xLjUgdy0xNCBzaHJpbmstMCBvdmVyZmxvdy1oaWRkZW4gcm91bmRlZC1mdWxsIGJnLW11dGVkIGFsaWduLW1pZGRsZWAsbi5jbGFzcykpfSxbcihgc3BhbmAse2NsYXNzOncoW2BhYnNvbHV0ZSBpbnNldC15LTAgbGVmdC0wIHJvdW5kZWQtZnVsbGAsY1tpLnZhbHVlXV0pLHN0eWxlOm5lKHt3aWR0aDpgJHtvLnZhbHVlfSVgfSl9LG51bGwsNildLDEwLEhlKSl9fSksV2U9NjAsR2U9MzYwMCxLZT04NjQwMCxxZT02MCxKZT0zMDtmdW5jdGlvbiBZZShlLHQ9bmV3IERhdGUpe2lmKCFlKXJldHVybmBuZXZlcmA7bGV0IG49TWF0aC5mbG9vcih0LmdldFRpbWUoKS8xZTMpLHI9TWF0aC5tYXgoMCxuLWUpO2lmKHI8V2UpcmV0dXJuYGp1c3Qgbm93YDtpZihyPEdlKXJldHVybmAke01hdGguZmxvb3Ioci9XZSl9bSBhZ29gO2lmKHI8S2UpcmV0dXJuYCR7TWF0aC5mbG9vcihyL0dlKX1oIGFnb2A7bGV0IGk9TWF0aC5mbG9vcihyL0tlKTtyZXR1cm4gaTxxZT9gJHtpfWQgYWdvYDpgJHtNYXRoLmZsb29yKGkvSmUpfW1vIGFnb2B9ZnVuY3Rpb24gJChlLHQsbixyPVN0cmluZyxpPSEwLGEpe3JldHVybntpZDplLGhlYWRlcjp0LGFjY2Vzc29yRm46bixtZXRhOnthbGlnbjpgcmlnaHRgfSxjZWxsOih7cm93OmV9KT0+e2lmKGUub3JpZ2luYWwuc3RvcmVEb3duKXJldHVybmA/YDtsZXQgbz1uKGUub3JpZ2luYWwpLHM9aT9nKHEse3ZhbHVlOm99KTpyKG8pO2lmKCFhKXJldHVybiBzO2xldCBjPUNlKGUub3JpZ2luYWwpLmZpbmQoZT0+ZS5pZD09PWEpO2lmKCFjKXJldHVybiBzO2xldCBsPWk/YCR7VShjLnVzZWQpfSAvICR7VShjLmxpbWl0KX1gOmAke3IoYy51c2VkKX0gLyAke3IoYy5saW1pdCl9YDtyZXR1cm4gZyhgc3BhbmAse2NsYXNzOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgZ2FwLTEuNWB9LFtzLGcoVWUse3JhdGlvOmMucmF0aW8sbGFiZWw6WVthXT8/dCx2YWx1ZVRleHQ6bH0pXSl9fX1mdW5jdGlvbiBYZSgpe3JldHVybntpZDpgcmVqRGF5YCxoZWFkZXI6YHJlamVjdGVkL2RheWAsYWNjZXNzb3JGbjplPT5lLnJlamVjdGlvbnNQZXJEYXksbWV0YTp7YWxpZ246YHJpZ2h0YH0sY2VsbDooe3JvdzplfSk9PntpZihlLm9yaWdpbmFsLnN0b3JlRG93bilyZXR1cm5gP2A7bGV0IHQ9ZS5vcmlnaW5hbC5yZWplY3Rpb25zUGVyRGF5O3JldHVybiBnKHEse3ZhbHVlOnQsY2xhc3M6dD4wP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDB9KX19fWZ1bmN0aW9uIFplKGUpe3JldHVybntpZDpgY29zdE1vbnRoUHJvamAsaGVhZGVyOmBjb3N0L21vbnRoIChwcm9qLilgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46dD0+d2UodC5jb3N0UGVyTW9udGhNaWNyb1VzZCxlKT8/MCxjZWxsOih7cm93OnR9KT0+e2lmKHQub3JpZ2luYWwuc3RvcmVEb3duKXJldHVybmA/YDtsZXQgbj13ZSh0Lm9yaWdpbmFsLmNvc3RQZXJNb250aE1pY3JvVXNkLGUpO2lmKG49PT1udWxsKXJldHVybiBnKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBub3QgZW5vdWdoIGRhdGEgeWV0YCk7bGV0IHI9RWUobix0Lm9yaWdpbmFsLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEKTtyZXR1cm4gZyhgc3BhbmAse2NsYXNzOnIud2lsbEV4Y2VlZD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwLHRpdGxlOnIud2lsbEV4Y2VlZD9gUHJvamVjdGVkIHRvIGV4Y2VlZCB0aGUgY29uZmlndXJlZCBjb3N0L21vbnRoIGxpbWl0YDp2b2lkIDB9LFcobikpfX19ZnVuY3Rpb24gUWUoZSl7cmV0dXJue2lkOmBzb3VyY2VgLGhlYWRlcjpgU291cmNlYCxhY2Nlc3NvckZuOnQ9PmUodCk/P2BgLGNlbGw6KHtyb3c6dH0pPT5nKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGUodC5vcmlnaW5hbCk/P2DigJRgKX19ZnVuY3Rpb24gJGUoZSl7cmV0dXJue2lkOmBsYXN0U2VlbmAsaGVhZGVyOmBMYXN0IHNlZW5gLGFjY2Vzc29yRm46ZT0+ZS5sYXN0U2Vlbj8/MCxjZWxsOih7cm93OnR9KT0+WWUodC5vcmlnaW5hbC5sYXN0U2VlbixlKX19ZnVuY3Rpb24gZXQoZSx0LG4scj1uZXcgRGF0ZSxpKXtsZXQgYT1TZShyKSxvPVt7aWQ6YGlkYCxoZWFkZXI6ZSxhY2Nlc3NvckZuOmU9PmUuaWQsY2VsbDooe3JvdzplfSk9PmcoWCx7Y2xhc3M6YGZvbnQtbWVkaXVtYCxsYWJlbDplLm9yaWdpbmFsLmlkLGtpbmQ6YHVzZXJgLGlkOmUub3JpZ2luYWwuaWR9KX0se2lkOmBzZWNvbmRhcnlgLGhlYWRlcjp0LGFjY2Vzc29yRm46bixzb3J0aW5nRm46YGFscGhhbnVtZXJpY2AsY2VsbDooe3JvdzplfSk9PmcoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sbihlLm9yaWdpbmFsKSl9XTtyZXR1cm4gaSYmby5wdXNoKFFlKGkpKSxvLnB1c2goe2lkOmBsaW1pdHNgLGhlYWRlcjpgTGltaXRzYCxhY2Nlc3NvckZuOmU9PksoZS5saW1pdHMpLGNlbGw6KHtyb3c6ZX0pPT5nKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEsoZS5vcmlnaW5hbC5saW1pdHMpKX0sJChgcmVxTWluYCxgcmVxL21pbmAsZT0+ZS5yZXF1ZXN0c1Blck1pbnV0ZSxTdHJpbmcsITAsYHJlcU1pbmApLCQoYHJlcURheWAsYHJlcS9kYXlgLGU9PmUucmVxdWVzdHNQZXJEYXksU3RyaW5nLCEwLGByZXFEYXlgKSxYZSgpLCQoYHRva0luRGF5YCxgdG9rSW4vZGF5YCxlPT5lLnRva2Vuc0luUGVyRGF5LFN0cmluZywhMCxgdG9rRGF5YCksJChgdG9rT3V0RGF5YCxgdG9rT3V0L2RheWAsZT0+ZS50b2tlbnNPdXRQZXJEYXksU3RyaW5nLCEwLGB0b2tEYXlgKSwkKGB0b2tJbk1vbnRoYCxgdG9rSW4vbW9udGhgLGU9PmUudG9rZW5zSW5QZXJNb250aCxTdHJpbmcsITAsYHRva01vbnRoYCksJChgdG9rT3V0TW9udGhgLGB0b2tPdXQvbW9udGhgLGU9PmUudG9rZW5zT3V0UGVyTW9udGgsU3RyaW5nLCEwLGB0b2tNb250aGApLCQoYGNvc3REYXlgLGBjb3N0L2RheWAsZT0+ZS5jb3N0UGVyRGF5TWljcm9Vc2QsVywhMSxgY29zdERheWApLCQoYGNvc3RNb250aGAsYGNvc3QvbW9udGhgLGU9PmUuY29zdFBlck1vbnRoTWljcm9Vc2QsVywhMSxgY29zdE1vbnRoYCksWmUoYSksJGUocikpLG99dmFyIHR0PWooe19fbmFtZTpgVXNhZ2VUYWJsZWAscHJvcHM6e2lkTGFiZWw6e30sZW50cmllczp7fSxzZWNvbmRhcnlDb2x1bW5MYWJlbDp7fSxzZWNvbmRhcnlWYWx1ZTp7dHlwZTpGdW5jdGlvbn0sZW1wdHlNZXNzYWdlOnt9LG5vdzp7fSxzb3J0aW5nOnt9LHNvdXJjZVZhbHVlOnt0eXBlOkZ1bmN0aW9ufX0sZW1pdHM6W2B1cGRhdGU6c29ydGluZ2BdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPWUscj10LGk9YSgoKT0+ZXQobi5pZExhYmVsLG4uc2Vjb25kYXJ5Q29sdW1uTGFiZWwsbi5zZWNvbmRhcnlWYWx1ZSxuLm5vdyxuLnNvdXJjZVZhbHVlKSk7cmV0dXJuKHQsbik9PihPKCksdSh2ZSx7Y29sdW1uczppLnZhbHVlLGRhdGE6ZS5lbnRyaWVzLCJlbXB0eS1tZXNzYWdlIjplLmVtcHR5TWVzc2FnZSwicm93LWNsYXNzIjplPT5lLnN0b3JlRG93bj9gYmctZGVzdHJ1Y3RpdmUvMTBgOnZvaWQgMCxzb3J0aW5nOmUuc29ydGluZywib25VcGRhdGU6c29ydGluZyI6blswXXx8PWU9PnIoYHVwZGF0ZTpzb3J0aW5nYCxlKX0sbnVsbCw4LFtgY29sdW1uc2AsYGRhdGFgLGBlbXB0eS1tZXNzYWdlYCxgcm93LWNsYXNzYCxgc29ydGluZ2BdKSl9fSksbnQ9e3VzZXJzOmBHcm91cGAsZ3JvdXBzOmBNZW1iZXJzYH07ZnVuY3Rpb24gcnQoZSl7cmV0dXJuKGUvSikudG9GaXhlZCg2KX1mdW5jdGlvbiBpdChlLHQsbixyPW5ldyBEYXRlKXtsZXQgaT1TZShyKSxhPVtgTmFtZWAsbnRbdF0sYExpbWl0c2AsYHJlcS9taW5gLGByZXEvZGF5YCxgcmVqZWN0ZWQvZGF5YCxgdG9rSW4vZGF5YCxgdG9rT3V0L2RheWAsYHRva0luL21vbnRoYCxgdG9rT3V0L21vbnRoYCxgY29zdC9kYXkgKFVTRClgLGBjb3N0L21vbnRoIChVU0QpYCxgY29zdC9tb250aCAocHJvai4sIFVTRClgLGBsYXN0IHNlZW4gKHVuaXggc2Vjb25kcylgXSxvPWUubWFwKGU9PntsZXQgdD1lLnN0b3JlRG93bixyPXQ/bnVsbDp3ZShlLmNvc3RQZXJNb250aE1pY3JvVXNkLGkpO3JldHVybltlLmlkLG4oZSksSyhlLmxpbWl0cyksdD9gP2A6ZS5yZXF1ZXN0c1Blck1pbnV0ZSx0P2A/YDplLnJlcXVlc3RzUGVyRGF5LHQ/YD9gOmUucmVqZWN0aW9uc1BlckRheSx0P2A/YDplLnRva2Vuc0luUGVyRGF5LHQ/YD9gOmUudG9rZW5zT3V0UGVyRGF5LHQ/YD9gOmUudG9rZW5zSW5QZXJNb250aCx0P2A/YDplLnRva2Vuc091dFBlck1vbnRoLHQ/YD9gOnJ0KGUuY29zdFBlckRheU1pY3JvVXNkKSx0P2A/YDpydChlLmNvc3RQZXJNb250aE1pY3JvVXNkKSx0P2A/YDpyPT09bnVsbD9gbm90IGVub3VnaCBkYXRhIHlldGA6cnQociksZS5sYXN0U2Vlbj8/MF19KTtyZXR1cm4gT2UoYSxvKX1mdW5jdGlvbiBhdChlLHQpe3JldHVybiBlLmlkLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModCl9ZnVuY3Rpb24gb3QoZSx0KXtyZXR1cm4gZS5pZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHQpfWZ1bmN0aW9uIHN0KGUsdCl7cmV0dXJuIHQuZmlsdGVyKHQ9Pih0Lmdyb3Vwcz8/W3QuZ3JvdXBOYW1lXSkuaW5jbHVkZXMoZS5pZCkpfWZ1bmN0aW9uIGN0KGUsdCxuKXtyZXR1cm4gc3QoZSx0KS5maWx0ZXIoZT0+YXQoZSxuKSl9ZnVuY3Rpb24gbHQoZSx0LG4pe3JldHVybiBvdChlLG4pfHxjdChlLHQsbikubGVuZ3RoPjB9dmFyIHV0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LGR0PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LGZ0PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LHB0PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LG10PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LGh0PXtjbGFzczpgZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJgfSxndD17a2V5OjAsY2xhc3M6YG1iLTMgZmxleCBmbGV4LXdyYXAgZ2FwLXgtNCBnYXAteS0xIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sX3Q9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMmB9LHZ0PXtjbGFzczpgc2hyaW5rLTAgcHktMi41IGZvbnQtbWVkaXVtYH0seXQ9e2NsYXNzOmBzci1vbmx5YH0sYnQ9e2NsYXNzOmBmbGV4IGZsZXgtMSBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC14LTQgZ2FwLXktMSBwci0yIHRleHQtbGVmdGB9LHh0PXtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgdGFidWxhci1udW1zYH0sU3Q9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSxDdD17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRhYnVsYXItbnVtc2B9LHd0PXtjbGFzczpgbWItMyBncmlkIGdyaWQtY29scy0yIGdhcC14LTYgZ2FwLXktMS41IHRleHQtc20gc206Z3JpZC1jb2xzLTRgfSxUdD17a2V5OjAsY2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xLjVgfSxFdD17a2V5OjEsY2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LER0PXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LE90PXtrZXk6MSxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sa3Q9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sQXQ9e2tleToxLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxqdD17a2V5OjAsY2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xLjVgfSxNdD17a2V5OjEsY2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LE50PXtjbGFzczpgbWItMyBncmlkIGdyaWQtY29scy0yIGdhcC14LTYgZ2FwLXktMS41IHRleHQtc20gc206Z3JpZC1jb2xzLTRgfSxQdD17Y2xhc3M6YHRhYnVsYXItbnVtc2B9LEZ0PXtjbGFzczpgdGFidWxhci1udW1zYH0sSXQ9e2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxMdD17Y2xhc3M6YHRhYnVsYXItbnVtc2B9LFJ0PXtjbGFzczpgdGFidWxhci1udW1zYH0senQ9e2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxCdD1bYHRpdGxlYF0sVnQ9e2tleTowLGNsYXNzOmBtYi0zIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC00IGdhcC15LTEuNWB9LEh0PXtrZXk6MixjbGFzczpgcHktNiB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFV0PXtjbGFzczpgZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJgfSxXdD1gR2xvYiBwYXR0ZXJuIOKAlCBtYXRjaGVzIGxpa2UgYSBzaGVsbCB3aWxkY2FyZCAoKiwgPywgWy4uLl0pYCxHdD1qKHtfX25hbWU6YENvbnN1bWVyRGlyZWN0b3J5YCxzZXR1cChjKXtsZXQgbT10ZSgpLGg9ZGUoKSxnPUUoKSxTPWEoKCk9Pm0udXNhZ2UpO0QoKCk9PntoLmVuc3VyZUNvbnN1bWVycygpfSk7bGV0e25vdzpULHN0YXJ0Om5lLHN0b3A6QX09RGUoKTtEKG5lKSxlZShBKTtsZXQgaj1hKCgpPT57bGV0IGU9e307Zm9yKGxldCB0IG9mIG0ub3ZlcnZpZXc/Lmdyb3Vwcz8/W10pZVt0Lm5hbWVdPXQubWVtYmVyQ291bnQ7cmV0dXJuIGV9KTtmdW5jdGlvbiBNKGUpe3JldHVybihlLmdyb3Vwcz8/KGUuZ3JvdXBOYW1lPT09dm9pZCAwP1tdOltlLmdyb3VwTmFtZV0pKS5qb2luKGAsIGApfWZ1bmN0aW9uIE4oZSl7bGV0IHQ9ai52YWx1ZVtlLmlkXTtyZXR1cm4gdD09PXZvaWQgMD9gYDpTdHJpbmcodCl9ZnVuY3Rpb24gcmUoZSl7cmV0dXJuIGguZGF0YT8udXNlcnMuZmluZCh0PT50Lm5hbWU9PT1lLmlkKT8uc291cmNlfWxldCB1ZT1hKHtnZXQ6KCk9PmcucGFyYW1zLnE/P2BgLHNldDplPT5nLmdvVG8oYGNvbnN1bWVyc2Asey4uLmcucGFyYW1zLHE6ZX0pfSkse3F1ZXJ5Okwsbm9ybWFsaXplZDpSLGhhc1F1ZXJ5Onp9PU5lKHVlKSxCPWEoKCk9PntsZXQgZT1TLnZhbHVlPy5ncm91cHM/P1tdO2lmKCF6LnZhbHVlKXJldHVybiBlO2xldCB0PVMudmFsdWU/LnVzZXJzPz9bXTtyZXR1cm4gZS5maWx0ZXIoZT0+bHQoZSx0LFIudmFsdWUpKX0pLHBlPWEoKCk9PnoudmFsdWU/Qi52YWx1ZS5maWx0ZXIoZT0+IW90KGUsUi52YWx1ZSkpLm1hcChlPT5lLmlkKTpbXSk7ZnVuY3Rpb24gVihlKXtsZXQgdD1TLnZhbHVlPy51c2Vycz8/W107cmV0dXJuIXoudmFsdWV8fG90KGUsUi52YWx1ZSk/c3QoZSx0KTpjdChlLHQsUi52YWx1ZSl9bGV0IGdlPWEoKCk9PlMudmFsdWU/Lmdyb3Vwcy5sZW5ndGg/ei52YWx1ZT9gbm8gZ3JvdXBzIG1hdGNoICIke0wudmFsdWV9ImA6YG5vbmVgOmBub25lIGNvbmZpZ3VyZWRgKSxIPWEoKCk9PntsZXQgZT1TLnZhbHVlPy51c2Vycz8/W107aWYoIXoudmFsdWUpcmV0dXJuIGU7bGV0IHQ9Uy52YWx1ZT8uZ3JvdXBzPz9bXSxuPW5ldyBTZXQodC5maWx0ZXIoZT0+b3QoZSxSLnZhbHVlKSkubWFwKGU9PmUuaWQpKTtyZXR1cm4gZS5maWx0ZXIoZT0+YXQoZSxSLnZhbHVlKXx8KGUuZ3JvdXBzPz9bZS5ncm91cE5hbWVdKS5zb21lKGU9PmUhPT12b2lkIDAmJm4uaGFzKGUpKSl9KSx2ZT1hKCgpPT5TLnZhbHVlPy51c2Vycy5sZW5ndGg/ei52YWx1ZT9gbm8gdXNlcnMgbWF0Y2ggIiR7TC52YWx1ZX0iYDpgbm9uZWA6YG5vbmUgY29uZmlndXJlZGApLHllPWEoKCk9PmV0KGBOYW1lYCxgTWVtYmVyc2AsTixULnZhbHVlKSksYmU9bChbXSkseGU9X2Uoe2dldCBkYXRhKCl7cmV0dXJuIEIudmFsdWV9LGdldCBjb2x1bW5zKCl7cmV0dXJuIHllLnZhbHVlfSxnZXRDb3JlUm93TW9kZWw6bWUoKSxnZXRTb3J0ZWRSb3dNb2RlbDpmZSgpLG9uU29ydGluZ0NoYW5nZTplPT5MZShlLGJlKSxzdGF0ZTp7Z2V0IHNvcnRpbmcoKXtyZXR1cm4gYmUudmFsdWV9fX0pLEo9YSgoKT0+eGUuZ2V0Um93TW9kZWwoKS5yb3dzKSxUZT1uZXcgU2V0KFtgaWRgLGBzZWNvbmRhcnlgLGByZXFEYXlgLGBjb3N0RGF5YF0pLE9lPWEoKCk9PnhlLmdldEhlYWRlckdyb3VwcygpWzBdLmhlYWRlcnMuZmlsdGVyKGU9PlRlLmhhcyhlLmNvbHVtbi5pZCkpKSxBZT1pKHttYW51YWxseUV4cGFuZGVkOm5ldyBTZXQsbWFudWFsbHlDb2xsYXBzZWQ6bmV3IFNldH0pLFg9YSgoKT0+b2UoQWUsei52YWx1ZSxwZS52YWx1ZSkpO2Z1bmN0aW9uIFBlKGUpe3NlKEFlLGUsWC52YWx1ZS5oYXMoZSkpfWxldCBGZT1hKHtnZXQ6KCk9PkFycmF5LmZyb20oWC52YWx1ZSksc2V0OmU9PntsZXQgdD1uZXcgU2V0KGUpO2ZvcihsZXQgZSBvZiBYLnZhbHVlKXQuaGFzKGUpfHxQZShlKTtmb3IobGV0IGUgb2YgdClYLnZhbHVlLmhhcyhlKXx8UGUoZSl9fSk7ZChMLGU9PntlLnRyaW0oKT09PWBgJiZsZShBZSl9KTtmdW5jdGlvbiBJZShlKXtyZXR1cm4vWyo/W10vLnRlc3QoZSl9ZnVuY3Rpb24gUmUoZSl7cmV0dXJuIGUuaWQuc3RhcnRzV2l0aChgY29zdGApP2Ake1coZS51c2VkKX0gLyAke1coZS5saW1pdCl9YDpgJHtVKGUudXNlZCl9IC8gJHtVKGUubGltaXQpfWB9ZnVuY3Rpb24gWihlLHQpe2xldCBuPVNlKHQpLHI9d2UoZS5jb3N0UGVyTW9udGhNaWNyb1VzZCxuKTtyZXR1cm4gcj09PW51bGw/e3RleHQ6YG5vdCBlbm91Z2ggZGF0YSB5ZXRgLHdpbGxFeGNlZWQ6ITF9Ont0ZXh0Olcociksd2lsbEV4Y2VlZDpFZShyLGUubGltaXRzPy5jb3N0UGVyTW9udGhVU0QpLndpbGxFeGNlZWR9fWxldCB6ZT1hKCgpPT5ldChgTmFtZWAsYEdyb3VwYCxNLFQudmFsdWUscmUpKSxRPWwoW10pLEJlPV9lKHtnZXQgZGF0YSgpe3JldHVybiBILnZhbHVlfSxnZXQgY29sdW1ucygpe3JldHVybiB6ZS52YWx1ZX0sZ2V0Q29yZVJvd01vZGVsOm1lKCksZ2V0U29ydGVkUm93TW9kZWw6ZmUoKSxvblNvcnRpbmdDaGFuZ2U6ZT0+TGUoZSxRKSxzdGF0ZTp7Z2V0IHNvcnRpbmcoKXtyZXR1cm4gUS52YWx1ZX19fSk7ZnVuY3Rpb24gVmUoKXtyZXR1cm4gaXQoQmUuZ2V0Um93TW9kZWwoKS5yb3dzLm1hcChlPT5lLm9yaWdpbmFsKSxgdXNlcnNgLE0sVC52YWx1ZSl9ZnVuY3Rpb24gSGUoKXtyZXR1cm4gaXQoSi52YWx1ZS5tYXAoZT0+ZS5vcmlnaW5hbCksYGdyb3Vwc2AsTixULnZhbHVlKX1yZXR1cm4oaSxhKT0+KE8oKSx0KGBkaXZgLHV0LFtzKE1lLHttb2RlbFZhbHVlOmYoTCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmFbMF18fD1lPT52KEwpP0wudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgdXNlcnMgb3IgZ3JvdXBzYCxjbGFzczpgbWF4LXctc21gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLFMudmFsdWU/KE8oKSx1KGYobikse2tleTowfSx7ZGVmYXVsdDpDKCgpPT5bcyhmKGspLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihfKSxudWxsLHtkZWZhdWx0OkMoKCk9PlsuLi5hWzNdfHw9W28oYFRvdGFsYCwtMSldXSksXzoxfSkscyhmKFApLG51bGwse2RlZmF1bHQ6QygoKT0+Wy4uLmFbNF18fD1bbyhgVXNhZ2Ugc3VtbWVkIGFjcm9zcyBldmVyeSB1c2VyIGFuZCBncm91cCBjb21iaW5lZC5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLHMoZihwKSx7Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdGV4dC1zbSBzbTpncmlkLWNvbHMtNWB9LHtkZWZhdWx0OkMoKCk9PltyKGBkaXZgLG51bGwsW2FbNV18fD1yKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBSZXF1ZXN0cy9kYXlgLC0xKSxyKGBwYCxkdCxbcyhxLHt2YWx1ZTpTLnZhbHVlLnRvdGFsLnJlcXVlc3RzUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pXSkscihgZGl2YCxudWxsLFthWzZdfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUmVqZWN0ZWQvZGF5YCwtMSkscihgcGAse2NsYXNzOncoW2B0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zYCxTLnZhbHVlLnRvdGFsLnJlamVjdGlvbnNQZXJEYXk+MD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSl9LFtzKHEse3ZhbHVlOlMudmFsdWUudG90YWwucmVqZWN0aW9uc1BlckRheX0sbnVsbCw4LFtgdmFsdWVgXSldLDIpXSkscihgZGl2YCxudWxsLFthWzddfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgVG9rZW5zIGluL2RheWAsLTEpLHIoYHBgLGZ0LFtzKHEse3ZhbHVlOlMudmFsdWUudG90YWwudG9rZW5zSW5QZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pXSldKSxyKGBkaXZgLG51bGwsW2FbOF18fD1yKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBUb2tlbnMgb3V0L2RheWAsLTEpLHIoYHBgLHB0LFtzKHEse3ZhbHVlOlMudmFsdWUudG90YWwudG9rZW5zT3V0UGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pXSkscihgZGl2YCxudWxsLFthWzldfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ29zdC9kYXlgLC0xKSxyKGBwYCxtdCx5KGYoVykoUy52YWx1ZS50b3RhbC5jb3N0UGVyRGF5TWljcm9Vc2QpKSwxKV0pXSksXzoxfSldKSxfOjF9KSk6eChgYCwhMCksUy52YWx1ZT8oTygpLHUoamUse2tleToxLCJtdGQtbWljcm9zIjpTLnZhbHVlLnRvdGFsLmNvc3RQZXJNb250aE1pY3JvVXNkLGxpbWl0czpTLnZhbHVlLnRvdGFsLmxpbWl0cyxub3c6ZihUKX0sbnVsbCw4LFtgbXRkLW1pY3Jvc2AsYGxpbWl0c2AsYG5vd2BdKSk6eChgYCwhMCkscyhmKG4pLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihrKSxudWxsLHtkZWZhdWx0OkMoKCk9PltyKGBkaXZgLGh0LFtyKGBkaXZgLG51bGwsW3MoZihfKSxudWxsLHtkZWZhdWx0OkMoKCk9PlsuLi5hWzEwXXx8PVtvKGBHcm91cHNgLC0xKV1dKSxfOjF9KSxzKGYoUCksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bLi4uYVsxMV18fD1bbyhgRXhwYW5kIGEgZ3JvdXAgdG8gc2VlIGl0cyBtZW1iZXIgdXNlcnMnIG93biB1c2FnZS5gLC0xKV1dKSxfOjF9KV0pLHMoa2Use2ZpbGVuYW1lOmBjb25zdW1lcnMtZ3JvdXBzLmNzdmAsYnVpbGQ6SGV9KV0pXSksXzoxfSkscyhmKHApLG51bGwse2RlZmF1bHQ6QygoKT0+W0oudmFsdWUubGVuZ3RoPyhPKCksdChgZGl2YCxndCxbKE8oITApLHQoYixudWxsLGUoT2UudmFsdWUsZT0+KE8oKSx1KGhlLHtrZXk6ZS5pZCxoZWFkZXI6ZX0sbnVsbCw4LFtgaGVhZGVyYF0pKSksMTI4KSldKSk6eChgYCwhMCksSi52YWx1ZS5sZW5ndGg/KE8oKSx1KGYoY2UpLHtrZXk6MSxtb2RlbFZhbHVlOkZlLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzFdfHw9ZT0+RmUudmFsdWU9ZSx0eXBlOmBtdWx0aXBsZWAsY2xhc3M6YHJvdW5kZWQtbWQgYm9yZGVyIHB4LTNgfSx7ZGVmYXVsdDpDKCgpPT5bKE8oITApLHQoYixudWxsLGUoSi52YWx1ZSxuPT4oTygpLHUoZihGKSx7a2V5Om4ub3JpZ2luYWwuaWQsdmFsdWU6bi5vcmlnaW5hbC5pZH0se2RlZmF1bHQ6QygoKT0+W3IoYGRpdmAsX3QsW3IoYHNwYW5gLHZ0LHkobi5vcmlnaW5hbC5pZCksMSkscyhmKGFlKSx7ImhlYWRlci1jbGFzcyI6YGZsZXgtMWB9LHtkZWZhdWx0OkMoKCk9PltyKGBzcGFuYCx5dCxgR3JvdXAgYCt5KG4ub3JpZ2luYWwuaWQpK2AgZGV0YWlsc2AsMSkscihgc3BhbmAsYnQsW3IoYHNwYW5gLHh0LHkoTihuLm9yaWdpbmFsKXx8YDBgKStgIG1lbWJlcnNgLDEpLHIoYHNwYW5gLFN0LFtuLm9yaWdpbmFsLnN0b3JlRG93bj8oTygpLHQoYix7a2V5OjB9LFtvKGA/YCldLDY0KSk6KE8oKSx1KHEse2tleToxLHZhbHVlOm4ub3JpZ2luYWwucmVxdWVzdHNQZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pKSxhWzEyXXx8PW8oYCByZXEvZGF5IGAsLTEpXSkscihgc3BhbmAsQ3QseShuLm9yaWdpbmFsLnN0b3JlRG93bj9gP2A6ZihXKShuLm9yaWdpbmFsLmNvc3RQZXJEYXlNaWNyb1VzZCkpK2AvZGF5IGAsMSldKV0pLF86Mn0sMTAyNCldKSxzKGYoSSksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcihgZGxgLHd0LFtyKGBkaXZgLG51bGwsW3IoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCx0aXRsZTpXdH0sYFByb3ZpZGVyc2ApLHIoYGRkYCxudWxsLFtuLm9yaWdpbmFsLnByb3ZpZGVycz8ubGVuZ3RoPyhPKCksdChgZGl2YCxUdCxbKE8oITApLHQoYixudWxsLGUobi5vcmlnaW5hbC5wcm92aWRlcnMsZT0+KE8oKSx1KGYoRykse2tleTplLGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW1vbm8gZm9udC1ub3JtYWxgfSx7ZGVmYXVsdDpDKCgpPT5bbyh5KGUpLDEpXSksXzoyfSwxMDI0KSkpLDEyOCkpXSkpOihPKCksdChgc3BhbmAsRXQsYEFsbCBwcm92aWRlcnNgKSldKV0pLHIoYGRpdmAsbnVsbCxbcihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgLHRpdGxlOld0fSxgTW9kZWxzYCkscihgZGRgLG51bGwsW24ub3JpZ2luYWwubW9kZWxzPy5sZW5ndGg/KE8oKSx0KGBkaXZgLER0LFsoTyghMCksdChiLG51bGwsZShuLm9yaWdpbmFsLm1vZGVscyxlPT4oTygpLHQoYix7a2V5OmV9LFtJZShlKT8oTygpLHUoZihHKSx7a2V5OjEsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbW9ubyBmb250LW5vcm1hbGB9LHtkZWZhdWx0OkMoKCk9PltvKHkoZSksMSldKSxfOjJ9LDEwMjQpKTooTygpLHUoaWUse2tleTowLGlkOmV9LG51bGwsOCxbYGlkYF0pKV0sNjQpKSksMTI4KSldKSk6KE8oKSx0KGBzcGFuYCxPdCxgQWxsIG1vZGVsc2ApKV0pXSkscihgZGl2YCxudWxsLFtyKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsdGl0bGU6V3R9LGBNQ1Agc2VydmVyc2ApLHIoYGRkYCxudWxsLFtuLm9yaWdpbmFsLm1jcFNlcnZlcnM/Lmxlbmd0aD8oTygpLHQoYGRpdmAsa3QsWyhPKCEwKSx0KGIsbnVsbCxlKG4ub3JpZ2luYWwubWNwU2VydmVycyxlPT4oTygpLHUoZihHKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbW9ubyBmb250LW5vcm1hbGB9LHtkZWZhdWx0OkMoKCk9PltvKHkoZSksMSldKSxfOjJ9LDEwMjQpKSksMTI4KSldKSk6KE8oKSx0KGBzcGFuYCxBdCxgQWxsIE1DUCBzZXJ2ZXJzYCkpXSldKSxyKGBkaXZgLG51bGwsW3IoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCx0aXRsZTpXdH0sYEFnZW50c2ApLHIoYGRkYCxudWxsLFtuLm9yaWdpbmFsLmFnZW50cz8ubGVuZ3RoPyhPKCksdChgZGl2YCxqdCxbKE8oITApLHQoYixudWxsLGUobi5vcmlnaW5hbC5hZ2VudHMsZT0+KE8oKSx1KGYoRykse2tleTplLGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW1vbm8gZm9udC1ub3JtYWxgfSx7ZGVmYXVsdDpDKCgpPT5bbyh5KGUpLDEpXSksXzoyfSwxMDI0KSkpLDEyOCkpXSkpOihPKCksdChgc3BhbmAsTXQsYEFsbCBhZ2VudHNgKSldKV0pXSkscihgZGxgLE50LFtyKGBkaXZgLG51bGwsW2FbMTNdfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGltaXRzYCwtMSkscihgZGRgLG51bGwseShmKEspKG4ub3JpZ2luYWwubGltaXRzKSksMSldKSxyKGBkaXZgLG51bGwsW2FbMTRdfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgcmVxL21pbmAsLTEpLHIoYGRkYCxQdCxbbi5vcmlnaW5hbC5zdG9yZURvd24/KE8oKSx0KGIse2tleTowfSxbbyhgP2ApXSw2NCkpOihPKCksdShxLHtrZXk6MSx2YWx1ZTpuLm9yaWdpbmFsLnJlcXVlc3RzUGVyTWludXRlfSxudWxsLDgsW2B2YWx1ZWBdKSldKV0pLHIoYGRpdmAsbnVsbCxbYVsxNV18fD1yKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGByZWplY3RlZC9kYXlgLC0xKSxyKGBkZGAse2NsYXNzOncoW2B0YWJ1bGFyLW51bXNgLCFuLm9yaWdpbmFsLnN0b3JlRG93biYmbi5vcmlnaW5hbC5yZWplY3Rpb25zUGVyRGF5PjA/YHRleHQtZGVzdHJ1Y3RpdmVgOnZvaWQgMF0pfSxbbi5vcmlnaW5hbC5zdG9yZURvd24/KE8oKSx0KGIse2tleTowfSxbbyhgP2ApXSw2NCkpOihPKCksdShxLHtrZXk6MSx2YWx1ZTpuLm9yaWdpbmFsLnJlamVjdGlvbnNQZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pKV0sMildKSxyKGBkaXZgLG51bGwsW2FbMTZdfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgdG9rSW4vZGF5YCwtMSkscihgZGRgLEZ0LFtuLm9yaWdpbmFsLnN0b3JlRG93bj8oTygpLHQoYix7a2V5OjB9LFtvKGA/YCldLDY0KSk6KE8oKSx1KHEse2tleToxLHZhbHVlOm4ub3JpZ2luYWwudG9rZW5zSW5QZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pKV0pXSkscihgZGl2YCxudWxsLFthWzE3XXx8PXIoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYHRva091dC9kYXlgLC0xKSxyKGBkZGAsSXQsW24ub3JpZ2luYWwuc3RvcmVEb3duPyhPKCksdChiLHtrZXk6MH0sW28oYD9gKV0sNjQpKTooTygpLHUocSx7a2V5OjEsdmFsdWU6bi5vcmlnaW5hbC50b2tlbnNPdXRQZXJEYXl9LG51bGwsOCxbYHZhbHVlYF0pKV0pXSkscihgZGl2YCxudWxsLFthWzE4XXx8PXIoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYHRva0luL21vbnRoYCwtMSkscihgZGRgLEx0LFtuLm9yaWdpbmFsLnN0b3JlRG93bj8oTygpLHQoYix7a2V5OjB9LFtvKGA/YCldLDY0KSk6KE8oKSx1KHEse2tleToxLHZhbHVlOm4ub3JpZ2luYWwudG9rZW5zSW5QZXJNb250aH0sbnVsbCw4LFtgdmFsdWVgXSkpXSldKSxyKGBkaXZgLG51bGwsW2FbMTldfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgdG9rT3V0L21vbnRoYCwtMSkscihgZGRgLFJ0LFtuLm9yaWdpbmFsLnN0b3JlRG93bj8oTygpLHQoYix7a2V5OjB9LFtvKGA/YCldLDY0KSk6KE8oKSx1KHEse2tleToxLHZhbHVlOm4ub3JpZ2luYWwudG9rZW5zT3V0UGVyTW9udGh9LG51bGwsOCxbYHZhbHVlYF0pKV0pXSkscihgZGl2YCxudWxsLFthWzIwXXx8PXIoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYGNvc3QvbW9udGhgLC0xKSxyKGBkZGAsenQseShuLm9yaWdpbmFsLnN0b3JlRG93bj9gP2A6ZihXKShuLm9yaWdpbmFsLmNvc3RQZXJNb250aE1pY3JvVXNkKSksMSldKSxyKGBkaXZgLG51bGwsW2FbMjFdfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgY29zdC9tb250aCAocHJvai4pYCwtMSkscihgZGRgLHtjbGFzczp3KFtgdGFidWxhci1udW1zYCwhbi5vcmlnaW5hbC5zdG9yZURvd24mJloobi5vcmlnaW5hbCxmKFQpKS53aWxsRXhjZWVkP2B0ZXh0LWRlc3RydWN0aXZlYDp2b2lkIDBdKSx0aXRsZTohbi5vcmlnaW5hbC5zdG9yZURvd24mJloobi5vcmlnaW5hbCxmKFQpKS53aWxsRXhjZWVkP2BQcm9qZWN0ZWQgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGNvc3QvbW9udGggbGltaXRgOnZvaWQgMH0seShuLm9yaWdpbmFsLnN0b3JlRG93bj9gP2A6WihuLm9yaWdpbmFsLGYoVCkpLnRleHQpLDExLEJ0KV0pXSksZihDZSkobi5vcmlnaW5hbCkubGVuZ3RoPyhPKCksdChgZGl2YCxWdCxbKE8oITApLHQoYixudWxsLGUoZihDZSkobi5vcmlnaW5hbCksZT0+KE8oKSx0KGBzcGFuYCx7a2V5OmUuaWQsY2xhc3M6YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sW28oeShmKFkpW2UuaWRdKStgIGAsMSkscyhVZSx7cmF0aW86ZS5yYXRpbyxsYWJlbDpmKFkpW2UuaWRdLCJ2YWx1ZS10ZXh0IjpSZShlKX0sbnVsbCw4LFtgcmF0aW9gLGBsYWJlbGAsYHZhbHVlLXRleHRgXSldKSkpLDEyOCkpXSkpOngoYGAsITApLGFbMjJdfHw9cihgcGAse2NsYXNzOmBtYi0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTWVtYmVyc2AsLTEpLHModHQseyJpZC1sYWJlbCI6YE5hbWVgLCJzZWNvbmRhcnktY29sdW1uLWxhYmVsIjpgR3JvdXBgLGVudHJpZXM6VihuLm9yaWdpbmFsKSwic2Vjb25kYXJ5LXZhbHVlIjpNLG5vdzpmKFQpLCJzb3VyY2UtdmFsdWUiOnJlfSxudWxsLDgsW2BlbnRyaWVzYCxgbm93YF0pXSksXzoyfSwxMDI0KV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9LDgsW2Btb2RlbFZhbHVlYF0pKTooTygpLHQoYHBgLEh0LHkoZ2UudmFsdWUpLDEpKV0pLF86MX0pXSksXzoxfSkscyhmKG4pLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihrKSxudWxsLHtkZWZhdWx0OkMoKCk9PltyKGBkaXZgLFV0LFtyKGBkaXZgLG51bGwsW3MoZihfKSxudWxsLHtkZWZhdWx0OkMoKCk9PlsuLi5hWzIzXXx8PVtvKGBVc2Vyc2AsLTEpXV0pLF86MX0pLGYoaCkuZGF0YT8udXNlcnNGaWxlPyhPKCksdShmKFApLHtrZXk6MH0se2RlZmF1bHQ6QygoKT0+W28oYEZpbGUtYmFja2VkIHVzZXJzIGxvYWQgZnJvbSBgK3koZihoKS5kYXRhLnVzZXJzRmlsZSkrYC5gLDEpXSksXzoxfSkpOngoYGAsITApXSkscyhrZSx7ZmlsZW5hbWU6YGNvbnN1bWVycy11c2Vycy5jc3ZgLGJ1aWxkOlZlfSldKV0pLF86MX0pLHMoZihwKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKHR0LHsiaWQtbGFiZWwiOmBOYW1lYCwic2Vjb25kYXJ5LWNvbHVtbi1sYWJlbCI6YEdyb3VwYCxlbnRyaWVzOkgudmFsdWUsInNlY29uZGFyeS12YWx1ZSI6TSwiZW1wdHktbWVzc2FnZSI6dmUudmFsdWUsbm93OmYoVCksInNvdXJjZS12YWx1ZSI6cmUsc29ydGluZzpRLnZhbHVlLCJvblVwZGF0ZTpzb3J0aW5nIjphWzJdfHw9ZT0+US52YWx1ZT1lfSxudWxsLDgsW2BlbnRyaWVzYCxgZW1wdHktbWVzc2FnZWAsYG5vd2AsYHNvcnRpbmdgXSldKSxfOjF9KV0pLF86MX0pXSkpfX0pLEt0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHF0PXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxKdD17Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMmB9LFl0PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LFh0PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LFp0PXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LFF0PXtjbGFzczpgdGV4dC1zbWB9LCR0PXtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxlbj17a2V5OjEsY2xhc3M6YHRleHQtc20gdGV4dC1kZXN0cnVjdGl2ZWB9LHRuPXtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxubj17a2V5OjEsY2xhc3M6YHRleHQtc20gdGV4dC1kZXN0cnVjdGl2ZWB9LHJuPXtrZXk6MixjbGFzczpgcHktNiB0ZXh0LWNlbnRlciB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGFuPXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMiB0ZXh0LXNtYH0sb249e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxzbj17Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGNuPXtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sbG49e2tleToxLGNsYXNzOmBweS02IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sdW49e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sZG49e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBnYXAtMS41YH0sZm49aih7X19uYW1lOmBVc2VyRGV0YWlsYCxwcm9wczp7dXNlcklkOnt9fSxlbWl0czpbYGNsb3NlYF0sc2V0dXAoaSx7ZW1pdDpsfSl7bGV0IGg9aSxnPWwsdj10ZSgpLFM9ZGUoKSx3PUllKCksVD16KCkse25vdzpFLHN0YXJ0Om5lLHN0b3A6QX09RGUoKTtEKG5lKSxlZShBKTtsZXQgaj1hKCgpPT52LnVzYWdlPy51c2Vycy5maW5kKGU9PmUuaWQ9PT1oLnVzZXJJZCkpLEY9YSgoKT0+Uy5kYXRhPy51c2Vycy5maW5kKGU9PmUubmFtZT09PWgudXNlcklkKSksYWU9YSgoKT0+di5vdmVydmlldz8uZmVhdHVyZXMudXNlck1vZGVsU3RhdHM/PyExKTtmdW5jdGlvbiBvZSgpe1MuZmV0Y2hVc2VyRGV0YWlsKGgudXNlcklkLFQud2luZG93LFQuc3BhbixhZS52YWx1ZSl9RCgoKT0+e29lKCksdy5yZWZyZXNoKCl9KSxkKFsoKT0+aC51c2VySWQsKCk9PlQucmFuZ2UsYWVdLG9lKTtsZXQgST1hKCgpPT5TLmRldGFpbFtoLnVzZXJJZF0pLHNlPWEoKCk9PihJLnZhbHVlPy5yZXFTZXJpZXM/LmJ1Y2tldHM/P1tdKS5tYXAoZT0+eGUoZSxJLnZhbHVlPy5yZXFTZXJpZXM/LndpbmRvdz8/VC53aW5kb3cpKSksY2U9YSgoKT0+W3tsYWJlbDpgUmVxdWVzdHNgLGRhdGE6SS52YWx1ZT8ucmVxU2VyaWVzPy5zZXJpZXNbMF0/LnBvaW50cz8/W10sY29sb3I6YC0tY2hhcnQtcmVxdWVzdHNgfV0pLGxlPWEoKCk9PihJLnZhbHVlPy5jb3N0U2VyaWVzPy5idWNrZXRzPz9bXSkubWFwKGU9PnhlKGUsSS52YWx1ZT8uY29zdFNlcmllcz8ud2luZG93Pz9ULndpbmRvdykpKSx1ZT1hKCgpPT5be2xhYmVsOmBDb3N0YCxkYXRhOihJLnZhbHVlPy5jb3N0U2VyaWVzPy5zZXJpZXNbMF0/LnBvaW50cz8/W10pLm1hcChlPT5lKSxjb2xvcjpgLS1jaGFydC1jb3N0YH1dKSxMPWEoKCk9PiFhZS52YWx1ZXx8SS52YWx1ZT8ubW9kZWxUb3RhbHNVbmF2YWlsYWJsZT09PSEwKSxSPWEoKCk9PlsuLi5JLnZhbHVlPy5tb2RlbFRvdGFscz8ucm93cz8/W11dLnNvcnQoKGUsdCk9Pih0LnZhbHVlcy5jb3N0Pz90LnZhbHVlcy5yZXE/PzApLShlLnZhbHVlcy5jb3N0Pz9lLnZhbHVlcy5yZXE/PzApKSksZmU9YSgoKT0+dy5ldmVudHMuZmlsdGVyKGU9PmUudXNlcj09PWgudXNlcklkKS5zbGljZSgwLDEwKSksbWU9YSgoKT0+ai52YWx1ZT9DZShqLnZhbHVlKTpbXSk7ZnVuY3Rpb24gaGUoZSx0LG4pe3JldHVybiBlLnN0YXJ0c1dpdGgoYGNvc3RgKT9gJHtXKHQpfSAvICR7VyhuKX1gOmAke1UodCl9IC8gJHtVKG4pfWB9bGV0IF9lPWEoKCk9PntsZXQgZT1qLnZhbHVlPy5saW1pdHM/LmNvc3RQZXJNb250aFVTRDtyZXR1cm4hai52YWx1ZXx8IWU/bnVsbDpBZShqLnZhbHVlLmNvc3RQZXJNb250aE1pY3JvVXNkLE1hdGgucm91bmQoZSoxZTYpLEUudmFsdWUpfSk7cmV0dXJuKGEsbCk9PntsZXQgZD1jKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gTygpLHQoYGRpdmAsS3QsW3IoYGRpdmAscXQsW3MoZihOKSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBnaG9zdGAsc2l6ZTpgc21gLG9uQ2xpY2s6bFswXXx8PWU9PmcoYGNsb3NlYCl9LHtkZWZhdWx0OkMoKCk9PltzKGQse2ljb246ZihtKSxjbGFzczpgc2l6ZS0zLjVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLGxbMV18fD1vKGAgQmFjayB0byBkaXJlY3RvcnkgYCwtMSldKSxfOjF9KV0pLHMoZihuKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoayksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcihgZGl2YCxKdCxbcyhmKF8pLHtjbGFzczpgZm9udC1tb25vYH0se2RlZmF1bHQ6QygoKT0+W28oeShpLnVzZXJJZCksMSldKSxfOjF9KSxGLnZhbHVlPy5hZG1pbj8oTygpLHUoZihHKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDpDKCgpPT5bLi4ubFsyXXx8PVtvKGBhZG1pbmAsLTEpXV0pLF86MX0pKTp4KGBgLCEwKSxGLnZhbHVlPy5zb3VyY2U/KE8oKSx1KGYoRykse2tleToxLHZhcmlhbnQ6YHNlY29uZGFyeWB9LHtkZWZhdWx0OkMoKCk9PltvKHkoRi52YWx1ZS5zb3VyY2UpLDEpXSksXzoxfSkpOngoYGAsITApXSksai52YWx1ZT8uZ3JvdXBzPy5sZW5ndGh8fGoudmFsdWU/Lmdyb3VwTmFtZT8oTygpLHUoZihQKSx7a2V5OjB9LHtkZWZhdWx0OkMoKCk9PltvKGAgTWVtYmVyIG9mIGAreSgoai52YWx1ZT8uZ3JvdXBzPz9bai52YWx1ZT8uZ3JvdXBOYW1lXSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oYCwgYCkpLDEpXSksXzoxfSkpOngoYGAsITApXSksXzoxfSksai52YWx1ZT8oTygpLHUoZihwKSx7a2V5OjEsY2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdGV4dC1zbSBzbTpncmlkLWNvbHMtNGB9LHtkZWZhdWx0OkMoKCk9PltyKGBkaXZgLG51bGwsW2xbNF18fD1yKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBSZXF1ZXN0cy9kYXlgLC0xKSxyKGBwYCxZdCxbcyhxLHt2YWx1ZTpqLnZhbHVlLnJlcXVlc3RzUGVyRGF5fSxudWxsLDgsW2B2YWx1ZWBdKV0pXSkscihgZGl2YCxudWxsLFtsWzVdfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ29zdC9kYXlgLC0xKSxyKGBwYCxYdCx5KGYoVykoai52YWx1ZS5jb3N0UGVyRGF5TWljcm9Vc2QpKSwxKV0pLHIoYGRpdmAsbnVsbCxbbFs2XXx8PXIoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYENvc3QvbW9udGhgLC0xKSxyKGBwYCxadCx5KGYoVykoai52YWx1ZS5jb3N0UGVyTW9udGhNaWNyb1VzZCkpLDEpXSkscihgZGl2YCxudWxsLFtsWzddfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGltaXRzYCwtMSkscihgcGAsUXQseShmKEspKGoudmFsdWUubGltaXRzKSksMSldKV0pLF86MX0pKTooTygpLHUoZihwKSx7a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6QygoKT0+Wy4uLmxbM118fD1bbyhgIE5vIHVzYWdlIHNjb3BlIGZvciB0aGlzIHVzZXIgeWV0IOKAlCBpdCBhcHBlYXJzIGFmdGVyIHRoZWlyIGZpcnN0IHJlcXVlc3QuIGAsLTEpXV0pLF86MX0pKV0pLF86MX0pLGoudmFsdWUmJm1lLnZhbHVlLmxlbmd0aD8oTygpLHUoZihuKSx7a2V5OjB9LHtkZWZhdWx0OkMoKCk9PltzKGYoayksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcyhmKF8pLG51bGwse2RlZmF1bHQ6QygoKT0+Wy4uLmxbOF18fD1bbyhgSGVhZHJvb21gLC0xKV1dKSxfOjF9KSxfZS52YWx1ZT8oTygpLHUoZihQKSx7a2V5OjB9LHtkZWZhdWx0OkMoKCk9PltvKGBBdCB0aGUgY3VycmVudCBwYWNlLCBjb3N0L21vbnRoIHJ1bnMgb3V0IGFyb3VuZCBgK3koZihiZSkoX2UudmFsdWUudG9JU09TdHJpbmcoKSkpK2AuYCwxKV0pLF86MX0pKTp4KGBgLCEwKV0pLF86MX0pLHMoZihwKSx7Y2xhc3M6YGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC00IGdhcC15LTEuNWB9LHtkZWZhdWx0OkMoKCk9PlsoTyghMCksdChiLG51bGwsZShtZS52YWx1ZSxlPT4oTygpLHQoYHNwYW5gLHtrZXk6ZS5pZCxjbGFzczpgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxbbyh5KGYoWSlbZS5pZF0pK2AgYCwxKSxzKFVlLHtyYXRpbzplLnJhdGlvLGxhYmVsOmYoWSlbZS5pZF0sInZhbHVlLXRleHQiOmhlKGUuaWQsZS51c2VkLGUubGltaXQpfSxudWxsLDgsW2ByYXRpb2AsYGxhYmVsYCxgdmFsdWUtdGV4dGBdKV0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0pKTp4KGBgLCEwKSxzKGYobiksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcyhmKGspLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihfKSxudWxsLHtkZWZhdWx0OkMoKCk9PlsuLi5sWzldfHw9W28oYFJlcXVlc3RzIG92ZXIgdGltZWAsLTEpXV0pLF86MX0pXSksXzoxfSkscyhmKHApLG51bGwse2RlZmF1bHQ6QygoKT0+W0kudmFsdWU/LmxvYWRpbmc/KE8oKSx0KGBwYCwkdCxgbG9hZGluZ+KApmApKTpJLnZhbHVlPy5lcnJvcj8oTygpLHQoYHBgLGVuLHkoSS52YWx1ZS5lcnJvciksMSkpOihPKCksdShGZSx7a2V5OjIsbGFiZWxzOnNlLnZhbHVlLGRhdGFzZXRzOmNlLnZhbHVlLGFyaWFMYWJlbDpgUmVxdWVzdHMgb3ZlciB0aW1lIGZvciAke2kudXNlcklkfWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYCxgYXJpYUxhYmVsYF0pKV0pLF86MX0pXSksXzoxfSkscyhmKG4pLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihrKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoXyksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bLi4ubFsxMF18fD1bbyhgQ29zdCBvdmVyIHRpbWVgLC0xKV1dKSxfOjF9KV0pLF86MX0pLHMoZihwKSxudWxsLHtkZWZhdWx0OkMoKCk9PltJLnZhbHVlPy5sb2FkaW5nPyhPKCksdChgcGAsdG4sYGxvYWRpbmfigKZgKSk6SS52YWx1ZT8uZXJyb3I/KE8oKSx0KGBwYCxubix5KEkudmFsdWUuZXJyb3IpLDEpKTooTygpLHUoRmUse2tleToyLGxhYmVsczpsZS52YWx1ZSxkYXRhc2V0czp1ZS52YWx1ZSwidmFsdWUtZm9ybWF0dGVyIjpmKFcpLGFyaWFMYWJlbDpgQ29zdCBvdmVyIHRpbWUgZm9yICR7aS51c2VySWR9YH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgLGB2YWx1ZS1mb3JtYXR0ZXJgLGBhcmlhTGFiZWxgXSkpXSksXzoxfSldKSxfOjF9KSxzKGYobiksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcyhmKGspLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihfKSxudWxsLHtkZWZhdWx0OkMoKCk9PlsuLi5sWzExXXx8PVtvKGBNb2RlbHMgdXNlZGAsLTEpXV0pLF86MX0pXSksXzoxfSkscyhmKHApLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0OkMoKCk9PltzKFBlLHt3aW5kb3c6ZihUKS53aW5kb3csc3BhbjpmKFQpLnNwYW59LG51bGwsOCxbYHdpbmRvd2AsYHNwYW5gXSksTC52YWx1ZT8oTygpLHUoZihNKSx7a2V5OjAsdmFyaWFudDpgd2FybmB9LHtkZWZhdWx0OkMoKCk9PltzKGYocmUpLG51bGwse2RlZmF1bHQ6QygoKT0+Wy4uLmxbMTJdfHw9W28oYEVuYWJsZSBhZG1pbi5zdGF0cy51c2VyTW9kZWwgaW4gdGhlIHBsdWdpbiBjb25maWcgdG8gc2VlIGEgcGVyLW1vZGVsIGJyZWFrZG93biBmb3IgdGhpcyB1c2VyLmAsLTEpXV0pLF86MX0pXSksXzoxfSkpOlIudmFsdWUubGVuZ3RoPyhPKCksdShmKHBlKSx7a2V5OjF9LHtkZWZhdWx0OkMoKCk9PltzKGYoZ2UpLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihCKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoSCksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bLi4ubFsxM118fD1bbyhgTW9kZWxgLC0xKV1dKSxfOjF9KSxzKGYoSCkse2NsYXNzOmB0ZXh0LXJpZ2h0YH0se2RlZmF1bHQ6QygoKT0+Wy4uLmxbMTRdfHw9W28oYFJlcXVlc3RzYCwtMSldXSksXzoxfSkscyhmKEgpLHtjbGFzczpgdGV4dC1yaWdodGB9LHtkZWZhdWx0OkMoKCk9PlsuLi5sWzE1XXx8PVtvKGBDb3N0YCwtMSldXSksXzoxfSldKSxfOjF9KV0pLF86MX0pLHMoZih5ZSksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bKE8oITApLHQoYixudWxsLGUoUi52YWx1ZSxlPT4oTygpLHUoZihCKSx7a2V5OmUuaWR9LHtkZWZhdWx0OkMoKCk9PltzKGYoViksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcyhpZSx7aWQ6ZS5pZH0sbnVsbCw4LFtgaWRgXSldKSxfOjJ9LDEwMjQpLHMoZihWKSx7Y2xhc3M6YHRleHQtcmlnaHQgdGFidWxhci1udW1zYH0se2RlZmF1bHQ6QygoKT0+W3MocSx7dmFsdWU6ZS52YWx1ZXMucmVxPz8wfSxudWxsLDgsW2B2YWx1ZWBdKV0pLF86Mn0sMTAyNCkscyhmKFYpLHtjbGFzczpgdGV4dC1yaWdodCB0YWJ1bGFyLW51bXNgfSx7ZGVmYXVsdDpDKCgpPT5bbyh5KGYoVykoZS52YWx1ZXMuY29zdD8/MCkpLDEpXSksXzoyfSwxMDI0KV0pLF86Mn0sMTAyNCkpKSwxMjgpKV0pLF86MX0pXSksXzoxfSkpOihPKCksdChgcGAscm4sYG5vIG1vZGVsIHVzYWdlIGluIHRoaXMgcmFuZ2VgKSldKSxfOjF9KV0pLF86MX0pLHMoZihuKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoayksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bcyhmKF8pLG51bGwse2RlZmF1bHQ6QygoKT0+Wy4uLmxbMTZdfHw9W28oYFJlY2VudCBlcnJvcnNgLC0xKV1dKSxfOjF9KV0pLF86MX0pLHMoZihwKSxudWxsLHtkZWZhdWx0OkMoKCk9PltmZS52YWx1ZS5sZW5ndGg/KE8oKSx0KGB1bGAsYW4sWyhPKCEwKSx0KGIsbnVsbCxlKGZlLnZhbHVlLChlLG4pPT4oTygpLHQoYGxpYCx7a2V5Om4sY2xhc3M6YGJvcmRlci1iIHBiLTIgbGFzdDpib3JkZXItMCBsYXN0OnBiLTBgfSxbcihgcGAsb24sW3MoZihHKSx7dmFyaWFudDpgc2Vjb25kYXJ5YH0se2RlZmF1bHQ6QygoKT0+W28oeShlLmtpbmQpLDEpXSksXzoyfSwxMDI0KSxyKGBzcGFuYCxzbix5KGYoYmUpKGUudGltZSkpLDEpXSkscihgcGAsY24seShlLm1lc3NhZ2UpLDEpXSkpKSwxMjgpKV0pKTooTygpLHQoYHBgLGxuLGBub25lIGluIHRoZSBjdXJyZW50IGV2ZW50IHdpbmRvd2ApKV0pLF86MX0pXSksXzoxfSksRi52YWx1ZT8ucHJvdmlkZXJzPy5sZW5ndGh8fEYudmFsdWU/Lm1vZGVscz8ubGVuZ3RoPyhPKCksdShmKG4pLHtrZXk6MX0se2RlZmF1bHQ6QygoKT0+W3MoZihrKSxudWxsLHtkZWZhdWx0OkMoKCk9PltzKGYoXyksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bLi4ubFsxN118fD1bbyhgUGVyc29uYWwgZ3JhbnRgLC0xKV1dKSxfOjF9KSxzKGYoUCksbnVsbCx7ZGVmYXVsdDpDKCgpPT5bLi4ubFsxOF18fD1bbyhgQWNjZXNzIHRoaXMgdXNlciBoYXMgYmV5b25kIHRoZWlyIGdyb3VwJ3Mgb3duLmAsLTEpXV0pLF86MX0pXSksXzoxfSkscyhmKHApLHtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMSBnYXAtNCBzbTpncmlkLWNvbHMtMmB9LHtkZWZhdWx0OkMoKCk9PltyKGBkaXZgLG51bGwsW2xbMTldfHw9cihgcGAse2NsYXNzOmBtYi0xLjUgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgUHJvdmlkZXJzYCwtMSkscihgZGl2YCx1bixbKE8oITApLHQoYixudWxsLGUoRi52YWx1ZT8ucHJvdmlkZXJzPz9bXSxlPT4oTygpLHUoZihHKSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbW9ubyBmb250LW5vcm1hbGB9LHtkZWZhdWx0OkMoKCk9PltvKHkoZSksMSldKSxfOjJ9LDEwMjQpKSksMTI4KSldKV0pLHIoYGRpdmAsbnVsbCxbbFsyMF18fD1yKGBwYCx7Y2xhc3M6YG1iLTEuNSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNb2RlbHNgLC0xKSxyKGBkaXZgLGRuLFsoTyghMCksdChiLG51bGwsZShGLnZhbHVlPy5tb2RlbHM/P1tdLGU9PihPKCksdShpZSx7a2V5OmUsaWQ6ZX0sbnVsbCw4LFtgaWRgXSkpKSwxMjgpKV0pXSldKSxfOjF9KV0pLF86MX0pKTp4KGBgLCEwKV0pfX19KSxwbj17a2V5OjEsY2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTRgfSxtbj1qKHtfX25hbWU6YENvbnN1bWVyc1BhZ2VgLHNldHVwKGUpe2xldCBuPUUoKSxyPWEoKCk9Pm4ucGFyYW1zLnVzZXIpLGk9YSgoKT0+bi5wYXJhbXMudmlldz09PWBtYXRyaXhgP2BtYXRyaXhgOmBkaXJlY3RvcnlgKTtmdW5jdGlvbiBjKGUpe2lmKGUhPT1gZGlyZWN0b3J5YCYmZSE9PWBtYXRyaXhgKXJldHVybjtsZXR7dXNlcjp0LC4uLnJ9PW4ucGFyYW1zO24uZ29UbyhgY29uc3VtZXJzYCx7Li4ucix2aWV3OmV9KX1mdW5jdGlvbiBsKCl7bGV0e3VzZXI6ZSwuLi50fT1uLnBhcmFtcztuLmdvVG8oYGNvbnN1bWVyc2AsdCl9cmV0dXJuKGUsbik9PnIudmFsdWU/KE8oKSx1KGZuLHtrZXk6MCwidXNlci1pZCI6ci52YWx1ZSxvbkNsb3NlOmx9LG51bGwsOCxbYHVzZXItaWRgXSkpOihPKCksdChgZGl2YCxwbixbcyhmKEwpLHsibW9kZWwtdmFsdWUiOmkudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmN9LHtkZWZhdWx0OkMoKCk9PltzKGYodWUpLG51bGwse2RlZmF1bHQ6QygoKT0+W3MoZihSKSx7dmFsdWU6YGRpcmVjdG9yeWB9LHtkZWZhdWx0OkMoKCk9PlsuLi5uWzBdfHw9W28oYERpcmVjdG9yeWAsLTEpXV0pLF86MX0pLHMoZihSKSx7dmFsdWU6YG1hdHJpeGB9LHtkZWZhdWx0OkMoKCk9PlsuLi5uWzFdfHw9W28oYEFjY2VzcyBtYXRyaXhgLC0xKV1dKSxfOjF9KV0pLF86MX0pXSksXzoxfSw4LFtgbW9kZWwtdmFsdWVgXSksaS52YWx1ZT09PWBkaXJlY3RvcnlgPyhPKCksdShHdCx7a2V5OjB9KSk6KE8oKSx1KFZlLHtrZXk6MX0pKV0pKX19KTtleHBvcnR7bW4gYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"DataTable-DVueNFuA.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0eyRuIGFzIGUsQW4gYXMgdCxBdCBhcyBuLER0IGFzIHIsRXQgYXMgaSxJdCBhcyBhLEx0IGFzIG8sTW4gYXMgcyxOIGFzIGMsT3IgYXMgbCxPdCBhcyB1LFFuIGFzIGQsUnIgYXMgZixYdCBhcyBwLGF0IGFzIG0sYnIgYXMgaCxkaSBhcyBnLGd0IGFzIF8saXQgYXMgZWUsam4gYXMgdixqciBhcyB0ZSxrdCBhcyB5LHJyIGFzIGIscnQgYXMgbmUsc2kgYXMgeCx1biBhcyByZSx3biBhcyBTLHogYXMgQyx6dCBhcyB3fWZyb20iLi9uYXYtRHpiME9UTl8uanMiO3ZhciBpZT17ImRhdGEtc2xvdCI6YHRhYmxlLWNvbnRhaW5lcmAsY2xhc3M6YHJlbGF0aXZlIHctZnVsbCBvdmVyZmxvdy14LWF1dG9gfSxhZT13KHtfX25hbWU6YFRhYmxlYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsaSk9PihTKCksbihgZGl2YCxpZSxbcihgdGFibGVgLHsiZGF0YS1zbG90IjpgdGFibGVgLGNsYXNzOngoZihDKShgdy1mdWxsIGNhcHRpb24tYm90dG9tIHRleHQtc21gLHQuY2xhc3MpKX0sW3YoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMildKSl9fSksb2U9dyh7X19uYW1lOmBUYWJsZUJvZHlgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxyKT0+KFMoKSxuKGB0Ym9keWAseyJkYXRhLXNsb3QiOmB0YWJsZS1ib2R5YCxjbGFzczp4KGYoQykoYFsmX3RyOmxhc3QtY2hpbGRdOmJvcmRlci0wYCx0LmNsYXNzKSl9LFt2KGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxzZT13KHtfX25hbWU6YFRhYmxlQ2VsbGAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLHIpPT4oUygpLG4oYHRkYCx7ImRhdGEtc2xvdCI6YHRhYmxlLWNlbGxgLGNsYXNzOngoZihDKShgcC0yIGFsaWduLW1pZGRsZSB3aGl0ZXNwYWNlLW5vd3JhcCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMGAsdC5jbGFzcykpfSxbdihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksVD13KHtfX25hbWU6YFRhYmxlUm93YCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUscik9PihTKCksbihgdHJgLHsiZGF0YS1zbG90IjpgdGFibGUtcm93YCxjbGFzczp4KGYoQykoYGhvdmVyOmJnLW11dGVkLzUwIGRhdGEtW3N0YXRlPXNlbGVjdGVkXTpiZy1tdXRlZCBib3JkZXItYiB0cmFuc2l0aW9uLWNvbG9ycyBoYXMtYXJpYS1leHBhbmRlZDpiZy1tdXRlZC81MGAsdC5jbGFzcykpfSxbdihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksY2U9e2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xMGB9LGxlPXcoe19fbmFtZTpgVGFibGVFbXB0eWAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19LGNvbHNwYW46e2RlZmF1bHQ6MX19LHNldHVwKGUpe2xldCB0PWUsbj1jKHQsYGNsYXNzYCk7cmV0dXJuKGUsaSk9PihTKCksdShULG51bGwse2RlZmF1bHQ6YigoKT0+W28oc2UscmUoe2NsYXNzOmYoQykoYHAtNCB3aGl0ZXNwYWNlLW5vd3JhcCBhbGlnbi1taWRkbGUgdGV4dC1zbSB0ZXh0LWZvcmVncm91bmRgLHQuY2xhc3MpfSxmKG4pKSx7ZGVmYXVsdDpiKCgpPT5bcihgZGl2YCxjZSxbdihlLiRzbG90cyxgZGVmYXVsdGApXSldKSxfOjN9LDE2LFtgY2xhc3NgXSldKSxfOjN9KSl9fSksdWU9dyh7X19uYW1lOmBUYWJsZUhlYWRgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxyKT0+KFMoKSxuKGB0aGAseyJkYXRhLXNsb3QiOmB0YWJsZS1oZWFkYCxjbGFzczp4KGYoQykoYHRleHQtZm9yZWdyb3VuZCBoLTEwIHB4LTIgdGV4dC1sZWZ0IGFsaWduLW1pZGRsZSBmb250LW1lZGl1bSB3aGl0ZXNwYWNlLW5vd3JhcCBbJjpoYXMoW3JvbGU9Y2hlY2tib3hdKV06cHItMGAsdC5jbGFzcykpfSxbdihlLiRzbG90cyxgZGVmYXVsdGApXSwyKSl9fSksZGU9dyh7X19uYW1lOmBUYWJsZUhlYWRlcmAscHJvcHM6e2NsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihlLHIpPT4oUygpLG4oYHRoZWFkYCx7ImRhdGEtc2xvdCI6YHRhYmxlLWhlYWRlcmAsY2xhc3M6eChmKEMpKGBbJl90cl06Ym9yZGVyLWJgLHQuY2xhc3MpKX0sW3YoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pO2Z1bmN0aW9uIEUoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PWBmdW5jdGlvbmA/ZSh0KTplfWZ1bmN0aW9uIEQoZSx0KXtyZXR1cm4gbj0+e3Quc2V0U3RhdGUodD0+KHsuLi50LFtlXTpFKG4sdFtlXSl9KSl9fWZ1bmN0aW9uIE8oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBGdW5jdGlvbn1mdW5jdGlvbiBmZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmZS5ldmVyeShlPT50eXBlb2YgZT09YG51bWJlcmApfWZ1bmN0aW9uIHBlKGUsdCl7bGV0IG49W10scj1lPT57ZS5mb3JFYWNoKGU9PntuLnB1c2goZSk7bGV0IGk9dChlKTtpIT1udWxsJiZpLmxlbmd0aCYmcihpKX0pfTtyZXR1cm4gcihlKSxufWZ1bmN0aW9uIGsoZSx0LG4pe2xldCByPVtdLGk7cmV0dXJuIGE9PntsZXQgbztuLmtleSYmbi5kZWJ1ZyYmKG89RGF0ZS5ub3coKSk7bGV0IHM9ZShhKTtpZighKHMubGVuZ3RoIT09ci5sZW5ndGh8fHMuc29tZSgoZSx0KT0+clt0XSE9PWUpKSlyZXR1cm4gaTtyPXM7bGV0IGM7aWYobi5rZXkmJm4uZGVidWcmJihjPURhdGUubm93KCkpLGk9dCguLi5zKSxuPT1udWxsfHxuLm9uQ2hhbmdlPT1udWxsfHxuLm9uQ2hhbmdlKGkpLG4ua2V5JiZuLmRlYnVnJiZuIT1udWxsJiZuLmRlYnVnKCkpe2xldCBlPU1hdGgucm91bmQoKERhdGUubm93KCktbykqMTAwKS8xMDAsdD1NYXRoLnJvdW5kKChEYXRlLm5vdygpLWMpKjEwMCkvMTAwLHI9dC8xNixpPShlLHQpPT57Zm9yKGU9U3RyaW5nKGUpO2UubGVuZ3RoPHQ7KWU9YCBgK2U7cmV0dXJuIGV9O2NvbnNvbGUuaW5mbyhgJWPij7EgJHtpKHQsNSl9IC8ke2koZSw1KX0gbXNgLGAKICAgICAgICAgICAgZm9udC1zaXplOiAuNnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgIGNvbG9yOiBoc2woJHtNYXRoLm1heCgwLE1hdGgubWluKDEyMC0xMjAqciwxMjApKX1kZWcgMTAwJSAzMSUpO2Asbj8ua2V5KX1yZXR1cm4gaX19ZnVuY3Rpb24gQShlLHQsbixyKXtyZXR1cm57ZGVidWc6KCk9PmU/LmRlYnVnQWxsPz9lW3RdLGtleTohMSxvbkNoYW5nZTpyfX1mdW5jdGlvbiBtZShlLHQsbixyKXtsZXQgaT17aWQ6YCR7dC5pZH1fJHtuLmlkfWAscm93OnQsY29sdW1uOm4sZ2V0VmFsdWU6KCk9PnQuZ2V0VmFsdWUocikscmVuZGVyVmFsdWU6KCk9PmkuZ2V0VmFsdWUoKT8/ZS5vcHRpb25zLnJlbmRlckZhbGxiYWNrVmFsdWUsZ2V0Q29udGV4dDprKCgpPT5bZSxuLHQsaV0sKGUsdCxuLHIpPT4oe3RhYmxlOmUsY29sdW1uOnQscm93Om4sY2VsbDpyLGdldFZhbHVlOnIuZ2V0VmFsdWUscmVuZGVyVmFsdWU6ci5yZW5kZXJWYWx1ZX0pLEEoZS5vcHRpb25zLGBkZWJ1Z0NlbGxzYCxgY2VsbC5nZXRDb250ZXh0YCkpfTtyZXR1cm4gZS5fZmVhdHVyZXMuZm9yRWFjaChyPT57ci5jcmVhdGVDZWxsPT1udWxsfHxyLmNyZWF0ZUNlbGwoaSxuLHQsZSl9LHt9KSxpfWZ1bmN0aW9uIGhlKGUsdCxuLHIpe2xldCBpPXsuLi5lLl9nZXREZWZhdWx0Q29sdW1uRGVmKCksLi4udH0sYT1pLmFjY2Vzc29yS2V5LG89aS5pZD8/KGE/dHlwZW9mIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZUFsbD09YGZ1bmN0aW9uYD9hLnJlcGxhY2VBbGwoYC5gLGBfYCk6YS5yZXBsYWNlKC9cLi9nLGBfYCk6dm9pZCAwKT8/KHR5cGVvZiBpLmhlYWRlcj09YHN0cmluZ2A/aS5oZWFkZXI6dm9pZCAwKSxzO2lmKGkuYWNjZXNzb3JGbj9zPWkuYWNjZXNzb3JGbjphJiYocz1hLmluY2x1ZGVzKGAuYCk/ZT0+e2xldCB0PWU7Zm9yKGxldCBlIG9mIGEuc3BsaXQoYC5gKSl0PXQ/LltlXTtyZXR1cm4gdH06ZT0+ZVtpLmFjY2Vzc29yS2V5XSksIW8pdGhyb3cgRXJyb3IoKTtsZXQgYz17aWQ6YCR7U3RyaW5nKG8pfWAsYWNjZXNzb3JGbjpzLHBhcmVudDpyLGRlcHRoOm4sY29sdW1uRGVmOmksY29sdW1uczpbXSxnZXRGbGF0Q29sdW1uczprKCgpPT5bITBdLCgpPT5bYywuLi5jLmNvbHVtbnM/LmZsYXRNYXAoZT0+ZS5nZXRGbGF0Q29sdW1ucygpKV0sQShlLm9wdGlvbnMsYGRlYnVnQ29sdW1uc2AsYGNvbHVtbi5nZXRGbGF0Q29sdW1uc2ApKSxnZXRMZWFmQ29sdW1uczprKCgpPT5bZS5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sZT0+e3ZhciB0O3JldHVybih0PWMuY29sdW1ucykhPW51bGwmJnQubGVuZ3RoP2UoYy5jb2x1bW5zLmZsYXRNYXAoZT0+ZS5nZXRMZWFmQ29sdW1ucygpKSk6W2NdfSxBKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgY29sdW1uLmdldExlYWZDb2x1bW5zYCkpfTtmb3IobGV0IHQgb2YgZS5fZmVhdHVyZXMpdC5jcmVhdGVDb2x1bW49PW51bGx8fHQuY3JlYXRlQ29sdW1uKGMsZSk7cmV0dXJuIGN9dmFyIGo9YGRlYnVnSGVhZGVyc2A7ZnVuY3Rpb24gZ2UoZSx0LG4pe2xldCByPXtpZDpuLmlkPz90LmlkLGNvbHVtbjp0LGluZGV4Om4uaW5kZXgsaXNQbGFjZWhvbGRlcjohIW4uaXNQbGFjZWhvbGRlcixwbGFjZWhvbGRlcklkOm4ucGxhY2Vob2xkZXJJZCxkZXB0aDpuLmRlcHRoLHN1YkhlYWRlcnM6W10sY29sU3BhbjowLHJvd1NwYW46MCxoZWFkZXJHcm91cDpudWxsLGdldExlYWZIZWFkZXJzOigpPT57bGV0IGU9W10sdD1uPT57bi5zdWJIZWFkZXJzJiZuLnN1YkhlYWRlcnMubGVuZ3RoJiZuLnN1YkhlYWRlcnMubWFwKHQpLGUucHVzaChuKX07cmV0dXJuIHQociksZX0sZ2V0Q29udGV4dDooKT0+KHt0YWJsZTplLGhlYWRlcjpyLGNvbHVtbjp0fSl9O3JldHVybiBlLl9mZWF0dXJlcy5mb3JFYWNoKHQ9Pnt0LmNyZWF0ZUhlYWRlcj09bnVsbHx8dC5jcmVhdGVIZWFkZXIocixlKX0pLHJ9dmFyIF9lPXtjcmVhdGVUYWJsZTplPT57ZS5nZXRIZWFkZXJHcm91cHM9aygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdCxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5yaWdodF0sKHQsbixyLGkpPT57bGV0IGE9cj8ubWFwKGU9Pm4uZmluZCh0PT50LmlkPT09ZSkpLmZpbHRlcihCb29sZWFuKT8/W10sbz1pPy5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pPz9bXSxzPW4uZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlLmlkKSkmJiEoaSE9bnVsbCYmaS5pbmNsdWRlcyhlLmlkKSkpO3JldHVybiBNKHQsWy4uLmEsLi4ucywuLi5vXSxlKX0sQShlLm9wdGlvbnMsaixgZ2V0SGVhZGVyR3JvdXBzYCkpLGUuZ2V0Q2VudGVySGVhZGVyR3JvdXBzPWsoKCk9PltlLmdldEFsbENvbHVtbnMoKSxlLmdldFZpc2libGVMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnQsZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLCh0LG4scixpKT0+KG49bi5maWx0ZXIoZT0+IShyIT1udWxsJiZyLmluY2x1ZGVzKGUuaWQpKSYmIShpIT1udWxsJiZpLmluY2x1ZGVzKGUuaWQpKSksTSh0LG4sZSxgY2VudGVyYCkpLEEoZS5vcHRpb25zLGosYGdldENlbnRlckhlYWRlckdyb3Vwc2ApKSxlLmdldExlZnRIZWFkZXJHcm91cHM9aygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdF0sKHQsbixyKT0+TSh0LHI/Lm1hcChlPT5uLmZpbmQodD0+dC5pZD09PWUpKS5maWx0ZXIoQm9vbGVhbik/P1tdLGUsYGxlZnRgKSxBKGUub3B0aW9ucyxqLGBnZXRMZWZ0SGVhZGVyR3JvdXBzYCkpLGUuZ2V0UmlnaHRIZWFkZXJHcm91cHM9aygoKT0+W2UuZ2V0QWxsQ29sdW1ucygpLGUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcucmlnaHRdLCh0LG4scik9Pk0odCxyPy5tYXAoZT0+bi5maW5kKHQ9PnQuaWQ9PT1lKSkuZmlsdGVyKEJvb2xlYW4pPz9bXSxlLGByaWdodGApLEEoZS5vcHRpb25zLGosYGdldFJpZ2h0SGVhZGVyR3JvdXBzYCkpLGUuZ2V0Rm9vdGVyR3JvdXBzPWsoKCk9PltlLmdldEhlYWRlckdyb3VwcygpXSxlPT5bLi4uZV0ucmV2ZXJzZSgpLEEoZS5vcHRpb25zLGosYGdldEZvb3Rlckdyb3Vwc2ApKSxlLmdldExlZnRGb290ZXJHcm91cHM9aygoKT0+W2UuZ2V0TGVmdEhlYWRlckdyb3VwcygpXSxlPT5bLi4uZV0ucmV2ZXJzZSgpLEEoZS5vcHRpb25zLGosYGdldExlZnRGb290ZXJHcm91cHNgKSksZS5nZXRDZW50ZXJGb290ZXJHcm91cHM9aygoKT0+W2UuZ2V0Q2VudGVySGVhZGVyR3JvdXBzKCldLGU9PlsuLi5lXS5yZXZlcnNlKCksQShlLm9wdGlvbnMsaixgZ2V0Q2VudGVyRm9vdGVyR3JvdXBzYCkpLGUuZ2V0UmlnaHRGb290ZXJHcm91cHM9aygoKT0+W2UuZ2V0UmlnaHRIZWFkZXJHcm91cHMoKV0sZT0+Wy4uLmVdLnJldmVyc2UoKSxBKGUub3B0aW9ucyxqLGBnZXRSaWdodEZvb3Rlckdyb3Vwc2ApKSxlLmdldEZsYXRIZWFkZXJzPWsoKCk9PltlLmdldEhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxBKGUub3B0aW9ucyxqLGBnZXRGbGF0SGVhZGVyc2ApKSxlLmdldExlZnRGbGF0SGVhZGVycz1rKCgpPT5bZS5nZXRMZWZ0SGVhZGVyR3JvdXBzKCldLGU9PmUubWFwKGU9PmUuaGVhZGVycykuZmxhdCgpLEEoZS5vcHRpb25zLGosYGdldExlZnRGbGF0SGVhZGVyc2ApKSxlLmdldENlbnRlckZsYXRIZWFkZXJzPWsoKCk9PltlLmdldENlbnRlckhlYWRlckdyb3VwcygpXSxlPT5lLm1hcChlPT5lLmhlYWRlcnMpLmZsYXQoKSxBKGUub3B0aW9ucyxqLGBnZXRDZW50ZXJGbGF0SGVhZGVyc2ApKSxlLmdldFJpZ2h0RmxhdEhlYWRlcnM9aygoKT0+W2UuZ2V0UmlnaHRIZWFkZXJHcm91cHMoKV0sZT0+ZS5tYXAoZT0+ZS5oZWFkZXJzKS5mbGF0KCksQShlLm9wdGlvbnMsaixgZ2V0UmlnaHRGbGF0SGVhZGVyc2ApKSxlLmdldENlbnRlckxlYWZIZWFkZXJzPWsoKCk9PltlLmdldENlbnRlckZsYXRIZWFkZXJzKCldLGU9PmUuZmlsdGVyKGU9Pnt2YXIgdDtyZXR1cm4hKCh0PWUuc3ViSGVhZGVycykhPW51bGwmJnQubGVuZ3RoKX0pLEEoZS5vcHRpb25zLGosYGdldENlbnRlckxlYWZIZWFkZXJzYCkpLGUuZ2V0TGVmdExlYWZIZWFkZXJzPWsoKCk9PltlLmdldExlZnRGbGF0SGVhZGVycygpXSxlPT5lLmZpbHRlcihlPT57dmFyIHQ7cmV0dXJuISgodD1lLnN1YkhlYWRlcnMpIT1udWxsJiZ0Lmxlbmd0aCl9KSxBKGUub3B0aW9ucyxqLGBnZXRMZWZ0TGVhZkhlYWRlcnNgKSksZS5nZXRSaWdodExlYWZIZWFkZXJzPWsoKCk9PltlLmdldFJpZ2h0RmxhdEhlYWRlcnMoKV0sZT0+ZS5maWx0ZXIoZT0+e3ZhciB0O3JldHVybiEoKHQ9ZS5zdWJIZWFkZXJzKSE9bnVsbCYmdC5sZW5ndGgpfSksQShlLm9wdGlvbnMsaixgZ2V0UmlnaHRMZWFmSGVhZGVyc2ApKSxlLmdldExlYWZIZWFkZXJzPWsoKCk9PltlLmdldExlZnRIZWFkZXJHcm91cHMoKSxlLmdldENlbnRlckhlYWRlckdyb3VwcygpLGUuZ2V0UmlnaHRIZWFkZXJHcm91cHMoKV0sKGUsdCxuKT0+Wy4uLmVbMF0/LmhlYWRlcnM/P1tdLC4uLnRbMF0/LmhlYWRlcnM/P1tdLC4uLm5bMF0/LmhlYWRlcnM/P1tdXS5tYXAoZT0+ZS5nZXRMZWFmSGVhZGVycygpKS5mbGF0KCksQShlLm9wdGlvbnMsaixgZ2V0TGVhZkhlYWRlcnNgKSl9fTtmdW5jdGlvbiBNKGUsdCxuLHIpe2xldCBpPTAsYT1mdW5jdGlvbihlLHQpe3Q9PT12b2lkIDAmJih0PTEpLGk9TWF0aC5tYXgoaSx0KSxlLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZSgpKS5mb3JFYWNoKGU9Pnt2YXIgbjsobj1lLmNvbHVtbnMpIT1udWxsJiZuLmxlbmd0aCYmYShlLmNvbHVtbnMsdCsxKX0sMCl9O2EoZSk7bGV0IG89W10scz0oZSx0KT0+e2xldCBpPXtkZXB0aDp0LGlkOltyLGAke3R9YF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oYF9gKSxoZWFkZXJzOltdfSxhPVtdO2UuZm9yRWFjaChlPT57bGV0IG89Wy4uLmFdLnJldmVyc2UoKVswXSxzPWUuY29sdW1uLmRlcHRoPT09aS5kZXB0aCxjLGw9ITE7aWYocyYmZS5jb2x1bW4ucGFyZW50P2M9ZS5jb2x1bW4ucGFyZW50OihjPWUuY29sdW1uLGw9ITApLG8mJm8/LmNvbHVtbj09PWMpby5zdWJIZWFkZXJzLnB1c2goZSk7ZWxzZXtsZXQgaT1nZShuLGMse2lkOltyLHQsYy5pZCxlPy5pZF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oYF9gKSxpc1BsYWNlaG9sZGVyOmwscGxhY2Vob2xkZXJJZDpsP2Ake2EuZmlsdGVyKGU9PmUuY29sdW1uPT09YykubGVuZ3RofWA6dm9pZCAwLGRlcHRoOnQsaW5kZXg6YS5sZW5ndGh9KTtpLnN1YkhlYWRlcnMucHVzaChlKSxhLnB1c2goaSl9aS5oZWFkZXJzLnB1c2goZSksZS5oZWFkZXJHcm91cD1pfSksby5wdXNoKGkpLHQ+MCYmcyhhLHQtMSl9O3ModC5tYXAoKGUsdCk9PmdlKG4sZSx7ZGVwdGg6aSxpbmRleDp0fSkpLGktMSksby5yZXZlcnNlKCk7bGV0IGM9ZT0+ZS5maWx0ZXIoZT0+ZS5jb2x1bW4uZ2V0SXNWaXNpYmxlKCkpLm1hcChlPT57bGV0IHQ9MCxuPTAscj1bMF07ZS5zdWJIZWFkZXJzJiZlLnN1YkhlYWRlcnMubGVuZ3RoPyhyPVtdLGMoZS5zdWJIZWFkZXJzKS5mb3JFYWNoKGU9PntsZXR7Y29sU3BhbjpuLHJvd1NwYW46aX09ZTt0Kz1uLHIucHVzaChpKX0pKTp0PTE7bGV0IGk9TWF0aC5taW4oLi4ucik7cmV0dXJuIG4rPWksZS5jb2xTcGFuPXQsZS5yb3dTcGFuPW4se2NvbFNwYW46dCxyb3dTcGFuOm59fSk7cmV0dXJuIGMob1swXT8uaGVhZGVycz8/W10pLG99dmFyIHZlPShlLHQsbixyLGksYSxvKT0+e2xldCBzPXtpZDp0LGluZGV4OnIsb3JpZ2luYWw6bixkZXB0aDppLHBhcmVudElkOm8sX3ZhbHVlc0NhY2hlOnt9LF91bmlxdWVWYWx1ZXNDYWNoZTp7fSxnZXRWYWx1ZTp0PT57aWYocy5fdmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHMuX3ZhbHVlc0NhY2hlW3RdO2xldCBuPWUuZ2V0Q29sdW1uKHQpO2lmKG4hPW51bGwmJm4uYWNjZXNzb3JGbilyZXR1cm4gcy5fdmFsdWVzQ2FjaGVbdF09bi5hY2Nlc3NvckZuKHMub3JpZ2luYWwscikscy5fdmFsdWVzQ2FjaGVbdF19LGdldFVuaXF1ZVZhbHVlczp0PT57aWYocy5fdW5pcXVlVmFsdWVzQ2FjaGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHMuX3VuaXF1ZVZhbHVlc0NhY2hlW3RdO2xldCBuPWUuZ2V0Q29sdW1uKHQpO2lmKG4hPW51bGwmJm4uYWNjZXNzb3JGbilyZXR1cm4gbi5jb2x1bW5EZWYuZ2V0VW5pcXVlVmFsdWVzPyhzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XT1uLmNvbHVtbkRlZi5nZXRVbmlxdWVWYWx1ZXMocy5vcmlnaW5hbCxyKSxzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XSk6KHMuX3VuaXF1ZVZhbHVlc0NhY2hlW3RdPVtzLmdldFZhbHVlKHQpXSxzLl91bmlxdWVWYWx1ZXNDYWNoZVt0XSl9LHJlbmRlclZhbHVlOnQ9PnMuZ2V0VmFsdWUodCk/P2Uub3B0aW9ucy5yZW5kZXJGYWxsYmFja1ZhbHVlLHN1YlJvd3M6YT8/W10sZ2V0TGVhZlJvd3M6KCk9PnBlKHMuc3ViUm93cyxlPT5lLnN1YlJvd3MpLGdldFBhcmVudFJvdzooKT0+cy5wYXJlbnRJZD9lLmdldFJvdyhzLnBhcmVudElkLCEwKTp2b2lkIDAsZ2V0UGFyZW50Um93czooKT0+e2xldCBlPVtdLHQ9cztmb3IoOzspe2xldCBuPXQuZ2V0UGFyZW50Um93KCk7aWYoIW4pYnJlYWs7ZS5wdXNoKG4pLHQ9bn1yZXR1cm4gZS5yZXZlcnNlKCl9LGdldEFsbENlbGxzOmsoKCk9PltlLmdldEFsbExlYWZDb2x1bW5zKCldLHQ9PnQubWFwKHQ9Pm1lKGUscyx0LHQuaWQpKSxBKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0QWxsQ2VsbHNgKSksX2dldEFsbENlbGxzQnlDb2x1bW5JZDprKCgpPT5bcy5nZXRBbGxDZWxscygpXSxlPT5lLnJlZHVjZSgoZSx0KT0+KGVbdC5jb2x1bW4uaWRdPXQsZSkse30pLEEoZS5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBnZXRBbGxDZWxsc0J5Q29sdW1uSWRgKSl9O2ZvcihsZXQgdD0wO3Q8ZS5fZmVhdHVyZXMubGVuZ3RoO3QrKyl7bGV0IG49ZS5fZmVhdHVyZXNbdF07bj09bnVsbHx8bi5jcmVhdGVSb3c9PW51bGx8fG4uY3JlYXRlUm93KHMsZSl9cmV0dXJuIHN9LHllPXtjcmVhdGVDb2x1bW46KGUsdCk9PntlLl9nZXRGYWNldGVkUm93TW9kZWw9dC5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbCYmdC5vcHRpb25zLmdldEZhY2V0ZWRSb3dNb2RlbCh0LGUuaWQpLGUuZ2V0RmFjZXRlZFJvd01vZGVsPSgpPT5lLl9nZXRGYWNldGVkUm93TW9kZWw/ZS5fZ2V0RmFjZXRlZFJvd01vZGVsKCk6dC5nZXRQcmVGaWx0ZXJlZFJvd01vZGVsKCksZS5fZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcz10Lm9wdGlvbnMuZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcyYmdC5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXModCxlLmlkKSxlLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXM9KCk9PmUuX2dldEZhY2V0ZWRVbmlxdWVWYWx1ZXM/ZS5fZ2V0RmFjZXRlZFVuaXF1ZVZhbHVlcygpOm5ldyBNYXAsZS5fZ2V0RmFjZXRlZE1pbk1heFZhbHVlcz10Lm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyYmdC5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXModCxlLmlkKSxlLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXM9KCk9PntpZihlLl9nZXRGYWNldGVkTWluTWF4VmFsdWVzKXJldHVybiBlLl9nZXRGYWNldGVkTWluTWF4VmFsdWVzKCl9fX0sYmU9KGUsdCxuKT0+e3ZhciByLGk7bGV0IGE9bj09bnVsbHx8KHI9bi50b1N0cmluZygpKT09bnVsbD92b2lkIDA6ci50b0xvd2VyQ2FzZSgpO3JldHVybiEhKChpPWUuZ2V0VmFsdWUodCkpIT1udWxsJiYoaT1pLnRvU3RyaW5nKCkpIT1udWxsJiYoaT1pLnRvTG93ZXJDYXNlKCkpIT1udWxsJiZpLmluY2x1ZGVzKGEpKX07YmUuYXV0b1JlbW92ZT1lPT5QKGUpO3ZhciB4ZT0oZSx0LG4pPT57dmFyIHI7cmV0dXJuISEoKHI9ZS5nZXRWYWx1ZSh0KSkhPW51bGwmJihyPXIudG9TdHJpbmcoKSkhPW51bGwmJnIuaW5jbHVkZXMobikpfTt4ZS5hdXRvUmVtb3ZlPWU9PlAoZSk7dmFyIFNlPShlLHQsbik9Pnt2YXIgcjtyZXR1cm4oKHI9ZS5nZXRWYWx1ZSh0KSk9PW51bGx8fChyPXIudG9TdHJpbmcoKSk9PW51bGw/dm9pZCAwOnIudG9Mb3dlckNhc2UoKSk9PT1uPy50b0xvd2VyQ2FzZSgpfTtTZS5hdXRvUmVtb3ZlPWU9PlAoZSk7dmFyIENlPShlLHQsbik9PmUuZ2V0VmFsdWUodCk/LmluY2x1ZGVzKG4pO0NlLmF1dG9SZW1vdmU9ZT0+UChlKTt2YXIgd2U9KGUsdCxuKT0+IW4uc29tZShuPT57dmFyIHI7cmV0dXJuISgocj1lLmdldFZhbHVlKHQpKSE9bnVsbCYmci5pbmNsdWRlcyhuKSl9KTt3ZS5hdXRvUmVtb3ZlPWU9PlAoZSl8fCEoZSE9bnVsbCYmZS5sZW5ndGgpO3ZhciBUZT0oZSx0LG4pPT5uLnNvbWUobj0+ZS5nZXRWYWx1ZSh0KT8uaW5jbHVkZXMobikpO1RlLmF1dG9SZW1vdmU9ZT0+UChlKXx8IShlIT1udWxsJiZlLmxlbmd0aCk7dmFyIEVlPShlLHQsbik9PmUuZ2V0VmFsdWUodCk9PT1uO0VlLmF1dG9SZW1vdmU9ZT0+UChlKTt2YXIgRGU9KGUsdCxuKT0+ZS5nZXRWYWx1ZSh0KT09bjtEZS5hdXRvUmVtb3ZlPWU9PlAoZSk7dmFyIE9lPShlLHQsbik9PntsZXRbcixpXT1uLGE9ZS5nZXRWYWx1ZSh0KTtyZXR1cm4gYT49ciYmYTw9aX07T2UucmVzb2x2ZUZpbHRlclZhbHVlPWU9PntsZXRbdCxuXT1lLHI9dHlwZW9mIHQ9PWBudW1iZXJgP3Q6cGFyc2VGbG9hdCh0KSxpPXR5cGVvZiBuPT1gbnVtYmVyYD9uOnBhcnNlRmxvYXQobiksYT10PT09bnVsbHx8TnVtYmVyLmlzTmFOKHIpPy0xLzA6cixvPW49PT1udWxsfHxOdW1iZXIuaXNOYU4oaSk/MS8wOmk7aWYoYT5vKXtsZXQgZT1hO2E9byxvPWV9cmV0dXJuW2Esb119LE9lLmF1dG9SZW1vdmU9ZT0+UChlKXx8UChlWzBdKSYmUChlWzFdKTt2YXIgTj17aW5jbHVkZXNTdHJpbmc6YmUsaW5jbHVkZXNTdHJpbmdTZW5zaXRpdmU6eGUsZXF1YWxzU3RyaW5nOlNlLGFyckluY2x1ZGVzOkNlLGFyckluY2x1ZGVzQWxsOndlLGFyckluY2x1ZGVzU29tZTpUZSxlcXVhbHM6RWUsd2Vha0VxdWFsczpEZSxpbk51bWJlclJhbmdlOk9lfTtmdW5jdGlvbiBQKGUpe3JldHVybiBlPT1udWxsfHxlPT09YGB9dmFyIGtlPXtnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe2ZpbHRlckZuOmBhdXRvYH0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbkZpbHRlcnM6W10sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5GaWx0ZXJzQ2hhbmdlOkQoYGNvbHVtbkZpbHRlcnNgLGUpLGZpbHRlckZyb21MZWFmUm93czohMSxtYXhMZWFmUm93RmlsdGVyRGVwdGg6MTAwfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvRmlsdGVyRm49KCk9PntsZXQgbj10LmdldENvcmVSb3dNb2RlbCgpLmZsYXRSb3dzWzBdPy5nZXRWYWx1ZShlLmlkKTtyZXR1cm4gdHlwZW9mIG49PWBzdHJpbmdgP04uaW5jbHVkZXNTdHJpbmc6dHlwZW9mIG49PWBudW1iZXJgP04uaW5OdW1iZXJSYW5nZTp0eXBlb2Ygbj09YGJvb2xlYW5gfHx0eXBlb2Ygbj09YG9iamVjdGAmJm4/Ti5lcXVhbHM6QXJyYXkuaXNBcnJheShuKT9OLmFyckluY2x1ZGVzOk4ud2Vha0VxdWFsc30sZS5nZXRGaWx0ZXJGbj0oKT0+TyhlLmNvbHVtbkRlZi5maWx0ZXJGbik/ZS5jb2x1bW5EZWYuZmlsdGVyRm46ZS5jb2x1bW5EZWYuZmlsdGVyRm49PT1gYXV0b2A/ZS5nZXRBdXRvRmlsdGVyRm4oKTp0Lm9wdGlvbnMuZmlsdGVyRm5zPy5bZS5jb2x1bW5EZWYuZmlsdGVyRm5dPz9OW2UuY29sdW1uRGVmLmZpbHRlckZuXSxlLmdldENhbkZpbHRlcj0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZUNvbHVtbkZpbHRlcj8/ITApJiYodC5vcHRpb25zLmVuYWJsZUNvbHVtbkZpbHRlcnM/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVGaWx0ZXJzPz8hMCkmJiEhZS5hY2Nlc3NvckZuLGUuZ2V0SXNGaWx0ZXJlZD0oKT0+ZS5nZXRGaWx0ZXJJbmRleCgpPi0xLGUuZ2V0RmlsdGVyVmFsdWU9KCk9Pnt2YXIgbjtyZXR1cm4obj10LmdldFN0YXRlKCkuY29sdW1uRmlsdGVycyk9PW51bGx8fChuPW4uZmluZCh0PT50LmlkPT09ZS5pZCkpPT1udWxsP3ZvaWQgMDpuLnZhbHVlfSxlLmdldEZpbHRlckluZGV4PSgpPT50LmdldFN0YXRlKCkuY29sdW1uRmlsdGVycz8uZmluZEluZGV4KHQ9PnQuaWQ9PT1lLmlkKT8/LTEsZS5zZXRGaWx0ZXJWYWx1ZT1uPT57dC5zZXRDb2x1bW5GaWx0ZXJzKHQ9PntsZXQgcj1lLmdldEZpbHRlckZuKCksaT10Py5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxhPUUobixpP2kudmFsdWU6dm9pZCAwKTtpZihBZShyLGEsZSkpcmV0dXJuIHQ/LmZpbHRlcih0PT50LmlkIT09ZS5pZCk/P1tdO2xldCBvPXtpZDplLmlkLHZhbHVlOmF9O3JldHVybiBpP3Q/Lm1hcCh0PT50LmlkPT09ZS5pZD9vOnQpPz9bXTp0IT1udWxsJiZ0Lmxlbmd0aD9bLi4udCxvXTpbb119KX19LGNyZWF0ZVJvdzooZSx0KT0+e2UuY29sdW1uRmlsdGVycz17fSxlLmNvbHVtbkZpbHRlcnNNZXRhPXt9fSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5GaWx0ZXJzPXQ9PntsZXQgbj1lLmdldEFsbExlYWZDb2x1bW5zKCk7ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZT09bnVsbHx8ZS5vcHRpb25zLm9uQ29sdW1uRmlsdGVyc0NoYW5nZShlPT5FKHQsZSk/LmZpbHRlcihlPT57bGV0IHQ9bi5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtyZXR1cm4hKHQmJkFlKHQuZ2V0RmlsdGVyRm4oKSxlLnZhbHVlLHQpKX0pKX0sZS5yZXNldENvbHVtbkZpbHRlcnM9dD0+e2Uuc2V0Q29sdW1uRmlsdGVycyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5jb2x1bW5GaWx0ZXJzPz9bXSl9LGUuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbD0oKT0+ZS5nZXRDb3JlUm93TW9kZWwoKSxlLmdldEZpbHRlcmVkUm93TW9kZWw9KCk9PighZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbCYmZS5vcHRpb25zLmdldEZpbHRlcmVkUm93TW9kZWwmJihlLl9nZXRGaWx0ZXJlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRGaWx0ZXJlZFJvd01vZGVsKGUpKSxlLm9wdGlvbnMubWFudWFsRmlsdGVyaW5nfHwhZS5fZ2V0RmlsdGVyZWRSb3dNb2RlbD9lLmdldFByZUZpbHRlcmVkUm93TW9kZWwoKTplLl9nZXRGaWx0ZXJlZFJvd01vZGVsKCkpfX07ZnVuY3Rpb24gQWUoZSx0LG4pe3JldHVybihlJiZlLmF1dG9SZW1vdmU/ZS5hdXRvUmVtb3ZlKHQsbik6ITEpfHx0PT09dm9pZCAwfHx0eXBlb2YgdD09YHN0cmluZ2AmJiF0fXZhciBGPXtzdW06KGUsdCxuKT0+bi5yZWR1Y2UoKHQsbik9PntsZXQgcj1uLmdldFZhbHVlKGUpO3JldHVybiB0Kyh0eXBlb2Ygcj09YG51bWJlcmA/cjowKX0sMCksbWluOihlLHQsbik9PntsZXQgcjtyZXR1cm4gbi5mb3JFYWNoKHQ9PntsZXQgbj10LmdldFZhbHVlKGUpO24hPW51bGwmJihyPm58fHI9PT12b2lkIDAmJm4+PW4pJiYocj1uKX0pLHJ9LG1heDooZSx0LG4pPT57bGV0IHI7cmV0dXJuIG4uZm9yRWFjaCh0PT57bGV0IG49dC5nZXRWYWx1ZShlKTtuIT1udWxsJiYocjxufHxyPT09dm9pZCAwJiZuPj1uKSYmKHI9bil9KSxyfSxleHRlbnQ6KGUsdCxuKT0+e2xldCByLGk7cmV0dXJuIG4uZm9yRWFjaCh0PT57bGV0IG49dC5nZXRWYWx1ZShlKTtuIT1udWxsJiYocj09PXZvaWQgMD9uPj1uJiYocj1pPW4pOihyPm4mJihyPW4pLGk8biYmKGk9bikpKX0pLFtyLGldfSxtZWFuOihlLHQpPT57bGV0IG49MCxyPTA7aWYodC5mb3JFYWNoKHQ9PntsZXQgaT10LmdldFZhbHVlKGUpO2khPW51bGwmJihpPStpKT49aSYmKCsrbixyKz1pKX0pLG4pcmV0dXJuIHIvbn0sbWVkaWFuOihlLHQpPT57aWYoIXQubGVuZ3RoKXJldHVybjtsZXQgbj10Lm1hcCh0PT50LmdldFZhbHVlKGUpKTtpZighZmUobikpcmV0dXJuO2lmKG4ubGVuZ3RoPT09MSlyZXR1cm4gblswXTtsZXQgcj1NYXRoLmZsb29yKG4ubGVuZ3RoLzIpLGk9bi5zb3J0KChlLHQpPT5lLXQpO3JldHVybiBuLmxlbmd0aCUyPT0wPyhpW3ItMV0raVtyXSkvMjppW3JdfSx1bmlxdWU6KGUsdCk9PkFycmF5LmZyb20obmV3IFNldCh0Lm1hcCh0PT50LmdldFZhbHVlKGUpKSkudmFsdWVzKCkpLHVuaXF1ZUNvdW50OihlLHQpPT5uZXcgU2V0KHQubWFwKHQ9PnQuZ2V0VmFsdWUoZSkpKS5zaXplLGNvdW50OihlLHQpPT50Lmxlbmd0aH0samU9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9Pih7YWdncmVnYXRlZENlbGw6ZT0+e3ZhciB0O3JldHVybigodD1lLmdldFZhbHVlKCkpPT1udWxsfHx0LnRvU3RyaW5nPT1udWxsP3ZvaWQgMDp0LnRvU3RyaW5nKCkpPz9udWxsfSxhZ2dyZWdhdGlvbkZuOmBhdXRvYH0pLGdldEluaXRpYWxTdGF0ZTplPT4oe2dyb3VwaW5nOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uR3JvdXBpbmdDaGFuZ2U6RChgZ3JvdXBpbmdgLGUpLGdyb3VwZWRDb2x1bW5Nb2RlOmByZW9yZGVyYH0pLGNyZWF0ZUNvbHVtbjooZSx0KT0+e2UudG9nZ2xlR3JvdXBpbmc9KCk9Pnt0LnNldEdyb3VwaW5nKHQ9PnQhPW51bGwmJnQuaW5jbHVkZXMoZS5pZCk/dC5maWx0ZXIodD0+dCE9PWUuaWQpOlsuLi50Pz9bXSxlLmlkXSl9LGUuZ2V0Q2FuR3JvdXA9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVHcm91cGluZz8/ITApJiYodC5vcHRpb25zLmVuYWJsZUdyb3VwaW5nPz8hMCkmJighIWUuYWNjZXNzb3JGbnx8ISFlLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKSxlLmdldElzR3JvdXBlZD0oKT0+dC5nZXRTdGF0ZSgpLmdyb3VwaW5nPy5pbmNsdWRlcyhlLmlkKSxlLmdldEdyb3VwZWRJbmRleD0oKT0+dC5nZXRTdGF0ZSgpLmdyb3VwaW5nPy5pbmRleE9mKGUuaWQpLGUuZ2V0VG9nZ2xlR3JvdXBpbmdIYW5kbGVyPSgpPT57bGV0IHQ9ZS5nZXRDYW5Hcm91cCgpO3JldHVybigpPT57dCYmZS50b2dnbGVHcm91cGluZygpfX0sZS5nZXRBdXRvQWdncmVnYXRpb25Gbj0oKT0+e2xldCBuPXQuZ2V0Q29yZVJvd01vZGVsKCkuZmxhdFJvd3NbMF0/LmdldFZhbHVlKGUuaWQpO2lmKHR5cGVvZiBuPT1gbnVtYmVyYClyZXR1cm4gRi5zdW07aWYoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pPT09YFtvYmplY3QgRGF0ZV1gKXJldHVybiBGLmV4dGVudH0sZS5nZXRBZ2dyZWdhdGlvbkZuPSgpPT57aWYoIWUpdGhyb3cgRXJyb3IoKTtyZXR1cm4gTyhlLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuKT9lLmNvbHVtbkRlZi5hZ2dyZWdhdGlvbkZuOmUuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm49PT1gYXV0b2A/ZS5nZXRBdXRvQWdncmVnYXRpb25GbigpOnQub3B0aW9ucy5hZ2dyZWdhdGlvbkZucz8uW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dPz9GW2UuY29sdW1uRGVmLmFnZ3JlZ2F0aW9uRm5dfX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0R3JvdXBpbmc9dD0+ZS5vcHRpb25zLm9uR3JvdXBpbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkdyb3VwaW5nQ2hhbmdlKHQpLGUucmVzZXRHcm91cGluZz10PT57ZS5zZXRHcm91cGluZyh0P1tdOmUuaW5pdGlhbFN0YXRlPy5ncm91cGluZz8/W10pfSxlLmdldFByZUdyb3VwZWRSb3dNb2RlbD0oKT0+ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCksZS5nZXRHcm91cGVkUm93TW9kZWw9KCk9PighZS5fZ2V0R3JvdXBlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0R3JvdXBlZFJvd01vZGVsJiYoZS5fZ2V0R3JvdXBlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRHcm91cGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxHcm91cGluZ3x8IWUuX2dldEdyb3VwZWRSb3dNb2RlbD9lLmdldFByZUdyb3VwZWRSb3dNb2RlbCgpOmUuX2dldEdyb3VwZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PiEhZS5ncm91cGluZ0NvbHVtbklkLGUuZ2V0R3JvdXBpbmdWYWx1ZT1uPT57aWYoZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZS5oYXNPd25Qcm9wZXJ0eShuKSlyZXR1cm4gZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXTtsZXQgcj10LmdldENvbHVtbihuKTtyZXR1cm4gciE9bnVsbCYmci5jb2x1bW5EZWYuZ2V0R3JvdXBpbmdWYWx1ZT8oZS5fZ3JvdXBpbmdWYWx1ZXNDYWNoZVtuXT1yLmNvbHVtbkRlZi5nZXRHcm91cGluZ1ZhbHVlKGUub3JpZ2luYWwpLGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGVbbl0pOmUuZ2V0VmFsdWUobil9LGUuX2dyb3VwaW5nVmFsdWVzQ2FjaGU9e319LGNyZWF0ZUNlbGw6KGUsdCxuLHIpPT57ZS5nZXRJc0dyb3VwZWQ9KCk9PnQuZ2V0SXNHcm91cGVkKCkmJnQuaWQ9PT1uLmdyb3VwaW5nQ29sdW1uSWQsZS5nZXRJc1BsYWNlaG9sZGVyPSgpPT4hZS5nZXRJc0dyb3VwZWQoKSYmdC5nZXRJc0dyb3VwZWQoKSxlLmdldElzQWdncmVnYXRlZD0oKT0+e3ZhciB0O3JldHVybiFlLmdldElzR3JvdXBlZCgpJiYhZS5nZXRJc1BsYWNlaG9sZGVyKCkmJiEhKCh0PW4uc3ViUm93cykhPW51bGwmJnQubGVuZ3RoKX19fTtmdW5jdGlvbiBNZShlLHQsbil7aWYoISh0IT1udWxsJiZ0Lmxlbmd0aCl8fCFuKXJldHVybiBlO2xldCByPWUuZmlsdGVyKGU9PiF0LmluY2x1ZGVzKGUuaWQpKTtyZXR1cm4gbj09PWByZW1vdmVgP3I6Wy4uLnQubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSwuLi5yXX12YXIgTmU9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtbk9yZGVyOltdLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uQ29sdW1uT3JkZXJDaGFuZ2U6RChgY29sdW1uT3JkZXJgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRJbmRleD1rKGU9PltWKHQsZSldLHQ9PnQuZmluZEluZGV4KHQ9PnQuaWQ9PT1lLmlkKSxBKHQub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0SW5kZXhgKSksZS5nZXRJc0ZpcnN0Q29sdW1uPW49PlYodCxuKVswXT8uaWQ9PT1lLmlkLGUuZ2V0SXNMYXN0Q29sdW1uPW49PntsZXQgcj1WKHQsbik7cmV0dXJuIHJbci5sZW5ndGgtMV0/LmlkPT09ZS5pZH19LGNyZWF0ZVRhYmxlOmU9PntlLnNldENvbHVtbk9yZGVyPXQ9PmUub3B0aW9ucy5vbkNvbHVtbk9yZGVyQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5PcmRlckNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uT3JkZXI9dD0+e2Uuc2V0Q29sdW1uT3JkZXIodD9bXTplLmluaXRpYWxTdGF0ZS5jb2x1bW5PcmRlcj8/W10pfSxlLl9nZXRPcmRlckNvbHVtbnNGbj1rKCgpPT5bZS5nZXRTdGF0ZSgpLmNvbHVtbk9yZGVyLGUuZ2V0U3RhdGUoKS5ncm91cGluZyxlLm9wdGlvbnMuZ3JvdXBlZENvbHVtbk1vZGVdLChlLHQsbik9PnI9PntsZXQgaT1bXTtpZighKGUhPW51bGwmJmUubGVuZ3RoKSlpPXI7ZWxzZXtsZXQgdD1bLi4uZV0sbj1bLi4ucl07Zm9yKDtuLmxlbmd0aCYmdC5sZW5ndGg7KXtsZXQgZT10LnNoaWZ0KCkscj1uLmZpbmRJbmRleCh0PT50LmlkPT09ZSk7cj4tMSYmaS5wdXNoKG4uc3BsaWNlKHIsMSlbMF0pfWk9Wy4uLmksLi4ubl19cmV0dXJuIE1lKGksdCxuKX0sQShlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBfZ2V0T3JkZXJDb2x1bW5zRm5gKSl9fSxJPSgpPT4oe2xlZnQ6W10scmlnaHQ6W119KSxQZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uUGlubmluZzpJKCksLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5QaW5uaW5nQ2hhbmdlOkQoYGNvbHVtblBpbm5pbmdgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5waW49bj0+e2xldCByPWUuZ2V0TGVhZkNvbHVtbnMoKS5tYXAoZT0+ZS5pZCkuZmlsdGVyKEJvb2xlYW4pO3Quc2V0Q29sdW1uUGlubmluZyhlPT5uPT09YHJpZ2h0YD97bGVmdDooZT8ubGVmdD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKSxyaWdodDpbLi4uKGU/LnJpZ2h0Pz9bXSkuZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlKSkpLC4uLnJdfTpuPT09YGxlZnRgP3tsZWZ0OlsuLi4oZT8ubGVmdD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKSwuLi5yXSxyaWdodDooZT8ucmlnaHQ/P1tdKS5maWx0ZXIoZT0+IShyIT1udWxsJiZyLmluY2x1ZGVzKGUpKSl9OntsZWZ0OihlPy5sZWZ0Pz9bXSkuZmlsdGVyKGU9PiEociE9bnVsbCYmci5pbmNsdWRlcyhlKSkpLHJpZ2h0OihlPy5yaWdodD8/W10pLmZpbHRlcihlPT4hKHIhPW51bGwmJnIuaW5jbHVkZXMoZSkpKX0pfSxlLmdldENhblBpbj0oKT0+ZS5nZXRMZWFmQ29sdW1ucygpLnNvbWUoZT0+KGUuY29sdW1uRGVmLmVuYWJsZVBpbm5pbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVDb2x1bW5QaW5uaW5nPz90Lm9wdGlvbnMuZW5hYmxlUGlubmluZz8/ITApKSxlLmdldElzUGlubmVkPSgpPT57bGV0IG49ZS5nZXRMZWFmQ29sdW1ucygpLm1hcChlPT5lLmlkKSx7bGVmdDpyLHJpZ2h0Oml9PXQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLGE9bi5zb21lKGU9PnI/LmluY2x1ZGVzKGUpKSxvPW4uc29tZShlPT5pPy5pbmNsdWRlcyhlKSk7cmV0dXJuIGE/YGxlZnRgOm8/YHJpZ2h0YDohMX0sZS5nZXRQaW5uZWRJbmRleD0oKT0+e3ZhciBuO2xldCByPWUuZ2V0SXNQaW5uZWQoKTtyZXR1cm4gcj8oKG49dC5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcpPT1udWxsfHwobj1uW3JdKT09bnVsbD92b2lkIDA6bi5pbmRleE9mKGUuaWQpKT8/LTE6MH19LGNyZWF0ZVJvdzooZSx0KT0+e2UuZ2V0Q2VudGVyVmlzaWJsZUNlbGxzPWsoKCk9PltlLl9nZXRBbGxWaXNpYmxlQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0LG4pPT57bGV0IHI9Wy4uLnQ/P1tdLC4uLm4/P1tdXTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaW5jbHVkZXMoZS5jb2x1bW4uaWQpKX0sQSh0Lm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldENlbnRlclZpc2libGVDZWxsc2ApKSxlLmdldExlZnRWaXNpYmxlQ2VsbHM9aygoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLmxlZnRdLChlLHQpPT4odD8/W10pLm1hcCh0PT5lLmZpbmQoZT0+ZS5jb2x1bW4uaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246YGxlZnRgfSkpLEEodC5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBnZXRMZWZ0VmlzaWJsZUNlbGxzYCkpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHM9aygoKT0+W2UuX2dldEFsbFZpc2libGVDZWxscygpLHQuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KHQ/P1tdKS5tYXAodD0+ZS5maW5kKGU9PmUuY29sdW1uLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKS5tYXAoZT0+KHsuLi5lLHBvc2l0aW9uOmByaWdodGB9KSksQSh0Lm9wdGlvbnMsYGRlYnVnUm93c2AsYGdldFJpZ2h0VmlzaWJsZUNlbGxzYCkpfSxjcmVhdGVUYWJsZTplPT57ZS5zZXRDb2x1bW5QaW5uaW5nPXQ9PmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkNvbHVtblBpbm5pbmdDaGFuZ2UodCksZS5yZXNldENvbHVtblBpbm5pbmc9dD0+ZS5zZXRDb2x1bW5QaW5uaW5nKHQ/SSgpOmUuaW5pdGlhbFN0YXRlPy5jb2x1bW5QaW5uaW5nPz9JKCkpLGUuZ2V0SXNTb21lQ29sdW1uc1Bpbm5lZD10PT57bGV0IG49ZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmc7cmV0dXJuIHQ/ISFuW3RdPy5sZW5ndGg6ISEobi5sZWZ0Py5sZW5ndGh8fG4ucmlnaHQ/Lmxlbmd0aCl9LGUuZ2V0TGVmdExlYWZDb2x1bW5zPWsoKCk9PltlLmdldEFsbExlYWZDb2x1bW5zKCksZS5nZXRTdGF0ZSgpLmNvbHVtblBpbm5pbmcubGVmdF0sKGUsdCk9Pih0Pz9bXSkubWFwKHQ9PmUuZmluZChlPT5lLmlkPT09dCkpLmZpbHRlcihCb29sZWFuKSxBKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0TGVmdExlYWZDb2x1bW5zYCkpLGUuZ2V0UmlnaHRMZWFmQ29sdW1ucz1rKCgpPT5bZS5nZXRBbGxMZWFmQ29sdW1ucygpLGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0KT0+KHQ/P1tdKS5tYXAodD0+ZS5maW5kKGU9PmUuaWQ9PT10KSkuZmlsdGVyKEJvb2xlYW4pLEEoZS5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRSaWdodExlYWZDb2x1bW5zYCkpLGUuZ2V0Q2VudGVyTGVhZkNvbHVtbnM9aygoKT0+W2UuZ2V0QWxsTGVhZkNvbHVtbnMoKSxlLmdldFN0YXRlKCkuY29sdW1uUGlubmluZy5sZWZ0LGUuZ2V0U3RhdGUoKS5jb2x1bW5QaW5uaW5nLnJpZ2h0XSwoZSx0LG4pPT57bGV0IHI9Wy4uLnQ/P1tdLC4uLm4/P1tdXTtyZXR1cm4gZS5maWx0ZXIoZT0+IXIuaW5jbHVkZXMoZS5pZCkpfSxBKGUub3B0aW9ucyxgZGVidWdDb2x1bW5zYCxgZ2V0Q2VudGVyTGVhZkNvbHVtbnNgKSl9fTtmdW5jdGlvbiBGZShlKXtyZXR1cm4gZXx8KHR5cGVvZiBkb2N1bWVudDxgdWA/ZG9jdW1lbnQ6bnVsbCl9dmFyIEw9e3NpemU6MTUwLG1pblNpemU6MjAsbWF4U2l6ZToyKio1My0xfSxSPSgpPT4oe3N0YXJ0T2Zmc2V0Om51bGwsc3RhcnRTaXplOm51bGwsZGVsdGFPZmZzZXQ6bnVsbCxkZWx0YVBlcmNlbnRhZ2U6bnVsbCxpc1Jlc2l6aW5nQ29sdW1uOiExLGNvbHVtblNpemluZ1N0YXJ0OltdfSksSWU9e2dldERlZmF1bHRDb2x1bW5EZWY6KCk9PkwsZ2V0SW5pdGlhbFN0YXRlOmU9Pih7Y29sdW1uU2l6aW5nOnt9LGNvbHVtblNpemluZ0luZm86UigpLC4uLmV9KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe2NvbHVtblJlc2l6ZU1vZGU6YG9uRW5kYCxjb2x1bW5SZXNpemVEaXJlY3Rpb246YGx0cmAsb25Db2x1bW5TaXppbmdDaGFuZ2U6RChgY29sdW1uU2l6aW5nYCxlKSxvbkNvbHVtblNpemluZ0luZm9DaGFuZ2U6RChgY29sdW1uU2l6aW5nSW5mb2AsZSl9KSxjcmVhdGVDb2x1bW46KGUsdCk9PntlLmdldFNpemU9KCk9PntsZXQgbj10LmdldFN0YXRlKCkuY29sdW1uU2l6aW5nW2UuaWRdO3JldHVybiBNYXRoLm1pbihNYXRoLm1heChlLmNvbHVtbkRlZi5taW5TaXplPz9MLm1pblNpemUsbj8/ZS5jb2x1bW5EZWYuc2l6ZT8/TC5zaXplKSxlLmNvbHVtbkRlZi5tYXhTaXplPz9MLm1heFNpemUpfSxlLmdldFN0YXJ0PWsoZT0+W2UsVih0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKDAsZS5nZXRJbmRleCh0KSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLEEodC5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRTdGFydGApKSxlLmdldEFmdGVyPWsoZT0+W2UsVih0LGUpLHQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmddLCh0LG4pPT5uLnNsaWNlKGUuZ2V0SW5kZXgodCkrMSkucmVkdWNlKChlLHQpPT5lK3QuZ2V0U2l6ZSgpLDApLEEodC5vcHRpb25zLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBZnRlcmApKSxlLnJlc2V0U2l6ZT0oKT0+e3Quc2V0Q29sdW1uU2l6aW5nKHQ9PntsZXR7W2UuaWRdOm4sLi4ucn09dDtyZXR1cm4gcn0pfSxlLmdldENhblJlc2l6ZT0oKT0+KGUuY29sdW1uRGVmLmVuYWJsZVJlc2l6aW5nPz8hMCkmJih0Lm9wdGlvbnMuZW5hYmxlQ29sdW1uUmVzaXppbmc/PyEwKSxlLmdldElzUmVzaXppbmc9KCk9PnQuZ2V0U3RhdGUoKS5jb2x1bW5TaXppbmdJbmZvLmlzUmVzaXppbmdDb2x1bW49PT1lLmlkfSxjcmVhdGVIZWFkZXI6KGUsdCk9PntlLmdldFNpemU9KCk9PntsZXQgdD0wLG49ZT0+e2Uuc3ViSGVhZGVycy5sZW5ndGg/ZS5zdWJIZWFkZXJzLmZvckVhY2gobik6dCs9ZS5jb2x1bW4uZ2V0U2l6ZSgpPz8wfTtyZXR1cm4gbihlKSx0fSxlLmdldFN0YXJ0PSgpPT57aWYoZS5pbmRleD4wKXtsZXQgdD1lLmhlYWRlckdyb3VwLmhlYWRlcnNbZS5pbmRleC0xXTtyZXR1cm4gdC5nZXRTdGFydCgpK3QuZ2V0U2l6ZSgpfXJldHVybiAwfSxlLmdldFJlc2l6ZUhhbmRsZXI9bj0+e2xldCByPXQuZ2V0Q29sdW1uKGUuY29sdW1uLmlkKSxpPXI/LmdldENhblJlc2l6ZSgpO3JldHVybiBhPT57aWYoIXJ8fCFpfHwoYS5wZXJzaXN0PT1udWxsfHxhLnBlcnNpc3QoKSxCKGEpJiZhLnRvdWNoZXMmJmEudG91Y2hlcy5sZW5ndGg+MSkpcmV0dXJuO2xldCBvPWUuZ2V0U2l6ZSgpLHM9ZT9lLmdldExlYWZIZWFkZXJzKCkubWFwKGU9PltlLmNvbHVtbi5pZCxlLmNvbHVtbi5nZXRTaXplKCldKTpbW3IuaWQsci5nZXRTaXplKCldXSxjPUIoYSk/TWF0aC5yb3VuZChhLnRvdWNoZXNbMF0uY2xpZW50WCk6YS5jbGllbnRYLGw9e30sdT0oZSxuKT0+e3R5cGVvZiBuPT1gbnVtYmVyYCYmKHQuc2V0Q29sdW1uU2l6aW5nSW5mbyhlPT57bGV0IHI9dC5vcHRpb25zLmNvbHVtblJlc2l6ZURpcmVjdGlvbj09PWBydGxgPy0xOjEsaT0obi0oZT8uc3RhcnRPZmZzZXQ/PzApKSpyLGE9TWF0aC5tYXgoaS8oZT8uc3RhcnRTaXplPz8wKSwtLjk5OTk5OSk7cmV0dXJuIGUuY29sdW1uU2l6aW5nU3RhcnQuZm9yRWFjaChlPT57bGV0W3Qsbl09ZTtsW3RdPU1hdGgucm91bmQoTWF0aC5tYXgobituKmEsMCkqMTAwKS8xMDB9KSx7Li4uZSxkZWx0YU9mZnNldDppLGRlbHRhUGVyY2VudGFnZTphfX0pLCh0Lm9wdGlvbnMuY29sdW1uUmVzaXplTW9kZT09PWBvbkNoYW5nZWB8fGU9PT1gZW5kYCkmJnQuc2V0Q29sdW1uU2l6aW5nKGU9Pih7Li4uZSwuLi5sfSkpKX0sZD1lPT51KGBtb3ZlYCxlKSxmPWU9Pnt1KGBlbmRgLGUpLHQuc2V0Q29sdW1uU2l6aW5nSW5mbyhlPT4oey4uLmUsaXNSZXNpemluZ0NvbHVtbjohMSxzdGFydE9mZnNldDpudWxsLHN0YXJ0U2l6ZTpudWxsLGRlbHRhT2Zmc2V0Om51bGwsZGVsdGFQZXJjZW50YWdlOm51bGwsY29sdW1uU2l6aW5nU3RhcnQ6W119KSl9LHA9RmUobiksbT17bW92ZUhhbmRsZXI6ZT0+ZChlLmNsaWVudFgpLHVwSGFuZGxlcjplPT57cD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgbW91c2Vtb3ZlYCxtLm1vdmVIYW5kbGVyKSxwPy5yZW1vdmVFdmVudExpc3RlbmVyKGBtb3VzZXVwYCxtLnVwSGFuZGxlciksZihlLmNsaWVudFgpfX0saD17bW92ZUhhbmRsZXI6ZT0+KGUuY2FuY2VsYWJsZSYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpKSxkKGUudG91Y2hlc1swXS5jbGllbnRYKSwhMSksdXBIYW5kbGVyOmU9PntwPy5yZW1vdmVFdmVudExpc3RlbmVyKGB0b3VjaG1vdmVgLGgubW92ZUhhbmRsZXIpLHA/LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRvdWNoZW5kYCxoLnVwSGFuZGxlciksZS5jYW5jZWxhYmxlJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpLGYoZS50b3VjaGVzWzBdPy5jbGllbnRYKX19LGc9TGUoKT97cGFzc2l2ZTohMX06ITE7QihhKT8ocD8uYWRkRXZlbnRMaXN0ZW5lcihgdG91Y2htb3ZlYCxoLm1vdmVIYW5kbGVyLGcpLHA/LmFkZEV2ZW50TGlzdGVuZXIoYHRvdWNoZW5kYCxoLnVwSGFuZGxlcixnKSk6KHA/LmFkZEV2ZW50TGlzdGVuZXIoYG1vdXNlbW92ZWAsbS5tb3ZlSGFuZGxlcixnKSxwPy5hZGRFdmVudExpc3RlbmVyKGBtb3VzZXVwYCxtLnVwSGFuZGxlcixnKSksdC5zZXRDb2x1bW5TaXppbmdJbmZvKGU9Pih7Li4uZSxzdGFydE9mZnNldDpjLHN0YXJ0U2l6ZTpvLGRlbHRhT2Zmc2V0OjAsZGVsdGFQZXJjZW50YWdlOjAsY29sdW1uU2l6aW5nU3RhcnQ6cyxpc1Jlc2l6aW5nQ29sdW1uOnIuaWR9KSl9fX0sY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Q29sdW1uU2l6aW5nPXQ9PmUub3B0aW9ucy5vbkNvbHVtblNpemluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uU2l6aW5nQ2hhbmdlKHQpLGUuc2V0Q29sdW1uU2l6aW5nSW5mbz10PT5lLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25Db2x1bW5TaXppbmdJbmZvQ2hhbmdlKHQpLGUucmVzZXRDb2x1bW5TaXppbmc9dD0+e2Uuc2V0Q29sdW1uU2l6aW5nKHQ/e306ZS5pbml0aWFsU3RhdGUuY29sdW1uU2l6aW5nPz97fSl9LGUucmVzZXRIZWFkZXJTaXplSW5mbz10PT57ZS5zZXRDb2x1bW5TaXppbmdJbmZvKHQ/UigpOmUuaW5pdGlhbFN0YXRlLmNvbHVtblNpemluZ0luZm8/P1IoKSl9LGUuZ2V0VG90YWxTaXplPSgpPT5lLmdldEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MCxlLmdldExlZnRUb3RhbFNpemU9KCk9PmUuZ2V0TGVmdEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MCxlLmdldENlbnRlclRvdGFsU2l6ZT0oKT0+ZS5nZXRDZW50ZXJIZWFkZXJHcm91cHMoKVswXT8uaGVhZGVycy5yZWR1Y2UoKGUsdCk9PmUrdC5nZXRTaXplKCksMCk/PzAsZS5nZXRSaWdodFRvdGFsU2l6ZT0oKT0+ZS5nZXRSaWdodEhlYWRlckdyb3VwcygpWzBdPy5oZWFkZXJzLnJlZHVjZSgoZSx0KT0+ZSt0LmdldFNpemUoKSwwKT8/MH19LHo9bnVsbDtmdW5jdGlvbiBMZSgpe2lmKHR5cGVvZiB6PT1gYm9vbGVhbmApcmV0dXJuIHo7bGV0IGU9ITE7dHJ5e2xldCB0PXtnZXQgcGFzc2l2ZSgpe3JldHVybiBlPSEwLCExfX0sbj0oKT0+e307d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHRlc3RgLG4sdCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHRlc3RgLG4pfWNhdGNoe2U9ITF9cmV0dXJuIHo9ZSx6fWZ1bmN0aW9uIEIoZSl7cmV0dXJuIGUudHlwZT09PWB0b3VjaHN0YXJ0YH12YXIgUmU9e2dldEluaXRpYWxTdGF0ZTplPT4oe2NvbHVtblZpc2liaWxpdHk6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Db2x1bW5WaXNpYmlsaXR5Q2hhbmdlOkQoYGNvbHVtblZpc2liaWxpdHlgLGUpfSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS50b2dnbGVWaXNpYmlsaXR5PW49PntlLmdldENhbkhpZGUoKSYmdC5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ9Pih7Li4udCxbZS5pZF06bj8/IWUuZ2V0SXNWaXNpYmxlKCl9KSl9LGUuZ2V0SXNWaXNpYmxlPSgpPT57bGV0IG49ZS5jb2x1bW5zO3JldHVybihuLmxlbmd0aD9uLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGUoKSk6dC5nZXRTdGF0ZSgpLmNvbHVtblZpc2liaWxpdHk/LltlLmlkXSk/PyEwfSxlLmdldENhbkhpZGU9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVIaWRpbmc/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVIaWRpbmc/PyEwKSxlLmdldFRvZ2dsZVZpc2liaWxpdHlIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVWaXNpYmlsaXR5PT1udWxsfHxlLnRvZ2dsZVZpc2liaWxpdHkodC50YXJnZXQuY2hlY2tlZCl9fSxjcmVhdGVSb3c6KGUsdCk9PntlLl9nZXRBbGxWaXNpYmxlQ2VsbHM9aygoKT0+W2UuZ2V0QWxsQ2VsbHMoKSx0LmdldFN0YXRlKCkuY29sdW1uVmlzaWJpbGl0eV0sZT0+ZS5maWx0ZXIoZT0+ZS5jb2x1bW4uZ2V0SXNWaXNpYmxlKCkpLEEodC5vcHRpb25zLGBkZWJ1Z1Jvd3NgLGBfZ2V0QWxsVmlzaWJsZUNlbGxzYCkpLGUuZ2V0VmlzaWJsZUNlbGxzPWsoKCk9PltlLmdldExlZnRWaXNpYmxlQ2VsbHMoKSxlLmdldENlbnRlclZpc2libGVDZWxscygpLGUuZ2V0UmlnaHRWaXNpYmxlQ2VsbHMoKV0sKGUsdCxuKT0+Wy4uLmUsLi4udCwuLi5uXSxBKHQub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0VmlzaWJsZUNlbGxzYCkpfSxjcmVhdGVUYWJsZTplPT57bGV0IHQ9KHQsbik9PmsoKCk9PltuKCksbigpLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZSgpKS5tYXAoZT0+ZS5pZCkuam9pbihgX2ApXSxlPT5lLmZpbHRlcihlPT5lLmdldElzVmlzaWJsZT09bnVsbD92b2lkIDA6ZS5nZXRJc1Zpc2libGUoKSksQShlLm9wdGlvbnMsYGRlYnVnQ29sdW1uc2AsdCkpO2UuZ2V0VmlzaWJsZUZsYXRDb2x1bW5zPXQoYGdldFZpc2libGVGbGF0Q29sdW1uc2AsKCk9PmUuZ2V0QWxsRmxhdENvbHVtbnMoKSksZS5nZXRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0VmlzaWJsZUxlYWZDb2x1bW5zYCwoKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpKSxlLmdldExlZnRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0TGVmdFZpc2libGVMZWFmQ29sdW1uc2AsKCk9PmUuZ2V0TGVmdExlYWZDb2x1bW5zKCkpLGUuZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0UmlnaHRWaXNpYmxlTGVhZkNvbHVtbnNgLCgpPT5lLmdldFJpZ2h0TGVhZkNvbHVtbnMoKSksZS5nZXRDZW50ZXJWaXNpYmxlTGVhZkNvbHVtbnM9dChgZ2V0Q2VudGVyVmlzaWJsZUxlYWZDb2x1bW5zYCwoKT0+ZS5nZXRDZW50ZXJMZWFmQ29sdW1ucygpKSxlLnNldENvbHVtblZpc2liaWxpdHk9dD0+ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uQ29sdW1uVmlzaWJpbGl0eUNoYW5nZSh0KSxlLnJlc2V0Q29sdW1uVmlzaWJpbGl0eT10PT57ZS5zZXRDb2x1bW5WaXNpYmlsaXR5KHQ/e306ZS5pbml0aWFsU3RhdGUuY29sdW1uVmlzaWJpbGl0eT8/e30pfSxlLnRvZ2dsZUFsbENvbHVtbnNWaXNpYmxlPXQ9Pnt0Pz89IWUuZ2V0SXNBbGxDb2x1bW5zVmlzaWJsZSgpLGUuc2V0Q29sdW1uVmlzaWJpbGl0eShlLmdldEFsbExlYWZDb2x1bW5zKCkucmVkdWNlKChlLG4pPT4oey4uLmUsW24uaWRdOnR8fCEobi5nZXRDYW5IaWRlIT1udWxsJiZuLmdldENhbkhpZGUoKSl9KSx7fSkpfSxlLmdldElzQWxsQ29sdW1uc1Zpc2libGU9KCk9PiFlLmdldEFsbExlYWZDb2x1bW5zKCkuc29tZShlPT4hKGUuZ2V0SXNWaXNpYmxlIT1udWxsJiZlLmdldElzVmlzaWJsZSgpKSksZS5nZXRJc1NvbWVDb2x1bW5zVmlzaWJsZT0oKT0+ZS5nZXRBbGxMZWFmQ29sdW1ucygpLnNvbWUoZT0+ZS5nZXRJc1Zpc2libGU9PW51bGw/dm9pZCAwOmUuZ2V0SXNWaXNpYmxlKCkpLGUuZ2V0VG9nZ2xlQWxsQ29sdW1uc1Zpc2liaWxpdHlIYW5kbGVyPSgpPT50PT57ZS50b2dnbGVBbGxDb2x1bW5zVmlzaWJsZSh0LnRhcmdldD8uY2hlY2tlZCl9fX07ZnVuY3Rpb24gVihlLHQpe3JldHVybiB0P3Q9PT1gY2VudGVyYD9lLmdldENlbnRlclZpc2libGVMZWFmQ29sdW1ucygpOnQ9PT1gbGVmdGA/ZS5nZXRMZWZ0VmlzaWJsZUxlYWZDb2x1bW5zKCk6ZS5nZXRSaWdodFZpc2libGVMZWFmQ29sdW1ucygpOmUuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKCl9dmFyIHplPXtjcmVhdGVUYWJsZTplPT57ZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsPWUub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRGYWNldGVkUm93TW9kZWwoZSxgX19nbG9iYWxfX2ApLGUuZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsPSgpPT5lLm9wdGlvbnMubWFudWFsRmlsdGVyaW5nfHwhZS5fZ2V0R2xvYmFsRmFjZXRlZFJvd01vZGVsP2UuZ2V0UHJlRmlsdGVyZWRSb3dNb2RlbCgpOmUuX2dldEdsb2JhbEZhY2V0ZWRSb3dNb2RlbCgpLGUuX2dldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM9ZS5vcHRpb25zLmdldEZhY2V0ZWRVbmlxdWVWYWx1ZXMmJmUub3B0aW9ucy5nZXRGYWNldGVkVW5pcXVlVmFsdWVzKGUsYF9fZ2xvYmFsX19gKSxlLmdldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM9KCk9PmUuX2dldEdsb2JhbEZhY2V0ZWRVbmlxdWVWYWx1ZXM/ZS5fZ2V0R2xvYmFsRmFjZXRlZFVuaXF1ZVZhbHVlcygpOm5ldyBNYXAsZS5fZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcz1lLm9wdGlvbnMuZ2V0RmFjZXRlZE1pbk1heFZhbHVlcyYmZS5vcHRpb25zLmdldEZhY2V0ZWRNaW5NYXhWYWx1ZXMoZSxgX19nbG9iYWxfX2ApLGUuZ2V0R2xvYmFsRmFjZXRlZE1pbk1heFZhbHVlcz0oKT0+e2lmKGUuX2dldEdsb2JhbEZhY2V0ZWRNaW5NYXhWYWx1ZXMpcmV0dXJuIGUuX2dldEdsb2JhbEZhY2V0ZWRNaW5NYXhWYWx1ZXMoKX19fSxCZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Z2xvYmFsRmlsdGVyOnZvaWQgMCwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvbkdsb2JhbEZpbHRlckNoYW5nZTpEKGBnbG9iYWxGaWx0ZXJgLGUpLGdsb2JhbEZpbHRlckZuOmBhdXRvYCxnZXRDb2x1bW5DYW5HbG9iYWxGaWx0ZXI6dD0+e3ZhciBuO2xldCByPShuPWUuZ2V0Q29yZVJvd01vZGVsKCkuZmxhdFJvd3NbMF0pPT1udWxsfHwobj1uLl9nZXRBbGxDZWxsc0J5Q29sdW1uSWQoKVt0LmlkXSk9PW51bGw/dm9pZCAwOm4uZ2V0VmFsdWUoKTtyZXR1cm4gdHlwZW9mIHI9PWBzdHJpbmdgfHx0eXBlb2Ygcj09YG51bWJlcmB9fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRDYW5HbG9iYWxGaWx0ZXI9KCk9PihlLmNvbHVtbkRlZi5lbmFibGVHbG9iYWxGaWx0ZXI/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVHbG9iYWxGaWx0ZXI/PyEwKSYmKHQub3B0aW9ucy5lbmFibGVGaWx0ZXJzPz8hMCkmJigodC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcj09bnVsbD92b2lkIDA6dC5vcHRpb25zLmdldENvbHVtbkNhbkdsb2JhbEZpbHRlcihlKSk/PyEwKSYmISFlLmFjY2Vzc29yRm59LGNyZWF0ZVRhYmxlOmU9PntlLmdldEdsb2JhbEF1dG9GaWx0ZXJGbj0oKT0+Ti5pbmNsdWRlc1N0cmluZyxlLmdldEdsb2JhbEZpbHRlckZuPSgpPT57bGV0e2dsb2JhbEZpbHRlckZuOnR9PWUub3B0aW9ucztyZXR1cm4gTyh0KT90OnQ9PT1gYXV0b2A/ZS5nZXRHbG9iYWxBdXRvRmlsdGVyRm4oKTplLm9wdGlvbnMuZmlsdGVyRm5zPy5bdF0/P05bdF19LGUuc2V0R2xvYmFsRmlsdGVyPXQ9PntlLm9wdGlvbnMub25HbG9iYWxGaWx0ZXJDaGFuZ2U9PW51bGx8fGUub3B0aW9ucy5vbkdsb2JhbEZpbHRlckNoYW5nZSh0KX0sZS5yZXNldEdsb2JhbEZpbHRlcj10PT57ZS5zZXRHbG9iYWxGaWx0ZXIodD92b2lkIDA6ZS5pbml0aWFsU3RhdGUuZ2xvYmFsRmlsdGVyKX19fSxWZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7ZXhwYW5kZWQ6e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25FeHBhbmRlZENoYW5nZTpEKGBleHBhbmRlZGAsZSkscGFnaW5hdGVFeHBhbmRlZFJvd3M6ITB9KSxjcmVhdGVUYWJsZTplPT57bGV0IHQ9ITEsbj0hMTtlLl9hdXRvUmVzZXRFeHBhbmRlZD0oKT0+e2lmKCF0KXtlLl9xdWV1ZSgoKT0+e3Q9ITB9KTtyZXR1cm59aWYoZS5vcHRpb25zLmF1dG9SZXNldEFsbD8/ZS5vcHRpb25zLmF1dG9SZXNldEV4cGFuZGVkPz8hZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZyl7aWYobilyZXR1cm47bj0hMCxlLl9xdWV1ZSgoKT0+e2UucmVzZXRFeHBhbmRlZCgpLG49ITF9KX19LGUuc2V0RXhwYW5kZWQ9dD0+ZS5vcHRpb25zLm9uRXhwYW5kZWRDaGFuZ2U9PW51bGw/dm9pZCAwOmUub3B0aW9ucy5vbkV4cGFuZGVkQ2hhbmdlKHQpLGUudG9nZ2xlQWxsUm93c0V4cGFuZGVkPXQ9Pnt0Pz8hZS5nZXRJc0FsbFJvd3NFeHBhbmRlZCgpP2Uuc2V0RXhwYW5kZWQoITApOmUuc2V0RXhwYW5kZWQoe30pfSxlLnJlc2V0RXhwYW5kZWQ9dD0+e2Uuc2V0RXhwYW5kZWQodD97fTplLmluaXRpYWxTdGF0ZT8uZXhwYW5kZWQ/P3t9KX0sZS5nZXRDYW5Tb21lUm93c0V4cGFuZD0oKT0+ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PmUuZ2V0Q2FuRXhwYW5kKCkpLGUuZ2V0VG9nZ2xlQWxsUm93c0V4cGFuZGVkSGFuZGxlcj0oKT0+dD0+e3QucGVyc2lzdD09bnVsbHx8dC5wZXJzaXN0KCksZS50b2dnbGVBbGxSb3dzRXhwYW5kZWQoKX0sZS5nZXRJc1NvbWVSb3dzRXhwYW5kZWQ9KCk9PntsZXQgdD1lLmdldFN0YXRlKCkuZXhwYW5kZWQ7cmV0dXJuIHQ9PT0hMHx8T2JqZWN0LnZhbHVlcyh0KS5zb21lKEJvb2xlYW4pfSxlLmdldElzQWxsUm93c0V4cGFuZGVkPSgpPT57bGV0IHQ9ZS5nZXRTdGF0ZSgpLmV4cGFuZGVkO3JldHVybiB0eXBlb2YgdD09YGJvb2xlYW5gP3Q9PT0hMDohKCFPYmplY3Qua2V5cyh0KS5sZW5ndGh8fGUuZ2V0Um93TW9kZWwoKS5mbGF0Um93cy5zb21lKGU9PiFlLmdldElzRXhwYW5kZWQoKSkpfSxlLmdldEV4cGFuZGVkRGVwdGg9KCk9PntsZXQgdD0wO3JldHVybihlLmdldFN0YXRlKCkuZXhwYW5kZWQ9PT0hMD9PYmplY3Qua2V5cyhlLmdldFJvd01vZGVsKCkucm93c0J5SWQpOk9iamVjdC5rZXlzKGUuZ2V0U3RhdGUoKS5leHBhbmRlZCkpLmZvckVhY2goZT0+e2xldCBuPWUuc3BsaXQoYC5gKTt0PU1hdGgubWF4KHQsbi5sZW5ndGgpfSksdH0sZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsPSgpPT5lLmdldFNvcnRlZFJvd01vZGVsKCksZS5nZXRFeHBhbmRlZFJvd01vZGVsPSgpPT4oIWUuX2dldEV4cGFuZGVkUm93TW9kZWwmJmUub3B0aW9ucy5nZXRFeHBhbmRlZFJvd01vZGVsJiYoZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0RXhwYW5kZWRSb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbEV4cGFuZGluZ3x8IWUuX2dldEV4cGFuZGVkUm93TW9kZWw/ZS5nZXRQcmVFeHBhbmRlZFJvd01vZGVsKCk6ZS5fZ2V0RXhwYW5kZWRSb3dNb2RlbCgpKX0sY3JlYXRlUm93OihlLHQpPT57ZS50b2dnbGVFeHBhbmRlZD1uPT57dC5zZXRFeHBhbmRlZChyPT57bGV0IGk9cj09PSEwfHwhIShyIT1udWxsJiZyW2UuaWRdKSxhPXt9O2lmKHI9PT0hMD9PYmplY3Qua2V5cyh0LmdldFJvd01vZGVsKCkucm93c0J5SWQpLmZvckVhY2goZT0+e2FbZV09ITB9KTphPXIsbj8/PSFpLCFpJiZuKXJldHVybnsuLi5hLFtlLmlkXTohMH07aWYoaSYmIW4pe2xldHtbZS5pZF06dCwuLi5ufT1hO3JldHVybiBufXJldHVybiByfSl9LGUuZ2V0SXNFeHBhbmRlZD0oKT0+e2xldCBuPXQuZ2V0U3RhdGUoKS5leHBhbmRlZDtyZXR1cm4hISgodC5vcHRpb25zLmdldElzUm93RXhwYW5kZWQ9PW51bGw/dm9pZCAwOnQub3B0aW9ucy5nZXRJc1Jvd0V4cGFuZGVkKGUpKT8/KG49PT0hMHx8bj8uW2UuaWRdKSl9LGUuZ2V0Q2FuRXhwYW5kPSgpPT57dmFyIG47cmV0dXJuKHQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQ9PW51bGw/dm9pZCAwOnQub3B0aW9ucy5nZXRSb3dDYW5FeHBhbmQoZSkpPz8oKHQub3B0aW9ucy5lbmFibGVFeHBhbmRpbmc/PyEwKSYmISEoKG49ZS5zdWJSb3dzKSE9bnVsbCYmbi5sZW5ndGgpKX0sZS5nZXRJc0FsbFBhcmVudHNFeHBhbmRlZD0oKT0+e2xldCBuPSEwLHI9ZTtmb3IoO24mJnIucGFyZW50SWQ7KXI9dC5nZXRSb3coci5wYXJlbnRJZCwhMCksbj1yLmdldElzRXhwYW5kZWQoKTtyZXR1cm4gbn0sZS5nZXRUb2dnbGVFeHBhbmRlZEhhbmRsZXI9KCk9PntsZXQgdD1lLmdldENhbkV4cGFuZCgpO3JldHVybigpPT57dCYmZS50b2dnbGVFeHBhbmRlZCgpfX19fSxIPTAsVT0xMCxXPSgpPT4oe3BhZ2VJbmRleDpILHBhZ2VTaXplOlV9KSxIZT17Z2V0SW5pdGlhbFN0YXRlOmU9Pih7Li4uZSxwYWdpbmF0aW9uOnsuLi5XKCksLi4uZT8ucGFnaW5hdGlvbn19KSxnZXREZWZhdWx0T3B0aW9uczplPT4oe29uUGFnaW5hdGlvbkNoYW5nZTpEKGBwYWdpbmF0aW9uYCxlKX0pLGNyZWF0ZVRhYmxlOmU9PntsZXQgdD0hMSxuPSExO2UuX2F1dG9SZXNldFBhZ2VJbmRleD0oKT0+e2lmKCF0KXtlLl9xdWV1ZSgoKT0+e3Q9ITB9KTtyZXR1cm59aWYoZS5vcHRpb25zLmF1dG9SZXNldEFsbD8/ZS5vcHRpb25zLmF1dG9SZXNldFBhZ2VJbmRleD8/IWUub3B0aW9ucy5tYW51YWxQYWdpbmF0aW9uKXtpZihuKXJldHVybjtuPSEwLGUuX3F1ZXVlKCgpPT57ZS5yZXNldFBhZ2VJbmRleCgpLG49ITF9KX19LGUuc2V0UGFnaW5hdGlvbj10PT5lLm9wdGlvbnMub25QYWdpbmF0aW9uQ2hhbmdlPT1udWxsP3ZvaWQgMDplLm9wdGlvbnMub25QYWdpbmF0aW9uQ2hhbmdlKGU9PkUodCxlKSksZS5yZXNldFBhZ2luYXRpb249dD0+e2Uuc2V0UGFnaW5hdGlvbih0P1coKTplLmluaXRpYWxTdGF0ZS5wYWdpbmF0aW9uPz9XKCkpfSxlLnNldFBhZ2VJbmRleD10PT57ZS5zZXRQYWdpbmF0aW9uKG49PntsZXQgcj1FKHQsbi5wYWdlSW5kZXgpLGk9ZS5vcHRpb25zLnBhZ2VDb3VudD09PXZvaWQgMHx8ZS5vcHRpb25zLnBhZ2VDb3VudD09PS0xPzIqKjUzLTE6ZS5vcHRpb25zLnBhZ2VDb3VudC0xO3JldHVybiByPU1hdGgubWF4KDAsTWF0aC5taW4ocixpKSksey4uLm4scGFnZUluZGV4OnJ9fSl9LGUucmVzZXRQYWdlSW5kZXg9dD0+e3ZhciBuO2Uuc2V0UGFnZUluZGV4KHQ/SDooKG49ZS5pbml0aWFsU3RhdGUpPT1udWxsfHwobj1uLnBhZ2luYXRpb24pPT1udWxsP3ZvaWQgMDpuLnBhZ2VJbmRleCk/P0gpfSxlLnJlc2V0UGFnZVNpemU9dD0+e3ZhciBuO2Uuc2V0UGFnZVNpemUodD9VOigobj1lLmluaXRpYWxTdGF0ZSk9PW51bGx8fChuPW4ucGFnaW5hdGlvbik9PW51bGw/dm9pZCAwOm4ucGFnZVNpemUpPz9VKX0sZS5zZXRQYWdlU2l6ZT10PT57ZS5zZXRQYWdpbmF0aW9uKGU9PntsZXQgbj1NYXRoLm1heCgxLEUodCxlLnBhZ2VTaXplKSkscj1lLnBhZ2VTaXplKmUucGFnZUluZGV4LGk9TWF0aC5mbG9vcihyL24pO3JldHVybnsuLi5lLHBhZ2VJbmRleDppLHBhZ2VTaXplOm59fSl9LGUuc2V0UGFnZUNvdW50PXQ9PmUuc2V0UGFnaW5hdGlvbihuPT57bGV0IHI9RSh0LGUub3B0aW9ucy5wYWdlQ291bnQ/Py0xKTtyZXR1cm4gdHlwZW9mIHI9PWBudW1iZXJgJiYocj1NYXRoLm1heCgtMSxyKSksey4uLm4scGFnZUNvdW50OnJ9fSksZS5nZXRQYWdlT3B0aW9ucz1rKCgpPT5bZS5nZXRQYWdlQ291bnQoKV0sZT0+e2xldCB0PVtdO3JldHVybiBlJiZlPjAmJih0PVsuLi5BcnJheShlKV0uZmlsbChudWxsKS5tYXAoKGUsdCk9PnQpKSx0fSxBKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFBhZ2VPcHRpb25zYCkpLGUuZ2V0Q2FuUHJldmlvdXNQYWdlPSgpPT5lLmdldFN0YXRlKCkucGFnaW5hdGlvbi5wYWdlSW5kZXg+MCxlLmdldENhbk5leHRQYWdlPSgpPT57bGV0e3BhZ2VJbmRleDp0fT1lLmdldFN0YXRlKCkucGFnaW5hdGlvbixuPWUuZ2V0UGFnZUNvdW50KCk7cmV0dXJuIG49PT0tMXx8biE9PTAmJnQ8bi0xfSxlLnByZXZpb3VzUGFnZT0oKT0+ZS5zZXRQYWdlSW5kZXgoZT0+ZS0xKSxlLm5leHRQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlPT5lKzEpLGUuZmlyc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleCgwKSxlLmxhc3RQYWdlPSgpPT5lLnNldFBhZ2VJbmRleChlLmdldFBhZ2VDb3VudCgpLTEpLGUuZ2V0UHJlUGFnaW5hdGlvblJvd01vZGVsPSgpPT5lLmdldEV4cGFuZGVkUm93TW9kZWwoKSxlLmdldFBhZ2luYXRpb25Sb3dNb2RlbD0oKT0+KCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwmJmUub3B0aW9ucy5nZXRQYWdpbmF0aW9uUm93TW9kZWwmJihlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw9ZS5vcHRpb25zLmdldFBhZ2luYXRpb25Sb3dNb2RlbChlKSksZS5vcHRpb25zLm1hbnVhbFBhZ2luYXRpb258fCFlLl9nZXRQYWdpbmF0aW9uUm93TW9kZWw/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTplLl9nZXRQYWdpbmF0aW9uUm93TW9kZWwoKSksZS5nZXRQYWdlQ291bnQ9KCk9PmUub3B0aW9ucy5wYWdlQ291bnQ/P01hdGguY2VpbChlLmdldFJvd0NvdW50KCkvZS5nZXRTdGF0ZSgpLnBhZ2luYXRpb24ucGFnZVNpemUpLGUuZ2V0Um93Q291bnQ9KCk9PmUub3B0aW9ucy5yb3dDb3VudD8/ZS5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKS5yb3dzLmxlbmd0aH19LEc9KCk9Pih7dG9wOltdLGJvdHRvbTpbXX0pLFVlPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dQaW5uaW5nOkcoKSwuLi5lfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblJvd1Bpbm5pbmdDaGFuZ2U6RChgcm93UGlubmluZ2AsZSl9KSxjcmVhdGVSb3c6KGUsdCk9PntlLnBpbj0obixyLGkpPT57bGV0IGE9cj9lLmdldExlYWZSb3dzKCkubWFwKGU9PntsZXR7aWQ6dH09ZTtyZXR1cm4gdH0pOltdLG89aT9lLmdldFBhcmVudFJvd3MoKS5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSk6W10scz1uZXcgU2V0KFsuLi5vLGUuaWQsLi4uYV0pO3Quc2V0Um93UGlubmluZyhlPT5uPT09YGJvdHRvbWA/e3RvcDooZT8udG9wPz9bXSkuZmlsdGVyKGU9PiEocyE9bnVsbCYmcy5oYXMoZSkpKSxib3R0b206Wy4uLihlPy5ib3R0b20/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpLC4uLkFycmF5LmZyb20ocyldfTpuPT09YHRvcGA/e3RvcDpbLi4uKGU/LnRvcD8/W10pLmZpbHRlcihlPT4hKHMhPW51bGwmJnMuaGFzKGUpKSksLi4uQXJyYXkuZnJvbShzKV0sYm90dG9tOihlPy5ib3R0b20/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpfTp7dG9wOihlPy50b3A/P1tdKS5maWx0ZXIoZT0+IShzIT1udWxsJiZzLmhhcyhlKSkpLGJvdHRvbTooZT8uYm90dG9tPz9bXSkuZmlsdGVyKGU9PiEocyE9bnVsbCYmcy5oYXMoZSkpKX0pfSxlLmdldENhblBpbj0oKT0+e2xldHtlbmFibGVSb3dQaW5uaW5nOm4sZW5hYmxlUGlubmluZzpyfT10Lm9wdGlvbnM7cmV0dXJuIHR5cGVvZiBuPT1gZnVuY3Rpb25gP24oZSk6bj8/cj8/ITB9LGUuZ2V0SXNQaW5uZWQ9KCk9PntsZXQgbj1bZS5pZF0se3RvcDpyLGJvdHRvbTppfT10LmdldFN0YXRlKCkucm93UGlubmluZyxhPW4uc29tZShlPT5yPy5pbmNsdWRlcyhlKSksbz1uLnNvbWUoZT0+aT8uaW5jbHVkZXMoZSkpO3JldHVybiBhP2B0b3BgOm8/YGJvdHRvbWA6ITF9LGUuZ2V0UGlubmVkSW5kZXg9KCk9PntsZXQgbj1lLmdldElzUGlubmVkKCk7cmV0dXJuIG4/KChuPT09YHRvcGA/dC5nZXRUb3BSb3dzKCk6dC5nZXRCb3R0b21Sb3dzKCkpPy5tYXAoZT0+e2xldHtpZDp0fT1lO3JldHVybiB0fSkpPy5pbmRleE9mKGUuaWQpPz8tMTotMX19LGNyZWF0ZVRhYmxlOmU9PntlLnNldFJvd1Bpbm5pbmc9dD0+ZS5vcHRpb25zLm9uUm93UGlubmluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uUm93UGlubmluZ0NoYW5nZSh0KSxlLnJlc2V0Um93UGlubmluZz10PT5lLnNldFJvd1Bpbm5pbmcodD9HKCk6ZS5pbml0aWFsU3RhdGU/LnJvd1Bpbm5pbmc/P0coKSksZS5nZXRJc1NvbWVSb3dzUGlubmVkPXQ9PntsZXQgbj1lLmdldFN0YXRlKCkucm93UGlubmluZztyZXR1cm4gdD8hIW5bdF0/Lmxlbmd0aDohIShuLnRvcD8ubGVuZ3RofHxuLmJvdHRvbT8ubGVuZ3RoKX0sZS5fZ2V0UGlubmVkUm93cz0odCxuLHIpPT4oZS5vcHRpb25zLmtlZXBQaW5uZWRSb3dzPz8hMD8obj8/W10pLm1hcCh0PT57bGV0IG49ZS5nZXRSb3codCwhMCk7cmV0dXJuIG4uZ2V0SXNBbGxQYXJlbnRzRXhwYW5kZWQoKT9uOm51bGx9KToobj8/W10pLm1hcChlPT50LmZpbmQodD0+dC5pZD09PWUpKSkuZmlsdGVyKEJvb2xlYW4pLm1hcChlPT4oey4uLmUscG9zaXRpb246cn0pKSxlLmdldFRvcFJvd3M9aygoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLnRvcF0sKHQsbik9PmUuX2dldFBpbm5lZFJvd3ModCxuLGB0b3BgKSxBKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0VG9wUm93c2ApKSxlLmdldEJvdHRvbVJvd3M9aygoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLmJvdHRvbV0sKHQsbik9PmUuX2dldFBpbm5lZFJvd3ModCxuLGBib3R0b21gKSxBKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0Qm90dG9tUm93c2ApKSxlLmdldENlbnRlclJvd3M9aygoKT0+W2UuZ2V0Um93TW9kZWwoKS5yb3dzLGUuZ2V0U3RhdGUoKS5yb3dQaW5uaW5nLnRvcCxlLmdldFN0YXRlKCkucm93UGlubmluZy5ib3R0b21dLChlLHQsbik9PntsZXQgcj1uZXcgU2V0KFsuLi50Pz9bXSwuLi5uPz9bXV0pO3JldHVybiBlLmZpbHRlcihlPT4hci5oYXMoZS5pZCkpfSxBKGUub3B0aW9ucyxgZGVidWdSb3dzYCxgZ2V0Q2VudGVyUm93c2ApKX19LFdlPXtnZXRJbml0aWFsU3RhdGU6ZT0+KHtyb3dTZWxlY3Rpb246e30sLi4uZX0pLGdldERlZmF1bHRPcHRpb25zOmU9Pih7b25Sb3dTZWxlY3Rpb25DaGFuZ2U6RChgcm93U2VsZWN0aW9uYCxlKSxlbmFibGVSb3dTZWxlY3Rpb246ITAsZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb246ITAsZW5hYmxlU3ViUm93U2VsZWN0aW9uOiEwfSksY3JlYXRlVGFibGU6ZT0+e2Uuc2V0Um93U2VsZWN0aW9uPXQ9PmUub3B0aW9ucy5vblJvd1NlbGVjdGlvbkNoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uUm93U2VsZWN0aW9uQ2hhbmdlKHQpLGUucmVzZXRSb3dTZWxlY3Rpb249dD0+ZS5zZXRSb3dTZWxlY3Rpb24odD97fTplLmluaXRpYWxTdGF0ZS5yb3dTZWxlY3Rpb24/P3t9KSxlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZD10PT57ZS5zZXRSb3dTZWxlY3Rpb24obj0+e3Q9dD09PXZvaWQgMD8hZS5nZXRJc0FsbFJvd3NTZWxlY3RlZCgpOnQ7bGV0IHI9ey4uLm59LGk9ZS5nZXRQcmVHcm91cGVkUm93TW9kZWwoKS5mbGF0Um93cztyZXR1cm4gdD9pLmZvckVhY2goZT0+e2UuZ2V0Q2FuU2VsZWN0KCkmJihyW2UuaWRdPSEwKX0pOmkuZm9yRWFjaChlPT57ZGVsZXRlIHJbZS5pZF19KSxyfSl9LGUudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZD10PT5lLnNldFJvd1NlbGVjdGlvbihuPT57bGV0IHI9dD09PXZvaWQgMD8hZS5nZXRJc0FsbFBhZ2VSb3dzU2VsZWN0ZWQoKTp0LGk9ey4uLm59O3JldHVybiBlLmdldFJvd01vZGVsKCkucm93cy5mb3JFYWNoKHQ9PntLKGksdC5pZCxyLCEwLGUpfSksaX0pLGUuZ2V0UHJlU2VsZWN0ZWRSb3dNb2RlbD0oKT0+ZS5nZXRDb3JlUm93TW9kZWwoKSxlLmdldFNlbGVjdGVkUm93TW9kZWw9aygoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRDb3JlUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9xKGUsbik6e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LEEoZS5vcHRpb25zLGBkZWJ1Z1RhYmxlYCxgZ2V0U2VsZWN0ZWRSb3dNb2RlbGApKSxlLmdldEZpbHRlcmVkU2VsZWN0ZWRSb3dNb2RlbD1rKCgpPT5bZS5nZXRTdGF0ZSgpLnJvd1NlbGVjdGlvbixlLmdldEZpbHRlcmVkUm93TW9kZWwoKV0sKHQsbik9Pk9iamVjdC5rZXlzKHQpLmxlbmd0aD9xKGUsbik6e3Jvd3M6W10sZmxhdFJvd3M6W10scm93c0J5SWQ6e319LEEoZS5vcHRpb25zLGBkZWJ1Z1RhYmxlYCxgZ2V0RmlsdGVyZWRTZWxlY3RlZFJvd01vZGVsYCkpLGUuZ2V0R3JvdXBlZFNlbGVjdGVkUm93TW9kZWw9aygoKT0+W2UuZ2V0U3RhdGUoKS5yb3dTZWxlY3Rpb24sZS5nZXRTb3J0ZWRSb3dNb2RlbCgpXSwodCxuKT0+T2JqZWN0LmtleXModCkubGVuZ3RoP3EoZSxuKTp7cm93czpbXSxmbGF0Um93czpbXSxyb3dzQnlJZDp7fX0sQShlLm9wdGlvbnMsYGRlYnVnVGFibGVgLGBnZXRHcm91cGVkU2VsZWN0ZWRSb3dNb2RlbGApKSxlLmdldElzQWxsUm93c1NlbGVjdGVkPSgpPT57bGV0IHQ9ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3Mse3Jvd1NlbGVjdGlvbjpufT1lLmdldFN0YXRlKCkscj0hISh0Lmxlbmd0aCYmT2JqZWN0LmtleXMobikubGVuZ3RoKTtyZXR1cm4gciYmdC5zb21lKGU9PmUuZ2V0Q2FuU2VsZWN0KCkmJiFuW2UuaWRdKSYmKHI9ITEpLHJ9LGUuZ2V0SXNBbGxQYWdlUm93c1NlbGVjdGVkPSgpPT57bGV0IHQ9ZS5nZXRQYWdpbmF0aW9uUm93TW9kZWwoKS5mbGF0Um93cy5maWx0ZXIoZT0+ZS5nZXRDYW5TZWxlY3QoKSkse3Jvd1NlbGVjdGlvbjpufT1lLmdldFN0YXRlKCkscj0hIXQubGVuZ3RoO3JldHVybiByJiZ0LnNvbWUoZT0+IW5bZS5pZF0pJiYocj0hMSkscn0sZS5nZXRJc1NvbWVSb3dzU2VsZWN0ZWQ9KCk9PntsZXQgdD1PYmplY3Qua2V5cyhlLmdldFN0YXRlKCkucm93U2VsZWN0aW9uPz97fSkubGVuZ3RoO3JldHVybiB0PjAmJnQ8ZS5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3MubGVuZ3RofSxlLmdldElzU29tZVBhZ2VSb3dzU2VsZWN0ZWQ9KCk9PntsZXQgdD1lLmdldFBhZ2luYXRpb25Sb3dNb2RlbCgpLmZsYXRSb3dzO3JldHVybiFlLmdldElzQWxsUGFnZVJvd3NTZWxlY3RlZCgpJiZ0LmZpbHRlcihlPT5lLmdldENhblNlbGVjdCgpKS5zb21lKGU9PmUuZ2V0SXNTZWxlY3RlZCgpfHxlLmdldElzU29tZVNlbGVjdGVkKCkpfSxlLmdldFRvZ2dsZUFsbFJvd3NTZWxlY3RlZEhhbmRsZXI9KCk9PnQ9PntlLnRvZ2dsZUFsbFJvd3NTZWxlY3RlZCh0LnRhcmdldC5jaGVja2VkKX0sZS5nZXRUb2dnbGVBbGxQYWdlUm93c1NlbGVjdGVkSGFuZGxlcj0oKT0+dD0+e2UudG9nZ2xlQWxsUGFnZVJvd3NTZWxlY3RlZCh0LnRhcmdldC5jaGVja2VkKX19LGNyZWF0ZVJvdzooZSx0KT0+e2UudG9nZ2xlU2VsZWN0ZWQ9KG4scik9PntsZXQgaT1lLmdldElzU2VsZWN0ZWQoKTt0LnNldFJvd1NlbGVjdGlvbihhPT57aWYobj1uPT09dm9pZCAwPyFpOm4sZS5nZXRDYW5TZWxlY3QoKSYmaT09PW4pcmV0dXJuIGE7bGV0IG89ey4uLmF9O3JldHVybiBLKG8sZS5pZCxuLHI/LnNlbGVjdENoaWxkcmVuPz8hMCx0KSxvfSl9LGUuZ2V0SXNTZWxlY3RlZD0oKT0+e2xldHtyb3dTZWxlY3Rpb246bn09dC5nZXRTdGF0ZSgpO3JldHVybiBKKGUsbil9LGUuZ2V0SXNTb21lU2VsZWN0ZWQ9KCk9PntsZXR7cm93U2VsZWN0aW9uOm59PXQuZ2V0U3RhdGUoKTtyZXR1cm4gWShlLG4pPT09YHNvbWVgfSxlLmdldElzQWxsU3ViUm93c1NlbGVjdGVkPSgpPT57bGV0e3Jvd1NlbGVjdGlvbjpufT10LmdldFN0YXRlKCk7cmV0dXJuIFkoZSxuKT09PWBhbGxgfSxlLmdldENhblNlbGVjdD0oKT0+dHlwZW9mIHQub3B0aW9ucy5lbmFibGVSb3dTZWxlY3Rpb249PWBmdW5jdGlvbmA/dC5vcHRpb25zLmVuYWJsZVJvd1NlbGVjdGlvbihlKTp0Lm9wdGlvbnMuZW5hYmxlUm93U2VsZWN0aW9uPz8hMCxlLmdldENhblNlbGVjdFN1YlJvd3M9KCk9PnR5cGVvZiB0Lm9wdGlvbnMuZW5hYmxlU3ViUm93U2VsZWN0aW9uPT1gZnVuY3Rpb25gP3Qub3B0aW9ucy5lbmFibGVTdWJSb3dTZWxlY3Rpb24oZSk6dC5vcHRpb25zLmVuYWJsZVN1YlJvd1NlbGVjdGlvbj8/ITAsZS5nZXRDYW5NdWx0aVNlbGVjdD0oKT0+dHlwZW9mIHQub3B0aW9ucy5lbmFibGVNdWx0aVJvd1NlbGVjdGlvbj09YGZ1bmN0aW9uYD90Lm9wdGlvbnMuZW5hYmxlTXVsdGlSb3dTZWxlY3Rpb24oZSk6dC5vcHRpb25zLmVuYWJsZU11bHRpUm93U2VsZWN0aW9uPz8hMCxlLmdldFRvZ2dsZVNlbGVjdGVkSGFuZGxlcj0oKT0+e2xldCB0PWUuZ2V0Q2FuU2VsZWN0KCk7cmV0dXJuIG49Pnt0JiZlLnRvZ2dsZVNlbGVjdGVkKG4udGFyZ2V0Py5jaGVja2VkKX19fX0sSz0oZSx0LG4scixpKT0+e3ZhciBhO2xldCBvPWkuZ2V0Um93KHQsITApO24/KG8uZ2V0Q2FuTXVsdGlTZWxlY3QoKXx8T2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT5kZWxldGUgZVt0XSksby5nZXRDYW5TZWxlY3QoKSYmKGVbdF09ITApKTpkZWxldGUgZVt0XSxyJiYoYT1vLnN1YlJvd3MpIT1udWxsJiZhLmxlbmd0aCYmby5nZXRDYW5TZWxlY3RTdWJSb3dzKCkmJm8uc3ViUm93cy5mb3JFYWNoKHQ9PksoZSx0LmlkLG4scixpKSl9O2Z1bmN0aW9uIHEoZSx0KXtsZXQgbj1lLmdldFN0YXRlKCkucm93U2VsZWN0aW9uLHI9W10saT17fSxhPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGU9Pnt2YXIgdDtsZXQgbz1KKGUsbik7aWYobyYmKHIucHVzaChlKSxpW2UuaWRdPWUpLCh0PWUuc3ViUm93cykhPW51bGwmJnQubGVuZ3RoJiYoZT17Li4uZSxzdWJSb3dzOmEoZS5zdWJSb3dzKX0pLG8pcmV0dXJuIGV9KS5maWx0ZXIoQm9vbGVhbil9O3JldHVybntyb3dzOmEodC5yb3dzKSxmbGF0Um93czpyLHJvd3NCeUlkOml9fWZ1bmN0aW9uIEooZSx0KXtyZXR1cm4gdFtlLmlkXT8/ITF9ZnVuY3Rpb24gWShlLHQsbil7dmFyIHI7aWYoISgocj1lLnN1YlJvd3MpIT1udWxsJiZyLmxlbmd0aCkpcmV0dXJuITE7bGV0IGk9ITAsYT0hMTtyZXR1cm4gZS5zdWJSb3dzLmZvckVhY2goZT0+e2lmKCEoYSYmIWkpJiYoZS5nZXRDYW5TZWxlY3QoKSYmKEooZSx0KT9hPSEwOmk9ITEpLGUuc3ViUm93cyYmZS5zdWJSb3dzLmxlbmd0aCkpe2xldCBuPVkoZSx0KTtuPT09YGFsbGA/YT0hMDoobj09PWBzb21lYCYmKGE9ITApLGk9ITEpfX0pLGk/YGFsbGA6YT9gc29tZWA6ITF9dmFyIEdlPS8oWzAtOV0rKS9nbSxLZT0oZSx0LG4pPT4kZShYKGUuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCksWCh0LmdldFZhbHVlKG4pKS50b0xvd2VyQ2FzZSgpKSxxZT0oZSx0LG4pPT4kZShYKGUuZ2V0VmFsdWUobikpLFgodC5nZXRWYWx1ZShuKSkpLEplPShlLHQsbik9PlFlKFgoZS5nZXRWYWx1ZShuKSkudG9Mb3dlckNhc2UoKSxYKHQuZ2V0VmFsdWUobikpLnRvTG93ZXJDYXNlKCkpLFllPShlLHQsbik9PlFlKFgoZS5nZXRWYWx1ZShuKSksWCh0LmdldFZhbHVlKG4pKSksWGU9KGUsdCxuKT0+e2xldCByPWUuZ2V0VmFsdWUobiksaT10LmdldFZhbHVlKG4pO3JldHVybiByPmk/MTpyPGk/LTE6MH0sWmU9KGUsdCxuKT0+UWUoZS5nZXRWYWx1ZShuKSx0LmdldFZhbHVlKG4pKTtmdW5jdGlvbiBRZShlLHQpe3JldHVybiBlPT09dD8wOmU+dD8xOi0xfWZ1bmN0aW9uIFgoZSl7cmV0dXJuIHR5cGVvZiBlPT1gbnVtYmVyYD9pc05hTihlKXx8ZT09PTEvMHx8ZT09PS0xLzA/YGA6U3RyaW5nKGUpOnR5cGVvZiBlPT1gc3RyaW5nYD9lOmBgfWZ1bmN0aW9uICRlKGUsdCl7bGV0IG49ZS5zcGxpdChHZSkuZmlsdGVyKEJvb2xlYW4pLHI9dC5zcGxpdChHZSkuZmlsdGVyKEJvb2xlYW4pO2Zvcig7bi5sZW5ndGgmJnIubGVuZ3RoOyl7bGV0IGU9bi5zaGlmdCgpLHQ9ci5zaGlmdCgpLGk9cGFyc2VJbnQoZSwxMCksYT1wYXJzZUludCh0LDEwKSxvPVtpLGFdLnNvcnQoKTtpZihpc05hTihvWzBdKSl7aWYoZT50KXJldHVybiAxO2lmKHQ+ZSlyZXR1cm4tMTtjb250aW51ZX1pZihpc05hTihvWzFdKSlyZXR1cm4gaXNOYU4oaSk/LTE6MTtpZihpPmEpcmV0dXJuIDE7aWYoYT5pKXJldHVybi0xfXJldHVybiBuLmxlbmd0aC1yLmxlbmd0aH12YXIgWj17YWxwaGFudW1lcmljOktlLGFscGhhbnVtZXJpY0Nhc2VTZW5zaXRpdmU6cWUsdGV4dDpKZSx0ZXh0Q2FzZVNlbnNpdGl2ZTpZZSxkYXRldGltZTpYZSxiYXNpYzpaZX0sZXQ9W19lLFJlLE5lLFBlLHllLGtlLHplLEJlLHtnZXRJbml0aWFsU3RhdGU6ZT0+KHtzb3J0aW5nOltdLC4uLmV9KSxnZXREZWZhdWx0Q29sdW1uRGVmOigpPT4oe3NvcnRpbmdGbjpgYXV0b2Asc29ydFVuZGVmaW5lZDoxfSksZ2V0RGVmYXVsdE9wdGlvbnM6ZT0+KHtvblNvcnRpbmdDaGFuZ2U6RChgc29ydGluZ2AsZSksaXNNdWx0aVNvcnRFdmVudDplPT5lLnNoaWZ0S2V5fSksY3JlYXRlQ29sdW1uOihlLHQpPT57ZS5nZXRBdXRvU29ydGluZ0ZuPSgpPT57bGV0IG49dC5nZXRGaWx0ZXJlZFJvd01vZGVsKCkuZmxhdFJvd3Muc2xpY2UoMTApLHI9ITE7Zm9yKGxldCB0IG9mIG4pe2xldCBuPXQ/LmdldFZhbHVlKGUuaWQpO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKT09PWBbb2JqZWN0IERhdGVdYClyZXR1cm4gWi5kYXRldGltZTtpZih0eXBlb2Ygbj09YHN0cmluZ2AmJihyPSEwLG4uc3BsaXQoR2UpLmxlbmd0aD4xKSlyZXR1cm4gWi5hbHBoYW51bWVyaWN9cmV0dXJuIHI/Wi50ZXh0OlouYmFzaWN9LGUuZ2V0QXV0b1NvcnREaXI9KCk9PnR5cGVvZiB0LmdldEZpbHRlcmVkUm93TW9kZWwoKS5mbGF0Um93c1swXT8uZ2V0VmFsdWUoZS5pZCk9PWBzdHJpbmdgP2Bhc2NgOmBkZXNjYCxlLmdldFNvcnRpbmdGbj0oKT0+e2lmKCFlKXRocm93IEVycm9yKCk7cmV0dXJuIE8oZS5jb2x1bW5EZWYuc29ydGluZ0ZuKT9lLmNvbHVtbkRlZi5zb3J0aW5nRm46ZS5jb2x1bW5EZWYuc29ydGluZ0ZuPT09YGF1dG9gP2UuZ2V0QXV0b1NvcnRpbmdGbigpOnQub3B0aW9ucy5zb3J0aW5nRm5zPy5bZS5jb2x1bW5EZWYuc29ydGluZ0ZuXT8/WltlLmNvbHVtbkRlZi5zb3J0aW5nRm5dfSxlLnRvZ2dsZVNvcnRpbmc9KG4scik9PntsZXQgaT1lLmdldE5leHRTb3J0aW5nT3JkZXIoKSxhPW4hPW51bGw7dC5zZXRTb3J0aW5nKG89PntsZXQgcz1vPy5maW5kKHQ9PnQuaWQ9PT1lLmlkKSxjPW8/LmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCksbD1bXSx1LGQ9YT9uOmk9PT1gZGVzY2A7cmV0dXJuIHU9byE9bnVsbCYmby5sZW5ndGgmJmUuZ2V0Q2FuTXVsdGlTb3J0KCkmJnI/cz9gdG9nZ2xlYDpgYWRkYDpvIT1udWxsJiZvLmxlbmd0aCYmYyE9PW8ubGVuZ3RoLTE/YHJlcGxhY2VgOnM/YHRvZ2dsZWA6YHJlcGxhY2VgLHU9PT1gdG9nZ2xlYCYmKGF8fGl8fCh1PWByZW1vdmVgKSksdT09PWBhZGRgPyhsPVsuLi5vLHtpZDplLmlkLGRlc2M6ZH1dLGwuc3BsaWNlKDAsbC5sZW5ndGgtKHQub3B0aW9ucy5tYXhNdWx0aVNvcnRDb2xDb3VudD8/MioqNTMtMSkpKTpsPXU9PT1gdG9nZ2xlYD9vLm1hcCh0PT50LmlkPT09ZS5pZD97Li4udCxkZXNjOmR9OnQpOnU9PT1gcmVtb3ZlYD9vLmZpbHRlcih0PT50LmlkIT09ZS5pZCk6W3tpZDplLmlkLGRlc2M6ZH1dLGx9KX0sZS5nZXRGaXJzdFNvcnREaXI9KCk9PmUuY29sdW1uRGVmLnNvcnREZXNjRmlyc3Q/P3Qub3B0aW9ucy5zb3J0RGVzY0ZpcnN0Pz9lLmdldEF1dG9Tb3J0RGlyKCk9PT1gZGVzY2A/YGRlc2NgOmBhc2NgLGUuZ2V0TmV4dFNvcnRpbmdPcmRlcj1uPT57bGV0IHI9ZS5nZXRGaXJzdFNvcnREaXIoKSxpPWUuZ2V0SXNTb3J0ZWQoKTtyZXR1cm4gaT9pIT09ciYmKHQub3B0aW9ucy5lbmFibGVTb3J0aW5nUmVtb3ZhbD8/ITApJiYoIW58fCh0Lm9wdGlvbnMuZW5hYmxlTXVsdGlSZW1vdmU/PyEwKSk/ITE6aT09PWBkZXNjYD9gYXNjYDpgZGVzY2A6cn0sZS5nZXRDYW5Tb3J0PSgpPT4oZS5jb2x1bW5EZWYuZW5hYmxlU29ydGluZz8/ITApJiYodC5vcHRpb25zLmVuYWJsZVNvcnRpbmc/PyEwKSYmISFlLmFjY2Vzc29yRm4sZS5nZXRDYW5NdWx0aVNvcnQ9KCk9PmUuY29sdW1uRGVmLmVuYWJsZU11bHRpU29ydD8/dC5vcHRpb25zLmVuYWJsZU11bHRpU29ydD8/ISFlLmFjY2Vzc29yRm4sZS5nZXRJc1NvcnRlZD0oKT0+e2xldCBuPXQuZ2V0U3RhdGUoKS5zb3J0aW5nPy5maW5kKHQ9PnQuaWQ9PT1lLmlkKTtyZXR1cm4gbj9uLmRlc2M/YGRlc2NgOmBhc2NgOiExfSxlLmdldFNvcnRJbmRleD0oKT0+dC5nZXRTdGF0ZSgpLnNvcnRpbmc/LmZpbmRJbmRleCh0PT50LmlkPT09ZS5pZCk/Py0xLGUuY2xlYXJTb3J0aW5nPSgpPT57dC5zZXRTb3J0aW5nKHQ9PnQhPW51bGwmJnQubGVuZ3RoP3QuZmlsdGVyKHQ9PnQuaWQhPT1lLmlkKTpbXSl9LGUuZ2V0VG9nZ2xlU29ydGluZ0hhbmRsZXI9KCk9PntsZXQgbj1lLmdldENhblNvcnQoKTtyZXR1cm4gcj0+e24mJihyLnBlcnNpc3Q9PW51bGx8fHIucGVyc2lzdCgpLGUudG9nZ2xlU29ydGluZz09bnVsbHx8ZS50b2dnbGVTb3J0aW5nKHZvaWQgMCxlLmdldENhbk11bHRpU29ydCgpP3Qub3B0aW9ucy5pc011bHRpU29ydEV2ZW50PT1udWxsP3ZvaWQgMDp0Lm9wdGlvbnMuaXNNdWx0aVNvcnRFdmVudChyKTohMSkpfX19LGNyZWF0ZVRhYmxlOmU9PntlLnNldFNvcnRpbmc9dD0+ZS5vcHRpb25zLm9uU29ydGluZ0NoYW5nZT09bnVsbD92b2lkIDA6ZS5vcHRpb25zLm9uU29ydGluZ0NoYW5nZSh0KSxlLnJlc2V0U29ydGluZz10PT57ZS5zZXRTb3J0aW5nKHQ/W106ZS5pbml0aWFsU3RhdGU/LnNvcnRpbmc/P1tdKX0sZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbD0oKT0+ZS5nZXRHcm91cGVkUm93TW9kZWwoKSxlLmdldFNvcnRlZFJvd01vZGVsPSgpPT4oIWUuX2dldFNvcnRlZFJvd01vZGVsJiZlLm9wdGlvbnMuZ2V0U29ydGVkUm93TW9kZWwmJihlLl9nZXRTb3J0ZWRSb3dNb2RlbD1lLm9wdGlvbnMuZ2V0U29ydGVkUm93TW9kZWwoZSkpLGUub3B0aW9ucy5tYW51YWxTb3J0aW5nfHwhZS5fZ2V0U29ydGVkUm93TW9kZWw/ZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpOmUuX2dldFNvcnRlZFJvd01vZGVsKCkpfX0samUsVmUsSGUsVWUsV2UsSWVdO2Z1bmN0aW9uIHR0KGUpe2xldCB0PVsuLi5ldCwuLi5lLl9mZWF0dXJlcz8/W11dLG49e19mZWF0dXJlczp0fSxyPW4uX2ZlYXR1cmVzLnJlZHVjZSgoZSx0KT0+T2JqZWN0LmFzc2lnbihlLHQuZ2V0RGVmYXVsdE9wdGlvbnM9PW51bGw/dm9pZCAwOnQuZ2V0RGVmYXVsdE9wdGlvbnMobikpLHt9KSxpPWU9Pm4ub3B0aW9ucy5tZXJnZU9wdGlvbnM/bi5vcHRpb25zLm1lcmdlT3B0aW9ucyhyLGUpOnsuLi5yLC4uLmV9LGE9ey4uLmUuaW5pdGlhbFN0YXRlPz97fX07bi5fZmVhdHVyZXMuZm9yRWFjaChlPT57YT0oZS5nZXRJbml0aWFsU3RhdGU9PW51bGw/dm9pZCAwOmUuZ2V0SW5pdGlhbFN0YXRlKGEpKT8/YX0pO2xldCBvPVtdLHM9ITEsYz17X2ZlYXR1cmVzOnQsb3B0aW9uczp7Li4uciwuLi5lfSxpbml0aWFsU3RhdGU6YSxfcXVldWU6ZT0+e28ucHVzaChlKSxzfHwocz0hMCxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57Zm9yKDtvLmxlbmd0aDspby5zaGlmdCgpKCk7cz0hMX0pLmNhdGNoKGU9PnNldFRpbWVvdXQoKCk9Pnt0aHJvdyBlfSkpKX0scmVzZXQ6KCk9PntuLnNldFN0YXRlKG4uaW5pdGlhbFN0YXRlKX0sc2V0T3B0aW9uczplPT57bGV0IHQ9RShlLG4ub3B0aW9ucyk7bi5vcHRpb25zPWkodCl9LGdldFN0YXRlOigpPT5uLm9wdGlvbnMuc3RhdGUsc2V0U3RhdGU6ZT0+e24ub3B0aW9ucy5vblN0YXRlQ2hhbmdlPT1udWxsfHxuLm9wdGlvbnMub25TdGF0ZUNoYW5nZShlKX0sX2dldFJvd0lkOihlLHQscik9PihuLm9wdGlvbnMuZ2V0Um93SWQ9PW51bGw/dm9pZCAwOm4ub3B0aW9ucy5nZXRSb3dJZChlLHQscikpPz9gJHtyP1tyLmlkLHRdLmpvaW4oYC5gKTp0fWAsZ2V0Q29yZVJvd01vZGVsOigpPT4obi5fZ2V0Q29yZVJvd01vZGVsfHw9bi5vcHRpb25zLmdldENvcmVSb3dNb2RlbChuKSxuLl9nZXRDb3JlUm93TW9kZWwoKSksZ2V0Um93TW9kZWw6KCk9Pm4uZ2V0UGFnaW5hdGlvblJvd01vZGVsKCksZ2V0Um93OihlLHQpPT57bGV0IHI9KHQ/bi5nZXRQcmVQYWdpbmF0aW9uUm93TW9kZWwoKTpuLmdldFJvd01vZGVsKCkpLnJvd3NCeUlkW2VdO2lmKCFyJiYocj1uLmdldENvcmVSb3dNb2RlbCgpLnJvd3NCeUlkW2VdLCFyKSl0aHJvdyBFcnJvcigpO3JldHVybiByfSxfZ2V0RGVmYXVsdENvbHVtbkRlZjprKCgpPT5bbi5vcHRpb25zLmRlZmF1bHRDb2x1bW5dLGU9PihlPz89e30se2hlYWRlcjplPT57bGV0IHQ9ZS5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZjtyZXR1cm4gdC5hY2Nlc3NvcktleT90LmFjY2Vzc29yS2V5OnQuYWNjZXNzb3JGbj90LmlkOm51bGx9LGNlbGw6ZT0+e3ZhciB0O3JldHVybigodD1lLnJlbmRlclZhbHVlKCkpPT1udWxsfHx0LnRvU3RyaW5nPT1udWxsP3ZvaWQgMDp0LnRvU3RyaW5nKCkpPz9udWxsfSwuLi5uLl9mZWF0dXJlcy5yZWR1Y2UoKGUsdCk9Pk9iamVjdC5hc3NpZ24oZSx0LmdldERlZmF1bHRDb2x1bW5EZWY9PW51bGw/dm9pZCAwOnQuZ2V0RGVmYXVsdENvbHVtbkRlZigpKSx7fSksLi4uZX0pLEEoZSxgZGVidWdDb2x1bW5zYCxgX2dldERlZmF1bHRDb2x1bW5EZWZgKSksX2dldENvbHVtbkRlZnM6KCk9Pm4ub3B0aW9ucy5jb2x1bW5zLGdldEFsbENvbHVtbnM6aygoKT0+W24uX2dldENvbHVtbkRlZnMoKV0sZT0+e2xldCB0PWZ1bmN0aW9uKGUscixpKXtyZXR1cm4gaT09PXZvaWQgMCYmKGk9MCksZS5tYXAoZT0+e2xldCBhPWhlKG4sZSxpLHIpLG89ZTtyZXR1cm4gYS5jb2x1bW5zPW8uY29sdW1ucz90KG8uY29sdW1ucyxhLGkrMSk6W10sYX0pfTtyZXR1cm4gdChlKX0sQShlLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBbGxDb2x1bW5zYCkpLGdldEFsbEZsYXRDb2x1bW5zOmsoKCk9PltuLmdldEFsbENvbHVtbnMoKV0sZT0+ZS5mbGF0TWFwKGU9PmUuZ2V0RmxhdENvbHVtbnMoKSksQShlLGBkZWJ1Z0NvbHVtbnNgLGBnZXRBbGxGbGF0Q29sdW1uc2ApKSxfZ2V0QWxsRmxhdENvbHVtbnNCeUlkOmsoKCk9PltuLmdldEFsbEZsYXRDb2x1bW5zKCldLGU9PmUucmVkdWNlKChlLHQpPT4oZVt0LmlkXT10LGUpLHt9KSxBKGUsYGRlYnVnQ29sdW1uc2AsYGdldEFsbEZsYXRDb2x1bW5zQnlJZGApKSxnZXRBbGxMZWFmQ29sdW1uczprKCgpPT5bbi5nZXRBbGxDb2x1bW5zKCksbi5fZ2V0T3JkZXJDb2x1bW5zRm4oKV0sKGUsdCk9PnQoZS5mbGF0TWFwKGU9PmUuZ2V0TGVhZkNvbHVtbnMoKSkpLEEoZSxgZGVidWdDb2x1bW5zYCxgZ2V0QWxsTGVhZkNvbHVtbnNgKSksZ2V0Q29sdW1uOmU9Pm4uX2dldEFsbEZsYXRDb2x1bW5zQnlJZCgpW2VdfTtPYmplY3QuYXNzaWduKG4sYyk7Zm9yKGxldCBlPTA7ZTxuLl9mZWF0dXJlcy5sZW5ndGg7ZSsrKXtsZXQgdD1uLl9mZWF0dXJlc1tlXTt0PT1udWxsfHx0LmNyZWF0ZVRhYmxlPT1udWxsfHx0LmNyZWF0ZVRhYmxlKG4pfXJldHVybiBufWZ1bmN0aW9uIG50KCl7cmV0dXJuIGU9PmsoKCk9PltlLm9wdGlvbnMuZGF0YV0sdD0+e2xldCBuPXtyb3dzOltdLGZsYXRSb3dzOltdLHJvd3NCeUlkOnt9fSxyPWZ1bmN0aW9uKHQsaSxhKXtpPT09dm9pZCAwJiYoaT0wKTtsZXQgbz1bXTtmb3IobGV0IGM9MDtjPHQubGVuZ3RoO2MrKyl7bGV0IGw9dmUoZSxlLl9nZXRSb3dJZCh0W2NdLGMsYSksdFtjXSxjLGksdm9pZCAwLGE/LmlkKTtpZihuLmZsYXRSb3dzLnB1c2gobCksbi5yb3dzQnlJZFtsLmlkXT1sLG8ucHVzaChsKSxlLm9wdGlvbnMuZ2V0U3ViUm93cyl7dmFyIHM7bC5vcmlnaW5hbFN1YlJvd3M9ZS5vcHRpb25zLmdldFN1YlJvd3ModFtjXSxjKSwocz1sLm9yaWdpbmFsU3ViUm93cykhPW51bGwmJnMubGVuZ3RoJiYobC5zdWJSb3dzPXIobC5vcmlnaW5hbFN1YlJvd3MsaSsxLGwpKX19cmV0dXJuIG99O3JldHVybiBuLnJvd3M9cih0KSxufSxBKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFJvd01vZGVsYCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiBydCgpe3JldHVybiBlPT5rKCgpPT5bZS5nZXRTdGF0ZSgpLnNvcnRpbmcsZS5nZXRQcmVTb3J0ZWRSb3dNb2RlbCgpXSwodCxuKT0+e2lmKCFuLnJvd3MubGVuZ3RofHwhKHQhPW51bGwmJnQubGVuZ3RoKSlyZXR1cm4gbjtsZXQgcj1lLmdldFN0YXRlKCkuc29ydGluZyxpPVtdLGE9ci5maWx0ZXIodD0+ZS5nZXRDb2x1bW4odC5pZCk/LmdldENhblNvcnQoKSksbz17fTthLmZvckVhY2godD0+e2xldCBuPWUuZ2V0Q29sdW1uKHQuaWQpO24mJihvW3QuaWRdPXtzb3J0VW5kZWZpbmVkOm4uY29sdW1uRGVmLnNvcnRVbmRlZmluZWQsaW52ZXJ0U29ydGluZzpuLmNvbHVtbkRlZi5pbnZlcnRTb3J0aW5nLHNvcnRpbmdGbjpuLmdldFNvcnRpbmdGbigpfSl9KTtsZXQgcz1lPT57bGV0IHQ9ZS5tYXAoZT0+KHsuLi5lfSkpO3JldHVybiB0LnNvcnQoKGUsdCk9Pntmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rPTEpe2xldCByPWFbbl0saT1vW3IuaWRdLHM9aS5zb3J0VW5kZWZpbmVkLGM9cj8uZGVzYz8/ITEsbD0wO2lmKHMpe2xldCBuPWUuZ2V0VmFsdWUoci5pZCksaT10LmdldFZhbHVlKHIuaWQpLGE9bj09PXZvaWQgMCxvPWk9PT12b2lkIDA7aWYoYXx8byl7aWYocz09PWBmaXJzdGApcmV0dXJuIGE/LTE6MTtpZihzPT09YGxhc3RgKXJldHVybiBhPzE6LTE7bD1hJiZvPzA6YT9zOi1zfX1pZihsPT09MCYmKGw9aS5zb3J0aW5nRm4oZSx0LHIuaWQpKSxsIT09MClyZXR1cm4gYyYmKGwqPS0xKSxpLmludmVydFNvcnRpbmcmJihsKj0tMSksbH1yZXR1cm4gZS5pbmRleC10LmluZGV4fSksdC5mb3JFYWNoKGU9Pnt2YXIgdDtpLnB1c2goZSksKHQ9ZS5zdWJSb3dzKSE9bnVsbCYmdC5sZW5ndGgmJihlLnN1YlJvd3M9cyhlLnN1YlJvd3MpKX0pLHR9O3JldHVybntyb3dzOnMobi5yb3dzKSxmbGF0Um93czppLHJvd3NCeUlkOm4ucm93c0J5SWR9fSxBKGUub3B0aW9ucyxgZGVidWdUYWJsZWAsYGdldFNvcnRlZFJvd01vZGVsYCwoKT0+ZS5fYXV0b1Jlc2V0UGFnZUluZGV4KCkpKX1mdW5jdGlvbiBRKCl7cmV0dXJuITB9dmFyIGl0PVN5bWJvbChgbWVyZ2UtcHJveHlgKSxhdD17Z2V0KGUsdCxuKXtyZXR1cm4gdD09PWl0P246ZS5nZXQodCl9LGhhcyhlLHQpe3JldHVybiBlLmhhcyh0KX0sc2V0OlEsZGVsZXRlUHJvcGVydHk6USxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtyZXR1cm57Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0KCl7cmV0dXJuIGUuZ2V0KHQpfSxzZXQ6USxkZWxldGVQcm9wZXJ0eTpRfX0sb3duS2V5cyhlKXtyZXR1cm4gZS5rZXlzKCl9fTtmdW5jdGlvbiBvdChlKXtyZXR1cm5gdmFsdWVgaW4gZT9lLnZhbHVlOmV9ZnVuY3Rpb24gJCgpe3ZhciBlPVsuLi5hcmd1bWVudHNdO3JldHVybiBuZXcgUHJveHkoe2dldCh0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSl7bGV0IHI9b3QoZVtuXSlbdF07aWYociE9PXZvaWQgMClyZXR1cm4gcn19LGhhcyh0KXtmb3IobGV0IG49ZS5sZW5ndGgtMTtuPj0wO24tLSlpZih0IGluIG90KGVbbl0pKXJldHVybiEwO3JldHVybiExfSxrZXlzKCl7bGV0IHQ9W107Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdC5wdXNoKC4uLk9iamVjdC5rZXlzKG90KGVbbl0pKSk7cmV0dXJuWy4uLkFycmF5LmZyb20obmV3IFNldCh0KSldfX0sYXQpfXZhciBzdD13KHtwcm9wczpbYHJlbmRlcmAsYHByb3BzYF0sc2V0dXA6ZT0+KCk9PnR5cGVvZiBlLnJlbmRlcj09YGZ1bmN0aW9uYHx8dHlwZW9mIGUucmVuZGVyPT1gb2JqZWN0YD9wKGUucmVuZGVyLGUucHJvcHMpOmUucmVuZGVyfSk7ZnVuY3Rpb24gY3QoZSl7cmV0dXJuICQoZSx7ZGF0YTpmKGUuZGF0YSl9KX1mdW5jdGlvbiBsdCh0KXtsZXQgbj1oKHQuZGF0YSkscj10dCgkKHtzdGF0ZTp7fSxvblN0YXRlQ2hhbmdlOigpPT57fSxyZW5kZXJGYWxsYmFja1ZhbHVlOm51bGwsbWVyZ2VPcHRpb25zKGUsdCl7cmV0dXJuIG4/ey4uLmUsLi4udH06JChlLHQpfX0sbj9jdCh0KTp0KSk7aWYobil7bGV0IGU9dGUodC5kYXRhKTtkKGUsKCk9PntyLnNldFN0YXRlKHQ9Pih7Li4udCxkYXRhOmUudmFsdWV9KSl9LHtpbW1lZGlhdGU6ITB9KX1sZXQgaT1sKHIuaW5pdGlhbFN0YXRlKTtyZXR1cm4gZSgoKT0+e3Iuc2V0T3B0aW9ucyhlPT57bGV0IHI9bmV3IFByb3h5KHt9LHtnZXQ6KGUsdCk9PmkudmFsdWVbdF19KTtyZXR1cm4gJChlLG4/Y3QodCk6dCx7c3RhdGU6JChyLHQuc3RhdGU/P3t9KSxvblN0YXRlQ2hhbmdlOmU9PntlIGluc3RhbmNlb2YgRnVuY3Rpb24/aS52YWx1ZT1lKGkudmFsdWUpOmkudmFsdWU9ZSx0Lm9uU3RhdGVDaGFuZ2U9PW51bGx8fHQub25TdGF0ZUNoYW5nZShlKX19KX0pfSkscn12YXIgdXQ9W2BhcmlhLWxhYmVsYF0sZHQ9dyh7X19uYW1lOmBTb3J0SGVhZGVyQnV0dG9uYCxwcm9wczp7aGVhZGVyOnt9fSxzZXR1cChlKXtsZXQgdD1lLHI9aSgoKT0+dC5oZWFkZXIuY29sdW1uLmdldElzU29ydGVkKCkpLGE9aSgoKT0+ci52YWx1ZT09PWBhc2NgP206ci52YWx1ZT09PWBkZXNjYD9lZTpuZSksYz1pKCgpPT57bGV0IGU9dC5oZWFkZXIuY29sdW1uLmNvbHVtbkRlZi5oZWFkZXI7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYD9lOnQuaGVhZGVyLmNvbHVtbi5pZH0pLGw9aSgoKT0+e2xldCBlPXIudmFsdWU9PT1gYXNjYD9gYXNjZW5kaW5nYDpyLnZhbHVlPT09YGRlc2NgP2BkZXNjZW5kaW5nYDpgbm9uZWA7cmV0dXJuYFNvcnQgYnkgJHtjLnZhbHVlfSwgY3VycmVudGx5ICR7ZX1gfSk7ZnVuY3Rpb24gZCgpe3QuaGVhZGVyLmNvbHVtbi50b2dnbGVTb3J0aW5nKHIudmFsdWU9PT1gYXNjYCl9cmV0dXJuKHQsaSk9PntsZXQgYz1zKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gUygpLG4oYGJ1dHRvbmAse3R5cGU6YGJ1dHRvbmAsImFyaWEtbGFiZWwiOmwudmFsdWUsY2xhc3M6YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSByb3VuZGVkIHB4LTEuNSBweS0wLjUgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6cmluZy0zIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGZvY3VzLXZpc2libGU6b3V0bGluZS0xIGZvY3VzLXZpc2libGU6b3V0bGluZS1yaW5nYCxvbkNsaWNrOmR9LFtlLmhlYWRlci5pc1BsYWNlaG9sZGVyP3koYGAsITApOihTKCksdShmKHN0KSx7a2V5OjAscmVuZGVyOmUuaGVhZGVyLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOmUuaGVhZGVyLmdldENvbnRleHQoKX0sbnVsbCw4LFtgcmVuZGVyYCxgcHJvcHNgXSkpLG8oYyx7aWNvbjphLnZhbHVlLGNsYXNzOngoW2BzaXplLTMgc2hyaW5rLTBgLHIudmFsdWU/YHRleHQtZm9yZWdyb3VuZGA6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZC82MGBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pXSw4LHV0KX19fSksZnQ9dyh7X19uYW1lOmBEYXRhVGFibGVgLHByb3BzOntjb2x1bW5zOnt9LGRhdGE6e30scm93Q2xhc3M6e3R5cGU6RnVuY3Rpb259LGVtcHR5TWVzc2FnZTp7fSxzb3J0aW5nOnt9fSxlbWl0czpbYHVwZGF0ZTpzb3J0aW5nYF0sc2V0dXAoZSx7ZW1pdDpyfSl7bGV0IGk9ZSxzPXIsYz1sKFtdKSxkPWx0KHtnZXQgZGF0YSgpe3JldHVybiBpLmRhdGF9LGdldCBjb2x1bW5zKCl7cmV0dXJuIGkuY29sdW1uc30sZ2V0Q29yZVJvd01vZGVsOm50KCksZ2V0U29ydGVkUm93TW9kZWw6cnQoKSxvblNvcnRpbmdDaGFuZ2U6ZT0+e2xldCB0PWkuc29ydGluZz8/Yy52YWx1ZSxuPXR5cGVvZiBlPT1gZnVuY3Rpb25gP2UodCk6ZTtpLnNvcnRpbmc9PT12b2lkIDA/Yy52YWx1ZT1uOnMoYHVwZGF0ZTpzb3J0aW5nYCxuKX0sc3RhdGU6e2dldCBzb3J0aW5nKCl7cmV0dXJuIGkuc29ydGluZz8/Yy52YWx1ZX19fSk7ZnVuY3Rpb24gcChlKXtpZihlPT09YGFzY2ApcmV0dXJuYGFzY2VuZGluZ2A7aWYoZT09PWBkZXNjYClyZXR1cm5gZGVzY2VuZGluZ2B9cmV0dXJuKHIsaSk9PihTKCksdShmKGFlKSxudWxsLHtkZWZhdWx0OmIoKCk9PltvKGYoZGUpLG51bGwse2RlZmF1bHQ6YigoKT0+WyhTKCEwKSxuKF8sbnVsbCx0KGYoZCkuZ2V0SGVhZGVyR3JvdXBzKCksZT0+KFMoKSx1KGYoVCkse2tleTplLmlkfSx7ZGVmYXVsdDpiKCgpPT5bKFMoITApLG4oXyxudWxsLHQoZS5oZWFkZXJzLGU9PihTKCksdShmKHVlKSx7a2V5OmUuaWQsY2xhc3M6eChlLmNvbHVtbi5jb2x1bW5EZWYubWV0YT8uYWxpZ249PT1gcmlnaHRgP2B0ZXh0LXJpZ2h0YDp2b2lkIDApLCJhcmlhLXNvcnQiOmUuY29sdW1uLmdldENhblNvcnQoKT9wKGUuY29sdW1uLmdldElzU29ydGVkKCkpPz9gbm9uZWA6dm9pZCAwfSx7ZGVmYXVsdDpiKCgpPT5bZS5jb2x1bW4uZ2V0Q2FuU29ydCgpPyhTKCksdShkdCx7a2V5OjAsaGVhZGVyOmUsY2xhc3M6YC1teC0xLjVgfSxudWxsLDgsW2BoZWFkZXJgXSkpOmUuaXNQbGFjZWhvbGRlcj95KGBgLCEwKTooUygpLHUoZihzdCkse2tleToxLHJlbmRlcjplLmNvbHVtbi5jb2x1bW5EZWYuaGVhZGVyLHByb3BzOmUuZ2V0Q29udGV4dCgpfSxudWxsLDgsW2ByZW5kZXJgLGBwcm9wc2BdKSldKSxfOjJ9LDEwMzIsW2BjbGFzc2AsYGFyaWEtc29ydGBdKSkpLDEyOCkpXSksXzoyfSwxMDI0KSkpLDEyOCkpXSksXzoxfSksbyhmKG9lKSxudWxsLHtkZWZhdWx0OmIoKCk9PltmKGQpLmdldFJvd01vZGVsKCkucm93cy5sZW5ndGg9PT0wPyhTKCksdShmKGxlKSx7a2V5OjAsY29sc3BhbjplLmNvbHVtbnMubGVuZ3RoLGNsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx7ZGVmYXVsdDpiKCgpPT5bYShnKGUuZW1wdHlNZXNzYWdlPz9gbm9uZWApLDEpXSksXzoxfSw4LFtgY29sc3BhbmBdKSk6eShgYCwhMCksKFMoITApLG4oXyxudWxsLHQoZihkKS5nZXRSb3dNb2RlbCgpLnJvd3Mscj0+KFMoKSx1KGYoVCkse2tleTpyLmlkLGNsYXNzOngoZS5yb3dDbGFzcz8uKHIub3JpZ2luYWwpKX0se2RlZmF1bHQ6YigoKT0+WyhTKCEwKSxuKF8sbnVsbCx0KHIuZ2V0VmlzaWJsZUNlbGxzKCksZT0+KFMoKSx1KGYoc2UpLHtrZXk6ZS5pZCxjbGFzczp4KGUuY29sdW1uLmNvbHVtbkRlZi5tZXRhPy5hbGlnbj09PWByaWdodGA/YHRleHQtcmlnaHQgdGFidWxhci1udW1zYDp2b2lkIDApfSx7ZGVmYXVsdDpiKCgpPT5bbyhmKHN0KSx7cmVuZGVyOmUuY29sdW1uLmNvbHVtbkRlZi5jZWxsLHByb3BzOmUuZ2V0Q29udGV4dCgpfSxudWxsLDgsW2ByZW5kZXJgLGBwcm9wc2BdKV0pLF86Mn0sMTAzMixbYGNsYXNzYF0pKSksMTI4KSldKSxfOjJ9LDEwMzIsW2BjbGFzc2BdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9KSl9fSk7ZXhwb3J0e3J0IGFzIGEsVCBhcyBjLGFlIGFzIGQsbnQgYXMgaSxzZSBhcyBsLGR0IGFzIG4sZGUgYXMgbyxsdCBhcyByLHVlIGFzIHMsZnQgYXMgdCxvZSBhcyB1fTs=",
|
|
),
|
|
},
|
|
"EntityLink-CovsFjEl.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0F0IGFzIGUsRHQgYXMgdCxMdCBhcyBuLE1uIGFzIHIsUnIgYXMgaSxVIGFzIGEsZGkgYXMgbyx0IGFzIHMsd24gYXMgYyx6dCBhcyBsfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO3ZhciB1PVtgYXJpYS1sYWJlbGAsYHRpdGxlYF0sZD1sKHtfX25hbWU6YEVudGl0eUxpbmtgLHByb3BzOntsYWJlbDp7fSxraW5kOnt9LGlkOnt9fSxzZXR1cChsKXtsZXQgZD1sLGY9cygpLHA9e3VzZXI6e3BhZ2U6YGNvbnN1bWVyc2AscGFyYW1LZXk6YHVzZXJgLG5vdW46YENvbnN1bWVyc2B9LG1vZGVsOntwYWdlOmBtb2RlbHNgLHBhcmFtS2V5OmBtb2RlbGAsbm91bjpgTW9kZWxzYH19O2Z1bmN0aW9uIG0oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTtsZXQgdD1wW2Qua2luZF07Zi5nb1RvKHQucGFnZSx7W3QucGFyYW1LZXldOmQuaWR9KX1yZXR1cm4ocyxkKT0+e2xldCBmPXIoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBjKCksZShgYnV0dG9uYCx7dHlwZTpgYnV0dG9uYCwiYXJpYS1sYWJlbCI6YFZpZXcgJHtsLmxhYmVsfSBpbiAke3BbbC5raW5kXS5ub3VufWAsdGl0bGU6YFZpZXcgJHtsLmxhYmVsfSBpbiAke3BbbC5raW5kXS5ub3VufWAsY2xhc3M6YGlubGluZS1mbGV4IGN1cnNvci1wb2ludGVyIGl0ZW1zLWNlbnRlciBnYXAtMSByb3VuZGVkLXNtIHRleHQtaW5oZXJpdCBob3Zlcjp0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwYCxvbkNsaWNrOm19LFt0KGBzcGFuYCxudWxsLG8obC5sYWJlbCksMSksbihmLHtpY29uOmkoYSksY2xhc3M6YHNpemUtM2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldLDgsdSl9fX0pO2V4cG9ydHtkIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"HomePage-9BEnKqFn.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FuIGFzIGUsQXQgYXMgdCxDIGFzIG4sRHQgYXMgcixFdCBhcyBpLEl0IGFzIGEsTHQgYXMgbyxPciBhcyBzLE90IGFzIGMsUG4gYXMgbCxRbiBhcyB1LFJyIGFzIGQsUyBhcyBmLFNuIGFzIHAsYiBhcyBtLGQgYXMgZWUsZGkgYXMgaCxnIGFzIHRlLGd0IGFzIGcsaCBhcyBuZSxrdCBhcyBfLHJyIGFzIHYsc2kgYXMgeSx0IGFzIGIsdiBhcyB4LHZuIGFzIFMsd24gYXMgQyx4IGFzIHcseSBhcyByZSx6dCBhcyBUfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHt0IGFzIEV9ZnJvbSIuL2luZGV4LUJpVFFfZ0NFLmpzIjtpbXBvcnR7ZiBhcyBELGkgYXMgTyxvIGFzIGssdCBhcyBpZX1mcm9tIi4vYmFkZ2UtbnMwajhPVXIuanMiO2ltcG9ydHtuIGFzIGFlLHIgYXMgb2UsdCBhcyBzZX1mcm9tIi4vZm9yZWNhc3QtQk1Ta2c1WHMuanMiO2ltcG9ydHt0IGFzIEF9ZnJvbSIuL0VudGl0eUxpbmstQ292c0ZqRWwuanMiO2ltcG9ydHt0IGFzIGNlfWZyb20iLi9ldmVudHMtQlBGSUJ2NE0uanMiO2ltcG9ydHtuIGFzIGxlLHIgYXMgdWV9ZnJvbSIuL2V2ZW50cy1maWx0ZXItWEZuaklhUjcuanMiO2ltcG9ydHthIGFzIGRlLGkgYXMgZmUsbiBhcyBwZSxvIGFzIG1lLHIgYXMgaGUsdCBhcyBnZX1mcm9tIi4va3BpLUNVNTJMRG1xLmpzIjt2YXIgaj17Y2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sTT17a2V5OjAsY2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sTj1UKHtfX25hbWU6YEtwaVRpbGVgLHByb3BzOntsYWJlbDp7fSx2YWx1ZTp7fSxkZWx0YTp7fSx0aWVyOntkZWZhdWx0OmBva2B9LHRvOnt9fSxzZXR1cChlKXtsZXQgYT1lLHM9YigpLHU9aSgoKT0+e3N3aXRjaChhLnRpZXIpe2Nhc2Vgd2FybmA6cmV0dXJuYHRleHQtc3RhdHVzLXdhcm5gO2Nhc2VgY3JpdGljYWxgOnJldHVybmB0ZXh0LWRlc3RydWN0aXZlYDtkZWZhdWx0OnJldHVybmB0ZXh0LWZvcmVncm91bmRgfX0pO2Z1bmN0aW9uIHAoKXthLnRvJiZzLmdvVG8oYS50by5wYWdlLGEudG8ucGFyYW1zPz97fSl9cmV0dXJuKGksYSk9PihDKCksYyhsKGUudG8/YGJ1dHRvbmA6YGRpdmApLHt0eXBlOmUudG8/YGJ1dHRvbmA6dm9pZCAwLGNsYXNzOnkoW2BibG9jayB3LWZ1bGwgcm91bmRlZC14bCB0ZXh0LWxlZnRgLGUudG8/YGN1cnNvci1wb2ludGVyIHRyYW5zaXRpb24tY29sb3JzIGhvdmVyOm9wYWNpdHktOTAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTBgOnZvaWQgMF0pLG9uQ2xpY2s6cH0se2RlZmF1bHQ6digoKT0+W28oZChuKSxudWxsLHtkZWZhdWx0OnYoKCk9PltvKGQoZikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xIHB4LTQgcHktM2B9LHtkZWZhdWx0OnYoKCk9PltyKGBzcGFuYCxqLGgoZS5sYWJlbCksMSkscihgc3BhbmAse2NsYXNzOnkoW2B0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0IHRhYnVsYXItbnVtc2AsdS52YWx1ZV0pfSxoKGUudmFsdWUpLDMpLGUuZGVsdGE/KEMoKSx0KGBzcGFuYCxNLGgoZS5kZWx0YSksMSkpOl8oYGAsITApXSksXzoxfSldKSxfOjF9KV0pLF86MX0sOCxbYHR5cGVgLGBjbGFzc2BdKSl9fSksUD17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sRj17a2V5OjEsY2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTEuNWB9LEk9e2NsYXNzOmBmbGV4IG1pbi13LTAgaXRlbXMtY2VudGVyIGdhcC0yYH0sTD17Y2xhc3M6YHctNCBzaHJpbmstMCB0ZXh0LXJpZ2h0IHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sUj17Y2xhc3M6YHNocmluay0wIGZvbnQtbWVkaXVtIHRhYnVsYXItbnVtc2B9LHo9VCh7X19uYW1lOmBUb3BMaXN0YCxwcm9wczp7dGl0bGU6e30saXRlbXM6e30sZW1wdHlUZXh0Ont9fSxzZXR1cChpKXtyZXR1cm4ocyxsKT0+KEMoKSxjKGQobiksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bbyhkKHcpLG51bGwse2RlZmF1bHQ6digoKT0+W28oZChtKSxudWxsLHtkZWZhdWx0OnYoKCk9PlthKGgoaS50aXRsZSksMSldKSxfOjF9KV0pLF86MX0pLG8oZChmKSxudWxsLHtkZWZhdWx0OnYoKCk9PltpLml0ZW1zLmxlbmd0aD09PTA/KEMoKSx0KGBwYCxQLGgoaS5lbXB0eVRleHQpLDEpKTooQygpLHQoYG9sYCxGLFsoQyghMCksdChnLG51bGwsZShpLml0ZW1zLChlLG4pPT4oQygpLHQoYGxpYCx7a2V5OmUuaWQsY2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyB0ZXh0LXNtYH0sW3IoYHNwYW5gLEksW3IoYHNwYW5gLEwsaChuKzEpLDEpLG8oQSx7bGFiZWw6ZS5sYWJlbCxraW5kOmUua2luZCxpZDplLmlkLGNsYXNzOmBtaW4tdy0wIHRydW5jYXRlYH0sbnVsbCw4LFtgbGFiZWxgLGBraW5kYCxgaWRgXSldKSxyKGBzcGFuYCxSLGgoZS52YWx1ZSksMSldKSkpLDEyOCkpXSkpXSksXzoxfSldKSxfOjF9KSl9fSksX2U9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0sdmU9eyJhcmlhLWxhYmVsIjpgS2V5IG1ldHJpY3NgLGNsYXNzOmBncmlkIGdyaWQtY29scy0yIGdhcC0zIHNtOmdyaWQtY29scy0zIGxnOmdyaWQtY29scy00YH0seWU9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtZGVzdHJ1Y3RpdmVgfSxiZT17ImFyaWEtbGFiZWwiOmBUb3Agc3BlbmRlcnMgYW5kIG1vZGVsc2AsY2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTMgbGc6Z3JpZC1jb2xzLTJgfSx4ZT17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sU2U9e2tleToxLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0yYH0sQ2U9e2NsYXNzOmBmbGV4IG1pbi13LTAgaXRlbXMtY2VudGVyIGdhcC0yYH0sd2U9e2NsYXNzOmBtaW4tdy0wIHRydW5jYXRlIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LFRlPXtjbGFzczpgc2hyaW5rLTAgdGFidWxhci1udW1zIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEI9NSxFZT02ZTQsVj1UKHtfX25hbWU6YEhvbWVQYWdlYCxzZXR1cChjKXtsZXQgbD1yZSgpLHk9bmUoKSxiPWNlKCksVD1FKCksQT1pKCgpPT55LnVzYWdlPy50b3RhbC5jb3N0UGVyRGF5TWljcm9Vc2Q/PzApLGo9aSgoKT0+eS51c2FnZT8udG90YWwuY29zdFBlck1vbnRoTWljcm9Vc2Q/PzApLE09aSgoKT0+bWUoeS5vdmVydmlldz8uZ3JvdXBzPz9bXSkpLFA9aSgoKT0+cGUoZ2Uoai52YWx1ZSxNLnZhbHVlKSkpLEY9aSgoKT0+e2xldCBlPWAke2soQS52YWx1ZSl9IHRvZGF5YDtyZXR1cm4gTS52YWx1ZT4wP2Ake2V9IMK3IGJ1ZGdldCAke2soTS52YWx1ZSl9L21vYDpgJHtlfSDCtyBubyBidWRnZXQgc2V0YH0pLEk9aSgoKT0+b2Uoai52YWx1ZSxhZShuZXcgRGF0ZSkpKSxMPWkoKCk9PnNlKEkudmFsdWUsTS52YWx1ZT4wP00udmFsdWUvMWU2OnZvaWQgMCkpLFI9aSgoKT0+SS52YWx1ZT09PW51bGw/YG5vdCBlbm91Z2ggZGF0YSB5ZXRgOmsoSS52YWx1ZSkpLFY9aSgoKT0+TC52YWx1ZS53aWxsRXhjZWVkP2Bjcml0aWNhbGA6YG9rYCksRGU9aSgoKT0+e2lmKEkudmFsdWUhPT1udWxsKXJldHVybiBNLnZhbHVlPD0wP2BubyBidWRnZXQgc2V0YDpMLnZhbHVlLndpbGxFeGNlZWQ/YHByb2plY3RlZCB0byBleGNlZWQgYnVkZ2V0YDpgcHJvamVjdGVkIHdpdGhpbiBidWRnZXRgfSksT2U9aSgoKT0+eS51c2FnZT8udG90YWwucmVxdWVzdHNQZXJNaW51dGU/PzApLEg9aSgoKT0+ZmUoeS5vdmVydmlldz8ucHJvdmlkZXJzPz9bXSkpLGtlPWkoKCk9PmhlKEgudmFsdWUucmF0ZSkpLEFlPWkoKCk9PntsZXQgZT1ILnZhbHVlLnJhdGU7cmV0dXJuIGU9PT1udWxsP2BubyB0cmFmZmljYDplPD0wP2AwJWA6YCR7TWF0aC5jZWlsKGUqMTAwKX0lYH0pLFU9aSgoKT0+YCR7SC52YWx1ZS5mYWlsdXJlc30vJHtILnZhbHVlLmF0dGVtcHRzfSBhdHRlbXB0cyBpbiB0aGUgbGFzdCBtaW51dGVgKSxXPWkoKCk9PmRlKHkub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10pKSxHPWkoKCk9Pnkub3ZlcnZpZXc/Lndhcm5pbmdzLmxlbmd0aD8/MCksSz1pKCgpPT55Lm92ZXJ2aWV3Py5wcmljaW5nLnVucHJpY2VkPz8wKSxxPXMoW10pLEo9cyhbXSksWT1zKGBgKSxYPTA7YXN5bmMgZnVuY3Rpb24gWigpe2lmKCFsLmlzQXV0aGVudGljYXRlZClyZXR1cm47bGV0IGU9KytYO3RyeXtsZXRbdCxuXT1hd2FpdCBQcm9taXNlLmFsbChbeChlZSh7a2luZDpgdXNlcmAsd2luZG93OlQud2luZG93LHNwYW46VC5zcGFuLG1ldHJpY3M6W2Bjb3N0YF0sbGltaXQ6Qn0pKSx4KGAvYWRtaW4vYXBpL3VzYWdlL21vZGVscz9tZXRyaWM9Y29zdCZ3aW5kb3c9JHtULndpbmRvd30mc3Bhbj0ke1Quc3Bhbn0mbGltaXQ9JHtCfWApXSk7aWYoZSE9PVgpcmV0dXJuO3EudmFsdWU9dC5yb3dzLm1hcChlPT4oe2lkOmUuaWQsbGFiZWw6ZS5pZCx2YWx1ZTprKGUudmFsdWVzLmNvc3Q/PzApLGtpbmQ6YHVzZXJgfSkpLEoudmFsdWU9bi5tb2RlbHMubWFwKGU9Pih7aWQ6ZS5pZCxsYWJlbDplLmlkLHZhbHVlOmsoZS52YWx1ZSksa2luZDpgbW9kZWxgfSkpLFkudmFsdWU9YGB9Y2F0Y2godCl7aWYoZSE9PVgpcmV0dXJuO1kudmFsdWU9dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9fWxldCBRO3UoKCk9PlQucmFuZ2UsKCk9PnZvaWQgWigpKTtmdW5jdGlvbiBqZShlKXtyZXR1cm4gbGVbZV0/P2V9bGV0ICQ9aSgoKT0+Yi5ldmVudHMuc2xpY2UoMCw4KSk7cmV0dXJuIFMoKCk9PntiLnN0YXJ0UG9sbGluZygpLFE9dGUoe2ludGVydmFsTXM6RWUsdGljazooKT0+dm9pZCBaKCl9KSxRLnN0YXJ0KCl9KSxwKCgpPT57Yi5zdG9wUG9sbGluZygpLFE/LnN0b3AoKX0pLChpLHMpPT4oQygpLHQoYGRpdmAsX2UsW3IoYHNlY3Rpb25gLHZlLFtvKE4se2xhYmVsOmBTcGVuZCAoTVREKWAsdmFsdWU6ZChrKShqLnZhbHVlKSxkZWx0YTpGLnZhbHVlLHRpZXI6UC52YWx1ZSx0bzp7cGFnZTpgc3BlbmRgfX0sbnVsbCw4LFtgdmFsdWVgLGBkZWx0YWAsYHRpZXJgXSksbyhOLHtsYWJlbDpgUHJvamVjdGVkIG1vbnRoLWVuZGAsdmFsdWU6Ui52YWx1ZSxkZWx0YTpEZS52YWx1ZSx0aWVyOlYudmFsdWUsdG86e3BhZ2U6YHNwZW5kYH19LG51bGwsOCxbYHZhbHVlYCxgZGVsdGFgLGB0aWVyYF0pLG8oTix7bGFiZWw6YFJlcXVlc3RzL21pbmAsdmFsdWU6ZChPKShPZS52YWx1ZSl9LG51bGwsOCxbYHZhbHVlYF0pLG8oTix7bGFiZWw6YEVycm9yIHJhdGUgKGxhc3QgbWludXRlKWAsdmFsdWU6QWUudmFsdWUsZGVsdGE6VS52YWx1ZSx0aWVyOmtlLnZhbHVlLHRvOntwYWdlOmByZWxpYWJpbGl0eWB9fSxudWxsLDgsW2B2YWx1ZWAsYGRlbHRhYCxgdGllcmBdKSxvKE4se2xhYmVsOmBPcGVuIGJyZWFrZXJzIChwZXIgcmVwbGljYSlgLHZhbHVlOlN0cmluZyhXLnZhbHVlKSx0aWVyOlcudmFsdWU+MD9gd2FybmA6YG9rYCx0bzp7cGFnZTpgbW9kZWxzYH19LG51bGwsOCxbYHZhbHVlYCxgdGllcmBdKSxvKE4se2xhYmVsOmBDb25maWcgd2FybmluZ3NgLHZhbHVlOlN0cmluZyhHLnZhbHVlKSx0aWVyOkcudmFsdWU+MD9gd2FybmA6YG9rYCx0bzp7cGFnZTpgY29uZmlnYH19LG51bGwsOCxbYHZhbHVlYCxgdGllcmBdKSxvKE4se2xhYmVsOmBVbnByaWNlZCBtb2RlbHNgLHZhbHVlOlN0cmluZyhLLnZhbHVlKSx0aWVyOksudmFsdWU+MD9gd2FybmA6YG9rYCx0bzp7cGFnZTpgc3BlbmRgfX0sbnVsbCw4LFtgdmFsdWVgLGB0aWVyYF0pXSksWS52YWx1ZT8oQygpLHQoYHBgLHllLGBUb3AgbGlzdHMgZmFpbGVkIHRvIGxvYWQ6IGAraChZLnZhbHVlKSwxKSk6XyhgYCwhMCkscihgc2VjdGlvbmAsYmUsW28oeix7dGl0bGU6YFRvcCA1IHVzZXJzIGJ5IGNvc3RgLGl0ZW1zOnEudmFsdWUsImVtcHR5LXRleHQiOmBObyBzcGVuZCBpbiB0aGlzIHJhbmdlIHlldC5gfSxudWxsLDgsW2BpdGVtc2BdKSxvKHose3RpdGxlOmBUb3AgNSBtb2RlbHMgYnkgY29zdGAsaXRlbXM6Si52YWx1ZSwiZW1wdHktdGV4dCI6YE5vIHNwZW5kIGluIHRoaXMgcmFuZ2UgeWV0LmB9LG51bGwsOCxbYGl0ZW1zYF0pXSksbyhkKG4pLG51bGwse2RlZmF1bHQ6digoKT0+W28oZCh3KSxudWxsLHtkZWZhdWx0OnYoKCk9PltvKGQobSksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bLi4uc1swXXx8PVthKGBMYXRlc3QgZXZlbnRzYCwtMSldXSksXzoxfSldKSxfOjF9KSxvKGQoZiksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bJC52YWx1ZS5sZW5ndGg9PT0wPyhDKCksdChgcGAseGUsYE5vIGV2ZW50cyByZWNvcmRlZCB5ZXQuYCkpOihDKCksdChgb2xgLFNlLFsoQyghMCksdChnLG51bGwsZSgkLnZhbHVlLChlLG4pPT4oQygpLHQoYGxpYCx7a2V5OmAke2UudGltZX0tJHtlLnJlcGxpY2F9LSR7bn1gLGNsYXNzOmBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtMyB0ZXh0LXNtYH0sW3IoYHNwYW5gLENlLFtvKGQoaWUpLHt2YXJpYW50OmQodWUpKGUua2luZCksY2xhc3M6YHNocmluay0wIGZvbnQtbm9ybWFsYH0se2RlZmF1bHQ6digoKT0+W2EoaChqZShlLmtpbmQpKSwxKV0pLF86Mn0sMTAzMixbYHZhcmlhbnRgXSkscihgc3BhbmAsd2UsaChlLm1lc3NhZ2UpLDEpXSkscihgc3BhbmAsVGUsaChkKEQpKGUudGltZSkpLDEpXSkpKSwxMjgpKV0pKV0pLF86MX0pXSksXzoxfSldKSl9fSk7ZXhwb3J0e1YgYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"ModelsPage-3Nt3gvlN.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FuIGFzIGUsQXQgYXMgdCxDIGFzIG4sRHQgYXMgcixFciBhcyBpLEV0IGFzIGEsSXQgYXMgbyxKIGFzIHMsTHQgYXMgYyxNbiBhcyBsLE90IGFzIHUsUW4gYXMgZCxSciBhcyBmLFMgYXMgcCxYIGFzIG0sWHQgYXMgaCxfIGFzIGVlLGIgYXMgZyxiciBhcyB0ZSxkaSBhcyBfLGd0IGFzIHYsaCBhcyBuZSxrdCBhcyB5LGx0IGFzIHJlLG90IGFzIGllLHJyIGFzIGIsc2kgYXMgeCx0IGFzIGFlLHYgYXMgUyx2biBhcyBDLHduIGFzIHcseCBhcyBULHp0IGFzIEV9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e2QgYXMgb2UsdCBhcyBELHUgYXMgc2V9ZnJvbSIuL0NhcmREZXNjcmlwdGlvbi1JZE90MzE3Yy5qcyI7aW1wb3J0e2EgYXMgY2UsYyBhcyBPLGkgYXMgbGUsbiBhcyB1ZSxvIGFzIGRlLHIgYXMgZmUscyBhcyBwZSx0IGFzIG1lfWZyb20iLi9zZWFyY2gtZXhwYW5kLUIxcW5LMUg1LmpzIjtpbXBvcnR7dCBhcyBrfWZyb20iLi9pbmRleC1CaVRRX2dDRS5qcyI7aW1wb3J0e3QgYXMgaGV9ZnJvbSIuL0RhdGFUYWJsZS1EVnVlTkZ1QS5qcyI7aW1wb3J0e2EgYXMgZ2UsZCBhcyBBLGcgYXMgaixoIGFzIF9lLGwgYXMgTSxtIGFzIHZlLG4gYXMgeWUsbyBhcyBOLHAgYXMgYmUsdCBhcyBQfWZyb20iLi9iYWRnZS1uczBqOE9Vci5qcyI7aW1wb3J0e3QgYXMgRn1mcm9tIi4vQ29tcGFjdE51bWJlci1CMWloUVpINy5qcyI7aW1wb3J0e24gYXMgeGUsdCBhcyBTZX1mcm9tIi4vdXNlU2VhcmNoUXVlcnktRHlzQnQtSW4uanMiO2ltcG9ydHt0IGFzIENlfWZyb20iLi9FbnRpdHlMaW5rLUNvdnNGakVsLmpzIjtpbXBvcnR7YSBhcyBJLGMgYXMgTCxpIGFzIHdlLG4gYXMgVGUsbyBhcyBSLHIgYXMgeixzIGFzIEVlLHQgYXMgQn1mcm9tIi4vcHJvdmlkZXItcmF0ZS1EVTdPZ1NlQi5qcyI7aW1wb3J0e3QgYXMgVn1mcm9tIi4vY2F0YWxvZy1DLVRmS0xWWi5qcyI7aW1wb3J0e3QgYXMgSH1mcm9tIi4vcmVsaWFiaWxpdHktMEtpSlNqVFAuanMiO2Z1bmN0aW9uIFUoZSx0KXtsZXQgbj10LnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybiBuP2UuZmlsdGVyKGU9PmUuaWQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhuKXx8ZS5hbGlhc2VzLnNvbWUoZT0+ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKG4pKSk6ZX1mdW5jdGlvbiBEZShlLHQsbil7bGV0IHI9bmV3IE1hcCh0Lm1vZGVscy5tYXAoZT0+W2UuaWQsZV0pKSxpPW5ldyBNYXAoKG4ucm93cz8/W10pLm1hcChlPT5bZS5pZCxlXSkpLGE9W107Zm9yKGxldCB0IG9mIGUucHJvdmlkZXJzKWZvcihsZXQgZSBvZiB0Lm1vZGVscyl7bGV0IG49ci5nZXQoZS5pZCksbz1pLmdldChlLmlkKTthLnB1c2goe2lkOmUuaWQsbW9kZWw6ZS5tb2RlbCxwcm92aWRlck5hbWU6dC5uYW1lLGNvbnRleHRUb2tlbnM6ZS5jb250ZXh0VG9rZW5zLGlucHV0UGVyTVRva1VzZDplLmlucHV0UGVyTVRva1VzZCxvdXRwdXRQZXJNVG9rVXNkOmUub3V0cHV0UGVyTVRva1VzZCxwcmljZVNvdXJjZTplLnByaWNlU291cmNlLGRpc3BsYXlGcmVlOmUuZGlzcGxheUZyZWUsYWxpYXNlczplLmFsaWFzZXM/P1tdLHJlcXVlc3RzOm4/LnJlcXVlc3RzPz8wLHRva2Vuc0luOm4/LnRva2Vuc0luPz8wLHRva2Vuc091dDpuPy50b2tlbnNPdXQ/PzAsY29zdE1pY3JvVXNkOm4/LmNvc3RNaWNyb1VzZD8/MCxwNTBNczpvPy5wNTBNcyxwOTVNczpvPy5wOTVNcyxhdHRlbXB0czpvPy5hdHRlbXB0cz8/MCxmYWlsdXJlczpvPy5mYWlsdXJlcz8/MH0pfXJldHVybiBhfXZhciBXPXtvdmVycmlkZTpgb3ZlcnJpZGVgLGJ1aWx0aW46YGJ1aWx0aW5gLGxpdGVsbG06YGxpdGVsbG1gfTtmdW5jdGlvbiBPZShlKXtpZihlLnByaWNlU291cmNlPT09YHVucHJpY2VkYClyZXR1cm4gaChQLHthczpgc3BhbmAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6YE5vIHByaWNpbmcgcnVsZSBtYXRjaGVkIOKAlCBiaWxsZWQgYXMgJDAuYH0sKCk9PmB1bnByaWNlZGApO2lmKGUucHJpY2VTb3VyY2U9PT1gZnJlZWApcmV0dXJuIGgoUCx7YXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsYCx0aXRsZTpgQ29uZmlndXJlZCBmcmVlIChtb2RlbE1ldGEuZnJlZSkg4oCUIHByaWNlZCBhdCAkMC5gfSwoKT0+YGZyZWVgKTtsZXQgdD1lLmlucHV0UGVyTVRva1VzZCE9PXZvaWQgMCYmZS5vdXRwdXRQZXJNVG9rVXNkIT09dm9pZCAwLG49ZS5wcmljZVNvdXJjZTtyZXR1cm4gaChgc3BhbmAse2NsYXNzOmBpbmxpbmUtZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xLjVgfSxbaChgc3BhbmAse30sdD9BKGUuaW5wdXRQZXJNVG9rVXNkLGUub3V0cHV0UGVyTVRva1VzZCk6YOKAlGApLGgoUCx7YXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbGB9LCgpPT5XW25dKV0pfWZ1bmN0aW9uIGtlKGUpe3JldHVybiBlLnByaWNlU291cmNlPT09YHVucHJpY2VkYD8tMTplLmlucHV0UGVyTVRva1VzZD8/MH1mdW5jdGlvbiBHKCl7cmV0dXJuW3tpZDpgaWRgLGhlYWRlcjpgTW9kZWxgLGFjY2Vzc29yRm46ZT0+ZS5pZCxjZWxsOih7cm93OmV9KT0+aChgc3BhbmAse2NsYXNzOmBpbmxpbmUtZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xLjVgfSxbaChPLHtpZDplLm9yaWdpbmFsLmlkLGNvbnRleHRUb2tlbnM6ZS5vcmlnaW5hbC5jb250ZXh0VG9rZW5zLGlucHV0UGVyTVRva1VzZDplLm9yaWdpbmFsLmlucHV0UGVyTVRva1VzZCxvdXRwdXRQZXJNVG9rVXNkOmUub3JpZ2luYWwub3V0cHV0UGVyTVRva1VzZH0pLGgoQ2Use2xhYmVsOmUub3JpZ2luYWwuaWQsa2luZDpgbW9kZWxgLGlkOmUub3JpZ2luYWwuaWR9KV0pfSx7aWQ6YGNvbnRleHRgLGhlYWRlcjpgQ29udGV4dGAsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLmNvbnRleHRUb2tlbnM/PzAsY2VsbDooe3JvdzplfSk9PmgoYHNwYW5gLHtjbGFzczpgdGFidWxhci1udW1zYH0sZS5vcmlnaW5hbC5jb250ZXh0VG9rZW5zPT09dm9pZCAwP2DigJRgOmdlKGUub3JpZ2luYWwuY29udGV4dFRva2VucykpfSx7aWQ6YHByaWNlYCxoZWFkZXI6YFByaWNlYCxhY2Nlc3NvckZuOmU9PmtlKGUpLGNlbGw6KHtyb3c6ZX0pPT5PZShlLm9yaWdpbmFsKX0se2lkOmBmcmVlYCxoZWFkZXI6YEZyZWVgLGFjY2Vzc29yRm46ZT0+KyEhZS5kaXNwbGF5RnJlZSxjZWxsOih7cm93OmV9KT0+ZS5vcmlnaW5hbC5kaXNwbGF5RnJlZT9oKFAse2FzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6YCc6ZnJlZScgc3VmZml4IG1vZGVsIOKAlCBkaXNwbGF5LW9ubHksIGJpbGxpbmcgZm9sbG93cyB0aGUgUHJpY2UgY29sdW1uJ3Mgb3duIHNvdXJjZWB9LCgpPT5gZnJlZWApOmgoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYOKAlGApfSx7aWQ6YGFsaWFzZXNgLGhlYWRlcjpgQWxpYXNlc2AsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PmUuYWxpYXNlcy5qb2luKGAsIGApLGNlbGw6KHtyb3c6ZX0pPT57bGV0IHQ9ZS5vcmlnaW5hbC5hbGlhc2VzO3JldHVybiB0Lmxlbmd0aD09PTA/aChgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxg4oCUYCk6aChgZGl2YCx7Y2xhc3M6YGZsZXggZmxleC13cmFwIGdhcC0xYH0sdC5tYXAoZT0+aChQLHtrZXk6ZSxhczpgc3BhbmAsdmFyaWFudDpgb3V0bGluZWAsY2xhc3M6YGZvbnQtbW9ubyBmb250LW5vcm1hbGB9LCgpPT5lKSkpfX0se2lkOmByZXF1ZXN0c2AsaGVhZGVyOmBSZXF1ZXN0c2AsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnJlcXVlc3RzLGNlbGw6KHtyb3c6ZX0pPT5oKEYse3ZhbHVlOmUub3JpZ2luYWwucmVxdWVzdHN9KX0se2lkOmB0b2tlbnNJbmAsaGVhZGVyOmBUb2tlbnMgaW5gLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS50b2tlbnNJbixjZWxsOih7cm93OmV9KT0+aChGLHt2YWx1ZTplLm9yaWdpbmFsLnRva2Vuc0lufSl9LHtpZDpgdG9rZW5zT3V0YCxoZWFkZXI6YFRva2VucyBvdXRgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS50b2tlbnNPdXQsY2VsbDooe3JvdzplfSk9PmgoRix7dmFsdWU6ZS5vcmlnaW5hbC50b2tlbnNPdXR9KX0se2lkOmBjb3N0YCxoZWFkZXI6YENvc3RgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS5jb3N0TWljcm9Vc2QsY2VsbDooe3JvdzplfSk9PntsZXQgdD1lLm9yaWdpbmFsO3JldHVybih0LnByaWNlU291cmNlPT09YGZyZWVgfHx0LmRpc3BsYXlGcmVlKSYmdC5jb3N0TWljcm9Vc2Q9PT0wP2goUCx7YXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsYCx0aXRsZTpgcHJpY2VkIGF0ICQwIHBlciB0b2tlbmB9LCgpPT5gZnJlZWApOk4odC5jb3N0TWljcm9Vc2QpfX0se2lkOmBwNTBgLGhlYWRlcjpgcDUwYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUucDUwTXM/Py0xLGNlbGw6KHtyb3c6ZX0pPT5oKGBzcGFuYCx7Y2xhc3M6YHRhYnVsYXItbnVtc2B9LGUub3JpZ2luYWwucDUwTXM9PT12b2lkIDA/YOKAlGA6TShlLm9yaWdpbmFsLnA1ME1zKSl9LHtpZDpgcDk1YCxoZWFkZXI6YHA5NWAsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnA5NU1zPz8tMSxjZWxsOih7cm93OmV9KT0+aChgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxlLm9yaWdpbmFsLnA5NU1zPT09dm9pZCAwP2DigJRgOk0oZS5vcmlnaW5hbC5wOTVNcykpfSx7aWQ6YGVycm9yUmF0ZWAsaGVhZGVyOmBFcnJvciByYXRlYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PlIoZS5hdHRlbXB0cyxlLmZhaWx1cmVzKT8/LTEsY2VsbDooe3JvdzplfSk9PmgoYHNwYW5gLHtjbGFzczpgdGFidWxhci1udW1zYH0sVGUoUihlLm9yaWdpbmFsLmF0dGVtcHRzLGUub3JpZ2luYWwuZmFpbHVyZXMpKSl9XX12YXIgQWU9RSh7X19uYW1lOmBNb2RlbENhdGFsb2dUYWJsZWAscHJvcHM6e3Jvd3M6e30scXVlcnk6e30sbGF0ZW5jeUVuYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sbG9hZGluZzp7dHlwZTpCb29sZWFufX0sZW1pdHM6W2B1cGRhdGU6cXVlcnlgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgaT1lLHM9dCxsPWEoKCk9PlUoaS5yb3dzLGkucXVlcnkpKSxkPUcoKSxtPWEoKCk9PmkubG9hZGluZz9gbG9hZGluZ+KApmA6aS5yb3dzLmxlbmd0aD09PTA/YG5vIG1vZGVscyBjb25maWd1cmVkYDppLnF1ZXJ5LnRyaW0oKT9gbm8gbW9kZWxzIG1hdGNoICIke2kucXVlcnl9ImA6YG5vbmVgKTtyZXR1cm4odCxpKT0+KHcoKSx1KGYobiksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bYyhmKFQpLG51bGwse2RlZmF1bHQ6YigoKT0+W2MoZihnKSxudWxsLHtkZWZhdWx0OmIoKCk9PlsuLi5pWzFdfHw9W28oYE1vZGVsIGNhdGFsb2dgLC0xKV1dKSxfOjF9KSxjKGYoRCksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bLi4uaVsyXXx8PVtvKGAgRXZlcnkgY29uZmlndXJlZCBtb2RlbDogcHJpY2Ugc291cmNlLCBwZXItbW9kZWwgdXNhZ2UgZm9yIHRoZSBjdXJyZW50IHJhbmdlLCBmbGVldCBwNTAvcDk1LCBhbmQgZXJyb3IgcmF0ZS4gYCwtMSldXSksXzoxfSksYyh4ZSx7Im1vZGVsLXZhbHVlIjplLnF1ZXJ5LHBsYWNlaG9sZGVyOmBTZWFyY2ggbW9kZWxzIG9yIGFsaWFzZXMuLi5gLGNsYXNzOmBtdC0yIG1heC13LXNtYCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6aVswXXx8PWU9PnMoYHVwZGF0ZTpxdWVyeWAsZSl9LG51bGwsOCxbYG1vZGVsLXZhbHVlYF0pXSksXzoxfSksYyhmKHApLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0OmIoKCk9PltlLmxhdGVuY3lFbmFibGVkP3koYGAsITApOih3KCksdShmKG9lKSx7a2V5OjAsdmFyaWFudDpgd2FybmB9LHtkZWZhdWx0OmIoKCk9PltjKGYoc2UpLG51bGwse2RlZmF1bHQ6YigoKT0+Wy4uLmlbM118fD1bbyhgIExhdGVuY3kgcGVyY2VudGlsZXMgKHA1MC9wOTUpIGFyZSBvZmYgZm9yIHRoaXMgZGVwbG95bWVudC4gRW5hYmxlIGAsLTEpLHIoYGNvZGVgLG51bGwsYGFkbWluLnN0YXRzLmxhdGVuY3lgLC0xKSxvKGAgdG8gc2VlIHRoZW0uIGAsLTEpXV0pLF86MX0pXSksXzoxfSkpLGMoaGUse2NvbHVtbnM6ZihkKSxkYXRhOmwudmFsdWUsImVtcHR5LW1lc3NhZ2UiOm0udmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSkpfX0pLEs9eyJhcmlhLWhpZGRlbiI6YHRydWVgfSxqZT17Y2xhc3M6YHNyLW9ubHlgfSxNZT1FKHtfX25hbWU6YFByb3ZpZGVyUmF0ZUJhZGdlYCxwcm9wczp7YXR0ZW1wdHNEYXk6e30sZmFpbHVyZXNEYXk6e30sYXR0ZW1wdHNNaW51dGU6e30sZmFpbHVyZXNNaW51dGU6e319LHNldHVwKGUpe2xldCB0PWUsbj1hKCgpPT5MKHQuYXR0ZW1wdHNEYXksdC5mYWlsdXJlc0RheSkpLGk9YSgoKT0+RWUobi52YWx1ZSkpLG89YSgoKT0+aS52YWx1ZT09PWBuby10cmFmZmljYD9gbm8gdHJhZmZpY2A6eihuLnZhbHVlKSkscz1hKCgpPT50LmF0dGVtcHRzTWludXRlPT09dm9pZCAwfHx0LmZhaWx1cmVzTWludXRlPT09dm9pZCAwP0IodC5hdHRlbXB0c0RheSx0LmZhaWx1cmVzRGF5KTpJKHQuYXR0ZW1wdHNNaW51dGUsdC5mYWlsdXJlc01pbnV0ZSkpLGM9YSgoKT0+aS52YWx1ZT09PWBzZXZlcmVgP2BkZXN0cnVjdGl2ZWA6aS52YWx1ZT09PWBoZWFsdGh5YD9gc2Vjb25kYXJ5YDpgb3V0bGluZWApLGw9YSgoKT0+aS52YWx1ZT09PWBkZWdyYWRlZGA/YGJvcmRlci1zdGF0dXMtd2Fybi80MCB0ZXh0LXN0YXR1cy13YXJuYDppLnZhbHVlPT09YG5vLXRyYWZmaWNgP2B0ZXh0LW11dGVkLWZvcmVncm91bmRgOmBgKTtyZXR1cm4oZSx0KT0+KHcoKSx1KGYoUCkse2FzOmBzcGFuYCx2YXJpYW50OmMudmFsdWUsY2xhc3M6eChbbC52YWx1ZSxgZm9udC1ub3JtYWwgdGFidWxhci1udW1zYF0pLHRpdGxlOnMudmFsdWV9LHtkZWZhdWx0OmIoKCk9PltyKGBzcGFuYCxLLF8oby52YWx1ZSksMSkscihgc3BhbmAsamUsXyhzLnZhbHVlKSwxKV0pLF86MX0sOCxbYHZhcmlhbnRgLGBjbGFzc2AsYHRpdGxlYF0pKX19KSxOZT1yZShgbW9kZWxzYCx7c3RhdGU6KCk9Pih7cm93czpbXSxwcm92aWRlclBlcmY6W10scGVyZldpbmRvdzp7d2luZG93OmBkYXlgLHNwYW46MH0sbGF0ZW5jeUVuYWJsZWQ6ITEsbG9hZGluZzohMSxsYXN0VXBkYXRlZDpudWxsLGVycm9yOmBgLHJlcUlkOjB9KSxhY3Rpb25zOnthc3luYyBmZXRjaCgpe2xldCBlPSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCB0PVYoKSxuPWsoKTtpZihhd2FpdCB0LmVuc3VyZUxvYWRlZCgpLGUhPT10aGlzLnJlcUlkKXJldHVybjtpZighdC5kYXRhKXt0aGlzLmVycm9yPXQuZXJyb3J8fGBjYXRhbG9nIHVuYXZhaWxhYmxlYDtyZXR1cm59bGV0IHI9SChuLndpbmRvdyxuLnNwYW4pLFtpLGEsb109YXdhaXQgUHJvbWlzZS5hbGwoW1MoYC9hZG1pbi9hcGkvdXNhZ2UvbW9kZWxzP3dpbmRvdz0ke24ud2luZG93fSZzcGFuPSR7bi5zcGFufSZsaW1pdD0xMDAmZGV0YWlsPTEmbWV0cmljPXJlcWApLFMoYC9hZG1pbi9hcGkvcGVyZm9ybWFuY2U/a2luZD1tb2RlbCZ3aW5kb3c9JHtyLndpbmRvd30mc3Bhbj0ke3Iuc3Bhbn1gKSxTKGAvYWRtaW4vYXBpL3BlcmZvcm1hbmNlP2tpbmQ9cHJvdmlkZXImd2luZG93PSR7ci53aW5kb3d9JnNwYW49JHtyLnNwYW59YCldKTtpZihlIT09dGhpcy5yZXFJZClyZXR1cm47dGhpcy5yb3dzPURlKHQuZGF0YSxpLGEpLHRoaXMucHJvdmlkZXJQZXJmPW8ucm93cz8/W10sdGhpcy5wZXJmV2luZG93PXIsdGhpcy5sYXRlbmN5RW5hYmxlZD1hLmxhdGVuY3lFbmFibGVkLHRoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUsdGhpcy5lcnJvcj1gYH1jYXRjaCh0KXtpZihlIT09dGhpcy5yZXFJZHx8dCBpbnN0YW5jZW9mIGVlJiYodC5zdGF0dXM9PT00MDF8fHQuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj10IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KX1maW5hbGx5e2U9PT10aGlzLnJlcUlkJiYodGhpcy5sb2FkaW5nPSExKX19fX0pLFBlPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LEZlPXtjbGFzczpgZ3JpZCBnYXAtNCBzbTpncmlkLWNvbHMtM2B9LEllPXtjbGFzczpgZm9udC1tZWRpdW1gfSxMZT17a2V5OjAsY2xhc3M6YGZsZXggaXRlbXMtc3RhcnQgZ2FwLTEuNSB0ZXh0LWRlc3RydWN0aXZlYH0sUmU9e2NsYXNzOmBmb250LW1lZGl1bWB9LHplPXtrZXk6MCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sQmU9e2NsYXNzOmBmb250LW1lZGl1bWB9LFZlPXtrZXk6MCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sSGU9e2tleToxLGNsYXNzOmBweS02IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sVWU9e2tleToyLGNsYXNzOmBweS02IHRleHQtY2VudGVyIHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sV2U9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEdlPXtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSxLZT1bYGFyaWEtbGFiZWxgLGB0aXRsZWAsYG9uQ2xpY2tgXSxxZT17Y2xhc3M6YHNyLW9ubHlgfSxKZT17Y2xhc3M6YGZsZXggZmxleC0xIGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMyBnYXAteS0xIHByLTIgdGV4dC1sZWZ0YH0sWWU9e2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSxYZT17Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sWmU9e2NsYXNzOmBtYi0zIGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLXgtNiBnYXAteS0xLjUgdGV4dC1zbSBzbTpncmlkLWNvbHMtM2B9LFFlPXtjbGFzczpgYnJlYWstYWxsYH0sJGU9e2tleTowfSxldD17a2V5OjF9LHR0PXtjbGFzczpgdGV4dC1kZXN0cnVjdGl2ZWB9LG50PXtrZXk6MCxjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LHJ0PXtrZXk6MCx0aXRsZTpgY29udGV4dCB3aW5kb3dgLGNsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0YWJ1bGFyLW51bXNgfSxpdD17a2V5OjEsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYXQ9e2tleTowLGNsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHE9RSh7X19uYW1lOmBQcm92aWRlckhlYWx0aFBhbmVsYCxzZXR1cChlZSl7bGV0IHJlPW5lKCksUz1OZSgpLEM9YSgoKT0+cmUub3ZlcnZpZXcpLEU9YWUoKTtmdW5jdGlvbiBrKGUpe0UuZ29UbyhgbW9kZWxzYCx7cTpgJHtlfS9gfSl9bGV0IEE9aSh7bWFudWFsbHlFeHBhbmRlZDpuZXcgU2V0LG1hbnVhbGx5Q29sbGFwc2VkOm5ldyBTZXR9KSx7cXVlcnk6Tixub3JtYWxpemVkOkYsaGFzUXVlcnk6SX09U2UoKTtmdW5jdGlvbiBMKGUsdCl7cmV0dXJuIGooZSx0KS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKEYudmFsdWUpfWZ1bmN0aW9uIFRlKGUpe3JldHVybiBlLm1vZGVscy5zb21lKHQ9PkwoZS5uYW1lLHQpKX1mdW5jdGlvbiBSKGUpe3JldHVybiBlLmFsaWFzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoRi52YWx1ZSl8fGUudGFyZ2V0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoRi52YWx1ZSl9bGV0IHo9YSgoKT0+e2xldCBlPUMudmFsdWU/LnByb3ZpZGVycz8/W107cmV0dXJuIEkudmFsdWU/ZS5maWx0ZXIoVGUpOmV9KSxFZT1hKCgpPT57bGV0IGU9Qy52YWx1ZT8uYWxpYXNlcz8/W107cmV0dXJuIEkudmFsdWU/ZS5maWx0ZXIoUik6ZX0pLEI9YSgoKT0+dWUoQSxJLnZhbHVlLHoudmFsdWUubWFwKGU9PmUubmFtZSkpKTtmdW5jdGlvbiBWKGUpe2ZlKEEsZSxCLnZhbHVlLmhhcyhlKSl9bGV0IEg9YSh7Z2V0OigpPT5BcnJheS5mcm9tKEIudmFsdWUpLHNldDplPT57bGV0IHQ9bmV3IFNldChlKTtmb3IobGV0IGUgb2YgQi52YWx1ZSl0LmhhcyhlKXx8VihlKTtmb3IobGV0IGUgb2YgdClCLnZhbHVlLmhhcyhlKXx8VihlKX19KTtkKE4sZT0+e2UudHJpbSgpPT09YGAmJm1lKEEpfSk7ZnVuY3Rpb24gVShlKXtyZXR1cm4gSS52YWx1ZT9lLm1vZGVscy5maWx0ZXIodD0+TChlLm5hbWUsdCkpOmUubW9kZWxzfWxldCBEZT17YXR0ZW1wdHNEYXk6MCxmYWlsdXJlc0RheTowfTtmdW5jdGlvbiBXKGUsdCl7cmV0dXJuIGUubW9kZWxSYXRlcz8uW3RdPz9EZX1mdW5jdGlvbiBPZShlLHQpe2xldCBuPVcoZSx0KTtyZXR1cm4gd2Uobi5hdHRlbXB0c0RheSxuLmZhaWx1cmVzRGF5KX1sZXQga2U9e307ZnVuY3Rpb24gRyhlLHQpe3JldHVybiBlLm1vZGVsTWV0YT8uW3RdPz9rZX1mdW5jdGlvbiBBZShlKXtzd2l0Y2goZSl7Y2FzZWBvcGVuYDpyZXR1cm5gZGVzdHJ1Y3RpdmVgO2Nhc2VgaGFsZi1vcGVuYDpyZXR1cm5gc2Vjb25kYXJ5YDtkZWZhdWx0OnJldHVybn19ZnVuY3Rpb24gSyhlKXtsZXQgdD1iZShlLm9wZW5VbnRpbCk7cmV0dXJuIHQ/YCR7ZS5oZWFsdGhTdGF0ZX0gKCR7dH0pYDplLmhlYWx0aFN0YXRlfWZ1bmN0aW9uIGplKGUpe3JldHVybiBlPT09YG9wZW5gP2B0ZXh0LWRlc3RydWN0aXZlYDpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH1mdW5jdGlvbiBxKGUpe3JldHVybiBlLmxhdGVuY3k/LnN0cmVhbWluZ31mdW5jdGlvbiBKKGUpe3JldHVybiBlLmxhdGVuY3k/Lltgbm9uLXN0cmVhbWluZ2BdfWZ1bmN0aW9uIFkoZSl7cmV0dXJuIGUuY291bnQ9PT12b2lkIDA/YG5vIG9ic2VydmF0aW9ucyBjb3VudGVkYDpgJHtlLmNvdW50fSAke2UuY291bnQ9PT0xP2BvYnNlcnZhdGlvbmA6YG9ic2VydmF0aW9uc2B9IG9uIHRoaXMgcmVwbGljYWB9ZnVuY3Rpb24gWCgpe2xldCBlPUMudmFsdWU/LnJlcGxpY2E7cmV0dXJuYFBlci1yZXBsaWNhICgke2U/YHJlcGxpY2EgJHtlfWA6YHRoaXMgcmVwbGljYWB9KSwgaW4tcHJvY2VzcyBvbmx5IOKAlCBub3QgYSBmbGVldC13aWRlIGF2ZXJhZ2UgYWNyb3NzIHRoaXMgZGVwbG95bWVudOKAmXMgcmVwbGljYXMuYH1mdW5jdGlvbiBvdChlKXtyZXR1cm5gQXZlcmFnZSB0aW1lIHRvIGZpcnN0IGJ5dGUsIHRoZSBsb2FkLXNlbnNpdGl2ZSByZWFkaW5nIGZvciBzdHJlYW1pbmcgdHJhZmZpYy4gJHtZKGUpfS4gJHtYKCl9YH1mdW5jdGlvbiBzdChlKXtyZXR1cm5gQXZlcmFnZSB0b3RhbCByZXNwb25zZSB0aW1lLCBpbmNsdWRpbmcgZ2VuZXJhdGlvbiDigJQgbm90IGEgbG9hZC1zZW5zaXRpdmUgc2lnbmFsIGxpa2Ugc3RyZWFtaW5nIHR0ZmIsIHNpbmNlIHRoaXMgcHJvdmlkZXIgYnVmZmVycyB0aGUgd2hvbGUgY29tcGxldGlvbiBiZWZvcmUgc2VuZGluZyBhbnl0aGluZy4gJHtZKGUpfS4gJHtYKCl9YH1mdW5jdGlvbiBaKGUpe3JldHVybiBlLnByb3ZlbmFuY2U/LmVzdGltYXRlZH1mdW5jdGlvbiBRKGUpe3JldHVybiBlLnByb3ZlbmFuY2U/LnVuYmlsbGVkfWZ1bmN0aW9uIGN0KGUpe2xldCB0PWUucmVxdWVzdHM9PT0xP2BgOmBzYDtyZXR1cm5gJHtlLnJlcXVlc3RzfSBub24tc3RyZWFtaW5nIHJlc3BvbnNlJHt0fSBjYXJyaWVkIG5vIHVzYWdlIGZyb20gdGhlIHByb3ZpZGVyIOKAlCBwcm9tcHQgdG9rZW5zIHdlcmUgZXN0aW1hdGVkIGZyb20gcmVxdWVzdCBib2R5IHNpemUgaW5zdGVhZCAoJHtlLnRva2Vuc30gdG9rZW5zIGJpbGxlZCBmcm9tIHRoZSBlc3RpbWF0ZSksIGNvbXBsZXRpb24gYmlsbGVkIGFzIHplcm8uICR7WCgpfWB9ZnVuY3Rpb24gbHQoZSl7bGV0IHQ9ZS5yZXF1ZXN0cz09PTE/YGA6YHNgO3JldHVybmAke2UucmVxdWVzdHN9IHN0cmVhbWluZyByZXNwb25zZSR7dH0gY2FycmllZCBubyB1c2FnZSBmcm9tIHRoZSBwcm92aWRlciDigJQgdGhlIHJlcXVlc3Qgd2FzIGNvdW50ZWQgYnV0IHplcm8gdG9rZW5zIHdlcmUgYmlsbGVkLiBJZiB0aGlzIGtlZXBzIGhhcHBlbmluZywgdGhpcyBwcm92aWRlciBtYXkgYmUgc2VydmluZyBjb21wbGV0aW9ucyBlbnRpcmVseSBmcmVlIGFnYWluc3QgZXZlcnkgYnVkZ2V0LiAke1goKX1gfWZ1bmN0aW9uICQoZSl7cmV0dXJuIFMucHJvdmlkZXJQZXJmLmZpbmQodD0+dC5pZD09PWUpfWZ1bmN0aW9uIHV0KGUpe2xldHt3aW5kb3c6dCxzcGFuOm59PVMucGVyZldpbmRvdztyZXR1cm5gRmxlZXQtd2lkZSAoZXZlcnkgcmVwbGljYSBjb21iaW5lZCkgJHtlPT09YHA1MGA/YG1lZGlhbmA6YDk1dGggcGVyY2VudGlsZWB9IHJlc3BvbnNlIHRpbWUsIG92ZXIgdGhlIGxhc3QgJHtufSAke3R9JHtuPT09MT9gYDpgc2B9LmB9ZnVuY3Rpb24gZHQoZSl7bGV0e3dpbmRvdzp0LHNwYW46bn09Uy5wZXJmV2luZG93O3JldHVybmAke2U9PT1gdGltZW91dHNgP2ByZXF1ZXN0cyB0aGF0IGV4Y2VlZGVkIHRoZSBkZWFkbGluZWA6YHJlcXVlc3RzIGZhaWxlZCBhd2F5IGZyb20gdGhpcyBwcm92aWRlciB0byBhbm90aGVyIGNhbmRpZGF0ZWB9LCBmbGVldC13aWRlLCBvdmVyIHRoZSBsYXN0ICR7bn0gJHt0fSR7bj09PTE/YGA6YHNgfS5gfWxldCBmdD1be2lkOmBhbGlhc2AsaGVhZGVyOmBBbGlhc2AsYWNjZXNzb3JGbjplPT5lLmFsaWFzLGNlbGw6KHtyb3c6ZX0pPT5oKE8se2lkOmUub3JpZ2luYWwuYWxpYXMsY29udGV4dFRva2VuczplLm9yaWdpbmFsLm1vZGVsTWV0YT8uY29udGV4dFRva2VucyxpbnB1dFBlck1Ub2tVc2Q6ZS5vcmlnaW5hbC5tb2RlbE1ldGE/LmlucHV0UGVyTVRva1VzZCxvdXRwdXRQZXJNVG9rVXNkOmUub3JpZ2luYWwubW9kZWxNZXRhPy5vdXRwdXRQZXJNVG9rVXNkfSl9LHtpZDpgdGFyZ2V0YCxoZWFkZXI6YFRhcmdldGAsYWNjZXNzb3JGbjplPT5lLnRhcmdldCxjZWxsOih7cm93OmV9KT0+aChgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxlLm9yaWdpbmFsLnRhcmdldCl9XSxwdD1hKCgpPT5DLnZhbHVlPy5hbGlhc2VzLmxlbmd0aD9JLnZhbHVlP2BubyBhbGlhc2VzIG1hdGNoICIke04udmFsdWV9ImA6YG5vbmVgOmBub25lIGNvbmZpZ3VyZWRgKTtyZXR1cm4oaSxhKT0+e2xldCBkPWwoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiB3KCksdChgZGl2YCxQZSxbcihgZGl2YCxGZSxbYyhmKG4pLG51bGwse2RlZmF1bHQ6YigoKT0+W2MoZihUKSxudWxsLHtkZWZhdWx0OmIoKCk9PltjKGYoZykse2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHtkZWZhdWx0OmIoKCk9PltjKGQse2ljb246Qy52YWx1ZT8ucmVkaXMuY29uZmlndXJlZD9mKHMpOmYobSksY2xhc3M6eChbQy52YWx1ZT8ucmVkaXMuY29uZmlndXJlZD9gdGV4dC1jaGFydC1yZXF1ZXN0c2A6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsYHNpemUtMy41YF0pLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYCxgY2xhc3NgXSksYVsyXXx8PW8oYCBSZWRpcyBgLC0xKV0pLF86MX0pXSksXzoxfSksYyhmKHApLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMSB0ZXh0LXNtYH0se2RlZmF1bHQ6YigoKT0+W3IoYHBgLEllLF8oQy52YWx1ZT8ucmVkaXMuY29uZmlndXJlZD9gQ29uZmlndXJlZGA6YE5vdCBjb25maWd1cmVkYCksMSksQy52YWx1ZT8ucmVkaXMubGFzdEVycj8odygpLHQoYHBgLExlLFtjKGQse2ljb246ZihpZSksY2xhc3M6YG10LTAuNSBzaXplLTMuNSBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkscihgc3BhbmAsbnVsbCxfKEMudmFsdWUucmVkaXMubGFzdEVycikrXyhmKHllKShDLnZhbHVlLnJlZGlzLmxhc3RFcnJBdCkpLDEpXSkpOnkoYGAsITApXSksXzoxfSldKSxfOjF9KSxjKGYobiksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bYyhmKFQpLG51bGwse2RlZmF1bHQ6YigoKT0+W2MoZihnKSx7Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0se2RlZmF1bHQ6YigoKT0+W2MoZCx7aWNvbjpDLnZhbHVlPy5jYWNoZS5lbmFibGVkP2Yocyk6ZihtKSxjbGFzczp4KFtDLnZhbHVlPy5jYWNoZS5lbmFibGVkP2B0ZXh0LWNoYXJ0LXJlcXVlc3RzYDpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYCxgc2l6ZS0zLjVgXSksImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gLGBjbGFzc2BdKSxhWzNdfHw9byhgIFJlc3BvbnNlIGNhY2hlIGAsLTEpXSksXzoxfSldKSxfOjF9KSxjKGYocCkse2NsYXNzOmB0ZXh0LXNtYH0se2RlZmF1bHQ6YigoKT0+W3IoYHBgLFJlLF8oQy52YWx1ZT8uY2FjaGUuZW5hYmxlZD9gRW5hYmxlZGA6YERpc2FibGVkYCksMSksQy52YWx1ZT8uY2FjaGUuZW5hYmxlZD8odygpLHQoYHBgLHplLGB0dGwgYCtfKEMudmFsdWUuY2FjaGUudHRsKSwxKSk6eShgYCwhMCldKSxfOjF9KV0pLF86MX0pLGMoZihuKSxudWxsLHtkZWZhdWx0OmIoKCk9PltjKGYoVCksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bYyhmKGcpLHtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx7ZGVmYXVsdDpiKCgpPT5bYyhkLHtpY29uOkMudmFsdWU/LnJldHJ5LmVuYWJsZWQ/ZihzKTpmKG0pLGNsYXNzOngoW0MudmFsdWU/LnJldHJ5LmVuYWJsZWQ/YHRleHQtY2hhcnQtcmVxdWVzdHNgOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgLGBzaXplLTMuNWBdKSwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmAsYGNsYXNzYF0pLGFbNF18fD1vKGAgUmV0cnkgYCwtMSldKSxfOjF9KV0pLF86MX0pLGMoZihwKSx7Y2xhc3M6YHRleHQtc21gfSx7ZGVmYXVsdDpiKCgpPT5bcihgcGAsQmUsXyhDLnZhbHVlPy5yZXRyeS5lbmFibGVkP2BFbmFibGVkYDpgRGlzYWJsZWRgKSwxKSxDLnZhbHVlPy5yZXRyeS5lbmFibGVkPyh3KCksdChgcGAsVmUsYCBhdHRlbXB0cyBgK18oQy52YWx1ZS5yZXRyeS5hdHRlbXB0cykrYCwgYmFja29mZiBgK18oQy52YWx1ZS5yZXRyeS5iYWNrb2ZmKSwxKSk6eShgYCwhMCldKSxfOjF9KV0pLF86MX0pXSksYyhmKG4pLG51bGwse2RlZmF1bHQ6YigoKT0+W2MoZihUKSxudWxsLHtkZWZhdWx0OmIoKCk9PltjKGYoZyksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bLi4uYVs1XXx8PVtvKGBQcm92aWRlcnNgLC0xKV1dKSxfOjF9KSxjKGYoRCksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bLi4uYVs2XXx8PVtvKGAgRXZlcnkgY29uZmlndXJlZCB1cHN0cmVhbSwgaXRzIGxhc3QgZGlzY292ZXJ5IHJlZnJlc2gsIGFuZCBmbGVldC13aWRlIHBlcmZvcm1hbmNlLiBTZWFyY2ggZmlsdGVycyBwcm92aWRlcnMgYW5kIGFsaWFzZXMgYnkgbW9kZWwgaWQuIGAsLTEpXV0pLF86MX0pLGMoeGUse21vZGVsVmFsdWU6ZihOKSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6YVswXXx8PWU9PnRlKE4pP04udmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBTZWFyY2ggbW9kZWxzIG9yIGFsaWFzZXMuLi5gLGNsYXNzOmBtdC0yIG1heC13LXNtYH0sbnVsbCw4LFtgbW9kZWxWYWx1ZWBdKV0pLF86MX0pLGMoZihwKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgfSx7ZGVmYXVsdDpiKCgpPT5bZihTKS5sYXRlbmN5RW5hYmxlZD95KGBgLCEwKToodygpLHUoZihvZSkse2tleTowLHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDpiKCgpPT5bYyhmKHNlKSxudWxsLHtkZWZhdWx0OmIoKCk9PlsuLi5hWzddfHw9W28oYCBGbGVldCBwNTAvcDk1IGFyZSBvZmYgZm9yIHRoaXMgZGVwbG95bWVudC4gRW5hYmxlIGAsLTEpLHIoYGNvZGVgLG51bGwsYGFkbWluLnN0YXRzLmxhdGVuY3lgLC0xKSxvKGAgdG8gc2VlIHRoZW0uIGAsLTEpXV0pLF86MX0pXSksXzoxfSkpLEMudmFsdWU/LnByb3ZpZGVycy5sZW5ndGg/ZihJKSYmei52YWx1ZS5sZW5ndGg9PT0wPyh3KCksdChgcGAsVWUsYCBubyBwcm92aWRlcnMgbWF0Y2ggImArXyhmKE4pKStgIiBgLDEpKToodygpLHQodix7a2V5OjN9LFtyKGBwYCxXZSxfKFgoKSkrYCBGbGVldCBwNTAvcDk1L3RpbWVvdXRzL2ZhaWxvdmVycyBiZWxvdyBhcmUgZmxlZXQtd2lkZSwgbm90IHBlci1yZXBsaWNhLmAsMSksYyhmKHBlKSx7bW9kZWxWYWx1ZTpILnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjphWzFdfHw9ZT0+SC52YWx1ZT1lLHR5cGU6YG11bHRpcGxlYCxjbGFzczpgcm91bmRlZC1tZCBib3JkZXIgcHgtM2B9LHtkZWZhdWx0OmIoKCk9PlsodyghMCksdCh2LG51bGwsZSh6LnZhbHVlLG49Pih3KCksdShmKGNlKSx7a2V5Om4ubmFtZSx2YWx1ZTpuLm5hbWV9LHtkZWZhdWx0OmIoKCk9PltyKGBkaXZgLEdlLFtyKGBidXR0b25gLHt0eXBlOmBidXR0b25gLGNsYXNzOmBzaHJpbmstMCBjdXJzb3ItcG9pbnRlciByb3VuZGVkLXNtIHB5LTIuNSBmb250LW1lZGl1bSBob3Zlcjp0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwYCwiYXJpYS1sYWJlbCI6YFZpZXcgJHtuLm5hbWV9J3MgbW9kZWxzIGluIHRoZSBNb2RlbHMgdGFibGVgLHRpdGxlOmBWaWV3ICR7bi5uYW1lfSdzIG1vZGVscyBpbiB0aGUgTW9kZWxzIHRhYmxlYCxvbkNsaWNrOmU9Pmsobi5uYW1lKX0sXyhuLm5hbWUpLDksS2UpLGMoZihsZSkseyJoZWFkZXItY2xhc3MiOmBmbGV4LTFgfSx7ZGVmYXVsdDpiKCgpPT5bcihgc3BhbmAscWUsYFByb3ZpZGVyIGArXyhuLm5hbWUpK2AgZGV0YWlsc2AsMSkscihgc3BhbmAsSmUsW2MoZihQKSx7YXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsYH0se2RlZmF1bHQ6YigoKT0+W28oXyhuLnR5cGUpLDEpXSksXzoyfSwxMDI0KSxyKGBzcGFuYCxZZSxfKG4ubW9kZWxDb3VudCkrYCBtb2RlbHNgLDEpLGMoTWUseyJhdHRlbXB0cy1kYXkiOm4uYXR0ZW1wdHNEYXksImZhaWx1cmVzLWRheSI6bi5mYWlsdXJlc0RheSwiYXR0ZW1wdHMtbWludXRlIjpuLmF0dGVtcHRzTWludXRlLCJmYWlsdXJlcy1taW51dGUiOm4uZmFpbHVyZXNNaW51dGV9LG51bGwsOCxbYGF0dGVtcHRzLWRheWAsYGZhaWx1cmVzLWRheWAsYGF0dGVtcHRzLW1pbnV0ZWAsYGZhaWx1cmVzLW1pbnV0ZWBdKSxuLmhlYWx0aFN0YXRlPT09YGNsb3NlZGA/eShgYCwhMCk6KHcoKSx1KGYoUCkse2tleTowLGFzOmBzcGFuYCx2YXJpYW50OkFlKG4uaGVhbHRoU3RhdGUpLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6bi5oZWFsdGhTdGF0ZT09PWBvcGVuYD9gZGlzY292ZXJ5IGlzIGJhY2tpbmcgb2ZmIGFmdGVyIHJlcGVhdGVkIGZhaWx1cmVzYDpgYSBkaXNjb3ZlcnkgcHJvYmUgaXMgZGVjaWRpbmcgd2hldGhlciB0byByZWNvdmVyYH0se2RlZmF1bHQ6YigoKT0+W28oXyhLKG4pKSwxKV0pLF86Mn0sMTAzMixbYHZhcmlhbnRgLGB0aXRsZWBdKSkscShuKT8uYXZnVHRmYk1zPT09dm9pZCAwP3koYGAsITApOih3KCksdShmKFApLHtrZXk6MSxhczpgc3BhbmAsdmFyaWFudDpgb3V0bGluZWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6b3QocShuKSl9LHtkZWZhdWx0OmIoKCk9PltvKGAgc3RyZWFtaW5nIHR0ZmIgYCtfKGYoTSkocShuKS5hdmdUdGZiTXMpKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKSxKKG4pPy5hdmdEdXJhdGlvbk1zPT09dm9pZCAwP3koYGAsITApOih3KCksdShmKFApLHtrZXk6Mixhczpgc3BhbmAsdmFyaWFudDpgb3V0bGluZWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6c3QoSihuKSl9LHtkZWZhdWx0OmIoKCk9PltvKGAgbm9uLXN0cmVhbWluZyBhdmcgYCtfKGYoTSkoSihuKS5hdmdEdXJhdGlvbk1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksJChuLm5hbWUpPy5wNTBNcz09PXZvaWQgMD95KGBgLCEwKToodygpLHUoZihQKSx7a2V5OjMsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOnV0KGBwNTBgKX0se2RlZmF1bHQ6YigoKT0+W28oYCBmbGVldCBwNTAgYCtfKGYoTSkoJChuLm5hbWUpLnA1ME1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksJChuLm5hbWUpPy5wOTVNcz09PXZvaWQgMD95KGBgLCEwKToodygpLHUoZihQKSx7a2V5OjQsYXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOnV0KGBwOTVgKX0se2RlZmF1bHQ6YigoKT0+W28oYCBmbGVldCBwOTUgYCtfKGYoTSkoJChuLm5hbWUpLnA5NU1zKSksMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSksKCQobi5uYW1lKT8udGltZW91dHM/PzApPjA/KHcoKSx1KGYoUCkse2tleTo1LGFzOmBzcGFuYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOmR0KGB0aW1lb3V0c2ApfSx7ZGVmYXVsdDpiKCgpPT5bbyhfKCQobi5uYW1lKS50aW1lb3V0cykrYCB0aW1lb3V0cyBgLDEpXSksXzoyfSwxMDMyLFtgdGl0bGVgXSkpOnkoYGAsITApLCgkKG4ubmFtZSk/LmZhaWxvdmVycz8/MCk+MD8odygpLHUoZihQKSx7a2V5OjYsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6ZHQoYGZhaWxvdmVyc2ApfSx7ZGVmYXVsdDpiKCgpPT5bbyhfKCQobi5uYW1lKS5mYWlsb3ZlcnMpK2AgZmFpbG92ZXJzIGAsMSldKSxfOjJ9LDEwMzIsW2B0aXRsZWBdKSk6eShgYCwhMCksWihuKT8odygpLHUoZihQKSx7a2V5OjcsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbm9ybWFsIHRhYnVsYXItbnVtc2AsdGl0bGU6Y3QoWihuKSl9LHtkZWZhdWx0OmIoKCk9PltvKGAgZXN0aW1hdGVkIGArXyhaKG4pLnJlcXVlc3RzKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTp5KGBgLCEwKSxRKG4pPyh3KCksdShmKFApLHtrZXk6OCxhczpgc3BhbmAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgLGNsYXNzOmBmb250LW5vcm1hbCB0YWJ1bGFyLW51bXNgLHRpdGxlOmx0KFEobikpfSx7ZGVmYXVsdDpiKCgpPT5bbyhgIHVuYmlsbGVkIGArXyhRKG4pLnJlcXVlc3RzKSwxKV0pLF86Mn0sMTAzMixbYHRpdGxlYF0pKTp5KGBgLCEwKSxuLmxhc3RFcnI/KHcoKSx1KGQse2tleTo5LGljb246ZihpZSksY2xhc3M6YHNpemUtMy41IHNocmluay0wIHRleHQtZGVzdHJ1Y3RpdmVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pKTp5KGBgLCEwKSxyKGBzcGFuYCxYZSxfKGYoX2UpKG4uZGlzY292ZXJ5RW5hYmxlZCxuLmxhc3RSZWZyZXNoKSksMSldKV0pLF86Mn0sMTAyNCldKSxjKGYoZGUpLG51bGwse2RlZmF1bHQ6YigoKT0+W3IoYGRsYCxaZSxbcihgZGl2YCxudWxsLFthWzhdfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQmFzZSBVUkxgLC0xKSxyKGBkZGAsUWUsXyhuLmJhc2VVcmwpLDEpXSkscihgZGl2YCxudWxsLFthWzldfHw9cihgZHRgLHtjbGFzczpgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGFzdCByZWZyZXNoYCwtMSkscihgZGRgLG51bGwsXyhmKHZlKShuLmRpc2NvdmVyeUVuYWJsZWQsbi5sYXN0UmVmcmVzaCkpLDEpXSksbi5oZWFsdGhTdGF0ZT09PWBjbG9zZWRgP3koYGAsITApOih3KCksdChgZGl2YCwkZSxbYVsxMF18fD1yKGBkdGAse2NsYXNzOmB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBEaXNjb3ZlcnkgaGVhbHRoYCwtMSkscihgZGRgLHtjbGFzczp4KGplKG4uaGVhbHRoU3RhdGUpKX0sXyhLKG4pKSwzKV0pKSxuLmxhc3RFcnI/KHcoKSx0KGBkaXZgLGV0LFthWzExXXx8PXIoYGR0YCx7Y2xhc3M6YHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYExhc3QgZXJyb3JgLC0xKSxyKGBkZGAsdHQsXyhuLmxhc3RFcnIpLDEpXSkpOnkoYGAsITApXSksVShuKS5sZW5ndGg/KHcoKSx0KGBkaXZgLG50LFsodyghMCksdCh2LG51bGwsZShVKG4pLGU9Pih3KCksdChgc3BhbmAse2tleTplLGNsYXNzOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTFgfSxbYyhPLHtpZDpmKGopKG4ubmFtZSxlKSwiY29udGV4dC10b2tlbnMiOkcobixlKS5jb250ZXh0VG9rZW5zLCJpbnB1dC1wZXItbS10b2stdXNkIjpHKG4sZSkuaW5wdXRQZXJNVG9rVXNkLCJvdXRwdXQtcGVyLW0tdG9rLXVzZCI6RyhuLGUpLm91dHB1dFBlck1Ub2tVc2R9LG51bGwsOCxbYGlkYCxgY29udGV4dC10b2tlbnNgLGBpbnB1dC1wZXItbS10b2stdXNkYCxgb3V0cHV0LXBlci1tLXRvay11c2RgXSksYyhDZSx7bGFiZWw6ZihqKShuLm5hbWUsZSksa2luZDpgbW9kZWxgLGlkOmYoaikobi5uYW1lLGUpfSxudWxsLDgsW2BsYWJlbGAsYGlkYF0pLEcobixlKS5jb250ZXh0VG9rZW5zPT09dm9pZCAwP3koYGAsITApOih3KCksdChgc3BhbmAscnQsXyhmKGdlKShHKG4sZSkuY29udGV4dFRva2VucykpLDEpKSxPZShuLGUpPyh3KCksdShNZSx7a2V5OjEsImF0dGVtcHRzLWRheSI6VyhuLGUpLmF0dGVtcHRzRGF5LCJmYWlsdXJlcy1kYXkiOlcobixlKS5mYWlsdXJlc0RheX0sbnVsbCw4LFtgYXR0ZW1wdHMtZGF5YCxgZmFpbHVyZXMtZGF5YF0pKTp5KGBgLCEwKV0pKSksMTI4KSldKSk6KHcoKSx0KGBwYCxpdCxgbm8gbW9kZWxzIGtub3duIHlldGApKV0pLF86Mn0sMTAyNCldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSw4LFtgbW9kZWxWYWx1ZWBdKV0sNjQpKToodygpLHQoYHBgLEhlLGBub25lYCkpXSksXzoxfSldKSxfOjF9KSxjKGYobiksbnVsbCx7ZGVmYXVsdDpiKCgpPT5bYyhmKFQpLG51bGwse2RlZmF1bHQ6YigoKT0+W2MoZihnKSxudWxsLHtkZWZhdWx0OmIoKCk9PlsuLi5hWzEyXXx8PVtvKGBNb2RlbCBhbGlhc2VzYCwtMSldXSksXzoxfSksYyhmKEQpLG51bGwse2RlZmF1bHQ6YigoKT0+Wy4uLmFbMTNdfHw9W28oYE9wZXJhdG9yLWRlZmluZWQgYWxpYXMg4oaSIHRhcmdldCBtb2RlbCBtYXBwaW5ncy5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLGMoZihwKSxudWxsLHtkZWZhdWx0OmIoKCk9PltjKGhlLHtjb2x1bW5zOmZ0LGRhdGE6RWUudmFsdWUsImVtcHR5LW1lc3NhZ2UiOnB0LnZhbHVlfSxudWxsLDgsW2BkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSksQy52YWx1ZT8udmVyc2lvbj8odygpLHQoYHBgLGF0LGBWZXJzaW9uOiBgK18oQy52YWx1ZS52ZXJzaW9uKSwxKSk6eShgYCwhMCldKX19fSksSj17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxZPXtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LWRlc3RydWN0aXZlYH0sWD1FKHtfX25hbWU6YE1vZGVsc1BhZ2VgLHNldHVwKGUpe2xldCBuPWsoKSxyPU5lKCksaT1hZSgpLG89YSh7Z2V0OigpPT5pLnBhcmFtcy5xPz9pLnBhcmFtcy5tb2RlbD8/YGAsc2V0OmU9PntsZXR7bW9kZWw6dCwuLi5ufT1pLnBhcmFtcztpLmdvVG8oYG1vZGVsc2Asey4uLm4scTplfSl9fSk7cmV0dXJuIEMoKCk9PnZvaWQgci5mZXRjaCgpKSxkKCgpPT5uLnJhbmdlLCgpPT52b2lkIHIuZmV0Y2goKSksKGUsbik9Pih3KCksdChgZGl2YCxKLFtjKHEpLGYocikuZXJyb3I/KHcoKSx0KGBwYCxZLF8oZihyKS5lcnJvciksMSkpOnkoYGAsITApLGMoQWUse3Jvd3M6ZihyKS5yb3dzLHF1ZXJ5Om8udmFsdWUsImxhdGVuY3ktZW5hYmxlZCI6ZihyKS5sYXRlbmN5RW5hYmxlZCxsb2FkaW5nOmYocikubG9hZGluZywib25VcGRhdGU6cXVlcnkiOm5bMF18fD1lPT5vLnZhbHVlPWV9LG51bGwsOCxbYHJvd3NgLGBxdWVyeWAsYGxhdGVuY3ktZW5hYmxlZGAsYGxvYWRpbmdgXSldKSl9fSk7ZXhwb3J0e1ggYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"Presence-CuQUGFyS.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0eyRuIGFzIGUsJHQgYXMgdCxBbiBhcyBuLEFyIGFzIHIsQXQgYXMgaSxCbiBhcyBhLEJ0IGFzIG8sQ24gYXMgcyxDciBhcyBjLEN0IGFzIGwsRG4gYXMgdSxEciBhcyBkLER0IGFzIGYsRSBhcyBwLEVuIGFzIG0sRXIgYXMgaCxFdCBhcyBnLEZuIGFzIGVlLEZyIGFzIF8sRnQgYXMgdixHbiBhcyB5LEd0IGFzIGIsSG4gYXMgdGUsSHIgYXMgbmUsSHQgYXMgcmUsSW4gYXMgaWUsSXIgYXMgYWUsSXQgYXMgb2UsSm4gYXMgc2UsSnQgYXMgY2UsS24gYXMgbGUsS3QgYXMgdWUsTG4gYXMgZGUsTHIgYXMgeCxMdCBhcyBmZSxNbiBhcyBwZSxNciBhcyBtZSxNdCBhcyBoZSxObiBhcyBnZSxOciBhcyBfZSxOdCBhcyB2ZSxPbiBhcyBTLE9yIGFzIEMsT3QgYXMgdyxQbiBhcyBULFByIGFzIEUsUHQgYXMgRCxRbiBhcyBPLFF0IGFzIGssUm4gYXMgQSxSciBhcyBqLFJ0IGFzIE0sU24gYXMgTixTciBhcyBQLFN0IGFzIEYsVG4gYXMgeWUsVHIgYXMgYmUsVHQgYXMgeGUsVW4gYXMgU2UsVXQgYXMgQ2UsVm4gYXMgd2UsVnIgYXMgSSxWdCBhcyBUZSxXbiBhcyBMLFd0IGFzIEVlLFhuIGFzIERlLFh0IGFzIFIsWW4gYXMgT2UsWXQgYXMga2UsWm4gYXMgQWUsWnQgYXMgamUsX24gYXMgTWUsX3IgYXMgTmUsX3QgYXMgUGUsYW4gYXMgRmUsYXIgYXMgSWUsYm4gYXMgTGUsYnIgYXMgUmUsYnQgYXMgemUsY24gYXMgQmUsY3IgYXMgVmUsZGkgYXMgSGUsZG4gYXMgeixkciBhcyBVZSxkdCBhcyBXZSxlbiBhcyBHZSxlciBhcyBLZSxmaSBhcyBCLGZuIGFzIHFlLGZyIGFzIEplLGZ0IGFzIFllLGduIGFzIFhlLGdyIGFzIFplLGd0IGFzIFFlLGhuIGFzICRlLGhyIGFzIGV0LGh0IGFzIHR0LGluIGFzIFYsaXIgYXMgbnQsam4gYXMgcnQsanIgYXMgaXQsanQgYXMgYXQsayBhcyBvdCxrbiBhcyBzdCxrciBhcyBjdCxrdCBhcyBsdCxsaSBhcyB1dCxsbiBhcyBkdCxsciBhcyBmdCxtbiBhcyBwdCxtciBhcyBtdCxtdCBhcyBodCxubiBhcyBndCxuciBhcyBfdCxvbiBhcyB2dCxvciBhcyB5dCxwbiBhcyBidCxwciBhcyB4dCxwdCBhcyBTdCxxbiBhcyBDdCxxdCBhcyBILHJuIGFzIHd0LHJyIGFzIFR0LHNpIGFzIEV0LHNuIGFzIER0LHNyIGFzIE90LHRuIGFzIGt0LHRyIGFzIEF0LHVpIGFzIGp0LHVuIGFzIE10LHVyIGFzIE50LHZuIGFzIFB0LHZyIGFzIEZ0LHZ0IGFzIEl0LHduIGFzIEx0LHdyIGFzIFJ0LHd0IGFzIHp0LHhuIGFzIEJ0LHhyIGFzIFZ0LHh0IGFzIEh0LHluIGFzIFV0LHlyIGFzIFd0LHl0IGFzIEd0LHpuIGFzIEt0LHp0IGFzIFV9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e0EgYXMgcXQsQyBhcyBKdCxEIGFzIFl0LEUgYXMgWHQsRiBhcyBadCxNIGFzIFF0LE4gYXMgJHQsTyBhcyBlbixQIGFzIHRuLFMgYXMgbm4sVCBhcyBybixfIGFzIGFuLGEgYXMgVyxiIGFzIG9uLGYgYXMgc24sZyBhcyBjbixoIGFzIGxuLGogYXMgdW4sayBhcyBkbixtIGFzIGZuLHAgYXMgcG4sciBhcyBtbix2IGFzIGhuLHcgYXMgZ24seCBhcyBfbix5IGFzIHZufWZyb20iLi9DYXJkRGVzY3JpcHRpb24tSWRPdDMxN2MuanMiO3ZhciBHPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSx5bj0oKGUsdCk9PntsZXQgbj17fTtmb3IodmFyIHIgaW4gZSlHKG4scix7Z2V0OmVbcl0sZW51bWVyYWJsZTohMH0pO3JldHVybiB0fHxHKG4sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpgTW9kdWxlYH0pLG59KSh7QmFzZVRyYW5zaXRpb246KCk9PldlLEJhc2VUcmFuc2l0aW9uUHJvcHNWYWxpZGF0b3JzOigpPT5ZZSxDb21tZW50OigpPT5TdCxEZXByZWNhdGlvblR5cGVzOigpPT5udWxsLEVmZmVjdFNjb3BlOigpPT5WZSxFcnJvckNvZGVzOigpPT5odCxFcnJvclR5cGVTdHJpbmdzOigpPT50dCxGcmFnbWVudDooKT0+UWUsS2VlcEFsaXZlOigpPT5QZSxSZWFjdGl2ZUVmZmVjdDooKT0+ZnQsU3RhdGljOigpPT5JdCxTdXNwZW5zZTooKT0+R3QsVGVsZXBvcnQ6KCk9PnplLFRleHQ6KCk9Pkh0LFRyYWNrT3BUeXBlczooKT0+TnQsVHJhbnNpdGlvbjooKT0+c24sVHJhbnNpdGlvbkdyb3VwOigpPT5wbixUcmlnZ2VyT3BUeXBlczooKT0+VWUsVnVlRWxlbWVudDooKT0+Zm4sYXNzZXJ0TnVtYmVyOigpPT5GLGNhbGxXaXRoQXN5bmNFcnJvckhhbmRsaW5nOigpPT5sLGNhbGxXaXRoRXJyb3JIYW5kbGluZzooKT0+enQsY2FtZWxpemU6KCk9PkksY2FwaXRhbGl6ZTooKT0+bmUsY2xvbmVWTm9kZTooKT0+eGUsY29tcGF0VXRpbHM6KCk9Pm51bGwsY29tcGlsZTooKT0+Ym4sY29tcHV0ZWQ6KCk9PmcsY3JlYXRlQXBwOigpPT5sbixjcmVhdGVCbG9jazooKT0+dyxjcmVhdGVDb21tZW50Vk5vZGU6KCk9Pmx0LGNyZWF0ZUVsZW1lbnRCbG9jazooKT0+aSxjcmVhdGVFbGVtZW50Vk5vZGU6KCk9PmYsY3JlYXRlSHlkcmF0aW9uUmVuZGVyZXI6KCk9PmF0LGNyZWF0ZVByb3BzUmVzdFByb3h5OigpPT5oZSxjcmVhdGVSZW5kZXJlcjooKT0+dmUsY3JlYXRlU1NSQXBwOigpPT5jbixjcmVhdGVTbG90czooKT0+RCxjcmVhdGVTdGF0aWNWTm9kZTooKT0+dixjcmVhdGVUZXh0Vk5vZGU6KCk9Pm9lLGNyZWF0ZVZOb2RlOigpPT5mZSxjdXN0b21SZWY6KCk9PkplLGRlZmluZUFzeW5jQ29tcG9uZW50OigpPT5NLGRlZmluZUNvbXBvbmVudDooKT0+VSxkZWZpbmVDdXN0b21FbGVtZW50OigpPT5hbixkZWZpbmVFbWl0czooKT0+byxkZWZpbmVFeHBvc2U6KCk9PlRlLGRlZmluZU1vZGVsOigpPT5yZSxkZWZpbmVPcHRpb25zOigpPT5DZSxkZWZpbmVQcm9wczooKT0+RWUsZGVmaW5lU1NSQ3VzdG9tRWxlbWVudDooKT0+aG4sZGVmaW5lU2xvdHM6KCk9PmIsZGV2dG9vbHM6KCk9PnVlLGVmZmVjdDooKT0+eHQsZWZmZWN0U2NvcGU6KCk9Pm10LGdldEN1cnJlbnRJbnN0YW5jZTooKT0+SCxnZXRDdXJyZW50U2NvcGU6KCk9PmV0LGdldEN1cnJlbnRXYXRjaGVyOigpPT5aZSxnZXRUcmFuc2l0aW9uUmF3Q2hpbGRyZW46KCk9PmNlLGd1YXJkUmVhY3RpdmVQcm9wczooKT0+a2UsaDooKT0+UixoYW5kbGVFcnJvcjooKT0+amUsaGFzSW5qZWN0aW9uQ29udGV4dDooKT0+ayxoeWRyYXRlOigpPT52bixoeWRyYXRlT25JZGxlOigpPT50LGh5ZHJhdGVPbkludGVyYWN0aW9uOigpPT5HZSxoeWRyYXRlT25NZWRpYVF1ZXJ5OigpPT5rdCxoeWRyYXRlT25WaXNpYmxlOigpPT5ndCxpbml0Q3VzdG9tRm9ybWF0dGVyOigpPT53dCxpbml0RGlyZWN0aXZlc0ZvclNTUjooKT0+b24saW5qZWN0OigpPT5WLGlzTWVtb1NhbWU6KCk9PkZlLGlzUHJveHk6KCk9Pk5lLGlzUmVhY3RpdmU6KCk9PkZ0LGlzUmVhZG9ubHk6KCk9Pld0LGlzUmVmOigpPT5SZSxpc1J1bnRpbWVPbmx5OigpPT52dCxpc1NoYWxsb3c6KCk9PlZ0LGlzVk5vZGU6KCk9PkR0LG1hcmtSYXc6KCk9PlAsbWVyZ2VEZWZhdWx0czooKT0+QmUsbWVyZ2VNb2RlbHM6KCk9PmR0LG1lcmdlUHJvcHM6KCk9Pk10LG5leHRUaWNrOigpPT56LG5vZGVPcHM6KCk9Pl9uLG5vcm1hbGl6ZUNsYXNzOigpPT5FdCxub3JtYWxpemVQcm9wczooKT0+dXQsbm9ybWFsaXplU3R5bGU6KCk9Pmp0LG9uQWN0aXZhdGVkOigpPT5xZSxvbkJlZm9yZU1vdW50OigpPT5idCxvbkJlZm9yZVVubW91bnQ6KCk9PnB0LG9uQmVmb3JlVXBkYXRlOigpPT4kZSxvbkRlYWN0aXZhdGVkOigpPT5YZSxvbkVycm9yQ2FwdHVyZWQ6KCk9Pk1lLG9uTW91bnRlZDooKT0+UHQsb25SZW5kZXJUcmFja2VkOigpPT5VdCxvblJlbmRlclRyaWdnZXJlZDooKT0+TGUsb25TY29wZURpc3Bvc2U6KCk9PmMsb25TZXJ2ZXJQcmVmZXRjaDooKT0+QnQsb25Vbm1vdW50ZWQ6KCk9Pk4sb25VcGRhdGVkOigpPT5zLG9uV2F0Y2hlckNsZWFudXA6KCk9PlJ0LG9wZW5CbG9jazooKT0+THQscGF0Y2hQcm9wOigpPT5ubixwb3BTY29wZUlkOigpPT55ZSxwcm92aWRlOigpPT5tLHByb3h5UmVmczooKT0+YmUscHVzaFNjb3BlSWQ6KCk9PnUscXVldWVQb3N0Rmx1c2hDYjooKT0+UyxyZWFjdGl2ZTooKT0+aCxyZWFkb25seTooKT0+ZCxyZWY6KCk9PkMscmVnaXN0ZXJSdW50aW1lQ29tcGlsZXI6KCk9PnN0LHJlbmRlcjooKT0+SnQscmVuZGVyTGlzdDooKT0+bixyZW5kZXJTbG90OigpPT5ydCxyZXNvbHZlQ29tcG9uZW50OigpPT5wZSxyZXNvbHZlRGlyZWN0aXZlOigpPT5nZSxyZXNvbHZlRHluYW1pY0NvbXBvbmVudDooKT0+VCxyZXNvbHZlRmlsdGVyOigpPT5udWxsLHJlc29sdmVUcmFuc2l0aW9uSG9va3M6KCk9PmVlLHNldEJsb2NrVHJhY2tpbmc6KCk9PmllLHNldERldnRvb2xzSG9vazooKT0+ZGUsc2V0VHJhbnNpdGlvbkhvb2tzOigpPT5BLHNoYWxsb3dSZWFjdGl2ZTooKT0+Y3Qsc2hhbGxvd1JlYWRvbmx5OigpPT5yLHNoYWxsb3dSZWY6KCk9Pml0LHNzckNvbnRleHRLZXk6KCk9Pkt0LHNzclV0aWxzOigpPT5hLHN0b3A6KCk9Pm1lLHRvRGlzcGxheVN0cmluZzooKT0+SGUsdG9IYW5kbGVyS2V5OigpPT5CLHRvSGFuZGxlcnM6KCk9PndlLHRvUmF3OigpPT5fZSx0b1JlZjooKT0+RSx0b1JlZnM6KCk9Pl8sdG9WYWx1ZTooKT0+YWUsdHJhbnNmb3JtVk5vZGVBcmdzOigpPT50ZSx0cmlnZ2VyUmVmOigpPT54LHVucmVmOigpPT5qLHVzZUF0dHJzOigpPT5TZSx1c2VDc3NNb2R1bGU6KCk9PmduLHVzZUNzc1ZhcnM6KCk9PnJuLHVzZUhvc3Q6KCk9Plh0LHVzZUlkOigpPT5MLHVzZU1vZGVsOigpPT55LHVzZVNTUkNvbnRleHQ6KCk9PmxlLHVzZVNoYWRvd1Jvb3Q6KCk9Pll0LHVzZVNsb3RzOigpPT5DdCx1c2VUZW1wbGF0ZVJlZjooKT0+c2UsdXNlVHJhbnNpdGlvblN0YXRlOigpPT5PZSx2TW9kZWxDaGVja2JveDooKT0+ZW4sdk1vZGVsRHluYW1pYzooKT0+ZG4sdk1vZGVsUmFkaW86KCk9PnF0LHZNb2RlbFNlbGVjdDooKT0+dW4sdk1vZGVsVGV4dDooKT0+UXQsdlNob3c6KCk9PiR0LHZlcnNpb246KCk9PkRlLHdhcm46KCk9PkFlLHdhdGNoOigpPT5PLHdhdGNoRWZmZWN0OigpPT5lLHdhdGNoUG9zdEVmZmVjdDooKT0+S2Usd2F0Y2hTeW5jRWZmZWN0OigpPT5BdCx3aXRoQXN5bmNDb250ZXh0OigpPT5fdCx3aXRoQ3R4OigpPT5UdCx3aXRoRGVmYXVsdHM6KCk9Pm50LHdpdGhEaXJlY3RpdmVzOigpPT5JZSx3aXRoS2V5czooKT0+dG4sd2l0aE1lbW86KCk9Pnl0LHdpdGhNb2RpZmllcnM6KCk9Plp0LHdpdGhTY29wZUlkOigpPT5PdH0pLGJuPSgpPT57fTtmdW5jdGlvbiBLKGUpe3JldHVybiB0eXBlb2YgZT09YHN0cmluZ2A/YCcke2V9J2A6bmV3IFNuKCkuc2VyaWFsaXplKGUpfXZhciB4bj1gIF8tLDs6IT8uJyIoKVtde31AKi9cXCYjJVxgXis8PT58fiQwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpgLHE9KGZ1bmN0aW9uKCl7bGV0IGU9bmV3IFVpbnQ4QXJyYXkoMTI4KTtmb3IobGV0IHQ9MDt0PDY5O3QrKyllW3huLmNoYXJDb2RlQXQodCldPXQrMTtmb3IobGV0IHQ9NjU7dDw9OTA7dCsrKWVbdF09ZVt0KzMyXTtyZXR1cm4gZX0pKCk7ZnVuY3Rpb24gSihlLHQpe2lmKGU9PT10KXJldHVybiAwO2xldCBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7Zm9yKGxldCBpPTA7aTxuO2krKyl7bGV0IG49ZS5jaGFyQ29kZUF0KGkpLGE9dC5jaGFyQ29kZUF0KGkpO2lmKG49PT1hKWNvbnRpbnVlO2xldCBvPW48MTI4JiZxW25dP3Fbbl06bisxMjgscz1hPDEyOCYmcVthXT9xW2FdOmErMTI4O2lmKG8hPT1zKXJldHVybiBvPHM/LTE6MTtyPT09MCYmKHI9bj5hPy0xOjEpfXJldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoP3I6ZS5sZW5ndGg8dC5sZW5ndGg/LTE6MX12YXIgU249KGZ1bmN0aW9uKCl7Y2xhc3MgZXsjZT1uZXcgTWFwO2NvbXBhcmUoZSx0KXtsZXQgbj10eXBlb2YgZSxyPXR5cGVvZiB0O3JldHVybiBuPT09YHN0cmluZ2AmJnI9PT1gc3RyaW5nYD9KKGUsdCk6bj09PWBudW1iZXJgJiZyPT09YG51bWJlcmA/ZS10OkoodGhpcy5zZXJpYWxpemUoZSwhMCksdGhpcy5zZXJpYWxpemUodCwhMCkpfXNlcmlhbGl6ZShlLHQpe2lmKGU9PT1udWxsKXJldHVybmBudWxsYDtzd2l0Y2godHlwZW9mIGUpe2Nhc2Vgc3RyaW5nYDpyZXR1cm4gdD9lOmAnJHtlfSdgO2Nhc2VgYmlnaW50YDpyZXR1cm5gJHtlfW5gO2Nhc2Vgb2JqZWN0YDpyZXR1cm4gdGhpcy4kb2JqZWN0KGUpO2Nhc2VgZnVuY3Rpb25gOnJldHVybiB0aGlzLiRmdW5jdGlvbihlKX1yZXR1cm4gU3RyaW5nKGUpfXNlcmlhbGl6ZU9iamVjdChlKXtsZXQgdD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk7aWYodCE9PWBbb2JqZWN0IE9iamVjdF1gKXJldHVybiB0aGlzLnNlcmlhbGl6ZUJ1aWx0SW5UeXBlKHQubGVuZ3RoPDEwP2B1bmtub3duOiR7dH1gOnQuc2xpY2UoOCwtMSksZSk7bGV0IG49ZS5jb25zdHJ1Y3RvcixyPW49PT1PYmplY3R8fG49PT12b2lkIDA/YGA6bi5uYW1lO2lmKHIhPT1gYCYmZ2xvYmFsVGhpc1tyXT09PW4pcmV0dXJuIHRoaXMuc2VyaWFsaXplQnVpbHRJblR5cGUocixlKTtpZihgdG9KU09OYGluIGUmJnR5cGVvZiBlLnRvSlNPTj09YGZ1bmN0aW9uYCl7bGV0IHQ9ZS50b0pTT04oKTtyZXR1cm4gcisodHlwZW9mIHQ9PWBvYmplY3RgJiZ0P3RoaXMuJG9iamVjdCh0KTpgKCR7dGhpcy5zZXJpYWxpemUodCl9KWApfWxldCBpPU9iamVjdC5rZXlzKGUpLnNvcnQoSiksYT1gJHtyfXtgO2ZvcihsZXQgdD0wO3Q8aS5sZW5ndGg7dCsrKXtsZXQgbj1pW3RdO2ErPWAke259OiR7dGhpcy5zZXJpYWxpemUoZVtuXSl9YCx0PGkubGVuZ3RoLTEmJihhKz1gLGApfXJldHVybiBhK2B9YH1zZXJpYWxpemVCdWlsdEluVHlwZShlLHQpe2xldCBuPXRoaXNbYCRgK2VdO2lmKG4pcmV0dXJuIG4uY2FsbCh0aGlzLHQpO2lmKHR5cGVvZiB0LmVudHJpZXM9PWBmdW5jdGlvbmApcmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhlLHQuZW50cmllcygpKTt0aHJvdyBFcnJvcihgQ2Fubm90IHNlcmlhbGl6ZSAke2V9YCl9c2VyaWFsaXplT2JqZWN0RW50cmllcyhlLHQpe2xldCBuPUFycmF5LmZyb20odCkuc29ydCgoZSx0KT0+dGhpcy5jb21wYXJlKGVbMF0sdFswXSkpLHI9YCR7ZX17YDtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0W3QsaV09bltlXTtyKz1gJHt0aGlzLnNlcmlhbGl6ZSh0LCEwKX06JHt0aGlzLnNlcmlhbGl6ZShpKX1gLGU8bi5sZW5ndGgtMSYmKHIrPWAsYCl9cmV0dXJuIHIrYH1gfSRvYmplY3QoZSl7bGV0IHQ9dGhpcy4jZS5nZXQoZSk7cmV0dXJuIHQ9PT12b2lkIDAmJih0aGlzLiNlLnNldChlLGAjJHt0aGlzLiNlLnNpemV9YCksdD10aGlzLnNlcmlhbGl6ZU9iamVjdChlKSx0aGlzLiNlLnNldChlLHQpKSx0fSRmdW5jdGlvbihlKXtsZXQgdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKTtyZXR1cm4gdC5zbGljZSgtMTUpPT09YFtuYXRpdmUgY29kZV0gfWA/YCR7ZS5uYW1lfHxgYH0oKVtuYXRpdmVdYDpgJHtlLm5hbWV9KCR7ZS5sZW5ndGh9KSR7dC5yZXBsYWNlKC9ccypcblxzKi9nLGBgKX1gfSRBcnJheShlKXtsZXQgdD1gW2A7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspdCs9dGhpcy5zZXJpYWxpemUoZVtuXSksbjxlLmxlbmd0aC0xJiYodCs9YCxgKTtyZXR1cm4gdCtgXWB9JERhdGUoZSl7dHJ5e3JldHVybmBEYXRlKCR7ZS50b0lTT1N0cmluZygpfSlgfWNhdGNoe3JldHVybmBEYXRlKG51bGwpYH19JEFycmF5QnVmZmVyKGUpe3JldHVybmBBcnJheUJ1ZmZlclske25ldyBVaW50OEFycmF5KGUpLmpvaW4oYCxgKX1dYH0kU2V0KGUpe3JldHVybmBTZXQke3RoaXMuJEFycmF5KEFycmF5LmZyb20oZSkuc29ydCgoZSx0KT0+dGhpcy5jb21wYXJlKGUsdCkpKX1gfSRNYXAoZSl7cmV0dXJuIHRoaXMuc2VyaWFsaXplT2JqZWN0RW50cmllcyhgTWFwYCxlLmVudHJpZXMoKSl9fWZvcihsZXQgdCBvZltgRXJyb3JgLGBSZWdFeHBgLGBVUkxgXSllLnByb3RvdHlwZVtgJGArdF09ZnVuY3Rpb24oZSl7cmV0dXJuYCR7dH0oJHtlfSlgfTtmb3IobGV0IHQgb2ZbYEludDhBcnJheWAsYFVpbnQ4QXJyYXlgLGBVaW50OENsYW1wZWRBcnJheWAsYEludDE2QXJyYXlgLGBVaW50MTZBcnJheWAsYEludDMyQXJyYXlgLGBVaW50MzJBcnJheWAsYEZsb2F0MzJBcnJheWAsYEZsb2F0NjRBcnJheWBdKWUucHJvdG90eXBlW2AkYCt0XT1mdW5jdGlvbihlKXtyZXR1cm5gJHt0fVske2Uuam9pbihgLGApfV1gfTtmb3IobGV0IHQgb2ZbYEJpZ0ludDY0QXJyYXlgLGBCaWdVaW50NjRBcnJheWBdKWUucHJvdG90eXBlW2AkYCt0XT1mdW5jdGlvbihlKXtyZXR1cm5gJHt0fVske2Uuam9pbihgbixgKX0ke2UubGVuZ3RoPjA/YG5gOmBgfV1gfTtyZXR1cm4gZX0pKCk7ZnVuY3Rpb24gQ24oZSx0KXtyZXR1cm4gZT09PXR8fEsoZSk9PT1LKHQpfWZ1bmN0aW9uIFkoZSx0KXtsZXQgbj10eXBlb2YgZT09YHN0cmluZ2AmJiF0P2Ake2V9Q29udGV4dGA6dCxyPVN5bWJvbChuKTtyZXR1cm5bdD0+e2xldCBuPVYocix0KTtpZihufHxuPT09bnVsbClyZXR1cm4gbjt0aHJvdyBFcnJvcihgSW5qZWN0aW9uIFxgJHtyLnRvU3RyaW5nKCl9XGAgbm90IGZvdW5kLiBDb21wb25lbnQgbXVzdCBiZSB1c2VkIHdpdGhpbiAke0FycmF5LmlzQXJyYXkoZSk/YG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6ICR7ZS5qb2luKGAsIGApfWA6YFxgJHtlfVxgYH1gKX0sZT0+KG0ocixlKSxlKV19ZnVuY3Rpb24gd24oZSl7cmV0dXJuIGU9PW51bGx9dmFyW1gsVG5dPVkoYENvbmZpZ1Byb3ZpZGVyYCk7ZnVuY3Rpb24gRW4oZSl7bGV0IHQ9WCh7ZGlyOkMoYGx0cmApfSk7cmV0dXJuIGcoKCk9PmU/LnZhbHVlfHx0LmRpcj8udmFsdWV8fGBsdHJgKX1mdW5jdGlvbiBEbihlKXtsZXQgdD1IKCksbj10Py50eXBlLmVtaXRzLHI9e307cmV0dXJuIG4/Lmxlbmd0aHx8Y29uc29sZS53YXJuKGBObyBlbWl0dGVkIGV2ZW50IGZvdW5kLiBQbGVhc2UgY2hlY2sgY29tcG9uZW50OiAke3Q/LnR5cGUuX19uYW1lfWApLG4/LmZvckVhY2godD0+e3JbQihJKHQpKV09KC4uLm4pPT5lKHQsLi4ubil9KSxyfWZ1bmN0aW9uIE9uKCl7bGV0IGU9SCgpLHQ9QygpLG49ZygoKT0+cigpKTtzKCgpPT57bi52YWx1ZSE9PXIoKSYmeCh0KX0pO2Z1bmN0aW9uIHIoKXtyZXR1cm4gdC52YWx1ZSYmYCRlbGBpbiB0LnZhbHVlJiZbYCN0ZXh0YCxgI2NvbW1lbnRgXS5pbmNsdWRlcyh0LnZhbHVlLiRlbC5ub2RlTmFtZSk/dC52YWx1ZS4kZWwubmV4dEVsZW1lbnRTaWJsaW5nOlcodCl9bGV0IGk9T2JqZWN0LmFzc2lnbih7fSxlLmV4cG9zZWQpLGE9e307Zm9yKGxldCB0IGluIGUucHJvcHMpT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5lLnByb3BzW3RdfSk7aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApZm9yKGxldCBlIGluIGkpT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5pW2VdfSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIiRlbCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+ZS52bm9kZS5lbH0pLGUuZXhwb3NlZD1hO2Z1bmN0aW9uIG8obil7aWYodC52YWx1ZT1uLG4mJihPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiJGVsIix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OigpPT5uIGluc3RhbmNlb2YgRWxlbWVudD9uOm4uJGVsfSksIShuIGluc3RhbmNlb2YgRWxlbWVudCkmJiFPYmplY3QuaGFzT3duKG4sYCRlbGApKSl7bGV0IHQ9bi4kLmV4cG9zZWQscj1PYmplY3QuYXNzaWduKHt9LGEpO2ZvcihsZXQgZSBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+dFtlXX0pO2UuZXhwb3NlZD1yfX1yZXR1cm57Zm9yd2FyZFJlZjpvLGN1cnJlbnRSZWY6dCxjdXJyZW50RWxlbWVudDpufX1mdW5jdGlvbiBaKGUpe2xldCB0PUgoKSxuPU9iamVjdC5rZXlzKHQ/LnR5cGUucHJvcHM/P3t9KS5yZWR1Y2UoKGUsbik9PntsZXQgcj0odD8udHlwZS5wcm9wc1tuXSkuZGVmYXVsdDtyZXR1cm4gciE9PXZvaWQgMCYmKGVbbl09ciksZX0se30pLHI9RShlKTtyZXR1cm4gZygoKT0+e2xldCBlPXt9LGk9dD8udm5vZGUucHJvcHM/P3t9O3JldHVybiBPYmplY3Qua2V5cyhpKS5mb3JFYWNoKHQ9PntlW0kodCldPWlbdF19KSxPYmplY3Qua2V5cyh7Li4ubiwuLi5lfSkucmVkdWNlKChlLHQpPT4oci52YWx1ZVt0XSE9PXZvaWQgMCYmKGVbdF09ci52YWx1ZVt0XSksZSkse30pfSl9ZnVuY3Rpb24ga24oZSx0KXtsZXQgbj1aKGUpLHI9dD9Ebih0KTp7fTtyZXR1cm4gZygoKT0+KHsuLi5uLnZhbHVlLC4uLnJ9KSl9dmFyIFE9MDtmdW5jdGlvbiBBbihlLHQ9YHJla2FgKXtpZihlKXJldHVybiBlO2xldCBuLHI9WCh7dXNlSWQ6dm9pZCAwfSk7cmV0dXJuIG49ci51c2VJZD9yLnVzZUlkKCk6YHVzZUlkYGluIHluP0w/LigpOmAkeysrUX1gLHQ/YCR7dH0tJHtufWA6bn1mdW5jdGlvbiBqbihlLHQpe2xldCBuPUMoZSk7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdFtuLnZhbHVlXVtlXT8/bi52YWx1ZX1yZXR1cm57c3RhdGU6bixkaXNwYXRjaDplPT57bi52YWx1ZT1yKGUpfX19ZnVuY3Rpb24gTW4oZSx0KXtsZXQgbj1DKHt9KSxyPUMoYG5vbmVgKSxpPUMoZSksYT1lLnZhbHVlP2Btb3VudGVkYDpgdW5tb3VudGVkYCxvLHM9dC52YWx1ZT8ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldz8/bW4se3N0YXRlOmMsZGlzcGF0Y2g6bH09am4oYSx7bW91bnRlZDp7VU5NT1VOVDpgdW5tb3VudGVkYCxBTklNQVRJT05fT1VUOmB1bm1vdW50U3VzcGVuZGVkYH0sdW5tb3VudFN1c3BlbmRlZDp7TU9VTlQ6YG1vdW50ZWRgLEFOSU1BVElPTl9FTkQ6YHVubW91bnRlZGB9LHVubW91bnRlZDp7TU9VTlQ6YG1vdW50ZWRgfX0pLHU9ZT0+e2lmKG90KXtsZXQgbj1uZXcgQ3VzdG9tRXZlbnQoZSx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExfSk7dC52YWx1ZT8uZGlzcGF0Y2hFdmVudChuKX19O08oZSxhc3luYyhlLGkpPT57bGV0IGE9aSE9PWU7aWYoYXdhaXQgeigpLGEpe2xldCBhPXIudmFsdWUsbz0kKHQudmFsdWUpO2U/KGwoYE1PVU5UYCksdShgZW50ZXJgKSxvPT09YG5vbmVgJiZ1KGBhZnRlci1lbnRlcmApKTpvPT09YG5vbmVgfHxvPT09YHVuZGVmaW5lZGB8fG4udmFsdWU/LmRpc3BsYXk9PT1gbm9uZWA/KGwoYFVOTU9VTlRgKSx1KGBsZWF2ZWApLHUoYGFmdGVyLWxlYXZlYCkpOmkmJmEhPT1vPyhsKGBBTklNQVRJT05fT1VUYCksdShgbGVhdmVgKSk6KGwoYFVOTU9VTlRgKSx1KGBhZnRlci1sZWF2ZWApKX19LHtpbW1lZGlhdGU6ITB9KTtsZXQgZD1lPT57aWYoZS50YXJnZXQhPT10LnZhbHVlKXJldHVybjtsZXQgbj0kKHQudmFsdWUpLHI9bi5pbmNsdWRlcyhDU1MuZXNjYXBlKGUuYW5pbWF0aW9uTmFtZSkpLGE9Yy52YWx1ZT09PWBtb3VudGVkYD9gZW50ZXJgOmBsZWF2ZWA7aWYociYmKHUoYGFmdGVyLSR7YX1gKSxsKGBBTklNQVRJT05fRU5EYCksIWkudmFsdWUpKXtsZXQgZT10LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlO3QudmFsdWUuc3R5bGUuYW5pbWF0aW9uRmlsbE1vZGU9YGZvcndhcmRzYCxvPXM/LnNldFRpbWVvdXQoKCk9Pnt0LnZhbHVlPy5zdHlsZS5hbmltYXRpb25GaWxsTW9kZT09PWBmb3J3YXJkc2AmJih0LnZhbHVlLnN0eWxlLmFuaW1hdGlvbkZpbGxNb2RlPWUpfSl9bj09PWBub25lYCYmbChgQU5JTUFUSU9OX0VORGApfSxmPWU9PntlLnRhcmdldD09PXQudmFsdWUmJihyLnZhbHVlPSQodC52YWx1ZSkpfSxwPU8odCwoZSx0KT0+e2U/KG4udmFsdWU9Z2V0Q29tcHV0ZWRTdHlsZShlKSxlLmFkZEV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbnN0YXJ0YCxmKSxlLmFkZEV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbmNhbmNlbGAsZCksZS5hZGRFdmVudExpc3RlbmVyKGBhbmltYXRpb25lbmRgLGQpKToobChgQU5JTUFUSU9OX0VORGApLG8hPT12b2lkIDAmJnM/LmNsZWFyVGltZW91dChvKSx0Py5yZW1vdmVFdmVudExpc3RlbmVyKGBhbmltYXRpb25zdGFydGAsZiksdD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uY2FuY2VsYCxkKSx0Py5yZW1vdmVFdmVudExpc3RlbmVyKGBhbmltYXRpb25lbmRgLGQpKX0se2ltbWVkaWF0ZTohMH0pLG09TyhjLCgpPT57bGV0IGU9JCh0LnZhbHVlKTtyLnZhbHVlPWMudmFsdWU9PT1gbW91bnRlZGA/ZTpgbm9uZWB9KTtyZXR1cm4gTigoKT0+e3AoKSxtKCksdC52YWx1ZSYmKHQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uc3RhcnRgLGYpLHQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgYW5pbWF0aW9uY2FuY2VsYCxkKSx0LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGFuaW1hdGlvbmVuZGAsZCkpLG8hPT12b2lkIDAmJnM/LmNsZWFyVGltZW91dChvKX0pLHtpc1ByZXNlbnQ6ZygoKT0+W2Btb3VudGVkYCxgdW5tb3VudFN1c3BlbmRlZGBdLmluY2x1ZGVzKGMudmFsdWUpKX19ZnVuY3Rpb24gJChlKXtyZXR1cm4gZSYmZ2V0Q29tcHV0ZWRTdHlsZShlKS5hbmltYXRpb25OYW1lfHxgbm9uZWB9dmFyIE5uPVUoe25hbWU6YFByZXNlbmNlYCxwcm9wczp7cHJlc2VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiEwfSxmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW59fSxzbG90czp7fSxzZXR1cChlLHtzbG90czp0LGV4cG9zZTpufSl7bGV0e3ByZXNlbnQ6cixmb3JjZU1vdW50Oml9PV8oZSksYT1DKCkse2lzUHJlc2VudDpvfT1NbihyLGEpO24oe3ByZXNlbnQ6b30pO2xldCBzPXQuZGVmYXVsdCh7cHJlc2VudDpvLnZhbHVlfSk7cz1wKHN8fFtdKTtsZXQgYz1IKCk7aWYocyYmcz8ubGVuZ3RoPjEpe2xldCBlPWM/LnBhcmVudD8udHlwZS5uYW1lP2A8JHtjLnBhcmVudC50eXBlLm5hbWV9IC8+YDpgY29tcG9uZW50YDt0aHJvdyBFcnJvcihbYERldGVjdGVkIGFuIGludmFsaWQgY2hpbGRyZW4gZm9yIFxgJHtlfVxgIGZvciAgXGBQcmVzZW5jZVxgIGNvbXBvbmVudC5gLGBgLCJOb3RlOiBQcmVzZW5jZSB3b3JrcyBzaW1pbGFybHkgdG8gYHYtaWZgIGRpcmVjdGx5LCBidXQgaXQgd2FpdHMgZm9yIGFuaW1hdGlvbi90cmFuc2l0aW9uIHRvIGZpbmlzaGVkIGJlZm9yZSB1bm1vdW50aW5nLiBTbyBpdCBleHBlY3Qgb25seSBvbmUgZGlyZWN0IGNoaWxkIG9mIHZhbGlkIFZOb2RlIHR5cGUuIixgWW91IGNhbiBhcHBseSBhIGZldyBzb2x1dGlvbnM6YCxbIlByb3ZpZGUgYSBzaW5nbGUgY2hpbGQgZWxlbWVudCBzbyB0aGF0IGBwcmVzZW5jZWAgZGlyZWN0aXZlIGF0dGFjaCBjb3JyZWN0bHkuIixgRW5zdXJlIHRoZSBmaXJzdCBjaGlsZCBpcyBhbiBhY3R1YWwgZWxlbWVudCBpbnN0ZWFkIG9mIGEgcmF3IHRleHQgbm9kZSBvciBjb21tZW50IG5vZGUuYF0ubWFwKGU9PmAgIC0gJHtlfWApLmpvaW4oYApgKV0uam9pbihgCmApKX1yZXR1cm4oKT0+aS52YWx1ZXx8ci52YWx1ZXx8by52YWx1ZT9SKHQuZGVmYXVsdCh7cHJlc2VudDpvLnZhbHVlfSlbMF0se3JlZjplPT57bGV0IHQ9VyhlKTtyZXR1cm4gdD8uaGFzQXR0cmlidXRlPT09dm9pZCAwfHwodD8uaGFzQXR0cmlidXRlKGBkYXRhLXJla2EtcG9wcGVyLWNvbnRlbnQtd3JhcHBlcmApP2EudmFsdWU9dC5maXJzdEVsZW1lbnRDaGlsZDphLnZhbHVlPXQpLHR9fSk6bnVsbH19KTtleHBvcnR7T24gYXMgYSx3biBhcyBjLFogYXMgaSxZIGFzIGwsQW4gYXMgbixFbiBhcyBvLGtuIGFzIHIsWCBhcyBzLE5uIGFzIHQsQ24gYXMgdX07",
|
|
),
|
|
},
|
|
"ReliabilityPage-D4CjC5Gn.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FuIGFzIGUsQXQgYXMgdCxDIGFzIG4sRHQgYXMgcixFdCBhcyBpLEl0IGFzIGEsTHQgYXMgbyxNbiBhcyBzLE90IGFzIGMsUW4gYXMgbCxSciBhcyB1LFMgYXMgZCxTbiBhcyBmLFh0IGFzIHAsYiBhcyBtLGJyIGFzIGgsZGkgYXMgZyxndCBhcyBfLGggYXMgdixrdCBhcyB5LG90IGFzIGIscnIgYXMgeCx0IGFzIFMsdXQgYXMgQyx2biBhcyBlZSx3biBhcyB3LHggYXMgVCx6dCBhcyBFfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHtkIGFzIEQsdCBhcyBPLHUgYXMgdGV9ZnJvbSIuL0NhcmREZXNjcmlwdGlvbi1JZE90MzE3Yy5qcyI7aW1wb3J0e2EgYXMgbmUsaSBhcyBrLG4gYXMgQSxvIGFzIGosciBhcyBNLHQgYXMgTix1IGFzIFB9ZnJvbSIuL2luZGV4LUJpVFFfZ0NFLmpzIjtpbXBvcnR7dCBhcyBGfWZyb20iLi9EYXRhVGFibGUtRFZ1ZU5GdUEuanMiO2ltcG9ydHtmIGFzIEksciBhcyBMLHQgYXMgUn1mcm9tIi4vYmFkZ2UtbnMwajhPVXIuanMiO2ltcG9ydHtuIGFzIHJlLHQgYXMgen1mcm9tIi4vdXNlU2VhcmNoUXVlcnktRHlzQnQtSW4uanMiO2ltcG9ydHt0IGFzIEJ9ZnJvbSIuL1RpbWVTZXJpZXNDaGFydC1CUDVJY1V5Zy5qcyI7aW1wb3J0e3QgYXMgVn1mcm9tIi4vZXZlbnRzLUJQRklCdjRNLmpzIjtpbXBvcnR7aSBhcyBILG4gYXMgVSxyIGFzIFcsdCBhcyBHfWZyb20iLi9ldmVudHMtZmlsdGVyLVhGbmpJYVI3LmpzIjtpbXBvcnR7biBhcyBpZX1mcm9tIi4vcHJvdmlkZXItcmF0ZS1EVTdPZ1NlQi5qcyI7aW1wb3J0e24gYXMgSyxyIGFzIGFlfWZyb20iLi9yZWxpYWJpbGl0eS0wS2lKU2pUUC5qcyI7ZnVuY3Rpb24gcShlKXtyZXR1cm4gVVtlXT8/ZX1mdW5jdGlvbiBKKGUpe3JldHVybiBlLnVzZXI/YHVzZXI6JHtlLnVzZXJ9YDplLmdyb3VwP2Bncm91cDoke2UuZ3JvdXB9YDpg4oCUYH1mdW5jdGlvbiBZKGUpe2xldCB0PVtlLm1vZGVsLGUucHJvdmlkZXJdLmZpbHRlcihlPT4hIWUpO3JldHVybiB0Lmxlbmd0aD90LmpvaW4oYCDihpIgYCk6YOKAlGB9ZnVuY3Rpb24gWCgpe3JldHVyblt7aWQ6YHRpbWVgLGhlYWRlcjpgVGltZWAsYWNjZXNzb3JGbjplPT5lLnRpbWUsY2VsbDooe3JvdzplfSk9PnAoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRhYnVsYXItbnVtc2B9LEkoZS5vcmlnaW5hbC50aW1lKSl9LHtpZDpga2luZGAsaGVhZGVyOmBLaW5kYCxhY2Nlc3NvckZuOmU9PmUua2luZCxjZWxsOih7cm93OmV9KT0+cChSLHthczpgc3BhbmAsdmFyaWFudDpXKGUub3JpZ2luYWwua2luZCksY2xhc3M6YGZvbnQtbm9ybWFsYH0sKCk9PnEoZS5vcmlnaW5hbC5raW5kKSl9LHtpZDpgcm91dGVgLGhlYWRlcjpgUm91dGVgLGFjY2Vzc29yRm46ZT0+ZS5yb3V0ZSxjZWxsOih7cm93OmV9KT0+cChgc3BhbmAse2NsYXNzOmBmb250LW1vbm8gdGV4dC14c2B9LGUub3JpZ2luYWwucm91dGUpfSx7aWQ6YHNjb3BlYCxoZWFkZXI6YFVzZXIgLyBncm91cGAsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PmUudXNlcj8/ZS5ncm91cD8/YGAsY2VsbDooe3JvdzplfSk9PntsZXQgdD1KKGUub3JpZ2luYWwpO3JldHVybiBwKGBzcGFuYCx7Y2xhc3M6dD09PWDigJRgP2B0ZXh0LW11dGVkLWZvcmVncm91bmRgOnZvaWQgMH0sdCl9fSx7aWQ6YHRhcmdldGAsaGVhZGVyOmBNb2RlbCAvIHByb3ZpZGVyYCxlbmFibGVTb3J0aW5nOiExLGFjY2Vzc29yRm46ZT0+YCR7ZS5tb2RlbD8/YGB9ICR7ZS5wcm92aWRlcj8/YGB9YCxjZWxsOih7cm93OmV9KT0+e2xldCB0PVkoZS5vcmlnaW5hbCk7cmV0dXJuIHAoYHNwYW5gLHtjbGFzczp0PT09YOKAlGA/YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGA6YGZvbnQtbW9ubyB0ZXh0LXhzYH0sdCl9fSx7aWQ6YHJlcGxpY2FgLGhlYWRlcjpgUmVwbGljYWAsYWNjZXNzb3JGbjplPT5lLnJlcGxpY2EsY2VsbDooe3JvdzplfSk9PnAoYHNwYW5gLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sZS5vcmlnaW5hbC5yZXBsaWNhKX0se2lkOmBzdGF0dXNgLGhlYWRlcjpgU3RhdHVzYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuc3RhdHVzPz8wLGNlbGw6KHtyb3c6ZX0pPT5wKGBzcGFuYCx7Y2xhc3M6YHRhYnVsYXItbnVtc2B9LGUub3JpZ2luYWwuc3RhdHVzPT09dm9pZCAwP2DigJRgOlN0cmluZyhlLm9yaWdpbmFsLnN0YXR1cykpfSx7aWQ6YG1lc3NhZ2VgLGhlYWRlcjpgTWVzc2FnZWAsZW5hYmxlU29ydGluZzohMSxhY2Nlc3NvckZuOmU9PmUubWVzc2FnZSxjZWxsOih7cm93OmV9KT0+cChgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxlLm9yaWdpbmFsLm1lc3NhZ2UpfV19dmFyIG9lPXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNmB9LFo9e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTNgfSxzZT17a2V5OjAsY2xhc3M6YG1iLTMgdGV4dC1zbSB0ZXh0LWRlc3RydWN0aXZlYH0sUT1gYWxsYCxjZT1FKHtfX25hbWU6YEV2ZW50c1ZpZXdgLHNldHVwKGwpe2xldCBwPVYoKSx7a2luZEZpbHRlcjp2LHVzZXJGaWx0ZXI6U309QyhwKSx7bm9ybWFsaXplZDpFfT16KFMpLE49aSgoKT0+di52YWx1ZT09PWBgP1E6di52YWx1ZSksST1pKCgpPT5IKHAuZXZlbnRzLHtraW5kOnYudmFsdWUsdXNlcjpFLnZhbHVlfSkpO2Z1bmN0aW9uIEwoZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZwLnNldEtpbmRGaWx0ZXIoZT09PVE/YGA6ZSl9bGV0IFI9WCgpLEI9aSgoKT0+cC5sYXN0VXBkYXRlZD9wLmV2ZW50cy5sZW5ndGg9PT0wP2BubyBldmVudHMgcmVjb3JkZWRgOnYudmFsdWUhPT1gYHx8RS52YWx1ZT9gbm8gZXZlbnRzIG1hdGNoIHRoZSBjdXJyZW50IGZpbHRlcmA6YG5vbmVgOmBsb2FkaW5n4oCmYCksVz1pKCgpPT5wLmxhc3RVcGRhdGVkP3Auc291cmNlPT09YHJlZGlzYD9gRmxlZXQtd2lkZSwgYWNyb3NzIGV2ZXJ5IHJlcGxpY2FgOmBUaGlzIHJlcGxpY2Egb25seSAoJHtwLnJlcGxpY2F8fGB1bmtub3duYH0pIOKAlCBSZWRpcyBpcyB1bnJlYWNoYWJsZSBvciB1bmNvbmZpZ3VyZWRgOmBsb2FkaW5n4oCmYCk7cmV0dXJuIGVlKCgpPT57cC5zdGFydFBvbGxpbmcoKX0pLGYoKCk9PntwLnN0b3BQb2xsaW5nKCl9KSwoaSxsKT0+e2xldCBmPXMoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiB3KCksdChgZGl2YCxvZSxbdShwKS5kZWdyYWRlZD8odygpLGModShEKSx7a2V5OjAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgfSx7ZGVmYXVsdDp4KCgpPT5bbyhmLHtpY29uOnUoYiksY2xhc3M6YHNpemUtNGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksbyh1KFApLG51bGwse2RlZmF1bHQ6eCgoKT0+Wy4uLmxbMV18fD1bYShgRmxlZXQtd2lkZSBldmVudCBsb2cgdW5hdmFpbGFibGVgLC0xKV1dKSxfOjF9KSxvKHUodGUpLG51bGwse2RlZmF1bHQ6eCgoKT0+Wy4uLmxbMl18fD1bYShgIFJlZGlzIGlzIGNvbmZpZ3VyZWQgYnV0IGNvdWxkIG5vdCBiZSByZWFkIOKAlCBzaG93aW5nIHRoaXMgcmVwbGljYSdzIG93biBpbi1tZW1vcnkgZXZlbnRzIG9ubHksIHdoaWNoIG1heSBtaXNzIGV2ZW50cyByZWNvcmRlZCBieSBvdGhlciByZXBsaWNhcy4gYCwtMSldXSksXzoxfSldKSxfOjF9KSk6eShgYCwhMCksbyh1KG4pLG51bGwse2RlZmF1bHQ6eCgoKT0+W28odShUKSx7Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTQgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIHNtOmp1c3RpZnktYmV0d2VlbmB9LHtkZWZhdWx0OngoKCk9PltyKGBkaXZgLG51bGwsW28odShtKSxudWxsLHtkZWZhdWx0OngoKCk9PlsuLi5sWzNdfHw9W2EoYEV2ZW50c2AsLTEpXV0pLF86MX0pLHUocCkubGFzdFVwZGF0ZWQ/KHcoKSxjKHUoTykse2tleToxfSx7ZGVmYXVsdDp4KCgpPT5bYShnKFcudmFsdWUpK2Ag4oCUIHJhdGUgbGltaXQsIGJ1ZGdldCwgYW5kIHVwc3RyZWFtIGV2ZW50cywgbmV3ZXN0IGZpcnN0IChjYXBhY2l0eSBgK2codShwKS5jYXBhY2l0eSkrYCkuIGAsMSldKSxfOjF9KSk6KHcoKSxjKHUoTykse2tleTowfSx7ZGVmYXVsdDp4KCgpPT5bLi4ubFs0XXx8PVthKGBMb2FkaW5n4oCmYCwtMSldXSksXzoxfSkpXSkscihgZGl2YCxaLFtvKHJlLHttb2RlbFZhbHVlOnUoUyksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOmxbMF18fD1lPT5oKFMpP1MudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgYnkgdXNlciBvciBncm91cGAsY2xhc3M6YHctNTZgfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLG8odShqKSx7Im1vZGVsLXZhbHVlIjpOLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpMfSx7ZGVmYXVsdDp4KCgpPT5bbyh1KE0pLHtjbGFzczpgdy00NGAsImFyaWEtbGFiZWwiOmBGaWx0ZXIgYnkga2luZGB9LHtkZWZhdWx0OngoKCk9PltvKHUoQSkse3BsYWNlaG9sZGVyOmBLaW5kYH0pXSksXzoxfSksbyh1KG5lKSxudWxsLHtkZWZhdWx0OngoKCk9PltvKHUoaykse3ZhbHVlOlF9LHtkZWZhdWx0OngoKCk9PlsuLi5sWzVdfHw9W2EoYEFsbCBraW5kc2AsLTEpXV0pLF86MX0pLCh3KCEwKSx0KF8sbnVsbCxlKHUoRyksZT0+KHcoKSxjKHUoaykse2tleTplLHZhbHVlOmV9LHtkZWZhdWx0OngoKCk9PlthKGcodShVKVtlXSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksXzoxfSksbyh1KGQpLG51bGwse2RlZmF1bHQ6eCgoKT0+W3UocCkuZXJyb3I/KHcoKSx0KGBwYCxzZSxnKHUocCkuZXJyb3IpLDEpKTp5KGBgLCEwKSxvKEYse2NvbHVtbnM6dShSKSxkYXRhOkkudmFsdWUsImVtcHR5LW1lc3NhZ2UiOkIudmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSldKX19fSksbGU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC02YH0sdWU9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sZGU9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtZGVzdHJ1Y3RpdmVgfSxmZT17a2V5OjEsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0scGU9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LG1lPXtrZXk6MSxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxoZT17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1kZXN0cnVjdGl2ZWB9LGdlPXtjbGFzczpgZ3JpZCBnYXAtNiBsZzpncmlkLWNvbHMtMmB9LF9lPXtjbGFzczpgZ3JpZCBnYXAtNiBsZzpncmlkLWNvbHMtMmB9LCQ9YGFsbGAsdmU9RSh7X19uYW1lOmBSZWxpYWJpbGl0eVBhZ2VgLHNldHVwKHMpe2xldCBmPXYoKSxwPVYoKSxoPU4oKSxiPVMoKSxDPWFlKCksRT1pKCgpPT5iLnBhcmFtcy5wcm92aWRlcj8/YGApLFA9aSgoKT0+RS52YWx1ZXx8JCk7ZnVuY3Rpb24gRihlKXt0eXBlb2YgZT09YHN0cmluZ2AmJmIuZ29UbyhgcmVsaWFiaWxpdHlgLHsuLi5iLnBhcmFtcyxwcm92aWRlcjplPT09JD9gYDplfSl9ZnVuY3Rpb24gSShlKXtyZXR1cm4gZS5yZXBsYWNlKC9ecHJvdmlkZXI6LyxgYCl9ZnVuY3Rpb24gUihlKXtyZXR1cm4gRS52YWx1ZT9lLmZpbHRlcihlPT5JKGUuc2NvcGUpPT09RS52YWx1ZSk6ZX1mdW5jdGlvbiByZShlKXtyZXR1cm4gZS5tYXAoZT0+ZT09PW51bGw/TmFOOmUpfWxldCB6PWkoKCk9PlIoQy5lcnJvclJhdGUpLm1hcCgoZSx0KT0+KHtsYWJlbDpJKGUuc2NvcGUpLGRhdGE6cmUoZS5wb2ludHMpLGNvbG9yOksodCl9KSkpO2Z1bmN0aW9uIEgoZSl7cmV0dXJuIFIoZSkubWFwKChlLHQpPT4oe2xhYmVsOkkoZS5zY29wZSksZGF0YTplLnBvaW50cyxjb2xvcjpLKHQpfSkpfWxldCBVPWkoKCk9PkgoQy50aW1lb3V0cykpLFc9aSgoKT0+SChDLmZhaWxvdmVycykpLEc9aSgoKT0+W3tsYWJlbDpgNDI5IHJlamVjdGlvbnNgLGRhdGE6Qy5yZWplY3Rpb25zLGNvbG9yOmAtLWRlc3RydWN0aXZlYH1dKSxxPWkoKCk9Plt7bGFiZWw6YDQwMiB1bnByaWNlZCByZWZ1c2Fsc2AsZGF0YTpDLnVucHJpY2VkLGNvbG9yOmAtLXN0YXR1cy13YXJuYH1dKSxKPWkoKCk9PkMuYnVja2V0cy5tYXAoZT0+TChlLEMud2luZG93VXNlZCkpKTtmdW5jdGlvbiBZKGUpe3JldHVybiBpZShOdW1iZXIuaXNOYU4oZSk/bnVsbDplKX1sZXQgWD1pKCgpPT4oZi5vdmVydmlldz8ucHJvdmlkZXJzLmxlbmd0aD8/MCk+MCksb2U9aSgoKT0+Zi5vdmVydmlldyE9PW51bGwmJmYub3ZlcnZpZXcuZmVhdHVyZXMuZmFpbG92ZXI9PT0hMSksWj1pKCgpPT5mLm92ZXJ2aWV3Py5mZWF0dXJlcy5sYXRlbmN5U3RhdHM/PyExKSxzZT1pKCgpPT5FLnZhbHVlIT09YGAmJloudmFsdWUpLFE9aSgoKT0+Qy5wcm92aWRlclBlcmZCdWNrZXRzLm1hcChlPT5MKGUsQy5wcm92aWRlclBlcmZXaW5kb3dVc2VkKSkpLHZlPWkoKCk9Plt7bGFiZWw6YHA1MGAsZGF0YTpDLnByb3ZpZGVyUGVyZlBvaW50cy5tYXAoZT0+ZS5wNTBNcz8/TmFOKSxjb2xvcjpgLS1jaGFydC1yZXF1ZXN0c2B9LHtsYWJlbDpgcDk1YCxkYXRhOkMucHJvdmlkZXJQZXJmUG9pbnRzLm1hcChlPT5lLnA5NU1zPz9OYU4pLGNvbG9yOmAtLWNoYXJ0LXRva2Vucy1pbmB9XSkseWU9aSgoKT0+W3tsYWJlbDpgZmFpbHVyZXNgLGRhdGE6Qy5wcm92aWRlclBlcmZQb2ludHMubWFwKGU9PmUuZmFpbHVyZXMpLGNvbG9yOmAtLWRlc3RydWN0aXZlYH1dKTtsKCgpPT5bRS52YWx1ZSxoLnJhbmdlXSwoW2VdKT0+dm9pZCBDLmZldGNoUHJvdmlkZXJQZXJmKGUpLHtpbW1lZGlhdGU6ITB9KTtsZXQgYmU9aSgoKT0+aC53aW5kb3c9PT1gbW9udGhgKTtyZXR1cm4gbCgoKT0+W2gucmFuZ2UsZi5vdmVydmlldz8ucHJvdmlkZXJzLmxlbmd0aD8/MF0sKCk9PnZvaWQgQy5mZXRjaCgpKSxsKCgpPT5bcC5raW5kRmlsdGVyLHAudXNlckZpbHRlcl0sKFtlLHRdKT0+e2IuZ29UbyhgcmVsaWFiaWxpdHlgLHsuLi5iLnBhcmFtcyxraW5kOmUsdXNlcjp0fSl9KSxsKCgpPT5bYi5wYXJhbXMua2luZCxiLnBhcmFtcy51c2VyXSwoW2UsdF0pPT57cC5zZXRLaW5kRmlsdGVyKGU/P2BgKSxwLnNldFVzZXJGaWx0ZXIodD8/YGApfSx7aW1tZWRpYXRlOiEwfSksZWUoKCk9PnZvaWQgQy5mZXRjaCgpKSwoaSxzKT0+KHcoKSx0KGBkaXZgLGxlLFtvKHUobiksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bbyh1KFQpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtMyBzbTpmbGV4LXJvdyBzbTppdGVtcy1jZW50ZXIgc206anVzdGlmeS1iZXR3ZWVuYH0se2RlZmF1bHQ6eCgoKT0+W3IoYGRpdmAsbnVsbCxbbyh1KG0pLG51bGwse2RlZmF1bHQ6eCgoKT0+Wy4uLnNbMF18fD1bYShgUmVsaWFiaWxpdHlgLC0xKV1dKSxfOjF9KSxvKHUoTyksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bLi4uc1sxXXx8PVthKGBQcm92aWRlciBlcnJvciByYXRlLCBmYWlsb3ZlcnMsIHRpbWVvdXRzLCByYXRlLWxpbWl0IHJlamVjdGlvbnMsIGFuZCA0MDIgcmVmdXNhbHMuYCwtMSldXSksXzoxfSldKSxyKGBkaXZgLHVlLFtzWzNdfHw9cihgbGFiZWxgLHtpZDpgcmVsaWFiaWxpdHktcHJvdmlkZXItbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBQcm92aWRlcmAsLTEpLG8odShqKSx7Im1vZGVsLXZhbHVlIjpQLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpGfSx7ZGVmYXVsdDp4KCgpPT5bbyh1KE0pLHsiYXJpYS1sYWJlbGxlZGJ5IjpgcmVsaWFiaWxpdHktcHJvdmlkZXItbGFiZWxgLGNsYXNzOmB3LTQ4YH0se2RlZmF1bHQ6eCgoKT0+W28odShBKSx7cGxhY2Vob2xkZXI6YEFsbCBwcm92aWRlcnNgfSldKSxfOjF9KSxvKHUobmUpLG51bGwse2RlZmF1bHQ6eCgoKT0+W28odShrKSx7dmFsdWU6JH0se2RlZmF1bHQ6eCgoKT0+Wy4uLnNbMl18fD1bYShgQWxsIHByb3ZpZGVyc2AsLTEpXV0pLF86MX0pLCh3KCEwKSx0KF8sbnVsbCxlKHUoZikub3ZlcnZpZXc/LnByb3ZpZGVycz8/W10sZT0+KHcoKSxjKHUoaykse2tleTplLm5hbWUsdmFsdWU6ZS5uYW1lfSx7ZGVmYXVsdDp4KCgpPT5bYShnKGUubmFtZSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWBdKSkpLDEyOCkpXSksXzoxfSldKSxfOjF9LDgsW2Btb2RlbC12YWx1ZWBdKV0pXSksXzoxfSksbyh1KGQpLG51bGwse2RlZmF1bHQ6eCgoKT0+W3UoQykuZXJyb3I/KHcoKSx0KGBwYCxkZSxnKHUoQykuZXJyb3IpLDEpKTpYLnZhbHVlP3koYGAsITApOih3KCksdChgcGAsZmUsYE5vIHByb3ZpZGVycyBjb25maWd1cmVkLmApKV0pLF86MX0pXSksXzoxfSksYmUudmFsdWU/KHcoKSxjKHUoRCkse2tleTowLHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDp4KCgpPT5bbyh1KHRlKSxudWxsLHtkZWZhdWx0OngoKCk9PlthKGAgUmVsaWFiaWxpdHkgZGF0YSBoYXMgbm8gbW9udGhseSByZXRlbnRpb24g4oCUIGV2ZXJ5IGNoYXJ0IGJlbG93IHNob3dzIHRoZSBtb3N0IHJlY2VudCAzMCBkYXlzLCBub3QgdGhlIGZ1bGwgYCtnKHUoaCkucmFuZ2UpK2AgcmFuZ2Ugc2VsZWN0ZWQgYWJvdmUuIGAsMSldKSxfOjF9KV0pLF86MX0pKTp5KGBgLCEwKSxYLnZhbHVlPyh3KCksYyh1KG4pLHtrZXk6MX0se2RlZmF1bHQ6eCgoKT0+W28odShUKSxudWxsLHtkZWZhdWx0OngoKCk9PltvKHUobSksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bLi4uc1s0XXx8PVthKGBFcnJvciByYXRlIGJ5IHByb3ZpZGVyYCwtMSldXSksXzoxfSksbyh1KE8pLG51bGwse2RlZmF1bHQ6eCgoKT0+Wy4uLnNbNV18fD1bYShgRmFpbGVkIGF0dGVtcHRzIC8gdG90YWwgYXR0ZW1wdHMgcGVyIGJ1Y2tldC4gQSBnYXAgbWVhbnMgbm8gYXR0ZW1wdHMgaW4gdGhhdCBidWNrZXQuYCwtMSldXSksXzoxfSldKSxfOjF9KSxvKHUoZCksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bbyhCLHtsYWJlbHM6Si52YWx1ZSxkYXRhc2V0czp6LnZhbHVlLCJ2YWx1ZS1mb3JtYXR0ZXIiOlksYXJpYUxhYmVsOmBFcnJvciByYXRlIGJ5IHByb3ZpZGVyIG92ZXIgdGltZWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYF0pXSksXzoxfSldKSxfOjF9KSk6eShgYCwhMCksWC52YWx1ZT8odygpLGModShuKSx7a2V5OjJ9LHtkZWZhdWx0OngoKCk9PltvKHUoVCksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bbyh1KG0pLG51bGwse2RlZmF1bHQ6eCgoKT0+Wy4uLnNbNl18fD1bYShgU2VsZWN0ZWQgcHJvdmlkZXIgcGVyZm9ybWFuY2VgLC0xKV1dKSxfOjF9KSxvKHUoTyksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bLi4uc1s3XXx8PVthKGBMYXRlbmN5IChwNTAvcDk1KSBhbmQgZmFpbHVyZXMgcGVyIGJ1Y2tldCBmb3Igb25lIHByb3ZpZGVyLmAsLTEpXV0pLF86MX0pXSksXzoxfSksbyh1KGQpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHtkZWZhdWx0OngoKCk9PltFLnZhbHVlPT09YGA/KHcoKSx0KGBwYCxwZSxgIFNlbGVjdCBhIHByb3ZpZGVyIGFib3ZlIHRvIHNlZSBpdHMgbGF0ZW5jeSBhbmQgZmFpbHVyZSBicmVha2Rvd24gcGVyIGJ1Y2tldC4gYCkpOloudmFsdWU/c2UudmFsdWU/KHcoKSx0KF8se2tleToyfSxbdShDKS5wcm92aWRlclBlcmZFcnJvcj8odygpLHQoYHBgLGhlLGcodShDKS5wcm92aWRlclBlcmZFcnJvciksMSkpOnkoYGAsITApLHIoYGRpdmAsZ2UsW3IoYGRpdmAsbnVsbCxbc1sxMF18fD1yKGBwYCx7Y2xhc3M6YG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTGF0ZW5jeSAobXMpYCwtMSksbyhCLHtsYWJlbHM6US52YWx1ZSxkYXRhc2V0czp2ZS52YWx1ZSxhcmlhTGFiZWw6YHA1MC9wOTUgbGF0ZW5jeSBmb3IgJHtFLnZhbHVlfSBvdmVyIHRpbWVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGFyaWFMYWJlbGBdKV0pLHIoYGRpdmAsbnVsbCxbc1sxMV18fD1yKGBwYCx7Y2xhc3M6YG1iLTIgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgRmFpbHVyZXNgLC0xKSxvKEIse2xhYmVsczpRLnZhbHVlLGRhdGFzZXRzOnllLnZhbHVlLGFyaWFMYWJlbDpgRmFpbHVyZXMgZm9yICR7RS52YWx1ZX0gb3ZlciB0aW1lYH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgLGBhcmlhTGFiZWxgXSldKV0pXSw2NCkpOnkoYGAsITApOih3KCksdChgcGAsbWUsW3NbOF18fD1hKGAgRW5hYmxlIGAsLTEpLHNbOV18fD1yKGBjb2RlYCx7Y2xhc3M6YGZvbnQtbW9ubyB0ZXh0LXhzYH0sYGFkbWluLnN0YXRzLmxhdGVuY3lgLC0xKSxhKGAgaW4gdGhlIHBsdWdpbiBjb25maWcgdG8gc2VlIHBlci1idWNrZXQgbGF0ZW5jeSBmb3IgYCtnKEUudmFsdWUpK2AuIGAsMSldKSldKSxfOjF9KV0pLF86MX0pKTp5KGBgLCEwKSxYLnZhbHVlPyh3KCksYyh1KG4pLHtrZXk6M30se2RlZmF1bHQ6eCgoKT0+W28odShUKSxudWxsLHtkZWZhdWx0OngoKCk9PltvKHUobSksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bLi4uc1sxMl18fD1bYShgVGltZW91dHMgYnkgcHJvdmlkZXJgLC0xKV1dKSxfOjF9KV0pLF86MX0pLG8odShkKSxudWxsLHtkZWZhdWx0OngoKCk9PltvKEIse2xhYmVsczpKLnZhbHVlLGRhdGFzZXRzOlUudmFsdWUsYXJpYUxhYmVsOmBUaW1lb3V0cyBieSBwcm92aWRlciBvdmVyIHRpbWVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2BdKV0pLF86MX0pXSksXzoxfSkpOnkoYGAsITApLFgudmFsdWU/KHcoKSxjKHUobikse2tleTo0fSx7ZGVmYXVsdDp4KCgpPT5bbyh1KFQpLG51bGwse2RlZmF1bHQ6eCgoKT0+W28odShtKSxudWxsLHtkZWZhdWx0OngoKCk9PlsuLi5zWzEzXXx8PVthKGBGYWlsb3ZlcnMgYnkgcHJvdmlkZXJgLC0xKV1dKSxfOjF9KSxvZS52YWx1ZT8odygpLGModShPKSx7a2V5OjB9LHtkZWZhdWx0OngoKCk9PlsuLi5zWzE0XXx8PVthKGBUaGlzIGRlcGxveW1lbnQgaGFzIG5vIGZhaWxvdmVyIGNoYWlucyBjb25maWd1cmVkLmAsLTEpXV0pLF86MX0pKTp5KGBgLCEwKV0pLF86MX0pLG8odShkKSxudWxsLHtkZWZhdWx0OngoKCk9PltvKEIse2xhYmVsczpKLnZhbHVlLGRhdGFzZXRzOlcudmFsdWUsYXJpYUxhYmVsOmBGYWlsb3ZlcnMgYnkgcHJvdmlkZXIgb3ZlciB0aW1lYH0sbnVsbCw4LFtgbGFiZWxzYCxgZGF0YXNldHNgXSldKSxfOjF9KV0pLF86MX0pKTp5KGBgLCEwKSxyKGBkaXZgLF9lLFtvKHUobiksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bbyh1KFQpLG51bGwse2RlZmF1bHQ6eCgoKT0+W28odShtKSxudWxsLHtkZWZhdWx0OngoKCk9PlsuLi5zWzE1XXx8PVthKGBSYXRlLWxpbWl0IHJlamVjdGlvbnMgKDQyOSlgLC0xKV1dKSxfOjF9KSxvKHUoTyksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bLi4uc1sxNl18fD1bYShgRmxlZXQtd2lkZSwgZXZlcnkgc2NvcGUgY29tYmluZWQuYCwtMSldXSksXzoxfSldKSxfOjF9KSxvKHUoZCksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bbyhCLHtsYWJlbHM6Si52YWx1ZSxkYXRhc2V0czpHLnZhbHVlLGFyaWFMYWJlbDpgUmF0ZS1saW1pdCByZWplY3Rpb25zIG92ZXIgdGltZSwgZmxlZXQtd2lkZWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYF0pXSksXzoxfSldKSxfOjF9KSxvKHUobiksbnVsbCx7ZGVmYXVsdDp4KCgpPT5bbyh1KFQpLG51bGwse2RlZmF1bHQ6eCgoKT0+W28odShtKSxudWxsLHtkZWZhdWx0OngoKCk9PlsuLi5zWzE3XXx8PVthKGBVbnByaWNlZCByZWZ1c2FscyAoNDAyKWAsLTEpXV0pLF86MX0pLG8odShPKSxudWxsLHtkZWZhdWx0OngoKCk9PlsuLi5zWzE4XXx8PVthKGBGbGVldC13aWRlIHJlcXVlc3RzIHJlZnVzZWQgZm9yIGhhdmluZyBubyByZXNvbHZhYmxlIHByaWNlLmAsLTEpXV0pLF86MX0pXSksXzoxfSksbyh1KGQpLG51bGwse2RlZmF1bHQ6eCgoKT0+W28oQix7bGFiZWxzOkoudmFsdWUsZGF0YXNldHM6cS52YWx1ZSxhcmlhTGFiZWw6YFVucHJpY2VkIHJlZnVzYWxzICg0MDIpIG92ZXIgdGltZSwgZmxlZXQtd2lkZWB9LG51bGwsOCxbYGxhYmVsc2AsYGRhdGFzZXRzYF0pXSksXzoxfSldKSxfOjF9KV0pLG8oY2UpXSkpfX0pO2V4cG9ydHt2ZSBhcyBkZWZhdWx0fTs=",
|
|
),
|
|
},
|
|
"SpendPage-COAWCgvN.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0FuIGFzIGUsQXQgYXMgdCxDIGFzIG4sRHQgYXMgcixFdCBhcyBpLEl0IGFzIGEsSyBhcyBvLEx0IGFzIHMsT3IgYXMgYyxPdCBhcyBsLFFuIGFzIHUsUnIgYXMgZCxTIGFzIGYsU24gYXMgcCxYdCBhcyBtLF8gYXMgaCxiIGFzIGcsZCBhcyBfLGRpIGFzIHYsZyBhcyB5LGd0IGFzIGIsaCBhcyB4LGt0IGFzIFMsbHQgYXMgQyxyciBhcyB3LHMgYXMgVCxzaSBhcyBFLHQgYXMgZWUsdSBhcyBELHYgYXMgTyx2biBhcyB0ZSx3biBhcyBrLHggYXMgQSx5IGFzIG5lLHp0IGFzIGp9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e3QgYXMgTX1mcm9tIi4vQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIjtpbXBvcnR7biBhcyByZSxyIGFzIGllLHQgYXMgYWV9ZnJvbSIuL3RhYnMtQmJHSnlDUnIuanMiO2ltcG9ydHthIGFzIE4sZCBhcyBQLGkgYXMgb2UsbiBhcyBzZSxvIGFzIGNlLHIgYXMgbGUsdCBhcyBGfWZyb20iLi9pbmRleC1CaVRRX2dDRS5qcyI7aW1wb3J0e3QgYXMgSX1mcm9tIi4vRGF0YVRhYmxlLURWdWVORnVBLmpzIjtpbXBvcnR7YSBhcyBMLGQgYXMgdWUsaSBhcyBkZSxvIGFzIFIsciBhcyB6LHQgYXMgQn1mcm9tIi4vYmFkZ2UtbnMwajhPVXIuanMiO2ltcG9ydHt0IGFzIFZ9ZnJvbSIuL0NvbXBhY3ROdW1iZXItQjFpaFFaSDcuanMiO2ltcG9ydHthIGFzIGZlLGkgYXMgSCxuIGFzIHBlLG8gYXMgVSxyIGFzIG1lLHMgYXMgaGUsdCBhcyBnZX1mcm9tIi4vYnVybmRvd24tQ3F0ZFhTWWsuanMiO2ltcG9ydHt0IGFzIFd9ZnJvbSIuL0VudGl0eUxpbmstQ292c0ZqRWwuanMiO2ltcG9ydHt0IGFzIF9lfWZyb20iLi9DbGFtcGVkUmFuZ2VOb3RpY2UtQnZobTFlLUIuanMiO2ltcG9ydHt0IGFzIHZlfWZyb20iLi9UaW1lU2VyaWVzQ2hhcnQtQlA1SWNVeWcuanMiO2ltcG9ydHtvIGFzIEd9ZnJvbSIuL2twaS1DVTUyTERtcS5qcyI7aW1wb3J0e3QgYXMgeWV9ZnJvbSIuL2NhdGFsb2ctQy1UZktMVlouanMiO2ltcG9ydHtpIGFzIEssciBhcyBxLHQgYXMgSn1mcm9tIi4vc2VyaWVzLU5JUlZCWE1QLmpzIjt2YXIgYmU9W2Btb2RlbGAsYHByb3ZpZGVyYCxgZ3JvdXBgXTtmdW5jdGlvbiB4ZShlKXtyZXR1cm4gYmUuaW5jbHVkZXMoZSl9dmFyIFNlPVtgY29zdGAsYHJlcWAsYHRva2luYCxgdG9rb3V0YF0sWT17Y29zdDpgQ29zdGAscmVxOmBSZXF1ZXN0c2AsdG9raW46YFRva2VucyBpbmAsdG9rb3V0OmBUb2tlbnMgb3V0YH07ZnVuY3Rpb24gQ2UoZSl7cmV0dXJuIFNlLmluY2x1ZGVzKGUpfXZhciBYPTEwMCxaPTEwMCx3ZT02ZTQsVGU9Qyhgc3BlbmRgLHtzdGF0ZTooKT0+KHtieTpgbW9kZWxgLG1ldHJpYzpgY29zdGAsZHJpbGw6YGAsYnVja2V0czpbXSxicmVha2Rvd246W10sb3RoZXJQb2ludHM6bnVsbCx0b3RhbFBvaW50czpbXSxjb21wYXJpc29uUG9pbnRzOm51bGwsY29tcGFyaXNvblVuYXZhaWxhYmxlUmVhc29uOm51bGwsbW9kZWxSYW5raW5nOltdLHByaWNpbmdIZWFsdGhSYW5raW5nOltdLGJ1cm5kb3duQnVja2V0czpbXSxidXJuZG93blBvaW50czpbXSxidXJuZG93bkJ1ZGdldE1pY3JvczpudWxsLGRyaWxsZG93blJvd3M6W10sZHJpbGxkb3duTWV0cmljczpbXSxkcmlsbGRvd25EaXNhYmxlZDohMSxsb2FkaW5nOiExLGVycm9yOmBgLGJyZWFrZG93blJlcUlkOjAscmFua2luZ1JlcUlkOjAscHJpY2luZ0hlYWx0aFJlcUlkOjAsYnVybmRvd25SZXFJZDowLGRyaWxsZG93blJlcUlkOjAscG9sbGVyOnZvaWQgMH0pLGdldHRlcnM6e2J1cm5kb3duQXZhaWxhYmxlOigpPT5EZShGKCkuc2NvcGUpIT09bnVsbH0sYWN0aW9uczp7c2V0U2VsZWN0aW9uKGUpe2xldCB0PSExO2UuYnkhPT12b2lkIDAmJmUuYnkhPT10aGlzLmJ5JiYodGhpcy5ieT1lLmJ5LHQ9ITApLGUubWV0cmljIT09dm9pZCAwJiZlLm1ldHJpYyE9PXRoaXMubWV0cmljJiYodGhpcy5tZXRyaWM9ZS5tZXRyaWMsdD0hMCksZS5kcmlsbCE9PXZvaWQgMCYmZS5kcmlsbCE9PXRoaXMuZHJpbGwmJih0aGlzLmRyaWxsPWUuZHJpbGwsdD0hMCksdCYmdGhpcy5yZWZyZXNoKCl9LGFzeW5jIHJlZnJlc2goKXtuZSgpLmlzQXV0aGVudGljYXRlZCYmYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuZmV0Y2hNb2RlbFJhbmtpbmcoKS50aGVuKCgpPT50aGlzLmZldGNoQnJlYWtkb3duKCkpLHRoaXMuZmV0Y2hQcmljaW5nSGVhbHRoUmFua2luZygpLHRoaXMuZmV0Y2hCdXJuZG93bigpLHRoaXMuZmV0Y2hEcmlsbGRvd24oKV0pfSxhc3luYyBmZXRjaE1vZGVsUmFua2luZygpe2xldCBlPUYoKSx0PSsrdGhpcy5yYW5raW5nUmVxSWQ7dHJ5e2xldCBuPWF3YWl0IE8oYC9hZG1pbi9hcGkvdXNhZ2UvbW9kZWxzP21ldHJpYz0ke3RoaXMubWV0cmljfSZ3aW5kb3c9JHtlLndpbmRvd30mc3Bhbj0ke2Uuc3Bhbn0mbGltaXQ9JHtYfSZkZXRhaWw9MWApO2lmKHQhPT10aGlzLnJhbmtpbmdSZXFJZClyZXR1cm47dGhpcy5tb2RlbFJhbmtpbmc9bi5tb2RlbHN9Y2F0Y2goZSl7aWYodCE9PXRoaXMucmFua2luZ1JlcUlkfHxRKGUpKXJldHVybjt0aGlzLmVycm9yPSQoZSl9fSxhc3luYyBmZXRjaFByaWNpbmdIZWFsdGhSYW5raW5nKCl7bGV0IGU9RigpLHQ9Kyt0aGlzLnByaWNpbmdIZWFsdGhSZXFJZDt0cnl7bGV0IG49YXdhaXQgTyhgL2FkbWluL2FwaS91c2FnZS9tb2RlbHM/bWV0cmljPXJlcSZ3aW5kb3c9JHtlLndpbmRvd30mc3Bhbj0ke2Uuc3Bhbn0mbGltaXQ9JHtYfSZkZXRhaWw9MWApO2lmKHQhPT10aGlzLnByaWNpbmdIZWFsdGhSZXFJZClyZXR1cm47dGhpcy5wcmljaW5nSGVhbHRoUmFua2luZz1uLm1vZGVsc31jYXRjaChlKXtpZih0IT09dGhpcy5wcmljaW5nSGVhbHRoUmVxSWR8fFEoZSkpcmV0dXJuO3RoaXMuZXJyb3I9JChlKX19LGFzeW5jIGZldGNoQnJlYWtkb3duKCl7bGV0IGU9RigpLHQ9Kyt0aGlzLmJyZWFrZG93blJlcUlkO3RoaXMubG9hZGluZz0hMDt0cnl7aWYoZS5zY29wZT09PWBhbGxgP2F3YWl0IHRoaXMuZmV0Y2hCcmVha2Rvd25GbGVldFdpZGUoZS53aW5kb3csZS5zcGFuLHQpOmUuc2NvcGUuc3RhcnRzV2l0aChgZ3JvdXA6YCl8fGUuc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKT9hd2FpdCB0aGlzLmZldGNoQnJlYWtkb3duU2luZ2xlU2NvcGUoZS5zY29wZSxlLndpbmRvdyxlLnNwYW4sdCk6YXdhaXQgdGhpcy5mZXRjaEJyZWFrZG93blByb3ZpZGVyU2NvcGUoZS5zY29wZS5zbGljZSg5KSxlLndpbmRvdyxlLnNwYW4sdCksdCE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO3RoaXMuZXJyb3I9YGAsZS5jbXBTcGVjLnJlcXVlc3RlZD9hd2FpdCB0aGlzLmZldGNoQ29tcGFyaXNvbihlLnNjb3BlLGUud2luZG93LGUuc3BhbixlLmNtcFNwZWMub2Zmc2V0LHQpOih0aGlzLmNvbXBhcmlzb25Qb2ludHM9bnVsbCx0aGlzLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbj1udWxsKX1jYXRjaChlKXtpZih0IT09dGhpcy5icmVha2Rvd25SZXFJZHx8UShlKSlyZXR1cm47dGhpcy5lcnJvcj0kKGUpfWZpbmFsbHl7dD09PXRoaXMuYnJlYWtkb3duUmVxSWQmJih0aGlzLmxvYWRpbmc9ITEpfX0sYXN5bmMgZmV0Y2hCcmVha2Rvd25GbGVldFdpZGUoZSx0LG4pe2xldCByPWF3YWl0IHRoaXMuZmV0Y2hTZXJpZXMoW2B0b3RhbGBdLHRoaXMubWV0cmljLGUsdCwwKTtpZihuIT09dGhpcy5icmVha2Rvd25SZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPXIuYnVja2V0cztsZXQgaT1yLnNlcmllcy5maW5kKGU9PmUuc2NvcGU9PT1gdG90YWxgKT8ucG9pbnRzPz9BcnJheShyLmJ1Y2tldHMubGVuZ3RoKS5maWxsKDApO2lmKHRoaXMudG90YWxQb2ludHM9aSx0aGlzLmJ5PT09YG1vZGVsYCl7bGV0IHI9dGhpcy5tb2RlbFJhbmtpbmcuc2xpY2UoMCwxMCkubWFwKGU9PmBtb2RlbDoke2UuaWR9YCk7aWYoci5sZW5ndGg9PT0wKXt0aGlzLmJyZWFrZG93bj1bXSx0aGlzLm90aGVyUG9pbnRzPUooaSxbXSk7cmV0dXJufWxldCBhPWF3YWl0IHRoaXMuZmV0Y2hTZXJpZXMocix0aGlzLm1ldHJpYyxlLHQsMCk7aWYobiE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO2xldCBvPXEoYS5zZXJpZXMsMTApO3RoaXMuYnJlYWtkb3duPW8sdGhpcy5vdGhlclBvaW50cz1KKGksbyk7cmV0dXJufWlmKHRoaXMuYnk9PT1gcHJvdmlkZXJgKXtsZXQgcj10aGlzLm1vZGVsUmFua2luZy5zbGljZSgwLFopLm1hcChlPT5gbW9kZWw6JHtlLmlkfWApO2lmKHIubGVuZ3RoPT09MCl7dGhpcy5icmVha2Rvd249W10sdGhpcy5vdGhlclBvaW50cz1udWxsO3JldHVybn1sZXQgaT1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKHIsdGhpcy5tZXRyaWMsZSx0LDApO2lmKG4hPT10aGlzLmJyZWFrZG93blJlcUlkKXJldHVybjt0aGlzLmJyZWFrZG93bj1LKGkuc2VyaWVzKSx0aGlzLm90aGVyUG9pbnRzPW51bGw7cmV0dXJufWxldCBhPWF3YWl0IE8oXyh7a2luZDpgZ3JvdXBgLHdpbmRvdzplLHNwYW46dCxtZXRyaWNzOlt0aGlzLm1ldHJpY119KSk7aWYobiE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO2xldCBvPWEucm93cy5zbGljZSgwLFopLm1hcChlPT5gZ3JvdXA6JHtlLmlkfWApO2lmKG8ubGVuZ3RoPT09MCl7dGhpcy5icmVha2Rvd249W10sdGhpcy5vdGhlclBvaW50cz1udWxsO3JldHVybn1sZXQgcz1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKG8sdGhpcy5tZXRyaWMsZSx0LDApO249PT10aGlzLmJyZWFrZG93blJlcUlkJiYodGhpcy5icmVha2Rvd249cy5zZXJpZXMsdGhpcy5vdGhlclBvaW50cz1udWxsKX0sYXN5bmMgZmV0Y2hCcmVha2Rvd25TaW5nbGVTY29wZShlLHQsbixyKXtsZXQgaT1hd2FpdCB0aGlzLmZldGNoU2VyaWVzKFtlXSx0aGlzLm1ldHJpYyx0LG4sMCk7aWYociE9PXRoaXMuYnJlYWtkb3duUmVxSWQpcmV0dXJuO3RoaXMuYnVja2V0cz1pLmJ1Y2tldHM7bGV0IGE9aS5zZXJpZXMuZmluZCh0PT50LnNjb3BlPT09ZSk/LnBvaW50cz8/QXJyYXkoaS5idWNrZXRzLmxlbmd0aCkuZmlsbCgwKTt0aGlzLmJyZWFrZG93bj1be3Njb3BlOmUscG9pbnRzOmF9XSx0aGlzLm90aGVyUG9pbnRzPW51bGwsdGhpcy50b3RhbFBvaW50cz1hfSxhc3luYyBmZXRjaEJyZWFrZG93blByb3ZpZGVyU2NvcGUoZSx0LG4scil7bGV0IGk9dGhpcy5tb2RlbFJhbmtpbmcuZmlsdGVyKHQ9PnQuaWQuc3RhcnRzV2l0aChgJHtlfS9gKSkuc2xpY2UoMCxaKS5tYXAoZT0+YG1vZGVsOiR7ZS5pZH1gKTtpZihpLmxlbmd0aD09PTApe3RoaXMuYnVja2V0cz1bXSx0aGlzLmJyZWFrZG93bj1bXSx0aGlzLm90aGVyUG9pbnRzPW51bGwsdGhpcy50b3RhbFBvaW50cz1bXTtyZXR1cm59bGV0IGE9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhpLHRoaXMubWV0cmljLHQsbiwwKTtpZihyIT09dGhpcy5icmVha2Rvd25SZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPWEuYnVja2V0cztsZXRbb109SyhhLnNlcmllcykscz1vPy5wb2ludHM/P0FycmF5KGEuYnVja2V0cy5sZW5ndGgpLmZpbGwoMCk7dGhpcy5icmVha2Rvd249W3tzY29wZTpgcHJvdmlkZXI6JHtlfWAscG9pbnRzOnN9XSx0aGlzLm90aGVyUG9pbnRzPW51bGwsdGhpcy50b3RhbFBvaW50cz1zfSxhc3luYyBmZXRjaENvbXBhcmlzb24oZSx0LG4scixpKXtsZXQgYT1lPT09YGFsbGA/YHRvdGFsYDplLnN0YXJ0c1dpdGgoYHByb3ZpZGVyOmApP251bGw6ZTtpZihhPT09bnVsbCl7dGhpcy5jb21wYXJpc29uUG9pbnRzPW51bGwsdGhpcy5jb21wYXJpc29uVW5hdmFpbGFibGVSZWFzb249YENvbXBhcmlzb24gaXMgbm90IGF2YWlsYWJsZSBmb3IgYSBzaW5nbGUtcHJvdmlkZXIgc2NvcGUuYDtyZXR1cm59bGV0IG89YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhbYV0sdGhpcy5tZXRyaWMsdCxuLHIpO2k9PT10aGlzLmJyZWFrZG93blJlcUlkJiYodGhpcy5jb21wYXJpc29uUG9pbnRzPW8uc2VyaWVzLmZpbmQoZT0+ZS5zY29wZT09PWEpPy5wb2ludHM/P251bGwsdGhpcy5jb21wYXJpc29uVW5hdmFpbGFibGVSZWFzb249bnVsbCl9LGFzeW5jIGZldGNoU2VyaWVzKGUsdCxuLHIsaSl7cmV0dXJuIE8oRCh7c2NvcGU6ZSxtZXRyaWM6dCx3aW5kb3c6bixzcGFuOnIsb2Zmc2V0Oml8fHZvaWQgMH0pKX0sYXN5bmMgZmV0Y2hCdXJuZG93bigpe2xldCBlPUYoKSx0PSsrdGhpcy5idXJuZG93blJlcUlkLG49RGUoZS5zY29wZSk7aWYobj09PW51bGwpe3RoaXMuYnVybmRvd25CdWNrZXRzPVtdLHRoaXMuYnVybmRvd25Qb2ludHM9W10sdGhpcy5idXJuZG93bkJ1ZGdldE1pY3Jvcz1udWxsO3JldHVybn10cnl7bGV0IGU9cGUobmV3IERhdGUpLHI9YXdhaXQgdGhpcy5mZXRjaFNlcmllcyhbbl0sYGNvc3RgLGBkYXlgLGUsMCk7aWYodCE9PXRoaXMuYnVybmRvd25SZXFJZClyZXR1cm47dGhpcy5idXJuZG93bkJ1Y2tldHM9ci5idWNrZXRzLHRoaXMuYnVybmRvd25Qb2ludHM9ci5zZXJpZXMuZmluZChlPT5lLnNjb3BlPT09bik/LnBvaW50cz8/QXJyYXkoci5idWNrZXRzLmxlbmd0aCkuZmlsbCgwKSx0aGlzLmJ1cm5kb3duQnVkZ2V0TWljcm9zPU9lKG4pfWNhdGNoKGUpe2lmKHQhPT10aGlzLmJ1cm5kb3duUmVxSWR8fFEoZSkpcmV0dXJuO3RoaXMuZXJyb3I9JChlKX19LGFzeW5jIGZldGNoRHJpbGxkb3duKCl7bGV0IGU9RigpLHQ9Kyt0aGlzLmRyaWxsZG93blJlcUlkLG49RWUodGhpcy5kcmlsbCk7dHJ5e2xldCByPW4ua2luZD09PWB1c2VybW9kZWxgP3traW5kOmB1c2VybW9kZWxgLC4uLlQoZS53aW5kb3csZS5zcGFuKSx1c2VyOm4udXNlcn06bi5raW5kPT09YHVzZXJgP3traW5kOmB1c2VyYCx3aW5kb3c6ZS53aW5kb3csc3BhbjplLnNwYW4sZ3JvdXA6bi5ncm91cCxtZXRyaWNzOltgcmVxYCxgdG9raW5gLGB0b2tvdXRgLGBjb3N0YF19OntraW5kOmBncm91cGAsd2luZG93OmUud2luZG93LHNwYW46ZS5zcGFuLG1ldHJpY3M6W2ByZXFgLGB0b2tpbmAsYHRva291dGAsYGNvc3RgXX0saT1hd2FpdCBPKF8ocikpO2lmKHQhPT10aGlzLmRyaWxsZG93blJlcUlkKXJldHVybjt0aGlzLmRyaWxsZG93blJvd3M9aS5yb3dzLHRoaXMuZHJpbGxkb3duTWV0cmljcz1pLm1ldHJpY3MsdGhpcy5kcmlsbGRvd25EaXNhYmxlZD0hMX1jYXRjaChlKXtpZih0IT09dGhpcy5kcmlsbGRvd25SZXFJZHx8UShlKSlyZXR1cm47aWYoZSBpbnN0YW5jZW9mIGgmJmUuc3RhdHVzPT09NDA0KXt0aGlzLmRyaWxsZG93blJvd3M9W10sdGhpcy5kcmlsbGRvd25NZXRyaWNzPVtdLHRoaXMuZHJpbGxkb3duRGlzYWJsZWQ9ITA7cmV0dXJufXRoaXMuZXJyb3I9JChlKX19LHN0YXJ0UG9sbGluZygpe3RoaXMucG9sbGVyfHwodGhpcy5wb2xsZXI9eSh7aW50ZXJ2YWxNczp3ZSx0aWNrOigpPT52b2lkIHRoaXMucmVmcmVzaCgpfSksdGhpcy5wb2xsZXIuc3RhcnQoKSl9LHN0b3BQb2xsaW5nKCl7dGhpcy5wb2xsZXI/LnN0b3AoKSx0aGlzLnBvbGxlcj12b2lkIDB9fX0pO2Z1bmN0aW9uIEVlKGUpe3JldHVybiBlPT09YGA/e2tpbmQ6YGdyb3VwYH06ZS5zdGFydHNXaXRoKGBncm91cDpgKT97a2luZDpgdXNlcmAsZ3JvdXA6ZS5zbGljZSg2KX06e2tpbmQ6YHVzZXJtb2RlbGAsdXNlcjplLnNsaWNlKDUpfX1mdW5jdGlvbiBEZShlKXtyZXR1cm4gZT09PWBhbGxgP2B0b3RhbGA6ZS5zdGFydHNXaXRoKGBncm91cDpgKXx8ZS5zdGFydHNXaXRoKGB1c2VyOmApP2U6bnVsbH1mdW5jdGlvbiBPZShlKXtsZXQgdD14KCk7aWYoZT09PWB0b3RhbGApe2xldCBlPUcodC5vdmVydmlldz8uZ3JvdXBzPz9bXSk7cmV0dXJuIGU+MD9lOm51bGx9aWYoZS5zdGFydHNXaXRoKGBncm91cDpgKSl7bGV0IG49ZS5zbGljZSg2KSxyPXQub3ZlcnZpZXc/Lmdyb3Vwcy5maW5kKGU9PmUubmFtZT09PW4pPy5saW1pdHM/LmNvc3RQZXJNb250aFVTRDtyZXR1cm4gciYmcj4wP01hdGgucm91bmQocioxZTYpOm51bGx9bGV0IG49ZS5zbGljZSg1KSxyPXQudXNhZ2U/LnVzZXJzLmZpbmQoZT0+ZS5pZD09PW4pPy5saW1pdHM/LmNvc3RQZXJNb250aFVTRDtyZXR1cm4gciYmcj4wP01hdGgucm91bmQocioxZTYpOm51bGx9ZnVuY3Rpb24gUShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGgmJihlLnN0YXR1cz09PTQwMXx8ZS5zdGF0dXM9PT00MDMpfWZ1bmN0aW9uICQoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfXZhciBrZT17ImFyaWEtbGFiZWwiOmBCcmVhZGNydW1iYCxjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xLjUgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxBZT1bYGRpc2FibGVkYF0samU9e2NsYXNzOmBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmRgfSxNZT17Y2xhc3M6YGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZGB9LE5lPXtrZXk6MSxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxQZT1qKHtfX25hbWU6YEF0dHJpYnV0aW9uRHJpbGxkb3duYCxwcm9wczp7cm93czp7fSxtZXRyaWNzOnt9LGRyaWxsOnt9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW59LHVzZXJNb2RlbFN0YXRzRW5hYmxlZDp7dHlwZTpCb29sZWFufSx3aW5kb3c6e30sc3Bhbjp7fX0sZW1pdHM6W2B1cGRhdGU6ZHJpbGxgXSxzZXR1cChlLHtlbWl0OnV9KXtsZXQgcD1lLGg9dSxfPWkoKCk9PnAuZHJpbGw9PT1gYD97a2luZDpgZ3JvdXBgfTpwLmRyaWxsLnN0YXJ0c1dpdGgoYGdyb3VwOmApP3traW5kOmB1c2VyYCxncm91cDpwLmRyaWxsLnNsaWNlKDYpfTp7a2luZDpgdXNlcm1vZGVsYCx1c2VyOnAuZHJpbGwuc2xpY2UoNSl9KSx5PWMoYGApO2Z1bmN0aW9uIHgoKXtoKGB1cGRhdGU6ZHJpbGxgLGBgKX1mdW5jdGlvbiBDKCl7eS52YWx1ZSYmaChgdXBkYXRlOmRyaWxsYCxgZ3JvdXA6JHt5LnZhbHVlfWApfWZ1bmN0aW9uIFQoZSl7bGV0IHQ9Xy52YWx1ZTt0LmtpbmQ9PT1gZ3JvdXBgP2goYHVwZGF0ZTpkcmlsbGAsYGdyb3VwOiR7ZX1gKTp0LmtpbmQ9PT1gdXNlcmAmJnAudXNlck1vZGVsU3RhdHNFbmFibGVkJiYoeS52YWx1ZT10Lmdyb3VwLGgoYHVwZGF0ZTpkcmlsbGAsYHVzZXI6JHtlfWApKX1sZXQgRT1pKCgpPT5fLnZhbHVlLmtpbmQ9PT1gZ3JvdXBgP2BHcm91cGA6Xy52YWx1ZS5raW5kPT09YHVzZXJgP2BVc2VyYDpgTW9kZWxgKTtmdW5jdGlvbiBlZShlKXtsZXQgdD1fLnZhbHVlO3JldHVybiB0LmtpbmQ9PT1gdXNlcm1vZGVsYD9tKFcse2xhYmVsOmUuaWQsa2luZDpgbW9kZWxgLGlkOmUuaWR9KTp0LmtpbmQ9PT1gZ3JvdXBgfHxwLnVzZXJNb2RlbFN0YXRzRW5hYmxlZD9tKGBidXR0b25gLHt0eXBlOmBidXR0b25gLGNsYXNzOmBpbmxpbmUtZmxleCBjdXJzb3ItcG9pbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTEgcm91bmRlZC1zbSBob3Zlcjp0ZXh0LXByaW1hcnkgaG92ZXI6dW5kZXJsaW5lIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwYCxvbkNsaWNrOigpPT5UKGUuaWQpfSxbZS5pZCxtKFAse2ljb246byxjbGFzczpgc2l6ZS0zYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0pXSk6bShgc3BhbmAse30sZS5pZCl9bGV0IEQ9aSgoKT0+W3tpZDpgaWRgLGhlYWRlcjpFLnZhbHVlLGFjY2Vzc29yRm46ZT0+ZS5pZCxjZWxsOih7cm93OmV9KT0+ZWUoZS5vcmlnaW5hbCl9LC4uLnAubWV0cmljcy5tYXAoZT0+KHtpZDplLGhlYWRlcjpZW2VdPz9lLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46dD0+dC52YWx1ZXNbZV0/PzAsY2VsbDooe3Jvdzp0fSk9PntsZXQgbj10Lm9yaWdpbmFsLnZhbHVlc1tlXT8/MDtyZXR1cm4gZT09PWBjb3N0YD9SKG4pOm0oVix7dmFsdWU6bn0pfX0pKV0pLE89aSgoKT0+Xy52YWx1ZS5raW5kPT09YHVzZXJgJiYoIXAudXNlck1vZGVsU3RhdHNFbmFibGVkfHxwLmRpc2FibGVkKSk7cmV0dXJuKGksYyk9PihrKCksbChkKG4pLG51bGwse2RlZmF1bHQ6dygoKT0+W3MoZChBKSxudWxsLHtkZWZhdWx0OncoKCk9PltzKGQoZyksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bLi4uY1swXXx8PVthKGBBdHRyaWJ1dGlvbmAsLTEpXV0pLF86MX0pLHMoZChNKSxudWxsLHtkZWZhdWx0OncoKCk9PlsuLi5jWzFdfHw9W2EoYERyaWxsIGZyb20gZ3JvdXBzIGludG8gdXNlcnMgaW50byB0aGUgbW9kZWxzIHRoZXkgdXNlZC5gLC0xKV1dKSxfOjF9KSxyKGBuYXZgLGtlLFtyKGBidXR0b25gLHt0eXBlOmBidXR0b25gLGNsYXNzOmBob3Zlcjp0ZXh0LWZvcmVncm91bmQgaG92ZXI6dW5kZXJsaW5lYCxkaXNhYmxlZDpfLnZhbHVlLmtpbmQ9PT1gZ3JvdXBgLG9uQ2xpY2s6eH0sYCBBbGwgZ3JvdXBzIGAsOCxBZSksXy52YWx1ZS5raW5kPT09YHVzZXJgPyhrKCksdChiLHtrZXk6MH0sW3MoZChQKSx7aWNvbjpkKG8pLGNsYXNzOmBzaXplLTNgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLHIoYHNwYW5gLGplLHYoXy52YWx1ZS5ncm91cCksMSldLDY0KSk6UyhgYCwhMCksXy52YWx1ZS5raW5kPT09YHVzZXJtb2RlbGA/KGsoKSx0KGIse2tleToxfSxbcyhkKFApLHtpY29uOmQobyksY2xhc3M6YHNpemUtM2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkseS52YWx1ZT8oaygpLHQoYGJ1dHRvbmAse2tleTowLHR5cGU6YGJ1dHRvbmAsY2xhc3M6YGhvdmVyOnRleHQtZm9yZWdyb3VuZCBob3Zlcjp1bmRlcmxpbmVgLG9uQ2xpY2s6Q30sdih5LnZhbHVlKSwxKSk6UyhgYCwhMCkscyhkKFApLHtpY29uOmQobyksY2xhc3M6YHNpemUtM2AsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkscihgc3BhbmAsTWUsdihfLnZhbHVlLnVzZXIpLDEpXSw2NCkpOlMoYGAsITApXSldKSxfOjF9KSxzKGQoZikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zYH0se2RlZmF1bHQ6dygoKT0+W18udmFsdWUua2luZD09PWB1c2VybW9kZWxgPyhrKCksbChfZSx7a2V5OjAsd2luZG93OmUud2luZG93LHNwYW46ZS5zcGFufSxudWxsLDgsW2B3aW5kb3dgLGBzcGFuYF0pKTpTKGBgLCEwKSxPLnZhbHVlPyhrKCksdChgcGAsTmUsWy4uLmNbMl18fD1bYShgIFBlci1tb2RlbCBhdHRyaWJ1dGlvbiBmb3IgdGhpcyB1c2VyIG5lZWRzIGAsLTEpLHIoYGNvZGVgLHtjbGFzczpgZm9udC1tb25vIHRleHQteHNgfSxgYWRtaW4uc3RhdHMudXNlck1vZGVsYCwtMSksYShgIGVuYWJsZWQuIGAsLTEpXV0pKTooaygpLGwoSSx7a2V5OjIsY29sdW1uczpELnZhbHVlLGRhdGE6ZS5yb3dzLCJlbXB0eS1tZXNzYWdlIjpfLnZhbHVlLmtpbmQ9PT1gZ3JvdXBgP2BObyBncm91cCBoYXMgc3BlbmQgaW4gdGhpcyByYW5nZS5gOmBOb3RoaW5nIGluIHRoaXMgcmFuZ2UuYH0sbnVsbCw4LFtgY29sdW1uc2AsYGRhdGFgLGBlbXB0eS1tZXNzYWdlYF0pKV0pLF86MX0pXSksXzoxfSkpfX0pLEZlPXtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtIHNtOmdyaWQtY29scy0zYH0sSWU9e2tleTowfSxMZT17Y2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgfSxSZT17a2V5OjF9LHplPXtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxCZT17a2V5OjAsY2xhc3M6YHRleHQtc20gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sVmU9aih7X19uYW1lOmBCdXJuRG93bkNoYXJ0YCxwcm9wczp7YnVja2V0czp7fSxwb2ludHM6e30sYnVkZ2V0TWljcm9zOnt9LG5vdzp7fX0sc2V0dXAoZSl7bGV0IG89ZSxjPWkoKCk9Pm8uYnVja2V0cy5tYXAoZT0+eihlLGBkYXlgKSkpLHU9aSgoKT0+Z2Uoby5wb2ludHMpKSxwPWkoKCk9PnUudmFsdWUuYXQoLTEpPz8wKSxtPWkoKCk9Plt7bGFiZWw6YFNwZW50IChNVEQpYCxkYXRhOnUudmFsdWUsY29sb3I6YC0tY2hhcnQtY29zdGB9XSksaD1pKCgpPT5vLmJ1ZGdldE1pY3Jvcz09PW51bGw/W106W3tsYWJlbDpgQnVkZ2V0YCxkYXRhOkFycmF5KHUudmFsdWUubGVuZ3RoKS5maWxsKG8uYnVkZ2V0TWljcm9zKSxjb2xvcjpgLS1kZXN0cnVjdGl2ZWB9XSksXz1pKCgpPT5vLmJ1ZGdldE1pY3Jvcz09PW51bGw/bnVsbDptZShwLnZhbHVlLG8uYnVkZ2V0TWljcm9zLG8ubm93KSkseT1pKCgpPT5vLmJ1ZGdldE1pY3JvcyE9PW51bGwmJnAudmFsdWU+PW8uYnVkZ2V0TWljcm9zKTtyZXR1cm4oaSxvKT0+KGsoKSxsKGQobiksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bcyhkKEEpLG51bGwse2RlZmF1bHQ6dygoKT0+W3MoZChnKSxudWxsLHtkZWZhdWx0OncoKCk9PlsuLi5vWzBdfHw9W2EoYEJ1cm4tZG93bmAsLTEpXV0pLF86MX0pLHMoZChNKSxudWxsLHtkZWZhdWx0OncoKCk9PlsuLi5vWzFdfHw9W2EoYEN1bXVsYXRpdmUgc3BlbmQgdGhpcyBVVEMgY2FsZW5kYXIgbW9udGggYWdhaW5zdCB0aGUgY29uZmlndXJlZCBidWRnZXQuYCwtMSldXSksXzoxfSldKSxfOjF9KSxzKGQoZikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0se2RlZmF1bHQ6dygoKT0+W3IoYGRpdmAsRmUsW3IoYGRpdmAsbnVsbCxbb1syXXx8PXIoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFNwZW50IHNvIGZhcmAsLTEpLHIoYHBgLHtjbGFzczpFKFtgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2AseS52YWx1ZT9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSl9LHYoZChSKShwLnZhbHVlKSksMyldKSxlLmJ1ZGdldE1pY3Jvcz09PW51bGw/UyhgYCwhMCk6KGsoKSx0KGBkaXZgLEllLFtvWzNdfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQnVkZ2V0YCwtMSkscihgcGAsTGUsdihkKFIpKGUuYnVkZ2V0TWljcm9zKSksMSldKSksZS5idWRnZXRNaWNyb3M9PT1udWxsP1MoYGAsITApOihrKCksdChgZGl2YCxSZSxbb1s0XXx8PXIoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByb2plY3RlZCBydW4tb3V0YCwtMSksXy52YWx1ZT09PW51bGw/KGsoKSx0KGBwYCx6ZSxgbm90IGVub3VnaCBkYXRhIHlldGApKTooaygpLHQoYHBgLHtrZXk6MSxjbGFzczpFKFtgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2AseS52YWx1ZT9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSl9LHYoXy52YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcodm9pZCAwLHttb250aDpgc2hvcnRgLGRheTpgbnVtZXJpY2B9KSksMykpXSkpXSksZS5idWRnZXRNaWNyb3M9PT1udWxsPyhrKCksdChgcGAsQmUsYE5vIGJ1ZGdldCBjb25maWd1cmVkIGZvciB0aGlzIHNjb3BlLmApKTpTKGBgLCEwKSxzKHZlLHtsYWJlbHM6Yy52YWx1ZSxkYXRhc2V0czptLnZhbHVlLCJjb21wYXJpc29uLWRhdGFzZXRzIjpoLnZhbHVlLCJ2YWx1ZS1mb3JtYXR0ZXIiOmQoUiksYXJpYUxhYmVsOmBDdW11bGF0aXZlIHNwZW5kIHRoaXMgbW9udGggYWdhaW5zdCB0aGUgY29uZmlndXJlZCBidWRnZXRgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGNvbXBhcmlzb24tZGF0YXNldHNgLGB2YWx1ZS1mb3JtYXR0ZXJgXSldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBIZShlKXtyZXR1cm4gZS5maWx0ZXIoZT0+ZS5mcmVlKS5tYXAoZT0+KHt0b2tlbnNJbjplLnRva2Vuc0luPz8wLHRva2Vuc091dDplLnRva2Vuc091dD8/MH0pKX1mdW5jdGlvbiBVZShlLHQsbil7bGV0IHI9MDtmb3IobGV0IGkgb2YgZSlyKz1pLnRva2Vuc0luKnQraS50b2tlbnNPdXQqbjtyZXR1cm4gTWF0aC5yb3VuZChyKX12YXIgV2U9bmV3IFNldChbYGZyZWVgLGB1bnByaWNlZGBdKTtmdW5jdGlvbiBHZShlLHQpe2xldCBuPW51bGw7Zm9yKGxldCByIG9mIGUpe2lmKHIucmVxdWVzdHM9PT12b2lkIDApY29udGludWU7bGV0IGU9dC5nZXQoci5pZCk7IWV8fFdlLmhhcyhlLnByaWNlU291cmNlKXx8KG49PT1udWxsfHxyLnJlcXVlc3RzPihuLnJlcXVlc3RzPz8wKSkmJihuPXIpfXJldHVybiBuPy5pZD8/bnVsbH12YXIgS2U9e2tleTowLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0scWU9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LEplPXtrZXk6MSxjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtcyB0ZXh0LWNoYXJ0LXJlcXVlc3RzYH0sWWU9e2tleTowfSxYZT17a2V5OjAsY2xhc3M6YHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sWmU9e2tleToxLGNsYXNzOmB0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGFidWxhci1udW1zIHRleHQtY2hhcnQtcmVxdWVzdHNgfSxRZT17a2V5OjIsY2xhc3M6YHRleHQteHMgdGV4dC1zdGF0dXMtd2FybmB9LCRlPWooe19fbmFtZTpgQ29zdEF2b2lkZWRDYXJkYCxwcm9wczp7bW9kZWxzOnt9LGNhdGFsb2c6e30scmVmTW9kZWw6e30sY2FjaGVTdGF0c0VuYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sY2FjaGVTYXZpbmdzQXZhaWxhYmxlOnt0eXBlOkJvb2xlYW59LGNhY2hlU2F2aW5nc05vdGU6e319LGVtaXRzOltgdXBkYXRlOnJlZk1vZGVsYF0sc2V0dXAobyx7ZW1pdDpjfSl7bGV0IHU9byxwPWMsbT1pKCgpPT57bGV0IGU9W107Zm9yKGxldCB0IG9mIHUubW9kZWxzKXtsZXQgbj11LmNhdGFsb2cuZ2V0KHQuaWQpOyFufHxuLnByaWNlU291cmNlPT09YGZyZWVgfHxuLnByaWNlU291cmNlPT09YHVucHJpY2VkYHx8ZS5wdXNoKHtpZDp0LmlkLHJlcXVlc3RzOnQucmVxdWVzdHM/PzB9KX1yZXR1cm4gZS5zb3J0KChlLHQpPT50LnJlcXVlc3RzLWUucmVxdWVzdHMpfSksaD1pKCgpPT5HZSh1Lm1vZGVscyx1LmNhdGFsb2cpKSxfPWkoKCk9PnUucmVmTW9kZWx8fGgudmFsdWUpLHk9aSgoKT0+Xy52YWx1ZT91LmNhdGFsb2cuZ2V0KF8udmFsdWUpOnZvaWQgMCkseD1pKCgpPT57bGV0IGU9eS52YWx1ZTtyZXR1cm4hZXx8ZS5pbnB1dFBlck1Ub2tVc2Q9PT12b2lkIDB8fGUub3V0cHV0UGVyTVRva1VzZD09PXZvaWQgMD9udWxsOlVlKEhlKHUubW9kZWxzKSxlLmlucHV0UGVyTVRva1VzZCxlLm91dHB1dFBlck1Ub2tVc2QpfSksQz1pKCgpPT57bGV0IGU9MDtmb3IobGV0IHQgb2YgdS5tb2RlbHMpZSs9dC5jYWNoZVNhdmVkTWljcm9Vc2Q/PzA7cmV0dXJuIGV9KTtmdW5jdGlvbiBUKGUpe3R5cGVvZiBlPT1gc3RyaW5nYCYmcChgdXBkYXRlOnJlZk1vZGVsYCxlKX1yZXR1cm4oaSxjKT0+KGsoKSxsKGQobiksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bcyhkKEEpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpmbGV4LXJvdyBzbTppdGVtcy1zdGFydCBzbTpqdXN0aWZ5LWJldHdlZW5gfSx7ZGVmYXVsdDp3KCgpPT5bcihgZGl2YCxudWxsLFtzKGQoZyksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bLi4uY1swXXx8PVthKGBDb3N0IGF2b2lkZWRgLC0xKV1dKSxfOjF9KSxzKGQoTSksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bLi4uY1sxXXx8PVthKGBXaGF0IGZyZWUtdGllciB0cmFmZmljIGluIHJhbmdlIHdvdWxkIGhhdmUgY29zdCBhdCBhIHJlYWwgbW9kZWwncyBvd24gcmF0ZXMuYCwtMSldXSksXzoxfSldKSxtLnZhbHVlLmxlbmd0aD4wPyhrKCksdChgZGl2YCxLZSxbY1syXXx8PXIoYGxhYmVsYCx7aWQ6YGNvc3QtYXZvaWRlZC1yZWYtbGFiZWxgLGNsYXNzOmB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBSZWZlcmVuY2UgbW9kZWxgLC0xKSxzKGQoY2UpLHsibW9kZWwtdmFsdWUiOl8udmFsdWU/P3ZvaWQgMCwib25VcGRhdGU6bW9kZWxWYWx1ZSI6VH0se2RlZmF1bHQ6dygoKT0+W3MoZChsZSkseyJhcmlhLWxhYmVsbGVkYnkiOmBjb3N0LWF2b2lkZWQtcmVmLWxhYmVsYCxjbGFzczpgdy01NmB9LHtkZWZhdWx0OncoKCk9PltzKGQoc2UpLHtwbGFjZWhvbGRlcjpgUGljayBhIHJlZmVyZW5jZSBtb2RlbGB9KV0pLF86MX0pLHMoZChOKSxudWxsLHtkZWZhdWx0OncoKCk9PlsoayghMCksdChiLG51bGwsZShtLnZhbHVlLGU9PihrKCksbChkKG9lKSx7a2V5OmUuaWQsdmFsdWU6ZS5pZH0se2RlZmF1bHQ6dygoKT0+W2EodihlLmlkKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSkpOlMoYGAsITApXSksXzoxfSkscyhkKGYpLHtjbGFzczpgZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB0ZXh0LXNtYH0se2RlZmF1bHQ6dygoKT0+W3IoYGRpdmAsbnVsbCxbY1szXXx8PXIoYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYENvc3QgYXZvaWRlZCAoZnJlZS10aWVyIHRyYWZmaWMpYCwtMSkseC52YWx1ZT09PW51bGw/KGsoKSx0KGBwYCxxZSx2KG0udmFsdWUubGVuZ3RoPT09MD9gTm8gcHJpY2VkIG1vZGVsIHNlcnZlZCBpbiByYW5nZSB0byBjb21wYXJlIGFnYWluc3QuYDpgUGljayBhIHJlZmVyZW5jZSBtb2RlbCBhYm92ZS5gKSwxKSk6KGsoKSx0KGBwYCxKZSx2KGQoUikoeC52YWx1ZSkpLDEpKV0pLG8uY2FjaGVTdGF0c0VuYWJsZWQ/KGsoKSx0KGBkaXZgLFllLFtjWzRdfHw9cihgcGAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQ2FjaGUgc2F2aW5nc2AsLTEpLG8uY2FjaGVTYXZpbmdzQXZhaWxhYmxlPyhrKCksdChgcGAsWmUsdihkKFIpKEMudmFsdWUpKSwxKSk6KGsoKSx0KGBwYCxYZSxgbi9hYCkpLG8uY2FjaGVTYXZpbmdzTm90ZT8oaygpLHQoYHBgLFFlLHYoby5jYWNoZVNhdmluZ3NOb3RlKSwxKSk6UyhgYCwhMCldKSk6UyhgYCwhMCldKSxfOjF9KV0pLF86MX0pKX19KTtmdW5jdGlvbiBldChlLHQpe2xldCBuPVtdO2ZvcihsZXQgciBvZiBlKXtsZXQgZT10LmdldChyLmlkKTtlJiZuLnB1c2goe2lkOnIuaWQscHJpY2VTb3VyY2U6ZS5wcmljZVNvdXJjZSxkaXNwbGF5RnJlZTplLmRpc3BsYXlGcmVlPz8hMSxyZXF1ZXN0czpyLnJlcXVlc3RzPz8wLHRva2Vuc0luOnIudG9rZW5zSW4/PzAsdG9rZW5zT3V0OnIudG9rZW5zT3V0Pz8wLGNvc3RNaWNyb1VzZDpyLmNvc3RNaWNyb1VzZD8/MCxjb250ZXh0VG9rZW5zOmUuY29udGV4dFRva2VucyxpbnB1dFBlck1Ub2tVc2Q6ZS5pbnB1dFBlck1Ub2tVc2Qsb3V0cHV0UGVyTVRva1VzZDplLm91dHB1dFBlck1Ub2tVc2QsYWxpYXNlczplLmFsaWFzZXN9KX1yZXR1cm4gbn12YXIgdHQ9e3VucHJpY2VkOjAsb3ZlcnJpZGU6MSxidWlsdGluOjIsbGl0ZWxsbTozLGZyZWU6NH07ZnVuY3Rpb24gbnQoZSl7cmV0dXJuWy4uLmVdLnNvcnQoKGUsdCk9PntsZXQgbj10dFtlLnByaWNlU291cmNlXS10dFt0LnByaWNlU291cmNlXTtyZXR1cm4gbj09PTA/dC5yZXF1ZXN0cy1lLnJlcXVlc3RzOm59KX12YXIgcnQ9e2NsYXNzOmBmbGV4IGp1c3RpZnktZW5kYH0saXQ9aih7X19uYW1lOmBQcmljaW5nSGVhbHRoVGFibGVgLHByb3BzOnttb2RlbHM6e30sY2F0YWxvZzp7fX0sc2V0dXAoZSl7bGV0IHQ9ZSxvPWkoKCk9Pm50KGV0KHQubW9kZWxzLHQuY2F0YWxvZykpKSxjPWkoKCk9Pm8udmFsdWUuZmlsdGVyKGU9PmUucHJpY2VTb3VyY2U9PT1gdW5wcmljZWRgKS5sZW5ndGgpLHU9e3VucHJpY2VkOmBkZXN0cnVjdGl2ZWAsZnJlZTpgc2Vjb25kYXJ5YCxvdmVycmlkZTpgb3V0bGluZWAsYnVpbHRpbjpgb3V0bGluZWAsbGl0ZWxsbTpgb3V0bGluZWB9O2Z1bmN0aW9uIHAoZSl7cmV0dXJuIG0oQix7YXM6YHNwYW5gLHZhcmlhbnQ6dVtlLnByaWNlU291cmNlXSxjbGFzczpgZm9udC1ub3JtYWxgfSwoKT0+ZS5wcmljZVNvdXJjZSl9ZnVuY3Rpb24gaChlKXtyZXR1cm4gZS5pbnB1dFBlck1Ub2tVc2Q9PT12b2lkIDB8fGUub3V0cHV0UGVyTVRva1VzZD09PXZvaWQgMD9tKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGDigJRgKTptKGBzcGFuYCx7fSx1ZShlLmlucHV0UGVyTVRva1VzZCxlLm91dHB1dFBlck1Ub2tVc2QpKX1sZXQgXz1be2lkOmBpZGAsaGVhZGVyOmBNb2RlbGAsYWNjZXNzb3JGbjplPT5lLmlkLGNlbGw6KHtyb3c6ZX0pPT5tKFcse2xhYmVsOmUub3JpZ2luYWwuaWQsa2luZDpgbW9kZWxgLGlkOmUub3JpZ2luYWwuaWR9KX0se2lkOmBzb3VyY2VgLGhlYWRlcjpgU291cmNlYCxhY2Nlc3NvckZuOmU9PmUucHJpY2VTb3VyY2UsY2VsbDooe3JvdzplfSk9PnAoZS5vcmlnaW5hbCl9LHtpZDpgcHJpY2VgLGhlYWRlcjpgUHJpY2VgLGVuYWJsZVNvcnRpbmc6ITEsY2VsbDooe3JvdzplfSk9PmgoZS5vcmlnaW5hbCl9LHtpZDpgY29udGV4dGAsaGVhZGVyOmBDb250ZXh0YCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUuY29udGV4dFRva2Vucz8/MCxjZWxsOih7cm93OmV9KT0+bShgc3BhbmAse2NsYXNzOmB0YWJ1bGFyLW51bXNgfSxlLm9yaWdpbmFsLmNvbnRleHRUb2tlbnM9PT12b2lkIDA/YOKAlGA6TChlLm9yaWdpbmFsLmNvbnRleHRUb2tlbnMpKX0se2lkOmByZXF1ZXN0c2AsaGVhZGVyOmBSZXF1ZXN0c2AsbWV0YTp7YWxpZ246YHJpZ2h0YH0sYWNjZXNzb3JGbjplPT5lLnJlcXVlc3RzLGNlbGw6KHtyb3c6ZX0pPT5tKFYse3ZhbHVlOmUub3JpZ2luYWwucmVxdWVzdHN9KX0se2lkOmB0b2tlbnNJbmAsaGVhZGVyOmBUb2tlbnMgaW5gLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS50b2tlbnNJbixjZWxsOih7cm93OmV9KT0+bShWLHt2YWx1ZTplLm9yaWdpbmFsLnRva2Vuc0lufSl9LHtpZDpgdG9rZW5zT3V0YCxoZWFkZXI6YFRva2VucyBvdXRgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS50b2tlbnNPdXQsY2VsbDooe3JvdzplfSk9Pm0oVix7dmFsdWU6ZS5vcmlnaW5hbC50b2tlbnNPdXR9KX0se2lkOmBjb3N0YCxoZWFkZXI6YENvc3RgLG1ldGE6e2FsaWduOmByaWdodGB9LGFjY2Vzc29yRm46ZT0+ZS5jb3N0TWljcm9Vc2QsY2VsbDooe3JvdzplfSk9PlIoZS5vcmlnaW5hbC5jb3N0TWljcm9Vc2QpfV07ZnVuY3Rpb24geSgpe3JldHVybiBIKFtgaWRgLGBwcmljZVNvdXJjZWAsYGRpc3BsYXlGcmVlYCxgcmVxdWVzdHNgLGB0b2tlbnNJbmAsYHRva2Vuc091dGAsYGNvc3RNaWNyb1VzZGAsYGNvbnRleHRUb2tlbnNgLGBpbnB1dFBlck1Ub2tVc2RgLGBvdXRwdXRQZXJNVG9rVXNkYF0sby52YWx1ZS5tYXAoZT0+W2UuaWQsZS5wcmljZVNvdXJjZSxlLmRpc3BsYXlGcmVlLGUucmVxdWVzdHMsZS50b2tlbnNJbixlLnRva2Vuc091dCxlLmNvc3RNaWNyb1VzZCxlLmNvbnRleHRUb2tlbnM/P2BgLGUuaW5wdXRQZXJNVG9rVXNkPz9gYCxlLm91dHB1dFBlck1Ub2tVc2Q/P2BgXSkpfXJldHVybihlLHQpPT4oaygpLGwoZChuKSxudWxsLHtkZWZhdWx0OncoKCk9PltzKGQoQSksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bcyhkKGcpLHtjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJgfSx7ZGVmYXVsdDp3KCgpPT5bdFswXXx8PWEoYCBQcmljaW5nIGhlYWx0aCBgLC0xKSxjLnZhbHVlPjA/KGsoKSxsKGQoQikse2tleTowLHZhcmlhbnQ6YGRlc3RydWN0aXZlYCxjbGFzczpgZm9udC1ub3JtYWxgfSx7ZGVmYXVsdDp3KCgpPT5bYSh2KGMudmFsdWUpK2AgdW5wcmljZWRgLDEpXSksXzoxfSkpOlMoYGAsITApXSksXzoxfSkscyhkKE0pLG51bGwse2RlZmF1bHQ6dygoKT0+Wy4uLnRbMV18fD1bYShgRXZlcnkgbW9kZWwgc2VydmVkIGluIHJhbmdlLCBqb2luZWQgd2l0aCBpdHMgYmlsbGluZyBwcmljZSBzb3VyY2UuYCwtMSldXSksXzoxfSldKSxfOjF9KSxzKGQoZikse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0zYH0se2RlZmF1bHQ6dygoKT0+W3MoSSx7Y29sdW1uczpfLGRhdGE6by52YWx1ZSwiZW1wdHktbWVzc2FnZSI6YE5vIG1vZGVsIHNlcnZlZCBhbnkgdHJhZmZpYyBpbiB0aGlzIHJhbmdlLmB9LG51bGwsOCxbYGRhdGFgXSkscihgZGl2YCxydCxbcyhVLHtmaWxlbmFtZTpgcHJpY2luZy1oZWFsdGguY3N2YCxidWlsZDp5fSldKV0pLF86MX0pXSksXzoxfSkpfX0pO2Z1bmN0aW9uIGF0KGUpe3JldHVybiBlPT09YGhvdXJgP3thdmFpbGFibGU6ITEsbm90ZTpgQ2FjaGUgc2F2aW5ncyBhcmUgbm90IHRyYWNrZWQgcGVyIGhvdXIg4oCUIHBpY2sgYSBkYXkgb3IgbW9udGggcmFuZ2UgaW5zdGVhZC5gfTplPT09YG1vbnRoYD97YXZhaWxhYmxlOiEwLG5vdGU6YENvdmVycyBvbmx5IHRoZSBtb3N0IHJlY2VudCAzNSBkYXlzIChkYXktYnVja2V0IHJldGVudGlvbiksIG5vdCB0aGUgZnVsbCBzZWxlY3RlZCByYW5nZS5gfTp7YXZhaWxhYmxlOiEwLG5vdGU6bnVsbH19dmFyIG90PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNGB9LHN0PXtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNCBzbTpmbGV4LXJvdyBzbTppdGVtcy1jZW50ZXIgc206anVzdGlmeS1iZXR3ZWVuYH0sY3Q9e2NsYXNzOmBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTNgfSxsdD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSx1dD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTFgfSxkdD17Y2xhc3M6YHRleHQtcmlnaHRgfSxmdD17Y2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0scHQ9e2NsYXNzOmB0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LG10PXtrZXk6MCxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxodD17Y2xhc3M6YGZvbnQtbW9ubyB0ZXh0LXhzYH0sZ3Q9e2tleToxLGNsYXNzOmB0ZXh0LXNtIHRleHQtZGVzdHJ1Y3RpdmVgfSxfdD17a2V5OjIsY2xhc3M6YHRleHQtc20gdGV4dC1kZXN0cnVjdGl2ZWB9LHZ0PXtrZXk6MyxjbGFzczpgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSx5dD17Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTQgbGc6Z3JpZC1jb2xzLTJgfSxidD1qKHtfX25hbWU6YFNwZW5kUGFnZWAsc2V0dXAobil7bGV0IG89e21vZGVsOmBCeSBtb2RlbGAscHJvdmlkZXI6YEJ5IHByb3ZpZGVyYCxncm91cDpgQnkgZ3JvdXBgfSxjPWVlKCksZj1GKCksbT14KCksaD15ZSgpLGc9VGUoKSx7bm93Ol8sc3RhcnQ6eSxzdG9wOkN9PWZlKCksVD1pKCgpPT5jLnBhcmFtcy5ieSYmeGUoYy5wYXJhbXMuYnkpP2MucGFyYW1zLmJ5OmBtb2RlbGApLEU9aSgoKT0+Yy5wYXJhbXMubWV0cmljJiZDZShjLnBhcmFtcy5tZXRyaWMpP2MucGFyYW1zLm1ldHJpYzpgY29zdGApLEQ9aSgoKT0+Yy5wYXJhbXMucmVmPz9gYCksTz1pKCgpPT5jLnBhcmFtcy5kcmlsbD8/YGApO2Z1bmN0aW9uIEEoZSl7bGV0IHQ9e2J5OmUuYnk/P1QudmFsdWUsbWV0cmljOmUubWV0cmljPz9FLnZhbHVlLHJlZjplLnJlZj8/RC52YWx1ZSxkcmlsbDplLmRyaWxsPz9PLnZhbHVlfSxuPXt9O3QuYnkhPT1gbW9kZWxgJiYobi5ieT10LmJ5KSx0Lm1ldHJpYyE9PWBjb3N0YCYmKG4ubWV0cmljPXQubWV0cmljKSx0LnJlZiE9PWBgJiYobi5yZWY9dC5yZWYpLHQuZHJpbGwhPT1gYCYmKG4uZHJpbGw9dC5kcmlsbCksYy5nb1RvKGBzcGVuZGAsbil9ZnVuY3Rpb24gbmUoZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZ4ZShlKSYmQSh7Ynk6ZX0pfWZ1bmN0aW9uIGooZSl7dHlwZW9mIGU9PWBzdHJpbmdgJiZDZShlKSYmQSh7bWV0cmljOmV9KX1mdW5jdGlvbiBNKGUpe0Eoe3JlZjplfSl9ZnVuY3Rpb24gUChlKXtBKHtkcmlsbDplfSl9bGV0IEk9aSgoKT0+Zi5zY29wZSE9PWBhbGxgKTt1KFtULEUsT10sKFtlLHQsbl0pPT57Zy5zZXRTZWxlY3Rpb24oe2J5OmUsbWV0cmljOnQsZHJpbGw6bn0pfSksdSgoKT0+W2YucmFuZ2UsZi5jbXAsZi5zY29wZV0sKCk9PnZvaWQgZy5yZWZyZXNoKCkpLHRlKCgpPT57Zy4kcGF0Y2goe2J5OlQudmFsdWUsbWV0cmljOkUudmFsdWUsZHJpbGw6Ty52YWx1ZX0pLGguZW5zdXJlTG9hZGVkKCksZy5zdGFydFBvbGxpbmcoKSx5KCl9KSxwKCgpPT57Zy5zdG9wUG9sbGluZygpLEMoKX0pO2xldCBMPVtgLS1jaGFydC1yZXF1ZXN0c2AsYC0tY2hhcnQtdG9rZW5zLWluYCxgLS1jaGFydC10b2tlbnMtb3V0YCxgLS1jaGFydC1jb3N0YCxgLS1jaGFydC1zZXJpZXMtYWAsYC0tY2hhcnQtc2VyaWVzLWJgLGAtLWNoYXJ0LXNlcmllcy1jYCxgLS1jaGFydC1zZXJpZXMtZGBdO2Z1bmN0aW9uIHVlKGUpe3JldHVybiBMW2UlTC5sZW5ndGhdfWZ1bmN0aW9uIEIoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChgbW9kZWw6YCl8fGUuc3RhcnRzV2l0aChgZ3JvdXA6YCk/ZS5zbGljZSg2KTplLnN0YXJ0c1dpdGgoYHByb3ZpZGVyOmApP2Uuc2xpY2UoOSk6ZX1sZXQgVj1pKCgpPT5nLmJ1Y2tldHMubWFwKGU9PnooZSxmLndpbmRvdykpKSxIPWkoKCk9PntsZXQgZT1nLmJyZWFrZG93bi5tYXAoKGUsdCk9Pih7bGFiZWw6QihlLnNjb3BlKSxkYXRhOmUucG9pbnRzLGNvbG9yOnVlKHQpfSkpO3JldHVybiBnLm90aGVyUG9pbnRzJiZlLnB1c2goe2xhYmVsOmBPdGhlcmAsZGF0YTpnLm90aGVyUG9pbnRzLGNvbG9yOmAtLW11dGVkLWZvcmVncm91bmRgfSksZX0pLHBlPWkoKCk9PmcuY29tcGFyaXNvblBvaW50cz9be2xhYmVsOmBUb3RhbGAsZGF0YTpnLmNvbXBhcmlzb25Qb2ludHMsY29sb3I6YC0tZm9yZWdyb3VuZGAsbGFiZWxTdWZmaXg6YCAocHJldmlvdXMgcGVyaW9kKWB9XTpbXSksVT1pKCgpPT5FLnZhbHVlPT09YGNvc3RgP1I6ZGUpLG1lPWkoKCk9PmcudG90YWxQb2ludHMucmVkdWNlKChlLHQpPT5lK3QsMCkpLGdlPWkoKCk9PntpZihmLnNjb3BlPT09YGFsbGApcmV0dXJuIG0udXNhZ2U/LnRvdGFsLmNvc3RQZXJNb250aE1pY3JvVXNkPz8wO2lmKGYuc2NvcGUuc3RhcnRzV2l0aChgZ3JvdXA6YCkpe2xldCBlPWYuc2NvcGUuc2xpY2UoNik7cmV0dXJuIG0udXNhZ2U/Lmdyb3Vwcy5maW5kKHQ9PnQuaWQ9PT1lKT8uY29zdFBlck1vbnRoTWljcm9Vc2Q/PzB9aWYoZi5zY29wZS5zdGFydHNXaXRoKGB1c2VyOmApKXtsZXQgZT1mLnNjb3BlLnNsaWNlKDUpO3JldHVybiBtLnVzYWdlPy51c2Vycy5maW5kKHQ9PnQuaWQ9PT1lKT8uY29zdFBlck1vbnRoTWljcm9Vc2Q/PzB9cmV0dXJuIDB9KSxXPWkoKCk9PntpZihmLnNjb3BlPT09YGFsbGApe2xldCBlPShtLm92ZXJ2aWV3Py5ncm91cHM/P1tdKS5maWx0ZXIoZT0+KGUubGltaXRzPy5jb3N0UGVyTW9udGhVU0Q/PzApPjApO3JldHVybiBlLmxlbmd0aD09PTA/dm9pZCAwOntjb3N0UGVyTW9udGhVU0Q6ZS5yZWR1Y2UoKGUsdCk9PmUrKHQubGltaXRzPy5jb3N0UGVyTW9udGhVU0Q/PzApLDApfX1pZihmLnNjb3BlLnN0YXJ0c1dpdGgoYGdyb3VwOmApKXtsZXQgZT1mLnNjb3BlLnNsaWNlKDYpO3JldHVybiBtLm92ZXJ2aWV3Py5ncm91cHMuZmluZCh0PT50Lm5hbWU9PT1lKT8ubGltaXRzfWlmKGYuc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKSl7bGV0IGU9Zi5zY29wZS5zbGljZSg1KTtyZXR1cm4gbS51c2FnZT8udXNlcnMuZmluZCh0PT50LmlkPT09ZSk/LmxpbWl0c319KSxfZT1pKCgpPT5mLnNjb3BlPT09YGFsbGB8fGYuc2NvcGUuc3RhcnRzV2l0aChgZ3JvdXA6YCl8fGYuc2NvcGUuc3RhcnRzV2l0aChgdXNlcjpgKSksRz1pKCgpPT5tLm92ZXJ2aWV3Py5mZWF0dXJlcy51c2VyTW9kZWxTdGF0cz8/ITEpLEs9aSgoKT0+bS5vdmVydmlldz8uZmVhdHVyZXMuY2FjaGVTdGF0cz8/ITEpLHE9aSgoKT0+YXQoZi53aW5kb3cpKSxKPWkoKCk9PnEudmFsdWUuYXZhaWxhYmxlKSxYPWkoKCk9PnEudmFsdWUubm90ZSk7cmV0dXJuKG4saSk9PihrKCksdChgZGl2YCxvdCxbcihgZGl2YCxzdCxbcihgZGl2YCxjdCxbcihgZGl2YCxsdCxbaVswXXx8PXIoYHNwYW5gLHtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQnJlYWtkb3duYCwtMSkscyhkKGllKSx7Im1vZGVsLXZhbHVlIjpULnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpuZX0se2RlZmF1bHQ6dygoKT0+W3MoZChyZSksbnVsbCx7ZGVmYXVsdDp3KCgpPT5bKGsoITApLHQoYixudWxsLGUoZChiZSksZT0+KGsoKSxsKGQoYWUpLHtrZXk6ZSx2YWx1ZTplLGRpc2FibGVkOkkudmFsdWV9LHtkZWZhdWx0OncoKCk9PlthKHYob1tlXSksMSldKSxfOjJ9LDEwMzIsW2B2YWx1ZWAsYGRpc2FibGVkYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSkscihgZGl2YCx1dCxbaVsxXXx8PXIoYGxhYmVsYCx7aWQ6YHNwZW5kLW1ldHJpYy1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYE1ldHJpY2AsLTEpLHMoZChjZSkseyJtb2RlbC12YWx1ZSI6RS52YWx1ZSwib25VcGRhdGU6bW9kZWxWYWx1ZSI6an0se2RlZmF1bHQ6dygoKT0+W3MoZChsZSkseyJhcmlhLWxhYmVsbGVkYnkiOmBzcGVuZC1tZXRyaWMtbGFiZWxgLGNsYXNzOmB3LTQwYH0se2RlZmF1bHQ6dygoKT0+W3MoZChzZSkpXSksXzoxfSkscyhkKE4pLG51bGwse2RlZmF1bHQ6dygoKT0+WyhrKCEwKSx0KGIsbnVsbCxlKGQoU2UpLGU9PihrKCksbChkKG9lKSx7a2V5OmUsdmFsdWU6ZX0se2RlZmF1bHQ6dygoKT0+W2EodihkKFkpW2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSldKSxyKGBkaXZgLGR0LFtyKGBwYCxmdCx2KGQoWSlbRS52YWx1ZV0pK2AgaW4gcmFuZ2VgLDEpLHIoYHBgLHB0LHYoVS52YWx1ZShtZS52YWx1ZSkpLDEpXSldKSxJLnZhbHVlPyhrKCksdChgcGAsbXQsW2lbMl18fD1hKGAgU2hvd2luZyBgLC0xKSxyKGBzcGFuYCxodCx2KGQoZikuc2NvcGUpLDEpLGlbM118fD1hKGAgZGlyZWN0bHkg4oCUIGNsZWFyIHRoZSBzY29wZSBmaWx0ZXIgdG8gYnJlYWsgc3BlbmQgZG93biBieSBtb2RlbCwgcHJvdmlkZXIsIG9yIGdyb3VwLiBgLC0xKV0pKTpTKGBgLCEwKSxkKGcpLmVycm9yPyhrKCksdChgcGAsZ3QsdihkKGcpLmVycm9yKSwxKSk6UyhgYCwhMCksZChoKS5lcnJvcj8oaygpLHQoYHBgLF90LHYoZChoKS5lcnJvciksMSkpOlMoYGAsITApLGQoZikuY21wU3BlYy5yZXF1ZXN0ZWQmJmQoZykuY29tcGFyaXNvblVuYXZhaWxhYmxlUmVhc29uPyhrKCksdChgcGAsdnQsdihkKGcpLmNvbXBhcmlzb25VbmF2YWlsYWJsZVJlYXNvbiksMSkpOlMoYGAsITApLHModmUse2xhYmVsczpWLnZhbHVlLGRhdGFzZXRzOkgudmFsdWUsImNvbXBhcmlzb24tZGF0YXNldHMiOnBlLnZhbHVlLHN0YWNrZWQ6YGAsInZhbHVlLWZvcm1hdHRlciI6VS52YWx1ZSxhcmlhTGFiZWw6YCR7ZChZKVtFLnZhbHVlXX0gYnJlYWtkb3duICR7b1tULnZhbHVlXS50b0xvd2VyQ2FzZSgpfSBvdmVyIHRpbWVgfSxudWxsLDgsW2BsYWJlbHNgLGBkYXRhc2V0c2AsYGNvbXBhcmlzb24tZGF0YXNldHNgLGB2YWx1ZS1mb3JtYXR0ZXJgLGBhcmlhTGFiZWxgXSkscihgZGl2YCx5dCxbZChnKS5idXJuZG93bkF2YWlsYWJsZT8oaygpLGwoVmUse2tleTowLGJ1Y2tldHM6ZChnKS5idXJuZG93bkJ1Y2tldHMscG9pbnRzOmQoZykuYnVybmRvd25Qb2ludHMsImJ1ZGdldC1taWNyb3MiOmQoZykuYnVybmRvd25CdWRnZXRNaWNyb3Msbm93OmQoXyl9LG51bGwsOCxbYGJ1Y2tldHNgLGBwb2ludHNgLGBidWRnZXQtbWljcm9zYCxgbm93YF0pKTpTKGBgLCEwKSxfZS52YWx1ZT8oaygpLGwoaGUse2tleToxLCJtdGQtbWljcm9zIjpnZS52YWx1ZSxsaW1pdHM6Vy52YWx1ZSxub3c6ZChfKX0sbnVsbCw4LFtgbXRkLW1pY3Jvc2AsYGxpbWl0c2AsYG5vd2BdKSk6UyhgYCwhMCldKSxzKCRlLHttb2RlbHM6ZChnKS5tb2RlbFJhbmtpbmcsY2F0YWxvZzpkKGgpLm1vZGVsc0J5SWQsInJlZi1tb2RlbCI6RC52YWx1ZSwiY2FjaGUtc3RhdHMtZW5hYmxlZCI6Sy52YWx1ZSwiY2FjaGUtc2F2aW5ncy1hdmFpbGFibGUiOkoudmFsdWUsImNhY2hlLXNhdmluZ3Mtbm90ZSI6WC52YWx1ZSwib25VcGRhdGU6cmVmTW9kZWwiOk19LG51bGwsOCxbYG1vZGVsc2AsYGNhdGFsb2dgLGByZWYtbW9kZWxgLGBjYWNoZS1zdGF0cy1lbmFibGVkYCxgY2FjaGUtc2F2aW5ncy1hdmFpbGFibGVgLGBjYWNoZS1zYXZpbmdzLW5vdGVgXSkscyhpdCx7bW9kZWxzOmQoZykucHJpY2luZ0hlYWx0aFJhbmtpbmcsY2F0YWxvZzpkKGgpLm1vZGVsc0J5SWR9LG51bGwsOCxbYG1vZGVsc2AsYGNhdGFsb2dgXSkscyhQZSx7cm93czpkKGcpLmRyaWxsZG93blJvd3MsbWV0cmljczpkKGcpLmRyaWxsZG93bk1ldHJpY3MsZHJpbGw6Ty52YWx1ZSxkaXNhYmxlZDpkKGcpLmRyaWxsZG93bkRpc2FibGVkLCJ1c2VyLW1vZGVsLXN0YXRzLWVuYWJsZWQiOkcudmFsdWUsd2luZG93OmQoZikud2luZG93LHNwYW46ZChmKS5zcGFuLCJvblVwZGF0ZTpkcmlsbCI6UH0sbnVsbCw4LFtgcm93c2AsYG1ldHJpY3NgLGBkcmlsbGAsYGRpc2FibGVkYCxgdXNlci1tb2RlbC1zdGF0cy1lbmFibGVkYCxgd2luZG93YCxgc3BhbmBdKV0pKX19KTtleHBvcnR7YnQgYXMgZGVmYXVsdH07",
|
|
),
|
|
},
|
|
"TargetsPage-Bi0CL-u6.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0F0IGFzIGUsQyBhcyB0LEVyIGFzIG4sRXQgYXMgcixJdCBhcyBpLEx0IGFzIGEsT3IgYXMgbyxPdCBhcyBzLFFuIGFzIGMsUnIgYXMgbCxTIGFzIHUsWHQgYXMgZCxiIGFzIGYsYnIgYXMgcCxkIGFzIG0sZGkgYXMgaCxoIGFzIGcsa3QgYXMgXyxyciBhcyB2LHMgYXMgeSx0IGFzIGIsdiBhcyB4LHduIGFzIFMseCBhcyBDLHp0IGFzIHd9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e3QgYXMgVH1mcm9tIi4vQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIjtpbXBvcnR7dCBhcyBFfWZyb20iLi9pbmRleC1CaVRRX2dDRS5qcyI7aW1wb3J0e3QgYXMgRH1mcm9tIi4vRGF0YVRhYmxlLURWdWVORnVBLmpzIjtpbXBvcnR7bCBhcyBPLHMgYXMgayx0IGFzIEF9ZnJvbSIuL2JhZGdlLW5zMGo4T1VyLmpzIjtpbXBvcnR7dCBhcyBqfWZyb20iLi9Db21wYWN0TnVtYmVyLUIxaWhRWkg3LmpzIjtpbXBvcnR7biBhcyBNLHQgYXMgTn1mcm9tIi4vdXNlU2VhcmNoUXVlcnktRHlzQnQtSW4uanMiO2ltcG9ydHt0IGFzIFB9ZnJvbSIuL0NsYW1wZWRSYW5nZU5vdGljZS1CdmhtMWUtQi5qcyI7ZnVuY3Rpb24gRihlLHQsbil7cmV0dXJue2lkOmUsaGVhZGVyOnQsYWNjZXNzb3JGbjpuLG1ldGE6e2FsaWduOmByaWdodGB9LGNlbGw6KHtyb3c6ZX0pPT5kKGose3ZhbHVlOm4oZS5vcmlnaW5hbCl9KX19dmFyIEk9YG5vdCBvYnNlcnZlZCB5ZXQg4oCUIG5vIHRyYWZmaWMgYW5kIHByb2JlcyBkaXNhYmxlZCBvciBub3QgeWV0IHJ1bmA7ZnVuY3Rpb24gTChlKXtsZXQgdD1rKGUubGFzdENoZWNrKTtyZXR1cm4gdD9gdW5oZWFsdGh5ICgke3R9KWA6YHVuaGVhbHRoeWB9ZnVuY3Rpb24gUihlKXtsZXQgdD1lLmNvbnNlY3V0aXZlRmFpbHVyZXM9PT0xP2BmYWlsdXJlYDpgZmFpbHVyZXNgLG49ZS5zb3VyY2U/YCB2aWEgJHtlLnNvdXJjZX1gOmBgLHI9YCR7ZS5jb25zZWN1dGl2ZUZhaWx1cmVzfSBjb25zZWN1dGl2ZSAke3R9JHtufWA7cmV0dXJuIGUubGFzdEVycm9yP2Ake3J9OiAke2UubGFzdEVycm9yfWA6cn1mdW5jdGlvbiB6KGUpe2xldCB0PWsoZS5sYXN0Q2hlY2spO3JldHVybiB0P2Uuc291cmNlP2Ake3R9IHZpYSAke2Uuc291cmNlfWA6dDplLnNvdXJjZT9gdmlhICR7ZS5zb3VyY2V9YDpgYH1mdW5jdGlvbiBCKGUpe2lmKGUuY29uc2VjdXRpdmVGYWlsdXJlczw9MCYmIWUubGFzdEVycm9yKXJldHVybiBJO2xldCB0PWUuY29uc2VjdXRpdmVGYWlsdXJlcz09PTE/YGZhaWx1cmVgOmBmYWlsdXJlc2Asbj1lLnNvdXJjZT9gIHZpYSAke2Uuc291cmNlfWA6YGAscj1gJHtlLmNvbnNlY3V0aXZlRmFpbHVyZXN9ICR7dH0gc28gZmFyJHtufWA7cmV0dXJuIGUubGFzdEVycm9yP2Ake3J9OiAke2UubGFzdEVycm9yfWA6cn1mdW5jdGlvbiBWKGUpe2lmKGUuc3RhdGU9PT1gdW5oZWFsdGh5YClyZXR1cm4gZChBLHthczpgc3BhbmAsdmFyaWFudDpgZGVzdHJ1Y3RpdmVgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6UihlKX0sKCk9PkwoZSkpO2lmKGUuc3RhdGU9PT1gaGVhbHRoeWApe2xldCB0PWUubGF0ZW5jeU1zPT09dm9pZCAwP2BgOmAgwrcgJHtPKGUubGF0ZW5jeU1zKX1gO3JldHVybiBkKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsdGl0bGU6eihlKX0sYGhlYWx0aHkke3R9YCl9cmV0dXJuIGQoQSx7YXM6YHNwYW5gLHZhcmlhbnQ6YG91dGxpbmVgLGNsYXNzOmBmb250LW5vcm1hbGAsdGl0bGU6QihlKX0sKCk9PmB1bmtub3duYCl9ZnVuY3Rpb24gSChlKXtyZXR1cm5be2lkOmBuYW1lYCxoZWFkZXI6YE5hbWVgLGFjY2Vzc29yRm46ZT0+ZS5uYW1lLGNlbGw6KHtyb3c6dH0pPT5lP2QoYGJ1dHRvbmAse3R5cGU6YGJ1dHRvbmAsY2xhc3M6YGN1cnNvci1wb2ludGVyIHJvdW5kZWQtc20gZm9udC1tZWRpdW0gaG92ZXI6dGV4dC1wcmltYXJ5IGhvdmVyOnVuZGVybGluZSBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZy81MGAsdGl0bGU6YFZpZXcgJHt0Lm9yaWdpbmFsLm5hbWV9J3MgY2FsbGVyc2Asb25DbGljazpuPT57bi5zdG9wUHJvcGFnYXRpb24oKSxlKHQub3JpZ2luYWwpfX0sdC5vcmlnaW5hbC5uYW1lKTpkKGBzcGFuYCx7Y2xhc3M6YGZvbnQtbWVkaXVtYH0sdC5vcmlnaW5hbC5uYW1lKX0se2lkOmB1cmxgLGhlYWRlcjpgVVJMYCxhY2Nlc3NvckZuOmU9PmUudXJsLGNlbGw6KHtyb3c6ZX0pPT5kKGBzcGFuYCx7Y2xhc3M6YGJsb2NrIG1heC13LXhzIHRydW5jYXRlIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsdGl0bGU6ZS5vcmlnaW5hbC51cmx9LGUub3JpZ2luYWwudXJsKX0se2lkOmBoZWFsdGhgLGhlYWRlcjpgSGVhbHRoYCxlbmFibGVTb3J0aW5nOiExLGFjY2Vzc29yRm46ZT0+ZS5oZWFsdGguc3RhdGUsY2VsbDooe3JvdzplfSk9PlYoZS5vcmlnaW5hbC5oZWFsdGgpfSx7aWQ6YGFjY2Vzc2AsaGVhZGVyOmBBY2Nlc3NgLGVuYWJsZVNvcnRpbmc6ITEsYWNjZXNzb3JGbjplPT4oZS5hY2Nlc3M/P1tdKS5qb2luKGAsIGApLGNlbGw6KHtyb3c6ZX0pPT57bGV0IHQ9ZS5vcmlnaW5hbC5hY2Nlc3M7cmV0dXJuIHQ9PW51bGw/ZChgc3BhbmAse2NsYXNzOmB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgQWxsIGdyb3Vwc2ApOnQubGVuZ3RoPT09MD9kKGBzcGFuYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBObyBncm91cHNgKTpkKGBkaXZgLHtjbGFzczpgZmxleCBmbGV4LXdyYXAgZ2FwLTEuNWB9LHQubWFwKGU9PmQoQSx7a2V5OmUsYXM6YHNwYW5gLHZhcmlhbnQ6YHNlY29uZGFyeWAsY2xhc3M6YGZvbnQtbW9ubyBmb250LW5vcm1hbGB9LCgpPT5lKSkpfX0sRihgcmVxTWluYCxgcmVxL21pbmAsZT0+ZS5jb3VudGVycy5yZXF1ZXN0c1Blck1pbnV0ZSksRihgcmVxRGF5YCxgcmVxL2RheWAsZT0+ZS5jb3VudGVycy5yZXF1ZXN0c1BlckRheSksRihgcmVxTW9udGhgLGByZXEvbW9udGhgLGU9PmUuY291bnRlcnMucmVxdWVzdHNQZXJNb250aCldfWZ1bmN0aW9uIFUoZSx0KXtyZXR1cm5gJHtlfS8ke3R9YH1mdW5jdGlvbiBXKGUpe2xldCB0PWUuaW5kZXhPZihgL2ApO2lmKHQ9PT0tMSlyZXR1cm57a2luZDpgYCx0YXJnZXQ6YGAsY2FsbGVyOmV9O2xldCBuPWUuc2xpY2UoMCx0KSxyPWUuc2xpY2UodCsxKSxpPXIuaW5kZXhPZihgL2ApO3JldHVybiBpPT09LTE/e2tpbmQ6bix0YXJnZXQ6cixjYWxsZXI6YGB9OntraW5kOm4sdGFyZ2V0OnIuc2xpY2UoMCxpKSxjYWxsZXI6ci5zbGljZShpKzEpfX1mdW5jdGlvbiBHKGUpe2xldCB0PVtdO3JldHVybiBlJiZ0LnB1c2goe2lkOmB0YXJnZXRgLGhlYWRlcjpgVGFyZ2V0YCxhY2Nlc3NvckZuOmU9PntsZXQgdD1XKGUuaWQpO3JldHVybmAke3Qua2luZH0vJHt0LnRhcmdldH1gfSxjZWxsOih7cm93OmV9KT0+e2xldCB0PVcoZS5vcmlnaW5hbC5pZCk7cmV0dXJuIGQoYHNwYW5gLHtjbGFzczpgZm9udC1tb25vIHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYCR7dC5raW5kfS8ke3QudGFyZ2V0fWApfX0pLHQucHVzaCh7aWQ6YGNhbGxlcmAsaGVhZGVyOmBDYWxsZXJgLGFjY2Vzc29yRm46ZT0+VyhlLmlkKS5jYWxsZXJ8fGUuaWQsY2VsbDooe3JvdzplfSk9PntsZXQgdD1XKGUub3JpZ2luYWwuaWQpLmNhbGxlcjtyZXR1cm4gZChgc3BhbmAse2NsYXNzOmBmb250LW1lZGl1bWB9LHR8fGUub3JpZ2luYWwuaWQpfX0pLHQucHVzaCh7aWQ6YHJlcXVlc3RzYCxoZWFkZXI6YFJlcXVlc3RzYCxtZXRhOnthbGlnbjpgcmlnaHRgfSxhY2Nlc3NvckZuOmU9PmUudmFsdWVzLnJlcT8/MCxjZWxsOih7cm93OmV9KT0+ZChqLHt2YWx1ZTplLm9yaWdpbmFsLnZhbHVlcy5yZXE/PzB9KX0pLHR9dmFyIEs9e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtZGVzdHJ1Y3RpdmVgfSxxPXcoe19fbmFtZTpgVGFyZ2V0Q2FsbGVyc2AscHJvcHM6e3RhcmdldDp7fSx0aXRsZTp7fSxsaW1pdDp7ZGVmYXVsdDoxMH19LHNldHVwKG4pe2xldCBkPW4scD1FKCksZz1vKFtdKSxiPW8oITEpLHc9byghMSksTz1vKGBgKSxrPTA7YXN5bmMgZnVuY3Rpb24gQSgpe2xldCBlPSsraztiLnZhbHVlPSEwO3RyeXtsZXR7d2luZG93OnQsc3BhbjpufT15KHAud2luZG93LHAuc3Bhbikscj1hd2FpdCB4KG0oe2tpbmQ6YHRhcmdldGNhbGxlcmAsd2luZG93OnQsc3BhbjpuLG1ldHJpY3M6W2ByZXFgXSxsaW1pdDpkLmxpbWl0LHRhcmdldDpkLnRhcmdldH0pKTtpZihlIT09aylyZXR1cm47Zy52YWx1ZT1yLnJvd3MsTy52YWx1ZT1gYH1jYXRjaCh0KXtpZihlIT09aylyZXR1cm47Ty52YWx1ZT10IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KX1maW5hbGx5e2U9PT1rJiYoYi52YWx1ZT0hMSx3LnZhbHVlPSEwKX19YyhbKCk9PmQudGFyZ2V0LCgpPT5wLndpbmRvdywoKT0+cC5zcGFuXSwoKT0+dm9pZCBBKCkse2ltbWVkaWF0ZTohMH0pO2xldCBqPXIoKCk9PkcoIWQudGFyZ2V0KSksTT1yKCgpPT53LnZhbHVlP2BubyBjYWxsZXJzIHJlY29yZGVkIGluIHRoaXMgd2luZG93YDpgbG9hZGluZ+KApmApO3JldHVybihyLG8pPT4oUygpLHMobCh0KSxudWxsLHtkZWZhdWx0OnYoKCk9PlthKGwoQyksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bYShsKGYpLG51bGwse2RlZmF1bHQ6digoKT0+W2koaChuLnRpdGxlKSwxKV0pLF86MX0pLGEobChUKSxudWxsLHtkZWZhdWx0OnYoKCk9PlsuLi5vWzBdfHw9W2koYFJhbmtlZCBieSByZXF1ZXN0cywgbW9zdCByZWNlbnQgZGF5L21vbnRoIHdpbmRvdyBhdmFpbGFibGUgZm9yIHRoZSBjdXJyZW50IHJhbmdlLmAsLTEpXV0pLF86MX0pXSksXzoxfSksYShsKHUpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2B9LHtkZWZhdWx0OnYoKCk9PlthKFAse3dpbmRvdzpsKHApLndpbmRvdyxzcGFuOmwocCkuc3Bhbn0sbnVsbCw4LFtgd2luZG93YCxgc3BhbmBdKSxPLnZhbHVlPyhTKCksZShgcGAsSyxoKE8udmFsdWUpLDEpKTpfKGBgLCEwKSxhKEQse2NvbHVtbnM6ai52YWx1ZSxkYXRhOmcudmFsdWUsImVtcHR5LW1lc3NhZ2UiOk0udmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSkpfX0pLEo9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC02YH0sWT13KHtfX25hbWU6YFRhcmdldHNWaWV3YCxlbWl0czpbYHNlbGVjdGBdLHNldHVwKG4se2VtaXQ6b30pe2xldCBzPWcoKSxjPXIoKCk9PnMudGFyZ2V0cyksZD1vO2Z1bmN0aW9uIG0oZSl7cmV0dXJuIHQ9PmQoYHNlbGVjdGAsVShlLHQubmFtZSksdC5uYW1lKX1sZXR7cXVlcnk6aCxub3JtYWxpemVkOl8saGFzUXVlcnk6eX09TigpO2Z1bmN0aW9uIGIoZSl7cmV0dXJuIGUubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKF8udmFsdWUpfWxldCB4PXIoKCk9PntsZXQgZT1jLnZhbHVlPy5tY3BTZXJ2ZXJzPz9bXTtyZXR1cm4geS52YWx1ZT9lLmZpbHRlcihiKTplfSksdz1yKCgpPT57bGV0IGU9Yy52YWx1ZT8uYWdlbnRzPz9bXTtyZXR1cm4geS52YWx1ZT9lLmZpbHRlcihiKTplfSk7ZnVuY3Rpb24gRShlLHQpe3JldHVybiBlP3kudmFsdWUmJnQ9PT0wP2BubyB0YXJnZXRzIG1hdGNoICIke2gudmFsdWV9ImA6YG5vbmVgOmBub25lIGNvbmZpZ3VyZWRgfWxldCBPPXIoKCk9PkUoYy52YWx1ZT8ubWNwU2VydmVycy5sZW5ndGg/PzAseC52YWx1ZS5sZW5ndGgpKSxrPXIoKCk9PkUoYy52YWx1ZT8uYWdlbnRzLmxlbmd0aD8/MCx3LnZhbHVlLmxlbmd0aCkpLEE9SChtKGBtY3BgKSksaj1IKG0oYGFnZW50YCkpO3JldHVybihuLHIpPT4oUygpLGUoYGRpdmAsSixbYShNLHttb2RlbFZhbHVlOmwoaCksIm9uVXBkYXRlOm1vZGVsVmFsdWUiOnJbMF18fD1lPT5wKGgpP2gudmFsdWU9ZTpudWxsLHBsYWNlaG9sZGVyOmBGaWx0ZXIgTUNQIHNlcnZlcnMgb3IgYWdlbnRzYCxjbGFzczpgbWF4LXctc21gfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pLGEobCh0KSxudWxsLHtkZWZhdWx0OnYoKCk9PlthKGwoQyksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bYShsKGYpLG51bGwse2RlZmF1bHQ6digoKT0+Wy4uLnJbMV18fD1baShgTUNQIHNlcnZlcnNgLC0xKV1dKSxfOjF9KSxhKGwoVCksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bLi4uclsyXXx8PVtpKGAgQ29uZmlndXJlZCBNQ1AgcHJveHkgdGFyZ2V0cywgdGhlIGdyb3VwcyBhbGxvd2VkIHRvIHJlYWNoIHRoZW0sIGFuZCB0aGVpciByZXF1ZXN0IGNvdW50ZXJzLiBDbGljayBhIG5hbWUgdG8gc2VlIGl0cyBjYWxsZXJzLiBgLC0xKV1dKSxfOjF9KV0pLF86MX0pLGEobCh1KSxudWxsLHtkZWZhdWx0OnYoKCk9PlthKEQse2NvbHVtbnM6bChBKSxkYXRhOngudmFsdWUsImVtcHR5LW1lc3NhZ2UiOk8udmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSksYShsKHQpLG51bGwse2RlZmF1bHQ6digoKT0+W2EobChDKSxudWxsLHtkZWZhdWx0OnYoKCk9PlthKGwoZiksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bLi4uclszXXx8PVtpKGBBZ2VudHNgLC0xKV1dKSxfOjF9KSxhKGwoVCksbnVsbCx7ZGVmYXVsdDp2KCgpPT5bLi4ucls0XXx8PVtpKGAgQ29uZmlndXJlZCBBMkEgYWdlbnQgcHJveHkgdGFyZ2V0cywgdGhlIGdyb3VwcyBhbGxvd2VkIHRvIHJlYWNoIHRoZW0sIGFuZCB0aGVpciByZXF1ZXN0IGNvdW50ZXJzLiBDbGljayBhIG5hbWUgdG8gc2VlIGl0cyBjYWxsZXJzLiBgLC0xKV1dKSxfOjF9KV0pLF86MX0pLGEobCh1KSxudWxsLHtkZWZhdWx0OnYoKCk9PlthKEQse2NvbHVtbnM6bChqKSxkYXRhOncudmFsdWUsImVtcHR5LW1lc3NhZ2UiOmsudmFsdWV9LG51bGwsOCxbYGNvbHVtbnNgLGBkYXRhYCxgZW1wdHktbWVzc2FnZWBdKV0pLF86MX0pXSksXzoxfSldKSl9fSksWD17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTZgfSxaPXcoe19fbmFtZTpgVGFyZ2V0c1BhZ2VgLHNldHVwKHQpe2xldCBpPWIoKSxvPXIoKCk9PmkucGFyYW1zLnRhcmdldD8/YGApLGM9bih7fSksbD1yKCgpPT5jW28udmFsdWVdPz9vLnZhbHVlKTtmdW5jdGlvbiB1KGUsdCl7Y1tlXT10LGkuZ29UbyhgdGFyZ2V0c2Asey4uLmkucGFyYW1zLHRhcmdldDplfSl9cmV0dXJuKHQsbik9PihTKCksZShgZGl2YCxYLFthKFkse29uU2VsZWN0OnV9KSxvLnZhbHVlPyhTKCkscyhxLHtrZXk6MCx0YXJnZXQ6by52YWx1ZSx0aXRsZTpgQ2FsbGVycyBvZiAke2wudmFsdWV9YH0sbnVsbCw4LFtgdGFyZ2V0YCxgdGl0bGVgXSkpOl8oYGAsITApLGEocSx7dGl0bGU6YFRvcCBjYWxsZXJzLCBhY3Jvc3MgZXZlcnkgdGFyZ2V0YH0pXSkpfX0pO2V4cG9ydHtaIGFzIGRlZmF1bHR9Ow==",
|
|
),
|
|
},
|
|
"TimeSeriesChart-BP5IcUyg.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0F0IGFzIGUsRHQgYXMgdCxFdCBhcyBuLEx0IGFzIHIsTnIgYXMgaSxPciBhcyBhLFFuIGFzIG8sUnIgYXMgcyxTbiBhcyBjLFduIGFzIGwsWHQgYXMgdSxfciBhcyBkLGRpIGFzIGYsZG4gYXMgcCxqciBhcyBtLG1uIGFzIGgsdm4gYXMgZyx3biBhcyBfLHp0IGFzIHZ9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e2MgYXMgeX1mcm9tIi4vYmFkZ2UtbnMwajhPVXIuanMiO2Z1bmN0aW9uIGIoZSl7cmV0dXJuIGUrLjV8MH12YXIgeD0oZSx0LG4pPT5NYXRoLm1heChNYXRoLm1pbihlLG4pLHQpO2Z1bmN0aW9uIFMoZSl7cmV0dXJuIHgoYihlKjIuNTUpLDAsMjU1KX1mdW5jdGlvbiBDKGUpe3JldHVybiB4KGIoZSoyNTUpLDAsMjU1KX1mdW5jdGlvbiB3KGUpe3JldHVybiB4KGIoZS8yLjU1KS8xMDAsMCwxKX1mdW5jdGlvbiBUKGUpe3JldHVybiB4KGIoZSoxMDApLDAsMTAwKX12YXIgRT17MDowLDE6MSwyOjIsMzozLDQ6NCw1OjUsNjo2LDc6Nyw4OjgsOTo5LEE6MTAsQjoxMSxDOjEyLEQ6MTMsRToxNCxGOjE1LGE6MTAsYjoxMSxjOjEyLGQ6MTMsZToxNCxmOjE1fSxEPVsuLi5gMDEyMzQ1Njc4OUFCQ0RFRmBdLGVlPWU9PkRbZSYxNV0sdGU9ZT0+RFsoZSYyNDApPj40XStEW2UmMTVdLG5lPWU9PihlJjI0MCk+PjQ9PShlJjE1KSxyZT1lPT5uZShlLnIpJiZuZShlLmcpJiZuZShlLmIpJiZuZShlLmEpO2Z1bmN0aW9uIGllKGUpe3ZhciB0PWUubGVuZ3RoLG47cmV0dXJuIGVbMF09PT1gI2AmJih0PT09NHx8dD09PTU/bj17cjoyNTUmRVtlWzFdXSoxNyxnOjI1NSZFW2VbMl1dKjE3LGI6MjU1JkVbZVszXV0qMTcsYTp0PT09NT9FW2VbNF1dKjE3OjI1NX06KHQ9PT03fHx0PT09OSkmJihuPXtyOkVbZVsxXV08PDR8RVtlWzJdXSxnOkVbZVszXV08PDR8RVtlWzRdXSxiOkVbZVs1XV08PDR8RVtlWzZdXSxhOnQ9PT05P0VbZVs3XV08PDR8RVtlWzhdXToyNTV9KSksbn12YXIgYWU9KGUsdCk9PmU8MjU1P3QoZSk6YGA7ZnVuY3Rpb24gb2UoZSl7dmFyIHQ9cmUoZSk/ZWU6dGU7cmV0dXJuIGU/YCNgK3QoZS5yKSt0KGUuZykrdChlLmIpK2FlKGUuYSx0KTp2b2lkIDB9dmFyIHNlPS9eKGhzbGE/fGh3Ynxoc3YpXChccyooWy0rLmVcZF0rKSg/OmRlZyk/W1xzLF0rKFstKy5lXGRdKyklW1xzLF0rKFstKy5lXGRdKyklKD86W1xzLF0rKFstKy5lXGRdKykoJSk/KT9ccypcKSQvO2Z1bmN0aW9uIGNlKGUsdCxuKXtsZXQgcj10Kk1hdGgubWluKG4sMS1uKSxpPSh0LGk9KHQrZS8zMCklMTIpPT5uLXIqTWF0aC5tYXgoTWF0aC5taW4oaS0zLDktaSwxKSwtMSk7cmV0dXJuW2koMCksaSg4KSxpKDQpXX1mdW5jdGlvbiBsZShlLHQsbil7bGV0IHI9KHIsaT0ocitlLzYwKSU2KT0+bi1uKnQqTWF0aC5tYXgoTWF0aC5taW4oaSw0LWksMSksMCk7cmV0dXJuW3IoNSkscigzKSxyKDEpXX1mdW5jdGlvbiB1ZShlLHQsbil7bGV0IHI9Y2UoZSwxLC41KSxpO2Zvcih0K24+MSYmKGk9MS8odCtuKSx0Kj1pLG4qPWkpLGk9MDtpPDM7aSsrKXJbaV0qPTEtdC1uLHJbaV0rPXQ7cmV0dXJuIHJ9ZnVuY3Rpb24gZGUoZSx0LG4scixpKXtyZXR1cm4gZT09PWk/KHQtbikvcisodDxuPzY6MCk6dD09PWk/KG4tZSkvcisyOihlLXQpL3IrNH1mdW5jdGlvbiBmZShlKXtsZXQgdD1lLnIvMjU1LG49ZS5nLzI1NSxyPWUuYi8yNTUsaT1NYXRoLm1heCh0LG4sciksYT1NYXRoLm1pbih0LG4sciksbz0oaSthKS8yLHMsYyxsO3JldHVybiBpIT09YSYmKGw9aS1hLGM9bz4uNT9sLygyLWktYSk6bC8oaSthKSxzPWRlKHQsbixyLGwsaSkscz1zKjYwKy41KSxbc3wwLGN8fDAsb119ZnVuY3Rpb24gcGUoZSx0LG4scil7cmV0dXJuKEFycmF5LmlzQXJyYXkodCk/ZSh0WzBdLHRbMV0sdFsyXSk6ZSh0LG4scikpLm1hcChDKX1mdW5jdGlvbiBtZShlLHQsbil7cmV0dXJuIHBlKGNlLGUsdCxuKX1mdW5jdGlvbiBoZShlLHQsbil7cmV0dXJuIHBlKHVlLGUsdCxuKX1mdW5jdGlvbiBnZShlLHQsbil7cmV0dXJuIHBlKGxlLGUsdCxuKX1mdW5jdGlvbiBfZShlKXtyZXR1cm4oZSUzNjArMzYwKSUzNjB9ZnVuY3Rpb24gdmUoZSl7bGV0IHQ9c2UuZXhlYyhlKSxuPTI1NSxyO2lmKCF0KXJldHVybjt0WzVdIT09ciYmKG49dFs2XT9TKCt0WzVdKTpDKCt0WzVdKSk7bGV0IGk9X2UoK3RbMl0pLGE9dFszXS8xMDAsbz10WzRdLzEwMDtyZXR1cm4gcj10WzFdPT09YGh3YmA/aGUoaSxhLG8pOnRbMV09PT1gaHN2YD9nZShpLGEsbyk6bWUoaSxhLG8pLHtyOnJbMF0sZzpyWzFdLGI6clsyXSxhOm59fWZ1bmN0aW9uIHllKGUsdCl7dmFyIG49ZmUoZSk7blswXT1fZShuWzBdK3QpLG49bWUobiksZS5yPW5bMF0sZS5nPW5bMV0sZS5iPW5bMl19ZnVuY3Rpb24gYmUoZSl7aWYoIWUpcmV0dXJuO2xldCB0PWZlKGUpLG49dFswXSxyPVQodFsxXSksaT1UKHRbMl0pO3JldHVybiBlLmE8MjU1P2Boc2xhKCR7bn0sICR7cn0lLCAke2l9JSwgJHt3KGUuYSl9KWA6YGhzbCgke259LCAke3J9JSwgJHtpfSUpYH12YXIgeGU9e3g6YGRhcmtgLFo6YGxpZ2h0YCxZOmByZWAsWDpgYmx1YCxXOmBncmAsVjpgbWVkaXVtYCxVOmBzbGF0ZWAsQTpgZWVgLFQ6YG9sYCxTOmBvcmAsQjpgcmFgLEM6YGxhdGVnYCxEOmBpZ2h0c2AsUjpgaW5gLFE6YHR1cnF1b2lzYCxFOmBoaWAsUDpgcm9gLE86YGFsYCxOOmBsZWAsTTpgZGVgLEw6YHllbGxvYCxGOmBlbmAsSzpgY2hgLEc6YGFya3NgLEg6YGVhYCxJOmBpZ2h0Z2AsSjpgd2hgfSxTZT17T2ljZVhlOmBmMGY4ZmZgLGFudGlxdWV3RXRlOmBmYWViZDdgLGFxdWE6YGZmZmZgLGFxdWFtYXJSZTpgN2ZmZmQ0YCxhenVZOmBmMGZmZmZgLGJlaWdlOmBmNWY1ZGNgLGJpc3F1ZTpgZmZlNGM0YCxibGFjazpgMGAsYmxhbktlZE9tb25kOmBmZmViY2RgLFhlOmBmZmAsWGV2aVRldDpgOGEyYmUyYCxiUHduOmBhNTJhMmFgLGJ1cmx5d29vZDpgZGViODg3YCxjYU10WGU6YDVmOWVhMGAsS2FydFl1c2U6YDdmZmYwMGAsS29jVGF0ZTpgZDI2OTFlYCxjU086YGZmN2Y1MGAsY1NuZmxvd2VyWGU6YDY0OTVlZGAsY1Nuc2lsazpgZmZmOGRjYCxjcmltc29uOmBkYzE0M2NgLGN5YW46YGZmZmZgLHhYZTpgOGJgLHhjeWFuOmA4YjhiYCx4Z1RNblBkOmBiODg2MGJgLHhXYXk6YGE5YTlhOWAseGdZRjpgNjQwMGAseGdZeTpgYTlhOWE5YCx4a2hha2k6YGJkYjc2YmAseG1hZ0Z0YTpgOGIwMDhiYCx4VGl2ZWdZRjpgNTU2YjJmYCx4U2FuZ2U6YGZmOGMwMGAseFNjRWQ6YDk5MzJjY2AseFlkOmA4YjAwMDBgLHhzT21vbjpgZTk5NjdhYCx4c0hnWUY6YDhmYmM4ZmAseFVYZTpgNDgzZDhiYCx4VVdheTpgMmY0ZjRmYCx4VWdZeTpgMmY0ZjRmYCx4UWU6YGNlZDFgLHh2aVRldDpgOTQwMGQzYCxkQXBwUms6YGZmMTQ5M2AsZEFwc2t5WGU6YGJmZmZgLGRpbVdheTpgNjk2OTY5YCxkaW1nWXk6YDY5Njk2OWAsZG9kZ2VyWGU6YDFlOTBmZmAsZmlZYnJpY2s6YGIyMjIyMmAsZmxTT3dFdGU6YGZmZmFmMGAsZm9Zc3RXQW46YDIyOGIyMmAsZnVLc2lhOmBmZjAwZmZgLGdhUnNiU286YGRjZGNkY2AsZ2hvc3R3RXRlOmBmOGY4ZmZgLGdUZDpgZmZkNzAwYCxnVE1uUGQ6YGRhYTUyMGAsV2F5OmA4MDgwODBgLGdZRjpgODAwMGAsZ1lGTHc6YGFkZmYyZmAsZ1l5OmA4MDgwODBgLGhvbmV5TXc6YGYwZmZmMGAsaG90cFJrOmBmZjY5YjRgLFJkaWFuWWQ6YGNkNWM1Y2AsUmRpZ286YDRiMDA4MmAsaXZTeTpgZmZmZmYwYCxraGFraTpgZjBlNjhjYCxsYXZGTXI6YGU2ZTZmYWAsbGF2Rk1yWHNoOmBmZmYwZjVgLGxhd25nWUY6YDdjZmMwMGAsTm1vbmNFZmZvbjpgZmZmYWNkYCxaWGU6YGFkZDhlNmAsWmNTTzpgZjA4MDgwYCxaY3lhbjpgZTBmZmZmYCxaZ1RNblBkTHc6YGZhZmFkMmAsWldheTpgZDNkM2QzYCxaZ1lGOmA5MGVlOTBgLFpnWXk6YGQzZDNkM2AsWnBSazpgZmZiNmMxYCxac09tb246YGZmYTA3YWAsWnNIZ1lGOmAyMGIyYWFgLFpza3lYZTpgODdjZWZhYCxaVVdheTpgNzc4ODk5YCxaVWdZeTpgNzc4ODk5YCxac3RBbFhlOmBiMGM0ZGVgLFpMdzpgZmZmZmUwYCxsaW1lOmBmZjAwYCxsaW1lZ1lGOmAzMmNkMzJgLGxSRjpgZmFmMGU2YCxtYWdGdGE6YGZmMDBmZmAsbWFQb246YDgwMDAwMGAsVmFxdWFtYXJSZTpgNjZjZGFhYCxWWGU6YGNkYCxWU2NFZDpgYmE1NWQzYCxWcHVycE46YDkzNzBkYmAsVnNIZ1lGOmAzY2IzNzFgLFZVWGU6YDdiNjhlZWAsVnNwclJnZ1lGOmBmYTlhYCxWUWU6YDQ4ZDFjY2AsVnZpVGV0WWQ6YGM3MTU4NWAsbWlkbmlnaHRYZTpgMTkxOTcwYCxtUnRjWWFtOmBmNWZmZmFgLG1pc3R5UHNlOmBmZmU0ZTFgLG1vY2Nhc1I6YGZmZTRiNWAsbmF2YWpvd0V0ZTpgZmZkZWFkYCxuYXZ5OmA4MGAsVGRsYWNlOmBmZGY1ZTZgLFRpdmU6YDgwODAwMGAsVGl2ZWRCYjpgNmI4ZTIzYCxTYW5nZTpgZmZhNTAwYCxTYW5nZVlkOmBmZjQ1MDBgLFNjRWQ6YGRhNzBkNmAscE9lZ1RNblBkOmBlZWU4YWFgLHBPZWdZRjpgOThmYjk4YCxwT2VRZTpgYWZlZWVlYCxwT2V2aVRldFlkOmBkYjcwOTNgLHBhcGF5YXdFcDpgZmZlZmQ1YCxwSEtwdWZmOmBmZmRhYjlgLHBlcnU6YGNkODUzZmAscFJrOmBmZmMwY2JgLHBsdW06YGRkYTBkZGAscG93TXJYZTpgYjBlMGU2YCxwdXJwTjpgODAwMDgwYCxZYmVjY2FwdXJwTjpgNjYzMzk5YCxZZDpgZmYwMDAwYCxQc3licm93bjpgYmM4ZjhmYCxQeU9YZTpgNDE2OWUxYCxzYWRkTmJQd246YDhiNDUxM2Asc09tb246YGZhODA3MmAsc2FuZHliUHduOmBmNGE0NjBgLHNIZ1lGOmAyZThiNTdgLHNIc2hlbGw6YGZmZjVlZWAsc2lGbmE6YGEwNTIyZGAsc2lsdmVyOmBjMGMwYzBgLHNreVhlOmA4N2NlZWJgLFVYZTpgNmE1YWNkYCxVV2F5OmA3MDgwOTBgLFVnWXk6YDcwODA5MGAsc25vdzpgZmZmYWZhYCxzcHJSZ2dZRjpgZmY3ZmAsc3RBbFhlOmA0NjgyYjRgLHRhbjpgZDJiNDhjYCx0ZU86YDgwODBgLHRFc3ROOmBkOGJmZDhgLHRvbWF0bzpgZmY2MzQ3YCxRZTpgNDBlMGQwYCx2aVRldDpgZWU4MmVlYCxKSHQ6YGY1ZGViM2Asd0V0ZTpgZmZmZmZmYCx3RXRlc21va2U6YGY1ZjVmNWAsTHc6YGZmZmYwMGAsTHdnWUY6YDlhY2QzMmB9O2Z1bmN0aW9uIENlKCl7bGV0IGU9e30sdD1PYmplY3Qua2V5cyhTZSksbj1PYmplY3Qua2V5cyh4ZSkscixpLGEsbyxzO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe2ZvcihvPXM9dFtyXSxpPTA7aTxuLmxlbmd0aDtpKyspYT1uW2ldLHM9cy5yZXBsYWNlKGEseGVbYV0pO2E9cGFyc2VJbnQoU2Vbb10sMTYpLGVbc109W2E+PjE2JjI1NSxhPj44JjI1NSxhJjI1NV19cmV0dXJuIGV9dmFyIHdlO2Z1bmN0aW9uIFRlKGUpe3dlfHwod2U9Q2UoKSx3ZS50cmFuc3BhcmVudD1bMCwwLDAsMF0pO2xldCB0PXdlW2UudG9Mb3dlckNhc2UoKV07cmV0dXJuIHQmJntyOnRbMF0sZzp0WzFdLGI6dFsyXSxhOnQubGVuZ3RoPT09ND90WzNdOjI1NX19dmFyIEVlPS9ecmdiYT9cKFxzKihbLSsuXGRdKykoJSk/W1xzLF0rKFstKy5lXGRdKykoJSk/W1xzLF0rKFstKy5lXGRdKykoJSk/KD86W1xzLC9dKyhbLSsuZVxkXSspKCUpPyk/XHMqXCkkLztmdW5jdGlvbiBEZShlKXtsZXQgdD1FZS5leGVjKGUpLG49MjU1LHIsaSxhO2lmKHQpe2lmKHRbN10hPT1yKXtsZXQgZT0rdFs3XTtuPXRbOF0/UyhlKTp4KGUqMjU1LDAsMjU1KX1yZXR1cm4gcj0rdFsxXSxpPSt0WzNdLGE9K3RbNV0scj0yNTUmKHRbMl0/UyhyKTp4KHIsMCwyNTUpKSxpPTI1NSYodFs0XT9TKGkpOngoaSwwLDI1NSkpLGE9MjU1Jih0WzZdP1MoYSk6eChhLDAsMjU1KSkse3IsZzppLGI6YSxhOm59fX1mdW5jdGlvbiBPZShlKXtyZXR1cm4gZSYmKGUuYTwyNTU/YHJnYmEoJHtlLnJ9LCAke2UuZ30sICR7ZS5ifSwgJHt3KGUuYSl9KWA6YHJnYigke2Uucn0sICR7ZS5nfSwgJHtlLmJ9KWApfXZhciBrZT1lPT5lPD0uMDAzMTMwOD9lKjEyLjkyOmUqKigxLzIuNCkqMS4wNTUtLjA1NSxBZT1lPT5lPD0uMDQwNDU/ZS8xMi45MjooKGUrLjA1NSkvMS4wNTUpKioyLjQ7ZnVuY3Rpb24gamUoZSx0LG4pe2xldCByPUFlKHcoZS5yKSksaT1BZSh3KGUuZykpLGE9QWUodyhlLmIpKTtyZXR1cm57cjpDKGtlKHIrbiooQWUodyh0LnIpKS1yKSkpLGc6QyhrZShpK24qKEFlKHcodC5nKSktaSkpKSxiOkMoa2UoYStuKihBZSh3KHQuYikpLWEpKSksYTplLmErbioodC5hLWUuYSl9fWZ1bmN0aW9uIE1lKGUsdCxuKXtpZihlKXtsZXQgcj1mZShlKTtyW3RdPU1hdGgubWF4KDAsTWF0aC5taW4oclt0XStyW3RdKm4sdD09PTA/MzYwOjEpKSxyPW1lKHIpLGUucj1yWzBdLGUuZz1yWzFdLGUuYj1yWzJdfX1mdW5jdGlvbiBOZShlLHQpe3JldHVybiBlJiZPYmplY3QuYXNzaWduKHR8fHt9LGUpfWZ1bmN0aW9uIFBlKGUpe3ZhciB0PXtyOjAsZzowLGI6MCxhOjI1NX07cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5sZW5ndGg+PTMmJih0PXtyOmVbMF0sZzplWzFdLGI6ZVsyXSxhOjI1NX0sZS5sZW5ndGg+MyYmKHQuYT1DKGVbM10pKSk6KHQ9TmUoZSx7cjowLGc6MCxiOjAsYToxfSksdC5hPUModC5hKSksdH1mdW5jdGlvbiBGZShlKXtyZXR1cm4gZS5jaGFyQXQoMCk9PT1gcmA/RGUoZSk6dmUoZSl9dmFyIEllPWNsYXNzIGV7Y29uc3RydWN0b3IodCl7aWYodCBpbnN0YW5jZW9mIGUpcmV0dXJuIHQ7bGV0IG49dHlwZW9mIHQscjtuPT09YG9iamVjdGA/cj1QZSh0KTpuPT09YHN0cmluZ2AmJihyPWllKHQpfHxUZSh0KXx8RmUodCkpLHRoaXMuX3JnYj1yLHRoaXMuX3ZhbGlkPSEhcn1nZXQgdmFsaWQoKXtyZXR1cm4gdGhpcy5fdmFsaWR9Z2V0IHJnYigpe3ZhciBlPU5lKHRoaXMuX3JnYik7cmV0dXJuIGUmJihlLmE9dyhlLmEpKSxlfXNldCByZ2IoZSl7dGhpcy5fcmdiPVBlKGUpfXJnYlN0cmluZygpe3JldHVybiB0aGlzLl92YWxpZD9PZSh0aGlzLl9yZ2IpOnZvaWQgMH1oZXhTdHJpbmcoKXtyZXR1cm4gdGhpcy5fdmFsaWQ/b2UodGhpcy5fcmdiKTp2b2lkIDB9aHNsU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3ZhbGlkP2JlKHRoaXMuX3JnYik6dm9pZCAwfW1peChlLHQpe2lmKGUpe2xldCBuPXRoaXMucmdiLHI9ZS5yZ2IsaSxhPXQ9PT1pPy41OnQsbz0yKmEtMSxzPW4uYS1yLmEsYz0oKG8qcz09PS0xP286KG8rcykvKDErbypzKSkrMSkvMjtpPTEtYyxuLnI9MjU1JmMqbi5yK2kqci5yKy41LG4uZz0yNTUmYypuLmcraSpyLmcrLjUsbi5iPTI1NSZjKm4uYitpKnIuYisuNSxuLmE9YSpuLmErKDEtYSkqci5hLHRoaXMucmdiPW59cmV0dXJuIHRoaXN9aW50ZXJwb2xhdGUoZSx0KXtyZXR1cm4gZSYmKHRoaXMuX3JnYj1qZSh0aGlzLl9yZ2IsZS5fcmdiLHQpKSx0aGlzfWNsb25lKCl7cmV0dXJuIG5ldyBlKHRoaXMucmdiKX1hbHBoYShlKXtyZXR1cm4gdGhpcy5fcmdiLmE9QyhlKSx0aGlzfWNsZWFyZXIoZSl7bGV0IHQ9dGhpcy5fcmdiO3JldHVybiB0LmEqPTEtZSx0aGlzfWdyZXlzY2FsZSgpe2xldCBlPXRoaXMuX3JnYjtyZXR1cm4gZS5yPWUuZz1lLmI9YihlLnIqLjMrZS5nKi41OStlLmIqLjExKSx0aGlzfW9wYXF1ZXIoZSl7bGV0IHQ9dGhpcy5fcmdiO3JldHVybiB0LmEqPTErZSx0aGlzfW5lZ2F0ZSgpe2xldCBlPXRoaXMuX3JnYjtyZXR1cm4gZS5yPTI1NS1lLnIsZS5nPTI1NS1lLmcsZS5iPTI1NS1lLmIsdGhpc31saWdodGVuKGUpe3JldHVybiBNZSh0aGlzLl9yZ2IsMixlKSx0aGlzfWRhcmtlbihlKXtyZXR1cm4gTWUodGhpcy5fcmdiLDIsLWUpLHRoaXN9c2F0dXJhdGUoZSl7cmV0dXJuIE1lKHRoaXMuX3JnYiwxLGUpLHRoaXN9ZGVzYXR1cmF0ZShlKXtyZXR1cm4gTWUodGhpcy5fcmdiLDEsLWUpLHRoaXN9cm90YXRlKGUpe3JldHVybiB5ZSh0aGlzLl9yZ2IsZSksdGhpc319O2Z1bmN0aW9uIE8oKXt9dmFyIExlPSgoKT0+e2xldCBlPTA7cmV0dXJuKCk9PmUrK30pKCk7ZnVuY3Rpb24gayhlKXtyZXR1cm4gZT09bnVsbH1mdW5jdGlvbiBBKGUpe2lmKEFycmF5LmlzQXJyYXkmJkFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7bGV0IHQ9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpO3JldHVybiB0LnNsaWNlKDAsNyk9PT1gW29iamVjdGAmJnQuc2xpY2UoLTYpPT09YEFycmF5XWB9ZnVuY3Rpb24gaihlKXtyZXR1cm4gZSE9PW51bGwmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PWBbb2JqZWN0IE9iamVjdF1gfWZ1bmN0aW9uIE0oZSl7cmV0dXJuKHR5cGVvZiBlPT1gbnVtYmVyYHx8ZSBpbnN0YW5jZW9mIE51bWJlcikmJmlzRmluaXRlKCtlKX1mdW5jdGlvbiBOKGUsdCl7cmV0dXJuIE0oZSk/ZTp0fWZ1bmN0aW9uIFAoZSx0KXtyZXR1cm4gZT09PXZvaWQgMD90OmV9dmFyIFJlPShlLHQpPT50eXBlb2YgZT09YHN0cmluZ2AmJmUuZW5kc1dpdGgoYCVgKT9wYXJzZUZsb2F0KGUpLzEwMCp0OitlO2Z1bmN0aW9uIEYoZSx0LG4pe2lmKGUmJnR5cGVvZiBlLmNhbGw9PWBmdW5jdGlvbmApcmV0dXJuIGUuYXBwbHkobix0KX1mdW5jdGlvbiBJKGUsdCxuLHIpe2xldCBpLGEsbztpZihBKGUpKXtpZihhPWUubGVuZ3RoLHIpZm9yKGk9YS0xO2k+PTA7aS0tKXQuY2FsbChuLGVbaV0saSk7ZWxzZSBmb3IoaT0wO2k8YTtpKyspdC5jYWxsKG4sZVtpXSxpKX1lbHNlIGlmKGooZSkpZm9yKG89T2JqZWN0LmtleXMoZSksYT1vLmxlbmd0aCxpPTA7aTxhO2krKyl0LmNhbGwobixlW29baV1dLG9baV0pfWZ1bmN0aW9uIHplKGUsdCl7bGV0IG4scixpLGE7aWYoIWV8fCF0fHxlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihuPTAscj1lLmxlbmd0aDtuPHI7KytuKWlmKGk9ZVtuXSxhPXRbbl0saS5kYXRhc2V0SW5kZXghPT1hLmRhdGFzZXRJbmRleHx8aS5pbmRleCE9PWEuaW5kZXgpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gQmUoZSl7aWYoQShlKSlyZXR1cm4gZS5tYXAoQmUpO2lmKGooZSkpe2xldCB0PU9iamVjdC5jcmVhdGUobnVsbCksbj1PYmplY3Qua2V5cyhlKSxyPW4ubGVuZ3RoLGk9MDtmb3IoO2k8cjsrK2kpdFtuW2ldXT1CZShlW25baV1dKTtyZXR1cm4gdH1yZXR1cm4gZX1mdW5jdGlvbiBWZShlKXtyZXR1cm5bYF9fcHJvdG9fX2AsYHByb3RvdHlwZWAsYGNvbnN0cnVjdG9yYF0uaW5kZXhPZihlKT09PS0xfWZ1bmN0aW9uIEhlKGUsdCxuLHIpe2lmKCFWZShlKSlyZXR1cm47bGV0IGk9dFtlXSxhPW5bZV07aihpKSYmaihhKT9VZShpLGEscik6dFtlXT1CZShhKX1mdW5jdGlvbiBVZShlLHQsbil7bGV0IHI9QSh0KT90Olt0XSxpPXIubGVuZ3RoO2lmKCFqKGUpKXJldHVybiBlO258fD17fTtsZXQgYT1uLm1lcmdlcnx8SGUsbztmb3IobGV0IHQ9MDt0PGk7Kyt0KXtpZihvPXJbdF0sIWoobykpY29udGludWU7bGV0IGk9T2JqZWN0LmtleXMobyk7Zm9yKGxldCB0PTAscj1pLmxlbmd0aDt0PHI7Kyt0KWEoaVt0XSxlLG8sbil9cmV0dXJuIGV9ZnVuY3Rpb24gV2UoZSx0KXtyZXR1cm4gVWUoZSx0LHttZXJnZXI6R2V9KX1mdW5jdGlvbiBHZShlLHQsbil7aWYoIVZlKGUpKXJldHVybjtsZXQgcj10W2VdLGk9bltlXTtqKHIpJiZqKGkpP1dlKHIsaSk6T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl8fCh0W2VdPUJlKGkpKX12YXIgS2U9eyIiOmU9PmUseDplPT5lLngseTplPT5lLnl9O2Z1bmN0aW9uIHFlKGUpe2xldCB0PWUuc3BsaXQoYC5gKSxuPVtdLHI9YGA7Zm9yKGxldCBlIG9mIHQpcis9ZSxyLmVuZHNXaXRoKGBcXGApP3I9ci5zbGljZSgwLC0xKStgLmA6KG4ucHVzaChyKSxyPWBgKTtyZXR1cm4gbn1mdW5jdGlvbiBKZShlKXtsZXQgdD1xZShlKTtyZXR1cm4gZT0+e2ZvcihsZXQgbiBvZiB0KXtpZihuPT09YGApYnJlYWs7ZSYmPWVbbl19cmV0dXJuIGV9fWZ1bmN0aW9uIFllKGUsdCl7cmV0dXJuKEtlW3RdfHwoS2VbdF09SmUodCkpKShlKX1mdW5jdGlvbiBYZShlKXtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfXZhciBaZT1lPT5lIT09dm9pZCAwLFFlPWU9PnR5cGVvZiBlPT1gZnVuY3Rpb25gLCRlPShlLHQpPT57aWYoZS5zaXplIT09dC5zaXplKXJldHVybiExO2ZvcihsZXQgbiBvZiBlKWlmKCF0LmhhcyhuKSlyZXR1cm4hMTtyZXR1cm4hMH07ZnVuY3Rpb24gZXQoZSl7cmV0dXJuIGUudHlwZT09PWBtb3VzZXVwYHx8ZS50eXBlPT09YGNsaWNrYHx8ZS50eXBlPT09YGNvbnRleHRtZW51YH12YXIgTD1NYXRoLlBJLFI9MipMLHR0PVIrTCxudD0xLzAscnQ9TC8xODAsej1MLzIsaXQ9TC80LGF0PUwqMi8zLEI9TWF0aC5sb2cxMCxvdD1NYXRoLnNpZ247ZnVuY3Rpb24gc3QoZSx0LG4pe3JldHVybiBNYXRoLmFicyhlLXQpPG59ZnVuY3Rpb24gY3QoZSl7bGV0IHQ9TWF0aC5yb3VuZChlKTtlPXN0KGUsdCxlLzFlMyk/dDplO2xldCBuPTEwKipNYXRoLmZsb29yKEIoZSkpLHI9ZS9uO3JldHVybihyPD0xPzE6cjw9Mj8yOnI8PTU/NToxMCkqbn1mdW5jdGlvbiBsdChlKXtsZXQgdD1bXSxuPU1hdGguc3FydChlKSxyO2ZvcihyPTE7cjxuO3IrKyllJXI9PT0wJiYodC5wdXNoKHIpLHQucHVzaChlL3IpKTtyZXR1cm4gbj09PShufDApJiZ0LnB1c2gobiksdC5zb3J0KChlLHQpPT5lLXQpLnBvcCgpLHR9ZnVuY3Rpb24gdXQoZSl7cmV0dXJuIHR5cGVvZiBlPT1gc3ltYm9sYHx8dHlwZW9mIGU9PWBvYmplY3RgJiYhIWUmJiEoU3ltYm9sLnRvUHJpbWl0aXZlIGluIGV8fGB0b1N0cmluZ2BpbiBlfHxgdmFsdWVPZmBpbiBlKX1mdW5jdGlvbiBkdChlKXtyZXR1cm4hdXQoZSkmJiFpc05hTihwYXJzZUZsb2F0KGUpKSYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gZnQoZSx0KXtsZXQgbj1NYXRoLnJvdW5kKGUpO3JldHVybiBuLXQ8PWUmJm4rdD49ZX1mdW5jdGlvbiBwdChlLHQsbil7bGV0IHIsaSxhO2ZvcihyPTAsaT1lLmxlbmd0aDtyPGk7cisrKWE9ZVtyXVtuXSxpc05hTihhKXx8KHQubWluPU1hdGgubWluKHQubWluLGEpLHQubWF4PU1hdGgubWF4KHQubWF4LGEpKX1mdW5jdGlvbiBtdChlKXtyZXR1cm4gTC8xODAqZX1mdW5jdGlvbiBodChlKXtyZXR1cm4gMTgwL0wqZX1mdW5jdGlvbiBndChlKXtpZighTShlKSlyZXR1cm47bGV0IHQ9MSxuPTA7Zm9yKDtNYXRoLnJvdW5kKGUqdCkvdCE9PWU7KXQqPTEwLG4rKztyZXR1cm4gbn1mdW5jdGlvbiBfdChlLHQpe2xldCBuPXQueC1lLngscj10LnktZS55LGk9TWF0aC5zcXJ0KG4qbityKnIpLGE9TWF0aC5hdGFuMihyLG4pO3JldHVybiBhPC0uNSpMJiYoYSs9Uikse2FuZ2xlOmEsZGlzdGFuY2U6aX19ZnVuY3Rpb24gdnQoZSx0KXtyZXR1cm4gTWF0aC5zcXJ0KCh0LngtZS54KSoqMisodC55LWUueSkqKjIpfWZ1bmN0aW9uIHl0KGUsdCl7cmV0dXJuKGUtdCt0dCklUi1MfWZ1bmN0aW9uIFYoZSl7cmV0dXJuKGUlUitSKSVSfWZ1bmN0aW9uIGJ0KGUsdCxuLHIpe2xldCBpPVYoZSksYT1WKHQpLG89VihuKSxzPVYoYS1pKSxjPVYoby1pKSxsPVYoaS1hKSx1PVYoaS1vKTtyZXR1cm4gaT09PWF8fGk9PT1vfHxyJiZhPT09b3x8cz5jJiZsPHV9ZnVuY3Rpb24gSChlLHQsbil7cmV0dXJuIE1hdGgubWF4KHQsTWF0aC5taW4obixlKSl9ZnVuY3Rpb24geHQoZSl7cmV0dXJuIEgoZSwtMzI3NjgsMzI3NjcpfWZ1bmN0aW9uIFN0KGUsdCxuLHI9MWUtNil7cmV0dXJuIGU+PU1hdGgubWluKHQsbiktciYmZTw9TWF0aC5tYXgodCxuKStyfWZ1bmN0aW9uIEN0KGUsdCxuKXtufHw9KG49PmVbbl08dCk7bGV0IHI9ZS5sZW5ndGgtMSxpPTAsYTtmb3IoO3ItaT4xOylhPWkrcj4+MSxuKGEpP2k9YTpyPWE7cmV0dXJue2xvOmksaGk6cn19dmFyIHd0PShlLHQsbixyKT0+Q3QoZSxuLHI/cj0+e2xldCBpPWVbcl1bdF07cmV0dXJuIGk8bnx8aT09PW4mJmVbcisxXVt0XT09PW59OnI9PmVbcl1bdF08biksVHQ9KGUsdCxuKT0+Q3QoZSxuLHI9PmVbcl1bdF0+PW4pO2Z1bmN0aW9uIEV0KGUsdCxuKXtsZXQgcj0wLGk9ZS5sZW5ndGg7Zm9yKDtyPGkmJmVbcl08dDspcisrO2Zvcig7aT5yJiZlW2ktMV0+bjspaS0tO3JldHVybiByPjB8fGk8ZS5sZW5ndGg/ZS5zbGljZShyLGkpOmV9dmFyIER0PVtgcHVzaGAsYHBvcGAsYHNoaWZ0YCxgc3BsaWNlYCxgdW5zaGlmdGBdO2Z1bmN0aW9uIE90KGUsdCl7aWYoZS5fY2hhcnRqcyl7ZS5fY2hhcnRqcy5saXN0ZW5lcnMucHVzaCh0KTtyZXR1cm59T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9jaGFydGpzIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6e2xpc3RlbmVyczpbdF19fSksRHQuZm9yRWFjaCh0PT57bGV0IG49YF9vbkRhdGFgK1hlKHQpLHI9ZVt0XTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZSguLi50KXtsZXQgaT1yLmFwcGx5KHRoaXMsdCk7cmV0dXJuIGUuX2NoYXJ0anMubGlzdGVuZXJzLmZvckVhY2goZT0+e3R5cGVvZiBlW25dPT1gZnVuY3Rpb25gJiZlW25dKC4uLnQpfSksaX19KX0pfWZ1bmN0aW9uIGt0KGUsdCl7bGV0IG49ZS5fY2hhcnRqcztpZighbilyZXR1cm47bGV0IHI9bi5saXN0ZW5lcnMsaT1yLmluZGV4T2YodCk7aSE9PS0xJiZyLnNwbGljZShpLDEpLCEoci5sZW5ndGg+MCkmJihEdC5mb3JFYWNoKHQ9PntkZWxldGUgZVt0XX0pLGRlbGV0ZSBlLl9jaGFydGpzKX1mdW5jdGlvbiBBdChlKXtsZXQgdD1uZXcgU2V0KGUpO3JldHVybiB0LnNpemU9PT1lLmxlbmd0aD9lOkFycmF5LmZyb20odCl9dmFyIGp0PWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+YHVgP2Z1bmN0aW9uKGUpe3JldHVybiBlKCl9OndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV9KCk7ZnVuY3Rpb24gTXQoZSx0KXtsZXQgbj1bXSxyPSExO3JldHVybiBmdW5jdGlvbiguLi5pKXtuPWkscnx8KHI9ITAsanQuY2FsbCh3aW5kb3csKCk9PntyPSExLGUuYXBwbHkodCxuKX0pKX19ZnVuY3Rpb24gTnQoZSx0KXtsZXQgbjtyZXR1cm4gZnVuY3Rpb24oLi4ucil7cmV0dXJuIHQ/KGNsZWFyVGltZW91dChuKSxuPXNldFRpbWVvdXQoZSx0LHIpKTplLmFwcGx5KHRoaXMsciksdH19dmFyIFB0PWU9PmU9PT1gc3RhcnRgP2BsZWZ0YDplPT09YGVuZGA/YHJpZ2h0YDpgY2VudGVyYCxVPShlLHQsbik9PmU9PT1gc3RhcnRgP3Q6ZT09PWBlbmRgP246KHQrbikvMixGdD0oZSx0LG4scik9PmU9PT0ocj9gbGVmdGA6YHJpZ2h0YCk/bjplPT09YGNlbnRlcmA/KHQrbikvMjp0O2Z1bmN0aW9uIEl0KGUsdCxuKXtsZXQgcj10Lmxlbmd0aCxpPTAsYT1yO2lmKGUuX3NvcnRlZCl7bGV0e2lTY2FsZTpvLHZTY2FsZTpzLF9wYXJzZWQ6Y309ZSxsPWUuZGF0YXNldCYmZS5kYXRhc2V0Lm9wdGlvbnM/ZS5kYXRhc2V0Lm9wdGlvbnMuc3BhbkdhcHM6bnVsbCx1PW8uYXhpcyx7bWluOmQsbWF4OmYsbWluRGVmaW5lZDpwLG1heERlZmluZWQ6bX09by5nZXRVc2VyQm91bmRzKCk7aWYocCl7aWYoaT1NYXRoLm1pbih3dChjLHUsZCkubG8sbj9yOnd0KHQsdSxvLmdldFBpeGVsRm9yVmFsdWUoZCkpLmxvKSxsKXtsZXQgZT1jLnNsaWNlKDAsaSsxKS5yZXZlcnNlKCkuZmluZEluZGV4KGU9PiFrKGVbcy5heGlzXSkpO2ktPU1hdGgubWF4KDAsZSl9aT1IKGksMCxyLTEpfWlmKG0pe2xldCBlPU1hdGgubWF4KHd0KGMsby5heGlzLGYsITApLmhpKzEsbj8wOnd0KHQsdSxvLmdldFBpeGVsRm9yVmFsdWUoZiksITApLmhpKzEpO2lmKGwpe2xldCB0PWMuc2xpY2UoZS0xKS5maW5kSW5kZXgoZT0+IWsoZVtzLmF4aXNdKSk7ZSs9TWF0aC5tYXgoMCx0KX1hPUgoZSxpLHIpLWl9ZWxzZSBhPXItaX1yZXR1cm57c3RhcnQ6aSxjb3VudDphfX1mdW5jdGlvbiBMdChlKXtsZXR7eFNjYWxlOnQseVNjYWxlOm4sX3NjYWxlUmFuZ2VzOnJ9PWUsaT17eG1pbjp0Lm1pbix4bWF4OnQubWF4LHltaW46bi5taW4seW1heDpuLm1heH07aWYoIXIpcmV0dXJuIGUuX3NjYWxlUmFuZ2VzPWksITA7bGV0IGE9ci54bWluIT09dC5taW58fHIueG1heCE9PXQubWF4fHxyLnltaW4hPT1uLm1pbnx8ci55bWF4IT09bi5tYXg7cmV0dXJuIE9iamVjdC5hc3NpZ24ocixpKSxhfXZhciBSdD1lPT5lPT09MHx8ZT09PTEsenQ9KGUsdCxuKT0+LSgyKiooMTAqLS1lKSpNYXRoLnNpbigoZS10KSpSL24pKSxCdD0oZSx0LG4pPT4yKiooLTEwKmUpKk1hdGguc2luKChlLXQpKlIvbikrMSxWdD17bGluZWFyOmU9PmUsZWFzZUluUXVhZDplPT5lKmUsZWFzZU91dFF1YWQ6ZT0+LWUqKGUtMiksZWFzZUluT3V0UXVhZDplPT4oZS89LjUpPDE/LjUqZSplOi0uNSooLS1lKihlLTIpLTEpLGVhc2VJbkN1YmljOmU9PmUqZSplLGVhc2VPdXRDdWJpYzplPT4tLWUqZSplKzEsZWFzZUluT3V0Q3ViaWM6ZT0+KGUvPS41KTwxPy41KmUqZSplOi41KigoZS09MikqZSplKzIpLGVhc2VJblF1YXJ0OmU9PmUqZSplKmUsZWFzZU91dFF1YXJ0OmU9Pi0oLS1lKmUqZSplLTEpLGVhc2VJbk91dFF1YXJ0OmU9PihlLz0uNSk8MT8uNSplKmUqZSplOi0uNSooKGUtPTIpKmUqZSplLTIpLGVhc2VJblF1aW50OmU9PmUqZSplKmUqZSxlYXNlT3V0UXVpbnQ6ZT0+LS1lKmUqZSplKmUrMSxlYXNlSW5PdXRRdWludDplPT4oZS89LjUpPDE/LjUqZSplKmUqZSplOi41KigoZS09MikqZSplKmUqZSsyKSxlYXNlSW5TaW5lOmU9Pi1NYXRoLmNvcyhlKnopKzEsZWFzZU91dFNpbmU6ZT0+TWF0aC5zaW4oZSp6KSxlYXNlSW5PdXRTaW5lOmU9Pi0uNSooTWF0aC5jb3MoTCplKS0xKSxlYXNlSW5FeHBvOmU9PmU9PT0wPzA6MioqKDEwKihlLTEpKSxlYXNlT3V0RXhwbzplPT5lPT09MT8xOi0oMioqKC0xMCplKSkrMSxlYXNlSW5PdXRFeHBvOmU9PlJ0KGUpP2U6ZTwuNT8uNSoyKiooMTAqKGUqMi0xKSk6LjUqKC0oMioqKC0xMCooZSoyLTEpKSkrMiksZWFzZUluQ2lyYzplPT5lPj0xP2U6LShNYXRoLnNxcnQoMS1lKmUpLTEpLGVhc2VPdXRDaXJjOmU9Pk1hdGguc3FydCgxLSAtLWUqZSksZWFzZUluT3V0Q2lyYzplPT4oZS89LjUpPDE/LS41KihNYXRoLnNxcnQoMS1lKmUpLTEpOi41KihNYXRoLnNxcnQoMS0oZS09MikqZSkrMSksZWFzZUluRWxhc3RpYzplPT5SdChlKT9lOnp0KGUsLjA3NSwuMyksZWFzZU91dEVsYXN0aWM6ZT0+UnQoZSk/ZTpCdChlLC4wNzUsLjMpLGVhc2VJbk91dEVsYXN0aWMoZSl7bGV0IHQ9LjExMjUsbj0uNDU7cmV0dXJuIFJ0KGUpP2U6ZTwuNT8uNSp6dChlKjIsdCxuKTouNSsuNSpCdChlKjItMSx0LG4pfSxlYXNlSW5CYWNrKGUpe3JldHVybiBlKmUqKDIuNzAxNTgqZS0xLjcwMTU4KX0sZWFzZU91dEJhY2soZSl7cmV0dXJuLS1lKmUqKDIuNzAxNTgqZSsxLjcwMTU4KSsxfSxlYXNlSW5PdXRCYWNrKGUpe2xldCB0PTEuNzAxNTg7cmV0dXJuKGUvPS41KTwxPy41KihlKmUqKCgodCo9MS41MjUpKzEpKmUtdCkpOi41KigoZS09MikqZSooKCh0Kj0xLjUyNSkrMSkqZSt0KSsyKX0sZWFzZUluQm91bmNlOmU9PjEtVnQuZWFzZU91dEJvdW5jZSgxLWUpLGVhc2VPdXRCb3VuY2UoZSl7bGV0IHQ9Ny41NjI1LG49Mi43NTtyZXR1cm4gZTwxL24/dCplKmU6ZTwyL24/dCooZS09MS41L24pKmUrLjc1OmU8Mi41L24/dCooZS09Mi4yNS9uKSplKy45Mzc1OnQqKGUtPTIuNjI1L24pKmUrLjk4NDM3NX0sZWFzZUluT3V0Qm91bmNlOmU9PmU8LjU/VnQuZWFzZUluQm91bmNlKGUqMikqLjU6VnQuZWFzZU91dEJvdW5jZShlKjItMSkqLjUrLjV9O2Z1bmN0aW9uIEh0KGUpe2lmKGUmJnR5cGVvZiBlPT1gb2JqZWN0YCl7bGV0IHQ9ZS50b1N0cmluZygpO3JldHVybiB0PT09YFtvYmplY3QgQ2FudmFzUGF0dGVybl1gfHx0PT09YFtvYmplY3QgQ2FudmFzR3JhZGllbnRdYH1yZXR1cm4hMX1mdW5jdGlvbiBVdChlKXtyZXR1cm4gSHQoZSk/ZTpuZXcgSWUoZSl9ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIEh0KGUpP2U6bmV3IEllKGUpLnNhdHVyYXRlKC41KS5kYXJrZW4oLjEpLmhleFN0cmluZygpfXZhciBHdD1bYHhgLGB5YCxgYm9yZGVyV2lkdGhgLGByYWRpdXNgLGB0ZW5zaW9uYF0sS3Q9W2Bjb2xvcmAsYGJvcmRlckNvbG9yYCxgYmFja2dyb3VuZENvbG9yYF07ZnVuY3Rpb24gcXQoZSl7ZS5zZXQoYGFuaW1hdGlvbmAse2RlbGF5OnZvaWQgMCxkdXJhdGlvbjoxZTMsZWFzaW5nOmBlYXNlT3V0UXVhcnRgLGZuOnZvaWQgMCxmcm9tOnZvaWQgMCxsb29wOnZvaWQgMCx0bzp2b2lkIDAsdHlwZTp2b2lkIDB9KSxlLmRlc2NyaWJlKGBhbmltYXRpb25gLHtfZmFsbGJhY2s6ITEsX2luZGV4YWJsZTohMSxfc2NyaXB0YWJsZTplPT5lIT09YG9uUHJvZ3Jlc3NgJiZlIT09YG9uQ29tcGxldGVgJiZlIT09YGZuYH0pLGUuc2V0KGBhbmltYXRpb25zYCx7Y29sb3JzOnt0eXBlOmBjb2xvcmAscHJvcGVydGllczpLdH0sbnVtYmVyczp7dHlwZTpgbnVtYmVyYCxwcm9wZXJ0aWVzOkd0fX0pLGUuZGVzY3JpYmUoYGFuaW1hdGlvbnNgLHtfZmFsbGJhY2s6YGFuaW1hdGlvbmB9KSxlLnNldChgdHJhbnNpdGlvbnNgLHthY3RpdmU6e2FuaW1hdGlvbjp7ZHVyYXRpb246NDAwfX0scmVzaXplOnthbmltYXRpb246e2R1cmF0aW9uOjB9fSxzaG93OnthbmltYXRpb25zOntjb2xvcnM6e2Zyb206YHRyYW5zcGFyZW50YH0sdmlzaWJsZTp7dHlwZTpgYm9vbGVhbmAsZHVyYXRpb246MH19fSxoaWRlOnthbmltYXRpb25zOntjb2xvcnM6e3RvOmB0cmFuc3BhcmVudGB9LHZpc2libGU6e3R5cGU6YGJvb2xlYW5gLGVhc2luZzpgbGluZWFyYCxmbjplPT5lfDB9fX19KX1mdW5jdGlvbiBKdChlKXtlLnNldChgbGF5b3V0YCx7YXV0b1BhZGRpbmc6ITAscGFkZGluZzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9fSl9dmFyIFl0PW5ldyBNYXA7ZnVuY3Rpb24gWHQoZSx0KXt0fHw9e307bGV0IG49ZStKU09OLnN0cmluZ2lmeSh0KSxyPVl0LmdldChuKTtyZXR1cm4gcnx8KHI9bmV3IEludGwuTnVtYmVyRm9ybWF0KGUsdCksWXQuc2V0KG4scikpLHJ9ZnVuY3Rpb24gWnQoZSx0LG4pe3JldHVybiBYdCh0LG4pLmZvcm1hdChlKX12YXIgUXQ9e3ZhbHVlcyhlKXtyZXR1cm4gQShlKT9lOmBgK2V9LG51bWVyaWMoZSx0LG4pe2lmKGU9PT0wKXJldHVybmAwYDtsZXQgcj10aGlzLmNoYXJ0Lm9wdGlvbnMubG9jYWxlLGksYT1lO2lmKG4ubGVuZ3RoPjEpe2xldCB0PU1hdGgubWF4KE1hdGguYWJzKG5bMF0udmFsdWUpLE1hdGguYWJzKG5bbi5sZW5ndGgtMV0udmFsdWUpKTsodDwxZS00fHx0PjB4MzhkN2VhNGM2ODAwMCkmJihpPWBzY2llbnRpZmljYCksYT0kdChlLG4pfWxldCBvPUIoTWF0aC5hYnMoYSkpLHM9aXNOYU4obyk/MTpNYXRoLm1heChNYXRoLm1pbigtMSpNYXRoLmZsb29yKG8pLDIwKSwwKSxjPXtub3RhdGlvbjppLG1pbmltdW1GcmFjdGlvbkRpZ2l0czpzLG1heGltdW1GcmFjdGlvbkRpZ2l0czpzfTtyZXR1cm4gT2JqZWN0LmFzc2lnbihjLHRoaXMub3B0aW9ucy50aWNrcy5mb3JtYXQpLFp0KGUscixjKX0sbG9nYXJpdGhtaWMoZSx0LG4pe2lmKGU9PT0wKXJldHVybmAwYDtsZXQgcj1uW3RdLnNpZ25pZmljYW5kfHxlLzEwKipNYXRoLmZsb29yKEIoZSkpO3JldHVyblsxLDIsMyw1LDEwLDE1XS5pbmNsdWRlcyhyKXx8dD4uOCpuLmxlbmd0aD9RdC5udW1lcmljLmNhbGwodGhpcyxlLHQsbik6YGB9fTtmdW5jdGlvbiAkdChlLHQpe2xldCBuPXQubGVuZ3RoPjM/dFsyXS52YWx1ZS10WzFdLnZhbHVlOnRbMV0udmFsdWUtdFswXS52YWx1ZTtyZXR1cm4gTWF0aC5hYnMobik+PTEmJmUhPT1NYXRoLmZsb29yKGUpJiYobj1lLU1hdGguZmxvb3IoZSkpLG59dmFyIGVuPXtmb3JtYXR0ZXJzOlF0fTtmdW5jdGlvbiB0bihlKXtlLnNldChgc2NhbGVgLHtkaXNwbGF5OiEwLG9mZnNldDohMSxyZXZlcnNlOiExLGJlZ2luQXRaZXJvOiExLGJvdW5kczpgdGlja3NgLGNsaXA6ITAsZ3JhY2U6MCxncmlkOntkaXNwbGF5OiEwLGxpbmVXaWR0aDoxLGRyYXdPbkNoYXJ0QXJlYTohMCxkcmF3VGlja3M6ITAsdGlja0xlbmd0aDo4LHRpY2tXaWR0aDooZSx0KT0+dC5saW5lV2lkdGgsdGlja0NvbG9yOihlLHQpPT50LmNvbG9yLG9mZnNldDohMX0sYm9yZGVyOntkaXNwbGF5OiEwLGRhc2g6W10sZGFzaE9mZnNldDowLHdpZHRoOjF9LHRpdGxlOntkaXNwbGF5OiExLHRleHQ6YGAscGFkZGluZzp7dG9wOjQsYm90dG9tOjR9fSx0aWNrczp7bWluUm90YXRpb246MCxtYXhSb3RhdGlvbjo1MCxtaXJyb3I6ITEsdGV4dFN0cm9rZVdpZHRoOjAsdGV4dFN0cm9rZUNvbG9yOmBgLHBhZGRpbmc6MyxkaXNwbGF5OiEwLGF1dG9Ta2lwOiEwLGF1dG9Ta2lwUGFkZGluZzozLGxhYmVsT2Zmc2V0OjAsY2FsbGJhY2s6ZW4uZm9ybWF0dGVycy52YWx1ZXMsbWlub3I6e30sbWFqb3I6e30sYWxpZ246YGNlbnRlcmAsY3Jvc3NBbGlnbjpgbmVhcmAsc2hvd0xhYmVsQmFja2Ryb3A6ITEsYmFja2Ryb3BDb2xvcjpgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KWAsYmFja2Ryb3BQYWRkaW5nOjJ9fSksZS5yb3V0ZShgc2NhbGUudGlja3NgLGBjb2xvcmAsYGAsYGNvbG9yYCksZS5yb3V0ZShgc2NhbGUuZ3JpZGAsYGNvbG9yYCxgYCxgYm9yZGVyQ29sb3JgKSxlLnJvdXRlKGBzY2FsZS5ib3JkZXJgLGBjb2xvcmAsYGAsYGJvcmRlckNvbG9yYCksZS5yb3V0ZShgc2NhbGUudGl0bGVgLGBjb2xvcmAsYGAsYGNvbG9yYCksZS5kZXNjcmliZShgc2NhbGVgLHtfZmFsbGJhY2s6ITEsX3NjcmlwdGFibGU6ZT0+IWUuc3RhcnRzV2l0aChgYmVmb3JlYCkmJiFlLnN0YXJ0c1dpdGgoYGFmdGVyYCkmJmUhPT1gY2FsbGJhY2tgJiZlIT09YHBhcnNlcmAsX2luZGV4YWJsZTplPT5lIT09YGJvcmRlckRhc2hgJiZlIT09YHRpY2tCb3JkZXJEYXNoYCYmZSE9PWBkYXNoYH0pLGUuZGVzY3JpYmUoYHNjYWxlc2Ase19mYWxsYmFjazpgc2NhbGVgfSksZS5kZXNjcmliZShgc2NhbGUudGlja3NgLHtfc2NyaXB0YWJsZTplPT5lIT09YGJhY2tkcm9wUGFkZGluZ2AmJmUhPT1gY2FsbGJhY2tgLF9pbmRleGFibGU6ZT0+ZSE9PWBiYWNrZHJvcFBhZGRpbmdgfSl9dmFyIG5uPU9iamVjdC5jcmVhdGUobnVsbCkscm49T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBhbihlLHQpe2lmKCF0KXJldHVybiBlO2xldCBuPXQuc3BsaXQoYC5gKTtmb3IobGV0IHQ9MCxyPW4ubGVuZ3RoO3Q8cjsrK3Qpe2xldCByPW5bdF07ZT1lW3JdfHwoZVtyXT1PYmplY3QuY3JlYXRlKG51bGwpKX1yZXR1cm4gZX1mdW5jdGlvbiBvbihlLHQsbil7cmV0dXJuIHR5cGVvZiB0PT1gc3RyaW5nYD9VZShhbihlLHQpLG4pOlVlKGFuKGUsYGApLHQpfXZhciBXPW5ldyBjbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuYW5pbWF0aW9uPXZvaWQgMCx0aGlzLmJhY2tncm91bmRDb2xvcj1gcmdiYSgwLDAsMCwwLjEpYCx0aGlzLmJvcmRlckNvbG9yPWByZ2JhKDAsMCwwLDAuMSlgLHRoaXMuY29sb3I9YCM2NjZgLHRoaXMuZGF0YXNldHM9e30sdGhpcy5kZXZpY2VQaXhlbFJhdGlvPWU9PmUuY2hhcnQucGxhdGZvcm0uZ2V0RGV2aWNlUGl4ZWxSYXRpbygpLHRoaXMuZWxlbWVudHM9e30sdGhpcy5ldmVudHM9W2Btb3VzZW1vdmVgLGBtb3VzZW91dGAsYGNsaWNrYCxgdG91Y2hzdGFydGAsYHRvdWNobW92ZWBdLHRoaXMuZm9udD17ZmFtaWx5OmAnSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ0FyaWFsJywgc2Fucy1zZXJpZmAsc2l6ZToxMixzdHlsZTpgbm9ybWFsYCxsaW5lSGVpZ2h0OjEuMix3ZWlnaHQ6bnVsbH0sdGhpcy5ob3Zlcj17fSx0aGlzLmhvdmVyQmFja2dyb3VuZENvbG9yPShlLHQpPT5XdCh0LmJhY2tncm91bmRDb2xvciksdGhpcy5ob3ZlckJvcmRlckNvbG9yPShlLHQpPT5XdCh0LmJvcmRlckNvbG9yKSx0aGlzLmhvdmVyQ29sb3I9KGUsdCk9Pld0KHQuY29sb3IpLHRoaXMuaW5kZXhBeGlzPWB4YCx0aGlzLmludGVyYWN0aW9uPXttb2RlOmBuZWFyZXN0YCxpbnRlcnNlY3Q6ITAsaW5jbHVkZUludmlzaWJsZTohMX0sdGhpcy5tYWludGFpbkFzcGVjdFJhdGlvPSEwLHRoaXMub25Ib3Zlcj1udWxsLHRoaXMub25DbGljaz1udWxsLHRoaXMucGFyc2luZz0hMCx0aGlzLnBsdWdpbnM9e30sdGhpcy5yZXNwb25zaXZlPSEwLHRoaXMuc2NhbGU9dm9pZCAwLHRoaXMuc2NhbGVzPXt9LHRoaXMuc2hvd0xpbmU9ITAsdGhpcy5kcmF3QWN0aXZlRWxlbWVudHNPblRvcD0hMCx0aGlzLmRlc2NyaWJlKGUpLHRoaXMuYXBwbHkodCl9c2V0KGUsdCl7cmV0dXJuIG9uKHRoaXMsZSx0KX1nZXQoZSl7cmV0dXJuIGFuKHRoaXMsZSl9ZGVzY3JpYmUoZSx0KXtyZXR1cm4gb24ocm4sZSx0KX1vdmVycmlkZShlLHQpe3JldHVybiBvbihubixlLHQpfXJvdXRlKGUsdCxuLHIpe2xldCBpPWFuKHRoaXMsZSksYT1hbih0aGlzLG4pLG89YF9gK3Q7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaSx7W29dOnt2YWx1ZTppW3RdLHdyaXRhYmxlOiEwfSxbdF06e2VudW1lcmFibGU6ITAsZ2V0KCl7bGV0IGU9dGhpc1tvXSx0PWFbcl07cmV0dXJuIGooZSk/T2JqZWN0LmFzc2lnbih7fSx0LGUpOlAoZSx0KX0sc2V0KGUpe3RoaXNbb109ZX19fSl9YXBwbHkoZSl7ZS5mb3JFYWNoKGU9PmUodGhpcykpfX0oe19zY3JpcHRhYmxlOmU9PiFlLnN0YXJ0c1dpdGgoYG9uYCksX2luZGV4YWJsZTplPT5lIT09YGV2ZW50c2AsaG92ZXI6e19mYWxsYmFjazpgaW50ZXJhY3Rpb25gfSxpbnRlcmFjdGlvbjp7X3NjcmlwdGFibGU6ITEsX2luZGV4YWJsZTohMX19LFtxdCxKdCx0bl0pO2Z1bmN0aW9uIHNuKGUpe3JldHVybiFlfHxrKGUuc2l6ZSl8fGsoZS5mYW1pbHkpP251bGw6KGUuc3R5bGU/ZS5zdHlsZStgIGA6YGApKyhlLndlaWdodD9lLndlaWdodCtgIGA6YGApK2Uuc2l6ZStgcHggYCtlLmZhbWlseX1mdW5jdGlvbiBjbihlLHQsbixyLGkpe2xldCBhPXRbaV07cmV0dXJuIGF8fChhPXRbaV09ZS5tZWFzdXJlVGV4dChpKS53aWR0aCxuLnB1c2goaSkpLGE+ciYmKHI9YSkscn1mdW5jdGlvbiBsbihlLHQsbixyKXtyfHw9e307bGV0IGk9ci5kYXRhPXIuZGF0YXx8e30sYT1yLmdhcmJhZ2VDb2xsZWN0PXIuZ2FyYmFnZUNvbGxlY3R8fFtdO3IuZm9udCE9PXQmJihpPXIuZGF0YT17fSxhPXIuZ2FyYmFnZUNvbGxlY3Q9W10sci5mb250PXQpLGUuc2F2ZSgpLGUuZm9udD10O2xldCBvPTAscz1uLmxlbmd0aCxjLGwsdSxkLGY7Zm9yKGM9MDtjPHM7YysrKWlmKGQ9bltjXSxkIT1udWxsJiYhQShkKSlvPWNuKGUsaSxhLG8sZCk7ZWxzZSBpZihBKGQpKWZvcihsPTAsdT1kLmxlbmd0aDtsPHU7bCsrKWY9ZFtsXSxmIT1udWxsJiYhQShmKSYmKG89Y24oZSxpLGEsbyxmKSk7ZS5yZXN0b3JlKCk7bGV0IHA9YS5sZW5ndGgvMjtpZihwPm4ubGVuZ3RoKXtmb3IoYz0wO2M8cDtjKyspZGVsZXRlIGlbYVtjXV07YS5zcGxpY2UoMCxwKX1yZXR1cm4gb31mdW5jdGlvbiB1bihlLHQsbil7bGV0IHI9ZS5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyxpPW49PT0wPzA6TWF0aC5tYXgobi8yLC41KTtyZXR1cm4gTWF0aC5yb3VuZCgodC1pKSpyKS9yK2l9ZnVuY3Rpb24gZG4oZSx0KXshdCYmIWV8fCh0fHw9ZS5nZXRDb250ZXh0KGAyZGApLHQuc2F2ZSgpLHQucmVzZXRUcmFuc2Zvcm0oKSx0LmNsZWFyUmVjdCgwLDAsZS53aWR0aCxlLmhlaWdodCksdC5yZXN0b3JlKCkpfWZ1bmN0aW9uIGZuKGUsdCxuLHIpe3BuKGUsdCxuLHIsbnVsbCl9ZnVuY3Rpb24gcG4oZSx0LG4scixpKXtsZXQgYSxvLHMsYyxsLHUsZCxmLHA9dC5wb2ludFN0eWxlLG09dC5yb3RhdGlvbixoPXQucmFkaXVzLGc9KG18fDApKnJ0O2lmKHAmJnR5cGVvZiBwPT1gb2JqZWN0YCYmKGE9cC50b1N0cmluZygpLGE9PT1gW29iamVjdCBIVE1MSW1hZ2VFbGVtZW50XWB8fGE9PT1gW29iamVjdCBIVE1MQ2FudmFzRWxlbWVudF1gKSl7ZS5zYXZlKCksZS50cmFuc2xhdGUobixyKSxlLnJvdGF0ZShnKSxlLmRyYXdJbWFnZShwLC1wLndpZHRoLzIsLXAuaGVpZ2h0LzIscC53aWR0aCxwLmhlaWdodCksZS5yZXN0b3JlKCk7cmV0dXJufWlmKCEoaXNOYU4oaCl8fGg8PTApKXtzd2l0Y2goZS5iZWdpblBhdGgoKSxwKXtkZWZhdWx0Omk/ZS5lbGxpcHNlKG4scixpLzIsaCwwLDAsUik6ZS5hcmMobixyLGgsMCxSKSxlLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2VgdHJpYW5nbGVgOnU9aT9pLzI6aCxlLm1vdmVUbyhuK01hdGguc2luKGcpKnUsci1NYXRoLmNvcyhnKSpoKSxnKz1hdCxlLmxpbmVUbyhuK01hdGguc2luKGcpKnUsci1NYXRoLmNvcyhnKSpoKSxnKz1hdCxlLmxpbmVUbyhuK01hdGguc2luKGcpKnUsci1NYXRoLmNvcyhnKSpoKSxlLmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2VgcmVjdFJvdW5kZWRgOmw9aCouNTE2LGM9aC1sLG89TWF0aC5jb3MoZytpdCkqYyxkPU1hdGguY29zKGcraXQpKihpP2kvMi1sOmMpLHM9TWF0aC5zaW4oZytpdCkqYyxmPU1hdGguc2luKGcraXQpKihpP2kvMi1sOmMpLGUuYXJjKG4tZCxyLXMsbCxnLUwsZy16KSxlLmFyYyhuK2Ysci1vLGwsZy16LGcpLGUuYXJjKG4rZCxyK3MsbCxnLGcreiksZS5hcmMobi1mLHIrbyxsLGcreixnK0wpLGUuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZWByZWN0YDppZighbSl7Yz1NYXRoLlNRUlQxXzIqaCx1PWk/aS8yOmMsZS5yZWN0KG4tdSxyLWMsMip1LDIqYyk7YnJlYWt9Zys9aXQ7Y2FzZWByZWN0Um90YDpkPU1hdGguY29zKGcpKihpP2kvMjpoKSxvPU1hdGguY29zKGcpKmgscz1NYXRoLnNpbihnKSpoLGY9TWF0aC5zaW4oZykqKGk/aS8yOmgpLGUubW92ZVRvKG4tZCxyLXMpLGUubGluZVRvKG4rZixyLW8pLGUubGluZVRvKG4rZCxyK3MpLGUubGluZVRvKG4tZixyK28pLGUuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZWBjcm9zc1JvdGA6Zys9aXQ7Y2FzZWBjcm9zc2A6ZD1NYXRoLmNvcyhnKSooaT9pLzI6aCksbz1NYXRoLmNvcyhnKSpoLHM9TWF0aC5zaW4oZykqaCxmPU1hdGguc2luKGcpKihpP2kvMjpoKSxlLm1vdmVUbyhuLWQsci1zKSxlLmxpbmVUbyhuK2QscitzKSxlLm1vdmVUbyhuK2Ysci1vKSxlLmxpbmVUbyhuLWYscitvKTticmVhaztjYXNlYHN0YXJgOmQ9TWF0aC5jb3MoZykqKGk/aS8yOmgpLG89TWF0aC5jb3MoZykqaCxzPU1hdGguc2luKGcpKmgsZj1NYXRoLnNpbihnKSooaT9pLzI6aCksZS5tb3ZlVG8obi1kLHItcyksZS5saW5lVG8obitkLHIrcyksZS5tb3ZlVG8obitmLHItbyksZS5saW5lVG8obi1mLHIrbyksZys9aXQsZD1NYXRoLmNvcyhnKSooaT9pLzI6aCksbz1NYXRoLmNvcyhnKSpoLHM9TWF0aC5zaW4oZykqaCxmPU1hdGguc2luKGcpKihpP2kvMjpoKSxlLm1vdmVUbyhuLWQsci1zKSxlLmxpbmVUbyhuK2QscitzKSxlLm1vdmVUbyhuK2Ysci1vKSxlLmxpbmVUbyhuLWYscitvKTticmVhaztjYXNlYGxpbmVgOm89aT9pLzI6TWF0aC5jb3MoZykqaCxzPU1hdGguc2luKGcpKmgsZS5tb3ZlVG8obi1vLHItcyksZS5saW5lVG8obitvLHIrcyk7YnJlYWs7Y2FzZWBkYXNoYDplLm1vdmVUbyhuLHIpLGUubGluZVRvKG4rTWF0aC5jb3MoZykqKGk/aS8yOmgpLHIrTWF0aC5zaW4oZykqaCk7YnJlYWs7Y2FzZSExOmUuY2xvc2VQYXRoKCl9ZS5maWxsKCksdC5ib3JkZXJXaWR0aD4wJiZlLnN0cm9rZSgpfX1mdW5jdGlvbiBHKGUsdCxuKXtyZXR1cm4gbnx8PS41LCF0fHxlJiZlLng+dC5sZWZ0LW4mJmUueDx0LnJpZ2h0K24mJmUueT50LnRvcC1uJiZlLnk8dC5ib3R0b20rbn1mdW5jdGlvbiBtbihlLHQpe2Uuc2F2ZSgpLGUuYmVnaW5QYXRoKCksZS5yZWN0KHQubGVmdCx0LnRvcCx0LnJpZ2h0LXQubGVmdCx0LmJvdHRvbS10LnRvcCksZS5jbGlwKCl9ZnVuY3Rpb24gaG4oZSl7ZS5yZXN0b3JlKCl9ZnVuY3Rpb24gZ24oZSx0LG4scixpKXtpZighdClyZXR1cm4gZS5saW5lVG8obi54LG4ueSk7aWYoaT09PWBtaWRkbGVgKXtsZXQgcj0odC54K24ueCkvMjtlLmxpbmVUbyhyLHQueSksZS5saW5lVG8ocixuLnkpfWVsc2UgaT09PWBhZnRlcmA9PSEhcj9lLmxpbmVUbyhuLngsdC55KTplLmxpbmVUbyh0Lngsbi55KTtlLmxpbmVUbyhuLngsbi55KX1mdW5jdGlvbiBfbihlLHQsbixyKXtpZighdClyZXR1cm4gZS5saW5lVG8obi54LG4ueSk7ZS5iZXppZXJDdXJ2ZVRvKHI/dC5jcDF4OnQuY3AyeCxyP3QuY3AxeTp0LmNwMnkscj9uLmNwMng6bi5jcDF4LHI/bi5jcDJ5Om4uY3AxeSxuLngsbi55KX1mdW5jdGlvbiB2bihlLHQpe3QudHJhbnNsYXRpb24mJmUudHJhbnNsYXRlKHQudHJhbnNsYXRpb25bMF0sdC50cmFuc2xhdGlvblsxXSksayh0LnJvdGF0aW9uKXx8ZS5yb3RhdGUodC5yb3RhdGlvbiksdC5jb2xvciYmKGUuZmlsbFN0eWxlPXQuY29sb3IpLHQudGV4dEFsaWduJiYoZS50ZXh0QWxpZ249dC50ZXh0QWxpZ24pLHQudGV4dEJhc2VsaW5lJiYoZS50ZXh0QmFzZWxpbmU9dC50ZXh0QmFzZWxpbmUpfWZ1bmN0aW9uIHluKGUsdCxuLHIsaSl7aWYoaS5zdHJpa2V0aHJvdWdofHxpLnVuZGVybGluZSl7bGV0IGE9ZS5tZWFzdXJlVGV4dChyKSxvPXQtYS5hY3R1YWxCb3VuZGluZ0JveExlZnQscz10K2EuYWN0dWFsQm91bmRpbmdCb3hSaWdodCxjPW4tYS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCxsPW4rYS5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQsdT1pLnN0cmlrZXRocm91Z2g/KGMrbCkvMjpsO2Uuc3Ryb2tlU3R5bGU9ZS5maWxsU3R5bGUsZS5iZWdpblBhdGgoKSxlLmxpbmVXaWR0aD1pLmRlY29yYXRpb25XaWR0aHx8MixlLm1vdmVUbyhvLHUpLGUubGluZVRvKHMsdSksZS5zdHJva2UoKX19ZnVuY3Rpb24gYm4oZSx0KXtsZXQgbj1lLmZpbGxTdHlsZTtlLmZpbGxTdHlsZT10LmNvbG9yLGUuZmlsbFJlY3QodC5sZWZ0LHQudG9wLHQud2lkdGgsdC5oZWlnaHQpLGUuZmlsbFN0eWxlPW59ZnVuY3Rpb24geG4oZSx0LG4scixpLGE9e30pe2xldCBvPUEodCk/dDpbdF0scz1hLnN0cm9rZVdpZHRoPjAmJmEuc3Ryb2tlQ29sb3IhPT1gYCxjLGw7Zm9yKGUuc2F2ZSgpLGUuZm9udD1pLnN0cmluZyx2bihlLGEpLGM9MDtjPG8ubGVuZ3RoOysrYylsPW9bY10sYS5iYWNrZHJvcCYmYm4oZSxhLmJhY2tkcm9wKSxzJiYoYS5zdHJva2VDb2xvciYmKGUuc3Ryb2tlU3R5bGU9YS5zdHJva2VDb2xvciksayhhLnN0cm9rZVdpZHRoKXx8KGUubGluZVdpZHRoPWEuc3Ryb2tlV2lkdGgpLGUuc3Ryb2tlVGV4dChsLG4scixhLm1heFdpZHRoKSksZS5maWxsVGV4dChsLG4scixhLm1heFdpZHRoKSx5bihlLG4scixsLGEpLHIrPU51bWJlcihpLmxpbmVIZWlnaHQpO2UucmVzdG9yZSgpfWZ1bmN0aW9uIFNuKGUsdCl7bGV0e3g6bix5OnIsdzppLGg6YSxyYWRpdXM6b309dDtlLmFyYyhuK28udG9wTGVmdCxyK28udG9wTGVmdCxvLnRvcExlZnQsMS41KkwsTCwhMCksZS5saW5lVG8obixyK2Etby5ib3R0b21MZWZ0KSxlLmFyYyhuK28uYm90dG9tTGVmdCxyK2Etby5ib3R0b21MZWZ0LG8uYm90dG9tTGVmdCxMLHosITApLGUubGluZVRvKG4raS1vLmJvdHRvbVJpZ2h0LHIrYSksZS5hcmMobitpLW8uYm90dG9tUmlnaHQscithLW8uYm90dG9tUmlnaHQsby5ib3R0b21SaWdodCx6LDAsITApLGUubGluZVRvKG4raSxyK28udG9wUmlnaHQpLGUuYXJjKG4raS1vLnRvcFJpZ2h0LHIrby50b3BSaWdodCxvLnRvcFJpZ2h0LDAsLXosITApLGUubGluZVRvKG4rby50b3BMZWZ0LHIpfXZhciBDbj0vXihub3JtYWx8KFxkKyg/OlwuXGQrKT8pKHB4fGVtfCUpPykkLyx3bj0vXihub3JtYWx8aXRhbGljfGluaXRpYWx8aW5oZXJpdHx1bnNldHwob2JsaXF1ZSggLT9bMC05XT9bMC05XWRlZyk/KSkkLztmdW5jdGlvbiBUbihlLHQpe2xldCBuPShgYCtlKS5tYXRjaChDbik7aWYoIW58fG5bMV09PT1gbm9ybWFsYClyZXR1cm4gdCoxLjI7c3dpdGNoKGU9K25bMl0sblszXSl7Y2FzZWBweGA6cmV0dXJuIGU7Y2FzZWAlYDplLz0xMDB9cmV0dXJuIHQqZX12YXIgRW49ZT0+K2V8fDA7ZnVuY3Rpb24gRG4oZSx0KXtsZXQgbj17fSxyPWoodCksaT1yP09iamVjdC5rZXlzKHQpOnQsYT1qKGUpP3I/bj0+UChlW25dLGVbdFtuXV0pOnQ9PmVbdF06KCk9PmU7Zm9yKGxldCBlIG9mIGkpbltlXT1FbihhKGUpKTtyZXR1cm4gbn1mdW5jdGlvbiBPbihlKXtyZXR1cm4gRG4oZSx7dG9wOmB5YCxyaWdodDpgeGAsYm90dG9tOmB5YCxsZWZ0OmB4YH0pfWZ1bmN0aW9uIGtuKGUpe3JldHVybiBEbihlLFtgdG9wTGVmdGAsYHRvcFJpZ2h0YCxgYm90dG9tTGVmdGAsYGJvdHRvbVJpZ2h0YF0pfWZ1bmN0aW9uIEsoZSl7bGV0IHQ9T24oZSk7cmV0dXJuIHQud2lkdGg9dC5sZWZ0K3QucmlnaHQsdC5oZWlnaHQ9dC50b3ArdC5ib3R0b20sdH1mdW5jdGlvbiBxKGUsdCl7ZXx8PXt9LHR8fD1XLmZvbnQ7bGV0IG49UChlLnNpemUsdC5zaXplKTt0eXBlb2Ygbj09YHN0cmluZ2AmJihuPXBhcnNlSW50KG4sMTApKTtsZXQgcj1QKGUuc3R5bGUsdC5zdHlsZSk7ciYmIShgYCtyKS5tYXRjaCh3bikmJihjb25zb2xlLndhcm4oYEludmFsaWQgZm9udCBzdHlsZSBzcGVjaWZpZWQ6ICJgK3IrYCJgKSxyPXZvaWQgMCk7bGV0IGk9e2ZhbWlseTpQKGUuZmFtaWx5LHQuZmFtaWx5KSxsaW5lSGVpZ2h0OlRuKFAoZS5saW5lSGVpZ2h0LHQubGluZUhlaWdodCksbiksc2l6ZTpuLHN0eWxlOnIsd2VpZ2h0OlAoZS53ZWlnaHQsdC53ZWlnaHQpLHN0cmluZzpgYH07cmV0dXJuIGkuc3RyaW5nPXNuKGkpLGl9ZnVuY3Rpb24gQW4oZSx0LG4scil7bGV0IGk9ITAsYSxvLHM7Zm9yKGE9MCxvPWUubGVuZ3RoO2E8bzsrK2EpaWYocz1lW2FdLHMhPT12b2lkIDAmJih0IT09dm9pZCAwJiZ0eXBlb2Ygcz09YGZ1bmN0aW9uYCYmKHM9cyh0KSxpPSExKSxuIT09dm9pZCAwJiZBKHMpJiYocz1zW24lcy5sZW5ndGhdLGk9ITEpLHMhPT12b2lkIDApKXJldHVybiByJiYhaSYmKHIuY2FjaGVhYmxlPSExKSxzfWZ1bmN0aW9uIGpuKGUsdCxuKXtsZXR7bWluOnIsbWF4Oml9PWUsYT1SZSh0LChpLXIpLzIpLG89KGUsdCk9Pm4mJmU9PT0wPzA6ZSt0O3JldHVybnttaW46byhyLC1NYXRoLmFicyhhKSksbWF4Om8oaSxhKX19ZnVuY3Rpb24gTW4oZSx0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGUpLHQpfWZ1bmN0aW9uIE5uKGUsdD1bYGBdLG4scixpPSgpPT5lWzBdKXtsZXQgYT1ufHxlO3JldHVybiByPT09dm9pZCAwJiYocj1ZbihgX2ZhbGxiYWNrYCxlKSksbmV3IFByb3h5KHtbU3ltYm9sLnRvU3RyaW5nVGFnXTpgT2JqZWN0YCxfY2FjaGVhYmxlOiEwLF9zY29wZXM6ZSxfcm9vdFNjb3BlczphLF9mYWxsYmFjazpyLF9nZXRUYXJnZXQ6aSxvdmVycmlkZTpuPT5ObihbbiwuLi5lXSx0LGEscil9LHtkZWxldGVQcm9wZXJ0eSh0LG4pe3JldHVybiBkZWxldGUgdFtuXSxkZWxldGUgdC5fa2V5cyxkZWxldGUgZVswXVtuXSwhMH0sZ2V0KG4scil7cmV0dXJuIFJuKG4sciwoKT0+Sm4ocix0LGUsbikpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KXtyZXR1cm4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5fc2NvcGVzWzBdLHQpfSxnZXRQcm90b3R5cGVPZigpe3JldHVybiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKGVbMF0pfSxoYXMoZSx0KXtyZXR1cm4gWG4oZSkuaW5jbHVkZXModCl9LG93bktleXMoZSl7cmV0dXJuIFhuKGUpfSxzZXQoZSx0LG4pe2xldCByPWUuX3N0b3JhZ2V8fD1pKCk7cmV0dXJuIGVbdF09clt0XT1uLGRlbGV0ZSBlLl9rZXlzLCEwfX0pfWZ1bmN0aW9uIFBuKGUsdCxuLHIpe2xldCBpPXtfY2FjaGVhYmxlOiExLF9wcm94eTplLF9jb250ZXh0OnQsX3N1YlByb3h5Om4sX3N0YWNrOm5ldyBTZXQsX2Rlc2NyaXB0b3JzOkZuKGUsciksc2V0Q29udGV4dDp0PT5QbihlLHQsbixyKSxvdmVycmlkZTppPT5QbihlLm92ZXJyaWRlKGkpLHQsbixyKX07cmV0dXJuIG5ldyBQcm94eShpLHtkZWxldGVQcm9wZXJ0eSh0LG4pe3JldHVybiBkZWxldGUgdFtuXSxkZWxldGUgZVtuXSwhMH0sZ2V0KGUsdCxuKXtyZXR1cm4gUm4oZSx0LCgpPT56bihlLHQsbikpfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtyZXR1cm4gdC5fZGVzY3JpcHRvcnMuYWxsS2V5cz9SZWZsZWN0LmhhcyhlLG4pP3tlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH06dm9pZCAwOlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbil9LGdldFByb3RvdHlwZU9mKCl7cmV0dXJuIFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGhhcyh0LG4pe3JldHVybiBSZWZsZWN0LmhhcyhlLG4pfSxvd25LZXlzKCl7cmV0dXJuIFJlZmxlY3Qub3duS2V5cyhlKX0sc2V0KHQsbixyKXtyZXR1cm4gZVtuXT1yLGRlbGV0ZSB0W25dLCEwfX0pfWZ1bmN0aW9uIEZuKGUsdD17c2NyaXB0YWJsZTohMCxpbmRleGFibGU6ITB9KXtsZXR7X3NjcmlwdGFibGU6bj10LnNjcmlwdGFibGUsX2luZGV4YWJsZTpyPXQuaW5kZXhhYmxlLF9hbGxLZXlzOmk9dC5hbGxLZXlzfT1lO3JldHVybnthbGxLZXlzOmksc2NyaXB0YWJsZTpuLGluZGV4YWJsZTpyLGlzU2NyaXB0YWJsZTpRZShuKT9uOigpPT5uLGlzSW5kZXhhYmxlOlFlKHIpP3I6KCk9PnJ9fXZhciBJbj0oZSx0KT0+ZT9lK1hlKHQpOnQsTG49KGUsdCk9PmoodCkmJmUhPT1gYWRhcHRlcnNgJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpPT09bnVsbHx8dC5jb25zdHJ1Y3Rvcj09PU9iamVjdCk7ZnVuY3Rpb24gUm4oZSx0LG4pe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfHx0PT09YGNvbnN0cnVjdG9yYClyZXR1cm4gZVt0XTtsZXQgcj1uKCk7cmV0dXJuIGVbdF09cixyfWZ1bmN0aW9uIHpuKGUsdCxuKXtsZXR7X3Byb3h5OnIsX2NvbnRleHQ6aSxfc3ViUHJveHk6YSxfZGVzY3JpcHRvcnM6b309ZSxzPXJbdF07cmV0dXJuIFFlKHMpJiZvLmlzU2NyaXB0YWJsZSh0KSYmKHM9Qm4odCxzLGUsbikpLEEocykmJnMubGVuZ3RoJiYocz1Wbih0LHMsZSxvLmlzSW5kZXhhYmxlKSksTG4odCxzKSYmKHM9UG4ocyxpLGEmJmFbdF0sbykpLHN9ZnVuY3Rpb24gQm4oZSx0LG4scil7bGV0e19wcm94eTppLF9jb250ZXh0OmEsX3N1YlByb3h5Om8sX3N0YWNrOnN9PW47aWYocy5oYXMoZSkpdGhyb3cgRXJyb3IoYFJlY3Vyc2lvbiBkZXRlY3RlZDogYCtBcnJheS5mcm9tKHMpLmpvaW4oYC0+YCkrYC0+YCtlKTtzLmFkZChlKTtsZXQgYz10KGEsb3x8cik7cmV0dXJuIHMuZGVsZXRlKGUpLExuKGUsYykmJihjPUduKGkuX3Njb3BlcyxpLGUsYykpLGN9ZnVuY3Rpb24gVm4oZSx0LG4scil7bGV0e19wcm94eTppLF9jb250ZXh0OmEsX3N1YlByb3h5Om8sX2Rlc2NyaXB0b3JzOnN9PW47aWYoYS5pbmRleCE9PXZvaWQgMCYmcihlKSlyZXR1cm4gdFthLmluZGV4JXQubGVuZ3RoXTtpZihqKHRbMF0pKXtsZXQgbj10LHI9aS5fc2NvcGVzLmZpbHRlcihlPT5lIT09bik7dD1bXTtmb3IobGV0IGMgb2Ygbil7bGV0IG49R24ocixpLGUsYyk7dC5wdXNoKFBuKG4sYSxvJiZvW2VdLHMpKX19cmV0dXJuIHR9ZnVuY3Rpb24gSG4oZSx0LG4pe3JldHVybiBRZShlKT9lKHQsbik6ZX12YXIgVW49KGUsdCk9PmU9PT0hMD90OnR5cGVvZiBlPT1gc3RyaW5nYD9ZZSh0LGUpOnZvaWQgMDtmdW5jdGlvbiBXbihlLHQsbixyLGkpe2ZvcihsZXQgYSBvZiB0KXtsZXQgdD1VbihuLGEpO2lmKHQpe2UuYWRkKHQpO2xldCBhPUhuKHQuX2ZhbGxiYWNrLG4saSk7aWYoYSE9PXZvaWQgMCYmYSE9PW4mJmEhPT1yKXJldHVybiBhfWVsc2UgaWYodD09PSExJiZyIT09dm9pZCAwJiZuIT09cilyZXR1cm4gbnVsbH1yZXR1cm4hMX1mdW5jdGlvbiBHbihlLHQsbixyKXtsZXQgaT10Ll9yb290U2NvcGVzLGE9SG4odC5fZmFsbGJhY2ssbixyKSxvPVsuLi5lLC4uLmldLHM9bmV3IFNldDtzLmFkZChyKTtsZXQgYz1LbihzLG8sbixhfHxuLHIpO3JldHVybiBjPT09bnVsbHx8YSE9PXZvaWQgMCYmYSE9PW4mJihjPUtuKHMsbyxhLGMsciksYz09PW51bGwpPyExOk5uKEFycmF5LmZyb20ocyksW2BgXSxpLGEsKCk9PnFuKHQsbixyKSl9ZnVuY3Rpb24gS24oZSx0LG4scixpKXtmb3IoO247KW49V24oZSx0LG4scixpKTtyZXR1cm4gbn1mdW5jdGlvbiBxbihlLHQsbil7bGV0IHI9ZS5fZ2V0VGFyZ2V0KCk7dCBpbiByfHwoclt0XT17fSk7bGV0IGk9clt0XTtyZXR1cm4gQShpKSYmaihuKT9uOml8fHt9fWZ1bmN0aW9uIEpuKGUsdCxuLHIpe2xldCBpO2ZvcihsZXQgYSBvZiB0KWlmKGk9WW4oSW4oYSxlKSxuKSxpIT09dm9pZCAwKXJldHVybiBMbihlLGkpP0duKG4scixlLGkpOml9ZnVuY3Rpb24gWW4oZSx0KXtmb3IobGV0IG4gb2YgdCl7aWYoIW4pY29udGludWU7bGV0IHQ9bltlXTtpZih0IT09dm9pZCAwKXJldHVybiB0fX1mdW5jdGlvbiBYbihlKXtsZXQgdD1lLl9rZXlzO3JldHVybiB0fHw9ZS5fa2V5cz1abihlLl9zY29wZXMpLHR9ZnVuY3Rpb24gWm4oZSl7bGV0IHQ9bmV3IFNldDtmb3IobGV0IG4gb2YgZSlmb3IobGV0IGUgb2YgT2JqZWN0LmtleXMobikuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoYF9gKSkpdC5hZGQoZSk7cmV0dXJuIEFycmF5LmZyb20odCl9dmFyIFFuPTIqKi01Mnx8MWUtMTQsJG49KGUsdCk9PnQ8ZS5sZW5ndGgmJiFlW3RdLnNraXAmJmVbdF0sZXI9ZT0+ZT09PWB4YD9geWA6YHhgO2Z1bmN0aW9uIHRyKGUsdCxuLHIpe2xldCBpPWUuc2tpcD90OmUsYT10LG89bi5za2lwP3Q6bixzPXZ0KGEsaSksYz12dChvLGEpLGw9cy8ocytjKSx1PWMvKHMrYyk7bD1pc05hTihsKT8wOmwsdT1pc05hTih1KT8wOnU7bGV0IGQ9cipsLGY9cip1O3JldHVybntwcmV2aW91czp7eDphLngtZCooby54LWkueCkseTphLnktZCooby55LWkueSl9LG5leHQ6e3g6YS54K2YqKG8ueC1pLngpLHk6YS55K2YqKG8ueS1pLnkpfX19ZnVuY3Rpb24gbnIoZSx0LG4pe2xldCByPWUubGVuZ3RoLGksYSxvLHMsYyxsPSRuKGUsMCk7Zm9yKGxldCB1PTA7dTxyLTE7Kyt1KWlmKGM9bCxsPSRuKGUsdSsxKSwhKCFjfHwhbCkpe2lmKHN0KHRbdV0sMCxRbikpe25bdV09blt1KzFdPTA7Y29udGludWV9aT1uW3VdL3RbdV0sYT1uW3UrMV0vdFt1XSxzPWkqKjIrYSoqMiwhKHM8PTkpJiYobz0zL01hdGguc3FydChzKSxuW3VdPWkqbyp0W3VdLG5bdSsxXT1hKm8qdFt1XSl9fWZ1bmN0aW9uIHJyKGUsdCxuPWB4YCl7bGV0IHI9ZXIobiksaT1lLmxlbmd0aCxhLG8scyxjPSRuKGUsMCk7Zm9yKGxldCBsPTA7bDxpOysrbCl7aWYobz1zLHM9YyxjPSRuKGUsbCsxKSwhcyljb250aW51ZTtsZXQgaT1zW25dLHU9c1tyXTtvJiYoYT0oaS1vW25dKS8zLHNbYGNwMSR7bn1gXT1pLWEsc1tgY3AxJHtyfWBdPXUtYSp0W2xdKSxjJiYoYT0oY1tuXS1pKS8zLHNbYGNwMiR7bn1gXT1pK2Esc1tgY3AyJHtyfWBdPXUrYSp0W2xdKX19ZnVuY3Rpb24gaXIoZSx0PWB4YCl7bGV0IG49ZXIodCkscj1lLmxlbmd0aCxpPUFycmF5KHIpLmZpbGwoMCksYT1BcnJheShyKSxvLHMsYyxsPSRuKGUsMCk7Zm9yKG89MDtvPHI7KytvKWlmKHM9YyxjPWwsbD0kbihlLG8rMSksYyl7aWYobCl7bGV0IGU9bFt0XS1jW3RdO2lbb109ZT09PTA/MDoobFtuXS1jW25dKS9lfWFbb109cz9sP290KGlbby0xXSk9PT1vdChpW29dKT8oaVtvLTFdK2lbb10pLzI6MDppW28tMV06aVtvXX1ucihlLGksYSkscnIoZSxhLHQpfWZ1bmN0aW9uIGFyKGUsdCxuKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4oZSxuKSx0KX1mdW5jdGlvbiBvcihlLHQpe2xldCBuLHIsaSxhLG8scz1HKGVbMF0sdCk7Zm9yKG49MCxyPWUubGVuZ3RoO248cjsrK24pbz1hLGE9cyxzPW48ci0xJiZHKGVbbisxXSx0KSxhJiYoaT1lW25dLG8mJihpLmNwMXg9YXIoaS5jcDF4LHQubGVmdCx0LnJpZ2h0KSxpLmNwMXk9YXIoaS5jcDF5LHQudG9wLHQuYm90dG9tKSkscyYmKGkuY3AyeD1hcihpLmNwMngsdC5sZWZ0LHQucmlnaHQpLGkuY3AyeT1hcihpLmNwMnksdC50b3AsdC5ib3R0b20pKSl9ZnVuY3Rpb24gc3IoZSx0LG4scixpKXtsZXQgYSxvLHMsYztpZih0LnNwYW5HYXBzJiYoZT1lLmZpbHRlcihlPT4hZS5za2lwKSksdC5jdWJpY0ludGVycG9sYXRpb25Nb2RlPT09YG1vbm90b25lYClpcihlLGkpO2Vsc2V7bGV0IG49cj9lW2UubGVuZ3RoLTFdOmVbMF07Zm9yKGE9MCxvPWUubGVuZ3RoO2E8bzsrK2Epcz1lW2FdLGM9dHIobixzLGVbTWF0aC5taW4oYSsxLG8tKyFyKSVvXSx0LnRlbnNpb24pLHMuY3AxeD1jLnByZXZpb3VzLngscy5jcDF5PWMucHJldmlvdXMueSxzLmNwMng9Yy5uZXh0Lngscy5jcDJ5PWMubmV4dC55LG49c310LmNhcEJlemllclBvaW50cyYmb3IoZSxuKX1mdW5jdGlvbiBjcigpe3JldHVybiB0eXBlb2Ygd2luZG93PGB1YCYmdHlwZW9mIGRvY3VtZW50PGB1YH1mdW5jdGlvbiBscihlKXtsZXQgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJnQudG9TdHJpbmcoKT09PWBbb2JqZWN0IFNoYWRvd1Jvb3RdYCYmKHQ9dC5ob3N0KSx0fWZ1bmN0aW9uIHVyKGUsdCxuKXtsZXQgcjtyZXR1cm4gdHlwZW9mIGU9PWBzdHJpbmdgPyhyPXBhcnNlSW50KGUsMTApLGUuaW5kZXhPZihgJWApIT09LTEmJihyPXIvMTAwKnQucGFyZW50Tm9kZVtuXSkpOnI9ZSxyfXZhciBkcj1lPT5lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpO2Z1bmN0aW9uIGZyKGUsdCl7cmV0dXJuIGRyKGUpLmdldFByb3BlcnR5VmFsdWUodCl9dmFyIHByPVtgdG9wYCxgcmlnaHRgLGBib3R0b21gLGBsZWZ0YF07ZnVuY3Rpb24gbXIoZSx0LG4pe2xldCByPXt9O249bj9gLWArbjpgYDtmb3IobGV0IGk9MDtpPDQ7aSsrKXtsZXQgYT1wcltpXTtyW2FdPXBhcnNlRmxvYXQoZVt0K2AtYCthK25dKXx8MH1yZXR1cm4gci53aWR0aD1yLmxlZnQrci5yaWdodCxyLmhlaWdodD1yLnRvcCtyLmJvdHRvbSxyfXZhciBocj0oZSx0LG4pPT4oZT4wfHx0PjApJiYoIW58fCFuLnNoYWRvd1Jvb3QpO2Z1bmN0aW9uIGdyKGUsdCl7bGV0IG49ZS50b3VjaGVzLHI9biYmbi5sZW5ndGg/blswXTplLHtvZmZzZXRYOmksb2Zmc2V0WTphfT1yLG89ITEscyxjO2lmKGhyKGksYSxlLnRhcmdldCkpcz1pLGM9YTtlbHNle2xldCBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cz1yLmNsaWVudFgtZS5sZWZ0LGM9ci5jbGllbnRZLWUudG9wLG89ITB9cmV0dXJue3g6cyx5OmMsYm94Om99fWZ1bmN0aW9uIF9yKGUsdCl7aWYoYG5hdGl2ZWBpbiBlKXJldHVybiBlO2xldHtjYW52YXM6bixjdXJyZW50RGV2aWNlUGl4ZWxSYXRpbzpyfT10LGk9ZHIobiksYT1pLmJveFNpemluZz09PWBib3JkZXItYm94YCxvPW1yKGksYHBhZGRpbmdgKSxzPW1yKGksYGJvcmRlcmAsYHdpZHRoYCkse3g6Yyx5OmwsYm94OnV9PWdyKGUsbiksZD1vLmxlZnQrKHUmJnMubGVmdCksZj1vLnRvcCsodSYmcy50b3ApLHt3aWR0aDpwLGhlaWdodDptfT10O3JldHVybiBhJiYocC09by53aWR0aCtzLndpZHRoLG0tPW8uaGVpZ2h0K3MuaGVpZ2h0KSx7eDpNYXRoLnJvdW5kKChjLWQpL3Aqbi53aWR0aC9yKSx5Ok1hdGgucm91bmQoKGwtZikvbSpuLmhlaWdodC9yKX19ZnVuY3Rpb24gdnIoZSx0LG4pe2xldCByLGk7aWYodD09PXZvaWQgMHx8bj09PXZvaWQgMCl7bGV0IGE9ZSYmbHIoZSk7aWYoIWEpdD1lLmNsaWVudFdpZHRoLG49ZS5jbGllbnRIZWlnaHQ7ZWxzZXtsZXQgZT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89ZHIoYSkscz1tcihvLGBib3JkZXJgLGB3aWR0aGApLGM9bXIobyxgcGFkZGluZ2ApO3Q9ZS53aWR0aC1jLndpZHRoLXMud2lkdGgsbj1lLmhlaWdodC1jLmhlaWdodC1zLmhlaWdodCxyPXVyKG8ubWF4V2lkdGgsYSxgY2xpZW50V2lkdGhgKSxpPXVyKG8ubWF4SGVpZ2h0LGEsYGNsaWVudEhlaWdodGApfX1yZXR1cm57d2lkdGg6dCxoZWlnaHQ6bixtYXhXaWR0aDpyfHxudCxtYXhIZWlnaHQ6aXx8bnR9fXZhciB5cj1lPT5NYXRoLnJvdW5kKGUqMTApLzEwO2Z1bmN0aW9uIGJyKGUsdCxuLHIpe2xldCBpPWRyKGUpLGE9bXIoaSxgbWFyZ2luYCksbz11cihpLm1heFdpZHRoLGUsYGNsaWVudFdpZHRoYCl8fG50LHM9dXIoaS5tYXhIZWlnaHQsZSxgY2xpZW50SGVpZ2h0YCl8fG50LGM9dnIoZSx0LG4pLHt3aWR0aDpsLGhlaWdodDp1fT1jO2lmKGkuYm94U2l6aW5nPT09YGNvbnRlbnQtYm94YCl7bGV0IGU9bXIoaSxgYm9yZGVyYCxgd2lkdGhgKSx0PW1yKGksYHBhZGRpbmdgKTtsLT10LndpZHRoK2Uud2lkdGgsdS09dC5oZWlnaHQrZS5oZWlnaHR9cmV0dXJuIGw9TWF0aC5tYXgoMCxsLWEud2lkdGgpLHU9TWF0aC5tYXgoMCxyP2wvcjp1LWEuaGVpZ2h0KSxsPXlyKE1hdGgubWluKGwsbyxjLm1heFdpZHRoKSksdT15cihNYXRoLm1pbih1LHMsYy5tYXhIZWlnaHQpKSxsJiYhdSYmKHU9eXIobC8yKSksKHQhPT12b2lkIDB8fG4hPT12b2lkIDApJiZyJiZjLmhlaWdodCYmdT5jLmhlaWdodCYmKHU9Yy5oZWlnaHQsbD15cihNYXRoLmZsb29yKHUqcikpKSx7d2lkdGg6bCxoZWlnaHQ6dX19ZnVuY3Rpb24geHIoZSx0LG4pe2xldCByPXR8fDEsaT15cihlLmhlaWdodCpyKSxhPXlyKGUud2lkdGgqcik7ZS5oZWlnaHQ9eXIoZS5oZWlnaHQpLGUud2lkdGg9eXIoZS53aWR0aCk7bGV0IG89ZS5jYW52YXM7cmV0dXJuIG8uc3R5bGUmJihufHwhby5zdHlsZS5oZWlnaHQmJiFvLnN0eWxlLndpZHRoKSYmKG8uc3R5bGUuaGVpZ2h0PWAke2UuaGVpZ2h0fXB4YCxvLnN0eWxlLndpZHRoPWAke2Uud2lkdGh9cHhgKSxlLmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvIT09cnx8by5oZWlnaHQhPT1pfHxvLndpZHRoIT09YT8oZS5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbz1yLG8uaGVpZ2h0PWksby53aWR0aD1hLGUuY3R4LnNldFRyYW5zZm9ybShyLDAsMCxyLDAsMCksITApOiExfXZhciBTcj1mdW5jdGlvbigpe2xldCBlPSExO3RyeXtsZXQgdD17Z2V0IHBhc3NpdmUoKXtyZXR1cm4gZT0hMCwhMX19O2NyKCkmJih3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihgdGVzdGAsbnVsbCx0KSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihgdGVzdGAsbnVsbCx0KSl9Y2F0Y2h7fXJldHVybiBlfSgpO2Z1bmN0aW9uIENyKGUsdCl7bGV0IG49ZnIoZSx0KSxyPW4mJm4ubWF0Y2goL14oXGQrKShcLlxkKyk/cHgkLyk7cmV0dXJuIHI/K3JbMV06dm9pZCAwfWZ1bmN0aW9uIHdyKGUsdCxuLHIpe3JldHVybnt4OmUueCtuKih0LngtZS54KSx5OmUueStuKih0LnktZS55KX19ZnVuY3Rpb24gVHIoZSx0LG4scil7cmV0dXJue3g6ZS54K24qKHQueC1lLngpLHk6cj09PWBtaWRkbGVgP248LjU/ZS55OnQueTpyPT09YGFmdGVyYD9uPDE/ZS55OnQueTpuPjA/dC55OmUueX19ZnVuY3Rpb24gRXIoZSx0LG4scil7bGV0IGk9e3g6ZS5jcDJ4LHk6ZS5jcDJ5fSxhPXt4OnQuY3AxeCx5OnQuY3AxeX0sbz13cihlLGksbikscz13cihpLGEsbiksYz13cihhLHQsbik7cmV0dXJuIHdyKHdyKG8scyxuKSx3cihzLGMsbiksbil9dmFyIERyPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3gobil7cmV0dXJuIGUrZSt0LW59LHNldFdpZHRoKGUpe3Q9ZX0sdGV4dEFsaWduKGUpe3JldHVybiBlPT09YGNlbnRlcmA/ZTplPT09YHJpZ2h0YD9gbGVmdGA6YHJpZ2h0YH0seFBsdXMoZSx0KXtyZXR1cm4gZS10fSxsZWZ0Rm9yTHRyKGUsdCl7cmV0dXJuIGUtdH19fSxPcj1mdW5jdGlvbigpe3JldHVybnt4KGUpe3JldHVybiBlfSxzZXRXaWR0aChlKXt9LHRleHRBbGlnbihlKXtyZXR1cm4gZX0seFBsdXMoZSx0KXtyZXR1cm4gZSt0fSxsZWZ0Rm9yTHRyKGUsdCl7cmV0dXJuIGV9fX07ZnVuY3Rpb24ga3IoZSx0LG4pe3JldHVybiBlP0RyKHQsbik6T3IoKX1mdW5jdGlvbiBBcihlLHQpe2xldCBuLHI7KHQ9PT1gbHRyYHx8dD09PWBydGxgKSYmKG49ZS5jYW52YXMuc3R5bGUscj1bbi5nZXRQcm9wZXJ0eVZhbHVlKGBkaXJlY3Rpb25gKSxuLmdldFByb3BlcnR5UHJpb3JpdHkoYGRpcmVjdGlvbmApXSxuLnNldFByb3BlcnR5KGBkaXJlY3Rpb25gLHQsYGltcG9ydGFudGApLGUucHJldlRleHREaXJlY3Rpb249cil9ZnVuY3Rpb24ganIoZSx0KXt0IT09dm9pZCAwJiYoZGVsZXRlIGUucHJldlRleHREaXJlY3Rpb24sZS5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoYGRpcmVjdGlvbmAsdFswXSx0WzFdKSl9ZnVuY3Rpb24gTXIoZSl7cmV0dXJuIGU9PT1gYW5nbGVgP3tiZXR3ZWVuOmJ0LGNvbXBhcmU6eXQsbm9ybWFsaXplOlZ9OntiZXR3ZWVuOlN0LGNvbXBhcmU6KGUsdCk9PmUtdCxub3JtYWxpemU6ZT0+ZX19ZnVuY3Rpb24gTnIoe3N0YXJ0OmUsZW5kOnQsY291bnQ6bixsb29wOnIsc3R5bGU6aX0pe3JldHVybntzdGFydDplJW4sZW5kOnQlbixsb29wOnImJih0LWUrMSklbj09PTAsc3R5bGU6aX19ZnVuY3Rpb24gUHIoZSx0LG4pe2xldHtwcm9wZXJ0eTpyLHN0YXJ0OmksZW5kOmF9PW4se2JldHdlZW46byxub3JtYWxpemU6c309TXIociksYz10Lmxlbmd0aCx7c3RhcnQ6bCxlbmQ6dSxsb29wOmR9PWUsZixwO2lmKGQpe2ZvcihsKz1jLHUrPWMsZj0wLHA9YztmPHAmJm8ocyh0W2wlY11bcl0pLGksYSk7KytmKWwtLSx1LS07bCU9Yyx1JT1jfXJldHVybiB1PGwmJih1Kz1jKSx7c3RhcnQ6bCxlbmQ6dSxsb29wOmQsc3R5bGU6ZS5zdHlsZX19ZnVuY3Rpb24gRnIoZSx0LG4pe2lmKCFuKXJldHVybltlXTtsZXR7cHJvcGVydHk6cixzdGFydDppLGVuZDphfT1uLG89dC5sZW5ndGgse2NvbXBhcmU6cyxiZXR3ZWVuOmMsbm9ybWFsaXplOmx9PU1yKHIpLHtzdGFydDp1LGVuZDpkLGxvb3A6ZixzdHlsZTpwfT1QcihlLHQsbiksbT1bXSxoPSExLGc9bnVsbCxfLHYseSxiPSgpPT5jKGkseSxfKSYmcyhpLHkpIT09MCx4PSgpPT5zKGEsXyk9PT0wfHxjKGEseSxfKSxTPSgpPT5ofHxiKCksQz0oKT0+IWh8fHgoKTtmb3IobGV0IGU9dSxuPXU7ZTw9ZDsrK2Updj10W2Ulb10sIXYuc2tpcCYmKF89bCh2W3JdKSxfIT09eSYmKGg9YyhfLGksYSksZz09PW51bGwmJlMoKSYmKGc9cyhfLGkpPT09MD9lOm4pLGchPT1udWxsJiZDKCkmJihtLnB1c2goTnIoe3N0YXJ0OmcsZW5kOmUsbG9vcDpmLGNvdW50Om8sc3R5bGU6cH0pKSxnPW51bGwpLG49ZSx5PV8pKTtyZXR1cm4gZyE9PW51bGwmJm0ucHVzaChOcih7c3RhcnQ6ZyxlbmQ6ZCxsb29wOmYsY291bnQ6byxzdHlsZTpwfSkpLG19ZnVuY3Rpb24gSXIoZSx0KXtsZXQgbj1bXSxyPWUuc2VnbWVudHM7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2xldCBhPUZyKHJbaV0sZS5wb2ludHMsdCk7YS5sZW5ndGgmJm4ucHVzaCguLi5hKX1yZXR1cm4gbn1mdW5jdGlvbiBMcihlLHQsbixyKXtsZXQgaT0wLGE9dC0xO2lmKG4mJiFyKWZvcig7aTx0JiYhZVtpXS5za2lwOylpKys7Zm9yKDtpPHQmJmVbaV0uc2tpcDspaSsrO2ZvcihpJT10LG4mJihhKz1pKTthPmkmJmVbYSV0XS5za2lwOylhLS07cmV0dXJuIGElPXQse3N0YXJ0OmksZW5kOmF9fWZ1bmN0aW9uIFJyKGUsdCxuLHIpe2xldCBpPWUubGVuZ3RoLGE9W10sbz10LHM9ZVt0XSxjO2ZvcihjPXQrMTtjPD1uOysrYyl7bGV0IG49ZVtjJWldO24uc2tpcHx8bi5zdG9wP3Muc2tpcHx8KHI9ITEsYS5wdXNoKHtzdGFydDp0JWksZW5kOihjLTEpJWksbG9vcDpyfSksdD1vPW4uc3RvcD9jOm51bGwpOihvPWMscy5za2lwJiYodD1jKSkscz1ufXJldHVybiBvIT09bnVsbCYmYS5wdXNoKHtzdGFydDp0JWksZW5kOm8laSxsb29wOnJ9KSxhfWZ1bmN0aW9uIHpyKGUsdCl7bGV0IG49ZS5wb2ludHMscj1lLm9wdGlvbnMuc3BhbkdhcHMsaT1uLmxlbmd0aDtpZighaSlyZXR1cm5bXTtsZXQgYT0hIWUuX2xvb3Ase3N0YXJ0Om8sZW5kOnN9PUxyKG4saSxhLHIpO3JldHVybiByPT09ITA/QnIoZSxbe3N0YXJ0Om8sZW5kOnMsbG9vcDphfV0sbix0KTpCcihlLFJyKG4sbyxzPG8/cytpOnMsISFlLl9mdWxsTG9vcCYmbz09PTAmJnM9PT1pLTEpLG4sdCl9ZnVuY3Rpb24gQnIoZSx0LG4scil7cmV0dXJuIXJ8fCFyLnNldENvbnRleHR8fCFuP3Q6VnIoZSx0LG4scil9ZnVuY3Rpb24gVnIoZSx0LG4scil7bGV0IGk9ZS5fY2hhcnQuZ2V0Q29udGV4dCgpLGE9SHIoZS5vcHRpb25zKSx7X2RhdGFzZXRJbmRleDpvLG9wdGlvbnM6e3NwYW5HYXBzOnN9fT1lLGM9bi5sZW5ndGgsbD1bXSx1PWEsZD10WzBdLnN0YXJ0LGY9ZDtmdW5jdGlvbiBwKGUsdCxyLGkpe2xldCBhPXM/LTE6MTtpZihlIT09dCl7Zm9yKGUrPWM7bltlJWNdLnNraXA7KWUtPWE7Zm9yKDtuW3QlY10uc2tpcDspdCs9YTtlJWMhPT10JWMmJihsLnB1c2goe3N0YXJ0OmUlYyxlbmQ6dCVjLGxvb3A6cixzdHlsZTppfSksdT1pLGQ9dCVjKX19Zm9yKGxldCBlIG9mIHQpe2Q9cz9kOmUuc3RhcnQ7bGV0IHQ9bltkJWNdLGE7Zm9yKGY9ZCsxO2Y8PWUuZW5kO2YrKyl7bGV0IHM9bltmJWNdO2E9SHIoci5zZXRDb250ZXh0KE1uKGkse3R5cGU6YHNlZ21lbnRgLHAwOnQscDE6cyxwMERhdGFJbmRleDooZi0xKSVjLHAxRGF0YUluZGV4OmYlYyxkYXRhc2V0SW5kZXg6b30pKSksVXIoYSx1KSYmcChkLGYtMSxlLmxvb3AsdSksdD1zLHU9YX1kPGYtMSYmcChkLGYtMSxlLmxvb3AsdSl9cmV0dXJuIGx9ZnVuY3Rpb24gSHIoZSl7cmV0dXJue2JhY2tncm91bmRDb2xvcjplLmJhY2tncm91bmRDb2xvcixib3JkZXJDYXBTdHlsZTplLmJvcmRlckNhcFN0eWxlLGJvcmRlckRhc2g6ZS5ib3JkZXJEYXNoLGJvcmRlckRhc2hPZmZzZXQ6ZS5ib3JkZXJEYXNoT2Zmc2V0LGJvcmRlckpvaW5TdHlsZTplLmJvcmRlckpvaW5TdHlsZSxib3JkZXJXaWR0aDplLmJvcmRlcldpZHRoLGJvcmRlckNvbG9yOmUuYm9yZGVyQ29sb3J9fWZ1bmN0aW9uIFVyKGUsdCl7aWYoIXQpcmV0dXJuITE7bGV0IG49W10scj1mdW5jdGlvbihlLHQpe3JldHVybiBIdCh0KT8obi5pbmNsdWRlcyh0KXx8bi5wdXNoKHQpLG4uaW5kZXhPZih0KSk6dH07cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUscikhPT1KU09OLnN0cmluZ2lmeSh0LHIpfWZ1bmN0aW9uIFdyKGUsdCxuKXtyZXR1cm4gZS5vcHRpb25zLmNsaXA/ZVtuXTp0W25dfWZ1bmN0aW9uIEdyKGUsdCl7bGV0e3hTY2FsZTpuLHlTY2FsZTpyfT1lO3JldHVybiBuJiZyP3tsZWZ0OldyKG4sdCxgbGVmdGApLHJpZ2h0OldyKG4sdCxgcmlnaHRgKSx0b3A6V3Iocix0LGB0b3BgKSxib3R0b206V3Iocix0LGBib3R0b21gKX06dH1mdW5jdGlvbiBLcihlLHQpe2xldCBuPXQuX2NsaXA7aWYobi5kaXNhYmxlZClyZXR1cm4hMTtsZXQgcj1Hcih0LGUuY2hhcnRBcmVhKTtyZXR1cm57bGVmdDpuLmxlZnQ9PT0hMT8wOnIubGVmdC0obi5sZWZ0PT09ITA/MDpuLmxlZnQpLHJpZ2h0Om4ucmlnaHQ9PT0hMT9lLndpZHRoOnIucmlnaHQrKG4ucmlnaHQ9PT0hMD8wOm4ucmlnaHQpLHRvcDpuLnRvcD09PSExPzA6ci50b3AtKG4udG9wPT09ITA/MDpuLnRvcCksYm90dG9tOm4uYm90dG9tPT09ITE/ZS5oZWlnaHQ6ci5ib3R0b20rKG4uYm90dG9tPT09ITA/MDpuLmJvdHRvbSl9fXZhciBKPW5ldyBjbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3JlcXVlc3Q9bnVsbCx0aGlzLl9jaGFydHM9bmV3IE1hcCx0aGlzLl9ydW5uaW5nPSExLHRoaXMuX2xhc3REYXRlPXZvaWQgMH1fbm90aWZ5KGUsdCxuLHIpe2xldCBpPXQubGlzdGVuZXJzW3JdLGE9dC5kdXJhdGlvbjtpLmZvckVhY2gocj0+cih7Y2hhcnQ6ZSxpbml0aWFsOnQuaW5pdGlhbCxudW1TdGVwczphLGN1cnJlbnRTdGVwOk1hdGgubWluKG4tdC5zdGFydCxhKX0pKX1fcmVmcmVzaCgpe3RoaXMuX3JlcXVlc3R8fD0odGhpcy5fcnVubmluZz0hMCxqdC5jYWxsKHdpbmRvdywoKT0+e3RoaXMuX3VwZGF0ZSgpLHRoaXMuX3JlcXVlc3Q9bnVsbCx0aGlzLl9ydW5uaW5nJiZ0aGlzLl9yZWZyZXNoKCl9KSl9X3VwZGF0ZShlPURhdGUubm93KCkpe2xldCB0PTA7dGhpcy5fY2hhcnRzLmZvckVhY2goKG4scik9PntpZighbi5ydW5uaW5nfHwhbi5pdGVtcy5sZW5ndGgpcmV0dXJuO2xldCBpPW4uaXRlbXMsYT1pLmxlbmd0aC0xLG89ITEscztmb3IoO2E+PTA7LS1hKXM9aVthXSxzLl9hY3RpdmU/KHMuX3RvdGFsPm4uZHVyYXRpb24mJihuLmR1cmF0aW9uPXMuX3RvdGFsKSxzLnRpY2soZSksbz0hMCk6KGlbYV09aVtpLmxlbmd0aC0xXSxpLnBvcCgpKTtvJiYoci5kcmF3KCksdGhpcy5fbm90aWZ5KHIsbixlLGBwcm9ncmVzc2ApKSxpLmxlbmd0aHx8KG4ucnVubmluZz0hMSx0aGlzLl9ub3RpZnkocixuLGUsYGNvbXBsZXRlYCksbi5pbml0aWFsPSExKSx0Kz1pLmxlbmd0aH0pLHRoaXMuX2xhc3REYXRlPWUsdD09PTAmJih0aGlzLl9ydW5uaW5nPSExKX1fZ2V0QW5pbXMoZSl7bGV0IHQ9dGhpcy5fY2hhcnRzLG49dC5nZXQoZSk7cmV0dXJuIG58fChuPXtydW5uaW5nOiExLGluaXRpYWw6ITAsaXRlbXM6W10sbGlzdGVuZXJzOntjb21wbGV0ZTpbXSxwcm9ncmVzczpbXX19LHQuc2V0KGUsbikpLG59bGlzdGVuKGUsdCxuKXt0aGlzLl9nZXRBbmltcyhlKS5saXN0ZW5lcnNbdF0ucHVzaChuKX1hZGQoZSx0KXshdHx8IXQubGVuZ3RofHx0aGlzLl9nZXRBbmltcyhlKS5pdGVtcy5wdXNoKC4uLnQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fZ2V0QW5pbXMoZSkuaXRlbXMubGVuZ3RoPjB9c3RhcnQoZSl7bGV0IHQ9dGhpcy5fY2hhcnRzLmdldChlKTt0JiYodC5ydW5uaW5nPSEwLHQuc3RhcnQ9RGF0ZS5ub3coKSx0LmR1cmF0aW9uPXQuaXRlbXMucmVkdWNlKChlLHQpPT5NYXRoLm1heChlLHQuX2R1cmF0aW9uKSwwKSx0aGlzLl9yZWZyZXNoKCkpfXJ1bm5pbmcoZSl7aWYoIXRoaXMuX3J1bm5pbmcpcmV0dXJuITE7bGV0IHQ9dGhpcy5fY2hhcnRzLmdldChlKTtyZXR1cm4hKCF0fHwhdC5ydW5uaW5nfHwhdC5pdGVtcy5sZW5ndGgpfXN0b3AoZSl7bGV0IHQ9dGhpcy5fY2hhcnRzLmdldChlKTtpZighdHx8IXQuaXRlbXMubGVuZ3RoKXJldHVybjtsZXQgbj10Lml0ZW1zLHI9bi5sZW5ndGgtMTtmb3IoO3I+PTA7LS1yKW5bcl0uY2FuY2VsKCk7dC5pdGVtcz1bXSx0aGlzLl9ub3RpZnkoZSx0LERhdGUubm93KCksYGNvbXBsZXRlYCl9cmVtb3ZlKGUpe3JldHVybiB0aGlzLl9jaGFydHMuZGVsZXRlKGUpfX0scXI9YHRyYW5zcGFyZW50YCxKcj17Ym9vbGVhbihlLHQsbil7cmV0dXJuIG4+LjU/dDplfSxjb2xvcihlLHQsbil7bGV0IHI9VXQoZXx8cXIpLGk9ci52YWxpZCYmVXQodHx8cXIpO3JldHVybiBpJiZpLnZhbGlkP2kubWl4KHIsbikuaGV4U3RyaW5nKCk6dH0sbnVtYmVyKGUsdCxuKXtyZXR1cm4gZSsodC1lKSpufX0sWXI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4scil7bGV0IGk9dFtuXTtyPUFuKFtlLnRvLHIsaSxlLmZyb21dKTtsZXQgYT1BbihbZS5mcm9tLGkscl0pO3RoaXMuX2FjdGl2ZT0hMCx0aGlzLl9mbj1lLmZufHxKcltlLnR5cGV8fHR5cGVvZiBhXSx0aGlzLl9lYXNpbmc9VnRbZS5lYXNpbmddfHxWdC5saW5lYXIsdGhpcy5fc3RhcnQ9TWF0aC5mbG9vcihEYXRlLm5vdygpKyhlLmRlbGF5fHwwKSksdGhpcy5fZHVyYXRpb249dGhpcy5fdG90YWw9TWF0aC5mbG9vcihlLmR1cmF0aW9uKSx0aGlzLl9sb29wPSEhZS5sb29wLHRoaXMuX3RhcmdldD10LHRoaXMuX3Byb3A9bix0aGlzLl9mcm9tPWEsdGhpcy5fdG89cix0aGlzLl9wcm9taXNlcz12b2lkIDB9YWN0aXZlKCl7cmV0dXJuIHRoaXMuX2FjdGl2ZX11cGRhdGUoZSx0LG4pe2lmKHRoaXMuX2FjdGl2ZSl7dGhpcy5fbm90aWZ5KCExKTtsZXQgcj10aGlzLl90YXJnZXRbdGhpcy5fcHJvcF0saT1uLXRoaXMuX3N0YXJ0LGE9dGhpcy5fZHVyYXRpb24taTt0aGlzLl9zdGFydD1uLHRoaXMuX2R1cmF0aW9uPU1hdGguZmxvb3IoTWF0aC5tYXgoYSxlLmR1cmF0aW9uKSksdGhpcy5fdG90YWwrPWksdGhpcy5fbG9vcD0hIWUubG9vcCx0aGlzLl90bz1BbihbZS50byx0LHIsZS5mcm9tXSksdGhpcy5fZnJvbT1BbihbZS5mcm9tLHIsdF0pfX1jYW5jZWwoKXt0aGlzLl9hY3RpdmUmJih0aGlzLnRpY2soRGF0ZS5ub3coKSksdGhpcy5fYWN0aXZlPSExLHRoaXMuX25vdGlmeSghMSkpfXRpY2soZSl7bGV0IHQ9ZS10aGlzLl9zdGFydCxuPXRoaXMuX2R1cmF0aW9uLHI9dGhpcy5fcHJvcCxpPXRoaXMuX2Zyb20sYT10aGlzLl9sb29wLG89dGhpcy5fdG8scztpZih0aGlzLl9hY3RpdmU9aSE9PW8mJihhfHx0PG4pLCF0aGlzLl9hY3RpdmUpe3RoaXMuX3RhcmdldFtyXT1vLHRoaXMuX25vdGlmeSghMCk7cmV0dXJufWlmKHQ8MCl7dGhpcy5fdGFyZ2V0W3JdPWk7cmV0dXJufXM9dC9uJTIscz1hJiZzPjE/Mi1zOnMscz10aGlzLl9lYXNpbmcoTWF0aC5taW4oMSxNYXRoLm1heCgwLHMpKSksdGhpcy5fdGFyZ2V0W3JdPXRoaXMuX2ZuKGksbyxzKX13YWl0KCl7bGV0IGU9dGhpcy5fcHJvbWlzZXN8fD1bXTtyZXR1cm4gbmV3IFByb21pc2UoKHQsbik9PntlLnB1c2goe3Jlczp0LHJlajpufSl9KX1fbm90aWZ5KGUpe2xldCB0PWU/YHJlc2A6YHJlamAsbj10aGlzLl9wcm9taXNlc3x8W107Zm9yKGxldCBlPTA7ZTxuLmxlbmd0aDtlKyspbltlXVt0XSgpfX0sWHI9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLl9jaGFydD1lLHRoaXMuX3Byb3BlcnRpZXM9bmV3IE1hcCx0aGlzLmNvbmZpZ3VyZSh0KX1jb25maWd1cmUoZSl7aWYoIWooZSkpcmV0dXJuO2xldCB0PU9iamVjdC5rZXlzKFcuYW5pbWF0aW9uKSxuPXRoaXMuX3Byb3BlcnRpZXM7T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkuZm9yRWFjaChyPT57bGV0IGk9ZVtyXTtpZighaihpKSlyZXR1cm47bGV0IGE9e307Zm9yKGxldCBlIG9mIHQpYVtlXT1pW2VdOyhBKGkucHJvcGVydGllcykmJmkucHJvcGVydGllc3x8W3JdKS5mb3JFYWNoKGU9PnsoZT09PXJ8fCFuLmhhcyhlKSkmJm4uc2V0KGUsYSl9KX0pfV9hbmltYXRlT3B0aW9ucyhlLHQpe2xldCBuPXQub3B0aW9ucyxyPVFyKGUsbik7aWYoIXIpcmV0dXJuW107bGV0IGk9dGhpcy5fY3JlYXRlQW5pbWF0aW9ucyhyLG4pO3JldHVybiBuLiRzaGFyZWQmJlpyKGUub3B0aW9ucy4kYW5pbWF0aW9ucyxuKS50aGVuKCgpPT57ZS5vcHRpb25zPW59LCgpPT57fSksaX1fY3JlYXRlQW5pbWF0aW9ucyhlLHQpe2xldCBuPXRoaXMuX3Byb3BlcnRpZXMscj1bXSxpPWUuJGFuaW1hdGlvbnN8fD17fSxhPU9iamVjdC5rZXlzKHQpLG89RGF0ZS5ub3coKSxzO2ZvcihzPWEubGVuZ3RoLTE7cz49MDstLXMpe2xldCBjPWFbc107aWYoYy5jaGFyQXQoMCk9PT1gJGApY29udGludWU7aWYoYz09PWBvcHRpb25zYCl7ci5wdXNoKC4uLnRoaXMuX2FuaW1hdGVPcHRpb25zKGUsdCkpO2NvbnRpbnVlfWxldCBsPXRbY10sdT1pW2NdLGQ9bi5nZXQoYyk7aWYodSl7aWYoZCYmdS5hY3RpdmUoKSl7dS51cGRhdGUoZCxsLG8pO2NvbnRpbnVlfXUuY2FuY2VsKCl9aWYoIWR8fCFkLmR1cmF0aW9uKXtlW2NdPWw7Y29udGludWV9aVtjXT11PW5ldyBZcihkLGUsYyxsKSxyLnB1c2godSl9cmV0dXJuIHJ9dXBkYXRlKGUsdCl7aWYodGhpcy5fcHJvcGVydGllcy5zaXplPT09MCl7T2JqZWN0LmFzc2lnbihlLHQpO3JldHVybn1sZXQgbj10aGlzLl9jcmVhdGVBbmltYXRpb25zKGUsdCk7aWYobi5sZW5ndGgpcmV0dXJuIEouYWRkKHRoaXMuX2NoYXJ0LG4pLCEwfX07ZnVuY3Rpb24gWnIoZSx0KXtsZXQgbj1bXSxyPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKXtsZXQgaT1lW3JbdF1dO2kmJmkuYWN0aXZlKCkmJm4ucHVzaChpLndhaXQoKSl9cmV0dXJuIFByb21pc2UuYWxsKG4pfWZ1bmN0aW9uIFFyKGUsdCl7aWYoIXQpcmV0dXJuO2xldCBuPWUub3B0aW9ucztpZighbil7ZS5vcHRpb25zPXQ7cmV0dXJufXJldHVybiBuLiRzaGFyZWQmJihlLm9wdGlvbnM9bj1PYmplY3QuYXNzaWduKHt9LG4seyRzaGFyZWQ6ITEsJGFuaW1hdGlvbnM6e319KSksbn1mdW5jdGlvbiAkcihlLHQpe2xldCBuPWUmJmUub3B0aW9uc3x8e30scj1uLnJldmVyc2UsaT1uLm1pbj09PXZvaWQgMD90OjAsYT1uLm1heD09PXZvaWQgMD90OjA7cmV0dXJue3N0YXJ0OnI/YTppLGVuZDpyP2k6YX19ZnVuY3Rpb24gZWkoZSx0LG4pe2lmKG49PT0hMSlyZXR1cm4hMTtsZXQgcj0kcihlLG4pLGk9JHIodCxuKTtyZXR1cm57dG9wOmkuZW5kLHJpZ2h0OnIuZW5kLGJvdHRvbTppLnN0YXJ0LGxlZnQ6ci5zdGFydH19ZnVuY3Rpb24gdGkoZSl7bGV0IHQsbixyLGk7cmV0dXJuIGooZSk/KHQ9ZS50b3Asbj1lLnJpZ2h0LHI9ZS5ib3R0b20saT1lLmxlZnQpOnQ9bj1yPWk9ZSx7dG9wOnQscmlnaHQ6bixib3R0b206cixsZWZ0OmksZGlzYWJsZWQ6ZT09PSExfX1mdW5jdGlvbiBuaShlLHQpe2xldCBuPVtdLHI9ZS5fZ2V0U29ydGVkRGF0YXNldE1ldGFzKHQpLGksYTtmb3IoaT0wLGE9ci5sZW5ndGg7aTxhOysraSluLnB1c2gocltpXS5pbmRleCk7cmV0dXJuIG59ZnVuY3Rpb24gcmkoZSx0LG4scj17fSl7bGV0IGk9ZS5rZXlzLGE9ci5tb2RlPT09YHNpbmdsZWAsbyxzLGMsbDtpZih0PT09bnVsbClyZXR1cm47bGV0IHU9ITE7Zm9yKG89MCxzPWkubGVuZ3RoO288czsrK28pe2lmKGM9K2lbb10sYz09PW4pe2lmKHU9ITAsci5hbGwpY29udGludWU7YnJlYWt9bD1lLnZhbHVlc1tjXSxNKGwpJiYoYXx8dD09PTB8fG90KHQpPT09b3QobCkpJiYodCs9bCl9cmV0dXJuIXUmJiFyLmFsbD8wOnR9ZnVuY3Rpb24gaWkoZSx0KXtsZXR7aVNjYWxlOm4sdlNjYWxlOnJ9PXQsaT1uLmF4aXM9PT1geGA/YHhgOmB5YCxhPXIuYXhpcz09PWB4YD9geGA6YHlgLG89T2JqZWN0LmtleXMoZSkscz1BcnJheShvLmxlbmd0aCksYyxsLHU7Zm9yKGM9MCxsPW8ubGVuZ3RoO2M8bDsrK2MpdT1vW2NdLHNbY109e1tpXTp1LFthXTplW3VdfTtyZXR1cm4gc31mdW5jdGlvbiBhaShlLHQpe2xldCBuPWUmJmUub3B0aW9ucy5zdGFja2VkO3JldHVybiBufHxuPT09dm9pZCAwJiZ0LnN0YWNrIT09dm9pZCAwfWZ1bmN0aW9uIG9pKGUsdCxuKXtyZXR1cm5gJHtlLmlkfS4ke3QuaWR9LiR7bi5zdGFja3x8bi50eXBlfWB9ZnVuY3Rpb24gc2koZSl7bGV0e21pbjp0LG1heDpuLG1pbkRlZmluZWQ6cixtYXhEZWZpbmVkOml9PWUuZ2V0VXNlckJvdW5kcygpO3JldHVybnttaW46cj90Oi0xLzAsbWF4Omk/bjoxLzB9fWZ1bmN0aW9uIGNpKGUsdCxuKXtsZXQgcj1lW3RdfHwoZVt0XT17fSk7cmV0dXJuIHJbbl18fChyW25dPXt9KX1mdW5jdGlvbiBsaShlLHQsbixyKXtmb3IobGV0IGkgb2YgdC5nZXRNYXRjaGluZ1Zpc2libGVNZXRhcyhyKS5yZXZlcnNlKCkpe2xldCB0PWVbaS5pbmRleF07aWYobiYmdD4wfHwhbiYmdDwwKXJldHVybiBpLmluZGV4fXJldHVybiBudWxsfWZ1bmN0aW9uIHVpKGUsdCl7bGV0e2NoYXJ0Om4sX2NhY2hlZE1ldGE6cn09ZSxpPW4uX3N0YWNrc3x8PXt9LHtpU2NhbGU6YSx2U2NhbGU6byxpbmRleDpzfT1yLGM9YS5heGlzLGw9by5heGlzLHU9b2koYSxvLHIpLGQ9dC5sZW5ndGgsZjtmb3IobGV0IGU9MDtlPGQ7KytlKXtsZXQgbj10W2VdLHtbY106YSxbbF06ZH09bixwPW4uX3N0YWNrc3x8PXt9O2Y9cFtsXT1jaShpLHUsYSksZltzXT1kLGYuX3RvcD1saShmLG8sITAsci50eXBlKSxmLl9ib3R0b209bGkoZixvLCExLHIudHlwZSk7bGV0IG09Zi5fdmlzdWFsVmFsdWVzfHwoZi5fdmlzdWFsVmFsdWVzPXt9KTttW3NdPWR9fWZ1bmN0aW9uIGRpKGUsdCl7bGV0IG49ZS5zY2FsZXM7cmV0dXJuIE9iamVjdC5rZXlzKG4pLmZpbHRlcihlPT5uW2VdLmF4aXM9PT10KS5zaGlmdCgpfWZ1bmN0aW9uIGZpKGUsdCl7cmV0dXJuIE1uKGUse2FjdGl2ZTohMSxkYXRhc2V0OnZvaWQgMCxkYXRhc2V0SW5kZXg6dCxpbmRleDp0LG1vZGU6YGRlZmF1bHRgLHR5cGU6YGRhdGFzZXRgfSl9ZnVuY3Rpb24gcGkoZSx0LG4pe3JldHVybiBNbihlLHthY3RpdmU6ITEsZGF0YUluZGV4OnQscGFyc2VkOnZvaWQgMCxyYXc6dm9pZCAwLGVsZW1lbnQ6bixpbmRleDp0LG1vZGU6YGRlZmF1bHRgLHR5cGU6YGRhdGFgfSl9ZnVuY3Rpb24gbWkoZSx0KXtsZXQgbj1lLmNvbnRyb2xsZXIuaW5kZXgscj1lLnZTY2FsZSYmZS52U2NhbGUuYXhpcztpZihyKXt0fHw9ZS5fcGFyc2VkO2ZvcihsZXQgZSBvZiB0KXtsZXQgdD1lLl9zdGFja3M7aWYoIXR8fHRbcl09PT12b2lkIDB8fHRbcl1bbl09PT12b2lkIDApcmV0dXJuO2RlbGV0ZSB0W3JdW25dLHRbcl0uX3Zpc3VhbFZhbHVlcyE9PXZvaWQgMCYmdFtyXS5fdmlzdWFsVmFsdWVzW25dIT09dm9pZCAwJiZkZWxldGUgdFtyXS5fdmlzdWFsVmFsdWVzW25dfX19dmFyIGhpPWU9PmU9PT1gcmVzZXRgfHxlPT09YG5vbmVgLGdpPShlLHQpPT50P2U6T2JqZWN0LmFzc2lnbih7fSxlKSxfaT0oZSx0LG4pPT5lJiYhdC5oaWRkZW4mJnQuX3N0YWNrZWQmJntrZXlzOm5pKG4sITApLHZhbHVlczpudWxsfSx2aT1jbGFzc3tzdGF0aWMgZGVmYXVsdHM9e307c3RhdGljIGRhdGFzZXRFbGVtZW50VHlwZT1udWxsO3N0YXRpYyBkYXRhRWxlbWVudFR5cGU9bnVsbDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuY2hhcnQ9ZSx0aGlzLl9jdHg9ZS5jdHgsdGhpcy5pbmRleD10LHRoaXMuX2NhY2hlZERhdGFPcHRzPXt9LHRoaXMuX2NhY2hlZE1ldGE9dGhpcy5nZXRNZXRhKCksdGhpcy5fdHlwZT10aGlzLl9jYWNoZWRNZXRhLnR5cGUsdGhpcy5vcHRpb25zPXZvaWQgMCx0aGlzLl9wYXJzaW5nPSExLHRoaXMuX2RhdGE9dm9pZCAwLHRoaXMuX29iamVjdERhdGE9dm9pZCAwLHRoaXMuX3NoYXJlZE9wdGlvbnM9dm9pZCAwLHRoaXMuX2RyYXdTdGFydD12b2lkIDAsdGhpcy5fZHJhd0NvdW50PXZvaWQgMCx0aGlzLmVuYWJsZU9wdGlvblNoYXJpbmc9ITEsdGhpcy5zdXBwb3J0c0RlY2ltYXRpb249ITEsdGhpcy4kY29udGV4dD12b2lkIDAsdGhpcy5fc3luY0xpc3Q9W10sdGhpcy5kYXRhc2V0RWxlbWVudFR5cGU9bmV3LnRhcmdldC5kYXRhc2V0RWxlbWVudFR5cGUsdGhpcy5kYXRhRWxlbWVudFR5cGU9bmV3LnRhcmdldC5kYXRhRWxlbWVudFR5cGUsdGhpcy5pbml0aWFsaXplKCl9aW5pdGlhbGl6ZSgpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGE7dGhpcy5jb25maWd1cmUoKSx0aGlzLmxpbmtTY2FsZXMoKSxlLl9zdGFja2VkPWFpKGUudlNjYWxlLGUpLHRoaXMuYWRkRWxlbWVudHMoKSx0aGlzLm9wdGlvbnMuZmlsbCYmIXRoaXMuY2hhcnQuaXNQbHVnaW5FbmFibGVkKGBmaWxsZXJgKSYmY29uc29sZS53YXJuKGBUcmllZCB0byB1c2UgdGhlICdmaWxsJyBvcHRpb24gd2l0aG91dCB0aGUgJ0ZpbGxlcicgcGx1Z2luIGVuYWJsZWQuIFBsZWFzZSBpbXBvcnQgYW5kIHJlZ2lzdGVyIHRoZSAnRmlsbGVyJyBwbHVnaW4gYW5kIG1ha2Ugc3VyZSBpdCBpcyBub3QgZGlzYWJsZWQgaW4gdGhlIG9wdGlvbnNgKX11cGRhdGVJbmRleChlKXt0aGlzLmluZGV4IT09ZSYmbWkodGhpcy5fY2FjaGVkTWV0YSksdGhpcy5pbmRleD1lfWxpbmtTY2FsZXMoKXtsZXQgZT10aGlzLmNoYXJ0LHQ9dGhpcy5fY2FjaGVkTWV0YSxuPXRoaXMuZ2V0RGF0YXNldCgpLHI9KGUsdCxuLHIpPT5lPT09YHhgP3Q6ZT09PWByYD9yOm4saT10LnhBeGlzSUQ9UChuLnhBeGlzSUQsZGkoZSxgeGApKSxhPXQueUF4aXNJRD1QKG4ueUF4aXNJRCxkaShlLGB5YCkpLG89dC5yQXhpc0lEPVAobi5yQXhpc0lELGRpKGUsYHJgKSkscz10LmluZGV4QXhpcyxjPXQuaUF4aXNJRD1yKHMsaSxhLG8pLGw9dC52QXhpc0lEPXIocyxhLGksbyk7dC54U2NhbGU9dGhpcy5nZXRTY2FsZUZvcklkKGkpLHQueVNjYWxlPXRoaXMuZ2V0U2NhbGVGb3JJZChhKSx0LnJTY2FsZT10aGlzLmdldFNjYWxlRm9ySWQobyksdC5pU2NhbGU9dGhpcy5nZXRTY2FsZUZvcklkKGMpLHQudlNjYWxlPXRoaXMuZ2V0U2NhbGVGb3JJZChsKX1nZXREYXRhc2V0KCl7cmV0dXJuIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0aGlzLmluZGV4XX1nZXRNZXRhKCl7cmV0dXJuIHRoaXMuY2hhcnQuZ2V0RGF0YXNldE1ldGEodGhpcy5pbmRleCl9Z2V0U2NhbGVGb3JJZChlKXtyZXR1cm4gdGhpcy5jaGFydC5zY2FsZXNbZV19X2dldE90aGVyU2NhbGUoZSl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YTtyZXR1cm4gZT09PXQuaVNjYWxlP3QudlNjYWxlOnQuaVNjYWxlfXJlc2V0KCl7dGhpcy5fdXBkYXRlKGByZXNldGApfV9kZXN0cm95KCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YTt0aGlzLl9kYXRhJiZrdCh0aGlzLl9kYXRhLHRoaXMpLGUuX3N0YWNrZWQmJm1pKGUpfV9kYXRhQ2hlY2soKXtsZXQgZT10aGlzLmdldERhdGFzZXQoKSx0PWUuZGF0YXx8PVtdLG49dGhpcy5fZGF0YTtpZihqKHQpKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhO3RoaXMuX2RhdGE9aWkodCxlKX1lbHNlIGlmKG4hPT10KXtpZihuKXtrdChuLHRoaXMpO2xldCBlPXRoaXMuX2NhY2hlZE1ldGE7bWkoZSksZS5fcGFyc2VkPVtdfXQmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJk90KHQsdGhpcyksdGhpcy5fc3luY0xpc3Q9W10sdGhpcy5fZGF0YT10fX1hZGRFbGVtZW50cygpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGE7dGhpcy5fZGF0YUNoZWNrKCksdGhpcy5kYXRhc2V0RWxlbWVudFR5cGUmJihlLmRhdGFzZXQ9bmV3IHRoaXMuZGF0YXNldEVsZW1lbnRUeXBlKX1idWlsZE9yVXBkYXRlRWxlbWVudHMoZSl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YSxuPXRoaXMuZ2V0RGF0YXNldCgpLHI9ITE7dGhpcy5fZGF0YUNoZWNrKCk7bGV0IGk9dC5fc3RhY2tlZDt0Ll9zdGFja2VkPWFpKHQudlNjYWxlLHQpLHQuc3RhY2shPT1uLnN0YWNrJiYocj0hMCxtaSh0KSx0LnN0YWNrPW4uc3RhY2spLHRoaXMuX3Jlc3luY0VsZW1lbnRzKGUpLChyfHxpIT09dC5fc3RhY2tlZCkmJih1aSh0aGlzLHQuX3BhcnNlZCksdC5fc3RhY2tlZD1haSh0LnZTY2FsZSx0KSl9Y29uZmlndXJlKCl7bGV0IGU9dGhpcy5jaGFydC5jb25maWcsdD1lLmRhdGFzZXRTY29wZUtleXModGhpcy5fdHlwZSksbj1lLmdldE9wdGlvblNjb3Blcyh0aGlzLmdldERhdGFzZXQoKSx0LCEwKTt0aGlzLm9wdGlvbnM9ZS5jcmVhdGVSZXNvbHZlcihuLHRoaXMuZ2V0Q29udGV4dCgpKSx0aGlzLl9wYXJzaW5nPXRoaXMub3B0aW9ucy5wYXJzaW5nLHRoaXMuX2NhY2hlZERhdGFPcHRzPXt9fXBhcnNlKGUsdCl7bGV0e19jYWNoZWRNZXRhOm4sX2RhdGE6cn09dGhpcyx7aVNjYWxlOmksX3N0YWNrZWQ6YX09bixvPWkuYXhpcyxzPWU9PT0wJiZ0PT09ci5sZW5ndGh8fG4uX3NvcnRlZCxjPWU+MCYmbi5fcGFyc2VkW2UtMV0sbCx1LGQ7aWYodGhpcy5fcGFyc2luZz09PSExKW4uX3BhcnNlZD1yLG4uX3NvcnRlZD0hMCxkPXI7ZWxzZXtkPUEocltlXSk/dGhpcy5wYXJzZUFycmF5RGF0YShuLHIsZSx0KTpqKHJbZV0pP3RoaXMucGFyc2VPYmplY3REYXRhKG4scixlLHQpOnRoaXMucGFyc2VQcmltaXRpdmVEYXRhKG4scixlLHQpO2xldCBpPSgpPT51W29dPT09bnVsbHx8YyYmdVtvXTxjW29dO2ZvcihsPTA7bDx0OysrbCluLl9wYXJzZWRbbCtlXT11PWRbbF0scyYmKGkoKSYmKHM9ITEpLGM9dSk7bi5fc29ydGVkPXN9YSYmdWkodGhpcyxkKX1wYXJzZVByaW1pdGl2ZURhdGEoZSx0LG4scil7bGV0e2lTY2FsZTppLHZTY2FsZTphfT1lLG89aS5heGlzLHM9YS5heGlzLGM9aS5nZXRMYWJlbHMoKSxsPWk9PT1hLHU9QXJyYXkociksZCxmLHA7Zm9yKGQ9MCxmPXI7ZDxmOysrZClwPWQrbix1W2RdPXtbb106bHx8aS5wYXJzZShjW3BdLHApLFtzXTphLnBhcnNlKHRbcF0scCl9O3JldHVybiB1fXBhcnNlQXJyYXlEYXRhKGUsdCxuLHIpe2xldHt4U2NhbGU6aSx5U2NhbGU6YX09ZSxvPUFycmF5KHIpLHMsYyxsLHU7Zm9yKHM9MCxjPXI7czxjOysrcylsPXMrbix1PXRbbF0sb1tzXT17eDppLnBhcnNlKHVbMF0sbCkseTphLnBhcnNlKHVbMV0sbCl9O3JldHVybiBvfXBhcnNlT2JqZWN0RGF0YShlLHQsbixyKXtsZXR7eFNjYWxlOmkseVNjYWxlOmF9PWUse3hBeGlzS2V5Om89YHhgLHlBeGlzS2V5OnM9YHlgfT10aGlzLl9wYXJzaW5nLGM9QXJyYXkociksbCx1LGQsZjtmb3IobD0wLHU9cjtsPHU7KytsKWQ9bCtuLGY9dFtkXSxjW2xdPXt4OmkucGFyc2UoWWUoZixvKSxkKSx5OmEucGFyc2UoWWUoZixzKSxkKX07cmV0dXJuIGN9Z2V0UGFyc2VkKGUpe3JldHVybiB0aGlzLl9jYWNoZWRNZXRhLl9wYXJzZWRbZV19Z2V0RGF0YUVsZW1lbnQoZSl7cmV0dXJuIHRoaXMuX2NhY2hlZE1ldGEuZGF0YVtlXX1hcHBseVN0YWNrKGUsdCxuKXtsZXQgcj10aGlzLmNoYXJ0LGk9dGhpcy5fY2FjaGVkTWV0YSxhPXRbZS5heGlzXTtyZXR1cm4gcmkoe2tleXM6bmkociwhMCksdmFsdWVzOnQuX3N0YWNrc1tlLmF4aXNdLl92aXN1YWxWYWx1ZXN9LGEsaS5pbmRleCx7bW9kZTpufSl9dXBkYXRlUmFuZ2VGcm9tUGFyc2VkKGUsdCxuLHIpe2xldCBpPW5bdC5heGlzXSxhPWk9PT1udWxsP05hTjppLG89ciYmbi5fc3RhY2tzW3QuYXhpc107ciYmbyYmKHIudmFsdWVzPW8sYT1yaShyLGksdGhpcy5fY2FjaGVkTWV0YS5pbmRleCkpLGUubWluPU1hdGgubWluKGUubWluLGEpLGUubWF4PU1hdGgubWF4KGUubWF4LGEpfWdldE1pbk1heChlLHQpe2xldCBuPXRoaXMuX2NhY2hlZE1ldGEscj1uLl9wYXJzZWQsaT1uLl9zb3J0ZWQmJmU9PT1uLmlTY2FsZSxhPXIubGVuZ3RoLG89dGhpcy5fZ2V0T3RoZXJTY2FsZShlKSxzPV9pKHQsbix0aGlzLmNoYXJ0KSxjPXttaW46MS8wLG1heDotMS8wfSx7bWluOmwsbWF4OnV9PXNpKG8pLGQsZjtmdW5jdGlvbiBwKCl7Zj1yW2RdO2xldCB0PWZbby5heGlzXTtyZXR1cm4hTShmW2UuYXhpc10pfHxsPnR8fHU8dH1mb3IoZD0wO2Q8YSYmISghcCgpJiYodGhpcy51cGRhdGVSYW5nZUZyb21QYXJzZWQoYyxlLGYscyksaSkpOysrZCk7aWYoaSl7Zm9yKGQ9YS0xO2Q+PTA7LS1kKWlmKCFwKCkpe3RoaXMudXBkYXRlUmFuZ2VGcm9tUGFyc2VkKGMsZSxmLHMpO2JyZWFrfX1yZXR1cm4gY31nZXRBbGxQYXJzZWRWYWx1ZXMoZSl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YS5fcGFyc2VkLG49W10scixpLGE7Zm9yKHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpYT10W3JdW2UuYXhpc10sTShhKSYmbi5wdXNoKGEpO3JldHVybiBufWdldE1heE92ZXJmbG93KCl7cmV0dXJuITF9Z2V0TGFiZWxBbmRWYWx1ZShlKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhLG49dC5pU2NhbGUscj10LnZTY2FsZSxpPXRoaXMuZ2V0UGFyc2VkKGUpO3JldHVybntsYWJlbDpuP2BgK24uZ2V0TGFiZWxGb3JWYWx1ZShpW24uYXhpc10pOmBgLHZhbHVlOnI/YGArci5nZXRMYWJlbEZvclZhbHVlKGlbci5heGlzXSk6YGB9fV91cGRhdGUoZSl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YTt0aGlzLnVwZGF0ZShlfHxgZGVmYXVsdGApLHQuX2NsaXA9dGkoUCh0aGlzLm9wdGlvbnMuY2xpcCxlaSh0LnhTY2FsZSx0LnlTY2FsZSx0aGlzLmdldE1heE92ZXJmbG93KCkpKSl9dXBkYXRlKGUpe31kcmF3KCl7bGV0IGU9dGhpcy5fY3R4LHQ9dGhpcy5jaGFydCxuPXRoaXMuX2NhY2hlZE1ldGEscj1uLmRhdGF8fFtdLGk9dC5jaGFydEFyZWEsYT1bXSxvPXRoaXMuX2RyYXdTdGFydHx8MCxzPXRoaXMuX2RyYXdDb3VudHx8ci5sZW5ndGgtbyxjPXRoaXMub3B0aW9ucy5kcmF3QWN0aXZlRWxlbWVudHNPblRvcCxsO2ZvcihuLmRhdGFzZXQmJm4uZGF0YXNldC5kcmF3KGUsaSxvLHMpLGw9bztsPG8rczsrK2wpe2xldCB0PXJbbF07dC5oaWRkZW58fCh0LmFjdGl2ZSYmYz9hLnB1c2godCk6dC5kcmF3KGUsaSkpfWZvcihsPTA7bDxhLmxlbmd0aDsrK2wpYVtsXS5kcmF3KGUsaSl9Z2V0U3R5bGUoZSx0KXtsZXQgbj10P2BhY3RpdmVgOmBkZWZhdWx0YDtyZXR1cm4gZT09PXZvaWQgMCYmdGhpcy5fY2FjaGVkTWV0YS5kYXRhc2V0P3RoaXMucmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9ucyhuKTp0aGlzLnJlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoZXx8MCxuKX1nZXRDb250ZXh0KGUsdCxuKXtsZXQgcj10aGlzLmdldERhdGFzZXQoKSxpO2lmKGU+PTAmJmU8dGhpcy5fY2FjaGVkTWV0YS5kYXRhLmxlbmd0aCl7bGV0IHQ9dGhpcy5fY2FjaGVkTWV0YS5kYXRhW2VdO2k9dC4kY29udGV4dHx8PXBpKHRoaXMuZ2V0Q29udGV4dCgpLGUsdCksaS5wYXJzZWQ9dGhpcy5nZXRQYXJzZWQoZSksaS5yYXc9ci5kYXRhW2VdLGkuaW5kZXg9aS5kYXRhSW5kZXg9ZX1lbHNlIGk9dGhpcy4kY29udGV4dHx8PWZpKHRoaXMuY2hhcnQuZ2V0Q29udGV4dCgpLHRoaXMuaW5kZXgpLGkuZGF0YXNldD1yLGkuaW5kZXg9aS5kYXRhc2V0SW5kZXg9dGhpcy5pbmRleDtyZXR1cm4gaS5hY3RpdmU9ISF0LGkubW9kZT1uLGl9cmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9ucyhlKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZUVsZW1lbnRPcHRpb25zKHRoaXMuZGF0YXNldEVsZW1lbnRUeXBlLmlkLGUpfXJlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMoZSx0KXtyZXR1cm4gdGhpcy5fcmVzb2x2ZUVsZW1lbnRPcHRpb25zKHRoaXMuZGF0YUVsZW1lbnRUeXBlLmlkLHQsZSl9X3Jlc29sdmVFbGVtZW50T3B0aW9ucyhlLHQ9YGRlZmF1bHRgLG4pe2xldCByPXQ9PT1gYWN0aXZlYCxpPXRoaXMuX2NhY2hlZERhdGFPcHRzLGE9ZStgLWArdCxvPWlbYV0scz10aGlzLmVuYWJsZU9wdGlvblNoYXJpbmcmJlplKG4pO2lmKG8pcmV0dXJuIGdpKG8scyk7bGV0IGM9dGhpcy5jaGFydC5jb25maWcsbD1jLmRhdGFzZXRFbGVtZW50U2NvcGVLZXlzKHRoaXMuX3R5cGUsZSksdT1yP1tgJHtlfUhvdmVyYCxgaG92ZXJgLGUsYGBdOltlLGBgXSxkPWMuZ2V0T3B0aW9uU2NvcGVzKHRoaXMuZ2V0RGF0YXNldCgpLGwpLGY9T2JqZWN0LmtleXMoVy5lbGVtZW50c1tlXSkscD1jLnJlc29sdmVOYW1lZE9wdGlvbnMoZCxmLCgpPT50aGlzLmdldENvbnRleHQobixyLHQpLHUpO3JldHVybiBwLiRzaGFyZWQmJihwLiRzaGFyZWQ9cyxpW2FdPU9iamVjdC5mcmVlemUoZ2kocCxzKSkpLHB9X3Jlc29sdmVBbmltYXRpb25zKGUsdCxuKXtsZXQgcj10aGlzLmNoYXJ0LGk9dGhpcy5fY2FjaGVkRGF0YU9wdHMsYT1gYW5pbWF0aW9uLSR7dH1gLG89aVthXTtpZihvKXJldHVybiBvO2xldCBzO2lmKHIub3B0aW9ucy5hbmltYXRpb24hPT0hMSl7bGV0IHI9dGhpcy5jaGFydC5jb25maWcsaT1yLmRhdGFzZXRBbmltYXRpb25TY29wZUtleXModGhpcy5fdHlwZSx0KSxhPXIuZ2V0T3B0aW9uU2NvcGVzKHRoaXMuZ2V0RGF0YXNldCgpLGkpO3M9ci5jcmVhdGVSZXNvbHZlcihhLHRoaXMuZ2V0Q29udGV4dChlLG4sdCkpfWxldCBjPW5ldyBYcihyLHMmJnMuYW5pbWF0aW9ucyk7cmV0dXJuIHMmJnMuX2NhY2hlYWJsZSYmKGlbYV09T2JqZWN0LmZyZWV6ZShjKSksY31nZXRTaGFyZWRPcHRpb25zKGUpe2lmKGUuJHNoYXJlZClyZXR1cm4gdGhpcy5fc2hhcmVkT3B0aW9uc3x8PU9iamVjdC5hc3NpZ24oe30sZSl9aW5jbHVkZU9wdGlvbnMoZSx0KXtyZXR1cm4hdHx8aGkoZSl8fHRoaXMuY2hhcnQuX2FuaW1hdGlvbnNEaXNhYmxlZH1fZ2V0U2hhcmVkT3B0aW9ucyhlLHQpe2xldCBuPXRoaXMucmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyhlLHQpLHI9dGhpcy5fc2hhcmVkT3B0aW9ucyxpPXRoaXMuZ2V0U2hhcmVkT3B0aW9ucyhuKSxhPXRoaXMuaW5jbHVkZU9wdGlvbnModCxpKXx8aSE9PXI7cmV0dXJuIHRoaXMudXBkYXRlU2hhcmVkT3B0aW9ucyhpLHQsbikse3NoYXJlZE9wdGlvbnM6aSxpbmNsdWRlT3B0aW9uczphfX11cGRhdGVFbGVtZW50KGUsdCxuLHIpe2hpKHIpP09iamVjdC5hc3NpZ24oZSxuKTp0aGlzLl9yZXNvbHZlQW5pbWF0aW9ucyh0LHIpLnVwZGF0ZShlLG4pfXVwZGF0ZVNoYXJlZE9wdGlvbnMoZSx0LG4pe2UmJiFoaSh0KSYmdGhpcy5fcmVzb2x2ZUFuaW1hdGlvbnModm9pZCAwLHQpLnVwZGF0ZShlLG4pfV9zZXRTdHlsZShlLHQsbixyKXtlLmFjdGl2ZT1yO2xldCBpPXRoaXMuZ2V0U3R5bGUodCxyKTt0aGlzLl9yZXNvbHZlQW5pbWF0aW9ucyh0LG4scikudXBkYXRlKGUse29wdGlvbnM6IXImJnRoaXMuZ2V0U2hhcmVkT3B0aW9ucyhpKXx8aX0pfXJlbW92ZUhvdmVyU3R5bGUoZSx0LG4pe3RoaXMuX3NldFN0eWxlKGUsbixgYWN0aXZlYCwhMSl9c2V0SG92ZXJTdHlsZShlLHQsbil7dGhpcy5fc2V0U3R5bGUoZSxuLGBhY3RpdmVgLCEwKX1fcmVtb3ZlRGF0YXNldEhvdmVyU3R5bGUoKXtsZXQgZT10aGlzLl9jYWNoZWRNZXRhLmRhdGFzZXQ7ZSYmdGhpcy5fc2V0U3R5bGUoZSx2b2lkIDAsYGFjdGl2ZWAsITEpfV9zZXREYXRhc2V0SG92ZXJTdHlsZSgpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGEuZGF0YXNldDtlJiZ0aGlzLl9zZXRTdHlsZShlLHZvaWQgMCxgYWN0aXZlYCwhMCl9X3Jlc3luY0VsZW1lbnRzKGUpe2xldCB0PXRoaXMuX2RhdGEsbj10aGlzLl9jYWNoZWRNZXRhLmRhdGE7Zm9yKGxldFtlLHQsbl1vZiB0aGlzLl9zeW5jTGlzdCl0aGlzW2VdKHQsbik7dGhpcy5fc3luY0xpc3Q9W107bGV0IHI9bi5sZW5ndGgsaT10Lmxlbmd0aCxhPU1hdGgubWluKGkscik7YSYmdGhpcy5wYXJzZSgwLGEpLGk+cj90aGlzLl9pbnNlcnRFbGVtZW50cyhyLGktcixlKTppPHImJnRoaXMuX3JlbW92ZUVsZW1lbnRzKGksci1pKX1faW5zZXJ0RWxlbWVudHMoZSx0LG49ITApe2xldCByPXRoaXMuX2NhY2hlZE1ldGEsaT1yLmRhdGEsYT1lK3QsbyxzPWU9Pntmb3IoZS5sZW5ndGgrPXQsbz1lLmxlbmd0aC0xO28+PWE7by0tKWVbb109ZVtvLXRdfTtmb3IocyhpKSxvPWU7bzxhOysrbylpW29dPW5ldyB0aGlzLmRhdGFFbGVtZW50VHlwZTt0aGlzLl9wYXJzaW5nJiZzKHIuX3BhcnNlZCksdGhpcy5wYXJzZShlLHQpLG4mJnRoaXMudXBkYXRlRWxlbWVudHMoaSxlLHQsYHJlc2V0YCl9dXBkYXRlRWxlbWVudHMoZSx0LG4scil7fV9yZW1vdmVFbGVtZW50cyhlLHQpe2xldCBuPXRoaXMuX2NhY2hlZE1ldGE7aWYodGhpcy5fcGFyc2luZyl7bGV0IHI9bi5fcGFyc2VkLnNwbGljZShlLHQpO24uX3N0YWNrZWQmJm1pKG4scil9bi5kYXRhLnNwbGljZShlLHQpfV9zeW5jKGUpe2lmKHRoaXMuX3BhcnNpbmcpdGhpcy5fc3luY0xpc3QucHVzaChlKTtlbHNle2xldFt0LG4scl09ZTt0aGlzW3RdKG4scil9dGhpcy5jaGFydC5fZGF0YUNoYW5nZXMucHVzaChbdGhpcy5pbmRleCwuLi5lXSl9X29uRGF0YVB1c2goKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoO3RoaXMuX3N5bmMoW2BfaW5zZXJ0RWxlbWVudHNgLHRoaXMuZ2V0RGF0YXNldCgpLmRhdGEubGVuZ3RoLWUsZV0pfV9vbkRhdGFQb3AoKXt0aGlzLl9zeW5jKFtgX3JlbW92ZUVsZW1lbnRzYCx0aGlzLl9jYWNoZWRNZXRhLmRhdGEubGVuZ3RoLTEsMV0pfV9vbkRhdGFTaGlmdCgpe3RoaXMuX3N5bmMoW2BfcmVtb3ZlRWxlbWVudHNgLDAsMV0pfV9vbkRhdGFTcGxpY2UoZSx0KXt0JiZ0aGlzLl9zeW5jKFtgX3JlbW92ZUVsZW1lbnRzYCxlLHRdKTtsZXQgbj1hcmd1bWVudHMubGVuZ3RoLTI7biYmdGhpcy5fc3luYyhbYF9pbnNlcnRFbGVtZW50c2AsZSxuXSl9X29uRGF0YVVuc2hpZnQoKXt0aGlzLl9zeW5jKFtgX2luc2VydEVsZW1lbnRzYCwwLGFyZ3VtZW50cy5sZW5ndGhdKX19LHlpPWNsYXNzIGV4dGVuZHMgdml7c3RhdGljIGlkPWBsaW5lYDtzdGF0aWMgZGVmYXVsdHM9e2RhdGFzZXRFbGVtZW50VHlwZTpgbGluZWAsZGF0YUVsZW1lbnRUeXBlOmBwb2ludGAsc2hvd0xpbmU6ITAsc3BhbkdhcHM6ITF9O3N0YXRpYyBvdmVycmlkZXM9e3NjYWxlczp7X2luZGV4Xzp7dHlwZTpgY2F0ZWdvcnlgfSxfdmFsdWVfOnt0eXBlOmBsaW5lYXJgfX19O2luaXRpYWxpemUoKXt0aGlzLmVuYWJsZU9wdGlvblNoYXJpbmc9ITAsdGhpcy5zdXBwb3J0c0RlY2ltYXRpb249ITAsc3VwZXIuaW5pdGlhbGl6ZSgpfXVwZGF0ZShlKXtsZXQgdD10aGlzLl9jYWNoZWRNZXRhLHtkYXRhc2V0Om4sZGF0YTpyPVtdLF9kYXRhc2V0Oml9PXQsYT10aGlzLmNoYXJ0Ll9hbmltYXRpb25zRGlzYWJsZWQse3N0YXJ0Om8sY291bnQ6c309SXQodCxyLGEpO3RoaXMuX2RyYXdTdGFydD1vLHRoaXMuX2RyYXdDb3VudD1zLEx0KHQpJiYobz0wLHM9ci5sZW5ndGgpLG4uX2NoYXJ0PXRoaXMuY2hhcnQsbi5fZGF0YXNldEluZGV4PXRoaXMuaW5kZXgsbi5fZGVjaW1hdGVkPSEhaS5fZGVjaW1hdGVkLG4ucG9pbnRzPXI7bGV0IGM9dGhpcy5yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKGUpO3RoaXMub3B0aW9ucy5zaG93TGluZXx8KGMuYm9yZGVyV2lkdGg9MCksYy5zZWdtZW50PXRoaXMub3B0aW9ucy5zZWdtZW50LHRoaXMudXBkYXRlRWxlbWVudChuLHZvaWQgMCx7YW5pbWF0ZWQ6IWEsb3B0aW9uczpjfSxlKSx0aGlzLnVwZGF0ZUVsZW1lbnRzKHIsbyxzLGUpfXVwZGF0ZUVsZW1lbnRzKGUsdCxuLHIpe2xldCBpPXI9PT1gcmVzZXRgLHtpU2NhbGU6YSx2U2NhbGU6byxfc3RhY2tlZDpzLF9kYXRhc2V0OmN9PXRoaXMuX2NhY2hlZE1ldGEse3NoYXJlZE9wdGlvbnM6bCxpbmNsdWRlT3B0aW9uczp1fT10aGlzLl9nZXRTaGFyZWRPcHRpb25zKHQsciksZD1hLmF4aXMsZj1vLmF4aXMse3NwYW5HYXBzOnAsc2VnbWVudDptfT10aGlzLm9wdGlvbnMsaD1kdChwKT9wOjEvMCxnPXRoaXMuY2hhcnQuX2FuaW1hdGlvbnNEaXNhYmxlZHx8aXx8cj09PWBub25lYCxfPXQrbix2PWUubGVuZ3RoLHk9dD4wJiZ0aGlzLmdldFBhcnNlZCh0LTEpO2ZvcihsZXQgbj0wO248djsrK24pe2xldCBwPWVbbl0sdj1nP3A6e307aWYobjx0fHxuPj1fKXt2LnNraXA9ITA7Y29udGludWV9bGV0IGI9dGhpcy5nZXRQYXJzZWQobikseD1rKGJbZl0pLFM9dltkXT1hLmdldFBpeGVsRm9yVmFsdWUoYltkXSxuKSxDPXZbZl09aXx8eD9vLmdldEJhc2VQaXhlbCgpOm8uZ2V0UGl4ZWxGb3JWYWx1ZShzP3RoaXMuYXBwbHlTdGFjayhvLGIscyk6YltmXSxuKTt2LnNraXA9aXNOYU4oUyl8fGlzTmFOKEMpfHx4LHYuc3RvcD1uPjAmJk1hdGguYWJzKGJbZF0teVtkXSk+aCxtJiYodi5wYXJzZWQ9Yix2LnJhdz1jLmRhdGFbbl0pLHUmJih2Lm9wdGlvbnM9bHx8dGhpcy5yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKG4scC5hY3RpdmU/YGFjdGl2ZWA6cikpLGd8fHRoaXMudXBkYXRlRWxlbWVudChwLG4sdixyKSx5PWJ9fWdldE1heE92ZXJmbG93KCl7bGV0IGU9dGhpcy5fY2FjaGVkTWV0YSx0PWUuZGF0YXNldCxuPXQub3B0aW9ucyYmdC5vcHRpb25zLmJvcmRlcldpZHRofHwwLHI9ZS5kYXRhfHxbXTtpZighci5sZW5ndGgpcmV0dXJuIG47bGV0IGk9clswXS5zaXplKHRoaXMucmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucygwKSksYT1yW3IubGVuZ3RoLTFdLnNpemUodGhpcy5yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKHIubGVuZ3RoLTEpKTtyZXR1cm4gTWF0aC5tYXgobixpLGEpLzJ9ZHJhdygpe2xldCBlPXRoaXMuX2NhY2hlZE1ldGE7ZS5kYXRhc2V0LnVwZGF0ZUNvbnRyb2xQb2ludHModGhpcy5jaGFydC5jaGFydEFyZWEsZS5pU2NhbGUuYXhpcyksc3VwZXIuZHJhdygpfX07ZnVuY3Rpb24gYmkoKXt0aHJvdyBFcnJvcihgVGhpcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkOiBDaGVjayB0aGF0IGEgY29tcGxldGUgZGF0ZSBhZGFwdGVyIGlzIHByb3ZpZGVkLmApfXZhciB4aT17X2RhdGU6Y2xhc3MgZXtzdGF0aWMgb3ZlcnJpZGUodCl7T2JqZWN0LmFzc2lnbihlLnByb3RvdHlwZSx0KX1vcHRpb25zO2NvbnN0cnVjdG9yKGUpe3RoaXMub3B0aW9ucz1lfHx7fX1pbml0KCl7fWZvcm1hdHMoKXtyZXR1cm4gYmkoKX1wYXJzZSgpe3JldHVybiBiaSgpfWZvcm1hdCgpe3JldHVybiBiaSgpfWFkZCgpe3JldHVybiBiaSgpfWRpZmYoKXtyZXR1cm4gYmkoKX1zdGFydE9mKCl7cmV0dXJuIGJpKCl9ZW5kT2YoKXtyZXR1cm4gYmkoKX19fTtmdW5jdGlvbiBTaShlLHQsbixyKXtsZXR7Y29udHJvbGxlcjppLGRhdGE6YSxfc29ydGVkOm99PWUscz1pLl9jYWNoZWRNZXRhLmlTY2FsZSxjPWUuZGF0YXNldCYmZS5kYXRhc2V0Lm9wdGlvbnM/ZS5kYXRhc2V0Lm9wdGlvbnMuc3BhbkdhcHM6bnVsbDtpZihzJiZ0PT09cy5heGlzJiZ0IT09YHJgJiZvJiZhLmxlbmd0aCl7bGV0IG89cy5fcmV2ZXJzZVBpeGVscz9UdDp3dDtpZighcil7bGV0IHI9byhhLHQsbik7aWYoYyl7bGV0e3ZTY2FsZTp0fT1pLl9jYWNoZWRNZXRhLHtfcGFyc2VkOm59PWUsYT1uLnNsaWNlKDAsci5sbysxKS5yZXZlcnNlKCkuZmluZEluZGV4KGU9PiFrKGVbdC5heGlzXSkpO3IubG8tPU1hdGgubWF4KDAsYSk7bGV0IG89bi5zbGljZShyLmhpKS5maW5kSW5kZXgoZT0+IWsoZVt0LmF4aXNdKSk7ci5oaSs9TWF0aC5tYXgoMCxvKX1yZXR1cm4gcn1pZihpLl9zaGFyZWRPcHRpb25zKXtsZXQgZT1hWzBdLHI9dHlwZW9mIGUuZ2V0UmFuZ2U9PWBmdW5jdGlvbmAmJmUuZ2V0UmFuZ2UodCk7aWYocil7bGV0IGU9byhhLHQsbi1yKSxpPW8oYSx0LG4rcik7cmV0dXJue2xvOmUubG8saGk6aS5oaX19fX1yZXR1cm57bG86MCxoaTphLmxlbmd0aC0xfX1mdW5jdGlvbiBDaShlLHQsbixyLGkpe2xldCBhPWUuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpLG89blt0XTtmb3IobGV0IGU9MCxuPWEubGVuZ3RoO2U8bjsrK2Upe2xldHtpbmRleDpuLGRhdGE6c309YVtlXSx7bG86YyxoaTpsfT1TaShhW2VdLHQsbyxpKTtmb3IobGV0IGU9YztlPD1sOysrZSl7bGV0IHQ9c1tlXTt0LnNraXB8fHIodCxuLGUpfX19ZnVuY3Rpb24gd2koZSl7bGV0IHQ9ZS5pbmRleE9mKGB4YCkhPT0tMSxuPWUuaW5kZXhPZihgeWApIT09LTE7cmV0dXJuIGZ1bmN0aW9uKGUscil7bGV0IGk9dD9NYXRoLmFicyhlLngtci54KTowLGE9bj9NYXRoLmFicyhlLnktci55KTowO3JldHVybiBNYXRoLnNxcnQoaSoqMithKioyKX19ZnVuY3Rpb24gVGkoZSx0LG4scixpKXtsZXQgYT1bXTtyZXR1cm4haSYmIWUuaXNQb2ludEluQXJlYSh0KXx8Q2koZSxuLHQsZnVuY3Rpb24obixvLHMpeyFpJiYhRyhuLGUuY2hhcnRBcmVhLDApfHxuLmluUmFuZ2UodC54LHQueSxyKSYmYS5wdXNoKHtlbGVtZW50Om4sZGF0YXNldEluZGV4Om8saW5kZXg6c30pfSwhMCksYX1mdW5jdGlvbiBFaShlLHQsbixyKXtsZXQgaT1bXTtmdW5jdGlvbiBhKGUsbixhKXtsZXR7c3RhcnRBbmdsZTpvLGVuZEFuZ2xlOnN9PWUuZ2V0UHJvcHMoW2BzdGFydEFuZ2xlYCxgZW5kQW5nbGVgXSxyKSx7YW5nbGU6Y309X3QoZSx7eDp0LngseTp0Lnl9KTtidChjLG8scykmJmkucHVzaCh7ZWxlbWVudDplLGRhdGFzZXRJbmRleDpuLGluZGV4OmF9KX1yZXR1cm4gQ2koZSxuLHQsYSksaX1mdW5jdGlvbiBEaShlLHQsbixyLGksYSl7bGV0IG89W10scz13aShuKSxjPTEvMDtmdW5jdGlvbiBsKG4sbCx1KXtsZXQgZD1uLmluUmFuZ2UodC54LHQueSxpKTtpZihyJiYhZClyZXR1cm47bGV0IGY9bi5nZXRDZW50ZXJQb2ludChpKTtpZighKGF8fGUuaXNQb2ludEluQXJlYShmKSkmJiFkKXJldHVybjtsZXQgcD1zKHQsZik7cDxjPyhvPVt7ZWxlbWVudDpuLGRhdGFzZXRJbmRleDpsLGluZGV4OnV9XSxjPXApOnA9PT1jJiZvLnB1c2goe2VsZW1lbnQ6bixkYXRhc2V0SW5kZXg6bCxpbmRleDp1fSl9cmV0dXJuIENpKGUsbix0LGwpLG99ZnVuY3Rpb24gT2koZSx0LG4scixpLGEpe3JldHVybiFhJiYhZS5pc1BvaW50SW5BcmVhKHQpP1tdOm49PT1gcmAmJiFyP0VpKGUsdCxuLGkpOkRpKGUsdCxuLHIsaSxhKX1mdW5jdGlvbiBraShlLHQsbixyLGkpe2xldCBhPVtdLG89bj09PWB4YD9gaW5YUmFuZ2VgOmBpbllSYW5nZWAscz0hMTtyZXR1cm4gQ2koZSxuLHQsKGUscixjKT0+e2Vbb10mJmVbb10odFtuXSxpKSYmKGEucHVzaCh7ZWxlbWVudDplLGRhdGFzZXRJbmRleDpyLGluZGV4OmN9KSxzfHw9ZS5pblJhbmdlKHQueCx0LnksaSkpfSksciYmIXM/W106YX12YXIgQWk9e2V2YWx1YXRlSW50ZXJhY3Rpb25JdGVtczpDaSxtb2Rlczp7aW5kZXgoZSx0LG4scil7bGV0IGk9X3IodCxlKSxhPW4uYXhpc3x8YHhgLG89bi5pbmNsdWRlSW52aXNpYmxlfHwhMSxzPW4uaW50ZXJzZWN0P1RpKGUsaSxhLHIsbyk6T2koZSxpLGEsITEscixvKSxjPVtdO3JldHVybiBzLmxlbmd0aD8oZS5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCkuZm9yRWFjaChlPT57bGV0IHQ9c1swXS5pbmRleCxuPWUuZGF0YVt0XTtuJiYhbi5za2lwJiZjLnB1c2goe2VsZW1lbnQ6bixkYXRhc2V0SW5kZXg6ZS5pbmRleCxpbmRleDp0fSl9KSxjKTpbXX0sZGF0YXNldChlLHQsbixyKXtsZXQgaT1fcih0LGUpLGE9bi5heGlzfHxgeHlgLG89bi5pbmNsdWRlSW52aXNpYmxlfHwhMSxzPW4uaW50ZXJzZWN0P1RpKGUsaSxhLHIsbyk6T2koZSxpLGEsITEscixvKTtpZihzLmxlbmd0aD4wKXtsZXQgdD1zWzBdLmRhdGFzZXRJbmRleCxuPWUuZ2V0RGF0YXNldE1ldGEodCkuZGF0YTtzPVtdO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7KytlKXMucHVzaCh7ZWxlbWVudDpuW2VdLGRhdGFzZXRJbmRleDp0LGluZGV4OmV9KX1yZXR1cm4gc30scG9pbnQoZSx0LG4scil7cmV0dXJuIFRpKGUsX3IodCxlKSxuLmF4aXN8fGB4eWAscixuLmluY2x1ZGVJbnZpc2libGV8fCExKX0sbmVhcmVzdChlLHQsbixyKXtsZXQgaT1fcih0LGUpLGE9bi5heGlzfHxgeHlgLG89bi5pbmNsdWRlSW52aXNpYmxlfHwhMTtyZXR1cm4gT2koZSxpLGEsbi5pbnRlcnNlY3QscixvKX0seChlLHQsbixyKXtyZXR1cm4ga2koZSxfcih0LGUpLGB4YCxuLmludGVyc2VjdCxyKX0seShlLHQsbixyKXtyZXR1cm4ga2koZSxfcih0LGUpLGB5YCxuLmludGVyc2VjdCxyKX19fSxqaT1bYGxlZnRgLGB0b3BgLGByaWdodGAsYGJvdHRvbWBdO2Z1bmN0aW9uIE1pKGUsdCl7cmV0dXJuIGUuZmlsdGVyKGU9PmUucG9zPT09dCl9ZnVuY3Rpb24gTmkoZSx0KXtyZXR1cm4gZS5maWx0ZXIoZT0+amkuaW5kZXhPZihlLnBvcyk9PT0tMSYmZS5ib3guYXhpcz09PXQpfWZ1bmN0aW9uIFBpKGUsdCl7cmV0dXJuIGUuc29ydCgoZSxuKT0+e2xldCByPXQ/bjplLGk9dD9lOm47cmV0dXJuIHIud2VpZ2h0PT09aS53ZWlnaHQ/ci5pbmRleC1pLmluZGV4OnIud2VpZ2h0LWkud2VpZ2h0fSl9ZnVuY3Rpb24gRmkoZSl7bGV0IHQ9W10sbixyLGksYSxvLHM7Zm9yKG49MCxyPShlfHxbXSkubGVuZ3RoO248cjsrK24paT1lW25dLHtwb3NpdGlvbjphLG9wdGlvbnM6e3N0YWNrOm8sc3RhY2tXZWlnaHQ6cz0xfX09aSx0LnB1c2goe2luZGV4Om4sYm94OmkscG9zOmEsaG9yaXpvbnRhbDppLmlzSG9yaXpvbnRhbCgpLHdlaWdodDppLndlaWdodCxzdGFjazpvJiZhK28sc3RhY2tXZWlnaHQ6c30pO3JldHVybiB0fWZ1bmN0aW9uIElpKGUpe2xldCB0PXt9O2ZvcihsZXQgbiBvZiBlKXtsZXR7c3RhY2s6ZSxwb3M6cixzdGFja1dlaWdodDppfT1uO2lmKCFlfHwhamkuaW5jbHVkZXMocikpY29udGludWU7bGV0IGE9dFtlXXx8KHRbZV09e2NvdW50OjAscGxhY2VkOjAsd2VpZ2h0OjAsc2l6ZTowfSk7YS5jb3VudCsrLGEud2VpZ2h0Kz1pfXJldHVybiB0fWZ1bmN0aW9uIExpKGUsdCl7bGV0IG49SWkoZSkse3ZCb3hNYXhXaWR0aDpyLGhCb3hNYXhIZWlnaHQ6aX09dCxhLG8scztmb3IoYT0wLG89ZS5sZW5ndGg7YTxvOysrYSl7cz1lW2FdO2xldHtmdWxsU2l6ZTpvfT1zLmJveCxjPW5bcy5zdGFja10sbD1jJiZzLnN0YWNrV2VpZ2h0L2Mud2VpZ2h0O3MuaG9yaXpvbnRhbD8ocy53aWR0aD1sP2wqcjpvJiZ0LmF2YWlsYWJsZVdpZHRoLHMuaGVpZ2h0PWkpOihzLndpZHRoPXIscy5oZWlnaHQ9bD9sKmk6byYmdC5hdmFpbGFibGVIZWlnaHQpfXJldHVybiBufWZ1bmN0aW9uIFJpKGUpe2xldCB0PUZpKGUpLG49UGkodC5maWx0ZXIoZT0+ZS5ib3guZnVsbFNpemUpLCEwKSxyPVBpKE1pKHQsYGxlZnRgKSwhMCksaT1QaShNaSh0LGByaWdodGApKSxhPVBpKE1pKHQsYHRvcGApLCEwKSxvPVBpKE1pKHQsYGJvdHRvbWApKSxzPU5pKHQsYHhgKSxjPU5pKHQsYHlgKTtyZXR1cm57ZnVsbFNpemU6bixsZWZ0QW5kVG9wOnIuY29uY2F0KGEpLHJpZ2h0QW5kQm90dG9tOmkuY29uY2F0KGMpLmNvbmNhdChvKS5jb25jYXQocyksY2hhcnRBcmVhOk1pKHQsYGNoYXJ0QXJlYWApLHZlcnRpY2FsOnIuY29uY2F0KGkpLmNvbmNhdChjKSxob3Jpem9udGFsOmEuY29uY2F0KG8pLmNvbmNhdChzKX19ZnVuY3Rpb24gemkoZSx0LG4scil7cmV0dXJuIE1hdGgubWF4KGVbbl0sdFtuXSkrTWF0aC5tYXgoZVtyXSx0W3JdKX1mdW5jdGlvbiBCaShlLHQpe2UudG9wPU1hdGgubWF4KGUudG9wLHQudG9wKSxlLmxlZnQ9TWF0aC5tYXgoZS5sZWZ0LHQubGVmdCksZS5ib3R0b209TWF0aC5tYXgoZS5ib3R0b20sdC5ib3R0b20pLGUucmlnaHQ9TWF0aC5tYXgoZS5yaWdodCx0LnJpZ2h0KX1mdW5jdGlvbiBWaShlLHQsbixyKXtsZXR7cG9zOmksYm94OmF9PW4sbz1lLm1heFBhZGRpbmc7aWYoIWooaSkpe24uc2l6ZSYmKGVbaV0tPW4uc2l6ZSk7bGV0IHQ9cltuLnN0YWNrXXx8e3NpemU6MCxjb3VudDoxfTt0LnNpemU9TWF0aC5tYXgodC5zaXplLG4uaG9yaXpvbnRhbD9hLmhlaWdodDphLndpZHRoKSxuLnNpemU9dC5zaXplL3QuY291bnQsZVtpXSs9bi5zaXplfWEuZ2V0UGFkZGluZyYmQmkobyxhLmdldFBhZGRpbmcoKSk7bGV0IHM9TWF0aC5tYXgoMCx0Lm91dGVyV2lkdGgtemkobyxlLGBsZWZ0YCxgcmlnaHRgKSksYz1NYXRoLm1heCgwLHQub3V0ZXJIZWlnaHQtemkobyxlLGB0b3BgLGBib3R0b21gKSksbD1zIT09ZS53LHU9YyE9PWUuaDtyZXR1cm4gZS53PXMsZS5oPWMsbi5ob3Jpem9udGFsP3tzYW1lOmwsb3RoZXI6dX06e3NhbWU6dSxvdGhlcjpsfX1mdW5jdGlvbiBIaShlKXtsZXQgdD1lLm1heFBhZGRpbmc7ZnVuY3Rpb24gbihuKXtsZXQgcj1NYXRoLm1heCh0W25dLWVbbl0sMCk7cmV0dXJuIGVbbl0rPXIscn1lLnkrPW4oYHRvcGApLGUueCs9bihgbGVmdGApLG4oYHJpZ2h0YCksbihgYm90dG9tYCl9ZnVuY3Rpb24gVWkoZSx0KXtsZXQgbj10Lm1heFBhZGRpbmc7ZnVuY3Rpb24gcihlKXtsZXQgcj17bGVmdDowLHRvcDowLHJpZ2h0OjAsYm90dG9tOjB9O3JldHVybiBlLmZvckVhY2goZT0+e3JbZV09TWF0aC5tYXgodFtlXSxuW2VdKX0pLHJ9cmV0dXJuIHIoZT9bYGxlZnRgLGByaWdodGBdOltgdG9wYCxgYm90dG9tYF0pfWZ1bmN0aW9uIFdpKGUsdCxuLHIpe2xldCBpPVtdLGEsbyxzLGMsbCx1O2ZvcihhPTAsbz1lLmxlbmd0aCxsPTA7YTxvOysrYSl7cz1lW2FdLGM9cy5ib3gsYy51cGRhdGUocy53aWR0aHx8dC53LHMuaGVpZ2h0fHx0LmgsVWkocy5ob3Jpem9udGFsLHQpKTtsZXR7c2FtZTpvLG90aGVyOmR9PVZpKHQsbixzLHIpO2x8PW8mJmkubGVuZ3RoLHV8fD1kLGMuZnVsbFNpemV8fGkucHVzaChzKX1yZXR1cm4gbCYmV2koaSx0LG4scil8fHV9ZnVuY3Rpb24gR2koZSx0LG4scixpKXtlLnRvcD1uLGUubGVmdD10LGUucmlnaHQ9dCtyLGUuYm90dG9tPW4raSxlLndpZHRoPXIsZS5oZWlnaHQ9aX1mdW5jdGlvbiBLaShlLHQsbixyKXtsZXQgaT1uLnBhZGRpbmcse3g6YSx5Om99PXQ7Zm9yKGxldCBzIG9mIGUpe2xldCBlPXMuYm94LGM9cltzLnN0YWNrXXx8e2NvdW50OjEscGxhY2VkOjAsd2VpZ2h0OjF9LGw9cy5zdGFja1dlaWdodC9jLndlaWdodHx8MTtpZihzLmhvcml6b250YWwpe2xldCByPXQudypsLGE9Yy5zaXplfHxlLmhlaWdodDtaZShjLnN0YXJ0KSYmKG89Yy5zdGFydCksZS5mdWxsU2l6ZT9HaShlLGkubGVmdCxvLG4ub3V0ZXJXaWR0aC1pLnJpZ2h0LWkubGVmdCxhKTpHaShlLHQubGVmdCtjLnBsYWNlZCxvLHIsYSksYy5zdGFydD1vLGMucGxhY2VkKz1yLG89ZS5ib3R0b219ZWxzZXtsZXQgcj10LmgqbCxvPWMuc2l6ZXx8ZS53aWR0aDtaZShjLnN0YXJ0KSYmKGE9Yy5zdGFydCksZS5mdWxsU2l6ZT9HaShlLGEsaS50b3AsbyxuLm91dGVySGVpZ2h0LWkuYm90dG9tLWkudG9wKTpHaShlLGEsdC50b3ArYy5wbGFjZWQsbyxyKSxjLnN0YXJ0PWEsYy5wbGFjZWQrPXIsYT1lLnJpZ2h0fX10Lng9YSx0Lnk9b312YXIgcWk9e2FkZEJveChlLHQpe2UuYm94ZXN8fD1bXSx0LmZ1bGxTaXplPXQuZnVsbFNpemV8fCExLHQucG9zaXRpb249dC5wb3NpdGlvbnx8YHRvcGAsdC53ZWlnaHQ9dC53ZWlnaHR8fDAsdC5fbGF5ZXJzPXQuX2xheWVyc3x8ZnVuY3Rpb24oKXtyZXR1cm5be3o6MCxkcmF3KGUpe3QuZHJhdyhlKX19XX0sZS5ib3hlcy5wdXNoKHQpfSxyZW1vdmVCb3goZSx0KXtsZXQgbj1lLmJveGVzP2UuYm94ZXMuaW5kZXhPZih0KTotMTtuIT09LTEmJmUuYm94ZXMuc3BsaWNlKG4sMSl9LGNvbmZpZ3VyZShlLHQsbil7dC5mdWxsU2l6ZT1uLmZ1bGxTaXplLHQucG9zaXRpb249bi5wb3NpdGlvbix0LndlaWdodD1uLndlaWdodH0sdXBkYXRlKGUsdCxuLHIpe2lmKCFlKXJldHVybjtsZXQgaT1LKGUub3B0aW9ucy5sYXlvdXQucGFkZGluZyksYT1NYXRoLm1heCh0LWkud2lkdGgsMCksbz1NYXRoLm1heChuLWkuaGVpZ2h0LDApLHM9UmkoZS5ib3hlcyksYz1zLnZlcnRpY2FsLGw9cy5ob3Jpem9udGFsO0koZS5ib3hlcyxlPT57dHlwZW9mIGUuYmVmb3JlTGF5b3V0PT1gZnVuY3Rpb25gJiZlLmJlZm9yZUxheW91dCgpfSk7bGV0IHU9Yy5yZWR1Y2UoKGUsdCk9PnQuYm94Lm9wdGlvbnMmJnQuYm94Lm9wdGlvbnMuZGlzcGxheT09PSExP2U6ZSsxLDApfHwxLGQ9T2JqZWN0LmZyZWV6ZSh7b3V0ZXJXaWR0aDp0LG91dGVySGVpZ2h0Om4scGFkZGluZzppLGF2YWlsYWJsZVdpZHRoOmEsYXZhaWxhYmxlSGVpZ2h0Om8sdkJveE1heFdpZHRoOmEvMi91LGhCb3hNYXhIZWlnaHQ6by8yfSksZj1PYmplY3QuYXNzaWduKHt9LGkpO0JpKGYsSyhyKSk7bGV0IHA9T2JqZWN0LmFzc2lnbih7bWF4UGFkZGluZzpmLHc6YSxoOm8seDppLmxlZnQseTppLnRvcH0saSksbT1MaShjLmNvbmNhdChsKSxkKTtXaShzLmZ1bGxTaXplLHAsZCxtKSxXaShjLHAsZCxtKSxXaShsLHAsZCxtKSYmV2koYyxwLGQsbSksSGkocCksS2kocy5sZWZ0QW5kVG9wLHAsZCxtKSxwLngrPXAudyxwLnkrPXAuaCxLaShzLnJpZ2h0QW5kQm90dG9tLHAsZCxtKSxlLmNoYXJ0QXJlYT17bGVmdDpwLmxlZnQsdG9wOnAudG9wLHJpZ2h0OnAubGVmdCtwLncsYm90dG9tOnAudG9wK3AuaCxoZWlnaHQ6cC5oLHdpZHRoOnAud30sSShzLmNoYXJ0QXJlYSx0PT57bGV0IG49dC5ib3g7T2JqZWN0LmFzc2lnbihuLGUuY2hhcnRBcmVhKSxuLnVwZGF0ZShwLncscC5oLHtsZWZ0OjAsdG9wOjAscmlnaHQ6MCxib3R0b206MH0pfSl9fSxKaT1jbGFzc3thY3F1aXJlQ29udGV4dChlLHQpe31yZWxlYXNlQ29udGV4dChlKXtyZXR1cm4hMX1hZGRFdmVudExpc3RlbmVyKGUsdCxuKXt9cmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQsbil7fWdldERldmljZVBpeGVsUmF0aW8oKXtyZXR1cm4gMX1nZXRNYXhpbXVtU2l6ZShlLHQsbixyKXtyZXR1cm4gdD1NYXRoLm1heCgwLHR8fGUud2lkdGgpLG58fD1lLmhlaWdodCx7d2lkdGg6dCxoZWlnaHQ6TWF0aC5tYXgoMCxyP01hdGguZmxvb3IodC9yKTpuKX19aXNBdHRhY2hlZChlKXtyZXR1cm4hMH11cGRhdGVDb25maWcoZSl7fX0sWWk9Y2xhc3MgZXh0ZW5kcyBKaXthY3F1aXJlQ29udGV4dChlKXtyZXR1cm4gZSYmZS5nZXRDb250ZXh0JiZlLmdldENvbnRleHQoYDJkYCl8fG51bGx9dXBkYXRlQ29uZmlnKGUpe2Uub3B0aW9ucy5hbmltYXRpb249ITF9fSxYaT1gJGNoYXJ0anNgLFppPXt0b3VjaHN0YXJ0OmBtb3VzZWRvd25gLHRvdWNobW92ZTpgbW91c2Vtb3ZlYCx0b3VjaGVuZDpgbW91c2V1cGAscG9pbnRlcmVudGVyOmBtb3VzZWVudGVyYCxwb2ludGVyZG93bjpgbW91c2Vkb3duYCxwb2ludGVybW92ZTpgbW91c2Vtb3ZlYCxwb2ludGVydXA6YG1vdXNldXBgLHBvaW50ZXJsZWF2ZTpgbW91c2VvdXRgLHBvaW50ZXJvdXQ6YG1vdXNlb3V0YH0sUWk9ZT0+ZT09PW51bGx8fGU9PT1gYDtmdW5jdGlvbiAkaShlLHQpe2xldCBuPWUuc3R5bGUscj1lLmdldEF0dHJpYnV0ZShgaGVpZ2h0YCksaT1lLmdldEF0dHJpYnV0ZShgd2lkdGhgKTtpZihlW1hpXT17aW5pdGlhbDp7aGVpZ2h0OnIsd2lkdGg6aSxzdHlsZTp7ZGlzcGxheTpuLmRpc3BsYXksaGVpZ2h0Om4uaGVpZ2h0LHdpZHRoOm4ud2lkdGh9fX0sbi5kaXNwbGF5PW4uZGlzcGxheXx8YGJsb2NrYCxuLmJveFNpemluZz1uLmJveFNpemluZ3x8YGJvcmRlci1ib3hgLFFpKGkpKXtsZXQgdD1DcihlLGB3aWR0aGApO3QhPT12b2lkIDAmJihlLndpZHRoPXQpfWlmKFFpKHIpKXtpZihlLnN0eWxlLmhlaWdodD09PWBgKWUuaGVpZ2h0PWUud2lkdGgvKHR8fDIpO2Vsc2V7bGV0IHQ9Q3IoZSxgaGVpZ2h0YCk7dCE9PXZvaWQgMCYmKGUuaGVpZ2h0PXQpfX1yZXR1cm4gZX12YXIgZWE9U3I/e3Bhc3NpdmU6ITB9OiExO2Z1bmN0aW9uIHRhKGUsdCxuKXtlJiZlLmFkZEV2ZW50TGlzdGVuZXIodCxuLGVhKX1mdW5jdGlvbiBuYShlLHQsbil7ZSYmZS5jYW52YXMmJmUuY2FudmFzLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLGVhKX1mdW5jdGlvbiByYShlLHQpe2xldCBuPVppW2UudHlwZV18fGUudHlwZSx7eDpyLHk6aX09X3IoZSx0KTtyZXR1cm57dHlwZTpuLGNoYXJ0OnQsbmF0aXZlOmUseDpyPT09dm9pZCAwP251bGw6cix5Omk9PT12b2lkIDA/bnVsbDppfX1mdW5jdGlvbiBpYShlLHQpe2ZvcihsZXQgbiBvZiBlKWlmKG49PT10fHxuLmNvbnRhaW5zKHQpKXJldHVybiEwfWZ1bmN0aW9uIGFhKGUsdCxuKXtsZXQgcj1lLmNhbnZhcyxpPW5ldyBNdXRhdGlvbk9ic2VydmVyKGU9PntsZXQgdD0hMTtmb3IobGV0IG4gb2YgZSl0fHw9aWEobi5hZGRlZE5vZGVzLHIpLHQmJj0haWEobi5yZW1vdmVkTm9kZXMscik7dCYmbigpfSk7cmV0dXJuIGkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxpfWZ1bmN0aW9uIG9hKGUsdCxuKXtsZXQgcj1lLmNhbnZhcyxpPW5ldyBNdXRhdGlvbk9ic2VydmVyKGU9PntsZXQgdD0hMTtmb3IobGV0IG4gb2YgZSl0fHw9aWEobi5yZW1vdmVkTm9kZXMsciksdCYmPSFpYShuLmFkZGVkTm9kZXMscik7dCYmbigpfSk7cmV0dXJuIGkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KSxpfXZhciBzYT1uZXcgTWFwLGNhPTA7ZnVuY3Rpb24gbGEoKXtsZXQgZT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztlIT09Y2EmJihjYT1lLHNhLmZvckVhY2goKHQsbik9PntuLmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvIT09ZSYmdCgpfSkpfWZ1bmN0aW9uIHVhKGUsdCl7c2Euc2l6ZXx8d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHJlc2l6ZWAsbGEpLHNhLnNldChlLHQpfWZ1bmN0aW9uIGRhKGUpe3NhLmRlbGV0ZShlKSxzYS5zaXplfHx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcmVzaXplYCxsYSl9ZnVuY3Rpb24gZmEoZSx0LG4pe2xldCByPWUuY2FudmFzLGk9ciYmbHIocik7aWYoIWkpcmV0dXJuO2xldCBhPU10KChlLHQpPT57bGV0IHI9aS5jbGllbnRXaWR0aDtuKGUsdCkscjxpLmNsaWVudFdpZHRoJiZuKCl9LHdpbmRvdyksbz1uZXcgUmVzaXplT2JzZXJ2ZXIoZT0+e2xldCB0PWVbMF0sbj10LmNvbnRlbnRSZWN0LndpZHRoLHI9dC5jb250ZW50UmVjdC5oZWlnaHQ7KG4hPT0wfHxyIT09MCkmJmEobixyKX0pO3JldHVybiBvLm9ic2VydmUoaSksdWEoZSxhKSxvfWZ1bmN0aW9uIHBhKGUsdCxuKXtuJiZuLmRpc2Nvbm5lY3QoKSx0PT09YHJlc2l6ZWAmJmRhKGUpfWZ1bmN0aW9uIG1hKGUsdCxuKXtsZXQgcj1lLmNhbnZhcyxpPU10KHQ9PntlLmN0eCE9PW51bGwmJm4ocmEodCxlKSl9LGUpO3JldHVybiB0YShyLHQsaSksaX12YXIgaGE9Y2xhc3MgZXh0ZW5kcyBKaXthY3F1aXJlQ29udGV4dChlLHQpe2xldCBuPWUmJmUuZ2V0Q29udGV4dCYmZS5nZXRDb250ZXh0KGAyZGApO3JldHVybiBuJiZuLmNhbnZhcz09PWU/KCRpKGUsdCksbik6bnVsbH1yZWxlYXNlQ29udGV4dChlKXtsZXQgdD1lLmNhbnZhcztpZighdFtYaV0pcmV0dXJuITE7bGV0IG49dFtYaV0uaW5pdGlhbDtbYGhlaWdodGAsYHdpZHRoYF0uZm9yRWFjaChlPT57bGV0IHI9bltlXTtrKHIpP3QucmVtb3ZlQXR0cmlidXRlKGUpOnQuc2V0QXR0cmlidXRlKGUscil9KTtsZXQgcj1uLnN0eWxlfHx7fTtyZXR1cm4gT2JqZWN0LmtleXMocikuZm9yRWFjaChlPT57dC5zdHlsZVtlXT1yW2VdfSksdC53aWR0aD10LndpZHRoLGRlbGV0ZSB0W1hpXSwhMH1hZGRFdmVudExpc3RlbmVyKGUsdCxuKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSx0KTtsZXQgcj1lLiRwcm94aWVzfHw9e307clt0XT0oe2F0dGFjaDphYSxkZXRhY2g6b2EscmVzaXplOmZhfVt0XXx8bWEpKGUsdCxuKX1yZW1vdmVFdmVudExpc3RlbmVyKGUsdCl7bGV0IG49ZS4kcHJveGllc3x8PXt9LHI9blt0XTtyJiYoKHthdHRhY2g6cGEsZGV0YWNoOnBhLHJlc2l6ZTpwYX1bdF18fG5hKShlLHQsciksblt0XT12b2lkIDApfWdldERldmljZVBpeGVsUmF0aW8oKXtyZXR1cm4gd2luZG93LmRldmljZVBpeGVsUmF0aW99Z2V0TWF4aW11bVNpemUoZSx0LG4scil7cmV0dXJuIGJyKGUsdCxuLHIpfWlzQXR0YWNoZWQoZSl7bGV0IHQ9ZSYmbHIoZSk7cmV0dXJuISEodCYmdC5pc0Nvbm5lY3RlZCl9fTtmdW5jdGlvbiBnYShlKXtyZXR1cm4hY3IoKXx8dHlwZW9mIE9mZnNjcmVlbkNhbnZhczxgdWAmJmUgaW5zdGFuY2VvZiBPZmZzY3JlZW5DYW52YXM/WWk6aGF9dmFyIF9hPWNsYXNze3N0YXRpYyBkZWZhdWx0cz17fTtzdGF0aWMgZGVmYXVsdFJvdXRlcz12b2lkIDA7eDt5O2FjdGl2ZT0hMTtvcHRpb25zOyRhbmltYXRpb25zO3Rvb2x0aXBQb3NpdGlvbihlKXtsZXR7eDp0LHk6bn09dGhpcy5nZXRQcm9wcyhbYHhgLGB5YF0sZSk7cmV0dXJue3g6dCx5Om59fWhhc1ZhbHVlKCl7cmV0dXJuIGR0KHRoaXMueCkmJmR0KHRoaXMueSl9Z2V0UHJvcHMoZSx0KXtsZXQgbj10aGlzLiRhbmltYXRpb25zO2lmKCF0fHwhbilyZXR1cm4gdGhpcztsZXQgcj17fTtyZXR1cm4gZS5mb3JFYWNoKGU9PntyW2VdPW5bZV0mJm5bZV0uYWN0aXZlKCk/bltlXS5fdG86dGhpc1tlXX0pLHJ9fTtmdW5jdGlvbiB2YShlLHQpe2xldCBuPWUub3B0aW9ucy50aWNrcyxyPXlhKGUpLGk9TWF0aC5taW4obi5tYXhUaWNrc0xpbWl0fHxyLHIpLGE9bi5tYWpvci5lbmFibGVkP3hhKHQpOltdLG89YS5sZW5ndGgscz1hWzBdLGM9YVtvLTFdLGw9W107aWYobz5pKXJldHVybiBTYSh0LGwsYSxvL2kpLGw7bGV0IHU9YmEoYSx0LGkpO2lmKG8+MCl7bGV0IGUsbixyPW8+MT9NYXRoLnJvdW5kKChjLXMpLyhvLTEpKTpudWxsO2ZvcihDYSh0LGwsdSxrKHIpPzA6cy1yLHMpLGU9MCxuPW8tMTtlPG47ZSsrKUNhKHQsbCx1LGFbZV0sYVtlKzFdKTtyZXR1cm4gQ2EodCxsLHUsYyxrKHIpP3QubGVuZ3RoOmMrciksbH1yZXR1cm4gQ2EodCxsLHUpLGx9ZnVuY3Rpb24geWEoZSl7bGV0IHQ9ZS5vcHRpb25zLm9mZnNldCxuPWUuX3RpY2tTaXplKCkscj1lLl9sZW5ndGgvbisgKyF0LGk9ZS5fbWF4TGVuZ3RoL247cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5taW4ocixpKSl9ZnVuY3Rpb24gYmEoZSx0LG4pe2xldCByPXdhKGUpLGk9dC5sZW5ndGgvbjtpZighcilyZXR1cm4gTWF0aC5tYXgoaSwxKTtsZXQgYT1sdChyKTtmb3IobGV0IGU9MCx0PWEubGVuZ3RoLTE7ZTx0O2UrKyl7bGV0IHQ9YVtlXTtpZih0PmkpcmV0dXJuIHR9cmV0dXJuIE1hdGgubWF4KGksMSl9ZnVuY3Rpb24geGEoZSl7bGV0IHQ9W10sbixyO2ZvcihuPTAscj1lLmxlbmd0aDtuPHI7bisrKWVbbl0ubWFqb3ImJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiBTYShlLHQsbixyKXtsZXQgaT0wLGE9blswXSxvO2ZvcihyPU1hdGguY2VpbChyKSxvPTA7bzxlLmxlbmd0aDtvKyspbz09PWEmJih0LnB1c2goZVtvXSksaSsrLGE9bltpKnJdKX1mdW5jdGlvbiBDYShlLHQsbixyLGkpe2xldCBhPVAociwwKSxvPU1hdGgubWluKFAoaSxlLmxlbmd0aCksZS5sZW5ndGgpLHM9MCxjLGwsdTtmb3Iobj1NYXRoLmNlaWwobiksaSYmKGM9aS1yLG49Yy9NYXRoLmZsb29yKGMvbikpLHU9YTt1PDA7KXMrKyx1PU1hdGgucm91bmQoYStzKm4pO2ZvcihsPU1hdGgubWF4KGEsMCk7bDxvO2wrKylsPT09dSYmKHQucHVzaChlW2xdKSxzKyssdT1NYXRoLnJvdW5kKGErcypuKSl9ZnVuY3Rpb24gd2EoZSl7bGV0IHQ9ZS5sZW5ndGgsbixyO2lmKHQ8MilyZXR1cm4hMTtmb3Iocj1lWzBdLG49MTtuPHQ7KytuKWlmKGVbbl0tZVtuLTFdIT09cilyZXR1cm4hMTtyZXR1cm4gcn12YXIgVGE9ZT0+ZT09PWBsZWZ0YD9gcmlnaHRgOmU9PT1gcmlnaHRgP2BsZWZ0YDplLEVhPShlLHQsbik9PnQ9PT1gdG9wYHx8dD09PWBsZWZ0YD9lW3RdK246ZVt0XS1uLERhPShlLHQpPT5NYXRoLm1pbih0fHxlLGUpO2Z1bmN0aW9uIE9hKGUsdCl7bGV0IG49W10scj1lLmxlbmd0aC90LGk9ZS5sZW5ndGgsYT0wO2Zvcig7YTxpO2ErPXIpbi5wdXNoKGVbTWF0aC5mbG9vcihhKV0pO3JldHVybiBufWZ1bmN0aW9uIGthKGUsdCxuKXtsZXQgcj1lLnRpY2tzLmxlbmd0aCxpPU1hdGgubWluKHQsci0xKSxhPWUuX3N0YXJ0UGl4ZWwsbz1lLl9lbmRQaXhlbCxzPTFlLTYsYz1lLmdldFBpeGVsRm9yVGljayhpKSxsO2lmKCEobiYmKGw9cj09PTE/TWF0aC5tYXgoYy1hLG8tYyk6dD09PTA/KGUuZ2V0UGl4ZWxGb3JUaWNrKDEpLWMpLzI6KGMtZS5nZXRQaXhlbEZvclRpY2soaS0xKSkvMixjKz1pPHQ/bDotbCxjPGEtc3x8Yz5vK3MpKSlyZXR1cm4gY31mdW5jdGlvbiBBYShlLHQpe0koZSxlPT57bGV0IG49ZS5nYyxyPW4ubGVuZ3RoLzIsaTtpZihyPnQpe2ZvcihpPTA7aTxyOysraSlkZWxldGUgZS5kYXRhW25baV1dO24uc3BsaWNlKDAscil9fSl9ZnVuY3Rpb24gamEoZSl7cmV0dXJuIGUuZHJhd1RpY2tzP2UudGlja0xlbmd0aDowfWZ1bmN0aW9uIE1hKGUsdCl7aWYoIWUuZGlzcGxheSlyZXR1cm4gMDtsZXQgbj1xKGUuZm9udCx0KSxyPUsoZS5wYWRkaW5nKTtyZXR1cm4oQShlLnRleHQpP2UudGV4dC5sZW5ndGg6MSkqbi5saW5lSGVpZ2h0K3IuaGVpZ2h0fWZ1bmN0aW9uIE5hKGUsdCl7cmV0dXJuIE1uKGUse3NjYWxlOnQsdHlwZTpgc2NhbGVgfSl9ZnVuY3Rpb24gUGEoZSx0LG4pe3JldHVybiBNbihlLHt0aWNrOm4saW5kZXg6dCx0eXBlOmB0aWNrYH0pfWZ1bmN0aW9uIEZhKGUsdCxuKXtsZXQgcj1QdChlKTtyZXR1cm4obiYmdCE9PWByaWdodGB8fCFuJiZ0PT09YHJpZ2h0YCkmJihyPVRhKHIpKSxyfWZ1bmN0aW9uIElhKGUsdCxuLHIpe2xldHt0b3A6aSxsZWZ0OmEsYm90dG9tOm8scmlnaHQ6cyxjaGFydDpjfT1lLHtjaGFydEFyZWE6bCxzY2FsZXM6dX09YyxkPTAsZixwLG0saD1vLWksZz1zLWE7aWYoZS5pc0hvcml6b250YWwoKSl7aWYocD1VKHIsYSxzKSxqKG4pKXtsZXQgZT1PYmplY3Qua2V5cyhuKVswXSxyPW5bZV07bT11W2VdLmdldFBpeGVsRm9yVmFsdWUocikraC10fWVsc2UgbT1uPT09YGNlbnRlcmA/KGwuYm90dG9tK2wudG9wKS8yK2gtdDpFYShlLG4sdCk7Zj1zLWF9ZWxzZXtpZihqKG4pKXtsZXQgZT1PYmplY3Qua2V5cyhuKVswXSxyPW5bZV07cD11W2VdLmdldFBpeGVsRm9yVmFsdWUociktZyt0fWVsc2UgcD1uPT09YGNlbnRlcmA/KGwubGVmdCtsLnJpZ2h0KS8yLWcrdDpFYShlLG4sdCk7bT1VKHIsbyxpKSxkPW49PT1gbGVmdGA/LXo6en1yZXR1cm57dGl0bGVYOnAsdGl0bGVZOm0sbWF4V2lkdGg6Zixyb3RhdGlvbjpkfX12YXIgTGE9Y2xhc3MgZSBleHRlbmRzIF9he2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksdGhpcy5pZD1lLmlkLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5vcHRpb25zPXZvaWQgMCx0aGlzLmN0eD1lLmN0eCx0aGlzLmNoYXJ0PWUuY2hhcnQsdGhpcy50b3A9dm9pZCAwLHRoaXMuYm90dG9tPXZvaWQgMCx0aGlzLmxlZnQ9dm9pZCAwLHRoaXMucmlnaHQ9dm9pZCAwLHRoaXMud2lkdGg9dm9pZCAwLHRoaXMuaGVpZ2h0PXZvaWQgMCx0aGlzLl9tYXJnaW5zPXtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH0sdGhpcy5tYXhXaWR0aD12b2lkIDAsdGhpcy5tYXhIZWlnaHQ9dm9pZCAwLHRoaXMucGFkZGluZ1RvcD12b2lkIDAsdGhpcy5wYWRkaW5nQm90dG9tPXZvaWQgMCx0aGlzLnBhZGRpbmdMZWZ0PXZvaWQgMCx0aGlzLnBhZGRpbmdSaWdodD12b2lkIDAsdGhpcy5heGlzPXZvaWQgMCx0aGlzLmxhYmVsUm90YXRpb249dm9pZCAwLHRoaXMubWluPXZvaWQgMCx0aGlzLm1heD12b2lkIDAsdGhpcy5fcmFuZ2U9dm9pZCAwLHRoaXMudGlja3M9W10sdGhpcy5fZ3JpZExpbmVJdGVtcz1udWxsLHRoaXMuX2xhYmVsSXRlbXM9bnVsbCx0aGlzLl9sYWJlbFNpemVzPW51bGwsdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWF4TGVuZ3RoPTAsdGhpcy5fbG9uZ2VzdFRleHRDYWNoZT17fSx0aGlzLl9zdGFydFBpeGVsPXZvaWQgMCx0aGlzLl9lbmRQaXhlbD12b2lkIDAsdGhpcy5fcmV2ZXJzZVBpeGVscz0hMSx0aGlzLl91c2VyTWF4PXZvaWQgMCx0aGlzLl91c2VyTWluPXZvaWQgMCx0aGlzLl9zdWdnZXN0ZWRNYXg9dm9pZCAwLHRoaXMuX3N1Z2dlc3RlZE1pbj12b2lkIDAsdGhpcy5fdGlja3NMZW5ndGg9MCx0aGlzLl9ib3JkZXJWYWx1ZT0wLHRoaXMuX2NhY2hlPXt9LHRoaXMuX2RhdGFMaW1pdHNDYWNoZWQ9ITEsdGhpcy4kY29udGV4dD12b2lkIDB9aW5pdChlKXt0aGlzLm9wdGlvbnM9ZS5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSx0aGlzLmF4aXM9ZS5heGlzLHRoaXMuX3VzZXJNaW49dGhpcy5wYXJzZShlLm1pbiksdGhpcy5fdXNlck1heD10aGlzLnBhcnNlKGUubWF4KSx0aGlzLl9zdWdnZXN0ZWRNaW49dGhpcy5wYXJzZShlLnN1Z2dlc3RlZE1pbiksdGhpcy5fc3VnZ2VzdGVkTWF4PXRoaXMucGFyc2UoZS5zdWdnZXN0ZWRNYXgpfXBhcnNlKGUsdCl7cmV0dXJuIGV9Z2V0VXNlckJvdW5kcygpe2xldHtfdXNlck1pbjplLF91c2VyTWF4OnQsX3N1Z2dlc3RlZE1pbjpuLF9zdWdnZXN0ZWRNYXg6cn09dGhpcztyZXR1cm4gZT1OKGUsMS8wKSx0PU4odCwtMS8wKSxuPU4obiwxLzApLHI9TihyLC0xLzApLHttaW46TihlLG4pLG1heDpOKHQsciksbWluRGVmaW5lZDpNKGUpLG1heERlZmluZWQ6TSh0KX19Z2V0TWluTWF4KGUpe2xldHttaW46dCxtYXg6bixtaW5EZWZpbmVkOnIsbWF4RGVmaW5lZDppfT10aGlzLmdldFVzZXJCb3VuZHMoKSxhO2lmKHImJmkpcmV0dXJue21pbjp0LG1heDpufTtsZXQgbz10aGlzLmdldE1hdGNoaW5nVmlzaWJsZU1ldGFzKCk7Zm9yKGxldCBzPTAsYz1vLmxlbmd0aDtzPGM7KytzKWE9b1tzXS5jb250cm9sbGVyLmdldE1pbk1heCh0aGlzLGUpLHJ8fCh0PU1hdGgubWluKHQsYS5taW4pKSxpfHwobj1NYXRoLm1heChuLGEubWF4KSk7cmV0dXJuIHQ9aSYmdD5uP246dCxuPXImJnQ+bj90Om4se21pbjpOKHQsTihuLHQpKSxtYXg6TihuLE4odCxuKSl9fWdldFBhZGRpbmcoKXtyZXR1cm57bGVmdDp0aGlzLnBhZGRpbmdMZWZ0fHwwLHRvcDp0aGlzLnBhZGRpbmdUb3B8fDAscmlnaHQ6dGhpcy5wYWRkaW5nUmlnaHR8fDAsYm90dG9tOnRoaXMucGFkZGluZ0JvdHRvbXx8MH19Z2V0VGlja3MoKXtyZXR1cm4gdGhpcy50aWNrc31nZXRMYWJlbHMoKXtsZXQgZT10aGlzLmNoYXJ0LmRhdGE7cmV0dXJuIHRoaXMub3B0aW9ucy5sYWJlbHN8fCh0aGlzLmlzSG9yaXpvbnRhbCgpP2UueExhYmVsczplLnlMYWJlbHMpfHxlLmxhYmVsc3x8W119Z2V0TGFiZWxJdGVtcyhlPXRoaXMuY2hhcnQuY2hhcnRBcmVhKXtyZXR1cm4gdGhpcy5fbGFiZWxJdGVtc3x8PXRoaXMuX2NvbXB1dGVMYWJlbEl0ZW1zKGUpfWJlZm9yZUxheW91dCgpe3RoaXMuX2NhY2hlPXt9LHRoaXMuX2RhdGFMaW1pdHNDYWNoZWQ9ITF9YmVmb3JlVXBkYXRlKCl7Rih0aGlzLm9wdGlvbnMuYmVmb3JlVXBkYXRlLFt0aGlzXSl9dXBkYXRlKGUsdCxuKXtsZXR7YmVnaW5BdFplcm86cixncmFjZTppLHRpY2tzOmF9PXRoaXMub3B0aW9ucyxvPWEuc2FtcGxlU2l6ZTt0aGlzLmJlZm9yZVVwZGF0ZSgpLHRoaXMubWF4V2lkdGg9ZSx0aGlzLm1heEhlaWdodD10LHRoaXMuX21hcmdpbnM9bj1PYmplY3QuYXNzaWduKHtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH0sbiksdGhpcy50aWNrcz1udWxsLHRoaXMuX2xhYmVsU2l6ZXM9bnVsbCx0aGlzLl9ncmlkTGluZUl0ZW1zPW51bGwsdGhpcy5fbGFiZWxJdGVtcz1udWxsLHRoaXMuYmVmb3JlU2V0RGltZW5zaW9ucygpLHRoaXMuc2V0RGltZW5zaW9ucygpLHRoaXMuYWZ0ZXJTZXREaW1lbnNpb25zKCksdGhpcy5fbWF4TGVuZ3RoPXRoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy53aWR0aCtuLmxlZnQrbi5yaWdodDp0aGlzLmhlaWdodCtuLnRvcCtuLmJvdHRvbSx0aGlzLl9kYXRhTGltaXRzQ2FjaGVkfHw9KHRoaXMuYmVmb3JlRGF0YUxpbWl0cygpLHRoaXMuZGV0ZXJtaW5lRGF0YUxpbWl0cygpLHRoaXMuYWZ0ZXJEYXRhTGltaXRzKCksdGhpcy5fcmFuZ2U9am4odGhpcyxpLHIpLCEwKSx0aGlzLmJlZm9yZUJ1aWxkVGlja3MoKSx0aGlzLnRpY2tzPXRoaXMuYnVpbGRUaWNrcygpfHxbXSx0aGlzLmFmdGVyQnVpbGRUaWNrcygpO2xldCBzPW88dGhpcy50aWNrcy5sZW5ndGg7dGhpcy5fY29udmVydFRpY2tzVG9MYWJlbHMocz9PYSh0aGlzLnRpY2tzLG8pOnRoaXMudGlja3MpLHRoaXMuY29uZmlndXJlKCksdGhpcy5iZWZvcmVDYWxjdWxhdGVMYWJlbFJvdGF0aW9uKCksdGhpcy5jYWxjdWxhdGVMYWJlbFJvdGF0aW9uKCksdGhpcy5hZnRlckNhbGN1bGF0ZUxhYmVsUm90YXRpb24oKSxhLmRpc3BsYXkmJihhLmF1dG9Ta2lwfHxhLnNvdXJjZT09PWBhdXRvYCkmJih0aGlzLnRpY2tzPXZhKHRoaXMsdGhpcy50aWNrcyksdGhpcy5fbGFiZWxTaXplcz1udWxsLHRoaXMuYWZ0ZXJBdXRvU2tpcCgpKSxzJiZ0aGlzLl9jb252ZXJ0VGlja3NUb0xhYmVscyh0aGlzLnRpY2tzKSx0aGlzLmJlZm9yZUZpdCgpLHRoaXMuZml0KCksdGhpcy5hZnRlckZpdCgpLHRoaXMuYWZ0ZXJVcGRhdGUoKX1jb25maWd1cmUoKXtsZXQgZT10aGlzLm9wdGlvbnMucmV2ZXJzZSx0LG47dGhpcy5pc0hvcml6b250YWwoKT8odD10aGlzLmxlZnQsbj10aGlzLnJpZ2h0KToodD10aGlzLnRvcCxuPXRoaXMuYm90dG9tLGU9IWUpLHRoaXMuX3N0YXJ0UGl4ZWw9dCx0aGlzLl9lbmRQaXhlbD1uLHRoaXMuX3JldmVyc2VQaXhlbHM9ZSx0aGlzLl9sZW5ndGg9bi10LHRoaXMuX2FsaWduVG9QaXhlbHM9dGhpcy5vcHRpb25zLmFsaWduVG9QaXhlbHN9YWZ0ZXJVcGRhdGUoKXtGKHRoaXMub3B0aW9ucy5hZnRlclVwZGF0ZSxbdGhpc10pfWJlZm9yZVNldERpbWVuc2lvbnMoKXtGKHRoaXMub3B0aW9ucy5iZWZvcmVTZXREaW1lbnNpb25zLFt0aGlzXSl9c2V0RGltZW5zaW9ucygpe3RoaXMuaXNIb3Jpem9udGFsKCk/KHRoaXMud2lkdGg9dGhpcy5tYXhXaWR0aCx0aGlzLmxlZnQ9MCx0aGlzLnJpZ2h0PXRoaXMud2lkdGgpOih0aGlzLmhlaWdodD10aGlzLm1heEhlaWdodCx0aGlzLnRvcD0wLHRoaXMuYm90dG9tPXRoaXMuaGVpZ2h0KSx0aGlzLnBhZGRpbmdMZWZ0PTAsdGhpcy5wYWRkaW5nVG9wPTAsdGhpcy5wYWRkaW5nUmlnaHQ9MCx0aGlzLnBhZGRpbmdCb3R0b209MH1hZnRlclNldERpbWVuc2lvbnMoKXtGKHRoaXMub3B0aW9ucy5hZnRlclNldERpbWVuc2lvbnMsW3RoaXNdKX1fY2FsbEhvb2tzKGUpe3RoaXMuY2hhcnQubm90aWZ5UGx1Z2lucyhlLHRoaXMuZ2V0Q29udGV4dCgpKSxGKHRoaXMub3B0aW9uc1tlXSxbdGhpc10pfWJlZm9yZURhdGFMaW1pdHMoKXt0aGlzLl9jYWxsSG9va3MoYGJlZm9yZURhdGFMaW1pdHNgKX1kZXRlcm1pbmVEYXRhTGltaXRzKCl7fWFmdGVyRGF0YUxpbWl0cygpe3RoaXMuX2NhbGxIb29rcyhgYWZ0ZXJEYXRhTGltaXRzYCl9YmVmb3JlQnVpbGRUaWNrcygpe3RoaXMuX2NhbGxIb29rcyhgYmVmb3JlQnVpbGRUaWNrc2ApfWJ1aWxkVGlja3MoKXtyZXR1cm5bXX1hZnRlckJ1aWxkVGlja3MoKXt0aGlzLl9jYWxsSG9va3MoYGFmdGVyQnVpbGRUaWNrc2ApfWJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbigpe0YodGhpcy5vcHRpb25zLmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbixbdGhpc10pfWdlbmVyYXRlVGlja0xhYmVscyhlKXtsZXQgdD10aGlzLm9wdGlvbnMudGlja3MsbixyLGk7Zm9yKG49MCxyPWUubGVuZ3RoO248cjtuKyspaT1lW25dLGkubGFiZWw9Rih0LmNhbGxiYWNrLFtpLnZhbHVlLG4sZV0sdGhpcyl9YWZ0ZXJUaWNrVG9MYWJlbENvbnZlcnNpb24oKXtGKHRoaXMub3B0aW9ucy5hZnRlclRpY2tUb0xhYmVsQ29udmVyc2lvbixbdGhpc10pfWJlZm9yZUNhbGN1bGF0ZUxhYmVsUm90YXRpb24oKXtGKHRoaXMub3B0aW9ucy5iZWZvcmVDYWxjdWxhdGVMYWJlbFJvdGF0aW9uLFt0aGlzXSl9Y2FsY3VsYXRlTGFiZWxSb3RhdGlvbigpe2xldCBlPXRoaXMub3B0aW9ucyx0PWUudGlja3Msbj1EYSh0aGlzLnRpY2tzLmxlbmd0aCxlLnRpY2tzLm1heFRpY2tzTGltaXQpLHI9dC5taW5Sb3RhdGlvbnx8MCxpPXQubWF4Um90YXRpb24sYT1yLG8scyxjO2lmKCF0aGlzLl9pc1Zpc2libGUoKXx8IXQuZGlzcGxheXx8cj49aXx8bjw9MXx8IXRoaXMuaXNIb3Jpem9udGFsKCkpe3RoaXMubGFiZWxSb3RhdGlvbj1yO3JldHVybn1sZXQgbD10aGlzLl9nZXRMYWJlbFNpemVzKCksdT1sLndpZGVzdC53aWR0aCxkPWwuaGlnaGVzdC5oZWlnaHQsZj1IKHRoaXMuY2hhcnQud2lkdGgtdSwwLHRoaXMubWF4V2lkdGgpO289ZS5vZmZzZXQ/dGhpcy5tYXhXaWR0aC9uOmYvKG4tMSksdSs2Pm8mJihvPWYvKG4tKGUub2Zmc2V0Py41OjEpKSxzPXRoaXMubWF4SGVpZ2h0LWphKGUuZ3JpZCktdC5wYWRkaW5nLU1hKGUudGl0bGUsdGhpcy5jaGFydC5vcHRpb25zLmZvbnQpLGM9TWF0aC5zcXJ0KHUqdStkKmQpLGE9aHQoTWF0aC5taW4oTWF0aC5hc2luKEgoKGwuaGlnaGVzdC5oZWlnaHQrNikvbywtMSwxKSksTWF0aC5hc2luKEgocy9jLC0xLDEpKS1NYXRoLmFzaW4oSChkL2MsLTEsMSkpKSksYT1NYXRoLm1heChyLE1hdGgubWluKGksYSkpKSx0aGlzLmxhYmVsUm90YXRpb249YX1hZnRlckNhbGN1bGF0ZUxhYmVsUm90YXRpb24oKXtGKHRoaXMub3B0aW9ucy5hZnRlckNhbGN1bGF0ZUxhYmVsUm90YXRpb24sW3RoaXNdKX1hZnRlckF1dG9Ta2lwKCl7fWJlZm9yZUZpdCgpe0YodGhpcy5vcHRpb25zLmJlZm9yZUZpdCxbdGhpc10pfWZpdCgpe2xldCBlPXt3aWR0aDowLGhlaWdodDowfSx7Y2hhcnQ6dCxvcHRpb25zOnt0aWNrczpuLHRpdGxlOnIsZ3JpZDppfX09dGhpcyxhPXRoaXMuX2lzVmlzaWJsZSgpLG89dGhpcy5pc0hvcml6b250YWwoKTtpZihhKXtsZXQgYT1NYShyLHQub3B0aW9ucy5mb250KTtpZihvPyhlLndpZHRoPXRoaXMubWF4V2lkdGgsZS5oZWlnaHQ9amEoaSkrYSk6KGUuaGVpZ2h0PXRoaXMubWF4SGVpZ2h0LGUud2lkdGg9amEoaSkrYSksbi5kaXNwbGF5JiZ0aGlzLnRpY2tzLmxlbmd0aCl7bGV0e2ZpcnN0OnQsbGFzdDpyLHdpZGVzdDppLGhpZ2hlc3Q6YX09dGhpcy5fZ2V0TGFiZWxTaXplcygpLHM9bi5wYWRkaW5nKjIsYz1tdCh0aGlzLmxhYmVsUm90YXRpb24pLGw9TWF0aC5jb3MoYyksdT1NYXRoLnNpbihjKTtpZihvKXtsZXQgdD1uLm1pcnJvcj8wOnUqaS53aWR0aCtsKmEuaGVpZ2h0O2UuaGVpZ2h0PU1hdGgubWluKHRoaXMubWF4SGVpZ2h0LGUuaGVpZ2h0K3Qrcyl9ZWxzZXtsZXQgdD1uLm1pcnJvcj8wOmwqaS53aWR0aCt1KmEuaGVpZ2h0O2Uud2lkdGg9TWF0aC5taW4odGhpcy5tYXhXaWR0aCxlLndpZHRoK3Qrcyl9dGhpcy5fY2FsY3VsYXRlUGFkZGluZyh0LHIsdSxsKX19dGhpcy5faGFuZGxlTWFyZ2lucygpLG8/KHRoaXMud2lkdGg9dGhpcy5fbGVuZ3RoPXQud2lkdGgtdGhpcy5fbWFyZ2lucy5sZWZ0LXRoaXMuX21hcmdpbnMucmlnaHQsdGhpcy5oZWlnaHQ9ZS5oZWlnaHQpOih0aGlzLndpZHRoPWUud2lkdGgsdGhpcy5oZWlnaHQ9dGhpcy5fbGVuZ3RoPXQuaGVpZ2h0LXRoaXMuX21hcmdpbnMudG9wLXRoaXMuX21hcmdpbnMuYm90dG9tKX1fY2FsY3VsYXRlUGFkZGluZyhlLHQsbixyKXtsZXR7dGlja3M6e2FsaWduOmkscGFkZGluZzphfSxwb3NpdGlvbjpvfT10aGlzLm9wdGlvbnMscz10aGlzLmxhYmVsUm90YXRpb24hPT0wLGM9byE9PWB0b3BgJiZ0aGlzLmF4aXM9PT1geGA7aWYodGhpcy5pc0hvcml6b250YWwoKSl7bGV0IG89dGhpcy5nZXRQaXhlbEZvclRpY2soMCktdGhpcy5sZWZ0LGw9dGhpcy5yaWdodC10aGlzLmdldFBpeGVsRm9yVGljayh0aGlzLnRpY2tzLmxlbmd0aC0xKSx1PTAsZD0wO3M/Yz8odT1yKmUud2lkdGgsZD1uKnQuaGVpZ2h0KToodT1uKmUuaGVpZ2h0LGQ9cip0LndpZHRoKTppPT09YHN0YXJ0YD9kPXQud2lkdGg6aT09PWBlbmRgP3U9ZS53aWR0aDppIT09YGlubmVyYCYmKHU9ZS53aWR0aC8yLGQ9dC53aWR0aC8yKSx0aGlzLnBhZGRpbmdMZWZ0PU1hdGgubWF4KCh1LW8rYSkqdGhpcy53aWR0aC8odGhpcy53aWR0aC1vKSwwKSx0aGlzLnBhZGRpbmdSaWdodD1NYXRoLm1heCgoZC1sK2EpKnRoaXMud2lkdGgvKHRoaXMud2lkdGgtbCksMCl9ZWxzZXtsZXQgbj10LmhlaWdodC8yLHI9ZS5oZWlnaHQvMjtpPT09YHN0YXJ0YD8obj0wLHI9ZS5oZWlnaHQpOmk9PT1gZW5kYCYmKG49dC5oZWlnaHQscj0wKSx0aGlzLnBhZGRpbmdUb3A9bithLHRoaXMucGFkZGluZ0JvdHRvbT1yK2F9fV9oYW5kbGVNYXJnaW5zKCl7dGhpcy5fbWFyZ2lucyYmKHRoaXMuX21hcmdpbnMubGVmdD1NYXRoLm1heCh0aGlzLnBhZGRpbmdMZWZ0LHRoaXMuX21hcmdpbnMubGVmdCksdGhpcy5fbWFyZ2lucy50b3A9TWF0aC5tYXgodGhpcy5wYWRkaW5nVG9wLHRoaXMuX21hcmdpbnMudG9wKSx0aGlzLl9tYXJnaW5zLnJpZ2h0PU1hdGgubWF4KHRoaXMucGFkZGluZ1JpZ2h0LHRoaXMuX21hcmdpbnMucmlnaHQpLHRoaXMuX21hcmdpbnMuYm90dG9tPU1hdGgubWF4KHRoaXMucGFkZGluZ0JvdHRvbSx0aGlzLl9tYXJnaW5zLmJvdHRvbSkpfWFmdGVyRml0KCl7Rih0aGlzLm9wdGlvbnMuYWZ0ZXJGaXQsW3RoaXNdKX1pc0hvcml6b250YWwoKXtsZXR7YXhpczplLHBvc2l0aW9uOnR9PXRoaXMub3B0aW9ucztyZXR1cm4gdD09PWB0b3BgfHx0PT09YGJvdHRvbWB8fGU9PT1geGB9aXNGdWxsU2l6ZSgpe3JldHVybiB0aGlzLm9wdGlvbnMuZnVsbFNpemV9X2NvbnZlcnRUaWNrc1RvTGFiZWxzKGUpe3RoaXMuYmVmb3JlVGlja1RvTGFiZWxDb252ZXJzaW9uKCksdGhpcy5nZW5lcmF0ZVRpY2tMYWJlbHMoZSk7bGV0IHQsbjtmb3IodD0wLG49ZS5sZW5ndGg7dDxuO3QrKylrKGVbdF0ubGFiZWwpJiYoZS5zcGxpY2UodCwxKSxuLS0sdC0tKTt0aGlzLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uKCl9X2dldExhYmVsU2l6ZXMoKXtsZXQgZT10aGlzLl9sYWJlbFNpemVzO2lmKCFlKXtsZXQgdD10aGlzLm9wdGlvbnMudGlja3Muc2FtcGxlU2l6ZSxuPXRoaXMudGlja3M7dDxuLmxlbmd0aCYmKG49T2Eobix0KSksdGhpcy5fbGFiZWxTaXplcz1lPXRoaXMuX2NvbXB1dGVMYWJlbFNpemVzKG4sbi5sZW5ndGgsdGhpcy5vcHRpb25zLnRpY2tzLm1heFRpY2tzTGltaXQpfXJldHVybiBlfV9jb21wdXRlTGFiZWxTaXplcyhlLHQsbil7bGV0e2N0eDpyLF9sb25nZXN0VGV4dENhY2hlOml9PXRoaXMsYT1bXSxvPVtdLHM9TWF0aC5mbG9vcih0L0RhKHQsbikpLGM9MCxsPTAsdSxkLGYscCxtLGgsZyxfLHYseSxiO2Zvcih1PTA7dTx0O3UrPXMpe2lmKHA9ZVt1XS5sYWJlbCxtPXRoaXMuX3Jlc29sdmVUaWNrRm9udE9wdGlvbnModSksci5mb250PWg9bS5zdHJpbmcsZz1pW2hdPWlbaF18fHtkYXRhOnt9LGdjOltdfSxfPW0ubGluZUhlaWdodCx2PXk9MCwhayhwKSYmIUEocCkpdj1jbihyLGcuZGF0YSxnLmdjLHYscCkseT1fO2Vsc2UgaWYoQShwKSlmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmOysrZCliPXBbZF0sIWsoYikmJiFBKGIpJiYodj1jbihyLGcuZGF0YSxnLmdjLHYsYikseSs9Xyk7YS5wdXNoKHYpLG8ucHVzaCh5KSxjPU1hdGgubWF4KHYsYyksbD1NYXRoLm1heCh5LGwpfUFhKGksdCk7bGV0IHg9YS5pbmRleE9mKGMpLFM9by5pbmRleE9mKGwpLEM9ZT0+KHt3aWR0aDphW2VdfHwwLGhlaWdodDpvW2VdfHwwfSk7cmV0dXJue2ZpcnN0OkMoMCksbGFzdDpDKHQtMSksd2lkZXN0OkMoeCksaGlnaGVzdDpDKFMpLHdpZHRoczphLGhlaWdodHM6b319Z2V0TGFiZWxGb3JWYWx1ZShlKXtyZXR1cm4gZX1nZXRQaXhlbEZvclZhbHVlKGUsdCl7cmV0dXJuIE5hTn1nZXRWYWx1ZUZvclBpeGVsKGUpe31nZXRQaXhlbEZvclRpY2soZSl7bGV0IHQ9dGhpcy50aWNrcztyZXR1cm4gZTwwfHxlPnQubGVuZ3RoLTE/bnVsbDp0aGlzLmdldFBpeGVsRm9yVmFsdWUodFtlXS52YWx1ZSl9Z2V0UGl4ZWxGb3JEZWNpbWFsKGUpe3RoaXMuX3JldmVyc2VQaXhlbHMmJihlPTEtZSk7bGV0IHQ9dGhpcy5fc3RhcnRQaXhlbCtlKnRoaXMuX2xlbmd0aDtyZXR1cm4geHQodGhpcy5fYWxpZ25Ub1BpeGVscz91bih0aGlzLmNoYXJ0LHQsMCk6dCl9Z2V0RGVjaW1hbEZvclBpeGVsKGUpe2xldCB0PShlLXRoaXMuX3N0YXJ0UGl4ZWwpL3RoaXMuX2xlbmd0aDtyZXR1cm4gdGhpcy5fcmV2ZXJzZVBpeGVscz8xLXQ6dH1nZXRCYXNlUGl4ZWwoKXtyZXR1cm4gdGhpcy5nZXRQaXhlbEZvclZhbHVlKHRoaXMuZ2V0QmFzZVZhbHVlKCkpfWdldEJhc2VWYWx1ZSgpe2xldHttaW46ZSxtYXg6dH09dGhpcztyZXR1cm4gZTwwJiZ0PDA/dDplPjAmJnQ+MD9lOjB9Z2V0Q29udGV4dChlKXtsZXQgdD10aGlzLnRpY2tzfHxbXTtpZihlPj0wJiZlPHQubGVuZ3RoKXtsZXQgbj10W2VdO3JldHVybiBuLiRjb250ZXh0fHw9UGEodGhpcy5nZXRDb250ZXh0KCksZSxuKX1yZXR1cm4gdGhpcy4kY29udGV4dHx8PU5hKHRoaXMuY2hhcnQuZ2V0Q29udGV4dCgpLHRoaXMpfV90aWNrU2l6ZSgpe2xldCBlPXRoaXMub3B0aW9ucy50aWNrcyx0PW10KHRoaXMubGFiZWxSb3RhdGlvbiksbj1NYXRoLmFicyhNYXRoLmNvcyh0KSkscj1NYXRoLmFicyhNYXRoLnNpbih0KSksaT10aGlzLl9nZXRMYWJlbFNpemVzKCksYT1lLmF1dG9Ta2lwUGFkZGluZ3x8MCxvPWk/aS53aWRlc3Qud2lkdGgrYTowLHM9aT9pLmhpZ2hlc3QuaGVpZ2h0K2E6MDtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKT9zKm4+bypyP28vbjpzL3I6cypyPG8qbj9zL246by9yfV9pc1Zpc2libGUoKXtsZXQgZT10aGlzLm9wdGlvbnMuZGlzcGxheTtyZXR1cm4gZT09PWBhdXRvYD90aGlzLmdldE1hdGNoaW5nVmlzaWJsZU1ldGFzKCkubGVuZ3RoPjA6ISFlfV9jb21wdXRlR3JpZExpbmVJdGVtcyhlKXtsZXQgdD10aGlzLmF4aXMsbj10aGlzLmNoYXJ0LHI9dGhpcy5vcHRpb25zLHtncmlkOmkscG9zaXRpb246YSxib3JkZXI6b309cixzPWkub2Zmc2V0LGM9dGhpcy5pc0hvcml6b250YWwoKSxsPXRoaXMudGlja3MubGVuZ3RoKyArISFzLHU9amEoaSksZD1bXSxmPW8uc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoKSkscD1mLmRpc3BsYXk/Zi53aWR0aDowLG09cC8yLGg9ZnVuY3Rpb24oZSl7cmV0dXJuIHVuKG4sZSxwKX0sZyxfLHYseSxiLHgsUyxDLHcsVCxFLEQ7aWYoYT09PWB0b3BgKWc9aCh0aGlzLmJvdHRvbSkseD10aGlzLmJvdHRvbS11LEM9Zy1tLFQ9aChlLnRvcCkrbSxEPWUuYm90dG9tO2Vsc2UgaWYoYT09PWBib3R0b21gKWc9aCh0aGlzLnRvcCksVD1lLnRvcCxEPWgoZS5ib3R0b20pLW0seD1nK20sQz10aGlzLnRvcCt1O2Vsc2UgaWYoYT09PWBsZWZ0YClnPWgodGhpcy5yaWdodCksYj10aGlzLnJpZ2h0LXUsUz1nLW0sdz1oKGUubGVmdCkrbSxFPWUucmlnaHQ7ZWxzZSBpZihhPT09YHJpZ2h0YClnPWgodGhpcy5sZWZ0KSx3PWUubGVmdCxFPWgoZS5yaWdodCktbSxiPWcrbSxTPXRoaXMubGVmdCt1O2Vsc2UgaWYodD09PWB4YCl7aWYoYT09PWBjZW50ZXJgKWc9aCgoZS50b3ArZS5ib3R0b20pLzIrLjUpO2Vsc2UgaWYoaihhKSl7bGV0IGU9T2JqZWN0LmtleXMoYSlbMF0sdD1hW2VdO2c9aCh0aGlzLmNoYXJ0LnNjYWxlc1tlXS5nZXRQaXhlbEZvclZhbHVlKHQpKX1UPWUudG9wLEQ9ZS5ib3R0b20seD1nK20sQz14K3V9ZWxzZSBpZih0PT09YHlgKXtpZihhPT09YGNlbnRlcmApZz1oKChlLmxlZnQrZS5yaWdodCkvMik7ZWxzZSBpZihqKGEpKXtsZXQgZT1PYmplY3Qua2V5cyhhKVswXSx0PWFbZV07Zz1oKHRoaXMuY2hhcnQuc2NhbGVzW2VdLmdldFBpeGVsRm9yVmFsdWUodCkpfWI9Zy1tLFM9Yi11LHc9ZS5sZWZ0LEU9ZS5yaWdodH1sZXQgZWU9UChyLnRpY2tzLm1heFRpY2tzTGltaXQsbCksdGU9TWF0aC5tYXgoMSxNYXRoLmNlaWwobC9lZSkpO2ZvcihfPTA7XzxsO18rPXRlKXtsZXQgZT10aGlzLmdldENvbnRleHQoXyksdD1pLnNldENvbnRleHQoZSkscj1vLnNldENvbnRleHQoZSksYT10LmxpbmVXaWR0aCxsPXQuY29sb3IsdT1yLmRhc2h8fFtdLGY9ci5kYXNoT2Zmc2V0LHA9dC50aWNrV2lkdGgsbT10LnRpY2tDb2xvcixoPXQudGlja0JvcmRlckRhc2h8fFtdLGc9dC50aWNrQm9yZGVyRGFzaE9mZnNldDt2PWthKHRoaXMsXyxzKSx2IT09dm9pZCAwJiYoeT11bihuLHYsYSksYz9iPVM9dz1FPXk6eD1DPVQ9RD15LGQucHVzaCh7dHgxOmIsdHkxOngsdHgyOlMsdHkyOkMseDE6dyx5MTpULHgyOkUseTI6RCx3aWR0aDphLGNvbG9yOmwsYm9yZGVyRGFzaDp1LGJvcmRlckRhc2hPZmZzZXQ6Zix0aWNrV2lkdGg6cCx0aWNrQ29sb3I6bSx0aWNrQm9yZGVyRGFzaDpoLHRpY2tCb3JkZXJEYXNoT2Zmc2V0Omd9KSl9cmV0dXJuIHRoaXMuX3RpY2tzTGVuZ3RoPWwsdGhpcy5fYm9yZGVyVmFsdWU9ZyxkfV9jb21wdXRlTGFiZWxJdGVtcyhlKXtsZXQgdD10aGlzLmF4aXMsbj10aGlzLm9wdGlvbnMse3Bvc2l0aW9uOnIsdGlja3M6aX09bixhPXRoaXMuaXNIb3Jpem9udGFsKCksbz10aGlzLnRpY2tzLHthbGlnbjpzLGNyb3NzQWxpZ246YyxwYWRkaW5nOmwsbWlycm9yOnV9PWksZD1qYShuLmdyaWQpLGY9ZCtsLHA9dT8tbDpmLG09LW10KHRoaXMubGFiZWxSb3RhdGlvbiksaD1bXSxnLF8sdix5LGIseCxTLEMsdyxULEUsRCxlZT1gbWlkZGxlYDtpZihyPT09YHRvcGApeD10aGlzLmJvdHRvbS1wLFM9dGhpcy5fZ2V0WEF4aXNMYWJlbEFsaWdubWVudCgpO2Vsc2UgaWYocj09PWBib3R0b21gKXg9dGhpcy50b3ArcCxTPXRoaXMuX2dldFhBeGlzTGFiZWxBbGlnbm1lbnQoKTtlbHNlIGlmKHI9PT1gbGVmdGApe2xldCBlPXRoaXMuX2dldFlBeGlzTGFiZWxBbGlnbm1lbnQoZCk7Uz1lLnRleHRBbGlnbixiPWUueH1lbHNlIGlmKHI9PT1gcmlnaHRgKXtsZXQgZT10aGlzLl9nZXRZQXhpc0xhYmVsQWxpZ25tZW50KGQpO1M9ZS50ZXh0QWxpZ24sYj1lLnh9ZWxzZSBpZih0PT09YHhgKXtpZihyPT09YGNlbnRlcmApeD0oZS50b3ArZS5ib3R0b20pLzIrZjtlbHNlIGlmKGoocikpe2xldCBlPU9iamVjdC5rZXlzKHIpWzBdLHQ9cltlXTt4PXRoaXMuY2hhcnQuc2NhbGVzW2VdLmdldFBpeGVsRm9yVmFsdWUodCkrZn1TPXRoaXMuX2dldFhBeGlzTGFiZWxBbGlnbm1lbnQoKX1lbHNlIGlmKHQ9PT1geWApe2lmKHI9PT1gY2VudGVyYCliPShlLmxlZnQrZS5yaWdodCkvMi1mO2Vsc2UgaWYoaihyKSl7bGV0IGU9T2JqZWN0LmtleXMocilbMF0sdD1yW2VdO2I9dGhpcy5jaGFydC5zY2FsZXNbZV0uZ2V0UGl4ZWxGb3JWYWx1ZSh0KX1TPXRoaXMuX2dldFlBeGlzTGFiZWxBbGlnbm1lbnQoZCkudGV4dEFsaWdufXQ9PT1geWAmJihzPT09YHN0YXJ0YD9lZT1gdG9wYDpzPT09YGVuZGAmJihlZT1gYm90dG9tYCkpO2xldCB0ZT10aGlzLl9nZXRMYWJlbFNpemVzKCk7Zm9yKGc9MCxfPW8ubGVuZ3RoO2c8XzsrK2cpe3Y9b1tnXSx5PXYubGFiZWw7bGV0IGU9aS5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dChnKSk7Qz10aGlzLmdldFBpeGVsRm9yVGljayhnKStpLmxhYmVsT2Zmc2V0LHc9dGhpcy5fcmVzb2x2ZVRpY2tGb250T3B0aW9ucyhnKSxUPXcubGluZUhlaWdodCxFPUEoeSk/eS5sZW5ndGg6MTtsZXQgdD1FLzIsbj1lLmNvbG9yLHM9ZS50ZXh0U3Ryb2tlQ29sb3IsbD1lLnRleHRTdHJva2VXaWR0aCxkPVM7YT8oYj1DLFM9PT1gaW5uZXJgJiYoZD1nPT09Xy0xP3RoaXMub3B0aW9ucy5yZXZlcnNlP2BsZWZ0YDpgcmlnaHRgOmc9PT0wP3RoaXMub3B0aW9ucy5yZXZlcnNlP2ByaWdodGA6YGxlZnRgOmBjZW50ZXJgKSxEPXI9PT1gdG9wYD9jPT09YG5lYXJgfHxtIT09MD8tRSpUK1QvMjpjPT09YGNlbnRlcmA/LXRlLmhpZ2hlc3QuaGVpZ2h0LzItdCpUK1Q6LXRlLmhpZ2hlc3QuaGVpZ2h0K1QvMjpjPT09YG5lYXJgfHxtIT09MD9ULzI6Yz09PWBjZW50ZXJgP3RlLmhpZ2hlc3QuaGVpZ2h0LzItdCpUOnRlLmhpZ2hlc3QuaGVpZ2h0LUUqVCx1JiYoRCo9LTEpLG0hPT0wJiYhZS5zaG93TGFiZWxCYWNrZHJvcCYmKGIrPVQvMipNYXRoLnNpbihtKSkpOih4PUMsRD0oMS1FKSpULzIpO2xldCBmO2lmKGUuc2hvd0xhYmVsQmFja2Ryb3Ape2xldCB0PUsoZS5iYWNrZHJvcFBhZGRpbmcpLG49dGUuaGVpZ2h0c1tnXSxyPXRlLndpZHRoc1tnXSxpPUQtdC50b3AsYT0wLXQubGVmdDtzd2l0Y2goZWUpe2Nhc2VgbWlkZGxlYDppLT1uLzI7YnJlYWs7Y2FzZWBib3R0b21gOmktPW59c3dpdGNoKFMpe2Nhc2VgY2VudGVyYDphLT1yLzI7YnJlYWs7Y2FzZWByaWdodGA6YS09cjticmVhaztjYXNlYGlubmVyYDpnPT09Xy0xP2EtPXI6Zz4wJiYoYS09ci8yKX1mPXtsZWZ0OmEsdG9wOmksd2lkdGg6cit0LndpZHRoLGhlaWdodDpuK3QuaGVpZ2h0LGNvbG9yOmUuYmFja2Ryb3BDb2xvcn19aC5wdXNoKHtsYWJlbDp5LGZvbnQ6dyx0ZXh0T2Zmc2V0OkQsb3B0aW9uczp7cm90YXRpb246bSxjb2xvcjpuLHN0cm9rZUNvbG9yOnMsc3Ryb2tlV2lkdGg6bCx0ZXh0QWxpZ246ZCx0ZXh0QmFzZWxpbmU6ZWUsdHJhbnNsYXRpb246W2IseF0sYmFja2Ryb3A6Zn19KX1yZXR1cm4gaH1fZ2V0WEF4aXNMYWJlbEFsaWdubWVudCgpe2xldHtwb3NpdGlvbjplLHRpY2tzOnR9PXRoaXMub3B0aW9ucztpZigtbXQodGhpcy5sYWJlbFJvdGF0aW9uKSlyZXR1cm4gZT09PWB0b3BgP2BsZWZ0YDpgcmlnaHRgO2xldCBuPWBjZW50ZXJgO3JldHVybiB0LmFsaWduPT09YHN0YXJ0YD9uPWBsZWZ0YDp0LmFsaWduPT09YGVuZGA/bj1gcmlnaHRgOnQuYWxpZ249PT1gaW5uZXJgJiYobj1gaW5uZXJgKSxufV9nZXRZQXhpc0xhYmVsQWxpZ25tZW50KGUpe2xldHtwb3NpdGlvbjp0LHRpY2tzOntjcm9zc0FsaWduOm4sbWlycm9yOnIscGFkZGluZzppfX09dGhpcy5vcHRpb25zLGE9dGhpcy5fZ2V0TGFiZWxTaXplcygpLG89ZStpLHM9YS53aWRlc3Qud2lkdGgsYyxsO3JldHVybiB0PT09YGxlZnRgP3I/KGw9dGhpcy5yaWdodCtpLG49PT1gbmVhcmA/Yz1gbGVmdGA6bj09PWBjZW50ZXJgPyhjPWBjZW50ZXJgLGwrPXMvMik6KGM9YHJpZ2h0YCxsKz1zKSk6KGw9dGhpcy5yaWdodC1vLG49PT1gbmVhcmA/Yz1gcmlnaHRgOm49PT1gY2VudGVyYD8oYz1gY2VudGVyYCxsLT1zLzIpOihjPWBsZWZ0YCxsPXRoaXMubGVmdCkpOnQ9PT1gcmlnaHRgP3I/KGw9dGhpcy5sZWZ0K2ksbj09PWBuZWFyYD9jPWByaWdodGA6bj09PWBjZW50ZXJgPyhjPWBjZW50ZXJgLGwtPXMvMik6KGM9YGxlZnRgLGwtPXMpKToobD10aGlzLmxlZnQrbyxuPT09YG5lYXJgP2M9YGxlZnRgOm49PT1gY2VudGVyYD8oYz1gY2VudGVyYCxsKz1zLzIpOihjPWByaWdodGAsbD10aGlzLnJpZ2h0KSk6Yz1gcmlnaHRgLHt0ZXh0QWxpZ246Yyx4Omx9fV9jb21wdXRlTGFiZWxBcmVhKCl7aWYodGhpcy5vcHRpb25zLnRpY2tzLm1pcnJvcilyZXR1cm47bGV0IGU9dGhpcy5jaGFydCx0PXRoaXMub3B0aW9ucy5wb3NpdGlvbjtpZih0PT09YGxlZnRgfHx0PT09YHJpZ2h0YClyZXR1cm57dG9wOjAsbGVmdDp0aGlzLmxlZnQsYm90dG9tOmUuaGVpZ2h0LHJpZ2h0OnRoaXMucmlnaHR9O2lmKHQ9PT1gdG9wYHx8dD09PWBib3R0b21gKXJldHVybnt0b3A6dGhpcy50b3AsbGVmdDowLGJvdHRvbTp0aGlzLmJvdHRvbSxyaWdodDplLndpZHRofX1kcmF3QmFja2dyb3VuZCgpe2xldHtjdHg6ZSxvcHRpb25zOntiYWNrZ3JvdW5kQ29sb3I6dH0sbGVmdDpuLHRvcDpyLHdpZHRoOmksaGVpZ2h0OmF9PXRoaXM7dCYmKGUuc2F2ZSgpLGUuZmlsbFN0eWxlPXQsZS5maWxsUmVjdChuLHIsaSxhKSxlLnJlc3RvcmUoKSl9Z2V0TGluZVdpZHRoRm9yVmFsdWUoZSl7bGV0IHQ9dGhpcy5vcHRpb25zLmdyaWQ7aWYoIXRoaXMuX2lzVmlzaWJsZSgpfHwhdC5kaXNwbGF5KXJldHVybiAwO2xldCBuPXRoaXMudGlja3MuZmluZEluZGV4KHQ9PnQudmFsdWU9PT1lKTtyZXR1cm4gbj49MD90LnNldENvbnRleHQodGhpcy5nZXRDb250ZXh0KG4pKS5saW5lV2lkdGg6MH1kcmF3R3JpZChlKXtsZXQgdD10aGlzLm9wdGlvbnMuZ3JpZCxuPXRoaXMuY3R4LHI9dGhpcy5fZ3JpZExpbmVJdGVtc3x8PXRoaXMuX2NvbXB1dGVHcmlkTGluZUl0ZW1zKGUpLGksYSxvPShlLHQscik9Pnshci53aWR0aHx8IXIuY29sb3J8fChuLnNhdmUoKSxuLmxpbmVXaWR0aD1yLndpZHRoLG4uc3Ryb2tlU3R5bGU9ci5jb2xvcixuLnNldExpbmVEYXNoKHIuYm9yZGVyRGFzaHx8W10pLG4ubGluZURhc2hPZmZzZXQ9ci5ib3JkZXJEYXNoT2Zmc2V0LG4uYmVnaW5QYXRoKCksbi5tb3ZlVG8oZS54LGUueSksbi5saW5lVG8odC54LHQueSksbi5zdHJva2UoKSxuLnJlc3RvcmUoKSl9O2lmKHQuZGlzcGxheSlmb3IoaT0wLGE9ci5sZW5ndGg7aTxhOysraSl7bGV0IGU9cltpXTt0LmRyYXdPbkNoYXJ0QXJlYSYmbyh7eDplLngxLHk6ZS55MX0se3g6ZS54Mix5OmUueTJ9LGUpLHQuZHJhd1RpY2tzJiZvKHt4OmUudHgxLHk6ZS50eTF9LHt4OmUudHgyLHk6ZS50eTJ9LHtjb2xvcjplLnRpY2tDb2xvcix3aWR0aDplLnRpY2tXaWR0aCxib3JkZXJEYXNoOmUudGlja0JvcmRlckRhc2gsYm9yZGVyRGFzaE9mZnNldDplLnRpY2tCb3JkZXJEYXNoT2Zmc2V0fSl9fWRyYXdCb3JkZXIoKXtsZXR7Y2hhcnQ6ZSxjdHg6dCxvcHRpb25zOntib3JkZXI6bixncmlkOnJ9fT10aGlzLGk9bi5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxhPW4uZGlzcGxheT9pLndpZHRoOjA7aWYoIWEpcmV0dXJuO2xldCBvPXIuc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoMCkpLmxpbmVXaWR0aCxzPXRoaXMuX2JvcmRlclZhbHVlLGMsbCx1LGQ7dGhpcy5pc0hvcml6b250YWwoKT8oYz11bihlLHRoaXMubGVmdCxhKS1hLzIsbD11bihlLHRoaXMucmlnaHQsbykrby8yLHU9ZD1zKToodT11bihlLHRoaXMudG9wLGEpLWEvMixkPXVuKGUsdGhpcy5ib3R0b20sbykrby8yLGM9bD1zKSx0LnNhdmUoKSx0LmxpbmVXaWR0aD1pLndpZHRoLHQuc3Ryb2tlU3R5bGU9aS5jb2xvcix0LmJlZ2luUGF0aCgpLHQubW92ZVRvKGMsdSksdC5saW5lVG8obCxkKSx0LnN0cm9rZSgpLHQucmVzdG9yZSgpfWRyYXdMYWJlbHMoZSl7aWYoIXRoaXMub3B0aW9ucy50aWNrcy5kaXNwbGF5KXJldHVybjtsZXQgdD10aGlzLmN0eCxuPXRoaXMuX2NvbXB1dGVMYWJlbEFyZWEoKTtuJiZtbih0LG4pO2xldCByPXRoaXMuZ2V0TGFiZWxJdGVtcyhlKTtmb3IobGV0IGUgb2Ygcil7bGV0IG49ZS5vcHRpb25zLHI9ZS5mb250LGk9ZS5sYWJlbCxhPWUudGV4dE9mZnNldDt4bih0LGksMCxhLHIsbil9biYmaG4odCl9ZHJhd1RpdGxlKCl7bGV0e2N0eDplLG9wdGlvbnM6e3Bvc2l0aW9uOnQsdGl0bGU6bixyZXZlcnNlOnJ9fT10aGlzO2lmKCFuLmRpc3BsYXkpcmV0dXJuO2xldCBpPXEobi5mb250KSxhPUsobi5wYWRkaW5nKSxvPW4uYWxpZ24scz1pLmxpbmVIZWlnaHQvMjt0PT09YGJvdHRvbWB8fHQ9PT1gY2VudGVyYHx8aih0KT8ocys9YS5ib3R0b20sQShuLnRleHQpJiYocys9aS5saW5lSGVpZ2h0KihuLnRleHQubGVuZ3RoLTEpKSk6cys9YS50b3A7bGV0e3RpdGxlWDpjLHRpdGxlWTpsLG1heFdpZHRoOnUscm90YXRpb246ZH09SWEodGhpcyxzLHQsbyk7eG4oZSxuLnRleHQsMCwwLGkse2NvbG9yOm4uY29sb3IsbWF4V2lkdGg6dSxyb3RhdGlvbjpkLHRleHRBbGlnbjpGYShvLHQsciksdGV4dEJhc2VsaW5lOmBtaWRkbGVgLHRyYW5zbGF0aW9uOltjLGxdfSl9ZHJhdyhlKXt0aGlzLl9pc1Zpc2libGUoKSYmKHRoaXMuZHJhd0JhY2tncm91bmQoKSx0aGlzLmRyYXdHcmlkKGUpLHRoaXMuZHJhd0JvcmRlcigpLHRoaXMuZHJhd1RpdGxlKCksdGhpcy5kcmF3TGFiZWxzKGUpKX1fbGF5ZXJzKCl7bGV0IHQ9dGhpcy5vcHRpb25zLG49dC50aWNrcyYmdC50aWNrcy56fHwwLHI9UCh0LmdyaWQmJnQuZ3JpZC56LC0xKSxpPVAodC5ib3JkZXImJnQuYm9yZGVyLnosMCk7cmV0dXJuIXRoaXMuX2lzVmlzaWJsZSgpfHx0aGlzLmRyYXchPT1lLnByb3RvdHlwZS5kcmF3P1t7ejpuLGRyYXc6ZT0+e3RoaXMuZHJhdyhlKX19XTpbe3o6cixkcmF3OmU9Pnt0aGlzLmRyYXdCYWNrZ3JvdW5kKCksdGhpcy5kcmF3R3JpZChlKSx0aGlzLmRyYXdUaXRsZSgpfX0se3o6aSxkcmF3OigpPT57dGhpcy5kcmF3Qm9yZGVyKCl9fSx7ejpuLGRyYXc6ZT0+e3RoaXMuZHJhd0xhYmVscyhlKX19XX1nZXRNYXRjaGluZ1Zpc2libGVNZXRhcyhlKXtsZXQgdD10aGlzLmNoYXJ0LmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKSxuPXRoaXMuYXhpcytgQXhpc0lEYCxyPVtdLGksYTtmb3IoaT0wLGE9dC5sZW5ndGg7aTxhOysraSl7bGV0IGE9dFtpXTthW25dPT09dGhpcy5pZCYmKCFlfHxhLnR5cGU9PT1lKSYmci5wdXNoKGEpfXJldHVybiByfV9yZXNvbHZlVGlja0ZvbnRPcHRpb25zKGUpe3JldHVybiBxKHRoaXMub3B0aW9ucy50aWNrcy5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dChlKSkuZm9udCl9X21heERpZ2l0cygpe2xldCBlPXRoaXMuX3Jlc29sdmVUaWNrRm9udE9wdGlvbnMoMCkubGluZUhlaWdodDtyZXR1cm4odGhpcy5pc0hvcml6b250YWwoKT90aGlzLndpZHRoOnRoaXMuaGVpZ2h0KS9lfX0sUmE9Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMudHlwZT1lLHRoaXMuc2NvcGU9dCx0aGlzLm92ZXJyaWRlPW4sdGhpcy5pdGVtcz1PYmplY3QuY3JlYXRlKG51bGwpfWlzRm9yVHlwZShlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mLmNhbGwodGhpcy50eXBlLnByb3RvdHlwZSxlLnByb3RvdHlwZSl9cmVnaXN0ZXIoZSl7bGV0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpLG47VmEodCkmJihuPXRoaXMucmVnaXN0ZXIodCkpO2xldCByPXRoaXMuaXRlbXMsaT1lLmlkLGE9dGhpcy5zY29wZStgLmAraTtpZighaSl0aHJvdyBFcnJvcihgY2xhc3MgZG9lcyBub3QgaGF2ZSBpZDogYCtlKTtyZXR1cm4gaSBpbiByP2E6KHJbaV09ZSx6YShlLGEsbiksdGhpcy5vdmVycmlkZSYmVy5vdmVycmlkZShlLmlkLGUub3ZlcnJpZGVzKSxhKX1nZXQoZSl7cmV0dXJuIHRoaXMuaXRlbXNbZV19dW5yZWdpc3RlcihlKXtsZXQgdD10aGlzLml0ZW1zLG49ZS5pZCxyPXRoaXMuc2NvcGU7biBpbiB0JiZkZWxldGUgdFtuXSxyJiZuIGluIFdbcl0mJihkZWxldGUgV1tyXVtuXSx0aGlzLm92ZXJyaWRlJiZkZWxldGUgbm5bbl0pfX07ZnVuY3Rpb24gemEoZSx0LG4pe2xldCByPVVlKE9iamVjdC5jcmVhdGUobnVsbCksW24/Vy5nZXQobik6e30sVy5nZXQodCksZS5kZWZhdWx0c10pO1cuc2V0KHQsciksZS5kZWZhdWx0Um91dGVzJiZCYSh0LGUuZGVmYXVsdFJvdXRlcyksZS5kZXNjcmlwdG9ycyYmVy5kZXNjcmliZSh0LGUuZGVzY3JpcHRvcnMpfWZ1bmN0aW9uIEJhKGUsdCl7T2JqZWN0LmtleXModCkuZm9yRWFjaChuPT57bGV0IHI9bi5zcGxpdChgLmApLGk9ci5wb3AoKSxhPVtlXS5jb25jYXQocikuam9pbihgLmApLG89dFtuXS5zcGxpdChgLmApLHM9by5wb3AoKSxjPW8uam9pbihgLmApO1cucm91dGUoYSxpLGMscyl9KX1mdW5jdGlvbiBWYShlKXtyZXR1cm5gaWRgaW4gZSYmYGRlZmF1bHRzYGluIGV9dmFyIFk9bmV3IGNsYXNze2NvbnN0cnVjdG9yKCl7dGhpcy5jb250cm9sbGVycz1uZXcgUmEodmksYGRhdGFzZXRzYCwhMCksdGhpcy5lbGVtZW50cz1uZXcgUmEoX2EsYGVsZW1lbnRzYCksdGhpcy5wbHVnaW5zPW5ldyBSYShPYmplY3QsYHBsdWdpbnNgKSx0aGlzLnNjYWxlcz1uZXcgUmEoTGEsYHNjYWxlc2ApLHRoaXMuX3R5cGVkUmVnaXN0cmllcz1bdGhpcy5jb250cm9sbGVycyx0aGlzLnNjYWxlcyx0aGlzLmVsZW1lbnRzXX1hZGQoLi4uZSl7dGhpcy5fZWFjaChgcmVnaXN0ZXJgLGUpfXJlbW92ZSguLi5lKXt0aGlzLl9lYWNoKGB1bnJlZ2lzdGVyYCxlKX1hZGRDb250cm9sbGVycyguLi5lKXt0aGlzLl9lYWNoKGByZWdpc3RlcmAsZSx0aGlzLmNvbnRyb2xsZXJzKX1hZGRFbGVtZW50cyguLi5lKXt0aGlzLl9lYWNoKGByZWdpc3RlcmAsZSx0aGlzLmVsZW1lbnRzKX1hZGRQbHVnaW5zKC4uLmUpe3RoaXMuX2VhY2goYHJlZ2lzdGVyYCxlLHRoaXMucGx1Z2lucyl9YWRkU2NhbGVzKC4uLmUpe3RoaXMuX2VhY2goYHJlZ2lzdGVyYCxlLHRoaXMuc2NhbGVzKX1nZXRDb250cm9sbGVyKGUpe3JldHVybiB0aGlzLl9nZXQoZSx0aGlzLmNvbnRyb2xsZXJzLGBjb250cm9sbGVyYCl9Z2V0RWxlbWVudChlKXtyZXR1cm4gdGhpcy5fZ2V0KGUsdGhpcy5lbGVtZW50cyxgZWxlbWVudGApfWdldFBsdWdpbihlKXtyZXR1cm4gdGhpcy5fZ2V0KGUsdGhpcy5wbHVnaW5zLGBwbHVnaW5gKX1nZXRTY2FsZShlKXtyZXR1cm4gdGhpcy5fZ2V0KGUsdGhpcy5zY2FsZXMsYHNjYWxlYCl9cmVtb3ZlQ29udHJvbGxlcnMoLi4uZSl7dGhpcy5fZWFjaChgdW5yZWdpc3RlcmAsZSx0aGlzLmNvbnRyb2xsZXJzKX1yZW1vdmVFbGVtZW50cyguLi5lKXt0aGlzLl9lYWNoKGB1bnJlZ2lzdGVyYCxlLHRoaXMuZWxlbWVudHMpfXJlbW92ZVBsdWdpbnMoLi4uZSl7dGhpcy5fZWFjaChgdW5yZWdpc3RlcmAsZSx0aGlzLnBsdWdpbnMpfXJlbW92ZVNjYWxlcyguLi5lKXt0aGlzLl9lYWNoKGB1bnJlZ2lzdGVyYCxlLHRoaXMuc2NhbGVzKX1fZWFjaChlLHQsbil7Wy4uLnRdLmZvckVhY2godD0+e2xldCByPW58fHRoaXMuX2dldFJlZ2lzdHJ5Rm9yVHlwZSh0KTtufHxyLmlzRm9yVHlwZSh0KXx8cj09PXRoaXMucGx1Z2lucyYmdC5pZD90aGlzLl9leGVjKGUscix0KTpJKHQsdD0+e2xldCByPW58fHRoaXMuX2dldFJlZ2lzdHJ5Rm9yVHlwZSh0KTt0aGlzLl9leGVjKGUscix0KX0pfSl9X2V4ZWMoZSx0LG4pe2xldCByPVhlKGUpO0YobltgYmVmb3JlYCtyXSxbXSxuKSx0W2VdKG4pLEYobltgYWZ0ZXJgK3JdLFtdLG4pfV9nZXRSZWdpc3RyeUZvclR5cGUoZSl7Zm9yKGxldCB0PTA7dDx0aGlzLl90eXBlZFJlZ2lzdHJpZXMubGVuZ3RoO3QrKyl7bGV0IG49dGhpcy5fdHlwZWRSZWdpc3RyaWVzW3RdO2lmKG4uaXNGb3JUeXBlKGUpKXJldHVybiBufXJldHVybiB0aGlzLnBsdWdpbnN9X2dldChlLHQsbil7bGV0IHI9dC5nZXQoZSk7aWYocj09PXZvaWQgMCl0aHJvdyBFcnJvcihgImArZStgIiBpcyBub3QgYSByZWdpc3RlcmVkIGArbitgLmApO3JldHVybiByfX0sSGE9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLl9pbml0PXZvaWQgMH1ub3RpZnkoZSx0LG4scil7aWYodD09PWBiZWZvcmVJbml0YCYmKHRoaXMuX2luaXQ9dGhpcy5fY3JlYXRlRGVzY3JpcHRvcnMoZSwhMCksdGhpcy5fbm90aWZ5KHRoaXMuX2luaXQsZSxgaW5zdGFsbGApKSx0aGlzLl9pbml0PT09dm9pZCAwKXJldHVybjtsZXQgaT1yP3RoaXMuX2Rlc2NyaXB0b3JzKGUpLmZpbHRlcihyKTp0aGlzLl9kZXNjcmlwdG9ycyhlKSxhPXRoaXMuX25vdGlmeShpLGUsdCxuKTtyZXR1cm4gdD09PWBhZnRlckRlc3Ryb3lgJiYodGhpcy5fbm90aWZ5KGksZSxgc3RvcGApLHRoaXMuX25vdGlmeSh0aGlzLl9pbml0LGUsYHVuaW5zdGFsbGApLHRoaXMuX2luaXQ9dm9pZCAwKSxhfV9ub3RpZnkoZSx0LG4scil7cnx8PXt9O2ZvcihsZXQgaSBvZiBlKXtsZXQgZT1pLnBsdWdpbixhPWVbbl07aWYoRihhLFt0LHIsaS5vcHRpb25zXSxlKT09PSExJiZyLmNhbmNlbGFibGUpcmV0dXJuITF9cmV0dXJuITB9aW52YWxpZGF0ZSgpe2sodGhpcy5fY2FjaGUpfHwodGhpcy5fb2xkQ2FjaGU9dGhpcy5fY2FjaGUsdGhpcy5fY2FjaGU9dm9pZCAwKX1fZGVzY3JpcHRvcnMoZSl7aWYodGhpcy5fY2FjaGUpcmV0dXJuIHRoaXMuX2NhY2hlO2xldCB0PXRoaXMuX2NhY2hlPXRoaXMuX2NyZWF0ZURlc2NyaXB0b3JzKGUpO3JldHVybiB0aGlzLl9ub3RpZnlTdGF0ZUNoYW5nZXMoZSksdH1fY3JlYXRlRGVzY3JpcHRvcnMoZSx0KXtsZXQgbj1lJiZlLmNvbmZpZyxyPVAobi5vcHRpb25zJiZuLm9wdGlvbnMucGx1Z2lucyx7fSksaT1VYShuKTtyZXR1cm4gcj09PSExJiYhdD9bXTpHYShlLGkscix0KX1fbm90aWZ5U3RhdGVDaGFuZ2VzKGUpe2xldCB0PXRoaXMuX29sZENhY2hlfHxbXSxuPXRoaXMuX2NhY2hlLHI9KGUsdCk9PmUuZmlsdGVyKGU9PiF0LnNvbWUodD0+ZS5wbHVnaW4uaWQ9PT10LnBsdWdpbi5pZCkpO3RoaXMuX25vdGlmeShyKHQsbiksZSxgc3RvcGApLHRoaXMuX25vdGlmeShyKG4sdCksZSxgc3RhcnRgKX19O2Z1bmN0aW9uIFVhKGUpe2xldCB0PXt9LG49W10scj1PYmplY3Qua2V5cyhZLnBsdWdpbnMuaXRlbXMpO2ZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKW4ucHVzaChZLmdldFBsdWdpbihyW2VdKSk7bGV0IGk9ZS5wbHVnaW5zfHxbXTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrKyl7bGV0IHI9aVtlXTtuLmluZGV4T2Yocik9PT0tMSYmKG4ucHVzaChyKSx0W3IuaWRdPSEwKX1yZXR1cm57cGx1Z2luczpuLGxvY2FsSWRzOnR9fWZ1bmN0aW9uIFdhKGUsdCl7cmV0dXJuIXQmJmU9PT0hMT9udWxsOmU9PT0hMD97fTplfWZ1bmN0aW9uIEdhKGUse3BsdWdpbnM6dCxsb2NhbElkczpufSxyLGkpe2xldCBhPVtdLG89ZS5nZXRDb250ZXh0KCk7Zm9yKGxldCBzIG9mIHQpe2xldCB0PXMuaWQsYz1XYShyW3RdLGkpO2MhPT1udWxsJiZhLnB1c2goe3BsdWdpbjpzLG9wdGlvbnM6S2EoZS5jb25maWcse3BsdWdpbjpzLGxvY2FsOm5bdF19LGMsbyl9KX1yZXR1cm4gYX1mdW5jdGlvbiBLYShlLHtwbHVnaW46dCxsb2NhbDpufSxyLGkpe2xldCBhPWUucGx1Z2luU2NvcGVLZXlzKHQpLG89ZS5nZXRPcHRpb25TY29wZXMocixhKTtyZXR1cm4gbiYmdC5kZWZhdWx0cyYmby5wdXNoKHQuZGVmYXVsdHMpLGUuY3JlYXRlUmVzb2x2ZXIobyxpLFtgYF0se3NjcmlwdGFibGU6ITEsaW5kZXhhYmxlOiExLGFsbEtleXM6ITB9KX1mdW5jdGlvbiBxYShlLHQpe2xldCBuPVcuZGF0YXNldHNbZV18fHt9O3JldHVybigodC5kYXRhc2V0c3x8e30pW2VdfHx7fSkuaW5kZXhBeGlzfHx0LmluZGV4QXhpc3x8bi5pbmRleEF4aXN8fGB4YH1mdW5jdGlvbiBKYShlLHQpe2xldCBuPWU7cmV0dXJuIGU9PT1gX2luZGV4X2A/bj10OmU9PT1gX3ZhbHVlX2AmJihuPXQ9PT1geGA/YHlgOmB4YCksbn1mdW5jdGlvbiBZYShlLHQpe3JldHVybiBlPT09dD9gX2luZGV4X2A6YF92YWx1ZV9gfWZ1bmN0aW9uIFhhKGUpe2lmKGU9PT1geGB8fGU9PT1geWB8fGU9PT1gcmApcmV0dXJuIGV9ZnVuY3Rpb24gWmEoZSl7aWYoZT09PWB0b3BgfHxlPT09YGJvdHRvbWApcmV0dXJuYHhgO2lmKGU9PT1gbGVmdGB8fGU9PT1gcmlnaHRgKXJldHVybmB5YH1mdW5jdGlvbiBRYShlLC4uLnQpe2lmKFhhKGUpKXJldHVybiBlO2ZvcihsZXQgbiBvZiB0KXtsZXQgdD1uLmF4aXN8fFphKG4ucG9zaXRpb24pfHxlLmxlbmd0aD4xJiZYYShlWzBdLnRvTG93ZXJDYXNlKCkpO2lmKHQpcmV0dXJuIHR9dGhyb3cgRXJyb3IoYENhbm5vdCBkZXRlcm1pbmUgdHlwZSBvZiAnJHtlfScgYXhpcy4gUGxlYXNlIHByb3ZpZGUgJ2F4aXMnIG9yICdwb3NpdGlvbicgb3B0aW9uLmApfWZ1bmN0aW9uICRhKGUsdCxuKXtpZihuW3QrYEF4aXNJRGBdPT09ZSlyZXR1cm57YXhpczp0fX1mdW5jdGlvbiBlbyhlLHQpe2lmKHQuZGF0YSYmdC5kYXRhLmRhdGFzZXRzKXtsZXQgbj10LmRhdGEuZGF0YXNldHMuZmlsdGVyKHQ9PnQueEF4aXNJRD09PWV8fHQueUF4aXNJRD09PWUpO2lmKG4ubGVuZ3RoKXJldHVybiAkYShlLGB4YCxuWzBdKXx8JGEoZSxgeWAsblswXSl9cmV0dXJue319ZnVuY3Rpb24gdG8oZSx0KXtsZXQgbj1ubltlLnR5cGVdfHx7c2NhbGVzOnt9fSxyPXQuc2NhbGVzfHx7fSxpPXFhKGUudHlwZSx0KSxhPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIE9iamVjdC5rZXlzKHIpLmZvckVhY2godD0+e2xldCBvPXJbdF07aWYoIWoobykpcmV0dXJuIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgc2NhbGUgY29uZmlndXJhdGlvbiBmb3Igc2NhbGU6ICR7dH1gKTtpZihvLl9wcm94eSlyZXR1cm4gY29uc29sZS53YXJuKGBJZ25vcmluZyByZXNvbHZlciBwYXNzZWQgYXMgb3B0aW9ucyBmb3Igc2NhbGU6ICR7dH1gKTtsZXQgcz1RYSh0LG8sZW8odCxlKSxXLnNjYWxlc1tvLnR5cGVdKSxjPVlhKHMsaSksbD1uLnNjYWxlc3x8e307YVt0XT1XZShPYmplY3QuY3JlYXRlKG51bGwpLFt7YXhpczpzfSxvLGxbc10sbFtjXV0pfSksZS5kYXRhLmRhdGFzZXRzLmZvckVhY2gobj0+e2xldCBpPW4udHlwZXx8ZS50eXBlLG89bi5pbmRleEF4aXN8fHFhKGksdCkscz0obm5baV18fHt9KS5zY2FsZXN8fHt9O09iamVjdC5rZXlzKHMpLmZvckVhY2goZT0+e2xldCB0PUphKGUsbyksaT1uW3QrYEF4aXNJRGBdfHx0O2FbaV09YVtpXXx8T2JqZWN0LmNyZWF0ZShudWxsKSxXZShhW2ldLFt7YXhpczp0fSxyW2ldLHNbZV1dKX0pfSksT2JqZWN0LmtleXMoYSkuZm9yRWFjaChlPT57bGV0IHQ9YVtlXTtXZSh0LFtXLnNjYWxlc1t0LnR5cGVdLFcuc2NhbGVdKX0pLGF9ZnVuY3Rpb24gbm8oZSl7bGV0IHQ9ZS5vcHRpb25zfHw9e307dC5wbHVnaW5zPVAodC5wbHVnaW5zLHt9KSx0LnNjYWxlcz10byhlLHQpfWZ1bmN0aW9uIHJvKGUpe3JldHVybiBlfHw9e30sZS5kYXRhc2V0cz1lLmRhdGFzZXRzfHxbXSxlLmxhYmVscz1lLmxhYmVsc3x8W10sZX1mdW5jdGlvbiBpbyhlKXtyZXR1cm4gZXx8PXt9LGUuZGF0YT1ybyhlLmRhdGEpLG5vKGUpLGV9dmFyIGFvPW5ldyBNYXAsb289bmV3IFNldDtmdW5jdGlvbiBzbyhlLHQpe2xldCBuPWFvLmdldChlKTtyZXR1cm4gbnx8KG49dCgpLGFvLnNldChlLG4pLG9vLmFkZChuKSksbn12YXIgY289KGUsdCxuKT0+e2xldCByPVllKHQsbik7ciE9PXZvaWQgMCYmZS5hZGQocil9LGxvPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NvbmZpZz1pbyhlKSx0aGlzLl9zY29wZUNhY2hlPW5ldyBNYXAsdGhpcy5fcmVzb2x2ZXJDYWNoZT1uZXcgTWFwfWdldCBwbGF0Zm9ybSgpe3JldHVybiB0aGlzLl9jb25maWcucGxhdGZvcm19Z2V0IHR5cGUoKXtyZXR1cm4gdGhpcy5fY29uZmlnLnR5cGV9c2V0IHR5cGUoZSl7dGhpcy5fY29uZmlnLnR5cGU9ZX1nZXQgZGF0YSgpe3JldHVybiB0aGlzLl9jb25maWcuZGF0YX1zZXQgZGF0YShlKXt0aGlzLl9jb25maWcuZGF0YT1ybyhlKX1nZXQgb3B0aW9ucygpe3JldHVybiB0aGlzLl9jb25maWcub3B0aW9uc31zZXQgb3B0aW9ucyhlKXt0aGlzLl9jb25maWcub3B0aW9ucz1lfWdldCBwbHVnaW5zKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5wbHVnaW5zfXVwZGF0ZSgpe2xldCBlPXRoaXMuX2NvbmZpZzt0aGlzLmNsZWFyQ2FjaGUoKSxubyhlKX1jbGVhckNhY2hlKCl7dGhpcy5fc2NvcGVDYWNoZS5jbGVhcigpLHRoaXMuX3Jlc29sdmVyQ2FjaGUuY2xlYXIoKX1kYXRhc2V0U2NvcGVLZXlzKGUpe3JldHVybiBzbyhlLCgpPT5bW2BkYXRhc2V0cy4ke2V9YCxgYF1dKX1kYXRhc2V0QW5pbWF0aW9uU2NvcGVLZXlzKGUsdCl7cmV0dXJuIHNvKGAke2V9LnRyYW5zaXRpb24uJHt0fWAsKCk9PltbYGRhdGFzZXRzLiR7ZX0udHJhbnNpdGlvbnMuJHt0fWAsYHRyYW5zaXRpb25zLiR7dH1gXSxbYGRhdGFzZXRzLiR7ZX1gLGBgXV0pfWRhdGFzZXRFbGVtZW50U2NvcGVLZXlzKGUsdCl7cmV0dXJuIHNvKGAke2V9LSR7dH1gLCgpPT5bW2BkYXRhc2V0cy4ke2V9LmVsZW1lbnRzLiR7dH1gLGBkYXRhc2V0cy4ke2V9YCxgZWxlbWVudHMuJHt0fWAsYGBdXSl9cGx1Z2luU2NvcGVLZXlzKGUpe2xldCB0PWUuaWQsbj10aGlzLnR5cGU7cmV0dXJuIHNvKGAke259LXBsdWdpbi0ke3R9YCwoKT0+W1tgcGx1Z2lucy4ke3R9YCwuLi5lLmFkZGl0aW9uYWxPcHRpb25TY29wZXN8fFtdXV0pfV9jYWNoZWRTY29wZXMoZSx0KXtsZXQgbj10aGlzLl9zY29wZUNhY2hlLHI9bi5nZXQoZSk7cmV0dXJuKCFyfHx0KSYmKHI9bmV3IE1hcCxuLnNldChlLHIpKSxyfWdldE9wdGlvblNjb3BlcyhlLHQsbil7bGV0e29wdGlvbnM6cix0eXBlOml9PXRoaXMsYT10aGlzLl9jYWNoZWRTY29wZXMoZSxuKSxvPWEuZ2V0KHQpO2lmKG8pcmV0dXJuIG87bGV0IHM9bmV3IFNldDt0LmZvckVhY2godD0+e2UmJihzLmFkZChlKSx0LmZvckVhY2godD0+Y28ocyxlLHQpKSksdC5mb3JFYWNoKGU9PmNvKHMscixlKSksdC5mb3JFYWNoKGU9PmNvKHMsbm5baV18fHt9LGUpKSx0LmZvckVhY2goZT0+Y28ocyxXLGUpKSx0LmZvckVhY2goZT0+Y28ocyxybixlKSl9KTtsZXQgYz1BcnJheS5mcm9tKHMpO3JldHVybiBjLmxlbmd0aD09PTAmJmMucHVzaChPYmplY3QuY3JlYXRlKG51bGwpKSxvby5oYXModCkmJmEuc2V0KHQsYyksY31jaGFydE9wdGlvblNjb3Blcygpe2xldHtvcHRpb25zOmUsdHlwZTp0fT10aGlzO3JldHVybltlLG5uW3RdfHx7fSxXLmRhdGFzZXRzW3RdfHx7fSx7dHlwZTp0fSxXLHJuXX1yZXNvbHZlTmFtZWRPcHRpb25zKGUsdCxuLHI9W2BgXSl7bGV0IGk9eyRzaGFyZWQ6ITB9LHtyZXNvbHZlcjphLHN1YlByZWZpeGVzOm99PXVvKHRoaXMuX3Jlc29sdmVyQ2FjaGUsZSxyKSxzPWE7aWYocG8oYSx0KSl7aS4kc2hhcmVkPSExLG49UWUobik/bigpOm47bGV0IHQ9dGhpcy5jcmVhdGVSZXNvbHZlcihlLG4sbyk7cz1QbihhLG4sdCl9Zm9yKGxldCBlIG9mIHQpaVtlXT1zW2VdO3JldHVybiBpfWNyZWF0ZVJlc29sdmVyKGUsdCxuPVtgYF0scil7bGV0e3Jlc29sdmVyOml9PXVvKHRoaXMuX3Jlc29sdmVyQ2FjaGUsZSxuKTtyZXR1cm4gaih0KT9QbihpLHQsdm9pZCAwLHIpOml9fTtmdW5jdGlvbiB1byhlLHQsbil7bGV0IHI9ZS5nZXQodCk7cnx8KHI9bmV3IE1hcCxlLnNldCh0LHIpKTtsZXQgaT1uLmpvaW4oKSxhPXIuZ2V0KGkpO3JldHVybiBhfHwoYT17cmVzb2x2ZXI6Tm4odCxuKSxzdWJQcmVmaXhlczpuLmZpbHRlcihlPT4hZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGBob3ZlcmApKX0sci5zZXQoaSxhKSksYX12YXIgZm89ZT0+aihlKSYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkuc29tZSh0PT5RZShlW3RdKSk7ZnVuY3Rpb24gcG8oZSx0KXtsZXR7aXNTY3JpcHRhYmxlOm4saXNJbmRleGFibGU6cn09Rm4oZSk7Zm9yKGxldCBpIG9mIHQpe2xldCB0PW4oaSksYT1yKGkpLG89KGF8fHQpJiZlW2ldO2lmKHQmJihRZShvKXx8Zm8obykpfHxhJiZBKG8pKXJldHVybiEwfXJldHVybiExfXZhciBtbz1gNC41LjFgLGhvPVtgdG9wYCxgYm90dG9tYCxgbGVmdGAsYHJpZ2h0YCxgY2hhcnRBcmVhYF07ZnVuY3Rpb24gZ28oZSx0KXtyZXR1cm4gZT09PWB0b3BgfHxlPT09YGJvdHRvbWB8fGhvLmluZGV4T2YoZSk9PT0tMSYmdD09PWB4YH1mdW5jdGlvbiBfbyhlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe3JldHVybiBuW2VdPT09cltlXT9uW3RdLXJbdF06bltlXS1yW2VdfX1mdW5jdGlvbiB2byhlKXtsZXQgdD1lLmNoYXJ0LG49dC5vcHRpb25zLmFuaW1hdGlvbjt0Lm5vdGlmeVBsdWdpbnMoYGFmdGVyUmVuZGVyYCksRihuJiZuLm9uQ29tcGxldGUsW2VdLHQpfWZ1bmN0aW9uIHlvKGUpe2xldCB0PWUuY2hhcnQsbj10Lm9wdGlvbnMuYW5pbWF0aW9uO0YobiYmbi5vblByb2dyZXNzLFtlXSx0KX1mdW5jdGlvbiBibyhlKXtyZXR1cm4gY3IoKSYmdHlwZW9mIGU9PWBzdHJpbmdgP2U9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZSk6ZSYmZS5sZW5ndGgmJihlPWVbMF0pLGUmJmUuY2FudmFzJiYoZT1lLmNhbnZhcyksZX12YXIgeG89e30sU289ZT0+e2xldCB0PWJvKGUpO3JldHVybiBPYmplY3QudmFsdWVzKHhvKS5maWx0ZXIoZT0+ZS5jYW52YXM9PT10KS5wb3AoKX07ZnVuY3Rpb24gQ28oZSx0LG4pe2xldCByPU9iamVjdC5rZXlzKGUpO2ZvcihsZXQgaSBvZiByKXtsZXQgcj0raTtpZihyPj10KXtsZXQgYT1lW2ldO2RlbGV0ZSBlW2ldLChuPjB8fHI+dCkmJihlW3Irbl09YSl9fX1mdW5jdGlvbiB3byhlLHQsbixyKXtyZXR1cm4hbnx8ZS50eXBlPT09YG1vdXNlb3V0YD9udWxsOnI/dDplfXZhciBUbz1jbGFzc3tzdGF0aWMgZGVmYXVsdHM9VztzdGF0aWMgaW5zdGFuY2VzPXhvO3N0YXRpYyBvdmVycmlkZXM9bm47c3RhdGljIHJlZ2lzdHJ5PVk7c3RhdGljIHZlcnNpb249bW87c3RhdGljIGdldENoYXJ0PVNvO3N0YXRpYyByZWdpc3RlciguLi5lKXtZLmFkZCguLi5lKSxFbygpfXN0YXRpYyB1bnJlZ2lzdGVyKC4uLmUpe1kucmVtb3ZlKC4uLmUpLEVvKCl9Y29uc3RydWN0b3IoZSx0KXtsZXQgbj10aGlzLmNvbmZpZz1uZXcgbG8odCkscj1ibyhlKSxpPVNvKHIpO2lmKGkpdGhyb3cgRXJyb3IoYENhbnZhcyBpcyBhbHJlYWR5IGluIHVzZS4gQ2hhcnQgd2l0aCBJRCAnYCtpLmlkK2AnIG11c3QgYmUgZGVzdHJveWVkIGJlZm9yZSB0aGUgY2FudmFzIHdpdGggSUQgJ2AraS5jYW52YXMuaWQrYCcgY2FuIGJlIHJldXNlZC5gKTtsZXQgYT1uLmNyZWF0ZVJlc29sdmVyKG4uY2hhcnRPcHRpb25TY29wZXMoKSx0aGlzLmdldENvbnRleHQoKSk7dGhpcy5wbGF0Zm9ybT1uZXcobi5wbGF0Zm9ybXx8KGdhKHIpKSksdGhpcy5wbGF0Zm9ybS51cGRhdGVDb25maWcobik7bGV0IG89dGhpcy5wbGF0Zm9ybS5hY3F1aXJlQ29udGV4dChyLGEuYXNwZWN0UmF0aW8pLHM9byYmby5jYW52YXMsYz1zJiZzLmhlaWdodCxsPXMmJnMud2lkdGg7aWYodGhpcy5pZD1MZSgpLHRoaXMuY3R4PW8sdGhpcy5jYW52YXM9cyx0aGlzLndpZHRoPWwsdGhpcy5oZWlnaHQ9Yyx0aGlzLl9vcHRpb25zPWEsdGhpcy5fYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx0aGlzLl9sYXllcnM9W10sdGhpcy5fbWV0YXNldHM9W10sdGhpcy5fc3RhY2tzPXZvaWQgMCx0aGlzLmJveGVzPVtdLHRoaXMuY3VycmVudERldmljZVBpeGVsUmF0aW89dm9pZCAwLHRoaXMuY2hhcnRBcmVhPXZvaWQgMCx0aGlzLl9hY3RpdmU9W10sdGhpcy5fbGFzdEV2ZW50PXZvaWQgMCx0aGlzLl9saXN0ZW5lcnM9e30sdGhpcy5fcmVzcG9uc2l2ZUxpc3RlbmVycz12b2lkIDAsdGhpcy5fc29ydGVkTWV0YXNldHM9W10sdGhpcy5zY2FsZXM9e30sdGhpcy5fcGx1Z2lucz1uZXcgSGEsdGhpcy4kcHJveGllcz17fSx0aGlzLl9oaWRkZW5JbmRpY2VzPXt9LHRoaXMuYXR0YWNoZWQ9ITEsdGhpcy5fYW5pbWF0aW9uc0Rpc2FibGVkPXZvaWQgMCx0aGlzLiRjb250ZXh0PXZvaWQgMCx0aGlzLl9kb1Jlc2l6ZT1OdChlPT50aGlzLnVwZGF0ZShlKSxhLnJlc2l6ZURlbGF5fHwwKSx0aGlzLl9kYXRhQ2hhbmdlcz1bXSx4b1t0aGlzLmlkXT10aGlzLCFvfHwhcyl7Y29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBjaGFydDogY2FuJ3QgYWNxdWlyZSBjb250ZXh0IGZyb20gdGhlIGdpdmVuIGl0ZW1gKTtyZXR1cm59Si5saXN0ZW4odGhpcyxgY29tcGxldGVgLHZvKSxKLmxpc3Rlbih0aGlzLGBwcm9ncmVzc2AseW8pLHRoaXMuX2luaXRpYWxpemUoKSx0aGlzLmF0dGFjaGVkJiZ0aGlzLnVwZGF0ZSgpfWdldCBhc3BlY3RSYXRpbygpe2xldHtvcHRpb25zOnthc3BlY3RSYXRpbzplLG1haW50YWluQXNwZWN0UmF0aW86dH0sd2lkdGg6bixoZWlnaHQ6cixfYXNwZWN0UmF0aW86aX09dGhpcztyZXR1cm4gayhlKT90JiZpP2k6cj9uL3I6bnVsbDplfWdldCBkYXRhKCl7cmV0dXJuIHRoaXMuY29uZmlnLmRhdGF9c2V0IGRhdGEoZSl7dGhpcy5jb25maWcuZGF0YT1lfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX29wdGlvbnN9c2V0IG9wdGlvbnMoZSl7dGhpcy5jb25maWcub3B0aW9ucz1lfWdldCByZWdpc3RyeSgpe3JldHVybiBZfV9pbml0aWFsaXplKCl7cmV0dXJuIHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlSW5pdGApLHRoaXMub3B0aW9ucy5yZXNwb25zaXZlP3RoaXMucmVzaXplKCk6eHIodGhpcyx0aGlzLm9wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbyksdGhpcy5iaW5kRXZlbnRzKCksdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckluaXRgKSx0aGlzfWNsZWFyKCl7cmV0dXJuIGRuKHRoaXMuY2FudmFzLHRoaXMuY3R4KSx0aGlzfXN0b3AoKXtyZXR1cm4gSi5zdG9wKHRoaXMpLHRoaXN9cmVzaXplKGUsdCl7Si5ydW5uaW5nKHRoaXMpP3RoaXMuX3Jlc2l6ZUJlZm9yZURyYXc9e3dpZHRoOmUsaGVpZ2h0OnR9OnRoaXMuX3Jlc2l6ZShlLHQpfV9yZXNpemUoZSx0KXtsZXQgbj10aGlzLm9wdGlvbnMscj10aGlzLmNhbnZhcyxpPW4ubWFpbnRhaW5Bc3BlY3RSYXRpbyYmdGhpcy5hc3BlY3RSYXRpbyxhPXRoaXMucGxhdGZvcm0uZ2V0TWF4aW11bVNpemUocixlLHQsaSksbz1uLmRldmljZVBpeGVsUmF0aW98fHRoaXMucGxhdGZvcm0uZ2V0RGV2aWNlUGl4ZWxSYXRpbygpLHM9dGhpcy53aWR0aD9gcmVzaXplYDpgYXR0YWNoYDt0aGlzLndpZHRoPWEud2lkdGgsdGhpcy5oZWlnaHQ9YS5oZWlnaHQsdGhpcy5fYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx4cih0aGlzLG8sITApJiYodGhpcy5ub3RpZnlQbHVnaW5zKGByZXNpemVgLHtzaXplOmF9KSxGKG4ub25SZXNpemUsW3RoaXMsYV0sdGhpcyksdGhpcy5hdHRhY2hlZCYmdGhpcy5fZG9SZXNpemUocykmJnRoaXMucmVuZGVyKCkpfWVuc3VyZVNjYWxlc0hhdmVJRHMoKXtJKHRoaXMub3B0aW9ucy5zY2FsZXN8fHt9LChlLHQpPT57ZS5pZD10fSl9YnVpbGRPclVwZGF0ZVNjYWxlcygpe2xldCBlPXRoaXMub3B0aW9ucyx0PWUuc2NhbGVzLG49dGhpcy5zY2FsZXMscj1PYmplY3Qua2V5cyhuKS5yZWR1Y2UoKGUsdCk9PihlW3RdPSExLGUpLHt9KSxpPVtdO3QmJihpPWkuY29uY2F0KE9iamVjdC5rZXlzKHQpLm1hcChlPT57bGV0IG49dFtlXSxyPVFhKGUsbiksaT1yPT09YHJgLGE9cj09PWB4YDtyZXR1cm57b3B0aW9uczpuLGRwb3NpdGlvbjppP2BjaGFydEFyZWFgOmE/YGJvdHRvbWA6YGxlZnRgLGR0eXBlOmk/YHJhZGlhbExpbmVhcmA6YT9gY2F0ZWdvcnlgOmBsaW5lYXJgfX0pKSksSShpLHQ9PntsZXQgaT10Lm9wdGlvbnMsYT1pLmlkLG89UWEoYSxpKSxzPVAoaS50eXBlLHQuZHR5cGUpOyhpLnBvc2l0aW9uPT09dm9pZCAwfHxnbyhpLnBvc2l0aW9uLG8pIT09Z28odC5kcG9zaXRpb24pKSYmKGkucG9zaXRpb249dC5kcG9zaXRpb24pLHJbYV09ITA7bGV0IGM9bnVsbDthIGluIG4mJm5bYV0udHlwZT09PXM/Yz1uW2FdOihjPW5ldyhZLmdldFNjYWxlKHMpKSh7aWQ6YSx0eXBlOnMsY3R4OnRoaXMuY3R4LGNoYXJ0OnRoaXN9KSxuW2MuaWRdPWMpLGMuaW5pdChpLGUpfSksSShyLChlLHQpPT57ZXx8ZGVsZXRlIG5bdF19KSxJKG4sZT0+e3FpLmNvbmZpZ3VyZSh0aGlzLGUsZS5vcHRpb25zKSxxaS5hZGRCb3godGhpcyxlKX0pfV91cGRhdGVNZXRhc2V0cygpe2xldCBlPXRoaXMuX21ldGFzZXRzLHQ9dGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aCxuPWUubGVuZ3RoO2lmKGUuc29ydCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KSxuPnQpe2ZvcihsZXQgZT10O2U8bjsrK2UpdGhpcy5fZGVzdHJveURhdGFzZXRNZXRhKGUpO2Uuc3BsaWNlKHQsbi10KX10aGlzLl9zb3J0ZWRNZXRhc2V0cz1lLnNsaWNlKDApLnNvcnQoX28oYG9yZGVyYCxgaW5kZXhgKSl9X3JlbW92ZVVucmVmZXJlbmNlZE1ldGFzZXRzKCl7bGV0e19tZXRhc2V0czplLGRhdGE6e2RhdGFzZXRzOnR9fT10aGlzO2UubGVuZ3RoPnQubGVuZ3RoJiZkZWxldGUgdGhpcy5fc3RhY2tzLGUuZm9yRWFjaCgoZSxuKT0+e3QuZmlsdGVyKHQ9PnQ9PT1lLl9kYXRhc2V0KS5sZW5ndGg9PT0wJiZ0aGlzLl9kZXN0cm95RGF0YXNldE1ldGEobil9KX1idWlsZE9yVXBkYXRlQ29udHJvbGxlcnMoKXtsZXQgZT1bXSx0PXRoaXMuZGF0YS5kYXRhc2V0cyxuLHI7Zm9yKHRoaXMuX3JlbW92ZVVucmVmZXJlbmNlZE1ldGFzZXRzKCksbj0wLHI9dC5sZW5ndGg7bjxyO24rKyl7bGV0IHI9dFtuXSxpPXRoaXMuZ2V0RGF0YXNldE1ldGEobiksYT1yLnR5cGV8fHRoaXMuY29uZmlnLnR5cGU7aWYoaS50eXBlJiZpLnR5cGUhPT1hJiYodGhpcy5fZGVzdHJveURhdGFzZXRNZXRhKG4pLGk9dGhpcy5nZXREYXRhc2V0TWV0YShuKSksaS50eXBlPWEsaS5pbmRleEF4aXM9ci5pbmRleEF4aXN8fHFhKGEsdGhpcy5vcHRpb25zKSxpLm9yZGVyPXIub3JkZXJ8fDAsaS5pbmRleD1uLGkubGFiZWw9YGArci5sYWJlbCxpLnZpc2libGU9dGhpcy5pc0RhdGFzZXRWaXNpYmxlKG4pLGkuY29udHJvbGxlcilpLmNvbnRyb2xsZXIudXBkYXRlSW5kZXgobiksaS5jb250cm9sbGVyLmxpbmtTY2FsZXMoKTtlbHNle2xldCB0PVkuZ2V0Q29udHJvbGxlcihhKSx7ZGF0YXNldEVsZW1lbnRUeXBlOnIsZGF0YUVsZW1lbnRUeXBlOm99PVcuZGF0YXNldHNbYV07T2JqZWN0LmFzc2lnbih0LHtkYXRhRWxlbWVudFR5cGU6WS5nZXRFbGVtZW50KG8pLGRhdGFzZXRFbGVtZW50VHlwZTpyJiZZLmdldEVsZW1lbnQocil9KSxpLmNvbnRyb2xsZXI9bmV3IHQodGhpcyxuKSxlLnB1c2goaS5jb250cm9sbGVyKX19cmV0dXJuIHRoaXMuX3VwZGF0ZU1ldGFzZXRzKCksZX1fcmVzZXRFbGVtZW50cygpe0kodGhpcy5kYXRhLmRhdGFzZXRzLChlLHQpPT57dGhpcy5nZXREYXRhc2V0TWV0YSh0KS5jb250cm9sbGVyLnJlc2V0KCl9LHRoaXMpfXJlc2V0KCl7dGhpcy5fcmVzZXRFbGVtZW50cygpLHRoaXMubm90aWZ5UGx1Z2lucyhgcmVzZXRgKX11cGRhdGUoZSl7bGV0IHQ9dGhpcy5jb25maWc7dC51cGRhdGUoKTtsZXQgbj10aGlzLl9vcHRpb25zPXQuY3JlYXRlUmVzb2x2ZXIodC5jaGFydE9wdGlvblNjb3BlcygpLHRoaXMuZ2V0Q29udGV4dCgpKSxyPXRoaXMuX2FuaW1hdGlvbnNEaXNhYmxlZD0hbi5hbmltYXRpb247aWYodGhpcy5fdXBkYXRlU2NhbGVzKCksdGhpcy5fY2hlY2tFdmVudEJpbmRpbmdzKCksdGhpcy5fdXBkYXRlSGlkZGVuSW5kaWNlcygpLHRoaXMuX3BsdWdpbnMuaW52YWxpZGF0ZSgpLHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlVXBkYXRlYCx7bW9kZTplLGNhbmNlbGFibGU6ITB9KT09PSExKXJldHVybjtsZXQgaT10aGlzLmJ1aWxkT3JVcGRhdGVDb250cm9sbGVycygpO3RoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRWxlbWVudHNVcGRhdGVgKTtsZXQgYT0wO2ZvcihsZXQgZT0wLHQ9dGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aDtlPHQ7ZSsrKXtsZXR7Y29udHJvbGxlcjp0fT10aGlzLmdldERhdGFzZXRNZXRhKGUpLG49IXImJmkuaW5kZXhPZih0KT09PS0xO3QuYnVpbGRPclVwZGF0ZUVsZW1lbnRzKG4pLGE9TWF0aC5tYXgoK3QuZ2V0TWF4T3ZlcmZsb3coKSxhKX1hPXRoaXMuX21pblBhZGRpbmc9bi5sYXlvdXQuYXV0b1BhZGRpbmc/YTowLHRoaXMuX3VwZGF0ZUxheW91dChhKSxyfHxJKGksZT0+e2UucmVzZXQoKX0pLHRoaXMuX3VwZGF0ZURhdGFzZXRzKGUpLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJVcGRhdGVgLHttb2RlOmV9KSx0aGlzLl9sYXllcnMuc29ydChfbyhgemAsYF9pZHhgKSk7bGV0e19hY3RpdmU6byxfbGFzdEV2ZW50OnN9PXRoaXM7cz90aGlzLl9ldmVudEhhbmRsZXIocywhMCk6by5sZW5ndGgmJnRoaXMuX3VwZGF0ZUhvdmVyU3R5bGVzKG8sbywhMCksdGhpcy5yZW5kZXIoKX1fdXBkYXRlU2NhbGVzKCl7SSh0aGlzLnNjYWxlcyxlPT57cWkucmVtb3ZlQm94KHRoaXMsZSl9KSx0aGlzLmVuc3VyZVNjYWxlc0hhdmVJRHMoKSx0aGlzLmJ1aWxkT3JVcGRhdGVTY2FsZXMoKX1fY2hlY2tFdmVudEJpbmRpbmdzKCl7bGV0IGU9dGhpcy5vcHRpb25zOyghJGUobmV3IFNldChPYmplY3Qua2V5cyh0aGlzLl9saXN0ZW5lcnMpKSxuZXcgU2V0KGUuZXZlbnRzKSl8fCEhdGhpcy5fcmVzcG9uc2l2ZUxpc3RlbmVycyE9PWUucmVzcG9uc2l2ZSkmJih0aGlzLnVuYmluZEV2ZW50cygpLHRoaXMuYmluZEV2ZW50cygpKX1fdXBkYXRlSGlkZGVuSW5kaWNlcygpe2xldHtfaGlkZGVuSW5kaWNlczplfT10aGlzLHQ9dGhpcy5fZ2V0VW5pZm9ybURhdGFDaGFuZ2VzKCl8fFtdO2ZvcihsZXR7bWV0aG9kOm4sc3RhcnQ6cixjb3VudDppfW9mIHQpQ28oZSxyLG49PT1gX3JlbW92ZUVsZW1lbnRzYD8taTppKX1fZ2V0VW5pZm9ybURhdGFDaGFuZ2VzKCl7bGV0IGU9dGhpcy5fZGF0YUNoYW5nZXM7aWYoIWV8fCFlLmxlbmd0aClyZXR1cm47dGhpcy5fZGF0YUNoYW5nZXM9W107bGV0IHQ9dGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aCxuPXQ9Pm5ldyBTZXQoZS5maWx0ZXIoZT0+ZVswXT09PXQpLm1hcCgoZSx0KT0+dCtgLGArZS5zcGxpY2UoMSkuam9pbihgLGApKSkscj1uKDApO2ZvcihsZXQgZT0xO2U8dDtlKyspaWYoISRlKHIsbihlKSkpcmV0dXJuO3JldHVybiBBcnJheS5mcm9tKHIpLm1hcChlPT5lLnNwbGl0KGAsYCkpLm1hcChlPT4oe21ldGhvZDplWzFdLHN0YXJ0OitlWzJdLGNvdW50OitlWzNdfSkpfV91cGRhdGVMYXlvdXQoZSl7aWYodGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVMYXlvdXRgLHtjYW5jZWxhYmxlOiEwfSk9PT0hMSlyZXR1cm47cWkudXBkYXRlKHRoaXMsdGhpcy53aWR0aCx0aGlzLmhlaWdodCxlKTtsZXQgdD10aGlzLmNoYXJ0QXJlYSxuPXQud2lkdGg8PTB8fHQuaGVpZ2h0PD0wO3RoaXMuX2xheWVycz1bXSxJKHRoaXMuYm94ZXMsZT0+e24mJmUucG9zaXRpb249PT1gY2hhcnRBcmVhYHx8KGUuY29uZmlndXJlJiZlLmNvbmZpZ3VyZSgpLHRoaXMuX2xheWVycy5wdXNoKC4uLmUuX2xheWVycygpKSl9LHRoaXMpLHRoaXMuX2xheWVycy5mb3JFYWNoKChlLHQpPT57ZS5faWR4PXR9KSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyTGF5b3V0YCl9X3VwZGF0ZURhdGFzZXRzKGUpe2lmKHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRGF0YXNldHNVcGRhdGVgLHttb2RlOmUsY2FuY2VsYWJsZTohMH0pIT09ITEpe2ZvcihsZXQgZT0wLHQ9dGhpcy5kYXRhLmRhdGFzZXRzLmxlbmd0aDtlPHQ7KytlKXRoaXMuZ2V0RGF0YXNldE1ldGEoZSkuY29udHJvbGxlci5jb25maWd1cmUoKTtmb3IobGV0IHQ9MCxuPXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGg7dDxuOysrdCl0aGlzLl91cGRhdGVEYXRhc2V0KHQsUWUoZSk/ZSh7ZGF0YXNldEluZGV4OnR9KTplKTt0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRGF0YXNldHNVcGRhdGVgLHttb2RlOmV9KX19X3VwZGF0ZURhdGFzZXQoZSx0KXtsZXQgbj10aGlzLmdldERhdGFzZXRNZXRhKGUpLHI9e21ldGE6bixpbmRleDplLG1vZGU6dCxjYW5jZWxhYmxlOiEwfTt0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZURhdGFzZXRVcGRhdGVgLHIpIT09ITEmJihuLmNvbnRyb2xsZXIuX3VwZGF0ZSh0KSxyLmNhbmNlbGFibGU9ITEsdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckRhdGFzZXRVcGRhdGVgLHIpKX1yZW5kZXIoKXt0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZVJlbmRlcmAse2NhbmNlbGFibGU6ITB9KSE9PSExJiYoSi5oYXModGhpcyk/dGhpcy5hdHRhY2hlZCYmIUoucnVubmluZyh0aGlzKSYmSi5zdGFydCh0aGlzKToodGhpcy5kcmF3KCksdm8oe2NoYXJ0OnRoaXN9KSkpfWRyYXcoKXtsZXQgZTtpZih0aGlzLl9yZXNpemVCZWZvcmVEcmF3KXtsZXR7d2lkdGg6ZSxoZWlnaHQ6dH09dGhpcy5fcmVzaXplQmVmb3JlRHJhdzt0aGlzLl9yZXNpemVCZWZvcmVEcmF3PW51bGwsdGhpcy5fcmVzaXplKGUsdCl9aWYodGhpcy5jbGVhcigpLHRoaXMud2lkdGg8PTB8fHRoaXMuaGVpZ2h0PD0wfHx0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZURyYXdgLHtjYW5jZWxhYmxlOiEwfSk9PT0hMSlyZXR1cm47bGV0IHQ9dGhpcy5fbGF5ZXJzO2ZvcihlPTA7ZTx0Lmxlbmd0aCYmdFtlXS56PD0wOysrZSl0W2VdLmRyYXcodGhpcy5jaGFydEFyZWEpO2Zvcih0aGlzLl9kcmF3RGF0YXNldHMoKTtlPHQubGVuZ3RoOysrZSl0W2VdLmRyYXcodGhpcy5jaGFydEFyZWEpO3RoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJEcmF3YCl9X2dldFNvcnRlZERhdGFzZXRNZXRhcyhlKXtsZXQgdD10aGlzLl9zb3J0ZWRNZXRhc2V0cyxuPVtdLHIsaTtmb3Iocj0wLGk9dC5sZW5ndGg7cjxpOysrcil7bGV0IGk9dFtyXTsoIWV8fGkudmlzaWJsZSkmJm4ucHVzaChpKX1yZXR1cm4gbn1nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCl7cmV0dXJuIHRoaXMuX2dldFNvcnRlZERhdGFzZXRNZXRhcyghMCl9X2RyYXdEYXRhc2V0cygpe2lmKHRoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRGF0YXNldHNEcmF3YCx7Y2FuY2VsYWJsZTohMH0pPT09ITEpcmV0dXJuO2xldCBlPXRoaXMuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpO2ZvcihsZXQgdD1lLmxlbmd0aC0xO3Q+PTA7LS10KXRoaXMuX2RyYXdEYXRhc2V0KGVbdF0pO3RoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJEYXRhc2V0c0RyYXdgKX1fZHJhd0RhdGFzZXQoZSl7bGV0IHQ9dGhpcy5jdHgsbj17bWV0YTplLGluZGV4OmUuaW5kZXgsY2FuY2VsYWJsZTohMH0scj1Lcih0aGlzLGUpO3RoaXMubm90aWZ5UGx1Z2lucyhgYmVmb3JlRGF0YXNldERyYXdgLG4pIT09ITEmJihyJiZtbih0LHIpLGUuY29udHJvbGxlci5kcmF3KCksciYmaG4odCksbi5jYW5jZWxhYmxlPSExLHRoaXMubm90aWZ5UGx1Z2lucyhgYWZ0ZXJEYXRhc2V0RHJhd2AsbikpfWlzUG9pbnRJbkFyZWEoZSl7cmV0dXJuIEcoZSx0aGlzLmNoYXJ0QXJlYSx0aGlzLl9taW5QYWRkaW5nKX1nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKGUsdCxuLHIpe2xldCBpPUFpLm1vZGVzW3RdO3JldHVybiB0eXBlb2YgaT09YGZ1bmN0aW9uYD9pKHRoaXMsZSxuLHIpOltdfWdldERhdGFzZXRNZXRhKGUpe2xldCB0PXRoaXMuZGF0YS5kYXRhc2V0c1tlXSxuPXRoaXMuX21ldGFzZXRzLHI9bi5maWx0ZXIoZT0+ZSYmZS5fZGF0YXNldD09PXQpLnBvcCgpO3JldHVybiByfHwocj17dHlwZTpudWxsLGRhdGE6W10sZGF0YXNldDpudWxsLGNvbnRyb2xsZXI6bnVsbCxoaWRkZW46bnVsbCx4QXhpc0lEOm51bGwseUF4aXNJRDpudWxsLG9yZGVyOnQmJnQub3JkZXJ8fDAsaW5kZXg6ZSxfZGF0YXNldDp0LF9wYXJzZWQ6W10sX3NvcnRlZDohMX0sbi5wdXNoKHIpKSxyfWdldENvbnRleHQoKXtyZXR1cm4gdGhpcy4kY29udGV4dHx8PU1uKG51bGwse2NoYXJ0OnRoaXMsdHlwZTpgY2hhcnRgfSl9Z2V0VmlzaWJsZURhdGFzZXRDb3VudCgpe3JldHVybiB0aGlzLmdldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKS5sZW5ndGh9aXNEYXRhc2V0VmlzaWJsZShlKXtsZXQgdD10aGlzLmRhdGEuZGF0YXNldHNbZV07aWYoIXQpcmV0dXJuITE7bGV0IG49dGhpcy5nZXREYXRhc2V0TWV0YShlKTtyZXR1cm4gdHlwZW9mIG4uaGlkZGVuPT1gYm9vbGVhbmA/IW4uaGlkZGVuOiF0LmhpZGRlbn1zZXREYXRhc2V0VmlzaWJpbGl0eShlLHQpe2xldCBuPXRoaXMuZ2V0RGF0YXNldE1ldGEoZSk7bi5oaWRkZW49IXR9dG9nZ2xlRGF0YVZpc2liaWxpdHkoZSl7dGhpcy5faGlkZGVuSW5kaWNlc1tlXT0hdGhpcy5faGlkZGVuSW5kaWNlc1tlXX1nZXREYXRhVmlzaWJpbGl0eShlKXtyZXR1cm4hdGhpcy5faGlkZGVuSW5kaWNlc1tlXX1fdXBkYXRlVmlzaWJpbGl0eShlLHQsbil7bGV0IHI9bj9gc2hvd2A6YGhpZGVgLGk9dGhpcy5nZXREYXRhc2V0TWV0YShlKSxhPWkuY29udHJvbGxlci5fcmVzb2x2ZUFuaW1hdGlvbnModm9pZCAwLHIpO1plKHQpPyhpLmRhdGFbdF0uaGlkZGVuPSFuLHRoaXMudXBkYXRlKCkpOih0aGlzLnNldERhdGFzZXRWaXNpYmlsaXR5KGUsbiksYS51cGRhdGUoaSx7dmlzaWJsZTpufSksdGhpcy51cGRhdGUodD0+dC5kYXRhc2V0SW5kZXg9PT1lP3I6dm9pZCAwKSl9aGlkZShlLHQpe3RoaXMuX3VwZGF0ZVZpc2liaWxpdHkoZSx0LCExKX1zaG93KGUsdCl7dGhpcy5fdXBkYXRlVmlzaWJpbGl0eShlLHQsITApfV9kZXN0cm95RGF0YXNldE1ldGEoZSl7bGV0IHQ9dGhpcy5fbWV0YXNldHNbZV07dCYmdC5jb250cm9sbGVyJiZ0LmNvbnRyb2xsZXIuX2Rlc3Ryb3koKSxkZWxldGUgdGhpcy5fbWV0YXNldHNbZV19X3N0b3AoKXtsZXQgZSx0O2Zvcih0aGlzLnN0b3AoKSxKLnJlbW92ZSh0aGlzKSxlPTAsdD10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoO2U8dDsrK2UpdGhpcy5fZGVzdHJveURhdGFzZXRNZXRhKGUpfWRlc3Ryb3koKXt0aGlzLm5vdGlmeVBsdWdpbnMoYGJlZm9yZURlc3Ryb3lgKTtsZXR7Y2FudmFzOmUsY3R4OnR9PXRoaXM7dGhpcy5fc3RvcCgpLHRoaXMuY29uZmlnLmNsZWFyQ2FjaGUoKSxlJiYodGhpcy51bmJpbmRFdmVudHMoKSxkbihlLHQpLHRoaXMucGxhdGZvcm0ucmVsZWFzZUNvbnRleHQodCksdGhpcy5jYW52YXM9bnVsbCx0aGlzLmN0eD1udWxsKSxkZWxldGUgeG9bdGhpcy5pZF0sdGhpcy5ub3RpZnlQbHVnaW5zKGBhZnRlckRlc3Ryb3lgKX10b0Jhc2U2NEltYWdlKC4uLmUpe3JldHVybiB0aGlzLmNhbnZhcy50b0RhdGFVUkwoLi4uZSl9YmluZEV2ZW50cygpe3RoaXMuYmluZFVzZXJFdmVudHMoKSx0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZT90aGlzLmJpbmRSZXNwb25zaXZlRXZlbnRzKCk6dGhpcy5hdHRhY2hlZD0hMH1iaW5kVXNlckV2ZW50cygpe2xldCBlPXRoaXMuX2xpc3RlbmVycyx0PXRoaXMucGxhdGZvcm0sbj0obixyKT0+e3QuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLG4sciksZVtuXT1yfSxyPShlLHQsbik9PntlLm9mZnNldFg9dCxlLm9mZnNldFk9bix0aGlzLl9ldmVudEhhbmRsZXIoZSl9O0kodGhpcy5vcHRpb25zLmV2ZW50cyxlPT5uKGUscikpfWJpbmRSZXNwb25zaXZlRXZlbnRzKCl7dGhpcy5fcmVzcG9uc2l2ZUxpc3RlbmVyc3x8PXt9O2xldCBlPXRoaXMuX3Jlc3BvbnNpdmVMaXN0ZW5lcnMsdD10aGlzLnBsYXRmb3JtLG49KG4scik9Pnt0LmFkZEV2ZW50TGlzdGVuZXIodGhpcyxuLHIpLGVbbl09cn0scj0obixyKT0+e2Vbbl0mJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIodGhpcyxuLHIpLGRlbGV0ZSBlW25dKX0saT0oZSx0KT0+e3RoaXMuY2FudmFzJiZ0aGlzLnJlc2l6ZShlLHQpfSxhLG89KCk9PntyKGBhdHRhY2hgLG8pLHRoaXMuYXR0YWNoZWQ9ITAsdGhpcy5yZXNpemUoKSxuKGByZXNpemVgLGkpLG4oYGRldGFjaGAsYSl9O2E9KCk9Pnt0aGlzLmF0dGFjaGVkPSExLHIoYHJlc2l6ZWAsaSksdGhpcy5fc3RvcCgpLHRoaXMuX3Jlc2l6ZSgwLDApLG4oYGF0dGFjaGAsbyl9LHQuaXNBdHRhY2hlZCh0aGlzLmNhbnZhcyk/bygpOmEoKX11bmJpbmRFdmVudHMoKXtJKHRoaXMuX2xpc3RlbmVycywoZSx0KT0+e3RoaXMucGxhdGZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzLHQsZSl9KSx0aGlzLl9saXN0ZW5lcnM9e30sSSh0aGlzLl9yZXNwb25zaXZlTGlzdGVuZXJzLChlLHQpPT57dGhpcy5wbGF0Zm9ybS5yZW1vdmVFdmVudExpc3RlbmVyKHRoaXMsdCxlKX0pLHRoaXMuX3Jlc3BvbnNpdmVMaXN0ZW5lcnM9dm9pZCAwfXVwZGF0ZUhvdmVyU3R5bGUoZSx0LG4pe2xldCByPW4/YHNldGA6YHJlbW92ZWAsaSxhLG8scztmb3IodD09PWBkYXRhc2V0YCYmKGk9dGhpcy5nZXREYXRhc2V0TWV0YShlWzBdLmRhdGFzZXRJbmRleCksaS5jb250cm9sbGVyW2BfYCtyK2BEYXRhc2V0SG92ZXJTdHlsZWBdKCkpLG89MCxzPWUubGVuZ3RoO288czsrK28pe2E9ZVtvXTtsZXQgdD1hJiZ0aGlzLmdldERhdGFzZXRNZXRhKGEuZGF0YXNldEluZGV4KS5jb250cm9sbGVyO3QmJnRbcitgSG92ZXJTdHlsZWBdKGEuZWxlbWVudCxhLmRhdGFzZXRJbmRleCxhLmluZGV4KX19Z2V0QWN0aXZlRWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfHxbXX1zZXRBY3RpdmVFbGVtZW50cyhlKXtsZXQgdD10aGlzLl9hY3RpdmV8fFtdLG49ZS5tYXAoKHtkYXRhc2V0SW5kZXg6ZSxpbmRleDp0fSk9PntsZXQgbj10aGlzLmdldERhdGFzZXRNZXRhKGUpO2lmKCFuKXRocm93IEVycm9yKGBObyBkYXRhc2V0IGZvdW5kIGF0IGluZGV4IGArZSk7cmV0dXJue2RhdGFzZXRJbmRleDplLGVsZW1lbnQ6bi5kYXRhW3RdLGluZGV4OnR9fSk7emUobix0KXx8KHRoaXMuX2FjdGl2ZT1uLHRoaXMuX2xhc3RFdmVudD1udWxsLHRoaXMuX3VwZGF0ZUhvdmVyU3R5bGVzKG4sdCkpfW5vdGlmeVBsdWdpbnMoZSx0LG4pe3JldHVybiB0aGlzLl9wbHVnaW5zLm5vdGlmeSh0aGlzLGUsdCxuKX1pc1BsdWdpbkVuYWJsZWQoZSl7cmV0dXJuIHRoaXMuX3BsdWdpbnMuX2NhY2hlLmZpbHRlcih0PT50LnBsdWdpbi5pZD09PWUpLmxlbmd0aD09PTF9X3VwZGF0ZUhvdmVyU3R5bGVzKGUsdCxuKXtsZXQgcj10aGlzLm9wdGlvbnMuaG92ZXIsaT0oZSx0KT0+ZS5maWx0ZXIoZT0+IXQuc29tZSh0PT5lLmRhdGFzZXRJbmRleD09PXQuZGF0YXNldEluZGV4JiZlLmluZGV4PT09dC5pbmRleCkpLGE9aSh0LGUpLG89bj9lOmkoZSx0KTthLmxlbmd0aCYmdGhpcy51cGRhdGVIb3ZlclN0eWxlKGEsci5tb2RlLCExKSxvLmxlbmd0aCYmci5tb2RlJiZ0aGlzLnVwZGF0ZUhvdmVyU3R5bGUobyxyLm1vZGUsITApfV9ldmVudEhhbmRsZXIoZSx0KXtsZXQgbj17ZXZlbnQ6ZSxyZXBsYXk6dCxjYW5jZWxhYmxlOiEwLGluQ2hhcnRBcmVhOnRoaXMuaXNQb2ludEluQXJlYShlKX0scj10PT4odC5vcHRpb25zLmV2ZW50c3x8dGhpcy5vcHRpb25zLmV2ZW50cykuaW5jbHVkZXMoZS5uYXRpdmUudHlwZSk7aWYodGhpcy5ub3RpZnlQbHVnaW5zKGBiZWZvcmVFdmVudGAsbixyKT09PSExKXJldHVybjtsZXQgaT10aGlzLl9oYW5kbGVFdmVudChlLHQsbi5pbkNoYXJ0QXJlYSk7cmV0dXJuIG4uY2FuY2VsYWJsZT0hMSx0aGlzLm5vdGlmeVBsdWdpbnMoYGFmdGVyRXZlbnRgLG4sciksKGl8fG4uY2hhbmdlZCkmJnRoaXMucmVuZGVyKCksdGhpc31faGFuZGxlRXZlbnQoZSx0LG4pe2xldHtfYWN0aXZlOnI9W10sb3B0aW9uczppfT10aGlzLGE9dCxvPXRoaXMuX2dldEFjdGl2ZUVsZW1lbnRzKGUscixuLGEpLHM9ZXQoZSksYz13byhlLHRoaXMuX2xhc3RFdmVudCxuLHMpO24mJih0aGlzLl9sYXN0RXZlbnQ9bnVsbCxGKGkub25Ib3ZlcixbZSxvLHRoaXNdLHRoaXMpLHMmJkYoaS5vbkNsaWNrLFtlLG8sdGhpc10sdGhpcykpO2xldCBsPSF6ZShvLHIpO3JldHVybihsfHx0KSYmKHRoaXMuX2FjdGl2ZT1vLHRoaXMuX3VwZGF0ZUhvdmVyU3R5bGVzKG8scix0KSksdGhpcy5fbGFzdEV2ZW50PWMsbH1fZ2V0QWN0aXZlRWxlbWVudHMoZSx0LG4scil7aWYoZS50eXBlPT09YG1vdXNlb3V0YClyZXR1cm5bXTtpZighbilyZXR1cm4gdDtsZXQgaT10aGlzLm9wdGlvbnMuaG92ZXI7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShlLGkubW9kZSxpLHIpfX07ZnVuY3Rpb24gRW8oKXtyZXR1cm4gSShUby5pbnN0YW5jZXMsZT0+ZS5fcGx1Z2lucy5pbnZhbGlkYXRlKCkpfWZ1bmN0aW9uIERvKGUsdCxuPXQpe2UubGluZUNhcD1QKG4uYm9yZGVyQ2FwU3R5bGUsdC5ib3JkZXJDYXBTdHlsZSksZS5zZXRMaW5lRGFzaChQKG4uYm9yZGVyRGFzaCx0LmJvcmRlckRhc2gpKSxlLmxpbmVEYXNoT2Zmc2V0PVAobi5ib3JkZXJEYXNoT2Zmc2V0LHQuYm9yZGVyRGFzaE9mZnNldCksZS5saW5lSm9pbj1QKG4uYm9yZGVySm9pblN0eWxlLHQuYm9yZGVySm9pblN0eWxlKSxlLmxpbmVXaWR0aD1QKG4uYm9yZGVyV2lkdGgsdC5ib3JkZXJXaWR0aCksZS5zdHJva2VTdHlsZT1QKG4uYm9yZGVyQ29sb3IsdC5ib3JkZXJDb2xvcil9ZnVuY3Rpb24gT28oZSx0LG4pe2UubGluZVRvKG4ueCxuLnkpfWZ1bmN0aW9uIGtvKGUpe3JldHVybiBlLnN0ZXBwZWQ/Z246ZS50ZW5zaW9ufHxlLmN1YmljSW50ZXJwb2xhdGlvbk1vZGU9PT1gbW9ub3RvbmVgP19uOk9vfWZ1bmN0aW9uIEFvKGUsdCxuPXt9KXtsZXQgcj1lLmxlbmd0aCx7c3RhcnQ6aT0wLGVuZDphPXItMX09bix7c3RhcnQ6byxlbmQ6c309dCxjPU1hdGgubWF4KGksbyksbD1NYXRoLm1pbihhLHMpLHU9aTxvJiZhPG98fGk+cyYmYT5zO3JldHVybntjb3VudDpyLHN0YXJ0OmMsbG9vcDp0Lmxvb3AsaWxlbjpsPGMmJiF1P3IrbC1jOmwtY319ZnVuY3Rpb24gam8oZSx0LG4scil7bGV0e3BvaW50czppLG9wdGlvbnM6YX09dCx7Y291bnQ6byxzdGFydDpzLGxvb3A6YyxpbGVuOmx9PUFvKGksbixyKSx1PWtvKGEpLHttb3ZlOmQ9ITAscmV2ZXJzZTpmfT1yfHx7fSxwLG0saDtmb3IocD0wO3A8PWw7KytwKW09aVsocysoZj9sLXA6cCkpJW9dLCFtLnNraXAmJihkPyhlLm1vdmVUbyhtLngsbS55KSxkPSExKTp1KGUsaCxtLGYsYS5zdGVwcGVkKSxoPW0pO3JldHVybiBjJiYobT1pWyhzKyhmP2w6MCkpJW9dLHUoZSxoLG0sZixhLnN0ZXBwZWQpKSwhIWN9ZnVuY3Rpb24gTW8oZSx0LG4scil7bGV0IGk9dC5wb2ludHMse2NvdW50OmEsc3RhcnQ6byxpbGVuOnN9PUFvKGksbixyKSx7bW92ZTpjPSEwLHJldmVyc2U6bH09cnx8e30sdT0wLGQ9MCxmLHAsbSxoLGcsXyx2PWU9PihvKyhsP3MtZTplKSklYSx5PSgpPT57aCE9PWcmJihlLmxpbmVUbyh1LGcpLGUubGluZVRvKHUsaCksZS5saW5lVG8odSxfKSl9O2ZvcihjJiYocD1pW3YoMCldLGUubW92ZVRvKHAueCxwLnkpKSxmPTA7Zjw9czsrK2Ype2lmKHA9aVt2KGYpXSxwLnNraXApY29udGludWU7bGV0IHQ9cC54LG49cC55LHI9dHwwO3I9PT1tPyhuPGg/aD1uOm4+ZyYmKGc9biksdT0oZCp1K3QpLysrZCk6KHkoKSxlLmxpbmVUbyh0LG4pLG09cixkPTAsaD1nPW4pLF89bn15KCl9ZnVuY3Rpb24gTm8oZSl7bGV0IHQ9ZS5vcHRpb25zLG49dC5ib3JkZXJEYXNoJiZ0LmJvcmRlckRhc2gubGVuZ3RoO3JldHVybiFlLl9kZWNpbWF0ZWQmJiFlLl9sb29wJiYhdC50ZW5zaW9uJiZ0LmN1YmljSW50ZXJwb2xhdGlvbk1vZGUhPT1gbW9ub3RvbmVgJiYhdC5zdGVwcGVkJiYhbj9Nbzpqb31mdW5jdGlvbiBQbyhlKXtyZXR1cm4gZS5zdGVwcGVkP1RyOmUudGVuc2lvbnx8ZS5jdWJpY0ludGVycG9sYXRpb25Nb2RlPT09YG1vbm90b25lYD9Fcjp3cn1mdW5jdGlvbiBGbyhlLHQsbixyKXtsZXQgaT10Ll9wYXRoO2l8fChpPXQuX3BhdGg9bmV3IFBhdGgyRCx0LnBhdGgoaSxuLHIpJiZpLmNsb3NlUGF0aCgpKSxEbyhlLHQub3B0aW9ucyksZS5zdHJva2UoaSl9ZnVuY3Rpb24gSW8oZSx0LG4scil7bGV0e3NlZ21lbnRzOmksb3B0aW9uczphfT10LG89Tm8odCk7Zm9yKGxldCBzIG9mIGkpRG8oZSxhLHMuc3R5bGUpLGUuYmVnaW5QYXRoKCksbyhlLHQscyx7c3RhcnQ6bixlbmQ6bityLTF9KSYmZS5jbG9zZVBhdGgoKSxlLnN0cm9rZSgpfXZhciBMbz10eXBlb2YgUGF0aDJEPT1gZnVuY3Rpb25gO2Z1bmN0aW9uIFJvKGUsdCxuLHIpe0xvJiYhdC5vcHRpb25zLnNlZ21lbnQ/Rm8oZSx0LG4scik6SW8oZSx0LG4scil9dmFyIHpvPWNsYXNzIGV4dGVuZHMgX2F7c3RhdGljIGlkPWBsaW5lYDtzdGF0aWMgZGVmYXVsdHM9e2JvcmRlckNhcFN0eWxlOmBidXR0YCxib3JkZXJEYXNoOltdLGJvcmRlckRhc2hPZmZzZXQ6MCxib3JkZXJKb2luU3R5bGU6YG1pdGVyYCxib3JkZXJXaWR0aDozLGNhcEJlemllclBvaW50czohMCxjdWJpY0ludGVycG9sYXRpb25Nb2RlOmBkZWZhdWx0YCxmaWxsOiExLHNwYW5HYXBzOiExLHN0ZXBwZWQ6ITEsdGVuc2lvbjowfTtzdGF0aWMgZGVmYXVsdFJvdXRlcz17YmFja2dyb3VuZENvbG9yOmBiYWNrZ3JvdW5kQ29sb3JgLGJvcmRlckNvbG9yOmBib3JkZXJDb2xvcmB9O3N0YXRpYyBkZXNjcmlwdG9ycz17X3NjcmlwdGFibGU6ITAsX2luZGV4YWJsZTplPT5lIT09YGJvcmRlckRhc2hgJiZlIT09YGZpbGxgfTtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuYW5pbWF0ZWQ9ITAsdGhpcy5vcHRpb25zPXZvaWQgMCx0aGlzLl9jaGFydD12b2lkIDAsdGhpcy5fbG9vcD12b2lkIDAsdGhpcy5fZnVsbExvb3A9dm9pZCAwLHRoaXMuX3BhdGg9dm9pZCAwLHRoaXMuX3BvaW50cz12b2lkIDAsdGhpcy5fc2VnbWVudHM9dm9pZCAwLHRoaXMuX2RlY2ltYXRlZD0hMSx0aGlzLl9wb2ludHNVcGRhdGVkPSExLHRoaXMuX2RhdGFzZXRJbmRleD12b2lkIDAsZSYmT2JqZWN0LmFzc2lnbih0aGlzLGUpfXVwZGF0ZUNvbnRyb2xQb2ludHMoZSx0KXtsZXQgbj10aGlzLm9wdGlvbnM7aWYoKG4udGVuc2lvbnx8bi5jdWJpY0ludGVycG9sYXRpb25Nb2RlPT09YG1vbm90b25lYCkmJiFuLnN0ZXBwZWQmJiF0aGlzLl9wb2ludHNVcGRhdGVkKXtsZXQgcj1uLnNwYW5HYXBzP3RoaXMuX2xvb3A6dGhpcy5fZnVsbExvb3A7c3IodGhpcy5fcG9pbnRzLG4sZSxyLHQpLHRoaXMuX3BvaW50c1VwZGF0ZWQ9ITB9fXNldCBwb2ludHMoZSl7dGhpcy5fcG9pbnRzPWUsZGVsZXRlIHRoaXMuX3NlZ21lbnRzLGRlbGV0ZSB0aGlzLl9wYXRoLHRoaXMuX3BvaW50c1VwZGF0ZWQ9ITF9Z2V0IHBvaW50cygpe3JldHVybiB0aGlzLl9wb2ludHN9Z2V0IHNlZ21lbnRzKCl7cmV0dXJuIHRoaXMuX3NlZ21lbnRzfHw9enIodGhpcyx0aGlzLm9wdGlvbnMuc2VnbWVudCl9Zmlyc3QoKXtsZXQgZT10aGlzLnNlZ21lbnRzLHQ9dGhpcy5wb2ludHM7cmV0dXJuIGUubGVuZ3RoJiZ0W2VbMF0uc3RhcnRdfWxhc3QoKXtsZXQgZT10aGlzLnNlZ21lbnRzLHQ9dGhpcy5wb2ludHMsbj1lLmxlbmd0aDtyZXR1cm4gbiYmdFtlW24tMV0uZW5kXX1pbnRlcnBvbGF0ZShlLHQpe2xldCBuPXRoaXMub3B0aW9ucyxyPWVbdF0saT10aGlzLnBvaW50cyxhPUlyKHRoaXMse3Byb3BlcnR5OnQsc3RhcnQ6cixlbmQ6cn0pO2lmKCFhLmxlbmd0aClyZXR1cm47bGV0IG89W10scz1QbyhuKSxjLGw7Zm9yKGM9MCxsPWEubGVuZ3RoO2M8bDsrK2Mpe2xldHtzdGFydDpsLGVuZDp1fT1hW2NdLGQ9aVtsXSxmPWlbdV07aWYoZD09PWYpe28ucHVzaChkKTtjb250aW51ZX1sZXQgcD1zKGQsZixNYXRoLmFicygoci1kW3RdKS8oZlt0XS1kW3RdKSksbi5zdGVwcGVkKTtwW3RdPWVbdF0sby5wdXNoKHApfXJldHVybiBvLmxlbmd0aD09PTE/b1swXTpvfXBhdGhTZWdtZW50KGUsdCxuKXtyZXR1cm4gTm8odGhpcykoZSx0aGlzLHQsbil9cGF0aChlLHQsbil7bGV0IHI9dGhpcy5zZWdtZW50cyxpPU5vKHRoaXMpLGE9dGhpcy5fbG9vcDt0fHw9MCxufHw9dGhpcy5wb2ludHMubGVuZ3RoLXQ7Zm9yKGxldCBvIG9mIHIpYSY9aShlLHRoaXMsbyx7c3RhcnQ6dCxlbmQ6dCtuLTF9KTtyZXR1cm4hIWF9ZHJhdyhlLHQsbixyKXtsZXQgaT10aGlzLm9wdGlvbnN8fHt9Oyh0aGlzLnBvaW50c3x8W10pLmxlbmd0aCYmaS5ib3JkZXJXaWR0aCYmKGUuc2F2ZSgpLFJvKGUsdGhpcyxuLHIpLGUucmVzdG9yZSgpKSx0aGlzLmFuaW1hdGVkJiYodGhpcy5fcG9pbnRzVXBkYXRlZD0hMSx0aGlzLl9wYXRoPXZvaWQgMCl9fTtmdW5jdGlvbiBCbyhlLHQsbixyKXtsZXQgaT1lLm9wdGlvbnMse1tuXTphfT1lLmdldFByb3BzKFtuXSxyKTtyZXR1cm4gTWF0aC5hYnModC1hKTxpLnJhZGl1cytpLmhpdFJhZGl1c312YXIgVm89Y2xhc3MgZXh0ZW5kcyBfYXtzdGF0aWMgaWQ9YHBvaW50YDtwYXJzZWQ7c2tpcDtzdG9wO3N0YXRpYyBkZWZhdWx0cz17Ym9yZGVyV2lkdGg6MSxoaXRSYWRpdXM6MSxob3ZlckJvcmRlcldpZHRoOjEsaG92ZXJSYWRpdXM6NCxwb2ludFN0eWxlOmBjaXJjbGVgLHJhZGl1czozLHJvdGF0aW9uOjB9O3N0YXRpYyBkZWZhdWx0Um91dGVzPXtiYWNrZ3JvdW5kQ29sb3I6YGJhY2tncm91bmRDb2xvcmAsYm9yZGVyQ29sb3I6YGJvcmRlckNvbG9yYH07Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm9wdGlvbnM9dm9pZCAwLHRoaXMucGFyc2VkPXZvaWQgMCx0aGlzLnNraXA9dm9pZCAwLHRoaXMuc3RvcD12b2lkIDAsZSYmT2JqZWN0LmFzc2lnbih0aGlzLGUpfWluUmFuZ2UoZSx0LG4pe2xldCByPXRoaXMub3B0aW9ucyx7eDppLHk6YX09dGhpcy5nZXRQcm9wcyhbYHhgLGB5YF0sbik7cmV0dXJuKGUtaSkqKjIrKHQtYSkqKjI8KHIuaGl0UmFkaXVzK3IucmFkaXVzKSoqMn1pblhSYW5nZShlLHQpe3JldHVybiBCbyh0aGlzLGUsYHhgLHQpfWluWVJhbmdlKGUsdCl7cmV0dXJuIEJvKHRoaXMsZSxgeWAsdCl9Z2V0Q2VudGVyUG9pbnQoZSl7bGV0e3g6dCx5Om59PXRoaXMuZ2V0UHJvcHMoW2B4YCxgeWBdLGUpO3JldHVybnt4OnQseTpufX1zaXplKGUpe2U9ZXx8dGhpcy5vcHRpb25zfHx7fTtsZXQgdD1lLnJhZGl1c3x8MDt0PU1hdGgubWF4KHQsdCYmZS5ob3ZlclJhZGl1c3x8MCk7bGV0IG49dCYmZS5ib3JkZXJXaWR0aHx8MDtyZXR1cm4odCtuKSoyfWRyYXcoZSx0KXtsZXQgbj10aGlzLm9wdGlvbnM7dGhpcy5za2lwfHxuLnJhZGl1czwuMXx8IUcodGhpcyx0LHRoaXMuc2l6ZShuKS8yKXx8KGUuc3Ryb2tlU3R5bGU9bi5ib3JkZXJDb2xvcixlLmxpbmVXaWR0aD1uLmJvcmRlcldpZHRoLGUuZmlsbFN0eWxlPW4uYmFja2dyb3VuZENvbG9yLGZuKGUsbix0aGlzLngsdGhpcy55KSl9Z2V0UmFuZ2UoKXtsZXQgZT10aGlzLm9wdGlvbnN8fHt9O3JldHVybiBlLnJhZGl1cytlLmhpdFJhZGl1c319O2Z1bmN0aW9uIEhvKGUsdCxuKXtsZXQgcj1lLnNlZ21lbnRzLGk9ZS5wb2ludHMsYT10LnBvaW50cyxvPVtdO2ZvcihsZXQgZSBvZiByKXtsZXR7c3RhcnQ6cixlbmQ6c309ZTtzPUdvKHIscyxpKTtsZXQgYz1VbyhuLGlbcl0saVtzXSxlLmxvb3ApO2lmKCF0LnNlZ21lbnRzKXtvLnB1c2goe3NvdXJjZTplLHRhcmdldDpjLHN0YXJ0Omlbcl0sZW5kOmlbc119KTtjb250aW51ZX1sZXQgbD1Jcih0LGMpO2ZvcihsZXQgdCBvZiBsKXtsZXQgcj1VbyhuLGFbdC5zdGFydF0sYVt0LmVuZF0sdC5sb29wKSxzPUZyKGUsaSxyKTtmb3IobGV0IGUgb2YgcylvLnB1c2goe3NvdXJjZTplLHRhcmdldDp0LHN0YXJ0Ontbbl06S28oYyxyLGBzdGFydGAsTWF0aC5tYXgpfSxlbmQ6e1tuXTpLbyhjLHIsYGVuZGAsTWF0aC5taW4pfX0pfX1yZXR1cm4gb31mdW5jdGlvbiBVbyhlLHQsbixyKXtpZihyKXJldHVybjtsZXQgaT10W2VdLGE9bltlXTtyZXR1cm4gZT09PWBhbmdsZWAmJihpPVYoaSksYT1WKGEpKSx7cHJvcGVydHk6ZSxzdGFydDppLGVuZDphfX1mdW5jdGlvbiBXbyhlLHQpe2xldHt4Om49bnVsbCx5OnI9bnVsbH09ZXx8e30saT10LnBvaW50cyxhPVtdO3JldHVybiB0LnNlZ21lbnRzLmZvckVhY2goKHtzdGFydDplLGVuZDp0fSk9Pnt0PUdvKGUsdCxpKTtsZXQgbz1pW2VdLHM9aVt0XTtyPT09bnVsbD9uIT09bnVsbCYmKGEucHVzaCh7eDpuLHk6by55fSksYS5wdXNoKHt4Om4seTpzLnl9KSk6KGEucHVzaCh7eDpvLngseTpyfSksYS5wdXNoKHt4OnMueCx5OnJ9KSl9KSxhfWZ1bmN0aW9uIEdvKGUsdCxuKXtmb3IoO3Q+ZTt0LS0pe2xldCBlPW5bdF07aWYoIWlzTmFOKGUueCkmJiFpc05hTihlLnkpKWJyZWFrfXJldHVybiB0fWZ1bmN0aW9uIEtvKGUsdCxuLHIpe3JldHVybiBlJiZ0P3IoZVtuXSx0W25dKTplP2Vbbl06dD90W25dOjB9ZnVuY3Rpb24gcW8oZSx0KXtsZXQgbj1bXSxyPSExO3JldHVybiBBKGUpPyhyPSEwLG49ZSk6bj1XbyhlLHQpLG4ubGVuZ3RoP25ldyB6byh7cG9pbnRzOm4sb3B0aW9uczp7dGVuc2lvbjowfSxfbG9vcDpyLF9mdWxsTG9vcDpyfSk6bnVsbH1mdW5jdGlvbiBKbyhlKXtyZXR1cm4gZSYmZS5maWxsIT09ITF9ZnVuY3Rpb24gWW8oZSx0LG4pe2xldCByPWVbdF0uZmlsbCxpPVt0XSxhO2lmKCFuKXJldHVybiByO2Zvcig7ciE9PSExJiZpLmluZGV4T2Yocik9PT0tMTspe2lmKCFNKHIpKXJldHVybiByO2lmKGE9ZVtyXSwhYSlyZXR1cm4hMTtpZihhLnZpc2libGUpcmV0dXJuIHI7aS5wdXNoKHIpLHI9YS5maWxsfXJldHVybiExfWZ1bmN0aW9uIFhvKGUsdCxuKXtsZXQgcj1lcyhlKTtpZihqKHIpKXJldHVybiFpc05hTihyLnZhbHVlKSYmcjtsZXQgaT1wYXJzZUZsb2F0KHIpO3JldHVybiBNKGkpJiZNYXRoLmZsb29yKGkpPT09aT9abyhyWzBdLHQsaSxuKTpbYG9yaWdpbmAsYHN0YXJ0YCxgZW5kYCxgc3RhY2tgLGBzaGFwZWBdLmluZGV4T2Yocik+PTAmJnJ9ZnVuY3Rpb24gWm8oZSx0LG4scil7cmV0dXJuKGU9PT1gLWB8fGU9PT1gK2ApJiYobj10K24pLG49PT10fHxuPDB8fG4+PXI/ITE6bn1mdW5jdGlvbiBRbyhlLHQpe2xldCBuPW51bGw7cmV0dXJuIGU9PT1gc3RhcnRgP249dC5ib3R0b206ZT09PWBlbmRgP249dC50b3A6aihlKT9uPXQuZ2V0UGl4ZWxGb3JWYWx1ZShlLnZhbHVlKTp0LmdldEJhc2VQaXhlbCYmKG49dC5nZXRCYXNlUGl4ZWwoKSksbn1mdW5jdGlvbiAkbyhlLHQsbil7bGV0IHI7cmV0dXJuIHI9ZT09PWBzdGFydGA/bjplPT09YGVuZGA/dC5vcHRpb25zLnJldmVyc2U/dC5taW46dC5tYXg6aihlKT9lLnZhbHVlOnQuZ2V0QmFzZVZhbHVlKCkscn1mdW5jdGlvbiBlcyhlKXtsZXQgdD1lLm9wdGlvbnMsbj10LmZpbGwscj1QKG4mJm4udGFyZ2V0LG4pO3JldHVybiByPT09dm9pZCAwJiYocj0hIXQuYmFja2dyb3VuZENvbG9yKSxyPT09ITF8fHI9PT1udWxsPyExOnI9PT0hMD9gb3JpZ2luYDpyfWZ1bmN0aW9uIHRzKGUpe2xldHtzY2FsZTp0LGluZGV4Om4sbGluZTpyfT1lLGk9W10sYT1yLnNlZ21lbnRzLG89ci5wb2ludHMscz1ucyh0LG4pO3MucHVzaChxbyh7eDpudWxsLHk6dC5ib3R0b219LHIpKTtmb3IobGV0IGU9MDtlPGEubGVuZ3RoO2UrKyl7bGV0IHQ9YVtlXTtmb3IobGV0IGU9dC5zdGFydDtlPD10LmVuZDtlKyspcnMoaSxvW2VdLHMpfXJldHVybiBuZXcgem8oe3BvaW50czppLG9wdGlvbnM6e319KX1mdW5jdGlvbiBucyhlLHQpe2xldCBuPVtdLHI9ZS5nZXRNYXRjaGluZ1Zpc2libGVNZXRhcyhgbGluZWApO2ZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXtsZXQgaT1yW2VdO2lmKGkuaW5kZXg9PT10KWJyZWFrO2kuaGlkZGVufHxuLnVuc2hpZnQoaS5kYXRhc2V0KX1yZXR1cm4gbn1mdW5jdGlvbiBycyhlLHQsbil7bGV0IHI9W107Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspe2xldCBhPW5baV0se2ZpcnN0Om8sbGFzdDpzLHBvaW50OmN9PWlzKGEsdCxgeGApO2lmKCEoIWN8fG8mJnMpKXtpZihvKXIudW5zaGlmdChjKTtlbHNlIGlmKGUucHVzaChjKSwhcylicmVha319ZS5wdXNoKC4uLnIpfWZ1bmN0aW9uIGlzKGUsdCxuKXtsZXQgcj1lLmludGVycG9sYXRlKHQsbik7aWYoIXIpcmV0dXJue307bGV0IGk9cltuXSxhPWUuc2VnbWVudHMsbz1lLnBvaW50cyxzPSExLGM9ITE7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKyspe2xldCB0PWFbZV0scj1vW3Quc3RhcnRdW25dLGw9b1t0LmVuZF1bbl07aWYoU3QoaSxyLGwpKXtzPWk9PT1yLGM9aT09PWw7YnJlYWt9fXJldHVybntmaXJzdDpzLGxhc3Q6Yyxwb2ludDpyfX12YXIgYXM9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dGhpcy54PWUueCx0aGlzLnk9ZS55LHRoaXMucmFkaXVzPWUucmFkaXVzfXBhdGhTZWdtZW50KGUsdCxuKXtsZXR7eDpyLHk6aSxyYWRpdXM6YX09dGhpcztyZXR1cm4gdHx8PXtzdGFydDowLGVuZDpSfSxlLmFyYyhyLGksYSx0LmVuZCx0LnN0YXJ0LCEwKSwhbi5ib3VuZHN9aW50ZXJwb2xhdGUoZSl7bGV0e3g6dCx5Om4scmFkaXVzOnJ9PXRoaXMsaT1lLmFuZ2xlO3JldHVybnt4OnQrTWF0aC5jb3MoaSkqcix5Om4rTWF0aC5zaW4oaSkqcixhbmdsZTppfX19O2Z1bmN0aW9uIG9zKGUpe2xldHtjaGFydDp0LGZpbGw6bixsaW5lOnJ9PWU7aWYoTShuKSlyZXR1cm4gc3ModCxuKTtpZihuPT09YHN0YWNrYClyZXR1cm4gdHMoZSk7aWYobj09PWBzaGFwZWApcmV0dXJuITA7bGV0IGk9Y3MoZSk7cmV0dXJuIGkgaW5zdGFuY2VvZiBhcz9pOnFvKGkscil9ZnVuY3Rpb24gc3MoZSx0KXtsZXQgbj1lLmdldERhdGFzZXRNZXRhKHQpO3JldHVybiBuJiZlLmlzRGF0YXNldFZpc2libGUodCk/bi5kYXRhc2V0Om51bGx9ZnVuY3Rpb24gY3MoZSl7cmV0dXJuKGUuc2NhbGV8fHt9KS5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWU/dXMoZSk6bHMoZSl9ZnVuY3Rpb24gbHMoZSl7bGV0e3NjYWxlOnQ9e30sZmlsbDpufT1lLHI9UW8obix0KTtpZihNKHIpKXtsZXQgZT10LmlzSG9yaXpvbnRhbCgpO3JldHVybnt4OmU/cjpudWxsLHk6ZT9udWxsOnJ9fXJldHVybiBudWxsfWZ1bmN0aW9uIHVzKGUpe2xldHtzY2FsZTp0LGZpbGw6bn09ZSxyPXQub3B0aW9ucyxpPXQuZ2V0TGFiZWxzKCkubGVuZ3RoLGE9ci5yZXZlcnNlP3QubWF4OnQubWluLG89JG8obix0LGEpLHM9W107aWYoci5ncmlkLmNpcmN1bGFyKXtsZXQgZT10LmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZSgwLGEpO3JldHVybiBuZXcgYXMoe3g6ZS54LHk6ZS55LHJhZGl1czp0LmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKG8pfSl9Zm9yKGxldCBlPTA7ZTxpOysrZSlzLnB1c2godC5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoZSxvKSk7cmV0dXJuIHN9ZnVuY3Rpb24gZHMoZSx0LG4pe2xldCByPW9zKHQpLHtjaGFydDppLGluZGV4OmEsbGluZTpvLHNjYWxlOnMsYXhpczpjfT10LGw9by5vcHRpb25zLHU9bC5maWxsLGQ9bC5iYWNrZ3JvdW5kQ29sb3Ise2Fib3ZlOmY9ZCxiZWxvdzpwPWR9PXV8fHt9LG09S3IoaSxpLmdldERhdGFzZXRNZXRhKGEpKTtyJiZvLnBvaW50cy5sZW5ndGgmJihtbihlLG4pLGZzKGUse2xpbmU6byx0YXJnZXQ6cixhYm92ZTpmLGJlbG93OnAsYXJlYTpuLHNjYWxlOnMsYXhpczpjLGNsaXA6bX0pLGhuKGUpKX1mdW5jdGlvbiBmcyhlLHQpe2xldHtsaW5lOm4sdGFyZ2V0OnIsYWJvdmU6aSxiZWxvdzphLGFyZWE6byxzY2FsZTpzLGNsaXA6Y309dCxsPW4uX2xvb3A/YGFuZ2xlYDp0LmF4aXM7ZS5zYXZlKCk7bGV0IHU9YTthIT09aSYmKGw9PT1geGA/KHBzKGUscixvLnRvcCksaHMoZSx7bGluZTpuLHRhcmdldDpyLGNvbG9yOmksc2NhbGU6cyxwcm9wZXJ0eTpsLGNsaXA6Y30pLGUucmVzdG9yZSgpLGUuc2F2ZSgpLHBzKGUscixvLmJvdHRvbSkpOmw9PT1geWAmJihtcyhlLHIsby5sZWZ0KSxocyhlLHtsaW5lOm4sdGFyZ2V0OnIsY29sb3I6YSxzY2FsZTpzLHByb3BlcnR5OmwsY2xpcDpjfSksZS5yZXN0b3JlKCksZS5zYXZlKCksbXMoZSxyLG8ucmlnaHQpLHU9aSkpLGhzKGUse2xpbmU6bix0YXJnZXQ6cixjb2xvcjp1LHNjYWxlOnMscHJvcGVydHk6bCxjbGlwOmN9KSxlLnJlc3RvcmUoKX1mdW5jdGlvbiBwcyhlLHQsbil7bGV0e3NlZ21lbnRzOnIscG9pbnRzOml9PXQsYT0hMCxvPSExO2UuYmVnaW5QYXRoKCk7Zm9yKGxldCBzIG9mIHIpe2xldHtzdGFydDpyLGVuZDpjfT1zLGw9aVtyXSx1PWlbR28ocixjLGkpXTthPyhlLm1vdmVUbyhsLngsbC55KSxhPSExKTooZS5saW5lVG8obC54LG4pLGUubGluZVRvKGwueCxsLnkpKSxvPSEhdC5wYXRoU2VnbWVudChlLHMse21vdmU6b30pLG8/ZS5jbG9zZVBhdGgoKTplLmxpbmVUbyh1Lngsbil9ZS5saW5lVG8odC5maXJzdCgpLngsbiksZS5jbG9zZVBhdGgoKSxlLmNsaXAoKX1mdW5jdGlvbiBtcyhlLHQsbil7bGV0e3NlZ21lbnRzOnIscG9pbnRzOml9PXQsYT0hMCxvPSExO2UuYmVnaW5QYXRoKCk7Zm9yKGxldCBzIG9mIHIpe2xldHtzdGFydDpyLGVuZDpjfT1zLGw9aVtyXSx1PWlbR28ocixjLGkpXTthPyhlLm1vdmVUbyhsLngsbC55KSxhPSExKTooZS5saW5lVG8obixsLnkpLGUubGluZVRvKGwueCxsLnkpKSxvPSEhdC5wYXRoU2VnbWVudChlLHMse21vdmU6b30pLG8/ZS5jbG9zZVBhdGgoKTplLmxpbmVUbyhuLHUueSl9ZS5saW5lVG8obix0LmZpcnN0KCkueSksZS5jbG9zZVBhdGgoKSxlLmNsaXAoKX1mdW5jdGlvbiBocyhlLHQpe2xldHtsaW5lOm4sdGFyZ2V0OnIscHJvcGVydHk6aSxjb2xvcjphLHNjYWxlOm8sY2xpcDpzfT10LGM9SG8obixyLGkpO2ZvcihsZXR7c291cmNlOnQsdGFyZ2V0Omwsc3RhcnQ6dSxlbmQ6ZH1vZiBjKXtsZXR7c3R5bGU6e2JhY2tncm91bmRDb2xvcjpjPWF9PXt9fT10LGY9ciE9PSEwO2Uuc2F2ZSgpLGUuZmlsbFN0eWxlPWMsZ3MoZSxvLHMsZiYmVW8oaSx1LGQpKSxlLmJlZ2luUGF0aCgpO2xldCBwPSEhbi5wYXRoU2VnbWVudChlLHQpLG07aWYoZil7cD9lLmNsb3NlUGF0aCgpOl9zKGUscixkLGkpO2xldCB0PSEhci5wYXRoU2VnbWVudChlLGwse21vdmU6cCxyZXZlcnNlOiEwfSk7bT1wJiZ0LG18fF9zKGUscix1LGkpfWUuY2xvc2VQYXRoKCksZS5maWxsKG0/YGV2ZW5vZGRgOmBub256ZXJvYCksZS5yZXN0b3JlKCl9fWZ1bmN0aW9uIGdzKGUsdCxuLHIpe2xldCBpPXQuY2hhcnQuY2hhcnRBcmVhLHtwcm9wZXJ0eTphLHN0YXJ0Om8sZW5kOnN9PXJ8fHt9O2lmKGE9PT1geGB8fGE9PT1geWApe2xldCB0LHIsYyxsO2E9PT1geGA/KHQ9byxyPWkudG9wLGM9cyxsPWkuYm90dG9tKToodD1pLmxlZnQscj1vLGM9aS5yaWdodCxsPXMpLGUuYmVnaW5QYXRoKCksbiYmKHQ9TWF0aC5tYXgodCxuLmxlZnQpLGM9TWF0aC5taW4oYyxuLnJpZ2h0KSxyPU1hdGgubWF4KHIsbi50b3ApLGw9TWF0aC5taW4obCxuLmJvdHRvbSkpLGUucmVjdCh0LHIsYy10LGwtciksZS5jbGlwKCl9fWZ1bmN0aW9uIF9zKGUsdCxuLHIpe2xldCBpPXQuaW50ZXJwb2xhdGUobixyKTtpJiZlLmxpbmVUbyhpLngsaS55KX12YXIgdnM9e2lkOmBmaWxsZXJgLGFmdGVyRGF0YXNldHNVcGRhdGUoZSx0LG4pe2xldCByPShlLmRhdGEuZGF0YXNldHN8fFtdKS5sZW5ndGgsaT1bXSxhLG8scyxjO2ZvcihvPTA7bzxyOysrbylhPWUuZ2V0RGF0YXNldE1ldGEobykscz1hLmRhdGFzZXQsYz1udWxsLHMmJnMub3B0aW9ucyYmcyBpbnN0YW5jZW9mIHpvJiYoYz17dmlzaWJsZTplLmlzRGF0YXNldFZpc2libGUobyksaW5kZXg6byxmaWxsOlhvKHMsbyxyKSxjaGFydDplLGF4aXM6YS5jb250cm9sbGVyLm9wdGlvbnMuaW5kZXhBeGlzLHNjYWxlOmEudlNjYWxlLGxpbmU6c30pLGEuJGZpbGxlcj1jLGkucHVzaChjKTtmb3Iobz0wO288cjsrK28pYz1pW29dLCEoIWN8fGMuZmlsbD09PSExKSYmKGMuZmlsbD1ZbyhpLG8sbi5wcm9wYWdhdGUpKX0sYmVmb3JlRHJhdyhlLHQsbil7bGV0IHI9bi5kcmF3VGltZT09PWBiZWZvcmVEcmF3YCxpPWUuZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpLGE9ZS5jaGFydEFyZWE7Zm9yKGxldCB0PWkubGVuZ3RoLTE7dD49MDstLXQpe2xldCBuPWlbdF0uJGZpbGxlcjtuJiYobi5saW5lLnVwZGF0ZUNvbnRyb2xQb2ludHMoYSxuLmF4aXMpLHImJm4uZmlsbCYmZHMoZS5jdHgsbixhKSl9fSxiZWZvcmVEYXRhc2V0c0RyYXcoZSx0LG4pe2lmKG4uZHJhd1RpbWUhPT1gYmVmb3JlRGF0YXNldHNEcmF3YClyZXR1cm47bGV0IHI9ZS5nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCk7Zm9yKGxldCB0PXIubGVuZ3RoLTE7dD49MDstLXQpe2xldCBuPXJbdF0uJGZpbGxlcjtKbyhuKSYmZHMoZS5jdHgsbixlLmNoYXJ0QXJlYSl9fSxiZWZvcmVEYXRhc2V0RHJhdyhlLHQsbil7bGV0IHI9dC5tZXRhLiRmaWxsZXI7IUpvKHIpfHxuLmRyYXdUaW1lIT09YGJlZm9yZURhdGFzZXREcmF3YHx8ZHMoZS5jdHgscixlLmNoYXJ0QXJlYSl9LGRlZmF1bHRzOntwcm9wYWdhdGU6ITAsZHJhd1RpbWU6YGJlZm9yZURhdGFzZXREcmF3YH19LHlzPShlLHQpPT57bGV0e2JveEhlaWdodDpuPXQsYm94V2lkdGg6cj10fT1lO3JldHVybiBlLnVzZVBvaW50U3R5bGUmJihuPU1hdGgubWluKG4sdCkscj1lLnBvaW50U3R5bGVXaWR0aHx8TWF0aC5taW4ocix0KSkse2JveFdpZHRoOnIsYm94SGVpZ2h0Om4saXRlbUhlaWdodDpNYXRoLm1heCh0LG4pfX0sYnM9KGUsdCk9PmUhPT1udWxsJiZ0IT09bnVsbCYmZS5kYXRhc2V0SW5kZXg9PT10LmRhdGFzZXRJbmRleCYmZS5pbmRleD09PXQuaW5kZXgseHM9Y2xhc3MgZXh0ZW5kcyBfYXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX2FkZGVkPSExLHRoaXMubGVnZW5kSGl0Qm94ZXM9W10sdGhpcy5faG92ZXJlZEl0ZW09bnVsbCx0aGlzLmRvdWdobnV0TW9kZT0hMSx0aGlzLmNoYXJ0PWUuY2hhcnQsdGhpcy5vcHRpb25zPWUub3B0aW9ucyx0aGlzLmN0eD1lLmN0eCx0aGlzLmxlZ2VuZEl0ZW1zPXZvaWQgMCx0aGlzLmNvbHVtblNpemVzPXZvaWQgMCx0aGlzLmxpbmVXaWR0aHM9dm9pZCAwLHRoaXMubWF4SGVpZ2h0PXZvaWQgMCx0aGlzLm1heFdpZHRoPXZvaWQgMCx0aGlzLnRvcD12b2lkIDAsdGhpcy5ib3R0b209dm9pZCAwLHRoaXMubGVmdD12b2lkIDAsdGhpcy5yaWdodD12b2lkIDAsdGhpcy5oZWlnaHQ9dm9pZCAwLHRoaXMud2lkdGg9dm9pZCAwLHRoaXMuX21hcmdpbnM9dm9pZCAwLHRoaXMucG9zaXRpb249dm9pZCAwLHRoaXMud2VpZ2h0PXZvaWQgMCx0aGlzLmZ1bGxTaXplPXZvaWQgMH11cGRhdGUoZSx0LG4pe3RoaXMubWF4V2lkdGg9ZSx0aGlzLm1heEhlaWdodD10LHRoaXMuX21hcmdpbnM9bix0aGlzLnNldERpbWVuc2lvbnMoKSx0aGlzLmJ1aWxkTGFiZWxzKCksdGhpcy5maXQoKX1zZXREaW1lbnNpb25zKCl7dGhpcy5pc0hvcml6b250YWwoKT8odGhpcy53aWR0aD10aGlzLm1heFdpZHRoLHRoaXMubGVmdD10aGlzLl9tYXJnaW5zLmxlZnQsdGhpcy5yaWdodD10aGlzLndpZHRoKToodGhpcy5oZWlnaHQ9dGhpcy5tYXhIZWlnaHQsdGhpcy50b3A9dGhpcy5fbWFyZ2lucy50b3AsdGhpcy5ib3R0b209dGhpcy5oZWlnaHQpfWJ1aWxkTGFiZWxzKCl7bGV0IGU9dGhpcy5vcHRpb25zLmxhYmVsc3x8e30sdD1GKGUuZ2VuZXJhdGVMYWJlbHMsW3RoaXMuY2hhcnRdLHRoaXMpfHxbXTtlLmZpbHRlciYmKHQ9dC5maWx0ZXIodD0+ZS5maWx0ZXIodCx0aGlzLmNoYXJ0LmRhdGEpKSksZS5zb3J0JiYodD10LnNvcnQoKHQsbik9PmUuc29ydCh0LG4sdGhpcy5jaGFydC5kYXRhKSkpLHRoaXMub3B0aW9ucy5yZXZlcnNlJiZ0LnJldmVyc2UoKSx0aGlzLmxlZ2VuZEl0ZW1zPXR9Zml0KCl7bGV0e29wdGlvbnM6ZSxjdHg6dH09dGhpcztpZighZS5kaXNwbGF5KXt0aGlzLndpZHRoPXRoaXMuaGVpZ2h0PTA7cmV0dXJufWxldCBuPWUubGFiZWxzLHI9cShuLmZvbnQpLGk9ci5zaXplLGE9dGhpcy5fY29tcHV0ZVRpdGxlSGVpZ2h0KCkse2JveFdpZHRoOm8saXRlbUhlaWdodDpzfT15cyhuLGkpLGMsbDt0LmZvbnQ9ci5zdHJpbmcsdGhpcy5pc0hvcml6b250YWwoKT8oYz10aGlzLm1heFdpZHRoLGw9dGhpcy5fZml0Um93cyhhLGksbyxzKSsxMCk6KGw9dGhpcy5tYXhIZWlnaHQsYz10aGlzLl9maXRDb2xzKGEscixvLHMpKzEwKSx0aGlzLndpZHRoPU1hdGgubWluKGMsZS5tYXhXaWR0aHx8dGhpcy5tYXhXaWR0aCksdGhpcy5oZWlnaHQ9TWF0aC5taW4obCxlLm1heEhlaWdodHx8dGhpcy5tYXhIZWlnaHQpfV9maXRSb3dzKGUsdCxuLHIpe2xldHtjdHg6aSxtYXhXaWR0aDphLG9wdGlvbnM6e2xhYmVsczp7cGFkZGluZzpvfX19PXRoaXMscz10aGlzLmxlZ2VuZEhpdEJveGVzPVtdLGM9dGhpcy5saW5lV2lkdGhzPVswXSxsPXIrbyx1PWU7aS50ZXh0QWxpZ249YGxlZnRgLGkudGV4dEJhc2VsaW5lPWBtaWRkbGVgO2xldCBkPS0xLGY9LWw7cmV0dXJuIHRoaXMubGVnZW5kSXRlbXMuZm9yRWFjaCgoZSxwKT0+e2xldCBtPW4rdC8yK2kubWVhc3VyZVRleHQoZS50ZXh0KS53aWR0aDsocD09PTB8fGNbYy5sZW5ndGgtMV0rbSsyKm8+YSkmJih1Kz1sLGNbYy5sZW5ndGgtKHA+MD8wOjEpXT0wLGYrPWwsZCsrKSxzW3BdPXtsZWZ0OjAsdG9wOmYscm93OmQsd2lkdGg6bSxoZWlnaHQ6cn0sY1tjLmxlbmd0aC0xXSs9bStvfSksdX1fZml0Q29scyhlLHQsbixyKXtsZXR7Y3R4OmksbWF4SGVpZ2h0OmEsb3B0aW9uczp7bGFiZWxzOntwYWRkaW5nOm99fX09dGhpcyxzPXRoaXMubGVnZW5kSGl0Qm94ZXM9W10sYz10aGlzLmNvbHVtblNpemVzPVtdLGw9YS1lLHU9byxkPTAsZj0wLHA9MCxtPTA7cmV0dXJuIHRoaXMubGVnZW5kSXRlbXMuZm9yRWFjaCgoZSxhKT0+e2xldHtpdGVtV2lkdGg6aCxpdGVtSGVpZ2h0Omd9PVNzKG4sdCxpLGUscik7YT4wJiZmK2crMipvPmwmJih1Kz1kK28sYy5wdXNoKHt3aWR0aDpkLGhlaWdodDpmfSkscCs9ZCtvLG0rKyxkPWY9MCksc1thXT17bGVmdDpwLHRvcDpmLGNvbDptLHdpZHRoOmgsaGVpZ2h0Omd9LGQ9TWF0aC5tYXgoZCxoKSxmKz1nK299KSx1Kz1kLGMucHVzaCh7d2lkdGg6ZCxoZWlnaHQ6Zn0pLHV9YWRqdXN0SGl0Qm94ZXMoKXtpZighdGhpcy5vcHRpb25zLmRpc3BsYXkpcmV0dXJuO2xldCBlPXRoaXMuX2NvbXB1dGVUaXRsZUhlaWdodCgpLHtsZWdlbmRIaXRCb3hlczp0LG9wdGlvbnM6e2FsaWduOm4sbGFiZWxzOntwYWRkaW5nOnJ9LHJ0bDppfX09dGhpcyxhPWtyKGksdGhpcy5sZWZ0LHRoaXMud2lkdGgpO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpe2xldCBpPTAsbz1VKG4sdGhpcy5sZWZ0K3IsdGhpcy5yaWdodC10aGlzLmxpbmVXaWR0aHNbaV0pO2ZvcihsZXQgcyBvZiB0KWkhPT1zLnJvdyYmKGk9cy5yb3csbz1VKG4sdGhpcy5sZWZ0K3IsdGhpcy5yaWdodC10aGlzLmxpbmVXaWR0aHNbaV0pKSxzLnRvcCs9dGhpcy50b3ArZStyLHMubGVmdD1hLmxlZnRGb3JMdHIoYS54KG8pLHMud2lkdGgpLG8rPXMud2lkdGgrcn1lbHNle2xldCBpPTAsbz1VKG4sdGhpcy50b3ArZStyLHRoaXMuYm90dG9tLXRoaXMuY29sdW1uU2l6ZXNbaV0uaGVpZ2h0KTtmb3IobGV0IHMgb2YgdClzLmNvbCE9PWkmJihpPXMuY29sLG89VShuLHRoaXMudG9wK2Urcix0aGlzLmJvdHRvbS10aGlzLmNvbHVtblNpemVzW2ldLmhlaWdodCkpLHMudG9wPW8scy5sZWZ0Kz10aGlzLmxlZnQrcixzLmxlZnQ9YS5sZWZ0Rm9yTHRyKGEueChzLmxlZnQpLHMud2lkdGgpLG8rPXMuaGVpZ2h0K3J9fWlzSG9yaXpvbnRhbCgpe3JldHVybiB0aGlzLm9wdGlvbnMucG9zaXRpb249PT1gdG9wYHx8dGhpcy5vcHRpb25zLnBvc2l0aW9uPT09YGJvdHRvbWB9ZHJhdygpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5KXtsZXQgZT10aGlzLmN0eDttbihlLHRoaXMpLHRoaXMuX2RyYXcoKSxobihlKX19X2RyYXcoKXtsZXR7b3B0aW9uczplLGNvbHVtblNpemVzOnQsbGluZVdpZHRoczpuLGN0eDpyfT10aGlzLHthbGlnbjppLGxhYmVsczphfT1lLG89Vy5jb2xvcixzPWtyKGUucnRsLHRoaXMubGVmdCx0aGlzLndpZHRoKSxjPXEoYS5mb250KSx7cGFkZGluZzpsfT1hLHU9Yy5zaXplLGQ9dS8yLGY7dGhpcy5kcmF3VGl0bGUoKSxyLnRleHRBbGlnbj1zLnRleHRBbGlnbihgbGVmdGApLHIudGV4dEJhc2VsaW5lPWBtaWRkbGVgLHIubGluZVdpZHRoPS41LHIuZm9udD1jLnN0cmluZztsZXR7Ym94V2lkdGg6cCxib3hIZWlnaHQ6bSxpdGVtSGVpZ2h0Omh9PXlzKGEsdSksZz1mdW5jdGlvbihlLHQsbil7aWYoaXNOYU4ocCl8fHA8PTB8fGlzTmFOKG0pfHxtPDApcmV0dXJuO3Iuc2F2ZSgpO2xldCBpPVAobi5saW5lV2lkdGgsMSk7aWYoci5maWxsU3R5bGU9UChuLmZpbGxTdHlsZSxvKSxyLmxpbmVDYXA9UChuLmxpbmVDYXAsYGJ1dHRgKSxyLmxpbmVEYXNoT2Zmc2V0PVAobi5saW5lRGFzaE9mZnNldCwwKSxyLmxpbmVKb2luPVAobi5saW5lSm9pbixgbWl0ZXJgKSxyLmxpbmVXaWR0aD1pLHIuc3Ryb2tlU3R5bGU9UChuLnN0cm9rZVN0eWxlLG8pLHIuc2V0TGluZURhc2goUChuLmxpbmVEYXNoLFtdKSksYS51c2VQb2ludFN0eWxlKXtsZXQgbz17cmFkaXVzOm0qTWF0aC5TUVJUMi8yLHBvaW50U3R5bGU6bi5wb2ludFN0eWxlLHJvdGF0aW9uOm4ucm90YXRpb24sYm9yZGVyV2lkdGg6aX0sYz1zLnhQbHVzKGUscC8yKSxsPXQrZDtwbihyLG8sYyxsLGEucG9pbnRTdHlsZVdpZHRoJiZwKX1lbHNle2xldCBhPXQrTWF0aC5tYXgoKHUtbSkvMiwwKSxvPXMubGVmdEZvckx0cihlLHApLGM9a24obi5ib3JkZXJSYWRpdXMpO3IuYmVnaW5QYXRoKCksT2JqZWN0LnZhbHVlcyhjKS5zb21lKGU9PmUhPT0wKT9TbihyLHt4Om8seTphLHc6cCxoOm0scmFkaXVzOmN9KTpyLnJlY3QobyxhLHAsbSksci5maWxsKCksaSE9PTAmJnIuc3Ryb2tlKCl9ci5yZXN0b3JlKCl9LF89ZnVuY3Rpb24oZSx0LG4pe3huKHIsbi50ZXh0LGUsdCtoLzIsYyx7c3RyaWtldGhyb3VnaDpuLmhpZGRlbix0ZXh0QWxpZ246cy50ZXh0QWxpZ24obi50ZXh0QWxpZ24pfSl9LHY9dGhpcy5pc0hvcml6b250YWwoKSx5PXRoaXMuX2NvbXB1dGVUaXRsZUhlaWdodCgpO2Y9dj97eDpVKGksdGhpcy5sZWZ0K2wsdGhpcy5yaWdodC1uWzBdKSx5OnRoaXMudG9wK2wreSxsaW5lOjB9Ont4OnRoaXMubGVmdCtsLHk6VShpLHRoaXMudG9wK3krbCx0aGlzLmJvdHRvbS10WzBdLmhlaWdodCksbGluZTowfSxBcih0aGlzLmN0eCxlLnRleHREaXJlY3Rpb24pO2xldCBiPWgrbDt0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goKG8sdSk9PntyLnN0cm9rZVN0eWxlPW8uZm9udENvbG9yLHIuZmlsbFN0eWxlPW8uZm9udENvbG9yO2xldCBtPXIubWVhc3VyZVRleHQoby50ZXh0KS53aWR0aCxoPXMudGV4dEFsaWduKG8udGV4dEFsaWdufHw9YS50ZXh0QWxpZ24pLHg9cCtkK20sUz1mLngsQz1mLnk7cy5zZXRXaWR0aCh0aGlzLndpZHRoKSx2P3U+MCYmUyt4K2w+dGhpcy5yaWdodCYmKEM9Zi55Kz1iLGYubGluZSsrLFM9Zi54PVUoaSx0aGlzLmxlZnQrbCx0aGlzLnJpZ2h0LW5bZi5saW5lXSkpOnU+MCYmQytiPnRoaXMuYm90dG9tJiYoUz1mLng9Uyt0W2YubGluZV0ud2lkdGgrbCxmLmxpbmUrKyxDPWYueT1VKGksdGhpcy50b3AreStsLHRoaXMuYm90dG9tLXRbZi5saW5lXS5oZWlnaHQpKTtsZXQgdz1zLngoUyk7aWYoZyh3LEMsbyksUz1GdChoLFMrcCtkLHY/Uyt4OnRoaXMucmlnaHQsZS5ydGwpLF8ocy54KFMpLEMsbyksdilmLngrPXgrbDtlbHNlIGlmKHR5cGVvZiBvLnRleHQhPWBzdHJpbmdgKXtsZXQgZT1jLmxpbmVIZWlnaHQ7Zi55Kz1UcyhvLGUpK2x9ZWxzZSBmLnkrPWJ9KSxqcih0aGlzLmN0eCxlLnRleHREaXJlY3Rpb24pfWRyYXdUaXRsZSgpe2xldCBlPXRoaXMub3B0aW9ucyx0PWUudGl0bGUsbj1xKHQuZm9udCkscj1LKHQucGFkZGluZyk7aWYoIXQuZGlzcGxheSlyZXR1cm47bGV0IGk9a3IoZS5ydGwsdGhpcy5sZWZ0LHRoaXMud2lkdGgpLGE9dGhpcy5jdHgsbz10LnBvc2l0aW9uLHM9bi5zaXplLzIsYz1yLnRvcCtzLGwsdT10aGlzLmxlZnQsZD10aGlzLndpZHRoO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpZD1NYXRoLm1heCguLi50aGlzLmxpbmVXaWR0aHMpLGw9dGhpcy50b3ArYyx1PVUoZS5hbGlnbix1LHRoaXMucmlnaHQtZCk7ZWxzZXtsZXQgdD10aGlzLmNvbHVtblNpemVzLnJlZHVjZSgoZSx0KT0+TWF0aC5tYXgoZSx0LmhlaWdodCksMCk7bD1jK1UoZS5hbGlnbix0aGlzLnRvcCx0aGlzLmJvdHRvbS10LWUubGFiZWxzLnBhZGRpbmctdGhpcy5fY29tcHV0ZVRpdGxlSGVpZ2h0KCkpfWxldCBmPVUobyx1LHUrZCk7YS50ZXh0QWxpZ249aS50ZXh0QWxpZ24oUHQobykpLGEudGV4dEJhc2VsaW5lPWBtaWRkbGVgLGEuc3Ryb2tlU3R5bGU9dC5jb2xvcixhLmZpbGxTdHlsZT10LmNvbG9yLGEuZm9udD1uLnN0cmluZyx4bihhLHQudGV4dCxmLGwsbil9X2NvbXB1dGVUaXRsZUhlaWdodCgpe2xldCBlPXRoaXMub3B0aW9ucy50aXRsZSx0PXEoZS5mb250KSxuPUsoZS5wYWRkaW5nKTtyZXR1cm4gZS5kaXNwbGF5P3QubGluZUhlaWdodCtuLmhlaWdodDowfV9nZXRMZWdlbmRJdGVtQXQoZSx0KXtsZXQgbixyLGk7aWYoU3QoZSx0aGlzLmxlZnQsdGhpcy5yaWdodCkmJlN0KHQsdGhpcy50b3AsdGhpcy5ib3R0b20pKXtmb3IoaT10aGlzLmxlZ2VuZEhpdEJveGVzLG49MDtuPGkubGVuZ3RoOysrbilpZihyPWlbbl0sU3QoZSxyLmxlZnQsci5sZWZ0K3Iud2lkdGgpJiZTdCh0LHIudG9wLHIudG9wK3IuaGVpZ2h0KSlyZXR1cm4gdGhpcy5sZWdlbmRJdGVtc1tuXX1yZXR1cm4gbnVsbH1oYW5kbGVFdmVudChlKXtsZXQgdD10aGlzLm9wdGlvbnM7aWYoIUVzKGUudHlwZSx0KSlyZXR1cm47bGV0IG49dGhpcy5fZ2V0TGVnZW5kSXRlbUF0KGUueCxlLnkpO2lmKGUudHlwZT09PWBtb3VzZW1vdmVgfHxlLnR5cGU9PT1gbW91c2VvdXRgKXtsZXQgcj10aGlzLl9ob3ZlcmVkSXRlbSxpPWJzKHIsbik7ciYmIWkmJkYodC5vbkxlYXZlLFtlLHIsdGhpc10sdGhpcyksdGhpcy5faG92ZXJlZEl0ZW09bixuJiYhaSYmRih0Lm9uSG92ZXIsW2Usbix0aGlzXSx0aGlzKX1lbHNlIG4mJkYodC5vbkNsaWNrLFtlLG4sdGhpc10sdGhpcyl9fTtmdW5jdGlvbiBTcyhlLHQsbixyLGkpe3JldHVybntpdGVtV2lkdGg6Q3MocixlLHQsbiksaXRlbUhlaWdodDp3cyhpLHIsdC5saW5lSGVpZ2h0KX19ZnVuY3Rpb24gQ3MoZSx0LG4scil7bGV0IGk9ZS50ZXh0O3JldHVybiBpJiZ0eXBlb2YgaSE9YHN0cmluZ2AmJihpPWkucmVkdWNlKChlLHQpPT5lLmxlbmd0aD50Lmxlbmd0aD9lOnQpKSx0K24uc2l6ZS8yK3IubWVhc3VyZVRleHQoaSkud2lkdGh9ZnVuY3Rpb24gd3MoZSx0LG4pe2xldCByPWU7cmV0dXJuIHR5cGVvZiB0LnRleHQhPWBzdHJpbmdgJiYocj1Ucyh0LG4pKSxyfWZ1bmN0aW9uIFRzKGUsdCl7cmV0dXJuIHQqKGUudGV4dD9lLnRleHQubGVuZ3RoOjApfWZ1bmN0aW9uIEVzKGUsdCl7cmV0dXJuISEoKGU9PT1gbW91c2Vtb3ZlYHx8ZT09PWBtb3VzZW91dGApJiYodC5vbkhvdmVyfHx0Lm9uTGVhdmUpfHx0Lm9uQ2xpY2smJihlPT09YGNsaWNrYHx8ZT09PWBtb3VzZXVwYCkpfXZhciBEcz17aWQ6YGxlZ2VuZGAsX2VsZW1lbnQ6eHMsc3RhcnQoZSx0LG4pe2xldCByPWUubGVnZW5kPW5ldyB4cyh7Y3R4OmUuY3R4LG9wdGlvbnM6bixjaGFydDplfSk7cWkuY29uZmlndXJlKGUscixuKSxxaS5hZGRCb3goZSxyKX0sc3RvcChlKXtxaS5yZW1vdmVCb3goZSxlLmxlZ2VuZCksZGVsZXRlIGUubGVnZW5kfSxiZWZvcmVVcGRhdGUoZSx0LG4pe2xldCByPWUubGVnZW5kO3FpLmNvbmZpZ3VyZShlLHIsbiksci5vcHRpb25zPW59LGFmdGVyVXBkYXRlKGUpe2xldCB0PWUubGVnZW5kO3QuYnVpbGRMYWJlbHMoKSx0LmFkanVzdEhpdEJveGVzKCl9LGFmdGVyRXZlbnQoZSx0KXt0LnJlcGxheXx8ZS5sZWdlbmQuaGFuZGxlRXZlbnQodC5ldmVudCl9LGRlZmF1bHRzOntkaXNwbGF5OiEwLHBvc2l0aW9uOmB0b3BgLGFsaWduOmBjZW50ZXJgLGZ1bGxTaXplOiEwLHJldmVyc2U6ITEsd2VpZ2h0OjFlMyxvbkNsaWNrKGUsdCxuKXtsZXQgcj10LmRhdGFzZXRJbmRleCxpPW4uY2hhcnQ7aS5pc0RhdGFzZXRWaXNpYmxlKHIpPyhpLmhpZGUociksdC5oaWRkZW49ITApOihpLnNob3cociksdC5oaWRkZW49ITEpfSxvbkhvdmVyOm51bGwsb25MZWF2ZTpudWxsLGxhYmVsczp7Y29sb3I6ZT0+ZS5jaGFydC5vcHRpb25zLmNvbG9yLGJveFdpZHRoOjQwLHBhZGRpbmc6MTAsZ2VuZXJhdGVMYWJlbHMoZSl7bGV0IHQ9ZS5kYXRhLmRhdGFzZXRzLHtsYWJlbHM6e3VzZVBvaW50U3R5bGU6bixwb2ludFN0eWxlOnIsdGV4dEFsaWduOmksY29sb3I6YSx1c2VCb3JkZXJSYWRpdXM6byxib3JkZXJSYWRpdXM6c319PWUubGVnZW5kLm9wdGlvbnM7cmV0dXJuIGUuX2dldFNvcnRlZERhdGFzZXRNZXRhcygpLm1hcChlPT57bGV0IGM9ZS5jb250cm9sbGVyLmdldFN0eWxlKG4/MDp2b2lkIDApLGw9SyhjLmJvcmRlcldpZHRoKTtyZXR1cm57dGV4dDp0W2UuaW5kZXhdLmxhYmVsLGZpbGxTdHlsZTpjLmJhY2tncm91bmRDb2xvcixmb250Q29sb3I6YSxoaWRkZW46IWUudmlzaWJsZSxsaW5lQ2FwOmMuYm9yZGVyQ2FwU3R5bGUsbGluZURhc2g6Yy5ib3JkZXJEYXNoLGxpbmVEYXNoT2Zmc2V0OmMuYm9yZGVyRGFzaE9mZnNldCxsaW5lSm9pbjpjLmJvcmRlckpvaW5TdHlsZSxsaW5lV2lkdGg6KGwud2lkdGgrbC5oZWlnaHQpLzQsc3Ryb2tlU3R5bGU6Yy5ib3JkZXJDb2xvcixwb2ludFN0eWxlOnJ8fGMucG9pbnRTdHlsZSxyb3RhdGlvbjpjLnJvdGF0aW9uLHRleHRBbGlnbjppfHxjLnRleHRBbGlnbixib3JkZXJSYWRpdXM6byYmKHN8fGMuYm9yZGVyUmFkaXVzKSxkYXRhc2V0SW5kZXg6ZS5pbmRleH19LHRoaXMpfX0sdGl0bGU6e2NvbG9yOmU9PmUuY2hhcnQub3B0aW9ucy5jb2xvcixkaXNwbGF5OiExLHBvc2l0aW9uOmBjZW50ZXJgLHRleHQ6YGB9fSxkZXNjcmlwdG9yczp7X3NjcmlwdGFibGU6ZT0+IWUuc3RhcnRzV2l0aChgb25gKSxsYWJlbHM6e19zY3JpcHRhYmxlOmU9PiFbYGdlbmVyYXRlTGFiZWxzYCxgZmlsdGVyYCxgc29ydGBdLmluY2x1ZGVzKGUpfX19LE9zPXthdmVyYWdlKGUpe2lmKCFlLmxlbmd0aClyZXR1cm4hMTtsZXQgdCxuLHI9bmV3IFNldCxpPTAsYT0wO2Zvcih0PTAsbj1lLmxlbmd0aDt0PG47Kyt0KXtsZXQgbj1lW3RdLmVsZW1lbnQ7aWYobiYmbi5oYXNWYWx1ZSgpKXtsZXQgZT1uLnRvb2x0aXBQb3NpdGlvbigpO3IuYWRkKGUueCksaSs9ZS55LCsrYX19cmV0dXJuIGE9PT0wfHxyLnNpemU9PT0wPyExOnt4OlsuLi5yXS5yZWR1Y2UoKGUsdCk9PmUrdCkvci5zaXplLHk6aS9hfX0sbmVhcmVzdChlLHQpe2lmKCFlLmxlbmd0aClyZXR1cm4hMTtsZXQgbj10Lngscj10LnksaT0xLzAsYSxvLHM7Zm9yKGE9MCxvPWUubGVuZ3RoO2E8bzsrK2Epe2xldCBuPWVbYV0uZWxlbWVudDtpZihuJiZuLmhhc1ZhbHVlKCkpe2xldCBlPXZ0KHQsbi5nZXRDZW50ZXJQb2ludCgpKTtlPGkmJihpPWUscz1uKX19aWYocyl7bGV0IGU9cy50b29sdGlwUG9zaXRpb24oKTtuPWUueCxyPWUueX1yZXR1cm57eDpuLHk6cn19fTtmdW5jdGlvbiBYKGUsdCl7cmV0dXJuIHQmJihBKHQpP0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGUsdCk6ZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIFooZSl7cmV0dXJuKHR5cGVvZiBlPT1gc3RyaW5nYHx8ZSBpbnN0YW5jZW9mIFN0cmluZykmJmUuaW5kZXhPZihgCmApPi0xP2Uuc3BsaXQoYApgKTplfWZ1bmN0aW9uIGtzKGUsdCl7bGV0e2VsZW1lbnQ6bixkYXRhc2V0SW5kZXg6cixpbmRleDppfT10LGE9ZS5nZXREYXRhc2V0TWV0YShyKS5jb250cm9sbGVyLHtsYWJlbDpvLHZhbHVlOnN9PWEuZ2V0TGFiZWxBbmRWYWx1ZShpKTtyZXR1cm57Y2hhcnQ6ZSxsYWJlbDpvLHBhcnNlZDphLmdldFBhcnNlZChpKSxyYXc6ZS5kYXRhLmRhdGFzZXRzW3JdLmRhdGFbaV0sZm9ybWF0dGVkVmFsdWU6cyxkYXRhc2V0OmEuZ2V0RGF0YXNldCgpLGRhdGFJbmRleDppLGRhdGFzZXRJbmRleDpyLGVsZW1lbnQ6bn19ZnVuY3Rpb24gQXMoZSx0KXtsZXQgbj1lLmNoYXJ0LmN0eCx7Ym9keTpyLGZvb3RlcjppLHRpdGxlOmF9PWUse2JveFdpZHRoOm8sYm94SGVpZ2h0OnN9PXQsYz1xKHQuYm9keUZvbnQpLGw9cSh0LnRpdGxlRm9udCksdT1xKHQuZm9vdGVyRm9udCksZD1hLmxlbmd0aCxmPWkubGVuZ3RoLHA9ci5sZW5ndGgsbT1LKHQucGFkZGluZyksaD1tLmhlaWdodCxnPTAsXz1yLnJlZHVjZSgoZSx0KT0+ZSt0LmJlZm9yZS5sZW5ndGgrdC5saW5lcy5sZW5ndGgrdC5hZnRlci5sZW5ndGgsMCk7aWYoXys9ZS5iZWZvcmVCb2R5Lmxlbmd0aCtlLmFmdGVyQm9keS5sZW5ndGgsZCYmKGgrPWQqbC5saW5lSGVpZ2h0KyhkLTEpKnQudGl0bGVTcGFjaW5nK3QudGl0bGVNYXJnaW5Cb3R0b20pLF8pe2xldCBlPXQuZGlzcGxheUNvbG9ycz9NYXRoLm1heChzLGMubGluZUhlaWdodCk6Yy5saW5lSGVpZ2h0O2grPXAqZSsoXy1wKSpjLmxpbmVIZWlnaHQrKF8tMSkqdC5ib2R5U3BhY2luZ31mJiYoaCs9dC5mb290ZXJNYXJnaW5Ub3ArZip1LmxpbmVIZWlnaHQrKGYtMSkqdC5mb290ZXJTcGFjaW5nKTtsZXQgdj0wLHk9ZnVuY3Rpb24oZSl7Zz1NYXRoLm1heChnLG4ubWVhc3VyZVRleHQoZSkud2lkdGgrdil9O3JldHVybiBuLnNhdmUoKSxuLmZvbnQ9bC5zdHJpbmcsSShlLnRpdGxlLHkpLG4uZm9udD1jLnN0cmluZyxJKGUuYmVmb3JlQm9keS5jb25jYXQoZS5hZnRlckJvZHkpLHkpLHY9dC5kaXNwbGF5Q29sb3JzP28rMit0LmJveFBhZGRpbmc6MCxJKHIsZT0+e0koZS5iZWZvcmUseSksSShlLmxpbmVzLHkpLEkoZS5hZnRlcix5KX0pLHY9MCxuLmZvbnQ9dS5zdHJpbmcsSShlLmZvb3Rlcix5KSxuLnJlc3RvcmUoKSxnKz1tLndpZHRoLHt3aWR0aDpnLGhlaWdodDpofX1mdW5jdGlvbiBqcyhlLHQpe2xldHt5Om4saGVpZ2h0OnJ9PXQ7cmV0dXJuIG48ci8yP2B0b3BgOm4+ZS5oZWlnaHQtci8yP2Bib3R0b21gOmBjZW50ZXJgfWZ1bmN0aW9uIE1zKGUsdCxuLHIpe2xldHt4Omksd2lkdGg6YX09cixvPW4uY2FyZXRTaXplK24uY2FyZXRQYWRkaW5nO2lmKGU9PT1gbGVmdGAmJmkrYStvPnQud2lkdGh8fGU9PT1gcmlnaHRgJiZpLWEtbzwwKXJldHVybiEwfWZ1bmN0aW9uIE5zKGUsdCxuLHIpe2xldHt4Omksd2lkdGg6YX09bix7d2lkdGg6byxjaGFydEFyZWE6e2xlZnQ6cyxyaWdodDpjfX09ZSxsPWBjZW50ZXJgO3JldHVybiByPT09YGNlbnRlcmA/bD1pPD0ocytjKS8yP2BsZWZ0YDpgcmlnaHRgOmk8PWEvMj9sPWBsZWZ0YDppPj1vLWEvMiYmKGw9YHJpZ2h0YCksTXMobCxlLHQsbikmJihsPWBjZW50ZXJgKSxsfWZ1bmN0aW9uIFBzKGUsdCxuKXtsZXQgcj1uLnlBbGlnbnx8dC55QWxpZ258fGpzKGUsbik7cmV0dXJue3hBbGlnbjpuLnhBbGlnbnx8dC54QWxpZ258fE5zKGUsdCxuLHIpLHlBbGlnbjpyfX1mdW5jdGlvbiBGcyhlLHQpe2xldHt4Om4sd2lkdGg6cn09ZTtyZXR1cm4gdD09PWByaWdodGA/bi09cjp0PT09YGNlbnRlcmAmJihuLT1yLzIpLG59ZnVuY3Rpb24gSXMoZSx0LG4pe2xldHt5OnIsaGVpZ2h0Oml9PWU7cmV0dXJuIHQ9PT1gdG9wYD9yKz1uOnItPXQ9PT1gYm90dG9tYD9pK246aS8yLHJ9ZnVuY3Rpb24gTHMoZSx0LG4scil7bGV0e2NhcmV0U2l6ZTppLGNhcmV0UGFkZGluZzphLGNvcm5lclJhZGl1czpvfT1lLHt4QWxpZ246cyx5QWxpZ246Y309bixsPWkrYSx7dG9wTGVmdDp1LHRvcFJpZ2h0OmQsYm90dG9tTGVmdDpmLGJvdHRvbVJpZ2h0OnB9PWtuKG8pLG09RnModCxzKSxoPUlzKHQsYyxsKTtyZXR1cm4gYz09PWBjZW50ZXJgP3M9PT1gbGVmdGA/bSs9bDpzPT09YHJpZ2h0YCYmKG0tPWwpOnM9PT1gbGVmdGA/bS09TWF0aC5tYXgodSxmKStpOnM9PT1gcmlnaHRgJiYobSs9TWF0aC5tYXgoZCxwKStpKSx7eDpIKG0sMCxyLndpZHRoLXQud2lkdGgpLHk6SChoLDAsci5oZWlnaHQtdC5oZWlnaHQpfX1mdW5jdGlvbiBScyhlLHQsbil7bGV0IHI9SyhuLnBhZGRpbmcpO3JldHVybiB0PT09YGNlbnRlcmA/ZS54K2Uud2lkdGgvMjp0PT09YHJpZ2h0YD9lLngrZS53aWR0aC1yLnJpZ2h0OmUueCtyLmxlZnR9ZnVuY3Rpb24genMoZSl7cmV0dXJuIFgoW10sWihlKSl9ZnVuY3Rpb24gQnMoZSx0LG4pe3JldHVybiBNbihlLHt0b29sdGlwOnQsdG9vbHRpcEl0ZW1zOm4sdHlwZTpgdG9vbHRpcGB9KX1mdW5jdGlvbiBWcyhlLHQpe2xldCBuPXQmJnQuZGF0YXNldCYmdC5kYXRhc2V0LnRvb2x0aXAmJnQuZGF0YXNldC50b29sdGlwLmNhbGxiYWNrcztyZXR1cm4gbj9lLm92ZXJyaWRlKG4pOmV9dmFyIEhzPXtiZWZvcmVUaXRsZTpPLHRpdGxlKGUpe2lmKGUubGVuZ3RoPjApe2xldCB0PWVbMF0sbj10LmNoYXJ0LmRhdGEubGFiZWxzLHI9bj9uLmxlbmd0aDowO2lmKHRoaXMmJnRoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLm1vZGU9PT1gZGF0YXNldGApcmV0dXJuIHQuZGF0YXNldC5sYWJlbHx8YGA7aWYodC5sYWJlbClyZXR1cm4gdC5sYWJlbDtpZihyPjAmJnQuZGF0YUluZGV4PHIpcmV0dXJuIG5bdC5kYXRhSW5kZXhdfXJldHVybmBgfSxhZnRlclRpdGxlOk8sYmVmb3JlQm9keTpPLGJlZm9yZUxhYmVsOk8sbGFiZWwoZSl7aWYodGhpcyYmdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubW9kZT09PWBkYXRhc2V0YClyZXR1cm4gZS5sYWJlbCtgOiBgK2UuZm9ybWF0dGVkVmFsdWV8fGUuZm9ybWF0dGVkVmFsdWU7bGV0IHQ9ZS5kYXRhc2V0LmxhYmVsfHxgYDt0JiYodCs9YDogYCk7bGV0IG49ZS5mb3JtYXR0ZWRWYWx1ZTtyZXR1cm4gayhuKXx8KHQrPW4pLHR9LGxhYmVsQ29sb3IoZSl7bGV0IHQ9ZS5jaGFydC5nZXREYXRhc2V0TWV0YShlLmRhdGFzZXRJbmRleCkuY29udHJvbGxlci5nZXRTdHlsZShlLmRhdGFJbmRleCk7cmV0dXJue2JvcmRlckNvbG9yOnQuYm9yZGVyQ29sb3IsYmFja2dyb3VuZENvbG9yOnQuYmFja2dyb3VuZENvbG9yLGJvcmRlcldpZHRoOnQuYm9yZGVyV2lkdGgsYm9yZGVyRGFzaDp0LmJvcmRlckRhc2gsYm9yZGVyRGFzaE9mZnNldDp0LmJvcmRlckRhc2hPZmZzZXQsYm9yZGVyUmFkaXVzOjB9fSxsYWJlbFRleHRDb2xvcigpe3JldHVybiB0aGlzLm9wdGlvbnMuYm9keUNvbG9yfSxsYWJlbFBvaW50U3R5bGUoZSl7bGV0IHQ9ZS5jaGFydC5nZXREYXRhc2V0TWV0YShlLmRhdGFzZXRJbmRleCkuY29udHJvbGxlci5nZXRTdHlsZShlLmRhdGFJbmRleCk7cmV0dXJue3BvaW50U3R5bGU6dC5wb2ludFN0eWxlLHJvdGF0aW9uOnQucm90YXRpb259fSxhZnRlckxhYmVsOk8sYWZ0ZXJCb2R5Ok8sYmVmb3JlRm9vdGVyOk8sZm9vdGVyOk8sYWZ0ZXJGb290ZXI6T307ZnVuY3Rpb24gUShlLHQsbixyKXtsZXQgaT1lW3RdLmNhbGwobixyKTtyZXR1cm4gaT09PXZvaWQgMD9Ic1t0XS5jYWxsKG4scik6aX12YXIgVXM9Y2xhc3MgZXh0ZW5kcyBfYXtzdGF0aWMgcG9zaXRpb25lcnM9T3M7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLm9wYWNpdHk9MCx0aGlzLl9hY3RpdmU9W10sdGhpcy5fZXZlbnRQb3NpdGlvbj12b2lkIDAsdGhpcy5fc2l6ZT12b2lkIDAsdGhpcy5fY2FjaGVkQW5pbWF0aW9ucz12b2lkIDAsdGhpcy5fdG9vbHRpcEl0ZW1zPVtdLHRoaXMuJGFuaW1hdGlvbnM9dm9pZCAwLHRoaXMuJGNvbnRleHQ9dm9pZCAwLHRoaXMuY2hhcnQ9ZS5jaGFydCx0aGlzLm9wdGlvbnM9ZS5vcHRpb25zLHRoaXMuZGF0YVBvaW50cz12b2lkIDAsdGhpcy50aXRsZT12b2lkIDAsdGhpcy5iZWZvcmVCb2R5PXZvaWQgMCx0aGlzLmJvZHk9dm9pZCAwLHRoaXMuYWZ0ZXJCb2R5PXZvaWQgMCx0aGlzLmZvb3Rlcj12b2lkIDAsdGhpcy54QWxpZ249dm9pZCAwLHRoaXMueUFsaWduPXZvaWQgMCx0aGlzLng9dm9pZCAwLHRoaXMueT12b2lkIDAsdGhpcy5oZWlnaHQ9dm9pZCAwLHRoaXMud2lkdGg9dm9pZCAwLHRoaXMuY2FyZXRYPXZvaWQgMCx0aGlzLmNhcmV0WT12b2lkIDAsdGhpcy5sYWJlbENvbG9ycz12b2lkIDAsdGhpcy5sYWJlbFBvaW50U3R5bGVzPXZvaWQgMCx0aGlzLmxhYmVsVGV4dENvbG9ycz12b2lkIDB9aW5pdGlhbGl6ZShlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLl9jYWNoZWRBbmltYXRpb25zPXZvaWQgMCx0aGlzLiRjb250ZXh0PXZvaWQgMH1fcmVzb2x2ZUFuaW1hdGlvbnMoKXtsZXQgZT10aGlzLl9jYWNoZWRBbmltYXRpb25zO2lmKGUpcmV0dXJuIGU7bGV0IHQ9dGhpcy5jaGFydCxuPXRoaXMub3B0aW9ucy5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxyPW4uZW5hYmxlZCYmdC5vcHRpb25zLmFuaW1hdGlvbiYmbi5hbmltYXRpb25zLGk9bmV3IFhyKHRoaXMuY2hhcnQscik7cmV0dXJuIHIuX2NhY2hlYWJsZSYmKHRoaXMuX2NhY2hlZEFuaW1hdGlvbnM9T2JqZWN0LmZyZWV6ZShpKSksaX1nZXRDb250ZXh0KCl7cmV0dXJuIHRoaXMuJGNvbnRleHR8fD1Ccyh0aGlzLmNoYXJ0LmdldENvbnRleHQoKSx0aGlzLHRoaXMuX3Rvb2x0aXBJdGVtcyl9Z2V0VGl0bGUoZSx0KXtsZXR7Y2FsbGJhY2tzOm59PXQscj1RKG4sYGJlZm9yZVRpdGxlYCx0aGlzLGUpLGk9UShuLGB0aXRsZWAsdGhpcyxlKSxhPVEobixgYWZ0ZXJUaXRsZWAsdGhpcyxlKSxvPVtdO3JldHVybiBvPVgobyxaKHIpKSxvPVgobyxaKGkpKSxvPVgobyxaKGEpKSxvfWdldEJlZm9yZUJvZHkoZSx0KXtyZXR1cm4genMoUSh0LmNhbGxiYWNrcyxgYmVmb3JlQm9keWAsdGhpcyxlKSl9Z2V0Qm9keShlLHQpe2xldHtjYWxsYmFja3M6bn09dCxyPVtdO3JldHVybiBJKGUsZT0+e2xldCB0PXtiZWZvcmU6W10sbGluZXM6W10sYWZ0ZXI6W119LGk9VnMobixlKTtYKHQuYmVmb3JlLFooUShpLGBiZWZvcmVMYWJlbGAsdGhpcyxlKSkpLFgodC5saW5lcyxRKGksYGxhYmVsYCx0aGlzLGUpKSxYKHQuYWZ0ZXIsWihRKGksYGFmdGVyTGFiZWxgLHRoaXMsZSkpKSxyLnB1c2godCl9KSxyfWdldEFmdGVyQm9keShlLHQpe3JldHVybiB6cyhRKHQuY2FsbGJhY2tzLGBhZnRlckJvZHlgLHRoaXMsZSkpfWdldEZvb3RlcihlLHQpe2xldHtjYWxsYmFja3M6bn09dCxyPVEobixgYmVmb3JlRm9vdGVyYCx0aGlzLGUpLGk9UShuLGBmb290ZXJgLHRoaXMsZSksYT1RKG4sYGFmdGVyRm9vdGVyYCx0aGlzLGUpLG89W107cmV0dXJuIG89WChvLFoocikpLG89WChvLFooaSkpLG89WChvLFooYSkpLG99X2NyZWF0ZUl0ZW1zKGUpe2xldCB0PXRoaXMuX2FjdGl2ZSxuPXRoaXMuY2hhcnQuZGF0YSxyPVtdLGk9W10sYT1bXSxvPVtdLHMsYztmb3Iocz0wLGM9dC5sZW5ndGg7czxjOysrcylvLnB1c2goa3ModGhpcy5jaGFydCx0W3NdKSk7cmV0dXJuIGUuZmlsdGVyJiYobz1vLmZpbHRlcigodCxyLGkpPT5lLmZpbHRlcih0LHIsaSxuKSkpLGUuaXRlbVNvcnQmJihvPW8uc29ydCgodCxyKT0+ZS5pdGVtU29ydCh0LHIsbikpKSxJKG8sdD0+e2xldCBuPVZzKGUuY2FsbGJhY2tzLHQpO3IucHVzaChRKG4sYGxhYmVsQ29sb3JgLHRoaXMsdCkpLGkucHVzaChRKG4sYGxhYmVsUG9pbnRTdHlsZWAsdGhpcyx0KSksYS5wdXNoKFEobixgbGFiZWxUZXh0Q29sb3JgLHRoaXMsdCkpfSksdGhpcy5sYWJlbENvbG9ycz1yLHRoaXMubGFiZWxQb2ludFN0eWxlcz1pLHRoaXMubGFiZWxUZXh0Q29sb3JzPWEsdGhpcy5kYXRhUG9pbnRzPW8sb311cGRhdGUoZSx0KXtsZXQgbj10aGlzLm9wdGlvbnMuc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQoKSkscj10aGlzLl9hY3RpdmUsaSxhPVtdO2lmKCFyLmxlbmd0aCl0aGlzLm9wYWNpdHkhPT0wJiYoaT17b3BhY2l0eTowfSk7ZWxzZXtsZXQgZT1Pc1tuLnBvc2l0aW9uXS5jYWxsKHRoaXMscix0aGlzLl9ldmVudFBvc2l0aW9uKTthPXRoaXMuX2NyZWF0ZUl0ZW1zKG4pLHRoaXMudGl0bGU9dGhpcy5nZXRUaXRsZShhLG4pLHRoaXMuYmVmb3JlQm9keT10aGlzLmdldEJlZm9yZUJvZHkoYSxuKSx0aGlzLmJvZHk9dGhpcy5nZXRCb2R5KGEsbiksdGhpcy5hZnRlckJvZHk9dGhpcy5nZXRBZnRlckJvZHkoYSxuKSx0aGlzLmZvb3Rlcj10aGlzLmdldEZvb3RlcihhLG4pO2xldCB0PXRoaXMuX3NpemU9QXModGhpcyxuKSxvPU9iamVjdC5hc3NpZ24oe30sZSx0KSxzPVBzKHRoaXMuY2hhcnQsbixvKSxjPUxzKG4sbyxzLHRoaXMuY2hhcnQpO3RoaXMueEFsaWduPXMueEFsaWduLHRoaXMueUFsaWduPXMueUFsaWduLGk9e29wYWNpdHk6MSx4OmMueCx5OmMueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodCxjYXJldFg6ZS54LGNhcmV0WTplLnl9fXRoaXMuX3Rvb2x0aXBJdGVtcz1hLHRoaXMuJGNvbnRleHQ9dm9pZCAwLGkmJnRoaXMuX3Jlc29sdmVBbmltYXRpb25zKCkudXBkYXRlKHRoaXMsaSksZSYmbi5leHRlcm5hbCYmbi5leHRlcm5hbC5jYWxsKHRoaXMse2NoYXJ0OnRoaXMuY2hhcnQsdG9vbHRpcDp0aGlzLHJlcGxheTp0fSl9ZHJhd0NhcmV0KGUsdCxuLHIpe2xldCBpPXRoaXMuZ2V0Q2FyZXRQb3NpdGlvbihlLG4scik7dC5saW5lVG8oaS54MSxpLnkxKSx0LmxpbmVUbyhpLngyLGkueTIpLHQubGluZVRvKGkueDMsaS55Myl9Z2V0Q2FyZXRQb3NpdGlvbihlLHQsbil7bGV0e3hBbGlnbjpyLHlBbGlnbjppfT10aGlzLHtjYXJldFNpemU6YSxjb3JuZXJSYWRpdXM6b309bix7dG9wTGVmdDpzLHRvcFJpZ2h0OmMsYm90dG9tTGVmdDpsLGJvdHRvbVJpZ2h0OnV9PWtuKG8pLHt4OmQseTpmfT1lLHt3aWR0aDpwLGhlaWdodDptfT10LGgsZyxfLHYseSxiO3JldHVybiBpPT09YGNlbnRlcmA/KHk9ZittLzIscj09PWBsZWZ0YD8oaD1kLGc9aC1hLHY9eSthLGI9eS1hKTooaD1kK3AsZz1oK2Esdj15LWEsYj15K2EpLF89aCk6KGc9cj09PWBsZWZ0YD9kK01hdGgubWF4KHMsbCkrYTpyPT09YHJpZ2h0YD9kK3AtTWF0aC5tYXgoYyx1KS1hOnRoaXMuY2FyZXRYLGk9PT1gdG9wYD8odj1mLHk9di1hLGg9Zy1hLF89ZythKToodj1mK20seT12K2EsaD1nK2EsXz1nLWEpLGI9dikse3gxOmgseDI6Zyx4MzpfLHkxOnYseTI6eSx5MzpifX1kcmF3VGl0bGUoZSx0LG4pe2xldCByPXRoaXMudGl0bGUsaT1yLmxlbmd0aCxhLG8scztpZihpKXtsZXQgYz1rcihuLnJ0bCx0aGlzLngsdGhpcy53aWR0aCk7Zm9yKGUueD1Scyh0aGlzLG4udGl0bGVBbGlnbixuKSx0LnRleHRBbGlnbj1jLnRleHRBbGlnbihuLnRpdGxlQWxpZ24pLHQudGV4dEJhc2VsaW5lPWBtaWRkbGVgLGE9cShuLnRpdGxlRm9udCksbz1uLnRpdGxlU3BhY2luZyx0LmZpbGxTdHlsZT1uLnRpdGxlQ29sb3IsdC5mb250PWEuc3RyaW5nLHM9MDtzPGk7KytzKXQuZmlsbFRleHQocltzXSxjLngoZS54KSxlLnkrYS5saW5lSGVpZ2h0LzIpLGUueSs9YS5saW5lSGVpZ2h0K28scysxPT09aSYmKGUueSs9bi50aXRsZU1hcmdpbkJvdHRvbS1vKX19X2RyYXdDb2xvckJveChlLHQsbixyLGkpe2xldCBhPXRoaXMubGFiZWxDb2xvcnNbbl0sbz10aGlzLmxhYmVsUG9pbnRTdHlsZXNbbl0se2JveEhlaWdodDpzLGJveFdpZHRoOmN9PWksbD1xKGkuYm9keUZvbnQpLHU9UnModGhpcyxgbGVmdGAsaSksZD1yLngodSksZj1zPGwubGluZUhlaWdodD8obC5saW5lSGVpZ2h0LXMpLzI6MCxwPXQueStmO2lmKGkudXNlUG9pbnRTdHlsZSl7bGV0IHQ9e3JhZGl1czpNYXRoLm1pbihjLHMpLzIscG9pbnRTdHlsZTpvLnBvaW50U3R5bGUscm90YXRpb246by5yb3RhdGlvbixib3JkZXJXaWR0aDoxfSxuPXIubGVmdEZvckx0cihkLGMpK2MvMixsPXArcy8yO2Uuc3Ryb2tlU3R5bGU9aS5tdWx0aUtleUJhY2tncm91bmQsZS5maWxsU3R5bGU9aS5tdWx0aUtleUJhY2tncm91bmQsZm4oZSx0LG4sbCksZS5zdHJva2VTdHlsZT1hLmJvcmRlckNvbG9yLGUuZmlsbFN0eWxlPWEuYmFja2dyb3VuZENvbG9yLGZuKGUsdCxuLGwpfWVsc2V7ZS5saW5lV2lkdGg9aihhLmJvcmRlcldpZHRoKT9NYXRoLm1heCguLi5PYmplY3QudmFsdWVzKGEuYm9yZGVyV2lkdGgpKTphLmJvcmRlcldpZHRofHwxLGUuc3Ryb2tlU3R5bGU9YS5ib3JkZXJDb2xvcixlLnNldExpbmVEYXNoKGEuYm9yZGVyRGFzaHx8W10pLGUubGluZURhc2hPZmZzZXQ9YS5ib3JkZXJEYXNoT2Zmc2V0fHwwO2xldCB0PXIubGVmdEZvckx0cihkLGMpLG49ci5sZWZ0Rm9yTHRyKHIueFBsdXMoZCwxKSxjLTIpLG89a24oYS5ib3JkZXJSYWRpdXMpO09iamVjdC52YWx1ZXMobykuc29tZShlPT5lIT09MCk/KGUuYmVnaW5QYXRoKCksZS5maWxsU3R5bGU9aS5tdWx0aUtleUJhY2tncm91bmQsU24oZSx7eDp0LHk6cCx3OmMsaDpzLHJhZGl1czpvfSksZS5maWxsKCksZS5zdHJva2UoKSxlLmZpbGxTdHlsZT1hLmJhY2tncm91bmRDb2xvcixlLmJlZ2luUGF0aCgpLFNuKGUse3g6bix5OnArMSx3OmMtMixoOnMtMixyYWRpdXM6b30pLGUuZmlsbCgpKTooZS5maWxsU3R5bGU9aS5tdWx0aUtleUJhY2tncm91bmQsZS5maWxsUmVjdCh0LHAsYyxzKSxlLnN0cm9rZVJlY3QodCxwLGMscyksZS5maWxsU3R5bGU9YS5iYWNrZ3JvdW5kQ29sb3IsZS5maWxsUmVjdChuLHArMSxjLTIscy0yKSl9ZS5maWxsU3R5bGU9dGhpcy5sYWJlbFRleHRDb2xvcnNbbl19ZHJhd0JvZHkoZSx0LG4pe2xldHtib2R5OnJ9PXRoaXMse2JvZHlTcGFjaW5nOmksYm9keUFsaWduOmEsZGlzcGxheUNvbG9yczpvLGJveEhlaWdodDpzLGJveFdpZHRoOmMsYm94UGFkZGluZzpsfT1uLHU9cShuLmJvZHlGb250KSxkPXUubGluZUhlaWdodCxmPTAscD1rcihuLnJ0bCx0aGlzLngsdGhpcy53aWR0aCksbT1mdW5jdGlvbihuKXt0LmZpbGxUZXh0KG4scC54KGUueCtmKSxlLnkrZC8yKSxlLnkrPWQraX0saD1wLnRleHRBbGlnbihhKSxnLF8sdix5LGIseCxTO2Zvcih0LnRleHRBbGlnbj1hLHQudGV4dEJhc2VsaW5lPWBtaWRkbGVgLHQuZm9udD11LnN0cmluZyxlLng9UnModGhpcyxoLG4pLHQuZmlsbFN0eWxlPW4uYm9keUNvbG9yLEkodGhpcy5iZWZvcmVCb2R5LG0pLGY9byYmaCE9PWByaWdodGA/YT09PWBjZW50ZXJgP2MvMitsOmMrMitsOjAseT0wLHg9ci5sZW5ndGg7eTx4OysreSl7Zm9yKGc9clt5XSxfPXRoaXMubGFiZWxUZXh0Q29sb3JzW3ldLHQuZmlsbFN0eWxlPV8sSShnLmJlZm9yZSxtKSx2PWcubGluZXMsbyYmdi5sZW5ndGgmJih0aGlzLl9kcmF3Q29sb3JCb3godCxlLHkscCxuKSxkPU1hdGgubWF4KHUubGluZUhlaWdodCxzKSksYj0wLFM9di5sZW5ndGg7YjxTOysrYiltKHZbYl0pLGQ9dS5saW5lSGVpZ2h0O0koZy5hZnRlcixtKX1mPTAsZD11LmxpbmVIZWlnaHQsSSh0aGlzLmFmdGVyQm9keSxtKSxlLnktPWl9ZHJhd0Zvb3RlcihlLHQsbil7bGV0IHI9dGhpcy5mb290ZXIsaT1yLmxlbmd0aCxhLG87aWYoaSl7bGV0IHM9a3Iobi5ydGwsdGhpcy54LHRoaXMud2lkdGgpO2ZvcihlLng9UnModGhpcyxuLmZvb3RlckFsaWduLG4pLGUueSs9bi5mb290ZXJNYXJnaW5Ub3AsdC50ZXh0QWxpZ249cy50ZXh0QWxpZ24obi5mb290ZXJBbGlnbiksdC50ZXh0QmFzZWxpbmU9YG1pZGRsZWAsYT1xKG4uZm9vdGVyRm9udCksdC5maWxsU3R5bGU9bi5mb290ZXJDb2xvcix0LmZvbnQ9YS5zdHJpbmcsbz0wO288aTsrK28pdC5maWxsVGV4dChyW29dLHMueChlLngpLGUueSthLmxpbmVIZWlnaHQvMiksZS55Kz1hLmxpbmVIZWlnaHQrbi5mb290ZXJTcGFjaW5nfX1kcmF3QmFja2dyb3VuZChlLHQsbixyKXtsZXR7eEFsaWduOmkseUFsaWduOmF9PXRoaXMse3g6byx5OnN9PWUse3dpZHRoOmMsaGVpZ2h0Omx9PW4se3RvcExlZnQ6dSx0b3BSaWdodDpkLGJvdHRvbUxlZnQ6Zixib3R0b21SaWdodDpwfT1rbihyLmNvcm5lclJhZGl1cyk7dC5maWxsU3R5bGU9ci5iYWNrZ3JvdW5kQ29sb3IsdC5zdHJva2VTdHlsZT1yLmJvcmRlckNvbG9yLHQubGluZVdpZHRoPXIuYm9yZGVyV2lkdGgsdC5iZWdpblBhdGgoKSx0Lm1vdmVUbyhvK3UscyksYT09PWB0b3BgJiZ0aGlzLmRyYXdDYXJldChlLHQsbixyKSx0LmxpbmVUbyhvK2MtZCxzKSx0LnF1YWRyYXRpY0N1cnZlVG8obytjLHMsbytjLHMrZCksYT09PWBjZW50ZXJgJiZpPT09YHJpZ2h0YCYmdGhpcy5kcmF3Q2FyZXQoZSx0LG4sciksdC5saW5lVG8obytjLHMrbC1wKSx0LnF1YWRyYXRpY0N1cnZlVG8obytjLHMrbCxvK2MtcCxzK2wpLGE9PT1gYm90dG9tYCYmdGhpcy5kcmF3Q2FyZXQoZSx0LG4sciksdC5saW5lVG8obytmLHMrbCksdC5xdWFkcmF0aWNDdXJ2ZVRvKG8scytsLG8scytsLWYpLGE9PT1gY2VudGVyYCYmaT09PWBsZWZ0YCYmdGhpcy5kcmF3Q2FyZXQoZSx0LG4sciksdC5saW5lVG8obyxzK3UpLHQucXVhZHJhdGljQ3VydmVUbyhvLHMsbyt1LHMpLHQuY2xvc2VQYXRoKCksdC5maWxsKCksci5ib3JkZXJXaWR0aD4wJiZ0LnN0cm9rZSgpfV91cGRhdGVBbmltYXRpb25UYXJnZXQoZSl7bGV0IHQ9dGhpcy5jaGFydCxuPXRoaXMuJGFuaW1hdGlvbnMscj1uJiZuLngsaT1uJiZuLnk7aWYocnx8aSl7bGV0IG49T3NbZS5wb3NpdGlvbl0uY2FsbCh0aGlzLHRoaXMuX2FjdGl2ZSx0aGlzLl9ldmVudFBvc2l0aW9uKTtpZighbilyZXR1cm47bGV0IGE9dGhpcy5fc2l6ZT1Bcyh0aGlzLGUpLG89T2JqZWN0LmFzc2lnbih7fSxuLHRoaXMuX3NpemUpLHM9UHModCxlLG8pLGM9THMoZSxvLHMsdCk7KHIuX3RvIT09Yy54fHxpLl90byE9PWMueSkmJih0aGlzLnhBbGlnbj1zLnhBbGlnbix0aGlzLnlBbGlnbj1zLnlBbGlnbix0aGlzLndpZHRoPWEud2lkdGgsdGhpcy5oZWlnaHQ9YS5oZWlnaHQsdGhpcy5jYXJldFg9bi54LHRoaXMuY2FyZXRZPW4ueSx0aGlzLl9yZXNvbHZlQW5pbWF0aW9ucygpLnVwZGF0ZSh0aGlzLGMpKX19X3dpbGxSZW5kZXIoKXtyZXR1cm4hIXRoaXMub3BhY2l0eX1kcmF3KGUpe2xldCB0PXRoaXMub3B0aW9ucy5zZXRDb250ZXh0KHRoaXMuZ2V0Q29udGV4dCgpKSxuPXRoaXMub3BhY2l0eTtpZighbilyZXR1cm47dGhpcy5fdXBkYXRlQW5pbWF0aW9uVGFyZ2V0KHQpO2xldCByPXt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH0saT17eDp0aGlzLngseTp0aGlzLnl9O249TWF0aC5hYnMobik8LjAwMT8wOm47bGV0IGE9Syh0LnBhZGRpbmcpLG89dGhpcy50aXRsZS5sZW5ndGh8fHRoaXMuYmVmb3JlQm9keS5sZW5ndGh8fHRoaXMuYm9keS5sZW5ndGh8fHRoaXMuYWZ0ZXJCb2R5Lmxlbmd0aHx8dGhpcy5mb290ZXIubGVuZ3RoO3QuZW5hYmxlZCYmbyYmKGUuc2F2ZSgpLGUuZ2xvYmFsQWxwaGE9bix0aGlzLmRyYXdCYWNrZ3JvdW5kKGksZSxyLHQpLEFyKGUsdC50ZXh0RGlyZWN0aW9uKSxpLnkrPWEudG9wLHRoaXMuZHJhd1RpdGxlKGksZSx0KSx0aGlzLmRyYXdCb2R5KGksZSx0KSx0aGlzLmRyYXdGb290ZXIoaSxlLHQpLGpyKGUsdC50ZXh0RGlyZWN0aW9uKSxlLnJlc3RvcmUoKSl9Z2V0QWN0aXZlRWxlbWVudHMoKXtyZXR1cm4gdGhpcy5fYWN0aXZlfHxbXX1zZXRBY3RpdmVFbGVtZW50cyhlLHQpe2xldCBuPXRoaXMuX2FjdGl2ZSxyPWUubWFwKCh7ZGF0YXNldEluZGV4OmUsaW5kZXg6dH0pPT57bGV0IG49dGhpcy5jaGFydC5nZXREYXRhc2V0TWV0YShlKTtpZighbil0aHJvdyBFcnJvcihgQ2Fubm90IGZpbmQgYSBkYXRhc2V0IGF0IGluZGV4IGArZSk7cmV0dXJue2RhdGFzZXRJbmRleDplLGVsZW1lbnQ6bi5kYXRhW3RdLGluZGV4OnR9fSksaT0hemUobixyKSxhPXRoaXMuX3Bvc2l0aW9uQ2hhbmdlZChyLHQpOyhpfHxhKSYmKHRoaXMuX2FjdGl2ZT1yLHRoaXMuX2V2ZW50UG9zaXRpb249dCx0aGlzLl9pZ25vcmVSZXBsYXlFdmVudHM9ITAsdGhpcy51cGRhdGUoITApKX1oYW5kbGVFdmVudChlLHQsbj0hMCl7aWYodCYmdGhpcy5faWdub3JlUmVwbGF5RXZlbnRzKXJldHVybiExO3RoaXMuX2lnbm9yZVJlcGxheUV2ZW50cz0hMTtsZXQgcj10aGlzLm9wdGlvbnMsaT10aGlzLl9hY3RpdmV8fFtdLGE9dGhpcy5fZ2V0QWN0aXZlRWxlbWVudHMoZSxpLHQsbiksbz10aGlzLl9wb3NpdGlvbkNoYW5nZWQoYSxlKSxzPXR8fCF6ZShhLGkpfHxvO3JldHVybiBzJiYodGhpcy5fYWN0aXZlPWEsKHIuZW5hYmxlZHx8ci5leHRlcm5hbCkmJih0aGlzLl9ldmVudFBvc2l0aW9uPXt4OmUueCx5OmUueX0sdGhpcy51cGRhdGUoITAsdCkpKSxzfV9nZXRBY3RpdmVFbGVtZW50cyhlLHQsbixyKXtsZXQgaT10aGlzLm9wdGlvbnM7aWYoZS50eXBlPT09YG1vdXNlb3V0YClyZXR1cm5bXTtpZighcilyZXR1cm4gdC5maWx0ZXIoZT0+dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2UuZGF0YXNldEluZGV4XSYmdGhpcy5jaGFydC5nZXREYXRhc2V0TWV0YShlLmRhdGFzZXRJbmRleCkuY29udHJvbGxlci5nZXRQYXJzZWQoZS5pbmRleCkhPT12b2lkIDApO2xldCBhPXRoaXMuY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShlLGkubW9kZSxpLG4pO3JldHVybiBpLnJldmVyc2UmJmEucmV2ZXJzZSgpLGF9X3Bvc2l0aW9uQ2hhbmdlZChlLHQpe2xldHtjYXJldFg6bixjYXJldFk6cixvcHRpb25zOml9PXRoaXMsYT1Pc1tpLnBvc2l0aW9uXS5jYWxsKHRoaXMsZSx0KTtyZXR1cm4gYSE9PSExJiYobiE9PWEueHx8ciE9PWEueSl9fSxXcz17aWQ6YHRvb2x0aXBgLF9lbGVtZW50OlVzLHBvc2l0aW9uZXJzOk9zLGFmdGVySW5pdChlLHQsbil7biYmKGUudG9vbHRpcD1uZXcgVXMoe2NoYXJ0OmUsb3B0aW9uczpufSkpfSxiZWZvcmVVcGRhdGUoZSx0LG4pe2UudG9vbHRpcCYmZS50b29sdGlwLmluaXRpYWxpemUobil9LHJlc2V0KGUsdCxuKXtlLnRvb2x0aXAmJmUudG9vbHRpcC5pbml0aWFsaXplKG4pfSxhZnRlckRyYXcoZSl7bGV0IHQ9ZS50b29sdGlwO2lmKHQmJnQuX3dpbGxSZW5kZXIoKSl7bGV0IG49e3Rvb2x0aXA6dH07aWYoZS5ub3RpZnlQbHVnaW5zKGBiZWZvcmVUb29sdGlwRHJhd2Asey4uLm4sY2FuY2VsYWJsZTohMH0pPT09ITEpcmV0dXJuO3QuZHJhdyhlLmN0eCksZS5ub3RpZnlQbHVnaW5zKGBhZnRlclRvb2x0aXBEcmF3YCxuKX19LGFmdGVyRXZlbnQoZSx0KXtpZihlLnRvb2x0aXApe2xldCBuPXQucmVwbGF5O2UudG9vbHRpcC5oYW5kbGVFdmVudCh0LmV2ZW50LG4sdC5pbkNoYXJ0QXJlYSkmJih0LmNoYW5nZWQ9ITApfX0sZGVmYXVsdHM6e2VuYWJsZWQ6ITAsZXh0ZXJuYWw6bnVsbCxwb3NpdGlvbjpgYXZlcmFnZWAsYmFja2dyb3VuZENvbG9yOmByZ2JhKDAsMCwwLDAuOClgLHRpdGxlQ29sb3I6YCNmZmZgLHRpdGxlRm9udDp7d2VpZ2h0OmBib2xkYH0sdGl0bGVTcGFjaW5nOjIsdGl0bGVNYXJnaW5Cb3R0b206Nix0aXRsZUFsaWduOmBsZWZ0YCxib2R5Q29sb3I6YCNmZmZgLGJvZHlTcGFjaW5nOjIsYm9keUZvbnQ6e30sYm9keUFsaWduOmBsZWZ0YCxmb290ZXJDb2xvcjpgI2ZmZmAsZm9vdGVyU3BhY2luZzoyLGZvb3Rlck1hcmdpblRvcDo2LGZvb3RlckZvbnQ6e3dlaWdodDpgYm9sZGB9LGZvb3RlckFsaWduOmBsZWZ0YCxwYWRkaW5nOjYsY2FyZXRQYWRkaW5nOjIsY2FyZXRTaXplOjUsY29ybmVyUmFkaXVzOjYsYm94SGVpZ2h0OihlLHQpPT50LmJvZHlGb250LnNpemUsYm94V2lkdGg6KGUsdCk9PnQuYm9keUZvbnQuc2l6ZSxtdWx0aUtleUJhY2tncm91bmQ6YCNmZmZgLGRpc3BsYXlDb2xvcnM6ITAsYm94UGFkZGluZzowLGJvcmRlckNvbG9yOmByZ2JhKDAsMCwwLDApYCxib3JkZXJXaWR0aDowLGFuaW1hdGlvbjp7ZHVyYXRpb246NDAwLGVhc2luZzpgZWFzZU91dFF1YXJ0YH0sYW5pbWF0aW9uczp7bnVtYmVyczp7dHlwZTpgbnVtYmVyYCxwcm9wZXJ0aWVzOltgeGAsYHlgLGB3aWR0aGAsYGhlaWdodGAsYGNhcmV0WGAsYGNhcmV0WWBdfSxvcGFjaXR5OntlYXNpbmc6YGxpbmVhcmAsZHVyYXRpb246MjAwfX0sY2FsbGJhY2tzOkhzfSxkZWZhdWx0Um91dGVzOntib2R5Rm9udDpgZm9udGAsZm9vdGVyRm9udDpgZm9udGAsdGl0bGVGb250OmBmb250YH0sZGVzY3JpcHRvcnM6e19zY3JpcHRhYmxlOmU9PmUhPT1gZmlsdGVyYCYmZSE9PWBpdGVtU29ydGAmJmUhPT1gZXh0ZXJuYWxgLF9pbmRleGFibGU6ITEsY2FsbGJhY2tzOntfc2NyaXB0YWJsZTohMSxfaW5kZXhhYmxlOiExfSxhbmltYXRpb246e19mYWxsYmFjazohMX0sYW5pbWF0aW9uczp7X2ZhbGxiYWNrOmBhbmltYXRpb25gfX0sYWRkaXRpb25hbE9wdGlvblNjb3BlczpbYGludGVyYWN0aW9uYF19LEdzPShlLHQsbixyKT0+KHR5cGVvZiB0PT1gc3RyaW5nYD8obj1lLnB1c2godCktMSxyLnVuc2hpZnQoe2luZGV4Om4sbGFiZWw6dH0pKTppc05hTih0KSYmKG49bnVsbCksbik7ZnVuY3Rpb24gS3MoZSx0LG4scil7bGV0IGk9ZS5pbmRleE9mKHQpO3JldHVybiBpPT09LTE/R3MoZSx0LG4scik6aT09PWUubGFzdEluZGV4T2YodCk/aTpufXZhciBxcz0oZSx0KT0+ZT09PW51bGw/bnVsbDpIKE1hdGgucm91bmQoZSksMCx0KTtmdW5jdGlvbiBKcyhlKXtsZXQgdD10aGlzLmdldExhYmVscygpO3JldHVybiBlPj0wJiZlPHQubGVuZ3RoP3RbZV06ZX12YXIgWXM9Y2xhc3MgZXh0ZW5kcyBMYXtzdGF0aWMgaWQ9YGNhdGVnb3J5YDtzdGF0aWMgZGVmYXVsdHM9e3RpY2tzOntjYWxsYmFjazpKc319O2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuX3N0YXJ0VmFsdWU9dm9pZCAwLHRoaXMuX3ZhbHVlUmFuZ2U9MCx0aGlzLl9hZGRlZExhYmVscz1bXX1pbml0KGUpe2xldCB0PXRoaXMuX2FkZGVkTGFiZWxzO2lmKHQubGVuZ3RoKXtsZXQgZT10aGlzLmdldExhYmVscygpO2ZvcihsZXR7aW5kZXg6bixsYWJlbDpyfW9mIHQpZVtuXT09PXImJmUuc3BsaWNlKG4sMSk7dGhpcy5fYWRkZWRMYWJlbHM9W119c3VwZXIuaW5pdChlKX1wYXJzZShlLHQpe2lmKGsoZSkpcmV0dXJuIG51bGw7bGV0IG49dGhpcy5nZXRMYWJlbHMoKTtyZXR1cm4gdD1pc0Zpbml0ZSh0KSYmblt0XT09PWU/dDpLcyhuLGUsUCh0LGUpLHRoaXMuX2FkZGVkTGFiZWxzKSxxcyh0LG4ubGVuZ3RoLTEpfWRldGVybWluZURhdGFMaW1pdHMoKXtsZXR7bWluRGVmaW5lZDplLG1heERlZmluZWQ6dH09dGhpcy5nZXRVc2VyQm91bmRzKCkse21pbjpuLG1heDpyfT10aGlzLmdldE1pbk1heCghMCk7dGhpcy5vcHRpb25zLmJvdW5kcz09PWB0aWNrc2AmJihlfHwobj0wKSx0fHwocj10aGlzLmdldExhYmVscygpLmxlbmd0aC0xKSksdGhpcy5taW49bix0aGlzLm1heD1yfWJ1aWxkVGlja3MoKXtsZXQgZT10aGlzLm1pbix0PXRoaXMubWF4LG49dGhpcy5vcHRpb25zLm9mZnNldCxyPVtdLGk9dGhpcy5nZXRMYWJlbHMoKTtpPWU9PT0wJiZ0PT09aS5sZW5ndGgtMT9pOmkuc2xpY2UoZSx0KzEpLHRoaXMuX3ZhbHVlUmFuZ2U9TWF0aC5tYXgoaS5sZW5ndGgtKyFuLDEpLHRoaXMuX3N0YXJ0VmFsdWU9dGhpcy5taW4tKG4/LjU6MCk7Zm9yKGxldCBuPWU7bjw9dDtuKyspci5wdXNoKHt2YWx1ZTpufSk7cmV0dXJuIHJ9Z2V0TGFiZWxGb3JWYWx1ZShlKXtyZXR1cm4gSnMuY2FsbCh0aGlzLGUpfWNvbmZpZ3VyZSgpe3N1cGVyLmNvbmZpZ3VyZSgpLHRoaXMuaXNIb3Jpem9udGFsKCl8fCh0aGlzLl9yZXZlcnNlUGl4ZWxzPSF0aGlzLl9yZXZlcnNlUGl4ZWxzKX1nZXRQaXhlbEZvclZhbHVlKGUpe3JldHVybiB0eXBlb2YgZSE9YG51bWJlcmAmJihlPXRoaXMucGFyc2UoZSkpLGU9PT1udWxsP05hTjp0aGlzLmdldFBpeGVsRm9yRGVjaW1hbCgoZS10aGlzLl9zdGFydFZhbHVlKS90aGlzLl92YWx1ZVJhbmdlKX1nZXRQaXhlbEZvclRpY2soZSl7bGV0IHQ9dGhpcy50aWNrcztyZXR1cm4gZTwwfHxlPnQubGVuZ3RoLTE/bnVsbDp0aGlzLmdldFBpeGVsRm9yVmFsdWUodFtlXS52YWx1ZSl9Z2V0VmFsdWVGb3JQaXhlbChlKXtyZXR1cm4gTWF0aC5yb3VuZCh0aGlzLl9zdGFydFZhbHVlK3RoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpKnRoaXMuX3ZhbHVlUmFuZ2UpfWdldEJhc2VQaXhlbCgpe3JldHVybiB0aGlzLmJvdHRvbX19O2Z1bmN0aW9uIFhzKGUsdCl7bGV0IG49W10se2JvdW5kczpyLHN0ZXA6aSxtaW46YSxtYXg6byxwcmVjaXNpb246cyxjb3VudDpjLG1heFRpY2tzOmwsbWF4RGlnaXRzOnUsaW5jbHVkZUJvdW5kczpkfT1lLGY9aXx8MSxwPWwtMSx7bWluOm0sbWF4Omh9PXQsZz0hayhhKSxfPSFrKG8pLHY9IWsoYykseT0oaC1tKS8odSsxKSxiPWN0KChoLW0pL3AvZikqZix4LFMsQyx3O2lmKGI8MWUtMTQmJiFnJiYhXylyZXR1cm5be3ZhbHVlOm19LHt2YWx1ZTpofV07dz1NYXRoLmNlaWwoaC9iKS1NYXRoLmZsb29yKG0vYiksdz5wJiYoYj1jdCh3KmIvcC9mKSpmKSxrKHMpfHwoeD0xMCoqcyxiPU1hdGguY2VpbChiKngpL3gpLHI9PT1gdGlja3NgPyhTPU1hdGguZmxvb3IobS9iKSpiLEM9TWF0aC5jZWlsKGgvYikqYik6KFM9bSxDPWgpLGcmJl8mJmkmJmZ0KChvLWEpL2ksYi8xZTMpPyh3PU1hdGgucm91bmQoTWF0aC5taW4oKG8tYSkvYixsKSksYj0oby1hKS93LFM9YSxDPW8pOnY/KFM9Zz9hOlMsQz1fP286Qyx3PWMtMSxiPShDLVMpL3cpOih3PShDLVMpL2Isdz1zdCh3LE1hdGgucm91bmQodyksYi8xZTMpP01hdGgucm91bmQodyk6TWF0aC5jZWlsKHcpKTtsZXQgVD1NYXRoLm1heChndChiKSxndChTKSk7eD0xMCoqKGsocyk/VDpzKSxTPU1hdGgucm91bmQoUyp4KS94LEM9TWF0aC5yb3VuZChDKngpL3g7bGV0IEU9MDtmb3IoZyYmKGQmJlMhPT1hPyhuLnB1c2goe3ZhbHVlOmF9KSxTPGEmJkUrKyxzdChNYXRoLnJvdW5kKChTK0UqYikqeCkveCxhLFpzKGEseSxlKSkmJkUrKyk6UzxhJiZFKyspO0U8dzsrK0Upe2xldCBlPU1hdGgucm91bmQoKFMrRSpiKSp4KS94O2lmKF8mJmU+bylicmVhaztuLnB1c2goe3ZhbHVlOmV9KX1yZXR1cm4gXyYmZCYmQyE9PW8/bi5sZW5ndGgmJnN0KG5bbi5sZW5ndGgtMV0udmFsdWUsbyxacyhvLHksZSkpP25bbi5sZW5ndGgtMV0udmFsdWU9bzpuLnB1c2goe3ZhbHVlOm99KTooIV98fEM9PT1vKSYmbi5wdXNoKHt2YWx1ZTpDfSksbn1mdW5jdGlvbiBacyhlLHQse2hvcml6b250YWw6bixtaW5Sb3RhdGlvbjpyfSl7bGV0IGk9bXQociksYT0obj9NYXRoLnNpbihpKTpNYXRoLmNvcyhpKSl8fC4wMDEsbz0uNzUqdCooYGArZSkubGVuZ3RoO3JldHVybiBNYXRoLm1pbih0L2Esbyl9dmFyIFFzPWNsYXNzIGV4dGVuZHMgTGF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5zdGFydD12b2lkIDAsdGhpcy5lbmQ9dm9pZCAwLHRoaXMuX3N0YXJ0VmFsdWU9dm9pZCAwLHRoaXMuX2VuZFZhbHVlPXZvaWQgMCx0aGlzLl92YWx1ZVJhbmdlPTB9cGFyc2UoZSx0KXtyZXR1cm4gayhlKXx8KHR5cGVvZiBlPT1gbnVtYmVyYHx8ZSBpbnN0YW5jZW9mIE51bWJlcikmJiFpc0Zpbml0ZSgrZSk/bnVsbDorZX1oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl7bGV0e2JlZ2luQXRaZXJvOmV9PXRoaXMub3B0aW9ucyx7bWluRGVmaW5lZDp0LG1heERlZmluZWQ6bn09dGhpcy5nZXRVc2VyQm91bmRzKCkse21pbjpyLG1heDppfT10aGlzLGE9ZT0+cj10P3I6ZSxvPWU9Pmk9bj9pOmU7aWYoZSl7bGV0IGU9b3QociksdD1vdChpKTtlPDAmJnQ8MD9vKDApOmU+MCYmdD4wJiZhKDApfWlmKHI9PT1pKXtsZXQgdD1pPT09MD8xOk1hdGguYWJzKGkqLjA1KTtvKGkrdCksZXx8YShyLXQpfXRoaXMubWluPXIsdGhpcy5tYXg9aX1nZXRUaWNrTGltaXQoKXtsZXR7bWF4VGlja3NMaW1pdDplLHN0ZXBTaXplOnR9PXRoaXMub3B0aW9ucy50aWNrcyxuO3JldHVybiB0PyhuPU1hdGguY2VpbCh0aGlzLm1heC90KS1NYXRoLmZsb29yKHRoaXMubWluL3QpKzEsbj4xZTMmJihjb25zb2xlLndhcm4oYHNjYWxlcy4ke3RoaXMuaWR9LnRpY2tzLnN0ZXBTaXplOiAke3R9IHdvdWxkIHJlc3VsdCBnZW5lcmF0aW5nIHVwIHRvICR7bn0gdGlja3MuIExpbWl0aW5nIHRvIDEwMDAuYCksbj0xZTMpKToobj10aGlzLmNvbXB1dGVUaWNrTGltaXQoKSxlfHw9MTEpLGUmJihuPU1hdGgubWluKGUsbikpLG59Y29tcHV0ZVRpY2tMaW1pdCgpe3JldHVybiAxLzB9YnVpbGRUaWNrcygpe2xldCBlPXRoaXMub3B0aW9ucyx0PWUudGlja3Msbj10aGlzLmdldFRpY2tMaW1pdCgpO249TWF0aC5tYXgoMixuKTtsZXQgcj1Ycyh7bWF4VGlja3M6bixib3VuZHM6ZS5ib3VuZHMsbWluOmUubWluLG1heDplLm1heCxwcmVjaXNpb246dC5wcmVjaXNpb24sc3RlcDp0LnN0ZXBTaXplLGNvdW50OnQuY291bnQsbWF4RGlnaXRzOnRoaXMuX21heERpZ2l0cygpLGhvcml6b250YWw6dGhpcy5pc0hvcml6b250YWwoKSxtaW5Sb3RhdGlvbjp0Lm1pblJvdGF0aW9ufHwwLGluY2x1ZGVCb3VuZHM6dC5pbmNsdWRlQm91bmRzIT09ITF9LHRoaXMuX3JhbmdlfHx0aGlzKTtyZXR1cm4gZS5ib3VuZHM9PT1gdGlja3NgJiZwdChyLHRoaXMsYHZhbHVlYCksZS5yZXZlcnNlPyhyLnJldmVyc2UoKSx0aGlzLnN0YXJ0PXRoaXMubWF4LHRoaXMuZW5kPXRoaXMubWluKToodGhpcy5zdGFydD10aGlzLm1pbix0aGlzLmVuZD10aGlzLm1heCkscn1jb25maWd1cmUoKXtsZXQgZT10aGlzLnRpY2tzLHQ9dGhpcy5taW4sbj10aGlzLm1heDtpZihzdXBlci5jb25maWd1cmUoKSx0aGlzLm9wdGlvbnMub2Zmc2V0JiZlLmxlbmd0aCl7bGV0IHI9KG4tdCkvTWF0aC5tYXgoZS5sZW5ndGgtMSwxKS8yO3QtPXIsbis9cn10aGlzLl9zdGFydFZhbHVlPXQsdGhpcy5fZW5kVmFsdWU9bix0aGlzLl92YWx1ZVJhbmdlPW4tdH1nZXRMYWJlbEZvclZhbHVlKGUpe3JldHVybiBadChlLHRoaXMuY2hhcnQub3B0aW9ucy5sb2NhbGUsdGhpcy5vcHRpb25zLnRpY2tzLmZvcm1hdCl9fSwkcz1jbGFzcyBleHRlbmRzIFFze3N0YXRpYyBpZD1gbGluZWFyYDtzdGF0aWMgZGVmYXVsdHM9e3RpY2tzOntjYWxsYmFjazplbi5mb3JtYXR0ZXJzLm51bWVyaWN9fTtkZXRlcm1pbmVEYXRhTGltaXRzKCl7bGV0e21pbjplLG1heDp0fT10aGlzLmdldE1pbk1heCghMCk7dGhpcy5taW49TShlKT9lOjAsdGhpcy5tYXg9TSh0KT90OjEsdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9Y29tcHV0ZVRpY2tMaW1pdCgpe2xldCBlPXRoaXMuaXNIb3Jpem9udGFsKCksdD1lP3RoaXMud2lkdGg6dGhpcy5oZWlnaHQsbj1tdCh0aGlzLm9wdGlvbnMudGlja3MubWluUm90YXRpb24pLHI9KGU/TWF0aC5zaW4obik6TWF0aC5jb3MobikpfHwuMDAxLGk9dGhpcy5fcmVzb2x2ZVRpY2tGb250T3B0aW9ucygwKTtyZXR1cm4gTWF0aC5jZWlsKHQvTWF0aC5taW4oNDAsaS5saW5lSGVpZ2h0L3IpKX1nZXRQaXhlbEZvclZhbHVlKGUpe3JldHVybiBlPT09bnVsbD9OYU46dGhpcy5nZXRQaXhlbEZvckRlY2ltYWwoKGUtdGhpcy5fc3RhcnRWYWx1ZSkvdGhpcy5fdmFsdWVSYW5nZSl9Z2V0VmFsdWVGb3JQaXhlbChlKXtyZXR1cm4gdGhpcy5fc3RhcnRWYWx1ZSt0aGlzLmdldERlY2ltYWxGb3JQaXhlbChlKSp0aGlzLl92YWx1ZVJhbmdlfX0sZWM9ZT0+TWF0aC5mbG9vcihCKGUpKSx0Yz0oZSx0KT0+MTAqKihlYyhlKSt0KTtmdW5jdGlvbiBuYyhlKXtyZXR1cm4gZS8xMCoqZWMoZSk9PTF9ZnVuY3Rpb24gcmMoZSx0LG4pe2xldCByPTEwKipuLGk9TWF0aC5mbG9vcihlL3IpO3JldHVybiBNYXRoLmNlaWwodC9yKS1pfWZ1bmN0aW9uIGljKGUsdCl7bGV0IG49ZWModC1lKTtmb3IoO3JjKGUsdCxuKT4xMDspbisrO2Zvcig7cmMoZSx0LG4pPDEwOyluLS07cmV0dXJuIE1hdGgubWluKG4sZWMoZSkpfWZ1bmN0aW9uIGFjKGUse21pbjp0LG1heDpufSl7dD1OKGUubWluLHQpO2xldCByPVtdLGk9ZWModCksYT1pYyh0LG4pLG89YTwwPzEwKipNYXRoLmFicyhhKToxLHM9MTAqKmEsYz1pPmE/MTAqKmk6MCxsPU1hdGgucm91bmQoKHQtYykqbykvbyx1PU1hdGguZmxvb3IoKHQtYykvcy8xMCkqcyoxMCxkPU1hdGguZmxvb3IoKGwtdSkvMTAqKmEpLGY9TihlLm1pbixNYXRoLnJvdW5kKChjK3UrZCoxMCoqYSkqbykvbyk7Zm9yKDtmPG47KXIucHVzaCh7dmFsdWU6ZixtYWpvcjpuYyhmKSxzaWduaWZpY2FuZDpkfSksZD49MTA/ZD1kPDE1PzE1OjIwOmQrKyxkPj0yMCYmKGErKyxkPTIsbz1hPj0wPzE6byksZj1NYXRoLnJvdW5kKChjK3UrZCoxMCoqYSkqbykvbztsZXQgcD1OKGUubWF4LGYpO3JldHVybiByLnB1c2goe3ZhbHVlOnAsbWFqb3I6bmMocCksc2lnbmlmaWNhbmQ6ZH0pLHJ9KGNsYXNzIGV4dGVuZHMgTGF7c3RhdGljIGlkPWBsb2dhcml0aG1pY2A7c3RhdGljIGRlZmF1bHRzPXt0aWNrczp7Y2FsbGJhY2s6ZW4uZm9ybWF0dGVycy5sb2dhcml0aG1pYyxtYWpvcjp7ZW5hYmxlZDohMH19fTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnN0YXJ0PXZvaWQgMCx0aGlzLmVuZD12b2lkIDAsdGhpcy5fc3RhcnRWYWx1ZT12b2lkIDAsdGhpcy5fdmFsdWVSYW5nZT0wfXBhcnNlKGUsdCl7bGV0IG49UXMucHJvdG90eXBlLnBhcnNlLmFwcGx5KHRoaXMsW2UsdF0pO2lmKG49PT0wKXt0aGlzLl96ZXJvPSEwO3JldHVybn1yZXR1cm4gTShuKSYmbj4wP246bnVsbH1kZXRlcm1pbmVEYXRhTGltaXRzKCl7bGV0e21pbjplLG1heDp0fT10aGlzLmdldE1pbk1heCghMCk7dGhpcy5taW49TShlKT9NYXRoLm1heCgwLGUpOm51bGwsdGhpcy5tYXg9TSh0KT9NYXRoLm1heCgwLHQpOm51bGwsdGhpcy5vcHRpb25zLmJlZ2luQXRaZXJvJiYodGhpcy5femVybz0hMCksdGhpcy5femVybyYmdGhpcy5taW4hPT10aGlzLl9zdWdnZXN0ZWRNaW4mJiFNKHRoaXMuX3VzZXJNaW4pJiYodGhpcy5taW49ZT09PXRjKHRoaXMubWluLDApP3RjKHRoaXMubWluLC0xKTp0Yyh0aGlzLm1pbiwwKSksdGhpcy5oYW5kbGVUaWNrUmFuZ2VPcHRpb25zKCl9aGFuZGxlVGlja1JhbmdlT3B0aW9ucygpe2xldHttaW5EZWZpbmVkOmUsbWF4RGVmaW5lZDp0fT10aGlzLmdldFVzZXJCb3VuZHMoKSxuPXRoaXMubWluLHI9dGhpcy5tYXgsaT10PT5uPWU/bjp0LGE9ZT0+cj10P3I6ZTtuPT09ciYmKG48PTA/KGkoMSksYSgxMCkpOihpKHRjKG4sLTEpKSxhKHRjKHIsMSkpKSksbjw9MCYmaSh0YyhyLC0xKSkscjw9MCYmYSh0YyhuLDEpKSx0aGlzLm1pbj1uLHRoaXMubWF4PXJ9YnVpbGRUaWNrcygpe2xldCBlPXRoaXMub3B0aW9ucyx0PWFjKHttaW46dGhpcy5fdXNlck1pbixtYXg6dGhpcy5fdXNlck1heH0sdGhpcyk7cmV0dXJuIGUuYm91bmRzPT09YHRpY2tzYCYmcHQodCx0aGlzLGB2YWx1ZWApLGUucmV2ZXJzZT8odC5yZXZlcnNlKCksdGhpcy5zdGFydD10aGlzLm1heCx0aGlzLmVuZD10aGlzLm1pbik6KHRoaXMuc3RhcnQ9dGhpcy5taW4sdGhpcy5lbmQ9dGhpcy5tYXgpLHR9Z2V0TGFiZWxGb3JWYWx1ZShlKXtyZXR1cm4gZT09PXZvaWQgMD9gMGA6WnQoZSx0aGlzLmNoYXJ0Lm9wdGlvbnMubG9jYWxlLHRoaXMub3B0aW9ucy50aWNrcy5mb3JtYXQpfWNvbmZpZ3VyZSgpe2xldCBlPXRoaXMubWluO3N1cGVyLmNvbmZpZ3VyZSgpLHRoaXMuX3N0YXJ0VmFsdWU9QihlKSx0aGlzLl92YWx1ZVJhbmdlPUIodGhpcy5tYXgpLUIoZSl9Z2V0UGl4ZWxGb3JWYWx1ZShlKXtyZXR1cm4oZT09PXZvaWQgMHx8ZT09PTApJiYoZT10aGlzLm1pbiksZT09PW51bGx8fGlzTmFOKGUpP05hTjp0aGlzLmdldFBpeGVsRm9yRGVjaW1hbChlPT09dGhpcy5taW4/MDooQihlKS10aGlzLl9zdGFydFZhbHVlKS90aGlzLl92YWx1ZVJhbmdlKX1nZXRWYWx1ZUZvclBpeGVsKGUpe2xldCB0PXRoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKGUpO3JldHVybiAxMCoqKHRoaXMuX3N0YXJ0VmFsdWUrdCp0aGlzLl92YWx1ZVJhbmdlKX19KTtmdW5jdGlvbiBvYyhlKXtsZXQgdD1lLnRpY2tzO2lmKHQuZGlzcGxheSYmZS5kaXNwbGF5KXtsZXQgZT1LKHQuYmFja2Ryb3BQYWRkaW5nKTtyZXR1cm4gUCh0LmZvbnQmJnQuZm9udC5zaXplLFcuZm9udC5zaXplKStlLmhlaWdodH1yZXR1cm4gMH1mdW5jdGlvbiBzYyhlLHQsbil7cmV0dXJuIG49QShuKT9uOltuXSx7dzpsbihlLHQuc3RyaW5nLG4pLGg6bi5sZW5ndGgqdC5saW5lSGVpZ2h0fX1mdW5jdGlvbiBjYyhlLHQsbixyLGkpe3JldHVybiBlPT09cnx8ZT09PWk/e3N0YXJ0OnQtbi8yLGVuZDp0K24vMn06ZTxyfHxlPmk/e3N0YXJ0OnQtbixlbmQ6dH06e3N0YXJ0OnQsZW5kOnQrbn19ZnVuY3Rpb24gbGMoZSl7bGV0IHQ9e2w6ZS5sZWZ0K2UuX3BhZGRpbmcubGVmdCxyOmUucmlnaHQtZS5fcGFkZGluZy5yaWdodCx0OmUudG9wK2UuX3BhZGRpbmcudG9wLGI6ZS5ib3R0b20tZS5fcGFkZGluZy5ib3R0b219LG49T2JqZWN0LmFzc2lnbih7fSx0KSxyPVtdLGk9W10sYT1lLl9wb2ludExhYmVscy5sZW5ndGgsbz1lLm9wdGlvbnMucG9pbnRMYWJlbHMscz1vLmNlbnRlclBvaW50TGFiZWxzP0wvYTowO2ZvcihsZXQgYz0wO2M8YTtjKyspe2xldCBhPW8uc2V0Q29udGV4dChlLmdldFBvaW50TGFiZWxDb250ZXh0KGMpKTtpW2NdPWEucGFkZGluZztsZXQgbD1lLmdldFBvaW50UG9zaXRpb24oYyxlLmRyYXdpbmdBcmVhK2lbY10scyksdT1xKGEuZm9udCksZD1zYyhlLmN0eCx1LGUuX3BvaW50TGFiZWxzW2NdKTtyW2NdPWQ7bGV0IGY9VihlLmdldEluZGV4QW5nbGUoYykrcykscD1NYXRoLnJvdW5kKGh0KGYpKTt1YyhuLHQsZixjYyhwLGwueCxkLncsMCwxODApLGNjKHAsbC55LGQuaCw5MCwyNzApKX1lLnNldENlbnRlclBvaW50KHQubC1uLmwsbi5yLXQucix0LnQtbi50LG4uYi10LmIpLGUuX3BvaW50TGFiZWxJdGVtcz1wYyhlLHIsaSl9ZnVuY3Rpb24gdWMoZSx0LG4scixpKXtsZXQgYT1NYXRoLmFicyhNYXRoLnNpbihuKSksbz1NYXRoLmFicyhNYXRoLmNvcyhuKSkscz0wLGM9MDtyLnN0YXJ0PHQubD8ocz0odC5sLXIuc3RhcnQpL2EsZS5sPU1hdGgubWluKGUubCx0LmwtcykpOnIuZW5kPnQuciYmKHM9KHIuZW5kLXQucikvYSxlLnI9TWF0aC5tYXgoZS5yLHQucitzKSksaS5zdGFydDx0LnQ/KGM9KHQudC1pLnN0YXJ0KS9vLGUudD1NYXRoLm1pbihlLnQsdC50LWMpKTppLmVuZD50LmImJihjPShpLmVuZC10LmIpL28sZS5iPU1hdGgubWF4KGUuYix0LmIrYykpfWZ1bmN0aW9uIGRjKGUsdCxuKXtsZXQgcj1lLmRyYXdpbmdBcmVhLHtleHRyYTppLGFkZGl0aW9uYWxBbmdsZTphLHBhZGRpbmc6byxzaXplOnN9PW4sYz1lLmdldFBvaW50UG9zaXRpb24odCxyK2krbyxhKSxsPU1hdGgucm91bmQoaHQoVihjLmFuZ2xlK3opKSksdT1nYyhjLnkscy5oLGwpLGQ9bWMobCksZj1oYyhjLngscy53LGQpO3JldHVybnt2aXNpYmxlOiEwLHg6Yy54LHk6dSx0ZXh0QWxpZ246ZCxsZWZ0OmYsdG9wOnUscmlnaHQ6ZitzLncsYm90dG9tOnUrcy5ofX1mdW5jdGlvbiBmYyhlLHQpe2lmKCF0KXJldHVybiEwO2xldHtsZWZ0Om4sdG9wOnIscmlnaHQ6aSxib3R0b206YX09ZTtyZXR1cm4hKEcoe3g6bix5OnJ9LHQpfHxHKHt4Om4seTphfSx0KXx8Ryh7eDppLHk6cn0sdCl8fEcoe3g6aSx5OmF9LHQpKX1mdW5jdGlvbiBwYyhlLHQsbil7bGV0IHI9W10saT1lLl9wb2ludExhYmVscy5sZW5ndGgsYT1lLm9wdGlvbnMse2NlbnRlclBvaW50TGFiZWxzOm8sZGlzcGxheTpzfT1hLnBvaW50TGFiZWxzLGM9e2V4dHJhOm9jKGEpLzIsYWRkaXRpb25hbEFuZ2xlOm8/TC9pOjB9LGw7Zm9yKGxldCBhPTA7YTxpO2ErKyl7Yy5wYWRkaW5nPW5bYV0sYy5zaXplPXRbYV07bGV0IGk9ZGMoZSxhLGMpO3IucHVzaChpKSxzPT09YGF1dG9gJiYoaS52aXNpYmxlPWZjKGksbCksaS52aXNpYmxlJiYobD1pKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gbWMoZSl7cmV0dXJuIGU9PT0wfHxlPT09MTgwP2BjZW50ZXJgOmU8MTgwP2BsZWZ0YDpgcmlnaHRgfWZ1bmN0aW9uIGhjKGUsdCxuKXtyZXR1cm4gbj09PWByaWdodGA/ZS09dDpuPT09YGNlbnRlcmAmJihlLT10LzIpLGV9ZnVuY3Rpb24gZ2MoZSx0LG4pe3JldHVybiBuPT09OTB8fG49PT0yNzA/ZS09dC8yOihuPjI3MHx8bjw5MCkmJihlLT10KSxlfWZ1bmN0aW9uIF9jKGUsdCxuKXtsZXR7bGVmdDpyLHRvcDppLHJpZ2h0OmEsYm90dG9tOm99PW4se2JhY2tkcm9wQ29sb3I6c309dDtpZighayhzKSl7bGV0IG49a24odC5ib3JkZXJSYWRpdXMpLGM9Syh0LmJhY2tkcm9wUGFkZGluZyk7ZS5maWxsU3R5bGU9cztsZXQgbD1yLWMubGVmdCx1PWktYy50b3AsZD1hLXIrYy53aWR0aCxmPW8taStjLmhlaWdodDtPYmplY3QudmFsdWVzKG4pLnNvbWUoZT0+ZSE9PTApPyhlLmJlZ2luUGF0aCgpLFNuKGUse3g6bCx5OnUsdzpkLGg6ZixyYWRpdXM6bn0pLGUuZmlsbCgpKTplLmZpbGxSZWN0KGwsdSxkLGYpfX1mdW5jdGlvbiB2YyhlLHQpe2xldHtjdHg6bixvcHRpb25zOntwb2ludExhYmVsczpyfX09ZTtmb3IobGV0IGk9dC0xO2k+PTA7aS0tKXtsZXQgdD1lLl9wb2ludExhYmVsSXRlbXNbaV07aWYoIXQudmlzaWJsZSljb250aW51ZTtsZXQgYT1yLnNldENvbnRleHQoZS5nZXRQb2ludExhYmVsQ29udGV4dChpKSk7X2MobixhLHQpO2xldCBvPXEoYS5mb250KSx7eDpzLHk6Yyx0ZXh0QWxpZ246bH09dDt4bihuLGUuX3BvaW50TGFiZWxzW2ldLHMsYytvLmxpbmVIZWlnaHQvMixvLHtjb2xvcjphLmNvbG9yLHRleHRBbGlnbjpsLHRleHRCYXNlbGluZTpgbWlkZGxlYH0pfX1mdW5jdGlvbiB5YyhlLHQsbixyKXtsZXR7Y3R4Oml9PWU7aWYobilpLmFyYyhlLnhDZW50ZXIsZS55Q2VudGVyLHQsMCxSKTtlbHNle2xldCBuPWUuZ2V0UG9pbnRQb3NpdGlvbigwLHQpO2kubW92ZVRvKG4ueCxuLnkpO2ZvcihsZXQgYT0xO2E8cjthKyspbj1lLmdldFBvaW50UG9zaXRpb24oYSx0KSxpLmxpbmVUbyhuLngsbi55KX19ZnVuY3Rpb24gYmMoZSx0LG4scixpKXtsZXQgYT1lLmN0eCxvPXQuY2lyY3VsYXIse2NvbG9yOnMsbGluZVdpZHRoOmN9PXQ7IW8mJiFyfHwhc3x8IWN8fG48MHx8KGEuc2F2ZSgpLGEuc3Ryb2tlU3R5bGU9cyxhLmxpbmVXaWR0aD1jLGEuc2V0TGluZURhc2goaS5kYXNofHxbXSksYS5saW5lRGFzaE9mZnNldD1pLmRhc2hPZmZzZXQsYS5iZWdpblBhdGgoKSx5YyhlLG4sbyxyKSxhLmNsb3NlUGF0aCgpLGEuc3Ryb2tlKCksYS5yZXN0b3JlKCkpfWZ1bmN0aW9uIHhjKGUsdCxuKXtyZXR1cm4gTW4oZSx7bGFiZWw6bixpbmRleDp0LHR5cGU6YHBvaW50TGFiZWxgfSl9KGNsYXNzIGV4dGVuZHMgUXN7c3RhdGljIGlkPWByYWRpYWxMaW5lYXJgO3N0YXRpYyBkZWZhdWx0cz17ZGlzcGxheTohMCxhbmltYXRlOiEwLHBvc2l0aW9uOmBjaGFydEFyZWFgLGFuZ2xlTGluZXM6e2Rpc3BsYXk6ITAsbGluZVdpZHRoOjEsYm9yZGVyRGFzaDpbXSxib3JkZXJEYXNoT2Zmc2V0OjB9LGdyaWQ6e2NpcmN1bGFyOiExfSxzdGFydEFuZ2xlOjAsdGlja3M6e3Nob3dMYWJlbEJhY2tkcm9wOiEwLGNhbGxiYWNrOmVuLmZvcm1hdHRlcnMubnVtZXJpY30scG9pbnRMYWJlbHM6e2JhY2tkcm9wQ29sb3I6dm9pZCAwLGJhY2tkcm9wUGFkZGluZzoyLGRpc3BsYXk6ITAsZm9udDp7c2l6ZToxMH0sY2FsbGJhY2soZSl7cmV0dXJuIGV9LHBhZGRpbmc6NSxjZW50ZXJQb2ludExhYmVsczohMX19O3N0YXRpYyBkZWZhdWx0Um91dGVzPXsiYW5nbGVMaW5lcy5jb2xvciI6YGJvcmRlckNvbG9yYCwicG9pbnRMYWJlbHMuY29sb3IiOmBjb2xvcmAsInRpY2tzLmNvbG9yIjpgY29sb3JgfTtzdGF0aWMgZGVzY3JpcHRvcnM9e2FuZ2xlTGluZXM6e19mYWxsYmFjazpgZ3JpZGB9fTtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnhDZW50ZXI9dm9pZCAwLHRoaXMueUNlbnRlcj12b2lkIDAsdGhpcy5kcmF3aW5nQXJlYT12b2lkIDAsdGhpcy5fcG9pbnRMYWJlbHM9W10sdGhpcy5fcG9pbnRMYWJlbEl0ZW1zPVtdfXNldERpbWVuc2lvbnMoKXtsZXQgZT10aGlzLl9wYWRkaW5nPUsob2ModGhpcy5vcHRpb25zKS8yKSx0PXRoaXMud2lkdGg9dGhpcy5tYXhXaWR0aC1lLndpZHRoLG49dGhpcy5oZWlnaHQ9dGhpcy5tYXhIZWlnaHQtZS5oZWlnaHQ7dGhpcy54Q2VudGVyPU1hdGguZmxvb3IodGhpcy5sZWZ0K3QvMitlLmxlZnQpLHRoaXMueUNlbnRlcj1NYXRoLmZsb29yKHRoaXMudG9wK24vMitlLnRvcCksdGhpcy5kcmF3aW5nQXJlYT1NYXRoLmZsb29yKE1hdGgubWluKHQsbikvMil9ZGV0ZXJtaW5lRGF0YUxpbWl0cygpe2xldHttaW46ZSxtYXg6dH09dGhpcy5nZXRNaW5NYXgoITEpO3RoaXMubWluPU0oZSkmJiFpc05hTihlKT9lOjAsdGhpcy5tYXg9TSh0KSYmIWlzTmFOKHQpP3Q6MCx0aGlzLmhhbmRsZVRpY2tSYW5nZU9wdGlvbnMoKX1jb21wdXRlVGlja0xpbWl0KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLmRyYXdpbmdBcmVhL29jKHRoaXMub3B0aW9ucykpfWdlbmVyYXRlVGlja0xhYmVscyhlKXtRcy5wcm90b3R5cGUuZ2VuZXJhdGVUaWNrTGFiZWxzLmNhbGwodGhpcyxlKSx0aGlzLl9wb2ludExhYmVscz10aGlzLmdldExhYmVscygpLm1hcCgoZSx0KT0+e2xldCBuPUYodGhpcy5vcHRpb25zLnBvaW50TGFiZWxzLmNhbGxiYWNrLFtlLHRdLHRoaXMpO3JldHVybiBufHxuPT09MD9uOmBgfSkuZmlsdGVyKChlLHQpPT50aGlzLmNoYXJ0LmdldERhdGFWaXNpYmlsaXR5KHQpKX1maXQoKXtsZXQgZT10aGlzLm9wdGlvbnM7ZS5kaXNwbGF5JiZlLnBvaW50TGFiZWxzLmRpc3BsYXk/bGModGhpcyk6dGhpcy5zZXRDZW50ZXJQb2ludCgwLDAsMCwwKX1zZXRDZW50ZXJQb2ludChlLHQsbixyKXt0aGlzLnhDZW50ZXIrPU1hdGguZmxvb3IoKGUtdCkvMiksdGhpcy55Q2VudGVyKz1NYXRoLmZsb29yKChuLXIpLzIpLHRoaXMuZHJhd2luZ0FyZWEtPU1hdGgubWluKHRoaXMuZHJhd2luZ0FyZWEvMixNYXRoLm1heChlLHQsbixyKSl9Z2V0SW5kZXhBbmdsZShlKXtsZXQgdD1SLyh0aGlzLl9wb2ludExhYmVscy5sZW5ndGh8fDEpLG49dGhpcy5vcHRpb25zLnN0YXJ0QW5nbGV8fDA7cmV0dXJuIFYoZSp0K210KG4pKX1nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZShlKXtpZihrKGUpKXJldHVybiBOYU47bGV0IHQ9dGhpcy5kcmF3aW5nQXJlYS8odGhpcy5tYXgtdGhpcy5taW4pO3JldHVybiB0aGlzLm9wdGlvbnMucmV2ZXJzZT8odGhpcy5tYXgtZSkqdDooZS10aGlzLm1pbikqdH1nZXRWYWx1ZUZvckRpc3RhbmNlRnJvbUNlbnRlcihlKXtpZihrKGUpKXJldHVybiBOYU47bGV0IHQ9ZS8odGhpcy5kcmF3aW5nQXJlYS8odGhpcy5tYXgtdGhpcy5taW4pKTtyZXR1cm4gdGhpcy5vcHRpb25zLnJldmVyc2U/dGhpcy5tYXgtdDp0aGlzLm1pbit0fWdldFBvaW50TGFiZWxDb250ZXh0KGUpe2xldCB0PXRoaXMuX3BvaW50TGFiZWxzfHxbXTtpZihlPj0wJiZlPHQubGVuZ3RoKXtsZXQgbj10W2VdO3JldHVybiB4Yyh0aGlzLmdldENvbnRleHQoKSxlLG4pfX1nZXRQb2ludFBvc2l0aW9uKGUsdCxuPTApe2xldCByPXRoaXMuZ2V0SW5kZXhBbmdsZShlKS16K247cmV0dXJue3g6TWF0aC5jb3MocikqdCt0aGlzLnhDZW50ZXIseTpNYXRoLnNpbihyKSp0K3RoaXMueUNlbnRlcixhbmdsZTpyfX1nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoZSx0KXtyZXR1cm4gdGhpcy5nZXRQb2ludFBvc2l0aW9uKGUsdGhpcy5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0KSl9Z2V0QmFzZVBvc2l0aW9uKGUpe3JldHVybiB0aGlzLmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZShlfHwwLHRoaXMuZ2V0QmFzZVZhbHVlKCkpfWdldFBvaW50TGFiZWxQb3NpdGlvbihlKXtsZXR7bGVmdDp0LHRvcDpuLHJpZ2h0OnIsYm90dG9tOml9PXRoaXMuX3BvaW50TGFiZWxJdGVtc1tlXTtyZXR1cm57bGVmdDp0LHRvcDpuLHJpZ2h0OnIsYm90dG9tOml9fWRyYXdCYWNrZ3JvdW5kKCl7bGV0e2JhY2tncm91bmRDb2xvcjplLGdyaWQ6e2NpcmN1bGFyOnR9fT10aGlzLm9wdGlvbnM7aWYoZSl7bGV0IG49dGhpcy5jdHg7bi5zYXZlKCksbi5iZWdpblBhdGgoKSx5Yyh0aGlzLHRoaXMuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUodGhpcy5fZW5kVmFsdWUpLHQsdGhpcy5fcG9pbnRMYWJlbHMubGVuZ3RoKSxuLmNsb3NlUGF0aCgpLG4uZmlsbFN0eWxlPWUsbi5maWxsKCksbi5yZXN0b3JlKCl9fWRyYXdHcmlkKCl7bGV0IGU9dGhpcy5jdHgsdD10aGlzLm9wdGlvbnMse2FuZ2xlTGluZXM6bixncmlkOnIsYm9yZGVyOml9PXQsYT10aGlzLl9wb2ludExhYmVscy5sZW5ndGgsbyxzLGM7aWYodC5wb2ludExhYmVscy5kaXNwbGF5JiZ2Yyh0aGlzLGEpLHIuZGlzcGxheSYmdGhpcy50aWNrcy5mb3JFYWNoKChlLHQpPT57aWYodCE9PTB8fHQ9PT0wJiZ0aGlzLm1pbjwwKXtzPXRoaXMuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoZS52YWx1ZSk7bGV0IG49dGhpcy5nZXRDb250ZXh0KHQpLG89ci5zZXRDb250ZXh0KG4pLGM9aS5zZXRDb250ZXh0KG4pO2JjKHRoaXMsbyxzLGEsYyl9fSksbi5kaXNwbGF5KXtmb3IoZS5zYXZlKCksbz1hLTE7bz49MDtvLS0pe2xldCByPW4uc2V0Q29udGV4dCh0aGlzLmdldFBvaW50TGFiZWxDb250ZXh0KG8pKSx7Y29sb3I6aSxsaW5lV2lkdGg6YX09cjshYXx8IWl8fChlLmxpbmVXaWR0aD1hLGUuc3Ryb2tlU3R5bGU9aSxlLnNldExpbmVEYXNoKHIuYm9yZGVyRGFzaCksZS5saW5lRGFzaE9mZnNldD1yLmJvcmRlckRhc2hPZmZzZXQscz10aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKHQucmV2ZXJzZT90aGlzLm1pbjp0aGlzLm1heCksYz10aGlzLmdldFBvaW50UG9zaXRpb24obyxzKSxlLmJlZ2luUGF0aCgpLGUubW92ZVRvKHRoaXMueENlbnRlcix0aGlzLnlDZW50ZXIpLGUubGluZVRvKGMueCxjLnkpLGUuc3Ryb2tlKCkpfWUucmVzdG9yZSgpfX1kcmF3Qm9yZGVyKCl7fWRyYXdMYWJlbHMoKXtsZXQgZT10aGlzLmN0eCx0PXRoaXMub3B0aW9ucyxuPXQudGlja3M7aWYoIW4uZGlzcGxheSlyZXR1cm47bGV0IHI9dGhpcy5nZXRJbmRleEFuZ2xlKDApLGksYTtlLnNhdmUoKSxlLnRyYW5zbGF0ZSh0aGlzLnhDZW50ZXIsdGhpcy55Q2VudGVyKSxlLnJvdGF0ZShyKSxlLnRleHRBbGlnbj1gY2VudGVyYCxlLnRleHRCYXNlbGluZT1gbWlkZGxlYCx0aGlzLnRpY2tzLmZvckVhY2goKHIsbyk9PntpZihvPT09MCYmdGhpcy5taW4+PTAmJiF0LnJldmVyc2UpcmV0dXJuO2xldCBzPW4uc2V0Q29udGV4dCh0aGlzLmdldENvbnRleHQobykpLGM9cShzLmZvbnQpO2lmKGk9dGhpcy5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0aGlzLnRpY2tzW29dLnZhbHVlKSxzLnNob3dMYWJlbEJhY2tkcm9wKXtlLmZvbnQ9Yy5zdHJpbmcsYT1lLm1lYXN1cmVUZXh0KHIubGFiZWwpLndpZHRoLGUuZmlsbFN0eWxlPXMuYmFja2Ryb3BDb2xvcjtsZXQgdD1LKHMuYmFja2Ryb3BQYWRkaW5nKTtlLmZpbGxSZWN0KC1hLzItdC5sZWZ0LC1pLWMuc2l6ZS8yLXQudG9wLGErdC53aWR0aCxjLnNpemUrdC5oZWlnaHQpfXhuKGUsci5sYWJlbCwwLC1pLGMse2NvbG9yOnMuY29sb3Isc3Ryb2tlQ29sb3I6cy50ZXh0U3Ryb2tlQ29sb3Isc3Ryb2tlV2lkdGg6cy50ZXh0U3Ryb2tlV2lkdGh9KX0pLGUucmVzdG9yZSgpfWRyYXdUaXRsZSgpe319KTt2YXIgU2M9e21pbGxpc2Vjb25kOntjb21tb246ITAsc2l6ZToxLHN0ZXBzOjFlM30sc2Vjb25kOntjb21tb246ITAsc2l6ZToxZTMsc3RlcHM6NjB9LG1pbnV0ZTp7Y29tbW9uOiEwLHNpemU6NmU0LHN0ZXBzOjYwfSxob3VyOntjb21tb246ITAsc2l6ZTozNmU1LHN0ZXBzOjI0fSxkYXk6e2NvbW1vbjohMCxzaXplOjg2NGU1LHN0ZXBzOjMwfSx3ZWVrOntjb21tb246ITEsc2l6ZTo2MDQ4ZTUsc3RlcHM6NH0sbW9udGg6e2NvbW1vbjohMCxzaXplOjI2MjhlNixzdGVwczoxMn0scXVhcnRlcjp7Y29tbW9uOiExLHNpemU6Nzg4NGU2LHN0ZXBzOjR9LHllYXI6e2NvbW1vbjohMCxzaXplOjMxNTRlN319LCQ9T2JqZWN0LmtleXMoU2MpO2Z1bmN0aW9uIENjKGUsdCl7cmV0dXJuIGUtdH1mdW5jdGlvbiB3YyhlLHQpe2lmKGsodCkpcmV0dXJuIG51bGw7bGV0IG49ZS5fYWRhcHRlcix7cGFyc2VyOnIscm91bmQ6aSxpc29XZWVrZGF5OmF9PWUuX3BhcnNlT3B0cyxvPXQ7cmV0dXJuIHR5cGVvZiByPT1gZnVuY3Rpb25gJiYobz1yKG8pKSxNKG8pfHwobz10eXBlb2Ygcj09YHN0cmluZ2A/bi5wYXJzZShvLHIpOm4ucGFyc2UobykpLG89PT1udWxsP251bGw6KGkmJihvPWk9PT1gd2Vla2AmJihkdChhKXx8YT09PSEwKT9uLnN0YXJ0T2YobyxgaXNvV2Vla2AsYSk6bi5zdGFydE9mKG8saSkpLCtvKX1mdW5jdGlvbiBUYyhlLHQsbixyKXtsZXQgaT0kLmxlbmd0aDtmb3IobGV0IGE9JC5pbmRleE9mKGUpO2E8aS0xOysrYSl7bGV0IGU9U2NbJFthXV0saT1lLnN0ZXBzP2Uuc3RlcHM6MioqNTMtMTtpZihlLmNvbW1vbiYmTWF0aC5jZWlsKChuLXQpLyhpKmUuc2l6ZSkpPD1yKXJldHVybiAkW2FdfXJldHVybiAkW2ktMV19ZnVuY3Rpb24gRWMoZSx0LG4scixpKXtmb3IobGV0IGE9JC5sZW5ndGgtMTthPj0kLmluZGV4T2Yobik7YS0tKXtsZXQgbj0kW2FdO2lmKFNjW25dLmNvbW1vbiYmZS5fYWRhcHRlci5kaWZmKGkscixuKT49dC0xKXJldHVybiBufXJldHVybiAkW24/JC5pbmRleE9mKG4pOjBdfWZ1bmN0aW9uIERjKGUpe2ZvcihsZXQgdD0kLmluZGV4T2YoZSkrMSxuPSQubGVuZ3RoO3Q8bjsrK3QpaWYoU2NbJFt0XV0uY29tbW9uKXJldHVybiAkW3RdfWZ1bmN0aW9uIE9jKGUsdCxuKXtpZighbillW3RdPSEwO2Vsc2UgaWYobi5sZW5ndGgpe2xldHtsbzpyLGhpOml9PUN0KG4sdCksYT1uW3JdPj10P25bcl06bltpXTtlW2FdPSEwfX1mdW5jdGlvbiBrYyhlLHQsbixyKXtsZXQgaT1lLl9hZGFwdGVyLGE9K2kuc3RhcnRPZih0WzBdLnZhbHVlLHIpLG89dFt0Lmxlbmd0aC0xXS52YWx1ZSxzLGM7Zm9yKHM9YTtzPD1vO3M9K2kuYWRkKHMsMSxyKSljPW5bc10sYz49MCYmKHRbY10ubWFqb3I9ITApO3JldHVybiB0fWZ1bmN0aW9uIEFjKGUsdCxuKXtsZXQgcj1bXSxpPXt9LGE9dC5sZW5ndGgsbyxzO2ZvcihvPTA7bzxhOysrbylzPXRbb10saVtzXT1vLHIucHVzaCh7dmFsdWU6cyxtYWpvcjohMX0pO3JldHVybiBhPT09MHx8IW4/cjprYyhlLHIsaSxuKX12YXIgamM9Y2xhc3MgZXh0ZW5kcyBMYXtzdGF0aWMgaWQ9YHRpbWVgO3N0YXRpYyBkZWZhdWx0cz17Ym91bmRzOmBkYXRhYCxhZGFwdGVyczp7fSx0aW1lOntwYXJzZXI6ITEsdW5pdDohMSxyb3VuZDohMSxpc29XZWVrZGF5OiExLG1pblVuaXQ6YG1pbGxpc2Vjb25kYCxkaXNwbGF5Rm9ybWF0czp7fX0sdGlja3M6e3NvdXJjZTpgYXV0b2AsY2FsbGJhY2s6ITEsbWFqb3I6e2VuYWJsZWQ6ITF9fX07Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5fY2FjaGU9e2RhdGE6W10sbGFiZWxzOltdLGFsbDpbXX0sdGhpcy5fdW5pdD1gZGF5YCx0aGlzLl9tYWpvclVuaXQ9dm9pZCAwLHRoaXMuX29mZnNldHM9e30sdGhpcy5fbm9ybWFsaXplZD0hMSx0aGlzLl9wYXJzZU9wdHM9dm9pZCAwfWluaXQoZSx0PXt9KXtsZXQgbj1lLnRpbWV8fD17fSxyPXRoaXMuX2FkYXB0ZXI9bmV3IHhpLl9kYXRlKGUuYWRhcHRlcnMuZGF0ZSk7ci5pbml0KHQpLFdlKG4uZGlzcGxheUZvcm1hdHMsci5mb3JtYXRzKCkpLHRoaXMuX3BhcnNlT3B0cz17cGFyc2VyOm4ucGFyc2VyLHJvdW5kOm4ucm91bmQsaXNvV2Vla2RheTpuLmlzb1dlZWtkYXl9LHN1cGVyLmluaXQoZSksdGhpcy5fbm9ybWFsaXplZD10Lm5vcm1hbGl6ZWR9cGFyc2UoZSx0KXtyZXR1cm4gZT09PXZvaWQgMD9udWxsOndjKHRoaXMsZSl9YmVmb3JlTGF5b3V0KCl7c3VwZXIuYmVmb3JlTGF5b3V0KCksdGhpcy5fY2FjaGU9e2RhdGE6W10sbGFiZWxzOltdLGFsbDpbXX19ZGV0ZXJtaW5lRGF0YUxpbWl0cygpe2xldCBlPXRoaXMub3B0aW9ucyx0PXRoaXMuX2FkYXB0ZXIsbj1lLnRpbWUudW5pdHx8YGRheWAse21pbjpyLG1heDppLG1pbkRlZmluZWQ6YSxtYXhEZWZpbmVkOm99PXRoaXMuZ2V0VXNlckJvdW5kcygpO2Z1bmN0aW9uIHMoZSl7IWEmJiFpc05hTihlLm1pbikmJihyPU1hdGgubWluKHIsZS5taW4pKSwhbyYmIWlzTmFOKGUubWF4KSYmKGk9TWF0aC5tYXgoaSxlLm1heCkpfSghYXx8IW8pJiYocyh0aGlzLl9nZXRMYWJlbEJvdW5kcygpKSwoZS5ib3VuZHMhPT1gdGlja3NgfHxlLnRpY2tzLnNvdXJjZSE9PWBsYWJlbHNgKSYmcyh0aGlzLmdldE1pbk1heCghMSkpKSxyPU0ocikmJiFpc05hTihyKT9yOit0LnN0YXJ0T2YoRGF0ZS5ub3coKSxuKSxpPU0oaSkmJiFpc05hTihpKT9pOit0LmVuZE9mKERhdGUubm93KCksbikrMSx0aGlzLm1pbj1NYXRoLm1pbihyLGktMSksdGhpcy5tYXg9TWF0aC5tYXgocisxLGkpfV9nZXRMYWJlbEJvdW5kcygpe2xldCBlPXRoaXMuZ2V0TGFiZWxUaW1lc3RhbXBzKCksdD0xLzAsbj0tMS8wO3JldHVybiBlLmxlbmd0aCYmKHQ9ZVswXSxuPWVbZS5sZW5ndGgtMV0pLHttaW46dCxtYXg6bn19YnVpbGRUaWNrcygpe2xldCBlPXRoaXMub3B0aW9ucyx0PWUudGltZSxuPWUudGlja3Mscj1uLnNvdXJjZT09PWBsYWJlbHNgP3RoaXMuZ2V0TGFiZWxUaW1lc3RhbXBzKCk6dGhpcy5fZ2VuZXJhdGUoKTtlLmJvdW5kcz09PWB0aWNrc2AmJnIubGVuZ3RoJiYodGhpcy5taW49dGhpcy5fdXNlck1pbnx8clswXSx0aGlzLm1heD10aGlzLl91c2VyTWF4fHxyW3IubGVuZ3RoLTFdKTtsZXQgaT10aGlzLm1pbixhPXRoaXMubWF4LG89RXQocixpLGEpO3JldHVybiB0aGlzLl91bml0PXQudW5pdHx8KG4uYXV0b1NraXA/VGModC5taW5Vbml0LHRoaXMubWluLHRoaXMubWF4LHRoaXMuX2dldExhYmVsQ2FwYWNpdHkoaSkpOkVjKHRoaXMsby5sZW5ndGgsdC5taW5Vbml0LHRoaXMubWluLHRoaXMubWF4KSksdGhpcy5fbWFqb3JVbml0PSFuLm1ham9yLmVuYWJsZWR8fHRoaXMuX3VuaXQ9PT1geWVhcmA/dm9pZCAwOkRjKHRoaXMuX3VuaXQpLHRoaXMuaW5pdE9mZnNldHMociksZS5yZXZlcnNlJiZvLnJldmVyc2UoKSxBYyh0aGlzLG8sdGhpcy5fbWFqb3JVbml0KX1hZnRlckF1dG9Ta2lwKCl7dGhpcy5vcHRpb25zLm9mZnNldEFmdGVyQXV0b3NraXAmJnRoaXMuaW5pdE9mZnNldHModGhpcy50aWNrcy5tYXAoZT0+K2UudmFsdWUpKX1pbml0T2Zmc2V0cyhlPVtdKXtsZXQgdD0wLG49MCxyLGk7dGhpcy5vcHRpb25zLm9mZnNldCYmZS5sZW5ndGgmJihyPXRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGVbMF0pLHQ9ZS5sZW5ndGg9PT0xPzEtcjoodGhpcy5nZXREZWNpbWFsRm9yVmFsdWUoZVsxXSktcikvMixpPXRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGVbZS5sZW5ndGgtMV0pLG49ZS5sZW5ndGg9PT0xP2k6KGktdGhpcy5nZXREZWNpbWFsRm9yVmFsdWUoZVtlLmxlbmd0aC0yXSkpLzIpO2xldCBhPWUubGVuZ3RoPDM/LjU6LjI1O3Q9SCh0LDAsYSksbj1IKG4sMCxhKSx0aGlzLl9vZmZzZXRzPXtzdGFydDp0LGVuZDpuLGZhY3RvcjoxLyh0KzErbil9fV9nZW5lcmF0ZSgpe2xldCBlPXRoaXMuX2FkYXB0ZXIsdD10aGlzLm1pbixuPXRoaXMubWF4LHI9dGhpcy5vcHRpb25zLGk9ci50aW1lLGE9aS51bml0fHxUYyhpLm1pblVuaXQsdCxuLHRoaXMuX2dldExhYmVsQ2FwYWNpdHkodCkpLG89UChyLnRpY2tzLnN0ZXBTaXplLDEpLHM9YT09PWB3ZWVrYCYmaS5pc29XZWVrZGF5LGM9ZHQocyl8fHM9PT0hMCxsPXt9LHU9dCxkLGY7aWYoYyYmKHU9K2Uuc3RhcnRPZih1LGBpc29XZWVrYCxzKSksdT0rZS5zdGFydE9mKHUsYz9gZGF5YDphKSxlLmRpZmYobix0LGEpPjFlNSpvKXRocm93IEVycm9yKHQrYCBhbmQgYCtuK2AgYXJlIHRvbyBmYXIgYXBhcnQgd2l0aCBzdGVwU2l6ZSBvZiBgK28rYCBgK2EpO2xldCBwPXIudGlja3Muc291cmNlPT09YGRhdGFgJiZ0aGlzLmdldERhdGFUaW1lc3RhbXBzKCk7Zm9yKGQ9dSxmPTA7ZDxuO2Q9K2UuYWRkKGQsbyxhKSxmKyspT2MobCxkLHApO3JldHVybihkPT09bnx8ci5ib3VuZHM9PT1gdGlja3NgfHxmPT09MSkmJk9jKGwsZCxwKSxPYmplY3Qua2V5cyhsKS5zb3J0KENjKS5tYXAoZT0+K2UpfWdldExhYmVsRm9yVmFsdWUoZSl7bGV0IHQ9dGhpcy5fYWRhcHRlcixuPXRoaXMub3B0aW9ucy50aW1lO3JldHVybiBuLnRvb2x0aXBGb3JtYXQ/dC5mb3JtYXQoZSxuLnRvb2x0aXBGb3JtYXQpOnQuZm9ybWF0KGUsbi5kaXNwbGF5Rm9ybWF0cy5kYXRldGltZSl9Zm9ybWF0KGUsdCl7bGV0IG49dGhpcy5vcHRpb25zLnRpbWUuZGlzcGxheUZvcm1hdHMscj10aGlzLl91bml0LGk9dHx8bltyXTtyZXR1cm4gdGhpcy5fYWRhcHRlci5mb3JtYXQoZSxpKX1fdGlja0Zvcm1hdEZ1bmN0aW9uKGUsdCxuLHIpe2xldCBpPXRoaXMub3B0aW9ucyxhPWkudGlja3MuY2FsbGJhY2s7aWYoYSlyZXR1cm4gRihhLFtlLHQsbl0sdGhpcyk7bGV0IG89aS50aW1lLmRpc3BsYXlGb3JtYXRzLHM9dGhpcy5fdW5pdCxjPXRoaXMuX21ham9yVW5pdCxsPXMmJm9bc10sdT1jJiZvW2NdLGQ9blt0XSxmPWMmJnUmJmQmJmQubWFqb3I7cmV0dXJuIHRoaXMuX2FkYXB0ZXIuZm9ybWF0KGUscnx8KGY/dTpsKSl9Z2VuZXJhdGVUaWNrTGFiZWxzKGUpe2xldCB0LG4scjtmb3IodD0wLG49ZS5sZW5ndGg7dDxuOysrdClyPWVbdF0sci5sYWJlbD10aGlzLl90aWNrRm9ybWF0RnVuY3Rpb24oci52YWx1ZSx0LGUpfWdldERlY2ltYWxGb3JWYWx1ZShlKXtyZXR1cm4gZT09PW51bGw/TmFOOihlLXRoaXMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pfWdldFBpeGVsRm9yVmFsdWUoZSl7bGV0IHQ9dGhpcy5fb2Zmc2V0cyxuPXRoaXMuZ2V0RGVjaW1hbEZvclZhbHVlKGUpO3JldHVybiB0aGlzLmdldFBpeGVsRm9yRGVjaW1hbCgodC5zdGFydCtuKSp0LmZhY3Rvcil9Z2V0VmFsdWVGb3JQaXhlbChlKXtsZXQgdD10aGlzLl9vZmZzZXRzLG49dGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwoZSkvdC5mYWN0b3ItdC5lbmQ7cmV0dXJuIHRoaXMubWluK24qKHRoaXMubWF4LXRoaXMubWluKX1fZ2V0TGFiZWxTaXplKGUpe2xldCB0PXRoaXMub3B0aW9ucy50aWNrcyxuPXRoaXMuY3R4Lm1lYXN1cmVUZXh0KGUpLndpZHRoLHI9bXQodGhpcy5pc0hvcml6b250YWwoKT90Lm1heFJvdGF0aW9uOnQubWluUm90YXRpb24pLGk9TWF0aC5jb3MociksYT1NYXRoLnNpbihyKSxvPXRoaXMuX3Jlc29sdmVUaWNrRm9udE9wdGlvbnMoMCkuc2l6ZTtyZXR1cm57dzpuKmkrbyphLGg6biphK28qaX19X2dldExhYmVsQ2FwYWNpdHkoZSl7bGV0IHQ9dGhpcy5vcHRpb25zLnRpbWUsbj10LmRpc3BsYXlGb3JtYXRzLHI9blt0LnVuaXRdfHxuLm1pbGxpc2Vjb25kLGk9dGhpcy5fdGlja0Zvcm1hdEZ1bmN0aW9uKGUsMCxBYyh0aGlzLFtlXSx0aGlzLl9tYWpvclVuaXQpLHIpLGE9dGhpcy5fZ2V0TGFiZWxTaXplKGkpLG89TWF0aC5mbG9vcih0aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGgvYS53OnRoaXMuaGVpZ2h0L2EuaCktMTtyZXR1cm4gbz4wP286MX1nZXREYXRhVGltZXN0YW1wcygpe2xldCBlPXRoaXMuX2NhY2hlLmRhdGF8fFtdLHQsbjtpZihlLmxlbmd0aClyZXR1cm4gZTtsZXQgcj10aGlzLmdldE1hdGNoaW5nVmlzaWJsZU1ldGFzKCk7aWYodGhpcy5fbm9ybWFsaXplZCYmci5sZW5ndGgpcmV0dXJuIHRoaXMuX2NhY2hlLmRhdGE9clswXS5jb250cm9sbGVyLmdldEFsbFBhcnNlZFZhbHVlcyh0aGlzKTtmb3IodD0wLG49ci5sZW5ndGg7dDxuOysrdCllPWUuY29uY2F0KHJbdF0uY29udHJvbGxlci5nZXRBbGxQYXJzZWRWYWx1ZXModGhpcykpO3JldHVybiB0aGlzLl9jYWNoZS5kYXRhPXRoaXMubm9ybWFsaXplKGUpfWdldExhYmVsVGltZXN0YW1wcygpe2xldCBlPXRoaXMuX2NhY2hlLmxhYmVsc3x8W10sdCxuO2lmKGUubGVuZ3RoKXJldHVybiBlO2xldCByPXRoaXMuZ2V0TGFiZWxzKCk7Zm9yKHQ9MCxuPXIubGVuZ3RoO3Q8bjsrK3QpZS5wdXNoKHdjKHRoaXMsclt0XSkpO3JldHVybiB0aGlzLl9jYWNoZS5sYWJlbHM9dGhpcy5fbm9ybWFsaXplZD9lOnRoaXMubm9ybWFsaXplKGUpfW5vcm1hbGl6ZShlKXtyZXR1cm4gQXQoZS5zb3J0KENjKSl9fTtmdW5jdGlvbiBNYyhlLHQsbil7bGV0IHI9MCxpPWUubGVuZ3RoLTEsYSxvLHMsYztuPyh0Pj1lW3JdLnBvcyYmdDw9ZVtpXS5wb3MmJih7bG86cixoaTppfT13dChlLGBwb3NgLHQpKSx7cG9zOmEsdGltZTpzfT1lW3JdLHtwb3M6byx0aW1lOmN9PWVbaV0pOih0Pj1lW3JdLnRpbWUmJnQ8PWVbaV0udGltZSYmKHtsbzpyLGhpOml9PXd0KGUsYHRpbWVgLHQpKSx7dGltZTphLHBvczpzfT1lW3JdLHt0aW1lOm8scG9zOmN9PWVbaV0pO2xldCBsPW8tYTtyZXR1cm4gbD9zKyhjLXMpKih0LWEpL2w6c30oY2xhc3MgZXh0ZW5kcyBqY3tzdGF0aWMgaWQ9YHRpbWVzZXJpZXNgO3N0YXRpYyBkZWZhdWx0cz1qYy5kZWZhdWx0cztjb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLl90YWJsZT1bXSx0aGlzLl9taW5Qb3M9dm9pZCAwLHRoaXMuX3RhYmxlUmFuZ2U9dm9pZCAwfWluaXRPZmZzZXRzKCl7bGV0IGU9dGhpcy5fZ2V0VGltZXN0YW1wc0ZvclRhYmxlKCksdD10aGlzLl90YWJsZT10aGlzLmJ1aWxkTG9va3VwVGFibGUoZSk7dGhpcy5fbWluUG9zPU1jKHQsdGhpcy5taW4pLHRoaXMuX3RhYmxlUmFuZ2U9TWModCx0aGlzLm1heCktdGhpcy5fbWluUG9zLHN1cGVyLmluaXRPZmZzZXRzKGUpfWJ1aWxkTG9va3VwVGFibGUoZSl7bGV0e21pbjp0LG1heDpufT10aGlzLHI9W10saT1bXSxhLG8scyxjLGw7Zm9yKGE9MCxvPWUubGVuZ3RoO2E8bzsrK2EpYz1lW2FdLGM+PXQmJmM8PW4mJnIucHVzaChjKTtpZihyLmxlbmd0aDwyKXJldHVyblt7dGltZTp0LHBvczowfSx7dGltZTpuLHBvczoxfV07Zm9yKGE9MCxvPXIubGVuZ3RoO2E8bzsrK2EpbD1yW2ErMV0scz1yW2EtMV0sYz1yW2FdLE1hdGgucm91bmQoKGwrcykvMikhPT1jJiZpLnB1c2goe3RpbWU6Yyxwb3M6YS8oby0xKX0pO3JldHVybiBpfV9nZW5lcmF0ZSgpe2xldCBlPXRoaXMubWluLHQ9dGhpcy5tYXgsbj1zdXBlci5nZXREYXRhVGltZXN0YW1wcygpO3JldHVybighbi5pbmNsdWRlcyhlKXx8IW4ubGVuZ3RoKSYmbi5zcGxpY2UoMCwwLGUpLCghbi5pbmNsdWRlcyh0KXx8bi5sZW5ndGg9PT0xKSYmbi5wdXNoKHQpLG4uc29ydCgoZSx0KT0+ZS10KX1fZ2V0VGltZXN0YW1wc0ZvclRhYmxlKCl7bGV0IGU9dGhpcy5fY2FjaGUuYWxsfHxbXTtpZihlLmxlbmd0aClyZXR1cm4gZTtsZXQgdD10aGlzLmdldERhdGFUaW1lc3RhbXBzKCksbj10aGlzLmdldExhYmVsVGltZXN0YW1wcygpO3JldHVybiBlPXQubGVuZ3RoJiZuLmxlbmd0aD90aGlzLm5vcm1hbGl6ZSh0LmNvbmNhdChuKSk6dC5sZW5ndGg/dDpuLGU9dGhpcy5fY2FjaGUuYWxsPWUsZX1nZXREZWNpbWFsRm9yVmFsdWUoZSl7cmV0dXJuKE1jKHRoaXMuX3RhYmxlLGUpLXRoaXMuX21pblBvcykvdGhpcy5fdGFibGVSYW5nZX1nZXRWYWx1ZUZvclBpeGVsKGUpe2xldCB0PXRoaXMuX29mZnNldHMsbj10aGlzLmdldERlY2ltYWxGb3JQaXhlbChlKS90LmZhY3Rvci10LmVuZDtyZXR1cm4gTWModGhpcy5fdGFibGUsbip0aGlzLl90YWJsZVJhbmdlK3RoaXMuX21pblBvcywhMCl9fSk7dmFyIE5jPXtkYXRhOnt0eXBlOk9iamVjdCxyZXF1aXJlZDohMH0sb3B0aW9uczp7dHlwZTpPYmplY3QsZGVmYXVsdDooKT0+KHt9KX0scGx1Z2luczp7dHlwZTpBcnJheSxkZWZhdWx0OigpPT5bXX0sZGF0YXNldElkS2V5Ont0eXBlOlN0cmluZyxkZWZhdWx0OmBsYWJlbGB9LHVwZGF0ZU1vZGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6dm9pZCAwfX0sUGM9e2FyaWFMYWJlbDp7dHlwZTpTdHJpbmd9LGFyaWFEZXNjcmliZWRieTp7dHlwZTpTdHJpbmd9fSxGYz17dHlwZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LGRlc3Ryb3lEZWxheTp7dHlwZTpOdW1iZXIsZGVmYXVsdDowfSwuLi5OYywuLi5QY30sSWM9KGUsdCk9Pk9iamVjdC5hc3NpZ24oZSx0KTtmdW5jdGlvbiBMYyhlKXtyZXR1cm4gZChlKT9pKGUpOmV9ZnVuY3Rpb24gUmMoZSl7bGV0IHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOmU7cmV0dXJuIGQodCk/bmV3IFByb3h5KGUse30pOmV9ZnVuY3Rpb24gemMoZSx0KXtsZXQgbj1lLm9wdGlvbnM7biYmdCYmT2JqZWN0LmFzc2lnbihuLHQpfWZ1bmN0aW9uIEJjKGUsdCl7ZS5sYWJlbHM9dH1mdW5jdGlvbiBWYyhlLHQsbil7bGV0IHI9W107ZS5kYXRhc2V0cz10Lm1hcCh0PT57bGV0IGk9ZS5kYXRhc2V0cy5maW5kKGU9PmVbbl09PT10W25dKTtyZXR1cm4haXx8IXQuZGF0YXx8ci5pbmNsdWRlcyhpKT97Li4udH06KHIucHVzaChpKSxPYmplY3QuYXNzaWduKGksdCksaSl9KX1mdW5jdGlvbiBIYyhlLHQpe2xldCBuPXtsYWJlbHM6W10sZGF0YXNldHM6W119O3JldHVybiBCYyhuLGUubGFiZWxzKSxWYyhuLGUuZGF0YXNldHMsdCksbn12YXIgVWM9dih7cHJvcHM6RmMsc2V0dXAoZSx0KXtsZXR7ZXhwb3NlOm4sc2xvdHM6cn09dCxzPWEobnVsbCksbD1tKG51bGwpO24oe2NoYXJ0Omx9KTtsZXQgZD0oKT0+e2lmKCFzLnZhbHVlKXJldHVybjtsZXR7dHlwZTp0LGRhdGE6bixvcHRpb25zOnIscGx1Z2luczppLGRhdGFzZXRJZEtleTphfT1lLG89UmMoSGMobixhKSxuKTtsLnZhbHVlPW5ldyBUbyhzLnZhbHVlLHt0eXBlOnQsZGF0YTpvLG9wdGlvbnM6ey4uLnJ9LHBsdWdpbnM6aX0pfSxmPSgpPT57bGV0IHQ9aShsLnZhbHVlKTt0JiYoZS5kZXN0cm95RGVsYXk+MD9zZXRUaW1lb3V0KCgpPT57dC5kZXN0cm95KCksbC52YWx1ZT1udWxsfSxlLmRlc3Ryb3lEZWxheSk6KHQuZGVzdHJveSgpLGwudmFsdWU9bnVsbCkpfSxoPXQ9Pnt0LnVwZGF0ZShlLnVwZGF0ZU1vZGUpfTtyZXR1cm4gZyhkKSxjKGYpLG8oWygpPT5lLm9wdGlvbnMsKCk9PmUuZGF0YV0sKHQsbik9PntsZXRbcixhXT10LFtvLHNdPW4sYz1pKGwudmFsdWUpO2lmKCFjKXJldHVybjtsZXQgdT0hMTtpZihyKXtsZXQgZT1MYyhyKSx0PUxjKG8pO2UmJmUhPT10JiYoemMoYyxlKSx1PSEwKX1pZihhKXtsZXQgdD1MYyhhLmxhYmVscyksbj1MYyhzLmxhYmVscykscj1MYyhhLmRhdGFzZXRzKSxpPUxjKHMuZGF0YXNldHMpO3QhPT1uJiYoQmMoYy5jb25maWcuZGF0YSx0KSx1PSEwKSxyJiZyIT09aSYmKFZjKGMuY29uZmlnLmRhdGEscixlLmRhdGFzZXRJZEtleSksdT0hMCl9dSYmcCgoKT0+e2goYyl9KX0se2RlZXA6ITB9KSwoKT0+dShgY2FudmFzYCx7cm9sZTpgaW1nYCwiYXJpYS1sYWJlbCI6ZS5hcmlhTGFiZWwsImFyaWEtZGVzY3JpYmVkYnkiOmUuYXJpYURlc2NyaWJlZGJ5LHJlZjpzfSxbdShgcGAse30sW3IuZGVmYXVsdD9yLmRlZmF1bHQoKTpgYF0pXSl9fSk7ZnVuY3Rpb24gV2MoZSx0KXtyZXR1cm4gVG8ucmVnaXN0ZXIodCksdih7cHJvcHM6TmMsc2V0dXAodCxuKXtsZXR7ZXhwb3NlOnJ9PW4saT1tKG51bGwpLGE9bShudWxsKTtvKCgpPT5hLnZhbHVlPy5jaGFydD8/bnVsbCxlPT57aS52YWx1ZT1lfSx7Zmx1c2g6YHN5bmNgfSkscih7Y2hhcnQ6aX0pO2xldCBzPWU9PnthLnZhbHVlPWV9O3JldHVybigpPT51KFVjLEljKHtyZWY6c30se3R5cGU6ZSwuLi50fSkpfX0pfXZhciBHYz1XYyhgbGluZWAseWkpO1RvLnJlZ2lzdGVyKFlzLCRzLERzLFdzLHlpLHpvLFZvLHZzKTtmdW5jdGlvbiBLYygpe2xldCBlPWEoYGApLHQ9YShgYCksbj1hKGBgKTtmdW5jdGlvbiByKCl7bGV0IHI9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO2UudmFsdWU9ci5nZXRQcm9wZXJ0eVZhbHVlKGAtLWZvcmVncm91bmRgKS50cmltKCksdC52YWx1ZT1yLmdldFByb3BlcnR5VmFsdWUoYC0tbXV0ZWQtZm9yZWdyb3VuZGApLnRyaW0oKSxuLnZhbHVlPXIuZ2V0UHJvcGVydHlWYWx1ZShgLS1ib3JkZXJgKS50cmltKCl9bGV0IGk7cmV0dXJuIGcoKCk9PntyKCksaT13aW5kb3cubWF0Y2hNZWRpYShgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKWApLGkuYWRkRXZlbnRMaXN0ZW5lcihgY2hhbmdlYCxyKX0pLGgoKCk9PntpPy5yZW1vdmVFdmVudExpc3RlbmVyKGBjaGFuZ2VgLHIpfSkse2ZvcmVncm91bmQ6ZSxtdXRlZEZvcmVncm91bmQ6dCxib3JkZXI6bn19dmFyIHFjPVtgYXJpYS1sYWJlbGBdLEpjPXYoe19fbmFtZTpgVGltZVNlcmllc0NoYXJ0YCxwcm9wczp7bGFiZWxzOnt9LGRhdGFzZXRzOnt9LGNvbXBhcmlzb25EYXRhc2V0czp7ZGVmYXVsdDooKT0+W119LHN0YWNrZWQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx2YWx1ZUZvcm1hdHRlcjp7dHlwZTpGdW5jdGlvbixkZWZhdWx0Onl9LGFyaWFMYWJlbDp7fX0sc2V0dXAoaSl7bGV0IGE9aSxvPWB0aW1lc2VyaWVzLWNoYXJ0LWRlc2MtJHtsKCl9YCxjPW4oKCk9PmEuZGF0YXNldHMubGVuZ3RoPT09MHx8YS5sYWJlbHMubGVuZ3RoPT09MD9gTm8gZGF0YSBmb3IgdGhpcyByYW5nZS5gOmEuZGF0YXNldHMubWFwKGU9PntsZXQgdD1lLmRhdGEubGVuZ3RoPjA/ZS5kYXRhW2UuZGF0YS5sZW5ndGgtMV06MCxuPWUuZGF0YS5yZWR1Y2UoKGUsdCk9PmUrdCwwKTtyZXR1cm5gJHtlLmxhYmVsfTogbGF0ZXN0ICR7YS52YWx1ZUZvcm1hdHRlcih0KX0sIHRvdGFsICR7YS52YWx1ZUZvcm1hdHRlcihuKX0gb3ZlciAke2EubGFiZWxzLmxlbmd0aH0gYnVja2V0cy5gfSkuam9pbihgIGApKSx7Zm9yZWdyb3VuZDp1LG11dGVkRm9yZWdyb3VuZDpkLGJvcmRlcjpwfT1LYygpO2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGUpLnRyaW0oKX1sZXQgaD1uKCgpPT57dS52YWx1ZTtsZXQgZT1hLmRhdGFzZXRzLm1hcChlPT57bGV0IHQ9bShlLmNvbG9yKTtyZXR1cm57bGFiZWw6ZS5sYWJlbCxkYXRhOmUuZGF0YSxib3JkZXJDb2xvcjp0LGJhY2tncm91bmRDb2xvcjp0LGZpbGw6YS5zdGFja2VkLHN0YWNrOmEuc3RhY2tlZD9gbWFpbmA6dm9pZCAwLHRlbnNpb246LjIscG9pbnRSYWRpdXM6Mixib3JkZXJXaWR0aDoyfX0pLHQ9YS5jb21wYXJpc29uRGF0YXNldHMubWFwKGU9PntsZXQgdD1tKGUuY29sb3IpO3JldHVybntsYWJlbDpgJHtlLmxhYmVsfSR7ZS5sYWJlbFN1ZmZpeD8/YGB9YCxkYXRhOmUuZGF0YSxib3JkZXJDb2xvcjp0LGJhY2tncm91bmRDb2xvcjpgdHJhbnNwYXJlbnRgLGJvcmRlckRhc2g6WzYsNF0sZmlsbDohMSx0ZW5zaW9uOi4yLHBvaW50UmFkaXVzOjAsYm9yZGVyV2lkdGg6MS41fX0pO3JldHVybntsYWJlbHM6YS5sYWJlbHMsZGF0YXNldHM6Wy4uLmUsLi4udF19fSksZz1uKCgpPT4oe3Jlc3BvbnNpdmU6ITAsbWFpbnRhaW5Bc3BlY3RSYXRpbzohMSxhbmltYXRpb246ITEsaW50ZXJhY3Rpb246e21vZGU6YGluZGV4YCxpbnRlcnNlY3Q6ITF9LHNjYWxlczp7eDp7c3RhY2tlZDphLnN0YWNrZWQsZ3JpZDp7Y29sb3I6cC52YWx1ZSxkaXNwbGF5OiExfSx0aWNrczp7Y29sb3I6ZC52YWx1ZX19LHk6e3N0YWNrZWQ6YS5zdGFja2VkLGJlZ2luQXRaZXJvOiEwLGdyaWQ6e2NvbG9yOnAudmFsdWV9LHRpY2tzOntjb2xvcjpkLnZhbHVlLGNhbGxiYWNrOmU9PmEudmFsdWVGb3JtYXR0ZXIoTnVtYmVyKGUpKX19fSxwbHVnaW5zOntsZWdlbmQ6e2Rpc3BsYXk6YS5kYXRhc2V0cy5sZW5ndGg+MXx8YS5jb21wYXJpc29uRGF0YXNldHMubGVuZ3RoPjAsbGFiZWxzOntjb2xvcjp1LnZhbHVlfX0sdG9vbHRpcDp7Y2FsbGJhY2tzOntsYWJlbDplPT5gJHtlLmRhdGFzZXQubGFiZWx9OiAke2EudmFsdWVGb3JtYXR0ZXIoZS5wYXJzZWQueT8/MCl9YH19fX0pKTtyZXR1cm4obixhKT0+KF8oKSxlKGBkaXZgLHtjbGFzczpgaC03MiB3LWZ1bGxgLHJvbGU6YGltZ2AsImFyaWEtbGFiZWwiOmkuYXJpYUxhYmVsLCJhcmlhLWRlc2NyaWJlZGJ5IjpvfSxbcihzKEdjKSx7ZGF0YTpoLnZhbHVlLG9wdGlvbnM6Zy52YWx1ZX0sbnVsbCw4LFtgZGF0YWAsYG9wdGlvbnNgXSksdChgcGAse2lkOm8sY2xhc3M6YHNyLW9ubHlgfSxmKGMudmFsdWUpLDEpXSw4LHFjKSl9fSk7ZXhwb3J0e0pjIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"badge-ns0j8OUr.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0IgYXMgZSxOIGFzIHQsT3QgYXMgbixSciBhcyByLGpuIGFzIGkscnIgYXMgYSx1biBhcyBvLHcgYXMgcyx3biBhcyBjLHogYXMgbCx6dCBhcyB1fWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2Z1bmN0aW9uIGQoZSx0KXtyZXR1cm5gJHtlfS8ke3R9YH1mdW5jdGlvbiBmKGUpe3JldHVybmAkJHsoZS8xZTYpLnRvRml4ZWQoNCl9YH1mdW5jdGlvbiBwKGUpe3JldHVybiBlLnRvTG9jYWxlU3RyaW5nKGBlbi1VU2ApfWZ1bmN0aW9uIG0oZSl7bGV0IHQ9TWF0aC5hYnMoZSk7aWYodDwxZTQpcmV0dXJuIHAoZSk7bGV0IG49ZTwwP2AtYDpgYCxbcixpXT10PDFlNj9bMWUzLGBrYF06dDwxZTk/WzFlNixgTWBdOlsxZTksYEJgXSxhPXQvcixvPTMtKE1hdGguZmxvb3IoYSk+PTEwMD8zOk1hdGguZmxvb3IoYSk+PTEwPzI6MSkscz0xMCoqbyxjPShNYXRoLmZsb29yKHQqcy9yKS9zKS50b0ZpeGVkKG8pO3JldHVybiBvPjAmJihjPWMucmVwbGFjZSgvMCskLyxgYCkucmVwbGFjZSgvXC4kLyxgYCkpLGAke259JHtjfSR7aX1gfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGU+MCYmIShlJmUtMSl9ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZTwxMDI0P2Ake2V9YDpoKGUpP2U8MTA0ODU3Nj9gJHtNYXRoLnJvdW5kKGUvMTAyNCl9a2A6YCR7TWF0aC5yb3VuZChlLzEwNDg1NzYpfU1gOmU8MWU2P2Ake01hdGgucm91bmQoZS8xZTMpfWtgOmAke01hdGgucm91bmQoZS8xZTYpfU1gfWZ1bmN0aW9uIF8oZSl7cmV0dXJuYCQke2UudG9GaXhlZCgyKX1gfWZ1bmN0aW9uIHYoZSx0KXtyZXR1cm4gZT09PTAmJnQ9PT0wP2BmcmVlYDpgaW4gJHtfKGUpfSAvIG91dCAke18odCl9IHBlciBNVG9rYH1mdW5jdGlvbiB5KGUpe3JldHVybiBlPDFlMz9gJHtNYXRoLnJvdW5kKGUpfW1zYDpgJHsoZS8xZTMpLnRvRml4ZWQoMSl9c2B9ZnVuY3Rpb24gYihlLHQpe2lmKCFlfHxlPT09YDAwMDEtMDEtMDFUMDA6MDA6MDBaYClyZXR1cm4gbnVsbDtsZXQgbj1uZXcgRGF0ZShlKS5nZXRUaW1lKCk7cmV0dXJuIE51bWJlci5pc05hTihuKT9udWxsOk1hdGgubWF4KDAsTWF0aC5yb3VuZCgodC1uKS8xZTMpKX1mdW5jdGlvbiB4KGUpe2xldCB0PWIoZSxEYXRlLm5vdygpKTtyZXR1cm4gdD09PW51bGw/YGA6YCAoJHt0fXMgYWdvKWB9ZnVuY3Rpb24gUyhlLHQ9RGF0ZS5ub3coKSl7bGV0IG49YihlLHQpO3JldHVybiBuPT09bnVsbD9gYDpgJHtufXMgYWdvYH1mdW5jdGlvbiBDKGUpe2lmKCFlfHxlPT09YDAwMDEtMDEtMDFUMDA6MDA6MDBaYClyZXR1cm5gYDtsZXQgdD1uZXcgRGF0ZShlKS5nZXRUaW1lKCk7aWYoTnVtYmVyLmlzTmFOKHQpKXJldHVybmBgO2xldCBuPU1hdGgucm91bmQoKHQtRGF0ZS5ub3coKSkvMWUzKTtyZXR1cm4gbjw9MD9gYDpgaW4gJHtufXNgfWZ1bmN0aW9uIHcoZSl7aWYoIWV8fGU9PT1gMDAwMS0wMS0wMVQwMDowMDowMFpgKXJldHVybmBuZXZlcmA7bGV0IHQ9bmV3IERhdGUoZSk7cmV0dXJuIE51bWJlci5pc05hTih0LmdldFRpbWUoKSk/ZTp0LnRvTG9jYWxlU3RyaW5nKCl9ZnVuY3Rpb24gVChlLHQpe3JldHVybiBlP3godCk/YHJlZnJlc2hlZGA6YHBlbmRpbmdgOmBvZmZgfWZ1bmN0aW9uIEUoZSx0KXtzd2l0Y2goVChlLHQpKXtjYXNlYG9mZmA6cmV0dXJuYGRpc2NvdmVyeSBvZmZgO2Nhc2VgcGVuZGluZ2A6cmV0dXJuYHBlbmRpbmdgO2Nhc2VgcmVmcmVzaGVkYDpyZXR1cm5gcmVmcmVzaGVkJHt4KHQpfWB9fWZ1bmN0aW9uIEQoZSx0KXtzd2l0Y2goVChlLHQpKXtjYXNlYG9mZmA6cmV0dXJuYGRpc2NvdmVyeSBvZmZgO2Nhc2VgcGVuZGluZ2A6cmV0dXJuYHBlbmRpbmdgO2Nhc2VgcmVmcmVzaGVkYDpyZXR1cm4gdyh0KX19ZnVuY3Rpb24gTyhlKXtpZighZSlyZXR1cm5gbm9uZWA7bGV0IHQ9W107cmV0dXJuIGUucmVxdWVzdHNQZXJNaW51dGUmJnQucHVzaChgcmVxL21pbiAke2UucmVxdWVzdHNQZXJNaW51dGV9YCksZS5yZXF1ZXN0c1BlckRheSYmdC5wdXNoKGByZXEvZGF5ICR7ZS5yZXF1ZXN0c1BlckRheX1gKSxlLnRva2Vuc1BlckRheSYmdC5wdXNoKGB0b2svZGF5ICR7ZS50b2tlbnNQZXJEYXl9YCksZS50b2tlbnNQZXJNb250aCYmdC5wdXNoKGB0b2svbW9udGggJHtlLnRva2Vuc1Blck1vbnRofWApLGUuY29zdFBlckRheVVTRCYmdC5wdXNoKGBjb3N0L2RheSAkJHtlLmNvc3RQZXJEYXlVU0R9YCksZS5jb3N0UGVyTW9udGhVU0QmJnQucHVzaChgY29zdC9tb250aCAkJHtlLmNvc3RQZXJNb250aFVTRH1gKSx0Lmxlbmd0aD90LmpvaW4oYCwgYCk6YG5vbmVgfWZ1bmN0aW9uIGsoZSx0KXtzd2l0Y2godCl7Y2FzZWBob3VyYDpyZXR1cm5gJHtlLnNsaWNlKDgsMTApfTowMCBVVENgO2Nhc2VgZGF5YDp7bGV0IHQ9TnVtYmVyKGUuc2xpY2UoMCw0KSksbj1OdW1iZXIoZS5zbGljZSg0LDYpKSxyPU51bWJlcihlLnNsaWNlKDYsOCkpO3JldHVybiBuZXcgRGF0ZSh0LG4tMSxyKS50b0xvY2FsZURhdGVTdHJpbmcodm9pZCAwLHttb250aDpgc2hvcnRgLGRheTpgbnVtZXJpY2B9KX1jYXNlYG1vbnRoYDp7bGV0IHQ9TnVtYmVyKGUuc2xpY2UoMCw0KSksbj1OdW1iZXIoZS5zbGljZSg0LDYpKTtyZXR1cm4gbmV3IERhdGUodCxuLTEsMSkudG9Mb2NhbGVEYXRlU3RyaW5nKHZvaWQgMCx7bW9udGg6YHNob3J0YCx5ZWFyOmBudW1lcmljYH0pfX19dmFyIEE9dSh7X19uYW1lOmBCYWRnZWAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sdmFyaWFudDp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHU9ZSxkPXQodSxgY2xhc3NgKTtyZXR1cm4odCxmKT0+KGMoKSxuKHIocyksbyh7ImRhdGEtc2xvdCI6YGJhZGdlYCwiZGF0YS12YXJpYW50IjplLnZhcmlhbnQsY2xhc3M6cihsKShyKGopKHt2YXJpYW50OmUudmFyaWFudH0pLHUuY2xhc3MpfSxyKGQpKSx7ZGVmYXVsdDphKCgpPT5baSh0LiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGRhdGEtdmFyaWFudGAsYGNsYXNzYF0pKX19KSxqPWUoYGgtNSBnYXAtMSByb3VuZGVkLTR4bCBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IHB4LTIgcHktMC41IHRleHQteHMgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1hbGwgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMS41IGhhcy1kYXRhLVtpY29uPWlubGluZS1zdGFydF06cGwtMS41IFsmPnN2Z106c2l6ZS0zISBncm91cC9iYWRnZSBpbmxpbmUtZmxleCB3LWZpdCBzaHJpbmstMCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIHdoaXRlc3BhY2Utbm93cmFwIGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLTMgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBhcmlhLWludmFsaWQ6cmluZy1kZXN0cnVjdGl2ZS8yMCBkYXJrOmFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzQwIFsmPnN2Z106cG9pbnRlci1ldmVudHMtbm9uZWAse3ZhcmlhbnRzOnt2YXJpYW50OntkZWZhdWx0OmBiZy1wcmltYXJ5IHRleHQtcHJpbWFyeS1mb3JlZ3JvdW5kIFthXTpob3ZlcjpiZy1wcmltYXJ5LzgwYCxzZWNvbmRhcnk6YGJnLXNlY29uZGFyeSB0ZXh0LXNlY29uZGFyeS1mb3JlZ3JvdW5kIFthXTpob3ZlcjpiZy1zZWNvbmRhcnkvODBgLGRlc3RydWN0aXZlOmBiZy1kZXN0cnVjdGl2ZS8xMCBbYV06aG92ZXI6YmctZGVzdHJ1Y3RpdmUvMjAgZm9jdXMtdmlzaWJsZTpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6Zm9jdXMtdmlzaWJsZTpyaW5nLWRlc3RydWN0aXZlLzQwIHRleHQtZGVzdHJ1Y3RpdmUgZGFyazpiZy1kZXN0cnVjdGl2ZS8yMGAsb3V0bGluZTpgYm9yZGVyLWJvcmRlciB0ZXh0LWZvcmVncm91bmQgW2FdOmhvdmVyOmJnLW11dGVkIFthXTpob3Zlcjp0ZXh0LW11dGVkLWZvcmVncm91bmRgLGdob3N0OmBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LW11dGVkLWZvcmVncm91bmQgZGFyazpob3ZlcjpiZy1tdXRlZC81MGAsbGluazpgdGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmVgfX0sZGVmYXVsdFZhcmlhbnRzOnt2YXJpYW50OmBkZWZhdWx0YH19KTtleHBvcnR7ZyBhcyBhLHAgYXMgYyx2IGFzIGQsdyBhcyBmLGQgYXMgZyxFIGFzIGgsbSBhcyBpLHkgYXMgbCxEIGFzIG0seCBhcyBuLGYgYXMgbyxDIGFzIHAsayBhcyByLFMgYXMgcyxBIGFzIHQsTyBhcyB1fTs=",
|
|
),
|
|
},
|
|
"burndown-CqtdXSYk.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0F0IGFzIGUsQyBhcyB0LER0IGFzIG4sRXQgYXMgcixJdCBhcyBpLEogYXMgYSxMdCBhcyBvLE1uIGFzIHMsT3IgYXMgYyxPdCBhcyBsLFJyIGFzIHUsUyBhcyBkLFggYXMgZixiIGFzIHAsZGkgYXMgbSxldCBhcyBoLGcsa3QgYXMgXyxtbiBhcyB2LHJyIGFzIHksc2kgYXMgYix3biBhcyB4LHggYXMgUyx6dCBhcyBDfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHtuIGFzIHcsdCBhcyBUfWZyb20iLi9DYXJkRGVzY3JpcHRpb24tSWRPdDMxN2MuanMiO2ltcG9ydHt0IGFzIEV9ZnJvbSIuL2NsaXBib2FyZC1CNzNmWjBjMS5qcyI7aW1wb3J0e28gYXMgRH1mcm9tIi4vYmFkZ2UtbnMwajhPVXIuanMiO2ltcG9ydHtuIGFzIE8sciBhcyBrLHQgYXMgQX1mcm9tIi4vZm9yZWNhc3QtQk1Ta2c1WHMuanMiO3ZhciBqPXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LE09e2tleTowLGNsYXNzOmB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LE49W2B0aXRsZWBdLFA9e2tleTowfSxGPXtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkIHRhYnVsYXItbnVtc2B9LEk9Qyh7X19uYW1lOmBDb3N0Rm9yZWNhc3RDYXJkYCxwcm9wczp7bXRkTWljcm9zOnt9LGxpbWl0czp7fSxub3c6e319LHNldHVwKGEpe2xldCBzPWEsYz1yKCgpPT5PKHMubm93KSksZj1yKCgpPT5rKHMubXRkTWljcm9zLGMudmFsdWUpKSxoPXIoKCk9PkEoZi52YWx1ZSxzLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEKSk7cmV0dXJuKHIscyk9Pih4KCksbCh1KHQpLG51bGwse2RlZmF1bHQ6eSgoKT0+W28odShTKSxudWxsLHtkZWZhdWx0OnkoKCk9PltvKHUocCksbnVsbCx7ZGVmYXVsdDp5KCgpPT5bLi4uc1swXXx8PVtpKGBDb3N0IGZvcmVjYXN0YCwtMSldXSksXzoxfSksbyh1KFQpLG51bGwse2RlZmF1bHQ6eSgoKT0+Wy4uLnNbMV18fD1baShgUHJvamVjdGVkIG1vbnRoLWVuZCBzcGVuZCwgZXh0cmFwb2xhdGVkIGZyb20gbW9udGgtdG8tZGF0ZSB1c2FnZSAoVVRDIGNhbGVuZGFyIG1vbnRoKS5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLG8odShkKSx7Y2xhc3M6YGdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdGV4dC1zbSBzbTpncmlkLWNvbHMtM2B9LHtkZWZhdWx0OnkoKCk9PltuKGBkaXZgLG51bGwsW3NbMl18fD1uKGBwYCx7Y2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LGBNb250aCB0byBkYXRlYCwtMSksbihgcGAsaixtKHUoRCkoYS5tdGRNaWNyb3MpKSwxKV0pLG4oYGRpdmAsbnVsbCxbc1szXXx8PW4oYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFByb2plY3RlZCBtb250aC1lbmRgLC0xKSxmLnZhbHVlPT09bnVsbD8oeCgpLGUoYHBgLE0sYG5vdCBlbm91Z2ggZGF0YSB5ZXRgKSk6KHgoKSxlKGBwYCx7a2V5OjEsY2xhc3M6YihbYHRleHQtbGcgZm9udC1zZW1pYm9sZCB0YWJ1bGFyLW51bXNgLGgudmFsdWUud2lsbEV4Y2VlZD9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwXSksdGl0bGU6aC52YWx1ZS53aWxsRXhjZWVkP2BQcm9qZWN0ZWQgdG8gZXhjZWVkIHRoZSBjb25maWd1cmVkIGNvc3QvbW9udGggbGltaXRgOnZvaWQgMH0sbSh1KEQpKGYudmFsdWUpKSwxMSxOKSldKSxoLnZhbHVlLmxpbWl0TWljcm9zPT09bnVsbD9fKGBgLCEwKTooeCgpLGUoYGRpdmAsUCxbc1s0XXx8PW4oYHBgLHtjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYExpbWl0YCwtMSksbihgcGAsRixtKHUoRCkoaC52YWx1ZS5saW1pdE1pY3JvcykpLDEpXSkpXSksXzoxfSldKSxfOjF9KSl9fSksTD1gdGV4dC9jc3Y7Y2hhcnNldD11dGYtODtgLFI9MWUzO2FzeW5jIGZ1bmN0aW9uIHooZSx0LG49TCl7aWYodHlwZW9mIGRvY3VtZW50PmB1YClyZXR1cm5gZmFpbGVkYDt0cnl7bGV0IHI9bmV3IEJsb2IoW3RdLHt0eXBlOm59KSxpPVVSTC5jcmVhdGVPYmplY3RVUkwociksYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBhYCk7cmV0dXJuIGEuaHJlZj1pLGEuZG93bmxvYWQ9ZSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpLGEuY2xpY2soKSxhLnJlbW92ZSgpLHNldFRpbWVvdXQoKCk9PlVSTC5yZXZva2VPYmplY3RVUkwoaSksUiksYGRvd25sb2FkZWRgfWNhdGNoe3JldHVybiBFKHQpfX12YXIgQj0yNTAwLFY9Qyh7X19uYW1lOmBDc3ZFeHBvcnRCdXR0b25gLHByb3BzOntmaWxlbmFtZTp7fSxidWlsZDp7dHlwZTpGdW5jdGlvbn19LHNldHVwKGUpe2xldCB0PWUsaT1jKCExKSxvPWMobnVsbCksZCxwPXtkb3dubG9hZGVkOmBEb3dubG9hZGVkYCxjb3BpZWQ6YENvcGllZGAsc2VsZWN0ZWQ6YFNlbGVjdGVkIOKAlCBwcmVzcyDijJgvQ3RybCtDYCxmYWlsZWQ6YEV4cG9ydCBmYWlsZWRgfSxnPXIoKCk9Pm8udmFsdWU/cFtvLnZhbHVlXTpgRXhwb3J0IENTVmApLF89cigoKT0+by52YWx1ZT09PWBmYWlsZWRgKTtmdW5jdGlvbiBTKCl7ZCE9PXZvaWQgMCYmY2xlYXJUaW1lb3V0KGQpLGQ9c2V0VGltZW91dCgoKT0+e28udmFsdWU9bnVsbCxkPXZvaWQgMH0sQil9YXN5bmMgZnVuY3Rpb24gQygpe2lmKCFpLnZhbHVlKXtpLnZhbHVlPSEwO3RyeXtvLnZhbHVlPWF3YWl0IHoodC5maWxlbmFtZSx0LmJ1aWxkKCkpLFMoKX1maW5hbGx5e2kudmFsdWU9ITF9fX1yZXR1cm4gdigoKT0+e2QhPT12b2lkIDAmJmNsZWFyVGltZW91dChkKX0pLChlLHQpPT57bGV0IHI9cyhgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIHgoKSxsKHUodykse3R5cGU6YGJ1dHRvbmAsdmFyaWFudDpgb3V0bGluZWAsc2l6ZTpgc21gLGRpc2FibGVkOmkudmFsdWUsb25DbGljazpDfSx7ZGVmYXVsdDp5KCgpPT5bby52YWx1ZT09PWBmYWlsZWRgPyh4KCksbChyLHtrZXk6MCxpY29uOnUoZiksY2xhc3M6YHNpemUtMy41IHRleHQtZGVzdHJ1Y3RpdmVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pKTpvLnZhbHVlPyh4KCksbChyLHtrZXk6MSxpY29uOnUoYSksY2xhc3M6YHNpemUtMy41IHRleHQtY2hhcnQtcmVxdWVzdHNgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pKTooeCgpLGwocix7a2V5OjIsaWNvbjp1KGgpLGNsYXNzOmBzaXplLTMuNWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSkpLG4oYHNwYW5gLHtjbGFzczpiKF8udmFsdWU/YHRleHQtZGVzdHJ1Y3RpdmVgOnZvaWQgMCl9LG0oZy52YWx1ZSksMyldKSxfOjF9LDgsW2BkaXNhYmxlZGBdKX19fSksSD02ZTQ7ZnVuY3Rpb24gVShlPUgpe2xldCB0PWMobmV3IERhdGUpLG47ZnVuY3Rpb24gcigpe258fChuPWcoe2ludGVydmFsTXM6ZSx0aWNrOigpPT57dC52YWx1ZT1uZXcgRGF0ZX19KSxuLnN0YXJ0KCkpfWZ1bmN0aW9uIGkoKXtuPy5zdG9wKCksbj12b2lkIDB9cmV0dXJue25vdzp0LHN0YXJ0OnIsc3RvcDppfX12YXIgVz1gXHIKYCxHPS9bIixcclxuXS8sSz0vXls9K1wtQFx0XHJdLztmdW5jdGlvbiBxKGUpe2xldCB0PWU9PW51bGw/YGA6U3RyaW5nKGUpO3JldHVybiBLLnRlc3QodCkmJih0PWAnJHt0fWApLEcudGVzdCh0KT9gIiR7dC5yZXBsYWNlKC8iL2csYCIiYCl9ImA6dH1mdW5jdGlvbiBKKGUsdCl7cmV0dXJuW2UsLi4udF0ubWFwKGU9PmUubWFwKHEpLmpvaW4oYCxgKSkuam9pbihXKStXfXZhciBZPTg2NGU1O2Z1bmN0aW9uIFgoZSl7bGV0IHQ9ZS5nZXRVVENGdWxsWWVhcigpLG49ZS5nZXRVVENNb250aCgpO3JldHVybihEYXRlLlVUQyh0LG4rMSwxKS1EYXRlLlVUQyh0LG4sMSkpL1l9ZnVuY3Rpb24gWihlKXtyZXR1cm4gZS5nZXRVVENEYXRlKCl9ZnVuY3Rpb24gUShlKXtsZXQgdD0wO3JldHVybiBlLm1hcChlPT50Kz1lKX1mdW5jdGlvbiAkKGUsdCxuKXtpZih0PD0wKXJldHVybiBudWxsO2lmKGU+PXQpcmV0dXJuIG5ldyBEYXRlKG4uZ2V0VGltZSgpKTtsZXQgcj1PKG4pKlgobik7aWYocjwxKXJldHVybiBudWxsO2xldCBpPWUvcjtpZihpPD0wKXJldHVybiBudWxsO2xldCBhPSh0LWUpL2k7cmV0dXJuIG5ldyBEYXRlKG4uZ2V0VGltZSgpK2EqWSl9ZXhwb3J0e1UgYXMgYSxKIGFzIGksWiBhcyBuLFYgYXMgbywkIGFzIHIsSSBhcyBzLFEgYXMgdH07",
|
|
),
|
|
},
|
|
"catalog-C-TfKLVZ.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e18gYXMgZSxsdCBhcyB0LHYgYXMgbix5IGFzIHJ9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7dmFyIGk9M2U1LGE9dChgY2F0YWxvZ2Ase3N0YXRlOigpPT4oe2RhdGE6bnVsbCxmZXRjaGVkQXQ6bnVsbCxsb2FkaW5nOiExLGVycm9yOmBgLHJlcUlkOjB9KSxnZXR0ZXJzOntzdGFsZShlKXtyZXR1cm4hZS5mZXRjaGVkQXR8fERhdGUubm93KCktZS5mZXRjaGVkQXQuZ2V0VGltZSgpPml9LG1vZGVsc0J5SWQoZSl7bGV0IHQ9bmV3IE1hcDtmb3IobGV0IG4gb2YgZS5kYXRhPy5wcm92aWRlcnM/P1tdKWZvcihsZXQgZSBvZiBuLm1vZGVscyl0LnNldChlLmlkLGUpO3JldHVybiB0fX0sYWN0aW9uczp7YXN5bmMgZW5zdXJlTG9hZGVkKGU9ITEpeyFlJiZ0aGlzLmRhdGEmJiF0aGlzLnN0YWxlfHxhd2FpdCB0aGlzLmZldGNoKCl9LGFzeW5jIGZldGNoKCl7aWYoIXIoKS5pc0F1dGhlbnRpY2F0ZWQpcmV0dXJuO2xldCB0PSsrdGhpcy5yZXFJZDt0aGlzLmxvYWRpbmc9ITA7dHJ5e2xldCBlPWF3YWl0IG4oYC9hZG1pbi9hcGkvY2F0YWxvZ2ApO2lmKHQhPT10aGlzLnJlcUlkKXJldHVybjt0aGlzLmRhdGE9ZSx0aGlzLmZldGNoZWRBdD1uZXcgRGF0ZSx0aGlzLmVycm9yPWBgfWNhdGNoKG4pe2lmKHQhPT10aGlzLnJlcUlkfHxuIGluc3RhbmNlb2YgZSYmKG4uc3RhdHVzPT09NDAxfHxuLnN0YXR1cz09PTQwMykpcmV0dXJuO3RoaXMuZXJyb3I9biBpbnN0YW5jZW9mIEVycm9yP24ubWVzc2FnZTpTdHJpbmcobil9ZmluYWxseXt0PT09dGhpcy5yZXFJZCYmKHRoaXMubG9hZGluZz0hMSl9fX19KTtleHBvcnR7YSBhcyB0fTs=",
|
|
),
|
|
},
|
|
"clipboard-B73fZ0c1.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"YXN5bmMgZnVuY3Rpb24gZShlLHQpe2lmKG5hdmlnYXRvci5jbGlwYm9hcmQ/LndyaXRlVGV4dCl0cnl7cmV0dXJuIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLGBjb3BpZWRgfWNhdGNoe31pZighdClyZXR1cm5gZmFpbGVkYDtsZXQgbj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO24uc2VsZWN0Tm9kZUNvbnRlbnRzKHQpO2xldCByPXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm4gcj8oci5yZW1vdmVBbGxSYW5nZXMoKSxyLmFkZFJhbmdlKG4pLGBzZWxlY3RlZGApOmBmYWlsZWRgfWV4cG9ydHtlIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"consumers-wB-itjnf.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e18gYXMgZSxkIGFzIHQsbHQgYXMgbixzIGFzIHIsdSBhcyBpLHYgYXMgYSx5IGFzIG99ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7dmFyIHM9NmU0O2Z1bmN0aW9uIGMoKXtyZXR1cm57bG9hZGluZzohMSxlcnJvcjpgYCxyZXFTZXJpZXM6bnVsbCxjb3N0U2VyaWVzOm51bGwsbW9kZWxUb3RhbHM6bnVsbCxtb2RlbFRvdGFsc1VuYXZhaWxhYmxlOiExLGZldGNoZWRBdDpudWxsLHJlcUlkOjB9fWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUuc3RhdHVzPT09YHJlamVjdGVkYD9lLnJlYXNvbiBpbnN0YW5jZW9mIEVycm9yP2UucmVhc29uLm1lc3NhZ2U6U3RyaW5nKGUucmVhc29uKTpgYH12YXIgdT1uKGBjb25zdW1lcnNgLHtzdGF0ZTooKT0+KHtkYXRhOm51bGwsbG9hZGluZzohMSxlcnJvcjpgYCxmZXRjaGVkQXQ6bnVsbCxkZXRhaWw6e319KSxhY3Rpb25zOnthc3luYyBmZXRjaENvbnN1bWVycygpe2lmKG8oKS5pc0F1dGhlbnRpY2F0ZWQpe3RoaXMubG9hZGluZz0hMDt0cnl7dGhpcy5kYXRhPWF3YWl0IGEoYC9hZG1pbi9hcGkvY29uc3VtZXJzYCksdGhpcy5lcnJvcj1gYCx0aGlzLmZldGNoZWRBdD1EYXRlLm5vdygpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBlJiYodC5zdGF0dXM9PT00MDF8fHQuc3RhdHVzPT09NDAzKSlyZXR1cm47dGhpcy5lcnJvcj10IGluc3RhbmNlb2YgRXJyb3I/dC5tZXNzYWdlOlN0cmluZyh0KX1maW5hbGx5e3RoaXMubG9hZGluZz0hMX19fSxhc3luYyBlbnN1cmVDb25zdW1lcnMoKXt0aGlzLmxvYWRpbmd8fHRoaXMuZGF0YSYmdGhpcy5mZXRjaGVkQXQhPT1udWxsJiZEYXRlLm5vdygpLXRoaXMuZmV0Y2hlZEF0PHN8fGF3YWl0IHRoaXMuZmV0Y2hDb25zdW1lcnMoKX0sYXN5bmMgZmV0Y2hVc2VyRGV0YWlsKG4scyx1LGQpe2lmKCFvKCkuaXNBdXRoZW50aWNhdGVkKXJldHVybjtsZXQgZj10aGlzLmRldGFpbFtuXT8/YygpLHA9Zi5yZXFJZCsxO3RoaXMuZGV0YWlsW25dPXsuLi5mLGxvYWRpbmc6ITAscmVxSWQ6cH07bGV0IG09cihzLHUpLFtoLGcsX109YXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFthKGkoe3Njb3BlOltgdXNlcjoke259YF0sbWV0cmljOmByZXFgLHdpbmRvdzpzLHNwYW46dX0pKSxhKGkoe3Njb3BlOltgdXNlcjoke259YF0sbWV0cmljOmBjb3N0YCx3aW5kb3c6cyxzcGFuOnV9KSksZD9hKHQoe2tpbmQ6YHVzZXJtb2RlbGAsdXNlcjpuLHdpbmRvdzptLndpbmRvdyxzcGFuOm0uc3BhbixtZXRyaWNzOltgcmVxYCxgY29zdGBdfSkpOlByb21pc2UucmVzb2x2ZShudWxsKV0pO2lmKHRoaXMuZGV0YWlsW25dPy5yZXFJZCE9PXB8fFtoLGcsX10uc29tZSh0PT50LnN0YXR1cz09PWByZWplY3RlZGAmJnQucmVhc29uIGluc3RhbmNlb2YgZSYmKHQucmVhc29uLnN0YXR1cz09PTQwMXx8dC5yZWFzb24uc3RhdHVzPT09NDAzKSkpcmV0dXJuO2xldCB2PV8uc3RhdHVzPT09YHJlamVjdGVkYCYmXy5yZWFzb24gaW5zdGFuY2VvZiBlJiZfLnJlYXNvbi5zdGF0dXM9PT00MDQseT10aGlzLmRldGFpbFtuXT8/YygpLGI9bmV3IFNldChbbChoKSxsKGcpLHY/YGA6bChfKV0uZmlsdGVyKEJvb2xlYW4pKSx4PUFycmF5LmZyb20oYikuam9pbihgOyBgKTt0aGlzLmRldGFpbFtuXT17bG9hZGluZzohMSxlcnJvcjp4LHJlcVNlcmllczpoLnN0YXR1cz09PWBmdWxmaWxsZWRgP2gudmFsdWU6eS5yZXFTZXJpZXMsY29zdFNlcmllczpnLnN0YXR1cz09PWBmdWxmaWxsZWRgP2cudmFsdWU6eS5jb3N0U2VyaWVzLG1vZGVsVG90YWxzOl8uc3RhdHVzPT09YGZ1bGZpbGxlZGA/Xy52YWx1ZTp2P251bGw6eS5tb2RlbFRvdGFscyxtb2RlbFRvdGFsc1VuYXZhaWxhYmxlOnYsZmV0Y2hlZEF0OkRhdGUubm93KCkscmVxSWQ6cH19fX0pO2V4cG9ydHt1IGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"events-BPFIBv4M.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e18gYXMgZSxnIGFzIHQsbHQgYXMgbix2IGFzIHIseSBhcyBpfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO3ZhciBhPTVlMyxvPTIwMCxzPW4oYGV2ZW50c2Ase3N0YXRlOigpPT4oe2V2ZW50czpbXSxzb3VyY2U6YHJlcGxpY2FgLHJlcGxpY2E6YGAsY2FwYWNpdHk6MCxkZWdyYWRlZDohMSxsYXN0VXBkYXRlZDpudWxsLGVycm9yOmBgLGtpbmRGaWx0ZXI6YGAsdXNlckZpbHRlcjpgYCxwb2xsZXI6dm9pZCAwLHJlZnJlc2hpbmc6ITF9KSxhY3Rpb25zOnthc3luYyByZWZyZXNoKCl7aWYoaSgpLmlzQXV0aGVudGljYXRlZCYmIXRoaXMucmVmcmVzaGluZyl7dGhpcy5yZWZyZXNoaW5nPSEwO3RyeXtsZXQgZT1hd2FpdCByKGAvYWRtaW4vYXBpL2V2ZW50cz9saW1pdD0ke299YCk7dGhpcy5ldmVudHM9ZS5ldmVudHMsdGhpcy5zb3VyY2U9ZS5zb3VyY2UsdGhpcy5yZXBsaWNhPWUucmVwbGljYSx0aGlzLmNhcGFjaXR5PWUuY2FwYWNpdHksdGhpcy5kZWdyYWRlZD1lLmRlZ3JhZGVkPz8hMSx0aGlzLmxhc3RVcGRhdGVkPW5ldyBEYXRlLHRoaXMuZXJyb3I9YGB9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIGUmJih0LnN0YXR1cz09PTQwMXx8dC5zdGF0dXM9PT00MDMpKXJldHVybjt0aGlzLmVycm9yPXQgaW5zdGFuY2VvZiBFcnJvcj90Lm1lc3NhZ2U6U3RyaW5nKHQpfWZpbmFsbHl7dGhpcy5yZWZyZXNoaW5nPSExfX19LHNldEtpbmRGaWx0ZXIoZSl7dGhpcy5raW5kRmlsdGVyPWV9LHNldFVzZXJGaWx0ZXIoZSl7dGhpcy51c2VyRmlsdGVyPWV9LHN0YXJ0UG9sbGluZygpe3RoaXMucG9sbGVyfHwodGhpcy5wb2xsZXI9dCh7aW50ZXJ2YWxNczphLHRpY2s6KCk9PnZvaWQgdGhpcy5yZWZyZXNoKCl9KSx0aGlzLnBvbGxlci5zdGFydCgpKX0sc3RvcFBvbGxpbmcoKXt0aGlzLnBvbGxlcj8uc3RvcCgpLHRoaXMucG9sbGVyPXZvaWQgMH19fSk7ZXhwb3J0e3MgYXMgdH07",
|
|
),
|
|
},
|
|
"events-filter-XFnjIaR7.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"dmFyIGU9e3JhdGVfbGltaXQ6YFJhdGUgbGltaXRgLGJ1ZGdldDpgQnVkZ2V0YCxzdG9yZV9kb3duOmBTdG9yZSBkb3duYCx1cHN0cmVhbTpgVXBzdHJlYW0gZXJyb3JgLHRpbWVvdXQ6YFRpbWVvdXRgLHVucHJpY2VkOmBVbnByaWNlZCBtb2RlbGAsY2FwYWNpdHk6YENhcGFjaXR5YH0sdD1PYmplY3Qua2V5cyhlKTtmdW5jdGlvbiBuKGUpe3N3aXRjaChlKXtjYXNlYHJhdGVfbGltaXRgOmNhc2VgYnVkZ2V0YDpjYXNlYGNhcGFjaXR5YDpyZXR1cm5gZGVzdHJ1Y3RpdmVgO2Nhc2Vgc3RvcmVfZG93bmA6Y2FzZWB1cHN0cmVhbWA6Y2FzZWB0aW1lb3V0YDpyZXR1cm5gc2Vjb25kYXJ5YDtkZWZhdWx0OnJldHVybmBvdXRsaW5lYH19ZnVuY3Rpb24gcihlLHQpe2xldCBuPXQua2luZCxyPXQudXNlci50cmltKCkudG9Mb3dlckNhc2UoKTtyZXR1cm4gZS5maWx0ZXIoZT0+e2lmKG4mJmUua2luZCE9PW4pcmV0dXJuITE7aWYoIXIpcmV0dXJuITA7bGV0IHQ9ZS51c2VyPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHIpPz8hMSxpPWUuZ3JvdXA/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocik/PyExO3JldHVybiB0fHxpfSl9ZXhwb3J0e3IgYXMgaSxlIGFzIG4sbiBhcyByLHR9Ow==",
|
|
),
|
|
},
|
|
"forecast-BMSkg5Xs.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"ZnVuY3Rpb24gZShlKXtyZXR1cm4hTnVtYmVyLmlzRmluaXRlKGUpfHxlPC44P2Bub3JtYWxgOmU8MT9gYW1iZXJgOmByZWRgfXZhciB0PTFlNixuPXtyZXFNaW46YHJlcS9taW5gLHJlcURheTpgcmVxL2RheWAsdG9rRGF5OmB0b2tlbnMgKGluK291dCkvZGF5YCx0b2tNb250aDpgdG9rZW5zIChpbitvdXQpL21vbnRoYCxjb3N0RGF5OmBjb3N0L2RheWAsY29zdE1vbnRoOmBjb3N0L21vbnRoYH07ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue2lkOmUsdXNlZDp0LGxpbWl0Om4scmF0aW86dC9ufX1mdW5jdGlvbiBpKGUpe2xldCBuPWUubGltaXRzO2lmKCFufHxlLnN0b3JlRG93bilyZXR1cm5bXTtsZXQgaT1bXTtpZihuLnJlcXVlc3RzUGVyTWludXRlJiZpLnB1c2gocihgcmVxTWluYCxlLnJlcXVlc3RzUGVyTWludXRlLG4ucmVxdWVzdHNQZXJNaW51dGUpKSxuLnJlcXVlc3RzUGVyRGF5JiZpLnB1c2gocihgcmVxRGF5YCxlLnJlcXVlc3RzUGVyRGF5LG4ucmVxdWVzdHNQZXJEYXkpKSxuLnRva2Vuc1BlckRheSYmaS5wdXNoKHIoYHRva0RheWAsZS50b2tlbnNJblBlckRheStlLnRva2Vuc091dFBlckRheSxuLnRva2Vuc1BlckRheSkpLG4udG9rZW5zUGVyTW9udGgmJmkucHVzaChyKGB0b2tNb250aGAsZS50b2tlbnNJblBlck1vbnRoK2UudG9rZW5zT3V0UGVyTW9udGgsbi50b2tlbnNQZXJNb250aCkpLG4uY29zdFBlckRheVVTRCl7bGV0IGE9TWF0aC5yb3VuZChuLmNvc3RQZXJEYXlVU0QqdCk7YT4wJiZpLnB1c2gocihgY29zdERheWAsZS5jb3N0UGVyRGF5TWljcm9Vc2QsYSkpfWlmKG4uY29zdFBlck1vbnRoVVNEKXtsZXQgYT1NYXRoLnJvdW5kKG4uY29zdFBlck1vbnRoVVNEKnQpO2E+MCYmaS5wdXNoKHIoYGNvc3RNb250aGAsZS5jb3N0UGVyTW9udGhNaWNyb1VzZCxhKSl9cmV0dXJuIGl9ZnVuY3Rpb24gYShlKXtsZXQgdD1lLmdldFVUQ0Z1bGxZZWFyKCksbj1lLmdldFVUQ01vbnRoKCkscj1EYXRlLlVUQyh0LG4sMSksaT1EYXRlLlVUQyh0LG4rMSwxKTtyZXR1cm4oZS5nZXRUaW1lKCktcikvKGktcil9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiB0PC4wMj9udWxsOk1hdGgucm91bmQoZS90KX1mdW5jdGlvbiBzKGUsbil7aWYoZT09PW51bGx8fG49PT12b2lkIDB8fG48PTApcmV0dXJue2xpbWl0TWljcm9zOm51bGwscmVtYWluaW5nTWljcm9zOm51bGwsd2lsbEV4Y2VlZDohMX07bGV0IHI9TWF0aC5yb3VuZChuKnQpLGk9ci1lO3JldHVybntsaW1pdE1pY3JvczpyLHJlbWFpbmluZ01pY3JvczppLHdpbGxFeGNlZWQ6aTwwfX1leHBvcnR7dCBhcyBhLG4gYXMgaSxhIGFzIG4saSBhcyBvLG8gYXMgcixlIGFzIHMscyBhcyB0fTs=",
|
|
),
|
|
},
|
|
"index-BiTQ_gCE.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"Y29uc3QgX192aXRlX19tYXBEZXBzPShpLG09X192aXRlX19tYXBEZXBzLGQ9KG0uZnx8KG0uZj1bImFzc2V0cy9Ib21lUGFnZS05QkVuS3FGbi5qcyIsImFzc2V0cy9uYXYtRHpiME9UTl8uanMiLCJhc3NldHMvYmFkZ2UtbnMwajhPVXIuanMiLCJhc3NldHMvZm9yZWNhc3QtQk1Ta2c1WHMuanMiLCJhc3NldHMvRW50aXR5TGluay1Db3ZzRmpFbC5qcyIsImFzc2V0cy9ldmVudHMtQlBGSUJ2NE0uanMiLCJhc3NldHMvZXZlbnRzLWZpbHRlci1YRm5qSWFSNy5qcyIsImFzc2V0cy9rcGktQ1U1MkxEbXEuanMiLCJhc3NldHMvcHJvdmlkZXItcmF0ZS1EVTdPZ1NlQi5qcyIsImFzc2V0cy9TcGVuZFBhZ2UtQ09BV0Nndk4uanMiLCJhc3NldHMvQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIiwiYXNzZXRzL3RhYnMtQmJHSnlDUnIuanMiLCJhc3NldHMvUHJlc2VuY2UtQ3VRVUdGeVMuanMiLCJhc3NldHMvRGF0YVRhYmxlLURWdWVORnVBLmpzIiwiYXNzZXRzL0NvbXBhY3ROdW1iZXItQjFpaFFaSDcuanMiLCJhc3NldHMvYnVybmRvd24tQ3F0ZFhTWWsuanMiLCJhc3NldHMvY2xpcGJvYXJkLUI3M2ZaMGMxLmpzIiwiYXNzZXRzL0NsYW1wZWRSYW5nZU5vdGljZS1CdmhtMWUtQi5qcyIsImFzc2V0cy9UaW1lU2VyaWVzQ2hhcnQtQlA1SWNVeWcuanMiLCJhc3NldHMvY2F0YWxvZy1DLVRmS0xWWi5qcyIsImFzc2V0cy9zZXJpZXMtTklSVkJYTVAuanMiLCJhc3NldHMvQ29uc3VtZXJzUGFnZS1EWjVuSHItQS5qcyIsImFzc2V0cy9zZWFyY2gtZXhwYW5kLUIxcW5LMUg1LmpzIiwiYXNzZXRzL2NvbnN1bWVycy13Qi1pdGpuZi5qcyIsImFzc2V0cy91c2VTZWFyY2hRdWVyeS1EeXNCdC1Jbi5qcyIsImFzc2V0cy9Nb2RlbHNQYWdlLTNOdDNndmxOLmpzIiwiYXNzZXRzL3JlbGlhYmlsaXR5LTBLaUpTalRQLmpzIiwiYXNzZXRzL1JlbGlhYmlsaXR5UGFnZS1ENENqQzVHbi5qcyIsImFzc2V0cy9Db25maWdQYWdlLUJQZ1FqalNCLmpzIiwiYXNzZXRzL1RhcmdldHNQYWdlLUJpMENMLXU2LmpzIl0pKSk9PmkubWFwKGk9PmRbaV0pOwppbXBvcnR7YSBhcyBlLGMgYXMgdCxpIGFzIG4sbCBhcyByLG4gYXMgaSxvIGFzIGEsciBhcyBvLHMsdCBhcyBjLHUgYXMgbH1mcm9tIi4vUHJlc2VuY2UtQ3VRVUdGeVMuanMiO2ltcG9ydHskIGFzIHUsJG4gYXMgZCxBbiBhcyBmLEFyIGFzIHAsQXQgYXMgbSxDIGFzIGgsQ3IgYXMgZyxEIGFzIF8sRHQgYXMgdixFbiBhcyB5LEVyIGFzIGIsRXQgYXMgeCxGciBhcyBTLEcgYXMgQyxIIGFzIHcsSSBhcyBULElyIGFzIEUsSXQgYXMgRCxMdCBhcyBPLE1uIGFzIGssTiBhcyBBLE8gYXMgZWUsT3IgYXMgaixPdCBhcyBNLFAgYXMgdGUsUG4gYXMgbmUsUSBhcyByZSxRbiBhcyBOLFJyIGFzIFAsUnQgYXMgaWUsUyBhcyBhZSxTbiBhcyBvZSxTciBhcyBzZSxUIGFzIGNlLFcgYXMgbGUsWHQgYXMgdWUsWSBhcyBkZSxZdCBhcyBmZSxhIGFzIHBlLGFyIGFzIG1lLGIgYXMgaGUsYnIgYXMgZ2UsYnQgYXMgX2UsYyBhcyB2ZSxjbiBhcyB5ZSxjdCBhcyBiZSxkaSBhcyB4ZSxkbiBhcyBGLGVyIGFzIFNlLGYgYXMgQ2UsZ3QgYXMgd2UsaCBhcyBUZSxociBhcyBFZSxpIGFzIERlLGluIGFzIE9lLGogYXMga2Usam4gYXMgSSxqciBhcyBBZSxrIGFzIGplLGt0IGFzIEwsbCBhcyBNZSxsaSBhcyBOZSxsdCBhcyBQZSxtIGFzIEZlLG1uIGFzIEllLG4gYXMgTGUsb3IgYXMgUmUsb3QgYXMgemUscCBhcyBCZSxxIGFzIFZlLHIgYXMgSGUscnIgYXMgUixzaSBhcyBVZSx0IGFzIFdlLHR0IGFzIEdlLHVpIGFzIEtlLHVuIGFzIHosdm4gYXMgcWUsdyBhcyBCLHduIGFzIFYseCBhcyBKZSx5IGFzIFllLHogYXMgWGUsenQgYXMgSH1mcm9tIi4vbmF2LUR6YjBPVE5fLmpzIjtpbXBvcnR7RiBhcyBaZSxNIGFzIFFlLFAgYXMgJGUsYSBhcyBldCxjIGFzIHR0LGQgYXMgbnQsaCBhcyBydCxpIGFzIGl0LGwgYXMgYXQsbiBhcyBvdCxvIGFzIHN0LHMgYXMgY3QsdCBhcyBsdCx1IGFzIHV0fWZyb20iLi9DYXJkRGVzY3JpcHRpb24tSWRPdDMxN2MuanMiO2Z1bmN0aW9uIGR0KGUsdCl7KHQ9PW51bGx8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBmdChlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIHB0KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGR0KGUpfWZ1bmN0aW9uIG10KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgVHlwZUVycm9yKGBDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25gKX1mdW5jdGlvbiBodChlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLGB2YWx1ZWBpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsRXQoci5rZXkpLHIpfX1mdW5jdGlvbiBndChlLHQsbil7cmV0dXJuIHQmJmh0KGUucHJvdG90eXBlLHQpLG4mJmh0KGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksZX1mdW5jdGlvbiBfdChlLHQpe3ZhciBuPXR5cGVvZiBTeW1ib2w8YHVgJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbYEBAaXRlcmF0b3JgXTtpZighbil7aWYoQXJyYXkuaXNBcnJheShlKXx8KG49T3QoZSkpfHx0JiZlJiZ0eXBlb2YgZS5sZW5ndGg9PWBudW1iZXJgKXtuJiYoZT1uKTt2YXIgcj0wLGk9ZnVuY3Rpb24oKXt9O3JldHVybntzOmksbjpmdW5jdGlvbigpe3JldHVybiByPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtyKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOml9fXRocm93IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9dmFyIGEsbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7bj1uLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1uLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGE9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxuLnJldHVybj09bnVsbHx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgYX19fX1mdW5jdGlvbiBVKGUsdCxuKXtyZXR1cm4odD1FdCh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiB2dChlKXtpZih0eXBlb2YgU3ltYm9sPGB1YCYmZVtTeW1ib2wuaXRlcmF0b3JdIT1udWxsfHxlW2BAQGl0ZXJhdG9yYF0hPW51bGwpcmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24geXQoZSx0KXt2YXIgbj1lPT1udWxsP251bGw6dHlwZW9mIFN5bWJvbDxgdWAmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtgQEBpdGVyYXRvcmBdO2lmKG4hPW51bGwpe3ZhciByLGksYSxvLHM9W10sYz0hMCxsPSExO3RyeXtpZihhPShuPW4uY2FsbChlKSkubmV4dCx0PT09MCl7aWYoT2JqZWN0KG4pIT09bilyZXR1cm47Yz0hMX1lbHNlIGZvcig7IShjPShyPWEuY2FsbChuKSkuZG9uZSkmJihzLnB1c2goci52YWx1ZSkscy5sZW5ndGghPT10KTtjPSEwKTt9Y2F0Y2goZSl7bD0hMCxpPWV9ZmluYWxseXt0cnl7aWYoIWMmJm4ucmV0dXJuIT1udWxsJiYobz1uLnJldHVybigpLE9iamVjdChvKSE9PW8pKXJldHVybn1maW5hbGx5e2lmKGwpdGhyb3cgaX19cmV0dXJuIHN9fWZ1bmN0aW9uIGJ0KCl7dGhyb3cgVHlwZUVycm9yKGBJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24geHQoKXt0aHJvdyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9ZnVuY3Rpb24gU3QoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBXKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XT09bnVsbD97fTphcmd1bWVudHNbdF07dCUyP1N0KE9iamVjdChuKSwhMCkuZm9yRWFjaChmdW5jdGlvbih0KXtVKGUsdCxuW3RdKX0pOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlN0KE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBDdChlLHQpe3JldHVybiBmdChlKXx8eXQoZSx0KXx8T3QoZSx0KXx8YnQoKX1mdW5jdGlvbiB3dChlKXtyZXR1cm4gcHQoZSl8fHZ0KGUpfHxPdChlKXx8eHQoKX1mdW5jdGlvbiBUdChlLHQpe2lmKHR5cGVvZiBlIT1gb2JqZWN0YHx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHR8fGBkZWZhdWx0YCk7aWYodHlwZW9mIHIhPWBvYmplY3RgKXJldHVybiByO3Rocm93IFR5cGVFcnJvcihgQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5gKX1yZXR1cm4odD09PWBzdHJpbmdgP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIEV0KGUpe3ZhciB0PVR0KGUsYHN0cmluZ2ApO3JldHVybiB0eXBlb2YgdD09YHN5bWJvbGA/dDp0K2BgfWZ1bmN0aW9uIER0KGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIER0PXR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PWBzeW1ib2xgP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP2BzeW1ib2xgOnR5cGVvZiBlfSxEdChlKX1mdW5jdGlvbiBPdChlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm4gZHQoZSx0KTt2YXIgbj17fS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiBuPT09YE9iamVjdGAmJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PWBNYXBgfHxuPT09YFNldGA/QXJyYXkuZnJvbShlKTpuPT09YEFyZ3VtZW50c2B8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2R0KGUsdCk6dm9pZCAwfX12YXIga3Q9ZnVuY3Rpb24oKXt9LEF0PXt9LGp0PXt9LE10PW51bGwsTnQ9e21hcms6a3QsbWVhc3VyZTprdH07dHJ5e3R5cGVvZiB3aW5kb3c8YHVgJiYoQXQ9d2luZG93KSx0eXBlb2YgZG9jdW1lbnQ8YHVgJiYoanQ9ZG9jdW1lbnQpLHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyPGB1YCYmKE10PU11dGF0aW9uT2JzZXJ2ZXIpLHR5cGVvZiBwZXJmb3JtYW5jZTxgdWAmJihOdD1wZXJmb3JtYW5jZSl9Y2F0Y2h7fXZhciBQdD0oQXQubmF2aWdhdG9yfHx7fSkudXNlckFnZW50LEZ0PVB0PT09dm9pZCAwP2BgOlB0LEl0PUF0LEc9anQsTHQ9TXQsUnQ9TnQ7SXQuZG9jdW1lbnQ7dmFyIHp0PSEhRy5kb2N1bWVudEVsZW1lbnQmJiEhRy5oZWFkJiZ0eXBlb2YgRy5hZGRFdmVudExpc3RlbmVyPT1gZnVuY3Rpb25gJiZ0eXBlb2YgRy5jcmVhdGVFbGVtZW50PT1gZnVuY3Rpb25gLEJ0PX5GdC5pbmRleE9mKGBNU0lFYCl8fH5GdC5pbmRleE9mKGBUcmlkZW50L2ApLFZ0LEh0PS9mYShrfGtkfHN8cnxsfHR8ZHxkcnxkbHxkdHxifHNscnxzbHByfHdzYnx0bHxuc3xuZHN8ZXN8Z3R8anJ8amZyfGpkcnx1c2J8dWZzYnx1ZHNifGNyfHNzfHNyfHNsfHN0fHNkc3xzZHJ8c2RsfHNkdHxzbGRyfHNscGRyfHByfG1zfHZzKT9bXC1cIF0vLFV0PS9Gb250ID9Bd2Vzb21lID8oWzU2NyBdKikoU29saWR8UmVndWxhcnxMaWdodHxUaGlufER1b3RvbmV8QnJhbmRzfEZyZWV8UHJvfFNoYXJwIER1b3RvbmV8U2hhcnB8S2l0fE5vdGRvZyBEdW98Tm90ZG9nfENoaXNlbHxFdGNofEdyYXBoaXRlfFRodW1icHJpbnR8SmVsbHkgRmlsbHxKZWxseSBEdW98SmVsbHl8VXRpbGl0eXxVdGlsaXR5IEZpbGx8VXRpbGl0eSBEdW98U2xhYiBQcmVzc3xTbGFifFNsYWIgRHVvfFNsYWIgUHJlc3MgRHVvfFBpeGVsfE1vc2FpY3xWZWxsdW18V2hpdGVib2FyZCk/LiovaSxXdD17Y2xhc3NpYzp7ZmE6YHNvbGlkYCxmYXM6YHNvbGlkYCwiZmEtc29saWQiOmBzb2xpZGAsZmFyOmByZWd1bGFyYCwiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhbDpgbGlnaHRgLCJmYS1saWdodCI6YGxpZ2h0YCxmYXQ6YHRoaW5gLCJmYS10aGluIjpgdGhpbmAsZmFiOmBicmFuZHNgLCJmYS1icmFuZHMiOmBicmFuZHNgfSxkdW90b25lOntmYTpgc29saWRgLGZhZDpgc29saWRgLCJmYS1zb2xpZCI6YHNvbGlkYCwiZmEtZHVvdG9uZSI6YHNvbGlkYCxmYWRyOmByZWd1bGFyYCwiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhZGw6YGxpZ2h0YCwiZmEtbGlnaHQiOmBsaWdodGAsZmFkdDpgdGhpbmAsImZhLXRoaW4iOmB0aGluYH0sc2hhcnA6e2ZhOmBzb2xpZGAsZmFzczpgc29saWRgLCJmYS1zb2xpZCI6YHNvbGlkYCxmYXNyOmByZWd1bGFyYCwiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhc2w6YGxpZ2h0YCwiZmEtbGlnaHQiOmBsaWdodGAsZmFzdDpgdGhpbmAsImZhLXRoaW4iOmB0aGluYH0sInNoYXJwLWR1b3RvbmUiOntmYTpgc29saWRgLGZhc2RzOmBzb2xpZGAsImZhLXNvbGlkIjpgc29saWRgLGZhc2RyOmByZWd1bGFyYCwiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhc2RsOmBsaWdodGAsImZhLWxpZ2h0IjpgbGlnaHRgLGZhc2R0OmB0aGluYCwiZmEtdGhpbiI6YHRoaW5gfSxzbGFiOnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhc2xyOmByZWd1bGFyYH0sInNsYWItcHJlc3MiOnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhc2xwcjpgcmVndWxhcmB9LCJzbGFiLWR1byI6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFzbGRyOmByZWd1bGFyYH0sInNsYWItcHJlc3MtZHVvIjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXNscGRyOmByZWd1bGFyYH0sdGh1bWJwcmludDp7ImZhLWxpZ2h0IjpgbGlnaHRgLGZhdGw6YGxpZ2h0YH0sdmVsbHVtOnsiZmEtc29saWQiOmBzb2xpZGAsZmF2czpgc29saWRgfSxwaXhlbDp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYXByOmByZWd1bGFyYH0sbW9zYWljOnsiZmEtc29saWQiOmBzb2xpZGAsZmFtczpgc29saWRgfSx3aGl0ZWJvYXJkOnsiZmEtc2VtaWJvbGQiOmBzZW1pYm9sZGAsZmF3c2I6YHNlbWlib2xkYH0sbm90ZG9nOnsiZmEtc29saWQiOmBzb2xpZGAsZmFuczpgc29saWRgfSwibm90ZG9nLWR1byI6eyJmYS1zb2xpZCI6YHNvbGlkYCxmYW5kczpgc29saWRgfSxldGNoOnsiZmEtc29saWQiOmBzb2xpZGAsZmFlczpgc29saWRgfSxncmFwaGl0ZTp7ImZhLXRoaW4iOmB0aGluYCxmYWd0OmB0aGluYH0samVsbHk6eyJmYS1yZWd1bGFyIjpgcmVndWxhcmAsZmFqcjpgcmVndWxhcmB9LCJqZWxseS1maWxsIjp7ImZhLXJlZ3VsYXIiOmByZWd1bGFyYCxmYWpmcjpgcmVndWxhcmB9LCJqZWxseS1kdW8iOnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhamRyOmByZWd1bGFyYH0sY2hpc2VsOnsiZmEtcmVndWxhciI6YHJlZ3VsYXJgLGZhY3I6YHJlZ3VsYXJgfSx1dGlsaXR5OnsiZmEtc2VtaWJvbGQiOmBzZW1pYm9sZGAsZmF1c2I6YHNlbWlib2xkYH0sInV0aWxpdHktZHVvIjp7ImZhLXNlbWlib2xkIjpgc2VtaWJvbGRgLGZhdWRzYjpgc2VtaWJvbGRgfSwidXRpbGl0eS1maWxsIjp7ImZhLXNlbWlib2xkIjpgc2VtaWJvbGRgLGZhdWZzYjpgc2VtaWJvbGRgfX0sR3Q9e0dST1VQOmBkdW90b25lLWdyb3VwYCxTV0FQX09QQUNJVFk6YHN3YXAtb3BhY2l0eWAsUFJJTUFSWTpgcHJpbWFyeWAsU0VDT05EQVJZOmBzZWNvbmRhcnlgfSxLdD1bYGZhLWNsYXNzaWNgLGBmYS1kdW90b25lYCxgZmEtc2hhcnBgLGBmYS1zaGFycC1kdW90b25lYCxgZmEtdGh1bWJwcmludGAsYGZhLXdoaXRlYm9hcmRgLGBmYS1ub3Rkb2dgLGBmYS1ub3Rkb2ctZHVvYCxgZmEtY2hpc2VsYCxgZmEtZXRjaGAsYGZhLWdyYXBoaXRlYCxgZmEtamVsbHlgLGBmYS1qZWxseS1maWxsYCxgZmEtamVsbHktZHVvYCxgZmEtc2xhYmAsYGZhLXNsYWItcHJlc3NgLGBmYS1zbGFiLXByZXNzLWR1b2AsYGZhLXNsYWItZHVvYCxgZmEtbW9zYWljYCxgZmEtcGl4ZWxgLGBmYS12ZWxsdW1gLGBmYS11dGlsaXR5YCxgZmEtdXRpbGl0eS1kdW9gLGBmYS11dGlsaXR5LWZpbGxgXSxLPWBjbGFzc2ljYCxxdD1gZHVvdG9uZWAsSnQ9YHNoYXJwYCxZdD1gc2hhcnAtZHVvdG9uZWAsWHQ9YGNoaXNlbGAsWnQ9YGV0Y2hgLFF0PWBncmFwaGl0ZWAsJHQ9YGplbGx5YCxlbj1gamVsbHktZHVvYCx0bj1gamVsbHktZmlsbGAsbm49YG1vc2FpY2Ascm49YG5vdGRvZ2AsYW49YG5vdGRvZy1kdW9gLG9uPWBwaXhlbGAsc249YHNsYWJgLGNuPWBzbGFiLWR1b2AsbG49YHNsYWItcHJlc3NgLHVuPWBzbGFiLXByZXNzLWR1b2AsZG49YHRodW1icHJpbnRgLGZuPWB1dGlsaXR5YCxwbj1gdXRpbGl0eS1kdW9gLG1uPWB1dGlsaXR5LWZpbGxgLGhuPWB2ZWxsdW1gLGduPWB3aGl0ZWJvYXJkYCxfbj1gQ2xhc3NpY2Asdm49YER1b3RvbmVgLHluPWBTaGFycGAsYm49YFNoYXJwIER1b3RvbmVgLHhuPWBDaGlzZWxgLFNuPWBFdGNoYCxDbj1gR3JhcGhpdGVgLHduPWBKZWxseWAsVG49YEplbGx5IER1b2AsRW49YEplbGx5IEZpbGxgLERuPWBNb3NhaWNgLE9uPWBOb3Rkb2dgLGtuPWBOb3Rkb2cgRHVvYCxBbj1gUGl4ZWxgLGpuPWBTbGFiYCxNbj1gU2xhYiBEdW9gLE5uPWBTbGFiIFByZXNzYCxQbj1gU2xhYiBQcmVzcyBEdW9gLEZuPWBUaHVtYnByaW50YCxJbj1gVXRpbGl0eWAsTG49YFV0aWxpdHkgRHVvYCxSbj1gVXRpbGl0eSBGaWxsYCx6bj1gVmVsbHVtYCxCbj1gV2hpdGVib2FyZGAsVm49W0sscXQsSnQsWXQsWHQsWnQsUXQsJHQsZW4sdG4sbm4scm4sYW4sb24sc24sY24sbG4sdW4sZG4sZm4scG4sbW4saG4sZ25dO1Z0PXt9LFUoVShVKFUoVShVKFUoVShVKFUoVnQsSyxfbikscXQsdm4pLEp0LHluKSxZdCxibiksWHQseG4pLFp0LFNuKSxRdCxDbiksJHQsd24pLGVuLFRuKSx0bixFbiksVShVKFUoVShVKFUoVShVKFUoVShWdCxubixEbikscm4sT24pLGFuLGtuKSxvbixBbiksc24sam4pLGNuLE1uKSxsbixObiksdW4sUG4pLGRuLEZuKSxmbixJbiksVShVKFUoVShWdCxwbixMbiksbW4sUm4pLGhuLHpuKSxnbixCbik7dmFyIEhuPXtjbGFzc2ljOns5MDA6YGZhc2AsNDAwOmBmYXJgLG5vcm1hbDpgZmFyYCwzMDA6YGZhbGAsMTAwOmBmYXRgfSxkdW90b25lOns5MDA6YGZhZGAsNDAwOmBmYWRyYCwzMDA6YGZhZGxgLDEwMDpgZmFkdGB9LHNoYXJwOns5MDA6YGZhc3NgLDQwMDpgZmFzcmAsMzAwOmBmYXNsYCwxMDA6YGZhc3RgfSwic2hhcnAtZHVvdG9uZSI6ezkwMDpgZmFzZHNgLDQwMDpgZmFzZHJgLDMwMDpgZmFzZGxgLDEwMDpgZmFzZHRgfSxzbGFiOns0MDA6YGZhc2xyYH0sInNsYWItcHJlc3MiOns0MDA6YGZhc2xwcmB9LCJzbGFiLWR1byI6ezQwMDpgZmFzbGRyYH0sInNsYWItcHJlc3MtZHVvIjp7NDAwOmBmYXNscGRyYH0sdmVsbHVtOns5MDA6YGZhdnNgfSxtb3NhaWM6ezkwMDpgZmFtc2B9LHBpeGVsOns0MDA6YGZhcHJgfSx3aGl0ZWJvYXJkOns2MDA6YGZhd3NiYH0sdGh1bWJwcmludDp7MzAwOmBmYXRsYH0sbm90ZG9nOns5MDA6YGZhbnNgfSwibm90ZG9nLWR1byI6ezkwMDpgZmFuZHNgfSxldGNoOns5MDA6YGZhZXNgfSxncmFwaGl0ZTp7MTAwOmBmYWd0YH0sY2hpc2VsOns0MDA6YGZhY3JgfSxqZWxseTp7NDAwOmBmYWpyYH0sImplbGx5LWZpbGwiOns0MDA6YGZhamZyYH0sImplbGx5LWR1byI6ezQwMDpgZmFqZHJgfSx1dGlsaXR5Ons2MDA6YGZhdXNiYH0sInV0aWxpdHktZHVvIjp7NjAwOmBmYXVkc2JgfSwidXRpbGl0eS1maWxsIjp7NjAwOmBmYXVmc2JgfX0sVW49eyJGb250IEF3ZXNvbWUgNyBGcmVlIjp7OTAwOmBmYXNgLDQwMDpgZmFyYH0sIkZvbnQgQXdlc29tZSA3IFBybyI6ezkwMDpgZmFzYCw0MDA6YGZhcmAsbm9ybWFsOmBmYXJgLDMwMDpgZmFsYCwxMDA6YGZhdGB9LCJGb250IEF3ZXNvbWUgNyBCcmFuZHMiOns0MDA6YGZhYmAsbm9ybWFsOmBmYWJgfSwiRm9udCBBd2Vzb21lIDcgRHVvdG9uZSI6ezkwMDpgZmFkYCw0MDA6YGZhZHJgLG5vcm1hbDpgZmFkcmAsMzAwOmBmYWRsYCwxMDA6YGZhZHRgfSwiRm9udCBBd2Vzb21lIDcgU2hhcnAiOns5MDA6YGZhc3NgLDQwMDpgZmFzcmAsbm9ybWFsOmBmYXNyYCwzMDA6YGZhc2xgLDEwMDpgZmFzdGB9LCJGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lIjp7OTAwOmBmYXNkc2AsNDAwOmBmYXNkcmAsbm9ybWFsOmBmYXNkcmAsMzAwOmBmYXNkbGAsMTAwOmBmYXNkdGB9LCJGb250IEF3ZXNvbWUgNyBKZWxseSI6ezQwMDpgZmFqcmAsbm9ybWFsOmBmYWpyYH0sIkZvbnQgQXdlc29tZSA3IEplbGx5IEZpbGwiOns0MDA6YGZhamZyYCxub3JtYWw6YGZhamZyYH0sIkZvbnQgQXdlc29tZSA3IEplbGx5IER1byI6ezQwMDpgZmFqZHJgLG5vcm1hbDpgZmFqZHJgfSwiRm9udCBBd2Vzb21lIDcgU2xhYiI6ezQwMDpgZmFzbHJgLG5vcm1hbDpgZmFzbHJgfSwiRm9udCBBd2Vzb21lIDcgU2xhYiBQcmVzcyI6ezQwMDpgZmFzbHByYCxub3JtYWw6YGZhc2xwcmB9LCJGb250IEF3ZXNvbWUgNyBTbGFiIER1byI6ezQwMDpgZmFzbGRyYCxub3JtYWw6YGZhc2xkcmB9LCJGb250IEF3ZXNvbWUgNyBTbGFiIFByZXNzIER1byI6ezQwMDpgZmFzbHBkcmAsbm9ybWFsOmBmYXNscGRyYH0sIkZvbnQgQXdlc29tZSA3IFBpeGVsIjp7NDAwOmBmYXByYCxub3JtYWw6YGZhcHJgfSwiRm9udCBBd2Vzb21lIDcgTW9zYWljIjp7OTAwOmBmYW1zYCxub3JtYWw6YGZhbXNgfSwiRm9udCBBd2Vzb21lIDcgVmVsbHVtIjp7OTAwOmBmYXZzYCxub3JtYWw6YGZhdnNgfSwiRm9udCBBd2Vzb21lIDcgVGh1bWJwcmludCI6ezMwMDpgZmF0bGAsbm9ybWFsOmBmYXRsYH0sIkZvbnQgQXdlc29tZSA3IE5vdGRvZyI6ezkwMDpgZmFuc2Asbm9ybWFsOmBmYW5zYH0sIkZvbnQgQXdlc29tZSA3IE5vdGRvZyBEdW8iOns5MDA6YGZhbmRzYCxub3JtYWw6YGZhbmRzYH0sIkZvbnQgQXdlc29tZSA3IEV0Y2giOns5MDA6YGZhZXNgLG5vcm1hbDpgZmFlc2B9LCJGb250IEF3ZXNvbWUgNyBHcmFwaGl0ZSI6ezEwMDpgZmFndGAsbm9ybWFsOmBmYWd0YH0sIkZvbnQgQXdlc29tZSA3IENoaXNlbCI6ezQwMDpgZmFjcmAsbm9ybWFsOmBmYWNyYH0sIkZvbnQgQXdlc29tZSA3IFdoaXRlYm9hcmQiOns2MDA6YGZhd3NiYCxub3JtYWw6YGZhd3NiYH0sIkZvbnQgQXdlc29tZSA3IFV0aWxpdHkiOns2MDA6YGZhdXNiYCxub3JtYWw6YGZhdXNiYH0sIkZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRHVvIjp7NjAwOmBmYXVkc2JgLG5vcm1hbDpgZmF1ZHNiYH0sIkZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRmlsbCI6ezYwMDpgZmF1ZnNiYCxub3JtYWw6YGZhdWZzYmB9fSxXbj1uZXcgTWFwKFtbYGNsYXNzaWNgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgLGByZWd1bGFyYCxgbGlnaHRgLGB0aGluYCxgYnJhbmRzYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sW2BkdW90b25lYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhZGAsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYCxgcmVndWxhcmAsYGxpZ2h0YCxgdGhpbmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgc2hhcnBgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYCxgcmVndWxhcmAsYGxpZ2h0YCxgdGhpbmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgc2hhcnAtZHVvdG9uZWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXNkc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYCxgcmVndWxhcmAsYGxpZ2h0YCxgdGhpbmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgY2hpc2VsYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhY3JgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYGV0Y2hgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFlc2AsZGVmYXVsdFN0eWxlSWQ6YHNvbGlkYCxzdHlsZUlkczpbYHNvbGlkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6OTAwfV0sW2BncmFwaGl0ZWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYWd0YCxkZWZhdWx0U3R5bGVJZDpgdGhpbmAsc3R5bGVJZHM6W2B0aGluYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6MTAwfV0sW2BqZWxseWAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYWpyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2BqZWxseS1kdW9gLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFqZHJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYGplbGx5LWZpbGxgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFqZnJgLGRlZmF1bHRTdHlsZUlkOmByZWd1bGFyYCxzdHlsZUlkczpbYHJlZ3VsYXJgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo0MDB9XSxbYG1vc2FpY2Ase2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYW1zYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYG5vdGRvZ2Ase2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYW5zYCxkZWZhdWx0U3R5bGVJZDpgc29saWRgLHN0eWxlSWRzOltgc29saWRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo5MDB9XSxbYG5vdGRvZy1kdW9gLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFuZHNgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgcGl4ZWxgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFwcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgc2xhYmAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXNscmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgc2xhYi1kdW9gLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzbGRyYCxkZWZhdWx0U3R5bGVJZDpgcmVndWxhcmAsc3R5bGVJZHM6W2ByZWd1bGFyYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NDAwfV0sW2BzbGFiLXByZXNzYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhc2xwcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgc2xhYi1wcmVzcy1kdW9gLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmFzbHBkcmAsZGVmYXVsdFN0eWxlSWQ6YHJlZ3VsYXJgLHN0eWxlSWRzOltgcmVndWxhcmBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjQwMH1dLFtgdGh1bWJwcmludGAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXRsYCxkZWZhdWx0U3R5bGVJZDpgbGlnaHRgLHN0eWxlSWRzOltgbGlnaHRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDozMDB9XSxbYHV0aWxpdHlgLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF1c2JgLGRlZmF1bHRTdHlsZUlkOmBzZW1pYm9sZGAsc3R5bGVJZHM6W2BzZW1pYm9sZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjYwMH1dLFtgdXRpbGl0eS1kdW9gLHtkZWZhdWx0U2hvcnRQcmVmaXhJZDpgZmF1ZHNiYCxkZWZhdWx0U3R5bGVJZDpgc2VtaWJvbGRgLHN0eWxlSWRzOltgc2VtaWJvbGRgXSxmdXR1cmVTdHlsZUlkczpbXSxkZWZhdWx0Rm9udFdlaWdodDo2MDB9XSxbYHV0aWxpdHktZmlsbGAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXVmc2JgLGRlZmF1bHRTdHlsZUlkOmBzZW1pYm9sZGAsc3R5bGVJZHM6W2BzZW1pYm9sZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjYwMH1dLFtgdmVsbHVtYCx7ZGVmYXVsdFNob3J0UHJlZml4SWQ6YGZhdnNgLGRlZmF1bHRTdHlsZUlkOmBzb2xpZGAsc3R5bGVJZHM6W2Bzb2xpZGBdLGZ1dHVyZVN0eWxlSWRzOltdLGRlZmF1bHRGb250V2VpZ2h0OjkwMH1dLFtgd2hpdGVib2FyZGAse2RlZmF1bHRTaG9ydFByZWZpeElkOmBmYXdzYmAsZGVmYXVsdFN0eWxlSWQ6YHNlbWlib2xkYCxzdHlsZUlkczpbYHNlbWlib2xkYF0sZnV0dXJlU3R5bGVJZHM6W10sZGVmYXVsdEZvbnRXZWlnaHQ6NjAwfV1dKSxHbj17Y2hpc2VsOntyZWd1bGFyOmBmYWNyYH0sY2xhc3NpYzp7YnJhbmRzOmBmYWJgLGxpZ2h0OmBmYWxgLHJlZ3VsYXI6YGZhcmAsc29saWQ6YGZhc2AsdGhpbjpgZmF0YH0sZHVvdG9uZTp7bGlnaHQ6YGZhZGxgLHJlZ3VsYXI6YGZhZHJgLHNvbGlkOmBmYWRgLHRoaW46YGZhZHRgfSxldGNoOntzb2xpZDpgZmFlc2B9LGdyYXBoaXRlOnt0aGluOmBmYWd0YH0samVsbHk6e3JlZ3VsYXI6YGZhanJgfSwiamVsbHktZHVvIjp7cmVndWxhcjpgZmFqZHJgfSwiamVsbHktZmlsbCI6e3JlZ3VsYXI6YGZhamZyYH0sbW9zYWljOntzb2xpZDpgZmFtc2B9LG5vdGRvZzp7c29saWQ6YGZhbnNgfSwibm90ZG9nLWR1byI6e3NvbGlkOmBmYW5kc2B9LHBpeGVsOntyZWd1bGFyOmBmYXByYH0sc2hhcnA6e2xpZ2h0OmBmYXNsYCxyZWd1bGFyOmBmYXNyYCxzb2xpZDpgZmFzc2AsdGhpbjpgZmFzdGB9LCJzaGFycC1kdW90b25lIjp7bGlnaHQ6YGZhc2RsYCxyZWd1bGFyOmBmYXNkcmAsc29saWQ6YGZhc2RzYCx0aGluOmBmYXNkdGB9LHNsYWI6e3JlZ3VsYXI6YGZhc2xyYH0sInNsYWItZHVvIjp7cmVndWxhcjpgZmFzbGRyYH0sInNsYWItcHJlc3MiOntyZWd1bGFyOmBmYXNscHJgfSwic2xhYi1wcmVzcy1kdW8iOntyZWd1bGFyOmBmYXNscGRyYH0sdGh1bWJwcmludDp7bGlnaHQ6YGZhdGxgfSx1dGlsaXR5OntzZW1pYm9sZDpgZmF1c2JgfSwidXRpbGl0eS1kdW8iOntzZW1pYm9sZDpgZmF1ZHNiYH0sInV0aWxpdHktZmlsbCI6e3NlbWlib2xkOmBmYXVmc2JgfSx2ZWxsdW06e3NvbGlkOmBmYXZzYH0sd2hpdGVib2FyZDp7c2VtaWJvbGQ6YGZhd3NiYH19LEtuPVtgZmFrYCxgZmEta2l0YCxgZmFrZGAsYGZhLWtpdC1kdW90b25lYF0scW49e2tpdDp7ZmFrOmBraXRgLCJmYS1raXQiOmBraXRgfSwia2l0LWR1b3RvbmUiOntmYWtkOmBraXQtZHVvdG9uZWAsImZhLWtpdC1kdW90b25lIjpga2l0LWR1b3RvbmVgfX0sSm49W2BraXRgXTtVKFUoe30sYGtpdGAsYEtpdGApLGBraXQtZHVvdG9uZWAsYEtpdCBEdW90b25lYCk7dmFyIFluPXtraXQ6eyJmYS1raXQiOmBmYWtgfSwia2l0LWR1b3RvbmUiOnsiZmEta2l0LWR1b3RvbmUiOmBmYWtkYH19LFhuPXsiRm9udCBBd2Vzb21lIEtpdCI6ezQwMDpgZmFrYCxub3JtYWw6YGZha2B9LCJGb250IEF3ZXNvbWUgS2l0IER1b3RvbmUiOns0MDA6YGZha2RgLG5vcm1hbDpgZmFrZGB9fSxabj17a2l0OntmYWs6YGZhLWtpdGB9LCJraXQtZHVvdG9uZSI6e2Zha2Q6YGZhLWtpdC1kdW90b25lYH19LFFuPXtraXQ6e2tpdDpgZmFrYH0sImtpdC1kdW90b25lIjp7ImtpdC1kdW90b25lIjpgZmFrZGB9fSwkbixlcj17R1JPVVA6YGR1b3RvbmUtZ3JvdXBgLFNXQVBfT1BBQ0lUWTpgc3dhcC1vcGFjaXR5YCxQUklNQVJZOmBwcmltYXJ5YCxTRUNPTkRBUlk6YHNlY29uZGFyeWB9LHRyPVtgZmEtY2xhc3NpY2AsYGZhLWR1b3RvbmVgLGBmYS1zaGFycGAsYGZhLXNoYXJwLWR1b3RvbmVgLGBmYS10aHVtYnByaW50YCxgZmEtd2hpdGVib2FyZGAsYGZhLW5vdGRvZ2AsYGZhLW5vdGRvZy1kdW9gLGBmYS1jaGlzZWxgLGBmYS1ldGNoYCxgZmEtZ3JhcGhpdGVgLGBmYS1qZWxseWAsYGZhLWplbGx5LWZpbGxgLGBmYS1qZWxseS1kdW9gLGBmYS1zbGFiYCxgZmEtc2xhYi1wcmVzc2AsYGZhLXNsYWItcHJlc3MtZHVvYCxgZmEtc2xhYi1kdW9gLGBmYS1tb3NhaWNgLGBmYS1waXhlbGAsYGZhLXZlbGx1bWAsYGZhLXV0aWxpdHlgLGBmYS11dGlsaXR5LWR1b2AsYGZhLXV0aWxpdHktZmlsbGBdOyRuPXt9LFUoVShVKFUoVShVKFUoVShVKFUoJG4sYGNsYXNzaWNgLGBDbGFzc2ljYCksYGR1b3RvbmVgLGBEdW90b25lYCksYHNoYXJwYCxgU2hhcnBgKSxgc2hhcnAtZHVvdG9uZWAsYFNoYXJwIER1b3RvbmVgKSxgY2hpc2VsYCxgQ2hpc2VsYCksYGV0Y2hgLGBFdGNoYCksYGdyYXBoaXRlYCxgR3JhcGhpdGVgKSxgamVsbHlgLGBKZWxseWApLGBqZWxseS1kdW9gLGBKZWxseSBEdW9gKSxgamVsbHktZmlsbGAsYEplbGx5IEZpbGxgKSxVKFUoVShVKFUoVShVKFUoVShVKCRuLGBtb3NhaWNgLGBNb3NhaWNgKSxgbm90ZG9nYCxgTm90ZG9nYCksYG5vdGRvZy1kdW9gLGBOb3Rkb2cgRHVvYCksYHBpeGVsYCxgUGl4ZWxgKSxgc2xhYmAsYFNsYWJgKSxgc2xhYi1kdW9gLGBTbGFiIER1b2ApLGBzbGFiLXByZXNzYCxgU2xhYiBQcmVzc2ApLGBzbGFiLXByZXNzLWR1b2AsYFNsYWIgUHJlc3MgRHVvYCksYHRodW1icHJpbnRgLGBUaHVtYnByaW50YCksYHV0aWxpdHlgLGBVdGlsaXR5YCksVShVKFUoVSgkbixgdXRpbGl0eS1kdW9gLGBVdGlsaXR5IER1b2ApLGB1dGlsaXR5LWZpbGxgLGBVdGlsaXR5IEZpbGxgKSxgdmVsbHVtYCxgVmVsbHVtYCksYHdoaXRlYm9hcmRgLGBXaGl0ZWJvYXJkYCksVShVKHt9LGBraXRgLGBLaXRgKSxga2l0LWR1b3RvbmVgLGBLaXQgRHVvdG9uZWApO3ZhciBucj17Y2xhc3NpYzp7ImZhLWJyYW5kcyI6YGZhYmAsImZhLWR1b3RvbmUiOmBmYWRgLCJmYS1saWdodCI6YGZhbGAsImZhLXJlZ3VsYXIiOmBmYXJgLCJmYS1zb2xpZCI6YGZhc2AsImZhLXRoaW4iOmBmYXRgfSxkdW90b25lOnsiZmEtcmVndWxhciI6YGZhZHJgLCJmYS1saWdodCI6YGZhZGxgLCJmYS10aGluIjpgZmFkdGB9LHNoYXJwOnsiZmEtc29saWQiOmBmYXNzYCwiZmEtcmVndWxhciI6YGZhc3JgLCJmYS1saWdodCI6YGZhc2xgLCJmYS10aGluIjpgZmFzdGB9LCJzaGFycC1kdW90b25lIjp7ImZhLXNvbGlkIjpgZmFzZHNgLCJmYS1yZWd1bGFyIjpgZmFzZHJgLCJmYS1saWdodCI6YGZhc2RsYCwiZmEtdGhpbiI6YGZhc2R0YH0sc2xhYjp7ImZhLXJlZ3VsYXIiOmBmYXNscmB9LCJzbGFiLXByZXNzIjp7ImZhLXJlZ3VsYXIiOmBmYXNscHJgfSwic2xhYi1kdW8iOnsiZmEtcmVndWxhciI6YGZhc2xkcmB9LCJzbGFiLXByZXNzLWR1byI6eyJmYS1yZWd1bGFyIjpgZmFzbHBkcmB9LHBpeGVsOnsiZmEtcmVndWxhciI6YGZhcHJgfSxtb3NhaWM6eyJmYS1zb2xpZCI6YGZhbXNgfSx2ZWxsdW06eyJmYS1zb2xpZCI6YGZhdnNgfSx3aGl0ZWJvYXJkOnsiZmEtc2VtaWJvbGQiOmBmYXdzYmB9LHRodW1icHJpbnQ6eyJmYS1saWdodCI6YGZhdGxgfSxub3Rkb2c6eyJmYS1zb2xpZCI6YGZhbnNgfSwibm90ZG9nLWR1byI6eyJmYS1zb2xpZCI6YGZhbmRzYH0sZXRjaDp7ImZhLXNvbGlkIjpgZmFlc2B9LGdyYXBoaXRlOnsiZmEtdGhpbiI6YGZhZ3RgfSxqZWxseTp7ImZhLXJlZ3VsYXIiOmBmYWpyYH0sImplbGx5LWZpbGwiOnsiZmEtcmVndWxhciI6YGZhamZyYH0sImplbGx5LWR1byI6eyJmYS1yZWd1bGFyIjpgZmFqZHJgfSxjaGlzZWw6eyJmYS1yZWd1bGFyIjpgZmFjcmB9LHV0aWxpdHk6eyJmYS1zZW1pYm9sZCI6YGZhdXNiYH0sInV0aWxpdHktZHVvIjp7ImZhLXNlbWlib2xkIjpgZmF1ZHNiYH0sInV0aWxpdHktZmlsbCI6eyJmYS1zZW1pYm9sZCI6YGZhdWZzYmB9fSxycj17Y2xhc3NpYzpbYGZhc2AsYGZhcmAsYGZhbGAsYGZhdGAsYGZhZGBdLGR1b3RvbmU6W2BmYWRyYCxgZmFkbGAsYGZhZHRgXSxzaGFycDpbYGZhc3NgLGBmYXNyYCxgZmFzbGAsYGZhc3RgXSwic2hhcnAtZHVvdG9uZSI6W2BmYXNkc2AsYGZhc2RyYCxgZmFzZGxgLGBmYXNkdGBdLHNsYWI6W2BmYXNscmBdLCJzbGFiLXByZXNzIjpbYGZhc2xwcmBdLCJzbGFiLWR1byI6W2BmYXNsZHJgXSwic2xhYi1wcmVzcy1kdW8iOltgZmFzbHBkcmBdLHBpeGVsOltgZmFwcmBdLG1vc2FpYzpbYGZhbXNgXSx2ZWxsdW06W2BmYXZzYF0sd2hpdGVib2FyZDpbYGZhd3NiYF0sdGh1bWJwcmludDpbYGZhdGxgXSxub3Rkb2c6W2BmYW5zYF0sIm5vdGRvZy1kdW8iOltgZmFuZHNgXSxldGNoOltgZmFlc2BdLGdyYXBoaXRlOltgZmFndGBdLGplbGx5OltgZmFqcmBdLCJqZWxseS1maWxsIjpbYGZhamZyYF0sImplbGx5LWR1byI6W2BmYWpkcmBdLGNoaXNlbDpbYGZhY3JgXSx1dGlsaXR5OltgZmF1c2JgXSwidXRpbGl0eS1kdW8iOltgZmF1ZHNiYF0sInV0aWxpdHktZmlsbCI6W2BmYXVmc2JgXX0saXI9e2NsYXNzaWM6e2ZhYjpgZmEtYnJhbmRzYCxmYWQ6YGZhLWR1b3RvbmVgLGZhbDpgZmEtbGlnaHRgLGZhcjpgZmEtcmVndWxhcmAsZmFzOmBmYS1zb2xpZGAsZmF0OmBmYS10aGluYH0sZHVvdG9uZTp7ZmFkcjpgZmEtcmVndWxhcmAsZmFkbDpgZmEtbGlnaHRgLGZhZHQ6YGZhLXRoaW5gfSxzaGFycDp7ZmFzczpgZmEtc29saWRgLGZhc3I6YGZhLXJlZ3VsYXJgLGZhc2w6YGZhLWxpZ2h0YCxmYXN0OmBmYS10aGluYH0sInNoYXJwLWR1b3RvbmUiOntmYXNkczpgZmEtc29saWRgLGZhc2RyOmBmYS1yZWd1bGFyYCxmYXNkbDpgZmEtbGlnaHRgLGZhc2R0OmBmYS10aGluYH0sc2xhYjp7ZmFzbHI6YGZhLXJlZ3VsYXJgfSwic2xhYi1wcmVzcyI6e2Zhc2xwcjpgZmEtcmVndWxhcmB9LCJzbGFiLWR1byI6e2Zhc2xkcjpgZmEtcmVndWxhcmB9LCJzbGFiLXByZXNzLWR1byI6e2Zhc2xwZHI6YGZhLXJlZ3VsYXJgfSxwaXhlbDp7ZmFwcjpgZmEtcmVndWxhcmB9LG1vc2FpYzp7ZmFtczpgZmEtc29saWRgfSx2ZWxsdW06e2ZhdnM6YGZhLXNvbGlkYH0sd2hpdGVib2FyZDp7ZmF3c2I6YGZhLXNlbWlib2xkYH0sdGh1bWJwcmludDp7ZmF0bDpgZmEtbGlnaHRgfSxub3Rkb2c6e2ZhbnM6YGZhLXNvbGlkYH0sIm5vdGRvZy1kdW8iOntmYW5kczpgZmEtc29saWRgfSxldGNoOntmYWVzOmBmYS1zb2xpZGB9LGdyYXBoaXRlOntmYWd0OmBmYS10aGluYH0samVsbHk6e2ZhanI6YGZhLXJlZ3VsYXJgfSwiamVsbHktZmlsbCI6e2ZhamZyOmBmYS1yZWd1bGFyYH0sImplbGx5LWR1byI6e2ZhamRyOmBmYS1yZWd1bGFyYH0sY2hpc2VsOntmYWNyOmBmYS1yZWd1bGFyYH0sdXRpbGl0eTp7ZmF1c2I6YGZhLXNlbWlib2xkYH0sInV0aWxpdHktZHVvIjp7ZmF1ZHNiOmBmYS1zZW1pYm9sZGB9LCJ1dGlsaXR5LWZpbGwiOntmYXVmc2I6YGZhLXNlbWlib2xkYH19LGFyPWBmYS5mYXMuZmFyLmZhbC5mYXQuZmFkLmZhZHIuZmFkbC5mYWR0LmZhYi5mYXNzLmZhc3IuZmFzbC5mYXN0LmZhc2RzLmZhc2RyLmZhc2RsLmZhc2R0LmZhc2xyLmZhc2xwci5mYXNsZHIuZmFzbHBkci5mYXByLmZhbXMuZmF2cy5mYXdzYi5mYXRsLmZhbnMuZmFuZHMuZmFlcy5mYWd0LmZhanIuZmFqZnIuZmFqZHIuZmFjci5mYXVzYi5mYXVkc2IuZmF1ZnNiYC5zcGxpdChgLmApLmNvbmNhdCh0cixbYGZhLXNvbGlkYCxgZmEtcmVndWxhcmAsYGZhLWxpZ2h0YCxgZmEtdGhpbmAsYGZhLWR1b3RvbmVgLGBmYS1icmFuZHNgLGBmYS1zZW1pYm9sZGBdKSxvcj1bYHNvbGlkYCxgcmVndWxhcmAsYGxpZ2h0YCxgdGhpbmAsYGR1b3RvbmVgLGBicmFuZHNgLGBzZW1pYm9sZGBdLHNyPVsxLDIsMyw0LDUsNiw3LDgsOSwxMF0sY3I9c3IuY29uY2F0KFsxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMF0pLGxyPVtdLmNvbmNhdCh3dChPYmplY3Qua2V5cyhycikpLG9yLFtgYXdgLGBmd2AsYHB1bGwtbGVmdGAsYHB1bGwtcmlnaHRgXSxbYDJ4c2AsYHhzYCxgc21gLGBsZ2AsYHhsYCxgMnhsYCxgYmVhdGAsYGJlYXQtZmFkZWAsYGJvcmRlcmAsYGJvdW5jZWAsYGJ1enpgLGBjYW52YXMtc3F1YXJlYCxgY2FudmFzLXJvb215YCxgZmFkZWAsYGZsaXAtMzYwYCxgZmxpcC1ib3RoYCxgZmxpcC1ob3Jpem9udGFsYCxgZmxpcC12ZXJ0aWNhbGAsYGZsaXBgLGBmbG9hdGAsYGludmVyc2VgLGBqZWxsb2AsYGxheWVyc2AsYGxheWVycy1ib3R0b20tbGVmdGAsYGxheWVycy1ib3R0b20tcmlnaHRgLGBsYXllcnMtY291bnRlcmAsYGxheWVycy10ZXh0YCxgbGF5ZXJzLXRvcC1sZWZ0YCxgbGF5ZXJzLXRvcC1yaWdodGAsYGxpYCxgcHVsbC1lbmRgLGBwdWxsLXN0YXJ0YCxgcHVsc2VgLGByb3RhdGUtMTgwYCxgcm90YXRlLTI3MGAsYHJvdGF0ZS05MGAsYHJvdGF0ZS1ieWAsYHNoYWtlYCxgc3Bpbi1wdWxzZWAsYHNwaW4tcmV2ZXJzZWAsYHNwaW5gLGBzcGluLXNuYXBgLGBzcGluLXNuYXAtNGAsYHNwaW4tc25hcC04YCxgc3RhY2stMXhgLGBzdGFjay0yeGAsYHN0YWNrYCxgc3dpbmdgLGB1bGAsYHdhZ2AsYHdpZHRoLWF1dG9gLGB3aWR0aC1maXhlZGAsZXIuR1JPVVAsZXIuU1dBUF9PUEFDSVRZLGVyLlBSSU1BUlksZXIuU0VDT05EQVJZXSxzci5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuYCR7ZX14YH0pLGNyLm1hcChmdW5jdGlvbihlKXtyZXR1cm5gdy0ke2V9YH0pKSx1cj17IkZvbnQgQXdlc29tZSA1IEZyZWUiOns5MDA6YGZhc2AsNDAwOmBmYXJgfSwiRm9udCBBd2Vzb21lIDUgUHJvIjp7OTAwOmBmYXNgLDQwMDpgZmFyYCxub3JtYWw6YGZhcmAsMzAwOmBmYWxgfSwiRm9udCBBd2Vzb21lIDUgQnJhbmRzIjp7NDAwOmBmYWJgLG5vcm1hbDpgZmFiYH0sIkZvbnQgQXdlc29tZSA1IER1b3RvbmUiOns5MDA6YGZhZGB9fSxkcj1gX19fRk9OVF9BV0VTT01FX19fYCxmcj0xNixwcj1gZmFgLG1yPWBzdmctaW5saW5lLS1mYWAsaHI9YGRhdGEtZmEtaTJzdmdgLGdyPWBkYXRhLWZhLXBzZXVkby1lbGVtZW50YCxfcj1gZGF0YS1mYS1wc2V1ZG8tZWxlbWVudC1wZW5kaW5nYCx2cj1gZGF0YS1wcmVmaXhgLHlyPWBkYXRhLWljb25gLGJyPWBmb250YXdlc29tZS1pMnN2Z2AseHI9YGFzeW5jYCxTcj1bYEhUTUxgLGBIRUFEYCxgU1RZTEVgLGBTQ1JJUFRgXSxDcj1bYDo6YmVmb3JlYCxgOjphZnRlcmAsYDpiZWZvcmVgLGA6YWZ0ZXJgXSx3cj1mdW5jdGlvbigpe3RyeXtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KCk7ZnVuY3Rpb24gVHIoZSl7cmV0dXJuIG5ldyBQcm94eShlLHtnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCBpbiBlP2VbdF06ZVtLXX19KX12YXIgRXI9Vyh7fSxXdCk7RXJbS109VyhXKFcoVyh7fSx7ImZhLWR1b3RvbmUiOmBkdW90b25lYH0pLFd0W0tdKSxxbi5raXQpLHFuW2BraXQtZHVvdG9uZWBdKTt2YXIgRHI9VHIoRXIpLE9yPVcoe30sR24pO09yW0tdPVcoVyhXKFcoe30se2R1b3RvbmU6YGZhZGB9KSxPcltLXSksUW4ua2l0KSxRbltga2l0LWR1b3RvbmVgXSk7dmFyIGtyPVRyKE9yKSxBcj1XKHt9LGlyKTtBcltLXT1XKFcoe30sQXJbS10pLFpuLmtpdCk7dmFyIGpyPVRyKEFyKSxNcj1XKHt9LG5yKTtNcltLXT1XKFcoe30sTXJbS10pLFluLmtpdCksVHIoTXIpO3ZhciBOcj1IdCxQcj1gZmEtbGF5ZXJzLXRleHRgLEZyPVV0O1RyKFcoe30sSG4pKTt2YXIgSXI9W2BjbGFzc2AsYGRhdGEtcHJlZml4YCxgZGF0YS1pY29uYCxgZGF0YS1mYS10cmFuc2Zvcm1gLGBkYXRhLWZhLW1hc2tgXSxMcj1HdCxScj1bXS5jb25jYXQod3QoSm4pLHd0KGxyKSksenI9SXQuRm9udEF3ZXNvbWVDb25maWd8fHt9O2Z1bmN0aW9uIEJyKGUpe3ZhciB0PUcucXVlcnlTZWxlY3Rvcihgc2NyaXB0W2ArZStgXWApO2lmKHQpcmV0dXJuIHQuZ2V0QXR0cmlidXRlKGUpfWZ1bmN0aW9uIFZyKGUpe3JldHVybiBlPT09YGA/ITA6ZT09PWBmYWxzZWA/ITE6ZT09PWB0cnVlYHx8ZX1HJiZ0eXBlb2YgRy5xdWVyeVNlbGVjdG9yPT1gZnVuY3Rpb25gJiZbW2BkYXRhLWZhbWlseS1wcmVmaXhgLGBmYW1pbHlQcmVmaXhgXSxbYGRhdGEtY3NzLXByZWZpeGAsYGNzc1ByZWZpeGBdLFtgZGF0YS1mYW1pbHktZGVmYXVsdGAsYGZhbWlseURlZmF1bHRgXSxbYGRhdGEtc3R5bGUtZGVmYXVsdGAsYHN0eWxlRGVmYXVsdGBdLFtgZGF0YS1yZXBsYWNlbWVudC1jbGFzc2AsYHJlcGxhY2VtZW50Q2xhc3NgXSxbYGRhdGEtYXV0by1yZXBsYWNlLXN2Z2AsYGF1dG9SZXBsYWNlU3ZnYF0sW2BkYXRhLWF1dG8tYWRkLWNzc2AsYGF1dG9BZGRDc3NgXSxbYGRhdGEtc2VhcmNoLXBzZXVkby1lbGVtZW50c2AsYHNlYXJjaFBzZXVkb0VsZW1lbnRzYF0sW2BkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHMtd2FybmluZ3NgLGBzZWFyY2hQc2V1ZG9FbGVtZW50c1dhcm5pbmdzYF0sW2BkYXRhLXNlYXJjaC1wc2V1ZG8tZWxlbWVudHMtZnVsbC1zY2FuYCxgc2VhcmNoUHNldWRvRWxlbWVudHNGdWxsU2NhbmBdLFtgZGF0YS1vYnNlcnZlLW11dGF0aW9uc2AsYG9ic2VydmVNdXRhdGlvbnNgXSxbYGRhdGEtbXV0YXRlLWFwcHJvYWNoYCxgbXV0YXRlQXBwcm9hY2hgXSxbYGRhdGEta2VlcC1vcmlnaW5hbC1zb3VyY2VgLGBrZWVwT3JpZ2luYWxTb3VyY2VgXSxbYGRhdGEtbWVhc3VyZS1wZXJmb3JtYW5jZWAsYG1lYXN1cmVQZXJmb3JtYW5jZWBdLFtgZGF0YS1zaG93LW1pc3NpbmctaWNvbnNgLGBzaG93TWlzc2luZ0ljb25zYF1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9Q3QoZSwyKSxuPXRbMF0scj10WzFdLGk9VnIoQnIobikpO2khPW51bGwmJih6cltyXT1pKX0pO3ZhciBIcj17c3R5bGVEZWZhdWx0OmBzb2xpZGAsZmFtaWx5RGVmYXVsdDpLLGNzc1ByZWZpeDpwcixyZXBsYWNlbWVudENsYXNzOm1yLGF1dG9SZXBsYWNlU3ZnOiEwLGF1dG9BZGRDc3M6ITAsc2VhcmNoUHNldWRvRWxlbWVudHM6ITEsc2VhcmNoUHNldWRvRWxlbWVudHNXYXJuaW5nczohMCxzZWFyY2hQc2V1ZG9FbGVtZW50c0Z1bGxTY2FuOiExLG9ic2VydmVNdXRhdGlvbnM6ITAsbXV0YXRlQXBwcm9hY2g6YGFzeW5jYCxrZWVwT3JpZ2luYWxTb3VyY2U6ITAsbWVhc3VyZVBlcmZvcm1hbmNlOiExLHNob3dNaXNzaW5nSWNvbnM6ITB9O3pyLmZhbWlseVByZWZpeCYmKHpyLmNzc1ByZWZpeD16ci5mYW1pbHlQcmVmaXgpO3ZhciBVcj1XKFcoe30sSHIpLHpyKTtVci5hdXRvUmVwbGFjZVN2Z3x8KFVyLm9ic2VydmVNdXRhdGlvbnM9ITEpO3ZhciBxPXt9O09iamVjdC5rZXlzKEhyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShxLGUse2VudW1lcmFibGU6ITAsc2V0OmZ1bmN0aW9uKHQpe1VyW2VdPXQsV3IuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZShxKX0pfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVXJbZV19fSl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocSwiZmFtaWx5UHJlZml4Iix7ZW51bWVyYWJsZTohMCxzZXQ6ZnVuY3Rpb24oZSl7VXIuY3NzUHJlZml4PWUsV3IuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZShxKX0pfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVXIuY3NzUHJlZml4fX0pLEl0LkZvbnRBd2Vzb21lQ29uZmlnPXE7dmFyIFdyPVtdO2Z1bmN0aW9uIEdyKGUpe3JldHVybiBXci5wdXNoKGUpLGZ1bmN0aW9uKCl7V3Iuc3BsaWNlKFdyLmluZGV4T2YoZSksMSl9fXZhciBLcj1mcixxcj17c2l6ZToxNix4OjAseTowLHJvdGF0ZTowLGZsaXBYOiExLGZsaXBZOiExfTtmdW5jdGlvbiBKcihlKXtpZighKCFlfHwhenQpKXt2YXIgdD1HLmNyZWF0ZUVsZW1lbnQoYHN0eWxlYCk7dC5zZXRBdHRyaWJ1dGUoYHR5cGVgLGB0ZXh0L2Nzc2ApLHQuaW5uZXJIVE1MPWU7Zm9yKHZhciBuPUcuaGVhZC5jaGlsZE5vZGVzLHI9bnVsbCxpPW4ubGVuZ3RoLTE7aT4tMTtpLS0pe3ZhciBhPW5baV0sbz0oYS50YWdOYW1lfHxgYCkudG9VcHBlckNhc2UoKTtbYFNUWUxFYCxgTElOS2BdLmluZGV4T2Yobyk+LTEmJihyPWEpfXJldHVybiBHLmhlYWQuaW5zZXJ0QmVmb3JlKHQsciksZX19dmFyIFlyPWAwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmA7ZnVuY3Rpb24gWHIoKXtmb3IodmFyIGU9MTIsdD1gYDtlLS0+MDspdCs9WXJbTWF0aC5yYW5kb20oKSo2MnwwXTtyZXR1cm4gdH1mdW5jdGlvbiBacihlKXtmb3IodmFyIHQ9W10sbj0oZXx8W10pLmxlbmd0aD4+PjA7bi0tOyl0W25dPWVbbl07cmV0dXJuIHR9ZnVuY3Rpb24gUXIoZSl7cmV0dXJuIGUuY2xhc3NMaXN0P1pyKGUuY2xhc3NMaXN0KTooZS5nZXRBdHRyaWJ1dGUoYGNsYXNzYCl8fGBgKS5zcGxpdChgIGApLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pfWZ1bmN0aW9uICRyKGUpe3JldHVybmAke2V9YC5yZXBsYWNlKC8mL2csYCZhbXA7YCkucmVwbGFjZSgvIi9nLGAmcXVvdDtgKS5yZXBsYWNlKC8nL2csYCYjMzk7YCkucmVwbGFjZSgvPC9nLGAmbHQ7YCkucmVwbGFjZSgvPi9nLGAmZ3Q7YCl9ZnVuY3Rpb24gZWkoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGV8fHt9KS5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCtgJHtufT0iJHskcihlW25dKX0iIGB9LGBgKS50cmltKCl9ZnVuY3Rpb24gdGkoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGV8fHt9KS5yZWR1Y2UoZnVuY3Rpb24odCxuKXtyZXR1cm4gdCtgJHtufTogJHtlW25dLnRyaW0oKX07YH0sYGApfWZ1bmN0aW9uIG5pKGUpe3JldHVybiBlLnNpemUhPT1xci5zaXplfHxlLnghPT1xci54fHxlLnkhPT1xci55fHxlLnJvdGF0ZSE9PXFyLnJvdGF0ZXx8ZS5mbGlwWHx8ZS5mbGlwWX1mdW5jdGlvbiByaShlKXt2YXIgdD1lLnRyYW5zZm9ybSxuPWUuY29udGFpbmVyV2lkdGgscj1lLmljb25XaWR0aDtyZXR1cm57b3V0ZXI6e3RyYW5zZm9ybTpgdHJhbnNsYXRlKCR7bi8yfSAyNTYpYH0saW5uZXI6e3RyYW5zZm9ybTpgJHtgdHJhbnNsYXRlKCR7dC54KjMyfSwgJHt0LnkqMzJ9KSBgfSAke2BzY2FsZSgke3Quc2l6ZS8xNioodC5mbGlwWD8tMToxKX0sICR7dC5zaXplLzE2Kih0LmZsaXBZPy0xOjEpfSkgYH0gJHtgcm90YXRlKCR7dC5yb3RhdGV9IDAgMClgfWB9LHBhdGg6e3RyYW5zZm9ybTpgdHJhbnNsYXRlKCR7ci8yKi0xfSAtMjU2KWB9fX1mdW5jdGlvbiBpaShlKXt2YXIgdD1lLnRyYW5zZm9ybSxuPWUud2lkdGgscj1uPT09dm9pZCAwP2ZyOm4saT1lLmhlaWdodCxhPWk9PT12b2lkIDA/ZnI6aSxvPWUuc3RhcnRDZW50ZXJlZCxzPW8hPT12b2lkIDAmJm8sYz1gYDtyZXR1cm4gYys9cyYmQnQ/YHRyYW5zbGF0ZSgke3QueC9Lci1yLzJ9ZW0sICR7dC55L0tyLWEvMn1lbSkgYDpzP2B0cmFuc2xhdGUoY2FsYygtNTAlICsgJHt0LngvS3J9ZW0pLCBjYWxjKC01MCUgKyAke3QueS9Lcn1lbSkpIGA6YHRyYW5zbGF0ZSgke3QueC9Lcn1lbSwgJHt0LnkvS3J9ZW0pIGAsYys9YHNjYWxlKCR7dC5zaXplL0tyKih0LmZsaXBYPy0xOjEpfSwgJHt0LnNpemUvS3IqKHQuZmxpcFk/LTE6MSl9KSBgLGMrPWByb3RhdGUoJHt0LnJvdGF0ZX1kZWcpIGAsY312YXIgYWk9YDpyb290LCA6aG9zdCB7CiAgLS1mYS1mb250LXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBGcmVlJzsKICAtLWZhLWZvbnQtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRnJlZSc7CiAgLS1mYS1mb250LWxpZ2h0OiBub3JtYWwgMzAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBQcm8nOwogIC0tZmEtZm9udC10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBQcm8nOwogIC0tZmEtZm9udC1kdW90b25lOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBEdW90b25lJzsKICAtLWZhLWZvbnQtZHVvdG9uZS1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBEdW90b25lJzsKICAtLWZhLWZvbnQtZHVvdG9uZS1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWR1b3RvbmUtdGhpbjogbm9ybWFsIDEwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRHVvdG9uZSc7CiAgLS1mYS1mb250LWJyYW5kczogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgQnJhbmRzJzsKICAtLWZhLWZvbnQtc2hhcnAtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwJzsKICAtLWZhLWZvbnQtc2hhcnAtcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAnOwogIC0tZmEtZm9udC1zaGFycC1saWdodDogbm9ybWFsIDMwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2hhcnAnOwogIC0tZmEtZm9udC1zaGFycC10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCc7CiAgLS1mYS1mb250LXNoYXJwLWR1b3RvbmUtc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwIER1b3RvbmUnOwogIC0tZmEtZm9udC1zaGFycC1kdW90b25lLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFNoYXJwIER1b3RvbmUnOwogIC0tZmEtZm9udC1zaGFycC1kdW90b25lLWxpZ2h0OiBub3JtYWwgMzAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2hhcnAtZHVvdG9uZS10aGluOiBub3JtYWwgMTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTaGFycCBEdW90b25lJzsKICAtLWZhLWZvbnQtc2xhYi1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTbGFiJzsKICAtLWZhLWZvbnQtc2xhYi1wcmVzcy1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTbGFiIFByZXNzJzsKICAtLWZhLWZvbnQtc2xhYi1kdW8tcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgU2xhYiBEdW8nOwogIC0tZmEtZm9udC1zbGFiLXByZXNzLWR1by1yZWd1bGFyOiBub3JtYWwgNDAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBTbGFiIFByZXNzIER1byc7CiAgLS1mYS1mb250LXBpeGVsLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFBpeGVsJzsKICAtLWZhLWZvbnQtbW9zYWljLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBNb3NhaWMnOwogIC0tZmEtZm9udC12ZWxsdW0tc29saWQ6IG5vcm1hbCA5MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFZlbGx1bSc7CiAgLS1mYS1mb250LXdoaXRlYm9hcmQtc2VtaWJvbGQ6IG5vcm1hbCA2MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFdoaXRlYm9hcmQnOwogIC0tZmEtZm9udC10aHVtYnByaW50LWxpZ2h0OiBub3JtYWwgMzAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBUaHVtYnByaW50JzsKICAtLWZhLWZvbnQtbm90ZG9nLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBOb3Rkb2cnOwogIC0tZmEtZm9udC1ub3Rkb2ctZHVvLXNvbGlkOiBub3JtYWwgOTAwIDFlbS8xICdGb250IEF3ZXNvbWUgNyBOb3Rkb2cgRHVvJzsKICAtLWZhLWZvbnQtZXRjaC1zb2xpZDogbm9ybWFsIDkwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgRXRjaCc7CiAgLS1mYS1mb250LWdyYXBoaXRlLXRoaW46IG5vcm1hbCAxMDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEdyYXBoaXRlJzsKICAtLWZhLWZvbnQtamVsbHktcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgSmVsbHknOwogIC0tZmEtZm9udC1qZWxseS1maWxsLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IEplbGx5IEZpbGwnOwogIC0tZmEtZm9udC1qZWxseS1kdW8tcmVndWxhcjogbm9ybWFsIDQwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgSmVsbHkgRHVvJzsKICAtLWZhLWZvbnQtY2hpc2VsLXJlZ3VsYXI6IG5vcm1hbCA0MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IENoaXNlbCc7CiAgLS1mYS1mb250LXV0aWxpdHktc2VtaWJvbGQ6IG5vcm1hbCA2MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFV0aWxpdHknOwogIC0tZmEtZm9udC11dGlsaXR5LWR1by1zZW1pYm9sZDogbm9ybWFsIDYwMCAxZW0vMSAnRm9udCBBd2Vzb21lIDcgVXRpbGl0eSBEdW8nOwogIC0tZmEtZm9udC11dGlsaXR5LWZpbGwtc2VtaWJvbGQ6IG5vcm1hbCA2MDAgMWVtLzEgJ0ZvbnQgQXdlc29tZSA3IFV0aWxpdHkgRmlsbCc7Cn0KCi5zdmctaW5saW5lLS1mYSB7CiAgYm94LXNpemluZzogY29udGVudC1ib3g7CiAgZGlzcGxheTogdmFyKC0tZmEtZGlzcGxheSwgaW5saW5lLWJsb2NrKTsKICBoZWlnaHQ6IDFlbTsKICBvdmVyZmxvdzogdmlzaWJsZTsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTI1ZW07CiAgd2lkdGg6IHZhcigtLWZhLXdpZHRoLCAxLjI1ZW0pOwp9Ci5zdmctaW5saW5lLS1mYS5mYS0yeHMgewogIHZlcnRpY2FsLWFsaWduOiAwLjFlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEteHMgewogIHZlcnRpY2FsLWFsaWduOiAwZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXNtIHsKICB2ZXJ0aWNhbC1hbGlnbjogLTAuMDcxNDI4NTcxNGVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1sZyB7CiAgdmVydGljYWwtYWxpZ246IC0wLjJlbTsKfQouc3ZnLWlubGluZS0tZmEuZmEteGwgewogIHZlcnRpY2FsLWFsaWduOiAtMC4yNWVtOwp9Ci5zdmctaW5saW5lLS1mYS5mYS0yeGwgewogIHZlcnRpY2FsLWFsaWduOiAtMC4zMTI1ZW07Cn0KLnN2Zy1pbmxpbmUtLWZhLmZhLXB1bGwtbGVmdCwKLnN2Zy1pbmxpbmUtLWZhIC5mYS1wdWxsLXN0YXJ0IHsKICBmbG9hdDogaW5saW5lLXN0YXJ0OwogIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1mYS1wdWxsLW1hcmdpbiwgMC4zZW0pOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1wdWxsLXJpZ2h0LAouc3ZnLWlubGluZS0tZmEgLmZhLXB1bGwtZW5kIHsKICBmbG9hdDogaW5saW5lLWVuZDsKICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1mYS1wdWxsLW1hcmdpbiwgMC4zZW0pOwp9Ci5zdmctaW5saW5lLS1mYS5mYS1saSB7CiAgd2lkdGg6IHZhcigtLWZhLWxpLXdpZHRoLCAyZW0pOwogIGluc2V0LWlubGluZS1zdGFydDogY2FsYygtMSAqIHZhcigtLWZhLWxpLXdpZHRoLCAyZW0pKTsKICBpbnNldC1ibG9jay1zdGFydDogMC4yNWVtOyAvKiBzeW5jaW5nIHZlcnRpY2FsIGFsaWdubWVudCB3aXRoIFdlYiBGb250IHJlbmRlcmluZyAqLwp9CgouZmEtbGF5ZXJzLWNvdW50ZXIsIC5mYS1sYXllcnMtdGV4dCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5mYS1sYXllcnMgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDFlbTsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHZlcnRpY2FsLWFsaWduOiAtMC4xMjVlbTsKICB3aWR0aDogdmFyKC0tZmEtd2lkdGgsIDEuMjVlbSk7Cn0KLmZhLWxheWVycyAuc3ZnLWlubGluZS0tZmEgewogIGluc2V0OiAwOwogIG1hcmdpbjogYXV0bzsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKfQoKLmZhLWxheWVycy10ZXh0IHsKICBsZWZ0OiA1MCU7CiAgdG9wOiA1MCU7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKfQoKLmZhLWxheWVycy1jb3VudGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYS1jb3VudGVyLWJhY2tncm91bmQtY29sb3IsICNmZjI1M2EpOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLWZhLWNvdW50ZXItYm9yZGVyLXJhZGl1cywgMWVtKTsKICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIGNvbG9yOiB2YXIoLS1mYS1pbnZlcnNlLCAjZmZmKTsKICBsaW5lLWhlaWdodDogdmFyKC0tZmEtY291bnRlci1saW5lLWhlaWdodCwgMSk7CiAgbWF4LXdpZHRoOiB2YXIoLS1mYS1jb3VudGVyLW1heC13aWR0aCwgNWVtKTsKICBtaW4td2lkdGg6IHZhcigtLWZhLWNvdW50ZXItbWluLXdpZHRoLCAxLjVlbSk7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBwYWRkaW5nOiB2YXIoLS1mYS1jb3VudGVyLXBhZGRpbmcsIDAuMjVlbSAwLjVlbSk7CiAgcmlnaHQ6IHZhcigtLWZhLXJpZ2h0LCAwKTsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB0b3A6IHZhcigtLWZhLXRvcCwgMCk7CiAgdHJhbnNmb3JtOiBzY2FsZSh2YXIoLS1mYS1jb3VudGVyLXNjYWxlLCAwLjI1KSk7CiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIHJpZ2h0Owp9CgouZmEtbGF5ZXJzLWJvdHRvbS1yaWdodCB7CiAgYm90dG9tOiB2YXIoLS1mYS1ib3R0b20sIDApOwogIHJpZ2h0OiB2YXIoLS1mYS1yaWdodCwgMCk7CiAgdG9wOiBhdXRvOwogIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7CiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIHJpZ2h0Owp9CgouZmEtbGF5ZXJzLWJvdHRvbS1sZWZ0IHsKICBib3R0b206IHZhcigtLWZhLWJvdHRvbSwgMCk7CiAgbGVmdDogdmFyKC0tZmEtbGVmdCwgMCk7CiAgcmlnaHQ6IGF1dG87CiAgdG9wOiBhdXRvOwogIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7CiAgdHJhbnNmb3JtLW9yaWdpbjogYm90dG9tIGxlZnQ7Cn0KCi5mYS1sYXllcnMtdG9wLXJpZ2h0IHsKICB0b3A6IHZhcigtLWZhLXRvcCwgMCk7CiAgcmlnaHQ6IHZhcigtLWZhLXJpZ2h0LCAwKTsKICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWxheWVycy1zY2FsZSwgMC4yNSkpOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCByaWdodDsKfQoKLmZhLWxheWVycy10b3AtbGVmdCB7CiAgbGVmdDogdmFyKC0tZmEtbGVmdCwgMCk7CiAgcmlnaHQ6IGF1dG87CiAgdG9wOiB2YXIoLS1mYS10b3AsIDApOwogIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtbGF5ZXJzLXNjYWxlLCAwLjI1KSk7CiAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7Cn0KCi5mYS0xeCB7CiAgZm9udC1zaXplOiAxZW07Cn0KCi5mYS0yeCB7CiAgZm9udC1zaXplOiAyZW07Cn0KCi5mYS0zeCB7CiAgZm9udC1zaXplOiAzZW07Cn0KCi5mYS00eCB7CiAgZm9udC1zaXplOiA0ZW07Cn0KCi5mYS01eCB7CiAgZm9udC1zaXplOiA1ZW07Cn0KCi5mYS02eCB7CiAgZm9udC1zaXplOiA2ZW07Cn0KCi5mYS03eCB7CiAgZm9udC1zaXplOiA3ZW07Cn0KCi5mYS04eCB7CiAgZm9udC1zaXplOiA4ZW07Cn0KCi5mYS05eCB7CiAgZm9udC1zaXplOiA5ZW07Cn0KCi5mYS0xMHggewogIGZvbnQtc2l6ZTogMTBlbTsKfQoKLmZhLTJ4cyB7CiAgZm9udC1zaXplOiBjYWxjKDEwIC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDEwcHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMTAgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDEwIC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLXhzIHsKICBmb250LXNpemU6IGNhbGMoMTIgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMTJweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAxMiAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMTIgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEtc20gewogIGZvbnQtc2l6ZTogY2FsYygxNCAvIDE2ICogMWVtKTsgLyogY29udmVydHMgYSAxNHB4IHNpemUgaW50byBhbiBlbS1iYXNlZCB2YWx1ZSB0aGF0J3MgcmVsYXRpdmUgdG8gdGhlIHNjYWxlJ3MgMTZweCBiYXNlICovCiAgbGluZS1oZWlnaHQ6IGNhbGMoMSAvIDE0ICogMWVtKTsgLyogc2V0cyB0aGUgbGluZS1oZWlnaHQgb2YgdGhlIGljb24gYmFjayB0byB0aGF0IG9mIGl0J3MgcGFyZW50ICovCiAgdmVydGljYWwtYWxpZ246IGNhbGMoKDYgLyAxNCAtIDAuMzc1KSAqIDFlbSk7IC8qIHZlcnRpY2FsbHkgY2VudGVycyB0aGUgaWNvbiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBzdXJyb3VuZGluZyB0ZXh0J3MgZGVzY2VuZGVyICovCn0KCi5mYS1sZyB7CiAgZm9udC1zaXplOiBjYWxjKDIwIC8gMTYgKiAxZW0pOyAvKiBjb252ZXJ0cyBhIDIwcHggc2l6ZSBpbnRvIGFuIGVtLWJhc2VkIHZhbHVlIHRoYXQncyByZWxhdGl2ZSB0byB0aGUgc2NhbGUncyAxNnB4IGJhc2UgKi8KICBsaW5lLWhlaWdodDogY2FsYygxIC8gMjAgKiAxZW0pOyAvKiBzZXRzIHRoZSBsaW5lLWhlaWdodCBvZiB0aGUgaWNvbiBiYWNrIHRvIHRoYXQgb2YgaXQncyBwYXJlbnQgKi8KICB2ZXJ0aWNhbC1hbGlnbjogY2FsYygoNiAvIDIwIC0gMC4zNzUpICogMWVtKTsgLyogdmVydGljYWxseSBjZW50ZXJzIHRoZSBpY29uIHRha2luZyBpbnRvIGFjY291bnQgdGhlIHN1cnJvdW5kaW5nIHRleHQncyBkZXNjZW5kZXIgKi8KfQoKLmZhLXhsIHsKICBmb250LXNpemU6IGNhbGMoMjQgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMjRweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAyNCAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMjQgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEtMnhsIHsKICBmb250LXNpemU6IGNhbGMoMzIgLyAxNiAqIDFlbSk7IC8qIGNvbnZlcnRzIGEgMzJweCBzaXplIGludG8gYW4gZW0tYmFzZWQgdmFsdWUgdGhhdCdzIHJlbGF0aXZlIHRvIHRoZSBzY2FsZSdzIDE2cHggYmFzZSAqLwogIGxpbmUtaGVpZ2h0OiBjYWxjKDEgLyAzMiAqIDFlbSk7IC8qIHNldHMgdGhlIGxpbmUtaGVpZ2h0IG9mIHRoZSBpY29uIGJhY2sgdG8gdGhhdCBvZiBpdCdzIHBhcmVudCAqLwogIHZlcnRpY2FsLWFsaWduOiBjYWxjKCg2IC8gMzIgLSAwLjM3NSkgKiAxZW0pOyAvKiB2ZXJ0aWNhbGx5IGNlbnRlcnMgdGhlIGljb24gdGFraW5nIGludG8gYWNjb3VudCB0aGUgc3Vycm91bmRpbmcgdGV4dCdzIGRlc2NlbmRlciAqLwp9CgouZmEtd2lkdGgtYXV0byB7CiAgLS1mYS13aWR0aDogYXV0bzsKfQoKLmZhLWZ3LAouZmEtd2lkdGgtZml4ZWQgewogIC0tZmEtd2lkdGg6IDEuMjVlbTsKfQoKLmZhLWNhbnZhcy1zcXVhcmUgewogIHBhZGRpbmctYmxvY2s6IDAuMTI1ZW07CiAgbWFyZ2luLWJsb2NrLWVuZDogLTAuMTI1ZW07Cn0KCi5mYS1jYW52YXMtcm9vbXkgewogIHBhZGRpbmctYmxvY2s6IDAuMjVlbTsKICBwYWRkaW5nLWlubGluZTogMC4xMjVlbTsKICBtYXJnaW4tYmxvY2stZW5kOiAtMC4yNWVtOwogIGJveC1zaXppbmc6IGNvbnRlbnQtYm94Owp9CgouZmEtdWwgewogIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1mYS1saS1tYXJnaW4sIDIuNWVtKTsKICBwYWRkaW5nLWlubGluZS1zdGFydDogMDsKfQouZmEtdWwgPiBsaSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouZmEtbGkgewogIGluc2V0LWlubGluZS1zdGFydDogY2FsYygtMSAqIHZhcigtLWZhLWxpLXdpZHRoLCAyZW0pKTsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIHdpZHRoOiB2YXIoLS1mYS1saS13aWR0aCwgMmVtKTsKICBsaW5lLWhlaWdodDogaW5oZXJpdDsKfQoKLyogSGVhZHMgVXA6IEJvcmRlcmVkIEljb25zIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiB0aGUgZnV0dXJlIQogIC0gVGhpcyBmZWF0dXJlIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlIG9mIEZvbnQgQXdlc29tZSAodjgpIQogIC0gWW91IG1heSBjb250aW51ZSB0byB1c2UgaXQgaW4gdGhpcyB2ZXJzaW9uICp2NyksIGJ1dCBpdCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQgaW4gRm9udCBBd2Vzb21lIHY4LgoqLwovKiBOb3RlczoKKiAtLUB7di4kY3NzLXByZWZpeH0tYm9yZGVyLXdpZHRoID0gMS8xNiBieSBkZWZhdWx0ICh0byByZW5kZXIgYXMgfjFweCBiYXNlZCBvbiBhIDE2cHggZGVmYXVsdCBmb250LXNpemUpCiogLS1Ae3YuJGNzcy1wcmVmaXh9LWJvcmRlci1wYWRkaW5nID0KICAqKiAzLzE2IGZvciB2ZXJ0aWNhbCBwYWRkaW5nICh0byBnaXZlIH4ycHggb2YgdmVydGljYWwgd2hpdGVzcGFjZSBhcm91bmQgYW4gaWNvbiBjb25zaWRlcmluZyBpdCdzIHZlcnRpY2FsIGFsaWdubWVudCkKICAqKiA0LzE2IGZvciBob3Jpem9udGFsIHBhZGRpbmcgKHRvIGdpdmUgfjRweCBvZiBob3Jpem9udGFsIHdoaXRlc3BhY2UgYXJvdW5kIGFuIGljb24pCiovCi5mYS1ib3JkZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tZmEtYm9yZGVyLWNvbG9yLCAjZWVlKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1mYS1ib3JkZXItcmFkaXVzLCAwLjFlbSk7CiAgYm9yZGVyLXN0eWxlOiB2YXIoLS1mYS1ib3JkZXItc3R5bGUsIHNvbGlkKTsKICBib3JkZXItd2lkdGg6IHZhcigtLWZhLWJvcmRlci13aWR0aCwgMC4wNjI1ZW0pOwogIGJveC1zaXppbmc6IHZhcigtLWZhLWJvcmRlci1ib3gtc2l6aW5nLCBjb250ZW50LWJveCk7CiAgcGFkZGluZzogdmFyKC0tZmEtYm9yZGVyLXBhZGRpbmcsIDAuMTg3NWVtIDAuMjVlbSk7Cn0KCi5mYS1wdWxsLWxlZnQsCi5mYS1wdWxsLXN0YXJ0IHsKICBmbG9hdDogaW5saW5lLXN0YXJ0OwogIG1hcmdpbi1pbmxpbmUtZW5kOiB2YXIoLS1mYS1wdWxsLW1hcmdpbiwgMC4zZW0pOwp9CgouZmEtcHVsbC1yaWdodCwKLmZhLXB1bGwtZW5kIHsKICBmbG9hdDogaW5saW5lLWVuZDsKICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1mYS1wdWxsLW1hcmdpbiwgMC4zZW0pOwp9CgouZmEtYmVhdCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWJlYXQ7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTsKfQoKLmZhLWJvdW5jZSB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWJvdW5jZTsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgY3ViaWMtYmV6aWVyKDAuMjgsIDAuODQsIDAuNDIsIDEpKTsKfQoKLmZhLWZhZGUgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1mYWRlOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMXMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7Cn0KCi5mYS1iZWF0LWZhZGUgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1iZWF0LWZhZGU7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTsKfQoKLmZhLWZsaXAgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1mbGlwOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMS41cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTsKfQoKLmZhLWZsaXAtMzYwIHsKICBhbmltYXRpb24tbmFtZTogZmEtZmxpcC0zNjA7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxcyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTsKfQoKLmZhLXNoYWtlIHsKICBhbmltYXRpb24tbmFtZTogZmEtc2hha2U7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAwLjc1cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2UtaW4tb3V0KTsKfQoKLmZhLXNwaW4gewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMnMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpOwp9CgouZmEtc3Bpbi1yZXZlcnNlIHsKICAtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb246IHJldmVyc2U7Cn0KCi5mYS1wdWxzZSwKLmZhLXNwaW4tcHVsc2UgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDFzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgc3RlcHMoOCkpOwp9CgouZmEtc3Bpbi1zbmFwIHsKICBhbmltYXRpb24tbmFtZTogZmEtc3Bpbi1zbmFwOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgM3MpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpOwp9CgouZmEtc3Bpbi1zbmFwLTQgewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluLXNuYXAtNDsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDIuNHMpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBsaW5lYXIpOwp9CgouZmEtc3Bpbi1zbmFwLTggewogIGFuaW1hdGlvbi1uYW1lOiBmYS1zcGluLXNuYXAtODsKICBhbmltYXRpb24tZGVsYXk6IHZhcigtLWZhLWFuaW1hdGlvbi1kZWxheSwgMHMpOwogIGFuaW1hdGlvbi1kaXJlY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kaXJlY3Rpb24sIG5vcm1hbCk7CiAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZHVyYXRpb24sIDRzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgbGluZWFyKTsKfQoKLmZhLWJ1enogewogIGFuaW1hdGlvbi1uYW1lOiBmYS1idXp6OwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMC42cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGxpbmVhcik7Cn0KCi5mYS13YWcgewogIGFuaW1hdGlvbi1uYW1lOiBmYS13YWc7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAwLjlzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1vdXQpOwogIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSBjZW50ZXI7Cn0KCi5mYS1mbG9hdCB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWZsb2F0OwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgM3MpOwogIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IHZhcigtLWZhLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsIGluZmluaXRlKTsKICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nLCBlYXNlLWluLW91dCk7CiAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKfQoKLmZhLXN3aW5nIHsKICBhbmltYXRpb24tbmFtZTogZmEtc3dpbmc7CiAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1mYS1hbmltYXRpb24tZGVsYXksIDBzKTsKICBhbmltYXRpb24tZGlyZWN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tZGlyZWN0aW9uLCBub3JtYWwpOwogIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWR1cmF0aW9uLCAxLjJzKTsKICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiB2YXIoLS1mYS1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LCBpbmZpbml0ZSk7CiAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLXRpbWluZywgZWFzZS1vdXQpOwogIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7Cn0KCi5mYS1qZWxsbyB7CiAgYW5pbWF0aW9uLW5hbWU6IGZhLWplbGxvOwogIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tZmEtYW5pbWF0aW9uLWRlbGF5LCAwcyk7CiAgYW5pbWF0aW9uLWRpcmVjdGlvbjogdmFyKC0tZmEtYW5pbWF0aW9uLWRpcmVjdGlvbiwgbm9ybWFsKTsKICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLWZhLWFuaW1hdGlvbi1kdXJhdGlvbiwgMC45cyk7CiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogdmFyKC0tZmEtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgaW5maW5pdGUpOwogIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWZhLWFuaW1hdGlvbi10aW1pbmcsIGVhc2Utb3V0KTsKfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAuZmEtYmVhdCwKICAuZmEtYm91bmNlLAogIC5mYS1mYWRlLAogIC5mYS1iZWF0LWZhZGUsCiAgLmZhLWZsaXAsCiAgLmZhLWZsaXAtMzYwLAogIC5mYS1wdWxzZSwKICAuZmEtc2hha2UsCiAgLmZhLXNwaW4sCiAgLmZhLXNwaW4tcHVsc2UsCiAgLmZhLWJ1enosCiAgLmZhLWZsb2F0LAogIC5mYS1qZWxsbywKICAuZmEtc3Bpbi1zbmFwLAogIC5mYS1zcGluLXNuYXAtNCwKICAuZmEtc3Bpbi1zbmFwLTgsCiAgLmZhLXN3aW5nLAogIC5mYS13YWcgewogICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgICB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgfQp9CkBrZXlmcmFtZXMgZmEtYmVhdCB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9CiAgMjUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYygxLjI1ICogdmFyKC0tZmEtYmVhdC1zY2FsZSwgMS4yNSkpKTsKICB9CiAgNDUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYygxLjIyICogdmFyKC0tZmEtYmVhdC1zY2FsZSwgMS4yMikpKTsKICB9CiAgNjUlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYygxLjI1ICogdmFyKC0tZmEtYmVhdC1zY2FsZSwgMS4yNSkpKTsKICB9CiAgOTAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtYm91bmNlIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoMCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1mYS1hbmltYXRpb24tdGltaW5nKTsKICB9CiAgMTQlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLXN0YXJ0LXNjYWxlLXgsIDEuMDYpLCB2YXIoLS1mYS1ib3VuY2Utc3RhcnQtc2NhbGUteSwgMC45NCkpIHRyYW5zbGF0ZVkodmFyKC0tZmEtYm91bmNlLWFudGljaXBhdGlvbiwgM3B4KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMC4zMyk7CiAgfQogIDMyJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJvdW5jZS1qdW1wLXNjYWxlLXgsIDAuOTQpLCB2YXIoLS1mYS1ib3VuY2UtanVtcC1zY2FsZS15LCAxLjEyKSkgdHJhbnNsYXRlWShjYWxjKC0xICogdmFyKC0tZmEtYm91bmNlLWhlaWdodCwgMC41ZW0pKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMC42NiwgMC42NiwgMSk7CiAgfQogIDUyJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpIHRyYW5zbGF0ZVkoY2FsYygtMSAqIHZhcigtLWZhLWJvdW5jZS1oZWlnaHQsIDAuNWVtKSAqIDEuMSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNSwgMCwgMSwgMC41KTsKICB9CiAgNzAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYm91bmNlLWxhbmQtc2NhbGUteCwgMS4wNiksIHZhcigtLWZhLWJvdW5jZS1sYW5kLXNjYWxlLXksIDAuOTIpKSB0cmFuc2xhdGVZKDApOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAuMzMsIDAuNjYsIDEpOwogIH0KICA4NSUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4LCAxLjA0KSB0cmFuc2xhdGVZKGNhbGMoLTJweCAqIHZhcigtLWZhLWJvdW5jZS1yZWJvdW5kLCAxKSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgdHJhbnNsYXRlWSgwKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1mYWRlIHsKICAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNCwgMSk7CiAgfQogIDQwJSB7CiAgICBvcGFjaXR5OiB2YXIoLS1mYS1mYWRlLW9wYWNpdHksIDAuNCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1iZWF0LWZhZGUgewogIDAlIHsKICAgIG9wYWNpdHk6IHZhcigtLWZhLWJlYXQtZmFkZS1vcGFjaXR5LCAwLjQpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNCwgMSk7CiAgfQogIDI1JSB7CiAgICBvcGFjaXR5OiBjYWxjKHZhcigtLWZhLWJlYXQtZmFkZS1vcGFjaXR5LCAwLjQpICsgMC40KTsKICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYmVhdC1mYWRlLXNjYWxlLCAxLjI4KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpOwogIH0KICA0NSUgewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtYmVhdC1mYWRlLXNjYWxlLCAxLjI1KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICA2NSUgewogICAgb3BhY2l0eTogY2FsYyh2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KSArIDAuNCk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKHZhcigtLWZhLWJlYXQtZmFkZS1zY2FsZSwgMS4yOCkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgMTAwJSB7CiAgICBvcGFjaXR5OiB2YXIoLS1mYS1iZWF0LWZhZGUtb3BhY2l0eSwgMC40KTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmxpcCB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMiwgMCwgMC40LCAxKTsKICB9CiAgOCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKHZhcigtLWZhLWZsaXAtYW50aWNpcGF0aW9uLXNjYWxlLCAwLjk1KSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMC4zMyk7CiAgfQogIDM1JSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDJlbSkgc2NhbGUoMSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgY2FsYyh2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMzYwZGVnKSAqIDAuNikpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwogIH0KICA2NSUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIGNhbGModmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykgKiAwLjUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjY2LCAwLjY2LCAxKTsKICB9CiAgOTIlIHsKICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoMmVtKSBzY2FsZSgxKSByb3RhdGUzZCh2YXIoLS1mYS1mbGlwLXgsIDApLCB2YXIoLS1mYS1mbGlwLXksIDEpLCB2YXIoLS1mYS1mbGlwLXosIDApLCBjYWxjKHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpICogdmFyKC0tZmEtZmxpcC1vdmVyc2hvb3QsIDEuMDQpKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIHZhcigtLWZhLWZsaXAtYW5nbGUsIC0zNjBkZWcpKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1mbGlwLTM2MCB7CiAgMCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMiwgMCwgMC40LCAxKTsKICB9CiAgOCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKHZhcigtLWZhLWZsaXAtYW50aWNpcGF0aW9uLXNjYWxlLCAwLjk1KSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMC4zMyk7CiAgfQogIDUwJSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDJlbSkgc2NhbGUoMSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgY2FsYyh2YXIoLS1mYS1mbGlwLWFuZ2xlLCAtMzYwZGVnKSAqIDAuNikpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAuNjYsIDAuNjYsIDEpOwogIH0KICA4MCUgewogICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyZW0pIHNjYWxlKDEpIHJvdGF0ZTNkKHZhcigtLWZhLWZsaXAteCwgMCksIHZhcigtLWZhLWZsaXAteSwgMSksIHZhcigtLWZhLWZsaXAteiwgMCksIGNhbGModmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykgKiB2YXIoLS1mYS1mbGlwLW92ZXJzaG9vdCwgMS4wNCkpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLCAwLjY2LCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDJlbSkgc2NhbGUoMSkgcm90YXRlM2QodmFyKC0tZmEtZmxpcC14LCAwKSwgdmFyKC0tZmEtZmxpcC15LCAxKSwgdmFyKC0tZmEtZmxpcC16LCAwKSwgdmFyKC0tZmEtZmxpcC1hbmdsZSwgLTM2MGRlZykpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXNoYWtlIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuOCwgMSk7CiAgfQogIDglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM1ZGVnKSB0cmFuc2xhdGVYKDFweCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zLCAwLCAwLjcsIDEpOwogIH0KICAyMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTIyZGVnKSB0cmFuc2xhdGVYKC0xcHgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMzUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDE1ZGVnKSB0cmFuc2xhdGVYKDFweCk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zLCAwLCAwLjcsIDEpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoLTlkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgNjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgNzglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKC0zZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDkwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtc3BpbiB7CiAgMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICB9Cn0KQGtleWZyYW1lcyBmYS1zcGluLXNuYXAgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDEyJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTYuNjclIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDYwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICAyOC42NyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICAzMy4zMyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTIwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA0NS4zMyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA2MiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA2Ni42NyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjQwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA3OC42NyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA4My4zMyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzAwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA5NS4zMyUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtc3Bpbi1zbmFwLTQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDE1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA0MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA2NSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA3NSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA5MCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtc3Bpbi1zbmFwLTggewogIDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDklIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICAxMi41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgMjEuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDI1JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgMzQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDEzNWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMzcuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA0Ni41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDUwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDU5JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgyMjVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuOCwgMCwgMSwgMSk7CiAgfQogIDYyLjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDIyNWRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTsKICB9CiAgNzEuNSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA3NSUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIH0KICA4NCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMzE1ZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjgsIDAsIDEsIDEpOwogIH0KICA4Ny41JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzMTVkZWcpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7CiAgfQogIDk2LjUlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC44LCAwLCAxLCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWJ1enogewogIDAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSByb3RhdGUoMGRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xLCAwLCAwLjksIDEpOwogIH0KICA1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tZmEtYnV6ei1kaXN0YW5jZSwgNHB4KSkgcm90YXRlKDAuNWRlZyk7CiAgfQogIDEwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtMSAqIHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkpKSByb3RhdGUoLTAuNWRlZyk7CiAgfQogIDE1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgodmFyKC0tZmEtYnV6ei1kaXN0YW5jZSwgNHB4KSkgcm90YXRlKDAuM2RlZyk7CiAgfQogIDIwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtMSAqIHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkpKSByb3RhdGUoLTAuM2RlZyk7CiAgfQogIDI1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpICogMC43KSkgcm90YXRlKDAuMmRlZyk7CiAgfQogIDMwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygtMSAqIHZhcigtLWZhLWJ1enotZGlzdGFuY2UsIDRweCkgKiAwLjcpKSByb3RhdGUoLTAuMmRlZyk7CiAgfQogIDM1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYyh2YXIoLS1mYS1idXp6LWRpc3RhbmNlLCA0cHgpICogMC40KSkgcm90YXRlKDAuMWRlZyk7CiAgfQogIDQwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKSByb3RhdGUoMGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtd2FnIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNiwgMSk7CiAgfQogIDEyJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1mYS13YWctYW5nbGUsIDEyZGVnKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICAyNCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMmRlZyk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLCAwLCAwLjYsIDEpOwogIH0KICAzNiUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoY2FsYyh2YXIoLS1mYS13YWctYW5nbGUsIDEyZGVnKSAqIDAuODUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgfQogIDQ4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuNiwgMSk7CiAgfQogIDU4JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKHZhcigtLWZhLXdhZy1hbmdsZSwgMTJkZWcpICogMC42KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogIH0KICA2OCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgfQp9CkBrZXlmcmFtZXMgZmEtZmxvYXQgewogIDAlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSB0cmFuc2xhdGVYKDApIHJvdGF0ZSgwZGVnKSBzY2FsZSh2YXIoLS1mYS1mbG9hdC1zcXVhc2gteCwgMS4wMiksIHZhcigtLWZhLWZsb2F0LXNxdWFzaC15LCAwLjk4KSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zMywgMCwgMC42NiwgMC4zMyk7CiAgfQogIDE1JSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoY2FsYygtMC40ICogdmFyKC0tZmEtZmxvYXQtaGVpZ2h0LCA2cHgpKSkgdHJhbnNsYXRlWCh2YXIoLS1mYS1mbG9hdC1kcmlmdCwgMXB4KSkgcm90YXRlKHZhcigtLWZhLWZsb2F0LXRpbHQsIDFkZWcpKSBzY2FsZSgxLCAxKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLjY2LCAwLjY2LCAxKTsKICB9CiAgMzUlIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShjYWxjKC0xICogdmFyKC0tZmEtZmxvYXQtaGVpZ2h0LCA2cHgpKSkgdHJhbnNsYXRlWCgwKSByb3RhdGUoMGRlZykgc2NhbGUodmFyKC0tZmEtZmxvYXQtc3RyZXRjaC14LCAwLjk4KSwgdmFyKC0tZmEtZmxvYXQtc3RyZXRjaC15LCAxLjAzKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41LCAwLCAwLjUsIDApOwogIH0KICA1MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTAuOTIgKiB2YXIoLS1mYS1mbG9hdC1oZWlnaHQsIDZweCkpKSB0cmFuc2xhdGVYKGNhbGMoLTAuNSAqIHZhcigtLWZhLWZsb2F0LWRyaWZ0LCAxcHgpKSkgcm90YXRlKGNhbGMoLTAuNSAqIHZhcigtLWZhLWZsb2F0LXRpbHQsIDFkZWcpKSkgc2NhbGUoMC45OTUsIDEuMDEpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAsIDAuNjYsIDAuMzMpOwogIH0KICA3MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoLTAuMyAqIHZhcigtLWZhLWZsb2F0LWhlaWdodCwgNnB4KSkpIHRyYW5zbGF0ZVgoY2FsYygtMSAqIHZhcigtLWZhLWZsb2F0LWRyaWZ0LCAxcHgpKSkgcm90YXRlKGNhbGMoLTEgKiB2YXIoLS1mYS1mbG9hdC10aWx0LCAxZGVnKSkpIHNjYWxlKDEsIDEpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMzMsIDAuNjYsIDAuNjYsIDEpOwogIH0KICA5MCUgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKGNhbGMoMC4wNSAqIHZhcigtLWZhLWZsb2F0LWhlaWdodCwgNnB4KSkpIHRyYW5zbGF0ZVgoMCkgcm90YXRlKDBkZWcpIHNjYWxlKHZhcigtLWZhLWZsb2F0LXNxdWFzaC14LCAxLjAyKSwgdmFyKC0tZmEtZmxvYXQtc3F1YXNoLXksIDAuOTgpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMzLCAwLCAwLjY2LCAxKTsKICB9CiAgMTAwJSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgdHJhbnNsYXRlWCgwKSByb3RhdGUoMGRlZykgc2NhbGUodmFyKC0tZmEtZmxvYXQtc3F1YXNoLXgsIDEuMDIpLCB2YXIoLS1mYS1mbG9hdC1zcXVhc2gteSwgMC45OCkpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLXN3aW5nIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjIsIDAsIDAuOCwgMSk7CiAgfQogIDglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKHZhcigtLWZhLXN3aW5nLWFuZ2xlLCAyMmRlZykpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMTglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKGNhbGMoLTEgKiB2YXIoLS1mYS1zd2luZy1hbmdsZSwgMjJkZWcpICogMC44NSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMywgMCwgMC43LCAxKTsKICB9CiAgMjglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKGNhbGModmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuNjUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjM1LCAwLCAwLjY1LCAxKTsKICB9CiAgMzglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKGNhbGMoLTEgKiB2YXIoLS1mYS1zd2luZy1hbmdsZSwgMjJkZWcpICogMC40NSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgNDglIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKGNhbGModmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuMjUpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDU2JSB7CiAgICB0cmFuc2Zvcm06IHJvdGF0ZShjYWxjKC0xICogdmFyKC0tZmEtc3dpbmctYW5nbGUsIDIyZGVnKSAqIDAuMSkpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC42LCAxKTsKICB9CiAgNjQlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KICAxMDAlIHsKICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogIH0KfQpAa2V5ZnJhbWVzIGZhLWplbGxvIHsKICAwJSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEsIDEpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMiwgMCwgMC44LCAxKTsKICB9CiAgMTIlIHsKICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tZmEtamVsbG8tc2NhbGUteCwgMS4xNSksIGNhbGMoMiAtIHZhcigtLWZhLWplbGxvLXNjYWxlLXgsIDEuMTUpKSk7CiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4zLCAwLCAwLjcsIDEpOwogIH0KICAyNCUgewogICAgdHJhbnNmb3JtOiBzY2FsZShjYWxjKDIgLSB2YXIoLS1mYS1qZWxsby1zY2FsZS15LCAxLjEyKSksIHZhcigtLWZhLWplbGxvLXNjYWxlLXksIDEuMTIpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjMsIDAsIDAuNywgMSk7CiAgfQogIDM2JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMSArICh2YXIoLS1mYS1qZWxsby1zY2FsZS14LCAxLjE1KSAtIDEpICogMC41KSwgY2FsYygyIC0gKDEgKyAodmFyKC0tZmEtamVsbG8tc2NhbGUteCwgMS4xNSkgLSAxKSAqIDAuNSkpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDQ4JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKGNhbGMoMiAtICgxICsgKHZhcigtLWZhLWplbGxvLXNjYWxlLXksIDEuMTIpIC0gMSkgKiAwLjMpKSwgY2FsYygxICsgKHZhcigtLWZhLWplbGxvLXNjYWxlLXksIDEuMTIpIC0gMSkgKiAwLjMpKTsKICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuNiwgMSk7CiAgfQogIDU4JSB7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIsIDAuOTgpOwogICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsKICB9CiAgNjglIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSk7CiAgfQogIDEwMCUgewogICAgdHJhbnNmb3JtOiBzY2FsZSgxLCAxKTsKICB9Cn0KLmZhLXJvdGF0ZS05MCB7CiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOwp9CgouZmEtcm90YXRlLTE4MCB7CiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKfQoKLmZhLXJvdGF0ZS0yNzAgewogIHRyYW5zZm9ybTogcm90YXRlKDI3MGRlZyk7Cn0KCi5mYS1mbGlwLWhvcml6b250YWwgewogIHRyYW5zZm9ybTogc2NhbGUoLTEsIDEpOwp9CgouZmEtZmxpcC12ZXJ0aWNhbCB7CiAgdHJhbnNmb3JtOiBzY2FsZSgxLCAtMSk7Cn0KCi5mYS1mbGlwLWJvdGgsCi5mYS1mbGlwLWhvcml6b250YWwuZmEtZmxpcC12ZXJ0aWNhbCB7CiAgdHJhbnNmb3JtOiBzY2FsZSgtMSwgLTEpOwp9CgouZmEtcm90YXRlLWJ5IHsKICB0cmFuc2Zvcm06IHJvdGF0ZSh2YXIoLS1mYS1yb3RhdGUtYW5nbGUsIDApKTsKfQoKLnN2Zy1pbmxpbmUtLWZhIC5mYS1wcmltYXJ5IHsKICBmaWxsOiB2YXIoLS1mYS1wcmltYXJ5LWNvbG9yLCBjdXJyZW50Q29sb3IpOwogIG9wYWNpdHk6IHZhcigtLWZhLXByaW1hcnktb3BhY2l0eSwgMSk7Cn0KCi5zdmctaW5saW5lLS1mYSAuZmEtc2Vjb25kYXJ5IHsKICBmaWxsOiB2YXIoLS1mYS1zZWNvbmRhcnktY29sb3IsIGN1cnJlbnRDb2xvcik7CiAgb3BhY2l0eTogdmFyKC0tZmEtc2Vjb25kYXJ5LW9wYWNpdHksIDAuNCk7Cn0KCi5zdmctaW5saW5lLS1mYS5mYS1zd2FwLW9wYWNpdHkgLmZhLXByaW1hcnkgewogIG9wYWNpdHk6IHZhcigtLWZhLXNlY29uZGFyeS1vcGFjaXR5LCAwLjQpOwp9Cgouc3ZnLWlubGluZS0tZmEuZmEtc3dhcC1vcGFjaXR5IC5mYS1zZWNvbmRhcnkgewogIG9wYWNpdHk6IHZhcigtLWZhLXByaW1hcnktb3BhY2l0eSwgMSk7Cn0KCi5zdmctaW5saW5lLS1mYSBtYXNrIC5mYS1wcmltYXJ5LAouc3ZnLWlubGluZS0tZmEgbWFzayAuZmEtc2Vjb25kYXJ5IHsKICBmaWxsOiBibGFjazsKfQoKLnN2Zy1pbmxpbmUtLWZhLmZhLWludmVyc2UgewogIGZpbGw6IHZhcigtLWZhLWludmVyc2UsICNmZmYpOwp9CgouZmEtc3RhY2sgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBoZWlnaHQ6IDJlbTsKICBsaW5lLWhlaWdodDogMmVtOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIHdpZHRoOiAyLjVlbTsKfQoKLmZhLWludmVyc2UgewogIGNvbG9yOiB2YXIoLS1mYS1pbnZlcnNlLCAjZmZmKTsKfQoKLnN2Zy1pbmxpbmUtLWZhLmZhLXN0YWNrLTF4IHsKICAtLWZhLXdpZHRoOiAxLjI1ZW07CiAgaGVpZ2h0OiAxZW07CiAgd2lkdGg6IHZhcigtLWZhLXdpZHRoKTsKfQouc3ZnLWlubGluZS0tZmEuZmEtc3RhY2stMnggewogIC0tZmEtd2lkdGg6IDIuNWVtOwogIGhlaWdodDogMmVtOwogIHdpZHRoOiB2YXIoLS1mYS13aWR0aCk7Cn0KCi5mYS1zdGFjay0xeCwKLmZhLXN0YWNrLTJ4IHsKICBpbnNldDogMDsKICBtYXJnaW46IGF1dG87CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IHZhcigtLWZhLXN0YWNrLXotaW5kZXgsIGF1dG8pOwp9YDtmdW5jdGlvbiBvaSgpe3ZhciBlPXByLHQ9bXIsbj1xLmNzc1ByZWZpeCxyPXEucmVwbGFjZW1lbnRDbGFzcyxpPWFpO2lmKG4hPT1lfHxyIT09dCl7dmFyIGE9UmVnRXhwKGBcXC4ke2V9XFwtYCxgZ2ApLG89UmVnRXhwKGBcXC0tJHtlfVxcLWAsYGdgKSxzPVJlZ0V4cChgXFwuJHt0fWAsYGdgKTtpPWkucmVwbGFjZShhLGAuJHtufS1gKS5yZXBsYWNlKG8sYC0tJHtufS1gKS5yZXBsYWNlKHMsYC4ke3J9YCl9cmV0dXJuIGl9dmFyIHNpPSExO2Z1bmN0aW9uIGNpKCl7cS5hdXRvQWRkQ3NzJiYhc2kmJihKcihvaSgpKSxzaT0hMCl9dmFyIGxpPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9tOntjc3M6b2ksaW5zZXJ0Q3NzOmNpfX19LGhvb2tzOmZ1bmN0aW9uKCl7cmV0dXJue2JlZm9yZURPTUVsZW1lbnRDcmVhdGlvbjpmdW5jdGlvbigpe2NpKCl9LGJlZm9yZUkyc3ZnOmZ1bmN0aW9uKCl7Y2koKX19fX0sdWk9SXR8fHt9O3VpW2RyXXx8KHVpW2RyXT17fSksdWlbZHJdLnN0eWxlc3x8KHVpW2RyXS5zdHlsZXM9e30pLHVpW2RyXS5ob29rc3x8KHVpW2RyXS5ob29rcz17fSksdWlbZHJdLnNoaW1zfHwodWlbZHJdLnNoaW1zPVtdKTt2YXIgZGk9dWlbZHJdLGZpPVtdLHBpPWZ1bmN0aW9uKCl7Ry5yZW1vdmVFdmVudExpc3RlbmVyKGBET01Db250ZW50TG9hZGVkYCxwaSksbWk9MSxmaS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pfSxtaT0hMTt6dCYmKG1pPShHLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbD8vXmxvYWRlZHxeYy86L15sb2FkZWR8Xml8XmMvKS50ZXN0KEcucmVhZHlTdGF0ZSksbWl8fEcuYWRkRXZlbnRMaXN0ZW5lcihgRE9NQ29udGVudExvYWRlZGAscGkpKTtmdW5jdGlvbiBoaShlKXt6dCYmKG1pP3NldFRpbWVvdXQoZSwwKTpmaS5wdXNoKGUpKX1mdW5jdGlvbiBnaShlKXt2YXIgdD1lLnRhZyxuPWUuYXR0cmlidXRlcyxyPW49PT12b2lkIDA/e306bixpPWUuY2hpbGRyZW4sYT1pPT09dm9pZCAwP1tdOmk7cmV0dXJuIHR5cGVvZiBlPT1gc3RyaW5nYD8kcihlKTpgPCR7dH0gJHtlaShyKX0+JHthLm1hcChnaSkuam9pbihgYCl9PC8ke3R9PmB9ZnVuY3Rpb24gX2koZSx0LG4pe2lmKGUmJmVbdF0mJmVbdF1bbl0pcmV0dXJue3ByZWZpeDp0LGljb25OYW1lOm4saWNvbjplW3RdW25dfX12YXIgdmk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obixyLGksYSl7cmV0dXJuIGUuY2FsbCh0LG4scixpLGEpfX0seWk9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9T2JqZWN0LmtleXMoZSksYT1pLmxlbmd0aCxvPXI9PT12b2lkIDA/dDp2aSh0LHIpLHMsYyxsO2ZvcihuPT09dm9pZCAwPyhzPTEsbD1lW2lbMF1dKToocz0wLGw9bik7czxhO3MrKyljPWlbc10sbD1vKGwsZVtjXSxjLGUpO3JldHVybiBsfTtmdW5jdGlvbiBiaShlKXtyZXR1cm4gd3QoZSkubGVuZ3RoPT09MT9lLmNvZGVQb2ludEF0KDApLnRvU3RyaW5nKDE2KTpudWxsfWZ1bmN0aW9uIHhpKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoZnVuY3Rpb24odCxuKXt2YXIgcj1lW25dO3JldHVybiByLmljb24/dFtyLmljb25OYW1lXT1yLmljb246dFtuXT1yLHR9LHt9KX1mdW5jdGlvbiBTaShlLHQpe3ZhciBuPShhcmd1bWVudHMubGVuZ3RoPjImJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06e30pLnNraXBIb29rcyxyPW4hPT12b2lkIDAmJm4saT14aSh0KTt0eXBlb2YgZGkuaG9va3MuYWRkUGFjaz09YGZ1bmN0aW9uYCYmIXI/ZGkuaG9va3MuYWRkUGFjayhlLHhpKHQpKTpkaS5zdHlsZXNbZV09VyhXKHt9LGRpLnN0eWxlc1tlXXx8e30pLGkpLGU9PT1gZmFzYCYmU2koYGZhYCx0KX12YXIgQ2k9ZGkuc3R5bGVzLHdpPWRpLnNoaW1zLFRpPU9iamVjdC5rZXlzKGpyKSxFaT1UaS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1PYmplY3Qua2V5cyhqclt0XSksZX0se30pLERpPW51bGwsT2k9e30sa2k9e30sQWk9e30samk9e30sTWk9e307ZnVuY3Rpb24gTmkoZSl7cmV0dXJuflJyLmluZGV4T2YoZSl9ZnVuY3Rpb24gUGkoZSx0KXt2YXIgbj10LnNwbGl0KGAtYCkscj1uWzBdLGk9bi5zbGljZSgxKS5qb2luKGAtYCk7cmV0dXJuIHI9PT1lJiZpIT09YGAmJiFOaShpKT9pOm51bGx9dmFyIEZpPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHlpKENpLGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gdFtyXT15aShuLGUse30pLHR9LHt9KX07T2k9ZShmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRbM10mJihlW3RbM11dPW4pLHRbMl0mJnRbMl0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09YG51bWJlcmB9KS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2VbdC50b1N0cmluZygxNildPW59KSxlfSksa2k9ZShmdW5jdGlvbihlLHQsbil7cmV0dXJuIGVbbl09bix0WzJdJiZ0WzJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBzdHJpbmdgfSkuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPW59KSxlfSksTWk9ZShmdW5jdGlvbihlLHQsbil7dmFyIHI9dFsyXTtyZXR1cm4gZVtuXT1uLHIuZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPW59KSxlfSk7dmFyIHQ9YGZhcmBpbiBDaXx8cS5hdXRvRmV0Y2hTdmcsbj15aSh3aSxmdW5jdGlvbihlLG4pe3ZhciByPW5bMF0saT1uWzFdLGE9blsyXTtyZXR1cm4gaT09PWBmYXJgJiYhdCYmKGk9YGZhc2ApLHR5cGVvZiByPT1gc3RyaW5nYCYmKGUubmFtZXNbcl09e3ByZWZpeDppLGljb25OYW1lOmF9KSx0eXBlb2Ygcj09YG51bWJlcmAmJihlLnVuaWNvZGVzW3IudG9TdHJpbmcoMTYpXT17cHJlZml4OmksaWNvbk5hbWU6YX0pLGV9LHtuYW1lczp7fSx1bmljb2Rlczp7fX0pO0FpPW4ubmFtZXMsamk9bi51bmljb2RlcyxEaT1XaShxLnN0eWxlRGVmYXVsdCx7ZmFtaWx5OnEuZmFtaWx5RGVmYXVsdH0pfTtHcihmdW5jdGlvbihlKXtEaT1XaShlLnN0eWxlRGVmYXVsdCx7ZmFtaWx5OnEuZmFtaWx5RGVmYXVsdH0pfSksRmkoKTtmdW5jdGlvbiBJaShlLHQpe3JldHVybihPaVtlXXx8e30pW3RdfWZ1bmN0aW9uIExpKGUsdCl7cmV0dXJuKGtpW2VdfHx7fSlbdF19ZnVuY3Rpb24gUmkoZSx0KXtyZXR1cm4oTWlbZV18fHt9KVt0XX1mdW5jdGlvbiB6aShlKXtyZXR1cm4gQWlbZV18fHtwcmVmaXg6bnVsbCxpY29uTmFtZTpudWxsfX1mdW5jdGlvbiBCaShlKXt2YXIgdD1qaVtlXSxuPUlpKGBmYXNgLGUpO3JldHVybiB0fHwobj97cHJlZml4OmBmYXNgLGljb25OYW1lOm59Om51bGwpfHx7cHJlZml4Om51bGwsaWNvbk5hbWU6bnVsbH19ZnVuY3Rpb24gVmkoKXtyZXR1cm4gRGl9dmFyIEhpPWZ1bmN0aW9uKCl7cmV0dXJue3ByZWZpeDpudWxsLGljb25OYW1lOm51bGwscmVzdDpbXX19O2Z1bmN0aW9uIFVpKGUpe3ZhciB0PUssbj1UaS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1gJHtxLmNzc1ByZWZpeH0tJHt0fWAsZX0se30pO3JldHVybiBWbi5mb3JFYWNoKGZ1bmN0aW9uKHIpeyhlLmluY2x1ZGVzKG5bcl0pfHxlLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIEVpW3JdLmluY2x1ZGVzKGUpfSkpJiYodD1yKX0pLHR9ZnVuY3Rpb24gV2koZSl7dmFyIHQ9KGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSkuZmFtaWx5LG49dD09PXZvaWQgMD9LOnQscj1EcltuXVtlXTtpZihuPT09cXQmJiFlKXJldHVybmBmYWRgO3ZhciBpPWtyW25dW2VdfHxrcltuXVtyXSxhPWUgaW4gZGkuc3R5bGVzP2U6bnVsbDtyZXR1cm4gaXx8YXx8bnVsbH1mdW5jdGlvbiBHaShlKXt2YXIgdD1bXSxuPW51bGw7cmV0dXJuIGUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgcj1QaShxLmNzc1ByZWZpeCxlKTtyP249cjplJiZ0LnB1c2goZSl9KSx7aWNvbk5hbWU6bixyZXN0OnR9fWZ1bmN0aW9uIEtpKGUpe3JldHVybiBlLnNvcnQoKS5maWx0ZXIoZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuLmluZGV4T2YoZSk9PT10fSl9dmFyIHFpPWFyLmNvbmNhdChLbik7ZnVuY3Rpb24gSmkoZSl7dmFyIHQ9KGFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSkuc2tpcExvb2t1cHMsbj10IT09dm9pZCAwJiZ0LHI9bnVsbCxpPUtpKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBxaS5pbmNsdWRlcyhlKX0pKSxhPUtpKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFxaS5pbmNsdWRlcyhlKX0pKSxvPUN0KGkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiByPWUsIUt0LmluY2x1ZGVzKGUpfSksMSlbMF0scz1vPT09dm9pZCAwP251bGw6byxjPVVpKGkpLGw9VyhXKHt9LEdpKGEpKSx7fSx7cHJlZml4OldpKHMse2ZhbWlseTpjfSl9KTtyZXR1cm4gVyhXKFcoe30sbCksUWkoe3ZhbHVlczplLGZhbWlseTpjLHN0eWxlczpDaSxjb25maWc6cSxjYW5vbmljYWw6bCxnaXZlblByZWZpeDpyfSkpLFlpKG4scixsKSl9ZnVuY3Rpb24gWWkoZSx0LG4pe3ZhciByPW4ucHJlZml4LGk9bi5pY29uTmFtZTtpZihlfHwhcnx8IWkpcmV0dXJue3ByZWZpeDpyLGljb25OYW1lOml9O3ZhciBhPXQ9PT1gZmFgP3ppKGkpOnt9LG89UmkocixpKTtyZXR1cm4gaT1hLmljb25OYW1lfHxvfHxpLHI9YS5wcmVmaXh8fHIscj09PWBmYXJgJiYhQ2kuZmFyJiZDaS5mYXMmJiFxLmF1dG9GZXRjaFN2ZyYmKHI9YGZhc2ApLHtwcmVmaXg6cixpY29uTmFtZTppfX12YXIgWGk9Vm4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09S3x8ZSE9PXF0fSksWmk9T2JqZWN0LmtleXMoaXIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9PUt9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5rZXlzKGlyW2VdKX0pLmZsYXQoKTtmdW5jdGlvbiBRaShlKXt2YXIgdD1lLnZhbHVlcyxuPWUuZmFtaWx5LHI9ZS5jYW5vbmljYWwsaT1lLmdpdmVuUHJlZml4LGE9aT09PXZvaWQgMD9gYDppLG89ZS5zdHlsZXMscz1vPT09dm9pZCAwP3t9Om8sYz1lLmNvbmZpZyxsPWM9PT12b2lkIDA/e306Yyx1PW49PT1xdCxkPXQuaW5jbHVkZXMoYGZhLWR1b3RvbmVgKXx8dC5pbmNsdWRlcyhgZmFkYCksZj1sLmZhbWlseURlZmF1bHQ9PT1gZHVvdG9uZWAscD1yLnByZWZpeD09PWBmYWRgfHxyLnByZWZpeD09PWBmYS1kdW90b25lYDtyZXR1cm4hdSYmKGR8fGZ8fHApJiYoci5wcmVmaXg9YGZhZGApLCh0LmluY2x1ZGVzKGBmYS1icmFuZHNgKXx8dC5pbmNsdWRlcyhgZmFiYCkpJiYoci5wcmVmaXg9YGZhYmApLCFyLnByZWZpeCYmWGkuaW5jbHVkZXMobikmJihPYmplY3Qua2V5cyhzKS5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBaaS5pbmNsdWRlcyhlKX0pfHxsLmF1dG9GZXRjaFN2ZykmJihyLnByZWZpeD1Xbi5nZXQobikuZGVmYXVsdFNob3J0UHJlZml4SWQsci5pY29uTmFtZT1SaShyLnByZWZpeCxyLmljb25OYW1lKXx8ci5pY29uTmFtZSksKHIucHJlZml4PT09YGZhYHx8YT09PWBmYWApJiYoci5wcmVmaXg9VmkoKXx8YGZhc2ApLHJ9dmFyICRpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe210KHRoaXMsZSksdGhpcy5kZWZpbml0aW9ucz17fX1yZXR1cm4gZ3QoZSxbe2tleTpgYWRkYCx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1bLi4uYXJndW1lbnRzXS5yZWR1Y2UodGhpcy5fcHVsbERlZmluaXRpb25zLHt9KTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2UuZGVmaW5pdGlvbnNbbl09VyhXKHt9LGUuZGVmaW5pdGlvbnNbbl18fHt9KSx0W25dKSxTaShuLHRbbl0pO3ZhciByPWpyW0tdW25dO3ImJlNpKHIsdFtuXSksRmkoKX0pfX0se2tleTpgcmVzZXRgLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5kZWZpbml0aW9ucz17fX19LHtrZXk6YF9wdWxsRGVmaW5pdGlvbnNgLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5wcmVmaXgmJnQuaWNvbk5hbWUmJnQuaWNvbj97MDp0fTp0O3JldHVybiBPYmplY3Qua2V5cyhuKS5tYXAoZnVuY3Rpb24odCl7dmFyIHI9blt0XSxpPXIucHJlZml4LGE9ci5pY29uTmFtZSxvPXIuaWNvbixzPW9bMl07ZVtpXXx8KGVbaV09e30pLHMubGVuZ3RoPjAmJnMuZm9yRWFjaChmdW5jdGlvbih0KXt0eXBlb2YgdD09YHN0cmluZ2AmJihlW2ldW3RdPW8pfSksZVtpXVthXT1vfSksZX19XSl9KCksZWE9W10sdGE9e30sbmE9e30scmE9T2JqZWN0LmtleXMobmEpO2Z1bmN0aW9uIGlhKGUsdCl7dmFyIG49dC5taXhvdXRzVG87cmV0dXJuIGVhPWUsdGE9e30sT2JqZWN0LmtleXMobmEpLmZvckVhY2goZnVuY3Rpb24oZSl7cmEuaW5kZXhPZihlKT09PS0xJiZkZWxldGUgbmFbZV19KSxlYS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubWl4b3V0P2UubWl4b3V0KCk6e307aWYoT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihlKXt0eXBlb2YgdFtlXT09YGZ1bmN0aW9uYCYmKG5bZV09dFtlXSksRHQodFtlXSk9PT1gb2JqZWN0YCYmT2JqZWN0LmtleXModFtlXSkuZm9yRWFjaChmdW5jdGlvbihyKXtuW2VdfHwobltlXT17fSksbltlXVtyXT10W2VdW3JdfSl9KSxlLmhvb2tzKXt2YXIgcj1lLmhvb2tzKCk7T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXt0YVtlXXx8KHRhW2VdPVtdKSx0YVtlXS5wdXNoKHJbZV0pfSl9ZS5wcm92aWRlcyYmZS5wcm92aWRlcyhuYSl9KSxufWZ1bmN0aW9uIGFhKGUsdCl7dmFyIG49Wy4uLmFyZ3VtZW50c10uc2xpY2UoMik7cmV0dXJuKHRhW2VdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXt0PWUuYXBwbHkobnVsbCxbdF0uY29uY2F0KG4pKX0pLHR9ZnVuY3Rpb24gb2EoZSl7dmFyIHQ9Wy4uLmFyZ3VtZW50c10uc2xpY2UoMSk7KHRhW2VdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXtlLmFwcGx5KG51bGwsdCl9KX1mdW5jdGlvbiBzYSgpe3ZhciBlPWFyZ3VtZW50c1swXSx0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gbmFbZV0/bmFbZV0uYXBwbHkobnVsbCx0KTp2b2lkIDB9ZnVuY3Rpb24gY2EoZSl7ZS5wcmVmaXg9PT1gZmFgJiYoZS5wcmVmaXg9YGZhc2ApO3ZhciB0PWUuaWNvbk5hbWUsbj1lLnByZWZpeHx8VmkoKTtpZih0KXJldHVybiB0PVJpKG4sdCl8fHQsX2kobGEuZGVmaW5pdGlvbnMsbix0KXx8X2koZGkuc3R5bGVzLG4sdCl9dmFyIGxhPW5ldyAkaSxKPXtub0F1dG86ZnVuY3Rpb24oKXtxLmF1dG9SZXBsYWNlU3ZnPSExLHEub2JzZXJ2ZU11dGF0aW9ucz0hMSxvYShgbm9BdXRvYCl9LGNvbmZpZzpxLGRvbTp7aTJzdmc6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e307cmV0dXJuIHp0PyhvYShgYmVmb3JlSTJzdmdgLGUpLHNhKGBwc2V1ZG9FbGVtZW50czJzdmdgLGUpLHNhKGBpMnN2Z2AsZSkpOlByb21pc2UucmVqZWN0KEVycm9yKGBPcGVyYXRpb24gcmVxdWlyZXMgYSBET00gb2Ygc29tZSBraW5kLmApKX0sd2F0Y2g6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06e30sdD1lLmF1dG9SZXBsYWNlU3ZnUm9vdDtxLmF1dG9SZXBsYWNlU3ZnPT09ITEmJihxLmF1dG9SZXBsYWNlU3ZnPSEwKSxxLm9ic2VydmVNdXRhdGlvbnM9ITAsaGkoZnVuY3Rpb24oKXt1YSh7YXV0b1JlcGxhY2VTdmdSb290OnR9KSxvYShgd2F0Y2hgLGUpfSl9fSxwYXJzZTp7aWNvbjpmdW5jdGlvbihlKXtpZihlPT09bnVsbClyZXR1cm4gbnVsbDtpZihEdChlKT09PWBvYmplY3RgJiZlLnByZWZpeCYmZS5pY29uTmFtZSlyZXR1cm57cHJlZml4OmUucHJlZml4LGljb25OYW1lOlJpKGUucHJlZml4LGUuaWNvbk5hbWUpfHxlLmljb25OYW1lfTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTIpe3ZhciB0PWVbMV0uaW5kZXhPZihgZmEtYCk9PT0wP2VbMV0uc2xpY2UoMyk6ZVsxXSxuPVdpKGVbMF0pO3JldHVybntwcmVmaXg6bixpY29uTmFtZTpSaShuLHQpfHx0fX1pZih0eXBlb2YgZT09YHN0cmluZ2AmJihlLmluZGV4T2YoYCR7cS5jc3NQcmVmaXh9LWApPi0xfHxlLm1hdGNoKE5yKSkpe3ZhciByPUppKGUuc3BsaXQoYCBgKSx7c2tpcExvb2t1cHM6ITB9KTtyZXR1cm57cHJlZml4OnIucHJlZml4fHxWaSgpLGljb25OYW1lOlJpKHIucHJlZml4LHIuaWNvbk5hbWUpfHxyLmljb25OYW1lfX1pZih0eXBlb2YgZT09YHN0cmluZ2Ape3ZhciBpPVZpKCk7cmV0dXJue3ByZWZpeDppLGljb25OYW1lOlJpKGksZSl8fGV9fX19LGxpYnJhcnk6bGEsZmluZEljb25EZWZpbml0aW9uOmNhLHRvSHRtbDpnaX0sdWE9ZnVuY3Rpb24oKXt2YXIgZT0oYXJndW1lbnRzLmxlbmd0aD4wJiZhcmd1bWVudHNbMF0hPT12b2lkIDA/YXJndW1lbnRzWzBdOnt9KS5hdXRvUmVwbGFjZVN2Z1Jvb3QsdD1lPT09dm9pZCAwP0c6ZTsoT2JqZWN0LmtleXMoZGkuc3R5bGVzKS5sZW5ndGg+MHx8cS5hdXRvRmV0Y2hTdmcpJiZ6dCYmcS5hdXRvUmVwbGFjZVN2ZyYmSi5kb20uaTJzdmcoe25vZGU6dH0pfTtmdW5jdGlvbiBkYShlLHQpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiYWJzdHJhY3QiLHtnZXQ6dH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJodG1sIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuYWJzdHJhY3QubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBnaShlKX0pfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJub2RlIix7Z2V0OmZ1bmN0aW9uKCl7aWYoenQpe3ZhciB0PUcuY3JlYXRlRWxlbWVudChgZGl2YCk7cmV0dXJuIHQuaW5uZXJIVE1MPWUuaHRtbCx0LmNoaWxkcmVufX19KSxlfWZ1bmN0aW9uIGZhKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLm1haW4scj1lLm1hc2ssaT1lLmF0dHJpYnV0ZXMsYT1lLnN0eWxlcyxvPWUudHJhbnNmb3JtO2lmKG5pKG8pJiZuLmZvdW5kJiYhci5mb3VuZCl7dmFyIHM9e3g6bi53aWR0aC9uLmhlaWdodC8yLHk6LjV9O2kuc3R5bGU9dGkoVyhXKHt9LGEpLHt9LHsidHJhbnNmb3JtLW9yaWdpbiI6YCR7cy54K28ueC8xNn1lbSAke3MueStvLnkvMTZ9ZW1gfSkpfXJldHVyblt7dGFnOmBzdmdgLGF0dHJpYnV0ZXM6aSxjaGlsZHJlbjp0fV19ZnVuY3Rpb24gcGEoZSl7dmFyIHQ9ZS5wcmVmaXgsbj1lLmljb25OYW1lLHI9ZS5jaGlsZHJlbixpPWUuYXR0cmlidXRlcyxhPWUuc3ltYm9sLG89YT09PSEwP2Ake3R9LSR7cS5jc3NQcmVmaXh9LSR7bn1gOmE7cmV0dXJuW3t0YWc6YHN2Z2AsYXR0cmlidXRlczp7c3R5bGU6YGRpc3BsYXk6IG5vbmU7YH0sY2hpbGRyZW46W3t0YWc6YHN5bWJvbGAsYXR0cmlidXRlczpXKFcoe30saSkse30se2lkOm99KSxjaGlsZHJlbjpyfV19XX1mdW5jdGlvbiBtYShlKXtyZXR1cm5bYGFyaWEtbGFiZWxgLGBhcmlhLWxhYmVsbGVkYnlgLGB0aXRsZWAsYHJvbGVgXS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluIGV9KX1mdW5jdGlvbiBoYShlKXt2YXIgdD1lLmljb25zLG49dC5tYWluLHI9dC5tYXNrLGk9ZS5wcmVmaXgsYT1lLmljb25OYW1lLG89ZS50cmFuc2Zvcm0scz1lLnN5bWJvbCxjPWUubWFza0lkLGw9ZS5leHRyYSx1PWUud2F0Y2hhYmxlLGQ9dSE9PXZvaWQgMCYmdSxmPXIuZm91bmQ/cjpuLHA9Zi53aWR0aCxtPWYuaGVpZ2h0LGg9W3EucmVwbGFjZW1lbnRDbGFzcyxhP2Ake3EuY3NzUHJlZml4fS0ke2F9YDpgYF0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBsLmNsYXNzZXMuaW5kZXhPZihlKT09PS0xfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09YGB8fCEhZX0pLmNvbmNhdChsLmNsYXNzZXMpLmpvaW4oYCBgKSxnPXtjaGlsZHJlbjpbXSxhdHRyaWJ1dGVzOlcoVyh7fSxsLmF0dHJpYnV0ZXMpLHt9LHsiZGF0YS1wcmVmaXgiOmksImRhdGEtaWNvbiI6YSxjbGFzczpoLHJvbGU6bC5hdHRyaWJ1dGVzLnJvbGV8fGBpbWdgLHZpZXdCb3g6YDAgMCAke3B9ICR7bX1gfSl9OyFtYShsLmF0dHJpYnV0ZXMpJiYhbC5hdHRyaWJ1dGVzW2BhcmlhLWhpZGRlbmBdJiYoZy5hdHRyaWJ1dGVzW2BhcmlhLWhpZGRlbmBdPWB0cnVlYCksZCYmKGcuYXR0cmlidXRlc1tocl09YGApO3ZhciBfPVcoVyh7fSxnKSx7fSx7cHJlZml4OmksaWNvbk5hbWU6YSxtYWluOm4sbWFzazpyLG1hc2tJZDpjLHRyYW5zZm9ybTpvLHN5bWJvbDpzLHN0eWxlczpXKHt9LGwuc3R5bGVzKX0pLHY9ci5mb3VuZCYmbi5mb3VuZD9zYShgZ2VuZXJhdGVBYnN0cmFjdE1hc2tgLF8pfHx7Y2hpbGRyZW46W10sYXR0cmlidXRlczp7fX06c2EoYGdlbmVyYXRlQWJzdHJhY3RJY29uYCxfKXx8e2NoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e319LHk9di5jaGlsZHJlbixiPXYuYXR0cmlidXRlcztyZXR1cm4gXy5jaGlsZHJlbj15LF8uYXR0cmlidXRlcz1iLHM/cGEoXyk6ZmEoXyl9ZnVuY3Rpb24gZ2EoZSl7dmFyIHQ9ZS5jb250ZW50LG49ZS53aWR0aCxyPWUuaGVpZ2h0LGk9ZS50cmFuc2Zvcm0sYT1lLmV4dHJhLG89ZS53YXRjaGFibGUscz1vIT09dm9pZCAwJiZvLGM9VyhXKHt9LGEuYXR0cmlidXRlcykse30se2NsYXNzOmEuY2xhc3Nlcy5qb2luKGAgYCl9KTtzJiYoY1tocl09YGApO3ZhciBsPVcoe30sYS5zdHlsZXMpO25pKGkpJiYobC50cmFuc2Zvcm09aWkoe3RyYW5zZm9ybTppLHN0YXJ0Q2VudGVyZWQ6ITAsd2lkdGg6bixoZWlnaHQ6cn0pLGxbYC13ZWJraXQtdHJhbnNmb3JtYF09bC50cmFuc2Zvcm0pO3ZhciB1PXRpKGwpO3UubGVuZ3RoPjAmJihjLnN0eWxlPXUpO3ZhciBkPVtdO3JldHVybiBkLnB1c2goe3RhZzpgc3BhbmAsYXR0cmlidXRlczpjLGNoaWxkcmVuOlt0XX0pLGR9ZnVuY3Rpb24gX2EoZSl7dmFyIHQ9ZS5jb250ZW50LG49ZS5leHRyYSxyPVcoVyh7fSxuLmF0dHJpYnV0ZXMpLHt9LHtjbGFzczpuLmNsYXNzZXMuam9pbihgIGApfSksaT10aShuLnN0eWxlcyk7aS5sZW5ndGg+MCYmKHIuc3R5bGU9aSk7dmFyIGE9W107cmV0dXJuIGEucHVzaCh7dGFnOmBzcGFuYCxhdHRyaWJ1dGVzOnIsY2hpbGRyZW46W3RdfSksYX12YXIgdmE9ZGkuc3R5bGVzO2Z1bmN0aW9uIHlhKGUpe3ZhciB0PWVbMF0sbj1lWzFdLHI9Q3QoZS5zbGljZSg0KSwxKVswXSxpPW51bGw7cmV0dXJuIGk9QXJyYXkuaXNBcnJheShyKT97dGFnOmBnYCxhdHRyaWJ1dGVzOntjbGFzczpgJHtxLmNzc1ByZWZpeH0tJHtMci5HUk9VUH1gfSxjaGlsZHJlbjpbe3RhZzpgcGF0aGAsYXR0cmlidXRlczp7Y2xhc3M6YCR7cS5jc3NQcmVmaXh9LSR7THIuU0VDT05EQVJZfWAsZmlsbDpgY3VycmVudENvbG9yYCxkOnJbMF19fSx7dGFnOmBwYXRoYCxhdHRyaWJ1dGVzOntjbGFzczpgJHtxLmNzc1ByZWZpeH0tJHtMci5QUklNQVJZfWAsZmlsbDpgY3VycmVudENvbG9yYCxkOnJbMV19fV19Ont0YWc6YHBhdGhgLGF0dHJpYnV0ZXM6e2ZpbGw6YGN1cnJlbnRDb2xvcmAsZDpyfX0se2ZvdW5kOiEwLHdpZHRoOnQsaGVpZ2h0Om4saWNvbjppfX12YXIgYmE9e2ZvdW5kOiExLHdpZHRoOjUxMixoZWlnaHQ6NTEyfTtmdW5jdGlvbiB4YShlLHQpeyF3ciYmIXEuc2hvd01pc3NpbmdJY29ucyYmZSYmY29uc29sZS5lcnJvcihgSWNvbiB3aXRoIG5hbWUgIiR7ZX0iIGFuZCBwcmVmaXggIiR7dH0iIGlzIG1pc3NpbmcuYCl9ZnVuY3Rpb24gU2EoZSx0KXt2YXIgbj10O3JldHVybiB0PT09YGZhYCYmcS5zdHlsZURlZmF1bHQhPT1udWxsJiYodD1WaSgpKSxuZXcgUHJvbWlzZShmdW5jdGlvbihyLGkpe2lmKG49PT1gZmFgKXt2YXIgYT16aShlKXx8e307ZT1hLmljb25OYW1lfHxlLHQ9YS5wcmVmaXh8fHR9aWYoZSYmdCYmdmFbdF0mJnZhW3RdW2VdKXt2YXIgbz12YVt0XVtlXTtyZXR1cm4gcih5YShvKSl9eGEoZSx0KSxyKFcoVyh7fSxiYSkse30se2ljb246cS5zaG93TWlzc2luZ0ljb25zJiZlJiZzYShgbWlzc2luZ0ljb25BYnN0cmFjdGApfHx7fX0pKX0pfXZhciBDYT1mdW5jdGlvbigpe30sd2E9cS5tZWFzdXJlUGVyZm9ybWFuY2UmJlJ0JiZSdC5tYXJrJiZSdC5tZWFzdXJlP1J0OnttYXJrOkNhLG1lYXN1cmU6Q2F9LFRhPWBGQSAiNy4zLjEiYCxFYT1mdW5jdGlvbihlKXtyZXR1cm4gd2EubWFyayhgJHtUYX0gJHtlfSBiZWdpbnNgKSxmdW5jdGlvbigpe3JldHVybiBEYShlKX19LERhPWZ1bmN0aW9uKGUpe3dhLm1hcmsoYCR7VGF9ICR7ZX0gZW5kc2ApLHdhLm1lYXN1cmUoYCR7VGF9ICR7ZX1gLGAke1RhfSAke2V9IGJlZ2luc2AsYCR7VGF9ICR7ZX0gZW5kc2ApfSxPYT17YmVnaW46RWEsZW5kOkRhfSxrYT1mdW5jdGlvbigpe307ZnVuY3Rpb24gQWEoZSl7cmV0dXJuIHR5cGVvZihlLmdldEF0dHJpYnV0ZT9lLmdldEF0dHJpYnV0ZShocik6bnVsbCk9PWBzdHJpbmdgfWZ1bmN0aW9uIGphKGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlP2UuZ2V0QXR0cmlidXRlKHZyKTpudWxsLG49ZS5nZXRBdHRyaWJ1dGU/ZS5nZXRBdHRyaWJ1dGUoeXIpOm51bGw7cmV0dXJuIHQmJm59ZnVuY3Rpb24gTWEoZSl7cmV0dXJuIGUmJmUuY2xhc3NMaXN0JiZlLmNsYXNzTGlzdC5jb250YWlucyYmZS5jbGFzc0xpc3QuY29udGFpbnMocS5yZXBsYWNlbWVudENsYXNzKX1mdW5jdGlvbiBOYSgpe3JldHVybiBxLmF1dG9SZXBsYWNlU3ZnPT09ITA/UmEucmVwbGFjZTpSYVtxLmF1dG9SZXBsYWNlU3ZnXXx8UmEucmVwbGFjZX1mdW5jdGlvbiBQYShlKXtyZXR1cm4gRy5jcmVhdGVFbGVtZW50TlMoYGh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnYCxlKX1mdW5jdGlvbiBGYShlKXtyZXR1cm4gRy5jcmVhdGVFbGVtZW50KGUpfWZ1bmN0aW9uIElhKGUpe3ZhciB0PShhcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30pLmNlRm4sbj10PT09dm9pZCAwP2UudGFnPT09YHN2Z2A/UGE6RmE6dDtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIEcuY3JlYXRlVGV4dE5vZGUoZSk7dmFyIHI9bihlLnRhZyk7cmV0dXJuIE9iamVjdC5rZXlzKGUuYXR0cmlidXRlc3x8W10pLmZvckVhY2goZnVuY3Rpb24odCl7ci5zZXRBdHRyaWJ1dGUodCxlLmF0dHJpYnV0ZXNbdF0pfSksKGUuY2hpbGRyZW58fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3IuYXBwZW5kQ2hpbGQoSWEoZSx7Y2VGbjpufSkpfSkscn1mdW5jdGlvbiBMYShlKXt2YXIgdD1gICR7ZS5vdXRlckhUTUx9IGA7cmV0dXJuIHQ9YCR7dH1Gb250IEF3ZXNvbWUgZm9udGF3ZXNvbWUuY29tIGAsdH12YXIgUmE9e3JlcGxhY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtpZih0LnBhcmVudE5vZGUpe2lmKGVbMV0uZm9yRWFjaChmdW5jdGlvbihlKXt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKElhKGUpLHQpfSksdC5nZXRBdHRyaWJ1dGUoaHIpPT09bnVsbCYmcS5rZWVwT3JpZ2luYWxTb3VyY2Upe3ZhciBuPUcuY3JlYXRlQ29tbWVudChMYSh0KSk7dC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLHQpfWVsc2UgdC5yZW1vdmUoKX19LG5lc3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXSxuPWVbMV07aWYoflFyKHQpLmluZGV4T2YocS5yZXBsYWNlbWVudENsYXNzKSlyZXR1cm4gUmEucmVwbGFjZShlKTt2YXIgcj1SZWdFeHAoYCR7cS5jc3NQcmVmaXh9LS4qYCk7aWYoZGVsZXRlIG5bMF0uYXR0cmlidXRlcy5pZCxuWzBdLmF0dHJpYnV0ZXMuY2xhc3Mpe3ZhciBpPW5bMF0uYXR0cmlidXRlcy5jbGFzcy5zcGxpdChgIGApLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0PT09cS5yZXBsYWNlbWVudENsYXNzfHx0Lm1hdGNoKHIpP2UudG9TdmcucHVzaCh0KTplLnRvTm9kZS5wdXNoKHQpLGV9LHt0b05vZGU6W10sdG9Tdmc6W119KTtuWzBdLmF0dHJpYnV0ZXMuY2xhc3M9aS50b1N2Zy5qb2luKGAgYCksaS50b05vZGUubGVuZ3RoPT09MD90LnJlbW92ZUF0dHJpYnV0ZShgY2xhc3NgKTp0LnNldEF0dHJpYnV0ZShgY2xhc3NgLGkudG9Ob2RlLmpvaW4oYCBgKSl9dmFyIGE9bi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGdpKGUpfSkuam9pbihgCmApO3Quc2V0QXR0cmlidXRlKGhyLGBgKSx0LmlubmVySFRNTD1hfX07ZnVuY3Rpb24gemEoZSl7ZSgpfWZ1bmN0aW9uIEJhKGUsdCl7dmFyIG49dHlwZW9mIHQ9PWBmdW5jdGlvbmA/dDprYTtpZihlLmxlbmd0aD09PTApbigpO2Vsc2V7dmFyIHI9emE7cS5tdXRhdGVBcHByb2FjaD09PXhyJiYocj1JdC5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHphKSxyKGZ1bmN0aW9uKCl7dmFyIHQ9TmEoKSxyPU9hLmJlZ2luKGBtdXRhdGVgKTtlLm1hcCh0KSxyKCksbigpfSl9fXZhciBWYT0hMTtmdW5jdGlvbiBIYSgpe1ZhPSEwfWZ1bmN0aW9uIFVhKCl7VmE9ITF9dmFyIFdhPW51bGw7ZnVuY3Rpb24gR2EoZSl7aWYoTHQmJnEub2JzZXJ2ZU11dGF0aW9ucyl7dmFyIHQ9ZS50cmVlQ2FsbGJhY2ssbj10PT09dm9pZCAwP2thOnQscj1lLm5vZGVDYWxsYmFjayxpPXI9PT12b2lkIDA/a2E6cixhPWUucHNldWRvRWxlbWVudHNDYWxsYmFjayxvPWE9PT12b2lkIDA/a2E6YSxzPWUub2JzZXJ2ZU11dGF0aW9uc1Jvb3QsYz1zPT09dm9pZCAwP0c6cztXYT1uZXcgTHQoZnVuY3Rpb24oZSl7aWYoIVZhKXt2YXIgdD1WaSgpO1pyKGUpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS50eXBlPT09YGNoaWxkTGlzdGAmJmUuYWRkZWROb2Rlcy5sZW5ndGg+MCYmIUFhKGUuYWRkZWROb2Rlc1swXSkmJihxLnNlYXJjaFBzZXVkb0VsZW1lbnRzJiZvKGUudGFyZ2V0KSxuKGUudGFyZ2V0KSksZS50eXBlPT09YGF0dHJpYnV0ZXNgJiZlLnRhcmdldC5wYXJlbnROb2RlJiZxLnNlYXJjaFBzZXVkb0VsZW1lbnRzJiZvKFtlLnRhcmdldF0sITApLGUudHlwZT09PWBhdHRyaWJ1dGVzYCYmQWEoZS50YXJnZXQpJiZ+SXIuaW5kZXhPZihlLmF0dHJpYnV0ZU5hbWUpKXtpZihlLmF0dHJpYnV0ZU5hbWU9PT1gY2xhc3NgJiZqYShlLnRhcmdldCkpe3ZhciByPUppKFFyKGUudGFyZ2V0KSksYT1yLnByZWZpeCxzPXIuaWNvbk5hbWU7ZS50YXJnZXQuc2V0QXR0cmlidXRlKHZyLGF8fHQpLHMmJmUudGFyZ2V0LnNldEF0dHJpYnV0ZSh5cixzKX1lbHNlIE1hKGUudGFyZ2V0KSYmaShlLnRhcmdldCl9fSl9fSksenQmJldhLm9ic2VydmUoYyx7Y2hpbGRMaXN0OiEwLGF0dHJpYnV0ZXM6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSl9fWZ1bmN0aW9uIEthKCl7V2EmJldhLmRpc2Nvbm5lY3QoKX1mdW5jdGlvbiBxYShlKXt2YXIgdD1lLmdldEF0dHJpYnV0ZShgc3R5bGVgKSxuPVtdO3JldHVybiB0JiYobj10LnNwbGl0KGA7YCkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zcGxpdChgOmApLHI9blswXSxpPW4uc2xpY2UoMSk7cmV0dXJuIHImJmkubGVuZ3RoPjAmJihlW3JdPWkuam9pbihgOmApLnRyaW0oKSksZX0se30pKSxufWZ1bmN0aW9uIEphKGUpe3ZhciB0PWUuZ2V0QXR0cmlidXRlKGBkYXRhLXByZWZpeGApLG49ZS5nZXRBdHRyaWJ1dGUoYGRhdGEtaWNvbmApLHI9ZS5pbm5lclRleHQ9PT12b2lkIDA/YGA6ZS5pbm5lclRleHQudHJpbSgpLGk9SmkoUXIoZSkpO3JldHVybiBpLnByZWZpeHx8PVZpKCksdCYmbiYmKGkucHJlZml4PXQsaS5pY29uTmFtZT1uKSxpLmljb25OYW1lJiZpLnByZWZpeD9pOihpLnByZWZpeCYmci5sZW5ndGg+MCYmKGkuaWNvbk5hbWU9TGkoaS5wcmVmaXgsZS5pbm5lclRleHQpfHxJaShpLnByZWZpeCxiaShlLmlubmVyVGV4dCkpKSwhaS5pY29uTmFtZSYmcS5hdXRvRmV0Y2hTdmcmJmUuZmlyc3RDaGlsZCYmZS5maXJzdENoaWxkLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUmJihpLmljb25OYW1lPWUuZmlyc3RDaGlsZC5kYXRhKSxpKX1mdW5jdGlvbiBZYShlKXtyZXR1cm4gWnIoZS5hdHRyaWJ1dGVzKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5uYW1lIT09YGNsYXNzYCYmZS5uYW1lIT09YHN0eWxlYCYmKGVbdC5uYW1lXT10LnZhbHVlKSxlfSx7fSl9ZnVuY3Rpb24gWGEoKXtyZXR1cm57aWNvbk5hbWU6bnVsbCxwcmVmaXg6bnVsbCx0cmFuc2Zvcm06cXIsc3ltYm9sOiExLG1hc2s6e2ljb25OYW1lOm51bGwscHJlZml4Om51bGwscmVzdDpbXX0sbWFza0lkOm51bGwsZXh0cmE6e2NsYXNzZXM6W10sc3R5bGVzOnt9LGF0dHJpYnV0ZXM6e319fX1mdW5jdGlvbiBaYShlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e3N0eWxlUGFyc2VyOiEwfSxuPUphKGUpLHI9bi5pY29uTmFtZSxpPW4ucHJlZml4LGE9bi5yZXN0LG89WWEoZSkscz1hYShgcGFyc2VOb2RlQXR0cmlidXRlc2Ase30sZSk7cmV0dXJuIFcoe2ljb25OYW1lOnIscHJlZml4OmksdHJhbnNmb3JtOnFyLG1hc2s6e2ljb25OYW1lOm51bGwscHJlZml4Om51bGwscmVzdDpbXX0sbWFza0lkOm51bGwsc3ltYm9sOiExLGV4dHJhOntjbGFzc2VzOmEsc3R5bGVzOnQuc3R5bGVQYXJzZXI/cWEoZSk6W10sYXR0cmlidXRlczpvfX0scyl9dmFyIFFhPWRpLnN0eWxlcztmdW5jdGlvbiAkYShlKXt2YXIgdD1xLmF1dG9SZXBsYWNlU3ZnPT09YG5lc3RgP1phKGUse3N0eWxlUGFyc2VyOiExfSk6WmEoZSk7cmV0dXJufnQuZXh0cmEuY2xhc3Nlcy5pbmRleE9mKFByKT9zYShgZ2VuZXJhdGVMYXllcnNUZXh0YCxlLHQpOnNhKGBnZW5lcmF0ZVN2Z1JlcGxhY2VtZW50TXV0YXRpb25gLGUsdCl9ZnVuY3Rpb24gZW8oKXtyZXR1cm5bXS5jb25jYXQod3QoS24pLHd0KGFyKSl9ZnVuY3Rpb24gdG8oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7aWYoIXp0KXJldHVybiBQcm9taXNlLnJlc29sdmUoKTt2YXIgbj1HLmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3Qscj1mdW5jdGlvbihlKXtyZXR1cm4gbi5hZGQoYCR7YnJ9LSR7ZX1gKX0saT1mdW5jdGlvbihlKXtyZXR1cm4gbi5yZW1vdmUoYCR7YnJ9LSR7ZX1gKX0sYT1xLmF1dG9GZXRjaFN2Zz9lbygpOkt0LmNvbmNhdChPYmplY3Qua2V5cyhRYSkpO2EuaW5jbHVkZXMoYGZhYCl8fGEucHVzaChgZmFgKTt2YXIgbz1bYC4ke1ByfTpub3QoWyR7aHJ9XSlgXS5jb25jYXQoYS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuYC4ke2V9Om5vdChbJHtocn1dKWB9KSkuam9pbihgLCBgKTtpZihvLmxlbmd0aD09PTApcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO3ZhciBzPVtdO3RyeXtzPVpyKGUucXVlcnlTZWxlY3RvckFsbChvKSl9Y2F0Y2h7fWlmKHMubGVuZ3RoPjApcihgcGVuZGluZ2ApLGkoYGNvbXBsZXRlYCk7ZWxzZSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7dmFyIGM9T2EuYmVnaW4oYG9uVHJlZWApLGw9cy5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt0cnl7dmFyIG49JGEodCk7biYmZS5wdXNoKG4pfWNhdGNoKGUpe3dyfHxlLm5hbWU9PT1gTWlzc2luZ0ljb25gJiZjb25zb2xlLmVycm9yKGUpfXJldHVybiBlfSxbXSk7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsbil7UHJvbWlzZS5hbGwobCkudGhlbihmdW5jdGlvbihuKXtCYShuLGZ1bmN0aW9uKCl7cihgYWN0aXZlYCkscihgY29tcGxldGVgKSxpKGBwZW5kaW5nYCksdHlwZW9mIHQ9PWBmdW5jdGlvbmAmJnQoKSxjKCksZSgpfSl9KS5jYXRjaChmdW5jdGlvbihlKXtjKCksbihlKX0pfSl9ZnVuY3Rpb24gbm8oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOm51bGw7JGEoZSkudGhlbihmdW5jdGlvbihlKXtlJiZCYShbZV0sdCl9KX1mdW5jdGlvbiBybyhlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LHI9KHR8fHt9KS5pY29uP3Q6Y2EodHx8e30pLGk9bi5tYXNrO3JldHVybiBpJiY9KGl8fHt9KS5pY29uP2k6Y2EoaXx8e30pLGUocixXKFcoe30sbikse30se21hc2s6aX0pKX19dmFyIGlvPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPXQudHJhbnNmb3JtLHI9bj09PXZvaWQgMD9xcjpuLGk9dC5zeW1ib2wsYT1pIT09dm9pZCAwJiZpLG89dC5tYXNrLHM9bz09PXZvaWQgMD9udWxsOm8sYz10Lm1hc2tJZCxsPWM9PT12b2lkIDA/bnVsbDpjLHU9dC5jbGFzc2VzLGQ9dT09PXZvaWQgMD9bXTp1LGY9dC5hdHRyaWJ1dGVzLHA9Zj09PXZvaWQgMD97fTpmLG09dC5zdHlsZXMsaD1tPT09dm9pZCAwP3t9Om07aWYoZSl7dmFyIGc9ZS5wcmVmaXgsXz1lLmljb25OYW1lLHY9ZS5pY29uO3JldHVybiBkYShXKHt0eXBlOmBpY29uYH0sZSksZnVuY3Rpb24oKXtyZXR1cm4gb2EoYGJlZm9yZURPTUVsZW1lbnRDcmVhdGlvbmAse2ljb25EZWZpbml0aW9uOmUscGFyYW1zOnR9KSxoYSh7aWNvbnM6e21haW46eWEodiksbWFzazpzP3lhKHMuaWNvbik6e2ZvdW5kOiExLHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsaWNvbjp7fX19LHByZWZpeDpnLGljb25OYW1lOl8sdHJhbnNmb3JtOlcoVyh7fSxxciksciksc3ltYm9sOmEsbWFza0lkOmwsZXh0cmE6e2F0dHJpYnV0ZXM6cCxzdHlsZXM6aCxjbGFzc2VzOmR9fSl9KX19LGFvPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57aWNvbjpybyhpbyl9fSxob29rczpmdW5jdGlvbigpe3JldHVybnttdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyZWVDYWxsYmFjaz10byxlLm5vZGVDYWxsYmFjaz1ubyxlfX19LHByb3ZpZGVzOmZ1bmN0aW9uKGUpe2UuaTJzdmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlLG49dD09PXZvaWQgMD9HOnQscj1lLmNhbGxiYWNrO3JldHVybiB0byhuLHI9PT12b2lkIDA/ZnVuY3Rpb24oKXt9OnIpfSxlLmdlbmVyYXRlU3ZnUmVwbGFjZW1lbnRNdXRhdGlvbj1mdW5jdGlvbihlLHQpe3ZhciBuPXQuaWNvbk5hbWUscj10LnByZWZpeCxpPXQudHJhbnNmb3JtLGE9dC5zeW1ib2wsbz10Lm1hc2sscz10Lm1hc2tJZCxjPXQuZXh0cmE7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbCl7UHJvbWlzZS5hbGwoW1NhKG4sciksby5pY29uTmFtZT9TYShvLmljb25OYW1lLG8ucHJlZml4KTpQcm9taXNlLnJlc29sdmUoe2ZvdW5kOiExLHdpZHRoOjUxMixoZWlnaHQ6NTEyLGljb246e319KV0pLnRoZW4oZnVuY3Rpb24obyl7dmFyIGw9Q3QobywyKSx1PWxbMF0sZD1sWzFdO3QoW2UsaGEoe2ljb25zOnttYWluOnUsbWFzazpkfSxwcmVmaXg6cixpY29uTmFtZTpuLHRyYW5zZm9ybTppLHN5bWJvbDphLG1hc2tJZDpzLGV4dHJhOmMsd2F0Y2hhYmxlOiEwfSldKX0pLmNhdGNoKGwpfSl9LGUuZ2VuZXJhdGVBYnN0cmFjdEljb249ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuYXR0cmlidXRlcyxyPWUubWFpbixpPWUudHJhbnNmb3JtLGE9ZS5zdHlsZXMsbz10aShhKTtvLmxlbmd0aD4wJiYobi5zdHlsZT1vKTt2YXIgcztyZXR1cm4gbmkoaSkmJihzPXNhKGBnZW5lcmF0ZUFic3RyYWN0VHJhbnNmb3JtR3JvdXBpbmdgLHttYWluOnIsdHJhbnNmb3JtOmksY29udGFpbmVyV2lkdGg6ci53aWR0aCxpY29uV2lkdGg6ci53aWR0aH0pKSx0LnB1c2goc3x8ci5pY29uKSx7Y2hpbGRyZW46dCxhdHRyaWJ1dGVzOm59fX19LG9vPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57bGF5ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LG49dC5jbGFzc2VzLHI9bj09PXZvaWQgMD9bXTpuO3JldHVybiBkYSh7dHlwZTpgbGF5ZXJgfSxmdW5jdGlvbigpe29hKGBiZWZvcmVET01FbGVtZW50Q3JlYXRpb25gLHthc3NlbWJsZXI6ZSxwYXJhbXM6dH0pO3ZhciBuPVtdO3JldHVybiBlKGZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZnVuY3Rpb24oZSl7bj1uLmNvbmNhdChlLmFic3RyYWN0KX0pOm49bi5jb25jYXQoZS5hYnN0cmFjdCl9KSxbe3RhZzpgc3BhbmAsYXR0cmlidXRlczp7Y2xhc3M6W2Ake3EuY3NzUHJlZml4fS1sYXllcnNgXS5jb25jYXQod3QocikpLmpvaW4oYCBgKX0sY2hpbGRyZW46bn1dfSl9fX19LHNvPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57Y291bnRlcjpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sbj10LnRpdGxlLHI9bj09PXZvaWQgMD9udWxsOm4saT10LmNsYXNzZXMsYT1pPT09dm9pZCAwP1tdOmksbz10LmF0dHJpYnV0ZXMscz1vPT09dm9pZCAwP3t9Om8sYz10LnN0eWxlcyxsPWM9PT12b2lkIDA/e306YztyZXR1cm4gZGEoe3R5cGU6YGNvdW50ZXJgLGNvbnRlbnQ6ZX0sZnVuY3Rpb24oKXtyZXR1cm4gb2EoYGJlZm9yZURPTUVsZW1lbnRDcmVhdGlvbmAse2NvbnRlbnQ6ZSxwYXJhbXM6dH0pLF9hKHtjb250ZW50OmUudG9TdHJpbmcoKSx0aXRsZTpyLGV4dHJhOnthdHRyaWJ1dGVzOnMsc3R5bGVzOmwsY2xhc3NlczpbYCR7cS5jc3NQcmVmaXh9LWxheWVycy1jb3VudGVyYF0uY29uY2F0KHd0KGEpKX19KX0pfX19fSxjbz17bWl4b3V0OmZ1bmN0aW9uKCl7cmV0dXJue3RleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOnt9LG49dC50cmFuc2Zvcm0scj1uPT09dm9pZCAwP3FyOm4saT10LmNsYXNzZXMsYT1pPT09dm9pZCAwP1tdOmksbz10LmF0dHJpYnV0ZXMscz1vPT09dm9pZCAwP3t9Om8sYz10LnN0eWxlcyxsPWM9PT12b2lkIDA/e306YztyZXR1cm4gZGEoe3R5cGU6YHRleHRgLGNvbnRlbnQ6ZX0sZnVuY3Rpb24oKXtyZXR1cm4gb2EoYGJlZm9yZURPTUVsZW1lbnRDcmVhdGlvbmAse2NvbnRlbnQ6ZSxwYXJhbXM6dH0pLGdhKHtjb250ZW50OmUsdHJhbnNmb3JtOlcoVyh7fSxxciksciksZXh0cmE6e2F0dHJpYnV0ZXM6cyxzdHlsZXM6bCxjbGFzc2VzOltgJHtxLmNzc1ByZWZpeH0tbGF5ZXJzLXRleHRgXS5jb25jYXQod3QoYSkpfX0pfSl9fX0scHJvdmlkZXM6ZnVuY3Rpb24oZSl7ZS5nZW5lcmF0ZUxheWVyc1RleHQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnRyYW5zZm9ybSxyPXQuZXh0cmEsaT1udWxsLGE9bnVsbDtpZihCdCl7dmFyIG89cGFyc2VJbnQoZ2V0Q29tcHV0ZWRTdHlsZShlKS5mb250U2l6ZSwxMCkscz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2k9cy53aWR0aC9vLGE9cy5oZWlnaHQvb31yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtlLGdhKHtjb250ZW50OmUuaW5uZXJIVE1MLHdpZHRoOmksaGVpZ2h0OmEsdHJhbnNmb3JtOm4sZXh0cmE6cix3YXRjaGFibGU6ITB9KV0pfX19LGxvPVJlZ0V4cChgImAsYHVnYCksdW89WzExMDU5MjAsMTExMjMxOV0sZm89VyhXKFcoVyh7fSx7Rm9udEF3ZXNvbWU6e25vcm1hbDpgZmFzYCw0MDA6YGZhc2B9fSksVW4pLHVyKSxYbikscG89T2JqZWN0LmtleXMoZm8pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlW3QudG9Mb3dlckNhc2UoKV09Zm9bdF0sZX0se30pLG1vPU9iamVjdC5rZXlzKHBvKS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj1wb1t0XTtyZXR1cm4gZVt0XT1uWzkwMF18fHd0KE9iamVjdC5lbnRyaWVzKG4pKVswXVsxXSxlfSx7fSk7ZnVuY3Rpb24gaG8oZSl7cmV0dXJuIGJpKHd0KGUucmVwbGFjZShsbyxgYCkpWzBdfHxgYCl9ZnVuY3Rpb24gZ28oZSl7dmFyIHQ9ZS5nZXRQcm9wZXJ0eVZhbHVlKGBmb250LWZlYXR1cmUtc2V0dGluZ3NgKS5pbmNsdWRlcyhgc3MwMWApLG49ZS5nZXRQcm9wZXJ0eVZhbHVlKGBjb250ZW50YCkucmVwbGFjZShsbyxgYCkscj1uLmNvZGVQb2ludEF0KDApLGk9cj49dW9bMF0mJnI8PXVvWzFdLGE9bi5sZW5ndGg9PT0yJiZuWzBdPT09blsxXTtyZXR1cm4gaXx8YXx8dH1mdW5jdGlvbiBfbyhlLHQpe3ZhciBuPWUucmVwbGFjZSgvXlsnIl18WyciXSQvZyxgYCkudG9Mb3dlckNhc2UoKSxyPXBhcnNlSW50KHQpLGk9aXNOYU4ocik/YG5vcm1hbGA6cjtyZXR1cm4ocG9bbl18fHt9KVtpXXx8bW9bbl19ZnVuY3Rpb24gdm8oZSx0KXt2YXIgbj1gJHtfcn0ke3QucmVwbGFjZShgOmAsYC1gKX1gO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLGkpe2lmKGUuZ2V0QXR0cmlidXRlKG4pIT09bnVsbClyZXR1cm4gcigpO3ZhciBhPVpyKGUuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoZ3IpPT09dH0pWzBdLG89SXQuZ2V0Q29tcHV0ZWRTdHlsZShlLHQpLHM9by5nZXRQcm9wZXJ0eVZhbHVlKGBmb250LWZhbWlseWApLGM9cy5tYXRjaChGciksbD1vLmdldFByb3BlcnR5VmFsdWUoYGZvbnQtd2VpZ2h0YCksdT1vLmdldFByb3BlcnR5VmFsdWUoYGNvbnRlbnRgKTtpZihhJiYhYylyZXR1cm4gZS5yZW1vdmVDaGlsZChhKSxyKCk7aWYoYyYmdSE9PWBub25lYCYmdSE9PWBgKXt2YXIgZD1vLmdldFByb3BlcnR5VmFsdWUoYGNvbnRlbnRgKSxmPV9vKHMsbCkscD1obyhkKSxtPWNbMF0uc3RhcnRzV2l0aChgRm9udEF3ZXNvbWVgKSxoPWdvKG8pLGc9SWkoZixwKSxfPWc7aWYobSl7dmFyIHY9QmkocCk7di5pY29uTmFtZSYmdi5wcmVmaXgmJihnPXYuaWNvbk5hbWUsZj12LnByZWZpeCl9aWYoZyYmIWgmJighYXx8YS5nZXRBdHRyaWJ1dGUodnIpIT09Znx8YS5nZXRBdHRyaWJ1dGUoeXIpIT09Xykpe2Uuc2V0QXR0cmlidXRlKG4sXyksYSYmZS5yZW1vdmVDaGlsZChhKTt2YXIgeT1YYSgpLGI9eS5leHRyYTtiLmF0dHJpYnV0ZXNbZ3JdPXQsU2EoZyxmKS50aGVuKGZ1bmN0aW9uKGkpe3ZhciBhPWhhKFcoVyh7fSx5KSx7fSx7aWNvbnM6e21haW46aSxtYXNrOkhpKCl9LHByZWZpeDpmLGljb25OYW1lOl8sZXh0cmE6Yix3YXRjaGFibGU6ITB9KSksbz1HLmNyZWF0ZUVsZW1lbnROUyhgaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdgLGBzdmdgKTt0PT09YDo6YmVmb3JlYD9lLmluc2VydEJlZm9yZShvLGUuZmlyc3RDaGlsZCk6ZS5hcHBlbmRDaGlsZChvKSxvLm91dGVySFRNTD1hLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZ2koZSl9KS5qb2luKGAKYCksZS5yZW1vdmVBdHRyaWJ1dGUobikscigpfSkuY2F0Y2goaSl9ZWxzZSByKCl9ZWxzZSByKCl9KX1mdW5jdGlvbiB5byhlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW3ZvKGUsYDo6YmVmb3JlYCksdm8oZSxgOjphZnRlcmApXSl9ZnVuY3Rpb24gYm8oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSE9PWRvY3VtZW50LmhlYWQmJiF+U3IuaW5kZXhPZihlLnRhZ05hbWUudG9VcHBlckNhc2UoKSkmJiFlLmdldEF0dHJpYnV0ZShncikmJighZS5wYXJlbnROb2RlfHxlLnBhcmVudE5vZGUudGFnTmFtZSE9PWBzdmdgKX12YXIgeG89ZnVuY3Rpb24oZSl7cmV0dXJuISFlJiZDci5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlLmluY2x1ZGVzKHQpfSl9LFNvPWZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybltdO3ZhciB0PW5ldyBTZXQsbj1lLnNwbGl0KC8sKD8hW14oKV0qXCkpLykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pO249bi5mbGF0TWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmluY2x1ZGVzKGAoYCk/ZTplLnNwbGl0KGAsYCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pfSk7dmFyIHI9X3QobiksaTt0cnl7Zm9yKHIucygpOyEoaT1yLm4oKSkuZG9uZTspe3ZhciBhPWkudmFsdWU7aWYoeG8oYSkpe3ZhciBvPUNyLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLnJlcGxhY2UodCxgYCl9LGEpO28hPT1gYCYmbyE9PWAqYCYmdC5hZGQobyl9fX1jYXRjaChlKXtyLmUoZSl9ZmluYWxseXtyLmYoKX1yZXR1cm4gdH07ZnVuY3Rpb24gQ28oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDAmJmFyZ3VtZW50c1sxXTtpZih6dCl7dmFyIG47aWYodCluPWU7ZWxzZSBpZihxLnNlYXJjaFBzZXVkb0VsZW1lbnRzRnVsbFNjYW4pbj1lLnF1ZXJ5U2VsZWN0b3JBbGwoYCpgKTtlbHNle3ZhciByPW5ldyBTZXQsaT1fdChkb2N1bWVudC5zdHlsZVNoZWV0cyksYTt0cnl7Zm9yKGkucygpOyEoYT1pLm4oKSkuZG9uZTspe3ZhciBvPWEudmFsdWU7dHJ5e3ZhciBzPV90KG8uY3NzUnVsZXMpLGM7dHJ5e2ZvcihzLnMoKTshKGM9cy5uKCkpLmRvbmU7KXt2YXIgbD1jLnZhbHVlLHU9X3QoU28obC5zZWxlY3RvclRleHQpKSxkO3RyeXtmb3IodS5zKCk7IShkPXUubigpKS5kb25lOyl7dmFyIGY9ZC52YWx1ZTtyLmFkZChmKX19Y2F0Y2goZSl7dS5lKGUpfWZpbmFsbHl7dS5mKCl9fX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX19Y2F0Y2goZSl7cS5zZWFyY2hQc2V1ZG9FbGVtZW50c1dhcm5pbmdzJiZjb25zb2xlLndhcm4oYEZvbnQgQXdlc29tZTogY2Fubm90IHBhcnNlIHN0eWxlc2hlZXQ6ICR7by5ocmVmfSAoJHtlLm1lc3NhZ2V9KQpJZiBpdCBkZWNsYXJlcyBhbnkgRm9udCBBd2Vzb21lIENTUyBwc2V1ZG8tZWxlbWVudHMsIHRoZXkgd2lsbCBub3QgYmUgcmVuZGVyZWQgYXMgU1ZHIGljb25zLiBBZGQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgdG8gdGhlIDxsaW5rPiwgZW5hYmxlIHNlYXJjaFBzZXVkb0VsZW1lbnRzRnVsbFNjYW4gZm9yIHNsb3dlciBidXQgbW9yZSB0aG9yb3VnaCBET00gcGFyc2luZywgb3Igc3VwcHJlc3MgdGhpcyB3YXJuaW5nIGJ5IHNldHRpbmcgc2VhcmNoUHNldWRvRWxlbWVudHNXYXJuaW5ncyB0byBmYWxzZS5gKX19fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfWlmKCFyLnNpemUpcmV0dXJuO3ZhciBwPUFycmF5LmZyb20ocikuam9pbihgLCBgKTt0cnl7bj1lLnF1ZXJ5U2VsZWN0b3JBbGwocCl9Y2F0Y2h7fX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgcj1acihuKS5maWx0ZXIoYm8pLm1hcCh5byksaT1PYS5iZWdpbihgc2VhcmNoUHNldWRvRWxlbWVudHNgKTtIYSgpLFByb21pc2UuYWxsKHIpLnRoZW4oZnVuY3Rpb24oKXtpKCksVWEoKSxlKCl9KS5jYXRjaChmdW5jdGlvbigpe2koKSxVYSgpLHQoKX0pfSl9fXZhciB3bz17aG9va3M6ZnVuY3Rpb24oKXtyZXR1cm57bXV0YXRpb25PYnNlcnZlckNhbGxiYWNrczpmdW5jdGlvbihlKXtyZXR1cm4gZS5wc2V1ZG9FbGVtZW50c0NhbGxiYWNrPUNvLGV9fX0scHJvdmlkZXM6ZnVuY3Rpb24oZSl7ZS5wc2V1ZG9FbGVtZW50czJzdmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlLG49dD09PXZvaWQgMD9HOnQ7cS5zZWFyY2hQc2V1ZG9FbGVtZW50cyYmQ28obil9fX0sVG89ITEsRW89e21peG91dDpmdW5jdGlvbigpe3JldHVybntkb206e3Vud2F0Y2g6ZnVuY3Rpb24oKXtIYSgpLFRvPSEwfX19fSxob29rczpmdW5jdGlvbigpe3JldHVybntib290c3RyYXA6ZnVuY3Rpb24oKXtHYShhYShgbXV0YXRpb25PYnNlcnZlckNhbGxiYWNrc2Ase30pKX0sbm9BdXRvOmZ1bmN0aW9uKCl7S2EoKX0sd2F0Y2g6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vYnNlcnZlTXV0YXRpb25zUm9vdDtUbz9VYSgpOkdhKGFhKGBtdXRhdGlvbk9ic2VydmVyQ2FsbGJhY2tzYCx7b2JzZXJ2ZU11dGF0aW9uc1Jvb3Q6dH0pKX19fX0sRG89ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKS5zcGxpdChgIGApLnJlZHVjZShmdW5jdGlvbihlLHQpe3ZhciBuPXQudG9Mb3dlckNhc2UoKS5zcGxpdChgLWApLHI9blswXSxpPW4uc2xpY2UoMSkuam9pbihgLWApO2lmKHImJmk9PT1gaGApcmV0dXJuIGUuZmxpcFg9ITAsZTtpZihyJiZpPT09YHZgKXJldHVybiBlLmZsaXBZPSEwLGU7aWYoaT1wYXJzZUZsb2F0KGkpLGlzTmFOKGkpKXJldHVybiBlO3N3aXRjaChyKXtjYXNlYGdyb3dgOmUuc2l6ZSs9aTticmVhaztjYXNlYHNocmlua2A6ZS5zaXplLT1pO2JyZWFrO2Nhc2VgbGVmdGA6ZS54LT1pO2JyZWFrO2Nhc2VgcmlnaHRgOmUueCs9aTticmVhaztjYXNlYHVwYDplLnktPWk7YnJlYWs7Y2FzZWBkb3duYDplLnkrPWk7YnJlYWs7Y2FzZWByb3RhdGVgOmUucm90YXRlKz1pfXJldHVybiBlfSx7c2l6ZToxNix4OjAseTowLGZsaXBYOiExLGZsaXBZOiExLHJvdGF0ZTowfSl9LE9vPXttaXhvdXQ6ZnVuY3Rpb24oKXtyZXR1cm57cGFyc2U6e3RyYW5zZm9ybTpmdW5jdGlvbihlKXtyZXR1cm4gRG8oZSl9fX19LGhvb2tzOmZ1bmN0aW9uKCl7cmV0dXJue3BhcnNlTm9kZUF0dHJpYnV0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShgZGF0YS1mYS10cmFuc2Zvcm1gKTtyZXR1cm4gbiYmKGUudHJhbnNmb3JtPURvKG4pKSxlfX19LHByb3ZpZGVzOmZ1bmN0aW9uKGUpe2UuZ2VuZXJhdGVBYnN0cmFjdFRyYW5zZm9ybUdyb3VwaW5nPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWFpbixuPWUudHJhbnNmb3JtLHI9ZS5jb250YWluZXJXaWR0aCxpPWUuaWNvbldpZHRoLGE9e291dGVyOnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke3IvMn0gMjU2KWB9LGlubmVyOnt0cmFuc2Zvcm06YCR7YHRyYW5zbGF0ZSgke24ueCozMn0sICR7bi55KjMyfSkgYH0gJHtgc2NhbGUoJHtuLnNpemUvMTYqKG4uZmxpcFg/LTE6MSl9LCAke24uc2l6ZS8xNioobi5mbGlwWT8tMToxKX0pIGB9ICR7YHJvdGF0ZSgke24ucm90YXRlfSAwIDApYH1gfSxwYXRoOnt0cmFuc2Zvcm06YHRyYW5zbGF0ZSgke2kvMiotMX0gLTI1NilgfX07cmV0dXJue3RhZzpgZ2AsYXR0cmlidXRlczpXKHt9LGEub3V0ZXIpLGNoaWxkcmVuOlt7dGFnOmBnYCxhdHRyaWJ1dGVzOlcoe30sYS5pbm5lciksY2hpbGRyZW46W3t0YWc6dC5pY29uLnRhZyxjaGlsZHJlbjp0Lmljb24uY2hpbGRyZW4sYXR0cmlidXRlczpXKFcoe30sdC5pY29uLmF0dHJpYnV0ZXMpLGEucGF0aCl9XX1dfX19fSxrbz17eDowLHk6MCx3aWR0aDpgMTAwJWAsaGVpZ2h0OmAxMDAlYH07ZnVuY3Rpb24gQW8oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZhcmd1bWVudHNbMV0hPT12b2lkIDA/YXJndW1lbnRzWzFdOiEwO3JldHVybiBlLmF0dHJpYnV0ZXMmJihlLmF0dHJpYnV0ZXMuZmlsbHx8dCkmJihlLmF0dHJpYnV0ZXMuZmlsbD1gYmxhY2tgKSxlfWZ1bmN0aW9uIGpvKGUpe3JldHVybiBlLnRhZz09PWBnYD9lLmNoaWxkcmVuOltlXX1pYShbbGksYW8sb28sc28sY28sd28sRW8sT28se2hvb2tzOmZ1bmN0aW9uKCl7cmV0dXJue3BhcnNlTm9kZUF0dHJpYnV0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShgZGF0YS1mYS1tYXNrYCkscj1uP0ppKG4uc3BsaXQoYCBgKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpfSkpOkhpKCk7cmV0dXJuIHIucHJlZml4fHw9VmkoKSxlLm1hc2s9cixlLm1hc2tJZD10LmdldEF0dHJpYnV0ZShgZGF0YS1mYS1tYXNrLWlkYCksZX19fSxwcm92aWRlczpmdW5jdGlvbihlKXtlLmdlbmVyYXRlQWJzdHJhY3RNYXNrPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmF0dHJpYnV0ZXMscj1lLm1haW4saT1lLm1hc2ssYT1lLm1hc2tJZCxvPWUudHJhbnNmb3JtLHM9ci53aWR0aCxjPXIuaWNvbixsPWkud2lkdGgsdT1pLmljb24sZD1yaSh7dHJhbnNmb3JtOm8sY29udGFpbmVyV2lkdGg6bCxpY29uV2lkdGg6c30pLGY9e3RhZzpgcmVjdGAsYXR0cmlidXRlczpXKFcoe30sa28pLHt9LHtmaWxsOmB3aGl0ZWB9KX0scD1jLmNoaWxkcmVuP3tjaGlsZHJlbjpjLmNoaWxkcmVuLm1hcChBbyl9Ont9LG09e3RhZzpgZ2AsYXR0cmlidXRlczpXKHt9LGQuaW5uZXIpLGNoaWxkcmVuOltBbyhXKHt0YWc6Yy50YWcsYXR0cmlidXRlczpXKFcoe30sYy5hdHRyaWJ1dGVzKSxkLnBhdGgpfSxwKSldfSxoPXt0YWc6YGdgLGF0dHJpYnV0ZXM6Vyh7fSxkLm91dGVyKSxjaGlsZHJlbjpbbV19LGc9YG1hc2stJHthfHxYcigpfWAsXz1gY2xpcC0ke2F8fFhyKCl9YCx2PXt0YWc6YG1hc2tgLGF0dHJpYnV0ZXM6VyhXKHt9LGtvKSx7fSx7aWQ6ZyxtYXNrVW5pdHM6YHVzZXJTcGFjZU9uVXNlYCxtYXNrQ29udGVudFVuaXRzOmB1c2VyU3BhY2VPblVzZWB9KSxjaGlsZHJlbjpbZixoXX0seT17dGFnOmBkZWZzYCxjaGlsZHJlbjpbe3RhZzpgY2xpcFBhdGhgLGF0dHJpYnV0ZXM6e2lkOl99LGNoaWxkcmVuOmpvKHUpfSx2XX07cmV0dXJuIHQucHVzaCh5LHt0YWc6YHJlY3RgLGF0dHJpYnV0ZXM6Vyh7ZmlsbDpgY3VycmVudENvbG9yYCwiY2xpcC1wYXRoIjpgdXJsKCMke199KWAsbWFzazpgdXJsKCMke2d9KWB9LGtvKX0pLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6bn19fX0se3Byb3ZpZGVzOmZ1bmN0aW9uKGUpe3ZhciB0PSExO0l0Lm1hdGNoTWVkaWEmJih0PUl0Lm1hdGNoTWVkaWEoYChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpYCkubWF0Y2hlcyksZS5taXNzaW5nSWNvbkFic3RyYWN0PWZ1bmN0aW9uKCl7dmFyIGU9W10sbj17ZmlsbDpgY3VycmVudENvbG9yYH0scj17YXR0cmlidXRlVHlwZTpgWE1MYCxyZXBlYXRDb3VudDpgaW5kZWZpbml0ZWAsZHVyOmAyc2B9O2UucHVzaCh7dGFnOmBwYXRoYCxhdHRyaWJ1dGVzOlcoVyh7fSxuKSx7fSx7ZDpgTTE1Ni41LDQ0Ny43bC0xMi42LDI5LjVjLTE4LjctOS41LTM1LjktMjEuMi01MS41LTM0LjlsMjIuNy0yMi43QzEyNy42LDQzMC41LDE0MS41LDQ0MCwxNTYuNSw0NDcuN3ogTTQwLjYsMjcySDguNSBjMS40LDIxLjIsNS40LDQxLjcsMTEuNyw2MS4xTDUwLDMyMS4yQzQ1LjEsMzA1LjUsNDEuOCwyODksNDAuNiwyNzJ6IE00MC42LDI0MGMxLjQtMTguOCw1LjItMzcsMTEuMS01NC4xbC0yOS41LTEyLjYgQzE0LjcsMTk0LjMsMTAsMjE2LjcsOC41LDI0MEg0MC42eiBNNjQuMywxNTYuNWM3LjgtMTQuOSwxNy4yLTI4LjgsMjguMS00MS41TDY5LjcsOTIuM2MtMTMuNywxNS42LTI1LjUsMzIuOC0zNC45LDUxLjUgTDY0LjMsMTU2LjV6IE0zOTcsNDE5LjZjLTEzLjksMTItMjkuNCwyMi4zLTQ2LjEsMzAuNGwxMS45LDI5LjhjMjAuNy05LjksMzkuOC0yMi42LDU2LjktMzcuNkwzOTcsNDE5LjZ6IE0xMTUsOTIuNCBjMTMuOS0xMiwyOS40LTIyLjMsNDYuMS0zMC40bC0xMS45LTI5LjhjLTIwLjcsOS45LTM5LjgsMjIuNi01Ni44LDM3LjZMMTE1LDkyLjR6IE00NDcuNywzNTUuNWMtNy44LDE0LjktMTcuMiwyOC44LTI4LjEsNDEuNSBsMjIuNywyMi43YzEzLjctMTUuNiwyNS41LTMyLjksMzQuOS01MS41TDQ0Ny43LDM1NS41eiBNNDcxLjQsMjcyYy0xLjQsMTguOC01LjIsMzctMTEuMSw1NC4xbDI5LjUsMTIuNiBjNy41LTIxLjEsMTIuMi00My41LDEzLjYtNjYuOEg0NzEuNHogTTMyMS4yLDQ2MmMtMTUuNyw1LTMyLjIsOC4yLTQ5LjIsOS40djMyLjFjMjEuMi0xLjQsNDEuNy01LjQsNjEuMS0xMS43TDMyMS4yLDQ2MnogTTI0MCw0NzEuNGMtMTguOC0xLjQtMzctNS4yLTU0LjEtMTEuMWwtMTIuNiwyOS41YzIxLjEsNy41LDQzLjUsMTIuMiw2Ni44LDEzLjZWNDcxLjR6IE00NjIsMTkwLjhjNSwxNS43LDguMiwzMi4yLDkuNCw0OS4yaDMyLjEgYy0xLjQtMjEuMi01LjQtNDEuNy0xMS43LTYxLjFMNDYyLDE5MC44eiBNOTIuNCwzOTdjLTEyLTEzLjktMjIuMy0yOS40LTMwLjQtNDYuMWwtMjkuOCwxMS45YzkuOSwyMC43LDIyLjYsMzkuOCwzNy42LDU2LjkgTDkyLjQsMzk3eiBNMjcyLDQwLjZjMTguOCwxLjQsMzYuOSw1LjIsNTQuMSwxMS4xbDEyLjYtMjkuNUMzMTcuNywxNC43LDI5NS4zLDEwLDI3Miw4LjVWNDAuNnogTTE5MC44LDUwIGMxNS43LTUsMzIuMi04LjIsNDkuMi05LjRWOC41Yy0yMS4yLDEuNC00MS43LDUuNC02MS4xLDExLjdMMTkwLjgsNTB6IE00NDIuMyw5Mi4zTDQxOS42LDExNWMxMiwxMy45LDIyLjMsMjkuNCwzMC41LDQ2LjEgbDI5LjgtMTEuOUM0NzAsMTI4LjUsNDU3LjMsMTA5LjQsNDQyLjMsOTIuM3ogTTM5Nyw5Mi40bDIyLjctMjIuN2MtMTUuNi0xMy43LTMyLjgtMjUuNS01MS41LTM0LjlsLTEyLjYsMjkuNSBDMzcwLjQsNzIuMSwzODQuNCw4MS41LDM5Nyw5Mi40emB9KX0pO3ZhciBpPVcoVyh7fSxyKSx7fSx7YXR0cmlidXRlTmFtZTpgb3BhY2l0eWB9KSxhPXt0YWc6YGNpcmNsZWAsYXR0cmlidXRlczpXKFcoe30sbikse30se2N4OmAyNTZgLGN5OmAzNjRgLHI6YDI4YH0pLGNoaWxkcmVuOltdfTtyZXR1cm4gdHx8YS5jaGlsZHJlbi5wdXNoKHt0YWc6YGFuaW1hdGVgLGF0dHJpYnV0ZXM6VyhXKHt9LHIpLHt9LHthdHRyaWJ1dGVOYW1lOmByYCx2YWx1ZXM6YDI4OzE0OzI4OzI4OzE0OzI4O2B9KX0se3RhZzpgYW5pbWF0ZWAsYXR0cmlidXRlczpXKFcoe30saSkse30se3ZhbHVlczpgMTswOzE7MTswOzE7YH0pfSksZS5wdXNoKGEpLGUucHVzaCh7dGFnOmBwYXRoYCxhdHRyaWJ1dGVzOlcoVyh7fSxuKSx7fSx7b3BhY2l0eTpgMWAsZDpgTTI2My43LDMxMmgtMTZjLTYuNiwwLTEyLTUuNC0xMi0xMmMwLTcxLDc3LjQtNjMuOSw3Ny40LTEwNy44YzAtMjAtMTcuOC00MC4yLTU3LjQtNDAuMmMtMjkuMSwwLTQ0LjMsOS42LTU5LjIsMjguNyBjLTMuOSw1LTExLjEsNi0xNi4yLDIuNGwtMTMuMS05LjJjLTUuNi0zLjktNi45LTExLjgtMi42LTE3LjJjMjEuMi0yNy4yLDQ2LjQtNDQuNyw5MS4yLTQ0LjdjNTIuMywwLDk3LjQsMjkuOCw5Ny40LDgwLjIgYzAsNjcuNi03Ny40LDYzLjUtNzcuNCwxMDcuOEMyNzUuNywzMDYuNiwyNzAuMywzMTIsMjYzLjcsMzEyemB9KSxjaGlsZHJlbjp0P1tdOlt7dGFnOmBhbmltYXRlYCxhdHRyaWJ1dGVzOlcoVyh7fSxpKSx7fSx7dmFsdWVzOmAxOzA7MDswOzA7MTtgfSl9XX0pLHR8fGUucHVzaCh7dGFnOmBwYXRoYCxhdHRyaWJ1dGVzOlcoVyh7fSxuKSx7fSx7b3BhY2l0eTpgMGAsZDpgTTIzMi41LDEzNC41bDcsMTY4YzAuMyw2LjQsNS42LDExLjUsMTIsMTEuNWg5YzYuNCwwLDExLjctNS4xLDEyLTExLjVsNy0xNjhjMC4zLTYuOC01LjItMTIuNS0xMi0xMi41aC0yMyBDMjM3LjcsMTIyLDIzMi4yLDEyNy43LDIzMi41LDEzNC41emB9KSxjaGlsZHJlbjpbe3RhZzpgYW5pbWF0ZWAsYXR0cmlidXRlczpXKFcoe30saSkse30se3ZhbHVlczpgMDswOzE7MTswOzA7YH0pfV19KSx7dGFnOmBnYCxhdHRyaWJ1dGVzOntjbGFzczpgbWlzc2luZ2B9LGNoaWxkcmVuOmV9fX19LHtob29rczpmdW5jdGlvbigpe3JldHVybntwYXJzZU5vZGVBdHRyaWJ1dGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoYGRhdGEtZmEtc3ltYm9sYCk7cmV0dXJuIGUuc3ltYm9sPW49PT1udWxsPyExOm49PT1gYHx8bixlfX19fV0se21peG91dHNUbzpKfSksSi5ub0F1dG87dmFyIE1vPUouY29uZmlnO0oubGlicmFyeSxKLmRvbTt2YXIgTm89Si5wYXJzZTtKLmZpbmRJY29uRGVmaW5pdGlvbixKLnRvSHRtbDt2YXIgUG89Si5pY29uO0oubGF5ZXI7dmFyIEZvPUoudGV4dDtKLmNvdW50ZXI7ZnVuY3Rpb24gSW8oZSx0KXsodD09bnVsbHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIExvKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIElvKGUpfWZ1bmN0aW9uIFkoZSx0LG4pe3JldHVybih0PUdvKHQpKWluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFJvKGUpe2lmKHR5cGVvZiBTeW1ib2w8YHVgJiZlW1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fGVbYEBAaXRlcmF0b3JgXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiB6bygpe3Rocm93IFR5cGVFcnJvcihgSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuCkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5gKX1mdW5jdGlvbiBCbyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFgoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdPT1udWxsP3t9OmFyZ3VtZW50c1t0XTt0JTI/Qm8oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1koZSx0LG5bdF0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6Qm8oT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pfXJldHVybiBlfWZ1bmN0aW9uIFZvKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbixyLGk9SG8oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT09PS0xJiZ7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihpW25dPWVbbl0pfXJldHVybiBpfWZ1bmN0aW9uIEhvKGUsdCl7aWYoZT09bnVsbClyZXR1cm57fTt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSlpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikpe2lmKHQuaW5kZXhPZihyKSE9PS0xKWNvbnRpbnVlO25bcl09ZVtyXX1yZXR1cm4gbn1mdW5jdGlvbiBVbyhlKXtyZXR1cm4gTG8oZSl8fFJvKGUpfHxxbyhlKXx8em8oKX1mdW5jdGlvbiBXbyhlLHQpe2lmKHR5cGVvZiBlIT1gb2JqZWN0YHx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHR8fGBkZWZhdWx0YCk7aWYodHlwZW9mIHIhPWBvYmplY3RgKXJldHVybiByO3Rocm93IFR5cGVFcnJvcihgQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5gKX1yZXR1cm4odD09PWBzdHJpbmdgP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIEdvKGUpe3ZhciB0PVdvKGUsYHN0cmluZ2ApO3JldHVybiB0eXBlb2YgdD09YHN5bWJvbGA/dDp0K2BgfWZ1bmN0aW9uIEtvKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIEtvPXR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PWBzeW1ib2xgP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP2BzeW1ib2xgOnR5cGVvZiBlfSxLbyhlKX1mdW5jdGlvbiBxbyhlLHQpe2lmKGUpe2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm4gSW8oZSx0KTt2YXIgbj17fS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVybiBuPT09YE9iamVjdGAmJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksbj09PWBNYXBgfHxuPT09YFNldGA/QXJyYXkuZnJvbShlKTpuPT09YEFyZ3VtZW50c2B8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP0lvKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBKbyhlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD4wfHwhQXJyYXkuaXNBcnJheSh0KSYmdD9ZKHt9LGUsdCk6e319ZnVuY3Rpb24gWW8oZSl7dmFyIHQsbj0odD17ImZhLXNwaW4iOmUuc3BpbiwiZmEtcHVsc2UiOmUucHVsc2UsImZhLWZ3IjplLmZpeGVkV2lkdGgsImZhLWJvcmRlciI6ZS5ib3JkZXIsImZhLWxpIjplLmxpc3RJdGVtLCJmYS1pbnZlcnNlIjplLmludmVyc2UsImZhLWZsaXAiOmUuZmxpcD09PSEwLCJmYS1mbGlwLWhvcml6b250YWwiOmUuZmxpcD09PWBob3Jpem9udGFsYHx8ZS5mbGlwPT09YGJvdGhgLCJmYS1mbGlwLXZlcnRpY2FsIjplLmZsaXA9PT1gdmVydGljYWxgfHxlLmZsaXA9PT1gYm90aGB9LFkoWShZKFkoWShZKFkoWShZKFkodCxgZmEtJHtlLnNpemV9YCxlLnNpemUhPT1udWxsKSxgZmEtcm90YXRlLSR7ZS5yb3RhdGlvbn1gLGUucm90YXRpb24hPT1udWxsKSxgZmEtcm90YXRlLWJ5YCxlLnJvdGF0ZUJ5KSxgZmEtcHVsbC0ke2UucHVsbH1gLGUucHVsbCE9PW51bGwpLGBmYS1zd2FwLW9wYWNpdHlgLGUuc3dhcE9wYWNpdHkpLGBmYS1ib3VuY2VgLGUuYm91bmNlKSxgZmEtc2hha2VgLGUuc2hha2UpLGBmYS1iZWF0YCxlLmJlYXQpLGBmYS1mYWRlYCxlLmZhZGUpLGBmYS1iZWF0LWZhZGVgLGUuYmVhdEZhZGUpLFkoWShZKFkoWShZKFkoWShZKFkodCxgZmEtZmxhc2hgLGUuZmxhc2gpLGBmYS1zcGluLXB1bHNlYCxlLnNwaW5QdWxzZSksYGZhLXNwaW4tcmV2ZXJzZWAsZS5zcGluUmV2ZXJzZSksYGZhLXdpZHRoLWF1dG9gLGUud2lkdGhBdXRvKSxgZmEtY2FudmFzLXNxdWFyZWAsZS5jYW52YXNTcXVhcmUpLGBmYS1jYW52YXMtcm9vbXlgLGUuY2FudmFzUm9vbXkpLGBmYS1mbGlwLTM2MGAsZS5mbGlwMzYwKSxgZmEtYnV6emAsZS5idXp6KSxgZmEtZmxvYXRgLGUuZmxvYXQpLGBmYS1qZWxsb2AsZS5qZWxsbyksWShZKFkoWShZKHQsYGZhLXNwaW4tc25hcGAsZS5zcGluU25hcCksYGZhLXNwaW4tc25hcC00YCxlLnNwaW5TbmFwNCksYGZhLXNwaW4tc25hcC04YCxlLnNwaW5TbmFwOCksYGZhLXN3aW5nYCxlLnN3aW5nKSxgZmEtd2FnYCxlLndhZykpO3JldHVybiBPYmplY3Qua2V5cyhuKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV0/ZTpudWxsfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlfSl9dmFyIFhvPXR5cGVvZiBnbG9iYWxUaGlzPGB1YD9nbG9iYWxUaGlzOnR5cGVvZiB3aW5kb3c8YHVgP3dpbmRvdzp0eXBlb2YgZ2xvYmFsPGB1YD9nbG9iYWw6dHlwZW9mIHNlbGY8YHVgP3NlbGY6e30sWm89e2V4cG9ydHM6e319OyhmdW5jdGlvbihlKXsoZnVuY3Rpb24odCl7dmFyIG49ZnVuY3Rpb24oZSx0LHIpe2lmKCFsKHQpfHxkKHQpfHxmKHQpfHxwKHQpfHxjKHQpKXJldHVybiB0O3ZhciBpLGE9MCxvPTA7aWYodSh0KSlmb3IoaT1bXSxvPXQubGVuZ3RoO2E8bzthKyspaS5wdXNoKG4oZSx0W2FdLHIpKTtlbHNlIGZvcih2YXIgcyBpbiBpPXt9LHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscykmJihpW2UocyxyKV09bihlLHRbc10scikpO3JldHVybiBpfSxyPWZ1bmN0aW9uKGUsdCl7dHx8PXt9O3ZhciBuPXQuc2VwYXJhdG9yfHxgX2Ascj10LnNwbGl0fHwvKD89W0EtWl0pLztyZXR1cm4gZS5zcGxpdChyKS5qb2luKG4pfSxpPWZ1bmN0aW9uKGUpe3JldHVybiBtKGUpP2U6KGU9ZS5yZXBsYWNlKC9bXC1fXHNdKyguKT8vZyxmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKTpgYH0pLGUuc3Vic3RyKDAsMSkudG9Mb3dlckNhc2UoKStlLnN1YnN0cigxKSl9LGE9ZnVuY3Rpb24oZSl7dmFyIHQ9aShlKTtyZXR1cm4gdC5zdWJzdHIoMCwxKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyKDEpfSxvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSx0KS50b0xvd2VyQ2FzZSgpfSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsYz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBmdW5jdGlvbmB9LGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1PYmplY3QoZSl9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuY2FsbChlKT09YFtvYmplY3QgQXJyYXldYH0sZD1mdW5jdGlvbihlKXtyZXR1cm4gcy5jYWxsKGUpPT1gW29iamVjdCBEYXRlXWB9LGY9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuY2FsbChlKT09YFtvYmplY3QgUmVnRXhwXWB9LHA9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuY2FsbChlKT09YFtvYmplY3QgQm9vbGVhbl1gfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBlLT0wLGU9PT1lfSxoPWZ1bmN0aW9uKGUsdCl7dmFyIG49dCYmYHByb2Nlc3NgaW4gdD90LnByb2Nlc3M6dDtyZXR1cm4gdHlwZW9mIG49PWBmdW5jdGlvbmA/ZnVuY3Rpb24odCxyKXtyZXR1cm4gbih0LGUscil9OmV9LGc9e2NhbWVsaXplOmksZGVjYW1lbGl6ZTpvLHBhc2NhbGl6ZTphLGRlcGFzY2FsaXplOm8sY2FtZWxpemVLZXlzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4oaChpLHQpLGUpfSxkZWNhbWVsaXplS2V5czpmdW5jdGlvbihlLHQpe3JldHVybiBuKGgobyx0KSxlLHQpfSxwYXNjYWxpemVLZXlzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4oaChhLHQpLGUpfSxkZXBhc2NhbGl6ZUtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZWNhbWVsaXplS2V5cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTtlLmV4cG9ydHM/ZS5leHBvcnRzPWc6dC5odW1wcz1nfSkoWG8pfSkoWm8pO3ZhciBRbz1aby5leHBvcnRzLCRvPVtgZ3JhZGllbnRGaWxsYF0sZXM9W2BjbGFzc2AsYHN0eWxlYF0sdHM9W2B0eXBlYCxgc3RvcHNgLGBpZGBdO2Z1bmN0aW9uIG5zKGUpe3JldHVybiBlLnNwbGl0KGA7YCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLnJlZHVjZShmdW5jdGlvbihlLHQpe3ZhciBuPXQuaW5kZXhPZihgOmApLHI9UW8uY2FtZWxpemUodC5zbGljZSgwLG4pKTtyZXR1cm4gZVtyXT10LnNsaWNlKG4rMSkudHJpbSgpLGV9LHt9KX1mdW5jdGlvbiBycyhlKXtyZXR1cm4gZS5zcGxpdCgvXHMrLykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF09ITAsZX0se30pfWZ1bmN0aW9uIGlzKGUsdCl7cmV0dXJuIHVlKGBzdG9wYCxYKHtrZXk6YCR7dH0tJHtlLm9mZnNldH1gLG9mZnNldDplLm9mZnNldCwic3RvcC1jb2xvciI6ZS5jb2xvcn0sZS5vcGFjaXR5IT09dm9pZCAwJiZ7InN0b3Atb3BhY2l0eSI6ZS5vcGFjaXR5fSkpfWZ1bmN0aW9uIGFzKGUpe2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm4gZTt2YXIgdD0oZS5jaGlsZHJlbnx8W10pLm1hcChhcyk7cmV0dXJuIGUudGFnPT09YHBhdGhgJiZlLmF0dHJpYnV0ZXMmJmBmaWxsYGluIGUuYXR0cmlidXRlcz9YKFgoe30sZSkse30se2F0dHJpYnV0ZXM6WChYKHt9LGUuYXR0cmlidXRlcykse30se2ZpbGw6dm9pZCAwfSksY2hpbGRyZW46dH0pOlgoWCh7fSxlKSx7fSx7Y2hpbGRyZW46dH0pfWZ1bmN0aW9uIG9zKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dm9pZCAwP2FyZ3VtZW50c1sxXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmYXJndW1lbnRzWzJdIT09dm9pZCAwP2FyZ3VtZW50c1syXTp7fTtpZih0eXBlb2YgZT09YHN0cmluZ2ApcmV0dXJuIGU7dmFyIHI9dC5ncmFkaWVudEZpbGwsaT1yPT09dm9pZCAwP251bGw6cixhPVZvKHQsJG8pLG89aXx8YGZpbGxgaW4gbj9hcyhlKTplLHM9KG8uY2hpbGRyZW58fFtdKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG9zKGUse30se30pfSksYz1PYmplY3Qua2V5cyhvLmF0dHJpYnV0ZXN8fHt9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmF0dHJpYnV0ZXNbdF07c3dpdGNoKHQpe2Nhc2VgY2xhc3NgOmUuY2xhc3M9cnMobik7YnJlYWs7Y2FzZWBzdHlsZWA6ZS5zdHlsZT1ucyhuKTticmVhaztkZWZhdWx0OmUuYXR0cnNbdF09bn1yZXR1cm4gZX0se2F0dHJzOnt9LGNsYXNzOnt9LHN0eWxlOnt9fSk7bi5jbGFzczt2YXIgbD1uLnN0eWxlLHU9bD09PXZvaWQgMD97fTpsLGQ9Vm8obixlcyk7aWYoaSYmaS5pZCYmKGkudHlwZT09PWBsaW5lYXJgfHxpLnR5cGU9PT1gcmFkaWFsYCkpe3ZhciBmPWkudHlwZSxwPWkuc3RvcHMsbT1wPT09dm9pZCAwP1tdOnAsaD1pLmlkLGc9Vm8oaSx0cyksXz11ZShmPT09YGxpbmVhcmA/YGxpbmVhckdyYWRpZW50YDpgcmFkaWFsR3JhZGllbnRgLFgoWCh7fSxnKSx7fSx7aWQ6aH0pLG0ubWFwKGlzKSk7cmV0dXJuIHVlKG8udGFnLFgoWChYKFgoe30sYSkse30se2NsYXNzOmMuY2xhc3Msc3R5bGU6WChYKHt9LGMuc3R5bGUpLHUpfSxjLmF0dHJzKSxkKSx7fSx7ZmlsbDpgdXJsKCMke2h9KWB9KSxbX10uY29uY2F0KFVvKHMpKSl9cmV0dXJuIHVlKGUudGFnLFgoWChYKHt9LGEpLHt9LHtjbGFzczpjLmNsYXNzLHN0eWxlOlgoWCh7fSxjLnN0eWxlKSx1KX0sYy5hdHRycyksZCkscyl9dmFyIHNzPSExO3RyeXtzcz0hMH1jYXRjaHt9ZnVuY3Rpb24gY3MoKXtpZighc3MmJmNvbnNvbGUmJnR5cGVvZiBjb25zb2xlLmVycm9yPT1gZnVuY3Rpb25gKXt2YXIgZTsoZT1jb25zb2xlKS5lcnJvci5hcHBseShlLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGxzKGUpe2lmKGUmJktvKGUpPT09YG9iamVjdGAmJmUucHJlZml4JiZlLmljb25OYW1lJiZlLmljb24pcmV0dXJuIGU7aWYoTm8uaWNvbilyZXR1cm4gTm8uaWNvbihlKTtpZihlPT09bnVsbClyZXR1cm4gbnVsbDtpZihLbyhlKT09PWBvYmplY3RgJiZlLnByZWZpeCYmZS5pY29uTmFtZSlyZXR1cm4gZTtpZihBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD09PTIpcmV0dXJue3ByZWZpeDplWzBdLGljb25OYW1lOmVbMV19O2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm57cHJlZml4OmBmYXNgLGljb25OYW1lOmV9fXZhciB1cz1IKHtuYW1lOmBGb250QXdlc29tZUljb25gLHByb3BzOntib3JkZXI6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmaXhlZFdpZHRoOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmxpcDp7dHlwZTpbQm9vbGVhbixTdHJpbmddLGRlZmF1bHQ6ITEsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVyblshMCwhMSxgaG9yaXpvbnRhbGAsYHZlcnRpY2FsYCxgYm90aGBdLmluZGV4T2YoZSk+LTF9fSxpY29uOnt0eXBlOltPYmplY3QsQXJyYXksU3RyaW5nXSxyZXF1aXJlZDohMH0sbWFzazp7dHlwZTpbT2JqZWN0LEFycmF5LFN0cmluZ10sZGVmYXVsdDpudWxsfSxtYXNrSWQ6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbH0sbGlzdEl0ZW06e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxwdWxsOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGwsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybltgcmlnaHRgLGBsZWZ0YF0uaW5kZXhPZihlKT4tMX19LHB1bHNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scm90YXRpb246e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuWzkwLDE4MCwyNzBdLmluZGV4T2YoTnVtYmVyLnBhcnNlSW50KGUsMTApKT4tMX19LHJvdGF0ZUJ5Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3dhcE9wYWNpdHk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaXplOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGwsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybltgMnhzYCxgeHNgLGBzbWAsYGxnYCxgeGxgLGAyeGxgLGAxeGAsYDJ4YCxgM3hgLGA0eGAsYDV4YCxgNnhgLGA3eGAsYDh4YCxgOXhgLGAxMHhgXS5pbmRleE9mKGUpPi0xfX0sc3Bpbjp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHRyYW5zZm9ybTp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDpudWxsfSxzeW1ib2w6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSxkZWZhdWx0OiExfSx0aXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDpudWxsfSx0aXRsZUlkOnt0eXBlOlN0cmluZyxkZWZhdWx0Om51bGx9LGludmVyc2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxib3VuY2U6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxzaGFrZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LGJlYXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmYWRlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYmVhdEZhZGU6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxmbGFzaDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5QdWxzZTp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5SZXZlcnNlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sd2lkdGhBdXRvOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FudmFzU3F1YXJlOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sY2FudmFzUm9vbXk6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxncmFkaWVudEZpbGw6e3R5cGU6T2JqZWN0LGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlLmlkIT1gc3RyaW5nYHx8IWUuaWQ/KGNvbnNvbGUud2FybihgRm9udEF3ZXNvbWVJY29uOiBncmFkaWVudEZpbGwuaWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKSwhMSk6ZS50eXBlIT09YGxpbmVhcmAmJmUudHlwZSE9PWByYWRpYWxgPyhjb25zb2xlLndhcm4oYEZvbnRBd2Vzb21lSWNvbjogZ3JhZGllbnRGaWxsLnR5cGUgbXVzdCBiZSAibGluZWFyIiBvciAicmFkaWFsImApLCExKTohMH19LGZsaXAzNjA6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxidXp6Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sZmxvYXQ6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSxqZWxsbzp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9LHNwaW5TbmFwOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3BpblNuYXA0Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3BpblNuYXA4Ont0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sc3dpbmc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfSx3YWc6e3R5cGU6Qm9vbGVhbixkZWZhdWx0OiExfX0sc2V0dXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmF0dHJzLHI9eChmdW5jdGlvbigpe3JldHVybiBscyhlLmljb24pfSksaT14KGZ1bmN0aW9uKCl7cmV0dXJuIEpvKGBjbGFzc2VzYCxZbyhlKSl9KSxhPXgoZnVuY3Rpb24oKXtyZXR1cm4gSm8oYHRyYW5zZm9ybWAsdHlwZW9mIGUudHJhbnNmb3JtPT1gc3RyaW5nYD9Oby50cmFuc2Zvcm0oZS50cmFuc2Zvcm0pOmUudHJhbnNmb3JtKX0pLG89eChmdW5jdGlvbigpe3JldHVybiBKbyhgbWFza2AsbHMoZS5tYXNrKSl9KSxzPXgoZnVuY3Rpb24oKXt2YXIgdD1YKFgoWChYKHt9LGkudmFsdWUpLGEudmFsdWUpLG8udmFsdWUpLHt9LHtzeW1ib2w6ZS5zeW1ib2wsbWFza0lkOmUubWFza0lkfSk7cmV0dXJuIHQudGl0bGU9ZS50aXRsZSx0LnRpdGxlSWQ9ZS50aXRsZUlkLFBvKHIudmFsdWUsdCl9KTtOKHMsZnVuY3Rpb24oZSl7aWYoIWUpcmV0dXJuIGNzKGBDb3VsZCBub3QgZmluZCBvbmUgb3IgbW9yZSBpY29uKHMpYCxyLnZhbHVlLG8udmFsdWUpfSx7aW1tZWRpYXRlOiEwfSksZS5ncmFkaWVudEZpbGwmJmUuc3ltYm9sJiZjcyhgZ3JhZGllbnRGaWxsIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBzeW1ib2wgaXMgdHJ1ZSBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7dmFyIGM9eChmdW5jdGlvbigpe3JldHVybiBzLnZhbHVlP29zKHMudmFsdWUuYWJzdHJhY3RbMF0se2dyYWRpZW50RmlsbDplLnN5bWJvbD9udWxsOmUuZ3JhZGllbnRGaWxsfSxuKTpudWxsfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGMudmFsdWV9fX0pO0goe25hbWU6YEZvbnRBd2Vzb21lTGF5ZXJzYCxwcm9wczp7Zml4ZWRXaWR0aDp7dHlwZTpCb29sZWFuLGRlZmF1bHQ6ITF9fSxzZXR1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc2xvdHMscj1Nby5mYW1pbHlQcmVmaXgsaT14KGZ1bmN0aW9uKCl7cmV0dXJuW2Ake3J9LWxheWVyc2BdLmNvbmNhdChVbyhlLmZpeGVkV2lkdGg/W2Ake3J9LWZ3YF06W10pKX0pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB1ZShgZGl2YCx7Y2xhc3M6aS52YWx1ZX0sbi5kZWZhdWx0P24uZGVmYXVsdCgpOltdKX19fSksSCh7bmFtZTpgRm9udEF3ZXNvbWVMYXllcnNUZXh0YCxwcm9wczp7dmFsdWU6e3R5cGU6W1N0cmluZyxOdW1iZXJdLGRlZmF1bHQ6YGB9LHRyYW5zZm9ybTp7dHlwZTpbU3RyaW5nLE9iamVjdF0sZGVmYXVsdDpudWxsfSxjb3VudGVyOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0scG9zaXRpb246e3R5cGU6U3RyaW5nLGRlZmF1bHQ6bnVsbCx2YWxpZGF0b3I6ZnVuY3Rpb24oZSl7cmV0dXJuW2Bib3R0b20tbGVmdGAsYGJvdHRvbS1yaWdodGAsYHRvcC1sZWZ0YCxgdG9wLXJpZ2h0YF0uaW5kZXhPZihlKT4tMX19fSxzZXR1cDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuYXR0cnMscj1Nby5mYW1pbHlQcmVmaXgsaT14KGZ1bmN0aW9uKCl7cmV0dXJuIEpvKGBjbGFzc2VzYCxbXS5jb25jYXQoVW8oZS5jb3VudGVyP1tgJHtyfS1sYXllcnMtY291bnRlcmBdOltdKSxVbyhlLnBvc2l0aW9uP1tgJHtyfS1sYXllcnMtJHtlLnBvc2l0aW9ufWBdOltdKSkpfSksYT14KGZ1bmN0aW9uKCl7cmV0dXJuIEpvKGB0cmFuc2Zvcm1gLHR5cGVvZiBlLnRyYW5zZm9ybT09YHN0cmluZ2A/Tm8udHJhbnNmb3JtKGUudHJhbnNmb3JtKTplLnRyYW5zZm9ybSl9KSxvPXgoZnVuY3Rpb24oKXt2YXIgdD1GbyhlLnZhbHVlLnRvU3RyaW5nKCksWChYKHt9LGEudmFsdWUpLGkudmFsdWUpKS5hYnN0cmFjdDtyZXR1cm4gZS5jb3VudGVyJiYodFswXS5hdHRyaWJ1dGVzLmNsYXNzPXRbMF0uYXR0cmlidXRlcy5jbGFzcy5yZXBsYWNlKGBmYS1sYXllcnMtdGV4dGAsYGApKSx0WzBdfSkscz14KGZ1bmN0aW9uKCl7cmV0dXJuIG9zKG8udmFsdWUse30sbil9KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gcy52YWx1ZX19fSk7dmFyIGRzPXtwcmVmaXg6YGZhYmAsaWNvbk5hbWU6YGdpdGh1YmAsaWNvbjpbNTEyLDUxMixbXSxgZjA5YmAsYE0yMTYuNSAzNjIuNWMtNjYtOC0xMTIuNS01NS41LTExMi41LTExNyAwLTI1IDktNTIgMjQtNzAtNi41LTE2LjUtNS41LTUxLjUgMi02NiAyMC0yLjUgNDcgOCA2MyAyMi41IDE5LTYgMzktOSA2My41LTlzNDQuNSAzIDYyLjUgOC41YzE1LjUtMTQgNDMtMjQuNSA2My0yMiA3IDEzLjUgOCA0OC41IDEuNSA2NS41IDE2IDE5IDI0LjUgNDQuNSAyNC41IDcwLjUgMCA2MS41LTQ2LjUgMTA4LTExMy41IDExNi41IDE3IDExIDI4LjUgMzUgMjguNSA2Mi41bDAgNTJDMzIzIDQ5MS41IDMzNS41IDUwMCAzNTAuNSA0OTQgNDQxIDQ1OS41IDUxMiAzNjkgNTEyIDI1NyA1MTIgMTE1LjUgMzk3IDAgMjU1LjUgMFMwIDExNS41IDAgMjU3YzAgMTExIDcwLjUgMjAzIDE2NS41IDIzNy41IDEzLjUgNSAyNi41LTQgMjYuNS0xNy41bDAtNDBjLTcgMy0xNiA1LTI0IDUtMzMgMC01Mi41LTE4LTY2LjUtNTEuNS01LjUtMTMuNS0xMS41LTIxLjUtMjMtMjMtNi0uNS04LTMtOC02IDAtNiAxMC0xMC41IDIwLTEwLjUgMTQuNSAwIDI3IDkgNDAgMjcuNSAxMCAxNC41IDIwLjUgMjEgMzMgMjFzMjAuNS00LjUgMzItMTZjOC41LTguNSAxNS0xNiAyMS0yMXpgXX0sZnM9SCh7X19uYW1lOmBBbGVydFRpdGxlYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihWKCksbShgZGl2YCx7ImRhdGEtc2xvdCI6YGFsZXJ0LXRpdGxlYCxjbGFzczpVZShQKFhlKShgZm9udC1tZWRpdW0gZ3JvdXAtaGFzLVs+c3ZnXS9hbGVydDpjb2wtc3RhcnQtMiBmb250LWhlYWRpbmcgWyZfYV06dW5kZXJsaW5lIFsmX2FdOnVuZGVybGluZS1vZmZzZXQtMyBbJl9hXTpob3Zlcjp0ZXh0LWZvcmVncm91bmRgLHQuY2xhc3MpKX0sW0koZS4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pO2Z1bmN0aW9uIHBzKGUsdD0tMS8wLG49MS8wKXtyZXR1cm4gTWF0aC5taW4obixNYXRoLm1heCh0LGUpKX1mdW5jdGlvbiBaKCl7bGV0IGU9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtpZihlPT1udWxsKXJldHVybiBudWxsO2Zvcig7ZSE9bnVsbCYmZS5zaGFkb3dSb290IT1udWxsJiZlLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCE9bnVsbDspZT1lLnNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudDtyZXR1cm4gZX1mdW5jdGlvbiBtcyhlLHQsbil7bGV0IHI9bi5vcmlnaW5hbEV2ZW50LnRhcmdldCxpPW5ldyBDdXN0b21FdmVudChlLHtidWJibGVzOiExLGNhbmNlbGFibGU6ITAsZGV0YWlsOm59KTt0JiZyLmFkZEV2ZW50TGlzdGVuZXIoZSx0LHtvbmNlOiEwfSksci5kaXNwYXRjaEV2ZW50KGkpfXZhciBRPWIoe2xheWVyc1Jvb3Q6bmV3IFNldCxsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZDpuZXcgU2V0LG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM6dm9pZCAwLGJyYW5jaGVzOm5ldyBTZXR9KTtmdW5jdGlvbiBocyhlKXtpZih0eXBlb2YgZSE9YG9iamVjdGB8fCFlKXJldHVybiExO2xldCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gdCE9PW51bGwmJnQhPT1PYmplY3QucHJvdG90eXBlJiZPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkhPT1udWxsfHxTeW1ib2wuaXRlcmF0b3IgaW4gZT8hMTpTeW1ib2wudG9TdHJpbmdUYWcgaW4gZT9PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSk9PT1gW29iamVjdCBNb2R1bGVdYDohMH1mdW5jdGlvbiBncyhlLHQsbj1gLmAscil7aWYoIWhzKHQpKXJldHVybiBncyhlLHt9LG4scik7bGV0IGk9ey4uLnR9O2ZvcihsZXQgdCBvZiBPYmplY3Qua2V5cyhlKSl7aWYodD09PWBfX3Byb3RvX19gfHx0PT09YGNvbnN0cnVjdG9yYCljb250aW51ZTtsZXQgYT1lW3RdO2EhPW51bGwmJihyJiZyKGksdCxhLG4pfHwoaVt0XT1BcnJheS5pc0FycmF5KGEpJiZBcnJheS5pc0FycmF5KGlbdF0pP1suLi5hLC4uLmlbdF1dOmhzKGEpJiZocyhpW3RdKT9ncyhhLGlbdF0sKG4/YCR7bn0uYDpgYCkrdC50b1N0cmluZygpLHIpOmEpKX1yZXR1cm4gaX1mdW5jdGlvbiBfcyhlKXtyZXR1cm4oLi4udCk9PnQucmVkdWNlKCh0LG4pPT5ncyh0LG4sYGAsZSkse30pfXZhciB2cz1fcygpLHlzPWVlKCgpPT57bGV0IGU9aihuZXcgTWFwKSx0PWooKSxuPXgoKCk9Pntmb3IobGV0IHQgb2YgZS52YWx1ZS52YWx1ZXMoKSlpZih0KXJldHVybiEwO3JldHVybiExfSkscj1zKHtzY3JvbGxCb2R5OmooITApfSksaT1udWxsLGE9KCk9Pntkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1gYCxkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpblJpZ2h0PWBgLFEubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZT09PTAmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM9YGApLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShgLS1zY3JvbGxiYXItd2lkdGhgKSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PXQudmFsdWU/P2BgLGtlJiZpPy4oKSx0LnZhbHVlPXZvaWQgMH07cmV0dXJuIE4obiwoZSxvKT0+e2lmKCFqZSlyZXR1cm47aWYoIWUpe28mJmEoKTtyZXR1cm59dC52YWx1ZT09PXZvaWQgMCYmKHQudmFsdWU9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyk7bGV0IHM9d2luZG93LmlubmVyV2lkdGgtZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGM9e3BhZGRpbmc6cyxtYXJnaW46MH0sbD1yLnNjcm9sbEJvZHk/LnZhbHVlP3R5cGVvZiByLnNjcm9sbEJvZHkudmFsdWU9PWBvYmplY3RgP3ZzKHtwYWRkaW5nOnIuc2Nyb2xsQm9keS52YWx1ZS5wYWRkaW5nPT09ITA/czpyLnNjcm9sbEJvZHkudmFsdWUucGFkZGluZyxtYXJnaW46ci5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbj09PSEwP3M6ci5zY3JvbGxCb2R5LnZhbHVlLm1hcmdpbn0sYyk6Yzp7cGFkZGluZzowLG1hcmdpbjowfTtzPjAmJihkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD10eXBlb2YgbC5wYWRkaW5nPT1gbnVtYmVyYD9gJHtsLnBhZGRpbmd9cHhgOlN0cmluZyhsLnBhZGRpbmcpLGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luUmlnaHQ9dHlwZW9mIGwubWFyZ2luPT1gbnVtYmVyYD9gJHtsLm1hcmdpbn1weGA6U3RyaW5nKGwubWFyZ2luKSxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYC0tc2Nyb2xsYmFyLXdpZHRoYCxgJHtzfXB4YCksZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1gaGlkZGVuYCksa2UmJihpPXN0KGRvY3VtZW50LGB0b3VjaG1vdmVgLGU9PlNzKGUpLHtwYXNzaXZlOiExfSkpLEYoKCk9PntuLnZhbHVlJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzPWBub25lYCxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PWBoaWRkZW5gKX0pfSx7aW1tZWRpYXRlOiEwLGZsdXNoOmBzeW5jYH0pLGV9KTtmdW5jdGlvbiBicyhlKXtsZXQgdD1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw3KSxuPXlzKCk7bi52YWx1ZS5zZXQodCxlPz8hMSk7bGV0IHI9eCh7Z2V0OigpPT5uLnZhbHVlLmdldCh0KT8/ITEsc2V0OmU9Pm4udmFsdWUuc2V0KHQsZSl9KTtyZXR1cm4gVCgoKT0+e24udmFsdWUuZGVsZXRlKHQpfSkscn1mdW5jdGlvbiB4cyhlKXtsZXQgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKTtpZih0Lm92ZXJmbG93WD09PWBzY3JvbGxgfHx0Lm92ZXJmbG93WT09PWBzY3JvbGxgfHx0Lm92ZXJmbG93WD09PWBhdXRvYCYmZS5jbGllbnRXaWR0aDxlLnNjcm9sbFdpZHRofHx0Lm92ZXJmbG93WT09PWBhdXRvYCYmZS5jbGllbnRIZWlnaHQ8ZS5zY3JvbGxIZWlnaHQpcmV0dXJuITA7e2xldCB0PWUucGFyZW50Tm9kZTtyZXR1cm4hKHQgaW5zdGFuY2VvZiBFbGVtZW50KXx8dC50YWdOYW1lPT09YEJPRFlgPyExOnhzKHQpfX1mdW5jdGlvbiBTcyhlKXtsZXQgdD1lfHx3aW5kb3cuZXZlbnQsbj10LnRhcmdldDtyZXR1cm4gbiBpbnN0YW5jZW9mIEVsZW1lbnQmJnhzKG4pPyExOnQudG91Y2hlcy5sZW5ndGg+MXx8KHQucHJldmVudERlZmF1bHQmJnQuY2FuY2VsYWJsZSYmdC5wcmV2ZW50RGVmYXVsdCgpLCExKX12YXIgQ3M9MDtmdW5jdGlvbiB3cygpe2QoZT0+e2lmKCFqZSlyZXR1cm47bGV0IHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtcmVrYS1mb2N1cy1ndWFyZF1gKTtkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudChgYWZ0ZXJiZWdpbmAsdFswXT8/VHMoKSksZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoYGJlZm9yZWVuZGAsdFsxXT8/VHMoKSksQ3MrKyxlKCgpPT57Q3M9PT0xJiZkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1yZWthLWZvY3VzLWd1YXJkXWApLmZvckVhY2goZT0+ZS5yZW1vdmUoKSksQ3MtLX0pfSl9ZnVuY3Rpb24gVHMoKXtsZXQgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBzcGFuYCk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKGBkYXRhLXJla2EtZm9jdXMtZ3VhcmRgLGBgKSxlLnRhYkluZGV4PTAsZS5zdHlsZS5vdXRsaW5lPWBub25lYCxlLnN0eWxlLm9wYWNpdHk9YDBgLGUuc3R5bGUucG9zaXRpb249YGZpeGVkYCxlLnN0eWxlLnBvaW50ZXJFdmVudHM9YG5vbmVgLGV9ZnVuY3Rpb24gRXMoZSl7cmV0dXJuIHgoKCk9PiFFKGUpfHwhIWV0KGUpPy5jbG9zZXN0KGBmb3JtYCkpfXZhciBEcz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PmB1YD9udWxsOihBcnJheS5pc0FycmF5KGUpP2VbMF06ZSkub3duZXJEb2N1bWVudC5ib2R5fSxPcz1uZXcgV2Vha01hcCxrcz1uZXcgV2Vha01hcCxBcz17fSxqcz0wLE1zPWZ1bmN0aW9uKGUpe3JldHVybiBlJiYoZS5ob3N0fHxNcyhlLnBhcmVudE5vZGUpKX0sTnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCl7aWYoZS5jb250YWlucyh0KSlyZXR1cm4gdDt2YXIgbj1Ncyh0KTtyZXR1cm4gbiYmZS5jb250YWlucyhuKT9uOihjb25zb2xlLmVycm9yKGBhcmlhLWhpZGRlbmAsdCxgaW4gbm90IGNvbnRhaW5lZCBpbnNpZGVgLGUsYC4gRG9pbmcgbm90aGluZ2ApLG51bGwpfSkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pfSxQcz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1Ocyh0LEFycmF5LmlzQXJyYXkoZSk/ZTpbZV0pO0FzW25dfHwoQXNbbl09bmV3IFdlYWtNYXApO3ZhciBhPUFzW25dLG89W10scz1uZXcgU2V0LGM9bmV3IFNldChpKSxsPWZ1bmN0aW9uKGUpeyFlfHxzLmhhcyhlKXx8KHMuYWRkKGUpLGwoZS5wYXJlbnROb2RlKSl9O2kuZm9yRWFjaChsKTt2YXIgdT1mdW5jdGlvbihlKXshZXx8Yy5oYXMoZSl8fEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZS5jaGlsZHJlbixmdW5jdGlvbihlKXtpZihzLmhhcyhlKSl1KGUpO2Vsc2UgdHJ5e3ZhciB0PWUuZ2V0QXR0cmlidXRlKHIpLGk9dCE9PW51bGwmJnQhPT1gZmFsc2VgLGM9KE9zLmdldChlKXx8MCkrMSxsPShhLmdldChlKXx8MCkrMTtPcy5zZXQoZSxjKSxhLnNldChlLGwpLG8ucHVzaChlKSxjPT09MSYmaSYma3Muc2V0KGUsITApLGw9PT0xJiZlLnNldEF0dHJpYnV0ZShuLGB0cnVlYCksaXx8ZS5zZXRBdHRyaWJ1dGUocixgdHJ1ZWApfWNhdGNoKHQpe2NvbnNvbGUuZXJyb3IoYGFyaWEtaGlkZGVuOiBjYW5ub3Qgb3BlcmF0ZSBvbiBgLGUsdCl9fSl9O3JldHVybiB1KHQpLHMuY2xlYXIoKSxqcysrLGZ1bmN0aW9uKCl7by5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PU9zLmdldChlKS0xLGk9YS5nZXQoZSktMTtPcy5zZXQoZSx0KSxhLnNldChlLGkpLHR8fChrcy5oYXMoZSl8fGUucmVtb3ZlQXR0cmlidXRlKHIpLGtzLmRlbGV0ZShlKSksaXx8ZS5yZW1vdmVBdHRyaWJ1dGUobil9KSxqcy0tLGpzfHwoT3M9bmV3IFdlYWtNYXAsT3M9bmV3IFdlYWtNYXAsa3M9bmV3IFdlYWtNYXAsQXM9e30pfX0sRnM9ZnVuY3Rpb24oZSx0LG4pe249PT12b2lkIDAmJihuPWBkYXRhLWFyaWEtaGlkZGVuYCk7dmFyIHI9QXJyYXkuZnJvbShBcnJheS5pc0FycmF5KGUpP2U6W2VdKSxpPXR8fERzKGUpO3JldHVybiBpPyhyLnB1c2guYXBwbHkocixBcnJheS5mcm9tKGkucXVlcnlTZWxlY3RvckFsbChgW2FyaWEtbGl2ZV0sIHNjcmlwdGApKSksUHMocixpLG4sYGFyaWEtaGlkZGVuYCkpOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fTtmdW5jdGlvbiBJcyhlKXtsZXQgdDtOKCgpPT5ldChlKSxlPT57bGV0IG49ITE7dHJ5e249ISFlPy5jbG9zZXN0KGBbcG9wb3Zlcl06bm90KDpwb3BvdmVyLW9wZW4pYCl9Y2F0Y2h7fWUmJiFuP3Q9RnMoZSk6dCYmdCgpfSksb2UoKCk9Pnt0JiZ0KCl9KX1mdW5jdGlvbiBMcyhlKXtsZXQgdD1qKCksbj14KCgpPT50LnZhbHVlPy53aWR0aD8/MCkscj14KCgpPT50LnZhbHVlPy5oZWlnaHQ/PzApLGk7cmV0dXJuIHFlKCgpPT57bGV0IG49ZXQoZSk7bj8odC52YWx1ZT17d2lkdGg6bi5vZmZzZXRXaWR0aCxoZWlnaHQ6bi5vZmZzZXRIZWlnaHR9LGk9bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntpZighQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKXJldHVybjtsZXQgcj1lWzBdLGksYTtpZihgYm9yZGVyQm94U2l6ZWBpbiByKXtsZXQgZT1yLmJvcmRlckJveFNpemUsdD1BcnJheS5pc0FycmF5KGUpP2VbMF06ZTtpPXQuaW5saW5lU2l6ZSxhPXQuYmxvY2tTaXplfWVsc2UgaT1uLm9mZnNldFdpZHRoLGE9bi5vZmZzZXRIZWlnaHQ7dC52YWx1ZT17d2lkdGg6aSxoZWlnaHQ6YX19KSxpLm9ic2VydmUobix7Ym94OmBib3JkZXItYm94YH0pKTp0LnZhbHVlPXZvaWQgMH0pLG9lKCgpPT57aT8uZGlzY29ubmVjdCgpLGk9dm9pZCAwfSkse3dpZHRoOm4saGVpZ2h0OnJ9fWZ1bmN0aW9uIFJzKGUpe2xldCB0PXRlKGBgLDFlMyk7cmV0dXJue3NlYXJjaDp0LGhhbmRsZVR5cGVhaGVhZFNlYXJjaDoobixyKT0+e2lmKHQudmFsdWUrPW4sZSllKG4pO2Vsc2V7bGV0IGU9WigpLG49ci5tYXAoZT0+KHsuLi5lLHRleHRWYWx1ZTplLnZhbHVlPy50ZXh0VmFsdWU/P2UucmVmLnRleHRDb250ZW50Py50cmltKCk/P2BgfSkpLGk9bi5maW5kKHQ9PnQucmVmPT09ZSksYT1CcyhuLm1hcChlPT5lLnRleHRWYWx1ZSksdC52YWx1ZSxpPy50ZXh0VmFsdWUpLG89bi5maW5kKGU9PmUudGV4dFZhbHVlPT09YSk7cmV0dXJuIG8mJm8ucmVmLmZvY3VzKCksbz8ucmVmfX0scmVzZXRUeXBlYWhlYWQ6KCk9Pnt0LnZhbHVlPWBgfX19ZnVuY3Rpb24genMoZSx0KXtyZXR1cm4gZS5tYXAoKG4scik9PmVbKHQrciklZS5sZW5ndGhdKX1mdW5jdGlvbiBCcyhlLHQsbil7bGV0IHI9dC5sZW5ndGg+MSYmQXJyYXkuZnJvbSh0KS5ldmVyeShlPT5lPT09dFswXSk/dFswXTp0LGk9bj9lLmluZGV4T2Yobik6LTEsYT16cyhlLE1hdGgubWF4KGksMCkpO3IubGVuZ3RoPT09MSYmKGE9YS5maWx0ZXIoZT0+ZSE9PW4pKTtsZXQgbz1hLmZpbmQoZT0+ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoci50b0xvd2VyQ2FzZSgpKSk7cmV0dXJuIG89PT1uP3ZvaWQgMDpvfWZ1bmN0aW9uIFZzKCl7bGV0IGU9aigpO3JldHVybntwcmltaXRpdmVFbGVtZW50OmUsY3VycmVudEVsZW1lbnQ6eCgoKT0+W2AjdGV4dGAsYCNjb21tZW50YF0uaW5jbHVkZXMoZS52YWx1ZT8uJGVsLm5vZGVOYW1lKT9lLnZhbHVlPy4kZWwubmV4dEVsZW1lbnRTaWJsaW5nOmV0KGUpKX19dmFyIEhzPWBkaXNtaXNzYWJsZUxheWVyLnBvaW50ZXJEb3duT3V0c2lkZWAsVXM9YGRpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlYDtmdW5jdGlvbiBXcyhlLHQpe2lmKCEodCBpbnN0YW5jZW9mIEVsZW1lbnQpKXJldHVybiExO2xldCBuPXQuY2xvc2VzdChgW2RhdGEtZGlzbWlzc2FibGUtbGF5ZXJdYCkscj1lLmRhdGFzZXQuZGlzbWlzc2FibGVMYXllcj09PWBgP2U6ZS5xdWVyeVNlbGVjdG9yKGBbZGF0YS1kaXNtaXNzYWJsZS1sYXllcl1gKSxpPUFycmF5LmZyb20oZS5vd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWRpc21pc3NhYmxlLWxheWVyXWApKTtyZXR1cm4hIShuJiYocj09PW58fGkuaW5kZXhPZihyKTxpLmluZGV4T2YobikpKX1mdW5jdGlvbiBHcyhlLHQsbj0hMCl7bGV0IHI9dD8udmFsdWU/Lm93bmVyRG9jdW1lbnQ/P2dsb2JhbFRoaXM/LmRvY3VtZW50LGk9aighMSksYT1qKCgpPT57fSk7cmV0dXJuIGQobz0+e2lmKCFqZXx8IUUobikpcmV0dXJuO2xldCBzPWFzeW5jIG49PntsZXQgbz1uLnRhcmdldDtpZighKCF0Py52YWx1ZXx8IW8pKXtpZihXcyh0LnZhbHVlLG8pKXtpLnZhbHVlPSExO3JldHVybn1pZihuLnRhcmdldCYmIWkudmFsdWUpe2xldCB0PXtvcmlnaW5hbEV2ZW50Om59O2Z1bmN0aW9uIGkoKXttcyhIcyxlLHQpfW4ucG9pbnRlclR5cGU9PT1gdG91Y2hgPyhyLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlKSxhLnZhbHVlPWksci5hZGRFdmVudExpc3RlbmVyKGBjbGlja2AsYS52YWx1ZSx7b25jZTohMH0pKTppKCl9ZWxzZSByLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlKTtpLnZhbHVlPSExfX0sYz13aW5kb3cuc2V0VGltZW91dCgoKT0+e3IuYWRkRXZlbnRMaXN0ZW5lcihgcG9pbnRlcmRvd25gLHMpfSwwKTtvKCgpPT57d2luZG93LmNsZWFyVGltZW91dChjKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoYHBvaW50ZXJkb3duYCxzKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNsaWNrYCxhLnZhbHVlKX0pfSkse29uUG9pbnRlckRvd25DYXB0dXJlOigpPT57RShuKSYmKGkudmFsdWU9ITApfX19ZnVuY3Rpb24gS3MoZSx0LG49ITApe2xldCByPXQ/LnZhbHVlPy5vd25lckRvY3VtZW50Pz9nbG9iYWxUaGlzPy5kb2N1bWVudCxpPWooITEpO3JldHVybiBkKGE9PntpZighamV8fCFFKG4pKXJldHVybjtsZXQgbz1hc3luYyBuPT57aWYoIXQ/LnZhbHVlKXJldHVybjthd2FpdCBGKCksYXdhaXQgRigpO2xldCByPW4udGFyZ2V0OyF0LnZhbHVlfHwhcnx8V3ModC52YWx1ZSxyKXx8bi50YXJnZXQmJiFpLnZhbHVlJiZtcyhVcyxlLHtvcmlnaW5hbEV2ZW50Om59KX07ci5hZGRFdmVudExpc3RlbmVyKGBmb2N1c2luYCxvKSxhKCgpPT5yLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGZvY3VzaW5gLG8pKX0pLHtvbkZvY3VzQ2FwdHVyZTooKT0+e0UobikmJihpLnZhbHVlPSEwKX0sb25CbHVyQ2FwdHVyZTooKT0+e0UobikmJihpLnZhbHVlPSExKX19fXZhciBxcz1IKHtfX25hbWU6YERpc21pc3NhYmxlTGF5ZXJgLHByb3BzOntkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHByZXNlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfX0sZW1pdHM6W2Blc2NhcGVLZXlEb3duYCxgcG9pbnRlckRvd25PdXRzaWRlYCxgZm9jdXNPdXRzaWRlYCxgaW50ZXJhY3RPdXRzaWRlYCxgZGlzbWlzc2BdLHNldHVwKG4se2VtaXQ6cn0pe2xldCBpPW4sYT1yLHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6c309ZSgpLGM9eCgoKT0+cy52YWx1ZT8ub3duZXJEb2N1bWVudD8/Z2xvYmFsVGhpcy5kb2N1bWVudCksbD14KCgpPT5RLmxheWVyc1Jvb3QpLHU9eCgoKT0+cy52YWx1ZT9BcnJheS5mcm9tKGwudmFsdWUpLmluZGV4T2Yocy52YWx1ZSk6LTEpLGY9eCgoKT0+US5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPjApLHA9eCgoKT0+e2xldCBlPUFycmF5LmZyb20obC52YWx1ZSksW3RdPVsuLi5RLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkXS5zbGljZSgtMSksbj1lLmluZGV4T2YodCk7cmV0dXJuIHUudmFsdWU+PW59KSxtPUdzKGFzeW5jIGU9PntsZXQgdD1bLi4uUS5icmFuY2hlc10uc29tZSh0PT50Py5jb250YWlucyhlLnRhcmdldCkpOyFpLnByZXNlbnR8fCFwLnZhbHVlfHx0fHwoYShgcG9pbnRlckRvd25PdXRzaWRlYCxlKSxhKGBpbnRlcmFjdE91dHNpZGVgLGUpLGF3YWl0IEYoKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGEoYGRpc21pc3NgKSl9LHMpLGg9S3MoZT0+e2xldCB0PVsuLi5RLmJyYW5jaGVzXS5zb21lKHQ9PnQ/LmNvbnRhaW5zKGUudGFyZ2V0KSk7IWkucHJlc2VudHx8dHx8KGEoYGZvY3VzT3V0c2lkZWAsZSksYShgaW50ZXJhY3RPdXRzaWRlYCxlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGEoYGRpc21pc3NgKSl9LHMpO3JldHVybiBpdChgRXNjYXBlYCxlPT57aS5wcmVzZW50JiZ1LnZhbHVlPT09bC52YWx1ZS5zaXplLTEmJihhKGBlc2NhcGVLZXlEb3duYCxlKSxlLmRlZmF1bHRQcmV2ZW50ZWR8fGEoYGRpc21pc3NgKSl9KSxOKFtzLCgpPT5pLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cywoKT0+aS5wcmVzZW50XSwoW2UsbixyXSxpLGEpPT57IWV8fCFyfHxuJiYoUS5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplPT09MCYmKFEub3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cz1jLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cyxjLnZhbHVlLmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cz1gbm9uZWApLFEubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKGUpLGEoKCk9PntRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShlKSxRLmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemU9PT0wJiYhdChRLm9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMpJiYoYy52YWx1ZS5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM9US5vcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzKX0pKX0se2ltbWVkaWF0ZTohMH0pLE4oW3MsKCk9PmkucHJlc2VudF0sKFtlLHRdLG4scik9PnshZXx8IXR8fChsLnZhbHVlLmFkZChlKSxyKCgpPT57bC52YWx1ZS5kZWxldGUoZSl9KSl9LHtpbW1lZGlhdGU6ITB9KSxkKGU9PntlKCgpPT57cy52YWx1ZSYmKGwudmFsdWUuZGVsZXRlKHMudmFsdWUpLFEubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuZGVsZXRlKHMudmFsdWUpKX0pfSksKGUsdCk9PihWKCksTShQKEIpLHtyZWY6UChvKSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLCJkYXRhLWRpc21pc3NhYmxlLWxheWVyIjpgYCxzdHlsZTpLZSh7cG9pbnRlckV2ZW50czpmLnZhbHVlP3AudmFsdWU/YGF1dG9gOmBub25lYDp2b2lkIDB9KSxvbkZvY3VzQ2FwdHVyZTpQKGgpLm9uRm9jdXNDYXB0dXJlLG9uQmx1ckNhcHR1cmU6UChoKS5vbkJsdXJDYXB0dXJlLG9uUG9pbnRlcmRvd25DYXB0dXJlOlAobSkub25Qb2ludGVyRG93bkNhcHR1cmV9LHtkZWZhdWx0OlIoKCk9PltJKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYCxgc3R5bGVgLGBvbkZvY3VzQ2FwdHVyZWAsYG9uQmx1ckNhcHR1cmVgLGBvblBvaW50ZXJkb3duQ2FwdHVyZWBdKSl9fSksSnM9XygoKT0+aihbXSkpO2Z1bmN0aW9uIFlzKCl7bGV0IGU9SnMoKTtyZXR1cm57YWRkKHQpe2xldCBuPWUudmFsdWVbMF07dCE9PW4mJm4/LnBhdXNlKCksZS52YWx1ZT1YcyhlLnZhbHVlLHQpLGUudmFsdWUudW5zaGlmdCh0KX0scmVtb3ZlKHQpe2UudmFsdWU9WHMoZS52YWx1ZSx0KSxlLnZhbHVlWzBdPy5yZXN1bWUoKX19fWZ1bmN0aW9uIFhzKGUsdCl7bGV0IG49Wy4uLmVdLHI9bi5pbmRleE9mKHQpO3JldHVybiByIT09LTEmJm4uc3BsaWNlKHIsMSksbn12YXIgWnM9YGZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Nb3VudGAsUXM9YGZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Vbm1vdW50YCwkcz17YnViYmxlczohMSxjYW5jZWxhYmxlOiEwfTtmdW5jdGlvbiBlYyhlLHtzZWxlY3Q6dD0hMX09e30pe2xldCBuPVooKTtmb3IobGV0IHIgb2YgZSlpZihvYyhyLHtzZWxlY3Q6dH0pLFooKSE9PW4pcmV0dXJuITB9ZnVuY3Rpb24gdGMoZSl7bGV0IHQ9bmMoZSk7cmV0dXJuW3JjKHQsZSkscmModC5yZXZlcnNlKCksZSldfWZ1bmN0aW9uIG5jKGUpe2xldCB0PVtdLG49ZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihlLE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULHthY2NlcHROb2RlOmU9PntsZXQgdD1lLnRhZ05hbWU9PT1gSU5QVVRgJiZlLnR5cGU9PT1gaGlkZGVuYDtyZXR1cm4gZS5kaXNhYmxlZHx8ZS5oaWRkZW58fHQ/Tm9kZUZpbHRlci5GSUxURVJfU0tJUDplLnRhYkluZGV4Pj0wP05vZGVGaWx0ZXIuRklMVEVSX0FDQ0VQVDpOb2RlRmlsdGVyLkZJTFRFUl9TS0lQfX0pO2Zvcig7bi5uZXh0Tm9kZSgpOyl0LnB1c2gobi5jdXJyZW50Tm9kZSk7cmV0dXJuIHR9ZnVuY3Rpb24gcmMoZSx0KXtmb3IobGV0IG4gb2YgZSlpZighaWMobix7dXBUbzp0fSkpcmV0dXJuIG59ZnVuY3Rpb24gaWMoZSx7dXBUbzp0fSl7aWYoZ2V0Q29tcHV0ZWRTdHlsZShlKS52aXNpYmlsaXR5PT09YGhpZGRlbmApcmV0dXJuITA7Zm9yKDtlOyl7aWYodCE9PXZvaWQgMCYmZT09PXQpcmV0dXJuITE7aWYoZ2V0Q29tcHV0ZWRTdHlsZShlKS5kaXNwbGF5PT09YG5vbmVgKXJldHVybiEwO2U9ZS5wYXJlbnRFbGVtZW50fXJldHVybiExfWZ1bmN0aW9uIGFjKGUpe3JldHVybiBlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCYmYHNlbGVjdGBpbiBlfWZ1bmN0aW9uIG9jKGUse3NlbGVjdDp0PSExfT17fSl7aWYoZSYmZS5mb2N1cyl7bGV0IG49WigpO2UuZm9jdXMoe3ByZXZlbnRTY3JvbGw6ITB9KSxlIT09biYmYWMoZSkmJnQmJmUuc2VsZWN0KCl9fXZhciBzYz1IKHtfX25hbWU6YEZvY3VzU2NvcGVgLHByb3BzOntsb29wOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sdHJhcHBlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LHByZXNlbnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbYG1vdW50QXV0b0ZvY3VzYCxgdW5tb3VudEF1dG9Gb2N1c2BdLHNldHVwKHQse2VtaXQ6bn0pe2xldCByPXQsaT1uLHtjdXJyZW50UmVmOmEsY3VycmVudEVsZW1lbnQ6b309ZSgpLHM9aihudWxsKSxjPVlzKCksbD1iKHtwYXVzZWQ6ITEscGF1c2UoKXt0aGlzLnBhdXNlZD0hMH0scmVzdW1lKCl7dGhpcy5wYXVzZWQ9ITF9fSk7ZChlPT57aWYoIWplKXJldHVybjtsZXQgdD1vLnZhbHVlO2lmKCFyLnRyYXBwZWQpcmV0dXJuO2Z1bmN0aW9uIG4oZSl7aWYobC5wYXVzZWR8fCF0KXJldHVybjtsZXQgbj1lLnRhcmdldDt0LmNvbnRhaW5zKG4pP3MudmFsdWU9bjpvYyhzLnZhbHVlLHtzZWxlY3Q6ITB9KX1mdW5jdGlvbiBpKGUpe2lmKGwucGF1c2VkfHwhdClyZXR1cm47bGV0IG49ZS5yZWxhdGVkVGFyZ2V0O24hPT1udWxsJiYodC5jb250YWlucyhuKXx8b2Mocy52YWx1ZSx7c2VsZWN0OiEwfSkpfWZ1bmN0aW9uIGEoZSl7bGV0IG49cy52YWx1ZTtuIT09bnVsbCYmZS5zb21lKGU9PmUucmVtb3ZlZE5vZGVzLmxlbmd0aD4wKSYmKHQuY29udGFpbnMobil8fG9jKHQpKX1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGBmb2N1c2luYCxuKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGBmb2N1c291dGAsaSk7bGV0IGM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoYSk7dCYmYy5vYnNlcnZlKHQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksZSgoKT0+e2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGZvY3VzaW5gLG4pLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYGZvY3Vzb3V0YCxpKSxjLmRpc2Nvbm5lY3QoKX0pfSk7ZnVuY3Rpb24gdShlLHQpe2xldCBuPW5ldyBDdXN0b21FdmVudChacywkcykscj1lPT5pKGBtb3VudEF1dG9Gb2N1c2AsZSk7ZS5hZGRFdmVudExpc3RlbmVyKFpzLHIpLGUuZGlzcGF0Y2hFdmVudChuKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoWnMsciksbi5kZWZhdWx0UHJldmVudGVkfHwoZWMobmMoZSkse3NlbGVjdDohMH0pLFooKT09PXQmJm9jKGUpKX1kKGFzeW5jIGU9PntsZXQgdD1vLnZhbHVlO2lmKGF3YWl0IEYoKSwhdClyZXR1cm47ci5wcmVzZW50IT09ITEmJmMuYWRkKGwpO2xldCBuPVooKTshdC5jb250YWlucyhuKSYmci5wcmVzZW50IT09ITEmJnUodCxuKSxlKCgpPT57bGV0IGU9bmV3IEN1c3RvbUV2ZW50KFFzLCRzKSxyPWU9PntpKGB1bm1vdW50QXV0b0ZvY3VzYCxlKX07dC5hZGRFdmVudExpc3RlbmVyKFFzLHIpLHQuZGlzcGF0Y2hFdmVudChlKSx0LnNldEF0dHJpYnV0ZShgZGF0YS1mb2N1cy1zY29wZS11bm1vdW50aW5nYCxgYCksc2V0VGltZW91dCgoKT0+e2UuZGVmYXVsdFByZXZlbnRlZHx8b2Mobj8/ZG9jdW1lbnQuYm9keSx7c2VsZWN0OiEwfSksdC5yZW1vdmVFdmVudExpc3RlbmVyKFFzLHIpLGMucmVtb3ZlKGwpLHQucmVtb3ZlQXR0cmlidXRlKGBkYXRhLWZvY3VzLXNjb3BlLXVubW91bnRpbmdgKX0sMCl9KX0pLE4oKCk9PnIucHJlc2VudCxhc3luYyhlLHQpPT57aWYoIWplKXJldHVybjtpZihlPT09ITEmJnQ9PT0hMCl7Yy5yZW1vdmUobCk7cmV0dXJufWlmKGUhPT0hMHx8dCE9PSExKXJldHVybjtjLmFkZChsKSxhd2FpdCBGKCk7bGV0IG49by52YWx1ZTtpZighbilyZXR1cm47bGV0IHI9WigpO24uY29udGFpbnMocil8fHUobixyKX0pO2Z1bmN0aW9uIGYoZSl7aWYoIXIubG9vcCYmIXIudHJhcHBlZHx8bC5wYXVzZWQpcmV0dXJuO2xldCB0PWUua2V5PT09YFRhYmAmJiFlLmFsdEtleSYmIWUuY3RybEtleSYmIWUubWV0YUtleSxuPVooKTtpZih0JiZuKXtsZXQgdD1lLmN1cnJlbnRUYXJnZXQsW2ksYV09dGModCk7aSYmYT8hZS5zaGlmdEtleSYmbj09PWE/KGUucHJldmVudERlZmF1bHQoKSxyLmxvb3AmJm9jKGkse3NlbGVjdDohMH0pKTplLnNoaWZ0S2V5JiZuPT09aSYmKGUucHJldmVudERlZmF1bHQoKSxyLmxvb3AmJm9jKGEse3NlbGVjdDohMH0pKTpuPT09dCYmZS5wcmV2ZW50RGVmYXVsdCgpfX1yZXR1cm4oZSx0KT0+KFYoKSxNKFAoQikse3JlZl9rZXk6YGN1cnJlbnRSZWZgLHJlZjphLHRhYmluZGV4OmAtMWAsImFzLWNoaWxkIjplLmFzQ2hpbGQsYXM6ZS5hcyxvbktleWRvd246Zn0se2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzLWNoaWxkYCxgYXNgXSkpfX0pLGNjPVtgRW50ZXJgLGAgYF0sbGM9W2BBcnJvd0Rvd25gLGBQYWdlVXBgLGBIb21lYF0sdWM9W2BBcnJvd1VwYCxgUGFnZURvd25gLGBFbmRgXTtbLi4ubGMsLi4udWNdLFsuLi5jY10sWy4uLmNjXTtmdW5jdGlvbiBkYyhlKXtsZXQgdD1aKCk7Zm9yKGxldCBuIG9mIGUpaWYobj09PXR8fChuLmZvY3VzKCksWigpIT09dCkpcmV0dXJufXZhciBmYz1IKHtfX25hbWU6YFRlbGVwb3J0YCxwcm9wczp7dG86e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmZXI6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPXMoe30pLHI9eCgoKT0+dC50bz8/bi50ZWxlcG9ydFRvPy52YWx1ZT8/YGJvZHlgKSxpPWN0KCk7cmV0dXJuKGUsdCk9PlAoaSl8fGUuZm9yY2VNb3VudD8oVigpLE0oX2Use2tleTowLHRvOnIudmFsdWUsZGlzYWJsZWQ6ZS5kaXNhYmxlZCxkZWZlcjplLmRlZmVyfSxbSShlLiRzbG90cyxgZGVmYXVsdGApXSw4LFtgdG9gLGBkaXNhYmxlZGAsYGRlZmVyYF0pKTpMKGB2LWlmYCwhMCl9fSkscGM9YGRhdGEtcmVrYS1jb2xsZWN0aW9uLWl0ZW1gO2Z1bmN0aW9uIG1jKGU9e30pe2xldHtrZXk6dD1gYCxpc1Byb3ZpZGVyOm49ITF9PWUscj1gJHt0fUNvbGxlY3Rpb25Qcm92aWRlcmAsaTtpZihuKXtsZXQgZT1qKG5ldyBNYXApO2k9e2NvbGxlY3Rpb25SZWY6aigpLGl0ZW1NYXA6ZX0seShyLGkpfWVsc2UgaT1PZShyKTtsZXQgYT0oZT0hMSk9PntsZXQgdD1pLmNvbGxlY3Rpb25SZWYudmFsdWU7aWYoIXQpcmV0dXJuW107bGV0IG49QXJyYXkuZnJvbSh0LnF1ZXJ5U2VsZWN0b3JBbGwoYFske3BjfV1gKSkscj1uZXcgTWFwKG4ubWFwKChlLHQpPT5bZSx0XSkpLGE9QXJyYXkuZnJvbShpLml0ZW1NYXAudmFsdWUudmFsdWVzKCkpLnNvcnQoKGUsdCk9PihyLmdldChlLnJlZik/Py0xKS0oci5nZXQodC5yZWYpPz8tMSkpO3JldHVybiBlP2E6YS5maWx0ZXIoZT0+ZS5yZWYuZGF0YXNldC5kaXNhYmxlZCE9PWBgKX0sbz1IKHtuYW1lOmBDb2xsZWN0aW9uU2xvdGAsaW5oZXJpdEF0dHJzOiExLHNldHVwKGUse3Nsb3RzOnQsYXR0cnM6bn0pe2xldHtwcmltaXRpdmVFbGVtZW50OnIsY3VycmVudEVsZW1lbnQ6YX09VnMoKTtyZXR1cm4gTihhLCgpPT57aS5jb2xsZWN0aW9uUmVmLnZhbHVlPWEudmFsdWV9KSwoKT0+dWUoY2Use3JlZjpyLC4uLm59LHQpfX0pLHM9SCh7bmFtZTpgQ29sbGVjdGlvbkl0ZW1gLGluaGVyaXRBdHRyczohMSxwcm9wczp7dmFsdWU6e3ZhbGlkYXRvcjooKT0+ITB9fSxzZXR1cChlLHtzbG90czp0LGF0dHJzOm59KXtsZXR7cHJpbWl0aXZlRWxlbWVudDpyLGN1cnJlbnRFbGVtZW50OmF9PVZzKCk7cmV0dXJuIGQodD0+e2lmKGEudmFsdWUpe2xldCBuPXNlKGEudmFsdWUpO2kuaXRlbU1hcC52YWx1ZS5zZXQobix7cmVmOmEudmFsdWUsdmFsdWU6ZS52YWx1ZX0pLHQoKCk9PmkuaXRlbU1hcC52YWx1ZS5kZWxldGUobikpfX0pLCgpPT51ZShjZSx7Li4ubixbcGNdOmBgLHJlZjpyfSx0KX19KTtyZXR1cm57Z2V0SXRlbXM6YSxyZWFjdGl2ZUl0ZW1zOngoKCk9PkFycmF5LmZyb20oaS5pdGVtTWFwLnZhbHVlLnZhbHVlcygpKSksaXRlbU1hcFNpemU6eCgoKT0+aS5pdGVtTWFwLnZhbHVlLnNpemUpLENvbGxlY3Rpb25TbG90Om8sQ29sbGVjdGlvbkl0ZW06c319dmFyIGhjPUgoe19fbmFtZTpgVmlzdWFsbHlIaWRkZW5gLHByb3BzOntmZWF0dXJlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmBmb2N1c2FibGVgfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtyZXR1cm4oZSx0KT0+KFYoKSxNKFAoQikse2FzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImFyaWEtaGlkZGVuIjplLmZlYXR1cmU9PT1gZm9jdXNhYmxlYHx8ZS5mZWF0dXJlPT09YGZ1bGx5LWhpZGRlbmA/YHRydWVgOnZvaWQgMCwiZGF0YS1oaWRkZW4iOmUuZmVhdHVyZT09PWBmdWxseS1oaWRkZW5gP2BgOnZvaWQgMCx0YWJpbmRleDplLmZlYXR1cmU9PT1gZnVsbHktaGlkZGVuYD9gLTFgOnZvaWQgMCxzdHlsZTp7cG9zaXRpb246YGFic29sdXRlYCxib3JkZXI6MCx3aWR0aDpgMXB4YCxoZWlnaHQ6YDFweGAscGFkZGluZzowLG1hcmdpbjpgLTFweGAsb3ZlcmZsb3c6YGhpZGRlbmAsY2xpcDpgcmVjdCgwLCAwLCAwLCAwKWAsY2xpcFBhdGg6YGluc2V0KDUwJSlgLHdoaXRlU3BhY2U6YG5vd3JhcGAsd29yZFdyYXA6YG5vcm1hbGAsdG9wOmAtMXB4YCxsZWZ0OmAtMXB4YH19LHtkZWZhdWx0OlIoKCk9PltJKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYCxgYXJpYS1oaWRkZW5gLGBkYXRhLWhpZGRlbmAsYHRhYmluZGV4YF0pKX19KSxbZ2MsX2NdPXIoYFBvcHBlclJvb3RgKSx2Yz1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBQb3BwZXJSb290YCxzZXR1cChlKXtsZXQgdD1qKCk7cmV0dXJuIF9jKHthbmNob3I6dCxvbkFuY2hvckNoYW5nZTplPT50LnZhbHVlPWV9KSwoZSx0KT0+SShlLiRzbG90cyxgZGVmYXVsdGApfX0pLHljPUgoe19fbmFtZTpgUG9wcGVyQW5jaG9yYCxwcm9wczp7cmVmZXJlbmNlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2xldCBuPXQse2ZvcndhcmRSZWY6cixjdXJyZW50RWxlbWVudDppfT1lKCksYT1nYygpO3JldHVybiBTZSgoKT0+e2Eub25BbmNob3JDaGFuZ2Uobi5yZWZlcmVuY2U/P2kudmFsdWUpfSksKGUsdCk9PihWKCksTShQKEIpLHtyZWY6UChyKSxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkfSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgYXNgLGBhcy1jaGlsZGBdKSl9fSk7ZnVuY3Rpb24gYmMoZSl7cmV0dXJuIGUhPT1udWxsfWZ1bmN0aW9uIHhjKGUpe3JldHVybntuYW1lOmB0cmFuc2Zvcm1PcmlnaW5gLG9wdGlvbnM6ZSxmbih0KXtsZXR7cGxhY2VtZW50Om4scmVjdHM6cixtaWRkbGV3YXJlRGF0YTppfT10LGE9aS5hcnJvdz8uY2VudGVyT2Zmc2V0IT09MCxvPWE/MDplLmFycm93V2lkdGgscz1hPzA6ZS5hcnJvd0hlaWdodCxbYyxsXT1TYyhuKSx1PXtzdGFydDplLmRpcj09PWBydGxgP2AxMDAlYDpgMCVgLGNlbnRlcjpgNTAlYCxlbmQ6ZS5kaXI9PT1gcnRsYD9gMCVgOmAxMDAlYH1bbF0sZD17c3RhcnQ6YDAlYCxjZW50ZXI6YDUwJWAsZW5kOmAxMDAlYH1bbF0sZj0oaS5hcnJvdz8ueD8/MCkrby8yLHA9KGkuYXJyb3c/Lnk/PzApK3MvMixtPWBgLGg9YGA7cmV0dXJuIGM9PT1gYm90dG9tYD8obT1hP3U6YCR7Zn1weGAsaD1gJHstc31weGApOmM9PT1gdG9wYD8obT1hP3U6YCR7Zn1weGAsaD1gJHtyLmZsb2F0aW5nLmhlaWdodCtzfXB4YCk6Yz09PWByaWdodGA/KG09YCR7LXN9cHhgLGg9YT9kOmAke3B9cHhgKTpjPT09YGxlZnRgJiYobT1gJHtyLmZsb2F0aW5nLndpZHRoK3N9cHhgLGg9YT9kOmAke3B9cHhgKSx7ZGF0YTp7eDptLHk6aH19fX19ZnVuY3Rpb24gU2MoZSl7bGV0W3Qsbj1gY2VudGVyYF09ZS5zcGxpdChgLWApO3JldHVyblt0LG5dfXZhciBDYz1bYHRvcGAsYHJpZ2h0YCxgYm90dG9tYCxgbGVmdGBdLHdjPU1hdGgubWluLFRjPU1hdGgubWF4LEVjPU1hdGgucm91bmQsRGM9TWF0aC5mbG9vcixPYz1lPT4oe3g6ZSx5OmV9KSxrYz17bGVmdDpgcmlnaHRgLHJpZ2h0OmBsZWZ0YCxib3R0b206YHRvcGAsdG9wOmBib3R0b21gfTtmdW5jdGlvbiBBYyhlLHQsbil7cmV0dXJuIFRjKGUsd2ModCxuKSl9ZnVuY3Rpb24gamMoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PWBmdW5jdGlvbmA/ZSh0KTplfWZ1bmN0aW9uIE1jKGUpe3JldHVybiBlLnNwbGl0KGAtYClbMF19ZnVuY3Rpb24gTmMoZSl7cmV0dXJuIGUuc3BsaXQoYC1gKVsxXX1mdW5jdGlvbiBQYyhlKXtyZXR1cm4gZT09PWB4YD9geWA6YHhgfWZ1bmN0aW9uIEZjKGUpe3JldHVybiBlPT09YHlgP2BoZWlnaHRgOmB3aWR0aGB9ZnVuY3Rpb24gSWMoZSl7bGV0IHQ9ZVswXTtyZXR1cm4gdD09PWB0YHx8dD09PWBiYD9geWA6YHhgfWZ1bmN0aW9uIExjKGUpe3JldHVybiBQYyhJYyhlKSl9ZnVuY3Rpb24gUmMoZSx0LG4pe249PT12b2lkIDAmJihuPSExKTtsZXQgcj1OYyhlKSxpPUxjKGUpLGE9RmMoaSksbz1pPT09YHhgP3I9PT0obj9gZW5kYDpgc3RhcnRgKT9gcmlnaHRgOmBsZWZ0YDpyPT09YHN0YXJ0YD9gYm90dG9tYDpgdG9wYDtyZXR1cm4gdC5yZWZlcmVuY2VbYV0+dC5mbG9hdGluZ1thXSYmKG89cWMobykpLFtvLHFjKG8pXX1mdW5jdGlvbiB6YyhlKXtsZXQgdD1xYyhlKTtyZXR1cm5bQmMoZSksdCxCYyh0KV19ZnVuY3Rpb24gQmMoZSl7cmV0dXJuIGUuaW5jbHVkZXMoYHN0YXJ0YCk/ZS5yZXBsYWNlKGBzdGFydGAsYGVuZGApOmUucmVwbGFjZShgZW5kYCxgc3RhcnRgKX12YXIgVmM9W2BsZWZ0YCxgcmlnaHRgXSxIYz1bYHJpZ2h0YCxgbGVmdGBdLFVjPVtgdG9wYCxgYm90dG9tYF0sV2M9W2Bib3R0b21gLGB0b3BgXTtmdW5jdGlvbiBHYyhlLHQsbil7c3dpdGNoKGUpe2Nhc2VgdG9wYDpjYXNlYGJvdHRvbWA6cmV0dXJuIG4/dD9IYzpWYzp0P1ZjOkhjO2Nhc2VgbGVmdGA6Y2FzZWByaWdodGA6cmV0dXJuIHQ/VWM6V2M7ZGVmYXVsdDpyZXR1cm5bXX19ZnVuY3Rpb24gS2MoZSx0LG4scil7bGV0IGk9TmMoZSksYT1HYyhNYyhlKSxuPT09YHN0YXJ0YCxyKTtyZXR1cm4gaSYmKGE9YS5tYXAoZT0+ZStgLWAraSksdCYmKGE9YS5jb25jYXQoYS5tYXAoQmMpKSkpLGF9ZnVuY3Rpb24gcWMoZSl7bGV0IHQ9TWMoZSk7cmV0dXJuIGtjW3RdK2Uuc2xpY2UodC5sZW5ndGgpfWZ1bmN0aW9uIEpjKGUpe3JldHVybnt0b3A6ZS50b3A/PzAscmlnaHQ6ZS5yaWdodD8/MCxib3R0b206ZS5ib3R0b20/PzAsbGVmdDplLmxlZnQ/PzB9fWZ1bmN0aW9uIFljKGUpe3JldHVybiB0eXBlb2YgZT09YG51bWJlcmA/e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfTpKYyhlKX1mdW5jdGlvbiBYYyhlKXtsZXR7eDp0LHk6bix3aWR0aDpyLGhlaWdodDppfT1lO3JldHVybnt3aWR0aDpyLGhlaWdodDppLHRvcDpuLGxlZnQ6dCxyaWdodDp0K3IsYm90dG9tOm4raSx4OnQseTpufX1mdW5jdGlvbiBaYyhlLHQsbil7bGV0e3JlZmVyZW5jZTpyLGZsb2F0aW5nOml9PWUsYT1JYyh0KSxvPUxjKHQpLHM9RmMobyksYz1NYyh0KSxsPWE9PT1geWAsdT1yLngrci53aWR0aC8yLWkud2lkdGgvMixkPXIueStyLmhlaWdodC8yLWkuaGVpZ2h0LzIsZj1yW3NdLzItaVtzXS8yLHA7c3dpdGNoKGMpe2Nhc2VgdG9wYDpwPXt4OnUseTpyLnktaS5oZWlnaHR9O2JyZWFrO2Nhc2VgYm90dG9tYDpwPXt4OnUseTpyLnkrci5oZWlnaHR9O2JyZWFrO2Nhc2VgcmlnaHRgOnA9e3g6ci54K3Iud2lkdGgseTpkfTticmVhaztjYXNlYGxlZnRgOnA9e3g6ci54LWkud2lkdGgseTpkfTticmVhaztkZWZhdWx0OnA9e3g6ci54LHk6ci55fX1sZXQgbT1OYyh0KTtyZXR1cm4gbSYmKHBbb10rPWYqKG09PT1gZW5kYD8xOi0xKSoobiYmbD8tMToxKSkscH1hc3luYyBmdW5jdGlvbiBRYyhlLHQpe3Q9PT12b2lkIDAmJih0PXt9KTtsZXR7eDpuLHk6cixwbGF0Zm9ybTppLHJlY3RzOmEsZWxlbWVudHM6byxzdHJhdGVneTpzfT1lLHtib3VuZGFyeTpjPWBjbGlwcGluZ0FuY2VzdG9yc2Ascm9vdEJvdW5kYXJ5Omw9YHZpZXdwb3J0YCxlbGVtZW50Q29udGV4dDp1PWBmbG9hdGluZ2AsYWx0Qm91bmRhcnk6ZD0hMSxwYWRkaW5nOmY9MH09amModCxlKSxwPVljKGYpLG09b1tkP3U9PT1gZmxvYXRpbmdgP2ByZWZlcmVuY2VgOmBmbG9hdGluZ2A6dV0saD1YYyhhd2FpdCBpLmdldENsaXBwaW5nUmVjdCh7ZWxlbWVudDphd2FpdChpLmlzRWxlbWVudD09bnVsbD92b2lkIDA6aS5pc0VsZW1lbnQobSkpPz8hMD9tOm0uY29udGV4dEVsZW1lbnR8fGF3YWl0KGkuZ2V0RG9jdW1lbnRFbGVtZW50PT1udWxsP3ZvaWQgMDppLmdldERvY3VtZW50RWxlbWVudChvLmZsb2F0aW5nKSksYm91bmRhcnk6Yyxyb290Qm91bmRhcnk6bCxzdHJhdGVneTpzfSkpLGc9dT09PWBmbG9hdGluZ2A/e3g6bix5OnIsd2lkdGg6YS5mbG9hdGluZy53aWR0aCxoZWlnaHQ6YS5mbG9hdGluZy5oZWlnaHR9OmEucmVmZXJlbmNlLF89YXdhaXQoaS5nZXRPZmZzZXRQYXJlbnQ9PW51bGw/dm9pZCAwOmkuZ2V0T2Zmc2V0UGFyZW50KG8uZmxvYXRpbmcpKSx2PWF3YWl0KGkuaXNFbGVtZW50PT1udWxsP3ZvaWQgMDppLmlzRWxlbWVudChfKSkmJmF3YWl0KGkuZ2V0U2NhbGU9PW51bGw/dm9pZCAwOmkuZ2V0U2NhbGUoXykpfHx7eDoxLHk6MX0seT1YYyhpLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGkuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOm8scmVjdDpnLG9mZnNldFBhcmVudDpfLHN0cmF0ZWd5OnN9KTpnKTtyZXR1cm57dG9wOihoLnRvcC15LnRvcCtwLnRvcCkvdi55LGJvdHRvbTooeS5ib3R0b20taC5ib3R0b20rcC5ib3R0b20pL3YueSxsZWZ0OihoLmxlZnQteS5sZWZ0K3AubGVmdCkvdi54LHJpZ2h0Oih5LnJpZ2h0LWgucmlnaHQrcC5yaWdodCkvdi54fX12YXIgJGM9NTAsZWw9YXN5bmMoZSx0LG4pPT57bGV0e3BsYWNlbWVudDpyPWBib3R0b21gLHN0cmF0ZWd5Omk9YGFic29sdXRlYCxtaWRkbGV3YXJlOmE9W10scGxhdGZvcm06b309bixzPW8uZGV0ZWN0T3ZlcmZsb3c/bzp7Li4ubyxkZXRlY3RPdmVyZmxvdzpRY30sYz1hd2FpdChvLmlzUlRMPT1udWxsP3ZvaWQgMDpvLmlzUlRMKHQpKSxsPWF3YWl0IG8uZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Oml9KSx7eDp1LHk6ZH09WmMobCxyLGMpLGY9cixwPTAsbT17fTtmb3IobGV0IG49MDtuPGEubGVuZ3RoO24rKyl7bGV0IGg9YVtuXTtpZighaCljb250aW51ZTtsZXR7bmFtZTpnLGZuOl99PWgse3g6dix5LGRhdGE6YixyZXNldDp4fT1hd2FpdCBfKHt4OnUseTpkLGluaXRpYWxQbGFjZW1lbnQ6cixwbGFjZW1lbnQ6ZixzdHJhdGVneTppLG1pZGRsZXdhcmVEYXRhOm0scmVjdHM6bCxwbGF0Zm9ybTpzLGVsZW1lbnRzOntyZWZlcmVuY2U6ZSxmbG9hdGluZzp0fX0pO3U9dj8/dSxkPXk/P2QsbVtnXT17Li4ubVtnXSwuLi5ifSx4JiZwPCRjJiYocCsrLHR5cGVvZiB4PT1gb2JqZWN0YCYmKHgucGxhY2VtZW50JiYoZj14LnBsYWNlbWVudCkseC5yZWN0cyYmKGw9eC5yZWN0cz09PSEwP2F3YWl0IG8uZ2V0RWxlbWVudFJlY3RzKHtyZWZlcmVuY2U6ZSxmbG9hdGluZzp0LHN0cmF0ZWd5Oml9KTp4LnJlY3RzKSx7eDp1LHk6ZH09WmMobCxmLGMpKSxuPS0xKX1yZXR1cm57eDp1LHk6ZCxwbGFjZW1lbnQ6ZixzdHJhdGVneTppLG1pZGRsZXdhcmVEYXRhOm19fSx0bD1lPT4oe25hbWU6YGFycm93YCxvcHRpb25zOmUsYXN5bmMgZm4odCl7bGV0e3g6bix5OnIscGxhY2VtZW50OmkscmVjdHM6YSxwbGF0Zm9ybTpvLGVsZW1lbnRzOnMsbWlkZGxld2FyZURhdGE6Y309dCx7ZWxlbWVudDpsLHBhZGRpbmc6dT0wfT1qYyhlLHQpfHx7fTtpZihsPT1udWxsKXJldHVybnt9O2xldCBkPVljKHUpLGY9e3g6bix5OnJ9LHA9TGMoaSksbT1GYyhwKSxoPWF3YWl0IG8uZ2V0RGltZW5zaW9ucyhsKSxnPXA9PT1geWAsXz1nP2B0b3BgOmBsZWZ0YCx2PWc/YGJvdHRvbWA6YHJpZ2h0YCx5PWc/YGNsaWVudEhlaWdodGA6YGNsaWVudFdpZHRoYCxiPWEucmVmZXJlbmNlW21dK2EucmVmZXJlbmNlW3BdLWZbcF0tYS5mbG9hdGluZ1ttXSx4PWZbcF0tYS5yZWZlcmVuY2VbcF0sUz1hd2FpdChvLmdldE9mZnNldFBhcmVudD09bnVsbD92b2lkIDA6by5nZXRPZmZzZXRQYXJlbnQobCkpLEM9Uz9TW3ldOjA7KCFDfHwhYXdhaXQoby5pc0VsZW1lbnQ9PW51bGw/dm9pZCAwOm8uaXNFbGVtZW50KFMpKSkmJihDPXMuZmxvYXRpbmdbeV18fGEuZmxvYXRpbmdbbV0pO2xldCB3PWIvMi14LzIsVD1DLzItaFttXS8yLTEsRT13YyhkW19dLFQpLEQ9d2MoZFt2XSxUKSxPPUMtaFttXS1ELGs9Qy8yLWhbbV0vMit3LEE9QWMoRSxrLE8pLGVlPSFjLmFycm93JiZOYyhpKSE9bnVsbCYmayE9PUEmJmEucmVmZXJlbmNlW21dLzItKGs8RT9FOkQpLWhbbV0vMjwwLGo9ZWU/azxFP2stRTprLU86MDtyZXR1cm57W3BdOmZbcF0raixkYXRhOntbcF06QSxjZW50ZXJPZmZzZXQ6ay1BLWosLi4uZWUmJnthbGlnbm1lbnRPZmZzZXQ6an19LHJlc2V0OmVlfX19KSxubD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9e30pLHtuYW1lOmBmbGlwYCxvcHRpb25zOmUsYXN5bmMgZm4odCl7dmFyIG47bGV0e3BsYWNlbWVudDpyLG1pZGRsZXdhcmVEYXRhOmkscmVjdHM6YSxpbml0aWFsUGxhY2VtZW50Om8scGxhdGZvcm06cyxlbGVtZW50czpjfT10LHttYWluQXhpczpsPSEwLGNyb3NzQXhpczp1PSEwLGZhbGxiYWNrUGxhY2VtZW50czpkLGZhbGxiYWNrU3RyYXRlZ3k6Zj1gYmVzdEZpdGAsZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbjpwPWBub25lYCxmbGlwQWxpZ25tZW50Om09ITAsLi4uaH09amMoZSx0KTtpZigobj1pLmFycm93KSE9bnVsbCYmbi5hbGlnbm1lbnRPZmZzZXQpcmV0dXJue307bGV0IGc9TWMociksXz1JYyhvKSx2PU1jKG8pPT09byx5PWF3YWl0KHMuaXNSVEw9PW51bGw/dm9pZCAwOnMuaXNSVEwoYy5mbG9hdGluZykpLGI9ZHx8KHZ8fCFtP1txYyhvKV06emMobykpLHg9cCE9PWBub25lYDshZCYmeCYmYi5wdXNoKC4uLktjKG8sbSxwLHkpKTtsZXQgUz1bbywuLi5iXSxDPWF3YWl0IHMuZGV0ZWN0T3ZlcmZsb3codCxoKSx3PVtdLFQ9aS5mbGlwPy5vdmVyZmxvd3N8fFtdO2lmKGwmJncucHVzaChDW2ddKSx1KXtsZXQgZT1SYyhyLGEseSk7dy5wdXNoKENbZVswXV0sQ1tlWzFdXSl9aWYoVD1bLi4uVCx7cGxhY2VtZW50OnIsb3ZlcmZsb3dzOnd9XSwhdy5ldmVyeShlPT5lPD0wKSl7bGV0IGU9KGkuZmxpcD8uaW5kZXh8fDApKzEsdD1TW2VdO2lmKHQmJih1IT09YGFsaWdubWVudGB8fF89PT1JYyh0KXx8VC5ldmVyeShlPT5JYyhlLnBsYWNlbWVudCkhPT1ffHxlLm92ZXJmbG93c1swXT4wKSkpcmV0dXJue2RhdGE6e2luZGV4OmUsb3ZlcmZsb3dzOlR9LHJlc2V0OntwbGFjZW1lbnQ6dH19O2xldCBuPVQuZmlsdGVyKGU9PmUub3ZlcmZsb3dzWzBdPD0wKS5zb3J0KChlLHQpPT5lLm92ZXJmbG93c1sxXS10Lm92ZXJmbG93c1sxXSlbMF0/LnBsYWNlbWVudDtpZighbilzd2l0Y2goZil7Y2FzZWBiZXN0Rml0YDp7bGV0IGU9VC5maWx0ZXIoZT0+e2lmKHgpe2xldCB0PUljKGUucGxhY2VtZW50KTtyZXR1cm4gdD09PV98fHQ9PT1geWB9cmV0dXJuITB9KS5tYXAoZT0+W2UucGxhY2VtZW50LGUub3ZlcmZsb3dzLmZpbHRlcihlPT5lPjApLnJlZHVjZSgoZSx0KT0+ZSt0LDApXSkuc29ydCgoZSx0KT0+ZVsxXS10WzFdKVswXT8uWzBdO2UmJihuPWUpO2JyZWFrfWNhc2VgaW5pdGlhbFBsYWNlbWVudGA6bj1vfWlmKHIhPT1uKXJldHVybntyZXNldDp7cGxhY2VtZW50Om59fX1yZXR1cm57fX19fTtmdW5jdGlvbiBybChlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBpbChlKXtyZXR1cm4gQ2Muc29tZSh0PT5lW3RdPj0wKX12YXIgYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7bmFtZTpgaGlkZWAsb3B0aW9uczplLGFzeW5jIGZuKHQpe2xldHtyZWN0czpuLHBsYXRmb3JtOnJ9PXQse3N0cmF0ZWd5Omk9YHJlZmVyZW5jZUhpZGRlbmAsLi4uYX09amMoZSx0KTtzd2l0Y2goaSl7Y2FzZWByZWZlcmVuY2VIaWRkZW5gOntsZXQgZT1ybChhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmEsZWxlbWVudENvbnRleHQ6YHJlZmVyZW5jZWB9KSxuLnJlZmVyZW5jZSk7cmV0dXJue2RhdGE6e3JlZmVyZW5jZUhpZGRlbk9mZnNldHM6ZSxyZWZlcmVuY2VIaWRkZW46aWwoZSl9fX1jYXNlYGVzY2FwZWRgOntsZXQgZT1ybChhd2FpdCByLmRldGVjdE92ZXJmbG93KHQsey4uLmEsYWx0Qm91bmRhcnk6ITB9KSxuLmZsb2F0aW5nKTtyZXR1cm57ZGF0YTp7ZXNjYXBlZE9mZnNldHM6ZSxlc2NhcGVkOmlsKGUpfX19ZGVmYXVsdDpyZXR1cm57fX19fX0sb2w9bmV3IFNldChbYGxlZnRgLGB0b3BgXSk7YXN5bmMgZnVuY3Rpb24gc2woZSx0KXtsZXR7cGxhY2VtZW50Om4scGxhdGZvcm06cixlbGVtZW50czppfT1lLGE9YXdhaXQoci5pc1JUTD09bnVsbD92b2lkIDA6ci5pc1JUTChpLmZsb2F0aW5nKSksbz1NYyhuKSxzPU5jKG4pLGM9SWMobik9PT1geWAsbD1vbC5oYXMobyk/LTE6MSx1PWEmJmM/LTE6MSxkPWpjKHQsZSkse21haW5BeGlzOmYsY3Jvc3NBeGlzOnAsYWxpZ25tZW50QXhpczptfT10eXBlb2YgZD09YG51bWJlcmA/e21haW5BeGlzOmQsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6ZC5tYWluQXhpc3x8MCxjcm9zc0F4aXM6ZC5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpkLmFsaWdubWVudEF4aXN9O3JldHVybiBzJiZ0eXBlb2YgbT09YG51bWJlcmAmJihwPXM9PT1gZW5kYD9tKi0xOm0pLGM/e3g6cCp1LHk6ZipsfTp7eDpmKmwseTpwKnV9fXZhciBjbD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PXZvaWQgMCYmKGU9MCkse25hbWU6YG9mZnNldGAsb3B0aW9uczplLGFzeW5jIGZuKHQpe3ZhciBuO2xldHt4OnIseTppLHBsYWNlbWVudDphLG1pZGRsZXdhcmVEYXRhOm99PXQscz1hd2FpdCBzbCh0LGUpO3JldHVybiBhPT09by5vZmZzZXQ/LnBsYWNlbWVudCYmKG49by5hcnJvdykhPW51bGwmJm4uYWxpZ25tZW50T2Zmc2V0P3t9Ont4OnIrcy54LHk6aStzLnksZGF0YTp7Li4ucyxwbGFjZW1lbnQ6YX19fX19LGxsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6YHNoaWZ0YCxvcHRpb25zOmUsYXN5bmMgZm4odCl7bGV0e3g6bix5OnIscGxhY2VtZW50OmkscGxhdGZvcm06YX09dCx7bWFpbkF4aXM6bz0hMCxjcm9zc0F4aXM6cz0hMSxsaW1pdGVyOmM9e2ZuOmU9PntsZXR7eDp0LHk6bn09ZTtyZXR1cm57eDp0LHk6bn19fSwuLi5sfT1qYyhlLHQpLHU9e3g6bix5OnJ9LGQ9YXdhaXQgYS5kZXRlY3RPdmVyZmxvdyh0LGwpLGY9SWMoaSkscD1QYyhmKSxtPXVbcF0saD11W2ZdLGc9KGUsdCk9PkFjKHQrZFtlPT09YHlgP2B0b3BgOmBsZWZ0YF0sdCx0LWRbZT09PWB5YD9gYm90dG9tYDpgcmlnaHRgXSk7byYmKG09ZyhwLG0pKSxzJiYoaD1nKGYsaCkpO2xldCBfPWMuZm4oey4uLnQsW3BdOm0sW2ZdOmh9KTtyZXR1cm57Li4uXyxkYXRhOnt4Ol8ueC1uLHk6Xy55LXIsZW5hYmxlZDp7W3BdOm8sW2ZdOnN9fX19fX0sdWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT12b2lkIDAmJihlPXt9KSx7b3B0aW9uczplLGZuKHQpe2xldHt4Om4seTpyLHBsYWNlbWVudDppLHJlY3RzOmEsbWlkZGxld2FyZURhdGE6b309dCx7b2Zmc2V0OnM9MCxtYWluQXhpczpjPSEwLGNyb3NzQXhpczpsPSEwfT1qYyhlLHQpLHU9e3g6bix5OnJ9LGQ9SWMoaSksZj1QYyhkKSxwPXVbZl0sbT11W2RdLGg9amMocyx0KSxnPXR5cGVvZiBoPT1gbnVtYmVyYD97bWFpbkF4aXM6aCxjcm9zc0F4aXM6MH06e21haW5BeGlzOmgubWFpbkF4aXM/PzAsY3Jvc3NBeGlzOmguY3Jvc3NBeGlzPz8wfTtpZihjKXtsZXQgZT1mPT09YHlgP2BoZWlnaHRgOmB3aWR0aGAsdD1hLnJlZmVyZW5jZVtmXS1hLmZsb2F0aW5nW2VdK2cubWFpbkF4aXMsbj1hLnJlZmVyZW5jZVtmXSthLnJlZmVyZW5jZVtlXS1nLm1haW5BeGlzO3A8dD9wPXQ6cD5uJiYocD1uKX1pZihsKXtsZXQgZT1mPT09YHlgP2B3aWR0aGA6YGhlaWdodGAsdD1vbC5oYXMoTWMoaSkpLG49YS5yZWZlcmVuY2VbZF0tYS5mbG9hdGluZ1tlXSsodCYmby5vZmZzZXQ/LltkXXx8MCkrKHQ/MDpnLmNyb3NzQXhpcykscj1hLnJlZmVyZW5jZVtkXSthLnJlZmVyZW5jZVtlXSsodD8wOm8ub2Zmc2V0Py5bZF18fDApLSh0P2cuY3Jvc3NBeGlzOjApO208bj9tPW46bT5yJiYobT1yKX1yZXR1cm57W2ZdOnAsW2RdOm19fX19LGRsPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09dm9pZCAwJiYoZT17fSkse25hbWU6YHNpemVgLG9wdGlvbnM6ZSxhc3luYyBmbih0KXtsZXR7cGxhY2VtZW50Om4scmVjdHM6cixwbGF0Zm9ybTppLGVsZW1lbnRzOmF9PXQse2FwcGx5Om89KCk9Pnt9LC4uLnN9PWpjKGUsdCksYz1hd2FpdCBpLmRldGVjdE92ZXJmbG93KHQscyksbD1NYyhuKSx1PU5jKG4pLGQ9SWMobik9PT1geWAse3dpZHRoOmYsaGVpZ2h0OnB9PXIuZmxvYXRpbmcsbSxoO2w9PT1gdG9wYHx8bD09PWBib3R0b21gPyhtPWwsaD11PT09KGF3YWl0KGkuaXNSVEw9PW51bGw/dm9pZCAwOmkuaXNSVEwoYS5mbG9hdGluZykpP2BzdGFydGA6YGVuZGApP2BsZWZ0YDpgcmlnaHRgKTooaD1sLG09dT09PWBlbmRgP2B0b3BgOmBib3R0b21gKTtsZXQgZz1wLWMudG9wLWMuYm90dG9tLF89Zi1jLmxlZnQtYy5yaWdodCx2PXdjKHAtY1ttXSxnKSx5PXdjKGYtY1toXSxfKSxiPXQubWlkZGxld2FyZURhdGEuc2hpZnQseD0hYixTPXYsQz15O2IhPW51bGwmJmIuZW5hYmxlZC54JiYoQz1fKSxiIT1udWxsJiZiLmVuYWJsZWQueSYmKFM9ZykseCYmIXUmJihkP0M9Zi0yKlRjKGMubGVmdCxjLnJpZ2h0KTpTPXAtMipUYyhjLnRvcCxjLmJvdHRvbSkpLGF3YWl0IG8oey4uLnQsYXZhaWxhYmxlV2lkdGg6QyxhdmFpbGFibGVIZWlnaHQ6U30pO2xldCB3PWF3YWl0IGkuZ2V0RGltZW5zaW9ucyhhLmZsb2F0aW5nKTtyZXR1cm4gZiE9PXcud2lkdGh8fHAhPT13LmhlaWdodD97cmVzZXQ6e3JlY3RzOiEwfX06e319fX07ZnVuY3Rpb24gZmwoKXtyZXR1cm4gdHlwZW9mIHdpbmRvdzxgdWB9ZnVuY3Rpb24gcGwoZSl7cmV0dXJuIGhsKGUpPyhlLm5vZGVOYW1lfHxgYCkudG9Mb3dlckNhc2UoKTpgI2RvY3VtZW50YH1mdW5jdGlvbiAkKGUpe3ZhciB0O3JldHVybihlPT1udWxsfHwodD1lLm93bmVyRG9jdW1lbnQpPT1udWxsP3ZvaWQgMDp0LmRlZmF1bHRWaWV3KXx8d2luZG93fWZ1bmN0aW9uIG1sKGUpe3JldHVybigoaGwoZSk/ZS5vd25lckRvY3VtZW50OmUuZG9jdW1lbnQpfHx3aW5kb3cuZG9jdW1lbnQpPy5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gaGwoZSl7cmV0dXJuIGZsKCk/ZSBpbnN0YW5jZW9mIE5vZGV8fGUgaW5zdGFuY2VvZiAkKGUpLk5vZGU6ITF9ZnVuY3Rpb24gZ2woZSl7cmV0dXJuIGZsKCk/ZSBpbnN0YW5jZW9mIEVsZW1lbnR8fGUgaW5zdGFuY2VvZiAkKGUpLkVsZW1lbnQ6ITF9ZnVuY3Rpb24gX2woZSl7cmV0dXJuIGZsKCk/ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fHxlIGluc3RhbmNlb2YgJChlKS5IVE1MRWxlbWVudDohMX1mdW5jdGlvbiB2bChlKXtyZXR1cm4hZmwoKXx8dHlwZW9mIFNoYWRvd1Jvb3Q+YHVgPyExOmUgaW5zdGFuY2VvZiBTaGFkb3dSb290fHxlIGluc3RhbmNlb2YgJChlKS5TaGFkb3dSb290fWZ1bmN0aW9uIHlsKGUpe2xldHtvdmVyZmxvdzp0LG92ZXJmbG93WDpuLG92ZXJmbG93WTpyLGRpc3BsYXk6aX09QWwoZSk7cmV0dXJuL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3QodCtyK24pJiZpIT09YGlubGluZWAmJmkhPT1gY29udGVudHNgfWZ1bmN0aW9uIGJsKGUpe3JldHVybi9eKHRhYmxlfHRkfHRoKSQvLnRlc3QocGwoZSkpfWZ1bmN0aW9uIHhsKGUpe3RyeXtpZihlLm1hdGNoZXMoYDpwb3BvdmVyLW9wZW5gKSlyZXR1cm4hMH1jYXRjaHt9dHJ5e3JldHVybiBlLm1hdGNoZXMoYDptb2RhbGApfWNhdGNoe3JldHVybiExfX12YXIgU2w9L3RyYW5zZm9ybXx0cmFuc2xhdGV8c2NhbGV8cm90YXRlfHBlcnNwZWN0aXZlfGZpbHRlci8sQ2w9L3BhaW50fGxheW91dHxzdHJpY3R8Y29udGVudC8sd2w9ZT0+ISFlJiZlIT09YG5vbmVgLFRsO2Z1bmN0aW9uIEVsKGUpe2xldCB0PWdsKGUpP0FsKGUpOmU7cmV0dXJuIHdsKHQudHJhbnNmb3JtKXx8d2wodC50cmFuc2xhdGUpfHx3bCh0LnNjYWxlKXx8d2wodC5yb3RhdGUpfHx3bCh0LnBlcnNwZWN0aXZlKXx8IU9sKCkmJih3bCh0LmJhY2tkcm9wRmlsdGVyKXx8d2wodC5maWx0ZXIpKXx8U2wudGVzdCh0LndpbGxDaGFuZ2V8fGBgKXx8Q2wudGVzdCh0LmNvbnRhaW58fGBgKX1mdW5jdGlvbiBEbChlKXtsZXQgdD1NbChlKTtmb3IoO19sKHQpJiYha2wodCk7KXtpZihFbCh0KSlyZXR1cm4gdDtpZih4bCh0KSlyZXR1cm4gbnVsbDt0PU1sKHQpfXJldHVybiBudWxsfWZ1bmN0aW9uIE9sKCl7cmV0dXJuIFRsPz89dHlwZW9mIENTUzxgdWAmJkNTUy5zdXBwb3J0cyYmQ1NTLnN1cHBvcnRzKGAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcmAsYG5vbmVgKSxUbH1mdW5jdGlvbiBrbChlKXtyZXR1cm4vXihodG1sfGJvZHl8I2RvY3VtZW50KSQvLnRlc3QocGwoZSkpfWZ1bmN0aW9uIEFsKGUpe3JldHVybiAkKGUpLmdldENvbXB1dGVkU3R5bGUoZSl9ZnVuY3Rpb24gamwoZSl7cmV0dXJuIGdsKGUpP3tzY3JvbGxMZWZ0OmUuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6ZS5zY3JvbGxUb3B9OntzY3JvbGxMZWZ0OmUuc2Nyb2xsWCxzY3JvbGxUb3A6ZS5zY3JvbGxZfX1mdW5jdGlvbiBNbChlKXtpZihwbChlKT09PWBodG1sYClyZXR1cm4gZTtsZXQgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHx2bChlKSYmZS5ob3N0fHxtbChlKTtyZXR1cm4gdmwodCk/dC5ob3N0OnR9ZnVuY3Rpb24gTmwoZSl7bGV0IHQ9TWwoZSk7cmV0dXJuIGtsKHQpPyhlLm93bmVyRG9jdW1lbnR8fGUpLmJvZHk6X2wodCkmJnlsKHQpP3Q6TmwodCl9ZnVuY3Rpb24gUGwoZSx0LG4pe3Q9PT12b2lkIDAmJih0PVtdKSxuPT09dm9pZCAwJiYobj0hMCk7bGV0IHI9TmwoZSksaT1yPT09ZS5vd25lckRvY3VtZW50Py5ib2R5LGE9JChyKTtpZihpKXtsZXQgZT1GbChhKTtyZXR1cm4gdC5jb25jYXQoYSxhLnZpc3VhbFZpZXdwb3J0fHxbXSx5bChyKT9yOltdLGUmJm4/UGwoZSk6W10pfXJldHVybiB0LmNvbmNhdChyLFBsKHIsW10sbikpfWZ1bmN0aW9uIEZsKGUpe3JldHVybiBlLnBhcmVudCYmT2JqZWN0LmdldFByb3RvdHlwZU9mKGUucGFyZW50KT9lLmZyYW1lRWxlbWVudDpudWxsfWZ1bmN0aW9uIElsKGUpe2xldCB0PUFsKGUpLG49cGFyc2VGbG9hdCh0LndpZHRoKXx8MCxyPXBhcnNlRmxvYXQodC5oZWlnaHQpfHwwLGk9X2woZSksYT1pP2Uub2Zmc2V0V2lkdGg6bixvPWk/ZS5vZmZzZXRIZWlnaHQ6cixzPUVjKG4pIT09YXx8RWMocikhPT1vO3JldHVybiBzJiYobj1hLHI9bykse3dpZHRoOm4saGVpZ2h0OnIsJDpzfX1mdW5jdGlvbiBMbChlKXtyZXR1cm4gZ2woZSk/ZTplLmNvbnRleHRFbGVtZW50fWZ1bmN0aW9uIFJsKGUpe2xldCB0PUxsKGUpO2lmKCFfbCh0KSlyZXR1cm4gT2MoMSk7bGV0IG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7d2lkdGg6cixoZWlnaHQ6aSwkOmF9PUlsKHQpLG89KGE/RWMobi53aWR0aCk6bi53aWR0aCkvcixzPShhP0VjKG4uaGVpZ2h0KTpuLmhlaWdodCkvaTtyZXR1cm4oIW98fCFOdW1iZXIuaXNGaW5pdGUobykpJiYobz0xKSwoIXN8fCFOdW1iZXIuaXNGaW5pdGUocykpJiYocz0xKSx7eDpvLHk6c319dmFyIHpsPU9jKDApO2Z1bmN0aW9uIEJsKGUpe2xldCB0PSQoZSk7cmV0dXJuIU9sKCl8fCF0LnZpc3VhbFZpZXdwb3J0P3psOnt4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfX1mdW5jdGlvbiBWbChlLHQsbil7cmV0dXJuIHQ9PT12b2lkIDAmJih0PSExKSwhIW4mJnQmJm49PT0kKGUpfWZ1bmN0aW9uIEhsKGUsdCxuLHIpe3Q9PT12b2lkIDAmJih0PSExKSxuPT09dm9pZCAwJiYobj0hMSk7bGV0IGk9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxhPUxsKGUpLG89T2MoMSk7dCYmKHI/Z2wocikmJihvPVJsKHIpKTpvPVJsKGUpKTtsZXQgcz1WbChhLG4scik/QmwoYSk6T2MoMCksYz0oaS5sZWZ0K3MueCkvby54LGw9KGkudG9wK3MueSkvby55LHU9aS53aWR0aC9vLngsZD1pLmhlaWdodC9vLnk7aWYoYSYmcil7bGV0IGU9JChhKSx0PWdsKHIpPyQocik6cixuPWUsaT1GbChuKTtmb3IoO2kmJnQhPT1uOyl7bGV0IGU9UmwoaSksdD1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9QWwoaSksYT10LmxlZnQrKGkuY2xpZW50TGVmdCtwYXJzZUZsb2F0KHIucGFkZGluZ0xlZnQpKSplLngsbz10LnRvcCsoaS5jbGllbnRUb3ArcGFyc2VGbG9hdChyLnBhZGRpbmdUb3ApKSplLnk7Yyo9ZS54LGwqPWUueSx1Kj1lLngsZCo9ZS55LGMrPWEsbCs9byxuPSQoaSksaT1GbChuKX19cmV0dXJuIFhjKHt3aWR0aDp1LGhlaWdodDpkLHg6Yyx5Omx9KX1mdW5jdGlvbiBVbChlLHQpe2xldCBuPWpsKGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ/dC5sZWZ0K246SGwobWwoZSkpLmxlZnQrbn1mdW5jdGlvbiBXbChlLHQpe2xldCBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue3g6bi5sZWZ0K3Quc2Nyb2xsTGVmdC1VbChlLG4pLHk6bi50b3ArdC5zY3JvbGxUb3B9fWZ1bmN0aW9uIEdsKGUpe2xldHtlbGVtZW50czp0LHJlY3Q6bixvZmZzZXRQYXJlbnQ6cixzdHJhdGVneTppfT1lLGE9aT09PWBmaXhlZGAsbz1tbChyKSxzPXQ/eGwodC5mbG9hdGluZyk6ITE7aWYocj09PW98fHMmJmEpcmV0dXJuIG47bGV0IGM9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sbD1PYygxKSx1PU9jKDApLGQ9X2wocik7aWYoKGR8fCFhKSYmKChwbChyKSE9PWBib2R5YHx8eWwobykpJiYoYz1qbChyKSksZCkpe2xldCBlPUhsKHIpO2w9UmwociksdS54PWUueCtyLmNsaWVudExlZnQsdS55PWUueStyLmNsaWVudFRvcH1sZXQgZj1vJiYhZCYmIWE/V2wobyxjKTpPYygwKTtyZXR1cm57d2lkdGg6bi53aWR0aCpsLngsaGVpZ2h0Om4uaGVpZ2h0KmwueSx4Om4ueCpsLngtYy5zY3JvbGxMZWZ0KmwueCt1LngrZi54LHk6bi55KmwueS1jLnNjcm9sbFRvcCpsLnkrdS55K2YueX19ZnVuY3Rpb24gS2woZSl7cmV0dXJuIGUuZ2V0Q2xpZW50UmVjdHM/QXJyYXkuZnJvbShlLmdldENsaWVudFJlY3RzKCkpOltdfWZ1bmN0aW9uIHFsKGUpe2xldCB0PWpsKGUpLG49ZS5vd25lckRvY3VtZW50LmJvZHkscj1UYyhlLnNjcm9sbFdpZHRoLGUuY2xpZW50V2lkdGgsbi5zY3JvbGxXaWR0aCxuLmNsaWVudFdpZHRoKSxpPVRjKGUuc2Nyb2xsSGVpZ2h0LGUuY2xpZW50SGVpZ2h0LG4uc2Nyb2xsSGVpZ2h0LG4uY2xpZW50SGVpZ2h0KSxhPS10LnNjcm9sbExlZnQrVWwoZSksbz0tdC5zY3JvbGxUb3A7cmV0dXJuIEFsKG4pLmRpcmVjdGlvbj09PWBydGxgJiYoYSs9VGMoZS5jbGllbnRXaWR0aCxuLmNsaWVudFdpZHRoKS1yKSx7d2lkdGg6cixoZWlnaHQ6aSx4OmEseTpvfX12YXIgSmw9MjU7ZnVuY3Rpb24gWWwoZSx0LG4pe249PT12b2lkIDAmJihuPWB2aWV3cG9ydGApO2xldCByPW49PT1gbGF5b3V0Vmlld3BvcnRgLGk9JChlKSxhPW1sKGUpLG89aS52aXN1YWxWaWV3cG9ydCxzPWEuY2xpZW50V2lkdGgsYz1hLmNsaWVudEhlaWdodCxsPTAsdT0wO2lmKG8pe2xldCBlPSFPbCgpfHx0PT09YGZpeGVkYDtyP2V8fChsPS1vLm9mZnNldExlZnQsdT0tby5vZmZzZXRUb3ApOihzPW8ud2lkdGgsYz1vLmhlaWdodCxlJiYobD1vLm9mZnNldExlZnQsdT1vLm9mZnNldFRvcCkpfWlmKFVsKGEpPD0wKXtsZXQgZT1hLm93bmVyRG9jdW1lbnQsdD1lLmJvZHksbj1nZXRDb21wdXRlZFN0eWxlKHQpLHI9ZS5jb21wYXRNb2RlPT09YENTUzFDb21wYXRgJiZwYXJzZUZsb2F0KG4ubWFyZ2luTGVmdCkrcGFyc2VGbG9hdChuLm1hcmdpblJpZ2h0KXx8MCxpPU1hdGguYWJzKGEuY2xpZW50V2lkdGgtdC5jbGllbnRXaWR0aC1yKSxvPWdldENvbXB1dGVkU3R5bGUoYSkuc2Nyb2xsYmFyR3V0dGVyPT09YHN0YWJsZSBib3RoLWVkZ2VzYD9pLzI6aTtvPD1KbCYmKHMtPW8pfXJldHVybnt3aWR0aDpzLGhlaWdodDpjLHg6bCx5OnV9fWZ1bmN0aW9uIFhsKGUsdCl7bGV0IG49SGwoZSwhMCx0PT09YGZpeGVkYCkscj1uLnRvcCtlLmNsaWVudFRvcCxpPW4ubGVmdCtlLmNsaWVudExlZnQsYT1SbChlKTtyZXR1cm57d2lkdGg6ZS5jbGllbnRXaWR0aCphLngsaGVpZ2h0OmUuY2xpZW50SGVpZ2h0KmEueSx4OmkqYS54LHk6ciphLnl9fWZ1bmN0aW9uIFpsKGUsdCxuKXtsZXQgcjtpZih0PT09YHZpZXdwb3J0YHx8dD09PWBsYXlvdXRWaWV3cG9ydGApcj1ZbChlLG4sdCk7ZWxzZSBpZih0PT09YGRvY3VtZW50YClyPXFsKG1sKGUpKTtlbHNlIGlmKGdsKHQpKXI9WGwodCxuKTtlbHNle2xldCBuPUJsKGUpO3I9e3g6dC54LW4ueCx5OnQueS1uLnksd2lkdGg6dC53aWR0aCxoZWlnaHQ6dC5oZWlnaHR9fXJldHVybiBYYyhyKX1mdW5jdGlvbiBRbChlLHQpe2xldCBuPXQuZ2V0KGUpO2lmKG4pcmV0dXJuIG47bGV0IHI9UGwoZSxbXSwhMSkuZmlsdGVyKGU9PmdsKGUpJiZwbChlKSE9PWBib2R5YCksaT1udWxsLGE9QWwoZSkucG9zaXRpb249PT1gZml4ZWRgLG89YT9NbChlKTplO2Zvcig7Z2wobykmJiFrbChvKTspe2xldCBlPUFsKG8pLHQ9RWwobyksbj1pP2kucG9zaXRpb246YT9gZml4ZWRgOmBgOyF0JiYobj09PWBmaXhlZGB8fG49PT1gYWJzb2x1dGVgJiZlLnBvc2l0aW9uPT09YHN0YXRpY2ApP3I9ci5maWx0ZXIoZT0+ZSE9PW8pOmk9ZSxvPU1sKG8pfXJldHVybiB0LnNldChlLHIpLHJ9ZnVuY3Rpb24gJGwoZSl7bGV0e2VsZW1lbnQ6dCxib3VuZGFyeTpuLHJvb3RCb3VuZGFyeTpyLHN0cmF0ZWd5Oml9PWUsYT1bLi4ubj09PWBjbGlwcGluZ0FuY2VzdG9yc2A/eGwodCk/W106UWwodCx0aGlzLl9jKTpbXS5jb25jYXQobikscl0sbz1abCh0LGFbMF0saSkscz1vLnRvcCxjPW8ucmlnaHQsbD1vLmJvdHRvbSx1PW8ubGVmdDtmb3IobGV0IGU9MTtlPGEubGVuZ3RoO2UrKyl7bGV0IG49WmwodCxhW2VdLGkpO3M9VGMobi50b3AscyksYz13YyhuLnJpZ2h0LGMpLGw9d2Mobi5ib3R0b20sbCksdT1UYyhuLmxlZnQsdSl9cmV0dXJue3dpZHRoOmMtdSxoZWlnaHQ6bC1zLHg6dSx5OnN9fWZ1bmN0aW9uIGV1KGUpe2xldHt3aWR0aDp0LGhlaWdodDpufT1JbChlKTtyZXR1cm57d2lkdGg6dCxoZWlnaHQ6bn19ZnVuY3Rpb24gdHUoZSx0LG4pe2xldCByPV9sKHQpLGk9bWwodCksYT1uPT09YGZpeGVkYCxvPUhsKGUsITAsYSx0KSxzPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGM9T2MoMCk7aWYoKHJ8fCFhKSYmKChwbCh0KSE9PWBib2R5YHx8eWwoaSkpJiYocz1qbCh0KSkscikpe2xldCBlPUhsKHQsITAsYSx0KTtjLng9ZS54K3QuY2xpZW50TGVmdCxjLnk9ZS55K3QuY2xpZW50VG9wfSFyJiZpJiYoYy54PVVsKGkpKTtsZXQgbD1pJiYhciYmIWE/V2woaSxzKTpPYygwKTtyZXR1cm57eDpvLmxlZnQrcy5zY3JvbGxMZWZ0LWMueC1sLngseTpvLnRvcCtzLnNjcm9sbFRvcC1jLnktbC55LHdpZHRoOm8ud2lkdGgsaGVpZ2h0Om8uaGVpZ2h0fX1mdW5jdGlvbiBudShlKXtyZXR1cm4gQWwoZSkucG9zaXRpb249PT1gc3RhdGljYH1mdW5jdGlvbiBydShlLHQpe2lmKCFfbChlKXx8QWwoZSkucG9zaXRpb249PT1gZml4ZWRgKXJldHVybiBudWxsO2lmKHQpcmV0dXJuIHQoZSk7bGV0IG49ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIG1sKGUpPT09biYmKG49bi5vd25lckRvY3VtZW50LmJvZHkpLG59ZnVuY3Rpb24gaXUoZSx0KXtsZXQgbj0kKGUpO2lmKHhsKGUpKXJldHVybiBuO2lmKCFfbChlKSl7bGV0IHQ9TWwoZSk7Zm9yKDt0JiYha2wodCk7KXtpZihnbCh0KSYmIW51KHQpKXJldHVybiB0O3Q9TWwodCl9cmV0dXJuIG59bGV0IHI9cnUoZSx0KTtmb3IoO3ImJmJsKHIpJiZudShyKTspcj1ydShyLHQpO3JldHVybiByJiZrbChyKSYmbnUocikmJiFFbChyKT9uOnJ8fERsKGUpfHxufXZhciBhdT1hc3luYyBmdW5jdGlvbihlKXtsZXQgdD10aGlzLmdldE9mZnNldFBhcmVudHx8aXUsbj10aGlzLmdldERpbWVuc2lvbnMscj1hd2FpdCBuKGUuZmxvYXRpbmcpO3JldHVybntyZWZlcmVuY2U6dHUoZS5yZWZlcmVuY2UsYXdhaXQgdChlLmZsb2F0aW5nKSxlLnN0cmF0ZWd5KSxmbG9hdGluZzp7eDowLHk6MCx3aWR0aDpyLndpZHRoLGhlaWdodDpyLmhlaWdodH19fTtmdW5jdGlvbiBvdShlKXtyZXR1cm4gQWwoZSkuZGlyZWN0aW9uPT09YHJ0bGB9dmFyIHN1PXtjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdDpHbCxnZXREb2N1bWVudEVsZW1lbnQ6bWwsZ2V0Q2xpcHBpbmdSZWN0OiRsLGdldE9mZnNldFBhcmVudDppdSxnZXRFbGVtZW50UmVjdHM6YXUsZ2V0Q2xpZW50UmVjdHM6S2wsZ2V0RGltZW5zaW9uczpldSxnZXRTY2FsZTpSbCxpc0VsZW1lbnQ6Z2wsaXNSVEw6b3V9O2Z1bmN0aW9uIGN1KGUsdCl7cmV0dXJuIGUueD09PXQueCYmZS55PT09dC55JiZlLndpZHRoPT09dC53aWR0aCYmZS5oZWlnaHQ9PT10LmhlaWdodH1mdW5jdGlvbiBsdShlLHQsbil7bGV0IHI9bnVsbCxpLGE9bWwoZSk7ZnVuY3Rpb24gbygpe3ZhciBlO2NsZWFyVGltZW91dChpKSwoZT1yKT09bnVsbHx8ZS5kaXNjb25uZWN0KCkscj1udWxsfWZ1bmN0aW9uIHMobixjKXtuPT09dm9pZCAwJiYobj0hMSksYz09PXZvaWQgMCYmKGM9MSksbygpO2xldCBsPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse2xlZnQ6dSx0b3A6ZCx3aWR0aDpmLGhlaWdodDpwfT1sO2lmKG58fHQoKSwhZnx8IXApcmV0dXJuO2xldCBtPURjKGQpLGg9RGMoYS5jbGllbnRXaWR0aC0odStmKSksZz1EYyhhLmNsaWVudEhlaWdodC0oZCtwKSksXz1EYyh1KSx2PXtyb290TWFyZ2luOi1tK2BweCBgKy1oK2BweCBgKy1nK2BweCBgKy1fK2BweGAsdGhyZXNob2xkOlRjKDAsd2MoMSxjKSl8fDF9LHk9ITA7ZnVuY3Rpb24gYih0KXtsZXQgbj10WzBdLmludGVyc2VjdGlvblJhdGlvO2lmKCFjdShsLGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKXJldHVybiBzKCk7aWYobiE9PWMpe2lmKCF5KXJldHVybiBzKCk7bj9zKCExLG4pOmk9c2V0VGltZW91dCgoKT0+e3MoITEsMWUtNyl9LDFlMyl9eT0hMX10cnl7cj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix7Li4udixyb290OmEub3duZXJEb2N1bWVudH0pfWNhdGNoe3I9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGIsdil9ci5vYnNlcnZlKGUpfWxldCBjPSQoZSksbD0oKT0+cyhuKTtyZXR1cm4gYy5hZGRFdmVudExpc3RlbmVyKGByZXNpemVgLGwpLHMoITApLCgpPT57Yy5yZW1vdmVFdmVudExpc3RlbmVyKGByZXNpemVgLGwpLG8oKX19ZnVuY3Rpb24gdXUoZSx0LG4scil7cj09PXZvaWQgMCYmKHI9e30pO2xldHthbmNlc3RvclNjcm9sbDppPSEwLGFuY2VzdG9yUmVzaXplOmE9ITAsZWxlbWVudFJlc2l6ZTpvPXR5cGVvZiBSZXNpemVPYnNlcnZlcj09YGZ1bmN0aW9uYCxsYXlvdXRTaGlmdDpzPXR5cGVvZiBJbnRlcnNlY3Rpb25PYnNlcnZlcj09YGZ1bmN0aW9uYCxhbmltYXRpb25GcmFtZTpjPSExfT1yLGw9TGwoZSksdT1pfHxhP1suLi5sP1BsKGwpOltdLC4uLnQ/UGwodCk6W11dOltdO3UuZm9yRWFjaChlPT57aSYmZS5hZGRFdmVudExpc3RlbmVyKGBzY3JvbGxgLG4pLGEmJmUuYWRkRXZlbnRMaXN0ZW5lcihgcmVzaXplYCxuKX0pO2xldCBkPWwmJnM/bHUobCxuLGEpOm51bGwsZj0tMSxwPW51bGw7byYmKHA9bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntsZXRbcl09ZTtyJiZyLnRhcmdldD09PWwmJnAmJnQmJihwLnVub2JzZXJ2ZSh0KSxjYW5jZWxBbmltYXRpb25GcmFtZShmKSxmPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBlOyhlPXApPT1udWxsfHxlLm9ic2VydmUodCl9KSksbigpfSksbCYmIWMmJnAub2JzZXJ2ZShsKSx0JiZwLm9ic2VydmUodCkpO2xldCBtLGg9Yz9IbChlKTpudWxsO2MmJmcoKTtmdW5jdGlvbiBnKCl7bGV0IHQ9SGwoZSk7aCYmIWN1KGgsdCkmJm4oKSxoPXQsbT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZyl9cmV0dXJuIG4oKSwoKT0+e3ZhciBlO3UuZm9yRWFjaChlPT57aSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKGBzY3JvbGxgLG4pLGEmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcmVzaXplYCxuKX0pLGQ/LigpLChlPXApPT1udWxsfHxlLmRpc2Nvbm5lY3QoKSxwPW51bGwsYyYmY2FuY2VsQW5pbWF0aW9uRnJhbWUobSl9fXZhciBkdT1jbCxmdT1sbCxwdT1ubCxtdT1kbCxodT1hbCxndT10bCxfdT11bCx2dT0oZSx0LG4pPT57bGV0IHI9bmV3IE1hcCxpPW4/P3t9LGE9ey4uLnN1LC4uLmkucGxhdGZvcm0sX2M6cn07cmV0dXJuIGVsKGUsdCx7Li4uaSxwbGF0Zm9ybTphfSl9O2Z1bmN0aW9uIHl1KGUpe3JldHVybiB0eXBlb2YgZT09YG9iamVjdGAmJiEhZSYmYCRlbGBpbiBlfWZ1bmN0aW9uIGJ1KGUpe2lmKHl1KGUpKXtsZXQgdD1lLiRlbDtyZXR1cm4gaGwodCkmJnBsKHQpPT09YCNjb21tZW50YD9udWxsOnR9cmV0dXJuIGV9ZnVuY3Rpb24geHUoZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gP2UoKTpQKGUpfWZ1bmN0aW9uIFN1KGUpe3JldHVybntuYW1lOmBhcnJvd2Asb3B0aW9uczplLGZuKHQpe2xldCBuPWJ1KHh1KGUuZWxlbWVudCkpO3JldHVybiBuPT1udWxsP3t9Omd1KHtlbGVtZW50Om4scGFkZGluZzplLnBhZGRpbmd9KS5mbih0KX19fWZ1bmN0aW9uIEN1KGUpe3JldHVybiB0eXBlb2Ygd2luZG93PmB1YD8xOihlLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZGV2aWNlUGl4ZWxSYXRpb3x8MX1mdW5jdGlvbiB3dShlLHQpe2xldCBuPUN1KGUpO3JldHVybiBNYXRoLnJvdW5kKHQqbikvbn1mdW5jdGlvbiBUdShlLHQsbil7bj09PXZvaWQgMCYmKG49e30pO2xldCByPW4ud2hpbGVFbGVtZW50c01vdW50ZWQsaT14KCgpPT54dShuLm9wZW4pPz8hMCksYT14KCgpPT54dShuLm1pZGRsZXdhcmUpKSxvPXgoKCk9Pnh1KG4ucGxhY2VtZW50KT8/YGJvdHRvbWApLHM9eCgoKT0+eHUobi5zdHJhdGVneSk/P2BhYnNvbHV0ZWApLGM9eCgoKT0+eHUobi50cmFuc2Zvcm0pPz8hMCksbD14KCgpPT5idShlLnZhbHVlKSksdT14KCgpPT5idSh0LnZhbHVlKSksZD1qKDApLGY9aigwKSxtPWoocy52YWx1ZSksaD1qKG8udmFsdWUpLF89QWUoe30pLHY9aighMSkseT14KCgpPT57bGV0IGU9e3Bvc2l0aW9uOm0udmFsdWUsbGVmdDpgMGAsdG9wOmAwYH07aWYoIXUudmFsdWUpcmV0dXJuIGU7bGV0IHQ9d3UodS52YWx1ZSxkLnZhbHVlKSxuPXd1KHUudmFsdWUsZi52YWx1ZSk7cmV0dXJuIGMudmFsdWU/ey4uLmUsdHJhbnNmb3JtOmB0cmFuc2xhdGUoYCt0K2BweCwgYCtuK2BweClgLC4uLkN1KHUudmFsdWUpPj0xLjUmJnt3aWxsQ2hhbmdlOmB0cmFuc2Zvcm1gfX06e3Bvc2l0aW9uOm0udmFsdWUsbGVmdDp0K2BweGAsdG9wOm4rYHB4YH19KSxiO2Z1bmN0aW9uIFMoKXtpZihsLnZhbHVlPT1udWxsfHx1LnZhbHVlPT1udWxsKXJldHVybjtsZXQgZT1pLnZhbHVlO3Z1KGwudmFsdWUsdS52YWx1ZSx7bWlkZGxld2FyZTphLnZhbHVlLHBsYWNlbWVudDpvLnZhbHVlLHN0cmF0ZWd5OnMudmFsdWV9KS50aGVuKHQ9PntkLnZhbHVlPXQueCxmLnZhbHVlPXQueSxtLnZhbHVlPXQuc3RyYXRlZ3ksaC52YWx1ZT10LnBsYWNlbWVudCxfLnZhbHVlPXQubWlkZGxld2FyZURhdGEsdi52YWx1ZT1lIT09ITF9KX1mdW5jdGlvbiBDKCl7dHlwZW9mIGI9PWBmdW5jdGlvbmAmJihiKCksYj12b2lkIDApfWZ1bmN0aW9uIHcoKXtpZihDKCkscj09PXZvaWQgMCl7UygpO3JldHVybn1pZihsLnZhbHVlIT1udWxsJiZ1LnZhbHVlIT1udWxsKXtiPXIobC52YWx1ZSx1LnZhbHVlLFMpO3JldHVybn19ZnVuY3Rpb24gVCgpe2kudmFsdWV8fCh2LnZhbHVlPSExKX1yZXR1cm4gTihbYSxvLHMsaV0sUyx7Zmx1c2g6YHN5bmNgfSksTihbbCx1XSx3LHtmbHVzaDpgc3luY2B9KSxOKGksVCx7Zmx1c2g6YHN5bmNgfSksRWUoKSYmZyhDKSx7eDpwKGQpLHk6cChmKSxzdHJhdGVneTpwKG0pLHBsYWNlbWVudDpwKGgpLG1pZGRsZXdhcmVEYXRhOnAoXyksaXNQb3NpdGlvbmVkOnAodiksZmxvYXRpbmdTdHlsZXM6eSx1cGRhdGU6U319dmFyIEV1PVtgZGlyYF0sRHU9e3NpZGU6YGJvdHRvbWAsc2lkZU9mZnNldDowLHNpZGVGbGlwOiEwLGFsaWduOmBjZW50ZXJgLGFsaWduT2Zmc2V0OjAsYWxpZ25GbGlwOiEwLGFycm93UGFkZGluZzowLGhpZGVTaGlmdGVkQXJyb3c6ITAsYXZvaWRDb2xsaXNpb25zOiEwLGNvbGxpc2lvbkJvdW5kYXJ5OigpPT5bXSxjb2xsaXNpb25QYWRkaW5nOjAsc3RpY2t5OmBwYXJ0aWFsYCxoaWRlV2hlbkRldGFjaGVkOiExLHBvc2l0aW9uU3RyYXRlZ3k6YGZpeGVkYCx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5OmBvcHRpbWl6ZWRgLHByaW9yaXRpemVQb3NpdGlvbjohMX0sW091LGt1XT1yKGBQb3BwZXJDb250ZW50YCksQXU9SCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgUG9wcGVyQ29udGVudGAscHJvcHM6eWUoe21lbW9EZXBlbmRlbmNpZXM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSx7Li4uRHV9KSxlbWl0czpbYHBsYWNlZGBdLHNldHVwKHQse2VtaXQ6bn0pe2xldCByPXQsaT1uLG89Z2MoKSx7Zm9yd2FyZFJlZjpzLGN1cnJlbnRFbGVtZW50OmN9PWUoKSxsPWEoeCgoKT0+ci5kaXIpKSx1PWooKSxmPWooKSx7d2lkdGg6cCxoZWlnaHQ6aH09THMoZiksZz14KCgpPT5yLnNpZGUrKHIuYWxpZ249PT1gY2VudGVyYD9gYDpgLSR7ci5hbGlnbn1gKSksXz14KCgpPT50eXBlb2Ygci5jb2xsaXNpb25QYWRkaW5nPT1gbnVtYmVyYD9yLmNvbGxpc2lvblBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowLC4uLnIuY29sbGlzaW9uUGFkZGluZ30pLHY9eCgoKT0+QXJyYXkuaXNBcnJheShyLmNvbGxpc2lvbkJvdW5kYXJ5KT9yLmNvbGxpc2lvbkJvdW5kYXJ5OltyLmNvbGxpc2lvbkJvdW5kYXJ5XSkseT14KCgpPT4oe3BhZGRpbmc6Xy52YWx1ZSxib3VuZGFyeTp2LnZhbHVlLmZpbHRlcihiYyksYWx0Qm91bmRhcnk6di52YWx1ZS5sZW5ndGg+MH0pKSxiPXgoKCk9Pih7bWFpbkF4aXM6ci5zaWRlRmxpcCxjcm9zc0F4aXM6ci5hbGlnbkZsaXB9KSksUz14KCgpPT5bZHUoe21haW5BeGlzOnIuc2lkZU9mZnNldCtoLnZhbHVlLGFsaWdubWVudEF4aXM6ci5hbGlnbk9mZnNldH0pLHIucHJpb3JpdGl6ZVBvc2l0aW9uJiZyLmF2b2lkQ29sbGlzaW9ucyYmcHUoey4uLnkudmFsdWUsLi4uYi52YWx1ZX0pLHIuYXZvaWRDb2xsaXNpb25zJiZmdSh7bWFpbkF4aXM6ITAsY3Jvc3NBeGlzOiEhci5wcmlvcml0aXplUG9zaXRpb24sbGltaXRlcjpyLnN0aWNreT09PWBwYXJ0aWFsYD9fdSgpOnZvaWQgMCwuLi55LnZhbHVlfSksIXIucHJpb3JpdGl6ZVBvc2l0aW9uJiZyLmF2b2lkQ29sbGlzaW9ucyYmcHUoey4uLnkudmFsdWUsLi4uYi52YWx1ZX0pLG11KHsuLi55LnZhbHVlLGFwcGx5Oih7ZWxlbWVudHM6ZSxyZWN0czp0LGF2YWlsYWJsZVdpZHRoOm4sYXZhaWxhYmxlSGVpZ2h0OnJ9KT0+e2xldHt3aWR0aDppLGhlaWdodDphfT10LnJlZmVyZW5jZSxvPWUuZmxvYXRpbmcuc3R5bGU7by5zZXRQcm9wZXJ0eShgLS1yZWthLXBvcHBlci1hdmFpbGFibGUtd2lkdGhgLGAke259cHhgKSxvLnNldFByb3BlcnR5KGAtLXJla2EtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHRgLGAke3J9cHhgKSxvLnNldFByb3BlcnR5KGAtLXJla2EtcG9wcGVyLWFuY2hvci13aWR0aGAsYCR7aX1weGApLG8uc2V0UHJvcGVydHkoYC0tcmVrYS1wb3BwZXItYW5jaG9yLWhlaWdodGAsYCR7YX1weGApfX0pLGYudmFsdWUmJlN1KHtlbGVtZW50OmYudmFsdWUscGFkZGluZzpyLmFycm93UGFkZGluZ30pLHhjKHthcnJvd1dpZHRoOnAudmFsdWUsYXJyb3dIZWlnaHQ6aC52YWx1ZSxkaXI6bC52YWx1ZX0pLHIuaGlkZVdoZW5EZXRhY2hlZCYmaHUoe3N0cmF0ZWd5OmByZWZlcmVuY2VIaWRkZW5gLC4uLnkudmFsdWV9KV0pLHtmbG9hdGluZ1N0eWxlczpDLHBsYWNlbWVudDp3LGlzUG9zaXRpb25lZDpULG1pZGRsZXdhcmVEYXRhOkUsdXBkYXRlOkR9PVR1KHgoKCk9PnIucmVmZXJlbmNlPz9vLmFuY2hvci52YWx1ZSksdSx7c3RyYXRlZ3k6ci5wb3NpdGlvblN0cmF0ZWd5LHBsYWNlbWVudDpnLHdoaWxlRWxlbWVudHNNb3VudGVkOiguLi5lKT0+dXUoLi4uZSx7bGF5b3V0U2hpZnQ6IXIuZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQsYW5pbWF0aW9uRnJhbWU6ci51cGRhdGVQb3NpdGlvblN0cmF0ZWd5PT09YGFsd2F5c2B9KSxtaWRkbGV3YXJlOlN9KSxPPXgoKCk9PlNjKHcudmFsdWUpWzBdKSxrPXgoKCk9PlNjKHcudmFsdWUpWzFdKTtTZSgoKT0+e1QudmFsdWUmJmkoYHBsYWNlZGApfSk7bGV0IEE9eCgoKT0+e2xldCBlPUUudmFsdWUuYXJyb3c/LmNlbnRlck9mZnNldCE9PTA7cmV0dXJuIHIuaGlkZVNoaWZ0ZWRBcnJvdyYmZX0pLGVlPWooYGApO3JldHVybiBkKCgpPT57Yy52YWx1ZSYmKGVlLnZhbHVlPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGMudmFsdWUpLnpJbmRleCl9KSxrdSh7cGxhY2VkU2lkZTpPLG9uQXJyb3dDaGFuZ2U6ZT0+Zi52YWx1ZT1lLGFycm93WDp4KCgpPT5FLnZhbHVlLmFycm93Py54Pz8wKSxhcnJvd1k6eCgoKT0+RS52YWx1ZS5hcnJvdz8ueT8/MCksc2hvdWxkSGlkZUFycm93OkF9KSwoZSx0KT0+KFYoKSxtKGBkaXZgLHtyZWZfa2V5OmBmbG9hdGluZ1JlZmAscmVmOnUsImRhdGEtcmVrYS1wb3BwZXItY29udGVudC13cmFwcGVyIjpgYCxkaXI6UChsKSxzdHlsZTpLZSh7Li4uUChDKSx0cmFuc2Zvcm06UChUKT9QKEMpLnRyYW5zZm9ybTpgdHJhbnNsYXRlKDAsIC0yMDAlKWAsbWluV2lkdGg6YG1heC1jb250ZW50YCx6SW5kZXg6ZWUudmFsdWUsIi0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiI6W1AoRSkudHJhbnNmb3JtT3JpZ2luPy54LFAoRSkudHJhbnNmb3JtT3JpZ2luPy55XS5qb2luKGAgYCksLi4uUChFKS5oaWRlPy5yZWZlcmVuY2VIaWRkZW4mJnt2aXNpYmlsaXR5OmBoaWRkZW5gLHBvaW50ZXJFdmVudHM6YG5vbmVgfX0pfSxbci5tZW1vRGVwZW5kZW5jaWVzP1JlKFtyLmFzQ2hpbGQsci5hcyxPLnZhbHVlLGsudmFsdWUsUChUKSwuLi5PYmplY3QudmFsdWVzKGUuJGF0dHJzKSwuLi5yLm1lbW9EZXBlbmRlbmNpZXNdLCgpPT4oVigpLE0oUChCKSx6KHtrZXk6MCxyZWY6UChzKX0sZS4kYXR0cnMseyJhcy1jaGlsZCI6ci5hc0NoaWxkLGFzOnIuYXMsImRhdGEtc2lkZSI6Ty52YWx1ZSwiZGF0YS1hbGlnbiI6ay52YWx1ZSxzdHlsZTp7YW5pbWF0aW9uOlAoVCk/dm9pZCAwOmBub25lYH19KSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGFzLWNoaWxkYCxgYXNgLGBkYXRhLXNpZGVgLGBkYXRhLWFsaWduYCxgc3R5bGVgXSkpLHQsMCk6KFYoKSxNKFAoQikseih7a2V5OjEscmVmOlAocyl9LGUuJGF0dHJzLHsiYXMtY2hpbGQiOnIuYXNDaGlsZCxhczpyLmFzLCJkYXRhLXNpZGUiOk8udmFsdWUsImRhdGEtYWxpZ24iOmsudmFsdWUsZGlyOlAobCksc3R5bGU6e2FuaW1hdGlvbjpQKFQpP3ZvaWQgMDpgbm9uZWB9fSkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYsW2Bhcy1jaGlsZGAsYGFzYCxgZGF0YS1zaWRlYCxgZGF0YS1hbGlnbmAsYGRpcmAsYHN0eWxlYF0pKV0sMTIsRXUpKX19KTtmdW5jdGlvbiBqdShlKXtsZXQgdD1zKHtub25jZTpqKCl9KTtyZXR1cm4geCgoKT0+ZT8udmFsdWV8fHQubm9uY2U/LnZhbHVlKX12YXIgTXU9W2AgYCxgRW50ZXJgLGBBcnJvd1VwYCxgQXJyb3dEb3duYF0sTnU9W2AgYCxgRW50ZXJgXTtmdW5jdGlvbiBQdShlLHQsbil7cmV0dXJuIGU9PT12b2lkIDA/ITE6QXJyYXkuaXNBcnJheShlKT9lLnNvbWUoZT0+RnUoZSx0LG4pKTpGdShlLHQsbil9ZnVuY3Rpb24gRnUoZSx0LG4pe3JldHVybiBlPT09dm9pZCAwfHx0PT09dm9pZCAwPyExOnR5cGVvZiBlPT1gc3RyaW5nYD9lPT09dDp0eXBlb2Ygbj09YGZ1bmN0aW9uYD9uKGUsdCk6dHlwZW9mIG49PWBzdHJpbmdgP2U/LltuXT09PXQ/LltuXTpsKGUsdCl9ZnVuY3Rpb24gSXUoZSl7cmV0dXJuIGU9PW51bGx8fGU9PT1gYHx8QXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg9PT0wfXZhciBMdT1bYHZhbHVlYF0sW1J1LHp1XT1yKGBTZWxlY3RSb290YCksQnU9SCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgU2VsZWN0Um9vdGAscHJvcHM6e29wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGVmYXVsdE9wZW46e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGVmYXVsdFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LG1vZGVsVmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sbnVsbGFibGVWYWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYH0sYnk6e3R5cGU6W1N0cmluZyxGdW5jdGlvbl0scmVxdWlyZWQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWAsYHVwZGF0ZTpvcGVuYF0sc2V0dXAoZSx7ZW1pdDpufSl7bGV0IHI9ZSxpPW4se3JlcXVpcmVkOm8sZGlzYWJsZWQ6cyxtdWx0aXBsZTpjLGRpcjpsfT1TKHIpLHU9YXQocixgbW9kZWxWYWx1ZWAsaSx7ZGVmYXVsdFZhbHVlOnIuZGVmYXVsdFZhbHVlPz8oYy52YWx1ZT9bXTp2b2lkIDApLHBhc3NpdmU6ci5tb2RlbFZhbHVlPT09dm9pZCAwLGRlZXA6ITB9KSxkPWF0KHIsYG9wZW5gLGkse2RlZmF1bHRWYWx1ZTpyLmRlZmF1bHRPcGVuLHBhc3NpdmU6ci5vcGVuPT09dm9pZCAwfSkscD1qKCksaD1qKCksZz1qKHt4OjAseTowfSksXz14KCgpPT5jLnZhbHVlJiZBcnJheS5pc0FycmF5KHUudmFsdWUpP3UudmFsdWU/Lmxlbmd0aD09PTA6dCh1LnZhbHVlKSk7bWMoe2lzUHJvdmlkZXI6ITB9KTtsZXQgdj1hKGwpLHk9RXMocCksYj1qKG5ldyBTZXQpLEM9eCgoKT0+QXJyYXkuZnJvbShiLnZhbHVlKS5tYXAoZT0+ZS52YWx1ZSkuam9pbihgO2ApKTtmdW5jdGlvbiB3KGUpe2lmKGMudmFsdWUpe2xldCB0PUFycmF5LmlzQXJyYXkodS52YWx1ZSk/Wy4uLnUudmFsdWVdOltdLG49dC5maW5kSW5kZXgodD0+RnUodCxlLHIuYnkpKTtuPT09LTE/dC5wdXNoKGUpOnQuc3BsaWNlKG4sMSksdS52YWx1ZT1bLi4udF19ZWxzZSB1LnZhbHVlPWV9ZnVuY3Rpb24gVChlKXtyZXR1cm4gQXJyYXkuZnJvbShiLnZhbHVlKS5maW5kKHQ9PlB1KGUsdC52YWx1ZSxyLmJ5KSl9cmV0dXJuIHp1KHt0cmlnZ2VyRWxlbWVudDpwLG9uVHJpZ2dlckNoYW5nZTplPT57cC52YWx1ZT1lfSx2YWx1ZUVsZW1lbnQ6aCxvblZhbHVlRWxlbWVudENoYW5nZTplPT57aC52YWx1ZT1lfSxjb250ZW50SWQ6YGAsbW9kZWxWYWx1ZTp1LG9uVmFsdWVDaGFuZ2U6dyxieTpyLmJ5LG9wZW46ZCxtdWx0aXBsZTpjLHJlcXVpcmVkOm8sb25PcGVuQ2hhbmdlOmU9PntkLnZhbHVlPWV9LGRpcjp2LHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjpnLGRpc2FibGVkOnMsaXNFbXB0eU1vZGVsVmFsdWU6XyxvcHRpb25zU2V0OmIsb25PcHRpb25BZGQ6ZT0+e2xldCB0PVQoZS52YWx1ZSk7dCYmYi52YWx1ZS5kZWxldGUodCksYi52YWx1ZS5hZGQoZSl9LG9uT3B0aW9uUmVtb3ZlOmU9PntsZXQgdD1UKGUudmFsdWUpO3QmJmIudmFsdWUuZGVsZXRlKHQpfX0pLChlLG4pPT4oVigpLE0oUCh2YyksbnVsbCx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGAse21vZGVsVmFsdWU6UCh1KSxvcGVuOlAoZCl9KSxQKHkpJiZlLm5hbWU/KFYoKSxNKFZ1LHtrZXk6Qy52YWx1ZSwiYXJpYS1oaWRkZW4iOmB0cnVlYCx0YWJpbmRleDpgLTFgLG11bHRpcGxlOlAoYykscmVxdWlyZWQ6UChvKSxuYW1lOmUubmFtZSxhdXRvY29tcGxldGU6ZS5hdXRvY29tcGxldGUsZGlzYWJsZWQ6UChzKSx2YWx1ZTpQKHUpfSx7ZGVmYXVsdDpSKCgpPT5bUCh0KShQKHUpKT8oVigpLG0oYG9wdGlvbmAse2tleTowLHZhbHVlOmUubnVsbGFibGVWYWx1ZX0sbnVsbCw4LEx1KSk6TChgdi1pZmAsITApLChWKCEwKSxtKHdlLG51bGwsZihBcnJheS5mcm9tKGIudmFsdWUpLGU9PihWKCksbShgb3B0aW9uYCx6KHtrZXk6ZS52YWx1ZT8/YGB9LHtyZWZfZm9yOiEwfSxlKSxudWxsLDE2KSkpLDEyOCkpXSksXzoxfSw4LFtgbXVsdGlwbGVgLGByZXF1aXJlZGAsYG5hbWVgLGBhdXRvY29tcGxldGVgLGBkaXNhYmxlZGAsYHZhbHVlYF0pKTpMKGB2LWlmYCwhMCldKSxfOjN9KSl9fSksVnU9SCh7X19uYW1lOmBCdWJibGVTZWxlY3RgLHByb3BzOnthdXRvY29tcGxldGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhdXRvZm9jdXM6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sZm9ybTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG11bHRpcGxlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG5hbWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzaXplOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sdmFsdWU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWUsbj1qKCkscj1SdSgpO04oKCk9PnQudmFsdWUsKGUsdCk9PntsZXQgcj13aW5kb3cuSFRNTFNlbGVjdEVsZW1lbnQucHJvdG90eXBlLGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGB2YWx1ZWApLnNldDtpZihlIT09dCYmaSYmbi52YWx1ZSl7bGV0IHQ9bmV3IEV2ZW50KGBjaGFuZ2VgLHtidWJibGVzOiEwfSk7aS5jYWxsKG4udmFsdWUsZSksbi52YWx1ZS5kaXNwYXRjaEV2ZW50KHQpfX0pO2Z1bmN0aW9uIGkoZSl7ci5vblZhbHVlQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1yZXR1cm4oZSxyKT0+KFYoKSxNKFAoaGMpLHsiYXMtY2hpbGQiOmBgfSx7ZGVmYXVsdDpSKCgpPT5bdihgc2VsZWN0YCx6KHtyZWZfa2V5OmBzZWxlY3RFbGVtZW50YCxyZWY6bn0sdCx7b25JbnB1dDppfSksW0koZS4kc2xvdHMsYGRlZmF1bHRgKV0sMTYpXSksXzozfSkpfX0pLEh1PUgoe19fbmFtZTpgU2VsZWN0UG9wcGVyUG9zaXRpb25gLHByb3BzOnttZW1vRGVwZW5kZW5jaWVzOnt0eXBlOkFycmF5LHJlcXVpcmVkOiExfSxzaWRlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHNpZGVPZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxzaWRlRmxpcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhbGlnbjp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHN0YXJ0YH0sYWxpZ25PZmZzZXQ6e3R5cGU6TnVtYmVyLHJlcXVpcmVkOiExfSxhbGlnbkZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXZvaWRDb2xsaXNpb25zOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGNvbGxpc2lvbkJvdW5kYXJ5Ont0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGNvbGxpc2lvblBhZGRpbmc6e3R5cGU6W051bWJlcixPYmplY3RdLHJlcXVpcmVkOiExLGRlZmF1bHQ6MTB9LGFycm93UGFkZGluZzp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LGhpZGVTaGlmdGVkQXJyb3c6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sc3RpY2t5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0saGlkZVdoZW5EZXRhY2hlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGRpc2FibGVVcGRhdGVPbkxheW91dFNoaWZ0Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHByaW9yaXRpemVQb3NpdGlvbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxyZWZlcmVuY2U6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAoZSl7bGV0IHQ9bihlKTtyZXR1cm4oZSxuKT0+KFYoKSxNKFAoQXUpLHooUCh0KSx7c3R5bGU6e2JveFNpemluZzpgYm9yZGVyLWJveGAsIi0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luIjpgdmFyKC0tcmVrYS1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbilgLCItLXJla2Etc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLXdpZHRoIjpgdmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKWAsIi0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0IjpgdmFyKC0tcmVrYS1wb3BwZXItYXZhaWxhYmxlLWhlaWdodClgLCItLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgiOmB2YXIoLS1yZWthLXBvcHBlci1hbmNob3Itd2lkdGgpYCwiLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCI6YHZhcigtLXJla2EtcG9wcGVyLWFuY2hvci1oZWlnaHQpYH19KSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNikpfX0pLFV1PXtvblZpZXdwb3J0Q2hhbmdlOigpPT57fSxpdGVtVGV4dFJlZkNhbGxiYWNrOigpPT57fSxpdGVtUmVmQ2FsbGJhY2s6KCk9Pnt9fSxbV3UsR3VdPXIoYFNlbGVjdENvbnRlbnRgKSxLdT1IKHtfX25hbWU6YFNlbGVjdENvbnRlbnRJbXBsYCxwcm9wczp7cG9zaXRpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGl0ZW0tYWxpZ25lZGB9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sbWVtb0RlcGVuZGVuY2llczp7dHlwZTpBcnJheSxyZXF1aXJlZDohMX0sc2lkZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxzaWRlT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sc2lkZUZsaXA6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxpZ246e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzdGFydGB9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITB9fSxlbWl0czpbYGNsb3NlQXV0b0ZvY3VzYCxgZXNjYXBlS2V5RG93bmAsYHBvaW50ZXJEb3duT3V0c2lkZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCByPWUsaT10LGE9UnUoKTt3cygpLGJzKHIuYm9keUxvY2spO2xldHtDb2xsZWN0aW9uU2xvdDpvLGdldEl0ZW1zOnN9PW1jKCksYz1qKCk7SXMoYyk7bGV0e3NlYXJjaDpsLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDp1fT1ScygpLGY9aigpLHA9aigpLG09aigpLGg9aighMSksZz1qKCExKSxfPWooITEpO2Z1bmN0aW9uIHYoKXtwLnZhbHVlJiZjLnZhbHVlJiZkYyhbcC52YWx1ZSxjLnZhbHVlXSl9TihoLCgpPT57digpfSk7bGV0e29uT3BlbkNoYW5nZTp5LHRyaWdnZXJQb2ludGVyRG93blBvc1JlZjpifT1hO2QoZT0+e2lmKCFjLnZhbHVlKXJldHVybjtsZXQgdD17eDowLHk6MH0sbj1lPT57dD17eDpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVgpLShiLnZhbHVlPy54Pz8wKSkseTpNYXRoLmFicyhNYXRoLnJvdW5kKGUucGFnZVkpLShiLnZhbHVlPy55Pz8wKSl9fSxyPWU9PntlLnBvaW50ZXJUeXBlIT09YHRvdWNoYCYmKHQueDw9MTAmJnQueTw9MTA/ZS5wcmV2ZW50RGVmYXVsdCgpOmMudmFsdWU/LmNvbnRhaW5zKGUudGFyZ2V0KXx8eSghMSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcm1vdmVgLG4pLGIudmFsdWU9bnVsbCl9O2IudmFsdWUhPT1udWxsJiYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihgcG9pbnRlcm1vdmVgLG4pLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoYHBvaW50ZXJ1cGAscix7Y2FwdHVyZTohMCxvbmNlOiEwfSkpLGUoKCk9Pntkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGBwb2ludGVybW92ZWAsbiksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihgcG9pbnRlcnVwYCxyLHtjYXB0dXJlOiEwfSl9KX0pO2Z1bmN0aW9uIFMoZSl7bGV0IHQ9ZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5O2lmKGUua2V5PT09YFRhYmAmJmUucHJldmVudERlZmF1bHQoKSwhdCYmZS5rZXkubGVuZ3RoPT09MSYmdShlLmtleSxzKCkpLFtgQXJyb3dVcGAsYEFycm93RG93bmAsYEhvbWVgLGBFbmRgXS5pbmNsdWRlcyhlLmtleSkpe2xldCB0PVsuLi5zKCkubWFwKGU9PmUucmVmKV07aWYoW2BBcnJvd1VwYCxgRW5kYF0uaW5jbHVkZXMoZS5rZXkpJiYodD10LnNsaWNlKCkucmV2ZXJzZSgpKSxbYEFycm93VXBgLGBBcnJvd0Rvd25gXS5pbmNsdWRlcyhlLmtleSkpe2xldCBuPWUudGFyZ2V0LHI9dC5pbmRleE9mKG4pO3Q9dC5zbGljZShyKzEpfXNldFRpbWVvdXQoKCk9PmRjKHQpKSxlLnByZXZlbnREZWZhdWx0KCl9fWxldCBDPXgoKCk9PnIucG9zaXRpb249PT1gcG9wcGVyYD9yOnt9KSx3PW4oQy52YWx1ZSk7cmV0dXJuIEd1KHtjb250ZW50OmMsdmlld3BvcnQ6ZixvblZpZXdwb3J0Q2hhbmdlOmU9PntmLnZhbHVlPWV9LGl0ZW1SZWZDYWxsYmFjazooZSx0LG4pPT57bGV0IHI9IWcudmFsdWUmJiFuLGk9UHUoYS5tb2RlbFZhbHVlLnZhbHVlLHQsYS5ieSk7aWYoYS5tdWx0aXBsZS52YWx1ZSl7aWYoXy52YWx1ZSlyZXR1cm47KGl8fHIpJiYocC52YWx1ZT1lLGkmJihfLnZhbHVlPSEwKSl9ZWxzZShpfHxyKSYmKHAudmFsdWU9ZSk7ciYmKGcudmFsdWU9ITApfSxzZWxlY3RlZEl0ZW06cCxzZWxlY3RlZEl0ZW1UZXh0Om0sb25JdGVtTGVhdmU6KCk9PntjLnZhbHVlPy5mb2N1cygpfSxpdGVtVGV4dFJlZkNhbGxiYWNrOihlLHQsbik9PntsZXQgcj0hZy52YWx1ZSYmIW47KFB1KGEubW9kZWxWYWx1ZS52YWx1ZSx0LGEuYnkpfHxyKSYmKG0udmFsdWU9ZSl9LGZvY3VzU2VsZWN0ZWRJdGVtOnYscG9zaXRpb246ci5wb3NpdGlvbixpc1Bvc2l0aW9uZWQ6aCxzZWFyY2hSZWY6bH0pLChlLHQpPT4oVigpLE0oUChvKSxudWxsLHtkZWZhdWx0OlIoKCk9PltPKFAoc2MpLHsiYXMtY2hpbGQiOmBgLG9uTW91bnRBdXRvRm9jdXM6dFs2XXx8PVplKCgpPT57fSxbYHByZXZlbnRgXSksb25Vbm1vdW50QXV0b0ZvY3VzOnRbN118fD1lPT57aShgY2xvc2VBdXRvRm9jdXNgLGUpLCFlLmRlZmF1bHRQcmV2ZW50ZWQmJihQKGEpLnRyaWdnZXJFbGVtZW50LnZhbHVlPy5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLGUucHJldmVudERlZmF1bHQoKSl9fSx7ZGVmYXVsdDpSKCgpPT5bTyhQKHFzKSx7ImFzLWNoaWxkIjpgYCwiZGlzYWJsZS1vdXRzaWRlLXBvaW50ZXItZXZlbnRzIjplLmRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyxvbkZvY3VzT3V0c2lkZTp0WzJdfHw9WmUoKCk9Pnt9LFtgcHJldmVudGBdKSxvbkRpc21pc3M6dFszXXx8PWU9PlAoYSkub25PcGVuQ2hhbmdlKCExKSxvbkVzY2FwZUtleURvd246dFs0XXx8PWU9PmkoYGVzY2FwZUtleURvd25gLGUpLG9uUG9pbnRlckRvd25PdXRzaWRlOnRbNV18fD1lPT5pKGBwb2ludGVyRG93bk91dHNpZGVgLGUpfSx7ZGVmYXVsdDpSKCgpPT5bKFYoKSxNKG5lKGUucG9zaXRpb249PT1gcG9wcGVyYD9IdTpZdSkseih7Li4uZS4kYXR0cnMsLi4uUCh3KX0se2lkOlAoYSkuY29udGVudElkLHJlZjplPT57aWYoIWUpcmV0dXJuO2xldCB0PVAoZXQpKGUpO3Q/Lmhhc0F0dHJpYnV0ZShgZGF0YS1yZWthLXBvcHBlci1jb250ZW50LXdyYXBwZXJgKT9jLnZhbHVlPXQuZmlyc3RFbGVtZW50Q2hpbGQ6Yy52YWx1ZT10fSxyb2xlOmBsaXN0Ym94YCwiZGF0YS1zdGF0ZSI6UChhKS5vcGVuLnZhbHVlP2BvcGVuYDpgY2xvc2VkYCxkaXI6UChhKS5kaXIudmFsdWUsc3R5bGU6e2Rpc3BsYXk6YGZsZXhgLGZsZXhEaXJlY3Rpb246YGNvbHVtbmAsb3V0bGluZTpgbm9uZWB9LG9uQ29udGV4dG1lbnU6dFswXXx8PVplKCgpPT57fSxbYHByZXZlbnRgXSksb25QbGFjZWQ6dFsxXXx8PWU9PmgudmFsdWU9ITAsb25LZXlkb3duOlN9KSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGlkYCxgZGF0YS1zdGF0ZWAsYGRpcmAsYG9uS2V5ZG93bmBdKSldKSxfOjN9LDgsW2BkaXNhYmxlLW91dHNpZGUtcG9pbnRlci1ldmVudHNgXSldKSxfOjN9KV0pLF86M30pKX19KSxbcXUsSnVdPXIoYFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25gKSxZdT1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2BwbGFjZWRgXSxzZXR1cCh0LHtlbWl0Om59KXtsZXQgcj10LGk9bix7Z2V0SXRlbXM6YX09bWMoKSxvPVJ1KCkscz1XdSgpLGM9aighMSksbD1qKCEwKSx1PWooKSx7Zm9yd2FyZFJlZjpkLGN1cnJlbnRFbGVtZW50OmZ9PWUoKSx7dmlld3BvcnQ6cCxzZWxlY3RlZEl0ZW06aCxzZWxlY3RlZEl0ZW1UZXh0OmcsZm9jdXNTZWxlY3RlZEl0ZW06X309cztmdW5jdGlvbiB2KCl7aWYoby50cmlnZ2VyRWxlbWVudC52YWx1ZSYmby52YWx1ZUVsZW1lbnQudmFsdWUmJnUudmFsdWUmJmYudmFsdWUmJnA/LnZhbHVlJiZoPy52YWx1ZSYmZz8udmFsdWUpe2xldCBlPW8udHJpZ2dlckVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdD1mLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49by52YWx1ZUVsZW1lbnQudmFsdWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1nLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKG8uZGlyLnZhbHVlIT09YHJ0bGApe2xldCBpPXIubGVmdC10LmxlZnQsYT1uLmxlZnQtaSxvPWUubGVmdC1hLHM9ZS53aWR0aCtvLGM9TWF0aC5tYXgocyx0LndpZHRoKSxsPXdpbmRvdy5pbm5lcldpZHRoLTEwLGQ9cHMoYSwxMCxNYXRoLm1heCgxMCxsLWMpKTt1LnZhbHVlLnN0eWxlLm1pbldpZHRoPWAke3N9cHhgLHUudmFsdWUuc3R5bGUubGVmdD1gJHtkfXB4YH1lbHNle2xldCBpPXQucmlnaHQtci5yaWdodCxhPXdpbmRvdy5pbm5lcldpZHRoLW4ucmlnaHQtaSxvPXdpbmRvdy5pbm5lcldpZHRoLWUucmlnaHQtYSxzPWUud2lkdGgrbyxjPU1hdGgubWF4KHMsdC53aWR0aCksbD13aW5kb3cuaW5uZXJXaWR0aC0xMCxkPXBzKGEsMTAsTWF0aC5tYXgoMTAsbC1jKSk7dS52YWx1ZS5zdHlsZS5taW5XaWR0aD1gJHtzfXB4YCx1LnZhbHVlLnN0eWxlLnJpZ2h0PWAke2R9cHhgfWxldCBzPWEoKS5tYXAoZT0+ZS5yZWYpLGw9d2luZG93LmlubmVySGVpZ2h0LTIwLGQ9cC52YWx1ZS5zY3JvbGxIZWlnaHQsbT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShmLnZhbHVlKSxfPU51bWJlci5wYXJzZUludChtLmJvcmRlclRvcFdpZHRoLDEwKSx2PU51bWJlci5wYXJzZUludChtLnBhZGRpbmdUb3AsMTApLHk9TnVtYmVyLnBhcnNlSW50KG0uYm9yZGVyQm90dG9tV2lkdGgsMTApLGI9TnVtYmVyLnBhcnNlSW50KG0ucGFkZGluZ0JvdHRvbSwxMCkseD1fK3YrZCtiK3ksUz1NYXRoLm1pbihoLnZhbHVlLm9mZnNldEhlaWdodCo1LHgpLEM9d2luZG93LmdldENvbXB1dGVkU3R5bGUocC52YWx1ZSksdz1OdW1iZXIucGFyc2VJbnQoQy5wYWRkaW5nVG9wLDEwKSxUPU51bWJlci5wYXJzZUludChDLnBhZGRpbmdCb3R0b20sMTApLEU9ZS50b3ArZS5oZWlnaHQvMi0xMCxEPWwtRSxPPWgudmFsdWUub2Zmc2V0SGVpZ2h0LzIsaz1oLnZhbHVlLm9mZnNldFRvcCtPLEE9Xyt2K2ssZWU9eC1BO2lmKEE8PUUpe2xldCBlPWgudmFsdWU9PT1zLmF0KC0xKTt1LnZhbHVlLnN0eWxlLmJvdHRvbT1gMHB4YDtsZXQgdD1mLnZhbHVlLmNsaWVudEhlaWdodC1wLnZhbHVlLm9mZnNldFRvcC1wLnZhbHVlLm9mZnNldEhlaWdodCxuPUErTWF0aC5tYXgoRCxPKyhlP1Q6MCkrdCt5KTt1LnZhbHVlLnN0eWxlLmhlaWdodD1gJHtufXB4YH1lbHNle2xldCBlPWgudmFsdWU9PT1zWzBdO3UudmFsdWUuc3R5bGUudG9wPWAwcHhgO2xldCB0PU1hdGgubWF4KEUsXytwLnZhbHVlLm9mZnNldFRvcCsoZT93OjApK08pK2VlO3UudmFsdWUuc3R5bGUuaGVpZ2h0PWAke3R9cHhgLHAudmFsdWUuc2Nyb2xsVG9wPUEtRStwLnZhbHVlLm9mZnNldFRvcH11LnZhbHVlLnN0eWxlLm1hcmdpbj1gMTBweCAwYCx1LnZhbHVlLnN0eWxlLm1pbkhlaWdodD1gJHtTfXB4YCx1LnZhbHVlLnN0eWxlLm1heEhlaWdodD1gJHtsfXB4YCxpKGBwbGFjZWRgKSxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PmMudmFsdWU9ITApfX1sZXQgeT1qKGBgKTtxZShhc3luYygpPT57YXdhaXQgRigpLHYoKSxmLnZhbHVlJiYoeS52YWx1ZT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShmLnZhbHVlKS56SW5kZXgpfSk7ZnVuY3Rpb24gYihlKXtlJiZsLnZhbHVlPT09ITAmJih2KCksXz8uKCksbC52YWx1ZT0hMSl9cmV0dXJuIHR0KG8udHJpZ2dlckVsZW1lbnQsKCk9Pnt2KCl9KSxKdSh7Y29udGVudFdyYXBwZXI6dSxzaG91bGRFeHBhbmRPblNjcm9sbFJlZjpjLG9uU2Nyb2xsQnV0dG9uQ2hhbmdlOmJ9KSwoZSx0KT0+KFYoKSxtKGBkaXZgLHtyZWZfa2V5OmBjb250ZW50V3JhcHBlckVsZW1lbnRgLHJlZjp1LHN0eWxlOktlKHtkaXNwbGF5OmBmbGV4YCxmbGV4RGlyZWN0aW9uOmBjb2x1bW5gLHBvc2l0aW9uOmBmaXhlZGAsekluZGV4OnkudmFsdWV9KX0sW08oUChCKSx6KHtyZWY6UChkKSxzdHlsZTp7Ym94U2l6aW5nOmBib3JkZXItYm94YCxtYXhIZWlnaHQ6YDEwMCVgfX0sey4uLmUuJGF0dHJzLC4uLnJ9KSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNildLDQpKX19KSxYdT1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RQcm92aWRlcmAscHJvcHM6e2NvbnRleHQ6e3R5cGU6T2JqZWN0LHJlcXVpcmVkOiEwfX0sc2V0dXAoZSl7cmV0dXJuIHp1KGUuY29udGV4dCksR3UoVXUpLChlLHQpPT5JKGUuJHNsb3RzLGBkZWZhdWx0YCl9fSksWnU9e2tleToxfSxRdT1IKHtpbmhlcml0QXR0cnM6ITEsX19uYW1lOmBTZWxlY3RDb250ZW50YCxwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxwb3NpdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGJvZHlMb2NrOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LG1lbW9EZXBlbmRlbmNpZXM6e3R5cGU6QXJyYXkscmVxdWlyZWQ6ITF9LHNpZGU6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX0sc2lkZU9mZnNldDp7dHlwZTpOdW1iZXIscmVxdWlyZWQ6ITF9LHNpZGVGbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFsaWduOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGFsaWduT2Zmc2V0Ont0eXBlOk51bWJlcixyZXF1aXJlZDohMX0sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxjb2xsaXNpb25Cb3VuZGFyeTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxjb2xsaXNpb25QYWRkaW5nOnt0eXBlOltOdW1iZXIsT2JqZWN0XSxyZXF1aXJlZDohMX0sYXJyb3dQYWRkaW5nOnt0eXBlOk51bWJlcixyZXF1aXJlZDohMX0saGlkZVNoaWZ0ZWRBcnJvdzp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxzdGlja3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHBvc2l0aW9uU3RyYXRlZ3k6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSx1cGRhdGVQb3NpdGlvblN0cmF0ZWd5Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sZGlzYWJsZVVwZGF0ZU9uTGF5b3V0U2hpZnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0scHJpb3JpdGl6ZVBvc2l0aW9uOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxkaXI6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfX0sZW1pdHM6W2BjbG9zZUF1dG9Gb2N1c2AsYGVzY2FwZUtleURvd25gLGBwb2ludGVyRG93bk91dHNpZGVgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgbj1lLHI9byhuLHQpLGk9UnUoKSxhPWooKTtxZSgoKT0+e2EudmFsdWU9bmV3IERvY3VtZW50RnJhZ21lbnR9KTtsZXQgcz1qKCksbD14KCgpPT5uLmZvcmNlTW91bnR8fGkub3Blbi52YWx1ZSksdT1qKGwudmFsdWUpLGQ7ZnVuY3Rpb24gZigpe2QmJj0oY2xlYXJUaW1lb3V0KGQpLHZvaWQgMCl9cmV0dXJuIE4obCwoZSx0LG4pPT57ZigpLGQ9c2V0VGltZW91dCgoKT0+e3UudmFsdWU9bC52YWx1ZSxkPXZvaWQgMH0pLG4oZil9KSxvZShmKSwoZSx0KT0+bC52YWx1ZXx8dS52YWx1ZXx8cy52YWx1ZT8ucHJlc2VudD8oVigpLE0oUChjKSx7a2V5OjAscmVmX2tleTpgcHJlc2VuY2VSZWZgLHJlZjpzLHByZXNlbnQ6bC52YWx1ZX0se2RlZmF1bHQ6UigoKT0+W08oS3UsTmUoZmUoey4uLlAociksLi4uZS4kYXR0cnN9KSkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpXSksXzozfSw4LFtgcHJlc2VudGBdKSk6YS52YWx1ZT8oVigpLG0oYGRpdmAsWnUsWyhWKCksTShfZSx7dG86YS52YWx1ZX0sW08oWHUse2NvbnRleHQ6UChpKX0se2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGNvbnRleHRgXSldLDgsW2B0b2BdKSldKSk6TChgdi1pZmAsITApfX0pLCR1PUgoe19fbmFtZTpgU2VsZWN0SWNvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMSxkZWZhdWx0OmBzcGFuYH19LHNldHVwKGUpe3JldHVybihlLHQpPT4oVigpLE0oUChCKSx7ImFyaWEtaGlkZGVuIjpgdHJ1ZWAsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZH0se2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bdFswXXx8PUQoYOKWvGApXSldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYF0pKX19KSxbZWQsdGRdPXIoYFNlbGVjdEl0ZW1gKSxuZD1IKHtfX25hbWU6YFNlbGVjdEl0ZW1gLHByb3BzOnt2YWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx0ZXh0VmFsdWU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbYHNlbGVjdGBdLHNldHVwKHQse2VtaXQ6bn0pe2xldCByPXQsYT1uLHtkaXNhYmxlZDpvfT1TKHIpLHM9UnUoKSxjPVd1KCkse2ZvcndhcmRSZWY6bCxjdXJyZW50RWxlbWVudDp1fT1lKCkse0NvbGxlY3Rpb25JdGVtOmR9PW1jKCksZj14KCgpPT5QdShzLm1vZGVsVmFsdWU/LnZhbHVlLHIudmFsdWUscy5ieSkpLHA9aighMSksbT1qKHIudGV4dFZhbHVlPz9gYCksaD1pKHZvaWQgMCxgcmVrYS1zZWxlY3QtaXRlbS10ZXh0YCk7YXN5bmMgZnVuY3Rpb24gZyhlKXtlLmRlZmF1bHRQcmV2ZW50ZWR8fG1zKGBzZWxlY3Quc2VsZWN0YCxfLHtvcmlnaW5hbEV2ZW50OmUsdmFsdWU6ci52YWx1ZX0pfWFzeW5jIGZ1bmN0aW9uIF8oZSl7YXdhaXQgRigpLGEoYHNlbGVjdGAsZSksIWUuZGVmYXVsdFByZXZlbnRlZCYmKG8udmFsdWV8fChzLm9uVmFsdWVDaGFuZ2Uoci52YWx1ZSkscy5tdWx0aXBsZS52YWx1ZXx8cy5vbk9wZW5DaGFuZ2UoITEpKSl9YXN5bmMgZnVuY3Rpb24gdihlKXthd2FpdCBGKCksIWUuZGVmYXVsdFByZXZlbnRlZCYmKG8udmFsdWU/Yy5vbkl0ZW1MZWF2ZT8uKCk6ZS5jdXJyZW50VGFyZ2V0Py5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pKX1hc3luYyBmdW5jdGlvbiB5KGUpe2F3YWl0IEYoKSwhZS5kZWZhdWx0UHJldmVudGVkJiZlLmN1cnJlbnRUYXJnZXQ9PT1aKCkmJmMub25JdGVtTGVhdmU/LigpfWFzeW5jIGZ1bmN0aW9uIGIoZSl7YXdhaXQgRigpLCFlLmRlZmF1bHRQcmV2ZW50ZWQmJihjLnNlYXJjaFJlZj8udmFsdWU9PT1gYHx8ZS5rZXkhPT1gIGApJiYoTnUuaW5jbHVkZXMoZS5rZXkpJiZnKGUpLGUua2V5PT09YCBgJiZlLnByZXZlbnREZWZhdWx0KCkpfWlmKHIudmFsdWU9PT1gYCl0aHJvdyBFcnJvcihgQSA8U2VsZWN0SXRlbSAvPiBtdXN0IGhhdmUgYSB2YWx1ZSBwcm9wIHRoYXQgaXMgbm90IGFuIGVtcHR5IHN0cmluZy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBTZWxlY3QgdmFsdWUgY2FuIGJlIHNldCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gY2xlYXIgdGhlIHNlbGVjdGlvbiBhbmQgc2hvdyB0aGUgcGxhY2Vob2xkZXIuYCk7cmV0dXJuIHFlKCgpPT57dS52YWx1ZSYmYy5pdGVtUmVmQ2FsbGJhY2sodS52YWx1ZSxyLnZhbHVlLHIuZGlzYWJsZWQpfSksdGQoe3ZhbHVlOnIudmFsdWUsZGlzYWJsZWQ6byx0ZXh0SWQ6aCxpc1NlbGVjdGVkOmYsb25JdGVtVGV4dENoYW5nZTplPT57bS52YWx1ZT0oKG0udmFsdWV8fGU/LnRleHRDb250ZW50KT8/YGApLnRyaW0oKX19KSwoZSx0KT0+KFYoKSxNKFAoZCkse3ZhbHVlOnt0ZXh0VmFsdWU6bS52YWx1ZX19LHtkZWZhdWx0OlIoKCk9PltPKFAoQikse3JlZjpQKGwpLHJvbGU6YG9wdGlvbmAsImFyaWEtbGFiZWxsZWRieSI6UChoKSwiZGF0YS1oaWdobGlnaHRlZCI6cC52YWx1ZT9gYDp2b2lkIDAsImFyaWEtc2VsZWN0ZWQiOmYudmFsdWUsImRhdGEtc3RhdGUiOmYudmFsdWU/YGNoZWNrZWRgOmB1bmNoZWNrZWRgLCJhcmlhLWRpc2FibGVkIjpQKG8pfHx2b2lkIDAsImRhdGEtZGlzYWJsZWQiOlAobyk/YGA6dm9pZCAwLHRhYmluZGV4OlAobyk/dm9pZCAwOi0xLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsb25Gb2N1czp0WzBdfHw9ZT0+cC52YWx1ZT0hMCxvbkJsdXI6dFsxXXx8PWU9PnAudmFsdWU9ITEsb25Qb2ludGVydXA6ZyxvblBvaW50ZXJkb3duOnRbMl18fD1lPT57ZS5jdXJyZW50VGFyZ2V0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LG9uVG91Y2hlbmQ6dFszXXx8PVplKCgpPT57fSxbYHByZXZlbnRgLGBzdG9wYF0pLG9uUG9pbnRlcm1vdmU6dixvblBvaW50ZXJsZWF2ZTp5LG9uS2V5ZG93bjpifSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgYXJpYS1sYWJlbGxlZGJ5YCxgZGF0YS1oaWdobGlnaHRlZGAsYGFyaWEtc2VsZWN0ZWRgLGBkYXRhLXN0YXRlYCxgYXJpYS1kaXNhYmxlZGAsYGRhdGEtZGlzYWJsZWRgLGB0YWJpbmRleGAsYGFzYCxgYXMtY2hpbGRgXSldKSxfOjN9LDgsW2B2YWx1ZWBdKSl9fSkscmQ9SCh7X19uYW1lOmBTZWxlY3RJdGVtSW5kaWNhdG9yYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHNwYW5gfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPWVkKCk7cmV0dXJuKGUscik9PlAobikuaXNTZWxlY3RlZC52YWx1ZT8oVigpLE0oUChCKSx6KHtrZXk6MCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sdCkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpKTpMKGB2LWlmYCwhMCl9fSksaWQ9SCh7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgU2VsZWN0SXRlbVRleHRgLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cCh0KXtsZXQgbj10LHI9UnUoKSxpPVd1KCksYT1lZCgpLHtmb3J3YXJkUmVmOm8sY3VycmVudEVsZW1lbnQ6c309ZSgpLGM9eCgoKT0+KHt2YWx1ZTphLnZhbHVlLGRpc2FibGVkOmEuZGlzYWJsZWQudmFsdWUsdGV4dENvbnRlbnQ6cy52YWx1ZT8udGV4dENvbnRlbnQ/P2EudmFsdWU/LnRvU3RyaW5nKCk/P2BgfSkpO3JldHVybiBxZSgoKT0+e3MudmFsdWUmJihhLm9uSXRlbVRleHRDaGFuZ2Uocy52YWx1ZSksaS5pdGVtVGV4dFJlZkNhbGxiYWNrKHMudmFsdWUsYS52YWx1ZSxhLmRpc2FibGVkLnZhbHVlKSxyLm9uT3B0aW9uQWRkKGMudmFsdWUpKX0pLG9lKCgpPT57ci5vbk9wdGlvblJlbW92ZShjLnZhbHVlKX0pLChlLHQpPT4oVigpLE0oUChCKSx6KHtpZDpQKGEpLnRleHRJZCxyZWY6UChvKX0sey4uLm4sLi4uZS4kYXR0cnN9KSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSwxNixbYGlkYF0pKX19KSxhZD1IKHtfX25hbWU6YFNlbGVjdFBvcnRhbGAscHJvcHM6e3RvOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGRlZmVyOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGZvcmNlTW91bnQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihWKCksTShQKGZjKSxOZShmZSh0KSkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpKX19KSxvZD1IKHtfX25hbWU6YFNlbGVjdFNjcm9sbEJ1dHRvbkltcGxgLGVtaXRzOltgYXV0b1Njcm9sbGBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPXQse2dldEl0ZW1zOnJ9PW1jKCksaT1XdSgpLGE9aihudWxsKTtmdW5jdGlvbiBvKCl7YS52YWx1ZSE9PW51bGwmJih3aW5kb3cuY2xlYXJJbnRlcnZhbChhLnZhbHVlKSxhLnZhbHVlPW51bGwpfWQoKCk9PntyKCkubWFwKGU9PmUucmVmKS5maW5kKGU9PmU9PT1aKCkpPy5zY3JvbGxJbnRvVmlldyh7YmxvY2s6YG5lYXJlc3RgfSl9KTtmdW5jdGlvbiBzKCl7YS52YWx1ZT09PW51bGwmJihhLnZhbHVlPXdpbmRvdy5zZXRJbnRlcnZhbCgoKT0+e24oYGF1dG9TY3JvbGxgKX0sNTApKX1mdW5jdGlvbiBjKCl7aS5vbkl0ZW1MZWF2ZT8uKCksYS52YWx1ZT09PW51bGwmJihhLnZhbHVlPXdpbmRvdy5zZXRJbnRlcnZhbCgoKT0+e24oYGF1dG9TY3JvbGxgKX0sNTApKX1yZXR1cm4gSWUoKCk9Pm8oKSksKGUsdCk9PihWKCksTShQKEIpLHooeyJhcmlhLWhpZGRlbiI6YHRydWVgLHN0eWxlOntmbGV4U2hyaW5rOjB9fSxlLiRwYXJlbnQ/LiRwcm9wcyx7b25Qb2ludGVyZG93bjpzLG9uUG9pbnRlcm1vdmU6YyxvblBvaW50ZXJsZWF2ZTp0WzBdfHw9KCk9PntvKCl9fSkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpKX19KSxzZD1IKHtfX25hbWU6YFNlbGVjdFNjcm9sbERvd25CdXR0b25gLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtsZXQgbj1XdSgpLHI9bi5wb3NpdGlvbj09PWBpdGVtLWFsaWduZWRgP3F1KCk6dm9pZCAwLHtmb3J3YXJkUmVmOmksY3VycmVudEVsZW1lbnQ6YX09ZSgpLG89aighMSk7cmV0dXJuIGQoZT0+e2lmKG4udmlld3BvcnQ/LnZhbHVlJiZuLmlzUG9zaXRpb25lZD8udmFsdWUpe2xldCB0PW4udmlld3BvcnQudmFsdWU7ZnVuY3Rpb24gcigpe2xldCBlPXQuc2Nyb2xsSGVpZ2h0LXQuY2xpZW50SGVpZ2h0O28udmFsdWU9TWF0aC5jZWlsKHQuc2Nyb2xsVG9wKTxlfXIoKSx0LmFkZEV2ZW50TGlzdGVuZXIoYHNjcm9sbGAsciksZSgoKT0+dC5yZW1vdmVFdmVudExpc3RlbmVyKGBzY3JvbGxgLHIpKX19KSxOKGEsKCk9PnthLnZhbHVlJiZyPy5vblNjcm9sbEJ1dHRvbkNoYW5nZShhLnZhbHVlKX0pLChlLHQpPT5vLnZhbHVlPyhWKCksTShvZCx7a2V5OjAscmVmOlAoaSksb25BdXRvU2Nyb2xsOnRbMF18fD0oKT0+e2xldHt2aWV3cG9ydDplLHNlbGVjdGVkSXRlbTp0fT1QKG4pO2U/LnZhbHVlJiZ0Py52YWx1ZSYmKGUudmFsdWUuc2Nyb2xsVG9wPWUudmFsdWUuc2Nyb2xsVG9wK3QudmFsdWUub2Zmc2V0SGVpZ2h0KX19LHtkZWZhdWx0OlIoKCk9PltJKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDUxMikpOkwoYHYtaWZgLCEwKX19KSxjZD1IKHtfX25hbWU6YFNlbGVjdFNjcm9sbFVwQnV0dG9uYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7bGV0IG49V3UoKSxyPW4ucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYD9xdSgpOnZvaWQgMCx7Zm9yd2FyZFJlZjppLGN1cnJlbnRFbGVtZW50OmF9PWUoKSxvPWooITEpO3JldHVybiBkKGU9PntpZihuLnZpZXdwb3J0Py52YWx1ZSYmbi5pc1Bvc2l0aW9uZWQ/LnZhbHVlKXtsZXQgdD1uLnZpZXdwb3J0LnZhbHVlO2Z1bmN0aW9uIHIoKXtvLnZhbHVlPXQuc2Nyb2xsVG9wPjB9cigpLHQuYWRkRXZlbnRMaXN0ZW5lcihgc2Nyb2xsYCxyKSxlKCgpPT50LnJlbW92ZUV2ZW50TGlzdGVuZXIoYHNjcm9sbGAscikpfX0pLE4oYSwoKT0+e2EudmFsdWUmJnI/Lm9uU2Nyb2xsQnV0dG9uQ2hhbmdlKGEudmFsdWUpfSksKGUsdCk9Pm8udmFsdWU/KFYoKSxNKG9kLHtrZXk6MCxyZWY6UChpKSxvbkF1dG9TY3JvbGw6dFswXXx8PSgpPT57bGV0e3ZpZXdwb3J0OmUsc2VsZWN0ZWRJdGVtOnR9PVAobik7ZT8udmFsdWUmJnQ/LnZhbHVlJiYoZS52YWx1ZS5zY3JvbGxUb3A9ZS52YWx1ZS5zY3JvbGxUb3AtdC52YWx1ZS5vZmZzZXRIZWlnaHQpfX0se2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sNTEyKSk6TChgdi1pZmAsITApfX0pLGxkPUgoe19fbmFtZTpgU2VsZWN0VHJpZ2dlcmAscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LHJlZmVyZW5jZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYnV0dG9uYH19LHNldHVwKHQpe2xldCBuPXQscj1SdSgpLHtmb3J3YXJkUmVmOmEsY3VycmVudEVsZW1lbnQ6b309ZSgpLHM9eCgoKT0+ci5kaXNhYmxlZD8udmFsdWV8fG4uZGlzYWJsZWQpO3IuY29udGVudElkfHw9aSh2b2lkIDAsYHJla2Etc2VsZWN0LWNvbnRlbnRgKSxxZSgoKT0+e3Iub25UcmlnZ2VyQ2hhbmdlKG8udmFsdWUpfSk7bGV0e2dldEl0ZW1zOmN9PW1jKCkse3NlYXJjaDpsLGhhbmRsZVR5cGVhaGVhZFNlYXJjaDp1LHJlc2V0VHlwZWFoZWFkOmR9PVJzKCk7ZnVuY3Rpb24gZigpe3MudmFsdWV8fChyLm9uT3BlbkNoYW5nZSghMCksZCgpKX1mdW5jdGlvbiBwKGUpe2YoKSxyLnRyaWdnZXJQb2ludGVyRG93blBvc1JlZi52YWx1ZT17eDpNYXRoLnJvdW5kKGUucGFnZVgpLHk6TWF0aC5yb3VuZChlLnBhZ2VZKX19ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5idXR0b249PT0wJiZlLmN0cmxLZXk9PT0hMX1sZXQgaD0hMTtmdW5jdGlvbiBnKGUpe2lmKGUucG9pbnRlclR5cGU9PT1gdG91Y2hgKXJldHVybiBlLnByZXZlbnREZWZhdWx0KCk7bGV0IHQ9ZS50YXJnZXQ7dC5oYXNQb2ludGVyQ2FwdHVyZShlLnBvaW50ZXJJZCkmJnQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGUucG9pbnRlcklkKSxtKGUpJiYocChlKSxoPSEwKX1mdW5jdGlvbiBfKGUpe20oZSkmJmUucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiB2KGUpe2h8fGUuY3VycmVudFRhcmdldD8uZm9jdXMoKSxoPSExfXJldHVybihlLHQpPT4oVigpLE0oUCh5YykseyJhcy1jaGlsZCI6YGAscmVmZXJlbmNlOmUucmVmZXJlbmNlfSx7ZGVmYXVsdDpSKCgpPT5bTyhQKEIpLHtyZWY6UChhKSxyb2xlOmBjb21ib2JveGAsdHlwZTplLmFzPT09YGJ1dHRvbmA/YGJ1dHRvbmA6dm9pZCAwLCJhcmlhLWNvbnRyb2xzIjpQKHIpLmNvbnRlbnRJZCwiYXJpYS1leHBhbmRlZCI6UChyKS5vcGVuLnZhbHVlfHwhMSwiYXJpYS1yZXF1aXJlZCI6UChyKS5yZXF1aXJlZD8udmFsdWUsImFyaWEtYXV0b2NvbXBsZXRlIjpgbm9uZWAsZGlzYWJsZWQ6cy52YWx1ZSxkaXI6UChyKT8uZGlyLnZhbHVlLCJkYXRhLXN0YXRlIjpQKHIpPy5vcGVuLnZhbHVlP2BvcGVuYDpgY2xvc2VkYCwiZGF0YS1kaXNhYmxlZCI6cy52YWx1ZT9gYDp2b2lkIDAsImRhdGEtcGxhY2Vob2xkZXIiOlAoSXUpKFAocikubW9kZWxWYWx1ZT8udmFsdWUpP2BgOnZvaWQgMCwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzLG9uQ2xpY2s6dixvblBvaW50ZXJkb3duOmcsb25Nb3VzZWRvd246XyxvblBvaW50ZXJ1cDp0WzBdfHw9WmUoZT0+e2UucG9pbnRlclR5cGU9PT1gdG91Y2hgJiZwKGUpfSxbYHByZXZlbnRgXSksb25LZXlkb3duOnRbMV18fD1lPT57bGV0IHQ9UChsKSE9PWBgOyEoZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5KSYmZS5rZXkubGVuZ3RoPT09MSYmdCYmZS5rZXk9PT1gIGB8fChQKHUpKGUua2V5LFAoYykoKSksUChNdSkuaW5jbHVkZXMoZS5rZXkpJiYoZigpLGUucHJldmVudERlZmF1bHQoKSkpfX0se2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYHR5cGVgLGBhcmlhLWNvbnRyb2xzYCxgYXJpYS1leHBhbmRlZGAsYGFyaWEtcmVxdWlyZWRgLGBkaXNhYmxlZGAsYGRpcmAsYGRhdGEtc3RhdGVgLGBkYXRhLWRpc2FibGVkYCxgZGF0YS1wbGFjZWhvbGRlcmAsYGFzLWNoaWxkYCxgYXNgXSldKSxfOjN9LDgsW2ByZWZlcmVuY2VgXSkpfX0pLHVkPUgoe19fbmFtZTpgU2VsZWN0VmFsdWVgLHByb3BzOntwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YHNwYW5gfX0sc2V0dXAodCl7bGV0IG49dCx7Zm9yd2FyZFJlZjpyLGN1cnJlbnRFbGVtZW50Oml9PWUoKSxhPVJ1KCk7cWUoKCk9PnthLnZhbHVlRWxlbWVudD1pfSk7bGV0IG89eCgoKT0+e2xldCBlPVtdLHQ9QXJyYXkuZnJvbShhLm9wdGlvbnNTZXQudmFsdWUpLG49ZT0+dC5maW5kKHQ9PlB1KGUsdC52YWx1ZSxhLmJ5KSk7cmV0dXJuIGU9QXJyYXkuaXNBcnJheShhLm1vZGVsVmFsdWUudmFsdWUpP2EubW9kZWxWYWx1ZS52YWx1ZS5tYXAoZT0+bihlKT8udGV4dENvbnRlbnQ/P2BgKTpbbihhLm1vZGVsVmFsdWUudmFsdWUpPy50ZXh0Q29udGVudD8/YGBdLGUuZmlsdGVyKEJvb2xlYW4pfSkscz14KCgpPT5vLnZhbHVlLmxlbmd0aD9vLnZhbHVlLmpvaW4oYCwgYCk6bi5wbGFjZWhvbGRlcik7cmV0dXJuKGUsdCk9PihWKCksTShQKEIpLHtyZWY6UChyKSxhczplLmFzLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLHN0eWxlOntwb2ludGVyRXZlbnRzOmBub25lYH0sImRhdGEtcGxhY2Vob2xkZXIiOm8udmFsdWUubGVuZ3RoP3ZvaWQgMDpuLnBsYWNlaG9sZGVyfSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGAse3NlbGVjdGVkTGFiZWw6by52YWx1ZSxtb2RlbFZhbHVlOlAoYSkubW9kZWxWYWx1ZS52YWx1ZX0sKCk9PltEKHhlKHMudmFsdWUpLDEpXSldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYCxgZGF0YS1wbGFjZWhvbGRlcmBdKSl9fSksZGQ9SCh7X19uYW1lOmBTZWxlY3RWaWV3cG9ydGAscHJvcHM6e25vbmNlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCl7bGV0IG49dCx7bm9uY2U6cn09UyhuKSxpPWp1KHIpLGE9V3UoKSxvPWEucG9zaXRpb249PT1gaXRlbS1hbGlnbmVkYD9xdSgpOnZvaWQgMCx7Zm9yd2FyZFJlZjpzLGN1cnJlbnRFbGVtZW50OmN9PWUoKTtxZSgoKT0+e2E/Lm9uVmlld3BvcnRDaGFuZ2UoYy52YWx1ZSl9KTtsZXQgbD1qKDApO2Z1bmN0aW9uIHUoZSl7bGV0IHQ9ZS5jdXJyZW50VGFyZ2V0LHtzaG91bGRFeHBhbmRPblNjcm9sbFJlZjpuLGNvbnRlbnRXcmFwcGVyOnJ9PW8/P3t9O2lmKG4/LnZhbHVlJiZyPy52YWx1ZSl7bGV0IGU9TWF0aC5hYnMobC52YWx1ZS10LnNjcm9sbFRvcCk7aWYoZT4wKXtsZXQgbj13aW5kb3cuaW5uZXJIZWlnaHQtMjAsaT1OdW1iZXIucGFyc2VGbG9hdChyLnZhbHVlLnN0eWxlLm1pbkhlaWdodCksYT1OdW1iZXIucGFyc2VGbG9hdChyLnZhbHVlLnN0eWxlLmhlaWdodCksbz1NYXRoLm1heChpLGEpO2lmKG88bil7bGV0IGk9bytlLGE9TWF0aC5taW4obixpKSxzPWktYTtyLnZhbHVlLnN0eWxlLmhlaWdodD1gJHthfXB4YCxyLnZhbHVlLnN0eWxlLmJvdHRvbT09PWAwcHhgJiYodC5zY3JvbGxUb3A9cz4wP3M6MCxyLnZhbHVlLnN0eWxlLmp1c3RpZnlDb250ZW50PWBmbGV4LWVuZGApfX19bC52YWx1ZT10LnNjcm9sbFRvcH1yZXR1cm4oZSx0KT0+KFYoKSxtKHdlLG51bGwsW08oUChCKSx6KHtyZWY6UChzKSwiZGF0YS1yZWthLXNlbGVjdC12aWV3cG9ydCI6YGAscm9sZTpgcHJlc2VudGF0aW9uYH0sey4uLmUuJGF0dHJzLC4uLm59LHtzdHlsZTp7cG9zaXRpb246YHJlbGF0aXZlYCxmbGV4OjEsb3ZlcmZsb3c6YGhpZGRlbiBhdXRvYH0sb25TY3JvbGw6dX0pLHtkZWZhdWx0OlIoKCk9PltJKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2KSxPKFAoQikse2FzOmBzdHlsZWAsbm9uY2U6UChpKX0se2RlZmF1bHQ6UigoKT0+dFswXXx8PVtEKGAgLyogSGlkZSBzY3JvbGxiYXJzIGNyb3NzLWJyb3dzZXIgYW5kIGVuYWJsZSBtb21lbnR1bSBzY3JvbGwgZm9yIHRvdWNoIGRldmljZXMgKi8gW2RhdGEtcmVrYS1zZWxlY3Qtdmlld3BvcnRdIHsgc2Nyb2xsYmFyLXdpZHRoOm5vbmU7IC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9IFtkYXRhLXJla2Etc2VsZWN0LXZpZXdwb3J0XTo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lOyB9IGApXSksXzoxLF9fOlswXX0sOCxbYG5vbmNlYF0pXSw2NCkpfX0pLGZkPUgoe19fbmFtZTpgSW5wdXRgLHByb3BzOntkZWZhdWx0VmFsdWU6e30sbW9kZWxWYWx1ZTp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPWUscj1hdChuLGBtb2RlbFZhbHVlYCx0LHtwYXNzaXZlOiEwLGRlZmF1bHRWYWx1ZTpuLmRlZmF1bHRWYWx1ZX0pO3JldHVybihlLHQpPT5tZSgoVigpLG0oYGlucHV0YCx7Im9uVXBkYXRlOm1vZGVsVmFsdWUiOnRbMF18fD1lPT5nZShyKT9yLnZhbHVlPWU6bnVsbCwiZGF0YS1zbG90IjpgaW5wdXRgLGNsYXNzOlVlKFAoWGUpKGBkYXJrOmJnLWlucHV0LzMwIGJvcmRlci1pbnB1dCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBkYXJrOmFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUvNTAgZGlzYWJsZWQ6YmctaW5wdXQvNTAgZGFyazpkaXNhYmxlZDpiZy1pbnB1dC84MCBoLTggcm91bmRlZC1sZyBib3JkZXIgYmctdHJhbnNwYXJlbnQgcHgtMi41IHB5LTEgdGV4dC1iYXNlIHRyYW5zaXRpb24tY29sb3JzIGZpbGU6aC02IGZpbGU6dGV4dC1zbSBmaWxlOmZvbnQtbWVkaXVtIGZvY3VzLXZpc2libGU6cmluZy0zIGFyaWEtaW52YWxpZDpyaW5nLTMgbWQ6dGV4dC1zbSB3LWZ1bGwgbWluLXctMCBvdXRsaW5lLW5vbmUgZmlsZTppbmxpbmUtZmxleCBmaWxlOmJvcmRlci0wIGZpbGU6YmctdHJhbnNwYXJlbnQgZmlsZTp0ZXh0LWZvcmVncm91bmQgcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOm9wYWNpdHktNTBgLG4uY2xhc3MpKX0sbnVsbCwyKSksW1tRZSxQKHIpXV0pfX0pLHBkPXtjbGFzczpgbXgtYXV0byBmbGV4IG1pbi1oLVs3MHZoXSBtYXgtdy1tZCBmbGV4LWNvbCBqdXN0aWZ5LWNlbnRlciBweC00YH0sbWQ9e2NsYXNzOmBmbGV4IHNpemUtMTIgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBiZy1wcmltYXJ5LzEwIHRleHQtcHJpbWFyeWB9LGhkPXtjbGFzczpgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTFgfSxnZD17ImFyaWEtbGFiZWxsZWRieSI6YGF1dGhnYXRlLXNlY3VyaXR5LWhlYWRpbmdgLGNsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xLjUgdGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxfZD17Y2xhc3M6YGZsZXggaXRlbXMtc3RhcnQgZ2FwLTEuNWB9LHZkPXtjbGFzczpgZmxleCBpdGVtcy1zdGFydCBnYXAtMS41YH0seWQ9e2NsYXNzOmBmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0xLjVgfSxiZD17Y2xhc3M6YHJlbGF0aXZlYH0seGQ9KChlLHQpPT57bGV0IG49ZS5fX3ZjY09wdHN8fGU7Zm9yKGxldFtlLHJdb2YgdCluW2VdPXI7cmV0dXJuIG59KShIKHtfX25hbWU6YEF1dGhHYXRlYCxzZXR1cChlKXtsZXQgdD1ZZSgpLG49VGUoKSxyPWooYGApLGk9aighMSksYT1qKG51bGwpLG89eCgoKT0+ci52YWx1ZS50cmltKCkhPT1gYCk7ZnVuY3Rpb24gcygpe2xldCBlPXIudmFsdWU7ci52YWx1ZT1gYCx0LnN1Ym1pdChlKSxuLnJlZnJlc2goKX1mdW5jdGlvbiBjKCl7RigoKT0+YS52YWx1ZT8uJGVsPy5mb2N1cygpKX1yZXR1cm4gcWUoYyksTigoKT0+dC5lcnJvcixlPT57ZSYmYygpfSksKGUsbik9PntsZXQgYz1rKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gVigpLG0oYGRpdmAscGQsW08oUChoKSxudWxsLHtkZWZhdWx0OlIoKCk9PltPKFAoSmUpLHtjbGFzczpgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTMgdGV4dC1jZW50ZXJgfSx7ZGVmYXVsdDpSKCgpPT5bdihgZGl2YCxtZCxbTyhjLHtpY29uOlAoR2UpLGNsYXNzOmBzaXplLTVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pXSksdihgZGl2YCxoZCxbblszXXx8PXYoYHNwYW5gLHtjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgTExNIEdhdGV3YXlgLC0xKSxPKFAoaGUpLHtjbGFzczpgdGV4dC1sZyBmb250LXNlbWlib2xkYH0se2RlZmF1bHQ6UigoKT0+Wy4uLm5bMl18fD1bRChgQWRtaW4ga2V5IHJlcXVpcmVkYCwtMSldXSksXzoxfSldKSxPKFAobHQpLG51bGwse2RlZmF1bHQ6UigoKT0+Wy4uLm5bNF18fD1bRChgRW50ZXIgYW4gYWRtaW4gQVBJIGtleSB0byBjb250aW51ZS5gLC0xKV1dKSxfOjF9KV0pLF86MX0pLE8oUChhZSkse2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC00YH0se2RlZmF1bHQ6UigoKT0+W25bMTBdfHw9dihgaDJgLHtpZDpgYXV0aGdhdGUtc2VjdXJpdHktaGVhZGluZ2AsY2xhc3M6YHNyLW9ubHlgfSxgIEhvdyB0aGlzIGtleSBpcyBoYW5kbGVkIGAsLTEpLHYoYHVsYCxnZCxbdihgbGlgLF9kLFtPKGMse2ljb246UChsZSksY2xhc3M6YG10LTAuNSBzaXplLTMgc2hyaW5rLTBgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLG5bNV18fD12KGBzcGFuYCxudWxsLGBLZXB0IG9ubHkgaW4gdGhpcyB0YWIncyBzZXNzaW9uIHN0b3JhZ2VgLC0xKV0pLHYoYGxpYCx2ZCxbTyhjLHtpY29uOlAobGUpLGNsYXNzOmBtdC0wLjUgc2l6ZS0zIHNocmluay0wYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxuWzZdfHw9dihgc3BhbmAsbnVsbCxgTmV2ZXIgd3JpdHRlbiB0byBkaXNrYCwtMSldKSx2KGBsaWAseWQsW08oYyx7aWNvbjpQKGxlKSxjbGFzczpgbXQtMC41IHNpemUtMyBzaHJpbmstMGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksbls3XXx8PXYoYHNwYW5gLG51bGwsYFNlbnQgb25seSB0byB0aGlzIHBhZ2UncyBvd24gL2FkbWluL2FwaS8qIHJlcXVlc3RzYCwtMSldKV0pLHYoYGZvcm1gLHtjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtM2Asb25TdWJtaXQ6WmUocyxbYHByZXZlbnRgXSl9LFt2KGBkaXZgLGJkLFtPKFAoZmQpLHtyZWZfa2V5OmBrZXlJbnB1dEVsYCxyZWY6YSxtb2RlbFZhbHVlOnIudmFsdWUsIm9uVXBkYXRlOm1vZGVsVmFsdWUiOm5bMF18fD1lPT5yLnZhbHVlPWUsdHlwZTppLnZhbHVlP2B0ZXh0YDpgcGFzc3dvcmRgLGF1dG9jb21wbGV0ZTpgb2ZmYCxwbGFjZWhvbGRlcjpgQVBJIGtleWAsImFyaWEtbGFiZWwiOmBBZG1pbiBBUEkga2V5YCwiYXJpYS1pbnZhbGlkIjohIVAodCkuZXJyb3IsImFyaWEtZGVzY3JpYmVkYnkiOlAodCkuZXJyb3I/YGF1dGhnYXRlLWVycm9yYDp2b2lkIDAsY2xhc3M6VWUoW2BoLTEwIHByLTEwYCx7ImF1dGhnYXRlLXNoYWtlIjpQKHQpLmVycm9yfV0pfSxudWxsLDgsW2Btb2RlbFZhbHVlYCxgdHlwZWAsYGFyaWEtaW52YWxpZGAsYGFyaWEtZGVzY3JpYmVkYnlgLGBjbGFzc2BdKSxPKFAob3QpLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YGdob3N0YCxzaXplOmBpY29uLXhzYCxjbGFzczpgYWJzb2x1dGUgdG9wLTEvMiByaWdodC0xLjUgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kYCwiYXJpYS1sYWJlbCI6aS52YWx1ZT9gSGlkZSBrZXlgOmBTaG93IGtleWAsb25DbGljazpuWzFdfHw9ZT0+aS52YWx1ZT0haS52YWx1ZX0se2RlZmF1bHQ6UigoKT0+W08oYyx7aWNvbjppLnZhbHVlP1AodSk6UChyZSksY2xhc3M6YHNpemUtMy41YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0sOCxbYGFyaWEtbGFiZWxgXSldKSxPKFAob3QpLHt0eXBlOmBzdWJtaXRgLGNsYXNzOmB3LWZ1bGxgLGRpc2FibGVkOiFvLnZhbHVlfSx7ZGVmYXVsdDpSKCgpPT5bLi4ubls4XXx8PVtEKGAgQ29udGludWUgYCwtMSldXSksXzoxfSw4LFtgZGlzYWJsZWRgXSldLDMyKSxQKHQpLmVycm9yPyhWKCksTShQKG50KSx7a2V5OjAsaWQ6YGF1dGhnYXRlLWVycm9yYCx2YXJpYW50OmBkZXN0cnVjdGl2ZWB9LHtkZWZhdWx0OlIoKCk9PltPKFAoZnMpLG51bGwse2RlZmF1bHQ6UigoKT0+Wy4uLm5bOV18fD1bRChgQXV0aGVudGljYXRpb24gZmFpbGVkYCwtMSldXSksXzoxfSksTyhQKHV0KSxudWxsLHtkZWZhdWx0OlIoKCk9PltEKHhlKFAodCkuZXJyb3IpLDEpXSksXzoxfSldKSxfOjF9KSk6TChgYCwhMCldKSxfOjF9KV0pLF86MX0pXSl9fX0pLFtbYF9fc2NvcGVJZGAsYGRhdGEtdi00YmU2YmMwOWBdXSksU2Q9e2NsYXNzOmBtdC0xIGxpc3QtZGlzYyBzcGFjZS15LTAuNSBwbC00IGZvbnQtbW9ubyB0ZXh0LXhzYH0sQ2Q9e2tleTowLGNsYXNzOmBtdC0xIHRleHQteHNgfSx3ZD1IKHtfX25hbWU6YENvbmZpZ1dhcm5pbmdzQmFubmVyYCxwcm9wczp7d2FybmluZ3M6e30sd2FybmluZ3NEcm9wcGVkOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49aighMSk7ZnVuY3Rpb24gcigpe24udmFsdWU9IW4udmFsdWV9cmV0dXJuKGUsaSk9PntsZXQgYT1rKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gdC53YXJuaW5ncy5sZW5ndGg+MD8oVigpLE0oUChudCkse2tleTowLHZhcmlhbnQ6YHdhcm5gfSx7ZGVmYXVsdDpSKCgpPT5bTyhhLHtpY29uOlAoemUpLGNsYXNzOmBzaXplLTRgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLE8oUChmcykse2NsYXNzOmBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTJgfSx7ZGVmYXVsdDpSKCgpPT5bdihgc3BhbmAsbnVsbCx4ZSh0Lndhcm5pbmdzLmxlbmd0aCkrYCBjb25maWd1cmF0aW9uIGAreGUodC53YXJuaW5ncy5sZW5ndGg9PT0xP2B3YXJuaW5nYDpgd2FybmluZ3NgKSwxKSxPKFAob3QpLHt0eXBlOmBidXR0b25gLHZhcmlhbnQ6YGdob3N0YCxzaXplOmB4c2AsImFyaWEtZXhwYW5kZWQiOm4udmFsdWUsImFyaWEtbGFiZWwiOmAke24udmFsdWU/YEhpZGVgOmBTaG93YH0gY29uZmlndXJhdGlvbiB3YXJuaW5nIGRldGFpbHNgLG9uQ2xpY2s6cn0se2RlZmF1bHQ6UigoKT0+W0QoeGUobi52YWx1ZT9gSGlkZWA6YFNob3dgKSwxKV0pLF86MX0sOCxbYGFyaWEtZXhwYW5kZWRgLGBhcmlhLWxhYmVsYF0pXSksXzoxfSksbi52YWx1ZT8oVigpLE0oUCh1dCkse2tleTowfSx7ZGVmYXVsdDpSKCgpPT5bdihgdWxgLFNkLFsoVighMCksbSh3ZSxudWxsLGYodC53YXJuaW5ncywoZSx0KT0+KFYoKSxtKGBsaWAse2tleTp0fSx4ZShlKSwxKSkpLDEyOCkpXSksdC53YXJuaW5nc0Ryb3BwZWQ/KFYoKSxtKGBwYCxDZCxgYW5kIGAreGUodC53YXJuaW5nc0Ryb3BwZWQpK2AgbW9yZSB3ZXJlIG5vdCBrZXB0YCwxKSk6TChgYCwhMCldKSxfOjF9KSk6TChgYCwhMCldKSxfOjF9KSk6TChgYCwhMCl9fX0pLFRkPUgoe19fbmFtZTpgU2VsZWN0YCxwcm9wczp7b3Blbjp7dHlwZTpCb29sZWFufSxkZWZhdWx0T3Blbjp7dHlwZTpCb29sZWFufSxkZWZhdWx0VmFsdWU6e30sbW9kZWxWYWx1ZTp7fSxudWxsYWJsZVZhbHVlOnt9LGJ5Ont0eXBlOltTdHJpbmcsRnVuY3Rpb25dfSxkaXI6e30sbXVsdGlwbGU6e3R5cGU6Qm9vbGVhbn0sYXV0b2NvbXBsZXRlOnt9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW59LG5hbWU6e30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbn19LGVtaXRzOltgdXBkYXRlOm1vZGVsVmFsdWVgLGB1cGRhdGU6b3BlbmBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPW8oZSx0KTtyZXR1cm4oZSx0KT0+KFYoKSxNKFAoQnUpLHooeyJkYXRhLXNsb3QiOmBzZWxlY3RgfSxQKG4pKSx7ZGVmYXVsdDpSKHQ9PltJKGUuJHNsb3RzLGBkZWZhdWx0YCxOZShmZSh0KSkpXSksXzozfSwxNikpfX0pLEVkPUgoe2luaGVyaXRBdHRyczohMSxfX25hbWU6YFNlbGVjdENvbnRlbnRgLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW59LHBvc2l0aW9uOntkZWZhdWx0OmBpdGVtLWFsaWduZWRgfSxib2R5TG9jazp7dHlwZTpCb29sZWFufSxtZW1vRGVwZW5kZW5jaWVzOnt9LHNpZGU6e30sc2lkZU9mZnNldDp7fSxzaWRlRmxpcDp7dHlwZTpCb29sZWFufSxhbGlnbjp7ZGVmYXVsdDpgY2VudGVyYH0sYWxpZ25PZmZzZXQ6e30sYWxpZ25GbGlwOnt0eXBlOkJvb2xlYW59LGF2b2lkQ29sbGlzaW9uczp7dHlwZTpCb29sZWFufSxjb2xsaXNpb25Cb3VuZGFyeTp7fSxjb2xsaXNpb25QYWRkaW5nOnt9LGFycm93UGFkZGluZzp7fSxoaWRlU2hpZnRlZEFycm93Ont0eXBlOkJvb2xlYW59LHN0aWNreTp7fSxoaWRlV2hlbkRldGFjaGVkOnt0eXBlOkJvb2xlYW59LHBvc2l0aW9uU3RyYXRlZ3k6e30sdXBkYXRlUG9zaXRpb25TdHJhdGVneTp7fSxkaXNhYmxlVXBkYXRlT25MYXlvdXRTaGlmdDp7dHlwZTpCb29sZWFufSxwcmlvcml0aXplUG9zaXRpb246e3R5cGU6Qm9vbGVhbn0scmVmZXJlbmNlOnt9LGRpcjp7fSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czp7dHlwZTpCb29sZWFufSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sZW1pdHM6W2BjbG9zZUF1dG9Gb2N1c2AsYGVzY2FwZUtleURvd25gLGBwb2ludGVyRG93bk91dHNpZGVgXSxzZXR1cChlLHtlbWl0OnR9KXtsZXQgbj1lLHI9dCxpPUEobixgY2xhc3NgKSxhPW8oaSxyKTtyZXR1cm4odCxyKT0+KFYoKSxNKFAoYWQpLG51bGwse2RlZmF1bHQ6UigoKT0+W08oUChRdSkseih7ImRhdGEtc2xvdCI6YHNlbGVjdC1jb250ZW50YCwiZGF0YS1hbGlnbi10cmlnZ2VyIjplLnBvc2l0aW9uPT09YGl0ZW0tYWxpZ25lZGB9LHsuLi50LiRhdHRycywuLi5QKGEpfSx7Y2xhc3M6UChYZSkoYGJnLXBvcG92ZXIgdGV4dC1wb3BvdmVyLWZvcmVncm91bmQgZGF0YS1vcGVuOmFuaW1hdGUtaW4gZGF0YS1jbG9zZWQ6YW5pbWF0ZS1vdXQgZGF0YS1jbG9zZWQ6ZmFkZS1vdXQtMCBkYXRhLW9wZW46ZmFkZS1pbi0wIGRhdGEtY2xvc2VkOnpvb20tb3V0LTk1IGRhdGEtb3Blbjp6b29tLWluLTk1IGRhdGEtW3NpZGU9Ym90dG9tXTpzbGlkZS1pbi1mcm9tLXRvcC0yIGRhdGEtW3NpZGU9bGVmdF06c2xpZGUtaW4tZnJvbS1yaWdodC0yIGRhdGEtW3NpZGU9cmlnaHRdOnNsaWRlLWluLWZyb20tbGVmdC0yIGRhdGEtW3NpZGU9dG9wXTpzbGlkZS1pbi1mcm9tLWJvdHRvbS0yIHJpbmctZm9yZWdyb3VuZC8xMCBtaW4tdy0zNiByb3VuZGVkLWxnIHNoYWRvdy1tZCByaW5nLTEgZHVyYXRpb24tMTAwIGRhdGEtW3NpZGU9aW5saW5lLXN0YXJ0XTpzbGlkZS1pbi1mcm9tLXJpZ2h0LTIgZGF0YS1bc2lkZT1pbmxpbmUtZW5kXTpzbGlkZS1pbi1mcm9tLWxlZnQtMiBjbi1tZW51LXRyYW5zbHVjZW50IHJlbGF0aXZlIHotNTAgbWF4LWgtKC0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0KSBvcmlnaW4tKC0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luKSBvdmVyZmxvdy14LWhpZGRlbiBvdmVyZmxvdy15LWF1dG8gZGF0YS1bYWxpZ24tdHJpZ2dlcj10cnVlXTphbmltYXRlLW5vbmVgLGUucG9zaXRpb249PT1gcG9wcGVyYCYmYGRhdGEtW3NpZGU9Ym90dG9tXTp0cmFuc2xhdGUteS0xIGRhdGEtW3NpZGU9bGVmdF06LXRyYW5zbGF0ZS14LTEgZGF0YS1bc2lkZT1yaWdodF06dHJhbnNsYXRlLXgtMSBkYXRhLVtzaWRlPXRvcF06LXRyYW5zbGF0ZS15LTFgLG4uY2xhc3MpfSkse2RlZmF1bHQ6UigoKT0+W08oUChBZCkpLE8oUChkZCkseyJkYXRhLXBvc2l0aW9uIjplLnBvc2l0aW9uLGNsYXNzOlVlKFAoWGUpKGBkYXRhLVtwb3NpdGlvbj1wb3BwZXJdOmgtKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci1oZWlnaHQpIGRhdGEtW3Bvc2l0aW9uPXBvcHBlcl06dy1mdWxsIGRhdGEtW3Bvc2l0aW9uPXBvcHBlcl06bWluLXctKC0tcmVrYS1zZWxlY3QtdHJpZ2dlci13aWR0aClgKSl9LHtkZWZhdWx0OlIoKCk9PltJKHQuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2BkYXRhLXBvc2l0aW9uYCxgY2xhc3NgXSksTyhQKGtkKSldKSxfOjN9LDE2LFtgZGF0YS1hbGlnbi10cmlnZ2VyYCxgY2xhc3NgXSldKSxfOjN9KSl9fSksRGQ9e2NsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIGFic29sdXRlIHJpZ2h0LTIgZmxleCBzaXplLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyYH0sT2Q9SCh7X19uYW1lOmBTZWxlY3RJdGVtYCxwcm9wczp7dmFsdWU6e30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbn0sdGV4dFZhbHVlOnt9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUscj1BKHQsYGNsYXNzYCksaT1uKHIpO3JldHVybihlLG4pPT4oVigpLE0oUChuZCkseih7ImRhdGEtc2xvdCI6YHNlbGVjdC1pdGVtYH0sUChpKSx7Y2xhc3M6UChYZSkoYGZvY3VzOmJnLWFjY2VudCBmb2N1czp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIG5vdC1kYXRhLVt2YXJpYW50PWRlc3RydWN0aXZlXTpmb2N1czoqKjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIGdhcC0xLjUgcm91bmRlZC1tZCBweS0xIHByLTggcGwtMS41IHRleHQtc20gWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCAqOltzcGFuXTpsYXN0OmZsZXggKjpbc3Bhbl06bGFzdDppdGVtcy1jZW50ZXIgKjpbc3Bhbl06bGFzdDpnYXAtMiByZWxhdGl2ZSBmbGV4IHctZnVsbCBjdXJzb3ItZGVmYXVsdCBpdGVtcy1jZW50ZXIgb3V0bGluZS1oaWRkZW4gc2VsZWN0LW5vbmUgZGF0YS1bZGlzYWJsZWRdOnBvaW50ZXItZXZlbnRzLW5vbmUgZGF0YS1bZGlzYWJsZWRdOm9wYWNpdHktNTAgWyZfc3ZnXTpwb2ludGVyLWV2ZW50cy1ub25lIFsmX3N2Z106c2hyaW5rLTBgLHQuY2xhc3MpfSkse2RlZmF1bHQ6UigoKT0+W3YoYHNwYW5gLERkLFtPKFAocmQpLG51bGwse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGluZGljYXRvci1pY29uYCx7fSwoKT0+W08oUCh1cykse2ljb246UChsZSksY2xhc3M6YHBvaW50ZXItZXZlbnRzLW5vbmUgc2l6ZS0zLjVgfSxudWxsLDgsW2BpY29uYF0pXSldKSxfOjN9KV0pLE8oUChpZCksbnVsbCx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSldKSxfOjN9LDE2LFtgY2xhc3NgXSkpfX0pLGtkPUgoe19fbmFtZTpgU2VsZWN0U2Nyb2xsRG93bkJ1dHRvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUscj1BKHQsYGNsYXNzYCksaT1uKHIpO3JldHVybihlLG4pPT4oVigpLE0oUChzZCkseih7ImRhdGEtc2xvdCI6YHNlbGVjdC1zY3JvbGwtZG93bi1idXR0b25gfSxQKGkpLHtjbGFzczpQKFhlKShgYmctcG9wb3ZlciB6LTEwIGZsZXggY3Vyc29yLWRlZmF1bHQgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEgWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNGAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpSKCgpPT5bSShlLiRzbG90cyxgZGVmYXVsdGAse30sKCk9PltPKFAodXMpLHtpY29uOlAoQyksY2xhc3M6YHNpemUtNGB9LG51bGwsOCxbYGljb25gXSldKV0pLF86M30sMTYsW2BjbGFzc2BdKSl9fSksQWQ9SCh7X19uYW1lOmBTZWxlY3RTY3JvbGxVcEJ1dHRvbmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUscj1BKHQsYGNsYXNzYCksaT1uKHIpO3JldHVybihlLG4pPT4oVigpLE0oUChjZCkseih7ImRhdGEtc2xvdCI6YHNlbGVjdC1zY3JvbGwtdXAtYnV0dG9uYH0sUChpKSx7Y2xhc3M6UChYZSkoYGJnLXBvcG92ZXIgei0xMCBmbGV4IGN1cnNvci1kZWZhdWx0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTRgLHQuY2xhc3MpfSkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgLHt9LCgpPT5bTyhQKHVzKSx7aWNvbjpQKFZlKSxjbGFzczpgc2l6ZS00YH0sbnVsbCw4LFtgaWNvbmBdKV0pXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSxqZD1IKHtfX25hbWU6YFNlbGVjdFRyaWdnZXJgLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFufSxyZWZlcmVuY2U6e30sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxzaXplOntkZWZhdWx0OmBkZWZhdWx0YH19LHNldHVwKGUpe2xldCB0PWUscj1BKHQsYGNsYXNzYCxgc2l6ZWApLGk9bihyKTtyZXR1cm4obixyKT0+KFYoKSxNKFAobGQpLHooeyJkYXRhLXNsb3QiOmBzZWxlY3QtdHJpZ2dlcmAsImRhdGEtc2l6ZSI6ZS5zaXplfSxQKGkpLHtjbGFzczpQKFhlKShgYm9yZGVyLWlucHV0IGRhdGEtcGxhY2Vob2xkZXI6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6YmctaW5wdXQvMzAgZGFyazpob3ZlcjpiZy1pbnB1dC81MCBmb2N1cy12aXNpYmxlOmJvcmRlci1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1yaW5nLzUwIGFyaWEtaW52YWxpZDpyaW5nLWRlc3RydWN0aXZlLzIwIGRhcms6YXJpYS1pbnZhbGlkOnJpbmctZGVzdHJ1Y3RpdmUvNDAgYXJpYS1pbnZhbGlkOmJvcmRlci1kZXN0cnVjdGl2ZSBkYXJrOmFyaWEtaW52YWxpZDpib3JkZXItZGVzdHJ1Y3RpdmUvNTAgZ2FwLTEuNSByb3VuZGVkLWxnIGJvcmRlciBiZy10cmFuc3BhcmVudCBweS0yIHByLTIgcGwtMi41IHRleHQtc20gdHJhbnNpdGlvbi1jb2xvcnMgc2VsZWN0LW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTMgYXJpYS1pbnZhbGlkOnJpbmctMyBkYXRhLVtzaXplPWRlZmF1bHRdOmgtOCBkYXRhLVtzaXplPXNtXTpoLTcgZGF0YS1bc2l6ZT1zbV06cm91bmRlZC1bbWluKHZhcigtLXJhZGl1cy1tZCksMTBweCldICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOmdhcC0xLjUgWyZfc3ZnOm5vdChbY2xhc3MqPXNpemUtXSldOnNpemUtNCBmbGV4IHctZml0IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gd2hpdGVzcGFjZS1ub3dyYXAgb3V0bGluZS1ub25lIGRpc2FibGVkOmN1cnNvci1ub3QtYWxsb3dlZCBkaXNhYmxlZDpvcGFjaXR5LTUwICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOmxpbmUtY2xhbXAtMSAqOmRhdGEtW3Nsb3Q9c2VsZWN0LXZhbHVlXTpmbGV4ICo6ZGF0YS1bc2xvdD1zZWxlY3QtdmFsdWVdOml0ZW1zLWNlbnRlciBbJl9zdmddOnBvaW50ZXItZXZlbnRzLW5vbmUgWyZfc3ZnXTpzaHJpbmstMGAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpSKCgpPT5bSShuLiRzbG90cyxgZGVmYXVsdGApLE8oUCgkdSkseyJhcy1jaGlsZCI6YGB9LHtkZWZhdWx0OlIoKCk9PltPKFAodXMpLHtpY29uOlAoQyksY2xhc3M6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBzaXplLTQgcG9pbnRlci1ldmVudHMtbm9uZWB9LG51bGwsOCxbYGljb25gXSldKSxfOjF9KV0pLF86M30sMTYsW2BkYXRhLXNpemVgLGBjbGFzc2BdKSl9fSksTWQ9SCh7X19uYW1lOmBTZWxlY3RWYWx1ZWAscHJvcHM6e3BsYWNlaG9sZGVyOnt9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e319LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihWKCksTShQKHVkKSx6KHsiZGF0YS1zbG90Ijpgc2VsZWN0LXZhbHVlYH0sdCkse2RlZmF1bHQ6UigoKT0+W0koZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYpKX19KSxOZD17cHJvdmlkZXJzOmBtb2RlbHNgLHVzYWdlOmBjb25zdW1lcnNgLGNoYXJ0czpgc3BlbmRgLGV2ZW50czpgcmVsaWFiaWxpdHlgLHRhcmdldHM6YHRhcmdldHNgfTtmdW5jdGlvbiBQZChlKXtsZXQgdD1lLnN0YXJ0c1dpdGgoYCNgKT9lLnNsaWNlKDEpOmUsbj10LmluZGV4T2YoYD9gKSxyPW49PT0tMT90OnQuc2xpY2UoMCxuKSxpPW49PT0tMT9gYDp0LnNsaWNlKG4rMSk7aWYoRmUocikpcmV0dXJue3BhZ2U6cixxdWVyeTpuZXcgVVJMU2VhcmNoUGFyYW1zKGkpfTtsZXQgYT1OZFtyXTtyZXR1cm4gYT97cGFnZTphLHF1ZXJ5Om5ldyBVUkxTZWFyY2hQYXJhbXN9OntwYWdlOkNlLHF1ZXJ5Om5ldyBVUkxTZWFyY2hQYXJhbXMoaSl9fWZ1bmN0aW9uIEZkKGUsdCl7bGV0IG49T2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbLGVdKT0+ZSE9PWBgKTtyZXR1cm4gbi5sZW5ndGg9PT0wP2AjJHtlfWA6YCMke2V9PyR7bmV3IFVSTFNlYXJjaFBhcmFtcyhuKS50b1N0cmluZygpfWB9dmFyIElkPS9eKGFsbHxncm91cDouK3x1c2VyOi4rfHByb3ZpZGVyOi4rKSQvO2Z1bmN0aW9uIExkKGUpe2xldCB0PXt9LG49ZS5nZXQoYHJhbmdlYCk7biYmTWUobikmJih0LnJhbmdlPW4pO2xldCByPWUuZ2V0KGBjbXBgKTtyJiZ2ZShyKSYmKHQuY21wPXIpO2xldCBpPWUuZ2V0KGBzY29wZWApO3JldHVybiBpJiZJZC50ZXN0KGkpJiYodC5zY29wZT1pKSx0fXZhciBSZD1uZXcgU2V0KFtgcmFuZ2VgLGBjbXBgLGBzY29wZWBdKTtmdW5jdGlvbiB6ZChlKXtsZXQgdD17fTtmb3IobGV0W24scl1vZiBlLmVudHJpZXMoKSlSZC5oYXMobil8fHIhPT1gYCYmKHRbbl09cik7cmV0dXJuIHR9dmFyIEJkPVBlKGBmaWx0ZXJzYCx7c3RhdGU6KCk9Pih7cmFuZ2U6YDdkYCxjbXA6TGUsc2NvcGU6YGFsbGB9KSxnZXR0ZXJzOnt3aW5kb3c6ZT0+RGVbZS5yYW5nZV0ud2luZG93LHNwYW46ZT0+RGVbZS5yYW5nZV0uc3BhbixjbXBTcGVjOmU9PntsZXQgdD1wZShlLnJhbmdlKTtyZXR1cm57Li4udCxyZXF1ZXN0ZWQ6ZS5jbXA9PT1gcHJldmAmJnQuYXZhaWxhYmxlfX19LGFjdGlvbnM6e3NldEZpbHRlcnMoZSl7ZS5yYW5nZSE9PXZvaWQgMCYmKHRoaXMucmFuZ2U9ZS5yYW5nZSksZS5jbXAhPT12b2lkIDAmJih0aGlzLmNtcD1lLmNtcCksZS5zY29wZSE9PXZvaWQgMCYmKHRoaXMuc2NvcGU9ZS5zY29wZSl9fX0pLFZkPXtjbGFzczpgZmxleCBmbGV4LXdyYXAgaXRlbXMtZW5kIGdhcC0zYH0sSGQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sVWQ9e2NsYXNzOmBmbGV4IGZsZXgtY29sIGdhcC0xYH0sV2Q9SCh7X19uYW1lOmBHbG9iYWxGaWx0ZXJCYXJgLHNldHVwKGUpe2xldCB0PXsiMjRoIjpgTGFzdCAyNCBob3Vyc2AsIjQ4aCI6YExhc3QgNDggaG91cnNgLCI3ZCI6YExhc3QgNyBkYXlzYCwiMTRkIjpgTGFzdCAxNCBkYXlzYCwiMzBkIjpgTGFzdCAzMCBkYXlzYCwiM21vIjpgTGFzdCAzIG1vbnRoc2AsIjZtbyI6YExhc3QgNiBtb250aHNgLCIxMm1vIjpgTGFzdCAxMiBtb250aHNgfSxuPUJkKCk7ZnVuY3Rpb24gcihlKXt0eXBlb2YgZT09YHN0cmluZ2AmJm4uc2V0RmlsdGVycyh7cmFuZ2U6ZX0pfWZ1bmN0aW9uIGkoKXtpZihuLmNtcD09PWBwcmV2YCl7bi5zZXRGaWx0ZXJzKHtjbXA6YG5vbmVgfSk7cmV0dXJufW4uY21wU3BlYy5hdmFpbGFibGUmJm4uc2V0RmlsdGVycyh7Y21wOmBwcmV2YH0pfWxldCBhPXgoKCk9Pm4uY21wIT09YHByZXZgJiYhbi5jbXBTcGVjLmF2YWlsYWJsZSksbz14KCgpPT5uLmNtcD09PWBwcmV2YCYmIW4uY21wU3BlYy5hdmFpbGFibGU/YENvbXBhcmlzb24gdW5hdmFpbGFibGUgZm9yIHRoaXMgcmFuZ2UgKCR7bi5jbXBTcGVjLnJlYXNvbn0pIOKAlCBjbGljayB0byB0dXJuIG9mZmA6bi5jbXBTcGVjLmF2YWlsYWJsZT9gQ29tcGFyZSBhZ2FpbnN0IHRoZSBwcmV2aW91cyBlcXVhbC1sZW5ndGggcGVyaW9kYDpgQ29tcGFyaXNvbiB1bmF2YWlsYWJsZSBmb3IgdGhpcyByYW5nZTogJHtuLmNtcFNwZWMucmVhc29ufWApLHM9aihuLnNjb3BlKTtOKCgpPT5uLnNjb3BlLGU9PntzLnZhbHVlPWV9KTtmdW5jdGlvbiBjKCl7bGV0IGU9cy52YWx1ZS50cmltKCl8fGBhbGxgO0lkLnRlc3QoZSk/bi5zZXRGaWx0ZXJzKHtzY29wZTplfSk6cy52YWx1ZT1uLnNjb3BlfXJldHVybihlLGwpPT57bGV0IHU9ayhgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIFYoKSxtKGBkaXZgLFZkLFt2KGBkaXZgLEhkLFtsWzFdfHw9dihgbGFiZWxgLHtpZDpgZ2xvYmFsLWZpbHRlci1yYW5nZS1sYWJlbGAsY2xhc3M6YHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kYH0sYFJhbmdlYCwtMSksTyhQKFRkKSx7Im1vZGVsLXZhbHVlIjpQKG4pLnJhbmdlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpyfSx7ZGVmYXVsdDpSKCgpPT5bTyhQKGpkKSx7ImFyaWEtbGFiZWxsZWRieSI6YGdsb2JhbC1maWx0ZXItcmFuZ2UtbGFiZWxgLGNsYXNzOmB3LTM2YH0se2RlZmF1bHQ6UigoKT0+W08oUChNZCkpXSksXzoxfSksTyhQKEVkKSxudWxsLHtkZWZhdWx0OlIoKCk9PlsoVighMCksbSh3ZSxudWxsLGYoUChIZSksZT0+KFYoKSxNKFAoT2QpLHtrZXk6ZSx2YWx1ZTplfSx7ZGVmYXVsdDpSKCgpPT5bRCh4ZSh0W2VdKSwxKV0pLF86Mn0sMTAzMixbYHZhbHVlYF0pKSksMTI4KSldKSxfOjF9KV0pLF86MX0sOCxbYG1vZGVsLXZhbHVlYF0pXSksTyhQKG90KSx7dHlwZTpgYnV0dG9uYCx2YXJpYW50OmBvdXRsaW5lYCwiYXJpYS1wcmVzc2VkIjpQKG4pLmNtcD09PWBwcmV2YCxkaXNhYmxlZDphLnZhbHVlLHRpdGxlOm8udmFsdWUsb25DbGljazppfSx7ZGVmYXVsdDpSKCgpPT5bTyh1LHtpY29uOlAodyksY2xhc3M6YHNpemUtMy41YCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKSxsWzJdfHw9RChgIHZzIHByZXZpb3VzIHBlcmlvZCBgLC0xKV0pLF86MX0sOCxbYGFyaWEtcHJlc3NlZGAsYGRpc2FibGVkYCxgdGl0bGVgXSksdihgZGl2YCxVZCxbbFszXXx8PXYoYGxhYmVsYCx7Zm9yOmBnbG9iYWwtZmlsdGVyLXNjb3BlYCxjbGFzczpgdGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmRgfSxgU2NvcGVgLC0xKSxPKFAoZmQpLHtpZDpgZ2xvYmFsLWZpbHRlci1zY29wZWAsbW9kZWxWYWx1ZTpzLnZhbHVlLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpsWzBdfHw9ZT0+cy52YWx1ZT1lLGNsYXNzOmB3LTQ4YCxwbGFjZWhvbGRlcjpgYWxsYCx0aXRsZTpgYWxsLCBncm91cDo8bmFtZT4sIHVzZXI6PG5hbWU+LCBvciBwcm92aWRlcjo8bmFtZT5gLG9uS2V5dXA6JGUoYyxbYGVudGVyYF0pLG9uQmx1cjpjfSxudWxsLDgsW2Btb2RlbFZhbHVlYF0pXSldKX19fSksR2Q9eyJhcmlhLWxhYmVsIjpgUHJpbWFyeWAsY2xhc3M6YGZsZXggZ2FwLTEgb3ZlcmZsb3cteC1hdXRvIGJvcmRlci1iIGJvcmRlci1ib3JkZXIgcGItMiBtZDp3LTUyIG1kOnNocmluay0wIG1kOmZsZXgtY29sIG1kOmJvcmRlci1yIG1kOmJvcmRlci1iLTAgbWQ6cHItMyBtZDpwYi0wYH0sS2Q9W2BhcmlhLWN1cnJlbnRgLGBvbkNsaWNrYF0scWQ9SCh7X19uYW1lOmBTaWRlYmFyTmF2YCxzZXR1cChlKXtsZXQgdD1XZSgpO3JldHVybihlLG4pPT57bGV0IHI9ayhgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIFYoKSxtKGBuYXZgLEdkLFsoVighMCksbSh3ZSxudWxsLGYoUChCZSksZT0+KFYoKSxtKGBidXR0b25gLHtrZXk6ZS5pZCx0eXBlOmBidXR0b25gLCJhcmlhLWN1cnJlbnQiOlAodCkucGFnZT09PWUuaWQ/YHBhZ2VgOnZvaWQgMCxjbGFzczpVZShbYGZsZXggc2hyaW5rLTAgaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbGcgcHgtMyBweS0yIHRleHQtc20gZm9udC1tZWRpdW0gd2hpdGVzcGFjZS1ub3dyYXAgdHJhbnNpdGlvbi1jb2xvcnMgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgbWQ6dy1mdWxsYCxQKHQpLnBhZ2U9PT1lLmlkP2BiZy1hY2NlbnQgdGV4dC1hY2NlbnQtZm9yZWdyb3VuZGA6YHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3ZlcjpiZy1tdXRlZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRgXSksb25DbGljazpuPT5QKHQpLmdvVG8oZS5pZCl9LFtPKHIse2ljb246ZS5pY29uLGNsYXNzOmBzaXplLTRgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pLHYoYHNwYW5gLG51bGwseGUoZS5sYWJlbCksMSldLDEwLEtkKSkpLDEyOCkpXSl9fX0pO2Z1bmN0aW9uIEpkKCl7bGV0IGU9QmQoKSx0PVdlKCk7ZnVuY3Rpb24gbihuKXtsZXR7cGFnZTpyLHF1ZXJ5Oml9PVBkKG4pLGE9TGQoaSk7ZS5zZXRGaWx0ZXJzKHtyYW5nZTphLnJhbmdlPz9gN2RgLGNtcDphLmNtcD8/YG5vbmVgLHNjb3BlOmEuc2NvcGU/P2BhbGxgfSksdC5nb1RvKHIsemQoaSkpfWxldCByPXR5cGVvZiB3aW5kb3c8YHVgO3ImJm4od2luZG93LmxvY2F0aW9uLmhhc2gpO2xldCBpPXgoKCk9PntsZXQgbj17fTtyZXR1cm4gZS5yYW5nZSE9PWA3ZGAmJihuLnJhbmdlPWUucmFuZ2UpLGUuY21wIT09YG5vbmVgJiYobi5jbXA9ZS5jbXApLGUuc2NvcGUhPT1gYWxsYCYmKG4uc2NvcGU9ZS5zY29wZSksT2JqZWN0LmFzc2lnbihuLHQucGFyYW1zKSxGZCh0LnBhZ2Usbil9KTtOKGksZT0+e3ImJndpbmRvdy5sb2NhdGlvbi5oYXNoIT09ZSYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsYGAsZSl9LHtpbW1lZGlhdGU6ITB9KTtmdW5jdGlvbiBhKCl7bih3aW5kb3cubG9jYXRpb24uaGFzaCl9ciYmKHFlKCgpPT53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihgaGFzaGNoYW5nZWAsYSkpLG9lKCgpPT53aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihgaGFzaGNoYW5nZWAsYSkpKX12YXIgWWQ9KGZ1bmN0aW9uKCl7bGV0IGU9dHlwZW9mIGRvY3VtZW50PGB1YCYmZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgbGlua2ApLnJlbExpc3Q7cmV0dXJuIGUmJmUuc3VwcG9ydHMmJmUuc3VwcG9ydHMoYG1vZHVsZXByZWxvYWRgKT9gbW9kdWxlcHJlbG9hZGA6YHByZWxvYWRgfSkoKSxYZD1mdW5jdGlvbihlKXtyZXR1cm5gL2FkbWluL2ArZX0sWmQ9e30sUWQ9ZnVuY3Rpb24oZSx0LG4pe2xldCByPVByb21pc2UucmVzb2x2ZSgpO2lmKHQmJnQubGVuZ3RoPjApe2xldCBlPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKGBsaW5rYCksaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBtZXRhW3Byb3BlcnR5PWNzcC1ub25jZV1gKSxhPWk/Lm5vbmNlfHxpPy5nZXRBdHRyaWJ1dGUoYG5vbmNlYCk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4gUHJvbWlzZS5hbGwoZS5tYXAoZT0+UHJvbWlzZS5yZXNvbHZlKGUpLnRoZW4oZT0+KHtzdGF0dXM6YGZ1bGZpbGxlZGAsdmFsdWU6ZX0pLGU9Pih7c3RhdHVzOmByZWplY3RlZGAscmVhc29uOmV9KSkpKX1mdW5jdGlvbiBzKGUpe3JldHVybiBpbXBvcnQubWV0YS5yZXNvbHZlP2ltcG9ydC5tZXRhLnJlc29sdmUoZSk6bmV3IFVSTChlLGltcG9ydC5tZXRhLnVybCkuaHJlZn1yPW8odC5tYXAodD0+e2lmKHQ9WGQodCxuKSx0PXModCksdCBpbiBaZClyZXR1cm47WmRbdF09ITA7bGV0IHI9dC5lbmRzV2l0aChgLmNzc2ApO2ZvcihsZXQgbj1lLmxlbmd0aC0xO24+PTA7bi0tKXtsZXQgaT1lW25dO2lmKGkuaHJlZj09PXQmJighcnx8aS5yZWw9PT1gc3R5bGVzaGVldGApKXJldHVybn1sZXQgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBsaW5rYCk7aWYoaS5yZWw9cj9gc3R5bGVzaGVldGA6WWQscnx8KGkuYXM9YHNjcmlwdGApLGkuY3Jvc3NPcmlnaW49YGAsaS5ocmVmPXQsYSYmaS5zZXRBdHRyaWJ1dGUoYG5vbmNlYCxhKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGkpLHIpcmV0dXJuIG5ldyBQcm9taXNlKChlLG4pPT57aS5hZGRFdmVudExpc3RlbmVyKGBsb2FkYCxlKSxpLmFkZEV2ZW50TGlzdGVuZXIoYGVycm9yYCwoKT0+bihFcnJvcihgVW5hYmxlIHRvIHByZWxvYWQgQ1NTIGZvciAke3R9YCkpKX0pfSkpfWZ1bmN0aW9uIGkoZSl7bGV0IHQ9bmV3IEV2ZW50KGB2aXRlOnByZWxvYWRFcnJvcmAse2NhbmNlbGFibGU6ITB9KTtpZih0LnBheWxvYWQ9ZSx3aW5kb3cuZGlzcGF0Y2hFdmVudCh0KSwhdC5kZWZhdWx0UHJldmVudGVkKXRocm93IGV9cmV0dXJuIHIudGhlbih0PT57Zm9yKGxldCBlIG9mIHR8fFtdKWUuc3RhdHVzPT09YHJlamVjdGVkYCYmaShlLnJlYXNvbik7cmV0dXJuIGUoKS5jYXRjaChpKX0pfSwkZD17Y2xhc3M6YGZsZXggdy1mdWxsIGZsZXgtY29sIGdhcC00IHB4LTQgcHktNiBzbTpweC02IGxnOnB4LThgfSxlZj17Y2xhc3M6YGZsZXggZmxleC1jb2wgZ2FwLTNgfSx0Zj17Y2xhc3M6YGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMmB9LG5mPXtrZXk6MCxjbGFzczpgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LXNtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGB9LHJmPXtrZXk6MixjbGFzczpgZmxleCBmbGV4LWNvbCBnYXAtNCBtZDpmbGV4LXJvd2B9LGFmPXtjbGFzczpgbWluLXctMCBmbGV4LTFgfSxvZj1gaHR0cHM6Ly9naXRodWIuY29tL2x1a2FzenJhY3p5bG8vdHJhZWZpay1sbG1nYXRld2F5YCxzZj1ydChIKHtfX25hbWU6YEFwcGAsc2V0dXAoZSl7bGV0IHQ9WWUoKSxuPVRlKCkscj1XZSgpO0pkKCk7bGV0IGk9e2hvbWU6aWUoKCk9PlFkKCgpPT5pbXBvcnQoYC4vSG9tZVBhZ2UtOUJFbktxRm4uanNgKSxfX3ZpdGVfX21hcERlcHMoWzAsMSwyLDMsNCw1LDYsNyw4XSkpKSxzcGVuZDppZSgoKT0+UWQoKCk9PmltcG9ydChgLi9TcGVuZFBhZ2UtQ09BV0Nndk4uanNgKSxfX3ZpdGVfX21hcERlcHMoWzksMSwxMCwxMSwxMiwxMywyLDE0LDE1LDE2LDMsNCwxNywxOCw3LDgsMTksMjBdKSkpLGNvbnN1bWVyczppZSgoKT0+UWQoKCk9PmltcG9ydChgLi9Db25zdW1lcnNQYWdlLURaNW5Ici1BLmpzYCksX192aXRlX19tYXBEZXBzKFsyMSwxLDEwLDIyLDEyLDE2LDIsMTEsMjMsMTMsMTQsMywxNSwyNCw0LDE3LDE4LDVdKSkpLG1vZGVsczppZSgoKT0+UWQoKCk9PmltcG9ydChgLi9Nb2RlbHNQYWdlLTNOdDNndmxOLmpzYCksX192aXRlX19tYXBEZXBzKFsyNSwxLDEwLDIyLDEyLDE2LDIsMTMsMTQsMjQsNCw4LDE5LDI2LDIwXSkpKSxyZWxpYWJpbGl0eTppZSgoKT0+UWQoKCk9PmltcG9ydChgLi9SZWxpYWJpbGl0eVBhZ2UtRDRDakM1R24uanNgKSxfX3ZpdGVfX21hcERlcHMoWzI3LDEsMTAsMTMsMiwyNCwxOCw1LDYsOCwyNiwyMF0pKSksY29uZmlnOmllKCgpPT5RZCgoKT0+aW1wb3J0KGAuL0NvbmZpZ1BhZ2UtQlBnUWpqU0IuanNgKSxfX3ZpdGVfX21hcERlcHMoWzI4LDEsMTAsMTEsMTIsMTYsMjNdKSkpLHRhcmdldHM6aWUoKCk9PlFkKCgpPT5pbXBvcnQoYC4vVGFyZ2V0c1BhZ2UtQmkwQ0wtdTYuanNgKSxfX3ZpdGVfX21hcERlcHMoWzI5LDEsMTAsMTMsMiwxNCwyNCwxN10pKSl9LGE9eCgoKT0+aVtyLnBhZ2VdKSxvPXgoKCk9PntpZihuLmVycm9yKXJldHVybmByZWZyZXNoIGZhaWxlZDogJHtuLmVycm9yfWA7aWYobi5sYXN0VXBkYXRlZCl7bGV0IGU9bi5vdmVydmlldz8ucmVwbGljYTtyZXR1cm5gbGFzdCB1cGRhdGVkICR7bi5sYXN0VXBkYXRlZC50b0xvY2FsZVRpbWVTdHJpbmcoKX0ke2U/YCDCtyByZXBsaWNhICR7ZX1gOmBgfWB9cmV0dXJuYGxvYWRpbmcuLi5gfSk7cmV0dXJuIHFlKCgpPT57bi5zdGFydFBvbGxpbmcoKX0pLChlLHIpPT57bGV0IGk9ayhgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIFYoKSxtKGBkaXZgLCRkLFt2KGBoZWFkZXJgLGVmLFt2KGBkaXZgLHRmLFtyWzBdfHw9dihgaDFgLHtjbGFzczpgdGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0YH0sYExMTSBHYXRld2F5IOKAlCBBZG1pbmAsLTEpLE8oUChvdCkse2FzOmBhYCxocmVmOm9mLHRhcmdldDpgX2JsYW5rYCxyZWw6YG5vb3BlbmVyIG5vcmVmZXJyZXJgLHZhcmlhbnQ6YGdob3N0YCxzaXplOmBpY29uYCwiYXJpYS1sYWJlbCI6YEdpdEh1YiByZXBvc2l0b3J5YCxjbGFzczpgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZGB9LHtkZWZhdWx0OlIoKCk9PltPKGkse2ljb246UChkcyksY2xhc3M6YHNpemUtNGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldKSxfOjF9KV0pLFAodCkuaXNBdXRoZW50aWNhdGVkPyhWKCksbShgcGAsbmYsW1AobikuZXJyb3I/KFYoKSxNKGkse2tleTowLGljb246UChkZSksY2xhc3M6YHNpemUtMy41IHRleHQtZGVzdHJ1Y3RpdmVgLCJhcmlhLWhpZGRlbiI6YHRydWVgfSxudWxsLDgsW2BpY29uYF0pKTpMKGBgLCEwKSx2KGBzcGFuYCx7Y2xhc3M6VWUoUChuKS5lcnJvcj9gdGV4dC1kZXN0cnVjdGl2ZWA6dm9pZCAwKX0seGUoby52YWx1ZSksMyldKSk6TChgYCwhMCksUCh0KS5pc0F1dGhlbnRpY2F0ZWQ/KFYoKSxNKFdkLHtrZXk6MX0pKTpMKGBgLCEwKV0pLFAodCkuaXNBdXRoZW50aWNhdGVkPyhWKCksTSh3ZCx7a2V5OjAsd2FybmluZ3M6UChuKS5vdmVydmlldz8ud2FybmluZ3M/P1tdLCJ3YXJuaW5ncy1kcm9wcGVkIjpQKG4pLm92ZXJ2aWV3Py53YXJuaW5nc0Ryb3BwZWR9LG51bGwsOCxbYHdhcm5pbmdzYCxgd2FybmluZ3MtZHJvcHBlZGBdKSk6TChgYCwhMCksUCh0KS5pc0F1dGhlbnRpY2F0ZWQ/KFYoKSxtKGBkaXZgLHJmLFtPKHFkKSx2KGBtYWluYCxhZixbKFYoKSxNKG5lKGEudmFsdWUpKSldKV0pKTooVigpLE0oeGQse2tleToxfSkpXSl9fX0pKTtzZi51c2UoYmUoKSksc2YuY29tcG9uZW50KGBGb250QXdlc29tZUljb25gLHVzKSxzZi5tb3VudChgI2FwcGApO2V4cG9ydHtFZCBhcyBhLG1jIGFzIGMsdXMgYXMgZCxPZCBhcyBpLFogYXMgbCxNZCBhcyBuLFRkIGFzIG8samQgYXMgcixmZCBhcyBzLEJkIGFzIHQsZnMgYXMgdX07",
|
|
),
|
|
},
|
|
"index-DYX_qiqR.css": {
|
|
contentType: "text/css; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"QGtleWZyYW1lcyBhdXRoZ2F0ZS1zaGFrZS00YmU2YmMwOXsxMCUsOTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoLTFweCl9MjAlLDgwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDJweCl9MzAlLDUwJSw3MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNHB4KX00MCUsNjAle3RyYW5zZm9ybTp0cmFuc2xhdGUoNHB4KX19QG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOm5vLXByZWZlcmVuY2Upey5hdXRoZ2F0ZS1zaGFrZVtkYXRhLXYtNGJlNmJjMDlde2FuaW1hdGlvbjouNHMgZWFzZS1pbi1vdXQgYXV0aGdhdGUtc2hha2UtNGJlNmJjMDl9fUBsYXllciBwcm9wZXJ0aWVze0BzdXBwb3J0cyAoKCgtd2Via2l0LWh5cGhlbnM6bm9uZSkpIGFuZCAobm90IChtYXJnaW4tdHJpbTppbmxpbmUpKSkgb3IgKCgtbW96LW9yaWVudDppbmxpbmUpIGFuZCAobm90IChjb2xvcjpyZ2IoZnJvbSByZWQgciBnIGIpKSkpezpyb290LDpob3N0ey0tc2hpbW1lci1hbmdsZToyMGRlZ30qLDpiZWZvcmUsOmFmdGVyLDo6YmFja2Ryb3B7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXRyYW5zbGF0ZS16OjA7LS10dy1yb3RhdGUteDppbml0aWFsOy0tdHctcm90YXRlLXk6aW5pdGlhbDstLXR3LXJvdGF0ZS16OmluaXRpYWw7LS10dy1za2V3LXg6aW5pdGlhbDstLXR3LXNrZXcteTppbml0aWFsOy0tdHctc3BhY2UteS1yZXZlcnNlOjA7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7LS10dy1sZWFkaW5nOmluaXRpYWw7LS10dy1mb250LXdlaWdodDppbml0aWFsOy0tdHctdHJhY2tpbmc6aW5pdGlhbDstLXR3LW9yZGluYWw6aW5pdGlhbDstLXR3LXNsYXNoZWQtemVybzppbml0aWFsOy0tdHctbnVtZXJpYy1maWd1cmU6aW5pdGlhbDstLXR3LW51bWVyaWMtc3BhY2luZzppbml0aWFsOy0tdHctbnVtZXJpYy1mcmFjdGlvbjppbml0aWFsOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctc2hhZG93LWFscGhhOjEwMCU7LS10dy1pbnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctaW5zZXQtc2hhZG93LWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1zaGFkb3ctYWxwaGE6MTAwJTstLXR3LXJpbmctY29sb3I6aW5pdGlhbDstLXR3LXJpbmctc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXJpbmctY29sb3I6aW5pdGlhbDstLXR3LWluc2V0LXJpbmctc2hhZG93OjAgMCAjMDAwMDstLXR3LXJpbmctaW5zZXQ6aW5pdGlhbDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOjBweDstLXR3LXJpbmctb2Zmc2V0LWNvbG9yOiNmZmY7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctb3V0bGluZS1zdHlsZTpzb2xpZDstLXR3LWJsdXI6aW5pdGlhbDstLXR3LWJyaWdodG5lc3M6aW5pdGlhbDstLXR3LWNvbnRyYXN0OmluaXRpYWw7LS10dy1ncmF5c2NhbGU6aW5pdGlhbDstLXR3LWh1ZS1yb3RhdGU6aW5pdGlhbDstLXR3LWludmVydDppbml0aWFsOy0tdHctb3BhY2l0eTppbml0aWFsOy0tdHctc2F0dXJhdGU6aW5pdGlhbDstLXR3LXNlcGlhOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdzppbml0aWFsOy0tdHctZHJvcC1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWFscGhhOjEwMCU7LS10dy1kcm9wLXNoYWRvdy1zaXplOmluaXRpYWw7LS10dy1kdXJhdGlvbjppbml0aWFsOy0tdHctY29udGVudDoiIjstLXR3LWFuaW1hdGlvbi1kZWxheTowczstLXR3LWFuaW1hdGlvbi1kaXJlY3Rpb246bm9ybWFsOy0tdHctYW5pbWF0aW9uLWR1cmF0aW9uOmluaXRpYWw7LS10dy1hbmltYXRpb24tZmlsbC1tb2RlOm5vbmU7LS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OjE7LS10dy1lbnRlci1ibHVyOjA7LS10dy1lbnRlci1vcGFjaXR5OjE7LS10dy1lbnRlci1yb3RhdGU6MDstLXR3LWVudGVyLXNjYWxlOjE7LS10dy1lbnRlci10cmFuc2xhdGUteDowOy0tdHctZW50ZXItdHJhbnNsYXRlLXk6MDstLXR3LWV4aXQtYmx1cjowOy0tdHctZXhpdC1vcGFjaXR5OjE7LS10dy1leGl0LXJvdGF0ZTowOy0tdHctZXhpdC1zY2FsZToxOy0tdHctZXhpdC10cmFuc2xhdGUteDowOy0tdHctZXhpdC10cmFuc2xhdGUteTowOy0tc2Nyb2xsLWZhZGUtdDowOy0tc2Nyb2xsLWZhZGUtYjowOy0tc2Nyb2xsLWZhZGUtczowOy0tc2Nyb2xsLWZhZGUtZTowOy0tc2Nyb2xsLWZhZGUtbWFzazppbml0aWFsOy0tc2hpbW1lci1pbWFnZTppbml0aWFsOy0tc2hpbW1lci10ZXh0LWZpbGw6aW5pdGlhbH19fUBsYXllciB0aGVtZXs6cm9vdCw6aG9zdHstLWZvbnQtc2Fuczp1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWY7LS1zcGFjaW5nOi4yNXJlbTstLWNvbnRhaW5lci14czoyMHJlbTstLWNvbnRhaW5lci1zbToyNHJlbTstLWNvbnRhaW5lci1tZDoyOHJlbTstLXRleHQteHM6Ljc1cmVtOy0tdGV4dC14cy0tbGluZS1oZWlnaHQ6Y2FsYygxIC8gLjc1KTstLXRleHQtc206Ljg3NXJlbTstLXRleHQtc20tLWxpbmUtaGVpZ2h0OmNhbGMoMS4yNSAvIC44NzUpOy0tdGV4dC1iYXNlOjFyZW07LS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0OmNhbGMoMS41IC8gMSk7LS10ZXh0LWxnOjEuMTI1cmVtOy0tdGV4dC1sZy0tbGluZS1oZWlnaHQ6Y2FsYygxLjc1IC8gMS4xMjUpOy0tdGV4dC14bDoxLjI1cmVtOy0tdGV4dC14bC0tbGluZS1oZWlnaHQ6Y2FsYygxLjc1IC8gMS4yNSk7LS10ZXh0LTJ4bDoxLjVyZW07LS10ZXh0LTJ4bC0tbGluZS1oZWlnaHQ6Y2FsYygyIC8gMS41KTstLWZvbnQtd2VpZ2h0LW5vcm1hbDo0MDA7LS1mb250LXdlaWdodC1tZWRpdW06NTAwOy0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6NjAwOy0tdHJhY2tpbmctdGlnaHQ6LS4wMjVlbTstLWxlYWRpbmctc251ZzoxLjM3NTstLXJhZGl1cy1tZDpjYWxjKHZhcigtLXJhZGl1cykgLSAycHgpOy0tcmFkaXVzLTR4bDoycmVtOy0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXM7LS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwgMCwgLjIsIDEpOy0tZGVmYXVsdC1mb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWY7LS1kZWZhdWx0LW1vbm8tZm9udC1mYW1pbHk6dWktbW9ub3NwYWNlLCAiU0YgTW9ubyIsICJDYXNjYWRpYSBDb2RlIiwgIlJvYm90byBNb25vIiwgQ29uc29sYXMsIG1vbm9zcGFjZX19QGxheWVyIGJhc2V7Kiw6YWZ0ZXIsOmJlZm9yZSw6OmJhY2tkcm9we2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXI6MCBzb2xpZDttYXJnaW46MDtwYWRkaW5nOjB9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjAgc29saWQ7bWFyZ2luOjA7cGFkZGluZzowfWh0bWwsOmhvc3R7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7dGFiLXNpemU6NDtsaW5lLWhlaWdodDoxLjU7Zm9udC1mYW1pbHk6dmFyKC0tZGVmYXVsdC1mb250LWZhbWlseSwtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgIk5vdG8gU2FucyIsIEFyaWFsLCBzYW5zLXNlcmlmLCAiQXBwbGUgQ29sb3IgRW1vamkiLCAiU2Vnb2UgVUkgRW1vamkiLCAiU2Vnb2UgVUkgU3ltYm9sIiwgIk5vdG8gQ29sb3IgRW1vamkiKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWhye2hlaWdodDowO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246aW5oZXJpdDstd2Via2l0LXRleHQtZGVjb3JhdGlvbjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHNhbXAscHJle2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSx1aS1tb25vc3BhY2UsIFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZSk7Zm9udC1mZWF0dXJlLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LW1vbm8tZm9udC12YXJpYXRpb24tc2V0dGluZ3Msbm9ybWFsKTtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmV9c3Vie2JvdHRvbTotLjI1ZW19c3Vwe3RvcDotLjVlbX10YWJsZXt0ZXh0LWluZGVudDowO2JvcmRlci1jb2xvcjppbmhlcml0O2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX06LW1vei1mb2N1c3Jpbmc6d2hlcmUoOm5vdChpZnJhbWUpKXtvdXRsaW5lOmF1dG99cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1vbCx1bCxtZW51e2xpc3Qtc3R5bGU6bm9uZX1pbWcsc3ZnLHZpZGVvLGNhbnZhcyxhdWRpbyxpZnJhbWUsZW1iZWQsb2JqZWN0e3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmJsb2NrfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31idXR0b24saW5wdXQsc2VsZWN0LG9wdGdyb3VwLHRleHRhcmVhe2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntmb250OmluaGVyaXQ7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowfTp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6NHB4fTo6cGxhY2Vob2xkZXJ7b3BhY2l0eToxfUBzdXBwb3J0cyAobm90ICgoLXdlYmtpdC1hcHBlYXJhbmNlOi1hcHBsZS1wYXktYnV0dG9uKSkpIG9yIChjb250YWluLWludHJpbnNpYy1zaXplOjFweCl7OjpwbGFjZWhvbGRlcntjb2xvcjpjdXJyZW50Q29sb3J9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpezo6cGxhY2Vob2xkZXJ7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCBjdXJyZW50Y29sb3IgNTAlLCB0cmFuc3BhcmVudCl9fX10ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1kYXRlLWFuZC10aW1lLXZhbHVle21pbi1oZWlnaHQ6MWxoO3RleHQtYWxpZ246aW5oZXJpdH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdHtkaXNwbGF5OmlubGluZS1mbGV4fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWZpZWxkcy13cmFwcGVye3BhZGRpbmc6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQteWVhci1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbW9udGgtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWludXRlLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1zZWNvbmQtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbGxpc2Vjb25kLWZpZWxke3BhZGRpbmctYmxvY2s6MH06Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tZXJpZGllbS1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3J7bGluZS1oZWlnaHQ6MX06LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSxbdHlwZT1yZXNldF0sW3R5cGU9c3VibWl0XSl7YXBwZWFyYW5jZTpidXR0b259OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnthcHBlYXJhbmNlOmJ1dHRvbn06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9ue2hlaWdodDphdXRvfVtoaWRkZW5dOndoZXJlKDpub3QoW2hpZGRlbj11bnRpbC1mb3VuZF0pKXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fSp7Ym9yZGVyLWNvbG9yOnZhcigtLWJvcmRlcik7b3V0bGluZS1jb2xvcjp2YXIoLS1yaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7KntvdXRsaW5lLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tcmluZykgNTAlLCB0cmFuc3BhcmVudCl9fWJvZHl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1iYWNrZ3JvdW5kKTtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKTtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7Zm9udC1mYW1pbHk6dWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZn19QGxheWVyIGNvbXBvbmVudHM7QGxheWVyIHV0aWxpdGllc3suXEBjb250YWluZXJcL2NhcmQtaGVhZGVye2NvbnRhaW5lcjpjYXJkLWhlYWRlci9pbmxpbmUtc2l6ZX0ucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5jb2xsYXBzZXt2aXNpYmlsaXR5OmNvbGxhcHNlfS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5zci1vbmx5e2NsaXAtcGF0aDppbnNldCg1MCUpO3doaXRlLXNwYWNlOm5vd3JhcDtib3JkZXItd2lkdGg6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7b3ZlcmZsb3c6aGlkZGVufS5hYnNvbHV0ZXtwb3NpdGlvbjphYnNvbHV0ZX0uZml4ZWR7cG9zaXRpb246Zml4ZWR9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5zdGF0aWN7cG9zaXRpb246c3RhdGljfS5pbnNldC15LTB7aW5zZXQtYmxvY2s6MH0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLTV7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0udG9wLTEwMHt0b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwMCl9LnJpZ2h0LTF7cmlnaHQ6dmFyKC0tc3BhY2luZyl9LnJpZ2h0LTFcLjV7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnJpZ2h0LTJ7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5sZWZ0LTB7bGVmdDowfS5sZWZ0LTJcLjV7bGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0uei0xMHt6LWluZGV4OjEwfS56LTUwe3otaW5kZXg6NTB9Li1teC0xXC41e21hcmdpbi1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC0xLjUpfS5teC1hdXRve21hcmdpbi1pbmxpbmU6YXV0b30ubXQtMFwuNXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9Lm10LTF7bWFyZ2luLXRvcDp2YXIoLS1zcGFjaW5nKX0ubXQtMnttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ubWItMVwuNXttYXJnaW4tYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5tYi0ye21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5tYi0ze21hcmdpbi1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5tbC0xe21hcmdpbi1sZWZ0OnZhcigtLXNwYWNpbmcpfS5tbC1hdXRve21hcmdpbi1sZWZ0OmF1dG99LmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmNvbnRlbnRze2Rpc3BsYXk6Y29udGVudHN9LmZsZXh7ZGlzcGxheTpmbGV4fS5ncmlke2Rpc3BsYXk6Z3JpZH0uaGlkZGVue2Rpc3BsYXk6bm9uZX0uaW5saW5le2Rpc3BsYXk6aW5saW5lfS5pbmxpbmUtYmxvY2t7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LnRhYmxle2Rpc3BsYXk6dGFibGV9LnRhYmxlLWNlbGx7ZGlzcGxheTp0YWJsZS1jZWxsfS50YWJsZS1yb3d7ZGlzcGxheTp0YWJsZS1yb3d9LnNpemUtMlwuNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnNpemUtM3t3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0uc2l6ZS0zXC41e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMy41KX0uc2l6ZS00e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5zaXplLTV7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9LnNpemUtNnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNik7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0uc2l6ZS03e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA3KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpfS5zaXplLTh7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LnNpemUtOXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOSk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA5KX0uc2l6ZS0xMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpfS5oLTFcLjV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5oLTV7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0uaC02e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LmgtN3toZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpfS5oLTh7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0uaC05e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOSl9LmgtMTB7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9LmgtNzJ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA3Mil9LmgtXFtjYWxjXCgxMDBcJS0xcHhcKVxde2hlaWdodDpjYWxjKDEwMCUgLSAxcHgpfS5tYXgtaC1cKC0tcmVrYS1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtaGVpZ2h0XCl7bWF4LWhlaWdodDp2YXIoLS1yZWthLXNlbGVjdC1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQpfS5taW4taC1cWzcwdmhcXXttaW4taGVpZ2h0Ojcwdmh9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnctMTR7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDE0KX0udy0zNnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMzYpfS53LTQwe3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA0MCl9LnctNDR7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQ0KX0udy00OHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNDgpfS53LTU2e3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiA1Nil9LnctZml0e3dpZHRoOmZpdC1jb250ZW50fS53LWZ1bGx7d2lkdGg6MTAwJX0ubWF4LXctbWR7bWF4LXdpZHRoOnZhcigtLWNvbnRhaW5lci1tZCl9Lm1heC13LXNte21heC13aWR0aDp2YXIoLS1jb250YWluZXItc20pfS5tYXgtdy14c3ttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLXhzKX0ubWluLXctMHttaW4td2lkdGg6MH0ubWluLXctMzZ7bWluLXdpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAzNil9LmZsZXgtMXtmbGV4OjF9LnNocmluay0we2ZsZXgtc2hyaW5rOjB9LmNhcHRpb24tYm90dG9te2NhcHRpb24tc2lkZTpib3R0b219Lm9yaWdpbi1cKC0tcmVrYS1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luXCl7dHJhbnNmb3JtLW9yaWdpbjp2YXIoLS1yZWthLXNlbGVjdC1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4pfS4tdHJhbnNsYXRlLXktMVwvMnstLXR3LXRyYW5zbGF0ZS15OmNhbGMoY2FsYygxIC8gMiAqIDEwMCUpICogLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS50cmFuc2Zvcm17dHJhbnNmb3JtOnZhcigtLXR3LXJvdGF0ZS14LCkgdmFyKC0tdHctcm90YXRlLXksKSB2YXIoLS10dy1yb3RhdGUteiwpIHZhcigtLXR3LXNrZXcteCwpIHZhcigtLXR3LXNrZXcteSwpfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9Lmxpc3QtZGlzY3tsaXN0LXN0eWxlLXR5cGU6ZGlzY30uYXV0by1yb3dzLW1pbntncmlkLWF1dG8tcm93czptaW4tY29udGVudH0uZ3JpZC1jb2xzLTF7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgxLG1pbm1heCgwLDFmcikpfS5ncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1lbmR7YWxpZ24taXRlbXM6ZmxleC1lbmR9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uanVzdGlmeS1jZW50ZXJ7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5nYXAtMFwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0uZ2FwLTF7Z2FwOnZhcigtLXNwYWNpbmcpfS5nYXAtMVwuNXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LmdhcC0ye2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LmdhcC0ze2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LmdhcC00e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LmdhcC02e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9OndoZXJlKC5zcGFjZS15LTBcLjU+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpICogY2FsYygxIC0gdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSkpfS5nYXAteC0ze2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5nYXAteC00e2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5nYXAteC02e2NvbHVtbi1nYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5nYXAteS0xe3Jvdy1nYXA6dmFyKC0tc3BhY2luZyl9LmdhcC15LTFcLjV7cm93LWdhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0udHJ1bmNhdGV7dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS5vdmVyZmxvdy14LWF1dG97b3ZlcmZsb3cteDphdXRvfS5vdmVyZmxvdy14LWhpZGRlbntvdmVyZmxvdy14OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ucm91bmRlZHtib3JkZXItcmFkaXVzOi4yNXJlbX0ucm91bmRlZC00eGx7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtNHhsKX0ucm91bmRlZC1cW21pblwodmFyXCgtLXJhZGl1cy1tZFwpXCwxMHB4XClcXXtib3JkZXItcmFkaXVzOm1pbih2YXIoLS1yYWRpdXMtbWQpLCAxMHB4KX0ucm91bmRlZC1cW21pblwodmFyXCgtLXJhZGl1cy1tZFwpXCwxMnB4XClcXXtib3JkZXItcmFkaXVzOm1pbih2YXIoLS1yYWRpdXMtbWQpLCAxMnB4KX0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6MjE0NzQ4MzY0N3B4fS5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKX0ucm91bmRlZC1tZHtib3JkZXItcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSAtIDJweCl9LnJvdW5kZWQtc217Ym9yZGVyLXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgLSA0cHgpfS5yb3VuZGVkLXhse2JvcmRlci1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KX0ucm91bmRlZC10LXhse2JvcmRlci10b3AtbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KTtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgKyA0cHgpfS5ib3JkZXJ7Ym9yZGVyLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXdpZHRoOjFweH0uYm9yZGVyLWJ7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ib3JkZXItYm9yZGVye2JvcmRlci1jb2xvcjp2YXIoLS1ib3JkZXIpfS5ib3JkZXItaW5wdXR7Ym9yZGVyLWNvbG9yOnZhcigtLWlucHV0KX0uYm9yZGVyLXN0YXR1cy13YXJuXC80MHtib3JkZXItY29sb3I6dmFyKC0tc3RhdHVzLXdhcm4pfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuYm9yZGVyLXN0YXR1cy13YXJuXC80MHtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1zdGF0dXMtd2FybikgNDAlLCB0cmFuc3BhcmVudCl9fS5ib3JkZXItdHJhbnNwYXJlbnR7Ym9yZGVyLWNvbG9yOiMwMDAwfS5iZy1hY2NlbnR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1hY2NlbnQpfS5iZy1iYWNrZ3JvdW5ke2JhY2tncm91bmQtY29sb3I6dmFyKC0tYmFja2dyb3VuZCl9LmJnLWJhci1hbWJlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWJhci1hbWJlcil9LmJnLWNhcmR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jYXJkKX0uYmctZGVzdHJ1Y3RpdmUsLmJnLWRlc3RydWN0aXZlXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLWRlc3RydWN0aXZlXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDEwJSwgdHJhbnNwYXJlbnQpfX0uYmctbXV0ZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9LmJnLXBvcG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wb3BvdmVyKX0uYmctcHJpbWFyeSwuYmctcHJpbWFyeVwvMTB7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmJnLXByaW1hcnlcLzEwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1wcmltYXJ5KSAxMCUsIHRyYW5zcGFyZW50KX19LmJnLXNlY29uZGFyeXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXNlY29uZGFyeSl9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLWNsaXAtcGFkZGluZ3tiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3h9LnAtMFwuNzV7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogLjc1KX0ucC0ye3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5wLTN7cGFkZGluZzpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LnAtNHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ucHgtMVwuNXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0ucHgtMntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnB4LTJcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIuNSl9LnB4LTN7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5weC00e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ucHktMFwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9LnB5LTF7cGFkZGluZy1ibG9jazp2YXIoLS1zcGFjaW5nKX0ucHktMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucHktMlwuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5weS0ze3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5weS00e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5weS02e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5weS0xMHtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9LnB0LTB7cGFkZGluZy10b3A6MH0ucHItMntwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucHItOHtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0ucHItMTB7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTApfS5wYi0xXC41e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5wYi0ye3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucGItMlwuNXtwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ucGwtMVwuNXtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9LnBsLTJcLjV7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5wbC00e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnBsLTh7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnRleHQtbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnRleHQtcmlnaHR7dGV4dC1hbGlnbjpyaWdodH0uYWxpZ24tbWlkZGxle3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uZm9udC1oZWFkaW5ne2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2Fucyl9LmZvbnQtbW9ub3tmb250LWZhbWlseTp1aS1tb25vc3BhY2UsU0YgTW9ubyxDYXNjYWRpYSBDb2RlLFJvYm90byBNb25vLENvbnNvbGFzLG1vbm9zcGFjZX0udGV4dC0yeGx7Zm9udC1zaXplOnZhcigtLXRleHQtMnhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtMnhsLS1saW5lLWhlaWdodCkpfS50ZXh0LWJhc2V7Zm9udC1zaXplOnZhcigtLXRleHQtYmFzZSk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0KSl9LnRleHQtbGd7Zm9udC1zaXplOnZhcigtLXRleHQtbGcpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1sZy0tbGluZS1oZWlnaHQpKX0udGV4dC1zbXtmb250LXNpemU6dmFyKC0tdGV4dC1zbSk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LXNtLS1saW5lLWhlaWdodCkpfS50ZXh0LXhse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQteGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQteHN7Zm9udC1zaXplOnZhcigtLXRleHQteHMpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14cy0tbGluZS1oZWlnaHQpKX0udGV4dC1cWzBcLjhyZW1cXXtmb250LXNpemU6LjhyZW19LmxlYWRpbmctc251Z3stLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1zbnVnKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXNudWcpfS5mb250LW1lZGl1bXstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKX0uZm9udC1ub3JtYWx7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCl9LmZvbnQtc2VtaWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpfS50cmFja2luZy10aWdodHstLXR3LXRyYWNraW5nOnZhcigtLXRyYWNraW5nLXRpZ2h0KTtsZXR0ZXItc3BhY2luZzp2YXIoLS10cmFja2luZy10aWdodCl9LnRleHQtYmFsYW5jZXt0ZXh0LXdyYXA6YmFsYW5jZX0uYnJlYWstYWxse3dvcmQtYnJlYWs6YnJlYWstYWxsfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2UtcHJle3doaXRlLXNwYWNlOnByZX0udGV4dC1hY2NlbnQtZm9yZWdyb3VuZHtjb2xvcjp2YXIoLS1hY2NlbnQtZm9yZWdyb3VuZCl9LnRleHQtY2FyZC1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLWNhcmQtZm9yZWdyb3VuZCl9LnRleHQtY2hhcnQtcmVxdWVzdHN7Y29sb3I6dmFyKC0tY2hhcnQtcmVxdWVzdHMpfS50ZXh0LWRlc3RydWN0aXZle2NvbG9yOnZhcigtLWRlc3RydWN0aXZlKX0udGV4dC1mb3JlZ3JvdW5kLC50ZXh0LWZvcmVncm91bmRcLzYwe2NvbG9yOnZhcigtLWZvcmVncm91bmQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsudGV4dC1mb3JlZ3JvdW5kXC82MHtjb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWZvcmVncm91bmQpIDYwJSwgdHJhbnNwYXJlbnQpfX0udGV4dC1pbmhlcml0e2NvbG9yOmluaGVyaXR9LnRleHQtbXV0ZWQtZm9yZWdyb3VuZCwudGV4dC1tdXRlZC1mb3JlZ3JvdW5kXC80MHtjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNDB7Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKSA0MCUsIHRyYW5zcGFyZW50KX19LnRleHQtbXV0ZWQtZm9yZWdyb3VuZFwvNjB7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey50ZXh0LW11dGVkLWZvcmVncm91bmRcLzYwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCkgNjAlLCB0cmFuc3BhcmVudCl9fS50ZXh0LXBvcG92ZXItZm9yZWdyb3VuZHtjb2xvcjp2YXIoLS1wb3BvdmVyLWZvcmVncm91bmQpfS50ZXh0LXByaW1hcnl7Y29sb3I6dmFyKC0tcHJpbWFyeSl9LnRleHQtcHJpbWFyeS1mb3JlZ3JvdW5ke2NvbG9yOnZhcigtLXByaW1hcnktZm9yZWdyb3VuZCl9LnRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmR7Y29sb3I6dmFyKC0tc2Vjb25kYXJ5LWZvcmVncm91bmQpfS50ZXh0LXN0YXR1cy13YXJue2NvbG9yOnZhcigtLXN0YXR1cy13YXJuKX0udGFidWxhci1udW1zey0tdHctbnVtZXJpYy1zcGFjaW5nOnRhYnVsYXItbnVtcztmb250LXZhcmlhbnQtbnVtZXJpYzp2YXIoLS10dy1vcmRpbmFsLCkgdmFyKC0tdHctc2xhc2hlZC16ZXJvLCkgdmFyKC0tdHctbnVtZXJpYy1maWd1cmUsKSB2YXIoLS10dy1udW1lcmljLXNwYWNpbmcsKSB2YXIoLS10dy1udW1lcmljLWZyYWN0aW9uLCl9LnVuZGVybGluZS1vZmZzZXQtNHt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6NHB4fS5zaGFkb3ctbWR7LS10dy1zaGFkb3c6MCA0cHggNnB4IC0xcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksIDAgMnB4IDRweCAtMnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9LnJpbmcsLnJpbmctMXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDFweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9LnJpbmctZm9yZWdyb3VuZFwvMTB7LS10dy1yaW5nLWNvbG9yOnZhcigtLWZvcmVncm91bmQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsucmluZy1mb3JlZ3JvdW5kXC8xMHstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1mb3JlZ3JvdW5kKSAxMCUsIHRyYW5zcGFyZW50KX19Lm91dGxpbmUtaGlkZGVuey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX1AbWVkaWEgKGZvcmNlZC1jb2xvcnM6YWN0aXZlKXsub3V0bGluZS1oaWRkZW57b3V0bGluZS1vZmZzZXQ6MnB4O291dGxpbmU6MnB4IHNvbGlkICMwMDAwfX0ub3V0bGluZXtvdXRsaW5lLXN0eWxlOnZhcigtLXR3LW91dGxpbmUtc3R5bGUpO291dGxpbmUtd2lkdGg6MXB4fS5maWx0ZXJ7ZmlsdGVyOnZhcigtLXR3LWJsdXIsKSB2YXIoLS10dy1icmlnaHRuZXNzLCkgdmFyKC0tdHctY29udHJhc3QsKSB2YXIoLS10dy1ncmF5c2NhbGUsKSB2YXIoLS10dy1odWUtcm90YXRlLCkgdmFyKC0tdHctaW52ZXJ0LCkgdmFyKC0tdHctc2F0dXJhdGUsKSB2YXIoLS10dy1zZXBpYSwpIHZhcigtLXR3LWRyb3Atc2hhZG93LCl9LnRyYW5zaXRpb24tYWxse3RyYW5zaXRpb24tcHJvcGVydHk6YWxsO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3Isb3V0bGluZS1jb2xvcix0ZXh0LWRlY29yYXRpb24tY29sb3IsZmlsbCxzdHJva2UsLS10dy1ncmFkaWVudC1mcm9tLC0tdHctZ3JhZGllbnQtdmlhLC0tdHctZ3JhZGllbnQtdG87dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0uZHVyYXRpb24tMTAwey0tdHctZHVyYXRpb246LjFzO3RyYW5zaXRpb24tZHVyYXRpb246LjFzfS5vdXRsaW5lLW5vbmV7LS10dy1vdXRsaW5lLXN0eWxlOm5vbmU7b3V0bGluZS1zdHlsZTpub25lfS5zZWxlY3Qtbm9uZXstd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0uc2VsZWN0LXRleHR7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0O3VzZXItc2VsZWN0OnRleHR9LnJ1bm5pbmd7YW5pbWF0aW9uLXBsYXktc3RhdGU6cnVubmluZ30ubm90LWxhc3RcOmJvcmRlci1iOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ncm91cC1oYXMtXFtcPnN2Z1xdXC9hbGVydFw6Y29sLXN0YXJ0LTI6aXMoOndoZXJlKC5ncm91cFwvYWxlcnQpOmhhcyg+c3ZnKSAqKXtncmlkLWNvbHVtbi1zdGFydDoyfS5ncm91cC1hcmlhLWV4cGFuZGVkXC9hY2NvcmRpb24tdHJpZ2dlclw6aGlkZGVuOmlzKDp3aGVyZSguZ3JvdXBcL2FjY29yZGlvbi10cmlnZ2VyKVthcmlhLWV4cGFuZGVkPXRydWVdICope2Rpc3BsYXk6bm9uZX0uZ3JvdXAtYXJpYS1leHBhbmRlZFwvYWNjb3JkaW9uLXRyaWdnZXJcOmlubGluZTppcyg6d2hlcmUoLmdyb3VwXC9hY2NvcmRpb24tdHJpZ2dlcilbYXJpYS1leHBhbmRlZD10cnVlXSAqKXtkaXNwbGF5OmlubGluZX0uZ3JvdXAtZGF0YS1cW3NpemVcPXNtXF1cL2NhcmRcOnB4LTM6aXMoOndoZXJlKC5ncm91cFwvY2FyZClbZGF0YS1zaXplPXNtXSAqKXtwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lmdyb3VwLWRhdGEtXFtzaXplXD1zbVxdXC9jYXJkXDp0ZXh0LXNtOmlzKDp3aGVyZSguZ3JvdXBcL2NhcmQpW2RhdGEtc2l6ZT1zbV0gKil7Zm9udC1zaXplOnZhcigtLXRleHQtc20pO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC1zbS0tbGluZS1oZWlnaHQpKX0uZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKXtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwfS5ncm91cC1kYXRhLWhvcml6b250YWxcL3RhYnNcOmgtODppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKil7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6aC1maXQ6aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249dmVydGljYWxdKSAqKXtoZWlnaHQ6Zml0LWNvbnRlbnR9Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOnctZnVsbDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICope3dpZHRoOjEwMCV9Lmdyb3VwLWRhdGEtdmVydGljYWxcL3RhYnNcOmZsZXgtY29sOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPXZlcnRpY2FsXSkgKil7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5ncm91cC1kYXRhLXZlcnRpY2FsXC90YWJzXDpqdXN0aWZ5LXN0YXJ0OmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPXZlcnRpY2FsXSkgKil7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9LmZpbGVcOmlubGluZS1mbGV4OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntkaXNwbGF5OmlubGluZS1mbGV4fS5maWxlXDpoLTY6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LmZpbGVcOmJvcmRlci0wOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uZmlsZVw6YmctdHJhbnNwYXJlbnQ6OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmZpbGVcOnRleHQtc206OmZpbGUtc2VsZWN0b3ItYnV0dG9ue2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LmZpbGVcOmZvbnQtbWVkaXVtOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbnstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKX0uZmlsZVw6dGV4dC1mb3JlZ3JvdW5kOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX0ucGxhY2Vob2xkZXJcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZDo6cGxhY2Vob2xkZXJ7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9LmFmdGVyXDphYnNvbHV0ZTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3Bvc2l0aW9uOmFic29sdXRlfS5hZnRlclw6YmctZm9yZWdyb3VuZDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2JhY2tncm91bmQtY29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9LmFmdGVyXDpvcGFjaXR5LTA6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtvcGFjaXR5OjB9LmFmdGVyXDp0cmFuc2l0aW9uLW9wYWNpdHk6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt0cmFuc2l0aW9uLXByb3BlcnR5Om9wYWNpdHk7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0uZ3JvdXAtZGF0YS1ob3Jpem9udGFsXC90YWJzXDphZnRlclw6aW5zZXQteC0wOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPWhvcml6b250YWxdKSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2luc2V0LWlubGluZTowfS5ncm91cC1kYXRhLWhvcml6b250YWxcL3RhYnNcOmFmdGVyXDpib3R0b20tXFstNXB4XF06aXMoOndoZXJlKC5ncm91cFwvdGFicyk6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym90dG9tOi01cHh9Lmdyb3VwLWRhdGEtaG9yaXpvbnRhbFwvdGFic1w6YWZ0ZXJcOmgtMFwuNTppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj1ob3Jpem9udGFsXSkgKik6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6YWZ0ZXJcOmluc2V0LXktMDppcyg6d2hlcmUoLmdyb3VwXC90YWJzKTp3aGVyZShbZGF0YS1vcmllbnRhdGlvbj12ZXJ0aWNhbF0pICopOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7aW5zZXQtYmxvY2s6MH0uZ3JvdXAtZGF0YS12ZXJ0aWNhbFwvdGFic1w6YWZ0ZXJcOi1yaWdodC0xOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPXZlcnRpY2FsXSkgKik6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEpfS5ncm91cC1kYXRhLXZlcnRpY2FsXC90YWJzXDphZnRlclw6dy0wXC41OmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMpOndoZXJlKFtkYXRhLW9yaWVudGF0aW9uPXZlcnRpY2FsXSkgKik6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogLjUpfS5sYXN0XDpib3JkZXItMDpsYXN0LWNoaWxke2JvcmRlci1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci13aWR0aDowfS5sYXN0XDpwYi0wOmxhc3QtY2hpbGR7cGFkZGluZy1ib3R0b206MH1AbWVkaWEgKGhvdmVyOmhvdmVyKXsuaG92ZXJcOmJnLWFjY2VudDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWFjY2VudCl9LmhvdmVyXDpiZy1kZXN0cnVjdGl2ZVwvMjA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzIwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgMjAlLCB0cmFuc3BhcmVudCl9fS5ob3Zlclw6YmctbXV0ZWQ6aG92ZXIsLmhvdmVyXDpiZy1tdXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6YmctbXV0ZWRcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZCkgNTAlLCB0cmFuc3BhcmVudCl9fS5ob3Zlclw6Ymctc2Vjb25kYXJ5XC84MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLXNlY29uZGFyeSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5ob3Zlclw6Ymctc2Vjb25kYXJ5XC84MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tc2Vjb25kYXJ5KSA4MCUsIHRyYW5zcGFyZW50KX19LmhvdmVyXDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kOmhvdmVye2NvbG9yOnZhcigtLWFjY2VudC1mb3JlZ3JvdW5kKX0uaG92ZXJcOnRleHQtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX0uaG92ZXJcOnRleHQtbXV0ZWQtZm9yZWdyb3VuZDpob3Zlcntjb2xvcjp2YXIoLS1tdXRlZC1mb3JlZ3JvdW5kKX0uaG92ZXJcOnRleHQtcHJpbWFyeTpob3Zlcntjb2xvcjp2YXIoLS1wcmltYXJ5KX0uaG92ZXJcOnVuZGVybGluZTpob3Zlcnt0ZXh0LWRlY29yYXRpb24tbGluZTp1bmRlcmxpbmV9LmhvdmVyXDpvcGFjaXR5LTkwOmhvdmVye29wYWNpdHk6Ljl9fS5mb2N1c1w6YmctYWNjZW50OmZvY3Vze2JhY2tncm91bmQtY29sb3I6dmFyKC0tYWNjZW50KX0uZm9jdXNcOnRleHQtYWNjZW50LWZvcmVncm91bmQ6Zm9jdXMsOmlzKC5ub3QtZGF0YS1cW3ZhcmlhbnRcPWRlc3RydWN0aXZlXF1cOmZvY3VzXDpcKlwqXDp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kOm5vdChbZGF0YS12YXJpYW50PWRlc3RydWN0aXZlXSk6Zm9jdXMgKil7Y29sb3I6dmFyKC0tYWNjZW50LWZvcmVncm91bmQpfS5mb2N1cy12aXNpYmxlXDpib3JkZXItZGVzdHJ1Y3RpdmVcLzQwOmZvY3VzLXZpc2libGV7Ym9yZGVyLWNvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmZvY3VzLXZpc2libGVcOmJvcmRlci1kZXN0cnVjdGl2ZVwvNDA6Zm9jdXMtdmlzaWJsZXtib3JkZXItY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgNDAlLCB0cmFuc3BhcmVudCl9fS5mb2N1cy12aXNpYmxlXDpib3JkZXItcmluZzpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjp2YXIoLS1yaW5nKX0uZm9jdXMtdmlzaWJsZVw6cmluZy0yOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLXNoYWRvdzp2YXIoLS10dy1yaW5nLWluc2V0LCkgMCAwIDAgY2FsYygycHggKyB2YXIoLS10dy1yaW5nLW9mZnNldC13aWR0aCkpIHZhcigtLXR3LXJpbmctY29sb3IsY3VycmVudGNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LWluc2V0LXNoYWRvdyksIHZhcigtLXR3LWluc2V0LXJpbmctc2hhZG93KSwgdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSwgdmFyKC0tdHctcmluZy1zaGFkb3cpLCB2YXIoLS10dy1zaGFkb3cpfS5mb2N1cy12aXNpYmxlXDpyaW5nLTM6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9LmZvY3VzLXZpc2libGVcOnJpbmctZGVzdHJ1Y3RpdmVcLzIwOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmZvY3VzLXZpc2libGVcOnJpbmctZGVzdHJ1Y3RpdmVcLzIwOmZvY3VzLXZpc2libGV7LS10dy1yaW5nLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDIwJSwgdHJhbnNwYXJlbnQpfX0uZm9jdXMtdmlzaWJsZVw6cmluZy1yaW5nXC81MDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjp2YXIoLS1yaW5nKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmZvY3VzLXZpc2libGVcOnJpbmctcmluZ1wvNTA6Zm9jdXMtdmlzaWJsZXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1yaW5nKSA1MCUsIHRyYW5zcGFyZW50KX19LmZvY3VzLXZpc2libGVcOm91dGxpbmUtMTpmb2N1cy12aXNpYmxle291dGxpbmUtc3R5bGU6dmFyKC0tdHctb3V0bGluZS1zdHlsZSk7b3V0bGluZS13aWR0aDoxcHh9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtcmluZzpmb2N1cy12aXNpYmxle291dGxpbmUtY29sb3I6dmFyKC0tcmluZyl9LmZvY3VzLXZpc2libGVcOm91dGxpbmUtbm9uZTpmb2N1cy12aXNpYmxley0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uZm9jdXMtdmlzaWJsZVw6YWZ0ZXJcOmJvcmRlci1yaW5nOmZvY3VzLXZpc2libGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtib3JkZXItY29sb3I6dmFyKC0tcmluZyl9LmFjdGl2ZVw6bm90LWFyaWEtXFtoYXNwb3B1cFxdXDp0cmFuc2xhdGUteS1weDphY3RpdmU6bm90KFthcmlhLWhhc3BvcHVwXSl7LS10dy10cmFuc2xhdGUteToxcHg7dHJhbnNsYXRlOnZhcigtLXR3LXRyYW5zbGF0ZS14KSB2YXIoLS10dy10cmFuc2xhdGUteSl9LmRpc2FibGVkXDpwb2ludGVyLWV2ZW50cy1ub25lOmRpc2FibGVke3BvaW50ZXItZXZlbnRzOm5vbmV9LmRpc2FibGVkXDpjdXJzb3Itbm90LWFsbG93ZWQ6ZGlzYWJsZWR7Y3Vyc29yOm5vdC1hbGxvd2VkfS5kaXNhYmxlZFw6YmctaW5wdXRcLzUwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGlzYWJsZWRcOmJnLWlucHV0XC81MDpkaXNhYmxlZHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDUwJSwgdHJhbnNwYXJlbnQpfX0uZGlzYWJsZWRcOm9wYWNpdHktNTA6ZGlzYWJsZWR7b3BhY2l0eTouNX06d2hlcmUoW2RhdGEtc2xvdD1idXR0b24tZ3JvdXBdKSAuaW4tZGF0YS1cW3Nsb3RcPWJ1dHRvbi1ncm91cFxdXDpyb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzKX0uaGFzLWFyaWEtZXhwYW5kZWRcOmJnLW11dGVkXC81MDpoYXMoW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0pe2JhY2tncm91bmQtY29sb3I6dmFyKC0tbXV0ZWQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuaGFzLWFyaWEtZXhwYW5kZWRcOmJnLW11dGVkXC81MDpoYXMoW2FyaWEtZXhwYW5kZWQ9dHJ1ZV0pe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1tdXRlZCkgNTAlLCB0cmFuc3BhcmVudCl9fS5oYXMtZGF0YS1cW2ljb25cPWlubGluZS1lbmRcXVw6cHItMTpoYXMoW2RhdGEtaWNvbj1pbmxpbmUtZW5kXSl7cGFkZGluZy1yaWdodDp2YXIoLS1zcGFjaW5nKX0uaGFzLWRhdGEtXFtpY29uXD1pbmxpbmUtZW5kXF1cOnByLTFcLjU6aGFzKFtkYXRhLWljb249aW5saW5lLWVuZF0pe3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEuNSl9Lmhhcy1kYXRhLVxbaWNvblw9aW5saW5lLWVuZFxdXDpwci0yOmhhcyhbZGF0YS1pY29uPWlubGluZS1lbmRdKXtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uaGFzLWRhdGEtXFtpY29uXD1pbmxpbmUtc3RhcnRcXVw6cGwtMTpoYXMoW2RhdGEtaWNvbj1pbmxpbmUtc3RhcnRdKXtwYWRkaW5nLWxlZnQ6dmFyKC0tc3BhY2luZyl9Lmhhcy1kYXRhLVxbaWNvblw9aW5saW5lLXN0YXJ0XF1cOnBsLTFcLjU6aGFzKFtkYXRhLWljb249aW5saW5lLXN0YXJ0XSl7cGFkZGluZy1sZWZ0OmNhbGModmFyKC0tc3BhY2luZykgKiAxLjUpfS5oYXMtZGF0YS1cW2ljb25cPWlubGluZS1zdGFydFxdXDpwbC0yOmhhcyhbZGF0YS1pY29uPWlubGluZS1zdGFydF0pe3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lmhhcy1kYXRhLVxbc2xvdFw9YWxlcnQtYWN0aW9uXF1cOnJlbGF0aXZlOmhhcyhbZGF0YS1zbG90PWFsZXJ0LWFjdGlvbl0pe3Bvc2l0aW9uOnJlbGF0aXZlfS5oYXMtZGF0YS1cW3Nsb3RcPWFsZXJ0LWFjdGlvblxdXDpwci0xODpoYXMoW2RhdGEtc2xvdD1hbGVydC1hY3Rpb25dKXtwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxOCl9Lmhhcy1kYXRhLVxbc2xvdFw9Y2FyZC1hY3Rpb25cXVw6Z3JpZC1jb2xzLVxbMWZyX2F1dG9cXTpoYXMoW2RhdGEtc2xvdD1jYXJkLWFjdGlvbl0pe2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgYXV0b30uaGFzLWRhdGEtXFtzbG90XD1jYXJkLWRlc2NyaXB0aW9uXF1cOmdyaWQtcm93cy1cW2F1dG9fYXV0b1xdOmhhcyhbZGF0YS1zbG90PWNhcmQtZGVzY3JpcHRpb25dKXtncmlkLXRlbXBsYXRlLXJvd3M6YXV0byBhdXRvfS5oYXMtZGF0YS1cW3Nsb3RcPWNhcmQtZm9vdGVyXF1cOnBiLTA6aGFzKFtkYXRhLXNsb3Q9Y2FyZC1mb290ZXJdKXtwYWRkaW5nLWJvdHRvbTowfS5oYXMtXFtcPmltZ1w6Zmlyc3QtY2hpbGRcXVw6cHQtMDpoYXMoPmltZzpmaXJzdC1jaGlsZCl7cGFkZGluZy10b3A6MH0uaGFzLVxbXD5zdmdcXVw6Z3JpZC1jb2xzLVxbYXV0b18xZnJcXTpoYXMoPnN2Zyl7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyfS5oYXMtXFtcPnN2Z1xdXDpnYXAteC0yOmhhcyg+c3ZnKXtjb2x1bW4tZ2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uYXJpYS1leHBhbmRlZFw6YmctbXV0ZWRbYXJpYS1leHBhbmRlZD10cnVlXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW11dGVkKX0uYXJpYS1leHBhbmRlZFw6Ymctc2Vjb25kYXJ5W2FyaWEtZXhwYW5kZWQ9dHJ1ZV17YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1zZWNvbmRhcnkpfS5hcmlhLWV4cGFuZGVkXDp0ZXh0LWZvcmVncm91bmRbYXJpYS1leHBhbmRlZD10cnVlXXtjb2xvcjp2YXIoLS1mb3JlZ3JvdW5kKX0uYXJpYS1leHBhbmRlZFw6dGV4dC1zZWNvbmRhcnktZm9yZWdyb3VuZFthcmlhLWV4cGFuZGVkPXRydWVde2NvbG9yOnZhcigtLXNlY29uZGFyeS1mb3JlZ3JvdW5kKX0uYXJpYS1pbnZhbGlkXDpib3JkZXItZGVzdHJ1Y3RpdmVbYXJpYS1pbnZhbGlkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9LmFyaWEtaW52YWxpZFw6cmluZy0zW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQsKSAwIDAgMCBjYWxjKDNweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcixjdXJyZW50Y29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9LmFyaWEtaW52YWxpZFw6cmluZy1kZXN0cnVjdGl2ZVwvMjBbYXJpYS1pbnZhbGlkPXRydWVdey0tdHctcmluZy1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5hcmlhLWludmFsaWRcOnJpbmctZGVzdHJ1Y3RpdmVcLzIwW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgMjAlLCB0cmFuc3BhcmVudCl9fS5kYXRhLXBsYWNlaG9sZGVyXDp0ZXh0LW11dGVkLWZvcmVncm91bmRbZGF0YS1wbGFjZWhvbGRlcl17Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9LmRhdGEtXFthbGlnbi10cmlnZ2VyXD10cnVlXF1cOmFuaW1hdGUtbm9uZVtkYXRhLWFsaWduLXRyaWdnZXI9dHJ1ZV17YW5pbWF0aW9uOm5vbmV9LmRhdGEtXFtkaXNhYmxlZFxdXDpwb2ludGVyLWV2ZW50cy1ub25lW2RhdGEtZGlzYWJsZWRde3BvaW50ZXItZXZlbnRzOm5vbmV9LmRhdGEtXFtkaXNhYmxlZFxdXDpvcGFjaXR5LTUwW2RhdGEtZGlzYWJsZWRde29wYWNpdHk6LjV9LmRhdGEtXFtwb3NpdGlvblw9cG9wcGVyXF1cOmgtXCgtLXJla2Etc2VsZWN0LXRyaWdnZXItaGVpZ2h0XClbZGF0YS1wb3NpdGlvbj1wb3BwZXJde2hlaWdodDp2YXIoLS1yZWthLXNlbGVjdC10cmlnZ2VyLWhlaWdodCl9LmRhdGEtXFtwb3NpdGlvblw9cG9wcGVyXF1cOnctZnVsbFtkYXRhLXBvc2l0aW9uPXBvcHBlcl17d2lkdGg6MTAwJX0uZGF0YS1cW3Bvc2l0aW9uXD1wb3BwZXJcXVw6bWluLXctXCgtLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGhcKVtkYXRhLXBvc2l0aW9uPXBvcHBlcl17bWluLXdpZHRoOnZhcigtLXJla2Etc2VsZWN0LXRyaWdnZXItd2lkdGgpfS5kYXRhLVxbc2lkZVw9Ym90dG9tXF1cOnRyYW5zbGF0ZS15LTFbZGF0YS1zaWRlPWJvdHRvbV17LS10dy10cmFuc2xhdGUteTp2YXIoLS1zcGFjaW5nKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0uZGF0YS1cW3NpZGVcPWJvdHRvbVxdXDpzbGlkZS1pbi1mcm9tLXRvcC0yW2RhdGEtc2lkZT1ib3R0b21dey0tdHctZW50ZXItdHJhbnNsYXRlLXk6Y2FsYygyKnZhcigtLXNwYWNpbmcpKi0xKX0uZGF0YS1cW3NpZGVcPWlubGluZS1lbmRcXVw6c2xpZGUtaW4tZnJvbS1sZWZ0LTJbZGF0YS1zaWRlPWlubGluZS1lbmRdey0tdHctZW50ZXItdHJhbnNsYXRlLXg6Y2FsYygyKnZhcigtLXNwYWNpbmcpKi0xKX0uZGF0YS1cW3NpZGVcPWlubGluZS1zdGFydFxdXDpzbGlkZS1pbi1mcm9tLXJpZ2h0LTJbZGF0YS1zaWRlPWlubGluZS1zdGFydF17LS10dy1lbnRlci10cmFuc2xhdGUteDpjYWxjKDIqdmFyKC0tc3BhY2luZykpfS5kYXRhLVxbc2lkZVw9bGVmdFxdXDotdHJhbnNsYXRlLXgtMVtkYXRhLXNpZGU9bGVmdF17LS10dy10cmFuc2xhdGUteDpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc2lkZVw9bGVmdFxdXDpzbGlkZS1pbi1mcm9tLXJpZ2h0LTJbZGF0YS1zaWRlPWxlZnRdey0tdHctZW50ZXItdHJhbnNsYXRlLXg6Y2FsYygyKnZhcigtLXNwYWNpbmcpKX0uZGF0YS1cW3NpZGVcPXJpZ2h0XF1cOnRyYW5zbGF0ZS14LTFbZGF0YS1zaWRlPXJpZ2h0XXstLXR3LXRyYW5zbGF0ZS14OnZhcigtLXNwYWNpbmcpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc2lkZVw9cmlnaHRcXVw6c2xpZGUtaW4tZnJvbS1sZWZ0LTJbZGF0YS1zaWRlPXJpZ2h0XXstLXR3LWVudGVyLXRyYW5zbGF0ZS14OmNhbGMoMip2YXIoLS1zcGFjaW5nKSotMSl9LmRhdGEtXFtzaWRlXD10b3BcXVw6LXRyYW5zbGF0ZS15LTFbZGF0YS1zaWRlPXRvcF17LS10dy10cmFuc2xhdGUteTpjYWxjKHZhcigtLXNwYWNpbmcpICogLTEpO3RyYW5zbGF0ZTp2YXIoLS10dy10cmFuc2xhdGUteCkgdmFyKC0tdHctdHJhbnNsYXRlLXkpfS5kYXRhLVxbc2lkZVw9dG9wXF1cOnNsaWRlLWluLWZyb20tYm90dG9tLTJbZGF0YS1zaWRlPXRvcF17LS10dy1lbnRlci10cmFuc2xhdGUteTpjYWxjKDIqdmFyKC0tc3BhY2luZykpfS5kYXRhLVxbc2l6ZVw9ZGVmYXVsdFxdXDpoLThbZGF0YS1zaXplPWRlZmF1bHRde2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9LmRhdGEtXFtzaXplXD1zbVxdXDpoLTdbZGF0YS1zaXplPXNtXXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDcpfS5kYXRhLVxbc2l6ZVw9c21cXVw6Z2FwLTNbZGF0YS1zaXplPXNtXXtnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5kYXRhLVxbc2l6ZVw9c21cXVw6cm91bmRlZC1cW21pblwodmFyXCgtLXJhZGl1cy1tZFwpXCwxMHB4XClcXVtkYXRhLXNpemU9c21de2JvcmRlci1yYWRpdXM6bWluKHZhcigtLXJhZGl1cy1tZCksIDEwcHgpfS5kYXRhLVxbc2l6ZVw9c21cXVw6cHktM1tkYXRhLXNpemU9c21de3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5kYXRhLVxbc2l6ZVw9c21cXVw6aGFzLWRhdGEtXFtzbG90XD1jYXJkLWZvb3RlclxdXDpwYi0wW2RhdGEtc2l6ZT1zbV06aGFzKFtkYXRhLXNsb3Q9Y2FyZC1mb290ZXJdKXtwYWRkaW5nLWJvdHRvbTowfTppcyguXCpcKlw6ZGF0YS1cW3Nsb3RcPWFjY29yZGlvbi10cmlnZ2VyLWljb25cXVw6bWwtYXV0byAqKVtkYXRhLXNsb3Q9YWNjb3JkaW9uLXRyaWdnZXItaWNvbl17bWFyZ2luLWxlZnQ6YXV0b306aXMoLlwqXCpcOmRhdGEtXFtzbG90XD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXF1cOnNpemUtNCAqKVtkYXRhLXNsb3Q9YWNjb3JkaW9uLXRyaWdnZXItaWNvbl17d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9OmlzKC5cKlwqXDpkYXRhLVxbc2xvdFw9YWNjb3JkaW9uLXRyaWdnZXItaWNvblxdXDp0ZXh0LW11dGVkLWZvcmVncm91bmQgKilbZGF0YS1zbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25de2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfTppcyguXCpcOmRhdGEtXFtzbG90XD1hbGVydC1kZXNjcmlwdGlvblxdXDp0ZXh0LWRlc3RydWN0aXZlXC85MD4qKVtkYXRhLXNsb3Q9YWxlcnQtZGVzY3JpcHRpb25de2NvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7OmlzKC5cKlw6ZGF0YS1cW3Nsb3RcPWFsZXJ0LWRlc2NyaXB0aW9uXF1cOnRleHQtZGVzdHJ1Y3RpdmVcLzkwPiopW2RhdGEtc2xvdD1hbGVydC1kZXNjcmlwdGlvbl17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgOTAlLCB0cmFuc3BhcmVudCl9fTppcyguXCpcOmRhdGEtXFtzbG90XD1hbGVydC1kZXNjcmlwdGlvblxdXDp0ZXh0LXN0YXR1cy13YXJuXC85MD4qKVtkYXRhLXNsb3Q9YWxlcnQtZGVzY3JpcHRpb25de2NvbG9yOnZhcigtLXN0YXR1cy13YXJuKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7OmlzKC5cKlw6ZGF0YS1cW3Nsb3RcPWFsZXJ0LWRlc2NyaXB0aW9uXF1cOnRleHQtc3RhdHVzLXdhcm5cLzkwPiopW2RhdGEtc2xvdD1hbGVydC1kZXNjcmlwdGlvbl17Y29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1zdGF0dXMtd2FybikgOTAlLCB0cmFuc3BhcmVudCl9fTppcyguXCpcOmRhdGEtXFtzbG90XD1zZWxlY3QtdmFsdWVcXVw6bGluZS1jbGFtcC0xPiopW2RhdGEtc2xvdD1zZWxlY3QtdmFsdWVdey13ZWJraXQtbGluZS1jbGFtcDoxOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtkaXNwbGF5Oi13ZWJraXQtYm94O292ZXJmbG93OmhpZGRlbn06aXMoLlwqXDpkYXRhLVxbc2xvdFw9c2VsZWN0LXZhbHVlXF1cOmZsZXg+KilbZGF0YS1zbG90PXNlbGVjdC12YWx1ZV17ZGlzcGxheTpmbGV4fTppcyguXCpcOmRhdGEtXFtzbG90XD1zZWxlY3QtdmFsdWVcXVw6aXRlbXMtY2VudGVyPiopW2RhdGEtc2xvdD1zZWxlY3QtdmFsdWVde2FsaWduLWl0ZW1zOmNlbnRlcn06aXMoLlwqXDpkYXRhLVxbc2xvdFw9c2VsZWN0LXZhbHVlXF1cOmdhcC0xXC41PiopW2RhdGEtc2xvdD1zZWxlY3QtdmFsdWVde2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0uZGF0YS1cW3N0YXRlXD1zZWxlY3RlZFxdXDpiZy1tdXRlZFtkYXRhLXN0YXRlPXNlbGVjdGVkXXtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW11dGVkKX0uZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVw6cm91bmRlZC1ub25lW2RhdGEtdmFyaWFudD1saW5lXXtib3JkZXItcmFkaXVzOjB9QG1lZGlhICh3aWR0aD49NDByZW0pey5zbVw6Z3JpZC1jb2xzLTJ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgyLG1pbm1heCgwLDFmcikpfS5zbVw6Z3JpZC1jb2xzLTN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLG1pbm1heCgwLDFmcikpfS5zbVw6Z3JpZC1jb2xzLTR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg0LG1pbm1heCgwLDFmcikpfS5zbVw6Z3JpZC1jb2xzLTV7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCg1LG1pbm1heCgwLDFmcikpfS5zbVw6ZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5zbVw6aXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uc21cOml0ZW1zLWVuZHthbGlnbi1pdGVtczpmbGV4LWVuZH0uc21cOml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9LnNtXDpqdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LnNtXDpweC02e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiA2KX19QG1lZGlhICh3aWR0aD49NDhyZW0pey5tZFw6dy01Mnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNTIpfS5tZFw6dy1mdWxse3dpZHRoOjEwMCV9Lm1kXDpzaHJpbmstMHtmbGV4LXNocmluazowfS5tZFw6ZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5tZFw6ZmxleC1yb3d7ZmxleC1kaXJlY3Rpb246cm93fS5tZFw6Ym9yZGVyLXJ7Ym9yZGVyLXJpZ2h0LXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLXJpZ2h0LXdpZHRoOjFweH0ubWRcOmJvcmRlci1iLTB7Ym9yZGVyLWJvdHRvbS1zdHlsZTp2YXIoLS10dy1ib3JkZXItc3R5bGUpO2JvcmRlci1ib3R0b20td2lkdGg6MH0ubWRcOnByLTN7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm1kXDpwYi0we3BhZGRpbmctYm90dG9tOjB9Lm1kXDp0ZXh0LXNte2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9Lm1kXDp0ZXh0LXByZXR0eXt0ZXh0LXdyYXA6cHJldHR5fX1AbWVkaWEgKHdpZHRoPj02NHJlbSl7LmxnXDpncmlkLWNvbHMtMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDIsbWlubWF4KDAsMWZyKSl9LmxnXDpncmlkLWNvbHMtNHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDQsbWlubWF4KDAsMWZyKSl9LmxnXDpweC04e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiA4KX19QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXsuZGFya1w6Ym9yZGVyLWlucHV0e2JvcmRlci1jb2xvcjp2YXIoLS1pbnB1dCl9LmRhcmtcOmJnLWRlc3RydWN0aXZlXC8yMHtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWRlc3RydWN0aXZlKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRhcmtcOmJnLWRlc3RydWN0aXZlXC8yMHtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tZGVzdHJ1Y3RpdmUpIDIwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6YmctaW5wdXRcLzMwe2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6YmctaW5wdXRcLzMwe2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1pbnB1dCkgMzAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDp0ZXh0LW11dGVkLWZvcmVncm91bmR7Y29sb3I6dmFyKC0tbXV0ZWQtZm9yZWdyb3VuZCl9QG1lZGlhIChob3Zlcjpob3Zlcil7LmRhcmtcOmhvdmVyXDpiZy1kZXN0cnVjdGl2ZVwvMzA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzMwOmhvdmVye2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgMzAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDpob3Zlclw6YmctaW5wdXRcLzUwOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0taW5wdXQpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuZGFya1w6aG92ZXJcOmJnLWlucHV0XC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDUwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6aG92ZXJcOmJnLW11dGVkXC81MDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLW11dGVkKX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LmRhcmtcOmhvdmVyXDpiZy1tdXRlZFwvNTA6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLW11dGVkKSA1MCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmhvdmVyXDp0ZXh0LWZvcmVncm91bmQ6aG92ZXJ7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9fS5kYXJrXDpmb2N1cy12aXNpYmxlXDpyaW5nLWRlc3RydWN0aXZlXC80MDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpmb2N1cy12aXNpYmxlXDpyaW5nLWRlc3RydWN0aXZlXC80MDpmb2N1cy12aXNpYmxley0tdHctcmluZy1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSA0MCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmRpc2FibGVkXDpiZy1pbnB1dFwvODA6ZGlzYWJsZWR7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpkaXNhYmxlZFw6YmctaW5wdXRcLzgwOmRpc2FibGVke2JhY2tncm91bmQtY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1pbnB1dCkgODAlLCB0cmFuc3BhcmVudCl9fS5kYXJrXDphcmlhLWludmFsaWRcOmJvcmRlci1kZXN0cnVjdGl2ZVwvNTBbYXJpYS1pbnZhbGlkPXRydWVde2JvcmRlci1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDphcmlhLWludmFsaWRcOmJvcmRlci1kZXN0cnVjdGl2ZVwvNTBbYXJpYS1pbnZhbGlkPXRydWVde2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSA1MCUsIHRyYW5zcGFyZW50KX19LmRhcmtcOmFyaWEtaW52YWxpZFw6cmluZy1kZXN0cnVjdGl2ZVwvNDBbYXJpYS1pbnZhbGlkPXRydWVdey0tdHctcmluZy1jb2xvcjp2YXIoLS1kZXN0cnVjdGl2ZSl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDphcmlhLWludmFsaWRcOnJpbmctZGVzdHJ1Y3RpdmVcLzQwW2FyaWEtaW52YWxpZD10cnVlXXstLXR3LXJpbmctY29sb3I6Y29sb3ItbWl4KGluIG9rbGFiLCB2YXIoLS1kZXN0cnVjdGl2ZSkgNDAlLCB0cmFuc3BhcmVudCl9fX0uZGF0YS1vcGVuXDphbmltYXRlLWFjY29yZGlvbi1kb3duOndoZXJlKFtkYXRhLXN0YXRlPW9wZW5dKSwuZGF0YS1vcGVuXDphbmltYXRlLWFjY29yZGlvbi1kb3duOndoZXJlKFtkYXRhLW9wZW5dOm5vdChbZGF0YS1vcGVuPWZhbHNlXSkpe2FuaW1hdGlvbjphY2NvcmRpb24tZG93biB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjJzKSl2YXIoLS10dy1lYXNlLGVhc2Utb3V0KXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1vcGVuXDphbmltYXRlLWluOndoZXJlKFtkYXRhLXN0YXRlPW9wZW5dKSwuZGF0YS1vcGVuXDphbmltYXRlLWluOndoZXJlKFtkYXRhLW9wZW5dOm5vdChbZGF0YS1vcGVuPWZhbHNlXSkpe2FuaW1hdGlvbjplbnRlciB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjE1cykpdmFyKC0tdHctZWFzZSxlYXNlKXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1vcGVuXDpmYWRlLWluLTA6d2hlcmUoW2RhdGEtc3RhdGU9b3Blbl0pLC5kYXRhLW9wZW5cOmZhZGUtaW4tMDp3aGVyZShbZGF0YS1vcGVuXTpub3QoW2RhdGEtb3Blbj1mYWxzZV0pKXstLXR3LWVudGVyLW9wYWNpdHk6MH0uZGF0YS1vcGVuXDp6b29tLWluLTk1OndoZXJlKFtkYXRhLXN0YXRlPW9wZW5dKSwuZGF0YS1vcGVuXDp6b29tLWluLTk1OndoZXJlKFtkYXRhLW9wZW5dOm5vdChbZGF0YS1vcGVuPWZhbHNlXSkpey0tdHctZW50ZXItc2NhbGU6Ljk1fS5kYXRhLWNsb3NlZFw6YW5pbWF0ZS1hY2NvcmRpb24tdXA6d2hlcmUoW2RhdGEtc3RhdGU9Y2xvc2VkXSksLmRhdGEtY2xvc2VkXDphbmltYXRlLWFjY29yZGlvbi11cDp3aGVyZShbZGF0YS1jbG9zZWRdOm5vdChbZGF0YS1jbG9zZWQ9ZmFsc2VdKSl7YW5pbWF0aW9uOmFjY29yZGlvbi11cCB2YXIoLS10dy1hbmltYXRpb24tZHVyYXRpb24sdmFyKC0tdHctZHVyYXRpb24sLjJzKSl2YXIoLS10dy1lYXNlLGVhc2Utb3V0KXZhcigtLXR3LWFuaW1hdGlvbi1kZWxheSwwcyl2YXIoLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50LDEpdmFyKC0tdHctYW5pbWF0aW9uLWRpcmVjdGlvbixub3JtYWwpdmFyKC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZSxub25lKX0uZGF0YS1jbG9zZWRcOmFuaW1hdGUtb3V0OndoZXJlKFtkYXRhLXN0YXRlPWNsb3NlZF0pLC5kYXRhLWNsb3NlZFw6YW5pbWF0ZS1vdXQ6d2hlcmUoW2RhdGEtY2xvc2VkXTpub3QoW2RhdGEtY2xvc2VkPWZhbHNlXSkpe2FuaW1hdGlvbjpleGl0IHZhcigtLXR3LWFuaW1hdGlvbi1kdXJhdGlvbix2YXIoLS10dy1kdXJhdGlvbiwuMTVzKSl2YXIoLS10dy1lYXNlLGVhc2UpdmFyKC0tdHctYW5pbWF0aW9uLWRlbGF5LDBzKXZhcigtLXR3LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsMSl2YXIoLS10dy1hbmltYXRpb24tZGlyZWN0aW9uLG5vcm1hbCl2YXIoLS10dy1hbmltYXRpb24tZmlsbC1tb2RlLG5vbmUpfS5kYXRhLWNsb3NlZFw6ZmFkZS1vdXQtMDp3aGVyZShbZGF0YS1zdGF0ZT1jbG9zZWRdKSwuZGF0YS1jbG9zZWRcOmZhZGUtb3V0LTA6d2hlcmUoW2RhdGEtY2xvc2VkXTpub3QoW2RhdGEtY2xvc2VkPWZhbHNlXSkpey0tdHctZXhpdC1vcGFjaXR5OjB9LmRhdGEtY2xvc2VkXDp6b29tLW91dC05NTp3aGVyZShbZGF0YS1zdGF0ZT1jbG9zZWRdKSwuZGF0YS1jbG9zZWRcOnpvb20tb3V0LTk1OndoZXJlKFtkYXRhLWNsb3NlZF06bm90KFtkYXRhLWNsb3NlZD1mYWxzZV0pKXstLXR3LWV4aXQtc2NhbGU6Ljk1fS5kYXRhLWFjdGl2ZVw6YmctYmFja2dyb3VuZDp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGF0YS1hY3RpdmVcOmJnLWJhY2tncm91bmQ6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2JhY2tncm91bmQtY29sb3I6dmFyKC0tYmFja2dyb3VuZCl9LmRhdGEtYWN0aXZlXDp0ZXh0LWZvcmVncm91bmQ6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmRhdGEtYWN0aXZlXDp0ZXh0LWZvcmVncm91bmQ6d2hlcmUoW2RhdGEtYWN0aXZlXTpub3QoW2RhdGEtYWN0aXZlPWZhbHNlXSkpe2NvbG9yOnZhcigtLWZvcmVncm91bmQpfS5ncm91cC1kYXRhLVxbdmFyaWFudFw9ZGVmYXVsdFxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpzaGFkb3ctc206aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9ZGVmYXVsdF0gKik6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1kZWZhdWx0XF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOnNoYWRvdy1zbTppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1kZWZhdWx0XSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7LS10dy1zaGFkb3c6MCAxcHggM3B4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksIDAgMXB4IDJweCAtMXB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpO2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSwgdmFyKC0tdHctaW5zZXQtcmluZy1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLCB2YXIoLS10dy1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXNoYWRvdyl9Lmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmJnLXRyYW5zcGFyZW50OmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5ncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7YmFja2dyb3VuZC1jb2xvcjojMDAwMH0uZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6c2hhZG93LW5vbmU6aXMoOndoZXJlKC5ncm91cFwvdGFicy1saXN0KVtkYXRhLXZhcmlhbnQ9bGluZV0gKik6d2hlcmUoW2RhdGEtc3RhdGU9YWN0aXZlXSksLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOnNoYWRvdy1ub25lOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXstLXR3LXNoYWRvdzowIDAgIzAwMDA7Ym94LXNoYWRvdzp2YXIoLS10dy1pbnNldC1zaGFkb3cpLCB2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksIHZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksIHZhcigtLXR3LXJpbmctc2hhZG93KSwgdmFyKC0tdHctc2hhZG93KX06aXMoLmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmFmdGVyXDpvcGFjaXR5LTEwMDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZ3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6YWZ0ZXJcOm9wYWNpdHktMTAwOmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKSk6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtvcGFjaXR5OjF9QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXsuZGFya1w6ZGF0YS1hY3RpdmVcOmJvcmRlci1pbnB1dDp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6ZGF0YS1hY3RpdmVcOmJvcmRlci1pbnB1dDp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7Ym9yZGVyLWNvbG9yOnZhcigtLWlucHV0KX0uZGFya1w6ZGF0YS1hY3RpdmVcOmJnLWlucHV0XC8zMDp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6ZGF0YS1hY3RpdmVcOmJnLWlucHV0XC8zMDp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1pbnB1dCl9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLCByZWQsIHJlZCkpey5kYXJrXDpkYXRhLWFjdGl2ZVw6YmctaW5wdXRcLzMwOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5kYXJrXDpkYXRhLWFjdGl2ZVw6YmctaW5wdXRcLzMwOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXtiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0taW5wdXQpIDMwJSwgdHJhbnNwYXJlbnQpfX0uZGFya1w6ZGF0YS1hY3RpdmVcOnRleHQtZm9yZWdyb3VuZDp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6ZGF0YS1hY3RpdmVcOnRleHQtZm9yZWdyb3VuZDp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9LmRhcmtcOmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmJvcmRlci10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1zdGF0ZT1hY3RpdmVdKSwuZGFya1w6Z3JvdXAtZGF0YS1cW3ZhcmlhbnRcPWxpbmVcXVwvdGFicy1saXN0XDpkYXRhLWFjdGl2ZVw6Ym9yZGVyLXRyYW5zcGFyZW50OmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLWFjdGl2ZV06bm90KFtkYXRhLWFjdGl2ZT1mYWxzZV0pKXtib3JkZXItY29sb3I6IzAwMDB9LmRhcmtcOmdyb3VwLWRhdGEtXFt2YXJpYW50XD1saW5lXF1cL3RhYnMtbGlzdFw6ZGF0YS1hY3RpdmVcOmJnLXRyYW5zcGFyZW50OmlzKDp3aGVyZSguZ3JvdXBcL3RhYnMtbGlzdClbZGF0YS12YXJpYW50PWxpbmVdICopOndoZXJlKFtkYXRhLXN0YXRlPWFjdGl2ZV0pLC5kYXJrXDpncm91cC1kYXRhLVxbdmFyaWFudFw9bGluZVxdXC90YWJzLWxpc3RcOmRhdGEtYWN0aXZlXDpiZy10cmFuc3BhcmVudDppcyg6d2hlcmUoLmdyb3VwXC90YWJzLWxpc3QpW2RhdGEtdmFyaWFudD1saW5lXSAqKTp3aGVyZShbZGF0YS1hY3RpdmVdOm5vdChbZGF0YS1hY3RpdmU9ZmFsc2VdKSl7YmFja2dyb3VuZC1jb2xvcjojMDAwMH19LmRhdGEtaG9yaXpvbnRhbFw6ZmxleC1jb2w6d2hlcmUoW2RhdGEtb3JpZW50YXRpb249aG9yaXpvbnRhbF0pe2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uXFtcJl9hXF1cOnVuZGVybGluZSBhe3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX0uXFtcJl9hXF1cOnVuZGVybGluZS1vZmZzZXQtMyBhe3RleHQtdW5kZXJsaW5lLW9mZnNldDozcHh9QG1lZGlhIChob3Zlcjpob3Zlcil7LlxbXCZfYVxdXDpob3Zlclw6dGV4dC1mb3JlZ3JvdW5kIGE6aG92ZXJ7Y29sb3I6dmFyKC0tZm9yZWdyb3VuZCl9fS5cW1wmX3BcOm5vdFwoXDpsYXN0LWNoaWxkXClcXVw6bWItNCBwOm5vdCg6bGFzdC1jaGlsZCl7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LlxbXCZfc3ZnXF1cOnBvaW50ZXItZXZlbnRzLW5vbmUgc3Zne3BvaW50ZXItZXZlbnRzOm5vbmV9LlxbXCZfc3ZnXF1cOnNocmluay0wIHN2Z3tmbGV4LXNocmluazowfS5cW1wmX3N2Z1w6bm90XChcW2NsYXNzXCpcPXNpemUtXF1cKVxdXDpzaXplLTMgc3ZnOm5vdChbY2xhc3MqPXNpemUtXSl7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpO2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LlxbXCZfc3ZnXDpub3RcKFxbY2xhc3NcKlw9c2l6ZS1cXVwpXF1cOnNpemUtM1wuNSBzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMy41KTtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSl9LlxbXCZfc3ZnXDpub3RcKFxbY2xhc3NcKlw9c2l6ZS1cXVwpXF1cOnNpemUtNCBzdmc6bm90KFtjbGFzcyo9c2l6ZS1dKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uXFtcJl90clxdXDpib3JkZXItYiB0cntib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LlxbXCZfdHJcOmxhc3QtY2hpbGRcXVw6Ym9yZGVyLTAgdHI6bGFzdC1jaGlsZHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MH0uXFtcJlw6aGFzXChcW3JvbGVcPWNoZWNrYm94XF1cKVxdXDpwci0wOmhhcyhbcm9sZT1jaGVja2JveF0pe3BhZGRpbmctcmlnaHQ6MH0uXFtcLmJvcmRlci1iXF1cOnBiLTQuYm9yZGVyLWJ7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5ncm91cC1kYXRhLVxbc2l6ZVw9c21cXVwvY2FyZFw6XFtcLmJvcmRlci1iXF1cOnBiLTM6aXMoOndoZXJlKC5ncm91cFwvY2FyZClbZGF0YS1zaXplPXNtXSAqKS5ib3JkZXItYntwYWRkaW5nLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9QG1lZGlhIChob3Zlcjpob3Zlcil7LlxbYVxdXDpob3Zlclw6YmctZGVzdHJ1Y3RpdmVcLzIwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tZGVzdHJ1Y3RpdmUpfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYiwgcmVkLCByZWQpKXsuXFthXF1cOmhvdmVyXDpiZy1kZXN0cnVjdGl2ZVwvMjA6aXMoYSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLWRlc3RydWN0aXZlKSAyMCUsIHRyYW5zcGFyZW50KX19LlxbYVxdXDpob3Zlclw6YmctbXV0ZWQ6aXMoYSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1tdXRlZCl9LlxbYVxdXDpob3Zlclw6YmctcHJpbWFyeVwvODA6aXMoYSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp2YXIoLS1wcmltYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbYVxdXDpob3Zlclw6YmctcHJpbWFyeVwvODA6aXMoYSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsIHZhcigtLXByaW1hcnkpIDgwJSwgdHJhbnNwYXJlbnQpfX0uXFthXF1cOmhvdmVyXDpiZy1zZWNvbmRhcnlcLzgwOmlzKGEpOmhvdmVye2JhY2tncm91bmQtY29sb3I6dmFyKC0tc2Vjb25kYXJ5KX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIsIHJlZCwgcmVkKSl7LlxbYVxdXDpob3Zlclw6Ymctc2Vjb25kYXJ5XC84MDppcyhhKTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOmNvbG9yLW1peChpbiBva2xhYiwgdmFyKC0tc2Vjb25kYXJ5KSA4MCUsIHRyYW5zcGFyZW50KX19LlxbYVxdXDpob3Zlclw6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kOmlzKGEpOmhvdmVye2NvbG9yOnZhcigtLW11dGVkLWZvcmVncm91bmQpfX06aXMoLlwqXDpcW2ltZ1w6Zmlyc3QtY2hpbGRcXVw6cm91bmRlZC10LXhsPiopOmlzKGltZzpmaXJzdC1jaGlsZCl7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgKyA0cHgpO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOmNhbGModmFyKC0tcmFkaXVzKSArIDRweCl9OmlzKC5cKlw6XFtpbWdcOmxhc3QtY2hpbGRcXVw6cm91bmRlZC1iLXhsPiopOmlzKGltZzpsYXN0LWNoaWxkKXtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czpjYWxjKHZhcigtLXJhZGl1cykgKyA0cHgpO2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6Y2FsYyh2YXIoLS1yYWRpdXMpICsgNHB4KX06aXMoLlwqXDpcW3NwYW5cXVw6bGFzdFw6ZmxleD4qKTppcyhzcGFuKTpsYXN0LWNoaWxke2Rpc3BsYXk6ZmxleH06aXMoLlwqXDpcW3NwYW5cXVw6bGFzdFw6aXRlbXMtY2VudGVyPiopOmlzKHNwYW4pOmxhc3QtY2hpbGR7YWxpZ24taXRlbXM6Y2VudGVyfTppcyguXCpcOlxbc3BhblxdXDpsYXN0XDpnYXAtMj4qKTppcyhzcGFuKTpsYXN0LWNoaWxke2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9OmlzKC5cKlw6XFtzdmdcXVw6cm93LXNwYW4tMj4qKTppcyhzdmcpe2dyaWQtcm93OnNwYW4gMi9zcGFuIDJ9OmlzKC5cKlw6XFtzdmdcXVw6dHJhbnNsYXRlLXktMFwuNT4qKTppcyhzdmcpey0tdHctdHJhbnNsYXRlLXk6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX06aXMoLlwqXDpcW3N2Z1xdXDp0ZXh0LWN1cnJlbnQ+Kik6aXMoc3ZnKXtjb2xvcjpjdXJyZW50Q29sb3J9OmlzKC5cKlw6XFtzdmdcOm5vdFwoXFtjbGFzc1wqXD1zaXplLVxdXClcXVw6c2l6ZS00PiopOmlzKHN2Zzpub3QoW2NsYXNzKj1zaXplLV0pKXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCk7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0uXFtcJlw+c3ZnXF1cOnBvaW50ZXItZXZlbnRzLW5vbmU+c3Zne3BvaW50ZXItZXZlbnRzOm5vbmV9LlxbXCZcPnN2Z1xdXDpzaXplLTNcIT5zdmd7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpIWltcG9ydGFudDtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpIWltcG9ydGFudH19QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWRlbGF5e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowc31AcHJvcGVydHkgLS10dy1hbmltYXRpb24tZGlyZWN0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTpub3JtYWx9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWR1cmF0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYW5pbWF0aW9uLWZpbGwtbW9kZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6bm9uZX1AcHJvcGVydHkgLS10dy1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LWVudGVyLWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZW50ZXItb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1lbnRlci1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZW50ZXItc2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjF9QHByb3BlcnR5IC0tdHctZW50ZXItdHJhbnNsYXRlLXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZW50ZXItdHJhbnNsYXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZXhpdC1ibHVye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWV4aXQtb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MX1AcHJvcGVydHkgLS10dy1leGl0LXJvdGF0ZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1leGl0LXNjYWxle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxfUBwcm9wZXJ0eSAtLXR3LWV4aXQtdHJhbnNsYXRlLXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctZXhpdC10cmFuc2xhdGUteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS1zY3JvbGwtZmFkZS10e3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXNjcm9sbC1mYWRlLWJ7c3ludGF4OiI8bGVuZ3RoLXBlcmNlbnRhZ2U+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tc2Nyb2xsLWZhZGUtc3tzeW50YXg6IjxsZW5ndGgtcGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS1zY3JvbGwtZmFkZS1le3N5bnRheDoiPGxlbmd0aC1wZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXNjcm9sbC1mYWRlLW1hc2t7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS1zaGltbWVyLWFuZ2xle3N5bnRheDoiPGFuZ2xlPiI7aW5oZXJpdHM6dHJ1ZTtpbml0aWFsLXZhbHVlOjIwZGVnfUBwcm9wZXJ0eSAtLXNoaW1tZXItaW1hZ2V7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS1zaGltbWVyLXRleHQtZmlsbHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5zaGltbWVyey13ZWJraXQtdGV4dC1maWxsLWNvbG9yOmN1cnJlbnRDb2xvcjtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7YW5pbWF0aW9uOm5vbmV9fTpyb290ey0tYmFja2dyb3VuZDpva2xjaCg5OSUgLjAwNCA3NSk7LS1mb3JlZ3JvdW5kOm9rbGNoKDE5JSAuMDEyIDc1KTstLWNhcmQ6b2tsY2goOTkuNSUgLjAwMyA3NSk7LS1jYXJkLWZvcmVncm91bmQ6b2tsY2goMTklIC4wMTIgNzUpOy0tcG9wb3Zlcjpva2xjaCg5OS41JSAuMDAzIDc1KTstLXBvcG92ZXItZm9yZWdyb3VuZDpva2xjaCgxOSUgLjAxMiA3NSk7LS1wcmltYXJ5Om9rbGNoKDQ2JSAuMDkgMjAwKTstLXByaW1hcnktZm9yZWdyb3VuZDpva2xjaCg5OCUgLjAwNiAyMDApOy0tc2Vjb25kYXJ5Om9rbGNoKDk1JSAuMDA2IDc1KTstLXNlY29uZGFyeS1mb3JlZ3JvdW5kOm9rbGNoKDIyJSAuMDEgNzUpOy0tbXV0ZWQ6b2tsY2goOTUlIC4wMDYgNzUpOy0tbXV0ZWQtZm9yZWdyb3VuZDpva2xjaCg0OCUgLjAxMiA3NSk7LS1hY2NlbnQ6b2tsY2goOTMlIC4wMiAyMDApOy0tYWNjZW50LWZvcmVncm91bmQ6b2tsY2goMjglIC4wNSAyMDApOy0tZGVzdHJ1Y3RpdmU6b2tsY2goNTUlIC4yIDI1KTstLWJvcmRlcjpva2xjaCg5MCUgLjAwNyA3NSk7LS1pbnB1dDpva2xjaCg5MCUgLjAwNyA3NSk7LS1yaW5nOm9rbGNoKDU1JSAuMDkgMjAwKTstLXJhZGl1czouMzc1cmVtOy0tY2hhcnQtcmVxdWVzdHM6IzAwOWU3MzstLWNoYXJ0LXRva2Vucy1pbjojMDA3MmIyOy0tY2hhcnQtdG9rZW5zLW91dDojZTY5ZjAwOy0tY2hhcnQtY29zdDojZDU1ZTAwOy0tY2hhcnQtc2VyaWVzLWE6IzU2YjRlOTstLWNoYXJ0LXNlcmllcy1iOiM4YTZkMDA7LS1jaGFydC1zZXJpZXMtYzojY2M3OWE3Oy0tY2hhcnQtc2VyaWVzLWQ6IzRkNGQ0ZDstLXN0YXR1cy13YXJuOiNhMzVjMDA7LS1iYXItYW1iZXI6I2EzNWMwMH1AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOmRhcmspezpyb290ey0tYmFja2dyb3VuZDpva2xjaCgxNyUgLjAwNyA3NSk7LS1mb3JlZ3JvdW5kOm9rbGNoKDk1JSAuMDA1IDc1KTstLWNhcmQ6b2tsY2goMjElIC4wMDkgNzUpOy0tY2FyZC1mb3JlZ3JvdW5kOm9rbGNoKDk1JSAuMDA1IDc1KTstLXBvcG92ZXI6b2tsY2goMjElIC4wMDkgNzUpOy0tcG9wb3Zlci1mb3JlZ3JvdW5kOm9rbGNoKDk1JSAuMDA1IDc1KTstLXByaW1hcnk6b2tsY2goNzQlIC4xMSAyMDApOy0tcHJpbWFyeS1mb3JlZ3JvdW5kOm9rbGNoKDE2JSAuMDEyIDIwMCk7LS1zZWNvbmRhcnk6b2tsY2goMjclIC4wMTEgNzUpOy0tc2Vjb25kYXJ5LWZvcmVncm91bmQ6b2tsY2goOTMlIC4wMDUgNzUpOy0tbXV0ZWQ6b2tsY2goMjclIC4wMTEgNzUpOy0tbXV0ZWQtZm9yZWdyb3VuZDpva2xjaCg2OCUgLjAxMiA3NSk7LS1hY2NlbnQ6b2tsY2goMzIlIC4wMzUgMjAwKTstLWFjY2VudC1mb3JlZ3JvdW5kOm9rbGNoKDkxJSAuMDMgMjAwKTstLWRlc3RydWN0aXZlOm9rbGNoKDY4JSAuMTkgMjUpOy0tYm9yZGVyOm9rbGNoKDEwMCUgMCAwLy4xMik7LS1pbnB1dDpva2xjaCgxMDAlIDAgMC8uMTYpOy0tcmluZzpva2xjaCg2MiUgLjEgMjAwKTstLWNoYXJ0LXJlcXVlc3RzOiMxNmI4OTE7LS1jaGFydC10b2tlbnMtaW46IzQwOThkNzstLWNoYXJ0LXRva2Vucy1vdXQ6I2YwYWMxZjstLWNoYXJ0LWNvc3Q6I2U4NzYzYTstLWNoYXJ0LXNlcmllcy1hOiM1NmI0ZTk7LS1jaGFydC1zZXJpZXMtYjojZjBlNDQyOy0tY2hhcnQtc2VyaWVzLWM6I2NjNzlhNzstLWNoYXJ0LXNlcmllcy1kOiNiOGI4Yjg7LS1zdGF0dXMtd2FybjojZjBhYzFmOy0tYmFyLWFtYmVyOiNmMGFjMWZ9fUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXRyYW5zbGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcm90YXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUtentzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNrZXcteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNwYWNlLXktcmV2ZXJzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MH1AcHJvcGVydHkgLS10dy1ib3JkZXItc3R5bGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOnNvbGlkfUBwcm9wZXJ0eSAtLXR3LWxlYWRpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1mb250LXdlaWdodHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXRyYWNraW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3JkaW5hbHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNsYXNoZWQtemVyb3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LW51bWVyaWMtZmlndXJle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1zcGFjaW5ne3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctbnVtZXJpYy1mcmFjdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvdy1jb2xvcntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LXJpbmctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yaW5nLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWluc2V0LXJpbmctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LXJpbmctaW5zZXR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yaW5nLW9mZnNldC13aWR0aHtzeW50YXg6IjxsZW5ndGg+Ijtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOiNmZmZ9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowIDAgIzAwMDB9QHByb3BlcnR5IC0tdHctb3V0bGluZS1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJyaWdodG5lc3N7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1jb250cmFzdHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWdyYXlzY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWh1ZS1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnZlcnR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1vcGFjaXR5e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2F0dXJhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zZXBpYXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1hbHBoYXtzeW50YXg6IjxwZXJjZW50YWdlPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZToxMDAlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LXNpemV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kdXJhdGlvbntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWNvbnRlbnR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOiIifUBrZXlmcmFtZXMgZW50ZXJ7MCV7b3BhY2l0eTp2YXIoLS10dy1lbnRlci1vcGFjaXR5LDEpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCh2YXIoLS10dy1lbnRlci10cmFuc2xhdGUteCwwKSx2YXIoLS10dy1lbnRlci10cmFuc2xhdGUteSwwKSwwKXNjYWxlM2QodmFyKC0tdHctZW50ZXItc2NhbGUsMSksdmFyKC0tdHctZW50ZXItc2NhbGUsMSksdmFyKC0tdHctZW50ZXItc2NhbGUsMSkpcm90YXRlKHZhcigtLXR3LWVudGVyLXJvdGF0ZSwwKSk7ZmlsdGVyOmJsdXIodmFyKC0tdHctZW50ZXItYmx1ciwwKSl9fUBrZXlmcmFtZXMgZXhpdHt0b3tvcGFjaXR5OnZhcigtLXR3LWV4aXQtb3BhY2l0eSwxKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QodmFyKC0tdHctZXhpdC10cmFuc2xhdGUteCwwKSx2YXIoLS10dy1leGl0LXRyYW5zbGF0ZS15LDApLDApc2NhbGUzZCh2YXIoLS10dy1leGl0LXNjYWxlLDEpLHZhcigtLXR3LWV4aXQtc2NhbGUsMSksdmFyKC0tdHctZXhpdC1zY2FsZSwxKSlyb3RhdGUodmFyKC0tdHctZXhpdC1yb3RhdGUsMCkpO2ZpbHRlcjpibHVyKHZhcigtLXR3LWV4aXQtYmx1ciwwKSl9fUBrZXlmcmFtZXMgYWNjb3JkaW9uLWRvd257MCV7aGVpZ2h0OjB9dG97aGVpZ2h0OnZhcigtLXJla2EtYWNjb3JkaW9uLWNvbnRlbnQtaGVpZ2h0LHZhcigtLWFjY29yZGlvbi1wYW5lbC1oZWlnaHQsYXV0bykpfX1Aa2V5ZnJhbWVzIGFjY29yZGlvbi11cHswJXtoZWlnaHQ6dmFyKC0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQsdmFyKC0tYWNjb3JkaW9uLXBhbmVsLWhlaWdodCxhdXRvKSl9dG97aGVpZ2h0OjB9fQo=",
|
|
),
|
|
},
|
|
"kpi-CU52LDmq.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e2EgYXMgZSxzIGFzIHR9ZnJvbSIuL2ZvcmVjYXN0LUJNU2tnNVhzLmpzIjtpbXBvcnR7YyBhcyBuLHMgYXMgcn1mcm9tIi4vcHJvdmlkZXItcmF0ZS1EVTdPZ1NlQi5qcyI7ZnVuY3Rpb24gaSh0KXtsZXQgbj0wO2ZvcihsZXQgciBvZiB0KXtsZXQgdD1yLmxpbWl0cz8uY29zdFBlck1vbnRoVVNEO3QmJnQ+MCYmKG4rPU1hdGgucm91bmQodCplKSl9cmV0dXJuIG59ZnVuY3Rpb24gYShlLHQpe3JldHVybiB0PD0wP251bGw6ZS90fWZ1bmN0aW9uIG8oZSl7aWYoZT09PW51bGwpcmV0dXJuYG9rYDtzd2l0Y2godChlKSl7Y2FzZWBub3JtYWxgOnJldHVybmBva2A7Y2FzZWBhbWJlcmA6cmV0dXJuYHdhcm5gO2Nhc2VgcmVkYDpyZXR1cm5gY3JpdGljYWxgfX1mdW5jdGlvbiBzKGUpe3JldHVybiBlLmZpbHRlcihlPT5lLmhlYWx0aFN0YXRlIT09YGNsb3NlZGApLmxlbmd0aH1mdW5jdGlvbiBjKGUpe2xldCB0PTAscj0wO2ZvcihsZXQgbiBvZiBlKXQrPW4uYXR0ZW1wdHNNaW51dGUscis9bi5mYWlsdXJlc01pbnV0ZTtsZXQgaT1uKHQscik7cmV0dXJue3JhdGU6aT09PW51bGw/bnVsbDoxLWksYXR0ZW1wdHM6dCxmYWlsdXJlczpyfX1mdW5jdGlvbiBsKGUpe2lmKGU9PT1udWxsKXJldHVybmBva2A7c3dpdGNoKHIoMS1lKSl7Y2FzZWBuby10cmFmZmljYDpjYXNlYGhlYWx0aHlgOnJldHVybmBva2A7Y2FzZWBkZWdyYWRlZGA6cmV0dXJuYHdhcm5gO2Nhc2Vgc2V2ZXJlYDpyZXR1cm5gY3JpdGljYWxgfX1leHBvcnR7cyBhcyBhLGMgYXMgaSxvIGFzIG4saSBhcyBvLGwgYXMgcixhIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"nav-Dzb0OTN_.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/IVteKF0qXCkpL2csY2U9LzooW15dKykvLEk9L1wvXCpbXl0qP1wqXC8vZztmdW5jdGlvbiBsZShlKXtsZXQgdD17fTtyZXR1cm4gZS5yZXBsYWNlKEksYGApLnNwbGl0KHNlKS5mb3JFYWNoKGU9PntpZihlKXtsZXQgbj1lLnNwbGl0KGNlKTtuLmxlbmd0aD4xJiYodFtuWzBdLnRyaW0oKV09blsxXS50cmltKCkpfX0pLHR9ZnVuY3Rpb24gdWUoZSl7bGV0IHQ9YGA7aWYoXyhlKSl0PWU7ZWxzZSBpZihkKGUpKWZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtsZXQgcj11ZShlW25dKTtyJiYodCs9citgIGApfWVsc2UgaWYoeShlKSlmb3IobGV0IG4gaW4gZSllW25dJiYodCs9bitgIGApO3JldHVybiB0LnRyaW0oKX1mdW5jdGlvbiBkZShlKXtpZighZSlyZXR1cm4gbnVsbDtsZXR7Y2xhc3M6dCxzdHlsZTpufT1lO3JldHVybiB0JiYhXyh0KSYmKGUuY2xhc3M9dWUodCkpLG4mJihlLnN0eWxlPUYobikpLGV9dmFyIGZlPWBpdGVtc2NvcGUsYWxsb3dmdWxsc2NyZWVuLGZvcm1ub3ZhbGlkYXRlLGlzbWFwLG5vbW9kdWxlLG5vdmFsaWRhdGUscmVhZG9ubHlgLHBlPWUoZmUpO2ZlK2BgO2Z1bmN0aW9uIG1lKGUpe3JldHVybiEhZXx8ZT09PWBgfWZ1bmN0aW9uIGhlKGUsdCl7aWYoZS5sZW5ndGghPT10Lmxlbmd0aClyZXR1cm4hMTtsZXQgbj0hMDtmb3IobGV0IHI9MDtuJiZyPGUubGVuZ3RoO3IrKyluPWdlKGVbcl0sdFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gZ2UoZSx0KXtpZihlPT09dClyZXR1cm4hMDtsZXQgbj1tKGUpLHI9bSh0KTtpZihufHxyKXJldHVybiBuJiZyP2UuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk6ITE7aWYobj12KGUpLHI9dih0KSxufHxyKXJldHVybiBlPT09dDtpZihuPWQoZSkscj1kKHQpLG58fHIpcmV0dXJuIG4mJnI/aGUoZSx0KTohMTtpZihuPXkoZSkscj15KHQpLG58fHIpe2lmKCFufHwhcnx8T2JqZWN0LmtleXMoZSkubGVuZ3RoIT09T2JqZWN0LmtleXModCkubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lLmhhc093blByb3BlcnR5KG4pLGk9dC5oYXNPd25Qcm9wZXJ0eShuKTtpZihyJiYhaXx8IXImJml8fCFnZShlW25dLHRbbl0pKXJldHVybiExfX1yZXR1cm4gU3RyaW5nKGUpPT09U3RyaW5nKHQpfWZ1bmN0aW9uIF9lKGUsdCl7cmV0dXJuIGUuZmluZEluZGV4KGU9PmdlKGUsdCkpfXZhciB2ZT1lPT4hIShlJiZlLl9fdl9pc1JlZj09PSEwKSx5ZT1lPT5fKGUpP2U6ZT09bnVsbD9gYDpkKGUpfHx5KGUpJiYoZS50b1N0cmluZz09PXh8fCFnKGUudG9TdHJpbmcpKT92ZShlKT95ZShlLnZhbHVlKTpKU09OLnN0cmluZ2lmeShlLGJlLDIpOlN0cmluZyhlKSxiZT0oZSx0KT0+dmUodCk/YmUoZSx0LnZhbHVlKTpmKHQpP3tbYE1hcCgke3Quc2l6ZX0pYF06Wy4uLnQuZW50cmllcygpXS5yZWR1Y2UoKGUsW3Qsbl0scik9PihlW3hlKHQscikrYCA9PmBdPW4sZSkse30pfTpwKHQpP3tbYFNldCgke3Quc2l6ZX0pYF06Wy4uLnQudmFsdWVzKCldLm1hcChlPT54ZShlKSl9OnYodCk/eGUodCk6eSh0KSYmIWQodCkmJiF3KHQpP1N0cmluZyh0KTp0LHhlPShlLHQ9YGApPT52KGUpP2BTeW1ib2woJHtlLmRlc2NyaXB0aW9uPz90fSlgOmU7ZnVuY3Rpb24gU2UoZSl7cmV0dXJuIGU9PW51bGw/YGluaXRpYWxgOnR5cGVvZiBlPT1gc3RyaW5nYD9lPT09YGA/YCBgOmU6U3RyaW5nKGUpfXZhciBMLENlPWNsYXNze2NvbnN0cnVjdG9yKGU9ITEpe3RoaXMuZGV0YWNoZWQ9ZSx0aGlzLl9hY3RpdmU9ITAsdGhpcy5fb249MCx0aGlzLmVmZmVjdHM9W10sdGhpcy5jbGVhbnVwcz1bXSx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl93YXJuT25SdW49ITAsdGhpcy5fX3Zfc2tpcD0hMCwhZSYmTCYmKEwuYWN0aXZlPyh0aGlzLnBhcmVudD1MLHRoaXMuaW5kZXg9KEwuc2NvcGVzfHwoTC5zY29wZXM9W10pKS5wdXNoKHRoaXMpLTEpOih0aGlzLl9hY3RpdmU9ITEsdGhpcy5fd2Fybk9uUnVuPSExKSl9Z2V0IGFjdGl2ZSgpe3JldHVybiB0aGlzLl9hY3RpdmV9cGF1c2UoKXtpZih0aGlzLl9hY3RpdmUpe3RoaXMuX2lzUGF1c2VkPSEwO2xldCBlLHQ7aWYodGhpcy5zY29wZXMpe2xldCBuPXRoaXMuc2NvcGVzLnNsaWNlKCk7Zm9yKGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspbltlXS5wYXVzZSgpfWZvcihlPTAsdD10aGlzLmVmZmVjdHMubGVuZ3RoO2U8dDtlKyspdGhpcy5lZmZlY3RzW2VdLnBhdXNlKCl9fXJlc3VtZSgpe2lmKHRoaXMuX2FjdGl2ZSYmdGhpcy5faXNQYXVzZWQpe3RoaXMuX2lzUGF1c2VkPSExO2xldCBlLHQ7aWYodGhpcy5zY29wZXMpe2xldCBuPXRoaXMuc2NvcGVzLnNsaWNlKCk7Zm9yKGU9MCx0PW4ubGVuZ3RoO2U8dDtlKyspbltlXS5yZXN1bWUoKX1sZXQgbj10aGlzLmVmZmVjdHMuc2xpY2UoKTtmb3IoZT0wLHQ9bi5sZW5ndGg7ZTx0O2UrKyluW2VdLnJlc3VtZSgpfX1ydW4oZSl7aWYodGhpcy5fYWN0aXZlKXtsZXQgdD1MO3RyeXtyZXR1cm4gTD10aGlzLGUoKX1maW5hbGx5e0w9dH19fW9uKCl7Kyt0aGlzLl9vbj09PTEmJih0aGlzLnByZXZTY29wZT1MLEw9dGhpcyl9b2ZmKCl7aWYodGhpcy5fb24+MCYmLS10aGlzLl9vbj09PTApe2lmKEw9PT10aGlzKUw9dGhpcy5wcmV2U2NvcGU7ZWxzZXtsZXQgZT1MO2Zvcig7ZTspe2lmKGUucHJldlNjb3BlPT09dGhpcyl7ZS5wcmV2U2NvcGU9dGhpcy5wcmV2U2NvcGU7YnJlYWt9ZT1lLnByZXZTY29wZX19dGhpcy5wcmV2U2NvcGU9dm9pZCAwfX1zdG9wKGUpe2lmKHRoaXMuX2FjdGl2ZSl7dGhpcy5fYWN0aXZlPSExO2xldCB0LG47Zm9yKHQ9MCxuPXRoaXMuZWZmZWN0cy5sZW5ndGg7dDxuO3QrKyl0aGlzLmVmZmVjdHNbdF0uc3RvcCgpO2Zvcih0aGlzLmVmZmVjdHMubGVuZ3RoPTAsdD0wLG49dGhpcy5jbGVhbnVwcy5sZW5ndGg7dDxuO3QrKyl0aGlzLmNsZWFudXBzW3RdKCk7aWYodGhpcy5jbGVhbnVwcy5sZW5ndGg9MCx0aGlzLnNjb3Blcyl7bGV0IGU9dGhpcy5zY29wZXMuc2xpY2UoKTtmb3IodD0wLG49ZS5sZW5ndGg7dDxuO3QrKyllW3RdLnN0b3AoITApO3RoaXMuc2NvcGVzLmxlbmd0aD0wfWlmKCF0aGlzLmRldGFjaGVkJiZ0aGlzLnBhcmVudCYmIWUpe2xldCBlPXRoaXMucGFyZW50LnNjb3Blcy5wb3AoKTtlJiZlIT09dGhpcyYmKHRoaXMucGFyZW50LnNjb3Blc1t0aGlzLmluZGV4XT1lLGUuaW5kZXg9dGhpcy5pbmRleCl9dGhpcy5wYXJlbnQ9dm9pZCAwfX19O2Z1bmN0aW9uIHdlKGUpe3JldHVybiBuZXcgQ2UoZSl9ZnVuY3Rpb24gVGUoKXtyZXR1cm4gTH1mdW5jdGlvbiBFZShlLHQ9ITEpe0wmJkwuY2xlYW51cHMucHVzaChlKX12YXIgUixEZT1uZXcgV2Vha1NldCxPZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmZuPWUsdGhpcy5kZXBzPXZvaWQgMCx0aGlzLmRlcHNUYWlsPXZvaWQgMCx0aGlzLmZsYWdzPTUsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmNsZWFudXA9dm9pZCAwLHRoaXMuc2NoZWR1bGVyPXZvaWQgMCxMJiYoTC5hY3RpdmU/TC5lZmZlY3RzLnB1c2godGhpcyk6dGhpcy5mbGFncyY9LTIpfXBhdXNlKCl7dGhpcy5mbGFnc3w9NjR9cmVzdW1lKCl7dGhpcy5mbGFncyY2NCYmKHRoaXMuZmxhZ3MmPS02NSxEZS5oYXModGhpcykmJihEZS5kZWxldGUodGhpcyksdGhpcy50cmlnZ2VyKCkpKX1ub3RpZnkoKXt0aGlzLmZsYWdzJjImJiEodGhpcy5mbGFncyYzMil8fHRoaXMuZmxhZ3MmOHx8TWUodGhpcyl9cnVuKCl7aWYoISh0aGlzLmZsYWdzJjEpKXJldHVybiB0aGlzLmZuKCk7dGhpcy5mbGFnc3w9MixxZSh0aGlzKSxGZSh0aGlzKTtsZXQgZT1SLHQ9VWU7Uj10aGlzLFVlPSEwO3RyeXtyZXR1cm4gdGhpcy5mbigpfWZpbmFsbHl7SWUodGhpcyksUj1lLFVlPXQsdGhpcy5mbGFncyY9LTN9fXN0b3AoKXtpZih0aGlzLmZsYWdzJjEpe2ZvcihsZXQgZT10aGlzLmRlcHM7ZTtlPWUubmV4dERlcCl6ZShlKTt0aGlzLmRlcHM9dGhpcy5kZXBzVGFpbD12b2lkIDAscWUodGhpcyksdGhpcy5vblN0b3AmJnRoaXMub25TdG9wKCksdGhpcy5mbGFncyY9LTJ9fXRyaWdnZXIoKXt0aGlzLmZsYWdzJjY0P0RlLmFkZCh0aGlzKTp0aGlzLnNjaGVkdWxlcj90aGlzLnNjaGVkdWxlcigpOnRoaXMucnVuSWZEaXJ0eSgpfXJ1bklmRGlydHkoKXtMZSh0aGlzKSYmdGhpcy5ydW4oKX1nZXQgZGlydHkoKXtyZXR1cm4gTGUodGhpcyl9fSxrZT0wLEFlLGplO2Z1bmN0aW9uIE1lKGUsdD0hMSl7aWYoZS5mbGFnc3w9OCx0KXtlLm5leHQ9amUsamU9ZTtyZXR1cm59ZS5uZXh0PUFlLEFlPWV9ZnVuY3Rpb24gTmUoKXtrZSsrfWZ1bmN0aW9uIFBlKCl7aWYoLS1rZT4wKXJldHVybjtpZihqZSl7bGV0IGU9amU7Zm9yKGplPXZvaWQgMDtlOyl7bGV0IHQ9ZS5uZXh0O2UubmV4dD12b2lkIDAsZS5mbGFncyY9LTksZT10fX1sZXQgZTtmb3IoO0FlOyl7bGV0IHQ9QWU7Zm9yKEFlPXZvaWQgMDt0Oyl7bGV0IG49dC5uZXh0O2lmKHQubmV4dD12b2lkIDAsdC5mbGFncyY9LTksdC5mbGFncyYxKXRyeXt0LnRyaWdnZXIoKX1jYXRjaCh0KXtlfHw9dH10PW59fWlmKGUpdGhyb3cgZX1mdW5jdGlvbiBGZShlKXtmb3IobGV0IHQ9ZS5kZXBzO3Q7dD10Lm5leHREZXApdC52ZXJzaW9uPS0xLHQucHJldkFjdGl2ZUxpbms9dC5kZXAuYWN0aXZlTGluayx0LmRlcC5hY3RpdmVMaW5rPXR9ZnVuY3Rpb24gSWUoZSl7bGV0IHQsbj1lLmRlcHNUYWlsLHI9bjtmb3IoO3I7KXtsZXQgZT1yLnByZXZEZXA7ci52ZXJzaW9uPT09LTE/KHI9PT1uJiYobj1lKSx6ZShyKSxCZShyKSk6dD1yLHIuZGVwLmFjdGl2ZUxpbms9ci5wcmV2QWN0aXZlTGluayxyLnByZXZBY3RpdmVMaW5rPXZvaWQgMCxyPWV9ZS5kZXBzPXQsZS5kZXBzVGFpbD1ufWZ1bmN0aW9uIExlKGUpe2ZvcihsZXQgdD1lLmRlcHM7dDt0PXQubmV4dERlcClpZih0LmRlcC52ZXJzaW9uIT09dC52ZXJzaW9ufHx0LmRlcC5jb21wdXRlZCYmKFJlKHQuZGVwLmNvbXB1dGVkKXx8dC5kZXAudmVyc2lvbiE9PXQudmVyc2lvbikpcmV0dXJuITA7cmV0dXJuISFlLl9kaXJ0eX1mdW5jdGlvbiBSZShlKXtpZihlLmZsYWdzJjQmJiEoZS5mbGFncyYxNil8fChlLmZsYWdzJj0tMTcsZS5nbG9iYWxWZXJzaW9uPT09SmUpfHwoZS5nbG9iYWxWZXJzaW9uPUplLCFlLmlzU1NSJiZlLmZsYWdzJjEyOCYmKCFlLmRlcHMmJiFlLl9kaXJ0eXx8IUxlKGUpKSkpcmV0dXJuO2UuZmxhZ3N8PTI7bGV0IHQ9ZS5kZXAsbj1SLHI9VWU7Uj1lLFVlPSEwO3RyeXtGZShlKTtsZXQgbj1lLmZuKGUuX3ZhbHVlKTsodC52ZXJzaW9uPT09MHx8aihuLGUuX3ZhbHVlKSkmJihlLmZsYWdzfD0xMjgsZS5fdmFsdWU9bix0LnZlcnNpb24rKyl9Y2F0Y2goZSl7dGhyb3cgdC52ZXJzaW9uKyssZX1maW5hbGx5e1I9bixVZT1yLEllKGUpLGUuZmxhZ3MmPS0zfX1mdW5jdGlvbiB6ZShlLHQ9ITEpe2xldHtkZXA6bixwcmV2U3ViOnIsbmV4dFN1YjppfT1lO2lmKHImJihyLm5leHRTdWI9aSxlLnByZXZTdWI9dm9pZCAwKSxpJiYoaS5wcmV2U3ViPXIsZS5uZXh0U3ViPXZvaWQgMCksbi5zdWJzPT09ZSYmKG4uc3Vicz1yLCFyJiZuLmNvbXB1dGVkKSl7bi5jb21wdXRlZC5mbGFncyY9LTU7Zm9yKGxldCBlPW4uY29tcHV0ZWQuZGVwcztlO2U9ZS5uZXh0RGVwKXplKGUsITApfSF0JiYhLS1uLnNjJiZuLm1hcCYmbi5tYXAuZGVsZXRlKG4ua2V5KX1mdW5jdGlvbiBCZShlKXtsZXR7cHJldkRlcDp0LG5leHREZXA6bn09ZTt0JiYodC5uZXh0RGVwPW4sZS5wcmV2RGVwPXZvaWQgMCksbiYmKG4ucHJldkRlcD10LGUubmV4dERlcD12b2lkIDApfWZ1bmN0aW9uIFZlKGUsdCl7ZS5lZmZlY3QgaW5zdGFuY2VvZiBPZSYmKGU9ZS5lZmZlY3QuZm4pO2xldCBuPW5ldyBPZShlKTt0JiZzKG4sdCk7dHJ5e24ucnVuKCl9Y2F0Y2goZSl7dGhyb3cgbi5zdG9wKCksZX1sZXQgcj1uLnJ1bi5iaW5kKG4pO3JldHVybiByLmVmZmVjdD1uLHJ9ZnVuY3Rpb24gSGUoZSl7ZS5lZmZlY3Quc3RvcCgpfXZhciBVZT0hMCxXZT1bXTtmdW5jdGlvbiBHZSgpe1dlLnB1c2goVWUpLFVlPSExfWZ1bmN0aW9uIEtlKCl7bGV0IGU9V2UucG9wKCk7VWU9ZT09PXZvaWQgMHx8ZX1mdW5jdGlvbiBxZShlKXtsZXR7Y2xlYW51cDp0fT1lO2lmKGUuY2xlYW51cD12b2lkIDAsdCl7bGV0IGU9UjtSPXZvaWQgMDt0cnl7dCgpfWZpbmFsbHl7Uj1lfX19dmFyIEplPTAsWWU9Y2xhc3N7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN1Yj1lLHRoaXMuZGVwPXQsdGhpcy52ZXJzaW9uPXQudmVyc2lvbix0aGlzLm5leHREZXA9dGhpcy5wcmV2RGVwPXRoaXMubmV4dFN1Yj10aGlzLnByZXZTdWI9dGhpcy5wcmV2QWN0aXZlTGluaz12b2lkIDB9fSxYZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmNvbXB1dGVkPWUsdGhpcy52ZXJzaW9uPTAsdGhpcy5hY3RpdmVMaW5rPXZvaWQgMCx0aGlzLnN1YnM9dm9pZCAwLHRoaXMubWFwPXZvaWQgMCx0aGlzLmtleT12b2lkIDAsdGhpcy5zYz0wLHRoaXMuX192X3NraXA9ITB9dHJhY2soZSl7aWYoIVJ8fCFVZXx8Uj09PXRoaXMuY29tcHV0ZWQpcmV0dXJuO2xldCB0PXRoaXMuYWN0aXZlTGluaztpZih0PT09dm9pZCAwfHx0LnN1YiE9PVIpdD10aGlzLmFjdGl2ZUxpbms9bmV3IFllKFIsdGhpcyksUi5kZXBzPyh0LnByZXZEZXA9Ui5kZXBzVGFpbCxSLmRlcHNUYWlsLm5leHREZXA9dCxSLmRlcHNUYWlsPXQpOlIuZGVwcz1SLmRlcHNUYWlsPXQsWmUodCk7ZWxzZSBpZih0LnZlcnNpb249PT0tMSYmKHQudmVyc2lvbj10aGlzLnZlcnNpb24sdC5uZXh0RGVwKSl7bGV0IGU9dC5uZXh0RGVwO2UucHJldkRlcD10LnByZXZEZXAsdC5wcmV2RGVwJiYodC5wcmV2RGVwLm5leHREZXA9ZSksdC5wcmV2RGVwPVIuZGVwc1RhaWwsdC5uZXh0RGVwPXZvaWQgMCxSLmRlcHNUYWlsLm5leHREZXA9dCxSLmRlcHNUYWlsPXQsUi5kZXBzPT09dCYmKFIuZGVwcz1lKX1yZXR1cm4gdH10cmlnZ2VyKGUpe3RoaXMudmVyc2lvbisrLEplKyssdGhpcy5ub3RpZnkoZSl9bm90aWZ5KGUpe05lKCk7dHJ5e2ZvcihsZXQgZT10aGlzLnN1YnM7ZTtlPWUucHJldlN1YillLnN1Yi5ub3RpZnkoKSYmZS5zdWIuZGVwLm5vdGlmeSgpfWZpbmFsbHl7UGUoKX19fTtmdW5jdGlvbiBaZShlKXtpZihlLmRlcC5zYysrLGUuc3ViLmZsYWdzJjQpe2xldCB0PWUuZGVwLmNvbXB1dGVkO2lmKHQmJiFlLmRlcC5zdWJzKXt0LmZsYWdzfD0yMDtmb3IobGV0IGU9dC5kZXBzO2U7ZT1lLm5leHREZXApWmUoZSl9bGV0IG49ZS5kZXAuc3VicztuIT09ZSYmKGUucHJldlN1Yj1uLG4mJihuLm5leHRTdWI9ZSkpLGUuZGVwLnN1YnM9ZX19dmFyIFFlPW5ldyBXZWFrTWFwLCRlPVN5bWJvbChgYCksZXQ9U3ltYm9sKGBgKSx0dD1TeW1ib2woYGApO2Z1bmN0aW9uIHooZSx0LG4pe2lmKFVlJiZSKXtsZXQgdD1RZS5nZXQoZSk7dHx8UWUuc2V0KGUsdD1uZXcgTWFwKTtsZXQgcj10LmdldChuKTtyfHwodC5zZXQobixyPW5ldyBYZSksci5tYXA9dCxyLmtleT1uKSxyLnRyYWNrKCl9fWZ1bmN0aW9uIG50KGUsdCxuLHIsaSxhKXtsZXQgbz1RZS5nZXQoZSk7aWYoIW8pe0plKys7cmV0dXJufWxldCBzPWU9PntlJiZlLnRyaWdnZXIoKX07aWYoTmUoKSx0PT09YGNsZWFyYClvLmZvckVhY2gocyk7ZWxzZXtsZXQgaT1kKGUpLGE9aSYmVChuKTtpZihpJiZuPT09YGxlbmd0aGApe2xldCBlPU51bWJlcihyKTtvLmZvckVhY2goKHQsbik9Pnsobj09PWBsZW5ndGhgfHxuPT09dHR8fCF2KG4pJiZuPj1lKSYmcyh0KX0pfWVsc2Ugc3dpdGNoKChuIT09dm9pZCAwfHxvLmhhcyh2b2lkIDApKSYmcyhvLmdldChuKSksYSYmcyhvLmdldCh0dCkpLHQpe2Nhc2VgYWRkYDppP2EmJnMoby5nZXQoYGxlbmd0aGApKToocyhvLmdldCgkZSkpLGYoZSkmJnMoby5nZXQoZXQpKSk7YnJlYWs7Y2FzZWBkZWxldGVgOml8fChzKG8uZ2V0KCRlKSksZihlKSYmcyhvLmdldChldCkpKTticmVhaztjYXNlYHNldGA6ZihlKSYmcyhvLmdldCgkZSkpfX1QZSgpfWZ1bmN0aW9uIHJ0KGUsdCl7bGV0IG49UWUuZ2V0KGUpO3JldHVybiBuJiZuLmdldCh0KX1mdW5jdGlvbiBpdChlKXtsZXQgdD1CKGUpO3JldHVybiB0PT09ZT90Oih6KHQsYGl0ZXJhdGVgLHR0KSxLdChlKT90OnQubWFwKFl0KSl9ZnVuY3Rpb24gYXQoZSl7cmV0dXJuIHooZT1CKGUpLGBpdGVyYXRlYCx0dCksZX1mdW5jdGlvbiBvdChlLHQpe3JldHVybiBHdChlKT9YdChXdChlKT9ZdCh0KTp0KTpZdCh0KX12YXIgc3Q9e19fcHJvdG9fXzpudWxsLFtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIGN0KHRoaXMsU3ltYm9sLml0ZXJhdG9yLGU9Pm90KHRoaXMsZSkpfSxjb25jYXQoLi4uZSl7cmV0dXJuIGl0KHRoaXMpLmNvbmNhdCguLi5lLm1hcChlPT5kKGUpP2l0KGUpOmUpKX0sZW50cmllcygpe3JldHVybiBjdCh0aGlzLGBlbnRyaWVzYCxlPT4oZVsxXT1vdCh0aGlzLGVbMV0pLGUpKX0sZXZlcnkoZSx0KXtyZXR1cm4gdXQodGhpcyxgZXZlcnlgLGUsdCx2b2lkIDAsYXJndW1lbnRzKX0sZmlsdGVyKGUsdCl7cmV0dXJuIHV0KHRoaXMsYGZpbHRlcmAsZSx0LGU9PmUubWFwKGU9Pm90KHRoaXMsZSkpLGFyZ3VtZW50cyl9LGZpbmQoZSx0KXtyZXR1cm4gdXQodGhpcyxgZmluZGAsZSx0LGU9Pm90KHRoaXMsZSksYXJndW1lbnRzKX0sZmluZEluZGV4KGUsdCl7cmV0dXJuIHV0KHRoaXMsYGZpbmRJbmRleGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxmaW5kTGFzdChlLHQpe3JldHVybiB1dCh0aGlzLGBmaW5kTGFzdGAsZSx0LGU9Pm90KHRoaXMsZSksYXJndW1lbnRzKX0sZmluZExhc3RJbmRleChlLHQpe3JldHVybiB1dCh0aGlzLGBmaW5kTGFzdEluZGV4YCxlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LGZvckVhY2goZSx0KXtyZXR1cm4gdXQodGhpcyxgZm9yRWFjaGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxpbmNsdWRlcyguLi5lKXtyZXR1cm4gZnQodGhpcyxgaW5jbHVkZXNgLGUpfSxpbmRleE9mKC4uLmUpe3JldHVybiBmdCh0aGlzLGBpbmRleE9mYCxlKX0sam9pbihlKXtyZXR1cm4gaXQodGhpcykuam9pbihlKX0sbGFzdEluZGV4T2YoLi4uZSl7cmV0dXJuIGZ0KHRoaXMsYGxhc3RJbmRleE9mYCxlKX0sbWFwKGUsdCl7cmV0dXJuIHV0KHRoaXMsYG1hcGAsZSx0LHZvaWQgMCxhcmd1bWVudHMpfSxwb3AoKXtyZXR1cm4gcHQodGhpcyxgcG9wYCl9LHB1c2goLi4uZSl7cmV0dXJuIHB0KHRoaXMsYHB1c2hgLGUpfSxyZWR1Y2UoZSwuLi50KXtyZXR1cm4gZHQodGhpcyxgcmVkdWNlYCxlLHQpfSxyZWR1Y2VSaWdodChlLC4uLnQpe3JldHVybiBkdCh0aGlzLGByZWR1Y2VSaWdodGAsZSx0KX0sc2hpZnQoKXtyZXR1cm4gcHQodGhpcyxgc2hpZnRgKX0sc29tZShlLHQpe3JldHVybiB1dCh0aGlzLGBzb21lYCxlLHQsdm9pZCAwLGFyZ3VtZW50cyl9LHNwbGljZSguLi5lKXtyZXR1cm4gcHQodGhpcyxgc3BsaWNlYCxlKX0sdG9SZXZlcnNlZCgpe3JldHVybiBpdCh0aGlzKS50b1JldmVyc2VkKCl9LHRvU29ydGVkKGUpe3JldHVybiBpdCh0aGlzKS50b1NvcnRlZChlKX0sdG9TcGxpY2VkKC4uLmUpe3JldHVybiBpdCh0aGlzKS50b1NwbGljZWQoLi4uZSl9LHVuc2hpZnQoLi4uZSl7cmV0dXJuIHB0KHRoaXMsYHVuc2hpZnRgLGUpfSx2YWx1ZXMoKXtyZXR1cm4gY3QodGhpcyxgdmFsdWVzYCxlPT5vdCh0aGlzLGUpKX19O2Z1bmN0aW9uIGN0KGUsdCxuKXtsZXQgcj1hdChlKSxpPXJbdF0oKTtyZXR1cm4gciE9PWUmJiFLdChlKSYmKGkuX25leHQ9aS5uZXh0LGkubmV4dD0oKT0+e2xldCBlPWkuX25leHQoKTtyZXR1cm4gZS5kb25lfHwoZS52YWx1ZT1uKGUudmFsdWUpKSxlfSksaX12YXIgbHQ9QXJyYXkucHJvdG90eXBlO2Z1bmN0aW9uIHV0KGUsdCxuLHIsaSxhKXtsZXQgbz1hdChlKSxzPW8hPT1lJiYhS3QoZSksYz1vW3RdO2lmKGMhPT1sdFt0XSl7bGV0IHQ9Yy5hcHBseShlLGEpO3JldHVybiBzP1l0KHQpOnR9bGV0IGw9bjtvIT09ZSYmKHM/bD1mdW5jdGlvbih0LHIpe3JldHVybiBuLmNhbGwodGhpcyxvdChlLHQpLHIsZSl9Om4ubGVuZ3RoPjImJihsPWZ1bmN0aW9uKHQscil7cmV0dXJuIG4uY2FsbCh0aGlzLHQscixlKX0pKTtsZXQgdT1jLmNhbGwobyxsLHIpO3JldHVybiBzJiZpP2kodSk6dX1mdW5jdGlvbiBkdChlLHQsbixyKXtsZXQgaT1hdChlKSxhPWkhPT1lJiYhS3QoZSksbz1uLHM9ITE7aSE9PWUmJihhPyhzPXIubGVuZ3RoPT09MCxvPWZ1bmN0aW9uKHQscixpKXtyZXR1cm4gcyYmKHM9ITEsdD1vdChlLHQpKSxuLmNhbGwodGhpcyx0LG90KGUsciksaSxlKX0pOm4ubGVuZ3RoPjMmJihvPWZ1bmN0aW9uKHQscixpKXtyZXR1cm4gbi5jYWxsKHRoaXMsdCxyLGksZSl9KSk7bGV0IGM9aVt0XShvLC4uLnIpO3JldHVybiBzP290KGUsYyk6Y31mdW5jdGlvbiBmdChlLHQsbil7bGV0IHI9QihlKTt6KHIsYGl0ZXJhdGVgLHR0KTtsZXQgaT1yW3RdKC4uLm4pO3JldHVybihpPT09LTF8fGk9PT0hMSkmJnF0KG5bMF0pPyhuWzBdPUIoblswXSksclt0XSguLi5uKSk6aX1mdW5jdGlvbiBwdChlLHQsbj1bXSl7R2UoKSxOZSgpO2xldCByPUIoZSlbdF0uYXBwbHkoZSxuKTtyZXR1cm4gUGUoKSxLZSgpLHJ9dmFyIG10PWUoYF9fcHJvdG9fXyxfX3ZfaXNSZWYsX19pc1Z1ZWApLGh0PW5ldyBTZXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoU3ltYm9sKS5maWx0ZXIoZT0+ZSE9PWBhcmd1bWVudHNgJiZlIT09YGNhbGxlcmApLm1hcChlPT5TeW1ib2xbZV0pLmZpbHRlcih2KSk7ZnVuY3Rpb24gZ3QoZSl7dihlKXx8KGU9U3RyaW5nKGUpKTtsZXQgdD1CKHRoaXMpO3JldHVybiB6KHQsYGhhc2AsZSksdC5oYXNPd25Qcm9wZXJ0eShlKX12YXIgX3Q9Y2xhc3N7Y29uc3RydWN0b3IoZT0hMSx0PSExKXt0aGlzLl9pc1JlYWRvbmx5PWUsdGhpcy5faXNTaGFsbG93PXR9Z2V0KGUsdCxuKXtpZih0PT09YF9fdl9za2lwYClyZXR1cm4gZS5fX3Zfc2tpcDtsZXQgcj10aGlzLl9pc1JlYWRvbmx5LGk9dGhpcy5faXNTaGFsbG93O2lmKHQ9PT1gX192X2lzUmVhY3RpdmVgKXJldHVybiFyO2lmKHQ9PT1gX192X2lzUmVhZG9ubHlgKXJldHVybiByO2lmKHQ9PT1gX192X2lzU2hhbGxvd2ApcmV0dXJuIGk7aWYodD09PWBfX3ZfcmF3YClyZXR1cm4gbj09PShyP2k/THQ6SXQ6aT9GdDpQdCkuZ2V0KGUpfHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik/ZTp2b2lkIDA7bGV0IGE9ZChlKTtpZighcil7bGV0IGU7aWYoYSYmKGU9c3RbdF0pKXJldHVybiBlO2lmKHQ9PT1gaGFzT3duUHJvcGVydHlgKXJldHVybiBndH1sZXQgbz1SZWZsZWN0LmdldChlLHQsVihlKT9lOm4pO2lmKCh2KHQpP2h0Lmhhcyh0KTptdCh0KSl8fChyfHx6KGUsYGdldGAsdCksaSkpcmV0dXJuIG87aWYoVihvKSl7bGV0IGU9YSYmVCh0KT9vOm8udmFsdWU7cmV0dXJuIHImJnkoZSk/VnQoZSk6ZX1yZXR1cm4geShvKT9yP1Z0KG8pOnp0KG8pOm99fSx2dD1jbGFzcyBleHRlbmRzIF90e2NvbnN0cnVjdG9yKGU9ITEpe3N1cGVyKCExLGUpfXNldChlLHQsbixyKXtsZXQgaT1lW3RdLGE9ZChlKSYmVCh0KTtpZighdGhpcy5faXNTaGFsbG93KXtsZXQgZT1HdChpKTtpZighS3QobikmJiFHdChuKSYmKGk9QihpKSxuPUIobikpLCFhJiZWKGkpJiYhVihuKSlyZXR1cm4gZXx8KGkudmFsdWU9biksITB9bGV0IG89YT9OdW1iZXIodCk8ZS5sZW5ndGg6dShlLHQpLHM9UmVmbGVjdC5zZXQoZSx0LG4sVihlKT9lOnIpO3JldHVybiBlPT09QihyKSYmcyYmKG8/aihuLGkpJiZudChlLGBzZXRgLHQsbixpKTpudChlLGBhZGRgLHQsbikpLHN9ZGVsZXRlUHJvcGVydHkoZSx0KXtsZXQgbj11KGUsdCkscj1lW3RdLGk9UmVmbGVjdC5kZWxldGVQcm9wZXJ0eShlLHQpO3JldHVybiBpJiZuJiZudChlLGBkZWxldGVgLHQsdm9pZCAwLHIpLGl9aGFzKGUsdCl7bGV0IG49UmVmbGVjdC5oYXMoZSx0KTtyZXR1cm4oIXYodCl8fCFodC5oYXModCkpJiZ6KGUsYGhhc2AsdCksbn1vd25LZXlzKGUpe3JldHVybiB6KGUsYGl0ZXJhdGVgLGQoZSk/YGxlbmd0aGA6JGUpLFJlZmxlY3Qub3duS2V5cyhlKX19LHl0PWNsYXNzIGV4dGVuZHMgX3R7Y29uc3RydWN0b3IoZT0hMSl7c3VwZXIoITAsZSl9c2V0KGUsdCl7cmV0dXJuITB9ZGVsZXRlUHJvcGVydHkoZSx0KXtyZXR1cm4hMH19LGJ0PW5ldyB2dCx4dD1uZXcgeXQsU3Q9bmV3IHZ0KCEwKSxDdD1uZXcgeXQoITApLHd0PWU9PmUsVHQ9ZT0+UmVmbGVjdC5nZXRQcm90b3R5cGVPZihlKTtmdW5jdGlvbiBFdChlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKC4uLnIpe2xldCBpPXRoaXMuX192X3JhdyxhPUIoaSksbz1mKGEpLGM9ZT09PWBlbnRyaWVzYHx8ZT09PVN5bWJvbC5pdGVyYXRvciYmbyxsPWU9PT1ga2V5c2AmJm8sdT1pW2VdKC4uLnIpLGQ9bj93dDp0P1h0Oll0O3JldHVybiF0JiZ6KGEsYGl0ZXJhdGVgLGw/ZXQ6JGUpLHMoT2JqZWN0LmNyZWF0ZSh1KSx7bmV4dCgpe2xldHt2YWx1ZTplLGRvbmU6dH09dS5uZXh0KCk7cmV0dXJuIHQ/e3ZhbHVlOmUsZG9uZTp0fTp7dmFsdWU6Yz9bZChlWzBdKSxkKGVbMV0pXTpkKGUpLGRvbmU6dH19fSl9fWZ1bmN0aW9uIER0KGUpe3JldHVybiBmdW5jdGlvbiguLi50KXtyZXR1cm4gZT09PWBkZWxldGVgPyExOmU9PT1gY2xlYXJgP3ZvaWQgMDp0aGlzfX1mdW5jdGlvbiBPdChlLHQpe2xldCBuPXtnZXQobil7bGV0IHI9dGhpcy5fX3ZfcmF3LGk9QihyKSxhPUIobik7ZXx8KGoobixhKSYmeihpLGBnZXRgLG4pLHooaSxgZ2V0YCxhKSk7bGV0e2hhczpvfT1UdChpKSxzPXQ/d3Q6ZT9YdDpZdDtpZihvLmNhbGwoaSxuKSlyZXR1cm4gcyhyLmdldChuKSk7aWYoby5jYWxsKGksYSkpcmV0dXJuIHMoci5nZXQoYSkpO3IhPT1pJiZyLmdldChuKX0sZ2V0IHNpemUoKXtsZXQgdD10aGlzLl9fdl9yYXc7cmV0dXJuIWUmJnooQih0KSxgaXRlcmF0ZWAsJGUpLHQuc2l6ZX0saGFzKHQpe2xldCBuPXRoaXMuX192X3JhdyxyPUIobiksaT1CKHQpO3JldHVybiBlfHwoaih0LGkpJiZ6KHIsYGhhc2AsdCkseihyLGBoYXNgLGkpKSx0PT09aT9uLmhhcyh0KTpuLmhhcyh0KXx8bi5oYXMoaSl9LGZvckVhY2gobixyKXtsZXQgaT10aGlzLGE9aS5fX3ZfcmF3LG89QihhKSxzPXQ/d3Q6ZT9YdDpZdDtyZXR1cm4hZSYmeihvLGBpdGVyYXRlYCwkZSksYS5mb3JFYWNoKChlLHQpPT5uLmNhbGwocixzKGUpLHModCksaSkpfX07cmV0dXJuIHMobixlP3thZGQ6RHQoYGFkZGApLHNldDpEdChgc2V0YCksZGVsZXRlOkR0KGBkZWxldGVgKSxjbGVhcjpEdChgY2xlYXJgKX06e2FkZChlKXtsZXQgbj1CKHRoaXMpLHI9VHQobiksaT1CKGUpLGE9IXQmJiFLdChlKSYmIUd0KGUpP2k6ZTtyZXR1cm4gci5oYXMuY2FsbChuLGEpfHxqKGUsYSkmJnIuaGFzLmNhbGwobixlKXx8aihpLGEpJiZyLmhhcy5jYWxsKG4saSl8fChuLmFkZChhKSxudChuLGBhZGRgLGEsYSkpLHRoaXN9LHNldChlLG4peyF0JiYhS3QobikmJiFHdChuKSYmKG49QihuKSk7bGV0IHI9Qih0aGlzKSx7aGFzOmksZ2V0OmF9PVR0KHIpLG89aS5jYWxsKHIsZSk7b3x8PShlPUIoZSksaS5jYWxsKHIsZSkpO2xldCBzPWEuY2FsbChyLGUpO3JldHVybiByLnNldChlLG4pLG8/aihuLHMpJiZudChyLGBzZXRgLGUsbixzKTpudChyLGBhZGRgLGUsbiksdGhpc30sZGVsZXRlKGUpe2xldCB0PUIodGhpcykse2hhczpuLGdldDpyfT1UdCh0KSxpPW4uY2FsbCh0LGUpO2l8fD0oZT1CKGUpLG4uY2FsbCh0LGUpKTtsZXQgYT1yP3IuY2FsbCh0LGUpOnZvaWQgMCxvPXQuZGVsZXRlKGUpO3JldHVybiBpJiZudCh0LGBkZWxldGVgLGUsdm9pZCAwLGEpLG99LGNsZWFyKCl7bGV0IGU9Qih0aGlzKSx0PWUuc2l6ZSE9PTAsbj1lLmNsZWFyKCk7cmV0dXJuIHQmJm50KGUsYGNsZWFyYCx2b2lkIDAsdm9pZCAwLHZvaWQgMCksbn19KSxbYGtleXNgLGB2YWx1ZXNgLGBlbnRyaWVzYCxTeW1ib2wuaXRlcmF0b3JdLmZvckVhY2gocj0+e25bcl09RXQocixlLHQpfSksbn1mdW5jdGlvbiBrdChlLHQpe2xldCBuPU90KGUsdCk7cmV0dXJuKHQscixpKT0+cj09PWBfX3ZfaXNSZWFjdGl2ZWA/IWU6cj09PWBfX3ZfaXNSZWFkb25seWA/ZTpyPT09YF9fdl9yYXdgP3Q6UmVmbGVjdC5nZXQodShuLHIpJiZyIGluIHQ/bjp0LHIsaSl9dmFyIEF0PXtnZXQ6a3QoITEsITEpfSxqdD17Z2V0Omt0KCExLCEwKX0sTXQ9e2dldDprdCghMCwhMSl9LE50PXtnZXQ6a3QoITAsITApfSxQdD1uZXcgV2Vha01hcCxGdD1uZXcgV2Vha01hcCxJdD1uZXcgV2Vha01hcCxMdD1uZXcgV2Vha01hcDtmdW5jdGlvbiBSdChlKXtzd2l0Y2goZSl7Y2FzZWBPYmplY3RgOmNhc2VgQXJyYXlgOnJldHVybiAxO2Nhc2VgTWFwYDpjYXNlYFNldGA6Y2FzZWBXZWFrTWFwYDpjYXNlYFdlYWtTZXRgOnJldHVybiAyO2RlZmF1bHQ6cmV0dXJuIDB9fWZ1bmN0aW9uIHp0KGUpe3JldHVybiBHdChlKT9lOlV0KGUsITEsYnQsQXQsUHQpfWZ1bmN0aW9uIEJ0KGUpe3JldHVybiBVdChlLCExLFN0LGp0LEZ0KX1mdW5jdGlvbiBWdChlKXtyZXR1cm4gVXQoZSwhMCx4dCxNdCxJdCl9ZnVuY3Rpb24gSHQoZSl7cmV0dXJuIFV0KGUsITAsQ3QsTnQsTHQpfWZ1bmN0aW9uIFV0KGUsdCxuLHIsaSl7aWYoIXkoZSl8fGUuX192X3JhdyYmISh0JiZlLl9fdl9pc1JlYWN0aXZlKXx8ZS5fX3Zfc2tpcHx8IU9iamVjdC5pc0V4dGVuc2libGUoZSkpcmV0dXJuIGU7bGV0IGE9aS5nZXQoZSk7aWYoYSlyZXR1cm4gYTtsZXQgbz1SdChDKGUpKTtpZihvPT09MClyZXR1cm4gZTtsZXQgcz1uZXcgUHJveHkoZSxvPT09Mj9yOm4pO3JldHVybiBpLnNldChlLHMpLHN9ZnVuY3Rpb24gV3QoZSl7cmV0dXJuIEd0KGUpP1d0KGUuX192X3Jhdyk6ISEoZSYmZS5fX3ZfaXNSZWFjdGl2ZSl9ZnVuY3Rpb24gR3QoZSl7cmV0dXJuISEoZSYmZS5fX3ZfaXNSZWFkb25seSl9ZnVuY3Rpb24gS3QoZSl7cmV0dXJuISEoZSYmZS5fX3ZfaXNTaGFsbG93KX1mdW5jdGlvbiBxdChlKXtyZXR1cm4gZT8hIWUuX192X3JhdzohMX1mdW5jdGlvbiBCKGUpe2xldCB0PWUmJmUuX192X3JhdztyZXR1cm4gdD9CKHQpOmV9ZnVuY3Rpb24gSnQoZSl7cmV0dXJuIXUoZSxgX192X3NraXBgKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmTihlLGBfX3Zfc2tpcGAsITApLGV9dmFyIFl0PWU9PnkoZSk/enQoZSk6ZSxYdD1lPT55KGUpP1Z0KGUpOmU7ZnVuY3Rpb24gVihlKXtyZXR1cm4gZT9lLl9fdl9pc1JlZj09PSEwOiExfWZ1bmN0aW9uIFp0KGUpe3JldHVybiAkdChlLCExKX1mdW5jdGlvbiBRdChlKXtyZXR1cm4gJHQoZSwhMCl9ZnVuY3Rpb24gJHQoZSx0KXtyZXR1cm4gVihlKT9lOm5ldyBlbihlLHQpfXZhciBlbj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGVwPW5ldyBYZSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLl9fdl9pc1NoYWxsb3c9ITEsdGhpcy5fcmF3VmFsdWU9dD9lOkIoZSksdGhpcy5fdmFsdWU9dD9lOll0KGUpLHRoaXMuX192X2lzU2hhbGxvdz10fWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLmRlcC50cmFjaygpLHRoaXMuX3ZhbHVlfXNldCB2YWx1ZShlKXtsZXQgdD10aGlzLl9yYXdWYWx1ZSxuPXRoaXMuX192X2lzU2hhbGxvd3x8S3QoZSl8fEd0KGUpO2U9bj9lOkIoZSksaihlLHQpJiYodGhpcy5fcmF3VmFsdWU9ZSx0aGlzLl92YWx1ZT1uP2U6WXQoZSksdGhpcy5kZXAudHJpZ2dlcigpKX19O2Z1bmN0aW9uIHRuKGUpe2UuZGVwJiZlLmRlcC50cmlnZ2VyKCl9ZnVuY3Rpb24gbm4oZSl7cmV0dXJuIFYoZSk/ZS52YWx1ZTplfWZ1bmN0aW9uIHJuKGUpe3JldHVybiBnKGUpP2UoKTpubihlKX12YXIgYW49e2dldDooZSx0LG4pPT50PT09YF9fdl9yYXdgP2U6bm4oUmVmbGVjdC5nZXQoZSx0LG4pKSxzZXQ6KGUsdCxuLHIpPT57bGV0IGk9ZVt0XTtyZXR1cm4gVihpKSYmIVYobik/KGkudmFsdWU9biwhMCk6UmVmbGVjdC5zZXQoZSx0LG4scil9fTtmdW5jdGlvbiBvbihlKXtyZXR1cm4gV3QoZSk/ZTpuZXcgUHJveHkoZSxhbil9dmFyIHNuPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX192X2lzUmVmPSEwLHRoaXMuX3ZhbHVlPXZvaWQgMDtsZXQgdD10aGlzLmRlcD1uZXcgWGUse2dldDpuLHNldDpyfT1lKHQudHJhY2suYmluZCh0KSx0LnRyaWdnZXIuYmluZCh0KSk7dGhpcy5fZ2V0PW4sdGhpcy5fc2V0PXJ9Z2V0IHZhbHVlKCl7cmV0dXJuIHRoaXMuX3ZhbHVlPXRoaXMuX2dldCgpfXNldCB2YWx1ZShlKXt0aGlzLl9zZXQoZSl9fTtmdW5jdGlvbiBjbihlKXtyZXR1cm4gbmV3IHNuKGUpfWZ1bmN0aW9uIGxuKGUpe2xldCB0PWQoZSk/QXJyYXkoZS5sZW5ndGgpOnt9O2ZvcihsZXQgbiBpbiBlKXRbbl09cG4oZSxuKTtyZXR1cm4gdH12YXIgdW49Y2xhc3N7Y29uc3RydWN0b3IoZSx0LG4pe3RoaXMuX29iamVjdD1lLHRoaXMuX2RlZmF1bHRWYWx1ZT1uLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX3ZhbHVlPXZvaWQgMCx0aGlzLl9rZXk9dih0KT90OlN0cmluZyh0KSx0aGlzLl9yYXc9QihlKTtsZXQgcj0hMCxpPWU7aWYoIWQoZSl8fHYodGhpcy5fa2V5KXx8IVQodGhpcy5fa2V5KSlkbyByPSFxdChpKXx8S3QoaSk7d2hpbGUociYmKGk9aS5fX3ZfcmF3KSk7dGhpcy5fc2hhbGxvdz1yfWdldCB2YWx1ZSgpe2xldCBlPXRoaXMuX29iamVjdFt0aGlzLl9rZXldO3JldHVybiB0aGlzLl9zaGFsbG93JiYoZT1ubihlKSksdGhpcy5fdmFsdWU9ZT09PXZvaWQgMD90aGlzLl9kZWZhdWx0VmFsdWU6ZX1zZXQgdmFsdWUoZSl7aWYodGhpcy5fc2hhbGxvdyYmVih0aGlzLl9yYXdbdGhpcy5fa2V5XSkpe2xldCB0PXRoaXMuX29iamVjdFt0aGlzLl9rZXldO2lmKFYodCkpe3QudmFsdWU9ZTtyZXR1cm59fXRoaXMuX29iamVjdFt0aGlzLl9rZXldPWV9Z2V0IGRlcCgpe3JldHVybiBydCh0aGlzLl9yYXcsdGhpcy5fa2V5KX19LGRuPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2dldHRlcj1lLHRoaXMuX192X2lzUmVmPSEwLHRoaXMuX192X2lzUmVhZG9ubHk9ITAsdGhpcy5fdmFsdWU9dm9pZCAwfWdldCB2YWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZT10aGlzLl9nZXR0ZXIoKX19O2Z1bmN0aW9uIGZuKGUsdCxuKXtyZXR1cm4gVihlKT9lOmcoZSk/bmV3IGRuKGUpOnkoZSkmJmFyZ3VtZW50cy5sZW5ndGg+MT9wbihlLHQsbik6WnQoZSl9ZnVuY3Rpb24gcG4oZSx0LG4pe3JldHVybiBuZXcgdW4oZSx0LG4pfXZhciBtbj1jbGFzc3tjb25zdHJ1Y3RvcihlLHQsbil7dGhpcy5mbj1lLHRoaXMuc2V0dGVyPXQsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuZGVwPW5ldyBYZSh0aGlzKSx0aGlzLl9fdl9pc1JlZj0hMCx0aGlzLmRlcHM9dm9pZCAwLHRoaXMuZGVwc1RhaWw9dm9pZCAwLHRoaXMuZmxhZ3M9MTYsdGhpcy5nbG9iYWxWZXJzaW9uPUplLTEsdGhpcy5uZXh0PXZvaWQgMCx0aGlzLmVmZmVjdD10aGlzLHRoaXMuX192X2lzUmVhZG9ubHk9IXQsdGhpcy5pc1NTUj1ufW5vdGlmeSgpe2lmKHRoaXMuZmxhZ3N8PTE2LCEodGhpcy5mbGFncyY4KSYmUiE9PXRoaXMpcmV0dXJuIE1lKHRoaXMsITApLCEwfWdldCB2YWx1ZSgpe2xldCBlPXRoaXMuZGVwLnRyYWNrKCk7cmV0dXJuIFJlKHRoaXMpLGUmJihlLnZlcnNpb249dGhpcy5kZXAudmVyc2lvbiksdGhpcy5fdmFsdWV9c2V0IHZhbHVlKGUpe3RoaXMuc2V0dGVyJiZ0aGlzLnNldHRlcihlKX19O2Z1bmN0aW9uIGhuKGUsdCxuPSExKXtsZXQgcixpO3JldHVybiBnKGUpP3I9ZToocj1lLmdldCxpPWUuc2V0KSxuZXcgbW4ocixpLG4pfXZhciBnbj17R0VUOmBnZXRgLEhBUzpgaGFzYCxJVEVSQVRFOmBpdGVyYXRlYH0sX249e1NFVDpgc2V0YCxBREQ6YGFkZGAsREVMRVRFOmBkZWxldGVgLENMRUFSOmBjbGVhcmB9LHZuPXt9LHluPW5ldyBXZWFrTWFwLGJuPXZvaWQgMDtmdW5jdGlvbiB4bigpe3JldHVybiBibn1mdW5jdGlvbiBTbihlLHQ9ITEsbj1ibil7aWYobil7bGV0IHQ9eW4uZ2V0KG4pO3R8fHluLnNldChuLHQ9W10pLHQucHVzaChlKX19ZnVuY3Rpb24gQ24oZSxuLGk9dCl7bGV0e2ltbWVkaWF0ZTphLGRlZXA6byxvbmNlOnMsc2NoZWR1bGVyOmwsYXVnbWVudEpvYjp1LGNhbGw6Zn09aSxwPWU9Pm8/ZTpLdChlKXx8bz09PSExfHxvPT09MD93bihlLDEpOnduKGUpLG0saCxfLHYseT0hMSxiPSExO2lmKFYoZSk/KGg9KCk9PmUudmFsdWUseT1LdChlKSk6V3QoZSk/KGg9KCk9PnAoZSkseT0hMCk6ZChlKT8oYj0hMCx5PWUuc29tZShlPT5XdChlKXx8S3QoZSkpLGg9KCk9PmUubWFwKGU9PntpZihWKGUpKXJldHVybiBlLnZhbHVlO2lmKFd0KGUpKXJldHVybiBwKGUpO2lmKGcoZSkpcmV0dXJuIGY/ZihlLDIpOmUoKX0pKTpoPWcoZSk/bj9mPygpPT5mKGUsMik6ZTooKT0+e2lmKF8pe0dlKCk7dHJ5e18oKX1maW5hbGx5e0tlKCl9fWxldCB0PWJuO2JuPW07dHJ5e3JldHVybiBmP2YoZSwzLFt2XSk6ZSh2KX1maW5hbGx5e2JuPXR9fTpyLG4mJm8pe2xldCBlPWgsdD1vPT09ITA/MS8wOm87aD0oKT0+d24oZSgpLHQpfWxldCB4PVRlKCksUz0oKT0+e20uc3RvcCgpLHgmJnguYWN0aXZlJiZjKHguZWZmZWN0cyxtKX07aWYocyYmbil7bGV0IGU9bjtuPSguLi50KT0+e2xldCBuPWUoLi4udCk7cmV0dXJuIFMoKSxufX1sZXQgQz1iP0FycmF5KGUubGVuZ3RoKS5maWxsKHZuKTp2bix3PWU9PntpZighKCEobS5mbGFncyYxKXx8IW0uZGlydHkmJiFlKSl7aWYobil7bGV0IHQ9bS5ydW4oKTtpZihlfHxvfHx5fHwoYj90LnNvbWUoKGUsdCk9PmooZSxDW3RdKSk6aih0LEMpKSl7XyYmXygpO2xldCBlPWJuO2JuPW07dHJ5e2xldCBlPVt0LEM9PT12bj92b2lkIDA6YiYmQ1swXT09PXZuP1tdOkMsdl07Qz10LGY/ZihuLDMsZSk6biguLi5lKX1maW5hbGx5e2JuPWV9fX1lbHNlIG0ucnVuKCl9fTtyZXR1cm4gdSYmdSh3KSxtPW5ldyBPZShoKSxtLnNjaGVkdWxlcj1sPygpPT5sKHcsITEpOncsdj1lPT5TbihlLCExLG0pLF89bS5vblN0b3A9KCk9PntsZXQgZT15bi5nZXQobSk7aWYoZSl7aWYoZilmKGUsNCk7ZWxzZSBmb3IobGV0IHQgb2YgZSl0KCk7eW4uZGVsZXRlKG0pfX0sbj9hP3coITApOkM9bS5ydW4oKTpsP2wody5iaW5kKG51bGwsITApLCEwKTptLnJ1bigpLFMucGF1c2U9bS5wYXVzZS5iaW5kKG0pLFMucmVzdW1lPW0ucmVzdW1lLmJpbmQobSksUy5zdG9wPVMsU31mdW5jdGlvbiB3bihlLHQ9MS8wLG4pe2lmKHQ8PTB8fCF5KGUpfHxlLl9fdl9za2lwfHwobnx8PW5ldyBNYXAsKG4uZ2V0KGUpfHwwKT49dCkpcmV0dXJuIGU7aWYobi5zZXQoZSx0KSx0LS0sVihlKSl3bihlLnZhbHVlLHQsbik7ZWxzZSBpZihkKGUpKWZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXduKGVbcl0sdCxuKTtlbHNlIGlmKHAoZSl8fGYoZSkpZS5mb3JFYWNoKGU9Pnt3bihlLHQsbil9KTtlbHNlIGlmKHcoZSkpe2ZvcihsZXQgciBpbiBlKXduKGVbcl0sdCxuKTtmb3IobGV0IHIgb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSlPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmd24oZVtyXSx0LG4pfXJldHVybiBlfXZhciBUbj1bXTtmdW5jdGlvbiBFbihlKXtUbi5wdXNoKGUpfWZ1bmN0aW9uIERuKCl7VG4ucG9wKCl9ZnVuY3Rpb24gT24oZSx0KXt9dmFyIGtuPXtTRVRVUF9GVU5DVElPTjowLDA6YFNFVFVQX0ZVTkNUSU9OYCxSRU5ERVJfRlVOQ1RJT046MSwxOmBSRU5ERVJfRlVOQ1RJT05gLE5BVElWRV9FVkVOVF9IQU5ETEVSOjUsNTpgTkFUSVZFX0VWRU5UX0hBTkRMRVJgLENPTVBPTkVOVF9FVkVOVF9IQU5ETEVSOjYsNjpgQ09NUE9ORU5UX0VWRU5UX0hBTkRMRVJgLFZOT0RFX0hPT0s6Nyw3OmBWTk9ERV9IT09LYCxESVJFQ1RJVkVfSE9PSzo4LDg6YERJUkVDVElWRV9IT09LYCxUUkFOU0lUSU9OX0hPT0s6OSw5OmBUUkFOU0lUSU9OX0hPT0tgLEFQUF9FUlJPUl9IQU5ETEVSOjEwLDEwOmBBUFBfRVJST1JfSEFORExFUmAsQVBQX1dBUk5fSEFORExFUjoxMSwxMTpgQVBQX1dBUk5fSEFORExFUmAsRlVOQ1RJT05fUkVGOjEyLDEyOmBGVU5DVElPTl9SRUZgLEFTWU5DX0NPTVBPTkVOVF9MT0FERVI6MTMsMTM6YEFTWU5DX0NPTVBPTkVOVF9MT0FERVJgLFNDSEVEVUxFUjoxNCwxNDpgU0NIRURVTEVSYCxDT01QT05FTlRfVVBEQVRFOjE1LDE1OmBDT01QT05FTlRfVVBEQVRFYCxBUFBfVU5NT1VOVF9DTEVBTlVQOjE2LDE2OmBBUFBfVU5NT1VOVF9DTEVBTlVQYH0sQW49e3NwOmBzZXJ2ZXJQcmVmZXRjaCBob29rYCxiYzpgYmVmb3JlQ3JlYXRlIGhvb2tgLGM6YGNyZWF0ZWQgaG9va2AsYm06YGJlZm9yZU1vdW50IGhvb2tgLG06YG1vdW50ZWQgaG9va2AsYnU6YGJlZm9yZVVwZGF0ZSBob29rYCx1OmB1cGRhdGVkYCxidW06YGJlZm9yZVVubW91bnQgaG9va2AsdW06YHVubW91bnRlZCBob29rYCxhOmBhY3RpdmF0ZWQgaG9va2AsZGE6YGRlYWN0aXZhdGVkIGhvb2tgLGVjOmBlcnJvckNhcHR1cmVkIGhvb2tgLHJ0YzpgcmVuZGVyVHJhY2tlZCBob29rYCxydGc6YHJlbmRlclRyaWdnZXJlZCBob29rYCwwOmBzZXR1cCBmdW5jdGlvbmAsMTpgcmVuZGVyIGZ1bmN0aW9uYCwyOmB3YXRjaGVyIGdldHRlcmAsMzpgd2F0Y2hlciBjYWxsYmFja2AsNDpgd2F0Y2hlciBjbGVhbnVwIGZ1bmN0aW9uYCw1OmBuYXRpdmUgZXZlbnQgaGFuZGxlcmAsNjpgY29tcG9uZW50IGV2ZW50IGhhbmRsZXJgLDc6YHZub2RlIGhvb2tgLDg6YGRpcmVjdGl2ZSBob29rYCw5OmB0cmFuc2l0aW9uIGhvb2tgLDEwOmBhcHAgZXJyb3JIYW5kbGVyYCwxMTpgYXBwIHdhcm5IYW5kbGVyYCwxMjpgcmVmIGZ1bmN0aW9uYCwxMzpgYXN5bmMgY29tcG9uZW50IGxvYWRlcmAsMTQ6YHNjaGVkdWxlciBmbHVzaGAsMTU6YGNvbXBvbmVudCB1cGRhdGVgLDE2OmBhcHAgdW5tb3VudCBjbGVhbnVwIGZ1bmN0aW9uYH07ZnVuY3Rpb24gam4oZSx0LG4scil7dHJ5e3JldHVybiByP2UoLi4ucik6ZSgpfWNhdGNoKGUpe05uKGUsdCxuKX19ZnVuY3Rpb24gTW4oZSx0LG4scil7aWYoZyhlKSl7bGV0IGk9am4oZSx0LG4scik7cmV0dXJuIGkmJmIoaSkmJmkuY2F0Y2goZT0+e05uKGUsdCxuKX0pLGl9aWYoZChlKSl7bGV0IGk9W107Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspaS5wdXNoKE1uKGVbYV0sdCxuLHIpKTtyZXR1cm4gaX19ZnVuY3Rpb24gTm4oZSxuLHIsaT0hMCl7bGV0IGE9bj9uLnZub2RlOm51bGwse2Vycm9ySGFuZGxlcjpvLHRocm93VW5oYW5kbGVkRXJyb3JJblByb2R1Y3Rpb246c309biYmbi5hcHBDb250ZXh0LmNvbmZpZ3x8dDtpZihuKXtsZXQgdD1uLnBhcmVudCxpPW4ucHJveHksYT1gaHR0cHM6Ly92dWVqcy5vcmcvZXJyb3ItcmVmZXJlbmNlLyNydW50aW1lLSR7cn1gO2Zvcig7dDspe2xldCBuPXQuZWM7aWYobil7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aDt0KyspaWYoblt0XShlLGksYSk9PT0hMSlyZXR1cm59dD10LnBhcmVudH1pZihvKXtHZSgpLGpuKG8sbnVsbCwxMCxbZSxpLGFdKSxLZSgpO3JldHVybn19UG4oZSxyLGEsaSxzKX1mdW5jdGlvbiBQbihlLHQsbixyPSEwLGk9ITEpe2lmKGkpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfXZhciBIPVtdLEZuPS0xLEluPVtdLExuPW51bGwsUm49MCx6bj1Qcm9taXNlLnJlc29sdmUoKSxCbj1udWxsO2Z1bmN0aW9uIFZuKGUpe2xldCB0PUJufHx6bjtyZXR1cm4gZT90LnRoZW4odGhpcz9lLmJpbmQodGhpcyk6ZSk6dH1mdW5jdGlvbiBIbihlKXtsZXQgdD1GbisxLG49SC5sZW5ndGg7Zm9yKDt0PG47KXtsZXQgcj10K24+Pj4xLGk9SFtyXSxhPUpuKGkpO2E8ZXx8YT09PWUmJmkuZmxhZ3MmMj90PXIrMTpuPXJ9cmV0dXJuIHR9ZnVuY3Rpb24gVW4oZSl7aWYoIShlLmZsYWdzJjEpKXtsZXQgdD1KbihlKSxuPUhbSC5sZW5ndGgtMV07IW58fCEoZS5mbGFncyYyKSYmdD49Sm4obik/SC5wdXNoKGUpOkguc3BsaWNlKEhuKHQpLDAsZSksZS5mbGFnc3w9MSxXbigpfX1mdW5jdGlvbiBXbigpe0JufHw9em4udGhlbihZbil9ZnVuY3Rpb24gR24oZSl7aWYoIWQoZSkpTG4mJmUuaWQ9PT0tMT9Mbi5zcGxpY2UoUm4rMSwwLGUpOmUuZmxhZ3MmMXx8KEluLnB1c2goZSksZS5mbGFnc3w9MSk7ZWxzZSBmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylJbi5wdXNoKGVbdF0pO1duKCl9ZnVuY3Rpb24gS24oZSx0LG49Rm4rMSl7Zm9yKDtuPEgubGVuZ3RoO24rKyl7bGV0IHQ9SFtuXTtpZih0JiZ0LmZsYWdzJjIpe2lmKGUmJnQuaWQhPT1lLnVpZCljb250aW51ZTtILnNwbGljZShuLDEpLG4tLSx0LmZsYWdzJjQmJih0LmZsYWdzJj0tMiksdCgpLHQuZmxhZ3MmNHx8KHQuZmxhZ3MmPS0yKX19fWZ1bmN0aW9uIHFuKGUpe2lmKEluLmxlbmd0aCl7bGV0IGU9Wy4uLm5ldyBTZXQoSW4pXS5zb3J0KChlLHQpPT5KbihlKS1Kbih0KSk7aWYoSW4ubGVuZ3RoPTAsTG4pe2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKUxuLnB1c2goZVt0XSk7cmV0dXJufWZvcihMbj1lLFJuPTA7Um48TG4ubGVuZ3RoO1JuKyspe2xldCBlPUxuW1JuXTtlLmZsYWdzJjQmJihlLmZsYWdzJj0tMiksZS5mbGFncyY4fHxlKCksZS5mbGFncyY9LTJ9TG49bnVsbCxSbj0wfX12YXIgSm49ZT0+ZS5pZD09bnVsbD9lLmZsYWdzJjI/LTE6MS8wOmUuaWQ7ZnVuY3Rpb24gWW4oZSl7dHJ5e2ZvcihGbj0wO0ZuPEgubGVuZ3RoO0ZuKyspe2xldCBlPUhbRm5dO2UmJiEoZS5mbGFncyY4KSYmKGUuZmxhZ3MmNCYmKGUuZmxhZ3MmPS0yKSxqbihlLGUuaSxlLmk/MTU6MTQpLGUuZmxhZ3MmNHx8KGUuZmxhZ3MmPS0yKSl9fWZpbmFsbHl7Zm9yKDtGbjxILmxlbmd0aDtGbisrKXtsZXQgZT1IW0ZuXTtlJiYoZS5mbGFncyY9LTIpfUZuPS0xLEgubGVuZ3RoPTAscW4oZSksQm49bnVsbCwoSC5sZW5ndGh8fEluLmxlbmd0aCkmJlluKGUpfX12YXIgWG4sWm49W107ZnVuY3Rpb24gUW4oZSx0KXtYbj1lLFhuPyhYbi5lbmFibGVkPSEwLFpuLmZvckVhY2goKHtldmVudDplLGFyZ3M6dH0pPT5Ybi5lbWl0KGUsLi4udCkpLFpuPVtdKTp0eXBlb2Ygd2luZG93PGB1YCYmd2luZG93LkhUTUxFbGVtZW50JiYhKHdpbmRvdy5uYXZpZ2F0b3I/LnVzZXJBZ2VudCk/LmluY2x1ZGVzKGBqc2RvbWApPygodC5fX1ZVRV9ERVZUT09MU19IT09LX1JFUExBWV9fPXQuX19WVUVfREVWVE9PTFNfSE9PS19SRVBMQVlfX3x8W10pLnB1c2goZT0+e1FuKGUsdCl9KSxzZXRUaW1lb3V0KCgpPT57WG58fCh0Ll9fVlVFX0RFVlRPT0xTX0hPT0tfUkVQTEFZX189bnVsbCxabj1bXSl9LDNlMykpOlpuPVtdfXZhciBVPW51bGwsJG49bnVsbDtmdW5jdGlvbiBlcihlKXtsZXQgdD1VO3JldHVybiBVPWUsJG49ZSYmZS50eXBlLl9fc2NvcGVJZHx8bnVsbCx0fWZ1bmN0aW9uIHRyKGUpeyRuPWV9ZnVuY3Rpb24gbnIoKXskbj1udWxsfXZhciBycj1lPT5pcjtmdW5jdGlvbiBpcihlLHQ9VSxuKXtpZighdHx8ZS5fbilyZXR1cm4gZTtsZXQgcj0oLi4ubik9PntyLl9kJiZycygtMSk7bGV0IGk9ZXIodCksYT0kby5sZW5ndGgsbzt0cnl7bz1lKC4uLm4pfWZpbmFsbHl7Zm9yKGxldCBlPSRvLmxlbmd0aDtlPmE7ZS0tKXRzKCk7ZXIoaSksci5fZCYmcnMoMSl9cmV0dXJuIG99O3JldHVybiByLl9uPSEwLHIuX2M9ITAsci5fZD0hMCxyfWZ1bmN0aW9uIGFyKGUsbil7aWYoVT09PW51bGwpcmV0dXJuIGU7bGV0IHI9V3MoVSksaT1lLmRpcnN8fD1bXTtmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl7bGV0W2EsbyxzLGM9dF09bltlXTthJiYoZyhhKSYmKGE9e21vdW50ZWQ6YSx1cGRhdGVkOmF9KSxhLmRlZXAmJnduKG8pLGkucHVzaCh7ZGlyOmEsaW5zdGFuY2U6cix2YWx1ZTpvLG9sZFZhbHVlOnZvaWQgMCxhcmc6cyxtb2RpZmllcnM6Y30pKX1yZXR1cm4gZX1mdW5jdGlvbiBvcihlLHQsbixyKXtsZXQgaT1lLmRpcnMsYT10JiZ0LmRpcnM7Zm9yKGxldCBvPTA7bzxpLmxlbmd0aDtvKyspe2xldCBzPWlbb107YSYmKHMub2xkVmFsdWU9YVtvXS52YWx1ZSk7bGV0IGM9cy5kaXJbcl07YyYmKEdlKCksTW4oYyxuLDgsW2UuZWwscyxlLHRdKSxLZSgpKX19ZnVuY3Rpb24gc3IoZSx0KXtpZihZKXtsZXQgbj1ZLnByb3ZpZGVzLHI9WS5wYXJlbnQmJlkucGFyZW50LnByb3ZpZGVzO3I9PT1uJiYobj1ZLnByb3ZpZGVzPU9iamVjdC5jcmVhdGUocikpLG5bZV09dH19ZnVuY3Rpb24gY3IoZSx0LG49ITEpe2xldCByPURzKCk7aWYocnx8cWEpe2xldCBpPXFhP3FhLl9jb250ZXh0LnByb3ZpZGVzOnI/ci5wYXJlbnQ9PW51bGx8fHIuY2U/ci52bm9kZS5hcHBDb250ZXh0JiZyLnZub2RlLmFwcENvbnRleHQucHJvdmlkZXM6ci5wYXJlbnQucHJvdmlkZXM6dm9pZCAwO2lmKGkmJmUgaW4gaSlyZXR1cm4gaVtlXTtpZihhcmd1bWVudHMubGVuZ3RoPjEpcmV0dXJuIG4mJmcodCk/dC5jYWxsKHImJnIucHJveHkpOnR9fWZ1bmN0aW9uIGxyKCl7cmV0dXJuISEoRHMoKXx8cWEpfXZhciB1cj1TeW1ib2wuZm9yKGB2LXNjeGApLGRyPSgpPT5jcih1cik7ZnVuY3Rpb24gZnIoZSx0KXtyZXR1cm4gZ3IoZSxudWxsLHQpfWZ1bmN0aW9uIHByKGUsdCl7cmV0dXJuIGdyKGUsbnVsbCx7Zmx1c2g6YHBvc3RgfSl9ZnVuY3Rpb24gbXIoZSx0KXtyZXR1cm4gZ3IoZSxudWxsLHtmbHVzaDpgc3luY2B9KX1mdW5jdGlvbiBocihlLHQsbil7cmV0dXJuIGdyKGUsdCxuKX1mdW5jdGlvbiBncihlLG4saT10KXtsZXR7aW1tZWRpYXRlOmEsZGVlcDpvLGZsdXNoOmMsb25jZTpsfT1pLHU9cyh7fSxpKSxkPW4mJmF8fCFuJiZjIT09YHBvc3RgLGY7aWYoTnMpe2lmKGM9PT1gc3luY2Ape2xldCBlPWRyKCk7Zj1lLl9fd2F0Y2hlckhhbmRsZXN8fD1bXX1lbHNlIGlmKCFkKXtsZXQgZT0oKT0+e307cmV0dXJuIGUuc3RvcD1yLGUucmVzdW1lPXIsZS5wYXVzZT1yLGV9fWxldCBwPVk7dS5jYWxsPShlLHQsbik9Pk1uKGUscCx0LG4pO2xldCBtPSExO2M9PT1gcG9zdGA/dS5zY2hlZHVsZXI9ZT0+e1coZSxwJiZwLnN1c3BlbnNlKX06YyE9PWBzeW5jYCYmKG09ITAsdS5zY2hlZHVsZXI9KGUsdCk9Pnt0P2UoKTpVbihlKX0pLHUuYXVnbWVudEpvYj1lPT57biYmKGUuZmxhZ3N8PTQpLG0mJihlLmZsYWdzfD0yLHAmJihlLmlkPXAudWlkLGUuaT1wKSl9O2xldCBoPUNuKGUsbix1KTtyZXR1cm4gTnMmJihmP2YucHVzaChoKTpkJiZoKCkpLGh9ZnVuY3Rpb24gX3IoZSx0LG4pe2xldCByPXRoaXMucHJveHksaT1fKGUpP2UuaW5jbHVkZXMoYC5gKT92cihyLGUpOigpPT5yW2VdOmUuYmluZChyLHIpLGE7Zyh0KT9hPXQ6KGE9dC5oYW5kbGVyLG49dCk7bGV0IG89QXModGhpcykscz1ncihpLGEuYmluZChyKSxuKTtyZXR1cm4gbygpLHN9ZnVuY3Rpb24gdnIoZSx0KXtsZXQgbj10LnNwbGl0KGAuYCk7cmV0dXJuKCk9PntsZXQgdD1lO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGgmJnQ7ZSsrKXQ9dFtuW2VdXTtyZXR1cm4gdH19dmFyIHlyPW5ldyBXZWFrTWFwLGJyPVN5bWJvbChgX3Z0ZWApLHhyPWU9PmUuX19pc1RlbGVwb3J0LFNyPWU9PmUmJihlLmRpc2FibGVkfHxlLmRpc2FibGVkPT09YGApLENyPWU9PmUmJihlLmRlZmVyfHxlLmRlZmVyPT09YGApLHdyPWU9PnR5cGVvZiBTVkdFbGVtZW50PGB1YCYmZSBpbnN0YW5jZW9mIFNWR0VsZW1lbnQsVHI9ZT0+dHlwZW9mIE1hdGhNTEVsZW1lbnQ9PWBmdW5jdGlvbmAmJmUgaW5zdGFuY2VvZiBNYXRoTUxFbGVtZW50LEVyPShlLHQpPT57bGV0IG49ZSYmZS50bztyZXR1cm4gXyhuKT90P3Qobik6bnVsbDpufSxEcj17bmFtZTpgVGVsZXBvcnRgLF9faXNUZWxlcG9ydDohMCxwcm9jZXNzKGUsdCxuLHIsaSxhLG8scyxjLGwpe2xldHttYzp1LHBjOmQscGJjOmYsbzp7aW5zZXJ0OnAscXVlcnlTZWxlY3RvcjptLGNyZWF0ZVRleHQ6aCxjcmVhdGVDb21tZW50OmcscGFyZW50Tm9kZTpffX09bCx2PVNyKHQucHJvcHMpLHtkeW5hbWljQ2hpbGRyZW46eX09dCxiPShlLHQsbik9PntlLnNoYXBlRmxhZyYxNiYmdShlLmNoaWxkcmVuLHQsbixpLGEsbyxzLGMpfSx4PShlPXQpPT57bGV0IG49U3IoZS5wcm9wcykscj1lLnRhcmdldD1FcihlLnByb3BzLG0pLGE9TXIocixlLGgscCk7ciYmKG8hPT1gc3ZnYCYmd3Iocik/bz1gc3ZnYDpvIT09YG1hdGhtbGAmJlRyKHIpJiYobz1gbWF0aG1sYCksaSYmaS5pc0NFJiYoaS5jZS5fdGVsZXBvcnRUYXJnZXRzfHwoaS5jZS5fdGVsZXBvcnRUYXJnZXRzPW5ldyBTZXQpKS5hZGQociksbnx8KGIoZSxyLGEpLGpyKGUsITEpKSl9LFM9ZT0+e2xldCB0PSgpPT57aWYoeXIuZ2V0KGUpPT09dCl7aWYoeXIuZGVsZXRlKGUpLFNyKGUucHJvcHMpKXtsZXQgdD1fKGUuZWwpfHxuO2IoZSx0LGUuYW5jaG9yKSxqcihlLCEwKX14KGUpfX07eXIuc2V0KGUsdCksVyh0LGEpfTtpZihlPT1udWxsKXtsZXQgZT10LmVsPWgoYGApLGk9dC5hbmNob3I9aChgYCk7aWYocChlLG4scikscChpLG4sciksQ3IodC5wcm9wcyl8fGEmJmEucGVuZGluZ0JyYW5jaCl7Uyh0KTtyZXR1cm59diYmKGIodCxuLGkpLGpyKHQsITApKSx4KCl9ZWxzZXt0LmVsPWUuZWw7bGV0IHI9dC5hbmNob3I9ZS5hbmNob3IsdT15ci5nZXQoZSk7aWYodSl7dS5mbGFnc3w9OCx5ci5kZWxldGUoZSksUyh0KTtyZXR1cm59dC50YXJnZXRTdGFydD1lLnRhcmdldFN0YXJ0O2xldCBwPXQudGFyZ2V0PWUudGFyZ2V0LGg9dC50YXJnZXRBbmNob3I9ZS50YXJnZXRBbmNob3IsZz1TcihlLnByb3BzKSxfPWc/bjpwLGI9Zz9yOmg7aWYobz09PWBzdmdgfHx3cihwKT9vPWBzdmdgOihvPT09YG1hdGhtbGB8fFRyKHApKSYmKG89YG1hdGhtbGApLHk/KGYoZS5keW5hbWljQ2hpbGRyZW4seSxfLGksYSxvLHMpLE5vKGUsdCwhMCkpOmN8fGQoZSx0LF8sYixpLGEsbyxzLCExKSx2KWc/dC5wcm9wcyYmZS5wcm9wcyYmdC5wcm9wcy50byE9PWUucHJvcHMudG8mJih0LnByb3BzLnRvPWUucHJvcHMudG8pOk9yKHQsbixyLGwsMSk7ZWxzZSBpZigodC5wcm9wcyYmdC5wcm9wcy50bykhPT0oZS5wcm9wcyYmZS5wcm9wcy50bykpe2xldCBlPUVyKHQucHJvcHMsbSk7ZSYmKHQudGFyZ2V0PWUsT3IodCxlLG51bGwsbCwwKSl9ZWxzZSBnJiZPcih0LHAsaCxsLDEpO2pyKHQsdil9fSxyZW1vdmUoZSx0LG4se3VtOnIsbzp7cmVtb3ZlOml9fSxhKXtsZXR7c2hhcGVGbGFnOm8sY2hpbGRyZW46cyxhbmNob3I6Yyx0YXJnZXRTdGFydDpsLHRhcmdldEFuY2hvcjp1LHRhcmdldDpkLHByb3BzOmZ9PWUscD1TcihmKSxtPWF8fCFwLGg9eXIuZ2V0KGUpO2lmKGgmJihoLmZsYWdzfD04LHlyLmRlbGV0ZShlKSksZCYmKGkobCksaSh1KSksYSYmaShjKSwhaCYmKHB8fGQpJiZvJjE2KWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXtsZXQgaT1zW2VdO3IoaSx0LG4sbSwhIWkuZHluYW1pY0NoaWxkcmVuKX19LG1vdmU6T3IsaHlkcmF0ZTprcn07ZnVuY3Rpb24gT3IoZSx0LG4se286e2luc2VydDpyfSxtOml9LGE9Mil7YT09PTAmJnIoZS50YXJnZXRBbmNob3IsdCxuKTtsZXR7ZWw6byxhbmNob3I6cyxzaGFwZUZsYWc6YyxjaGlsZHJlbjpsLHByb3BzOnV9PWUsZD1hPT09MjtpZihkJiZyKG8sdCxuKSwheXIuaGFzKGUpJiYoIWR8fFNyKHUpKSYmYyYxNilmb3IobGV0IGU9MDtlPGwubGVuZ3RoO2UrKylpKGxbZV0sdCxuLDIpO2QmJnIocyx0LG4pfWZ1bmN0aW9uIGtyKGUsdCxuLHIsaSxhLHtvOntuZXh0U2libGluZzpvLHBhcmVudE5vZGU6cyxxdWVyeVNlbGVjdG9yOmMsaW5zZXJ0OmwsY3JlYXRlVGV4dDp1fX0sZCl7ZnVuY3Rpb24gZihlLG4pe2xldCByPW47Zm9yKDtyOyl7aWYociYmci5ub2RlVHlwZT09PTgpe2lmKHIuZGF0YT09PWB0ZWxlcG9ydCBzdGFydCBhbmNob3JgKXQudGFyZ2V0U3RhcnQ9cjtlbHNlIGlmKHIuZGF0YT09PWB0ZWxlcG9ydCBhbmNob3JgKXt0LnRhcmdldEFuY2hvcj1yLGUuX2xwYT10LnRhcmdldEFuY2hvciYmbyh0LnRhcmdldEFuY2hvcik7YnJlYWt9fXI9byhyKX19ZnVuY3Rpb24gcChlLHQpe3QuYW5jaG9yPWQobyhlKSx0LHMoZSksbixyLGksYSl9bGV0IG09dC50YXJnZXQ9RXIodC5wcm9wcyxjKSxoPVNyKHQucHJvcHMpO2lmKG0pe2xldCBjPW0uX2xwYXx8bS5maXJzdENoaWxkO3Quc2hhcGVGbGFnJjE2JiYoaD8ocChlLHQpLGYobSxjKSx0LnRhcmdldEFuY2hvcnx8TXIobSx0LHUsbCxzKGUpPT09bT9lOm51bGwpKToodC5hbmNob3I9byhlKSxmKG0sYyksdC50YXJnZXRBbmNob3J8fE1yKG0sdCx1LGwpLGQoYyYmbyhjKSx0LG0sbixyLGksYSkpKSxqcih0LGgpfWVsc2UgaCYmdC5zaGFwZUZsYWcmMTYmJihwKGUsdCksdC50YXJnZXRTdGFydD1lLHQudGFyZ2V0QW5jaG9yPW8oZSkpO3JldHVybiB0LmFuY2hvciYmbyh0LmFuY2hvcil9dmFyIEFyPURyO2Z1bmN0aW9uIGpyKGUsdCl7bGV0IG49ZS5jdHg7aWYobiYmbi51dCl7bGV0IHIsaTtmb3IodD8ocj1lLmVsLGk9ZS5hbmNob3IpOihyPWUudGFyZ2V0U3RhcnQsaT1lLnRhcmdldEFuY2hvcik7ciYmciE9PWk7KXIubm9kZVR5cGU9PT0xJiZyLnNldEF0dHJpYnV0ZShgZGF0YS12LW93bmVyYCxuLnVpZCkscj1yLm5leHRTaWJsaW5nO24udXQoKX19ZnVuY3Rpb24gTXIoZSx0LG4scixpPW51bGwpe2xldCBhPXQudGFyZ2V0U3RhcnQ9bihgYCksbz10LnRhcmdldEFuY2hvcj1uKGBgKTtyZXR1cm4gYVticl09byxlJiYocihhLGUsaSkscihvLGUsaSkpLG99dmFyIE5yPVN5bWJvbChgX2xlYXZlQ2JgKSxQcj1TeW1ib2woYF9lbnRlckNiYCk7ZnVuY3Rpb24gRnIoKXtsZXQgZT17aXNNb3VudGVkOiExLGlzTGVhdmluZzohMSxpc1VubW91bnRpbmc6ITEsbGVhdmluZ1ZOb2RlczpuZXcgTWFwfTtyZXR1cm4gVmkoKCk9PntlLmlzTW91bnRlZD0hMH0pLFdpKCgpPT57ZS5pc1VubW91bnRpbmc9ITB9KSxlfXZhciBJcj1bRnVuY3Rpb24sQXJyYXldLExyPXttb2RlOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixwZXJzaXN0ZWQ6Qm9vbGVhbixvbkJlZm9yZUVudGVyOklyLG9uRW50ZXI6SXIsb25BZnRlckVudGVyOklyLG9uRW50ZXJDYW5jZWxsZWQ6SXIsb25CZWZvcmVMZWF2ZTpJcixvbkxlYXZlOklyLG9uQWZ0ZXJMZWF2ZTpJcixvbkxlYXZlQ2FuY2VsbGVkOklyLG9uQmVmb3JlQXBwZWFyOklyLG9uQXBwZWFyOklyLG9uQWZ0ZXJBcHBlYXI6SXIsb25BcHBlYXJDYW5jZWxsZWQ6SXJ9LFJyPWU9PntsZXQgdD1lLnN1YlRyZWU7cmV0dXJuIHQuY29tcG9uZW50P1JyKHQuY29tcG9uZW50KTp0fSx6cj17bmFtZTpgQmFzZVRyYW5zaXRpb25gLHByb3BzOkxyLHNldHVwKGUse3Nsb3RzOnR9KXtsZXQgbj1EcygpLHI9RnIoKTtyZXR1cm4oKT0+e2xldCBpPXQuZGVmYXVsdCYmcXIodC5kZWZhdWx0KCksITApLGE9aSYmaS5sZW5ndGg/QnIoaSk6bi5zdWJUcmVlP3ZzKCk6dm9pZCAwO2lmKCFhKXJldHVybjtsZXQgbz1CKGUpLHttb2RlOnN9PW87aWYoci5pc0xlYXZpbmcpcmV0dXJuIFdyKGEpO2xldCBjPUdyKGEpO2lmKCFjKXJldHVybiBXcihhKTtsZXQgbD1VcihjLG8scixuLGU9Pmw9ZSk7Yy50eXBlIT09SyYmS3IoYyxsKTtsZXQgdT1uLnN1YlRyZWUmJkdyKG4uc3ViVHJlZSk7aWYodSYmdS50eXBlIT09SyYmIWNzKHUsYykmJlJyKG4pLnR5cGUhPT1LKXtsZXQgZT1Vcih1LG8scixuKTtpZihLcih1LGUpLHM9PT1gb3V0LWluYCYmYy50eXBlIT09SylyZXR1cm4gci5pc0xlYXZpbmc9ITAsZS5hZnRlckxlYXZlPSgpPT57ci5pc0xlYXZpbmc9ITEsbi5qb2IuZmxhZ3MmOHx8bi51cGRhdGUoKSxkZWxldGUgZS5hZnRlckxlYXZlLHU9dm9pZCAwfSxXcihhKTtzPT09YGluLW91dGAmJmMudHlwZSE9PUs/ZS5kZWxheUxlYXZlPShlLHQsbik9PntsZXQgaT1IcihyLHUpO2lbU3RyaW5nKHUua2V5KV09dSxlW05yXT0oKT0+e3QoKSxlW05yXT12b2lkIDAsZGVsZXRlIGwuZGVsYXllZExlYXZlLHU9dm9pZCAwfSxsLmRlbGF5ZWRMZWF2ZT0oKT0+e24oKSxkZWxldGUgbC5kZWxheWVkTGVhdmUsdT12b2lkIDB9fTp1PXZvaWQgMH1lbHNlIHUmJj12b2lkIDA7cmV0dXJuIGF9fX07ZnVuY3Rpb24gQnIoZSl7bGV0IHQ9ZVswXTtpZihlLmxlbmd0aD4xKXtmb3IobGV0IG4gb2YgZSlpZihuLnR5cGUhPT1LKXt0PW47YnJlYWt9fXJldHVybiB0fXZhciBWcj16cjtmdW5jdGlvbiBIcihlLHQpe2xldHtsZWF2aW5nVk5vZGVzOm59PWUscj1uLmdldCh0LnR5cGUpO3JldHVybiByfHwocj1PYmplY3QuY3JlYXRlKG51bGwpLG4uc2V0KHQudHlwZSxyKSkscn1mdW5jdGlvbiBVcihlLHQsbixyLGkpe2xldHthcHBlYXI6YSxtb2RlOm8scGVyc2lzdGVkOnM9ITEsb25CZWZvcmVFbnRlcjpjLG9uRW50ZXI6bCxvbkFmdGVyRW50ZXI6dSxvbkVudGVyQ2FuY2VsbGVkOmYsb25CZWZvcmVMZWF2ZTpwLG9uTGVhdmU6bSxvbkFmdGVyTGVhdmU6aCxvbkxlYXZlQ2FuY2VsbGVkOmcsb25CZWZvcmVBcHBlYXI6XyxvbkFwcGVhcjp2LG9uQWZ0ZXJBcHBlYXI6eSxvbkFwcGVhckNhbmNlbGxlZDpifT10LHg9U3RyaW5nKGUua2V5KSxTPUhyKG4sZSksQz0oZSx0KT0+e2UmJk1uKGUsciw5LHQpfSx3PShlLHQpPT57bGV0IG49dFsxXTtDKGUsdCksZChlKT9lLmV2ZXJ5KGU9PmUubGVuZ3RoPD0xKSYmbigpOmUubGVuZ3RoPD0xJiZuKCl9LFQ9e21vZGU6byxwZXJzaXN0ZWQ6cyxiZWZvcmVFbnRlcih0KXtsZXQgcj1jO2lmKCFuLmlzTW91bnRlZCl7aWYoYSlyPV98fGM7ZWxzZSByZXR1cm59dFtOcl0mJnRbTnJdKCEwKTtsZXQgaT1TW3hdO2kmJmNzKGUsaSkmJmkuZWxbTnJdJiZpLmVsW05yXSgpLEMocixbdF0pfSxlbnRlcih0KXtpZihTW3hdPT09ZSlyZXR1cm47bGV0IHI9bCxpPXUsbz1mO2lmKCFuLmlzTW91bnRlZCl7aWYoYSlyPXZ8fGwsaT15fHx1LG89Ynx8ZjtlbHNlIHJldHVybn1sZXQgcz0hMTt0W1ByXT1lPT57c3x8KHM9ITAsQyhlP286aSxbdF0pLFQuZGVsYXllZExlYXZlJiZULmRlbGF5ZWRMZWF2ZSgpLHRbUHJdPXZvaWQgMCl9O2xldCBjPXRbUHJdLmJpbmQobnVsbCwhMSk7cj93KHIsW3QsY10pOmMoKX0sbGVhdmUodCxyKXtsZXQgaT1TdHJpbmcoZS5rZXkpO2lmKHRbUHJdJiZ0W1ByXSghMCksbi5pc1VubW91bnRpbmcpcmV0dXJuIHIoKTtDKHAsW3RdKTtsZXQgYT0hMTt0W05yXT1uPT57YXx8KGE9ITAscigpLEMobj9nOmgsW3RdKSx0W05yXT12b2lkIDAsU1tpXT09PWUmJmRlbGV0ZSBTW2ldKX07bGV0IG89dFtOcl0uYmluZChudWxsLCExKTtTW2ldPWUsbT93KG0sW3Qsb10pOm8oKX0sY2xvbmUoZSl7bGV0IGE9VXIoZSx0LG4scixpKTtyZXR1cm4gaSYmaShhKSxhfX07cmV0dXJuIFR9ZnVuY3Rpb24gV3IoZSl7aWYoa2koZSkpcmV0dXJuIGU9aHMoZSksZS5jaGlsZHJlbj1udWxsLGV9ZnVuY3Rpb24gR3IoZSl7aWYoIWtpKGUpKXJldHVybiB4cihlLnR5cGUpJiZlLmNoaWxkcmVuP0JyKGUuY2hpbGRyZW4pOmU7aWYoZS5jb21wb25lbnQpcmV0dXJuIGUuY29tcG9uZW50LnN1YlRyZWU7bGV0e3NoYXBlRmxhZzp0LGNoaWxkcmVuOm59PWU7aWYobil7aWYodCYxNilyZXR1cm4gblswXTtpZih0JjMyJiZnKG4uZGVmYXVsdCkpcmV0dXJuIG4uZGVmYXVsdCgpfX1mdW5jdGlvbiBLcihlLHQpe2lmKGUuc2hhcGVGbGFnJjYmJmUuY29tcG9uZW50KXtlLnRyYW5zaXRpb249dDtsZXQgbj1lLmNvbXBvbmVudC5zdWJUcmVlO0tyKHhyKG4udHlwZSkmJkdyKG4pfHxuLHQpfWVsc2UgZS5zaGFwZUZsYWcmMTI4PyhlLnNzQ29udGVudC50cmFuc2l0aW9uPXQuY2xvbmUoZS5zc0NvbnRlbnQpLGUuc3NGYWxsYmFjay50cmFuc2l0aW9uPXQuY2xvbmUoZS5zc0ZhbGxiYWNrKSk6ZS50cmFuc2l0aW9uPXR9ZnVuY3Rpb24gcXIoZSx0PSExLG4pe2xldCByPVtdLGk9MDtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7bGV0IG89ZVthXSxzPW49PW51bGw/by5rZXk6U3RyaW5nKG4pK1N0cmluZyhvLmtleT09bnVsbD9hOm8ua2V5KTtvLnR5cGU9PT1HPyhvLnBhdGNoRmxhZyYxMjgmJmkrKyxyPXIuY29uY2F0KHFyKG8uY2hpbGRyZW4sdCxzKSkpOih0fHxvLnR5cGUhPT1LKSYmci5wdXNoKHM9PW51bGw/bzpocyhvLHtrZXk6c30pKX1pZihpPjEpZm9yKGxldCBlPTA7ZTxyLmxlbmd0aDtlKyspcltlXS5wYXRjaEZsYWc9LTI7cmV0dXJuIHJ9ZnVuY3Rpb24gSnIoZSx0KXtyZXR1cm4gZyhlKT9zKHtuYW1lOmUubmFtZX0sdCx7c2V0dXA6ZX0pOmV9ZnVuY3Rpb24gWXIoKXtsZXQgZT1EcygpO3JldHVybiBlPyhlLmFwcENvbnRleHQuY29uZmlnLmlkUHJlZml4fHxgdmApK2AtYCtlLmlkc1swXStlLmlkc1sxXSsrOmBgfWZ1bmN0aW9uIFhyKGUpe2UuaWRzPVtlLmlkc1swXStlLmlkc1syXSsrK2AtYCwwLDBdfWZ1bmN0aW9uIFpyKGUpe2xldCBuPURzKCkscj1RdChudWxsKTtpZihuKXtsZXQgaT1uLnJlZnM9PT10P24ucmVmcz17fTpuLnJlZnM7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSx7ZW51bWVyYWJsZTohMCxnZXQ6KCk9PnIudmFsdWUsc2V0OmU9PnIudmFsdWU9ZX0pfXJldHVybiByfWZ1bmN0aW9uIFFyKGUsdCl7bGV0IG47cmV0dXJuISEoKG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpKSYmIW4uY29uZmlndXJhYmxlKX12YXIgJHI9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gZWkoZSxuLHIsYSxvPSExKXtpZihkKGUpKXtlLmZvckVhY2goKGUsdCk9PmVpKGUsbiYmKGQobik/blt0XTpuKSxyLGEsbykpO3JldHVybn1pZihFaShhKSYmIW8pe2Euc2hhcGVGbGFnJjUxMiYmYS50eXBlLl9fYXN5bmNSZXNvbHZlZCYmYS5jb21wb25lbnQuc3ViVHJlZS5jb21wb25lbnQmJmVpKGUsbixyLGEuY29tcG9uZW50LnN1YlRyZWUpO3JldHVybn1sZXQgcz1hLnNoYXBlRmxhZyY0P1dzKGEuY29tcG9uZW50KTphLmVsLGw9bz9udWxsOnMse2k6ZixyOnB9PWUsbT1uJiZuLnIsaD1mLnJlZnM9PT10P2YucmVmcz17fTpmLnJlZnMsdj1mLnNldHVwU3RhdGUseT1CKHYpLGI9dj09PXQ/aTplPT4hUXIoaCxlKSYmdSh5LGUpLHg9KGUsdCk9PiEodCYmUXIoaCx0KSk7aWYobSE9bnVsbCYmbSE9PXApe2lmKHRpKG4pLF8obSkpaFttXT1udWxsLGIobSkmJih2W21dPW51bGwpO2Vsc2UgaWYoVihtKSl7bGV0IGU9bjt4KG0sZS5rKSYmKG0udmFsdWU9bnVsbCksZS5rJiYoaFtlLmtdPW51bGwpfX1pZihnKHApKWpuKHAsZiwxMixbbCxoXSk7ZWxzZXtsZXQgdD1fKHApLG49VihwKTtpZih0fHxuKXtsZXQgaT0oKT0+e2lmKGUuZil7bGV0IG49dD9iKHApP3ZbcF06aFtwXTp4KHApfHwhZS5rP3AudmFsdWU6aFtlLmtdO2lmKG8pZChuKSYmYyhuLHMpO2Vsc2UgaWYoZChuKSluLmluY2x1ZGVzKHMpfHxuLnB1c2gocyk7ZWxzZSBpZih0KWhbcF09W3NdLGIocCkmJih2W3BdPWhbcF0pO2Vsc2V7bGV0IHQ9W3NdO3gocCxlLmspJiYocC52YWx1ZT10KSxlLmsmJihoW2Uua109dCl9fWVsc2UgdD8oaFtwXT1sLGIocCkmJih2W3BdPWwpKTpuJiYoeChwLGUuaykmJihwLnZhbHVlPWwpLGUuayYmKGhbZS5rXT1sKSl9O2lmKGwpe2xldCB0PSgpPT57aSgpLCRyLmRlbGV0ZShlKX07dC5pZD0tMSwkci5zZXQoZSx0KSxXKHQscil9ZWxzZSB0aShlKSxpKCl9fX1mdW5jdGlvbiB0aShlKXtsZXQgdD0kci5nZXQoZSk7dCYmKHQuZmxhZ3N8PTgsJHIuZGVsZXRlKGUpKX12YXIgbmk9ITEscmk9KCk9PntuaXx8PShjb25zb2xlLmVycm9yKGBIeWRyYXRpb24gY29tcGxldGVkIGJ1dCBjb250YWlucyBtaXNtYXRjaGVzLmApLCEwKX0saWk9ZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoYHN2Z2ApJiZlLnRhZ05hbWUhPT1gZm9yZWlnbk9iamVjdGAsYWk9ZT0+ZS5uYW1lc3BhY2VVUkkuaW5jbHVkZXMoYE1hdGhNTGApLG9pPWU9PntpZihlLm5vZGVUeXBlPT09MSl7aWYoaWkoZSkpcmV0dXJuYHN2Z2A7aWYoYWkoZSkpcmV0dXJuYG1hdGhtbGB9fSxzaT1lPT5lLm5vZGVUeXBlPT09ODtmdW5jdGlvbiBjaShlKXtsZXR7bXQ6dCxwOm4sbzp7cGF0Y2hQcm9wOnIsY3JlYXRlVGV4dDppLG5leHRTaWJsaW5nOm8scGFyZW50Tm9kZTpzLHJlbW92ZTpjLGluc2VydDpsLGNyZWF0ZUNvbW1lbnQ6dX19PWUsZD0oZSx0KT0+e2lmKCF0Lmhhc0NoaWxkTm9kZXMoKSl7bihudWxsLGUsdCkscW4oKSx0Ll92bm9kZT1lO3JldHVybn1mKHQuZmlyc3RDaGlsZCxlLG51bGwsbnVsbCxudWxsKSxxbigpLHQuX3Zub2RlPWV9LGY9KG4scixhLGMsdSxkPSExKT0+e2R8fD0hIXIuZHluYW1pY0NoaWxkcmVuO2xldCBiPXNpKG4pJiZuLmRhdGE9PT1gW2AseD0oKT0+ZyhuLHIsYSxjLHUsYikse3R5cGU6UyxyZWY6QyxzaGFwZUZsYWc6dyxwYXRjaEZsYWc6VH09cixFPW4ubm9kZVR5cGU7ci5lbD1uLFQ9PT0tMiYmKGQ9ITEsci5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0IEQ9bnVsbDtzd2l0Y2goUyl7Y2FzZSBabzpFPT09Mz8obi5kYXRhIT09ci5jaGlsZHJlbiYmKHJpKCksbi5kYXRhPXIuY2hpbGRyZW4pLEQ9byhuKSk6ci5jaGlsZHJlbj09PWBgPyhsKHIuZWw9aShgYCkscyhuKSxuKSxEPW4pOkQ9eCgpO2JyZWFrO2Nhc2UgSzp5KG4pPyhEPW8obiksdihyLmVsPW4uY29udGVudC5maXJzdENoaWxkLG4sYSkpOkQ9RSE9PTh8fGI/eCgpOm8obik7YnJlYWs7Y2FzZSBRbzppZihiJiYobj1vKG4pLEU9bi5ub2RlVHlwZSksRT09PTF8fEU9PT0zKXtEPW47bGV0IGU9IXIuY2hpbGRyZW4ubGVuZ3RoO2ZvcihsZXQgdD0wO3Q8ci5zdGF0aWNDb3VudDt0KyspZSYmKHIuY2hpbGRyZW4rPUQubm9kZVR5cGU9PT0xP0Qub3V0ZXJIVE1MOkQuZGF0YSksdD09PXIuc3RhdGljQ291bnQtMSYmKHIuYW5jaG9yPUQpLEQ9byhEKTtyZXR1cm4gYj9vKEQpOkR9eCgpO2JyZWFrO2Nhc2UgRzpEPWI/aChuLHIsYSxjLHUsZCk6eCgpO2JyZWFrO2RlZmF1bHQ6aWYodyYxKUQ9KEUhPT0xfHxyLnR5cGUudG9Mb3dlckNhc2UoKSE9PW4udGFnTmFtZS50b0xvd2VyQ2FzZSgpKSYmIXkobik/eCgpOnAobixyLGEsYyx1LGQpO2Vsc2UgaWYodyY2KXtyLnNsb3RTY29wZUlkcz11O2xldCBlPXMobik7aWYoRD1iP18obik6c2kobikmJm4uZGF0YT09PWB0ZWxlcG9ydCBzdGFydGA/XyhuLG4uZGF0YSxgdGVsZXBvcnQgZW5kYCk6byhuKSx0KHIsZSxudWxsLGEsYyxvaShlKSxkKSxFaShyKSYmIXIudHlwZS5fX2FzeW5jUmVzb2x2ZWQpe2xldCB0O2I/KHQ9SihHKSx0LmFuY2hvcj1EP0QucHJldmlvdXNTaWJsaW5nOmUubGFzdENoaWxkKTp0PW4ubm9kZVR5cGU9PT0zP2dzKGBgKTpKKGBkaXZgKSx0LmVsPW4sci5jb21wb25lbnQuc3ViVHJlZT10fX1lbHNlIHcmNjQ/RD1FPT09OD9yLnR5cGUuaHlkcmF0ZShuLHIsYSxjLHUsZCxlLG0pOngoKTp3JjEyOCYmKEQ9ci50eXBlLmh5ZHJhdGUobixyLGEsYyxvaShzKG4pKSx1LGQsZSxmKSl9cmV0dXJuIEMhPW51bGwmJmVpKEMsbnVsbCxjLHIpLER9LHA9KGUsdCxuLGksbyxzKT0+e3N8fD0hIXQuZHluYW1pY0NoaWxkcmVuO2xldHt0eXBlOmwsZHluYW1pY1Byb3BzOnUscHJvcHM6ZCxwYXRjaEZsYWc6ZixzaGFwZUZsYWc6cCxkaXJzOmgsdHJhbnNpdGlvbjpnfT10LF89bD09PWBpbnB1dGB8fGw9PT1gb3B0aW9uYCxiPSEhdTtpZihffHxifHxmIT09LTEpe2gmJm9yKHQsbnVsbCxuLGBjcmVhdGVkYCk7bGV0IGw9ITE7aWYoeShlKSl7bD1NbyhudWxsLGcpJiZuJiZuLnZub2RlLnByb3BzJiZuLnZub2RlLnByb3BzLmFwcGVhcjtsZXQgcj1lLmNvbnRlbnQuZmlyc3RDaGlsZDtpZihsKXtsZXQgZT1yLmdldEF0dHJpYnV0ZShgY2xhc3NgKTtlJiYoci4kY2xzPWUpLGcuYmVmb3JlRW50ZXIocil9dihyLGUsbiksdC5lbD1lPXJ9aWYocCYxNiYmIShkJiYoZC5pbm5lckhUTUx8fGQudGV4dENvbnRlbnQpKSl7bGV0IHI9bShlLmZpcnN0Q2hpbGQsdCxlLG4saSxvLHMpO2ZvcihyJiYhcGkoZSwxKSYmcmkoKTtyOyl7bGV0IGU9cjtyPXIubmV4dFNpYmxpbmcsYyhlKX19ZWxzZSBpZihwJjgpe2xldCBuPXQuY2hpbGRyZW47blswXT09PWAKYCYmKGUudGFnTmFtZT09PWBQUkVgfHxlLnRhZ05hbWU9PT1gVEVYVEFSRUFgKSYmKG49bi5zbGljZSgxKSk7bGV0e3RleHRDb250ZW50OnJ9PWU7ciE9PW4mJnIhPT1uLnJlcGxhY2UoL1xyXG58XHIvZyxgCmApJiYocGkoZSwwKXx8cmkoKSxlLnRleHRDb250ZW50PXQuY2hpbGRyZW4pfWlmKGQpe2lmKF98fGJ8fCFzfHxmJjQ4KXtsZXQgdD1lLnRhZ05hbWUuaW5jbHVkZXMoYC1gKSxpPWUubmFtZXNwYWNlVVJJLmluY2x1ZGVzKGBzdmdgKT9gc3ZnYDplLm5hbWVzcGFjZVVSSS5pbmNsdWRlcyhgTWF0aE1MYCk/YG1hdGhtbGA6dm9pZCAwO2ZvcihsZXQgbyBpbiBkKWlmKF8mJihvLmVuZHNXaXRoKGB2YWx1ZWApfHxvPT09YGluZGV0ZXJtaW5hdGVgKXx8YShvKSYmIUUobyl8fG9bMF09PT1gLmB8fHQmJiFFKG8pfHx1JiZ1LmluY2x1ZGVzKG8pKXtpZih1aShlLG8sZFtvXSkpY29udGludWU7cihlLG8sbnVsbCxkW29dLGksbil9fWVsc2UgaWYoZC5vbkNsaWNrKXIoZSxgb25DbGlja2AsbnVsbCxkLm9uQ2xpY2ssdm9pZCAwLG4pO2Vsc2UgaWYoZiY0JiZXdChkLnN0eWxlKSlmb3IobGV0IGUgaW4gZC5zdHlsZSlkLnN0eWxlW2VdfWxldCB4Oyh4PWQmJmQub25Wbm9kZUJlZm9yZU1vdW50KSYmQ3MoeCxuLHQpLGgmJm9yKHQsbnVsbCxuLGBiZWZvcmVNb3VudGApLCgoeD1kJiZkLm9uVm5vZGVNb3VudGVkKXx8aHx8bCkmJkpvKCgpPT57eCYmQ3MoeCxuLHQpLGwmJmcuZW50ZXIoZSksaCYmb3IodCxudWxsLG4sYG1vdW50ZWRgKX0saSl9cmV0dXJuIGUubmV4dFNpYmxpbmd9LG09KGUsdCxyLGEscyxjLHUpPT57dXx8PSEhdC5keW5hbWljQ2hpbGRyZW47bGV0IGQ9dC5jaGlsZHJlbixwPWQubGVuZ3RoLG09ITE7Zm9yKGxldCB0PTA7dDxwO3QrKyl7bGV0IGg9dT9kW3RdOmRbdF09eXMoZFt0XSksZz1oLnR5cGU9PT1abztlPyhnJiYhdSYmdCsxPHAmJnlzKGRbdCsxXSkudHlwZT09PVpvJiYobChpKGUuZGF0YS5zbGljZShoLmNoaWxkcmVuLmxlbmd0aCkpLHIsbyhlKSksZS5kYXRhPWguY2hpbGRyZW4pLGU9ZihlLGgsYSxzLGMsdSkpOmcmJiFoLmNoaWxkcmVuP2woaC5lbD1pKGBgKSxyKToobXx8KG09ITAscGkociwxKXx8cmkoKSksbihudWxsLGgscixudWxsLGEscyxvaShyKSxjKSl9cmV0dXJuIGV9LGg9KGUsdCxuLHIsaSxhKT0+e2xldHtzbG90U2NvcGVJZHM6Y309dDtjJiYoaT1pP2kuY29uY2F0KGMpOmMpO2xldCBkPXMoZSksZj1tKG8oZSksdCxkLG4scixpLGEpO3JldHVybiBmJiZzaShmKSYmZi5kYXRhPT09YF1gP28odC5hbmNob3I9Zik6KHJpKCksbCh0LmFuY2hvcj11KGBdYCksZCxmKSxmKX0sZz0oZSx0LHIsaSxhLGwpPT57aWYoaGkoZSx0KXx8cmkoKSx0LmVsPW51bGwsbCl7bGV0IHQ9XyhlKTtmb3IoOzspe2xldCBuPW8oZSk7aWYobiYmbiE9PXQpYyhuKTtlbHNlIGJyZWFrfX1sZXQgdT1vKGUpLGQ9cyhlKTtyZXR1cm4gYyhlKSxuKG51bGwsdCxkLHUscixpLG9pKGQpLGEpLHImJihyLnZub2RlLmVsPXQuZWwsc28ocix0LmVsKSksdX0sXz0oZSx0PWBbYCxuPWBdYCk9PntsZXQgcj0wO2Zvcig7ZTspaWYoZT1vKGUpLGUmJnNpKGUpJiYoZS5kYXRhPT09dCYmcisrLGUuZGF0YT09PW4pKXtpZihyPT09MClyZXR1cm4gbyhlKTtyLS19cmV0dXJuIGV9LHY9KGUsdCxuKT0+e2xldCByPXQucGFyZW50Tm9kZTtyJiZyLnJlcGxhY2VDaGlsZChlLHQpO2xldCBpPW47Zm9yKDtpOylpLnZub2RlLmVsPT09dCYmKGkudm5vZGUuZWw9aS5zdWJUcmVlLmVsPWUpLGk9aS5wYXJlbnR9LHk9ZT0+ZS5ub2RlVHlwZT09PTEmJmUudGFnTmFtZT09PWBURU1QTEFURWA7cmV0dXJuW2QsZl19dmFyIGxpPW5ldyBTZXQoW2BzcmNgLGBzcmNzZXRgLGBocmVmYCxgcG9zdGVyYF0pO2Z1bmN0aW9uIHVpKGUsdCxuKXtyZXR1cm4gbGkuaGFzKHQpP2UuZ2V0QXR0cmlidXRlKHQpPT09KG49PW51bGw/bnVsbDpgJHtufWApOiExfXZhciBkaT1gZGF0YS1hbGxvdy1taXNtYXRjaGAsZmk9ezA6YHRleHRgLDE6YGNoaWxkcmVuYCwyOmBjbGFzc2AsMzpgc3R5bGVgLDQ6YGF0dHJpYnV0ZWB9O2Z1bmN0aW9uIHBpKGUsdCl7aWYodD09PTB8fHQ9PT0xKWZvcig7ZSYmIWUuaGFzQXR0cmlidXRlKGRpKTspZT1lLnBhcmVudEVsZW1lbnQ7cmV0dXJuIG1pKGUmJmUuZ2V0QXR0cmlidXRlKGRpKSx0KX1mdW5jdGlvbiBtaShlLHQpe2lmKGU9PW51bGwpcmV0dXJuITE7aWYoZT09PWBgKXJldHVybiEwO3tsZXQgbj1lLnNwbGl0KGAsYCk7cmV0dXJuIHQ9PT0wJiZuLmluY2x1ZGVzKGBjaGlsZHJlbmApPyEwOm4uaW5jbHVkZXMoZmlbdF0pfX1mdW5jdGlvbiBoaShlLHQpe3JldHVybiBwaShlLnBhcmVudEVsZW1lbnQsMSl8fGdpKGUpfHxfaSh0KX1mdW5jdGlvbiBnaShlKXtyZXR1cm4gZS5ub2RlVHlwZT09PTEmJm1pKGUuZ2V0QXR0cmlidXRlKGRpKSwxKX1mdW5jdGlvbiBfaSh7cHJvcHM6ZX0pe2xldCB0PWUmJmVbZGldO3JldHVybiB0eXBlb2YgdD09YHN0cmluZ2AmJm1pKHQsMSl9dmFyIHZpPW9lKCkucmVxdWVzdElkbGVDYWxsYmFja3x8KGU9PnNldFRpbWVvdXQoZSwxKSkseWk9b2UoKS5jYW5jZWxJZGxlQ2FsbGJhY2t8fChlPT5jbGVhclRpbWVvdXQoZSkpLGJpPShlPTFlNCk9PnQ9PntsZXQgbj12aSh0LHt0aW1lb3V0OmV9KTtyZXR1cm4oKT0+eWkobil9O2Z1bmN0aW9uIHhpKGUpe2xldHt0b3A6dCxsZWZ0Om4sYm90dG9tOnIscmlnaHQ6aX09ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx7aW5uZXJIZWlnaHQ6YSxpbm5lcldpZHRoOm99PXdpbmRvdztyZXR1cm4odD4wJiZ0PGF8fHI+MCYmcjxhKSYmKG4+MCYmbjxvfHxpPjAmJmk8byl9dmFyIFNpPWU9Pih0LG4pPT57bGV0IHI9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGU9Pntmb3IobGV0IG4gb2YgZSlpZihuLmlzSW50ZXJzZWN0aW5nKXtyLmRpc2Nvbm5lY3QoKSx0KCk7YnJlYWt9fSxlKTtyZXR1cm4gbihlPT57aWYoZSBpbnN0YW5jZW9mIEVsZW1lbnQpe2lmKHhpKGUpKXJldHVybiB0KCksci5kaXNjb25uZWN0KCksITE7ci5vYnNlcnZlKGUpfX0pLCgpPT5yLmRpc2Nvbm5lY3QoKX0sQ2k9ZT0+dD0+e2lmKGUpe2xldCBuPW1hdGNoTWVkaWEoZSk7aWYobi5tYXRjaGVzKXQoKTtlbHNlIHJldHVybiBuLmFkZEV2ZW50TGlzdGVuZXIoYGNoYW5nZWAsdCx7b25jZTohMH0pLCgpPT5uLnJlbW92ZUV2ZW50TGlzdGVuZXIoYGNoYW5nZWAsdCl9fSx3aT0oZT1bXSk9Pih0LG4pPT57XyhlKSYmKGU9W2VdKTtsZXQgcj0hMSxpPWU9PntyfHwocj0hMCxhKCksdCgpLGUudGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3IGUuY29uc3RydWN0b3IoZS50eXBlLGUpKSl9LGE9KCk9PntuKHQ9Pntmb3IobGV0IG4gb2YgZSl0LnJlbW92ZUV2ZW50TGlzdGVuZXIobixpKX0pfTtyZXR1cm4gbih0PT57Zm9yKGxldCBuIG9mIGUpdC5hZGRFdmVudExpc3RlbmVyKG4saSx7b25jZTohMH0pfSksYX07ZnVuY3Rpb24gVGkoZSx0KXtpZihzaShlKSYmZS5kYXRhPT09YFtgKXtsZXQgbj0xLHI9ZS5uZXh0U2libGluZztmb3IoO3I7KXtpZihyLm5vZGVUeXBlPT09MSl7aWYodChyKT09PSExKWJyZWFrfWVsc2UgaWYoc2kocikpe2lmKHIuZGF0YT09PWBdYCl7aWYoLS1uPT09MClicmVha31lbHNlIHIuZGF0YT09PWBbYCYmbisrfXI9ci5uZXh0U2libGluZ319ZWxzZSB0KGUpfXZhciBFaT1lPT4hIWUudHlwZS5fX2FzeW5jTG9hZGVyO2Z1bmN0aW9uIERpKGUpe2coZSkmJihlPXtsb2FkZXI6ZX0pO2xldHtsb2FkZXI6dCxsb2FkaW5nQ29tcG9uZW50Om4sZXJyb3JDb21wb25lbnQ6cixkZWxheTppPTIwMCxoeWRyYXRlOmEsdGltZW91dDpvLHN1c3BlbnNpYmxlOnM9ITAsb25FcnJvcjpjfT1lLGw9bnVsbCx1LGQ9MCxmPSgpPT4oZCsrLGw9bnVsbCxwKCkpLHA9KCk9PntsZXQgZTtyZXR1cm4gbHx8KGU9bD10KCkuY2F0Y2goZT0+e2lmKGU9ZSBpbnN0YW5jZW9mIEVycm9yP2U6RXJyb3IoU3RyaW5nKGUpKSxjKXJldHVybiBuZXcgUHJvbWlzZSgodCxuKT0+e2MoZSwoKT0+dChmKCkpLCgpPT5uKGUpLGQrMSl9KTt0aHJvdyBlfSkudGhlbih0PT5lIT09bCYmbD9sOih0JiYodC5fX2VzTW9kdWxlfHx0W1N5bWJvbC50b1N0cmluZ1RhZ109PT1gTW9kdWxlYCkmJih0PXQuZGVmYXVsdCksdT10LHQpKSl9O3JldHVybiBKcih7bmFtZTpgQXN5bmNDb21wb25lbnRXcmFwcGVyYCxfX2FzeW5jTG9hZGVyOnAsX19hc3luY0h5ZHJhdGUoZSx0LG4pe2xldCByPWUuaXNDb25uZWN0ZWQsaT0hMTsodC5idXx8PVtdKS5wdXNoKCgpPT5pPSEwKTtsZXQgbz0oKT0+e2l8fCFlLnBhcmVudE5vZGV8fHImJiFlLmlzQ29ubmVjdGVkfHxuKCl9LHM9YT8oKT0+e2xldCBuPWEobyx0PT5UaShlLHQpKTtuJiYodC5idW18fD1bXSkucHVzaChuKX06bzt1P3MoKTpwKCkudGhlbigoKT0+IXQuaXNVbm1vdW50ZWQmJnMoKSl9LGdldCBfX2FzeW5jUmVzb2x2ZWQoKXtyZXR1cm4gdX0sc2V0dXAoKXtsZXQgZT1ZO2lmKFhyKGUpLHUpcmV0dXJuKCk9Pk9pKHUsZSk7bGV0IHQ9dD0+e2w9bnVsbCxObih0LGUsMTMsIXIpfTtpZihzJiZlLnN1c3BlbnNlfHxOcylyZXR1cm4gcCgpLnRoZW4odD0+KCk9Pk9pKHQsZSkpLmNhdGNoKGU9Pih0KGUpLCgpPT5yP0oocix7ZXJyb3I6ZX0pOm51bGwpKTtsZXQgYT1adCghMSksYz1adCgpLGQ9WnQoISFpKSxmLG07cmV0dXJuIEdpKCgpPT57ZiE9bnVsbCYmY2xlYXJUaW1lb3V0KGYpLG0hPW51bGwmJmNsZWFyVGltZW91dChtKX0pLGkmJihtPXNldFRpbWVvdXQoKCk9PntlLmlzVW5tb3VudGVkfHwoZC52YWx1ZT0hMSl9LGkpKSxvIT1udWxsJiYoZj1zZXRUaW1lb3V0KCgpPT57aWYoIWUuaXNVbm1vdW50ZWQmJiFhLnZhbHVlJiYhYy52YWx1ZSl7bGV0IGU9RXJyb3IoYEFzeW5jIGNvbXBvbmVudCB0aW1lZCBvdXQgYWZ0ZXIgJHtvfW1zLmApO3QoZSksYy52YWx1ZT1lfX0sbykpLHAoKS50aGVuKCgpPT57ZS5pc1VubW91bnRlZHx8KGEudmFsdWU9ITAsZS5wYXJlbnQmJmtpKGUucGFyZW50LnZub2RlKSYmZS5wYXJlbnQudXBkYXRlKCkpfSkuY2F0Y2gobj0+e2lmKGUuaXNVbm1vdW50ZWQpe2w9bnVsbDtyZXR1cm59dChuKSxjLnZhbHVlPW59KSwoKT0+e2lmKGEudmFsdWUmJnUpcmV0dXJuIE9pKHUsZSk7aWYoYy52YWx1ZSYmcilyZXR1cm4gSihyLHtlcnJvcjpjLnZhbHVlfSk7aWYobiYmIWQudmFsdWUpcmV0dXJuIE9pKG4sZSl9fX0pfWZ1bmN0aW9uIE9pKGUsdCl7bGV0e3JlZjpuLHByb3BzOnIsY2hpbGRyZW46aSxjZTphfT10LnZub2RlLG89SihlLHIsaSk7cmV0dXJuIG8ucmVmPW4sby5jZT1hLGRlbGV0ZSB0LnZub2RlLmNlLG99dmFyIGtpPWU9PmUudHlwZS5fX2lzS2VlcEFsaXZlLEFpPXtuYW1lOmBLZWVwQWxpdmVgLF9faXNLZWVwQWxpdmU6ITAscHJvcHM6e2luY2x1ZGU6W1N0cmluZyxSZWdFeHAsQXJyYXldLGV4Y2x1ZGU6W1N0cmluZyxSZWdFeHAsQXJyYXldLG1heDpbU3RyaW5nLE51bWJlcl19LHNldHVwKGUse3Nsb3RzOnR9KXtsZXQgbj1EcygpLHI9bi5jdHg7aWYoIXIucmVuZGVyZXIpcmV0dXJuKCk9PntsZXQgZT10LmRlZmF1bHQmJnQuZGVmYXVsdCgpO3JldHVybiBlJiZlLmxlbmd0aD09PTE/ZVswXTplfTtsZXQgaT1uZXcgTWFwLGE9bmV3IFNldCxvPW51bGwscz1uLnN1c3BlbnNlLHtyZW5kZXJlcjp7cDpjLG06bCx1bTp1LG86e2NyZWF0ZUVsZW1lbnQ6ZH19fT1yLGY9ZChgZGl2YCk7ci5hY3RpdmF0ZT0oZSx0LG4scixpKT0+e2xldCBhPWUuY29tcG9uZW50O2woZSx0LG4sMCxzKSxjKGEudm5vZGUsZSx0LG4sYSxzLHIsZS5zbG90U2NvcGVJZHMsaSksVygoKT0+e2EuaXNEZWFjdGl2YXRlZD0hMSxhLmEmJk0oYS5hKTtsZXQgdD1lLnByb3BzJiZlLnByb3BzLm9uVm5vZGVNb3VudGVkO3QmJkNzKHQsYS5wYXJlbnQsZSl9LHMpfSxyLmRlYWN0aXZhdGU9ZT0+e2xldCB0PWUuY29tcG9uZW50O0lvKHQubSksSW8odC5hKSxsKGUsZixudWxsLDEscyksVygoKT0+e3QuZGEmJk0odC5kYSk7bGV0IG49ZS5wcm9wcyYmZS5wcm9wcy5vblZub2RlVW5tb3VudGVkO24mJkNzKG4sdC5wYXJlbnQsZSksdC5pc0RlYWN0aXZhdGVkPSEwfSxzKX07ZnVuY3Rpb24gcChlKXtJaShlKSx1KGUsbixzLCEwKX1mdW5jdGlvbiBtKGUpe2kuZm9yRWFjaCgodCxuKT0+e2xldCByPUdzKEVpKHQpP3QudHlwZS5fX2FzeW5jUmVzb2x2ZWR8fHt9OnQudHlwZSk7ciYmIWUocikmJmgobil9KX1mdW5jdGlvbiBoKGUpe2xldCB0PWkuZ2V0KGUpO3QmJighb3x8IWNzKHQsbykpP3AodCk6byYmSWkobyksaS5kZWxldGUoZSksYS5kZWxldGUoZSl9aHIoKCk9PltlLmluY2x1ZGUsZS5leGNsdWRlXSwoW2UsdF0pPT57ZSYmbSh0PT5qaShlLHQpKSx0JiZtKGU9PiFqaSh0LGUpKX0se2ZsdXNoOmBwb3N0YCxkZWVwOiEwfSk7bGV0IGc9bnVsbCxfPSgpPT57ZyE9bnVsbCYmKFJvKG4uc3ViVHJlZS50eXBlKT9XKCgpPT57aS5zZXQoZyxMaShuLnN1YlRyZWUpKX0sbi5zdWJUcmVlLnN1c3BlbnNlKTppLnNldChnLExpKG4uc3ViVHJlZSkpKX07cmV0dXJuIFZpKF8pLFVpKF8pLFdpKCgpPT57aS5mb3JFYWNoKGU9PntsZXR7c3ViVHJlZTp0LHN1c3BlbnNlOnJ9PW4saT1MaSh0KTtpZihlLnR5cGU9PT1pLnR5cGUmJmUua2V5PT09aS5rZXkpe0lpKGkpO2xldCBlPWkuY29tcG9uZW50LmRhO2UmJlcoZSxyKTtyZXR1cm59cChlKX0pfSksKCk9PntpZihnPW51bGwsIXQuZGVmYXVsdClyZXR1cm4gbz1udWxsO2xldCBuPXQuZGVmYXVsdCgpLHI9blswXTtpZihuLmxlbmd0aD4xKXJldHVybiBvPW51bGwsbjtpZighc3Mocil8fCEoci5zaGFwZUZsYWcmNCkmJiEoci5zaGFwZUZsYWcmMTI4KSlyZXR1cm4gbz1udWxsLHI7bGV0IHM9TGkocik7aWYocy50eXBlPT09SylyZXR1cm4gbz1udWxsLHM7bGV0IGM9cy50eXBlLGw9R3MoRWkocyk/cy50eXBlLl9fYXN5bmNSZXNvbHZlZHx8e306Yykse2luY2x1ZGU6dSxleGNsdWRlOmQsbWF4OmZ9PWU7aWYodSYmKCFsfHwhamkodSxsKSl8fGQmJmwmJmppKGQsbCkpcmV0dXJuIHMuc2hhcGVGbGFnJj0tMjU3LG89cyxyO2xldCBwPXMua2V5PT1udWxsP2M6cy5rZXksbT1pLmdldChwKTtyZXR1cm4gcy5lbCYmKHM9aHMocyksci5zaGFwZUZsYWcmMTI4JiYoci5zc0NvbnRlbnQ9cykpLGc9cCxtPyhzLmVsPW0uZWwscy5jb21wb25lbnQ9bS5jb21wb25lbnQscy50cmFuc2l0aW9uJiZLcihzLHMudHJhbnNpdGlvbikscy5zaGFwZUZsYWd8PTUxMixhLmRlbGV0ZShwKSxhLmFkZChwKSk6KGEuYWRkKHApLGYmJmEuc2l6ZT5wYXJzZUludChmLDEwKSYmaChhLnZhbHVlcygpLm5leHQoKS52YWx1ZSkpLHMuc2hhcGVGbGFnfD0yNTYsbz1zLFJvKHIudHlwZSk/cjpzfX19O2Z1bmN0aW9uIGppKGUsdCl7cmV0dXJuIGQoZSk/ZS5zb21lKGU9PmppKGUsdCkpOl8oZSk/ZS5zcGxpdChgLGApLmluY2x1ZGVzKHQpOmgoZSk/KGUubGFzdEluZGV4PTAsZS50ZXN0KHQpKTohMX1mdW5jdGlvbiBNaShlLHQpe1BpKGUsYGFgLHQpfWZ1bmN0aW9uIE5pKGUsdCl7UGkoZSxgZGFgLHQpfWZ1bmN0aW9uIFBpKGUsdCxuPVkpe2xldCByPWUuX193ZGN8fD0oKT0+e2xldCB0PW47Zm9yKDt0Oyl7aWYodC5pc0RlYWN0aXZhdGVkKXJldHVybjt0PXQucGFyZW50fXJldHVybiBlKCl9O2lmKFJpKHQscixuKSxuKXtsZXQgZT1uLnBhcmVudDtmb3IoO2UmJmUucGFyZW50OylraShlLnBhcmVudC52bm9kZSkmJkZpKHIsdCxuLGUpLGU9ZS5wYXJlbnR9fWZ1bmN0aW9uIEZpKGUsdCxuLHIpe2xldCBpPVJpKHQsZSxyLCEwKTtHaSgoKT0+e2Moclt0XSxpKX0sbil9ZnVuY3Rpb24gSWkoZSl7ZS5zaGFwZUZsYWcmPS0yNTcsZS5zaGFwZUZsYWcmPS01MTN9ZnVuY3Rpb24gTGkoZSl7cmV0dXJuIGUuc2hhcGVGbGFnJjEyOD9lLnNzQ29udGVudDplfWZ1bmN0aW9uIFJpKGUsdCxuPVkscj0hMSl7aWYobil7bGV0IGk9bltlXXx8KG5bZV09W10pLGE9dC5fX3dlaHx8PSguLi5yKT0+e0dlKCk7bGV0IGk9QXMobiksYT1Nbih0LG4sZSxyKTtyZXR1cm4gaSgpLEtlKCksYX07cmV0dXJuIHI/aS51bnNoaWZ0KGEpOmkucHVzaChhKSxhfX12YXIgemk9ZT0+KHQsbj1ZKT0+eyghTnN8fGU9PT1gc3BgKSYmUmkoZSwoLi4uZSk9PnQoLi4uZSksbil9LEJpPXppKGBibWApLFZpPXppKGBtYCksSGk9emkoYGJ1YCksVWk9emkoYHVgKSxXaT16aShgYnVtYCksR2k9emkoYHVtYCksS2k9emkoYHNwYCkscWk9emkoYHJ0Z2ApLEppPXppKGBydGNgKTtmdW5jdGlvbiBZaShlLHQ9WSl7UmkoYGVjYCxlLHQpfXZhciBYaT1gY29tcG9uZW50c2AsWmk9YGRpcmVjdGl2ZXNgO2Z1bmN0aW9uIFFpKGUsdCl7cmV0dXJuIG5hKFhpLGUsITAsdCl8fGV9dmFyICRpPVN5bWJvbC5mb3IoYHYtbmRjYCk7ZnVuY3Rpb24gZWEoZSl7cmV0dXJuIF8oZSk/bmEoWGksZSwhMSl8fGU6ZXx8JGl9ZnVuY3Rpb24gdGEoZSl7cmV0dXJuIG5hKFppLGUpfWZ1bmN0aW9uIG5hKGUsdCxuPSEwLHI9ITEpe2xldCBpPVV8fFk7aWYoaSl7bGV0IG49aS50eXBlO2lmKGU9PT1YaSl7bGV0IGU9R3MobiwhMSk7aWYoZSYmKGU9PT10fHxlPT09Tyh0KXx8ZT09PUEoTyh0KSkpKXJldHVybiBufWxldCBhPXJhKGlbZV18fG5bZV0sdCl8fHJhKGkuYXBwQ29udGV4dFtlXSx0KTtyZXR1cm4hYSYmcj9uOmF9fWZ1bmN0aW9uIHJhKGUsdCl7cmV0dXJuIGUmJihlW3RdfHxlW08odCldfHxlW0EoTyh0KSldKX1mdW5jdGlvbiBpYShlLHQsbixyKXtsZXQgaSxhPW4mJm5bcl0sbz1kKGUpO2lmKG98fF8oZSkpe2xldCBuPW8mJld0KGUpLHI9ITEscz0hMTtuJiYocj0hS3QoZSkscz1HdChlKSxlPWF0KGUpKSxpPUFycmF5KGUubGVuZ3RoKTtmb3IobGV0IG49MCxvPWUubGVuZ3RoO248bztuKyspaVtuXT10KHI/cz9YdChZdChlW25dKSk6WXQoZVtuXSk6ZVtuXSxuLHZvaWQgMCxhJiZhW25dKX1lbHNlIGlmKHR5cGVvZiBlPT1gbnVtYmVyYCl7aT1BcnJheShlKTtmb3IobGV0IG49MDtuPGU7bisrKWlbbl09dChuKzEsbix2b2lkIDAsYSYmYVtuXSl9ZWxzZSBpZih5KGUpKXtpZihlW1N5bWJvbC5pdGVyYXRvcl0paT1BcnJheS5mcm9tKGUsKGUsbik9PnQoZSxuLHZvaWQgMCxhJiZhW25dKSk7ZWxzZXtsZXQgbj1PYmplY3Qua2V5cyhlKTtpPUFycmF5KG4ubGVuZ3RoKTtmb3IobGV0IHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspe2xldCBvPW5bcl07aVtyXT10KGVbb10sbyxyLGEmJmFbcl0pfX19ZWxzZSBpPVtdO3JldHVybiBuJiYobltyXT1pKSxpfWZ1bmN0aW9uIGFhKGUsdCl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspe2xldCByPXRbbl07aWYoZChyKSlmb3IobGV0IHQ9MDt0PHIubGVuZ3RoO3QrKyllW3JbdF0ubmFtZV09clt0XS5mbjtlbHNlIHImJihlW3IubmFtZV09ci5rZXk/KC4uLmUpPT57bGV0IHQ9ci5mbiguLi5lKTtyZXR1cm4gdCYmKHQua2V5PXIua2V5KSx0fTpyLmZuKX1yZXR1cm4gZX1mdW5jdGlvbiBvYShlLHQsbixyLGksYSl7aWYobj8/PXt9LFUuY2V8fFUucGFyZW50JiZFaShVLnBhcmVudCkmJlUucGFyZW50LmNlKXtsZXQgZT1hIT1udWxsJiZuLmtleT09bnVsbD9zKHt9LG4se2tleTphfSk6bixpPU9iamVjdC5rZXlzKGUpLmxlbmd0aD4wO3JldHVybiB0IT09ImRlZmF1bHQiJiYoZS5uYW1lPXQpLGVzKCksb3MoRyxudWxsLFtKKGBzbG90YCxlLHImJnIoKSldLGk/LTI6NjQpfWxldCBvPWVbdF07byYmby5fYyYmKG8uX2Q9ITEpO2xldCBjPSRvLmxlbmd0aDtlcygpO2xldCBsO3RyeXtsZXQgaT1vJiZzYShvKG4pKSxzPW4ua2V5fHxhfHxpJiZpLmtleTtsPW9zKEcse2tleToocyYmIXYocyk/czpgXyR7dH1gKSsoIWkmJnI/YF9mYmA6YGApfSxpfHwocj9yKCk6W10pLGkmJmUuXz09PTE/NjQ6LTIpfWNhdGNoKGUpe2ZvcihsZXQgZT0kby5sZW5ndGg7ZT5jO2UtLSl0cygpO3Rocm93IGV9ZmluYWxseXtvJiZvLl9jJiYoby5fZD0hMCl9cmV0dXJuIWkmJmwuc2NvcGVJZCYmKGwuc2xvdFNjb3BlSWRzPVtsLnNjb3BlSWQrYC1zYF0pLGx9ZnVuY3Rpb24gc2EoZSl7cmV0dXJuIGUuc29tZShlPT4hc3MoZSl8fCEoZS50eXBlPT09S3x8ZS50eXBlPT09RyYmIXNhKGUuY2hpbGRyZW4pKSk/ZTpudWxsfWZ1bmN0aW9uIGNhKGUsdCl7bGV0IG49e307Zm9yKGxldCByIGluIGUpblt0JiYvW0EtWl0vLnRlc3Qocik/YG9uOiR7cn1gOm5lKHIpXT1lW3JdO3JldHVybiBufXZhciBsYT1lPT5lP01zKGUpP1dzKGUpOmxhKGUucGFyZW50KTpudWxsLHVhPXMoT2JqZWN0LmNyZWF0ZShudWxsKSx7JDplPT5lLCRlbDplPT5lLnZub2RlLmVsLCRkYXRhOmU9PmUuZGF0YSwkcHJvcHM6ZT0+ZS5wcm9wcywkYXR0cnM6ZT0+ZS5hdHRycywkc2xvdHM6ZT0+ZS5zbG90cywkcmVmczplPT5lLnJlZnMsJHBhcmVudDplPT5sYShlLnBhcmVudCksJHJvb3Q6ZT0+bGEoZS5yb290KSwkaG9zdDplPT5lLmNlLCRlbWl0OmU9PmUuZW1pdCwkb3B0aW9uczplPT5QYShlKSwkZm9yY2VVcGRhdGU6ZT0+ZS5mfHw9KCk9PntVbihlLnVwZGF0ZSl9LCRuZXh0VGljazplPT5lLm58fD1Wbi5iaW5kKGUucHJveHkpLCR3YXRjaDplPT5fci5iaW5kKGUpfSksZGE9KGUsbik9PmUhPT10JiYhZS5fX2lzU2NyaXB0U2V0dXAmJnUoZSxuKSxmYT17Z2V0KHtfOmV9LG4pe2lmKG49PT1gX192X3NraXBgKXJldHVybiEwO2xldHtjdHg6cixzZXR1cFN0YXRlOmksZGF0YTphLHByb3BzOm8sYWNjZXNzQ2FjaGU6cyx0eXBlOmMsYXBwQ29udGV4dDpsfT1lO2lmKG5bMF0hPT1gJGApe2xldCBlPXNbbl07aWYoZSE9PXZvaWQgMClzd2l0Y2goZSl7Y2FzZSAxOnJldHVybiBpW25dO2Nhc2UgMjpyZXR1cm4gYVtuXTtjYXNlIDQ6cmV0dXJuIHJbbl07Y2FzZSAzOnJldHVybiBvW25dfWVsc2UgaWYoZGEoaSxuKSlyZXR1cm4gc1tuXT0xLGlbbl07ZWxzZSBpZihhIT09dCYmdShhLG4pKXJldHVybiBzW25dPTIsYVtuXTtlbHNlIGlmKHUobyxuKSlyZXR1cm4gc1tuXT0zLG9bbl07ZWxzZSBpZihyIT09dCYmdShyLG4pKXJldHVybiBzW25dPTQscltuXTtlbHNlIGthJiYoc1tuXT0wKX1sZXQgZD11YVtuXSxmLHA7aWYoZClyZXR1cm4gbj09PWAkYXR0cnNgJiZ6KGUuYXR0cnMsYGdldGAsYGApLGQoZSk7aWYoKGY9Yy5fX2Nzc01vZHVsZXMpJiYoZj1mW25dKSlyZXR1cm4gZjtpZihyIT09dCYmdShyLG4pKXJldHVybiBzW25dPTQscltuXTtpZihwPWwuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsdShwLG4pKXJldHVybiBwW25dfSxzZXQoe186ZX0sbixyKXtsZXR7ZGF0YTppLHNldHVwU3RhdGU6YSxjdHg6b309ZTtyZXR1cm4gZGEoYSxuKT8oYVtuXT1yLCEwKTppIT09dCYmdShpLG4pPyhpW25dPXIsITApOnUoZS5wcm9wcyxuKXx8blswXT09PWAkYCYmbi5zbGljZSgxKWluIGU/ITE6KG9bbl09ciwhMCl9LGhhcyh7Xzp7ZGF0YTplLHNldHVwU3RhdGU6bixhY2Nlc3NDYWNoZTpyLGN0eDppLGFwcENvbnRleHQ6YSxwcm9wczpvLHR5cGU6c319LGMpe2xldCBsO3JldHVybiEhKHJbY118fGUhPT10JiZjWzBdIT09YCRgJiZ1KGUsYyl8fGRhKG4sYyl8fHUobyxjKXx8dShpLGMpfHx1KHVhLGMpfHx1KGEuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMsYyl8fChsPXMuX19jc3NNb2R1bGVzKSYmbFtjXSl9LGRlZmluZVByb3BlcnR5KGUsdCxuKXtyZXR1cm4gbi5nZXQ9PW51bGw/dShuLGB2YWx1ZWApJiZ0aGlzLnNldChlLHQsbi52YWx1ZSxudWxsKTplLl8uYWNjZXNzQ2FjaGVbdF09MCxSZWZsZWN0LmRlZmluZVByb3BlcnR5KGUsdCxuKX19LHBhPXMoe30sZmEse2dldChlLHQpe2lmKHQhPT1TeW1ib2wudW5zY29wYWJsZXMpcmV0dXJuIGZhLmdldChlLHQsZSl9LGhhcyhlLHQpe3JldHVybiB0WzBdIT09YF9gJiYhUCh0KX19KTtmdW5jdGlvbiBtYSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIGhhKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZ2EoZSl7fWZ1bmN0aW9uIF9hKGUpe31mdW5jdGlvbiB2YSgpe3JldHVybiBudWxsfWZ1bmN0aW9uIHlhKCl7fWZ1bmN0aW9uIGJhKGUsdCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24geGEoKXtyZXR1cm4gQ2EoYHVzZVNsb3RzYCkuc2xvdHN9ZnVuY3Rpb24gU2EoKXtyZXR1cm4gQ2EoYHVzZUF0dHJzYCkuYXR0cnN9ZnVuY3Rpb24gQ2EoZSl7bGV0IHQ9RHMoKTtyZXR1cm4gdC5zZXR1cENvbnRleHR8fD1Vcyh0KX1mdW5jdGlvbiB3YShlKXtyZXR1cm4gZChlKT9lLnJlZHVjZSgoZSx0KT0+KGVbdF09bnVsbCxlKSx7fSk6ZX1mdW5jdGlvbiBUYShlLHQpe2xldCBuPXdhKGUpO2ZvcihsZXQgZSBpbiB0KXtpZihlLnN0YXJ0c1dpdGgoYF9fc2tpcGApKWNvbnRpbnVlO2xldCByPW5bZV07cj9kKHIpfHxnKHIpP3I9bltlXT17dHlwZTpyLGRlZmF1bHQ6dFtlXX06ci5kZWZhdWx0PXRbZV06cj09PW51bGwmJihyPW5bZV09e2RlZmF1bHQ6dFtlXX0pLHImJnRbYF9fc2tpcF8ke2V9YF0mJihyLnNraXBGYWN0b3J5PSEwKX1yZXR1cm4gbn1mdW5jdGlvbiBFYShlLHQpe3JldHVybiFlfHwhdD9lfHx0OmQoZSkmJmQodCk/ZS5jb25jYXQodCk6cyh7fSx3YShlKSx3YSh0KSl9ZnVuY3Rpb24gRGEoZSx0KXtsZXQgbj17fTtmb3IobGV0IHIgaW4gZSl0LmluY2x1ZGVzKHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkobixyLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+ZVtyXX0pO3JldHVybiBufWZ1bmN0aW9uIE9hKGUpe2xldCB0PURzKCksbj1OcyxyPWUoKTtqcygpLG4mJmtzKCExKTtsZXQgaT0oKT0+e0FzKHQpLG4mJmtzKCEwKX0sYT0oKT0+e0RzKCkhPT10JiZ0LnNjb3BlLm9mZigpLGpzKCksbiYma3MoITEpfTtyZXR1cm4gYihyKSYmKHI9ci5jYXRjaChlPT57dGhyb3cgaSgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oYSkpLGV9KSksW3IsKCk9PntpKCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihhKX1dfXZhciBrYT0hMDtmdW5jdGlvbiBBYShlKXtsZXQgdD1QYShlKSxuPWUucHJveHksaT1lLmN0eDtrYT0hMSx0LmJlZm9yZUNyZWF0ZSYmTWEodC5iZWZvcmVDcmVhdGUsZSxgYmNgKTtsZXR7ZGF0YTphLGNvbXB1dGVkOm8sbWV0aG9kczpzLHdhdGNoOmMscHJvdmlkZTpsLGluamVjdDp1LGNyZWF0ZWQ6ZixiZWZvcmVNb3VudDpwLG1vdW50ZWQ6bSxiZWZvcmVVcGRhdGU6aCx1cGRhdGVkOl8sYWN0aXZhdGVkOnYsZGVhY3RpdmF0ZWQ6YixiZWZvcmVEZXN0cm95OngsYmVmb3JlVW5tb3VudDpTLGRlc3Ryb3llZDpDLHVubW91bnRlZDp3LHJlbmRlcjpULHJlbmRlclRyYWNrZWQ6RSxyZW5kZXJUcmlnZ2VyZWQ6RCxlcnJvckNhcHR1cmVkOmVlLHNlcnZlclByZWZldGNoOk8sZXhwb3NlOnRlLGluaGVyaXRBdHRyczprLGNvbXBvbmVudHM6QSxkaXJlY3RpdmVzOm5lLGZpbHRlcnM6an09dDtpZih1JiZqYSh1LGksbnVsbCkscylmb3IobGV0IGUgaW4gcyl7bGV0IHQ9c1tlXTtnKHQpJiYoaVtlXT10LmJpbmQobikpfWlmKGEpe2xldCB0PWEuY2FsbChuLG4pO3kodCkmJihlLmRhdGE9enQodCkpfWlmKGthPSEwLG8pZm9yKGxldCBlIGluIG8pe2xldCB0PW9bZV0sYT1xcyh7Z2V0OmcodCk/dC5iaW5kKG4sbik6Zyh0LmdldCk/dC5nZXQuYmluZChuLG4pOnIsc2V0OiFnKHQpJiZnKHQuc2V0KT90LnNldC5iaW5kKG4pOnJ9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxlLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9PmEudmFsdWUsc2V0OmU9PmEudmFsdWU9ZX0pfWlmKGMpZm9yKGxldCBlIGluIGMpTmEoY1tlXSxpLG4sZSk7aWYobCl7bGV0IGU9ZyhsKT9sLmNhbGwobik6bDtSZWZsZWN0Lm93bktleXMoZSkuZm9yRWFjaCh0PT57c3IodCxlW3RdKX0pfWYmJk1hKGYsZSxgY2ApO2Z1bmN0aW9uIE0oZSx0KXtkKHQpP3QuZm9yRWFjaCh0PT5lKHQuYmluZChuKSkpOnQmJmUodC5iaW5kKG4pKX1pZihNKEJpLHApLE0oVmksbSksTShIaSxoKSxNKFVpLF8pLE0oTWksdiksTShOaSxiKSxNKFlpLGVlKSxNKEppLEUpLE0ocWksRCksTShXaSxTKSxNKEdpLHcpLE0oS2ksTyksZCh0ZSkpe2lmKHRlLmxlbmd0aCl7bGV0IHQ9ZS5leHBvc2VkfHw9e307dGUuZm9yRWFjaChlPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7Z2V0OigpPT5uW2VdLHNldDp0PT5uW2VdPXQsZW51bWVyYWJsZTohMH0pfSl9ZWxzZSBlLmV4cG9zZWR8fD17fX1UJiZlLnJlbmRlcj09PXImJihlLnJlbmRlcj1UKSxrIT1udWxsJiYoZS5pbmhlcml0QXR0cnM9ayksQSYmKGUuY29tcG9uZW50cz1BKSxuZSYmKGUuZGlyZWN0aXZlcz1uZSksTyYmWHIoZSl9ZnVuY3Rpb24gamEoZSx0LG49cil7ZChlKSYmKGU9emEoZSkpO2ZvcihsZXQgbiBpbiBlKXtsZXQgcj1lW25dLGk7aT15KHIpP2BkZWZhdWx0YGluIHI/Y3Ioci5mcm9tfHxuLHIuZGVmYXVsdCwhMCk6Y3Ioci5mcm9tfHxuKTpjcihyKSxWKGkpP09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDooKT0+aS52YWx1ZSxzZXQ6ZT0+aS52YWx1ZT1lfSk6dFtuXT1pfX1mdW5jdGlvbiBNYShlLHQsbil7TW4oZChlKT9lLm1hcChlPT5lLmJpbmQodC5wcm94eSkpOmUuYmluZCh0LnByb3h5KSx0LG4pfWZ1bmN0aW9uIE5hKGUsdCxuLHIpe2xldCBpPXIuaW5jbHVkZXMoYC5gKT92cihuLHIpOigpPT5uW3JdO2lmKF8oZSkpe2xldCBuPXRbZV07ZyhuKSYmaHIoaSxuKX1lbHNlIGlmKGcoZSkpaHIoaSxlLmJpbmQobikpO2Vsc2UgaWYoeShlKSl7aWYoZChlKSllLmZvckVhY2goZT0+TmEoZSx0LG4scikpO2Vsc2V7bGV0IHI9ZyhlLmhhbmRsZXIpP2UuaGFuZGxlci5iaW5kKG4pOnRbZS5oYW5kbGVyXTtnKHIpJiZocihpLHIsZSl9fX1mdW5jdGlvbiBQYShlKXtsZXQgdD1lLnR5cGUse21peGluczpuLGV4dGVuZHM6cn09dCx7bWl4aW5zOmksb3B0aW9uc0NhY2hlOmEsY29uZmlnOntvcHRpb25NZXJnZVN0cmF0ZWdpZXM6b319PWUuYXBwQ29udGV4dCxzPWEuZ2V0KHQpLGM7cmV0dXJuIHM/Yz1zOiFpLmxlbmd0aCYmIW4mJiFyP2M9dDooYz17fSxpLmxlbmd0aCYmaS5mb3JFYWNoKGU9PkZhKGMsZSxvLCEwKSksRmEoYyx0LG8pKSx5KHQpJiZhLnNldCh0LGMpLGN9ZnVuY3Rpb24gRmEoZSx0LG4scj0hMSl7bGV0e21peGluczppLGV4dGVuZHM6YX09dDthJiZGYShlLGEsbiwhMCksaSYmaS5mb3JFYWNoKHQ9PkZhKGUsdCxuLCEwKSk7Zm9yKGxldCBpIGluIHQpaWYoIShyJiZpPT09YGV4cG9zZWApKXtsZXQgcj1JYVtpXXx8biYmbltpXTtlW2ldPXI/cihlW2ldLHRbaV0pOnRbaV19cmV0dXJuIGV9dmFyIElhPXtkYXRhOkxhLHByb3BzOkhhLGVtaXRzOkhhLG1ldGhvZHM6VmEsY29tcHV0ZWQ6VmEsYmVmb3JlQ3JlYXRlOkJhLGNyZWF0ZWQ6QmEsYmVmb3JlTW91bnQ6QmEsbW91bnRlZDpCYSxiZWZvcmVVcGRhdGU6QmEsdXBkYXRlZDpCYSxiZWZvcmVEZXN0cm95OkJhLGJlZm9yZVVubW91bnQ6QmEsZGVzdHJveWVkOkJhLHVubW91bnRlZDpCYSxhY3RpdmF0ZWQ6QmEsZGVhY3RpdmF0ZWQ6QmEsZXJyb3JDYXB0dXJlZDpCYSxzZXJ2ZXJQcmVmZXRjaDpCYSxjb21wb25lbnRzOlZhLGRpcmVjdGl2ZXM6VmEsd2F0Y2g6VWEscHJvdmlkZTpMYSxpbmplY3Q6UmF9O2Z1bmN0aW9uIExhKGUsdCl7cmV0dXJuIHQ/ZT9mdW5jdGlvbigpe3JldHVybiBzKGcoZSk/ZS5jYWxsKHRoaXMsdGhpcyk6ZSxnKHQpP3QuY2FsbCh0aGlzLHRoaXMpOnQpfTp0OmV9ZnVuY3Rpb24gUmEoZSx0KXtyZXR1cm4gVmEoemEoZSksemEodCkpfWZ1bmN0aW9uIHphKGUpe2lmKGQoZSkpe2xldCB0PXt9O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXRbZVtuXV09ZVtuXTtyZXR1cm4gdH1yZXR1cm4gZX1mdW5jdGlvbiBCYShlLHQpe3JldHVybiBlP1suLi5uZXcgU2V0KFtdLmNvbmNhdChlLHQpKV06dH1mdW5jdGlvbiBWYShlLHQpe3JldHVybiBlP3MoT2JqZWN0LmNyZWF0ZShudWxsKSxlLHQpOnR9ZnVuY3Rpb24gSGEoZSx0KXtyZXR1cm4gZT9kKGUpJiZkKHQpP1suLi5uZXcgU2V0KFsuLi5lLC4uLnRdKV06cyhPYmplY3QuY3JlYXRlKG51bGwpLHdhKGUpLHdhKHQ/P3t9KSk6dH1mdW5jdGlvbiBVYShlLHQpe2lmKCFlKXJldHVybiB0O2lmKCF0KXJldHVybiBlO2xldCBuPXMoT2JqZWN0LmNyZWF0ZShudWxsKSxlKTtmb3IobGV0IHIgaW4gdCluW3JdPUJhKGVbcl0sdFtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gV2EoKXtyZXR1cm57YXBwOm51bGwsY29uZmlnOntpc05hdGl2ZVRhZzppLHBlcmZvcm1hbmNlOiExLGdsb2JhbFByb3BlcnRpZXM6e30sb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOnt9LGVycm9ySGFuZGxlcjp2b2lkIDAsd2FybkhhbmRsZXI6dm9pZCAwLGNvbXBpbGVyT3B0aW9uczp7fX0sbWl4aW5zOltdLGNvbXBvbmVudHM6e30sZGlyZWN0aXZlczp7fSxwcm92aWRlczpPYmplY3QuY3JlYXRlKG51bGwpLG9wdGlvbnNDYWNoZTpuZXcgV2Vha01hcCxwcm9wc0NhY2hlOm5ldyBXZWFrTWFwLGVtaXRzQ2FjaGU6bmV3IFdlYWtNYXB9fXZhciBHYT0wO2Z1bmN0aW9uIEthKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4scj1udWxsKXtnKG4pfHwobj1zKHt9LG4pKSxyIT1udWxsJiYheShyKSYmKHI9bnVsbCk7bGV0IGk9V2EoKSxhPW5ldyBXZWFrU2V0LG89W10sYz0hMSxsPWkuYXBwPXtfdWlkOkdhKyssX2NvbXBvbmVudDpuLF9wcm9wczpyLF9jb250YWluZXI6bnVsbCxfY29udGV4dDppLF9pbnN0YW5jZTpudWxsLHZlcnNpb246UXMsZ2V0IGNvbmZpZygpe3JldHVybiBpLmNvbmZpZ30sc2V0IGNvbmZpZyhlKXt9LHVzZShlLC4uLnQpe3JldHVybiBhLmhhcyhlKXx8KGUmJmcoZS5pbnN0YWxsKT8oYS5hZGQoZSksZS5pbnN0YWxsKGwsLi4udCkpOmcoZSkmJihhLmFkZChlKSxlKGwsLi4udCkpKSxsfSxtaXhpbihlKXtyZXR1cm4gaS5taXhpbnMuaW5jbHVkZXMoZSl8fGkubWl4aW5zLnB1c2goZSksbH0sY29tcG9uZW50KGUsdCl7cmV0dXJuIHQ/KGkuY29tcG9uZW50c1tlXT10LGwpOmkuY29tcG9uZW50c1tlXX0sZGlyZWN0aXZlKGUsdCl7cmV0dXJuIHQ/KGkuZGlyZWN0aXZlc1tlXT10LGwpOmkuZGlyZWN0aXZlc1tlXX0sbW91bnQoYSxvLHMpe2lmKCFjKXtsZXQgdT1sLl9jZVZOb2RlfHxKKG4scik7cmV0dXJuIHUuYXBwQ29udGV4dD1pLHM9PT0hMD9zPWBzdmdgOnM9PT0hMSYmKHM9dm9pZCAwKSxvJiZ0P3QodSxhKTplKHUsYSxzKSxjPSEwLGwuX2NvbnRhaW5lcj1hLGEuX192dWVfYXBwX189bCxXcyh1LmNvbXBvbmVudCl9fSxvblVubW91bnQoZSl7by5wdXNoKGUpfSx1bm1vdW50KCl7YyYmKE1uKG8sbC5faW5zdGFuY2UsMTYpLGUobnVsbCxsLl9jb250YWluZXIpLGRlbGV0ZSBsLl9jb250YWluZXIuX192dWVfYXBwX18pfSxwcm92aWRlKGUsdCl7cmV0dXJuIGkucHJvdmlkZXNbZV09dCxsfSxydW5XaXRoQ29udGV4dChlKXtsZXQgdD1xYTtxYT1sO3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7cWE9dH19fTtyZXR1cm4gbH19dmFyIHFhPW51bGw7ZnVuY3Rpb24gSmEoZSxuLHI9dCl7bGV0IGk9RHMoKSxhPU8obiksbz1rKG4pLHM9WWEoZSxhKSxjPWNuKChzLGMpPT57bGV0IGwsdT10LGQ7cmV0dXJuIG1yKCgpPT57bGV0IHQ9ZVthXTtqKGwsdCkmJihsPXQsYygpKX0pLHtnZXQoKXtyZXR1cm4gcygpLHIuZ2V0P3IuZ2V0KGwpOmx9LHNldChlKXtsZXQgcz1yLnNldD9yLnNldChlKTplO2lmKCFqKHMsbCkmJiEodSE9PXQmJmooZSx1KSkpcmV0dXJuO2xldCBmPWkudm5vZGUucHJvcHMscD0hIShmJiYobiBpbiBmfHxhIGluIGZ8fG8gaW4gZikmJihgb25VcGRhdGU6JHtufWBpbiBmfHxgb25VcGRhdGU6JHthfWBpbiBmfHxgb25VcGRhdGU6JHtvfWBpbiBmKSk7cHx8KGw9ZSxjKCkpLGkuZW1pdChgdXBkYXRlOiR7bn1gLHMpLGooZSx1KSYmKGooZSxzKSYmIWoocyxkKXx8cCYmdSE9PXQmJiFqKHMsbCkpJiZjKCksdT1lLGQ9c319fSk7cmV0dXJuIGNbU3ltYm9sLml0ZXJhdG9yXT0oKT0+e2xldCBlPTA7cmV0dXJue25leHQoKXtyZXR1cm4gZTwyP3t2YWx1ZTplKys/c3x8dDpjLGRvbmU6ITF9Ontkb25lOiEwfX19fSxjfXZhciBZYT0oZSx0KT0+dD09PWBtb2RlbFZhbHVlYHx8dD09PWBtb2RlbC12YWx1ZWA/ZS5tb2RlbE1vZGlmaWVyczplW2Ake3R9TW9kaWZpZXJzYF18fGVbYCR7Tyh0KX1Nb2RpZmllcnNgXXx8ZVtgJHtrKHQpfU1vZGlmaWVyc2BdO2Z1bmN0aW9uIFhhKGUsbiwuLi5yKXtpZihlLmlzVW5tb3VudGVkKXJldHVybjtsZXQgaT1lLnZub2RlLnByb3BzfHx0LGE9cixvPW4uc3RhcnRzV2l0aChgdXBkYXRlOmApLHM9byYmWWEoaSxuLnNsaWNlKDcpKTtzJiYocy50cmltJiYoYT1yLm1hcChlPT5fKGUpP2UudHJpbSgpOmUpKSxzLm51bWJlciYmKGE9ci5tYXAocmUpKSk7bGV0IGMsbD1pW2M9bmUobildfHxpW2M9bmUoTyhuKSldOyFsJiZvJiYobD1pW2M9bmUoayhuKSldKSxsJiZNbihsLGUsNixhKTtsZXQgdT1pW2MrYE9uY2VgXTtpZih1KXtpZighZS5lbWl0dGVkKWUuZW1pdHRlZD17fTtlbHNlIGlmKGUuZW1pdHRlZFtjXSlyZXR1cm47ZS5lbWl0dGVkW2NdPSEwLE1uKHUsZSw2LGEpfX12YXIgWmE9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gUWEoZSx0LG49ITEpe2xldCByPW4/WmE6dC5lbWl0c0NhY2hlLGk9ci5nZXQoZSk7aWYoaSE9PXZvaWQgMClyZXR1cm4gaTtsZXQgYT1lLmVtaXRzLG89e30sYz0hMTtpZighZyhlKSl7bGV0IHI9ZT0+e2xldCBuPVFhKGUsdCwhMCk7biYmKGM9ITAscyhvLG4pKX07IW4mJnQubWl4aW5zLmxlbmd0aCYmdC5taXhpbnMuZm9yRWFjaChyKSxlLmV4dGVuZHMmJnIoZS5leHRlbmRzKSxlLm1peGlucyYmZS5taXhpbnMuZm9yRWFjaChyKX1yZXR1cm4hYSYmIWM/KHkoZSkmJnIuc2V0KGUsbnVsbCksbnVsbCk6KGQoYSk/YS5mb3JFYWNoKGU9Pm9bZV09bnVsbCk6cyhvLGEpLHkoZSkmJnIuc2V0KGUsbyksbyl9ZnVuY3Rpb24gJGEoZSx0KXtyZXR1cm4hZXx8IWEodCk/ITE6KHQ9dC5zbGljZSgyKSx0PXQ9PT1gT25jZWA/dDp0LnJlcGxhY2UoL09uY2UkLyxgYCksdShlLHRbMF0udG9Mb3dlckNhc2UoKSt0LnNsaWNlKDEpKXx8dShlLGsodCkpfHx1KGUsdCkpfWZ1bmN0aW9uIGVvKGUpe2xldHt0eXBlOnQsdm5vZGU6bixwcm94eTpyLHdpdGhQcm94eTppLHByb3BzT3B0aW9uczpbYV0sc2xvdHM6cyxhdHRyczpjLGVtaXQ6bCxyZW5kZXI6dSxyZW5kZXJDYWNoZTpkLHByb3BzOmYsZGF0YTpwLHNldHVwU3RhdGU6bSxjdHg6aCxpbmhlcml0QXR0cnM6Z309ZSxfPWVyKGUpLHYseTt0cnl7aWYobi5zaGFwZUZsYWcmNCl7bGV0IGU9aXx8cix0PWU7dj15cyh1LmNhbGwodCxlLGQsZixtLHAsaCkpLHk9Y31lbHNle2xldCBlPXQ7dj15cyhlLmxlbmd0aD4xP2UoZix7YXR0cnM6YyxzbG90czpzLGVtaXQ6bH0pOmUoZixudWxsKSkseT10LnByb3BzP2M6bm8oYyl9fWNhdGNoKHQpeyRvLmxlbmd0aD0wLE5uKHQsZSwxKSx2PUooSyl9bGV0IGI9djtpZih5JiZnIT09ITEpe2xldCBlPU9iamVjdC5rZXlzKHkpLHtzaGFwZUZsYWc6dH09YjtlLmxlbmd0aCYmdCY3JiYoYSYmZS5zb21lKG8pJiYoeT1ybyh5LGEpKSxiPWhzKGIseSwhMSwhMCkpfXJldHVybiBuLmRpcnMmJihiPWhzKGIsbnVsbCwhMSwhMCksYi5kaXJzPWIuZGlycz9iLmRpcnMuY29uY2F0KG4uZGlycyk6bi5kaXJzKSxuLnRyYW5zaXRpb24mJktyKHhyKGIudHlwZSkmJkdyKGIpfHxiLG4udHJhbnNpdGlvbiksdj1iLGVyKF8pLHZ9ZnVuY3Rpb24gdG8oZSx0PSEwKXtsZXQgbjtmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IHI9ZVt0XTtpZihzcyhyKSl7aWYoci50eXBlIT09S3x8ci5jaGlsZHJlbj09PWB2LWlmYCl7aWYobilyZXR1cm47bj1yfX1lbHNlIHJldHVybn1yZXR1cm4gbn12YXIgbm89ZT0+e2xldCB0O2ZvcihsZXQgbiBpbiBlKShuPT09YGNsYXNzYHx8bj09PWBzdHlsZWB8fGEobikpJiYoKHR8fD17fSlbbl09ZVtuXSk7cmV0dXJuIHR9LHJvPShlLHQpPT57bGV0IG49e307Zm9yKGxldCByIGluIGUpKCFvKHIpfHwhKHIuc2xpY2UoOSlpbiB0KSkmJihuW3JdPWVbcl0pO3JldHVybiBufTtmdW5jdGlvbiBpbyhlLHQsbil7bGV0e3Byb3BzOnIsY2hpbGRyZW46aSxjb21wb25lbnQ6YX09ZSx7cHJvcHM6byxjaGlsZHJlbjpzLHBhdGNoRmxhZzpjfT10LGw9YS5lbWl0c09wdGlvbnM7aWYodC5kaXJzfHx0LnRyYW5zaXRpb24pcmV0dXJuITA7aWYobiYmYz49MCl7aWYoYyYxMDI0KXJldHVybiEwO2lmKGMmMTYpcmV0dXJuIHI/YW8ocixvLGwpOiEhbztpZihjJjgpe2xldCBlPXQuZHluYW1pY1Byb3BzO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKXtsZXQgbj1lW3RdO2lmKG9vKG8scixuKSYmISRhKGwsbikpcmV0dXJuITB9fX1lbHNlIHJldHVybihpfHxzKSYmKCFzfHwhcy4kc3RhYmxlKT8hMDpyPT09bz8hMTpyPyFvfHxhbyhyLG8sbCk6ISFvO3JldHVybiExfWZ1bmN0aW9uIGFvKGUsdCxuKXtsZXQgcj1PYmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PU9iamVjdC5rZXlzKGUpLmxlbmd0aClyZXR1cm4hMDtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7bGV0IGE9cltpXTtpZihvbyh0LGUsYSkmJiEkYShuLGEpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIG9vKGUsdCxuKXtsZXQgcj1lW25dLGk9dFtuXTtyZXR1cm4gbj09PWBzdHlsZWAmJnkocikmJnkoaSk/IWdlKHIsaSk6ciE9PWl9ZnVuY3Rpb24gc28oe3Zub2RlOmUscGFyZW50OnQsc3VzcGVuc2U6bn0scil7Zm9yKDt0Oyl7bGV0IG49dC5zdWJUcmVlO2lmKG4uc3VzcGVuc2UmJm4uc3VzcGVuc2UuYWN0aXZlQnJhbmNoPT09ZSYmKG4uc3VzcGVuc2Uudm5vZGUuZWw9bi5lbD1yLGU9biksbj09PWUpKGU9dC52bm9kZSkuZWw9cix0PXQucGFyZW50O2Vsc2UgYnJlYWt9biYmbi5hY3RpdmVCcmFuY2g9PT1lJiYobi52bm9kZS5lbD1yKX12YXIgY289e30sbG89KCk9Pk9iamVjdC5jcmVhdGUoY28pLHVvPWU9Pk9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PWNvO2Z1bmN0aW9uIGZvKGUsdCxuLHI9ITEpe2xldCBpPXt9LGE9bG8oKTtlLnByb3BzRGVmYXVsdHM9T2JqZWN0LmNyZWF0ZShudWxsKSxtbyhlLHQsaSxhKTtmb3IobGV0IHQgaW4gZS5wcm9wc09wdGlvbnNbMF0pdCBpbiBpfHwoaVt0XT12b2lkIDApO2UucHJvcHM9bj9yP2k6QnQoaSk6ZS50eXBlLnByb3BzP2k6YSxlLmF0dHJzPWF9ZnVuY3Rpb24gcG8oZSx0LG4scil7bGV0e3Byb3BzOmksYXR0cnM6YSx2bm9kZTp7cGF0Y2hGbGFnOm99fT1lLHM9QihpKSxbY109ZS5wcm9wc09wdGlvbnMsbD0hMTtpZigocnx8bz4wKSYmIShvJjE2KSl7aWYobyY4KXtsZXQgbj1lLnZub2RlLmR5bmFtaWNQcm9wcztmb3IobGV0IHI9MDtyPG4ubGVuZ3RoO3IrKyl7bGV0IG89bltyXTtpZigkYShlLmVtaXRzT3B0aW9ucyxvKSljb250aW51ZTtsZXQgZD10W29dO2lmKGMpe2lmKHUoYSxvKSlkIT09YVtvXSYmKGFbb109ZCxsPSEwKTtlbHNle2xldCB0PU8obyk7aVt0XT1obyhjLHMsdCxkLGUsITEpfX1lbHNlIGQhPT1hW29dJiYoYVtvXT1kLGw9ITApfX19ZWxzZXttbyhlLHQsaSxhKSYmKGw9ITApO2xldCByO2ZvcihsZXQgYSBpbiBzKSghdHx8IXUodCxhKSYmKChyPWsoYSkpPT09YXx8IXUodCxyKSkpJiYoYz9uJiYoblthXSE9PXZvaWQgMHx8bltyXSE9PXZvaWQgMCkmJihpW2FdPWhvKGMscyxhLHZvaWQgMCxlLCEwKSk6ZGVsZXRlIGlbYV0pO2lmKGEhPT1zKWZvcihsZXQgZSBpbiBhKSghdHx8IXUodCxlKSkmJihkZWxldGUgYVtlXSxsPSEwKX1sJiZudChlLmF0dHJzLGBzZXRgLGBgKX1mdW5jdGlvbiBtbyhlLG4scixpKXtsZXRbYSxvXT1lLnByb3BzT3B0aW9ucyxzPSExLGM7aWYobilmb3IobGV0IHQgaW4gbil7aWYoRSh0KSljb250aW51ZTtsZXQgbD1uW3RdLGQ7YSYmdShhLGQ9Tyh0KSk/IW98fCFvLmluY2x1ZGVzKGQpP3JbZF09bDooY3x8PXt9KVtkXT1sOiRhKGUuZW1pdHNPcHRpb25zLHQpfHwoISh0IGluIGkpfHxsIT09aVt0XSkmJihpW3RdPWwscz0hMCl9aWYobyl7bGV0IG49QihyKSxpPWN8fHQ7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBzPW9bdF07cltzXT1obyhhLG4scyxpW3NdLGUsIXUoaSxzKSl9fXJldHVybiBzfWZ1bmN0aW9uIGhvKGUsdCxuLHIsaSxhKXtsZXQgbz1lW25dO2lmKG8hPW51bGwpe2xldCBlPXUobyxgZGVmYXVsdGApO2lmKGUmJnI9PT12b2lkIDApe2xldCBlPW8uZGVmYXVsdDtpZihvLnR5cGUhPT1GdW5jdGlvbiYmIW8uc2tpcEZhY3RvcnkmJmcoZSkpe2xldHtwcm9wc0RlZmF1bHRzOmF9PWk7aWYobiBpbiBhKXI9YVtuXTtlbHNle2xldCBvPUFzKGkpO3I9YVtuXT1lLmNhbGwobnVsbCx0KSxvKCl9fWVsc2Ugcj1lO2kuY2UmJmkuY2UuX3NldFByb3AobixyKX1vWzBdJiYoYSYmIWU/cj0hMTpvWzFdJiYocj09PWBgfHxyPT09ayhuKSkmJihyPSEwKSl9cmV0dXJuIHJ9dmFyIGdvPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIF9vKGUscixpPSExKXtsZXQgYT1pP2dvOnIucHJvcHNDYWNoZSxvPWEuZ2V0KGUpO2lmKG8pcmV0dXJuIG87bGV0IGM9ZS5wcm9wcyxsPXt9LGY9W10scD0hMTtpZighZyhlKSl7bGV0IHQ9ZT0+e3A9ITA7bGV0W3Qsbl09X28oZSxyLCEwKTtzKGwsdCksbiYmZi5wdXNoKC4uLm4pfTshaSYmci5taXhpbnMubGVuZ3RoJiZyLm1peGlucy5mb3JFYWNoKHQpLGUuZXh0ZW5kcyYmdChlLmV4dGVuZHMpLGUubWl4aW5zJiZlLm1peGlucy5mb3JFYWNoKHQpfWlmKCFjJiYhcClyZXR1cm4geShlKSYmYS5zZXQoZSxuKSxuO2lmKGQoYykpZm9yKGxldCBlPTA7ZTxjLmxlbmd0aDtlKyspe2xldCBuPU8oY1tlXSk7dm8obikmJihsW25dPXQpfWVsc2UgaWYoYylmb3IobGV0IGUgaW4gYyl7bGV0IHQ9TyhlKTtpZih2byh0KSl7bGV0IG49Y1tlXSxyPWxbdF09ZChuKXx8ZyhuKT97dHlwZTpufTpzKHt9LG4pLGk9ci50eXBlLGE9ITEsbz0hMDtpZihkKGkpKWZvcihsZXQgZT0wO2U8aS5sZW5ndGg7KytlKXtsZXQgdD1pW2VdLG49Zyh0KSYmdC5uYW1lO2lmKG49PT1gQm9vbGVhbmApe2E9ITA7YnJlYWt9bj09PWBTdHJpbmdgJiYobz0hMSl9ZWxzZSBhPWcoaSkmJmkubmFtZT09PWBCb29sZWFuYDtyWzBdPWEsclsxXT1vLChhfHx1KHIsYGRlZmF1bHRgKSkmJmYucHVzaCh0KX19bGV0IG09W2wsZl07cmV0dXJuIHkoZSkmJmEuc2V0KGUsbSksbX1mdW5jdGlvbiB2byhlKXtyZXR1cm4gZVswXSE9PWAkYCYmIUUoZSl9dmFyIHlvPWU9PmU9PT1gX2B8fGU9PT1gX2N0eGB8fGU9PT1gJHN0YWJsZWAsYm89ZT0+ZChlKT9lLm1hcCh5cyk6W3lzKGUpXSx4bz0oZSx0LG4pPT57aWYodC5fbilyZXR1cm4gdDtsZXQgcj1pcigoLi4uZSk9PmJvKHQoLi4uZSkpLG4pO3JldHVybiByLl9jPSExLHJ9LFNvPShlLHQsbik9PntsZXQgcj1lLl9jdHg7Zm9yKGxldCBuIGluIGUpe2lmKHlvKG4pKWNvbnRpbnVlO2xldCBpPWVbbl07aWYoZyhpKSl0W25dPXhvKG4saSxyKTtlbHNlIGlmKGkhPW51bGwpe2xldCBlPWJvKGkpO3Rbbl09KCk9PmV9fX0sQ289KGUsdCk9PntsZXQgbj1ibyh0KTtlLnNsb3RzLmRlZmF1bHQ9KCk9Pm59LHdvPShlLHQsbik9Pntmb3IobGV0IHIgaW4gdCkobnx8IXlvKHIpKSYmKGVbcl09dFtyXSl9LFRvPShlLHQsbik9PntsZXQgcj1lLnNsb3RzPWxvKCk7aWYoZS52bm9kZS5zaGFwZUZsYWcmMzIpe2xldCBlPXQuXztlPyh3byhyLHQsbiksbiYmTihyLGBfYCxlLCEwKSk6U28odCxyKX1lbHNlIHQmJkNvKGUsdCl9LEVvPShlLG4scik9PntsZXR7dm5vZGU6aSxzbG90czphfT1lLG89ITAscz10O2lmKGkuc2hhcGVGbGFnJjMyKXtsZXQgZT1uLl87ZT9yJiZlPT09MT9vPSExOndvKGEsbixyKToobz0hbi4kc3RhYmxlLFNvKG4sYSkpLHM9bn1lbHNlIG4mJihDbyhlLG4pLHM9e2RlZmF1bHQ6MX0pO2lmKG8pZm9yKGxldCBlIGluIGEpIXlvKGUpJiZzW2VdPT1udWxsJiZkZWxldGUgYVtlXX0sVz1KbztmdW5jdGlvbiBEbyhlKXtyZXR1cm4ga28oZSl9ZnVuY3Rpb24gT28oZSl7cmV0dXJuIGtvKGUsY2kpfWZ1bmN0aW9uIGtvKGUsaSl7bGV0IGE9b2UoKTthLl9fVlVFX189ITA7bGV0e2luc2VydDpvLHJlbW92ZTpzLHBhdGNoUHJvcDpjLGNyZWF0ZUVsZW1lbnQ6bCxjcmVhdGVUZXh0OnUsY3JlYXRlQ29tbWVudDpkLHNldFRleHQ6ZixzZXRFbGVtZW50VGV4dDpwLHBhcmVudE5vZGU6bSxuZXh0U2libGluZzpoLHNldFNjb3BlSWQ6Zz1yLGluc2VydFN0YXRpY0NvbnRlbnQ6X309ZSx2PShlLHQsbixyPW51bGwsaT1udWxsLGE9bnVsbCxvPXZvaWQgMCxzPW51bGwsYz0hIXQuZHluYW1pY0NoaWxkcmVuKT0+e2lmKGU9PT10KXJldHVybjtlJiYhY3MoZSx0KSYmKHI9ZmUoZSksY2UoZSxpLGEsITApLGU9bnVsbCksdC5wYXRjaEZsYWc9PT0tMiYmKGM9ITEsdC5keW5hbWljQ2hpbGRyZW49bnVsbCk7bGV0e3R5cGU6bCxyZWY6dSxzaGFwZUZsYWc6ZH09dDtzd2l0Y2gobCl7Y2FzZSBabzp5KGUsdCxuLHIpO2JyZWFrO2Nhc2UgSzpiKGUsdCxuLHIpO2JyZWFrO2Nhc2UgUW86ZT8/eCh0LG4scixvKTticmVhaztjYXNlIEc6QShlLHQsbixyLGksYSxvLHMsYyk7YnJlYWs7ZGVmYXVsdDpkJjE/dyhlLHQsbixyLGksYSxvLHMsYyk6ZCY2P25lKGUsdCxuLHIsaSxhLG8scyxjKTooZCY2NHx8ZCYxMjgpJiZsLnByb2Nlc3MoZSx0LG4scixpLGEsbyxzLGMsaGUpfXUhPW51bGwmJmk/ZWkodSxlJiZlLnJlZixhLHR8fGUsIXQpOnU9PW51bGwmJmUmJmUucmVmIT1udWxsJiZlaShlLnJlZixudWxsLGEsZSwhMCl9LHk9KGUsdCxuLHIpPT57aWYoZT09bnVsbClvKHQuZWw9dSh0LmNoaWxkcmVuKSxuLHIpO2Vsc2V7bGV0IG49dC5lbD1lLmVsO3QuY2hpbGRyZW4hPT1lLmNoaWxkcmVuJiZmKG4sdC5jaGlsZHJlbil9fSxiPShlLHQsbixyKT0+e2U9PW51bGw/byh0LmVsPWQodC5jaGlsZHJlbnx8YGApLG4scik6dC5lbD1lLmVsfSx4PShlLHQsbixyKT0+e1tlLmVsLGUuYW5jaG9yXT1fKGUuY2hpbGRyZW4sdCxuLHIsZS5lbCxlLmFuY2hvcil9LFM9KHtlbDplLGFuY2hvcjp0fSxuLHIpPT57bGV0IGk7Zm9yKDtlJiZlIT09dDspaT1oKGUpLG8oZSxuLHIpLGU9aTtvKHQsbixyKX0sQz0oe2VsOmUsYW5jaG9yOnR9KT0+e2xldCBuO2Zvcig7ZSYmZSE9PXQ7KW49aChlKSxzKGUpLGU9bjtzKHQpfSx3PShlLHQsbixyLGksYSxvLHMsYyk9PntpZih0LnR5cGU9PT1gc3ZnYD9vPWBzdmdgOnQudHlwZT09PWBtYXRoYCYmKG89YG1hdGhtbGApLGU9PW51bGwpVCh0LG4scixpLGEsbyxzLGMpO2Vsc2V7bGV0IG49ZS5lbCYmZS5lbC5faXNWdWVDRT9lLmVsOm51bGw7dHJ5e24mJm4uX2JlZ2luUGF0Y2goKSxPKGUsdCxpLGEsbyxzLGMpfWZpbmFsbHl7biYmbi5fZW5kUGF0Y2goKX19fSxUPShlLHQsbixyLGksYSxzLHUpPT57bGV0IGQsZix7cHJvcHM6bSxzaGFwZUZsYWc6aCx0cmFuc2l0aW9uOmcsZGlyczpffT1lO2lmKGQ9ZS5lbD1sKGUudHlwZSxhLG0mJm0uaXMsbSksaCY4P3AoZCxlLmNoaWxkcmVuKTpoJjE2JiZlZShlLmNoaWxkcmVuLGQsbnVsbCxyLGksQW8oZSxhKSxzLHUpLF8mJm9yKGUsbnVsbCxyLGBjcmVhdGVkYCksRChkLGUsZS5zY29wZUlkLHMsciksbSl7Zm9yKGxldCBlIGluIG0pZSE9PWB2YWx1ZWAmJiFFKGUpJiZjKGQsZSxudWxsLG1bZV0sYSxyKTtgdmFsdWVgaW4gbSYmYyhkLGB2YWx1ZWAsbnVsbCxtLnZhbHVlLGEpLChmPW0ub25Wbm9kZUJlZm9yZU1vdW50KSYmQ3MoZixyLGUpfV8mJm9yKGUsbnVsbCxyLGBiZWZvcmVNb3VudGApO2xldCB2PU1vKGksZyk7diYmZy5iZWZvcmVFbnRlcihkKSxvKGQsdCxuKSwoKGY9bSYmbS5vblZub2RlTW91bnRlZCl8fHZ8fF8pJiZXKCgpPT57dHJ5e2YmJkNzKGYscixlKSx2JiZnLmVudGVyKGQpLF8mJm9yKGUsbnVsbCxyLGBtb3VudGVkYCl9ZmluYWxseXt9fSxpKX0sRD0oZSx0LG4scixpKT0+e2lmKG4mJmcoZSxuKSxyKWZvcihsZXQgdD0wO3Q8ci5sZW5ndGg7dCsrKWcoZSxyW3RdKTtpZihpKXtsZXQgbj1pLnN1YlRyZWU7aWYodD09PW58fFJvKG4udHlwZSkmJihuLnNzQ29udGVudD09PXR8fG4uc3NGYWxsYmFjaz09PXQpKXtsZXQgdD1pLnZub2RlO0QoZSx0LHQuc2NvcGVJZCx0LnNsb3RTY29wZUlkcyxpLnBhcmVudCl9fX0sZWU9KGUsdCxuLHIsaSxhLG8scyxjPTApPT57Zm9yKGxldCBsPWM7bDxlLmxlbmd0aDtsKyspe2xldCBjPWVbbF09cz9icyhlW2xdKTp5cyhlW2xdKTt2KG51bGwsYyx0LG4scixpLGEsbyxzKX19LE89KGUsbixyLGksYSxvLHMpPT57bGV0IGw9bi5lbD1lLmVsLHtwYXRjaEZsYWc6dSxkeW5hbWljQ2hpbGRyZW46ZCxkaXJzOmZ9PW47dXw9ZS5wYXRjaEZsYWcmMTY7bGV0IG09ZS5wcm9wc3x8dCxoPW4ucHJvcHN8fHQsZztpZihyJiZqbyhyLCExKSwoZz1oLm9uVm5vZGVCZWZvcmVVcGRhdGUpJiZDcyhnLHIsbixlKSxmJiZvcihuLGUscixgYmVmb3JlVXBkYXRlYCksciYmam8ociwhMCksZCYmKCFlLmR5bmFtaWNDaGlsZHJlbnx8ZS5keW5hbWljQ2hpbGRyZW4ubGVuZ3RoIT09ZC5sZW5ndGgpJiYodT0wLHM9ITEsZD1udWxsKSwobS5pbm5lckhUTUwmJmguaW5uZXJIVE1MPT1udWxsfHxtLnRleHRDb250ZW50JiZoLnRleHRDb250ZW50PT1udWxsKSYmcChsLGBgKSxkP3RlKGUuZHluYW1pY0NoaWxkcmVuLGQsbCxyLGksQW8obixhKSxvKTpzfHxhZShlLG4sbCxudWxsLHIsaSxBbyhuLGEpLG8sITEpLHU+MCl7aWYodSYxNilrKGwsbSxoLHIsYSk7ZWxzZSBpZih1JjImJm0uY2xhc3MhPT1oLmNsYXNzJiZjKGwsYGNsYXNzYCxudWxsLGguY2xhc3MsYSksdSY0JiZjKGwsYHN0eWxlYCxtLnN0eWxlLGguc3R5bGUsYSksdSY4KXtsZXQgZT1uLmR5bmFtaWNQcm9wcztmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKyl7bGV0IG49ZVt0XSxpPW1bbl0sbz1oW25dOyhvIT09aXx8bj09PWB2YWx1ZWApJiZjKGwsbixpLG8sYSxyKX19dSYxJiZlLmNoaWxkcmVuIT09bi5jaGlsZHJlbiYmcChsLG4uY2hpbGRyZW4pfWVsc2UhcyYmZD09bnVsbCYmayhsLG0saCxyLGEpOygoZz1oLm9uVm5vZGVVcGRhdGVkKXx8ZikmJlcoKCk9PntnJiZDcyhnLHIsbixlKSxmJiZvcihuLGUscixgdXBkYXRlZGApfSxpKX0sdGU9KGUsdCxuLHIsaSxhLG8pPT57Zm9yKGxldCBzPTA7czx0Lmxlbmd0aDtzKyspe2xldCBjPWVbc10sbD10W3NdLHU9Yy5lbCYmKGMudHlwZT09PUd8fCFjcyhjLGwpfHxjLnNoYXBlRmxhZyYxOTgpP20oYy5lbCk6bjt2KGMsbCx1LG51bGwscixpLGEsbywhMCl9fSxrPShlLG4scixpLGEpPT57aWYobiE9PXIpe2lmKG4hPT10KWZvcihsZXQgdCBpbiBuKSFFKHQpJiYhKHQgaW4gcikmJmMoZSx0LG5bdF0sbnVsbCxhLGkpO2ZvcihsZXQgdCBpbiByKXtpZihFKHQpKWNvbnRpbnVlO2xldCBvPXJbdF0scz1uW3RdO28hPT1zJiZ0IT09YHZhbHVlYCYmYyhlLHQscyxvLGEsaSl9YHZhbHVlYGluIHImJmMoZSxgdmFsdWVgLG4udmFsdWUsci52YWx1ZSxhKX19LEE9KGUsdCxuLHIsaSxhLHMsYyxsKT0+e2xldCBkPXQuZWw9ZT9lLmVsOnUoYGApLGY9dC5hbmNob3I9ZT9lLmFuY2hvcjp1KGBgKSx7cGF0Y2hGbGFnOnAsZHluYW1pY0NoaWxkcmVuOm0sc2xvdFNjb3BlSWRzOmh9PXQ7aCYmKGM9Yz9jLmNvbmNhdChoKTpoKSxlPT1udWxsPyhvKGQsbixyKSxvKGYsbixyKSxlZSh0LmNoaWxkcmVufHxbXSxuLGYsaSxhLHMsYyxsKSk6cD4wJiZwJjY0JiZtJiZlLmR5bmFtaWNDaGlsZHJlbiYmZS5keW5hbWljQ2hpbGRyZW4ubGVuZ3RoPT09bS5sZW5ndGg/KHRlKGUuZHluYW1pY0NoaWxkcmVuLG0sbixpLGEscyxjKSwodC5rZXkhPW51bGx8fGkmJnQ9PT1pLnN1YlRyZWUpJiZObyhlLHQsITApKTphZShlLHQsbixmLGksYSxzLGMsbCl9LG5lPShlLHQsbixyLGksYSxvLHMsYyk9Pnt0LnNsb3RTY29wZUlkcz1zLGU9PW51bGw/dC5zaGFwZUZsYWcmNTEyP2kuY3R4LmFjdGl2YXRlKHQsbixyLG8sYyk6aih0LG4scixpLGEsbyxjKTpOKGUsdCxjKX0saj0oZSx0LG4scixpLGEsbyk9PntsZXQgcz1lLmNvbXBvbmVudD1FcyhlLHIsaSk7aWYoa2koZSkmJihzLmN0eC5yZW5kZXJlcj1oZSksUHMocywhMSxvKSxzLmFzeW5jRGVwKXtpZihpJiZpLnJlZ2lzdGVyRGVwKHMscmUsbyksIWUuZWwpe2xldCByPXMuc3ViVHJlZT1KKEspO2IobnVsbCxyLHQsbiksZS5wbGFjZWhvbGRlcj1yLmVsfX1lbHNlIHJlKHMsZSx0LG4saSxhLG8pfSxOPShlLHQsbik9PntsZXQgcj10LmNvbXBvbmVudD1lLmNvbXBvbmVudDtpZihpbyhlLHQsbikpe2lmKHIuYXN5bmNEZXAmJiFyLmFzeW5jUmVzb2x2ZWQpe2llKHIsdCxuKTtyZXR1cm59ci5uZXh0PXQsci51cGRhdGUoKX1lbHNlIHQuZWw9ZS5lbCxyLnZub2RlPXR9LHJlPShlLHQsbixyLGksYSxvKT0+e2xldCBzPSgpPT57aWYoZS5pc01vdW50ZWQpe2xldHtuZXh0OnQsYnU6bix1OnIscGFyZW50OnMsdm5vZGU6Y309ZTt7bGV0IG49Rm8oZSk7aWYobil7dCYmKHQuZWw9Yy5lbCxpZShlLHQsbykpLG4uYXN5bmNEZXAudGhlbigoKT0+e1coKCk9PntlLmlzVW5tb3VudGVkfHxsKCl9LGkpfSk7cmV0dXJufX1sZXQgdT10LGQ7am8oZSwhMSksdD8odC5lbD1jLmVsLGllKGUsdCxvKSk6dD1jLG4mJk0obiksKGQ9dC5wcm9wcyYmdC5wcm9wcy5vblZub2RlQmVmb3JlVXBkYXRlKSYmQ3MoZCxzLHQsYyksam8oZSwhMCk7bGV0IGY9ZW8oZSkscD1lLnN1YlRyZWU7ZS5zdWJUcmVlPWYsdihwLGYsbShwLmVsKSxmZShwKSxlLGksYSksdC5lbD1mLmVsLHU9PT1udWxsJiZzbyhlLGYuZWwpLHImJlcocixpKSwoZD10LnByb3BzJiZ0LnByb3BzLm9uVm5vZGVVcGRhdGVkKSYmVygoKT0+Q3MoZCxzLHQsYyksaSl9ZWxzZXtsZXQgbyx7ZWw6cyxwcm9wczpjfT10LHtibTpsLG06dSxwYXJlbnQ6ZCxyb290OmYsdHlwZTpwfT1lLG09RWkodCk7aWYoam8oZSwhMSksbCYmTShsKSwhbSYmKG89YyYmYy5vblZub2RlQmVmb3JlTW91bnQpJiZDcyhvLGQsdCksam8oZSwhMCkscyYmX2Upe2xldCB0PSgpPT57ZS5zdWJUcmVlPWVvKGUpLF9lKHMsZS5zdWJUcmVlLGUsaSxudWxsKX07bSYmcC5fX2FzeW5jSHlkcmF0ZT9wLl9fYXN5bmNIeWRyYXRlKHMsZSx0KTp0KCl9ZWxzZXtmLmNlJiZmLmNlLl9oYXNTaGFkb3dSb290KCkmJmYuY2UuX2luamVjdENoaWxkU3R5bGUocCxlLnBhcmVudD9lLnBhcmVudC50eXBlOnZvaWQgMCk7bGV0IG89ZS5zdWJUcmVlPWVvKGUpO3YobnVsbCxvLG4scixlLGksYSksdC5lbD1vLmVsfWlmKHUmJlcodSxpKSwhbSYmKG89YyYmYy5vblZub2RlTW91bnRlZCkpe2xldCBlPXQ7VygoKT0+Q3MobyxkLGUpLGkpfSh0LnNoYXBlRmxhZyYyNTZ8fGQmJkVpKGQudm5vZGUpJiZkLnZub2RlLnNoYXBlRmxhZyYyNTYpJiZlLmEmJlcoZS5hLGkpLGUuaXNNb3VudGVkPSEwLHQ9bj1yPW51bGx9fTtlLnNjb3BlLm9uKCk7bGV0IGM9ZS5lZmZlY3Q9bmV3IE9lKHMpO2Uuc2NvcGUub2ZmKCk7bGV0IGw9ZS51cGRhdGU9Yy5ydW4uYmluZChjKSx1PWUuam9iPWMucnVuSWZEaXJ0eS5iaW5kKGMpO3UuaT1lLHUuaWQ9ZS51aWQsYy5zY2hlZHVsZXI9KCk9PlVuKHUpLGpvKGUsITApLGwoKX0saWU9KGUsdCxuKT0+e3QuY29tcG9uZW50PWU7bGV0IHI9ZS52bm9kZS5wcm9wcztlLnZub2RlPXQsZS5uZXh0PW51bGwscG8oZSx0LnByb3BzLHIsbiksRW8oZSx0LmNoaWxkcmVuLG4pLEdlKCksS24oZSksS2UoKX0sYWU9KGUsdCxuLHIsaSxhLG8scyxjPSExKT0+e2xldCBsPWUmJmUuY2hpbGRyZW4sdT1lP2Uuc2hhcGVGbGFnOjAsZD10LmNoaWxkcmVuLHtwYXRjaEZsYWc6ZixzaGFwZUZsYWc6bX09dDtpZihmPjApe2lmKGYmMTI4KXtGKGwsZCxuLHIsaSxhLG8scyxjKTtyZXR1cm59aWYoZiYyNTYpe1AobCxkLG4scixpLGEsbyxzLGMpO3JldHVybn19bSY4Pyh1JjE2JiZkZShsLGksYSksZCE9PWwmJnAobixkKSk6dSYxNj9tJjE2P0YobCxkLG4scixpLGEsbyxzLGMpOmRlKGwsaSxhLCEwKToodSY4JiZwKG4sYGApLG0mMTYmJmVlKGQsbixyLGksYSxvLHMsYykpfSxQPShlLHQscixpLGEsbyxzLGMsbCk9PntlfHw9bix0fHw9bjtsZXQgdT1lLmxlbmd0aCxkPXQubGVuZ3RoLGY9TWF0aC5taW4odSxkKSxwO2ZvcihwPTA7cDxmO3ArKyl7bGV0IG49dFtwXT1sP2JzKHRbcF0pOnlzKHRbcF0pO3YoZVtwXSxuLHIsbnVsbCxhLG8scyxjLGwpfXU+ZD9kZShlLGEsbywhMCwhMSxmKTplZSh0LHIsaSxhLG8scyxjLGwsZil9LEY9KGUsdCxyLGksYSxvLHMsYyxsKT0+e2xldCB1PTAsZD10Lmxlbmd0aCxmPWUubGVuZ3RoLTEscD1kLTE7Zm9yKDt1PD1mJiZ1PD1wOyl7bGV0IG49ZVt1XSxpPXRbdV09bD9icyh0W3VdKTp5cyh0W3VdKTtpZihjcyhuLGkpKXYobixpLHIsbnVsbCxhLG8scyxjLGwpO2Vsc2UgYnJlYWs7dSsrfWZvcig7dTw9ZiYmdTw9cDspe2xldCBuPWVbZl0saT10W3BdPWw/YnModFtwXSk6eXModFtwXSk7aWYoY3MobixpKSl2KG4saSxyLG51bGwsYSxvLHMsYyxsKTtlbHNlIGJyZWFrO2YtLSxwLS19aWYodT5mKXtpZih1PD1wKXtsZXQgZT1wKzEsbj1lPGQ/dFtlXS5lbDppO2Zvcig7dTw9cDspdihudWxsLHRbdV09bD9icyh0W3VdKTp5cyh0W3VdKSxyLG4sYSxvLHMsYyxsKSx1Kyt9fWVsc2UgaWYodT5wKWZvcig7dTw9ZjspY2UoZVt1XSxhLG8sITApLHUrKztlbHNle2xldCBtPXUsaD11LGc9bmV3IE1hcDtmb3IodT1oO3U8PXA7dSsrKXtsZXQgZT10W3VdPWw/YnModFt1XSk6eXModFt1XSk7ZS5rZXkhPW51bGwmJmcuc2V0KGUua2V5LHUpfWxldCBfLHk9MCxiPXAtaCsxLHg9ITEsUz0wLEM9QXJyYXkoYik7Zm9yKHU9MDt1PGI7dSsrKUNbdV09MDtmb3IodT1tO3U8PWY7dSsrKXtsZXQgbj1lW3VdO2lmKHk+PWIpe2NlKG4sYSxvLCEwKTtjb250aW51ZX1sZXQgaTtpZihuLmtleSE9bnVsbClpPWcuZ2V0KG4ua2V5KTtlbHNlIGZvcihfPWg7Xzw9cDtfKyspaWYoQ1tfLWhdPT09MCYmY3Mobix0W19dKSl7aT1fO2JyZWFrfWk9PT12b2lkIDA/Y2UobixhLG8sITApOihDW2ktaF09dSsxLGk+PVM/Uz1pOng9ITAsdihuLHRbaV0scixudWxsLGEsbyxzLGMsbCkseSsrKX1sZXQgdz14P1BvKEMpOm47Zm9yKF89dy5sZW5ndGgtMSx1PWItMTt1Pj0wO3UtLSl7bGV0IGU9aCt1LG49dFtlXSxmPXRbZSsxXSxwPWUrMTxkP2YuZWx8fExvKGYpOmk7Q1t1XT09PTA/dihudWxsLG4scixwLGEsbyxzLGMsbCk6eCYmKF88MHx8dSE9PXdbX10/c2UobixyLHAsMik6Xy0tKX19fSxzZT0oZSx0LG4scixpPW51bGwpPT57bGV0e2VsOmEsdHlwZTpjLHRyYW5zaXRpb246bCxjaGlsZHJlbjp1LHNoYXBlRmxhZzpkfT1lO2lmKGQmNil7c2UoZS5jb21wb25lbnQuc3ViVHJlZSx0LG4scik7cmV0dXJufWlmKGQmMTI4KXtlLnN1c3BlbnNlLm1vdmUodCxuLHIpO3JldHVybn1pZihkJjY0KXtjLm1vdmUoZSx0LG4saGUpO3JldHVybn1pZihjPT09Ryl7byhhLHQsbik7Zm9yKGxldCBlPTA7ZTx1Lmxlbmd0aDtlKyspc2UodVtlXSx0LG4scik7byhlLmFuY2hvcix0LG4pO3JldHVybn1pZihjPT09UW8pe1MoZSx0LG4pO3JldHVybn1pZihyIT09MiYmZCYxJiZsKXtpZihyPT09MClsLnBlcnNpc3RlZCYmIWFbTnJdP28oYSx0LG4pOihsLmJlZm9yZUVudGVyKGEpLG8oYSx0LG4pLFcoKCk9PmwuZW50ZXIoYSksaSkpO2Vsc2V7bGV0e2xlYXZlOnIsZGVsYXlMZWF2ZTppLGFmdGVyTGVhdmU6Y309bCx1PSgpPT57ZS5jdHguaXNVbm1vdW50ZWQ/cyhhKTpvKGEsdCxuKX0sZD0oKT0+e2xldCBlPWEuX2lzTGVhdmluZ3x8ISFhW05yXTthLl9pc0xlYXZpbmcmJmFbTnJdKCEwKSxsLnBlcnNpc3RlZCYmIWU/dSgpOnIoYSwoKT0+e3UoKSxjJiZjKCl9KX07aT9pKGEsdSxkKTpkKCl9fWVsc2UgbyhhLHQsbil9LGNlPShlLHQsbixyPSExLGk9ITEpPT57bGV0e3R5cGU6YSxwcm9wczpvLHJlZjpzLGNoaWxkcmVuOmMsZHluYW1pY0NoaWxkcmVuOmwsc2hhcGVGbGFnOnUscGF0Y2hGbGFnOmQsZGlyczpmLGNhY2hlSW5kZXg6cCxtZW1vOm19PWU7aWYoZD09PS0yJiYoaT0hMSkscyE9bnVsbCYmKEdlKCksZWkocyxudWxsLG4sZSwhMCksS2UoKSkscCE9bnVsbCYmKHQucmVuZGVyQ2FjaGVbcF09dm9pZCAwKSx1JjI1Nil7dC5jdHguZGVhY3RpdmF0ZShlKTtyZXR1cm59bGV0IGg9dSYxJiZmLGc9IUVpKGUpLF87aWYoZyYmKF89byYmby5vblZub2RlQmVmb3JlVW5tb3VudCkmJkNzKF8sdCxlKSx1JjYpdWUoZS5jb21wb25lbnQsbixyKTtlbHNle2lmKHUmMTI4KXtlLnN1c3BlbnNlLnVubW91bnQobixyKTtyZXR1cm59aCYmb3IoZSxudWxsLHQsYGJlZm9yZVVubW91bnRgKSx1JjY0P2UudHlwZS5yZW1vdmUoZSx0LG4saGUscik6bCYmIWwuaGFzT25jZSYmKGEhPT1HfHxkPjAmJmQmNjQpP2RlKGwsdCxuLCExLCEwKTooYT09PUcmJmQmMzg0fHwhaSYmdSYxNikmJmRlKGMsdCxuKSxyJiZJKGUpfWxldCB2PW0hPW51bGwmJnA9PW51bGw7KGcmJihfPW8mJm8ub25Wbm9kZVVubW91bnRlZCl8fGh8fHYpJiZXKCgpPT57XyYmQ3MoXyx0LGUpLGgmJm9yKGUsbnVsbCx0LGB1bm1vdW50ZWRgKSx2JiYoZS5lbD1udWxsKX0sbil9LEk9ZT0+e2xldHt0eXBlOnQsZWw6bixhbmNob3I6cix0cmFuc2l0aW9uOml9PWU7aWYodD09PUcpe2xlKG4scik7cmV0dXJufWlmKHQ9PT1Rbyl7QyhlKTtyZXR1cm59bGV0IGE9KCk9PntzKG4pLGkmJiFpLnBlcnNpc3RlZCYmaS5hZnRlckxlYXZlJiZpLmFmdGVyTGVhdmUoKX07aWYoZS5zaGFwZUZsYWcmMSYmaSYmIWkucGVyc2lzdGVkKXtsZXR7bGVhdmU6dCxkZWxheUxlYXZlOnJ9PWksbz0oKT0+dChuLGEpO3I/cihlLmVsLGEsbyk6bygpfWVsc2UgYSgpfSxsZT0oZSx0KT0+e2xldCBuO2Zvcig7ZSE9PXQ7KW49aChlKSxzKGUpLGU9bjtzKHQpfSx1ZT0oZSx0LG4pPT57bGV0e2J1bTpyLHNjb3BlOmksam9iOmEsc3ViVHJlZTpvLHVtOnMsbTpjLGE6bH09ZTtJbyhjKSxJbyhsKSxyJiZNKHIpLGkuc3RvcCgpLGEmJihhLmZsYWdzfD04LGNlKG8sZSx0LG4pKSxzJiZXKHMsdCksVygoKT0+e2UuaXNVbm1vdW50ZWQ9ITB9LHQpfSxkZT0oZSx0LG4scj0hMSxpPSExLGE9MCk9Pntmb3IobGV0IG89YTtvPGUubGVuZ3RoO28rKyljZShlW29dLHQsbixyLGkpfSxmZT1lPT57aWYoZS5zaGFwZUZsYWcmNilyZXR1cm4gZmUoZS5jb21wb25lbnQuc3ViVHJlZSk7aWYoZS5zaGFwZUZsYWcmMTI4KXJldHVybiBlLnN1c3BlbnNlLm5leHQoKTtsZXQgdD1oKGUuYW5jaG9yfHxlLmVsKSxuPXQmJnRbYnJdO3JldHVybiBuP2gobik6dH0scGU9ITEsbWU9KGUsdCxuKT0+e2xldCByO2U9PW51bGw/dC5fdm5vZGUmJihjZSh0Ll92bm9kZSxudWxsLG51bGwsITApLHI9dC5fdm5vZGUuY29tcG9uZW50KTp2KHQuX3Zub2RlfHxudWxsLGUsdCxudWxsLG51bGwsbnVsbCxuKSx0Ll92bm9kZT1lLHBlfHw9KHBlPSEwLEtuKHIpLHFuKCksITEpfSxoZT17cDp2LHVtOmNlLG06c2UscjpJLG10OmosbWM6ZWUscGM6YWUscGJjOnRlLG46ZmUsbzplfSxnZSxfZTtyZXR1cm4gaSYmKFtnZSxfZV09aShoZSkpLHtyZW5kZXI6bWUsaHlkcmF0ZTpnZSxjcmVhdGVBcHA6S2EobWUsZ2UpfX1mdW5jdGlvbiBBbyh7dHlwZTplLHByb3BzOnR9LG4pe3JldHVybiBuPT09YHN2Z2AmJmU9PT1gZm9yZWlnbk9iamVjdGB8fG49PT1gbWF0aG1sYCYmZT09PWBhbm5vdGF0aW9uLXhtbGAmJnQmJnQuZW5jb2RpbmcmJnQuZW5jb2RpbmcuaW5jbHVkZXMoYGh0bWxgKT92b2lkIDA6bn1mdW5jdGlvbiBqbyh7ZWZmZWN0OmUsam9iOnR9LG4pe24/KGUuZmxhZ3N8PTMyLHQuZmxhZ3N8PTQpOihlLmZsYWdzJj0tMzMsdC5mbGFncyY9LTUpfWZ1bmN0aW9uIE1vKGUsdCl7cmV0dXJuKCFlfHxlJiYhZS5wZW5kaW5nQnJhbmNoKSYmdCYmIXQucGVyc2lzdGVkfWZ1bmN0aW9uIE5vKGUsdCxuPSExKXtsZXQgcj1lLmNoaWxkcmVuLGk9dC5jaGlsZHJlbjtpZihkKHIpJiZkKGkpKWZvcihsZXQgZT0wO2U8ci5sZW5ndGg7ZSsrKXtsZXQgdD1yW2VdLGE9aVtlXTthLnNoYXBlRmxhZyYxJiYhYS5keW5hbWljQ2hpbGRyZW4mJigoYS5wYXRjaEZsYWc8PTB8fGEucGF0Y2hGbGFnPT09MzIpJiYoYT1pW2VdPWJzKGlbZV0pLGEuZWw9dC5lbCksIW4mJmEucGF0Y2hGbGFnIT09LTImJk5vKHQsYSkpLGEudHlwZT09PVpvJiYoYS5wYXRjaEZsYWc9PT0tMSYmKGE9aVtlXT1icyhhKSksYS5lbD10LmVsKSxhLnR5cGU9PT1LJiYhYS5lbCYmKGEuZWw9dC5lbCl9fWZ1bmN0aW9uIFBvKGUpe2xldCB0PWUuc2xpY2UoKSxuPVswXSxyLGksYSxvLHMsYz1lLmxlbmd0aDtmb3Iocj0wO3I8YztyKyspe2xldCBjPWVbcl07aWYoYyE9PTApe2lmKGk9bltuLmxlbmd0aC0xXSxlW2ldPGMpe3Rbcl09aSxuLnB1c2gocik7Y29udGludWV9Zm9yKGE9MCxvPW4ubGVuZ3RoLTE7YTxvOylzPWErbz4+MSxlW25bc11dPGM/YT1zKzE6bz1zO2M8ZVtuW2FdXSYmKGE+MCYmKHRbcl09blthLTFdKSxuW2FdPXIpfX1mb3IoYT1uLmxlbmd0aCxvPW5bYS0xXTthLS0+MDspblthXT1vLG89dFtvXTtyZXR1cm4gbn1mdW5jdGlvbiBGbyhlKXtsZXQgdD1lLnN1YlRyZWUuY29tcG9uZW50O2lmKHQpcmV0dXJuIHQuYXN5bmNEZXAmJiF0LmFzeW5jUmVzb2x2ZWQ/dDpGbyh0KX1mdW5jdGlvbiBJbyhlKXtpZihlKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0uZmxhZ3N8PTh9ZnVuY3Rpb24gTG8oZSl7aWYoZS5wbGFjZWhvbGRlcilyZXR1cm4gZS5wbGFjZWhvbGRlcjtsZXQgdD1lLmNvbXBvbmVudDtyZXR1cm4gdD9Mbyh0LnN1YlRyZWUpOm51bGx9dmFyIFJvPWU9PmUuX19pc1N1c3BlbnNlLHpvPTAsQm89e25hbWU6YFN1c3BlbnNlYCxfX2lzU3VzcGVuc2U6ITAscHJvY2VzcyhlLHQsbixyLGksYSxvLHMsYyxsKXtpZihlPT1udWxsKUhvKHQsbixyLGksYSxvLHMsYyxsKTtlbHNle2lmKGEmJmEuZGVwcz4wJiYhZS5zdXNwZW5zZS5pc0luRmFsbGJhY2spe3Quc3VzcGVuc2U9ZS5zdXNwZW5zZSx0LnN1c3BlbnNlLnZub2RlPXQsdC5lbD1lLmVsO3JldHVybn1VbyhlLHQsbixyLGksbyxzLGMsbCl9fSxoeWRyYXRlOkdvLG5vcm1hbGl6ZTpLb307ZnVuY3Rpb24gVm8oZSx0KXtsZXQgbj1lLnByb3BzJiZlLnByb3BzW3RdO2cobikmJm4oKX1mdW5jdGlvbiBIbyhlLHQsbixyLGksYSxvLHMsYyl7bGV0e3A6bCxvOntjcmVhdGVFbGVtZW50OnV9fT1jLGQ9dShgZGl2YCksZj1lLnN1c3BlbnNlPVdvKGUsaSxyLHQsZCxuLGEsbyxzLGMpO2wobnVsbCxmLnBlbmRpbmdCcmFuY2g9ZS5zc0NvbnRlbnQsZCxudWxsLHIsZixhLG8pLGYuZGVwcz4wPyhWbyhlLGBvblBlbmRpbmdgKSxWbyhlLGBvbkZhbGxiYWNrYCksbChudWxsLGUuc3NGYWxsYmFjayx0LG4scixudWxsLGEsbyksWW8oZixlLnNzRmFsbGJhY2spKTpmLnJlc29sdmUoITEsITApfWZ1bmN0aW9uIFVvKGUsdCxuLHIsaSxhLG8scyx7cDpjLHVtOmwsbzp7Y3JlYXRlRWxlbWVudDp1fX0pe2xldCBkPXQuc3VzcGVuc2U9ZS5zdXNwZW5zZTtkLnZub2RlPXQsdC5lbD1lLmVsO2xldCBmPXQuc3NDb250ZW50LHA9dC5zc0ZhbGxiYWNrLHthY3RpdmVCcmFuY2g6bSxwZW5kaW5nQnJhbmNoOmgsaXNJbkZhbGxiYWNrOmcsaXNIeWRyYXRpbmc6X309ZDtpZihoKWQucGVuZGluZ0JyYW5jaD1mLGNzKGgsZik/KGMoaCxmLGQuaGlkZGVuQ29udGFpbmVyLG51bGwsaSxkLGEsbyxzKSxkLmRlcHM8PTA/ZC5yZXNvbHZlKCk6ZyYmKF98fChjKG0scCxuLHIsaSxudWxsLGEsbyxzKSxZbyhkLHApKSkpOihkLnBlbmRpbmdJZD16bysrLF8/KGQuaXNIeWRyYXRpbmc9ITEsZC5hY3RpdmVCcmFuY2g9aCk6bChoLGksZCksZC5kZXBzPTAsZC5lZmZlY3RzLmxlbmd0aD0wLGQuaGlkZGVuQ29udGFpbmVyPXUoYGRpdmApLGc/KGMobnVsbCxmLGQuaGlkZGVuQ29udGFpbmVyLG51bGwsaSxkLGEsbyxzKSxkLmRlcHM8PTA/ZC5yZXNvbHZlKCk6KGMobSxwLG4scixpLG51bGwsYSxvLHMpLFlvKGQscCkpKTptJiZjcyhtLGYpPyhjKG0sZixuLHIsaSxkLGEsbyxzKSxkLnJlc29sdmUoITApKTooYyhudWxsLGYsZC5oaWRkZW5Db250YWluZXIsbnVsbCxpLGQsYSxvLHMpLGQuZGVwczw9MCYmZC5yZXNvbHZlKCkpKTtlbHNlIGlmKG0mJmNzKG0sZikpYyhtLGYsbixyLGksZCxhLG8scyksWW8oZCxmKTtlbHNlIGlmKFZvKHQsYG9uUGVuZGluZ2ApLGQucGVuZGluZ0JyYW5jaD1mLGQucGVuZGluZ0lkPWYuc2hhcGVGbGFnJjUxMj9mLmNvbXBvbmVudC5zdXNwZW5zZUlkOnpvKyssYyhudWxsLGYsZC5oaWRkZW5Db250YWluZXIsbnVsbCxpLGQsYSxvLHMpLGQuZGVwczw9MClkLnJlc29sdmUoKTtlbHNle2xldHt0aW1lb3V0OmUscGVuZGluZ0lkOnR9PWQ7ZT4wP3NldFRpbWVvdXQoKCk9PntkLnBlbmRpbmdJZD09PXQmJmQuZmFsbGJhY2socCl9LGUpOmU9PT0wJiZkLmZhbGxiYWNrKHApfX1mdW5jdGlvbiBXbyhlLHQsbixyLGksYSxvLHMsYyxsLHU9ITEpe2xldHtwOmQsbTpmLHVtOnAsbjptLG86e3BhcmVudE5vZGU6aCxyZW1vdmU6Z319PWwsXyx2PVhvKGUpO3YmJnQmJnQucGVuZGluZ0JyYW5jaCYmKF89dC5wZW5kaW5nSWQsdC5kZXBzKyspO2xldCB5PWUucHJvcHM/aWUoZS5wcm9wcy50aW1lb3V0KTp2b2lkIDAsYj1hLHg9e3Zub2RlOmUscGFyZW50OnQscGFyZW50Q29tcG9uZW50Om4sbmFtZXNwYWNlOm8sY29udGFpbmVyOnIsaGlkZGVuQ29udGFpbmVyOmksZGVwczowLHBlbmRpbmdJZDp6bysrLHRpbWVvdXQ6dHlwZW9mIHk9PWBudW1iZXJgP3k6LTEsYWN0aXZlQnJhbmNoOm51bGwsaXNGYWxsYmFja01vdW50UGVuZGluZzohMSxwZW5kaW5nQnJhbmNoOm51bGwsaXNJbkZhbGxiYWNrOiF1LGlzSHlkcmF0aW5nOnUsaXNVbm1vdW50ZWQ6ITEsZWZmZWN0czpbXSxyZXNvbHZlKGU9ITEsbj0hMSl7bGV0e3Zub2RlOnIsYWN0aXZlQnJhbmNoOmkscGVuZGluZ0JyYW5jaDpvLHBlbmRpbmdJZDpzLGVmZmVjdHM6YyxwYXJlbnRDb21wb25lbnQ6bCxjb250YWluZXI6dSxpc0luRmFsbGJhY2s6ZH09eCxnPSExO2lmKHguaXNIeWRyYXRpbmcpeC5pc0h5ZHJhdGluZz0hMTtlbHNlIGlmKCFlKXtnPWkmJm8udHJhbnNpdGlvbiYmby50cmFuc2l0aW9uLm1vZGU9PT1gb3V0LWluYDtsZXQgZT0hMTtnJiYoaS50cmFuc2l0aW9uLmFmdGVyTGVhdmU9KCk9PntzPT09eC5wZW5kaW5nSWQmJihmKG8sdSxhPT09YiYmIWU/bShpKTphLDApLEduKGMpLGQmJnIuc3NGYWxsYmFjayYmKHIuc3NGYWxsYmFjay5lbD1udWxsKSl9KSxpJiYheC5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nJiYoaChpLmVsKT09PXUmJihhPW0oaSksZT0hMCkscChpLGwseCwhMCksIWcmJmQmJnIuc3NGYWxsYmFjayYmVygoKT0+ci5zc0ZhbGxiYWNrLmVsPW51bGwseCkpLGd8fGYobyx1LGEsMCl9eC5pc0ZhbGxiYWNrTW91bnRQZW5kaW5nPSExLFlvKHgsbykseC5wZW5kaW5nQnJhbmNoPW51bGwseC5pc0luRmFsbGJhY2s9ITE7bGV0IHk9eC5wYXJlbnQsUz0hMTtmb3IoO3k7KXtpZih5LnBlbmRpbmdCcmFuY2gpe2ZvcihsZXQgZT0wO2U8Yy5sZW5ndGg7ZSsrKXkuZWZmZWN0cy5wdXNoKGNbZV0pO1M9ITA7YnJlYWt9eT15LnBhcmVudH0hUyYmIWcmJkduKGMpLHguZWZmZWN0cz1bXSx2JiZ0JiZ0LnBlbmRpbmdCcmFuY2gmJl89PT10LnBlbmRpbmdJZCYmKHQuZGVwcy0tLHQuZGVwcz09PTAmJiFuJiZ0LnJlc29sdmUoKSksVm8ocixgb25SZXNvbHZlYCl9LGZhbGxiYWNrKGUpe2lmKCF4LnBlbmRpbmdCcmFuY2gpcmV0dXJuO2xldHt2bm9kZTp0LGFjdGl2ZUJyYW5jaDpuLHBhcmVudENvbXBvbmVudDpyLGNvbnRhaW5lcjppLG5hbWVzcGFjZTphfT14O1ZvKHQsYG9uRmFsbGJhY2tgKTtsZXQgbz1tKG4pLGw9KCk9Pnt4LmlzRmFsbGJhY2tNb3VudFBlbmRpbmc9ITEseC5pc0luRmFsbGJhY2smJihkKG51bGwsZSxpLG8scixudWxsLGEscyxjKSxZbyh4LGUpKX0sdT1lLnRyYW5zaXRpb24mJmUudHJhbnNpdGlvbi5tb2RlPT09YG91dC1pbmA7dSYmKHguaXNGYWxsYmFja01vdW50UGVuZGluZz0hMCxuLnRyYW5zaXRpb24uYWZ0ZXJMZWF2ZT1sKSx4LmlzSW5GYWxsYmFjaz0hMCxwKG4scixudWxsLCEwKSx1fHxsKCl9LG1vdmUoZSx0LG4pe3guYWN0aXZlQnJhbmNoJiZmKHguYWN0aXZlQnJhbmNoLGUsdCxuKSx4LmNvbnRhaW5lcj1lfSxuZXh0KCl7cmV0dXJuIHguYWN0aXZlQnJhbmNoJiZtKHguYWN0aXZlQnJhbmNoKX0scmVnaXN0ZXJEZXAoZSx0LG4pe2xldCByPSEheC5wZW5kaW5nQnJhbmNoO3ImJnguZGVwcysrO2xldCBpPWUudm5vZGUuZWw7ZS5hc3luY0RlcC5jYXRjaCh0PT57Tm4odCxlLDApfSkudGhlbihhPT57aWYoZS5pc1VubW91bnRlZHx8eC5pc1VubW91bnRlZHx8eC5wZW5kaW5nSWQhPT1lLnN1c3BlbnNlSWQpcmV0dXJuO2pzKCksZS5hc3luY1Jlc29sdmVkPSEwO2xldHt2bm9kZTpzfT1lO0lzKGUsYSwhMSksaSYmKHMuZWw9aSk7bGV0IGM9IWkmJmUuc3ViVHJlZS5lbDt0KGUscyxoKGl8fGUuc3ViVHJlZS5lbCksaT9udWxsOm0oZS5zdWJUcmVlKSx4LG8sbiksYyYmKHMucGxhY2Vob2xkZXI9bnVsbCxnKGMpKSxzbyhlLHMuZWwpLHImJi0teC5kZXBzPT09MCYmeC5yZXNvbHZlKCl9KX0sdW5tb3VudChlLHQpe3guaXNVbm1vdW50ZWQ9ITAseC5hY3RpdmVCcmFuY2gmJnAoeC5hY3RpdmVCcmFuY2gsbixlLHQpLHgucGVuZGluZ0JyYW5jaCYmcCh4LnBlbmRpbmdCcmFuY2gsbixlLHQpfX07cmV0dXJuIHh9ZnVuY3Rpb24gR28oZSx0LG4scixpLGEsbyxzLGMpe2xldCBsPXQuc3VzcGVuc2U9V28odCxyLG4sZS5wYXJlbnROb2RlLGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGRpdmApLG51bGwsaSxhLG8scywhMCksdT1jKGUsbC5wZW5kaW5nQnJhbmNoPXQuc3NDb250ZW50LG4sbCxhLG8pO3JldHVybiBsLmRlcHM9PT0wJiZsLnJlc29sdmUoITEsITApLHV9ZnVuY3Rpb24gS28oZSl7bGV0e3NoYXBlRmxhZzp0LGNoaWxkcmVuOm59PWUscj10JjMyO2Uuc3NDb250ZW50PXFvKHI/bi5kZWZhdWx0Om4pLGUuc3NGYWxsYmFjaz1yP3FvKG4uZmFsbGJhY2spOkooSyl9ZnVuY3Rpb24gcW8oZSl7bGV0IHQ7aWYoZyhlKSl7bGV0IG49bnMmJmUuX2M7biYmKGUuX2Q9ITEsZXMoKSksZT1lKCksbiYmKGUuX2Q9ITAsdD1xLHRzKCkpfXJldHVybiBkKGUpJiYoZT10byhlKSksZT15cyhlKSx0JiYhZS5keW5hbWljQ2hpbGRyZW4mJihlLmR5bmFtaWNDaGlsZHJlbj10LmZpbHRlcih0PT50IT09ZSkpLGV9ZnVuY3Rpb24gSm8oZSx0KXt0JiZ0LnBlbmRpbmdCcmFuY2g/ZChlKT90LmVmZmVjdHMucHVzaCguLi5lKTp0LmVmZmVjdHMucHVzaChlKTpHbihlKX1mdW5jdGlvbiBZbyhlLHQpe2UuYWN0aXZlQnJhbmNoPXQ7bGV0e3Zub2RlOm4scGFyZW50Q29tcG9uZW50OnJ9PWUsaT10LmVsO2Zvcig7IWkmJnQuY29tcG9uZW50Oyl0PXQuY29tcG9uZW50LnN1YlRyZWUsaT10LmVsO24uZWw9aSxyJiZyLnN1YlRyZWU9PT1uJiYoci52bm9kZS5lbD1pLHNvKHIsaSkpfWZ1bmN0aW9uIFhvKGUpe2xldCB0PWUucHJvcHMmJmUucHJvcHMuc3VzcGVuc2libGU7cmV0dXJuIHQhPW51bGwmJnQhPT0hMX12YXIgRz1TeW1ib2wuZm9yKGB2LWZndGApLFpvPVN5bWJvbC5mb3IoYHYtdHh0YCksSz1TeW1ib2wuZm9yKGB2LWNtdGApLFFvPVN5bWJvbC5mb3IoYHYtc3RjYCksJG89W10scT1udWxsO2Z1bmN0aW9uIGVzKGU9ITEpeyRvLnB1c2gocT1lP251bGw6W10pfWZ1bmN0aW9uIHRzKCl7JG8ucG9wKCkscT0kb1skby5sZW5ndGgtMV18fG51bGx9dmFyIG5zPTE7ZnVuY3Rpb24gcnMoZSx0PSExKXtucys9ZSxlPDAmJnEmJnQmJihxLmhhc09uY2U9ITApfWZ1bmN0aW9uIGlzKGUpe3JldHVybiBlLmR5bmFtaWNDaGlsZHJlbj1ucz4wP3F8fG46bnVsbCx0cygpLG5zPjAmJnEmJnEucHVzaChlKSxlfWZ1bmN0aW9uIGFzKGUsdCxuLHIsaSxhKXtyZXR1cm4gaXMoZnMoZSx0LG4scixpLGEsITApKX1mdW5jdGlvbiBvcyhlLHQsbixyLGkpe3JldHVybiBpcyhKKGUsdCxuLHIsaSwhMCkpfWZ1bmN0aW9uIHNzKGUpe3JldHVybiBlP2UuX192X2lzVk5vZGU9PT0hMDohMX1mdW5jdGlvbiBjcyhlLHQpe3JldHVybiBlLnR5cGU9PT10LnR5cGUmJmUua2V5PT09dC5rZXl9ZnVuY3Rpb24gbHMoZSl7fXZhciB1cz0oe2tleTplfSk9PmU/P251bGwsZHM9KHtyZWY6ZSxyZWZfa2V5OnQscmVmX2ZvcjpufSk9Pih0eXBlb2YgZT09YG51bWJlcmAmJihlPWBgK2UpLGU9PW51bGw/bnVsbDpfKGUpfHxWKGUpfHxnKGUpP3tpOlUscjplLGs6dCxmOiEhbn06ZSk7ZnVuY3Rpb24gZnMoZSx0PW51bGwsbj1udWxsLHI9MCxpPW51bGwsYT1lPT09Rz8wOjEsbz0hMSxzPSExKXtsZXQgYz17X192X2lzVk5vZGU6ITAsX192X3NraXA6ITAsdHlwZTplLHByb3BzOnQsa2V5OnQmJnVzKHQpLHJlZjp0JiZkcyh0KSxzY29wZUlkOiRuLHNsb3RTY29wZUlkczpudWxsLGNoaWxkcmVuOm4sY29tcG9uZW50Om51bGwsc3VzcGVuc2U6bnVsbCxzc0NvbnRlbnQ6bnVsbCxzc0ZhbGxiYWNrOm51bGwsZGlyczpudWxsLHRyYW5zaXRpb246bnVsbCxlbDpudWxsLGFuY2hvcjpudWxsLHRhcmdldDpudWxsLHRhcmdldFN0YXJ0Om51bGwsdGFyZ2V0QW5jaG9yOm51bGwsc3RhdGljQ291bnQ6MCxzaGFwZUZsYWc6YSxwYXRjaEZsYWc6cixkeW5hbWljUHJvcHM6aSxkeW5hbWljQ2hpbGRyZW46bnVsbCxhcHBDb250ZXh0Om51bGwsY3R4OlV9O3JldHVybiBzPyh4cyhjLG4pLGEmMTI4JiZlLm5vcm1hbGl6ZShjKSk6biYmKGMuc2hhcGVGbGFnfD1fKG4pPzg6MTYpLG5zPjAmJiFvJiZxJiYoYy5wYXRjaEZsYWc+MHx8YSY2KSYmYy5wYXRjaEZsYWchPT0zMiYmcS5wdXNoKGMpLGN9dmFyIEo9cHM7ZnVuY3Rpb24gcHMoZSx0PW51bGwsbj1udWxsLHI9MCxpPW51bGwsYT0hMSl7aWYoKCFlfHxlPT09JGkpJiYoZT1LKSxzcyhlKSl7bGV0IHI9aHMoZSx0LCEwKTtyZXR1cm4gbiYmeHMocixuKSxucz4wJiYhYSYmcSYmKHIuc2hhcGVGbGFnJjY/cVtxLmluZGV4T2YoZSldPXI6cS5wdXNoKHIpKSxyLnBhdGNoRmxhZz0tMixyfWlmKEtzKGUpJiYoZT1lLl9fdmNjT3B0cyksdCl7dD1tcyh0KTtsZXR7Y2xhc3M6ZSxzdHlsZTpufT10O2UmJiFfKGUpJiYodC5jbGFzcz11ZShlKSkseShuKSYmKHF0KG4pJiYhZChuKSYmKG49cyh7fSxuKSksdC5zdHlsZT1GKG4pKX1sZXQgbz1fKGUpPzE6Um8oZSk/MTI4OnhyKGUpPzY0OnkoZSk/NDpnKGUpPzI6MDtyZXR1cm4gZnMoZSx0LG4scixpLG8sYSwhMCl9ZnVuY3Rpb24gbXMoZSl7cmV0dXJuIGU/cXQoZSl8fHVvKGUpP3Moe30sZSk6ZTpudWxsfWZ1bmN0aW9uIGhzKGUsdCxuPSExLHI9ITEpe2xldHtwcm9wczppLHJlZjphLHBhdGNoRmxhZzpvLGNoaWxkcmVuOnMsdHJhbnNpdGlvbjpjfT1lLGw9dD9TcyhpfHx7fSx0KTppLHU9e19fdl9pc1ZOb2RlOiEwLF9fdl9za2lwOiEwLHR5cGU6ZS50eXBlLHByb3BzOmwsa2V5OmwmJnVzKGwpLHJlZjp0JiZ0LnJlZj9uJiZhP2QoYSk/YS5jb25jYXQoZHModCkpOlthLGRzKHQpXTpkcyh0KTphLHNjb3BlSWQ6ZS5zY29wZUlkLHNsb3RTY29wZUlkczplLnNsb3RTY29wZUlkcyxjaGlsZHJlbjpzLHRhcmdldDplLnRhcmdldCx0YXJnZXRTdGFydDplLnRhcmdldFN0YXJ0LHRhcmdldEFuY2hvcjplLnRhcmdldEFuY2hvcixzdGF0aWNDb3VudDplLnN0YXRpY0NvdW50LHNoYXBlRmxhZzplLnNoYXBlRmxhZyxwYXRjaEZsYWc6dCYmZS50eXBlIT09Rz9vPT09LTE/MTY6b3wxNjpvLGR5bmFtaWNQcm9wczplLmR5bmFtaWNQcm9wcyxkeW5hbWljQ2hpbGRyZW46ZS5keW5hbWljQ2hpbGRyZW4sYXBwQ29udGV4dDplLmFwcENvbnRleHQsZGlyczplLmRpcnMsdHJhbnNpdGlvbjpjLGNvbXBvbmVudDplLmNvbXBvbmVudCxzdXNwZW5zZTplLnN1c3BlbnNlLHNzQ29udGVudDplLnNzQ29udGVudCYmaHMoZS5zc0NvbnRlbnQpLHNzRmFsbGJhY2s6ZS5zc0ZhbGxiYWNrJiZocyhlLnNzRmFsbGJhY2spLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZWw6ZS5lbCxhbmNob3I6ZS5hbmNob3IsY3R4OmUuY3R4LGNlOmUuY2V9O3JldHVybiBjJiZyJiZLcih1LGMuY2xvbmUodSkpLHV9ZnVuY3Rpb24gZ3MoZT1gIGAsdD0wKXtyZXR1cm4gSihabyxudWxsLGUsdCl9ZnVuY3Rpb24gX3MoZSx0KXtsZXQgbj1KKFFvLG51bGwsZSk7cmV0dXJuIG4uc3RhdGljQ291bnQ9dCxufWZ1bmN0aW9uIHZzKGU9YGAsdD0hMSl7cmV0dXJuIHQ/KGVzKCksb3MoSyxudWxsLGUpKTpKKEssbnVsbCxlKX1mdW5jdGlvbiB5cyhlKXtyZXR1cm4gZT09bnVsbHx8dHlwZW9mIGU9PWBib29sZWFuYD9KKEspOmQoZSk/SihHLG51bGwsZS5zbGljZSgpKTpzcyhlKT9icyhlKTpKKFpvLG51bGwsU3RyaW5nKGUpKX1mdW5jdGlvbiBicyhlKXtyZXR1cm4gZS5lbD09PW51bGwmJmUucGF0Y2hGbGFnIT09LTF8fGUubWVtbz9lOmhzKGUpfWZ1bmN0aW9uIHhzKGUsdCl7bGV0IG49MCx7c2hhcGVGbGFnOnJ9PWU7aWYodD09bnVsbCl0PW51bGw7ZWxzZSBpZihkKHQpKW49MTY7ZWxzZSBpZih0eXBlb2YgdD09YG9iamVjdGApe2lmKHImNjUpe2xldCBuPXQuZGVmYXVsdDtuJiYobi5fYyYmKG4uX2Q9ITEpLHhzKGUsbigpKSxuLl9jJiYobi5fZD0hMCkpO3JldHVybn17bj0zMjtsZXQgcj10Ll87IXImJiF1byh0KT90Ll9jdHg9VTpyPT09MyYmVSYmKFUuc2xvdHMuXz09PTE/dC5fPTE6KHQuXz0yLGUucGF0Y2hGbGFnfD0xMDI0KSl9fWVsc2UgaWYoZyh0KSl7aWYociY2NSl7eHMoZSx7ZGVmYXVsdDp0fSk7cmV0dXJufXQ9e2RlZmF1bHQ6dCxfY3R4OlV9LG49MzJ9ZWxzZSB0PVN0cmluZyh0KSxyJjY0PyhuPTE2LHQ9W2dzKHQpXSk6bj04O2UuY2hpbGRyZW49dCxlLnNoYXBlRmxhZ3w9bn1mdW5jdGlvbiBTcyguLi5lKXtsZXQgdD17fTtmb3IobGV0IG49MDtuPGUubGVuZ3RoO24rKyl7bGV0IHI9ZVtuXTtmb3IobGV0IGUgaW4gcilpZihlPT09YGNsYXNzYCl0LmNsYXNzIT09ci5jbGFzcyYmKHQuY2xhc3M9dWUoW3QuY2xhc3Msci5jbGFzc10pKTtlbHNlIGlmKGU9PT1gc3R5bGVgKXQuc3R5bGU9RihbdC5zdHlsZSxyLnN0eWxlXSk7ZWxzZSBpZihhKGUpKXtsZXQgbj10W2VdLGk9cltlXTtpJiZuIT09aSYmIShkKG4pJiZuLmluY2x1ZGVzKGkpKT90W2VdPW4/W10uY29uY2F0KG4saSk6aTppPT1udWxsJiZuPT1udWxsJiYhbyhlKSYmKHRbZV09aSl9ZWxzZSBlIT09YGAmJih0W2VdPXJbZV0pfXJldHVybiB0fWZ1bmN0aW9uIENzKGUsdCxuLHI9bnVsbCl7TW4oZSx0LDcsW24scl0pfXZhciB3cz1XYSgpLFRzPTA7ZnVuY3Rpb24gRXMoZSxuLHIpe2xldCBpPWUudHlwZSxhPShuP24uYXBwQ29udGV4dDplLmFwcENvbnRleHQpfHx3cyxvPXt1aWQ6VHMrKyx2bm9kZTplLHR5cGU6aSxwYXJlbnQ6bixhcHBDb250ZXh0OmEscm9vdDpudWxsLG5leHQ6bnVsbCxzdWJUcmVlOm51bGwsZWZmZWN0Om51bGwsdXBkYXRlOm51bGwsam9iOm51bGwsc2NvcGU6bmV3IENlKCEwKSxyZW5kZXI6bnVsbCxwcm94eTpudWxsLGV4cG9zZWQ6bnVsbCxleHBvc2VQcm94eTpudWxsLHdpdGhQcm94eTpudWxsLHByb3ZpZGVzOm4/bi5wcm92aWRlczpPYmplY3QuY3JlYXRlKGEucHJvdmlkZXMpLGlkczpuP24uaWRzOltgYCwwLDBdLGFjY2Vzc0NhY2hlOm51bGwscmVuZGVyQ2FjaGU6W10sY29tcG9uZW50czpudWxsLGRpcmVjdGl2ZXM6bnVsbCxwcm9wc09wdGlvbnM6X28oaSxhKSxlbWl0c09wdGlvbnM6UWEoaSxhKSxlbWl0Om51bGwsZW1pdHRlZDpudWxsLHByb3BzRGVmYXVsdHM6dCxpbmhlcml0QXR0cnM6aS5pbmhlcml0QXR0cnMsY3R4OnQsZGF0YTp0LHByb3BzOnQsYXR0cnM6dCxzbG90czp0LHJlZnM6dCxzZXR1cFN0YXRlOnQsc2V0dXBDb250ZXh0Om51bGwsc3VzcGVuc2U6cixzdXNwZW5zZUlkOnI/ci5wZW5kaW5nSWQ6MCxhc3luY0RlcDpudWxsLGFzeW5jUmVzb2x2ZWQ6ITEsaXNNb3VudGVkOiExLGlzVW5tb3VudGVkOiExLGlzRGVhY3RpdmF0ZWQ6ITEsYmM6bnVsbCxjOm51bGwsYm06bnVsbCxtOm51bGwsYnU6bnVsbCx1Om51bGwsdW06bnVsbCxidW06bnVsbCxkYTpudWxsLGE6bnVsbCxydGc6bnVsbCxydGM6bnVsbCxlYzpudWxsLHNwOm51bGx9O3JldHVybiBvLmN0eD17XzpvfSxvLnJvb3Q9bj9uLnJvb3Q6byxvLmVtaXQ9WGEuYmluZChudWxsLG8pLGUuY2UmJmUuY2Uobyksb312YXIgWT1udWxsLERzPSgpPT5ZfHxVLE9zLGtzO3tsZXQgZT1vZSgpLHQ9KHQsbik9PntsZXQgcjtyZXR1cm4ocj1lW3RdKXx8KHI9ZVt0XT1bXSksci5wdXNoKG4pLGU9PntyLmxlbmd0aD4xP3IuZm9yRWFjaCh0PT50KGUpKTpyWzBdKGUpfX07T3M9dChgX19WVUVfSU5TVEFOQ0VfU0VUVEVSU19fYCxlPT5ZPWUpLGtzPXQoYF9fVlVFX1NTUl9TRVRURVJTX19gLGU9Pk5zPWUpfXZhciBBcz1lPT57bGV0IHQ9WTtyZXR1cm4gT3MoZSksZS5zY29wZS5vbigpLCgpPT57ZS5zY29wZS5vZmYoKSxPcyh0KX19LGpzPSgpPT57WSYmWS5zY29wZS5vZmYoKSxPcyhudWxsKX07ZnVuY3Rpb24gTXMoZSl7cmV0dXJuIGUudm5vZGUuc2hhcGVGbGFnJjR9dmFyIE5zPSExO2Z1bmN0aW9uIFBzKGUsdD0hMSxuPSExKXt0JiZrcyh0KTtsZXR7cHJvcHM6cixjaGlsZHJlbjppfT1lLnZub2RlLGE9TXMoZSk7Zm8oZSxyLGEsdCksVG8oZSxpLG58fHQpO2xldCBvPWE/RnMoZSx0KTp2b2lkIDA7cmV0dXJuIHQmJmtzKCExKSxvfWZ1bmN0aW9uIEZzKGUsdCl7bGV0IG49ZS50eXBlO2UuYWNjZXNzQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKSxlLnByb3h5PW5ldyBQcm94eShlLmN0eCxmYSk7bGV0e3NldHVwOnJ9PW47aWYocil7R2UoKTtsZXQgbj1lLnNldHVwQ29udGV4dD1yLmxlbmd0aD4xP1VzKGUpOm51bGwsaT1BcyhlKSxhPWpuKHIsZSwwLFtlLnByb3BzLG5dKSxvPWIoYSk7aWYoS2UoKSxpKCksKG98fGUuc3ApJiYhRWkoZSkmJlhyKGUpLG8pe2lmKGEudGhlbihqcyxqcyksdClyZXR1cm4gYS50aGVuKG49PntrcyghMCk7dHJ5e0lzKGUsbix0KX1maW5hbGx5e2tzKCExKX19KS5jYXRjaCh0PT57Tm4odCxlLDApfSk7ZS5hc3luY0RlcD1hfWVsc2UgSXMoZSxhLHQpfWVsc2UgVnMoZSx0KX1mdW5jdGlvbiBJcyhlLHQsbil7Zyh0KT9lLnR5cGUuX19zc3JJbmxpbmVSZW5kZXI/ZS5zc3JSZW5kZXI9dDplLnJlbmRlcj10OnkodCkmJihlLnNldHVwU3RhdGU9b24odCkpLFZzKGUsbil9dmFyIExzLFJzO2Z1bmN0aW9uIHpzKGUpe0xzPWUsUnM9ZT0+e2UucmVuZGVyLl9yYyYmKGUud2l0aFByb3h5PW5ldyBQcm94eShlLmN0eCxwYSkpfX12YXIgQnM9KCk9PiFMcztmdW5jdGlvbiBWcyhlLHQsbil7bGV0IGk9ZS50eXBlO2lmKCFlLnJlbmRlcil7aWYoIXQmJkxzJiYhaS5yZW5kZXIpe2xldCB0PWkudGVtcGxhdGV8fFBhKGUpLnRlbXBsYXRlO2lmKHQpe2xldHtpc0N1c3RvbUVsZW1lbnQ6bixjb21waWxlck9wdGlvbnM6cn09ZS5hcHBDb250ZXh0LmNvbmZpZyx7ZGVsaW1pdGVyczphLGNvbXBpbGVyT3B0aW9uczpvfT1pLGM9cyhzKHtpc0N1c3RvbUVsZW1lbnQ6bixkZWxpbWl0ZXJzOmF9LHIpLG8pO2kucmVuZGVyPUxzKHQsYyl9fWUucmVuZGVyPWkucmVuZGVyfHxyLFJzJiZScyhlKX17bGV0IHQ9QXMoZSk7R2UoKTt0cnl7QWEoZSl9ZmluYWxseXtLZSgpLHQoKX19fXZhciBIcz17Z2V0KGUsdCl7cmV0dXJuIHooZSxgZ2V0YCxgYCksZVt0XX19O2Z1bmN0aW9uIFVzKGUpe3JldHVybnthdHRyczpuZXcgUHJveHkoZS5hdHRycyxIcyksc2xvdHM6ZS5zbG90cyxlbWl0OmUuZW1pdCxleHBvc2U6dD0+e2UuZXhwb3NlZD10fHx7fX19fWZ1bmN0aW9uIFdzKGUpe3JldHVybiBlLmV4cG9zZWQ/ZS5leHBvc2VQcm94eXx8PW5ldyBQcm94eShvbihKdChlLmV4cG9zZWQpKSx7Z2V0KHQsbil7aWYobiBpbiB0KXJldHVybiB0W25dO2lmKG4gaW4gdWEpcmV0dXJuIHVhW25dKGUpfSxoYXMoZSx0KXtyZXR1cm4gdCBpbiBlfHx0IGluIHVhfX0pOmUucHJveHl9ZnVuY3Rpb24gR3MoZSx0PSEwKXtyZXR1cm4gZyhlKT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6ZS5uYW1lfHx0JiZlLl9fbmFtZX1mdW5jdGlvbiBLcyhlKXtyZXR1cm4gZyhlKSYmYF9fdmNjT3B0c2BpbiBlfXZhciBxcz0oZSx0KT0+aG4oZSx0LE5zKTtmdW5jdGlvbiBKcyhlLHQsbil7dHJ5e3JzKC0xKTtsZXQgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByPT09Mj95KHQpJiYhZCh0KT9zcyh0KT9KKGUsbnVsbCxbdF0pOkooZSx0KTpKKGUsbnVsbCx0KToocj4zP249QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpOnI9PT0zJiZzcyhuKSYmKG49W25dKSxKKGUsdCxuKSl9ZmluYWxseXtycygxKX19ZnVuY3Rpb24gWXMoKXt9ZnVuY3Rpb24gWHMoZSx0LG4scil7bGV0IGk9bltyXTtpZihpJiZacyhpLGUpKXJldHVybiBpO2xldCBhPXQoKTtyZXR1cm4gYS5tZW1vPWUuc2xpY2UoKSxhLmNhY2hlSW5kZXg9cixuW3JdPWF9ZnVuY3Rpb24gWnMoZSx0KXtsZXQgbj1lLm1lbW87aWYobi5sZW5ndGghPXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSsrKWlmKGoobltlXSx0W2VdKSlyZXR1cm4hMTtyZXR1cm4gbnM+MCYmcSYmcS5wdXNoKGUpLCEwfXZhciBRcz1gMy41LjQxYCwkcz1yLGVjPUFuLHRjPVhuLG5jPVFuLHJjPXtjcmVhdGVDb21wb25lbnRJbnN0YW5jZTpFcyxzZXR1cENvbXBvbmVudDpQcyxyZW5kZXJDb21wb25lbnRSb290OmVvLHNldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTplcixpc1ZOb2RlOnNzLG5vcm1hbGl6ZVZOb2RlOnlzLGdldENvbXBvbmVudFB1YmxpY0luc3RhbmNlOldzLGVuc3VyZVZhbGlkVk5vZGU6c2EscHVzaFdhcm5pbmdDb250ZXh0OkVuLHBvcFdhcm5pbmdDb250ZXh0OkRufSxpYz10eXBlb2Ygd2luZG93PGB1YCxhYyxvYz1lPT5hYz1lLHNjPVN5bWJvbCgpO2Z1bmN0aW9uIGNjKGUpe3JldHVybiBlJiZ0eXBlb2YgZT09YG9iamVjdGAmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKT09PWBbb2JqZWN0IE9iamVjdF1gJiZ0eXBlb2YgZS50b0pTT04hPWBmdW5jdGlvbmB9dmFyIGxjPXR5cGVvZiB3aW5kb3c9PWBvYmplY3RgJiZ3aW5kb3cud2luZG93PT09d2luZG93P3dpbmRvdzp0eXBlb2Ygc2VsZj09YG9iamVjdGAmJnNlbGYuc2VsZj09PXNlbGY/c2VsZjp0eXBlb2YgZ2xvYmFsPT1gb2JqZWN0YCYmZ2xvYmFsLmdsb2JhbD09PWdsb2JhbD9nbG9iYWw6dHlwZW9mIGdsb2JhbFRoaXM9PWBvYmplY3RgP2dsb2JhbFRoaXM6e0hUTUxFbGVtZW50Om51bGx9O2Z1bmN0aW9uIHVjKGUse2F1dG9Cb206dD0hMX09e30pe3JldHVybiB0JiYvXlxzKig/OnRleHRcL1xTKnxhcHBsaWNhdGlvblwveG1sfFxTKlwvXFMqXCt4bWwpXHMqOy4qY2hhcnNldFxzKj1ccyp1dGYtOC9pLnRlc3QoZS50eXBlKT9uZXcgQmxvYihbYO+7v2AsZV0se3R5cGU6ZS50eXBlfSk6ZX1mdW5jdGlvbiBkYyhlLHQsbil7bGV0IHI9bmV3IFhNTEh0dHBSZXF1ZXN0O3Iub3BlbihgR0VUYCxlKSxyLnJlc3BvbnNlVHlwZT1gYmxvYmAsci5vbmxvYWQ9ZnVuY3Rpb24oKXtnYyhyLnJlc3BvbnNlLHQsbil9LHIub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoYGNvdWxkIG5vdCBkb3dubG9hZCBmaWxlYCl9LHIuc2VuZCgpfWZ1bmN0aW9uIGZjKGUpe2xldCB0PW5ldyBYTUxIdHRwUmVxdWVzdDt0Lm9wZW4oYEhFQURgLGUsITEpO3RyeXt0LnNlbmQoKX1jYXRjaHt9cmV0dXJuIHQuc3RhdHVzPj0yMDAmJnQuc3RhdHVzPD0yOTl9ZnVuY3Rpb24gcGMoZSl7dHJ5e2UuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChgY2xpY2tgKSl9Y2F0Y2h7bGV0IHQ9bmV3IE1vdXNlRXZlbnQoYGNsaWNrYCx7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLHZpZXc6d2luZG93LGRldGFpbDowLHNjcmVlblg6ODAsc2NyZWVuWToyMCxjbGllbnRYOjgwLGNsaWVudFk6MjAsY3RybEtleTohMSxhbHRLZXk6ITEsc2hpZnRLZXk6ITEsbWV0YUtleTohMSxidXR0b246MCxyZWxhdGVkVGFyZ2V0Om51bGx9KTtlLmRpc3BhdGNoRXZlbnQodCl9fXZhciBtYz10eXBlb2YgbmF2aWdhdG9yPT1gb2JqZWN0YD9uYXZpZ2F0b3I6e3VzZXJBZ2VudDpgYH0saGM9L01hY2ludG9zaC8udGVzdChtYy51c2VyQWdlbnQpJiYvQXBwbGVXZWJLaXQvLnRlc3QobWMudXNlckFnZW50KSYmIS9TYWZhcmkvLnRlc3QobWMudXNlckFnZW50KSxnYz1pYz90eXBlb2YgSFRNTEFuY2hvckVsZW1lbnQ8YHVgJiZgZG93bmxvYWRgaW4gSFRNTEFuY2hvckVsZW1lbnQucHJvdG90eXBlJiYhaGM/X2M6YG1zU2F2ZU9yT3BlbkJsb2JgaW4gbWM/dmM6eWM6KCk9Pnt9O2Z1bmN0aW9uIF9jKGUsdD1gZG93bmxvYWRgLG4pe2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGFgKTtyLmRvd25sb2FkPXQsci5yZWw9YG5vb3BlbmVyYCx0eXBlb2YgZT09YHN0cmluZ2A/KHIuaHJlZj1lLHIub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP3BjKHIpOmZjKHIuaHJlZik/ZGMoZSx0LG4pOihyLnRhcmdldD1gX2JsYW5rYCxwYyhyKSkpOihyLmhyZWY9VVJMLmNyZWF0ZU9iamVjdFVSTChlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VVJMLnJldm9rZU9iamVjdFVSTChyLmhyZWYpfSw0ZTQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtwYyhyKX0sMCkpfWZ1bmN0aW9uIHZjKGUsdD1gZG93bmxvYWRgLG4pe2lmKHR5cGVvZiBlPT1gc3RyaW5nYCl7aWYoZmMoZSkpZGMoZSx0LG4pO2Vsc2V7bGV0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgYWApO3QuaHJlZj1lLHQudGFyZ2V0PWBfYmxhbmtgLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtwYyh0KX0pfX1lbHNlIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKHVjKGUsbiksdCl9ZnVuY3Rpb24geWMoZSx0LG4scil7aWYocnx8PW9wZW4oYGAsYF9ibGFua2ApLHImJihyLmRvY3VtZW50LnRpdGxlPXIuZG9jdW1lbnQuYm9keS5pbm5lclRleHQ9YGRvd25sb2FkaW5nLi4uYCksdHlwZW9mIGU9PWBzdHJpbmdgKXJldHVybiBkYyhlLHQsbik7bGV0IGk9ZS50eXBlPT09YGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbWAsYT0vY29uc3RydWN0b3IvaS50ZXN0KFN0cmluZyhsYy5IVE1MRWxlbWVudCkpfHxgc2FmYXJpYGluIGxjLG89L0NyaU9TXC9bXGRdKy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtpZigob3x8aSYmYXx8aGMpJiZ0eXBlb2YgRmlsZVJlYWRlcjxgdWApe2xldCB0PW5ldyBGaWxlUmVhZGVyO3Qub25sb2FkZW5kPWZ1bmN0aW9uKCl7bGV0IGU9dC5yZXN1bHQ7aWYodHlwZW9mIGUhPWBzdHJpbmdgKXRocm93IHI9bnVsbCxFcnJvcihgV3JvbmcgcmVhZGVyLnJlc3VsdCB0eXBlYCk7ZT1vP2U6ZS5yZXBsYWNlKC9eZGF0YTpbXjtdKjsvLGBkYXRhOmF0dGFjaG1lbnQvZmlsZTtgKSxyP3IubG9jYXRpb24uaHJlZj1lOmxvY2F0aW9uLmFzc2lnbihlKSxyPW51bGx9LHQucmVhZEFzRGF0YVVSTChlKX1lbHNle2xldCB0PVVSTC5jcmVhdGVPYmplY3RVUkwoZSk7cj9yLmxvY2F0aW9uLmFzc2lnbih0KTpsb2NhdGlvbi5ocmVmPXQscj1udWxsLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtVUkwucmV2b2tlT2JqZWN0VVJMKHQpfSw0ZTQpfX12YXJ7YXNzaWduOmJjfT1PYmplY3Q7ZnVuY3Rpb24geGMoKXtsZXQgZT13ZSghMCksdD1lLnJ1bigoKT0+WnQoe30pKSxuPVtdLHI9W10saT1KdCh7aW5zdGFsbChlKXtvYyhpKSxpLl9hPWUsZS5wcm92aWRlKHNjLGkpLGUuY29uZmlnLmdsb2JhbFByb3BlcnRpZXMuJHBpbmlhPWksci5mb3JFYWNoKGU9Pm4ucHVzaChlKSkscj1bXX0sdXNlKGUpe3JldHVybiB0aGlzLl9hP24ucHVzaChlKTpyLnB1c2goZSksdGhpc30sX3A6bixfYTpudWxsLF9lOmUsX3M6bmV3IE1hcCxzdGF0ZTp0fSk7cmV0dXJuIGl9dmFyIFNjPSgpPT57fTtmdW5jdGlvbiBDYyhlLHQsbixyPVNjKXtlLmFkZCh0KTtsZXQgaT0oKT0+e2UuZGVsZXRlKHQpJiZyKCl9O3JldHVybiFuJiZUZSgpJiZFZShpKSxpfWZ1bmN0aW9uIHdjKGUsLi4udCl7ZS5mb3JFYWNoKGU9PntlKC4uLnQpfSl9dmFyIFRjPWU9PmUoKSxFYz1TeW1ib2woKSxEYz1TeW1ib2woKTtmdW5jdGlvbiBPYyhlLHQpe2UgaW5zdGFuY2VvZiBNYXAmJnQgaW5zdGFuY2VvZiBNYXA/dC5mb3JFYWNoKCh0LG4pPT5lLnNldChuLHQpKTplIGluc3RhbmNlb2YgU2V0JiZ0IGluc3RhbmNlb2YgU2V0JiZ0LmZvckVhY2goZS5hZGQsZSk7Zm9yKGxldCBuIGluIHQpe2lmKCFPYmplY3QuaGFzT3duKHQsbikpY29udGludWU7bGV0IHI9dFtuXSxpPWVbbl07ZVtuXT1jYyhpKSYmY2MocikmJk9iamVjdC5oYXNPd24oZSxuKSYmIVYocikmJiFXdChyKT9PYyhpLHIpOnJ9cmV0dXJuIGV9dmFyIGtjPVN5bWJvbCgpO2Z1bmN0aW9uIEFjKGUpe3JldHVybiFlfHx0eXBlb2YgZSE9YG9iamVjdGB8fCFPYmplY3QuaGFzT3duKGUsa2MpfXZhcnthc3NpZ246amN9PU9iamVjdDtmdW5jdGlvbiBNYyhlKXtyZXR1cm4hIShWKGUpJiZlLmVmZmVjdCl9ZnVuY3Rpb24gTmMoZSx0LG4scil7bGV0e3N0YXRlOmksYWN0aW9uczphLGdldHRlcnM6b309dCxzPW4uc3RhdGUudmFsdWVbZV0sYztmdW5jdGlvbiBsKCl7cmV0dXJuIHN8fChuLnN0YXRlLnZhbHVlW2VdPWk/aSgpOnt9KSxqYyhsbihuLnN0YXRlLnZhbHVlW2VdKSxhLE9iamVjdC5rZXlzKG98fHt9KS5yZWR1Y2UoKHQscik9Pih0W3JdPUp0KHFzKCgpPT57b2Mobik7bGV0IHQ9bi5fcy5nZXQoZSk7cmV0dXJuIG9bcl0uY2FsbCh0LHQpfSkpLHQpLHt9KSl9cmV0dXJuIGM9UGMoZSxsLHQsbixyLCEwKSxjfWZ1bmN0aW9uIFBjKGUsdCxuPXt9LHIsaSxhKXtsZXQgbyxzPWpjKHthY3Rpb25zOnt9fSxuKSxjPXtkZWVwOiEwfSxsLHUsZD1uZXcgU2V0LGY9bmV3IFNldCxwLG09ci5zdGF0ZS52YWx1ZVtlXTshYSYmIW0mJihyLnN0YXRlLnZhbHVlW2VdPXt9KTtsZXQgaDtmdW5jdGlvbiBnKHQpe2xldCBuO2w9dT0hMSx0eXBlb2YgdD09YGZ1bmN0aW9uYD8odChyLnN0YXRlLnZhbHVlW2VdKSxuPXt0eXBlOmBwYXRjaCBmdW5jdGlvbmAsc3RvcmVJZDplLGV2ZW50czpwfSk6KE9jKHIuc3RhdGUudmFsdWVbZV0sdCksbj17dHlwZTpgcGF0Y2ggb2JqZWN0YCxwYXlsb2FkOnQsc3RvcmVJZDplLGV2ZW50czpwfSk7bGV0IGk9aD1TeW1ib2woKTtWbigpLnRoZW4oKCk9PntoPT09aSYmKGw9ITApfSksdT0hMCx3YyhkLG4sci5zdGF0ZS52YWx1ZVtlXSl9bGV0IF89YT9mdW5jdGlvbigpe2xldHtzdGF0ZTplfT1uLHQ9ZT9lKCk6e307dGhpcy4kcGF0Y2goZT0+e2pjKGUsdCl9KX06U2M7ZnVuY3Rpb24gdigpe28uc3RvcCgpLGQuY2xlYXIoKSxmLmNsZWFyKCksci5fcy5kZWxldGUoZSl9bGV0IHk9KHQsbj1gYCk9PntpZihFYyBpbiB0KXJldHVybiB0W0RjXT1uLHQ7bGV0IGk9ZnVuY3Rpb24oKXtvYyhyKTtsZXQgbj1BcnJheS5mcm9tKGFyZ3VtZW50cyksYT1uZXcgU2V0LG89bmV3IFNldDtmdW5jdGlvbiBzKGUpe2EuYWRkKGUpfWZ1bmN0aW9uIGMoZSl7by5hZGQoZSl9d2MoZix7YXJnczpuLG5hbWU6aVtEY10sc3RvcmU6YixhZnRlcjpzLG9uRXJyb3I6Y30pO2xldCBsO3RyeXtsPXQuYXBwbHkodGhpcyYmdGhpcy4kaWQ9PT1lP3RoaXM6YixuKX1jYXRjaChlKXt0aHJvdyB3YyhvLGUpLGV9cmV0dXJuIGwgaW5zdGFuY2VvZiBQcm9taXNlP2wudGhlbihlPT4od2MoYSxlKSxlKSkuY2F0Y2goZT0+KHdjKG8sZSksUHJvbWlzZS5yZWplY3QoZSkpKTood2MoYSxsKSxsKX07cmV0dXJuIGlbRWNdPSEwLGlbRGNdPW4saX0sYj16dCh7X3A6ciwkaWQ6ZSwkb25BY3Rpb246Q2MuYmluZChudWxsLGYpLCRwYXRjaDpnLCRyZXNldDpfLCRzdWJzY3JpYmUodCxuPXt9KXtpZihkLmhhcyh0KSlyZXR1cm4gU2M7bGV0IGk9Q2MoZCx0LG4uZGV0YWNoZWQsKCk9PmEoKSksYT1vLnJ1bigoKT0+aHIoKCk9PnIuc3RhdGUudmFsdWVbZV0scj0+eyhuLmZsdXNoPT09YHN5bmNgP3U6bCkmJnQoe3N0b3JlSWQ6ZSx0eXBlOmBkaXJlY3RgLGV2ZW50czpwfSxyKX0samMoe30sYyxuKSkpO3JldHVybiBpfSwkZGlzcG9zZTp2fSk7ci5fcy5zZXQoZSxiKTtsZXQgeD0oci5fYSYmci5fYS5ydW5XaXRoQ29udGV4dHx8VGMpKCgpPT5yLl9lLnJ1bigoKT0+KG89d2UoKSkucnVuKCgpPT50KHthY3Rpb246eX0pKSkpO2ZvcihsZXQgdCBpbiB4KXtsZXQgbj14W3RdO1YobikmJiFNYyhuKXx8V3Qobik/YXx8KG0mJkFjKG4pJiYoVihuKT9uLnZhbHVlPW1bdF06KChuIGluc3RhbmNlb2YgU2V0fHxuIGluc3RhbmNlb2YgTWFwKSYmbi5jbGVhcigpLE9jKG4sbVt0XSkpKSxyLnN0YXRlLnZhbHVlW2VdW3RdPW4pOnR5cGVvZiBuPT1gZnVuY3Rpb25gJiYoeFt0XT15KG4sdCkscy5hY3Rpb25zW3RdPW4pfXJldHVybiBqYyhiLHgpLGpjKEIoYikseCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGIsIiRzdGF0ZSIse2dldDooKT0+ci5zdGF0ZS52YWx1ZVtlXSxzZXQ6ZT0+e2codD0+e2pjKHQsZSl9KX19KSxyLl9wLmZvckVhY2goZT0+e2xldCB0PW8ucnVuKCgpPT5lKHtzdG9yZTpiLGFwcDpyLl9hLHBpbmlhOnIsb3B0aW9uczpzfSkpO2pjKGIsdCl9KSxtJiZhJiZuLmh5ZHJhdGUmJm4uaHlkcmF0ZShiLiRzdGF0ZSxtKSxsPSEwLHU9ITAsYn1mdW5jdGlvbiBGYyhlLHQsbil7bGV0IHIsaT10eXBlb2YgdD09YGZ1bmN0aW9uYDtyPWk/bjp0O2Z1bmN0aW9uIGEobixhKXtsZXQgbz1scigpO3JldHVybiBufHw9bz9jcihzYyxudWxsKTpudWxsLG4mJm9jKG4pLG49YWMsbi5fcy5oYXMoZSl8fChpP1BjKGUsdCxyLG4pOk5jKGUscixuKSksbi5fcy5nZXQoZSl9cmV0dXJuIGEuJGlkPWUsYX1mdW5jdGlvbiBJYyhlKXtsZXQgdD1CKGUpLG49e307Zm9yKGxldCByIGluIHQpe2xldCBpPXRbcl07aT8uZWZmZWN0P25bcl09cXMoe2dldDooKT0+ZVtyXSxzZXQodCl7ZVtyXT10fX0pOihWKGkpfHxXdChpKSkmJihuW3JdPWZuKGUscikpfXJldHVybiBufXZhciBMYz17cHJlZml4OmBmYXNgLGljb25OYW1lOmBtYWduaWZ5aW5nLWdsYXNzYCxpY29uOls1MTIsNTEyLFsxMjgyNjksYHNlYXJjaGBdLGBmMDAyYCxgTTQxNiAyMDhjMCA0NS45LTE0LjkgODguMy00MCAxMjIuN0w1MDIuNiA0NTcuNGMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwzMzAuNyAzNzZDMjk2LjMgNDAxLjEgMjUzLjkgNDE2IDIwOCA0MTYgOTMuMSA0MTYgMCAzMjIuOSAwIDIwOFM5My4xIDAgMjA4IDAgNDE2IDkzLjEgNDE2IDIwOHpNMjA4IDM1MmExNDQgMTQ0IDAgMSAwIDAtMjg4IDE0NCAxNDQgMCAxIDAgMCAyODh6YF19LFJjPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGtleWAsaWNvbjpbNTEyLDUxMixbMTI4MjczXSxgZjA4NGAsYE0zMzYgMzUyYzk3LjIgMCAxNzYtNzguOCAxNzYtMTc2UzQzMy4yIDAgMzM2IDAgMTYwIDc4LjggMTYwIDE3NmMwIDE4LjcgMi45IDM2LjggOC4zIDUzLjdMNyAzOTFjLTQuNSA0LjUtNyAxMC42LTcgMTdsMCA4MGMwIDEzLjMgMTAuNyAyNCAyNCAyNGw4MCAwYzEzLjMgMCAyNC0xMC43IDI0LTI0bDAtNDAgNDAgMGMxMy4zIDAgMjQtMTAuNyAyNC0yNGwwLTQwIDQwIDBjNi40IDAgMTIuNS0yLjUgMTctN2wzMy4zLTMzLjNjMTYuOSA1LjQgMzUgOC4zIDUzLjcgOC4zek0zNzYgOTZhNDAgNDAgMCAxIDEgMCA4MCA0MCA0MCAwIDEgMSAwLTgwemBdfSx6Yz17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0LXVwYCxpY29uOlszODQsNTEyLFtgc29ydC1hc2NgXSxgZjBkZWAsYE0zMiAyMjRjLTEyLjkgMC0yNC42LTcuOC0yOS42LTE5LjhTLjIgMTc4LjUgOS40IDE2OS40bDE2MC0xNjBjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTYwIDE2MGM5LjIgOS4yIDExLjkgMjIuOSA2LjkgMzQuOVMzNjQuOSAyMjQgMzUyIDIyNEwzMiAyMjR6YF19LEJjPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGV5ZWAsaWNvbjpbNTc2LDUxMixbMTI4MDY1XSxgZjA2ZWAsYE0yODggMzJjLTgwLjggMC0xNDUuNSAzNi44LTE5Mi42IDgwLjYtNDYuOCA0My41LTc4LjEgOTUuNC05MyAxMzEuMS0zLjMgNy45LTMuMyAxNi43IDAgMjQuNiAxNC45IDM1LjcgNDYuMiA4Ny43IDkzIDEzMS4xIDQ3LjEgNDMuNyAxMTEuOCA4MC42IDE5Mi42IDgwLjZzMTQ1LjUtMzYuOCAxOTIuNi04MC42YzQ2LjgtNDMuNSA3OC4xLTk1LjQgOTMtMTMxLjEgMy4zLTcuOSAzLjMtMTYuNyAwLTI0LjYtMTQuOS0zNS43LTQ2LjItODcuNy05My0xMzEuMS00Ny4xLTQzLjctMTExLjgtODAuNi0xOTIuNi04MC42ek0xNDQgMjU2YTE0NCAxNDQgMCAxIDEgMjg4IDAgMTQ0IDE0NCAwIDEgMSAtMjg4IDB6bTE0NC02NGMwIDM1LjMtMjguNyA2NC02NCA2NC0xMS41IDAtMjIuMy0zLTMxLjctOC40LTEgMTAuOS0uMSAyMi4xIDIuOSAzMy4yIDEzLjcgNTEuMiA2Ni40IDgxLjYgMTE3LjYgNjcuOXM4MS42LTY2LjQgNjcuOS0xMTcuNmMtMTIuMi00NS43LTU1LjUtNzQuOC0xMDEuMS03MC44IDUuMyA5LjMgOC40IDIwLjEgOC40IDMxLjd6YF19LFZjPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGNoZXZyb24tdXBgLGljb246WzQ0OCw1MTIsW10sYGYwNzdgLGBNMjAxLjQgMTA1LjRjMTIuNS0xMi41IDMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3MtMzIuOCAxMi41LTQ1LjMgMEwyMjQgMTczLjMgNTQuNiAzNDIuNmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNsMTkyLTE5MnpgXX0sSGM9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hldnJvbi1yaWdodGAsaWNvbjpbMzIwLDUxMixbOTAwMl0sYGYwNTRgLGBNMzExLjEgMjMzLjRjMTIuNSAxMi41IDEyLjUgMzIuOCAwIDQ1LjNsLTE5MiAxOTJjLTEyLjUgMTIuNS0zMi44IDEyLjUtNDUuMyAwcy0xMi41LTMyLjggMC00NS4zTDI0My4yIDI1NiA3My45IDg2LjZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zczMyLjgtMTIuNSA0NS4zIDBsMTkyIDE5MnpgXX0sVWM9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgdXNlcnNgLGljb246WzY0MCw1MTIsW10sYGYwYzBgLGBNMzIwIDE2YTEwNCAxMDQgMCAxIDEgMCAyMDggMTA0IDEwNCAwIDEgMSAwLTIwOHpNOTYgODhhNzIgNzIgMCAxIDEgMCAxNDQgNzIgNzIgMCAxIDEgMC0xNDR6TTAgNDE2YzAtNzAuNyA1Ny4zLTEyOCAxMjgtMTI4IDEyLjggMCAyNS4yIDEuOSAzNi45IDUuNC0zMi45IDM2LjgtNTIuOSA4NS40LTUyLjkgMTM4LjZsMCAxNmMwIDExLjQgMi40IDIyLjIgNi43IDMyTDMyIDQ4MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJsMC0zMnptNTIxLjMgNjRjNC4zLTkuOCA2LjctMjAuNiA2LjctMzJsMC0xNmMwLTUzLjItMjAtMTAxLjgtNTIuOS0xMzguNiAxMS43LTMuNSAyNC4xLTUuNCAzNi45LTUuNCA3MC43IDAgMTI4IDU3LjMgMTI4IDEyOGwwIDMyYzAgMTcuNy0xNC4zIDMyLTMyIDMybC04Ni43IDB6TTQ3MiAxNjBhNzIgNzIgMCAxIDEgMTQ0IDAgNzIgNzIgMCAxIDEgLTE0NCAwek0xNjAgNDMyYzAtODguNCA3MS42LTE2MCAxNjAtMTYwczE2MCA3MS42IDE2MCAxNjBsMCAxNmMwIDE3LjctMTQuMyAzMi0zMiAzMmwtMjU2IDBjLTE3LjcgMC0zMi0xNC4zLTMyLTMybDAtMTZ6YF19LFdjPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGhlYXJ0LXB1bHNlYCxpY29uOls1MTIsNTEyLFtgaGVhcnRiZWF0YF0sYGYyMWVgLGBNMjU2IDEwNy45TDI0MSA4Ny4xQzIxNiA1Mi41IDE3NS45IDMyIDEzMy4xIDMyIDU5LjYgMzIgMCA5MS42IDAgMTY1LjFsMCAyLjZjMCAyMy42IDYuMiA0OCAxNi42IDcyLjNsMTA2IDBjMy4yIDAgNi4xLTEuOSA3LjQtNC45bDMxLjgtNzYuM2MzLjctOC44IDEyLjMtMTQuNiAyMS44LTE0LjhzMTguMyA1LjQgMjIuMiAxNC4xbDUxLjMgMTEzLjkgNDEuNC04Mi44YzQuMS04LjEgMTIuNC0xMy4zIDIxLjUtMTMuM3MxNy40IDUuMSAyMS41IDEzLjNsMjMuMiA0Ni4zYzEuNCAyLjcgNC4xIDQuNCA3LjIgNC40bDEyMy42IDBjMTAuNS0yNC4zIDE2LjYtNDguNyAxNi42LTcyLjNsMC0yLjZDNTEyIDkxLjYgNDUyLjQgMzIgMzc4LjkgMzIgMzM2LjIgMzIgMjk2IDUyLjUgMjcxIDg3LjFsLTE1IDIwLjd6TTQ2OS42IDI4OGwtOTcuOCAwYy0yMS4yIDAtNDAuNi0xMi01MC4xLTMxbC0xLjctMy40LTQyLjUgODUuMWMtNC4xIDguMy0xMi43IDEzLjUtMjIgMTMuM3MtMTcuNi01LjctMjEuNC0xNC4xbC00OS4zLTEwOS41LTEwLjUgMjUuMmMtOC43IDIwLjktMjkuMSAzNC41LTUxLjcgMzQuNWwtODAuMiAwYzQ3LjIgNzMuOCAxMjMgMTQxLjcgMTcwLjQgMTc3LjkgMTIuNCA5LjQgMjcuNiAxNC4xIDQzLjEgMTQuMXMzMC44LTQuNiA0My4xLTE0LjFDMzQ2LjYgNDI5LjcgNDIyLjQgMzYxLjggNDY5LjYgMjg4emBdfSxHYz17cHJlZml4OmBmYXNgLGljb25OYW1lOmBjaXJjbGUteG1hcmtgLGljb246WzUxMiw1MTIsWzYxNTMyLGB0aW1lcy1jaXJjbGVgLGB4bWFyay1jaXJjbGVgXSxgZjA1N2AsYE0yNTYgNTEyYTI1NiAyNTYgMCAxIDAgMC01MTIgMjU2IDI1NiAwIDEgMCAwIDUxMnpNMTY3IDE2N2M5LjQtOS40IDI0LjYtOS40IDMzLjkgMGw1NSA1NSA1NS01NWM5LjQtOS40IDI0LjYtOS40IDMzLjkgMHM5LjQgMjQuNiAwIDMzLjlsLTU1IDU1IDU1IDU1YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45cy0yNC42IDkuNC0zMy45IDBsLTU1LTU1LTU1IDU1Yy05LjQgOS40LTI0LjYgOS40LTMzLjkgMHMtOS40LTI0LjYgMC0zMy45bDU1LTU1LTU1LTU1Yy05LjQtOS40LTkuNC0yNC42IDAtMzMuOXpgXX0sS2M9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2lyY2xlLWV4Y2xhbWF0aW9uYCxpY29uOls1MTIsNTEyLFtgZXhjbGFtYXRpb24tY2lyY2xlYF0sYGYwNmFgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6bTAtMTkyYTMyIDMyIDAgMSAwIDAgNjQgMzIgMzIgMCAxIDAgMC02NHptMC0xOTJjLTE4LjIgMC0zMi43IDE1LjUtMzEuNCAzMy43bDcuNCAxMDRjLjkgMTIuNiAxMS40IDIyLjMgMjMuOSAyMi4zIDEyLjYgMCAyMy05LjcgMjMuOS0yMi4zbDcuNC0xMDRjMS4zLTE4LjItMTMuMS0zMy43LTMxLjQtMzMuN3pgXX0scWM9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hlY2tgLGljb246WzQ0OCw1MTIsWzEwMDAzLDEwMDA0XSxgZjAwY2AsYE00MzQuOCA3MC4xYzE0LjMgMTAuNCAxNy41IDMwLjQgNy4xIDQ0LjdsLTI1NiAzNTJjLTUuNSA3LjYtMTQgMTIuMy0yMy40IDEzLjFzLTE4LjUtMi43LTI1LjEtOS4zbC0xMjgtMTI4Yy0xMi41LTEyLjUtMTIuNS0zMi44IDAtNDUuM3MzMi44LTEyLjUgNDUuMyAwbDEwMS41IDEwMS41IDIzNC0zMjEuN2MxMC40LTE0LjMgMzAuNC0xNy41IDQ0LjctNy4xemBdfSxKYz17cHJlZml4OmBmYXNgLGljb25OYW1lOmBob3VzZWAsaWNvbjpbNTEyLDUxMixbMTI3OTY4LDYzNDk4LDYzNTAwLGBob21lYCxgaG9tZS1hbHRgLGBob21lLWxnLWFsdGBdLGBmMDE1YCxgTTI3Ny44IDguNmMtMTIuMy0xMS40LTMxLjMtMTEuNC00My41IDBsLTIyNCAyMDhjLTkuNiA5LTEyLjggMjIuOS04IDM1LjFTMTguOCAyNzIgMzIgMjcybDE2IDAgMCAxNzZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMjg4IDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0xNzYgMTYgMGMxMy4yIDAgMjUtOC4xIDI5LjgtMjAuM3MxLjYtMjYuMi04LTM1LjFsLTIyNC0yMDh6TTI0MCAzMjBsMzIgMGMyNi41IDAgNDggMjEuNSA0OCA0OGwwIDk2LTEyOCAwIDAtOTZjMC0yNi41IDIxLjUtNDggNDgtNDh6YF19LFljPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHNsaWRlcnNgLGljb246WzUxMiw1MTIsW2BzbGlkZXJzLWhgXSxgZjFkZWAsYE0zMiA2NEMxNC4zIDY0IDAgNzguMyAwIDk2czE0LjMgMzIgMzIgMzJsODYuNyAwYzEyLjMgMjguMyA0MC41IDQ4IDczLjMgNDhzNjEtMTkuNyA3My4zLTQ4TDQ4MCAxMjhjMTcuNyAwIDMyLTE0LjMgMzItMzJzLTE0LjMtMzItMzItMzJMMjY1LjMgNjRDMjUzIDM1LjcgMjI0LjggMTYgMTkyIDE2cy02MSAxOS43LTczLjMgNDhMMzIgNjR6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDI0Ni43IDBjMTIuMyAyOC4zIDQwLjUgNDggNzMuMyA0OHM2MS0xOS43IDczLjMtNDhsNTQuNyAwYzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC01NC43IDBjLTEyLjMtMjguMy00MC41LTQ4LTczLjMtNDhzLTYxIDE5LjctNzMuMyA0OEwzMiAyMjR6bTAgMTYwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDU0LjcgMGMxMi4zIDI4LjMgNDAuNSA0OCA3My4zIDQ4czYxLTE5LjcgNzMuMy00OEw0ODAgNDQ4YzE3LjcgMCAzMi0xNC4zIDMyLTMycy0xNC4zLTMyLTMyLTMybC0yNDYuNyAwYy0xMi4zLTI4LjMtNDAuNS00OC03My4zLTQ4cy02MSAxOS43LTczLjMgNDhMMzIgMzg0emBdfSxYYz17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0YCxpY29uOlszODQsNTEyLFtgdW5zb3J0ZWRgXSxgZjBkY2AsYE0yLjQgMjA0LjJjNSAxMiAxNi42IDE5LjggMjkuNiAxOS44bDMyMCAwYzEyLjkgMCAyNC42LTcuOCAyOS42LTE5LjhzMi4yLTI1LjctNi45LTM0LjlsLTE2MC0xNjBjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwbC0xNjAgMTYwYy05LjIgOS4yLTExLjkgMjIuOS02LjkgMzQuOXptMCAxMDMuNWMtNSAxMi0yLjIgMjUuNyA2LjkgMzQuOWwxNjAgMTYwYzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE2MC0xNjBjOS4yLTkuMiAxMS45LTIyLjkgNi45LTM0LjlTMzY0LjkgMjg4IDM1MiAyODhMMzIgMjg4Yy0xMi45IDAtMjQuNiA3LjgtMjkuNiAxOS44emBdfSxaYz17cHJlZml4OmBmYXNgLGljb25OYW1lOmB4bWFya2AsaWNvbjpbMzg0LDUxMixbMTI4NDczLDEwMDA1LDEwMDA2LDEwMDYwLDIxNSxgY2xvc2VgLGBtdWx0aXBseWAsYHJlbW92ZWAsYHRpbWVzYF0sYGYwMGRgLGBNNTUuMSA3My40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM0wxNDcuMiAyNTYgOS45IDM5My40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuM3MzMi44IDEyLjUgNDUuMyAwTDE5Mi41IDMwMS4zIDMyOS45IDQzOC42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwczEyLjUtMzIuOCAwLTQ1LjNMMjM3LjggMjU2IDM3NS4xIDExOC42YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDE5Mi41IDIxMC43IDU1LjEgNzMuNHpgXX0sUWM9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2lyY2xlLWNoZWNrYCxpY29uOls1MTIsNTEyLFs2MTUzMyxgY2hlY2stY2lyY2xlYF0sYGYwNThgLGBNMjU2IDUxMmEyNTYgMjU2IDAgMSAxIDAtNTEyIDI1NiAyNTYgMCAxIDEgMCA1MTJ6TTM3NCAxNDUuN2MtMTAuNy03LjgtMjUuNy01LjQtMzMuNSA1LjNMMjIxLjEgMzE1LjIgMTY5IDI2My4xYy05LjQtOS40LTI0LjYtOS40LTMzLjkgMHMtOS40IDI0LjYgMCAzMy45bDcyIDcyYzUgNSAxMS44IDcuNSAxOC44IDdzMTMuNC00LjEgMTcuNS05LjhMMzc5LjMgMTc5LjJjNy44LTEwLjcgNS40LTI1LjctNS4zLTMzLjV6YF19LCRjPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGN1YmVzYCxpY29uOls1MTIsNTEyLFtdLGBmMWIzYCxgTTI4NC0xLjNjLTE3LjMtMTAtMzguNy0xMC01NiAwTDE0My44IDQ3LjNjLTE3LjMgMTAtMjggMjguNS0yOCA0OC41bDAgMTAxLjktODguMyA1MWMtMTcuMyAxMC0yOCAyOC41LTI4IDQ4LjVsMCA5Ny4zYzAgMjAgMTAuNyAzOC41IDI4IDQ4LjVsODQuMyA0OC42YzE3LjMgMTAgMzguNyAxMCA1NiAwbDg4LjMtNTEgODguMyA1MWMxNy4zIDEwIDM4LjcgMTAgNTYgMEw0ODQuNSA0NDNjMTcuMy0xMCAyOC0yOC41IDI4LTQ4LjVsMC05Ny4zYzAtMjAtMTAuNy0zOC41LTI4LTQ4LjVsLTg4LjMtNTEgMC0xMDEuOWMwLTIwLTEwLjctMzguNS0yOC00OC41TDI4NC0xLjN6TTIzMiAyOTIuNmwwIDEwNi41LTg4LjMgNTFjLTEuMiAuNy0yLjYgMS4xLTQgMS4xbDAtMTA1LjMgOTIuMy01My4zem0yMzEuNCAuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNGwwIDk3LjNjMCAyLjktMS41IDUuNS00IDYuOWwtODQuMyA0OC42Yy0xLjIgLjctMi42IDEuMS00IDEuMWwwLTEwNS4zIDkxLjItNTIuNnpNMzQ4LjMgOTUuOGwwIDEwMS45LTkyLjMgNTMuMyAwLTEwNi41IDkxLjItNTIuNmMuNyAxLjIgMS4xIDIuNiAxLjEgNHpgXX0sZWw9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY2hldnJvbi1kb3duYCxpY29uOls0NDgsNTEyLFtdLGBmMDc4YCxgTTIwMS40IDQwNi42YzEyLjUgMTIuNSAzMi44IDEyLjUgNDUuMyAwbDE5Mi0xOTJjMTIuNS0xMi41IDEyLjUtMzIuOCAwLTQ1LjNzLTMyLjgtMTIuNS00NS4zIDBMMjI0IDMzOC43IDU0LjYgMTY5LjRjLTEyLjUtMTIuNS0zMi44LTEyLjUtNDUuMyAwcy0xMi41IDMyLjggMCA0NS4zbDE5MiAxOTJ6YF19LHRsPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHBsdWdgLGljb246WzQ0OCw1MTIsWzEyODI2OF0sYGYxZTZgLGBNMTI4LTMyYzE3LjcgMCAzMiAxNC4zIDMyIDMybDAgOTYgMTI4IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnMzMiAxNC4zIDMyIDMybDAgOTYgNjQgMGMxNy43IDAgMzIgMTQuMyAzMiAzMnMtMTQuMyAzMi0zMiAzMmwwIDY0YzAgOTUuMS02OS4yIDE3NC4xLTE2MCAxODkuM2wwIDY2LjdjMCAxNy43LTE0LjMgMzItMzIgMzJzLTMyLTE0LjMtMzItMzJsMC02Ni43QzEwMS4yIDM5OC4xIDMyIDMxOS4xIDMyIDIyNGwwLTY0Yy0xNy43IDAtMzItMTQuMy0zMi0zMlMxNC4zIDk2IDMyIDk2bDY0IDAgMC05NmMwLTE3LjcgMTQuMy0zMiAzMi0zMnpgXX0sbmw9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgZmlsZS1jc3ZgLGljb246WzU3Niw1MTIsW10sYGY2ZGRgLGBNOTYgMEM2MC43IDAgMzIgMjguNyAzMiA2NGwwIDM4NGMwIDM1LjMgMjguNyA2NCA2NCA2NGw4MCAwIDAtMTEyYzAtMzUuMyAyOC43LTY0IDY0LTY0bDE3NiAwIDAtMTY1LjVjMC0xNy02LjctMzMuMy0xOC43LTQ1LjNMMjkwLjcgMTguN0MyNzguNyA2LjcgMjYyLjUgMCAyNDUuNSAwTDk2IDB6TTM1Ny41IDE3NkwyNjQgMTc2Yy0xMy4zIDAtMjQtMTAuNy0yNC0yNEwyNDAgNTguNSAzNTcuNSAxNzZ6TTI2NCAzODBjLTI0LjMgMC00NCAxOS43LTQ0IDQ0bDAgODBjMCAyNC4zIDE5LjcgNDQgNDQgNDRsMTYgMGMyNC4zIDAgNDQtMTkuNyA0NC00NGwwLThjMC0xMS05LTIwLTIwLTIwcy0yMCA5LTIwIDIwbDAgOGMwIDIuMi0xLjggNC00IDRsLTE2IDBjLTIuMiAwLTQtMS44LTQtNGwwLTgwYzAtMi4yIDEuOC00IDQtNGwxNiAwYzIuMiAwIDQgMS44IDQgNGwwIDhjMCAxMSA5IDIwIDIwIDIwczIwLTkgMjAtMjBsMC04YzAtMjQuMy0xOS43LTQ0LTQ0LTQ0bC0xNiAwem0xMzYgMGMtMjguNyAwLTUyIDIzLjMtNTIgNTJzMjMuMyA1MiA1MiA1MmM2LjYgMCAxMiA1LjQgMTIgMTJzLTUuNCAxMi0xMiAxMmwtMzIgMGMtMTEgMC0yMCA5LTIwIDIwczkgMjAgMjAgMjBsMzIgMGMyOC43IDAgNTItMjMuMyA1Mi01MnMtMjMuMy01Mi01Mi01MmMtNi42IDAtMTItNS40LTEyLTEyczUuNC0xMiAxMi0xMmwyNCAwYzExIDAgMjAtOSAyMC0yMHMtOS0yMC0yMC0yMGwtMjQgMHptOTYgMGMtMTEgMC0yMCA5LTIwIDIwbDAgMzEuNmMwIDM1LjUgMTAuNSA3MC4zIDMwLjIgOTkuOGw1LjEgNy43YzMuNyA1LjYgMTAgOC45IDE2LjYgOC45czEyLjktMy4zIDE2LjYtOC45bDUuMS03LjdjMTkuNy0yOS42IDMwLjItNjQuMyAzMC4yLTk5LjhsMC0zMS42YzAtMTEtOS0yMC0yMC0yMHMtMjAgOS0yMCAyMGwwIDMxLjZjMCAxOS42LTQuMSAzOC45LTEyIDU2LjctNy45LTE3LjgtMTItMzcuMS0xMi01Ni43bDAtMzEuNmMwLTExLTktMjAtMjAtMjB6YF19LHJsPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YHRyaWFuZ2xlLWV4Y2xhbWF0aW9uYCxpY29uOls1MTIsNTEyLFs5ODg4LGBleGNsYW1hdGlvbi10cmlhbmdsZWAsYHdhcm5pbmdgXSxgZjA3MWAsYE0yNTYgMGMxNC43IDAgMjguMiA4LjEgMzUuMiAyMWwyMTYgNDAwYzYuNyAxMi40IDYuNCAyNy40LS44IDM5LjVTNDg2LjEgNDgwIDQ3MiA0ODBMNDAgNDgwYy0xNC4xIDAtMjcuMi03LjQtMzQuNC0xOS41cy03LjUtMjcuMS0uOC0zOS41bDIxNi00MDBjNy0xMi45IDIwLjUtMjEgMzUuMi0yMXptMCAzNTJhMzIgMzIgMCAxIDAgMCA2NCAzMiAzMiAwIDEgMCAwLTY0em0wLTE5MmMtMTguMiAwLTMyLjcgMTUuNS0zMS40IDMzLjdsNy40IDEwNGMuOSAxMi41IDExLjQgMjIuMyAyMy45IDIyLjMgMTIuNiAwIDIzLTkuNyAyMy45LTIyLjNsNy40LTEwNGMxLjMtMTguMi0xMy4xLTMzLjctMzEuNC0zMy43emBdfSxpbD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBhcnJvdy1yaWdodC1hcnJvdy1sZWZ0YCxpY29uOls1MTIsNTEyLFs4NjQ0LGBleGNoYW5nZWBdLGBmMGVjYCxgTTUwMi42IDE1MC42bC05NiA5NmMtMTIuNSAxMi41LTMyLjggMTIuNS00NS4zIDBzLTEyLjUtMzIuOCAwLTQ1LjNMNDAyLjcgMTYwIDMyIDE2MGMtMTcuNyAwLTMyLTE0LjMtMzItMzJTMTQuMyA5NiAzMiA5NmwzNzAuNyAwLTQxLjQtNDEuNGMtMTIuNS0xMi41LTEyLjUtMzIuOCAwLTQ1LjNzMzIuOC0xMi41IDQ1LjMgMGw5NiA5NmMxMi41IDEyLjUgMTIuNSAzMi44IDAgNDUuM3ptLTM5Ny4zIDM1MmwtOTYtOTZjLTEyLjUtMTIuNS0xMi41LTMyLjggMC00NS4zbDk2LTk2YzEyLjUtMTIuNSAzMi44LTEyLjUgNDUuMyAwczEyLjUgMzIuOCAwIDQ1LjNMMTA5LjMgMzUyIDQ4MCAzNTJjMTcuNyAwIDMyIDE0LjMgMzIgMzJzLTE0LjMgMzItMzIgMzJsLTM3MC43IDAgNDEuNCA0MS40YzEyLjUgMTIuNSAxMi41IDMyLjggMCA0NS4zcy0zMi44IDEyLjUtNDUuMyAwemBdfSxhbD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBhcnJvdy1sZWZ0YCxpY29uOls1MTIsNTEyLFs4NTkyXSxgZjA2MGAsYE05LjQgMjMzLjRjLTEyLjUgMTIuNS0xMi41IDMyLjggMCA0NS4zbDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBzMTIuNS0zMi44IDAtNDUuM0wxMDkuMyAyODggNDgwIDI4OGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMmwtMzcwLjcgMCAxMDUuNC0xMDUuNGMxMi41LTEyLjUgMTIuNS0zMi44IDAtNDUuM3MtMzIuOC0xMi41LTQ1LjMgMGwtMTYwIDE2MHpgXX0sb2w9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY29weWAsaWNvbjpbNDQ4LDUxMixbXSxgZjBjNWAsYE0xOTIgMGMtMzUuMyAwLTY0IDI4LjctNjQgNjRsMCAyNTZjMCAzNS4zIDI4LjcgNjQgNjQgNjRsMTkyIDBjMzUuMyAwIDY0LTI4LjcgNjQtNjRsMC0yMDAuNmMwLTE3LjQtNy4xLTM0LjEtMTkuNy00Ni4yTDM3MC42IDE3LjhDMzU4LjcgNi40IDM0Mi44IDAgMzI2LjMgMEwxOTIgMHpNNjQgMTI4Yy0zNS4zIDAtNjQgMjguNy02NCA2NEwwIDQ0OGMwIDM1LjMgMjguNyA2NCA2NCA2NGwxOTIgMGMzNS4zIDAgNjQtMjguNyA2NC02NGwwLTE2LTY0IDAgMCAxNi0xOTIgMCAwLTI1NiAxNiAwIDAtNjQtMTYgMHpgXX0sc2w9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgZXllLXNsYXNoYCxpY29uOls1NzYsNTEyLFtdLGBmMDcwYCxgTTQxLTI0LjljLTkuNC05LjQtMjQuNi05LjQtMzMuOSAwUy0yLjMtLjMgNyA5LjFsNTI4IDUyOGM5LjQgOS40IDI0LjYgOS40IDMzLjkgMHM5LjQtMjQuNiAwLTMzLjlsLTk2LjQtOTYuNGMyLjctMi40IDUuNC00LjggOC03LjIgNDYuOC00My41IDc4LjEtOTUuNCA5My0xMzEuMSAzLjMtNy45IDMuMy0xNi43IDAtMjQuNi0xNC45LTM1LjctNDYuMi04Ny43LTkzLTEzMS4xLTQ3LjEtNDMuNy0xMTEuOC04MC42LTE5Mi42LTgwLjYtNTYuOCAwLTEwNS42IDE4LjItMTQ2IDQ0LjJMNDEtMjQuOXpNMjA0LjUgMTM4LjdjMjMuNS0xNi44IDUyLjQtMjYuNyA4My41LTI2LjcgNzkuNSAwIDE0NCA2NC41IDE0NCAxNDQgMCAzMS4xLTkuOSA1OS45LTI2LjcgODMuNWwtMzQuNy0zNC43YzEyLjctMjEuNCAxNy00Ny43IDEwLjEtNzMuNy0xMy43LTUxLjItNjYuNC04MS42LTExNy42LTY3LjktOC42IDIuMy0xNi43IDUuNy0yNCAxMGwtMzQuNy0zNC43ek0zMjUuMyAzOTUuMWMtMTEuOSAzLjItMjQuNCA0LjktMzcuMyA0LjktNzkuNSAwLTE0NC02NC41LTE0NC0xNDQgMC0xMi45IDEuNy0yNS40IDQuOS0zNy4zTDY5LjQgMTM5LjJjLTMyLjYgMzYuOC01NSA3NS44LTY2LjkgMTA0LjUtMy4zIDcuOS0zLjMgMTYuNyAwIDI0LjYgMTQuOSAzNS43IDQ2LjIgODcuNyA5MyAxMzEuMSA0Ny4xIDQzLjcgMTExLjggODAuNiAxOTIuNiA4MC42IDM3LjMgMCA3MS4yLTcuOSAxMDEuNS0yMC42bC02NC4yLTY0LjJ6YF19LGNsPXtwcmVmaXg6YGZhc2AsaWNvbk5hbWU6YGFycm93LXVwLXJpZ2h0LWZyb20tc3F1YXJlYCxpY29uOls1MTIsNTEyLFtgZXh0ZXJuYWwtbGlua2BdLGBmMDhlYCxgTTMyMCAwYy0xNy43IDAtMzIgMTQuMy0zMiAzMnMxNC4zIDMyIDMyIDMybDgyLjcgMC0yMDEuNCAyMDEuNGMtMTIuNSAxMi41LTEyLjUgMzIuOCAwIDQ1LjNzMzIuOCAxMi41IDQ1LjMgMEw0NDggMTA5LjMgNDQ4IDE5MmMwIDE3LjcgMTQuMyAzMiAzMiAzMnMzMi0xNC4zIDMyLTMybDAtMTYwYzAtMTcuNy0xNC4zLTMyLTMyLTMyTDMyMCAwek04MCA5NkMzNS44IDk2IDAgMTMxLjggMCAxNzZMMCA0MzJjMCA0NC4yIDM1LjggODAgODAgODBsMjU2IDBjNDQuMiAwIDgwLTM1LjggODAtODBsMC04MGMwLTE3LjctMTQuMy0zMi0zMi0zMnMtMzIgMTQuMy0zMiAzMmwwIDgwYzAgOC44LTcuMiAxNi0xNiAxNkw4MCA0NDhjLTguOCAwLTE2LTcuMi0xNi0xNmwwLTI1NmMwLTguOCA3LjItMTYgMTYtMTZsODAgMGMxNy43IDAgMzItMTQuMyAzMi0zMnMtMTQuMy0zMi0zMi0zMkw4MCA5NnpgXX0sbGw9e3ByZWZpeDpgZmFzYCxpY29uTmFtZTpgY29pbnNgLGljb246WzUxMiw1MTIsW10sYGY1MWVgLGBNMTI4IDk2bDAtMTZjMC00NC4yIDg2LTgwIDE5Mi04MFM1MTIgMzUuOCA1MTIgODBsMCAxNmMwIDMwLjYtNDEuMyA1Ny4yLTEwMiA3MC43LTIuNC0yLjgtNC45LTUuNS03LjQtOC0xNS41LTE1LjMtMzUuNS0yNi45LTU2LjQtMzUuNS00MS45LTE3LjUtOTYuNS0yNy4xLTE1NC4yLTI3LjEtMjEuOSAwLTQzLjMgMS40LTYzLjggNC4xLS4yLTEuMy0uMi0yLjctLjItNC4xek00MzIgMzUzbDAtNDYuMmMxNS4xLTMuOSAyOS4zLTguNSA0Mi4yLTEzLjkgMTMuMi01LjUgMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjRjMCAyNi44LTMxLjUgNTAuNS04MCA2NXptMC05NmwwLTMzYzAtNC41LS40LTguOC0xLTEzIDE1LjUtMy45IDMwLTguNiA0My4yLTE0LjJzMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjRjMCAyNi44LTMxLjUgNTAuNS04MCA2NXpNMCAyNDBsMC0xNmMwLTQ0LjIgODYtODAgMTkyLTgwczE5MiAzNS44IDE5MiA4MGwwIDE2YzAgNDQuMi04NiA4MC0xOTIgODBTMCAyODQuMiAwIDI0MHptMzg0IDk2YzAgNDQuMi04NiA4MC0xOTIgODBTMCAzODAuMiAwIDMzNmwwLTE1LjRjMTEuNiA4LjEgMjQuNSAxNC43IDM3LjggMjAuMyA0MS45IDE3LjUgOTYuNSAyNy4xIDE1NC4yIDI3LjFzMTEyLjMtOS43IDE1NC4yLTI3LjFjMTMuMi01LjUgMjYuMS0xMi4yIDM3LjgtMjAuM2wwIDE1LjR6bTAgODAuNmwwIDE1LjRjMCA0NC4yLTg2IDgwLTE5MiA4MFMwIDQ3Ni4yIDAgNDMybDAtMTUuNGMxMS42IDguMSAyNC41IDE0LjcgMzcuOCAyMC4zIDQxLjkgMTcuNSA5Ni41IDI3LjEgMTU0LjIgMjcuMXMxMTIuMy05LjcgMTU0LjItMjcuMWMxMy4yLTUuNSAyNi4xLTEyLjIgMzcuOC0yMC4zemBdfSx1bD17cHJlZml4OmBmYXNgLGljb25OYW1lOmBzb3J0LWRvd25gLGljb246WzM4NCw1MTIsW2Bzb3J0LWRlc2NgXSxgZjBkZGAsYE0zMiAyODhjLTEyLjkgMC0yNC42IDcuOC0yOS42IDE5LjhTLjIgMzMzLjUgOS40IDM0Mi42bDE2MCAxNjBjMTIuNSAxMi41IDMyLjggMTIuNSA0NS4zIDBsMTYwLTE2MGM5LjItOS4yIDExLjktMjIuOSA2LjktMzQuOVMzNjQuOSAyODggMzUyIDI4OEwzMiAyODh6YF19O2Z1bmN0aW9uIGRsKGUpe3ZhciB0LG4scj1gYDtpZih0eXBlb2YgZT09YHN0cmluZ2B8fHR5cGVvZiBlPT1gbnVtYmVyYClyKz1lO2Vsc2UgaWYodHlwZW9mIGU9PWBvYmplY3RgKXtpZihBcnJheS5pc0FycmF5KGUpKXt2YXIgaT1lLmxlbmd0aDtmb3IodD0wO3Q8aTt0KyspZVt0XSYmKG49ZGwoZVt0XSkpJiYociYmKHIrPWAgYCkscis9bil9ZWxzZSBmb3IobiBpbiBlKWVbbl0mJihyJiYocis9YCBgKSxyKz1uKX1yZXR1cm4gcn1mdW5jdGlvbiBmbCgpe2Zvcih2YXIgZSx0LG49MCxyPWBgLGk9YXJndW1lbnRzLmxlbmd0aDtuPGk7bisrKShlPWFyZ3VtZW50c1tuXSkmJih0PWRsKGUpKSYmKHImJihyKz1gIGApLHIrPXQpO3JldHVybiByfXZhciBwbD1lPT50eXBlb2YgZT09YGJvb2xlYW5gP2Ake2V9YDplPT09MD9gMGA6ZSxtbD1mbCxobD0oZSx0KT0+bj0+e2lmKHQ/LnZhcmlhbnRzPT1udWxsKXJldHVybiBtbChlLG4/LmNsYXNzLG4/LmNsYXNzTmFtZSk7bGV0e3ZhcmlhbnRzOnIsZGVmYXVsdFZhcmlhbnRzOml9PXQsYT1PYmplY3Qua2V5cyhyKS5tYXAoZT0+e2xldCB0PW4/LltlXSxhPWk/LltlXTtpZih0PT09bnVsbClyZXR1cm4gbnVsbDtsZXQgbz1wbCh0KXx8cGwoYSk7cmV0dXJuIHJbZV1bb119KSxvPW4mJk9iamVjdC5lbnRyaWVzKG4pLnJlZHVjZSgoZSx0KT0+e2xldFtuLHJdPXQ7cmV0dXJuIHI9PT12b2lkIDB8fChlW25dPXIpLGV9LHt9KTtyZXR1cm4gbWwoZSxhLHQ/LmNvbXBvdW5kVmFyaWFudHM/LnJlZHVjZSgoZSx0KT0+e2xldHtjbGFzczpuLGNsYXNzTmFtZTpyLC4uLmF9PXQ7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGEpLmV2ZXJ5KGU9PntsZXRbdCxuXT1lO3JldHVybiBBcnJheS5pc0FycmF5KG4pP24uaW5jbHVkZXMoey4uLmksLi4ub31bdF0pOnsuLi5pLC4uLm99W3RdPT09bn0pP1suLi5lLG4scl06ZX0sW10pLG4/LmNsYXNzLG4/LmNsYXNzTmFtZSl9LGdsPShlLHQpPT57bGV0IG49QXJyYXkoZS5sZW5ndGgrdC5sZW5ndGgpO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyluW2UubGVuZ3RoK3JdPXRbcl07cmV0dXJuIG59LF9sPShlLHQpPT4oe2NsYXNzR3JvdXBJZDplLHZhbGlkYXRvcjp0fSksdmw9KGU9bmV3IE1hcCx0PW51bGwsbik9Pih7bmV4dFBhcnQ6ZSx2YWxpZGF0b3JzOnQsY2xhc3NHcm91cElkOm59KSx5bD1gLWAsYmw9W10seGw9YGFyYml0cmFyeS4uYCxTbD1lPT57bGV0IHQ9VGwoZSkse2NvbmZsaWN0aW5nQ2xhc3NHcm91cHM6bixjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6cn09ZTtyZXR1cm57Z2V0Q2xhc3NHcm91cElkOmU9PntpZihlLnN0YXJ0c1dpdGgoYFtgKSYmZS5lbmRzV2l0aChgXWApKXJldHVybiB3bChlKTtsZXQgbj1lLnNwbGl0KHlsKTtyZXR1cm4gQ2wobiwrKG5bMF09PT1gYCYmbi5sZW5ndGg+MSksdCl9LGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczooZSx0KT0+e2lmKHQpe2xldCB0PXJbZV0saT1uW2VdO3JldHVybiB0P2k/Z2woaSx0KTp0Oml8fGJsfXJldHVybiBuW2VdfHxibH19fSxDbD0oZSx0LG4pPT57aWYoZS5sZW5ndGgtdD09PTApcmV0dXJuIG4uY2xhc3NHcm91cElkO2xldCByPWVbdF0saT1uLm5leHRQYXJ0LmdldChyKTtpZihpKXtsZXQgbj1DbChlLHQrMSxpKTtpZihuKXJldHVybiBufWxldCBhPW4udmFsaWRhdG9ycztpZihhPT09bnVsbClyZXR1cm47bGV0IG89dD09PTA/ZS5qb2luKHlsKTplLnNsaWNlKHQpLmpvaW4oeWwpLHM9YS5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxzO2UrKyl7bGV0IHQ9YVtlXTtpZih0LnZhbGlkYXRvcihvKSlyZXR1cm4gdC5jbGFzc0dyb3VwSWR9fSx3bD1lPT5lLnNsaWNlKDEsLTEpLmluZGV4T2YoYDpgKT09PS0xP3ZvaWQgMDooKCk9PntsZXQgdD1lLnNsaWNlKDEsLTEpLG49dC5pbmRleE9mKGA6YCkscj10LnNsaWNlKDAsbik7cmV0dXJuIHI/eGwrcjp2b2lkIDB9KSgpLFRsPWU9PntsZXR7dGhlbWU6dCxjbGFzc0dyb3VwczpufT1lO3JldHVybiBFbChuLHQpfSxFbD0oZSx0KT0+e2xldCBuPXZsKCk7Zm9yKGxldCByIGluIGUpe2xldCBpPWVbcl07RGwoaSxuLHIsdCl9cmV0dXJuIG59LERsPShlLHQsbixyKT0+e2xldCBpPWUubGVuZ3RoO2ZvcihsZXQgYT0wO2E8aTthKyspe2xldCBpPWVbYV07T2woaSx0LG4scil9fSxPbD0oZSx0LG4scik9PntpZih0eXBlb2YgZT09YHN0cmluZ2Ape2tsKGUsdCxuKTtyZXR1cm59aWYodHlwZW9mIGU9PWBmdW5jdGlvbmApe0FsKGUsdCxuLHIpO3JldHVybn1qbChlLHQsbixyKX0sa2w9KGUsdCxuKT0+e2xldCByPWU9PT1gYD90Ok1sKHQsZSk7ci5jbGFzc0dyb3VwSWQ9bn0sQWw9KGUsdCxuLHIpPT57aWYoTmwoZSkpe0RsKGUociksdCxuLHIpO3JldHVybn10LnZhbGlkYXRvcnM9PT1udWxsJiYodC52YWxpZGF0b3JzPVtdKSx0LnZhbGlkYXRvcnMucHVzaChfbChuLGUpKX0samw9KGUsdCxuLHIpPT57bGV0IGk9T2JqZWN0LmVudHJpZXMoZSksYT1pLmxlbmd0aDtmb3IobGV0IGU9MDtlPGE7ZSsrKXtsZXRbYSxvXT1pW2VdO0RsKG8sTWwodCxhKSxuLHIpfX0sTWw9KGUsdCk9PntsZXQgbj1lLHI9dC5zcGxpdCh5bCksaT1yLmxlbmd0aDtmb3IobGV0IGU9MDtlPGk7ZSsrKXtsZXQgdD1yW2VdLGk9bi5uZXh0UGFydC5nZXQodCk7aXx8KGk9dmwoKSxuLm5leHRQYXJ0LnNldCh0LGkpKSxuPWl9cmV0dXJuIG59LE5sPWU9PmBpc1RoZW1lR2V0dGVyYGluIGUmJmUuaXNUaGVtZUdldHRlcj09PSEwLFBsPWU9PntpZihlPDEpcmV0dXJue2dldDooKT0+dm9pZCAwLHNldDooKT0+e319O2xldCB0PTAsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9T2JqZWN0LmNyZWF0ZShudWxsKSxpPShpLGEpPT57bltpXT1hLHQrKyx0PmUmJih0PTAscj1uLG49T2JqZWN0LmNyZWF0ZShudWxsKSl9O3JldHVybntnZXQoZSl7bGV0IHQ9bltlXTtpZih0IT09dm9pZCAwKXJldHVybiB0O2lmKCh0PXJbZV0pIT09dm9pZCAwKXJldHVybiBpKGUsdCksdH0sc2V0KGUsdCl7ZSBpbiBuP25bZV09dDppKGUsdCl9fX0sRmw9YCFgLElsPWA6YCxMbD1bXSxSbD0oZSx0LG4scixpKT0+KHttb2RpZmllcnM6ZSxoYXNJbXBvcnRhbnRNb2RpZmllcjp0LGJhc2VDbGFzc05hbWU6bixtYXliZVBvc3RmaXhNb2RpZmllclBvc2l0aW9uOnIsaXNFeHRlcm5hbDppfSksemw9ZT0+e2xldHtwcmVmaXg6dCxleHBlcmltZW50YWxQYXJzZUNsYXNzTmFtZTpufT1lLHI9ZT0+e2xldCB0PVtdLG49MCxyPTAsaT0wLGEsbz1lLmxlbmd0aDtmb3IobGV0IHM9MDtzPG87cysrKXtsZXQgbz1lW3NdO2lmKG49PT0wJiZyPT09MCl7aWYobz09PUlsKXt0LnB1c2goZS5zbGljZShpLHMpKSxpPXMrMTtjb250aW51ZX1pZihvPT09YC9gKXthPXM7Y29udGludWV9fW89PT1gW2A/bisrOm89PT1gXWA/bi0tOm89PT1gKGA/cisrOm89PT1gKWAmJnItLX1sZXQgcz10Lmxlbmd0aD09PTA/ZTplLnNsaWNlKGkpLGM9cyxsPSExO3MuZW5kc1dpdGgoRmwpPyhjPXMuc2xpY2UoMCwtMSksbD0hMCk6cy5zdGFydHNXaXRoKEZsKSYmKGM9cy5zbGljZSgxKSxsPSEwKTtsZXQgdT1hJiZhPmk/YS1pOnZvaWQgMDtyZXR1cm4gUmwodCxsLGMsdSl9O2lmKHQpe2xldCBlPXQrSWwsbj1yO3I9dD0+dC5zdGFydHNXaXRoKGUpP24odC5zbGljZShlLmxlbmd0aCkpOlJsKExsLCExLHQsdm9pZCAwLCEwKX1pZihuKXtsZXQgZT1yO3I9dD0+bih7Y2xhc3NOYW1lOnQscGFyc2VDbGFzc05hbWU6ZX0pfXJldHVybiByfSxCbD1lPT57bGV0IHQ9bmV3IE1hcDtyZXR1cm4gZS5vcmRlclNlbnNpdGl2ZU1vZGlmaWVycy5mb3JFYWNoKChlLG4pPT57dC5zZXQoZSwxZTYrbil9KSxlPT57bGV0IG49W10scj1bXTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7bGV0IGE9ZVtpXSxvPWFbMF09PT1gW2Ascz10LmhhcyhhKTtvfHxzPyhyLmxlbmd0aD4wJiYoci5zb3J0KCksbi5wdXNoKC4uLnIpLHI9W10pLG4ucHVzaChhKSk6ci5wdXNoKGEpfXJldHVybiByLmxlbmd0aD4wJiYoci5zb3J0KCksbi5wdXNoKC4uLnIpKSxufX0sVmw9ZT0+KHtjYWNoZTpQbChlLmNhY2hlU2l6ZSkscGFyc2VDbGFzc05hbWU6emwoZSksc29ydE1vZGlmaWVyczpCbChlKSxwb3N0Zml4TG9va3VwQ2xhc3NHcm91cElkczpIbChlKSwuLi5TbChlKX0pLEhsPWU9PntsZXQgdD1PYmplY3QuY3JlYXRlKG51bGwpLG49ZS5wb3N0Zml4TG9va3VwQ2xhc3NHcm91cHM7aWYobilmb3IobGV0IGU9MDtlPG4ubGVuZ3RoO2UrKyl0W25bZV1dPSEwO3JldHVybiB0fSxVbD0vXHMrLyxXbD0oZSx0KT0+e2xldHtwYXJzZUNsYXNzTmFtZTpuLGdldENsYXNzR3JvdXBJZDpyLGdldENvbmZsaWN0aW5nQ2xhc3NHcm91cElkczppLHNvcnRNb2RpZmllcnM6YSxwb3N0Zml4TG9va3VwQ2xhc3NHcm91cElkczpvfT10LHM9W10sYz1lLnRyaW0oKS5zcGxpdChVbCksbD1gYDtmb3IobGV0IGU9Yy5sZW5ndGgtMTtlPj0wOy0tZSl7bGV0IHQ9Y1tlXSx7aXNFeHRlcm5hbDp1LG1vZGlmaWVyczpkLGhhc0ltcG9ydGFudE1vZGlmaWVyOmYsYmFzZUNsYXNzTmFtZTpwLG1heWJlUG9zdGZpeE1vZGlmaWVyUG9zaXRpb246bX09bih0KTtpZih1KXtsPXQrKGwubGVuZ3RoPjA/YCBgK2w6bCk7Y29udGludWV9bGV0IGg9ISFtLGc7aWYoaCl7Zz1yKHAuc3Vic3RyaW5nKDAsbSkpO2xldCBlPWcmJm9bZ10/cihwKTp2b2lkIDA7ZSYmZSE9PWcmJihnPWUsaD0hMSl9ZWxzZSBnPXIocCk7aWYoIWcpe2lmKCFoKXtsPXQrKGwubGVuZ3RoPjA/YCBgK2w6bCk7Y29udGludWV9aWYoZz1yKHApLCFnKXtsPXQrKGwubGVuZ3RoPjA/YCBgK2w6bCk7Y29udGludWV9aD0hMX1sZXQgXz1kLmxlbmd0aD09PTA/YGA6ZC5sZW5ndGg9PT0xP2RbMF06YShkKS5qb2luKGA6YCksdj1mP18rRmw6Xyx5PXYrZztpZihzLmluZGV4T2YoeSk+LTEpY29udGludWU7cy5wdXNoKHkpO2xldCBiPWkoZyxoKTtmb3IobGV0IGU9MDtlPGIubGVuZ3RoOysrZSl7bGV0IHQ9YltlXTtzLnB1c2godit0KX1sPXQrKGwubGVuZ3RoPjA/YCBgK2w6bCl9cmV0dXJuIGx9LEdsPSguLi5lKT0+e2xldCB0PTAsbixyLGk9YGA7Zm9yKDt0PGUubGVuZ3RoOykobj1lW3QrK10pJiYocj1LbChuKSkmJihpJiYoaSs9YCBgKSxpKz1yKTtyZXR1cm4gaX0sS2w9ZT0+e2lmKHR5cGVvZiBlPT1gc3RyaW5nYClyZXR1cm4gZTtsZXQgdCxuPWBgO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0mJih0PUtsKGVbcl0pKSYmKG4mJihuKz1gIGApLG4rPXQpO3JldHVybiBufSxxbD0oZSwuLi50KT0+e2xldCBuLHIsaSxhLG89bz0+KG49VmwodC5yZWR1Y2UoKGUsdCk9PnQoZSksZSgpKSkscj1uLmNhY2hlLmdldCxpPW4uY2FjaGUuc2V0LGE9cyxzKG8pKSxzPWU9PntsZXQgdD1yKGUpO2lmKHQpcmV0dXJuIHQ7bGV0IGE9V2woZSxuKTtyZXR1cm4gaShlLGEpLGF9O3JldHVybiBhPW8sKC4uLmUpPT5hKEdsKC4uLmUpKX0sSmw9W10sWD1lPT57bGV0IHQ9dD0+dFtlXXx8Smw7cmV0dXJuIHQuaXNUaGVtZUdldHRlcj0hMCx0fSxZbD0vXlxbKD86KFx3W1x3LV0qKTopPyguKylcXSQvaSxYbD0vXlwoKD86KFx3W1x3LV0qKTopPyguKylcKSQvaSxabD0vXlxkKyg/OlwuXGQrKT9cL1xkKyg/OlwuXGQrKT8kLyxRbD0vXihcZCsoXC5cZCspPyk/KHhzfHNtfG1kfGxnfHhsKSQvLCRsPS9cZCsoJXxweHxyP2VtfFtzZGxdP3YoW2h3aWJdfG1pbnxtYXgpfHB0fHBjfGlufGNtfG1tfGNhcHxjaHxleHxyP2xofGNxKHd8aHxpfGJ8bWlufG1heCkpfFxiKGNhbGN8bWlufG1heHxjbGFtcClcKC4rXCl8XjAkLyxldT0vXihyZ2JhP3xoc2xhP3xod2J8KG9rKT8obGFifGxjaCl8Y29sb3ItbWl4KVwoLitcKSQvLHR1PS9eKGluc2V0Xyk/LT8oKFxkKyk/XC4/KFxkKylbYS16XSt8MClfLT8oKFxkKyk/XC4/KFxkKylbYS16XSt8MCkvLG51PS9eKHVybHxpbWFnZXxpbWFnZS1zZXR8Y3Jvc3MtZmFkZXxlbGVtZW50fChyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbHxjb25pYyktZ3JhZGllbnQpXCguK1wpJC8scnU9ZT0+WmwudGVzdChlKSxaPWU9PiEhZSYmIU51bWJlci5pc05hTihOdW1iZXIoZSkpLGl1PWU9PiEhZSYmTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIoZSkpLGF1PWU9PmUuZW5kc1dpdGgoYCVgKSYmWihlLnNsaWNlKDAsLTEpKSxvdT1lPT5RbC50ZXN0KGUpLHN1PSgpPT4hMCxjdT1lPT4kbC50ZXN0KGUpJiYhZXUudGVzdChlKSxsdT0oKT0+ITEsdXU9ZT0+dHUudGVzdChlKSxkdT1lPT5udS50ZXN0KGUpLGZ1PWU9PiFRKGUpJiYhJChlKSxwdT1lPT5lLnN0YXJ0c1dpdGgoYEBjb250YWluZXJgKSYmKGVbMTBdPT09YC9gJiZlWzExXSE9PXZvaWQgMHx8ZVsxMV09PT1gc2AmJmVbMTZdIT09dm9pZCAwJiZlLnN0YXJ0c1dpdGgoYC1zaXplL2AsMTApfHxlWzExXT09PWBuYCYmZVsxOF0hPT12b2lkIDAmJmUuc3RhcnRzV2l0aChgLW5vcm1hbC9gLDEwKSksbXU9ZT0+a3UoZSxOdSxsdSksUT1lPT5ZbC50ZXN0KGUpLGh1PWU9Pmt1KGUsUHUsY3UpLGd1PWU9Pmt1KGUsRnUsWiksX3U9ZT0+a3UoZSxMdSxzdSksdnU9ZT0+a3UoZSxJdSxsdSkseXU9ZT0+a3UoZSxqdSxsdSksYnU9ZT0+a3UoZSxNdSxkdSkseHU9ZT0+a3UoZSxSdSx1dSksJD1lPT5YbC50ZXN0KGUpLFN1PWU9PkF1KGUsUHUpLEN1PWU9PkF1KGUsSXUpLHd1PWU9PkF1KGUsanUpLFR1PWU9PkF1KGUsTnUpLEV1PWU9PkF1KGUsTXUpLER1PWU9PkF1KGUsUnUsITApLE91PWU9PkF1KGUsTHUsITApLGt1PShlLHQsbik9PntsZXQgcj1ZbC5leGVjKGUpO3JldHVybiByP3JbMV0/dChyWzFdKTpuKHJbMl0pOiExfSxBdT0oZSx0LG49ITEpPT57bGV0IHI9WGwuZXhlYyhlKTtyZXR1cm4gcj9yWzFdP3QoclsxXSk6bjohMX0sanU9ZT0+ZT09PWBwb3NpdGlvbmB8fGU9PT1gcGVyY2VudGFnZWAsTXU9ZT0+ZT09PWBpbWFnZWB8fGU9PT1gdXJsYCxOdT1lPT5lPT09YGxlbmd0aGB8fGU9PT1gc2l6ZWB8fGU9PT1gYmctc2l6ZWAsUHU9ZT0+ZT09PWBsZW5ndGhgLEZ1PWU9PmU9PT1gbnVtYmVyYCxJdT1lPT5lPT09YGZhbWlseS1uYW1lYCxMdT1lPT5lPT09YG51bWJlcmB8fGU9PT1gd2VpZ2h0YCxSdT1lPT5lPT09YHNoYWRvd2AsenU9cWwoKCk9PntsZXQgZT1YKGBjb2xvcmApLHQ9WChgZm9udGApLG49WChgdGV4dGApLHI9WChgZm9udC13ZWlnaHRgKSxpPVgoYHRyYWNraW5nYCksYT1YKGBsZWFkaW5nYCksbz1YKGBicmVha3BvaW50YCkscz1YKGBjb250YWluZXJgKSxjPVgoYHNwYWNpbmdgKSxsPVgoYHJhZGl1c2ApLHU9WChgc2hhZG93YCksZD1YKGBpbnNldC1zaGFkb3dgKSxmPVgoYHRleHQtc2hhZG93YCkscD1YKGBkcm9wLXNoYWRvd2ApLG09WChgYmx1cmApLGg9WChgcGVyc3BlY3RpdmVgKSxnPVgoYGFzcGVjdGApLF89WChgZWFzZWApLHY9WChgYW5pbWF0ZWApLHk9KCk9PltgYXV0b2AsYGF2b2lkYCxgYWxsYCxgYXZvaWQtcGFnZWAsYHBhZ2VgLGBsZWZ0YCxgcmlnaHRgLGBjb2x1bW5gXSxiPSgpPT5bYGNlbnRlcmAsYHRvcGAsYGJvdHRvbWAsYGxlZnRgLGByaWdodGAsYHRvcC1sZWZ0YCxgbGVmdC10b3BgLGB0b3AtcmlnaHRgLGByaWdodC10b3BgLGBib3R0b20tcmlnaHRgLGByaWdodC1ib3R0b21gLGBib3R0b20tbGVmdGAsYGxlZnQtYm90dG9tYF0seD0oKT0+Wy4uLmIoKSwkLFFdLFM9KCk9PltgYXV0b2AsYGhpZGRlbmAsYGNsaXBgLGB2aXNpYmxlYCxgc2Nyb2xsYF0sQz0oKT0+W2BhdXRvYCxgY29udGFpbmAsYG5vbmVgXSx3PSgpPT5bJCxRLGNdLFQ9KCk9PltydSxgZnVsbGAsYGF1dG9gLC4uLncoKV0sRT0oKT0+W2l1LGBub25lYCxgc3ViZ3JpZGAsJCxRXSxEPSgpPT5bYGF1dG9gLHtzcGFuOltgZnVsbGAsaXUsJCxRXX0saXUsJCxRXSxlZT0oKT0+W2l1LGBhdXRvYCwkLFFdLE89KCk9PltgYXV0b2AsYG1pbmAsYG1heGAsYGZyYCwkLFFdLHRlPSgpPT5bYHN0YXJ0YCxgZW5kYCxgY2VudGVyYCxgYmV0d2VlbmAsYGFyb3VuZGAsYGV2ZW5seWAsYHN0cmV0Y2hgLGBiYXNlbGluZWAsYGNlbnRlci1zYWZlYCxgZW5kLXNhZmVgXSxrPSgpPT5bYHN0YXJ0YCxgZW5kYCxgY2VudGVyYCxgc3RyZXRjaGAsYGNlbnRlci1zYWZlYCxgZW5kLXNhZmVgXSxBPSgpPT5bYGF1dG9gLC4uLncoKV0sbmU9KCk9PltydSxgYXV0b2AsYGZ1bGxgLGBkdndgLGBkdmhgLGBsdndgLGBsdmhgLGBzdndgLGBzdmhgLGBtaW5gLGBtYXhgLGBmaXRgLC4uLncoKV0saj0oKT0+W3J1LGBzY3JlZW5gLGBmdWxsYCxgZHZ3YCxgbHZ3YCxgc3Z3YCxgbWluYCxgbWF4YCxgZml0YCwuLi53KCldLE09KCk9PltydSxgc2NyZWVuYCxgZnVsbGAsYGxoYCxgZHZoYCxgbHZoYCxgc3ZoYCxgbWluYCxgbWF4YCxgZml0YCwuLi53KCldLE49KCk9PltlLCQsUV0scmU9KCk9PlsuLi5iKCksd3UseXUse3Bvc2l0aW9uOlskLFFdfV0saWU9KCk9Pltgbm8tcmVwZWF0YCx7cmVwZWF0OltgYCxgeGAsYHlgLGBzcGFjZWAsYHJvdW5kYF19XSxhZT0oKT0+W2BhdXRvYCxgY292ZXJgLGBjb250YWluYCxUdSxtdSx7c2l6ZTpbJCxRXX1dLG9lPSgpPT5bYXUsU3UsaHVdLFA9KCk9PltgYCxgbm9uZWAsYGZ1bGxgLGwsJCxRXSxGPSgpPT5bYGAsWixTdSxodV0sc2U9KCk9Pltgc29saWRgLGBkYXNoZWRgLGBkb3R0ZWRgLGBkb3VibGVgXSxjZT0oKT0+W2Bub3JtYWxgLGBtdWx0aXBseWAsYHNjcmVlbmAsYG92ZXJsYXlgLGBkYXJrZW5gLGBsaWdodGVuYCxgY29sb3ItZG9kZ2VgLGBjb2xvci1idXJuYCxgaGFyZC1saWdodGAsYHNvZnQtbGlnaHRgLGBkaWZmZXJlbmNlYCxgZXhjbHVzaW9uYCxgaHVlYCxgc2F0dXJhdGlvbmAsYGNvbG9yYCxgbHVtaW5vc2l0eWBdLEk9KCk9PltaLGF1LHd1LHl1XSxsZT0oKT0+W2BgLGBub25lYCxtLCQsUV0sdWU9KCk9Pltgbm9uZWAsWiwkLFFdLGRlPSgpPT5bYG5vbmVgLFosJCxRXSxmZT0oKT0+W1osJCxRXSxwZT0oKT0+W3J1LGBmdWxsYCwuLi53KCldO3JldHVybntjYWNoZVNpemU6NTAwLHRoZW1lOnthbmltYXRlOltgc3BpbmAsYHBpbmdgLGBwdWxzZWAsYGJvdW5jZWBdLGFzcGVjdDpbYHZpZGVvYF0sYmx1cjpbb3VdLGJyZWFrcG9pbnQ6W291XSxjb2xvcjpbc3VdLGNvbnRhaW5lcjpbb3VdLCJkcm9wLXNoYWRvdyI6W291XSxlYXNlOltgaW5gLGBvdXRgLGBpbi1vdXRgXSxmb250OltmdV0sImZvbnQtd2VpZ2h0IjpbYHRoaW5gLGBleHRyYWxpZ2h0YCxgbGlnaHRgLGBub3JtYWxgLGBtZWRpdW1gLGBzZW1pYm9sZGAsYGJvbGRgLGBleHRyYWJvbGRgLGBibGFja2BdLCJpbnNldC1zaGFkb3ciOltvdV0sbGVhZGluZzpbYG5vbmVgLGB0aWdodGAsYHNudWdgLGBub3JtYWxgLGByZWxheGVkYCxgbG9vc2VgXSxwZXJzcGVjdGl2ZTpbYGRyYW1hdGljYCxgbmVhcmAsYG5vcm1hbGAsYG1pZHJhbmdlYCxgZGlzdGFudGAsYG5vbmVgXSxyYWRpdXM6W291XSxzaGFkb3c6W291XSxzcGFjaW5nOltgcHhgLFpdLHRleHQ6W291XSwidGV4dC1zaGFkb3ciOltvdV0sdHJhY2tpbmc6W2B0aWdodGVyYCxgdGlnaHRgLGBub3JtYWxgLGB3aWRlYCxgd2lkZXJgLGB3aWRlc3RgXX0sY2xhc3NHcm91cHM6e2FzcGVjdDpbe2FzcGVjdDpbYGF1dG9gLGBzcXVhcmVgLHJ1LFEsJCxnXX1dLGNvbnRhaW5lcjpbYGNvbnRhaW5lcmBdLCJjb250YWluZXItdHlwZSI6W3siQGNvbnRhaW5lciI6W2BgLGBub3JtYWxgLGBzaXplYCwkLFFdfV0sImNvbnRhaW5lci1uYW1lZCI6W3B1XSxjb2x1bW5zOlt7Y29sdW1uczpbWixRLCQsc119XSwiYnJlYWstYWZ0ZXIiOlt7ImJyZWFrLWFmdGVyIjp5KCl9XSwiYnJlYWstYmVmb3JlIjpbeyJicmVhay1iZWZvcmUiOnkoKX1dLCJicmVhay1pbnNpZGUiOlt7ImJyZWFrLWluc2lkZSI6W2BhdXRvYCxgYXZvaWRgLGBhdm9pZC1wYWdlYCxgYXZvaWQtY29sdW1uYF19XSwiYm94LWRlY29yYXRpb24iOlt7ImJveC1kZWNvcmF0aW9uIjpbYHNsaWNlYCxgY2xvbmVgXX1dLGJveDpbe2JveDpbYGJvcmRlcmAsYGNvbnRlbnRgXX1dLGRpc3BsYXk6W2BibG9ja2AsYGlubGluZS1ibG9ja2AsYGlubGluZWAsYGZsZXhgLGBpbmxpbmUtZmxleGAsYHRhYmxlYCxgaW5saW5lLXRhYmxlYCxgdGFibGUtY2FwdGlvbmAsYHRhYmxlLWNlbGxgLGB0YWJsZS1jb2x1bW5gLGB0YWJsZS1jb2x1bW4tZ3JvdXBgLGB0YWJsZS1mb290ZXItZ3JvdXBgLGB0YWJsZS1oZWFkZXItZ3JvdXBgLGB0YWJsZS1yb3ctZ3JvdXBgLGB0YWJsZS1yb3dgLGBmbG93LXJvb3RgLGBncmlkYCxgaW5saW5lLWdyaWRgLGBjb250ZW50c2AsYGxpc3QtaXRlbWAsYGhpZGRlbmBdLHNyOltgc3Itb25seWAsYG5vdC1zci1vbmx5YF0sZmxvYXQ6W3tmbG9hdDpbYHJpZ2h0YCxgbGVmdGAsYG5vbmVgLGBzdGFydGAsYGVuZGBdfV0sY2xlYXI6W3tjbGVhcjpbYGxlZnRgLGByaWdodGAsYGJvdGhgLGBub25lYCxgc3RhcnRgLGBlbmRgXX1dLGlzb2xhdGlvbjpbYGlzb2xhdGVgLGBpc29sYXRpb24tYXV0b2BdLCJvYmplY3QtZml0Ijpbe29iamVjdDpbYGNvbnRhaW5gLGBjb3ZlcmAsYGZpbGxgLGBub25lYCxgc2NhbGUtZG93bmBdfV0sIm9iamVjdC1wb3NpdGlvbiI6W3tvYmplY3Q6eCgpfV0sb3ZlcmZsb3c6W3tvdmVyZmxvdzpTKCl9XSwib3ZlcmZsb3cteCI6W3sib3ZlcmZsb3cteCI6UygpfV0sIm92ZXJmbG93LXkiOlt7Im92ZXJmbG93LXkiOlMoKX1dLG92ZXJzY3JvbGw6W3tvdmVyc2Nyb2xsOkMoKX1dLCJvdmVyc2Nyb2xsLXgiOlt7Im92ZXJzY3JvbGwteCI6QygpfV0sIm92ZXJzY3JvbGwteSI6W3sib3ZlcnNjcm9sbC15IjpDKCl9XSxwb3NpdGlvbjpbYHN0YXRpY2AsYGZpeGVkYCxgYWJzb2x1dGVgLGByZWxhdGl2ZWAsYHN0aWNreWBdLGluc2V0Olt7aW5zZXQ6VCgpfV0sImluc2V0LXgiOlt7Imluc2V0LXgiOlQoKX1dLCJpbnNldC15IjpbeyJpbnNldC15IjpUKCl9XSxzdGFydDpbeyJpbnNldC1zIjpUKCksc3RhcnQ6VCgpfV0sZW5kOlt7Imluc2V0LWUiOlQoKSxlbmQ6VCgpfV0sImluc2V0LWJzIjpbeyJpbnNldC1icyI6VCgpfV0sImluc2V0LWJlIjpbeyJpbnNldC1iZSI6VCgpfV0sdG9wOlt7dG9wOlQoKX1dLHJpZ2h0Olt7cmlnaHQ6VCgpfV0sYm90dG9tOlt7Ym90dG9tOlQoKX1dLGxlZnQ6W3tsZWZ0OlQoKX1dLHZpc2liaWxpdHk6W2B2aXNpYmxlYCxgaW52aXNpYmxlYCxgY29sbGFwc2VgXSx6Olt7ejpbaXUsYGF1dG9gLCQsUV19XSxiYXNpczpbe2Jhc2lzOltydSxgZnVsbGAsYGF1dG9gLHMsLi4udygpXX1dLCJmbGV4LWRpcmVjdGlvbiI6W3tmbGV4Oltgcm93YCxgcm93LXJldmVyc2VgLGBjb2xgLGBjb2wtcmV2ZXJzZWBdfV0sImZsZXgtd3JhcCI6W3tmbGV4Oltgbm93cmFwYCxgd3JhcGAsYHdyYXAtcmV2ZXJzZWBdfV0sZmxleDpbe2ZsZXg6W1oscnUsYGF1dG9gLGBpbml0aWFsYCxgbm9uZWAsUV19XSxncm93Olt7Z3JvdzpbYGAsWiwkLFFdfV0sc2hyaW5rOlt7c2hyaW5rOltgYCxaLCQsUV19XSxvcmRlcjpbe29yZGVyOltpdSxgZmlyc3RgLGBsYXN0YCxgbm9uZWAsJCxRXX1dLCJncmlkLWNvbHMiOlt7ImdyaWQtY29scyI6RSgpfV0sImNvbC1zdGFydC1lbmQiOlt7Y29sOkQoKX1dLCJjb2wtc3RhcnQiOlt7ImNvbC1zdGFydCI6ZWUoKX1dLCJjb2wtZW5kIjpbeyJjb2wtZW5kIjplZSgpfV0sImdyaWQtcm93cyI6W3siZ3JpZC1yb3dzIjpFKCl9XSwicm93LXN0YXJ0LWVuZCI6W3tyb3c6RCgpfV0sInJvdy1zdGFydCI6W3sicm93LXN0YXJ0IjplZSgpfV0sInJvdy1lbmQiOlt7InJvdy1lbmQiOmVlKCl9XSwiZ3JpZC1mbG93IjpbeyJncmlkLWZsb3ciOltgcm93YCxgY29sYCxgZGVuc2VgLGByb3ctZGVuc2VgLGBjb2wtZGVuc2VgXX1dLCJhdXRvLWNvbHMiOlt7ImF1dG8tY29scyI6TygpfV0sImF1dG8tcm93cyI6W3siYXV0by1yb3dzIjpPKCl9XSxnYXA6W3tnYXA6dygpfV0sImdhcC14IjpbeyJnYXAteCI6dygpfV0sImdhcC15IjpbeyJnYXAteSI6dygpfV0sImp1c3RpZnktY29udGVudCI6W3tqdXN0aWZ5OlsuLi50ZSgpLGBub3JtYWxgXX1dLCJqdXN0aWZ5LWl0ZW1zIjpbeyJqdXN0aWZ5LWl0ZW1zIjpbLi4uaygpLGBub3JtYWxgXX1dLCJqdXN0aWZ5LXNlbGYiOlt7Imp1c3RpZnktc2VsZiI6W2BhdXRvYCwuLi5rKCldfV0sImFsaWduLWNvbnRlbnQiOlt7Y29udGVudDpbYG5vcm1hbGAsLi4udGUoKV19XSwiYWxpZ24taXRlbXMiOlt7aXRlbXM6Wy4uLmsoKSx7YmFzZWxpbmU6W2BgLGBsYXN0YF19XX1dLCJhbGlnbi1zZWxmIjpbe3NlbGY6W2BhdXRvYCwuLi5rKCkse2Jhc2VsaW5lOltgYCxgbGFzdGBdfV19XSwicGxhY2UtY29udGVudCI6W3sicGxhY2UtY29udGVudCI6dGUoKX1dLCJwbGFjZS1pdGVtcyI6W3sicGxhY2UtaXRlbXMiOlsuLi5rKCksYGJhc2VsaW5lYF19XSwicGxhY2Utc2VsZiI6W3sicGxhY2Utc2VsZiI6W2BhdXRvYCwuLi5rKCldfV0scDpbe3A6dygpfV0scHg6W3tweDp3KCl9XSxweTpbe3B5OncoKX1dLHBzOlt7cHM6dygpfV0scGU6W3twZTp3KCl9XSxwYnM6W3twYnM6dygpfV0scGJlOlt7cGJlOncoKX1dLHB0Olt7cHQ6dygpfV0scHI6W3twcjp3KCl9XSxwYjpbe3BiOncoKX1dLHBsOlt7cGw6dygpfV0sbTpbe206QSgpfV0sbXg6W3tteDpBKCl9XSxteTpbe215OkEoKX1dLG1zOlt7bXM6QSgpfV0sbWU6W3ttZTpBKCl9XSxtYnM6W3ttYnM6QSgpfV0sbWJlOlt7bWJlOkEoKX1dLG10Olt7bXQ6QSgpfV0sbXI6W3ttcjpBKCl9XSxtYjpbe21iOkEoKX1dLG1sOlt7bWw6QSgpfV0sInNwYWNlLXgiOlt7InNwYWNlLXgiOncoKX1dLCJzcGFjZS14LXJldmVyc2UiOltgc3BhY2UteC1yZXZlcnNlYF0sInNwYWNlLXkiOlt7InNwYWNlLXkiOncoKX1dLCJzcGFjZS15LXJldmVyc2UiOltgc3BhY2UteS1yZXZlcnNlYF0sc2l6ZTpbe3NpemU6bmUoKX1dLCJpbmxpbmUtc2l6ZSI6W3tpbmxpbmU6W2BhdXRvYCwuLi5qKCldfV0sIm1pbi1pbmxpbmUtc2l6ZSI6W3sibWluLWlubGluZSI6W2BhdXRvYCwuLi5qKCldfV0sIm1heC1pbmxpbmUtc2l6ZSI6W3sibWF4LWlubGluZSI6W2Bub25lYCwuLi5qKCldfV0sImJsb2NrLXNpemUiOlt7YmxvY2s6W2BhdXRvYCwuLi5NKCldfV0sIm1pbi1ibG9jay1zaXplIjpbeyJtaW4tYmxvY2siOltgYXV0b2AsLi4uTSgpXX1dLCJtYXgtYmxvY2stc2l6ZSI6W3sibWF4LWJsb2NrIjpbYG5vbmVgLC4uLk0oKV19XSx3Olt7dzpbcyxgc2NyZWVuYCwuLi5uZSgpXX1dLCJtaW4tdyI6W3sibWluLXciOltzLGBzY3JlZW5gLGBub25lYCwuLi5uZSgpXX1dLCJtYXgtdyI6W3sibWF4LXciOltzLGBzY3JlZW5gLGBub25lYCxgcHJvc2VgLHtzY3JlZW46W29dfSwuLi5uZSgpXX1dLGg6W3toOltgc2NyZWVuYCxgbGhgLC4uLm5lKCldfV0sIm1pbi1oIjpbeyJtaW4taCI6W2BzY3JlZW5gLGBsaGAsYG5vbmVgLC4uLm5lKCldfV0sIm1heC1oIjpbeyJtYXgtaCI6W2BzY3JlZW5gLGBsaGAsLi4ubmUoKV19XSwiZm9udC1zaXplIjpbe3RleHQ6W2BiYXNlYCxuLFN1LGh1XX1dLCJmb250LXNtb290aGluZyI6W2BhbnRpYWxpYXNlZGAsYHN1YnBpeGVsLWFudGlhbGlhc2VkYF0sImZvbnQtc3R5bGUiOltgaXRhbGljYCxgbm90LWl0YWxpY2BdLCJmb250LXdlaWdodCI6W3tmb250OltyLE91LF91XX1dLCJmb250LXN0cmV0Y2giOlt7ImZvbnQtc3RyZXRjaCI6W2B1bHRyYS1jb25kZW5zZWRgLGBleHRyYS1jb25kZW5zZWRgLGBjb25kZW5zZWRgLGBzZW1pLWNvbmRlbnNlZGAsYG5vcm1hbGAsYHNlbWktZXhwYW5kZWRgLGBleHBhbmRlZGAsYGV4dHJhLWV4cGFuZGVkYCxgdWx0cmEtZXhwYW5kZWRgLGF1LFFdfV0sImZvbnQtZmFtaWx5Ijpbe2ZvbnQ6W0N1LHZ1LHRdfV0sImZvbnQtZmVhdHVyZXMiOlt7ImZvbnQtZmVhdHVyZXMiOltRXX1dLCJmdm4tbm9ybWFsIjpbYG5vcm1hbC1udW1zYF0sImZ2bi1vcmRpbmFsIjpbYG9yZGluYWxgXSwiZnZuLXNsYXNoZWQtemVybyI6W2BzbGFzaGVkLXplcm9gXSwiZnZuLWZpZ3VyZSI6W2BsaW5pbmctbnVtc2AsYG9sZHN0eWxlLW51bXNgXSwiZnZuLXNwYWNpbmciOltgcHJvcG9ydGlvbmFsLW51bXNgLGB0YWJ1bGFyLW51bXNgXSwiZnZuLWZyYWN0aW9uIjpbYGRpYWdvbmFsLWZyYWN0aW9uc2AsYHN0YWNrZWQtZnJhY3Rpb25zYF0sdHJhY2tpbmc6W3t0cmFja2luZzpbaSwkLFFdfV0sImxpbmUtY2xhbXAiOlt7ImxpbmUtY2xhbXAiOltaLGBub25lYCwkLGd1XX1dLGxlYWRpbmc6W3tsZWFkaW5nOlthLC4uLncoKV19XSwibGlzdC1pbWFnZSI6W3sibGlzdC1pbWFnZSI6W2Bub25lYCwkLFFdfV0sImxpc3Qtc3R5bGUtcG9zaXRpb24iOlt7bGlzdDpbYGluc2lkZWAsYG91dHNpZGVgXX1dLCJsaXN0LXN0eWxlLXR5cGUiOlt7bGlzdDpbYGRpc2NgLGBkZWNpbWFsYCxgbm9uZWAsJCxRXX1dLCJ0ZXh0LWFsaWdubWVudCI6W3t0ZXh0OltgbGVmdGAsYGNlbnRlcmAsYHJpZ2h0YCxganVzdGlmeWAsYHN0YXJ0YCxgZW5kYF19XSwicGxhY2Vob2xkZXItY29sb3IiOlt7cGxhY2Vob2xkZXI6TigpfV0sInRleHQtY29sb3IiOlt7dGV4dDpOKCl9XSwidGV4dC1kZWNvcmF0aW9uIjpbYHVuZGVybGluZWAsYG92ZXJsaW5lYCxgbGluZS10aHJvdWdoYCxgbm8tdW5kZXJsaW5lYF0sInRleHQtZGVjb3JhdGlvbi1zdHlsZSI6W3tkZWNvcmF0aW9uOlsuLi5zZSgpLGB3YXZ5YF19XSwidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyI6W3tkZWNvcmF0aW9uOltaLGBmcm9tLWZvbnRgLGBhdXRvYCwkLGh1XX1dLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiOlt7ZGVjb3JhdGlvbjpOKCl9XSwidW5kZXJsaW5lLW9mZnNldCI6W3sidW5kZXJsaW5lLW9mZnNldCI6W1osYGF1dG9gLCQsUV19XSwidGV4dC10cmFuc2Zvcm0iOltgdXBwZXJjYXNlYCxgbG93ZXJjYXNlYCxgY2FwaXRhbGl6ZWAsYG5vcm1hbC1jYXNlYF0sInRleHQtb3ZlcmZsb3ciOltgdHJ1bmNhdGVgLGB0ZXh0LWVsbGlwc2lzYCxgdGV4dC1jbGlwYF0sInRleHQtd3JhcCI6W3t0ZXh0Oltgd3JhcGAsYG5vd3JhcGAsYGJhbGFuY2VgLGBwcmV0dHlgXX1dLGluZGVudDpbe2luZGVudDp3KCl9XSwidGFiLXNpemUiOlt7dGFiOltpdSwkLFFdfV0sInZlcnRpY2FsLWFsaWduIjpbe2FsaWduOltgYmFzZWxpbmVgLGB0b3BgLGBtaWRkbGVgLGBib3R0b21gLGB0ZXh0LXRvcGAsYHRleHQtYm90dG9tYCxgc3ViYCxgc3VwZXJgLCQsUV19XSx3aGl0ZXNwYWNlOlt7d2hpdGVzcGFjZTpbYG5vcm1hbGAsYG5vd3JhcGAsYHByZWAsYHByZS1saW5lYCxgcHJlLXdyYXBgLGBicmVhay1zcGFjZXNgXX1dLGJyZWFrOlt7YnJlYWs6W2Bub3JtYWxgLGB3b3Jkc2AsYGFsbGAsYGtlZXBgXX1dLHdyYXA6W3t3cmFwOltgYnJlYWstd29yZGAsYGFueXdoZXJlYCxgbm9ybWFsYF19XSxoeXBoZW5zOlt7aHlwaGVuczpbYG5vbmVgLGBtYW51YWxgLGBhdXRvYF19XSxjb250ZW50Olt7Y29udGVudDpbYG5vbmVgLCQsUV19XSwiYmctYXR0YWNobWVudCI6W3tiZzpbYGZpeGVkYCxgbG9jYWxgLGBzY3JvbGxgXX1dLCJiZy1jbGlwIjpbeyJiZy1jbGlwIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YCxgdGV4dGBdfV0sImJnLW9yaWdpbiI6W3siYmctb3JpZ2luIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YF19XSwiYmctcG9zaXRpb24iOlt7Ymc6cmUoKX1dLCJiZy1yZXBlYXQiOlt7Ymc6aWUoKX1dLCJiZy1zaXplIjpbe2JnOmFlKCl9XSwiYmctaW1hZ2UiOlt7Ymc6W2Bub25lYCx7bGluZWFyOlt7dG86W2B0YCxgdHJgLGByYCxgYnJgLGBiYCxgYmxgLGBsYCxgdGxgXX0saXUsJCxRXSxyYWRpYWw6W2BgLCQsUV0sY29uaWM6W2l1LCQsUV19LEV1LGJ1XX1dLCJiZy1jb2xvciI6W3tiZzpOKCl9XSwiZ3JhZGllbnQtZnJvbS1wb3MiOlt7ZnJvbTpvZSgpfV0sImdyYWRpZW50LXZpYS1wb3MiOlt7dmlhOm9lKCl9XSwiZ3JhZGllbnQtdG8tcG9zIjpbe3RvOm9lKCl9XSwiZ3JhZGllbnQtZnJvbSI6W3tmcm9tOk4oKX1dLCJncmFkaWVudC12aWEiOlt7dmlhOk4oKX1dLCJncmFkaWVudC10byI6W3t0bzpOKCl9XSxyb3VuZGVkOlt7cm91bmRlZDpQKCl9XSwicm91bmRlZC1zIjpbeyJyb3VuZGVkLXMiOlAoKX1dLCJyb3VuZGVkLWUiOlt7InJvdW5kZWQtZSI6UCgpfV0sInJvdW5kZWQtdCI6W3sicm91bmRlZC10IjpQKCl9XSwicm91bmRlZC1yIjpbeyJyb3VuZGVkLXIiOlAoKX1dLCJyb3VuZGVkLWIiOlt7InJvdW5kZWQtYiI6UCgpfV0sInJvdW5kZWQtbCI6W3sicm91bmRlZC1sIjpQKCl9XSwicm91bmRlZC1zcyI6W3sicm91bmRlZC1zcyI6UCgpfV0sInJvdW5kZWQtc2UiOlt7InJvdW5kZWQtc2UiOlAoKX1dLCJyb3VuZGVkLWVlIjpbeyJyb3VuZGVkLWVlIjpQKCl9XSwicm91bmRlZC1lcyI6W3sicm91bmRlZC1lcyI6UCgpfV0sInJvdW5kZWQtdGwiOlt7InJvdW5kZWQtdGwiOlAoKX1dLCJyb3VuZGVkLXRyIjpbeyJyb3VuZGVkLXRyIjpQKCl9XSwicm91bmRlZC1iciI6W3sicm91bmRlZC1iciI6UCgpfV0sInJvdW5kZWQtYmwiOlt7InJvdW5kZWQtYmwiOlAoKX1dLCJib3JkZXItdyI6W3tib3JkZXI6RigpfV0sImJvcmRlci13LXgiOlt7ImJvcmRlci14IjpGKCl9XSwiYm9yZGVyLXcteSI6W3siYm9yZGVyLXkiOkYoKX1dLCJib3JkZXItdy1zIjpbeyJib3JkZXItcyI6RigpfV0sImJvcmRlci13LWUiOlt7ImJvcmRlci1lIjpGKCl9XSwiYm9yZGVyLXctYnMiOlt7ImJvcmRlci1icyI6RigpfV0sImJvcmRlci13LWJlIjpbeyJib3JkZXItYmUiOkYoKX1dLCJib3JkZXItdy10IjpbeyJib3JkZXItdCI6RigpfV0sImJvcmRlci13LXIiOlt7ImJvcmRlci1yIjpGKCl9XSwiYm9yZGVyLXctYiI6W3siYm9yZGVyLWIiOkYoKX1dLCJib3JkZXItdy1sIjpbeyJib3JkZXItbCI6RigpfV0sImRpdmlkZS14IjpbeyJkaXZpZGUteCI6RigpfV0sImRpdmlkZS14LXJldmVyc2UiOltgZGl2aWRlLXgtcmV2ZXJzZWBdLCJkaXZpZGUteSI6W3siZGl2aWRlLXkiOkYoKX1dLCJkaXZpZGUteS1yZXZlcnNlIjpbYGRpdmlkZS15LXJldmVyc2VgXSwiYm9yZGVyLXN0eWxlIjpbe2JvcmRlcjpbLi4uc2UoKSxgaGlkZGVuYCxgbm9uZWBdfV0sImRpdmlkZS1zdHlsZSI6W3tkaXZpZGU6Wy4uLnNlKCksYGhpZGRlbmAsYG5vbmVgXX1dLCJib3JkZXItY29sb3IiOlt7Ym9yZGVyOk4oKX1dLCJib3JkZXItY29sb3IteCI6W3siYm9yZGVyLXgiOk4oKX1dLCJib3JkZXItY29sb3IteSI6W3siYm9yZGVyLXkiOk4oKX1dLCJib3JkZXItY29sb3ItcyI6W3siYm9yZGVyLXMiOk4oKX1dLCJib3JkZXItY29sb3ItZSI6W3siYm9yZGVyLWUiOk4oKX1dLCJib3JkZXItY29sb3ItYnMiOlt7ImJvcmRlci1icyI6TigpfV0sImJvcmRlci1jb2xvci1iZSI6W3siYm9yZGVyLWJlIjpOKCl9XSwiYm9yZGVyLWNvbG9yLXQiOlt7ImJvcmRlci10IjpOKCl9XSwiYm9yZGVyLWNvbG9yLXIiOlt7ImJvcmRlci1yIjpOKCl9XSwiYm9yZGVyLWNvbG9yLWIiOlt7ImJvcmRlci1iIjpOKCl9XSwiYm9yZGVyLWNvbG9yLWwiOlt7ImJvcmRlci1sIjpOKCl9XSwiZGl2aWRlLWNvbG9yIjpbe2RpdmlkZTpOKCl9XSwib3V0bGluZS1zdHlsZSI6W3tvdXRsaW5lOlsuLi5zZSgpLGBub25lYCxgaGlkZGVuYF19XSwib3V0bGluZS1vZmZzZXQiOlt7Im91dGxpbmUtb2Zmc2V0IjpbWiwkLFFdfV0sIm91dGxpbmUtdyI6W3tvdXRsaW5lOltgYCxaLFN1LGh1XX1dLCJvdXRsaW5lLWNvbG9yIjpbe291dGxpbmU6TigpfV0sc2hhZG93Olt7c2hhZG93OltgYCxgbm9uZWAsdSxEdSx4dV19XSwic2hhZG93LWNvbG9yIjpbe3NoYWRvdzpOKCl9XSwiaW5zZXQtc2hhZG93IjpbeyJpbnNldC1zaGFkb3ciOltgbm9uZWAsZCxEdSx4dV19XSwiaW5zZXQtc2hhZG93LWNvbG9yIjpbeyJpbnNldC1zaGFkb3ciOk4oKX1dLCJyaW5nLXciOlt7cmluZzpGKCl9XSwicmluZy13LWluc2V0IjpbYHJpbmctaW5zZXRgXSwicmluZy1jb2xvciI6W3tyaW5nOk4oKX1dLCJyaW5nLW9mZnNldC13IjpbeyJyaW5nLW9mZnNldCI6W1osaHVdfV0sInJpbmctb2Zmc2V0LWNvbG9yIjpbeyJyaW5nLW9mZnNldCI6TigpfV0sImluc2V0LXJpbmctdyI6W3siaW5zZXQtcmluZyI6RigpfV0sImluc2V0LXJpbmctY29sb3IiOlt7Imluc2V0LXJpbmciOk4oKX1dLCJ0ZXh0LXNoYWRvdyI6W3sidGV4dC1zaGFkb3ciOltgbm9uZWAsZixEdSx4dV19XSwidGV4dC1zaGFkb3ctY29sb3IiOlt7InRleHQtc2hhZG93IjpOKCl9XSxvcGFjaXR5Olt7b3BhY2l0eTpbWiwkLFFdfV0sIm1peC1ibGVuZCI6W3sibWl4LWJsZW5kIjpbLi4uY2UoKSxgcGx1cy1kYXJrZXJgLGBwbHVzLWxpZ2h0ZXJgXX1dLCJiZy1ibGVuZCI6W3siYmctYmxlbmQiOmNlKCl9XSwibWFzay1jbGlwIjpbeyJtYXNrLWNsaXAiOltgYm9yZGVyYCxgcGFkZGluZ2AsYGNvbnRlbnRgLGBmaWxsYCxgc3Ryb2tlYCxgdmlld2BdfSxgbWFzay1uby1jbGlwYF0sIm1hc2stY29tcG9zaXRlIjpbe21hc2s6W2BhZGRgLGBzdWJ0cmFjdGAsYGludGVyc2VjdGAsYGV4Y2x1ZGVgXX1dLCJtYXNrLWltYWdlLWxpbmVhci1wb3MiOlt7Im1hc2stbGluZWFyIjpbWl19XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1wb3MiOlt7Im1hc2stbGluZWFyLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWxpbmVhci10by1wb3MiOlt7Im1hc2stbGluZWFyLXRvIjpJKCl9XSwibWFzay1pbWFnZS1saW5lYXItZnJvbS1jb2xvciI6W3sibWFzay1saW5lYXItZnJvbSI6TigpfV0sIm1hc2staW1hZ2UtbGluZWFyLXRvLWNvbG9yIjpbeyJtYXNrLWxpbmVhci10byI6TigpfV0sIm1hc2staW1hZ2UtdC1mcm9tLXBvcyI6W3sibWFzay10LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXQtdG8tcG9zIjpbeyJtYXNrLXQtdG8iOkkoKX1dLCJtYXNrLWltYWdlLXQtZnJvbS1jb2xvciI6W3sibWFzay10LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXQtdG8tY29sb3IiOlt7Im1hc2stdC10byI6TigpfV0sIm1hc2staW1hZ2Utci1mcm9tLXBvcyI6W3sibWFzay1yLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXItdG8tcG9zIjpbeyJtYXNrLXItdG8iOkkoKX1dLCJtYXNrLWltYWdlLXItZnJvbS1jb2xvciI6W3sibWFzay1yLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXItdG8tY29sb3IiOlt7Im1hc2stci10byI6TigpfV0sIm1hc2staW1hZ2UtYi1mcm9tLXBvcyI6W3sibWFzay1iLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWItdG8tcG9zIjpbeyJtYXNrLWItdG8iOkkoKX1dLCJtYXNrLWltYWdlLWItZnJvbS1jb2xvciI6W3sibWFzay1iLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWItdG8tY29sb3IiOlt7Im1hc2stYi10byI6TigpfV0sIm1hc2staW1hZ2UtbC1mcm9tLXBvcyI6W3sibWFzay1sLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLWwtdG8tcG9zIjpbeyJtYXNrLWwtdG8iOkkoKX1dLCJtYXNrLWltYWdlLWwtZnJvbS1jb2xvciI6W3sibWFzay1sLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWwtdG8tY29sb3IiOlt7Im1hc2stbC10byI6TigpfV0sIm1hc2staW1hZ2UteC1mcm9tLXBvcyI6W3sibWFzay14LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXgtdG8tcG9zIjpbeyJtYXNrLXgtdG8iOkkoKX1dLCJtYXNrLWltYWdlLXgtZnJvbS1jb2xvciI6W3sibWFzay14LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXgtdG8tY29sb3IiOlt7Im1hc2steC10byI6TigpfV0sIm1hc2staW1hZ2UteS1mcm9tLXBvcyI6W3sibWFzay15LWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXktdG8tcG9zIjpbeyJtYXNrLXktdG8iOkkoKX1dLCJtYXNrLWltYWdlLXktZnJvbS1jb2xvciI6W3sibWFzay15LWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLXktdG8tY29sb3IiOlt7Im1hc2steS10byI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsIjpbeyJtYXNrLXJhZGlhbCI6WyQsUV19XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1wb3MiOlt7Im1hc2stcmFkaWFsLWZyb20iOkkoKX1dLCJtYXNrLWltYWdlLXJhZGlhbC10by1wb3MiOlt7Im1hc2stcmFkaWFsLXRvIjpJKCl9XSwibWFzay1pbWFnZS1yYWRpYWwtZnJvbS1jb2xvciI6W3sibWFzay1yYWRpYWwtZnJvbSI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXRvLWNvbG9yIjpbeyJtYXNrLXJhZGlhbC10byI6TigpfV0sIm1hc2staW1hZ2UtcmFkaWFsLXNoYXBlIjpbeyJtYXNrLXJhZGlhbCI6W2BjaXJjbGVgLGBlbGxpcHNlYF19XSwibWFzay1pbWFnZS1yYWRpYWwtc2l6ZSI6W3sibWFzay1yYWRpYWwiOlt7Y2xvc2VzdDpbYHNpZGVgLGBjb3JuZXJgXSxmYXJ0aGVzdDpbYHNpZGVgLGBjb3JuZXJgXX1dfV0sIm1hc2staW1hZ2UtcmFkaWFsLXBvcyI6W3sibWFzay1yYWRpYWwtYXQiOmIoKX1dLCJtYXNrLWltYWdlLWNvbmljLXBvcyI6W3sibWFzay1jb25pYyI6W1pdfV0sIm1hc2staW1hZ2UtY29uaWMtZnJvbS1wb3MiOlt7Im1hc2stY29uaWMtZnJvbSI6SSgpfV0sIm1hc2staW1hZ2UtY29uaWMtdG8tcG9zIjpbeyJtYXNrLWNvbmljLXRvIjpJKCl9XSwibWFzay1pbWFnZS1jb25pYy1mcm9tLWNvbG9yIjpbeyJtYXNrLWNvbmljLWZyb20iOk4oKX1dLCJtYXNrLWltYWdlLWNvbmljLXRvLWNvbG9yIjpbeyJtYXNrLWNvbmljLXRvIjpOKCl9XSwibWFzay1tb2RlIjpbe21hc2s6W2BhbHBoYWAsYGx1bWluYW5jZWAsYG1hdGNoYF19XSwibWFzay1vcmlnaW4iOlt7Im1hc2stb3JpZ2luIjpbYGJvcmRlcmAsYHBhZGRpbmdgLGBjb250ZW50YCxgZmlsbGAsYHN0cm9rZWAsYHZpZXdgXX1dLCJtYXNrLXBvc2l0aW9uIjpbe21hc2s6cmUoKX1dLCJtYXNrLXJlcGVhdCI6W3ttYXNrOmllKCl9XSwibWFzay1zaXplIjpbe21hc2s6YWUoKX1dLCJtYXNrLXR5cGUiOlt7Im1hc2stdHlwZSI6W2BhbHBoYWAsYGx1bWluYW5jZWBdfV0sIm1hc2staW1hZ2UiOlt7bWFzazpbYG5vbmVgLCQsUV19XSxmaWx0ZXI6W3tmaWx0ZXI6W2BgLGBub25lYCwkLFFdfV0sYmx1cjpbe2JsdXI6bGUoKX1dLGJyaWdodG5lc3M6W3ticmlnaHRuZXNzOltaLCQsUV19XSxjb250cmFzdDpbe2NvbnRyYXN0OltaLCQsUV19XSwiZHJvcC1zaGFkb3ciOlt7ImRyb3Atc2hhZG93IjpbYGAsYG5vbmVgLHAsRHUseHVdfV0sImRyb3Atc2hhZG93LWNvbG9yIjpbeyJkcm9wLXNoYWRvdyI6TigpfV0sZ3JheXNjYWxlOlt7Z3JheXNjYWxlOltgYCxaLCQsUV19XSwiaHVlLXJvdGF0ZSI6W3siaHVlLXJvdGF0ZSI6W1osJCxRXX1dLGludmVydDpbe2ludmVydDpbYGAsWiwkLFFdfV0sc2F0dXJhdGU6W3tzYXR1cmF0ZTpbWiwkLFFdfV0sc2VwaWE6W3tzZXBpYTpbYGAsWiwkLFFdfV0sImJhY2tkcm9wLWZpbHRlciI6W3siYmFja2Ryb3AtZmlsdGVyIjpbYGAsYG5vbmVgLCQsUV19XSwiYmFja2Ryb3AtYmx1ciI6W3siYmFja2Ryb3AtYmx1ciI6bGUoKX1dLCJiYWNrZHJvcC1icmlnaHRuZXNzIjpbeyJiYWNrZHJvcC1icmlnaHRuZXNzIjpbWiwkLFFdfV0sImJhY2tkcm9wLWNvbnRyYXN0IjpbeyJiYWNrZHJvcC1jb250cmFzdCI6W1osJCxRXX1dLCJiYWNrZHJvcC1ncmF5c2NhbGUiOlt7ImJhY2tkcm9wLWdyYXlzY2FsZSI6W2BgLFosJCxRXX1dLCJiYWNrZHJvcC1odWUtcm90YXRlIjpbeyJiYWNrZHJvcC1odWUtcm90YXRlIjpbWiwkLFFdfV0sImJhY2tkcm9wLWludmVydCI6W3siYmFja2Ryb3AtaW52ZXJ0IjpbYGAsWiwkLFFdfV0sImJhY2tkcm9wLW9wYWNpdHkiOlt7ImJhY2tkcm9wLW9wYWNpdHkiOltaLCQsUV19XSwiYmFja2Ryb3Atc2F0dXJhdGUiOlt7ImJhY2tkcm9wLXNhdHVyYXRlIjpbWiwkLFFdfV0sImJhY2tkcm9wLXNlcGlhIjpbeyJiYWNrZHJvcC1zZXBpYSI6W2BgLFosJCxRXX1dLCJib3JkZXItY29sbGFwc2UiOlt7Ym9yZGVyOltgY29sbGFwc2VgLGBzZXBhcmF0ZWBdfV0sImJvcmRlci1zcGFjaW5nIjpbeyJib3JkZXItc3BhY2luZyI6dygpfV0sImJvcmRlci1zcGFjaW5nLXgiOlt7ImJvcmRlci1zcGFjaW5nLXgiOncoKX1dLCJib3JkZXItc3BhY2luZy15IjpbeyJib3JkZXItc3BhY2luZy15Ijp3KCl9XSwidGFibGUtbGF5b3V0Ijpbe3RhYmxlOltgYXV0b2AsYGZpeGVkYF19XSxjYXB0aW9uOlt7Y2FwdGlvbjpbYHRvcGAsYGJvdHRvbWBdfV0sdHJhbnNpdGlvbjpbe3RyYW5zaXRpb246W2BgLGBhbGxgLGBjb2xvcnNgLGBvcGFjaXR5YCxgc2hhZG93YCxgdHJhbnNmb3JtYCxgbm9uZWAsJCxRXX1dLCJ0cmFuc2l0aW9uLWJlaGF2aW9yIjpbe3RyYW5zaXRpb246W2Bub3JtYWxgLGBkaXNjcmV0ZWBdfV0sZHVyYXRpb246W3tkdXJhdGlvbjpbWixgaW5pdGlhbGAsJCxRXX1dLGVhc2U6W3tlYXNlOltgbGluZWFyYCxgaW5pdGlhbGAsXywkLFFdfV0sZGVsYXk6W3tkZWxheTpbWiwkLFFdfV0sYW5pbWF0ZTpbe2FuaW1hdGU6W2Bub25lYCx2LCQsUV19XSxiYWNrZmFjZTpbe2JhY2tmYWNlOltgaGlkZGVuYCxgdmlzaWJsZWBdfV0scGVyc3BlY3RpdmU6W3twZXJzcGVjdGl2ZTpbaCwkLFFdfV0sInBlcnNwZWN0aXZlLW9yaWdpbiI6W3sicGVyc3BlY3RpdmUtb3JpZ2luIjp4KCl9XSxyb3RhdGU6W3tyb3RhdGU6dWUoKX1dLCJyb3RhdGUteCI6W3sicm90YXRlLXgiOnVlKCl9XSwicm90YXRlLXkiOlt7InJvdGF0ZS15Ijp1ZSgpfV0sInJvdGF0ZS16IjpbeyJyb3RhdGUteiI6dWUoKX1dLHNjYWxlOlt7c2NhbGU6ZGUoKX1dLCJzY2FsZS14IjpbeyJzY2FsZS14IjpkZSgpfV0sInNjYWxlLXkiOlt7InNjYWxlLXkiOmRlKCl9XSwic2NhbGUteiI6W3sic2NhbGUteiI6ZGUoKX1dLCJzY2FsZS0zZCI6W2BzY2FsZS0zZGBdLHNrZXc6W3tza2V3OmZlKCl9XSwic2tldy14IjpbeyJza2V3LXgiOmZlKCl9XSwic2tldy15IjpbeyJza2V3LXkiOmZlKCl9XSx0cmFuc2Zvcm06W3t0cmFuc2Zvcm06WyQsUSxgYCxgbm9uZWAsYGdwdWAsYGNwdWBdfV0sInRyYW5zZm9ybS1vcmlnaW4iOlt7b3JpZ2luOngoKX1dLCJ0cmFuc2Zvcm0tc3R5bGUiOlt7dHJhbnNmb3JtOltgM2RgLGBmbGF0YF19XSx0cmFuc2xhdGU6W3t0cmFuc2xhdGU6cGUoKX1dLCJ0cmFuc2xhdGUteCI6W3sidHJhbnNsYXRlLXgiOnBlKCl9XSwidHJhbnNsYXRlLXkiOlt7InRyYW5zbGF0ZS15IjpwZSgpfV0sInRyYW5zbGF0ZS16IjpbeyJ0cmFuc2xhdGUteiI6cGUoKX1dLCJ0cmFuc2xhdGUtbm9uZSI6W2B0cmFuc2xhdGUtbm9uZWBdLHpvb206W3t6b29tOltpdSwkLFFdfV0sYWNjZW50Olt7YWNjZW50Ok4oKX1dLGFwcGVhcmFuY2U6W3thcHBlYXJhbmNlOltgbm9uZWAsYGF1dG9gXX1dLCJjYXJldC1jb2xvciI6W3tjYXJldDpOKCl9XSwiY29sb3Itc2NoZW1lIjpbe3NjaGVtZTpbYG5vcm1hbGAsYGRhcmtgLGBsaWdodGAsYGxpZ2h0LWRhcmtgLGBvbmx5LWRhcmtgLGBvbmx5LWxpZ2h0YF19XSxjdXJzb3I6W3tjdXJzb3I6W2BhdXRvYCxgZGVmYXVsdGAsYHBvaW50ZXJgLGB3YWl0YCxgdGV4dGAsYG1vdmVgLGBoZWxwYCxgbm90LWFsbG93ZWRgLGBub25lYCxgY29udGV4dC1tZW51YCxgcHJvZ3Jlc3NgLGBjZWxsYCxgY3Jvc3NoYWlyYCxgdmVydGljYWwtdGV4dGAsYGFsaWFzYCxgY29weWAsYG5vLWRyb3BgLGBncmFiYCxgZ3JhYmJpbmdgLGBhbGwtc2Nyb2xsYCxgY29sLXJlc2l6ZWAsYHJvdy1yZXNpemVgLGBuLXJlc2l6ZWAsYGUtcmVzaXplYCxgcy1yZXNpemVgLGB3LXJlc2l6ZWAsYG5lLXJlc2l6ZWAsYG53LXJlc2l6ZWAsYHNlLXJlc2l6ZWAsYHN3LXJlc2l6ZWAsYGV3LXJlc2l6ZWAsYG5zLXJlc2l6ZWAsYG5lc3ctcmVzaXplYCxgbndzZS1yZXNpemVgLGB6b29tLWluYCxgem9vbS1vdXRgLCQsUV19XSwiZmllbGQtc2l6aW5nIjpbeyJmaWVsZC1zaXppbmciOltgZml4ZWRgLGBjb250ZW50YF19XSwicG9pbnRlci1ldmVudHMiOlt7InBvaW50ZXItZXZlbnRzIjpbYGF1dG9gLGBub25lYF19XSxyZXNpemU6W3tyZXNpemU6W2Bub25lYCxgYCxgeWAsYHhgXX1dLCJzY3JvbGwtYmVoYXZpb3IiOlt7c2Nyb2xsOltgYXV0b2AsYHNtb290aGBdfV0sInNjcm9sbGJhci10aHVtYi1jb2xvciI6W3sic2Nyb2xsYmFyLXRodW1iIjpOKCl9XSwic2Nyb2xsYmFyLXRyYWNrLWNvbG9yIjpbeyJzY3JvbGxiYXItdHJhY2siOk4oKX1dLCJzY3JvbGxiYXItZ3V0dGVyIjpbeyJzY3JvbGxiYXItZ3V0dGVyIjpbYGF1dG9gLGBzdGFibGVgLGBib3RoYF19XSwic2Nyb2xsYmFyLXciOlt7c2Nyb2xsYmFyOltgYXV0b2AsYHRoaW5gLGBub25lYF19XSwic2Nyb2xsLW0iOlt7InNjcm9sbC1tIjp3KCl9XSwic2Nyb2xsLW14IjpbeyJzY3JvbGwtbXgiOncoKX1dLCJzY3JvbGwtbXkiOlt7InNjcm9sbC1teSI6dygpfV0sInNjcm9sbC1tcyI6W3sic2Nyb2xsLW1zIjp3KCl9XSwic2Nyb2xsLW1lIjpbeyJzY3JvbGwtbWUiOncoKX1dLCJzY3JvbGwtbWJzIjpbeyJzY3JvbGwtbWJzIjp3KCl9XSwic2Nyb2xsLW1iZSI6W3sic2Nyb2xsLW1iZSI6dygpfV0sInNjcm9sbC1tdCI6W3sic2Nyb2xsLW10Ijp3KCl9XSwic2Nyb2xsLW1yIjpbeyJzY3JvbGwtbXIiOncoKX1dLCJzY3JvbGwtbWIiOlt7InNjcm9sbC1tYiI6dygpfV0sInNjcm9sbC1tbCI6W3sic2Nyb2xsLW1sIjp3KCl9XSwic2Nyb2xsLXAiOlt7InNjcm9sbC1wIjp3KCl9XSwic2Nyb2xsLXB4IjpbeyJzY3JvbGwtcHgiOncoKX1dLCJzY3JvbGwtcHkiOlt7InNjcm9sbC1weSI6dygpfV0sInNjcm9sbC1wcyI6W3sic2Nyb2xsLXBzIjp3KCl9XSwic2Nyb2xsLXBlIjpbeyJzY3JvbGwtcGUiOncoKX1dLCJzY3JvbGwtcGJzIjpbeyJzY3JvbGwtcGJzIjp3KCl9XSwic2Nyb2xsLXBiZSI6W3sic2Nyb2xsLXBiZSI6dygpfV0sInNjcm9sbC1wdCI6W3sic2Nyb2xsLXB0Ijp3KCl9XSwic2Nyb2xsLXByIjpbeyJzY3JvbGwtcHIiOncoKX1dLCJzY3JvbGwtcGIiOlt7InNjcm9sbC1wYiI6dygpfV0sInNjcm9sbC1wbCI6W3sic2Nyb2xsLXBsIjp3KCl9XSwic25hcC1hbGlnbiI6W3tzbmFwOltgc3RhcnRgLGBlbmRgLGBjZW50ZXJgLGBhbGlnbi1ub25lYF19XSwic25hcC1zdG9wIjpbe3NuYXA6W2Bub3JtYWxgLGBhbHdheXNgXX1dLCJzbmFwLXR5cGUiOlt7c25hcDpbYG5vbmVgLGB4YCxgeWAsYGJvdGhgXX1dLCJzbmFwLXN0cmljdG5lc3MiOlt7c25hcDpbYG1hbmRhdG9yeWAsYHByb3hpbWl0eWBdfV0sdG91Y2g6W3t0b3VjaDpbYGF1dG9gLGBub25lYCxgbWFuaXB1bGF0aW9uYF19XSwidG91Y2gteCI6W3sidG91Y2gtcGFuIjpbYHhgLGBsZWZ0YCxgcmlnaHRgXX1dLCJ0b3VjaC15IjpbeyJ0b3VjaC1wYW4iOltgeWAsYHVwYCxgZG93bmBdfV0sInRvdWNoLXB6IjpbYHRvdWNoLXBpbmNoLXpvb21gXSxzZWxlY3Q6W3tzZWxlY3Q6W2Bub25lYCxgdGV4dGAsYGFsbGAsYGF1dG9gXX1dLCJ3aWxsLWNoYW5nZSI6W3sid2lsbC1jaGFuZ2UiOltgYXV0b2AsYHNjcm9sbGAsYGNvbnRlbnRzYCxgdHJhbnNmb3JtYCwkLFFdfV0sZmlsbDpbe2ZpbGw6W2Bub25lYCwuLi5OKCldfV0sInN0cm9rZS13Ijpbe3N0cm9rZTpbWixTdSxodSxndV19XSxzdHJva2U6W3tzdHJva2U6W2Bub25lYCwuLi5OKCldfV0sImZvcmNlZC1jb2xvci1hZGp1c3QiOlt7ImZvcmNlZC1jb2xvci1hZGp1c3QiOltgYXV0b2AsYG5vbmVgXX1dfSxjb25mbGljdGluZ0NsYXNzR3JvdXBzOnsiY29udGFpbmVyLW5hbWVkIjpbYGNvbnRhaW5lci10eXBlYF0sb3ZlcmZsb3c6W2BvdmVyZmxvdy14YCxgb3ZlcmZsb3cteWBdLG92ZXJzY3JvbGw6W2BvdmVyc2Nyb2xsLXhgLGBvdmVyc2Nyb2xsLXlgXSxpbnNldDpbYGluc2V0LXhgLGBpbnNldC15YCxgaW5zZXQtYnNgLGBpbnNldC1iZWAsYHN0YXJ0YCxgZW5kYCxgdG9wYCxgcmlnaHRgLGBib3R0b21gLGBsZWZ0YF0sImluc2V0LXgiOltgcmlnaHRgLGBsZWZ0YF0sImluc2V0LXkiOltgdG9wYCxgYm90dG9tYF0sZmxleDpbYGJhc2lzYCxgZ3Jvd2AsYHNocmlua2BdLGdhcDpbYGdhcC14YCxgZ2FwLXlgXSxwOltgcHhgLGBweWAsYHBzYCxgcGVgLGBwYnNgLGBwYmVgLGBwdGAsYHByYCxgcGJgLGBwbGBdLHB4OltgcHJgLGBwbGBdLHB5OltgcHRgLGBwYmBdLG06W2BteGAsYG15YCxgbXNgLGBtZWAsYG1ic2AsYG1iZWAsYG10YCxgbXJgLGBtYmAsYG1sYF0sbXg6W2BtcmAsYG1sYF0sbXk6W2BtdGAsYG1iYF0sc2l6ZTpbYHdgLGBoYF0sImZvbnQtc2l6ZSI6W2BsZWFkaW5nYF0sImZ2bi1ub3JtYWwiOltgZnZuLW9yZGluYWxgLGBmdm4tc2xhc2hlZC16ZXJvYCxgZnZuLWZpZ3VyZWAsYGZ2bi1zcGFjaW5nYCxgZnZuLWZyYWN0aW9uYF0sImZ2bi1vcmRpbmFsIjpbYGZ2bi1ub3JtYWxgXSwiZnZuLXNsYXNoZWQtemVybyI6W2Bmdm4tbm9ybWFsYF0sImZ2bi1maWd1cmUiOltgZnZuLW5vcm1hbGBdLCJmdm4tc3BhY2luZyI6W2Bmdm4tbm9ybWFsYF0sImZ2bi1mcmFjdGlvbiI6W2Bmdm4tbm9ybWFsYF0sImxpbmUtY2xhbXAiOltgZGlzcGxheWAsYG92ZXJmbG93YF0scm91bmRlZDpbYHJvdW5kZWQtc2AsYHJvdW5kZWQtZWAsYHJvdW5kZWQtdGAsYHJvdW5kZWQtcmAsYHJvdW5kZWQtYmAsYHJvdW5kZWQtbGAsYHJvdW5kZWQtc3NgLGByb3VuZGVkLXNlYCxgcm91bmRlZC1lZWAsYHJvdW5kZWQtZXNgLGByb3VuZGVkLXRsYCxgcm91bmRlZC10cmAsYHJvdW5kZWQtYnJgLGByb3VuZGVkLWJsYF0sInJvdW5kZWQtcyI6W2Byb3VuZGVkLXNzYCxgcm91bmRlZC1lc2BdLCJyb3VuZGVkLWUiOltgcm91bmRlZC1zZWAsYHJvdW5kZWQtZWVgXSwicm91bmRlZC10IjpbYHJvdW5kZWQtdGxgLGByb3VuZGVkLXRyYF0sInJvdW5kZWQtciI6W2Byb3VuZGVkLXRyYCxgcm91bmRlZC1icmBdLCJyb3VuZGVkLWIiOltgcm91bmRlZC1icmAsYHJvdW5kZWQtYmxgXSwicm91bmRlZC1sIjpbYHJvdW5kZWQtdGxgLGByb3VuZGVkLWJsYF0sImJvcmRlci1zcGFjaW5nIjpbYGJvcmRlci1zcGFjaW5nLXhgLGBib3JkZXItc3BhY2luZy15YF0sImJvcmRlci13IjpbYGJvcmRlci13LXhgLGBib3JkZXItdy15YCxgYm9yZGVyLXctc2AsYGJvcmRlci13LWVgLGBib3JkZXItdy1ic2AsYGJvcmRlci13LWJlYCxgYm9yZGVyLXctdGAsYGJvcmRlci13LXJgLGBib3JkZXItdy1iYCxgYm9yZGVyLXctbGBdLCJib3JkZXItdy14IjpbYGJvcmRlci13LXJgLGBib3JkZXItdy1sYF0sImJvcmRlci13LXkiOltgYm9yZGVyLXctdGAsYGJvcmRlci13LWJgXSwiYm9yZGVyLWNvbG9yIjpbYGJvcmRlci1jb2xvci14YCxgYm9yZGVyLWNvbG9yLXlgLGBib3JkZXItY29sb3Itc2AsYGJvcmRlci1jb2xvci1lYCxgYm9yZGVyLWNvbG9yLWJzYCxgYm9yZGVyLWNvbG9yLWJlYCxgYm9yZGVyLWNvbG9yLXRgLGBib3JkZXItY29sb3ItcmAsYGJvcmRlci1jb2xvci1iYCxgYm9yZGVyLWNvbG9yLWxgXSwiYm9yZGVyLWNvbG9yLXgiOltgYm9yZGVyLWNvbG9yLXJgLGBib3JkZXItY29sb3ItbGBdLCJib3JkZXItY29sb3IteSI6W2Bib3JkZXItY29sb3ItdGAsYGJvcmRlci1jb2xvci1iYF0sdHJhbnNsYXRlOltgdHJhbnNsYXRlLXhgLGB0cmFuc2xhdGUteWAsYHRyYW5zbGF0ZS1ub25lYF0sInRyYW5zbGF0ZS1ub25lIjpbYHRyYW5zbGF0ZWAsYHRyYW5zbGF0ZS14YCxgdHJhbnNsYXRlLXlgLGB0cmFuc2xhdGUtemBdLCJzY3JvbGwtbSI6W2BzY3JvbGwtbXhgLGBzY3JvbGwtbXlgLGBzY3JvbGwtbXNgLGBzY3JvbGwtbWVgLGBzY3JvbGwtbWJzYCxgc2Nyb2xsLW1iZWAsYHNjcm9sbC1tdGAsYHNjcm9sbC1tcmAsYHNjcm9sbC1tYmAsYHNjcm9sbC1tbGBdLCJzY3JvbGwtbXgiOltgc2Nyb2xsLW1yYCxgc2Nyb2xsLW1sYF0sInNjcm9sbC1teSI6W2BzY3JvbGwtbXRgLGBzY3JvbGwtbWJgXSwic2Nyb2xsLXAiOltgc2Nyb2xsLXB4YCxgc2Nyb2xsLXB5YCxgc2Nyb2xsLXBzYCxgc2Nyb2xsLXBlYCxgc2Nyb2xsLXBic2AsYHNjcm9sbC1wYmVgLGBzY3JvbGwtcHRgLGBzY3JvbGwtcHJgLGBzY3JvbGwtcGJgLGBzY3JvbGwtcGxgXSwic2Nyb2xsLXB4IjpbYHNjcm9sbC1wcmAsYHNjcm9sbC1wbGBdLCJzY3JvbGwtcHkiOltgc2Nyb2xsLXB0YCxgc2Nyb2xsLXBiYF0sdG91Y2g6W2B0b3VjaC14YCxgdG91Y2gteWAsYHRvdWNoLXB6YF0sInRvdWNoLXgiOltgdG91Y2hgXSwidG91Y2gteSI6W2B0b3VjaGBdLCJ0b3VjaC1weiI6W2B0b3VjaGBdfSxjb25mbGljdGluZ0NsYXNzR3JvdXBNb2RpZmllcnM6eyJmb250LXNpemUiOltgbGVhZGluZ2BdfSxwb3N0Zml4TG9va3VwQ2xhc3NHcm91cHM6W2Bjb250YWluZXItdHlwZWBdLG9yZGVyU2Vuc2l0aXZlTW9kaWZpZXJzOltgKmAsYCoqYCxgYWZ0ZXJgLGBiYWNrZHJvcGAsYGJlZm9yZWAsYGRldGFpbHMtY29udGVudGAsYGZpbGVgLGBmaXJzdC1sZXR0ZXJgLGBmaXJzdC1saW5lYCxgbWFya2VyYCxgcGxhY2Vob2xkZXJgLGBzZWxlY3Rpb25gXX19KTtmdW5jdGlvbiBCdSguLi5lKXtyZXR1cm4genUoZmwoZSkpfWZ1bmN0aW9uIFZ1KGUsdCl7cmV0dXJuIFRlKCk/KEVlKGUsdCksITApOiExfWZ1bmN0aW9uIEh1KGUpe2xldCB0PSExLG4scj13ZSghMCk7cmV0dXJuKCguLi5pKT0+KHR8fD0obj1yLnJ1bigoKT0+ZSguLi5pKSksITApLG4pKX12YXIgVXU9dHlwZW9mIHdpbmRvdzxgdWAmJnR5cGVvZiBkb2N1bWVudDxgdWA7dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlPGB1YCYmZ2xvYmFsVGhpcyBpbnN0YW5jZW9mIFdvcmtlckdsb2JhbFNjb3BlO3ZhciBXdT1lPT5lIT09dm9pZCAwLEd1PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsS3U9ZT0+R3UuY2FsbChlKT09PWBbb2JqZWN0IE9iamVjdF1gLHF1PUp1KCk7ZnVuY3Rpb24gSnUoKXt2YXIgZSx0O3JldHVybiBVdSYmISEoKGU9d2luZG93KSE9bnVsbCYmKGU9ZS5uYXZpZ2F0b3IpIT1udWxsJiZlLnVzZXJBZ2VudCkmJigvaVAoPzphZHxob25lfG9kKS8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCl8fCgodD13aW5kb3cpPT1udWxsfHwodD10Lm5hdmlnYXRvcik9PW51bGw/dm9pZCAwOnQubWF4VG91Y2hQb2ludHMpPjImJi9pUGFkfE1hY2ludG9zaC8udGVzdCh3aW5kb3c/Lm5hdmlnYXRvci51c2VyQWdlbnQpKX1mdW5jdGlvbiBZdShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOltlXX1mdW5jdGlvbiBYdShlKXtyZXR1cm4gZXx8RHMoKX1mdW5jdGlvbiBadShlKXtpZighVXUpcmV0dXJuIGU7bGV0IHQ9MCxuLHIsaT0oKT0+ey0tdCxyJiZ0PD0wJiYoci5zdG9wKCksbj12b2lkIDAscj12b2lkIDApfTtyZXR1cm4oKC4uLmEpPT4odCs9MSxyfHwocj13ZSghMCksbj1yLnJ1bigoKT0+ZSguLi5hKSkpLFZ1KGkpLG4pKX1mdW5jdGlvbiBRdShlKXtyZXR1cm4genQoVihlKT9uZXcgUHJveHkoe30se2dldCh0LG4scil7cmV0dXJuIG5uKFJlZmxlY3QuZ2V0KGUudmFsdWUsbixyKSl9LHNldCh0LG4scil7cmV0dXJuIFYoZS52YWx1ZVtuXSkmJiFWKHIpP2UudmFsdWVbbl0udmFsdWU9cjplLnZhbHVlW25dPXIsITB9LGRlbGV0ZVByb3BlcnR5KHQsbil7cmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoZS52YWx1ZSxuKX0saGFzKHQsbil7cmV0dXJuIFJlZmxlY3QuaGFzKGUudmFsdWUsbil9LG93bktleXMoKXtyZXR1cm4gT2JqZWN0LmtleXMoZS52YWx1ZSl9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcigpe3JldHVybntlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19fSk6ZSl9ZnVuY3Rpb24gJHUoZSl7cmV0dXJuIFF1KHFzKGUpKX1mdW5jdGlvbiBlZChlLC4uLnQpe2xldCBuPXQuZmxhdCgpLHI9blswXTtyZXR1cm4gJHUoKCk9Pk9iamVjdC5mcm9tRW50cmllcyh0eXBlb2Ygcj09YGZ1bmN0aW9uYD9PYmplY3QuZW50cmllcyhsbihlKSkuZmlsdGVyKChbZSx0XSk9PiFyKHJuKHQpLGUpKTpPYmplY3QuZW50cmllcyhsbihlKSkuZmlsdGVyKGU9PiFuLmluY2x1ZGVzKGVbMF0pKSkpfWZ1bmN0aW9uIHRkKGUsdD0xZTQpe3JldHVybiBjbigobixyKT0+e2xldCBpPXJuKGUpLGEsbz0oKT0+c2V0VGltZW91dCgoKT0+e2k9cm4oZSkscigpfSxybih0KSk7cmV0dXJuIFZ1KCgpPT57Y2xlYXJUaW1lb3V0KGEpfSkse2dldCgpe3JldHVybiBuKCksaX0sc2V0KGUpe2k9ZSxyKCksY2xlYXJUaW1lb3V0KGEpLGE9bygpfX19KX1mdW5jdGlvbiBuZChlLHQpe1h1KHQpJiZXaShlLHQpfWZ1bmN0aW9uIHJkKGUsdCxuKXtyZXR1cm4gaHIoZSx0LHsuLi5uLGltbWVkaWF0ZTohMH0pfWZ1bmN0aW9uIGlkKGUpe3JldHVybiBlP2UuZmxhdE1hcChlPT5lLnR5cGU9PT1HP2lkKGUuY2hpbGRyZW4pOltlXSk6W119dmFyIGFkPUpyKHtuYW1lOmBQcmltaXRpdmVTbG90YCxpbmhlcml0QXR0cnM6ITEsc2V0dXAoZSx7YXR0cnM6dCxzbG90czpufSl7cmV0dXJuKCk9PntpZighbi5kZWZhdWx0KXJldHVybiBudWxsO2xldCBlPWlkKG4uZGVmYXVsdCgpKSxyPWUuZmluZEluZGV4KGU9PmUudHlwZSE9PUspO2lmKHI9PT0tMSlyZXR1cm4gZTtsZXQgaT1lW3JdO2RlbGV0ZSBpLnByb3BzPy5yZWY7bGV0IGE9aS5wcm9wcz9Tcyh0LGkucHJvcHMpOnQsbz1ocyh7Li4uaSxwcm9wczp7fX0sYSk7cmV0dXJuIGUubGVuZ3RoPT09MT9vOihlW3JdPW8sZSl9fX0pLG9kPVtgYXJlYWAsYGltZ2AsYGlucHV0YF0sc2Q9SnIoe25hbWU6YFByaW1pdGl2ZWAsaW5oZXJpdEF0dHJzOiExLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4sZGVmYXVsdDohMX0sYXM6e3R5cGU6W1N0cmluZyxPYmplY3RdLGRlZmF1bHQ6YGRpdmB9fSxzZXR1cChlLHthdHRyczp0LHNsb3RzOm59KXtsZXQgcj1lLmFzQ2hpbGQ/YHRlbXBsYXRlYDplLmFzO3JldHVybiB0eXBlb2Ygcj09YHN0cmluZ2AmJm9kLmluY2x1ZGVzKHIpPygpPT5KcyhyLHQpOnI9PT1gdGVtcGxhdGVgPygpPT5KcyhhZCx0LHtkZWZhdWx0Om4uZGVmYXVsdH0pOigpPT5KcyhlLmFzLHQse2RlZmF1bHQ6bi5kZWZhdWx0fSl9fSksY2Q9W2BkYXRhLXNpemVgXSxsZD1Kcih7X19uYW1lOmBDYXJkYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX0sc2l6ZTp7ZGVmYXVsdDpgZGVmYXVsdGB9fSxzZXR1cChlKXtsZXQgdD1lO3JldHVybihuLHIpPT4oZXMoKSxhcyhgZGl2YCx7ImRhdGEtc2xvdCI6YGNhcmRgLCJkYXRhLXNpemUiOmUuc2l6ZSxjbGFzczp1ZShubihCdSkoYHJpbmctZm9yZWdyb3VuZC8xMCBiZy1jYXJkIHRleHQtY2FyZC1mb3JlZ3JvdW5kIGdhcC00IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLXhsIHB5LTQgdGV4dC1zbSByaW5nLTEgaGFzLWRhdGEtW3Nsb3Q9Y2FyZC1mb290ZXJdOnBiLTAgaGFzLVs+aW1nOmZpcnN0LWNoaWxkXTpwdC0wIGRhdGEtW3NpemU9c21dOmdhcC0zIGRhdGEtW3NpemU9c21dOnB5LTMgZGF0YS1bc2l6ZT1zbV06aGFzLWRhdGEtW3Nsb3Q9Y2FyZC1mb290ZXJdOnBiLTAgKjpbaW1nOmZpcnN0LWNoaWxkXTpyb3VuZGVkLXQteGwgKjpbaW1nOmxhc3QtY2hpbGRdOnJvdW5kZWQtYi14bCBncm91cC9jYXJkIGZsZXggZmxleC1jb2xgLHQuY2xhc3MpKX0sW29hKG4uJHNsb3RzLGBkZWZhdWx0YCldLDEwLGNkKSl9fSksdWQ9SnIoe19fbmFtZTpgQ2FyZENvbnRlbnRgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KGVzKCksYXMoYGRpdmAseyJkYXRhLXNsb3QiOmBjYXJkLWNvbnRlbnRgLGNsYXNzOnVlKG5uKEJ1KShgcHgtNCBncm91cC1kYXRhLVtzaXplPXNtXS9jYXJkOnB4LTNgLHQuY2xhc3MpKX0sW29hKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxkZD1Kcih7X19uYW1lOmBDYXJkSGVhZGVyYCxwcm9wczp7Y2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWU7cmV0dXJuKGUsbik9PihlcygpLGFzKGBkaXZgLHsiZGF0YS1zbG90IjpgY2FyZC1oZWFkZXJgLGNsYXNzOnVlKG5uKEJ1KShgZ2FwLTEgcm91bmRlZC10LXhsIHB4LTQgZ3JvdXAtZGF0YS1bc2l6ZT1zbV0vY2FyZDpweC0zIFsuYm9yZGVyLWJdOnBiLTQgZ3JvdXAtZGF0YS1bc2l6ZT1zbV0vY2FyZDpbLmJvcmRlci1iXTpwYi0zIGdyb3VwL2NhcmQtaGVhZGVyIEBjb250YWluZXIvY2FyZC1oZWFkZXIgZ3JpZCBhdXRvLXJvd3MtbWluIGl0ZW1zLXN0YXJ0IGhhcy1kYXRhLVtzbG90PWNhcmQtYWN0aW9uXTpncmlkLWNvbHMtWzFmcl9hdXRvXSBoYXMtZGF0YS1bc2xvdD1jYXJkLWRlc2NyaXB0aW9uXTpncmlkLXJvd3MtW2F1dG9fYXV0b11gLHQuY2xhc3MpKX0sW29hKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpKX19KSxmZD1Kcih7X19uYW1lOmBDYXJkVGl0bGVgLHByb3BzOntjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZTtyZXR1cm4oZSxuKT0+KGVzKCksYXMoYGRpdmAseyJkYXRhLXNsb3QiOmBjYXJkLXRpdGxlYCxjbGFzczp1ZShubihCdSkoYHRleHQtYmFzZSBsZWFkaW5nLXNudWcgZm9udC1tZWRpdW0gZ3JvdXAtZGF0YS1bc2l6ZT1zbV0vY2FyZDp0ZXh0LXNtIGZvbnQtaGVhZGluZ2AsdC5jbGFzcykpfSxbb2EoZS4kc2xvdHMsYGRlZmF1bHRgKV0sMikpfX0pLHBkPWBsbG1nd0FkbWluS2V5YDtmdW5jdGlvbiBtZCgpe3RyeXtyZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShwZCk/P2BgfWNhdGNoe3JldHVybmBgfX1mdW5jdGlvbiBoZChlKXt0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShwZCxlKX1jYXRjaHt9fWZ1bmN0aW9uIGdkKCl7dHJ5e3Nlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0ocGQpfWNhdGNoe319dmFyIF9kPUZjKGBhdXRoYCx7c3RhdGU6KCk9Pih7YXBpS2V5Om1kKCksZXJyb3I6YGB9KSxnZXR0ZXJzOntpc0F1dGhlbnRpY2F0ZWQ6ZT0+ZS5hcGlLZXkhPT1gYH0sYWN0aW9uczp7c3VibWl0KGUpe2UmJih0aGlzLmFwaUtleT1lLHRoaXMuZXJyb3I9YGAsaGQoZSkpfSxyZWplY3QoZSl7dGhpcy5hcGlLZXk9YGAsdGhpcy5lcnJvcj1lLGdkKCl9fX0pLHZkPWNsYXNzIGV4dGVuZHMgRXJyb3J7c3RhdHVzO2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSksdGhpcy5uYW1lPWBBZG1pbkFwaUVycm9yYCx0aGlzLnN0YXR1cz10fX07YXN5bmMgZnVuY3Rpb24geWQoZSx0KXtsZXQgbj1gJHt0fTogSFRUUCAke2Uuc3RhdHVzfWA7dHJ5e3JldHVybihhd2FpdCBlLmpzb24oKSkuZXJyb3I/Lm1lc3NhZ2V8fG59Y2F0Y2h7cmV0dXJuIG59fWFzeW5jIGZ1bmN0aW9uIGJkKGUpe2xldCB0PV9kKCksbj10LmFwaUtleSxyPWF3YWl0IGZldGNoKGUse2NyZWRlbnRpYWxzOmBzYW1lLW9yaWdpbmAsaGVhZGVyczpuP3sieC1hcGkta2V5IjpufTp7fX0pO2lmKCFyLm9rKXtsZXQgaT1hd2FpdCB5ZChyLGUpO3Rocm93KHIuc3RhdHVzPT09NDAxfHxyLnN0YXR1cz09PTQwMykmJnQuYXBpS2V5PT09biYmdC5yZWplY3QoYGludmFsaWQga2V5LCBvciBub3QgYW4gYWRtaW5gKSxuZXcgdmQoaSxyLnN0YXR1cyl9cmV0dXJuIGF3YWl0IHIuanNvbigpfWZ1bmN0aW9uIHhkKGUpe3JldHVybiBlfHwodHlwZW9mIGRvY3VtZW50PmB1YD92b2lkIDA6ZG9jdW1lbnQpfWZ1bmN0aW9uIFNkKHtpbnRlcnZhbE1zOmUsdGljazp0LGRvYzpufSl7bGV0IHI9eGQobiksaSxhPSExO2Z1bmN0aW9uIG8oKXtpIT09dm9pZCAwJiYoY2xlYXJJbnRlcnZhbChpKSxpPXZvaWQgMCl9ZnVuY3Rpb24gcygpe28oKSxpPXNldEludGVydmFsKHQsZSl9ZnVuY3Rpb24gYygpe3ImJihyLmhpZGRlbj9vKCk6KHQoKSxzKCkpKX1mdW5jdGlvbiBsKCl7YXx8KGE9ITAscj8uaGlkZGVufHwodCgpLHMoKSkscj8uYWRkRXZlbnRMaXN0ZW5lcihgdmlzaWJpbGl0eWNoYW5nZWAsYykpfWZ1bmN0aW9uIHUoKXthPSExLG8oKSxyPy5yZW1vdmVFdmVudExpc3RlbmVyKGB2aXNpYmlsaXR5Y2hhbmdlYCxjKX1yZXR1cm57c3RhcnQ6bCxzdG9wOnV9fXZhciBDZD01ZTMsd2Q9RmMoYGRhc2hib2FyZGAse3N0YXRlOigpPT4oe292ZXJ2aWV3Om51bGwsdXNhZ2U6bnVsbCx0YXJnZXRzOm51bGwsbGFzdFVwZGF0ZWQ6bnVsbCxlcnJvcjpgYCxwb2xsZXI6dm9pZCAwLHJlZnJlc2hpbmc6ITF9KSxhY3Rpb25zOnthc3luYyByZWZyZXNoKCl7aWYoX2QoKS5pc0F1dGhlbnRpY2F0ZWQmJiF0aGlzLnJlZnJlc2hpbmcpe3RoaXMucmVmcmVzaGluZz0hMDt0cnl7YXdhaXQgdGhpcy5kb1JlZnJlc2goKX1maW5hbGx5e3RoaXMucmVmcmVzaGluZz0hMX19fSxhc3luYyBkb1JlZnJlc2goKXtsZXRbZSx0LG5dPWF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbYmQoYC9hZG1pbi9hcGkvb3ZlcnZpZXdgKSxiZChgL2FkbWluL2FwaS91c2FnZWApLGJkKGAvYWRtaW4vYXBpL3RhcmdldHNgKV0pO2Uuc3RhdHVzPT09YGZ1bGZpbGxlZGAmJih0aGlzLm92ZXJ2aWV3PWUudmFsdWUpLHQuc3RhdHVzPT09YGZ1bGZpbGxlZGAmJih0aGlzLnVzYWdlPXQudmFsdWUpLG4uc3RhdHVzPT09YGZ1bGZpbGxlZGAmJih0aGlzLnRhcmdldHM9bi52YWx1ZSk7bGV0IHI9W107aWYoZS5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZyLnB1c2goe2xhYmVsOmBvdmVydmlld2AscmVhc29uOmUucmVhc29ufSksdC5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZyLnB1c2goe2xhYmVsOmB1c2FnZWAscmVhc29uOnQucmVhc29ufSksbi5zdGF0dXM9PT1gcmVqZWN0ZWRgJiZyLnB1c2goe2xhYmVsOmB0YXJnZXRzYCxyZWFzb246bi5yZWFzb259KSxyLmxlbmd0aD09PTApe3RoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUsdGhpcy5lcnJvcj1gYDtyZXR1cm59ci5zb21lKCh7cmVhc29uOmV9KT0+ZSBpbnN0YW5jZW9mIHZkJiYoZS5zdGF0dXM9PT00MDF8fGUuc3RhdHVzPT09NDAzKSl8fChyLmxlbmd0aDwzJiYodGhpcy5sYXN0VXBkYXRlZD1uZXcgRGF0ZSksdGhpcy5lcnJvcj1yLm1hcCgoe2xhYmVsOmUscmVhc29uOnR9KT0+YCR7ZX06ICR7dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9YCkuam9pbihgOyBgKSl9LHN0YXJ0UG9sbGluZygpe3RoaXMucG9sbGVyfHwodGhpcy5wb2xsZXI9U2Qoe2ludGVydmFsTXM6Q2QsdGljazooKT0+dm9pZCB0aGlzLnJlZnJlc2goKX0pLHRoaXMucG9sbGVyLnN0YXJ0KCkpfX19KSxUZD1bYGhvbWVgLGBzcGVuZGAsYGNvbnN1bWVyc2AsYG1vZGVsc2AsYHJlbGlhYmlsaXR5YCxgY29uZmlnYCxgdGFyZ2V0c2BdLEVkPWBob21lYCxEZD1be2lkOmBob21lYCxsYWJlbDpgSG9tZWAsaWNvbjpKY30se2lkOmBzcGVuZGAsbGFiZWw6YFNwZW5kYCxpY29uOmxsfSx7aWQ6YGNvbnN1bWVyc2AsbGFiZWw6YENvbnN1bWVyc2AsaWNvbjpVY30se2lkOmBtb2RlbHNgLGxhYmVsOmBNb2RlbHNgLGljb246JGN9LHtpZDpgcmVsaWFiaWxpdHlgLGxhYmVsOmBSZWxpYWJpbGl0eWAsaWNvbjpXY30se2lkOmBjb25maWdgLGxhYmVsOmBDb25maWdgLGljb246WWN9LHtpZDpgdGFyZ2V0c2AsbGFiZWw6YE1DUCAmIEFnZW50c2AsaWNvbjp0bH1dO2Z1bmN0aW9uIE9kKGUpe3JldHVybiBUZC5pbmNsdWRlcyhlKX12YXIga2Q9W2AyNGhgLGA0OGhgLGA3ZGAsYDE0ZGAsYDMwZGAsYDNtb2AsYDZtb2AsYDEybW9gXSxBZD17IjI0aCI6e3dpbmRvdzpgaG91cmAsc3BhbjoyNH0sIjQ4aCI6e3dpbmRvdzpgaG91cmAsc3Bhbjo0OH0sIjdkIjp7d2luZG93OmBkYXlgLHNwYW46N30sIjE0ZCI6e3dpbmRvdzpgZGF5YCxzcGFuOjE0fSwiMzBkIjp7d2luZG93OmBkYXlgLHNwYW46MzB9LCIzbW8iOnt3aW5kb3c6YG1vbnRoYCxzcGFuOjN9LCI2bW8iOnt3aW5kb3c6YG1vbnRoYCxzcGFuOjZ9LCIxMm1vIjp7d2luZG93OmBtb250aGAsc3BhbjoxMn19LGpkPXtob3VyOjQ4LGRheTozNSxtb250aDoxM30sTWQ9W2Bub25lYCxgcHJldmBdLE5kPWBub25lYDtmdW5jdGlvbiBQZChlKXtsZXR7d2luZG93OnQsc3BhbjpufT1BZFtlXSxyPWpkW3RdO3JldHVybiAyKm4+cj97YXZhaWxhYmxlOiExLG9mZnNldDpuLHJlYXNvbjpgcmV0ZW50aW9uIGxpbWl0YH06e2F2YWlsYWJsZTohMCxvZmZzZXQ6bn19ZnVuY3Rpb24gRmQoZSx0KXtyZXR1cm4gZT09PWBtb250aGA/e3dpbmRvdzpgbW9udGhgLHNwYW46dH06ZT09PWBkYXlgP3t3aW5kb3c6YGRheWAsc3Bhbjp0fTp7d2luZG93OmBkYXlgLHNwYW46N319ZnVuY3Rpb24gSWQoZSx0KXtyZXR1cm4gZT09PWBob3VyYD9gU2hvd2luZyBsYXN0ICR7RmQoZSx0KS5zcGFufSBkYXlzIOKAlCBwZXItaG91ciBkYXRhIGlzIG5vdCBrZXB0IGZvciB0aGlzIHZpZXcuYDpudWxsfWZ1bmN0aW9uIExkKGUpe3JldHVybiBrZC5pbmNsdWRlcyhlKX1mdW5jdGlvbiBSZChlKXtyZXR1cm4gTWQuaW5jbHVkZXMoZSl9ZnVuY3Rpb24gemQoZSl7bGV0IHQ9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0IG4gb2YgZS5zY29wZSl0LmFwcGVuZChgc2NvcGVgLG4pO3JldHVybiB0LnNldChgbWV0cmljYCxlLm1ldHJpYyksdC5zZXQoYHdpbmRvd2AsZS53aW5kb3cpLHQuc2V0KGBzcGFuYCxTdHJpbmcoZS5zcGFuKSksZS5vZmZzZXQmJnQuc2V0KGBvZmZzZXRgLFN0cmluZyhlLm9mZnNldCkpLGAvYWRtaW4vYXBpL3VzYWdlL3Nlcmllcz8ke3QudG9TdHJpbmcoKX1gfWZ1bmN0aW9uIEJkKGUpe2xldCB0PW5ldyBVUkxTZWFyY2hQYXJhbXM7cmV0dXJuIHQuc2V0KGBraW5kYCxlLmtpbmQpLGUud2luZG93JiZ0LnNldChgd2luZG93YCxlLndpbmRvdyksZS5zcGFuIT09dm9pZCAwJiZ0LnNldChgc3BhbmAsU3RyaW5nKGUuc3BhbikpLGUub2Zmc2V0JiZ0LnNldChgb2Zmc2V0YCxTdHJpbmcoZS5vZmZzZXQpKSxlLm1ldHJpY3MmJmUubWV0cmljcy5sZW5ndGg+MCYmdC5zZXQoYG1ldHJpY3NgLGUubWV0cmljcy5qb2luKGAsYCkpLGUubGltaXQhPT12b2lkIDAmJnQuc2V0KGBsaW1pdGAsU3RyaW5nKGUubGltaXQpKSxlLmdyb3VwJiZ0LnNldChgZ3JvdXBgLGUuZ3JvdXApLGUudXNlciYmdC5zZXQoYHVzZXJgLGUudXNlciksZS5tb2RlbCYmdC5zZXQoYG1vZGVsYCxlLm1vZGVsKSxlLnRhcmdldCYmdC5zZXQoYHRhcmdldGAsZS50YXJnZXQpLGAvYWRtaW4vYXBpL3VzYWdlL3RvdGFscz8ke3QudG9TdHJpbmcoKX1gfXZhciBWZD1GYyhgbmF2YCx7c3RhdGU6KCk9Pih7cGFnZTpFZCxwYXJhbXM6e319KSxhY3Rpb25zOntnb1RvKGUsdD17fSl7dGhpcy5wYWdlPWUsdGhpcy5wYXJhbXM9dH19fSk7ZXhwb3J0e3NsIGFzICQsZnIgYXMgJG4sdyBhcyAkcixiaSBhcyAkdCxXdSBhcyBBLGlhIGFzIEFuLEh0IGFzIEFyLGFzIGFzIEF0LGhsIGFzIEIscmMgYXMgQm4sciBhcyBCcixoYSBhcyBCdCxsZCBhcyBDLFVpIGFzIENuLEVlIGFzIENyLE1uIGFzIEN0LEh1IGFzIEQsdHIgYXMgRG4sVnQgYXMgRHIsZnMgYXMgRHQsaWQgYXMgRSxzciBhcyBFbix6dCBhcyBFcixxcyBhcyBFdCxZdSBhcyBGLFVyIGFzIEZuLGxuIGFzIEZyLF9zIGFzIEZ0LGVsIGFzIEcsSmEgYXMgR24sayBhcyBHcix2YSBhcyBHdCxpbCBhcyBILGxzIGFzIEhuLEEgYXMgSHIseWEgYXMgSHQsbmQgYXMgSSxycyBhcyBJbixybiBhcyBJcixncyBhcyBJdCxRYyBhcyBKLFpyIGFzIEpuLGQgYXMgSnIscXIgYXMgSnQsSGMgYXMgSyxkciBhcyBLbixtZSBhcyBLcix0YyBhcyBLdCxWdSBhcyBMLG5jIGFzIExuLHRuIGFzIExyLEogYXMgTHQsS3UgYXMgTSxRaSBhcyBNbixIZSBhcyBNcixEYSBhcyBNdCxlZCBhcyBOLHRhIGFzIE5uLEIgYXMgTnIsRG8gYXMgTnQsWnUgYXMgTyxHbiBhcyBPbixadCBhcyBPcixvcyBhcyBPdCx0ZCBhcyBQLGVhIGFzIFBuLGZuIGFzIFByLGFhIGFzIFB0LEJjIGFzIFEsaHIgYXMgUW4sYSBhcyBRcixsciBhcyBRdCxyZCBhcyBSLEtyIGFzIFJuLG5uIGFzIFJyLERpIGFzIFJ0LHVkIGFzIFMsR2kgYXMgU24sSnQgYXMgU3IsT24gYXMgU3QsYWQgYXMgVCxuciBhcyBUbixvbiBhcyBUcixocyBhcyBUdCxjbCBhcyBVLFNhIGFzIFVuLHMgYXMgVXIsX2EgYXMgVXQsYWwgYXMgVixjYSBhcyBWbixPIGFzIFZyLGdhIGFzIFZ0LHFjIGFzIFcsWXIgYXMgV24sdSBhcyBXcixtYSBhcyBXdCxHYyBhcyBYLFFzIGFzIFhuLG8gYXMgWHIsSnMgYXMgWHQsS2MgYXMgWSxGciBhcyBZbixnIGFzIFlyLG1zIGFzIFl0LG9sIGFzIFosJHMgYXMgWm4seSBhcyBacixObiBhcyBadCx2ZCBhcyBfLFlpIGFzIF9uLHF0IGFzIF9yLEFpIGFzIF90LFBkIGFzIGEsX2UgYXMgYWksWnMgYXMgYW4sYXIsemMgYXMgYXQsZmQgYXMgYixxaSBhcyBibixWIGFzIGJyLEFyIGFzIGJ0LFJkIGFzIGMsU2UgYXMgY2ksVGEgYXMgY24sQ2UgYXMgY3IseGMgYXMgY3QsQmQgYXMgZCx5ZSBhcyBkaSxWbiBhcyBkbixfbiBhcyBkcixWciBhcyBkdCxwIGFzIGVpLHdpIGFzIGVuLHByIGFzIGVyLG5sIGFzIGV0LEVkIGFzIGYsbmUgYXMgZmksTWkgYXMgZm4sY24gYXMgZnIsTHIgYXMgZnQsU2QgYXMgZyxOaSBhcyBnbix4biBhcyBncixHIGFzIGd0LHdkIGFzIGgsSGkgYXMgaG4sVGUgYXMgaHIsZWMgYXMgaHQsQWQgYXMgaSxnZSBhcyBpaSxjciBhcyBpbixiYSBhcyBpcix1bCBhcyBpdCxxdSBhcyBqLG9hIGFzIGpuLFF0IGFzIGpyLE9vIGFzIGp0LFV1IGFzIGssenMgYXMga24sQnQgYXMga3IsdnMgYXMga3QsTGQgYXMgbCxkZSBhcyBsaSxFYSBhcyBsbixPZSBhcyBscixGYyBhcyBsdCxPZCBhcyBtLFdpIGFzIG1uLHdlIGFzIG1yLGtuIGFzIG10LE5kIGFzIG4sXyBhcyBuaSxTaSBhcyBubixPYSBhcyBucixMYyBhcyBudCxJZCBhcyBvLHJlIGFzIG9pLEJzIGFzIG9uLFhzIGFzIG9yLHJsIGFzIG90LERkIGFzIHAsaWUgYXMgcGksQmkgYXMgcG4sVmUgYXMgcHIsSyBhcyBwdCxWYyBhcyBxLHhhIGFzIHFuLE0gYXMgcXIsRHMgYXMgcXQsa2QgYXMgcix2IGFzIHJpLFlzIGFzIHJuLGlyIGFzIHJyLFhjIGFzIHJ0LEZkIGFzIHMsdWUgYXMgc2ksc3MgYXMgc24scnIgYXMgc3IsWmMgYXMgc3QsVmQgYXMgdCxwZSBhcyB0aSxDaSBhcyB0bixtciBhcyB0cixSYyBhcyB0dCx6ZCBhcyB1LEYgYXMgdWksU3MgYXMgdW4sZ24gYXMgdXIsSWMgYXMgdXQsYmQgYXMgdixWaSBhcyB2bixXdCBhcyB2cixRbyBhcyB2dCxzZCBhcyB3LGVzIGFzIHduLFNuIGFzIHdyLGpuIGFzIHd0LGRkIGFzIHgsS2kgYXMgeG4sS3QgYXMgeHIsWm8gYXMgeHQsX2QgYXMgeSxKaSBhcyB5bixHdCBhcyB5cixCbyBhcyB5dCxCdSBhcyB6LHVyIGFzIHpuLHQgYXMgenIsSnIgYXMgenR9Ow==",
|
|
),
|
|
},
|
|
"provider-rate-DU7OgSeB.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"ZnVuY3Rpb24gZShlLHQpe3JldHVybiFOdW1iZXIuaXNGaW5pdGUoZSl8fGU8PTA/bnVsbDooZS0oTnVtYmVyLmlzRmluaXRlKHQpP3Q6MCkpL2V9ZnVuY3Rpb24gdChlKXtyZXR1cm4gZT09PW51bGw/YG5vLXRyYWZmaWNgOmU8Ljk/YHNldmVyZWA6ZTwuOTk/YGRlZ3JhZGVkYDpgaGVhbHRoeWB9ZnVuY3Rpb24gbih0LG4pe2xldCByPWUodCxuKTtyZXR1cm4gciE9PW51bGwmJnI8Ljk5fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGU+PTE/YDEwMCVgOmAke01hdGguZmxvb3IoZSoxMDApfSVgfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4hTnVtYmVyLmlzRmluaXRlKGUpfHxlPD0wP251bGw6KE51bWJlci5pc0Zpbml0ZSh0KT90OjApL2V9ZnVuY3Rpb24gYShlKXtyZXR1cm4gZT09PW51bGw/YG5vIGRhdGFgOmU8PTA/YDAlYDpgJHtNYXRoLmNlaWwoZSoxMDApfSVgfWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybiBlPT09MT90Om59ZnVuY3Rpb24gcyh0LG4pe2lmKHQ8PTApcmV0dXJuYG5vIHRyYWZmaWMgaW4gdGhlIGxhc3QgbWludXRlYDtsZXQgaT1lKHQsbiksYT1pPT09bnVsbD9gYDpgICgke3IoaSl9KWA7cmV0dXJuYCR7dH0gJHtvKHQsYGF0dGVtcHRgLGBhdHRlbXB0c2ApfSwgJHtufSAke28obixgZmFpbHVyZWAsYGZhaWx1cmVzYCl9IGluIHRoZSBsYXN0IG1pbnV0ZSR7YX1gfWZ1bmN0aW9uIGModCxuKXtpZih0PD0wKXJldHVybmBubyB0cmFmZmljIHRvZGF5YDtsZXQgaT1lKHQsbiksYT1pPT09bnVsbD9gYDpgICgke3IoaSl9KWA7cmV0dXJuYCR7dH0gJHtvKHQsYGF0dGVtcHRgLGBhdHRlbXB0c2ApfSwgJHtufSAke28obixgZmFpbHVyZWAsYGZhaWx1cmVzYCl9IHRvZGF5JHthfWB9ZXhwb3J0e3MgYXMgYSxlIGFzIGMsbiBhcyBpLGEgYXMgbixpIGFzIG8scix0IGFzIHMsYyBhcyB0fTs=",
|
|
),
|
|
},
|
|
"reliability-0KiJSjTP.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e18gYXMgZSxoIGFzIHQsbHQgYXMgbix1IGFzIHIsdiBhcyBpfWZyb20iLi9uYXYtRHpiME9UTl8uanMiO2ltcG9ydHt0IGFzIGF9ZnJvbSIuL2luZGV4LUJpVFFfZ0NFLmpzIjtpbXBvcnR7biBhcyBvfWZyb20iLi9zZXJpZXMtTklSVkJYTVAuanMiO2Z1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09PWBob3VyYD97d2luZG93OmBob3VyYCxzcGFuOnR9OmU9PT1gZGF5YD97d2luZG93OmBkYXlgLHNwYW46dH06e3dpbmRvdzpgZGF5YCxzcGFuOjMwfX1mdW5jdGlvbiBjKGUsdCl7bGV0IG49bmV3IE1hcCh0LnNlcmllcy5tYXAoZT0+W2Uuc2NvcGUsZS5wb2ludHNdKSk7cmV0dXJuIGUuc2VyaWVzLm1hcChlPT4oe3Njb3BlOmUuc2NvcGUscG9pbnRzOm8obi5nZXQoZS5zY29wZSk/P0FycmF5KGUucG9pbnRzLmxlbmd0aCkuZmlsbCgwKSxlLnBvaW50cyl9KSl9dmFyIGw9W2AtLWNoYXJ0LXJlcXVlc3RzYCxgLS1jaGFydC10b2tlbnMtaW5gLGAtLWNoYXJ0LXRva2Vucy1vdXRgLGAtLWNoYXJ0LWNvc3RgXTtmdW5jdGlvbiB1KGUpe3JldHVybiBsW2UlbC5sZW5ndGhdfXZhciBkPW4oYHJlbGlhYmlsaXR5YCx7c3RhdGU6KCk9Pih7YnVja2V0czpbXSx3aW5kb3dVc2VkOmBkYXlgLGVycm9yUmF0ZTpbXSx0aW1lb3V0czpbXSxmYWlsb3ZlcnM6W10scmVqZWN0aW9uczpbXSx1bnByaWNlZDpbXSxsb2FkaW5nOiExLGxhc3RVcGRhdGVkOm51bGwsZXJyb3I6YGAscmVxSWQ6MCxwcm92aWRlclBlcmZCdWNrZXRzOltdLHByb3ZpZGVyUGVyZldpbmRvd1VzZWQ6YGRheWAscHJvdmlkZXJQZXJmUG9pbnRzOltdLHByb3ZpZGVyUGVyZkxhdGVuY3lFbmFibGVkOiExLHByb3ZpZGVyUGVyZkxvYWRpbmc6ITEscHJvdmlkZXJQZXJmRXJyb3I6YGAscHJvdmlkZXJQZXJmUmVxSWQ6MH0pLGFjdGlvbnM6e2FzeW5jIGZldGNoKCl7bGV0IG49Kyt0aGlzLnJlcUlkO3RoaXMubG9hZGluZz0hMDt0cnl7bGV0IGU9YSgpLG89KHQoKS5vdmVydmlldz8ucHJvdmlkZXJzPz9bXSkubWFwKGU9PmUubmFtZSk7aWYoby5sZW5ndGg9PT0wKXtpZihuIT09dGhpcy5yZXFJZClyZXR1cm47dGhpcy5idWNrZXRzPVtdLHRoaXMud2luZG93VXNlZD1zKGUud2luZG93LGUuc3Bhbikud2luZG93LHRoaXMuZXJyb3JSYXRlPVtdLHRoaXMudGltZW91dHM9W10sdGhpcy5mYWlsb3ZlcnM9W10sdGhpcy5yZWplY3Rpb25zPVtdLHRoaXMudW5wcmljZWQ9W10sdGhpcy5sYXN0VXBkYXRlZD1uZXcgRGF0ZSx0aGlzLmVycm9yPWBgO3JldHVybn1sZXR7d2luZG93Omwsc3Bhbjp1fT1zKGUud2luZG93LGUuc3BhbiksZD1vLm1hcChlPT5gcHJvdmlkZXI6JHtlfWApLFtmLHAsbSxoLGcsX109YXdhaXQgUHJvbWlzZS5hbGwoW2kocih7c2NvcGU6ZCxtZXRyaWM6YGF0dGVtcHRgLHdpbmRvdzpsLHNwYW46dX0pKSxpKHIoe3Njb3BlOmQsbWV0cmljOmBmYWlsYCx3aW5kb3c6bCxzcGFuOnV9KSksaShyKHtzY29wZTpkLG1ldHJpYzpgdGltZW91dGAsd2luZG93Omwsc3Bhbjp1fSkpLGkocih7c2NvcGU6ZCxtZXRyaWM6YGZvdmVyYCx3aW5kb3c6bCxzcGFuOnV9KSksaShyKHtzY29wZTpbYHRvdGFsYF0sbWV0cmljOmByZWpgLHdpbmRvdzpsLHNwYW46dX0pKSxpKHIoe3Njb3BlOltgdG90YWxgXSxtZXRyaWM6YHI0MDJgLHdpbmRvdzpsLHNwYW46dX0pKV0pO2lmKG4hPT10aGlzLnJlcUlkKXJldHVybjt0aGlzLmJ1Y2tldHM9Zi5idWNrZXRzLHRoaXMud2luZG93VXNlZD1sLHRoaXMuZXJyb3JSYXRlPWMoZixwKSx0aGlzLnRpbWVvdXRzPW0uc2VyaWVzLHRoaXMuZmFpbG92ZXJzPWguc2VyaWVzLHRoaXMucmVqZWN0aW9ucz1nLnNlcmllc1swXT8ucG9pbnRzPz9bXSx0aGlzLnVucHJpY2VkPV8uc2VyaWVzWzBdPy5wb2ludHM/P1tdLHRoaXMubGFzdFVwZGF0ZWQ9bmV3IERhdGUsdGhpcy5lcnJvcj1gYH1jYXRjaCh0KXtpZihuIT09dGhpcy5yZXFJZHx8dCBpbnN0YW5jZW9mIGUmJih0LnN0YXR1cz09PTQwMXx8dC5zdGF0dXM9PT00MDMpKXJldHVybjt0aGlzLmVycm9yPXQgaW5zdGFuY2VvZiBFcnJvcj90Lm1lc3NhZ2U6U3RyaW5nKHQpfWZpbmFsbHl7bj09PXRoaXMucmVxSWQmJih0aGlzLmxvYWRpbmc9ITEpfX0sYXN5bmMgZmV0Y2hQcm92aWRlclBlcmYobil7bGV0IHI9Kyt0aGlzLnByb3ZpZGVyUGVyZlJlcUlkLG89dCgpLm92ZXJ2aWV3Py5mZWF0dXJlcy5sYXRlbmN5U3RhdHM/PyExO2lmKCFufHwhbyl7aWYociE9PXRoaXMucHJvdmlkZXJQZXJmUmVxSWQpcmV0dXJuO3RoaXMucHJvdmlkZXJQZXJmQnVja2V0cz1bXSx0aGlzLnByb3ZpZGVyUGVyZlBvaW50cz1bXSx0aGlzLnByb3ZpZGVyUGVyZkxhdGVuY3lFbmFibGVkPSExLHRoaXMucHJvdmlkZXJQZXJmRXJyb3I9YGAsdGhpcy5wcm92aWRlclBlcmZMb2FkaW5nPSExO3JldHVybn10aGlzLnByb3ZpZGVyUGVyZkxvYWRpbmc9ITA7dHJ5e2xldCBlPWEoKSx7d2luZG93OnQsc3BhbjpvfT1zKGUud2luZG93LGUuc3BhbiksYz1uZXcgVVJMU2VhcmNoUGFyYW1zKHtraW5kOmBwcm92aWRlcmAsd2luZG93OnQsc3BhbjpTdHJpbmcobyksc2VyaWVzOmAxYH0pO2MuYXBwZW5kKGBpZGAsbik7bGV0IGw9YXdhaXQgaShgL2FkbWluL2FwaS9wZXJmb3JtYW5jZT8ke2MudG9TdHJpbmcoKX1gKTtpZihyIT09dGhpcy5wcm92aWRlclBlcmZSZXFJZClyZXR1cm47dGhpcy5wcm92aWRlclBlcmZCdWNrZXRzPWwuYnVja2V0cz8/W10sdGhpcy5wcm92aWRlclBlcmZXaW5kb3dVc2VkPXQsdGhpcy5wcm92aWRlclBlcmZQb2ludHM9bC5wb2ludHM/P1tdLHRoaXMucHJvdmlkZXJQZXJmTGF0ZW5jeUVuYWJsZWQ9bC5sYXRlbmN5RW5hYmxlZCx0aGlzLnByb3ZpZGVyUGVyZkVycm9yPWBgfWNhdGNoKHQpe2lmKHIhPT10aGlzLnByb3ZpZGVyUGVyZlJlcUlkfHx0IGluc3RhbmNlb2YgZSYmKHQuc3RhdHVzPT09NDAxfHx0LnN0YXR1cz09PTQwMykpcmV0dXJuO3RoaXMucHJvdmlkZXJQZXJmRXJyb3I9dCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9ZmluYWxseXtyPT09dGhpcy5wcm92aWRlclBlcmZSZXFJZCYmKHRoaXMucHJvdmlkZXJQZXJmTG9hZGluZz0hMSl9fX19KTtleHBvcnR7dSBhcyBuLGQgYXMgcixzIGFzIHR9Ow==",
|
|
),
|
|
},
|
|
"search-expand-B1qnK1H5.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e2EgYXMgZSxjIGFzIHQsaSBhcyBuLGwgYXMgcixuIGFzIGksbyBhcyBhLHIgYXMgbyx0IGFzIHMsdSBhcyBjfWZyb20iLi9QcmVzZW5jZS1DdVFVR0Z5Uy5qcyI7aW1wb3J0e0R0IGFzIGwsRXQgYXMgdSxGciBhcyBkLEcgYXMgZixKbiBhcyBwLEx0IGFzIG0sTW4gYXMgaCxOIGFzIGcsT3IgYXMgXyxPdCBhcyB2LFFuIGFzIHksUnIgYXMgYixTbiBhcyB4LFcgYXMgUyxZdCBhcyBDLFogYXMgdyxkaSBhcyBlZSxkbiBhcyB0ZSxqbiBhcyBULGt0IGFzIEUsbGkgYXMgRCxvdCBhcyBuZSxxIGFzIHJlLHJyIGFzIE8sc2kgYXMgayx1biBhcyBBLHZuIGFzIGosdyBhcyBNLHduIGFzIE4seiBhcyBQLHp0IGFzIEZ9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e1AgYXMgaWUsbCBhcyBJLG8gYXMgTH1mcm9tIi4vQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIjtpbXBvcnR7dCBhcyBSfWZyb20iLi9jbGlwYm9hcmQtQjczZlowYzEuanMiO2ltcG9ydHthIGFzIHosZCBhcyBCLHQgYXMgVn1mcm9tIi4vYmFkZ2UtbnMwajhPVXIuanMiO2Z1bmN0aW9uIEgoZSxuKXtyZXR1cm4gdChlKT8hMTpBcnJheS5pc0FycmF5KGUpP2Uuc29tZShlPT5jKGUsbikpOmMoZSxuKX12YXIgVT1bYElOUFVUYCxgVEVYVEFSRUFgXTtmdW5jdGlvbiBXKGUsdCxuLHI9e30pe2lmKCF0fHxyLmVuYWJsZUlnbm9yZWRFbGVtZW50JiZVLmluY2x1ZGVzKHQubm9kZU5hbWUpKXJldHVybiBudWxsO2xldHthcnJvd0tleU9wdGlvbnM6aT1gYm90aGAsYXR0cmlidXRlTmFtZTphPWBbZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbV1gLGl0ZW1zQXJyYXk6bz1bXSxsb29wOnM9ITAsZGlyOmM9YGx0cmAscHJldmVudFNjcm9sbDpsPSEwLGZvY3VzOnU9ITF9PXIsW2QsZixwLG0saCxnXT1bZS5rZXk9PT1gQXJyb3dSaWdodGAsZS5rZXk9PT1gQXJyb3dMZWZ0YCxlLmtleT09PWBBcnJvd1VwYCxlLmtleT09PWBBcnJvd0Rvd25gLGUua2V5PT09YEhvbWVgLGUua2V5PT09YEVuZGBdLF89cHx8bSx2PWR8fGY7aWYoIWgmJiFnJiYoIV8mJiF2fHxpPT09YHZlcnRpY2FsYCYmdnx8aT09PWBob3Jpem9udGFsYCYmXykpcmV0dXJuIG51bGw7bGV0IHk9bj9BcnJheS5mcm9tKG4ucXVlcnlTZWxlY3RvckFsbChhKSk6bztpZigheS5sZW5ndGgpcmV0dXJuIG51bGw7bCYmZS5wcmV2ZW50RGVmYXVsdCgpO2xldCBiPW51bGw7cmV0dXJuIHZ8fF8/Yj1HKHksdCx7Z29Gb3J3YXJkOl8/bTpjPT09YGx0cmA/ZDpmLGxvb3A6c30pOmg/Yj15LmF0KDApfHxudWxsOmcmJihiPXkuYXQoLTEpfHxudWxsKSx1JiZiPy5mb2N1cygpLGJ9ZnVuY3Rpb24gRyhlLHQsbixyPWUuaW5jbHVkZXModCk/ZS5sZW5ndGg6ZS5sZW5ndGgrMSl7aWYoLS1yPT09MClyZXR1cm4gbnVsbDtsZXQgaT1lLmluZGV4T2YodCksYTtpZihhPWk9PT0tMT9uLmdvRm9yd2FyZD8wOmUubGVuZ3RoLTE6bi5nb0ZvcndhcmQ/aSsxOmktMSwhbi5sb29wJiYoYTwwfHxhPj1lLmxlbmd0aCkpcmV0dXJuIG51bGw7bGV0IG89ZVsoYStlLmxlbmd0aCklZS5sZW5ndGhdO3JldHVybiBvP28uaGFzQXR0cmlidXRlKGBkaXNhYmxlZGApJiZvLmdldEF0dHJpYnV0ZShgZGlzYWJsZWRgKSE9PWBmYWxzZWA/RyhlLG8sbixyKTpvOm51bGx9dmFyW0sscV09cihgQ29sbGFwc2libGVSb290YCksSj1GKHtfX25hbWU6YENvbGxhcHNpYmxlUm9vdGAscHJvcHM6e2RlZmF1bHRPcGVuOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sb3Blbjp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6dm9pZCAwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2B1cGRhdGU6b3BlbmBdLHNldHVwKHQse2V4cG9zZTpuLGVtaXQ6cn0pe2xldCBpPXQsYT1JKGksYG9wZW5gLHIse2RlZmF1bHRWYWx1ZTppLmRlZmF1bHRPcGVuLHBhc3NpdmU6aS5vcGVuPT09dm9pZCAwfSkse2Rpc2FibGVkOm8sdW5tb3VudE9uSGlkZTpzfT1kKGkpO3JldHVybiBxKHtjb250ZW50SWQ6YGAsZGlzYWJsZWQ6byxvcGVuOmEsdW5tb3VudE9uSGlkZTpzLG9uT3BlblRvZ2dsZTooKT0+e28udmFsdWV8fChhLnZhbHVlPSFhLnZhbHVlKX19KSxuKHtvcGVuOmF9KSxlKCksKGUsdCk9PihOKCksdihiKE0pLHthczplLmFzLCJhcy1jaGlsZCI6aS5hc0NoaWxkLCJkYXRhLXN0YXRlIjpiKGEpP2BvcGVuYDpgY2xvc2VkYCwiZGF0YS1kaXNhYmxlZCI6YihvKT9gYDp2b2lkIDB9LHtkZWZhdWx0Ok8oKCk9PltUKGUuJHNsb3RzLGBkZWZhdWx0YCx7b3BlbjpiKGEpfSldKSxfOjN9LDgsW2Bhc2AsYGFzLWNoaWxkYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgXSkpfX0pLFk9Rih7aW5oZXJpdEF0dHJzOiExLF9fbmFtZTpgQ29sbGFwc2libGVDb250ZW50YCxwcm9wczp7Zm9yY2VNb3VudDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbYGNvbnRlbnRGb3VuZGBdLHNldHVwKHQse2VtaXQ6bn0pe2xldCByPXQsYT1uLG89SygpO28uY29udGVudElkfHw9aSh2b2lkIDAsYHJla2EtY29sbGFwc2libGUtY29udGVudGApO2xldCBjPV8oKSx7Zm9yd2FyZFJlZjpsLGN1cnJlbnRFbGVtZW50OmR9PWUoKSxmPV8oMCkscD1fKDApLGg9dSgoKT0+by5vcGVuLnZhbHVlKSxnPV8oaC52YWx1ZSkseD1fKCk7eSgoKT0+W2gudmFsdWUsYy52YWx1ZT8ucHJlc2VudF0sYXN5bmMoKT0+e2F3YWl0IHRlKCk7bGV0IGU9ZC52YWx1ZTtpZighZSlyZXR1cm47eC52YWx1ZT14LnZhbHVlfHx7dHJhbnNpdGlvbkR1cmF0aW9uOmUuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uLGFuaW1hdGlvbk5hbWU6ZS5zdHlsZS5hbmltYXRpb25OYW1lfSxlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1gMHNgLGUuc3R5bGUuYW5pbWF0aW9uTmFtZT1gbm9uZWA7bGV0IHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtwLnZhbHVlPXQuaGVpZ2h0LGYudmFsdWU9dC53aWR0aCxnLnZhbHVlfHwoZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249eC52YWx1ZS50cmFuc2l0aW9uRHVyYXRpb24sZS5zdHlsZS5hbmltYXRpb25OYW1lPXgudmFsdWUuYW5pbWF0aW9uTmFtZSl9LHtpbW1lZGlhdGU6ITB9KTtsZXQgUz11KCgpPT5nLnZhbHVlJiZvLm9wZW4udmFsdWUpO3JldHVybiBqKCgpPT57cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57Zy52YWx1ZT0hMX0pfSksTChkLGBiZWZvcmVtYXRjaGAsZT0+e3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e28ub25PcGVuVG9nZ2xlKCksYShgY29udGVudEZvdW5kYCl9KX0pLChlLHQpPT4oTigpLHYoYihzKSx7cmVmX2tleTpgcHJlc2VudFJlZmAscmVmOmMscHJlc2VudDplLmZvcmNlTW91bnR8fGIobykub3Blbi52YWx1ZSwiZm9yY2UtbW91bnQiOiEwfSx7ZGVmYXVsdDpPKCh7cHJlc2VudDp0fSk9PlttKGIoTSksQShlLiRhdHRycyx7aWQ6YihvKS5jb250ZW50SWQscmVmOmIobCksImFzLWNoaWxkIjpyLmFzQ2hpbGQsYXM6ZS5hcyxoaWRkZW46dD92b2lkIDA6YihvKS51bm1vdW50T25IaWRlLnZhbHVlP2BgOmB1bnRpbC1mb3VuZGAsImRhdGEtc3RhdGUiOlMudmFsdWU/dm9pZCAwOmIobykub3Blbi52YWx1ZT9gb3BlbmA6YGNsb3NlZGAsImRhdGEtZGlzYWJsZWQiOmIobykuZGlzYWJsZWQ/LnZhbHVlP2BgOnZvaWQgMCxzdHlsZTp7Ii0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LWhlaWdodCI6YCR7cC52YWx1ZX1weGAsIi0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoIjpgJHtmLnZhbHVlfXB4YH19KSx7ZGVmYXVsdDpPKCgpPT5bIWIobykudW5tb3VudE9uSGlkZS52YWx1ZXx8dD9UKGUuJHNsb3RzLGBkZWZhdWx0YCx7a2V5OjB9KTpFKGB2LWlmYCwhMCldKSxfOjJ9LDEwNDAsW2BpZGAsYGFzLWNoaWxkYCxgYXNgLGBoaWRkZW5gLGBkYXRhLXN0YXRlYCxgZGF0YS1kaXNhYmxlZGAsYHN0eWxlYF0pXSksXzozfSw4LFtgcHJlc2VudGBdKSl9fSksYWU9Rih7X19uYW1lOmBDb2xsYXBzaWJsZVRyaWdnZXJgLHByb3BzOnthc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgYnV0dG9uYH19LHNldHVwKHQpe2xldCBuPXQ7ZSgpO2xldCByPUsoKTtyZXR1cm4oZSx0KT0+KE4oKSx2KGIoTSkse3R5cGU6ZS5hcz09PWBidXR0b25gP2BidXR0b25gOnZvaWQgMCxhczplLmFzLCJhcy1jaGlsZCI6bi5hc0NoaWxkLCJhcmlhLWNvbnRyb2xzIjpiKHIpLmNvbnRlbnRJZCwiYXJpYS1leHBhbmRlZCI6YihyKS5vcGVuLnZhbHVlLCJkYXRhLXN0YXRlIjpiKHIpLm9wZW4udmFsdWU/YG9wZW5gOmBjbG9zZWRgLCJkYXRhLWRpc2FibGVkIjpiKHIpLmRpc2FibGVkPy52YWx1ZT9gYDp2b2lkIDAsZGlzYWJsZWQ6YihyKS5kaXNhYmxlZD8udmFsdWUsb25DbGljazpiKHIpLm9uT3BlblRvZ2dsZX0se2RlZmF1bHQ6TygoKT0+W1QoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYHR5cGVgLGBhc2AsYGFzLWNoaWxkYCxgYXJpYS1jb250cm9sc2AsYGFyaWEtZXhwYW5kZWRgLGBkYXRhLXN0YXRlYCxgZGF0YS1kaXNhYmxlZGAsYGRpc2FibGVkYCxgb25DbGlja2BdKSl9fSk7ZnVuY3Rpb24gb2Uoe3R5cGU6ZSxkZWZhdWx0VmFsdWU6dCxtb2RlbFZhbHVlOm59KXtsZXQgcj1ufHx0O3JldHVybiBuIT09dm9pZCAwfHx0IT09dm9pZCAwP0FycmF5LmlzQXJyYXkocik/YG11bHRpcGxlYDpgc2luZ2xlYDplPz9gc2luZ2xlYH1mdW5jdGlvbiBzZSh7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bn0pe3JldHVybiBlfHxvZSh7dHlwZTplLGRlZmF1bHRWYWx1ZTp0LG1vZGVsVmFsdWU6bn0pfWZ1bmN0aW9uIGNlKHt0eXBlOmUsZGVmYXVsdFZhbHVlOnR9KXtyZXR1cm4gdD09PXZvaWQgMD9lPT09YHNpbmdsZWA/dm9pZCAwOltdOnR9ZnVuY3Rpb24gbGUoZSx0KXtsZXQgbj11KCgpPT5zZShlKSkscj1JKGUsYG1vZGVsVmFsdWVgLHQse2RlZmF1bHRWYWx1ZTpjZShlKSxwYXNzaXZlOmUubW9kZWxWYWx1ZT09PXZvaWQgMCxkZWVwOiEwfSk7ZnVuY3Rpb24gaShlKXtpZihuLnZhbHVlPT09YHNpbmdsZWApci52YWx1ZT1jKGUsci52YWx1ZSk/dm9pZCAwOmU7ZWxzZXtsZXQgdD1BcnJheS5pc0FycmF5KHIudmFsdWUpP1suLi5yLnZhbHVlfHxbXV06W3IudmFsdWVdLmZpbHRlcihCb29sZWFuKTtpZihIKHQsZSkpe2xldCBuPXQuZmluZEluZGV4KHQ9PmModCxlKSk7dC5zcGxpY2UobiwxKX1lbHNlIHQucHVzaChlKTtyLnZhbHVlPXR9fXJldHVybnttb2RlbFZhbHVlOnIsY2hhbmdlTW9kZWxWYWx1ZTppLGlzU2luZ2xlOnUoKCk9Pm4udmFsdWU9PT1gc2luZ2xlYCl9fXZhcltYLHVlXT1yKGBBY2NvcmRpb25Sb290YCksZGU9Rih7X19uYW1lOmBBY2NvcmRpb25Sb290YCxwcm9wczp7Y29sbGFwc2libGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LG9yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmB2ZXJ0aWNhbGB9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHR5cGU6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LGRlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKHQse2VtaXQ6bn0pe2xldCByPXQsaT1uLHtkaXI6byxkaXNhYmxlZDpzLHVubW91bnRPbkhpZGU6Y309ZChyKSxsPWEobykse21vZGVsVmFsdWU6dSxjaGFuZ2VNb2RlbFZhbHVlOmYsaXNTaW5nbGU6cH09bGUocixpKSx7Zm9yd2FyZFJlZjptLGN1cnJlbnRFbGVtZW50Omh9PWUoKTtyZXR1cm4gdWUoe2Rpc2FibGVkOnMsZGlyZWN0aW9uOmwsb3JpZW50YXRpb246ci5vcmllbnRhdGlvbixwYXJlbnRFbGVtZW50OmgsaXNTaW5nbGU6cCxjb2xsYXBzaWJsZTpyLmNvbGxhcHNpYmxlLG1vZGVsVmFsdWU6dSxjaGFuZ2VNb2RlbFZhbHVlOmYsdW5tb3VudE9uSGlkZTpjfSksKGUsdCk9PihOKCksdihiKE0pLHtyZWY6YihtKSwiYXMtY2hpbGQiOmUuYXNDaGlsZCxhczplLmFzfSx7ZGVmYXVsdDpPKCgpPT5bVChlLiRzbG90cyxgZGVmYXVsdGAse21vZGVsVmFsdWU6Yih1KX0pXSksXzozfSw4LFtgYXMtY2hpbGRgLGBhc2BdKSl9fSksWj1mdW5jdGlvbihlKXtyZXR1cm4gZS5PcGVuPWBvcGVuYCxlLkNsb3NlZD1gY2xvc2VkYCxlfShafHx7fSksW1EsZmVdPXIoYEFjY29yZGlvbkl0ZW1gKSxwZT1GKHtfX25hbWU6YEFjY29yZGlvbkl0ZW1gLHByb3BzOntkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSx2YWx1ZTp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sc2V0dXAodCx7ZXhwb3NlOm59KXtsZXQgcj10LGk9WCgpLGE9dSgoKT0+aS5pc1NpbmdsZS52YWx1ZT9yLnZhbHVlPT09aS5tb2RlbFZhbHVlLnZhbHVlOkFycmF5LmlzQXJyYXkoaS5tb2RlbFZhbHVlLnZhbHVlKSYmaS5tb2RlbFZhbHVlLnZhbHVlLmluY2x1ZGVzKHIudmFsdWUpKSxvPXUoKCk9PmkuZGlzYWJsZWQudmFsdWV8fHIuZGlzYWJsZWQpLHM9dSgoKT0+by52YWx1ZT9gYDp2b2lkIDApLGM9dSgoKT0+YS52YWx1ZT9aLk9wZW46Wi5DbG9zZWQpO24oe29wZW46YSxkYXRhRGlzYWJsZWQ6c30pO2xldHtjdXJyZW50UmVmOmwsY3VycmVudEVsZW1lbnQ6ZH09ZSgpO2ZlKHtvcGVuOmEsZGF0YVN0YXRlOmMsZGlzYWJsZWQ6byxkYXRhRGlzYWJsZWQ6cyx0cmlnZ2VySWQ6YGAsY3VycmVudFJlZjpsLGN1cnJlbnRFbGVtZW50OmQsdmFsdWU6dSgoKT0+ci52YWx1ZSl9KTtmdW5jdGlvbiBmKGUpe2xldCB0PWUudGFyZ2V0O2lmKEFycmF5LmZyb20oaS5wYXJlbnRFbGVtZW50LnZhbHVlPy5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1yZWthLWNvbGxlY3Rpb24taXRlbV1gKT8/W10pLmZpbmRJbmRleChlPT5lPT09dCk9PT0tMSlyZXR1cm4gbnVsbDtXKGUsdCxpLnBhcmVudEVsZW1lbnQudmFsdWUse2Fycm93S2V5T3B0aW9uczppLm9yaWVudGF0aW9uLGRpcjppLmRpcmVjdGlvbi52YWx1ZSxmb2N1czohMH0pfXJldHVybihlLHQpPT4oTigpLHYoYihKKSx7ImRhdGEtb3JpZW50YXRpb24iOmIoaSkub3JpZW50YXRpb24sImRhdGEtZGlzYWJsZWQiOnMudmFsdWUsImRhdGEtc3RhdGUiOmMudmFsdWUsZGlzYWJsZWQ6by52YWx1ZSxvcGVuOmEudmFsdWUsYXM6ci5hcywiYXMtY2hpbGQiOnIuYXNDaGlsZCwidW5tb3VudC1vbi1oaWRlIjpyLnVubW91bnRPbkhpZGU/P2IoaSkudW5tb3VudE9uSGlkZS52YWx1ZSxvbktleWRvd246aWUoZixbYHVwYCxgZG93bmAsYGxlZnRgLGByaWdodGAsYGhvbWVgLGBlbmRgXSl9LHtkZWZhdWx0Ok8oKCk9PltUKGUuJHNsb3RzLGBkZWZhdWx0YCx7b3BlbjphLnZhbHVlfSldKSxfOjN9LDgsW2BkYXRhLW9yaWVudGF0aW9uYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtc3RhdGVgLGBkaXNhYmxlZGAsYG9wZW5gLGBhc2AsYGFzLWNoaWxkYCxgdW5tb3VudC1vbi1oaWRlYF0pKX19KSxtZT1GKHtfX25hbWU6YEFjY29yZGlvbkNvbnRlbnRgLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKHQpe2xldCBuPXQscj1YKCksaT1RKCk7cmV0dXJuIGUoKSwoZSx0KT0+KE4oKSx2KGIoWSkse3JvbGU6YHJlZ2lvbmAsImFzLWNoaWxkIjpuLmFzQ2hpbGQsYXM6ZS5hcywiZm9yY2UtbW91bnQiOm4uZm9yY2VNb3VudCwiYXJpYS1sYWJlbGxlZGJ5IjpiKGkpLnRyaWdnZXJJZCwiZGF0YS1zdGF0ZSI6YihpKS5kYXRhU3RhdGUudmFsdWUsImRhdGEtZGlzYWJsZWQiOmIoaSkuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjpiKHIpLm9yaWVudGF0aW9uLHN0eWxlOnsiLS1yZWthLWFjY29yZGlvbi1jb250ZW50LXdpZHRoIjpgdmFyKC0tcmVrYS1jb2xsYXBzaWJsZS1jb250ZW50LXdpZHRoKWAsIi0tcmVrYS1hY2NvcmRpb24tY29udGVudC1oZWlnaHQiOmB2YXIoLS1yZWthLWNvbGxhcHNpYmxlLWNvbnRlbnQtaGVpZ2h0KWB9LG9uQ29udGVudEZvdW5kOnRbMF18fD1lPT5iKHIpLmNoYW5nZU1vZGVsVmFsdWUoYihpKS52YWx1ZS52YWx1ZSl9LHtkZWZhdWx0Ok8oKCk9PltUKGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2Bhcy1jaGlsZGAsYGFzYCxgZm9yY2UtbW91bnRgLGBhcmlhLWxhYmVsbGVkYnlgLGBkYXRhLXN0YXRlYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gXSkpfX0pLGhlPUYoe19fbmFtZTpgQWNjb3JkaW9uSGVhZGVyYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGgzYH19LHNldHVwKHQpe2xldCBuPXQscj1YKCksaT1RKCk7cmV0dXJuIGUoKSwoZSx0KT0+KE4oKSx2KGIoTSkse2FzOm4uYXMsImFzLWNoaWxkIjpuLmFzQ2hpbGQsImRhdGEtb3JpZW50YXRpb24iOmIocikub3JpZW50YXRpb24sImRhdGEtc3RhdGUiOmIoaSkuZGF0YVN0YXRlLnZhbHVlLCJkYXRhLWRpc2FibGVkIjpiKGkpLmRhdGFEaXNhYmxlZC52YWx1ZX0se2RlZmF1bHQ6TygoKT0+W1QoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzYCxgYXMtY2hpbGRgLGBkYXRhLW9yaWVudGF0aW9uYCxgZGF0YS1zdGF0ZWAsYGRhdGEtZGlzYWJsZWRgXSkpfX0pLGdlPUYoe19fbmFtZTpgQWNjb3JkaW9uVHJpZ2dlcmAscHJvcHM6e2FzQ2hpbGQ6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYXM6e3R5cGU6bnVsbCxyZXF1aXJlZDohMX19LHNldHVwKGUpe2xldCB0PWUsbj1YKCkscj1RKCk7ci50cmlnZ2VySWR8fD1pKHZvaWQgMCxgcmVrYS1hY2NvcmRpb24tdHJpZ2dlcmApO2Z1bmN0aW9uIGEoKXtsZXQgZT1uLmlzU2luZ2xlLnZhbHVlJiZyLm9wZW4udmFsdWUmJiFuLmNvbGxhcHNpYmxlO3IuZGlzYWJsZWQudmFsdWV8fGV8fG4uY2hhbmdlTW9kZWxWYWx1ZShyLnZhbHVlLnZhbHVlKX1yZXR1cm4oZSxpKT0+KE4oKSx2KGIoYWUpLHtpZDpiKHIpLnRyaWdnZXJJZCxyZWY6YihyKS5jdXJyZW50UmVmLCJkYXRhLXJla2EtY29sbGVjdGlvbi1pdGVtIjpgYCxhczp0LmFzLCJhcy1jaGlsZCI6dC5hc0NoaWxkLCJhcmlhLWRpc2FibGVkIjpiKHIpLmRpc2FibGVkLnZhbHVlfHx2b2lkIDAsImFyaWEtZXhwYW5kZWQiOmIocikub3Blbi52YWx1ZXx8ITEsImRhdGEtZGlzYWJsZWQiOmIocikuZGF0YURpc2FibGVkLnZhbHVlLCJkYXRhLW9yaWVudGF0aW9uIjpiKG4pLm9yaWVudGF0aW9uLCJkYXRhLXN0YXRlIjpiKHIpLmRhdGFTdGF0ZS52YWx1ZSxkaXNhYmxlZDpiKHIpLmRpc2FibGVkLnZhbHVlLG9uQ2xpY2s6YX0se2RlZmF1bHQ6TygoKT0+W1QoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGlkYCxgYXNgLGBhcy1jaGlsZGAsYGFyaWEtZGlzYWJsZWRgLGBhcmlhLWV4cGFuZGVkYCxgZGF0YS1kaXNhYmxlZGAsYGRhdGEtb3JpZW50YXRpb25gLGBkYXRhLXN0YXRlYCxgZGlzYWJsZWRgXSkpfX0pLCQ9Rih7X19uYW1lOmBNb2RlbENoaXBgLHByb3BzOntpZDp7fSxjb250ZXh0VG9rZW5zOnt9LGlucHV0UGVyTVRva1VzZDp7fSxvdXRwdXRQZXJNVG9rVXNkOnt9fSxzZXR1cChlKXtsZXQgdD1lLG49cChgbGFiZWxgKSxyPV8oYGlkbGVgKSxpO2Z1bmN0aW9uIGEoKXtjbGVhclRpbWVvdXQoaSksaT1zZXRUaW1lb3V0KCgpPT57ci52YWx1ZT1gaWRsZWB9LDE1MDApfWFzeW5jIGZ1bmN0aW9uIG8oKXtsZXQgZT1hd2FpdCBSKHQuaWQsbi52YWx1ZT8/dm9pZCAwKTtyLnZhbHVlPWUsYSgpfWxldCBzPXtpZGxlOncsY29waWVkOlMsc2VsZWN0ZWQ6UyxmYWlsZWQ6bmV9LGM9dSgoKT0+KHtpZGxlOmBDb3B5ICR7dC5pZH1gLGNvcGllZDpgQ29waWVkYCxzZWxlY3RlZDpgU2VsZWN0ZWQg4oCUIHByZXNzIEN0cmwvQ21kK0NgLGZhaWxlZDpgQ29weSBmYWlsZWRgfSkpLGQ9dSgoKT0+e2xldCBlPVtdO3JldHVybiB0LmlucHV0UGVyTVRva1VzZCE9PXZvaWQgMCYmdC5vdXRwdXRQZXJNVG9rVXNkIT09dm9pZCAwJiZlLnB1c2goQih0LmlucHV0UGVyTVRva1VzZCx0Lm91dHB1dFBlck1Ub2tVc2QpKSx0LmNvbnRleHRUb2tlbnMhPT12b2lkIDAmJmUucHVzaChgJHt6KHQuY29udGV4dFRva2Vucyl9IGNvbnRleHRgKSxlLmpvaW4oYCDCtyBgKX0pLGY9dSgoKT0+e2xldCBlPWMudmFsdWVbci52YWx1ZV07cmV0dXJuIGQudmFsdWU/YCR7ZX0gwrcgJHtkLnZhbHVlfWA6ZX0pO3JldHVybiB4KCgpPT57Y2xlYXJUaW1lb3V0KGkpfSksKHQsbik9PntsZXQgaT1oKGBGb250QXdlc29tZUljb25gKTtyZXR1cm4gTigpLHYoYihWKSx7YXM6YGJ1dHRvbmAsdHlwZTpgYnV0dG9uYCx2YXJpYW50OmBzZWNvbmRhcnlgLGNsYXNzOmsoW2BjdXJzb3ItcG9pbnRlciBnYXAtMSBmb250LW1vbm8gdGV4dC14cyBmb250LW5vcm1hbCB0cmFuc2l0aW9uLWNvbG9ycyBob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZGAsci52YWx1ZT09PWBmYWlsZWRgP2B0ZXh0LWRlc3RydWN0aXZlYDpgYF0pLHRpdGxlOmYudmFsdWUsImFyaWEtbGFiZWwiOmYudmFsdWUsb25DbGljazpvfSx7ZGVmYXVsdDpPKCgpPT5bbChgc3BhbmAse3JlZjpgbGFiZWxgLGNsYXNzOmBzZWxlY3QtdGV4dGB9LGVlKGUuaWQpLDUxMyksbShpLHtpY29uOnNbci52YWx1ZV0sY2xhc3M6YHNpemUtMi41IHNocmluay0wYCwiYXJpYS1oaWRkZW4iOmB0cnVlYH0sbnVsbCw4LFtgaWNvbmBdKV0pLF86MX0sOCxbYGNsYXNzYCxgdGl0bGVgLGBhcmlhLWxhYmVsYF0pfX19KSxfZT1GKHtfX25hbWU6YEFjY29yZGlvbmAscHJvcHM6e2NvbGxhcHNpYmxlOnt0eXBlOkJvb2xlYW59LGRpc2FibGVkOnt0eXBlOkJvb2xlYW59LGRpcjp7fSxvcmllbnRhdGlvbjp7fSx1bm1vdW50T25IaWRlOnt0eXBlOkJvb2xlYW59LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sdHlwZTp7fSxtb2RlbFZhbHVlOnt9LGRlZmF1bHRWYWx1ZTp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sZW1pdHM6W2B1cGRhdGU6bW9kZWxWYWx1ZWBdLHNldHVwKGUse2VtaXQ6dH0pe2xldCBuPWUscj10LGk9ZyhuLGBjbGFzc2ApLGE9byhpLHIpO3JldHVybihlLHQpPT4oTigpLHYoYihkZSksQSh7ImRhdGEtc2xvdCI6YGFjY29yZGlvbmB9LGIoYSkse2NsYXNzOmIoUCkoYGZsZXggdy1mdWxsIGZsZXgtY29sYCxuLmNsYXNzKX0pLHtkZWZhdWx0Ok8odD0+W1QoZS4kc2xvdHMsYGRlZmF1bHRgLEQoQyh0KSkpXSksXzozfSwxNixbYGNsYXNzYF0pKX19KSx2ZT1GKHtfX25hbWU6YEFjY29yZGlvbkNvbnRlbnRgLHByb3BzOntmb3JjZU1vdW50Ont0eXBlOkJvb2xlYW59LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCB0PWUsbj1nKHQsYGNsYXNzYCk7cmV0dXJuKGUscik9PihOKCksdihiKG1lKSxBKHsiZGF0YS1zbG90IjpgYWNjb3JkaW9uLWNvbnRlbnRgfSxiKG4pLHtjbGFzczpgZGF0YS1vcGVuOmFuaW1hdGUtYWNjb3JkaW9uLWRvd24gZGF0YS1jbG9zZWQ6YW5pbWF0ZS1hY2NvcmRpb24tdXAgdGV4dC1zbSBvdmVyZmxvdy1oaWRkZW5gfSkse2RlZmF1bHQ6TygoKT0+W2woYGRpdmAse2NsYXNzOmsoYihQKShgcHQtMCBwYi0yLjUgWyZfYV06dW5kZXJsaW5lIFsmX2FdOnVuZGVybGluZS1vZmZzZXQtMyBbJl9hXTpob3Zlcjp0ZXh0LWZvcmVncm91bmQgWyZfcDpub3QoOmxhc3QtY2hpbGQpXTptYi00YCx0LmNsYXNzKSl9LFtUKGUuJHNsb3RzLGBkZWZhdWx0YCldLDIpXSksXzozfSwxNikpfX0pLHllPUYoe19fbmFtZTpgQWNjb3JkaW9uSXRlbWAscHJvcHM6e2Rpc2FibGVkOnt0eXBlOkJvb2xlYW59LHZhbHVlOnt9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbn0sYXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZSxyPWcodCxgY2xhc3NgKSxpPW4ocik7cmV0dXJuKGUsbik9PihOKCksdihiKHBlKSxBKHsiZGF0YS1zbG90IjpgYWNjb3JkaW9uLWl0ZW1gfSxiKGkpLHtjbGFzczpiKFApKGBub3QtbGFzdDpib3JkZXItYmAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpPKHQ9PltUKGUuJHNsb3RzLGBkZWZhdWx0YCxEKEModCkpKV0pLF86M30sMTYsW2BjbGFzc2BdKSl9fSksYmU9Rih7X19uYW1lOmBBY2NvcmRpb25UcmlnZ2VyYCxwcm9wczp7YXNDaGlsZDp7dHlwZTpCb29sZWFufSxhczp7fSxjbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfSxoZWFkZXJDbGFzczp7dHlwZTpbQm9vbGVhbixudWxsLFN0cmluZyxPYmplY3QsQXJyYXldfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPWcodCxgY2xhc3NgLGBoZWFkZXJDbGFzc2ApO3JldHVybihlLHIpPT57bGV0IGk9aChgRm9udEF3ZXNvbWVJY29uYCk7cmV0dXJuIE4oKSx2KGIoaGUpLHtjbGFzczprKGIoUCkoYGZsZXhgLHQuaGVhZGVyQ2xhc3MpKX0se2RlZmF1bHQ6TygoKT0+W20oYihnZSksQSh7ImRhdGEtc2xvdCI6YGFjY29yZGlvbi10cmlnZ2VyYH0sYihuKSx7Y2xhc3M6YihQKShgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgZm9jdXMtdmlzaWJsZTpib3JkZXItcmluZyBmb2N1cy12aXNpYmxlOmFmdGVyOmJvcmRlci1yaW5nICoqOmRhdGEtW3Nsb3Q9YWNjb3JkaW9uLXRyaWdnZXItaWNvbl06dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHJvdW5kZWQtbGcgcHktMi41IHRleHQtbGVmdCB0ZXh0LXNtIGZvbnQtbWVkaXVtIGhvdmVyOnVuZGVybGluZSBmb2N1cy12aXNpYmxlOnJpbmctMyAqKjpkYXRhLVtzbG90PWFjY29yZGlvbi10cmlnZ2VyLWljb25dOm1sLWF1dG8gKio6ZGF0YS1bc2xvdD1hY2NvcmRpb24tdHJpZ2dlci1pY29uXTpzaXplLTQgZ3JvdXAvYWNjb3JkaW9uLXRyaWdnZXIgcmVsYXRpdmUgZmxleCBmbGV4LTEgaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgdHJhbnNpdGlvbi1hbGwgb3V0bGluZS1ub25lIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgZGlzYWJsZWQ6b3BhY2l0eS01MGAsdC5jbGFzcyl9KSx7ZGVmYXVsdDpPKCgpPT5bVChlLiRzbG90cyxgZGVmYXVsdGApLFQoZS4kc2xvdHMsYGljb25gLHt9LCgpPT5bbShpLHtpY29uOmIoZiksImRhdGEtc2xvdCI6YGFjY29yZGlvbi10cmlnZ2VyLWljb25gLCJhcmlhLWhpZGRlbiI6YHRydWVgLGNsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIHNocmluay0wIGdyb3VwLWFyaWEtZXhwYW5kZWQvYWNjb3JkaW9uLXRyaWdnZXI6aGlkZGVuYH0sbnVsbCw4LFtgaWNvbmBdKSxtKGkse2ljb246YihyZSksImRhdGEtc2xvdCI6YGFjY29yZGlvbi10cmlnZ2VyLWljb25gLCJhcmlhLWhpZGRlbiI6YHRydWVgLGNsYXNzOmBwb2ludGVyLWV2ZW50cy1ub25lIGhpZGRlbiBzaHJpbmstMCBncm91cC1hcmlhLWV4cGFuZGVkL2FjY29yZGlvbi10cmlnZ2VyOmlubGluZWB9LG51bGwsOCxbYGljb25gXSldKV0pLF86M30sMTYsW2BjbGFzc2BdKV0pLF86M30sOCxbYGNsYXNzYF0pfX19KTtmdW5jdGlvbiB4ZShlLHQsbil7aWYoIXQpcmV0dXJuIG5ldyBTZXQoZS5tYW51YWxseUV4cGFuZGVkKTtsZXQgcj1uZXcgU2V0KGUubWFudWFsbHlFeHBhbmRlZCk7Zm9yKGxldCB0IG9mIG4pZS5tYW51YWxseUNvbGxhcHNlZC5oYXModCl8fHIuYWRkKHQpO3JldHVybiByfWZ1bmN0aW9uIFNlKGUsdCxuKXtuPyhlLm1hbnVhbGx5RXhwYW5kZWQuZGVsZXRlKHQpLGUubWFudWFsbHlDb2xsYXBzZWQuYWRkKHQpKTooZS5tYW51YWxseUNvbGxhcHNlZC5kZWxldGUodCksZS5tYW51YWxseUV4cGFuZGVkLmFkZCh0KSl9ZnVuY3Rpb24gQ2UoZSl7ZS5tYW51YWxseUNvbGxhcHNlZC5jbGVhcigpfWV4cG9ydHt5ZSBhcyBhLCQgYXMgYyxiZSBhcyBpLHhlIGFzIG4sdmUgYXMgbyxTZSBhcyByLF9lIGFzIHMsQ2UgYXMgdH07",
|
|
),
|
|
},
|
|
"series-NIRVBXMP.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"ZnVuY3Rpb24gZShlKXtsZXQgdD0wO2ZvcihsZXQgbiBvZiBlKXQrPW47cmV0dXJuIHR9ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBuPD0wP1tdOlsuLi50XS5zb3J0KCh0LG4pPT5lKG4ucG9pbnRzKS1lKHQucG9pbnRzKSkuc2xpY2UoMCxuKX1mdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUubWFwKChlLG4pPT57bGV0IHI9MDtmb3IobGV0IGUgb2YgdClyKz1lLnBvaW50c1tuXT8/MDtyZXR1cm4gTWF0aC5tYXgoMCxlLXIpfSl9ZnVuY3Rpb24gcih0KXtsZXQgbj1uZXcgTWFwO2ZvcihsZXQgZSBvZiB0KXtsZXQgdD1lLnNjb3BlLnN0YXJ0c1dpdGgoYG1vZGVsOmApP2Uuc2NvcGUuc2xpY2UoNik6ZS5zY29wZSxyPXQuaW5kZXhPZihgL2ApLGk9cj09PS0xP3Q6dC5zbGljZSgwLHIpLGE9bi5nZXQoaSk/P0FycmF5KGUucG9pbnRzLmxlbmd0aCkuZmlsbCgwKTtmb3IobGV0IHQ9MDt0PGUucG9pbnRzLmxlbmd0aDt0KyspYVt0XT0oYVt0XT8/MCkrKGUucG9pbnRzW3RdPz8wKTtuLnNldChpLGEpfXJldHVybiBBcnJheS5mcm9tKG4uZW50cmllcygpKS5tYXAoKFtlLHRdKT0+KHtzY29wZTplLHBvaW50czp0fSkpLnNvcnQoKHQsbik9PmUobi5wb2ludHMpLWUodC5wb2ludHMpKX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuIHQubWFwKCh0LG4pPT50PjA/KGVbbl0/PzApL3Q6bnVsbCl9ZXhwb3J0e3IgYXMgaSxpIGFzIG4sdCBhcyByLG4gYXMgdH07",
|
|
),
|
|
},
|
|
"tabs-BbGJyCRr.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e2EgYXMgZSxpIGFzIHQsbCBhcyBuLG4gYXMgcixvIGFzIGksciBhcyBhfWZyb20iLi9QcmVzZW5jZS1DdVFVR0Z5Uy5qcyI7aW1wb3J0e0IgYXMgbyxFdCBhcyBzLEZyIGFzIGMsTHQgYXMgbCxOIGFzIHUsT3IgYXMgZCxPdCBhcyBmLFFuIGFzIHAsUnIgYXMgbSxTbiBhcyBoLFl0IGFzIGcsZG4gYXMgXyxqbiBhcyB2LGpyIGFzIHksbGkgYXMgYixyciBhcyB4LHVuIGFzIFMsdm4gYXMgQyx3LHduIGFzIFQseiBhcyBFLHp0IGFzIER9ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e0YgYXMgTyxQIGFzIGssbCBhcyBBfWZyb20iLi9DYXJkRGVzY3JpcHRpb24tSWRPdDMxN2MuanMiO2ltcG9ydHtjIGFzIGosbCBhcyBNfWZyb20iLi9pbmRleC1CaVRRX2dDRS5qcyI7dmFyIE49YHJvdmluZ0ZvY3VzR3JvdXAub25FbnRyeUZvY3VzYCxQPXtidWJibGVzOiExLGNhbmNlbGFibGU6ITB9LEY9e0Fycm93TGVmdDpgcHJldmAsQXJyb3dVcDpgcHJldmAsQXJyb3dSaWdodDpgbmV4dGAsQXJyb3dEb3duOmBuZXh0YCxQYWdlVXA6YGZpcnN0YCxIb21lOmBmaXJzdGAsUGFnZURvd246YGxhc3RgLEVuZDpgbGFzdGB9O2Z1bmN0aW9uIEkoZSx0KXtyZXR1cm4gdD09PWBydGxgP2U9PT1gQXJyb3dMZWZ0YD9gQXJyb3dSaWdodGA6ZT09PWBBcnJvd1JpZ2h0YD9gQXJyb3dMZWZ0YDplOmV9ZnVuY3Rpb24gTChlLHQsbil7bGV0IHI9SShlLmtleSxuKTtpZighKHQ9PT1gdmVydGljYWxgJiZbYEFycm93TGVmdGAsYEFycm93UmlnaHRgXS5pbmNsdWRlcyhyKSkmJiEodD09PWBob3Jpem9udGFsYCYmW2BBcnJvd1VwYCxgQXJyb3dEb3duYF0uaW5jbHVkZXMocikpKXJldHVybiBGW3JdfWZ1bmN0aW9uIFIoZSx0PSExKXtsZXQgbj1NKCk7Zm9yKGxldCByIG9mIGUpaWYocj09PW58fChyLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOnR9KSxNKCkhPT1uKSlyZXR1cm59ZnVuY3Rpb24geihlLHQpe3JldHVybiBlLm1hcCgobixyKT0+ZVsodCtyKSVlLmxlbmd0aF0pfXZhcltCLFZdPW4oYFJvdmluZ0ZvY3VzR3JvdXBgKSxIPUQoe19fbmFtZTpgUm92aW5nRm9jdXNHcm91cGAscHJvcHM6e29yaWVudGF0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OnZvaWQgMH0sZGlyOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMX0sbG9vcDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExLGRlZmF1bHQ6ITF9LGN1cnJlbnRUYWJTdG9wSWQ6e3R5cGU6W1N0cmluZyxudWxsXSxyZXF1aXJlZDohMX0sZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxwcmV2ZW50U2Nyb2xsT25FbnRyeUZvY3VzOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExfX0sZW1pdHM6W2BlbnRyeUZvY3VzYCxgdXBkYXRlOmN1cnJlbnRUYWJTdG9wSWRgXSxzZXR1cChlLHtleHBvc2U6dCxlbWl0Om59KXtsZXQgcj1lLGE9bix7bG9vcDpvLG9yaWVudGF0aW9uOnMsZGlyOnV9PWMocikscD1pKHUpLGg9QShyLGBjdXJyZW50VGFiU3RvcElkYCxhLHtkZWZhdWx0VmFsdWU6ci5kZWZhdWx0Q3VycmVudFRhYlN0b3BJZCxwYXNzaXZlOnIuY3VycmVudFRhYlN0b3BJZD09PXZvaWQgMH0pLGc9ZCghMSksXz1kKCExKSx5PWQoMCkse2dldEl0ZW1zOmIsQ29sbGVjdGlvblNsb3Q6U309aih7aXNQcm92aWRlcjohMH0pO2Z1bmN0aW9uIEMoZSl7bGV0IHQ9IV8udmFsdWU7aWYoZS5jdXJyZW50VGFyZ2V0JiZlLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmdCYmIWcudmFsdWUpe2xldCB0PW5ldyBDdXN0b21FdmVudChOLFApO2lmKGUuY3VycmVudFRhcmdldC5kaXNwYXRjaEV2ZW50KHQpLGEoYGVudHJ5Rm9jdXNgLHQpLCF0LmRlZmF1bHRQcmV2ZW50ZWQpe2xldCBlPWIoKS5tYXAoZT0+ZS5yZWYpLmZpbHRlcihlPT5lLmRhdGFzZXQuZGlzYWJsZWQhPT1gYCk7UihbZS5maW5kKGU9PmUuZ2V0QXR0cmlidXRlKGBkYXRhLWFjdGl2ZWApPT09YGApLGUuZmluZChlPT5lLmdldEF0dHJpYnV0ZShgZGF0YS1oaWdobGlnaHRlZGApPT09YGApLGUuZmluZChlPT5lLmlkPT09aC52YWx1ZSksLi4uZV0uZmlsdGVyKEJvb2xlYW4pLHIucHJldmVudFNjcm9sbE9uRW50cnlGb2N1cyl9fV8udmFsdWU9ITF9ZnVuY3Rpb24gRSgpe3NldFRpbWVvdXQoKCk9PntfLnZhbHVlPSExfSwxKX1yZXR1cm4gdCh7Z2V0SXRlbXM6Yn0pLFYoe2xvb3A6byxkaXI6cCxvcmllbnRhdGlvbjpzLGN1cnJlbnRUYWJTdG9wSWQ6aCxvbkl0ZW1Gb2N1czplPT57aC52YWx1ZT1lfSxvbkl0ZW1TaGlmdFRhYjooKT0+e2cudmFsdWU9ITB9LG9uRm9jdXNhYmxlSXRlbUFkZDooKT0+e3kudmFsdWUrK30sb25Gb2N1c2FibGVJdGVtUmVtb3ZlOigpPT57eS52YWx1ZS0tfX0pLChlLHQpPT4oVCgpLGYobShTKSxudWxsLHtkZWZhdWx0OngoKCk9PltsKG0odykse3RhYmluZGV4OmcudmFsdWV8fHkudmFsdWU9PT0wPy0xOjAsImRhdGEtb3JpZW50YXRpb24iOm0ocyksYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxkaXI6bShwKSxzdHlsZTp7b3V0bGluZTpgbm9uZWB9LG9uTW91c2Vkb3duOnRbMF18fD1lPT5fLnZhbHVlPSEwLG9uTW91c2V1cDpFLG9uRm9jdXM6QyxvbkJsdXI6dFsxXXx8PWU9PmcudmFsdWU9ITF9LHtkZWZhdWx0OngoKCk9Plt2KGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2B0YWJpbmRleGAsYGRhdGEtb3JpZW50YXRpb25gLGBhc2AsYGFzLWNoaWxkYCxgZGlyYF0pXSksXzozfSkpfX0pLFU9RCh7X19uYW1lOmBSb3ZpbmdGb2N1c0l0ZW1gLHByb3BzOnt0YWJTdG9wSWQ6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiExfSxmb2N1c2FibGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMX0sYWxsb3dTaGlmdEtleTp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITEsZGVmYXVsdDpgc3BhbmB9fSxzZXR1cChlKXtsZXQgdD1lLG49QigpLGk9cigpLGE9cygoKT0+dC50YWJTdG9wSWR8fGkpLG89cygoKT0+bi5jdXJyZW50VGFiU3RvcElkLnZhbHVlPT09YS52YWx1ZSkse2dldEl0ZW1zOmMsQ29sbGVjdGlvbkl0ZW06dX09aigpO0MoKCk9Pnt0LmZvY3VzYWJsZSYmbi5vbkZvY3VzYWJsZUl0ZW1BZGQoKX0pLGgoKCk9Pnt0LmZvY3VzYWJsZSYmbi5vbkZvY3VzYWJsZUl0ZW1SZW1vdmUoKX0pLHAoKCk9PnQuZm9jdXNhYmxlLChlLHQpPT57ZSE9PXQmJihlP24ub25Gb2N1c2FibGVJdGVtQWRkKCk6bi5vbkZvY3VzYWJsZUl0ZW1SZW1vdmUoKSl9KTtmdW5jdGlvbiBkKGUpe2lmKGUua2V5PT09YFRhYmAmJmUuc2hpZnRLZXkpe24ub25JdGVtU2hpZnRUYWIoKTtyZXR1cm59aWYoZS50YXJnZXQhPT1lLmN1cnJlbnRUYXJnZXQpcmV0dXJuO2xldCByPUwoZSxuLm9yaWVudGF0aW9uLnZhbHVlLG4uZGlyLnZhbHVlKTtpZihyIT09dm9pZCAwKXtpZihlLm1ldGFLZXl8fGUuY3RybEtleXx8ZS5hbHRLZXl8fCF0LmFsbG93U2hpZnRLZXkmJmUuc2hpZnRLZXkpcmV0dXJuO2UucHJldmVudERlZmF1bHQoKTtsZXQgaT1bLi4uYygpLm1hcChlPT5lLnJlZikuZmlsdGVyKGU9PmUuZGF0YXNldC5kaXNhYmxlZCE9PWBgKV07aWYocj09PWBsYXN0YClpLnJldmVyc2UoKTtlbHNlIGlmKHI9PT1gcHJldmB8fHI9PT1gbmV4dGApe3I9PT1gcHJldmAmJmkucmV2ZXJzZSgpO2xldCB0PWkuaW5kZXhPZihlLmN1cnJlbnRUYXJnZXQpO2k9bi5sb29wLnZhbHVlP3ooaSx0KzEpOmkuc2xpY2UodCsxKX1fKCgpPT5SKGkpKX19cmV0dXJuKGUsdCk9PihUKCksZihtKHUpLG51bGwse2RlZmF1bHQ6eCgoKT0+W2wobSh3KSx7dGFiaW5kZXg6by52YWx1ZT8wOi0xLCJkYXRhLW9yaWVudGF0aW9uIjptKG4pLm9yaWVudGF0aW9uLnZhbHVlLCJkYXRhLWFjdGl2ZSI6ZS5hY3RpdmU/YGA6dm9pZCAwLCJkYXRhLWRpc2FibGVkIjplLmZvY3VzYWJsZT92b2lkIDA6YGAsYXM6ZS5hcywiYXMtY2hpbGQiOmUuYXNDaGlsZCxvbk1vdXNlZG93bjp0WzBdfHw9dD0+e2UuZm9jdXNhYmxlP20obikub25JdGVtRm9jdXMoYS52YWx1ZSk6dC5wcmV2ZW50RGVmYXVsdCgpfSxvbkZvY3VzOnRbMV18fD1lPT5tKG4pLm9uSXRlbUZvY3VzKGEudmFsdWUpLG9uS2V5ZG93bjpkfSx7ZGVmYXVsdDp4KCgpPT5bdihlLiRzbG90cyxgZGVmYXVsdGApXSksXzozfSw4LFtgdGFiaW5kZXhgLGBkYXRhLW9yaWVudGF0aW9uYCxgZGF0YS1hY3RpdmVgLGBkYXRhLWRpc2FibGVkYCxgYXNgLGBhcy1jaGlsZGBdKV0pLF86M30pKX19KSxbVyxHXT1uKGBUYWJzUm9vdGApLEs9RCh7X19uYW1lOmBUYWJzUm9vdGAscHJvcHM6e2RlZmF1bHRWYWx1ZTp7dHlwZTpudWxsLHJlcXVpcmVkOiExfSxvcmllbnRhdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITEsZGVmYXVsdDpgaG9yaXpvbnRhbGB9LGRpcjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITF9LGFjdGl2YXRpb25Nb2RlOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMSxkZWZhdWx0OmBhdXRvbWF0aWNgfSxtb2RlbFZhbHVlOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9LHVubW91bnRPbkhpZGU6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAodCx7ZW1pdDpufSl7bGV0IGE9dCxvPW4se29yaWVudGF0aW9uOnMsdW5tb3VudE9uSGlkZTpsLGRpcjp1fT1jKGEpLHA9aSh1KTtlKCk7bGV0IGg9QShhLGBtb2RlbFZhbHVlYCxvLHtkZWZhdWx0VmFsdWU6YS5kZWZhdWx0VmFsdWUscGFzc2l2ZTphLm1vZGVsVmFsdWU9PT12b2lkIDB9KSxnPWQoKSxfPXkobmV3IFNldCk7cmV0dXJuIEcoe21vZGVsVmFsdWU6aCxjaGFuZ2VNb2RlbFZhbHVlOmU9PntoLnZhbHVlPWV9LG9yaWVudGF0aW9uOnMsZGlyOnAsdW5tb3VudE9uSGlkZTpsLGFjdGl2YXRpb25Nb2RlOmEuYWN0aXZhdGlvbk1vZGUsYmFzZUlkOnIodm9pZCAwLGByZWthLXRhYnNgKSx0YWJzTGlzdDpnLGNvbnRlbnRJZHM6XyxyZWdpc3RlckNvbnRlbnQ6ZT0+e18udmFsdWU9bmV3IFNldChbLi4uXy52YWx1ZSxlXSl9LHVucmVnaXN0ZXJDb250ZW50OmU9PntsZXQgdD1uZXcgU2V0KF8udmFsdWUpO3QuZGVsZXRlKGUpLF8udmFsdWU9dH19KSwoZSx0KT0+KFQoKSxmKG0odykse2RpcjptKHApLCJkYXRhLW9yaWVudGF0aW9uIjptKHMpLCJhcy1jaGlsZCI6ZS5hc0NoaWxkLGFzOmUuYXN9LHtkZWZhdWx0OngoKCk9Plt2KGUuJHNsb3RzLGBkZWZhdWx0YCx7bW9kZWxWYWx1ZTptKGgpfSldKSxfOjN9LDgsW2BkaXJgLGBkYXRhLW9yaWVudGF0aW9uYCxgYXMtY2hpbGRgLGBhc2BdKSl9fSk7ZnVuY3Rpb24gcShlLHQpe3JldHVybmAke2V9LXRyaWdnZXItJHt0fWB9ZnVuY3Rpb24gSihlLHQpe3JldHVybmAke2V9LWNvbnRlbnQtJHt0fWB9dmFyIFk9RCh7X19uYW1lOmBUYWJzTGlzdGAscHJvcHM6e2xvb3A6e3R5cGU6Qm9vbGVhbixyZXF1aXJlZDohMSxkZWZhdWx0OiEwfSxhc0NoaWxkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9LGFzOnt0eXBlOm51bGwscmVxdWlyZWQ6ITF9fSxzZXR1cCh0KXtsZXR7bG9vcDpufT1jKHQpLHtmb3J3YXJkUmVmOnIsY3VycmVudEVsZW1lbnQ6aX09ZSgpLGE9VygpO3JldHVybiBhLnRhYnNMaXN0PWksKGUsdCk9PihUKCksZihtKEgpLHsiYXMtY2hpbGQiOmBgLG9yaWVudGF0aW9uOm0oYSkub3JpZW50YXRpb24udmFsdWUsZGlyOm0oYSkuZGlyLnZhbHVlLGxvb3A6bShuKX0se2RlZmF1bHQ6eCgoKT0+W2wobSh3KSx7cmVmOm0ocikscm9sZTpgdGFibGlzdGAsImFzLWNoaWxkIjplLmFzQ2hpbGQsYXM6ZS5hcywiYXJpYS1vcmllbnRhdGlvbiI6bShhKS5vcmllbnRhdGlvbi52YWx1ZX0se2RlZmF1bHQ6eCgoKT0+W3YoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sOCxbYGFzLWNoaWxkYCxgYXNgLGBhcmlhLW9yaWVudGF0aW9uYF0pXSksXzozfSw4LFtgb3JpZW50YXRpb25gLGBkaXJgLGBsb29wYF0pKX19KSxYPUQoe19fbmFtZTpgVGFic1RyaWdnZXJgLHByb3BzOnt2YWx1ZTp7dHlwZTpbU3RyaW5nLE51bWJlcl0scmVxdWlyZWQ6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITEsZGVmYXVsdDohMX0sYXNDaGlsZDp7dHlwZTpCb29sZWFuLHJlcXVpcmVkOiExfSxhczp7dHlwZTpudWxsLHJlcXVpcmVkOiExLGRlZmF1bHQ6YGJ1dHRvbmB9fSxzZXR1cCh0KXtsZXQgbj10LHtmb3J3YXJkUmVmOnJ9PWUoKSxpPVcoKSxhPXMoKCk9PnEoaS5iYXNlSWQsbi52YWx1ZSkpLG89cygoKT0+aS5jb250ZW50SWRzLnZhbHVlLmhhcyhuLnZhbHVlKT9KKGkuYmFzZUlkLG4udmFsdWUpOnZvaWQgMCksYz1zKCgpPT5uLnZhbHVlPT09aS5tb2RlbFZhbHVlLnZhbHVlKTtyZXR1cm4oZSx0KT0+KFQoKSxmKG0oVSkseyJhcy1jaGlsZCI6YGAsZm9jdXNhYmxlOiFlLmRpc2FibGVkLGFjdGl2ZTpjLnZhbHVlfSx7ZGVmYXVsdDp4KCgpPT5bbChtKHcpLHtpZDphLnZhbHVlLHJlZjptKHIpLHJvbGU6YHRhYmAsdHlwZTplLmFzPT09YGJ1dHRvbmA/YGJ1dHRvbmA6dm9pZCAwLGFzOmUuYXMsImFzLWNoaWxkIjplLmFzQ2hpbGQsImFyaWEtc2VsZWN0ZWQiOmMudmFsdWU/YHRydWVgOmBmYWxzZWAsImFyaWEtY29udHJvbHMiOm8udmFsdWUsImRhdGEtc3RhdGUiOmMudmFsdWU/YGFjdGl2ZWA6YGluYWN0aXZlYCxkaXNhYmxlZDplLmRpc2FibGVkLCJkYXRhLWRpc2FibGVkIjplLmRpc2FibGVkP2BgOnZvaWQgMCwiZGF0YS1vcmllbnRhdGlvbiI6bShpKS5vcmllbnRhdGlvbi52YWx1ZSxvbk1vdXNlZG93bjp0WzBdfHw9Tyh0PT57IWUuZGlzYWJsZWQmJnQuY3RybEtleT09PSExP20oaSkuY2hhbmdlTW9kZWxWYWx1ZShlLnZhbHVlKTp0LnByZXZlbnREZWZhdWx0KCl9LFtgbGVmdGBdKSxvbktleWRvd246dFsxXXx8PWsodD0+bShpKS5jaGFuZ2VNb2RlbFZhbHVlKGUudmFsdWUpLFtgZW50ZXJgLGBzcGFjZWBdKSxvbkZvY3VzOnRbMl18fD0oKT0+e2xldCB0PW0oaSkuYWN0aXZhdGlvbk1vZGUhPT1gbWFudWFsYDshYy52YWx1ZSYmIWUuZGlzYWJsZWQmJnQmJm0oaSkuY2hhbmdlTW9kZWxWYWx1ZShlLnZhbHVlKX19LHtkZWZhdWx0OngoKCk9Plt2KGUuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDgsW2BpZGAsYHR5cGVgLGBhc2AsYGFzLWNoaWxkYCxgYXJpYS1zZWxlY3RlZGAsYGFyaWEtY29udHJvbHNgLGBkYXRhLXN0YXRlYCxgZGlzYWJsZWRgLGBkYXRhLWRpc2FibGVkYCxgZGF0YS1vcmllbnRhdGlvbmBdKV0pLF86M30sOCxbYGZvY3VzYWJsZWAsYGFjdGl2ZWBdKSl9fSksWj1EKHtfX25hbWU6YFRhYnNgLHByb3BzOntkZWZhdWx0VmFsdWU6e30sb3JpZW50YXRpb246e30sZGlyOnt9LGFjdGl2YXRpb25Nb2RlOnt9LG1vZGVsVmFsdWU6e30sdW5tb3VudE9uSGlkZTp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19fSxlbWl0czpbYHVwZGF0ZTptb2RlbFZhbHVlYF0sc2V0dXAoZSx7ZW1pdDp0fSl7bGV0IG49ZSxyPXQsaT11KG4sYGNsYXNzYCksbz1hKGkscik7cmV0dXJuKGUsdCk9PihUKCksZihtKEspLFMoeyJkYXRhLXNsb3QiOmB0YWJzYCwiZGF0YS1vcmllbnRhdGlvbiI6bShvKS5vcmllbnRhdGlvbnx8YGhvcml6b250YWxgfSxtKG8pLHtjbGFzczptKEUpKGBnYXAtMiBncm91cC90YWJzIGZsZXggZGF0YS1ob3Jpem9udGFsOmZsZXgtY29sYCxuLmNsYXNzKX0pLHtkZWZhdWx0OngodD0+W3YoZS4kc2xvdHMsYGRlZmF1bHRgLGIoZyh0KSkpXSksXzozfSwxNixbYGRhdGEtb3JpZW50YXRpb25gLGBjbGFzc2BdKSl9fSksUT1EKHtfX25hbWU6YFRhYnNMaXN0YCxwcm9wczp7bG9vcDp7dHlwZTpCb29sZWFufSxhc0NoaWxkOnt0eXBlOkJvb2xlYW59LGFzOnt9LGNsYXNzOnt0eXBlOltCb29sZWFuLG51bGwsU3RyaW5nLE9iamVjdCxBcnJheV19LHZhcmlhbnQ6e2RlZmF1bHQ6YGRlZmF1bHRgfX0sc2V0dXAoZSl7bGV0IHQ9ZSxuPXUodCxgY2xhc3NgLGB2YXJpYW50YCk7cmV0dXJuKHIsaSk9PihUKCksZihtKFkpLFMoeyJkYXRhLXNsb3QiOmB0YWJzLWxpc3RgLCJkYXRhLXZhcmlhbnQiOmUudmFyaWFudH0sbShuKSx7Y2xhc3M6bShFKShtKGVlKSh7dmFyaWFudDplLnZhcmlhbnR9KSx0LmNsYXNzKX0pLHtkZWZhdWx0OngoKCk9Plt2KHIuJHNsb3RzLGBkZWZhdWx0YCldKSxfOjN9LDE2LFtgZGF0YS12YXJpYW50YCxgY2xhc3NgXSkpfX0pLCQ9RCh7X19uYW1lOmBUYWJzVHJpZ2dlcmAscHJvcHM6e3ZhbHVlOnt9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW59LGFzQ2hpbGQ6e3R5cGU6Qm9vbGVhbn0sYXM6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LHNldHVwKGUpe2xldCBuPWUscj11KG4sYGNsYXNzYCksaT10KHIpO3JldHVybihlLHQpPT4oVCgpLGYobShYKSxTKHsiZGF0YS1zbG90IjpgdGFicy10cmlnZ2VyYCxjbGFzczptKEUpKGBnYXAtMS41IHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci10cmFuc3BhcmVudCBweC0xLjUgcHktMC41IHRleHQtc20gZm9udC1tZWRpdW0gZ3JvdXAtZGF0YS1bdmFyaWFudD1kZWZhdWx0XS90YWJzLWxpc3Q6ZGF0YS1hY3RpdmU6c2hhZG93LXNtIGdyb3VwLWRhdGEtW3ZhcmlhbnQ9bGluZV0vdGFicy1saXN0OmRhdGEtYWN0aXZlOnNoYWRvdy1ub25lIFsmX3N2Zzpub3QoW2NsYXNzKj1zaXplLV0pXTpzaXplLTQgaGFzLWRhdGEtW2ljb249aW5saW5lLWVuZF06cHItMSBoYXMtZGF0YS1baWNvbj1pbmxpbmUtc3RhcnRdOnBsLTEgcmVsYXRpdmUgaW5saW5lLWZsZXggaC1bY2FsYygxMDAlLTFweCldIGZsZXgtMSBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgd2hpdGVzcGFjZS1ub3dyYXAgdGV4dC1mb3JlZ3JvdW5kLzYwIHRyYW5zaXRpb24tYWxsIGdyb3VwLWRhdGEtdmVydGljYWwvdGFiczp3LWZ1bGwgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOmp1c3RpZnktc3RhcnQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIGZvY3VzLXZpc2libGU6Ym9yZGVyLXJpbmcgZm9jdXMtdmlzaWJsZTpyaW5nLTMgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcvNTAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLTEgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLXJpbmcgZGlzYWJsZWQ6cG9pbnRlci1ldmVudHMtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIGRhcms6dGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGRhcms6aG92ZXI6dGV4dC1mb3JlZ3JvdW5kIFsmX3N2Z106cG9pbnRlci1ldmVudHMtbm9uZSBbJl9zdmddOnNocmluay0wYCxgZ3JvdXAtZGF0YS1bdmFyaWFudD1saW5lXS90YWJzLWxpc3Q6YmctdHJhbnNwYXJlbnQgZ3JvdXAtZGF0YS1bdmFyaWFudD1saW5lXS90YWJzLWxpc3Q6ZGF0YS1hY3RpdmU6YmctdHJhbnNwYXJlbnQgZGFyazpncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpkYXRhLWFjdGl2ZTpib3JkZXItdHJhbnNwYXJlbnQgZGFyazpncm91cC1kYXRhLVt2YXJpYW50PWxpbmVdL3RhYnMtbGlzdDpkYXRhLWFjdGl2ZTpiZy10cmFuc3BhcmVudGAsYGRhdGEtYWN0aXZlOmJnLWJhY2tncm91bmQgZGF0YS1hY3RpdmU6dGV4dC1mb3JlZ3JvdW5kIGRhcms6ZGF0YS1hY3RpdmU6Ym9yZGVyLWlucHV0IGRhcms6ZGF0YS1hY3RpdmU6YmctaW5wdXQvMzAgZGFyazpkYXRhLWFjdGl2ZTp0ZXh0LWZvcmVncm91bmRgLGBhZnRlcjphYnNvbHV0ZSBhZnRlcjpiZy1mb3JlZ3JvdW5kIGFmdGVyOm9wYWNpdHktMCBhZnRlcjp0cmFuc2l0aW9uLW9wYWNpdHkgZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6YWZ0ZXI6aW5zZXQteC0wIGdyb3VwLWRhdGEtaG9yaXpvbnRhbC90YWJzOmFmdGVyOmJvdHRvbS1bLTVweF0gZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6YWZ0ZXI6aC0wLjUgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOmFmdGVyOmluc2V0LXktMCBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6YWZ0ZXI6LXJpZ2h0LTEgZ3JvdXAtZGF0YS12ZXJ0aWNhbC90YWJzOmFmdGVyOnctMC41IGdyb3VwLWRhdGEtW3ZhcmlhbnQ9bGluZV0vdGFicy1saXN0OmRhdGEtYWN0aXZlOmFmdGVyOm9wYWNpdHktMTAwYCxuLmNsYXNzKX0sbShpKSkse2RlZmF1bHQ6eCgoKT0+W3YoZS4kc2xvdHMsYGRlZmF1bHRgKV0pLF86M30sMTYsW2BjbGFzc2BdKSl9fSksZWU9byhgcm91bmRlZC1sZyBwLTAuNzUgZ3JvdXAtZGF0YS1ob3Jpem9udGFsL3RhYnM6aC04IGRhdGEtW3ZhcmlhbnQ9bGluZV06cm91bmRlZC1ub25lIGdyb3VwL3RhYnMtbGlzdCBpbmxpbmUtZmxleCB3LWZpdCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGdyb3VwLWRhdGEtdmVydGljYWwvdGFiczpoLWZpdCBncm91cC1kYXRhLXZlcnRpY2FsL3RhYnM6ZmxleC1jb2xgLHt2YXJpYW50czp7dmFyaWFudDp7ZGVmYXVsdDpgYmctbXV0ZWRgLGxpbmU6YGdhcC0xIGJnLXRyYW5zcGFyZW50YH19LGRlZmF1bHRWYXJpYW50czp7dmFyaWFudDpgZGVmYXVsdGB9fSk7ZXhwb3J0e1EgYXMgbixaIGFzIHIsJCBhcyB0fTs=",
|
|
),
|
|
},
|
|
"useSearchQuery-DysBt-In.js": {
|
|
contentType: "text/javascript; charset=utf-8",
|
|
body: decodeAdminAsset(
|
|
"aW1wb3J0e0F0IGFzIGUsRXQgYXMgdCxMdCBhcyBuLE1uIGFzIHIsT3IgYXMgaSxPdCBhcyBhLFJyIGFzIG8sa3QgYXMgcyxudCBhcyBjLHJyIGFzIGwsc2kgYXMgdSxzdCBhcyBkLHduIGFzIGYseiBhcyBwLHp0IGFzIG19ZnJvbSIuL25hdi1EemIwT1ROXy5qcyI7aW1wb3J0e24gYXMgaH1mcm9tIi4vQ2FyZERlc2NyaXB0aW9uLUlkT3QzMTdjLmpzIjtpbXBvcnR7cyBhcyBnfWZyb20iLi9pbmRleC1CaVRRX2dDRS5qcyI7dmFyIF89bSh7X19uYW1lOmBTZWFyY2hJbnB1dGAscHJvcHM6e21vZGVsVmFsdWU6e30scGxhY2Vob2xkZXI6e30sY2xhc3M6e3R5cGU6W0Jvb2xlYW4sbnVsbCxTdHJpbmcsT2JqZWN0LEFycmF5XX19LGVtaXRzOltgdXBkYXRlOm1vZGVsVmFsdWVgXSxzZXR1cChpLHtlbWl0Om19KXtsZXQgXz1pLHY9bSx5PXQoKCk9Pl8ubW9kZWxWYWx1ZS5sZW5ndGg+MCk7ZnVuY3Rpb24gYihlKXt2KGB1cGRhdGU6bW9kZWxWYWx1ZWAsU3RyaW5nKGUpKX1mdW5jdGlvbiB4KCl7dihgdXBkYXRlOm1vZGVsVmFsdWVgLGBgKX1yZXR1cm4odCxtKT0+e2xldCB2PXIoYEZvbnRBd2Vzb21lSWNvbmApO3JldHVybiBmKCksZShgZGl2YCx7Y2xhc3M6dShvKHApKGByZWxhdGl2ZWAsXy5jbGFzcykpfSxbbih2LHtpY29uOm8oYyksY2xhc3M6YHBvaW50ZXItZXZlbnRzLW5vbmUgYWJzb2x1dGUgdG9wLTEvMiBsZWZ0LTIuNSBzaXplLTMuNSAtdHJhbnNsYXRlLXktMS8yIHRleHQtbXV0ZWQtZm9yZWdyb3VuZGAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSksbihvKGcpLHsibW9kZWwtdmFsdWUiOmkubW9kZWxWYWx1ZSx0eXBlOmB0ZXh0YCxwbGFjZWhvbGRlcjppLnBsYWNlaG9sZGVyLCJhcmlhLWxhYmVsIjppLnBsYWNlaG9sZGVyLGNsYXNzOmBwci04IHBsLThgLCJvblVwZGF0ZTptb2RlbFZhbHVlIjpifSxudWxsLDgsW2Btb2RlbC12YWx1ZWAsYHBsYWNlaG9sZGVyYCxgYXJpYS1sYWJlbGBdKSx5LnZhbHVlPyhmKCksYShvKGgpLHtrZXk6MCx0eXBlOmBidXR0b25gLHZhcmlhbnQ6YGdob3N0YCxzaXplOmBpY29uLXhzYCwiYXJpYS1sYWJlbCI6YENsZWFyIHNlYXJjaGAsY2xhc3M6YGFic29sdXRlIHRvcC0xLzIgcmlnaHQtMSAtdHJhbnNsYXRlLXktMS8yIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmRgLG9uQ2xpY2s6eH0se2RlZmF1bHQ6bCgoKT0+W24odix7aWNvbjpvKGQpLGNsYXNzOmBzaXplLTMuNWAsImFyaWEtaGlkZGVuIjpgdHJ1ZWB9LG51bGwsOCxbYGljb25gXSldKSxfOjF9KSk6cyhgYCwhMCldLDIpfX19KTtmdW5jdGlvbiB2KGUpe2xldCBuPWU/P2koYGApLHI9dCgoKT0+bi52YWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKSk7cmV0dXJue3F1ZXJ5Om4sbm9ybWFsaXplZDpyLGhhc1F1ZXJ5OnQoKCk9PnIudmFsdWUubGVuZ3RoPjApfX1leHBvcnR7XyBhcyBuLHYgYXMgdH07",
|
|
),
|
|
},
|
|
}
|