Skip to content

Instantly share code, notes, and snippets.

@SteveBronder
Created July 14, 2015 19:57
Show Gist options
  • Save SteveBronder/5ffa11de19dabbda8791 to your computer and use it in GitHub Desktop.
Save SteveBronder/5ffa11de19dabbda8791 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
<!DOCTYPE html>
<!-- saved from url=(0047)file:///C:/John/Steve_John_Metro_Ridership.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide{display:none !important;}ng\:form{display:block;}</style><meta charset="utf-8">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css">
<link rel="stylesheet" href="data:text/css;base64,LyoqKioqKioqKioqKioqKioqKioqCiAqIFNWRyBDU1MKICovCgoKc3ZnIHsKICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgLyogVHJ5aW5nIHRvIGdldCBTVkcgdG8gYWN0IGxpa2UgYSBncmVlZHkgYmxvY2sgaW4gYWxsIGJyb3dzZXJzICovCiAgZGlzcGxheTogYmxvY2s7CiAgd2lkdGg6MTAwJTsKICBoZWlnaHQ6MTAwJTsKfQoKLyoqKioqKioqKioqKioqKioqKioqCiAgRGVmYXVsdCBDU1MgZm9yIGFuIHN2ZyBlbGVtZW50IG52ZDMgdXNlZAoqLwpzdmcubnZkMy1zdmcgewogICAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwogICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgovKioqKioqKioqKioqKioqKioqKioKICBCb3ggc2hhZG93IGFuZCBib3JkZXIgcmFkaXVzIHN0eWxpbmcKKi8KLm52dG9vbHRpcC53aXRoLTNkLXNoYWRvdywgLndpdGgtM2Qtc2hhZG93IC5udnRvb2x0aXAgewogIC1tb3otYm94LXNoYWRvdzogMCA1cHggMTBweCByZ2JhKDAsMCwwLC4yKTsKICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNXB4IDEwcHggcmdiYSgwLDAsMCwuMik7CiAgYm94LXNoYWRvdzogMCA1cHggMTBweCByZ2JhKDAsMCwwLC4yKTsKCiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CiAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7CiAgYm9yZGVyLXJhZGl1czogNXB4Owp9CgovKioqKioqKioqKioqKioqKioqKioKICogVE9PTFRJUCBDU1MKICovCgoubnZ0b29sdGlwIHsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwxLjApOwogIHBhZGRpbmc6IDFweDsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4yKTsKICB6LWluZGV4OiAxMDAwMDsKCiAgZm9udC1mYW1pbHk6IEFyaWFsOwogIGZvbnQtc2l6ZTogMTNweDsKICB0ZXh0LWFsaWduOiBsZWZ0OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwoKICB3aGl0ZS1zcGFjZTogbm93cmFwOwoKICAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7CiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi8qR2l2ZSB0b29sdGlwcyB0aGF0IG9sZCBmYWRlIGluIHRyYW5zaXRpb24gYnkKICAgIHB1dHRpbmcgYSAid2l0aC10cmFuc2l0aW9ucyIgY2xhc3Mgb24gdGhlIGNvbnRhaW5lciBkaXYuCiovCi5udnRvb2x0aXAud2l0aC10cmFuc2l0aW9ucywgLndpdGgtdHJhbnNpdGlvbnMgLm52dG9vbHRpcCB7CiAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MG1zIGxpbmVhcjsKICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgNTBtcyBsaW5lYXI7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDUwbXMgbGluZWFyOwoKICB0cmFuc2l0aW9uLWRlbGF5OiAyMDBtczsKICAtbW96LXRyYW5zaXRpb24tZGVsYXk6IDIwMG1zOwogIC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheTogMjAwbXM7Cn0KCi5udnRvb2x0aXAueC1udnRvb2x0aXAsCi5udnRvb2x0aXAueS1udnRvb2x0aXAgewogIHBhZGRpbmc6IDhweDsKfQoKLm52dG9vbHRpcCBoMyB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDRweCAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxOHB4OwogIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDcsMjQ3LDI0NywwLjc1KTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CgogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWJlYmViOwoKICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwOwogIC1tb3otYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7CiAgYm9yZGVyLXJhZGl1czogMXB4IDVweCAwIDA7Cn0KCi5udnRvb2x0aXAgcCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDVweCAxNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLm52dG9vbHRpcCBzcGFuIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luOiAycHggMDsKfQoKLm52dG9vbHRpcCB0YWJsZSB7CiAgbWFyZ2luOiA2cHg7CiAgYm9yZGVyLXNwYWNpbmc6MDsKfQoKCi5udnRvb2x0aXAgdGFibGUgdGQgewogIHBhZGRpbmc6IDJweCA5cHggMnB4IDA7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLm52dG9vbHRpcCB0YWJsZSB0ZC5rZXkgewogIGZvbnQtd2VpZ2h0Om5vcm1hbDsKfQoubnZ0b29sdGlwIHRhYmxlIHRkLnZhbHVlIHsKICB0ZXh0LWFsaWduOiByaWdodDsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLm52dG9vbHRpcCB0YWJsZSB0ci5oaWdobGlnaHQgdGQgewogIHBhZGRpbmc6IDFweCA5cHggMXB4IDA7CiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogc29saWQ7CiAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OwogIGJvcmRlci10b3Atc3R5bGU6IHNvbGlkOwogIGJvcmRlci10b3Atd2lkdGg6IDFweDsKfQoKLm52dG9vbHRpcCB0YWJsZSB0ZC5sZWdlbmQtY29sb3ItZ3VpZGUgZGl2IHsKICB3aWR0aDogOHB4OwogIGhlaWdodDogOHB4OwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5udnRvb2x0aXAgLmZvb3RlciB7CiAgcGFkZGluZzogM3B4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLm52dG9vbHRpcC1wZW5kaW5nLXJlbW92YWwgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLm52ZDMgdGV4dCB7CiAgZm9udDogbm9ybWFsIDEycHggQXJpYWw7Cn0KCi5udmQzIC50aXRsZSB7CiBmb250OiBib2xkIDE0cHggQXJpYWw7Cn0KCi5udmQzIC5udi1iYWNrZ3JvdW5kIHsKICBmaWxsOiB3aGl0ZTsKICBmaWxsLW9wYWNpdHk6IDA7Cn0KCi5udmQzLm52LW5vRGF0YSB7CiAgZm9udC1zaXplOiAxOHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoKLyoqKioqKioqKioKKiAgQnJ1c2gKKi8KCi5udi1icnVzaCAuZXh0ZW50IHsKICBmaWxsLW9wYWNpdHk6IC4xMjU7CiAgc2hhcGUtcmVuZGVyaW5nOiBjcmlzcEVkZ2VzOwp9CgoKLyoqKioqKioqKioKKiAgTGVnZW5kCiovCgoubnZkMyAubnYtbGVnZW5kIC5udi1zZXJpZXMgewogIGN1cnNvcjogcG9pbnRlcjsKfQoKLm52ZDMgLm52LWxlZ2VuZCAubnYtZGlzYWJsZWQgY2lyY2xlIHsKICBmaWxsLW9wYWNpdHk6IDA7Cn0KCgovKioqKioqKioqKgoqICBBeGVzCiovCgouYXhpcyB7CiAgb3BhY2l0eTogMTsKfQoKLmF4aXMubnYtZGlzYWJsZWQgewogIG9wYWNpdHk6IDA7Cn0KCi5udmQzIC5udi1heGlzIHsKICBwb2ludGVyLWV2ZW50czpub25lOwp9CgoubnZkMyAubnYtYXhpcyBwYXRoIHsKICBmaWxsOiBub25lOwogIHN0cm9rZTogIzAwMDsKICBzdHJva2Utb3BhY2l0eTogLjc1OwogIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKfQoKLm52ZDMgLm52LWF4aXMgcGF0aC5kb21haW4gewogIHN0cm9rZS1vcGFjaXR5OiAuNzU7Cn0KCi5udmQzIC5udi1heGlzLm52LXggcGF0aC5kb21haW4gewogIHN0cm9rZS1vcGFjaXR5OiAwOwp9CgoubnZkMyAubnYtYXhpcyBsaW5lIHsKICBmaWxsOiBub25lOwogIHN0cm9rZTogI2U1ZTVlNTsKICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7Cn0KCi5udmQzIC5udi1heGlzIC56ZXJvIGxpbmUsCi8qdGhpcyBzZWxlY3RvciBtYXkgbm90IGJlIG5lY2Vzc2FyeSovIC5udmQzIC5udi1heGlzIGxpbmUuemVybyB7CiAgc3Ryb2tlLW9wYWNpdHk6IC43NTsKfQoKLm52ZDMgLm52LWF4aXMgLm52LWF4aXNNYXhNaW4gdGV4dCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5udmQzIC54ICAubnYtYXhpcyAubnYtYXhpc01heE1pbiB0ZXh0LAoubnZkMyAueDIgLm52LWF4aXMgLm52LWF4aXNNYXhNaW4gdGV4dCwKLm52ZDMgLngzIC5udi1heGlzIC5udi1heGlzTWF4TWluIHRleHQgewogIHRleHQtYW5jaG9yOiBtaWRkbGUKfQoKCi8qKioqKioqKioqCiogIEJydXNoCiovCgoubnYtYnJ1c2ggLnJlc2l6ZSBwYXRoIHsKICBmaWxsOiAjZWVlOwogIHN0cm9rZTogIzY2NjsKfQoKCi8qKioqKioqKioqCiogIEJhcnMKKi8KCi5udmQzIC5udi1iYXJzIC5uZWdhdGl2ZSByZWN0IHsKICAgIHpmaWxsOiBicm93bjsKfQoKLm52ZDMgLm52LWJhcnMgcmVjdCB7CiAgemZpbGw6IHN0ZWVsYmx1ZTsKICBmaWxsLW9wYWNpdHk6IC43NTsKCiAgdHJhbnNpdGlvbjogZmlsbC1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKICAtbW96LXRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXI7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBmaWxsLW9wYWNpdHkgMjUwbXMgbGluZWFyOwp9CgoubnZkMyAubnYtYmFycyByZWN0LmhvdmVyIHsKICBmaWxsLW9wYWNpdHk6IDE7Cn0KCi5udmQzIC5udi1iYXJzIC5ob3ZlciByZWN0IHsKICBmaWxsOiBsaWdodGJsdWU7Cn0KCi5udmQzIC5udi1iYXJzIHRleHQgewogIGZpbGw6IHJnYmEoMCwwLDAsMCk7Cn0KCi5udmQzIC5udi1iYXJzIC5ob3ZlciB0ZXh0IHsKICBmaWxsOiByZ2JhKDAsMCwwLDEpOwp9CgoKLyoqKioqKioqKioKKiAgQmFycwoqLwoKLm52ZDMgLm52LW11bHRpYmFyIC5udi1ncm91cHMgcmVjdCwKLm52ZDMgLm52LW11bHRpYmFySG9yaXpvbnRhbCAubnYtZ3JvdXBzIHJlY3QsCi5udmQzIC5udi1kaXNjcmV0ZWJhciAubnYtZ3JvdXBzIHJlY3QgewogIHN0cm9rZS1vcGFjaXR5OiAwOwoKICB0cmFuc2l0aW9uOiBmaWxsLW9wYWNpdHkgMjUwbXMgbGluZWFyOwogIC1tb3otdHJhbnNpdGlvbjogZmlsbC1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKICAtd2Via2l0LXRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXI7Cn0KCi5udmQzIC5udi1tdWx0aWJhciAubnYtZ3JvdXBzIHJlY3Q6aG92ZXIsCi5udmQzIC5udi1tdWx0aWJhckhvcml6b250YWwgLm52LWdyb3VwcyByZWN0OmhvdmVyLAoubnZkMyAubnYtZGlzY3JldGViYXIgLm52LWdyb3VwcyByZWN0OmhvdmVyIHsKICBmaWxsLW9wYWNpdHk6IDE7Cn0KCi5udmQzIC5udi1kaXNjcmV0ZWJhciAubnYtZ3JvdXBzIHRleHQsCi5udmQzIC5udi1tdWx0aWJhckhvcml6b250YWwgLm52LWdyb3VwcyB0ZXh0IHsKICBmb250LXdlaWdodDogYm9sZDsKICBmaWxsOiByZ2JhKDAsMCwwLDEpOwogIHN0cm9rZTogcmdiYSgwLDAsMCwwKTsKfQoKLyoqKioqKioqKioqCiogIFBpZSBDaGFydAoqLwoKLm52ZDMubnYtcGllIHBhdGggewogIHN0cm9rZS1vcGFjaXR5OiAwOwogIHRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXIsIHN0cm9rZS13aWR0aCAyNTBtcyBsaW5lYXIsIHN0cm9rZS1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKICAtbW96LXRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXIsIHN0cm9rZS13aWR0aCAyNTBtcyBsaW5lYXIsIHN0cm9rZS1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKICAtd2Via2l0LXRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXIsIHN0cm9rZS13aWR0aCAyNTBtcyBsaW5lYXIsIHN0cm9rZS1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKCn0KCi5udmQzLm52LXBpZSAubnYtcGllLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGZpbGw6IHJnYmEoMTksIDE5NiwgMjQ5LCAwLjU5KTsKfQoKLm52ZDMubnYtcGllIC5udi1zbGljZSB0ZXh0IHsKICBzdHJva2U6ICMwMDA7CiAgc3Ryb2tlLXdpZHRoOiAwOwp9CgoubnZkMy5udi1waWUgcGF0aCB7CiAgc3Ryb2tlOiAjZmZmOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHN0cm9rZS1vcGFjaXR5OiAxOwp9CgoubnZkMy5udi1waWUgLmhvdmVyIHBhdGggewogIGZpbGwtb3BhY2l0eTogLjc7Cn0KLm52ZDMubnYtcGllIC5udi1sYWJlbCB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KLm52ZDMubnYtcGllIC5udi1sYWJlbCByZWN0IHsKICBmaWxsLW9wYWNpdHk6IDA7CiAgc3Ryb2tlLW9wYWNpdHk6IDA7Cn0KCi8qKioqKioqKioqCiogTGluZXMKKi8KCi5udmQzIC5udi1ncm91cHMgcGF0aC5udi1saW5lIHsKICBmaWxsOiBub25lOwogIHN0cm9rZS13aWR0aDogMS41cHg7Cn0KCi5udmQzIC5udi1ncm91cHMgcGF0aC5udi1saW5lLm52LXRoaW4tbGluZSB7CiAgc3Ryb2tlLXdpZHRoOiAxcHg7Cn0KCgoubnZkMyAubnYtZ3JvdXBzIHBhdGgubnYtYXJlYSB7CiAgc3Ryb2tlOiBub25lOwp9CgoubnZkMyAubnYtbGluZS5ob3ZlciBwYXRoIHsKICBzdHJva2Utd2lkdGg6IDZweDsKfQoKLm52ZDMubnYtbGluZSAubnZkMy5udi1zY2F0dGVyIC5udi1ncm91cHMgLm52LXBvaW50IHsKICBmaWxsLW9wYWNpdHk6IDA7CiAgc3Ryb2tlLW9wYWNpdHk6IDA7Cn0KCi5udmQzLm52LXNjYXR0ZXIubnYtc2luZ2xlLXBvaW50IC5udi1ncm91cHMgLm52LXBvaW50IHsKICBmaWxsLW9wYWNpdHk6IC41ICFpbXBvcnRhbnQ7CiAgc3Ryb2tlLW9wYWNpdHk6IC41ICFpbXBvcnRhbnQ7Cn0KCgoud2l0aC10cmFuc2l0aW9ucyAubnZkMyAubnYtZ3JvdXBzIC5udi1wb2ludCB7CiAgdHJhbnNpdGlvbjogc3Ryb2tlLXdpZHRoIDI1MG1zIGxpbmVhciwgc3Ryb2tlLW9wYWNpdHkgMjUwbXMgbGluZWFyOwogIC1tb3otdHJhbnNpdGlvbjogc3Ryb2tlLXdpZHRoIDI1MG1zIGxpbmVhciwgc3Ryb2tlLW9wYWNpdHkgMjUwbXMgbGluZWFyOwogIC13ZWJraXQtdHJhbnNpdGlvbjogc3Ryb2tlLXdpZHRoIDI1MG1zIGxpbmVhciwgc3Ryb2tlLW9wYWNpdHkgMjUwbXMgbGluZWFyOwoKfQoKLm52ZDMubnYtc2NhdHRlciAubnYtZ3JvdXBzIC5udi1wb2ludC5ob3ZlciwKLm52ZDMgLm52LWdyb3VwcyAubnYtcG9pbnQuaG92ZXIgewogIHN0cm9rZS13aWR0aDogN3B4OwogIGZpbGwtb3BhY2l0eTogLjk1ICFpbXBvcnRhbnQ7CiAgc3Ryb2tlLW9wYWNpdHk6IC45NSAhaW1wb3J0YW50Owp9CgoKLm52ZDMgLm52LXBvaW50LXBhdGhzIHBhdGggewogIHN0cm9rZTogI2FhYTsKICBzdHJva2Utb3BhY2l0eTogMDsKICBmaWxsOiAjZWVlOwogIGZpbGwtb3BhY2l0eTogMDsKfQoKCgoubnZkMyAubnYtaW5kZXhMaW5lIHsKICBjdXJzb3I6IGV3LXJlc2l6ZTsKfQoKCi8qKioqKioqKioqCiogRGlzdHJpYnV0aW9uCiovCgoubnZkMyAubnYtZGlzdHJpYnV0aW9uIHsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKCi8qKioqKioqKioqCiogIFNjYXR0ZXIKKi8KCi5udmQzIC5udi1ncm91cHMgLm52LXBvaW50LmhvdmVyIHsKICBzdHJva2Utd2lkdGg6IDIwcHg7CiAgc3Ryb2tlLW9wYWNpdHk6IC41Owp9CgoubnZkMyAubnYtc2NhdHRlciAubnYtcG9pbnQuaG92ZXIgewogIGZpbGwtb3BhY2l0eTogMTsKfQoKCi8qKioqKioqKioqCiogIFN0YWNrZWQgQXJlYQoqLwoKLm52ZDMubnYtc3RhY2tlZGFyZWEgcGF0aC5udi1hcmVhIHsKICBmaWxsLW9wYWNpdHk6IC43OwogIHN0cm9rZS1vcGFjaXR5OiAwOwogIHRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXIsIHN0cm9rZS1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKICAtbW96LXRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXIsIHN0cm9rZS1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKICAtd2Via2l0LXRyYW5zaXRpb246IGZpbGwtb3BhY2l0eSAyNTBtcyBsaW5lYXIsIHN0cm9rZS1vcGFjaXR5IDI1MG1zIGxpbmVhcjsKfQoKLm52ZDMubnYtc3RhY2tlZGFyZWEgcGF0aC5udi1hcmVhLmhvdmVyIHsKICBmaWxsLW9wYWNpdHk6IC45Owp9CgoKLm52ZDMubnYtc3RhY2tlZGFyZWEgLm52LWdyb3VwcyAubnYtcG9pbnQgewogIHN0cm9rZS1vcGFjaXR5OiAwOwogIGZpbGwtb3BhY2l0eTogMDsKfQoKCi8qKioqKioqKioqCiogIExpbmUgUGx1cyBCYXIKKi8KCi5udmQzLm52LWxpbmVQbHVzQmFyIC5udi1iYXIgcmVjdCB7CiAgZmlsbC1vcGFjaXR5OiAuNzU7Cn0KCi5udmQzLm52LWxpbmVQbHVzQmFyIC5udi1iYXIgcmVjdDpob3ZlciB7CiAgZmlsbC1vcGFjaXR5OiAxOwp9CgoKLyoqKioqKioqKioKKiAgQnVsbGV0CiovCgoubnZkMy5udi1idWxsZXQgeyBmb250OiAxMHB4IHNhbnMtc2VyaWY7IH0KLm52ZDMubnYtYnVsbGV0IC5udi1tZWFzdXJlIHsgZmlsbC1vcGFjaXR5OiAuODsgfQoubnZkMy5udi1idWxsZXQgLm52LW1lYXN1cmU6aG92ZXIgeyBmaWxsLW9wYWNpdHk6IDE7IH0KLm52ZDMubnYtYnVsbGV0IC5udi1tYXJrZXIgeyBzdHJva2U6ICMwMDA7IHN0cm9rZS13aWR0aDogMnB4OyB9Ci5udmQzLm52LWJ1bGxldCAubnYtbWFya2VyVHJpYW5nbGUgeyBzdHJva2U6ICMwMDA7IGZpbGw6ICNmZmY7IHN0cm9rZS13aWR0aDogMS41cHg7IH0KLm52ZDMubnYtYnVsbGV0IC5udi10aWNrIGxpbmUgeyBzdHJva2U6ICM2NjY7IHN0cm9rZS13aWR0aDogLjVweDsgfQoubnZkMy5udi1idWxsZXQgLm52LXJhbmdlLm52LXMwIHsgZmlsbDogI2VlZTsgfQoubnZkMy5udi1idWxsZXQgLm52LXJhbmdlLm52LXMxIHsgZmlsbDogI2RkZDsgfQoubnZkMy5udi1idWxsZXQgLm52LXJhbmdlLm52LXMyIHsgZmlsbDogI2NjYzsgfQoubnZkMy5udi1idWxsZXQgLm52LXRpdGxlIHsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogYm9sZDsgfQoubnZkMy5udi1idWxsZXQgLm52LXN1YnRpdGxlIHsgZmlsbDogIzk5OTsgfQoKCi5udmQzLm52LWJ1bGxldCAubnYtcmFuZ2UgewogIGZpbGw6ICNiYWJhYmE7CiAgZmlsbC1vcGFjaXR5OiAuNDsKfQoubnZkMy5udi1idWxsZXQgLm52LXJhbmdlOmhvdmVyIHsKICBmaWxsLW9wYWNpdHk6IC43Owp9CgoKLyoqKioqKioqKioKKiBTcGFya2xpbmUKKi8KCi5udmQzLm52LXNwYXJrbGluZSBwYXRoIHsKICBmaWxsOiBub25lOwp9CgoubnZkMy5udi1zcGFya2xpbmVwbHVzIGcubnYtaG92ZXJWYWx1ZSB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5udmQzLm52LXNwYXJrbGluZXBsdXMgLm52LWhvdmVyVmFsdWUgbGluZSB7CiAgc3Ryb2tlOiAjMzMzOwogIHN0cm9rZS13aWR0aDogMS41cHg7CiB9CgoubnZkMy5udi1zcGFya2xpbmVwbHVzLAoubnZkMy5udi1zcGFya2xpbmVwbHVzIGcgewogIHBvaW50ZXItZXZlbnRzOiBhbGw7Cn0KCi5udmQzIC5udi1ob3ZlckFyZWEgewogIGZpbGwtb3BhY2l0eTogMDsKICBzdHJva2Utb3BhY2l0eTogMDsKfQoKLm52ZDMubnYtc3BhcmtsaW5lcGx1cyAubnYteFZhbHVlLAoubnZkMy5udi1zcGFya2xpbmVwbHVzIC5udi15VmFsdWUgewogIHN0cm9rZS13aWR0aDogMDsKICBmb250LXNpemU6IC45ZW07CiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQoKLm52ZDMubnYtc3BhcmtsaW5lcGx1cyAubnYteVZhbHVlIHsKICBzdHJva2U6ICNmNjY7Cn0KCi5udmQzLm52LXNwYXJrbGluZXBsdXMgLm52LW1heFZhbHVlIHsKICBzdHJva2U6ICMyY2EwMmM7CiAgZmlsbDogIzJjYTAyYzsKfQoKLm52ZDMubnYtc3BhcmtsaW5lcGx1cyAubnYtbWluVmFsdWUgewogIHN0cm9rZTogI2Q2MjcyODsKICBmaWxsOiAjZDYyNzI4Owp9CgoubnZkMy5udi1zcGFya2xpbmVwbHVzIC5udi1jdXJyZW50VmFsdWUgewogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGZvbnQtc2l6ZTogMS4xZW07Cn0KCi8qKioqKioqKioqCiogaGlzdG9yaWNhbCBzdG9jawoqLwoKLm52ZDMubnYtb2hsY0JhciAubnYtdGlja3MgLm52LXRpY2sgewogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoubnZkMy5udi1vaGxjQmFyIC5udi10aWNrcyAubnYtdGljay5ob3ZlciB7CiAgc3Ryb2tlLXdpZHRoOiAycHg7Cn0KCi5udmQzLm52LW9obGNCYXIgLm52LXRpY2tzIC5udi10aWNrLnBvc2l0aXZlIHsKICAgIHN0cm9rZTogIzJjYTAyYzsKfQoKLm52ZDMubnYtb2hsY0JhciAubnYtdGlja3MgLm52LXRpY2submVnYXRpdmUgewogICAgc3Ryb2tlOiAjZDYyNzI4Owp9CgoubnZkMy5udi1oaXN0b3JpY2FsU3RvY2tDaGFydCAubnYtYXhpcyAubnYtYXhpc2xhYmVsIHsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLm52ZDMubnYtaGlzdG9yaWNhbFN0b2NrQ2hhcnQgLm52LWRyYWdUYXJnZXQgewogIGZpbGwtb3BhY2l0eTogMDsKICBzdHJva2U6IG5vbmU7CiAgY3Vyc29yOiBtb3ZlOwp9CgoubnZkMyAubnYtYnJ1c2ggLmV4dGVudCB7CiAgZmlsbC1vcGFjaXR5OiAwICFpbXBvcnRhbnQ7Cn0KCi5udmQzIC5udi1icnVzaEJhY2tncm91bmQgcmVjdCB7CiAgc3Ryb2tlOiAjMDAwOwogIHN0cm9rZS13aWR0aDogLjQ7CiAgZmlsbDogI2ZmZjsKICBmaWxsLW9wYWNpdHk6IC43Owp9CgoKLyoqKioqKioqKioKKiBQYXJhbGxlbCBDb29yZGluYXRlcwoqLwoKLm52ZDMgLmJhY2tncm91bmQgcGF0aCB7CiAgZmlsbDogbm9uZTsKICBzdHJva2U6ICNFRUU7CiAgc3Ryb2tlLW9wYWNpdHk6IC40OwogIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKfQoKLm52ZDMgLmZvcmVncm91bmQgcGF0aCB7CiAgZmlsbDogbm9uZTsKICBzdHJva2Utb3BhY2l0eTogLjc7Cn0KCi5udmQzIC5icnVzaCAuZXh0ZW50IHsKICBmaWxsLW9wYWNpdHk6IC4zOwogIHN0cm9rZTogI2ZmZjsKICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7Cn0KCi5udmQzIC5heGlzIGxpbmUsIC5heGlzIHBhdGggewogIGZpbGw6IG5vbmU7CiAgc3Ryb2tlOiAjMDAwOwogIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKfQoKLm52ZDMgLmF4aXMgdGV4dCB7CiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsKfQoKLyoqKioKSW50ZXJhY3RpdmUgTGF5ZXIKKi8KLm52ZDMgLm52LWludGVyYWN0aXZlR3VpZGVMaW5lIHsKICBwb2ludGVyLWV2ZW50czpub25lOwp9Ci5udmQzIGxpbmUubnYtZ3VpZGVsaW5lIHsKICBzdHJva2U6ICNjY2M7Cn0=">
<link rel="stylesheet" href="data:text/css;base64,Lm52ZDMgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIHdpZHRoOiA4MDBweDsKICAgIGhlaWdodDogNDAwcHg7CiAgICAvKiBiYWNrZ3JvdW5kOiAjZWVlOyAqLwp9ICAK">
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2MS44LjIganF1ZXJ5LmNvbSB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLw0KKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBwLmVhY2goYS5zcGxpdChzKSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifWZ1bmN0aW9uIEooYSxjLGQpe2lmKGQ9PT1iJiZhLm5vZGVUeXBlPT09MSl7dmFyIGU9ImRhdGEtIitjLnJlcGxhY2UoSSwiLSQxIikudG9Mb3dlckNhc2UoKTtkPWEuZ2V0QXR0cmlidXRlKGUpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIil7dHJ5e2Q9ZD09PSJ0cnVlIj8hMDpkPT09ImZhbHNlIj8hMTpkPT09Im51bGwiP251bGw6K2QrIiI9PT1kPytkOkgudGVzdChkKT9wLnBhcnNlSlNPTihkKTpkfWNhdGNoKGYpe31wLmRhdGEoYSxjLGQpfWVsc2UgZD1ifXJldHVybiBkfWZ1bmN0aW9uIEsoYSl7dmFyIGI7Zm9yKGIgaW4gYSl7aWYoYj09PSJkYXRhIiYmcC5pc0VtcHR5T2JqZWN0KGFbYl0pKWNvbnRpbnVlO2lmKGIhPT0idG9KU09OIilyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBiYSgpe3JldHVybiExfWZ1bmN0aW9uIGJiKCl7cmV0dXJuITB9ZnVuY3Rpb24gYmgoYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5ub2RlVHlwZT09PTExfWZ1bmN0aW9uIGJpKGEsYil7ZG8gYT1hW2JdO3doaWxlKGEmJmEubm9kZVR5cGUhPT0xKTtyZXR1cm4gYX1mdW5jdGlvbiBiaihhLGIsYyl7Yj1ifHwwO2lmKHAuaXNGdW5jdGlvbihiKSlyZXR1cm4gcC5ncmVwKGEsZnVuY3Rpb24oYSxkKXt2YXIgZT0hIWIuY2FsbChhLGQsYSk7cmV0dXJuIGU9PT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gcC5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gYT09PWI9PT1jfSk7aWYodHlwZW9mIGI9PSJzdHJpbmciKXt2YXIgZD1wLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlVHlwZT09PTF9KTtpZihiZS50ZXN0KGIpKXJldHVybiBwLmZpbHRlcihiLGQsIWMpO2I9cC5maWx0ZXIoYixkKX1yZXR1cm4gcC5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gcC5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gYmsoYSl7dmFyIGI9Ymwuc3BsaXQoInwiKSxjPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2lmKGMuY3JlYXRlRWxlbWVudCl3aGlsZShiLmxlbmd0aCljLmNyZWF0ZUVsZW1lbnQoYi5wb3AoKSk7cmV0dXJuIGN9ZnVuY3Rpb24gYkMoYSxiKXtyZXR1cm4gYS5nZXRFbGVtZW50c0J5VGFnTmFtZShiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChiKSl9ZnVuY3Rpb24gYkQoYSxiKXtpZihiLm5vZGVUeXBlIT09MXx8IXAuaGFzRGF0YShhKSlyZXR1cm47dmFyIGMsZCxlLGY9cC5fZGF0YShhKSxnPXAuX2RhdGEoYixmKSxoPWYuZXZlbnRzO2lmKGgpe2RlbGV0ZSBnLmhhbmRsZSxnLmV2ZW50cz17fTtmb3IoYyBpbiBoKWZvcihkPTAsZT1oW2NdLmxlbmd0aDtkPGU7ZCsrKXAuZXZlbnQuYWRkKGIsYyxoW2NdW2RdKX1nLmRhdGEmJihnLmRhdGE9cC5leHRlbmQoe30sZy5kYXRhKSl9ZnVuY3Rpb24gYkUoYSxiKXt2YXIgYztpZihiLm5vZGVUeXBlIT09MSlyZXR1cm47Yi5jbGVhckF0dHJpYnV0ZXMmJmIuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1dGVzKGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGM9PT0ib2JqZWN0Ij8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLHAuc3VwcG9ydC5odG1sNUNsb25lJiZhLmlubmVySFRNTCYmIXAudHJpbShiLmlubmVySFRNTCkmJihiLmlubmVySFRNTD1hLmlubmVySFRNTCkpOmM9PT0iaW5wdXQiJiZidi50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOmM9PT0ib3B0aW9uIj9iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOmM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIj9iLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZTpjPT09InNjcmlwdCImJmIudGV4dCE9PWEudGV4dCYmKGIudGV4dD1hLnRleHQpLGIucmVtb3ZlQXR0cmlidXRlKHAuZXhwYW5kbyl9ZnVuY3Rpb24gYkYoYSl7cmV0dXJuIHR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIj9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9InVuZGVmaW5lZCI/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gYkcoYSl7YnYudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIGJZKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1iVy5sZW5ndGg7d2hpbGUoZS0tKXtiPWJXW2VdK2M7aWYoYiBpbiBhKXJldHVybiBifXJldHVybiBkfWZ1bmN0aW9uIGJaKGEsYil7cmV0dXJuIGE9Ynx8YSxwLmNzcyhhLCJkaXNwbGF5Iik9PT0ibm9uZSJ8fCFwLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX1mdW5jdGlvbiBiJChhLGIpe3ZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmb3IoO2Y8ZztmKyspe2M9YVtmXTtpZighYy5zdHlsZSljb250aW51ZTtlW2ZdPXAuX2RhdGEoYywib2xkZGlzcGxheSIpLGI/KCFlW2ZdJiZjLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSImJihjLnN0eWxlLmRpc3BsYXk9IiIpLGMuc3R5bGUuZGlzcGxheT09PSIiJiZiWihjKSYmKGVbZl09cC5fZGF0YShjLCJvbGRkaXNwbGF5IixjYyhjLm5vZGVOYW1lKSkpKTooZD1iSChjLCJkaXNwbGF5IiksIWVbZl0mJmQhPT0ibm9uZSImJnAuX2RhdGEoYywib2xkZGlzcGxheSIsZCkpfWZvcihmPTA7ZjxnO2YrKyl7Yz1hW2ZdO2lmKCFjLnN0eWxlKWNvbnRpbnVlO2lmKCFifHxjLnN0eWxlLmRpc3BsYXk9PT0ibm9uZSJ8fGMuc3R5bGUuZGlzcGxheT09PSIiKWMuc3R5bGUuZGlzcGxheT1iP2VbZl18fCIiOiJub25lIn1yZXR1cm4gYX1mdW5jdGlvbiBiXyhhLGIsYyl7dmFyIGQ9YlAuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMV0tKGN8fDApKSsoZFsyXXx8InB4Iik6Yn1mdW5jdGlvbiBjYShhLGIsYyxkKXt2YXIgZT1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OmI9PT0id2lkdGgiPzE6MCxmPTA7Zm9yKDtlPDQ7ZSs9MiljPT09Im1hcmdpbiImJihmKz1wLmNzcyhhLGMrYlZbZV0sITApKSxkPyhjPT09ImNvbnRlbnQiJiYoZi09cGFyc2VGbG9hdChiSChhLCJwYWRkaW5nIitiVltlXSkpfHwwKSxjIT09Im1hcmdpbiImJihmLT1wYXJzZUZsb2F0KGJIKGEsImJvcmRlciIrYlZbZV0rIldpZHRoIikpfHwwKSk6KGYrPXBhcnNlRmxvYXQoYkgoYSwicGFkZGluZyIrYlZbZV0pKXx8MCxjIT09InBhZGRpbmciJiYoZis9cGFyc2VGbG9hdChiSChhLCJib3JkZXIiK2JWW2VdKyJXaWR0aCIpKXx8MCkpO3JldHVybiBmfWZ1bmN0aW9uIGNiKGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9ITAsZj1wLnN1cHBvcnQuYm94U2l6aW5nJiZwLmNzcyhhLCJib3hTaXppbmciKT09PSJib3JkZXItYm94IjtpZihkPD0wfHxkPT1udWxsKXtkPWJIKGEsYik7aWYoZDwwfHxkPT1udWxsKWQ9YS5zdHlsZVtiXTtpZihiUS50ZXN0KGQpKXJldHVybiBkO2U9ZiYmKHAuc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZXx8ZD09PWEuc3R5bGVbYl0pLGQ9cGFyc2VGbG9hdChkKXx8MH1yZXR1cm4gZCtjYShhLGIsY3x8KGY/ImJvcmRlciI6ImNvbnRlbnQiKSxlKSsicHgifWZ1bmN0aW9uIGNjKGEpe2lmKGJTW2FdKXJldHVybiBiU1thXTt2YXIgYj1wKCI8IithKyI+IikuYXBwZW5kVG8oZS5ib2R5KSxjPWIuY3NzKCJkaXNwbGF5Iik7Yi5yZW1vdmUoKTtpZihjPT09Im5vbmUifHxjPT09IiIpe2JJPWUuYm9keS5hcHBlbmRDaGlsZChiSXx8cC5leHRlbmQoZS5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSx7ZnJhbWVCb3JkZXI6MCx3aWR0aDowLGhlaWdodDowfSkpO2lmKCFiSnx8IWJJLmNyZWF0ZUVsZW1lbnQpYko9KGJJLmNvbnRlbnRXaW5kb3d8fGJJLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsYkoud3JpdGUoIjwhZG9jdHlwZSBodG1sPjxodG1sPjxib2R5PiIpLGJKLmNsb3NlKCk7Yj1iSi5ib2R5LmFwcGVuZENoaWxkKGJKLmNyZWF0ZUVsZW1lbnQoYSkpLGM9YkgoYiwiZGlzcGxheSIpLGUuYm9keS5yZW1vdmVDaGlsZChiSSl9cmV0dXJuIGJTW2FdPWMsY31mdW5jdGlvbiBjaShhLGIsYyxkKXt2YXIgZTtpZihwLmlzQXJyYXkoYikpcC5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxjZS50ZXN0KGEpP2QoYSxlKTpjaShhKyJbIisodHlwZW9mIGU9PSJvYmplY3QiP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZwLnR5cGUoYik9PT0ib2JqZWN0Iilmb3IoZSBpbiBiKWNpKGErIlsiK2UrIl0iLGJbZV0sYyxkKTtlbHNlIGQoYSxiKX1mdW5jdGlvbiBjeihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXt0eXBlb2YgYiE9InN0cmluZyImJihjPWIsYj0iKiIpO3ZhciBkLGUsZixnPWIudG9Mb3dlckNhc2UoKS5zcGxpdChzKSxoPTAsaT1nLmxlbmd0aDtpZihwLmlzRnVuY3Rpb24oYykpZm9yKDtoPGk7aCsrKWQ9Z1toXSxmPS9eXCsvLnRlc3QoZCksZiYmKGQ9ZC5zdWJzdHIoMSl8fCIqIiksZT1hW2RdPWFbZF18fFtdLGVbZj8idW5zaGlmdCI6InB1c2giXShjKX19ZnVuY3Rpb24gY0EoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoLGk9YVtmXSxqPTAsaz1pP2kubGVuZ3RoOjAsbD1hPT09Y3Y7Zm9yKDtqPGsmJihsfHwhaCk7aisrKWg9aVtqXShjLGQsZSksdHlwZW9mIGg9PSJzdHJpbmciJiYoIWx8fGdbaF0/aD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGgpLGg9Y0EoYSxjLGQsZSxoLGcpKSk7cmV0dXJuKGx8fCFoKSYmIWdbIioiXSYmKGg9Y0EoYSxjLGQsZSwiKiIsZykpLGh9ZnVuY3Rpb24gY0IoYSxjKXt2YXIgZCxlLGY9cC5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZltkXT9hOmV8fChlPXt9KSlbZF09Y1tkXSk7ZSYmcC5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBjQyhhLGMsZCl7dmFyIGUsZixnLGgsaT1hLmNvbnRlbnRzLGo9YS5kYXRhVHlwZXMsaz1hLnJlc3BvbnNlRmllbGRzO2ZvcihmIGluIGspZiBpbiBkJiYoY1trW2ZdXT1kW2ZdKTt3aGlsZShqWzBdPT09IioiKWouc2hpZnQoKSxlPT09YiYmKGU9YS5taW1lVHlwZXx8Yy5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIikpO2lmKGUpZm9yKGYgaW4gaSlpZihpW2ZdJiZpW2ZdLnRlc3QoZSkpe2oudW5zaGlmdChmKTticmVha31pZihqWzBdaW4gZClnPWpbMF07ZWxzZXtmb3IoZiBpbiBkKXtpZighalswXXx8YS5jb252ZXJ0ZXJzW2YrIiAiK2pbMF1dKXtnPWY7YnJlYWt9aHx8KGg9Zil9Zz1nfHxofWlmKGcpcmV0dXJuIGchPT1qWzBdJiZqLnVuc2hpZnQoZyksZFtnXX1mdW5jdGlvbiBjRChhLGIpe3ZhciBjLGQsZSxmLGc9YS5kYXRhVHlwZXMuc2xpY2UoKSxoPWdbMF0saT17fSxqPTA7YS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSk7aWYoZ1sxXSlmb3IoYyBpbiBhLmNvbnZlcnRlcnMpaVtjLnRvTG93ZXJDYXNlKCldPWEuY29udmVydGVyc1tjXTtmb3IoO2U9Z1srK2pdOylpZihlIT09IioiKXtpZihoIT09IioiJiZoIT09ZSl7Yz1pW2grIiAiK2VdfHxpWyIqICIrZV07aWYoIWMpZm9yKGQgaW4gaSl7Zj1kLnNwbGl0KCIgIik7aWYoZlsxXT09PWUpe2M9aVtoKyIgIitmWzBdXXx8aVsiKiAiK2ZbMF1dO2lmKGMpe2M9PT0hMD9jPWlbZF06aVtkXSE9PSEwJiYoZT1mWzBdLGcuc3BsaWNlKGotLSwwLGUpKTticmVha319fWlmKGMhPT0hMClpZihjJiZhWyJ0aHJvd3MiXSliPWMoYik7ZWxzZSB0cnl7Yj1jKGIpfWNhdGNoKGspe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmM/azoiTm8gY29udmVyc2lvbiBmcm9tICIraCsiIHRvICIrZX19fWg9ZX1yZXR1cm57c3RhdGU6InN1Y2Nlc3MiLGRhdGE6Yn19ZnVuY3Rpb24gY0woKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY00oKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjVSgpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y049Yn0sMCksY049cC5ub3coKX1mdW5jdGlvbiBjVihhLGIpe3AuZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9KGNUW2JdfHxbXSkuY29uY2F0KGNUWyIqIl0pLGU9MCxmPWQubGVuZ3RoO2Zvcig7ZTxmO2UrKylpZihkW2VdLmNhbGwoYSxiLGMpKXJldHVybn0pfWZ1bmN0aW9uIGNXKGEsYixjKXt2YXIgZCxlPTAsZj0wLGc9Y1MubGVuZ3RoLGg9cC5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7dmFyIGI9Y058fGNVKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD0xLShjL2ouZHVyYXRpb258fDApLGU9MCxmPWoudHdlZW5zLmxlbmd0aDtmb3IoO2U8ZjtlKyspai50d2VlbnNbZV0ucnVuKGQpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixkLGNdKSxkPDEmJmY/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOnAuZXh0ZW5kKHt9LGIpLG9wdHM6cC5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpjTnx8Y1UoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMsZCl7dmFyIGU9cC5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGUpLGV9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7Zm9yKDtjPGQ7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRoKGEsW2osYl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztjWChrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtmb3IoO2U8ZztlKyspe2Q9Y1NbZV0uY2FsbChqLGEsayxqLm9wdHMpO2lmKGQpcmV0dXJuIGR9cmV0dXJuIGNWKGosaykscC5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaikscC5meC50aW1lcihwLmV4dGVuZChpLHthbmltOmoscXVldWU6ai5vcHRzLnF1ZXVlLGVsZW06YX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1mdW5jdGlvbiBjWChhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSl7ZD1wLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLHAuaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9cC5jc3NIb29rc1tkXTtpZihnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX19ZnVuY3Rpb24gY1koYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD10aGlzLG09YS5zdHlsZSxuPXt9LG89W10scT1hLm5vZGVUeXBlJiZiWihhKTtjLnF1ZXVlfHwoaj1wLl9xdWV1ZUhvb2tzKGEsImZ4Iiksai51bnF1ZXVlZD09bnVsbCYmKGoudW5xdWV1ZWQ9MCxrPWouZW1wdHkuZmlyZSxqLmVtcHR5LmZpcmU9ZnVuY3Rpb24oKXtqLnVucXVldWVkfHxrKCl9KSxqLnVucXVldWVkKyssbC5hbHdheXMoZnVuY3Rpb24oKXtsLmFsd2F5cyhmdW5jdGlvbigpe2oudW5xdWV1ZWQtLSxwLnF1ZXVlKGEsImZ4IikubGVuZ3RofHxqLmVtcHR5LmZpcmUoKX0pfSkpLGEubm9kZVR5cGU9PT0xJiYoImhlaWdodCJpbiBifHwid2lkdGgiaW4gYikmJihjLm92ZXJmbG93PVttLm92ZXJmbG93LG0ub3ZlcmZsb3dYLG0ub3ZlcmZsb3dZXSxwLmNzcyhhLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmcC5jc3MoYSwiZmxvYXQiKT09PSJub25lIiYmKCFwLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dHx8Y2MoYS5ub2RlTmFtZSk9PT0iaW5saW5lIj9tLmRpc3BsYXk9ImlubGluZS1ibG9jayI6bS56b29tPTEpKSxjLm92ZXJmbG93JiYobS5vdmVyZmxvdz0iaGlkZGVuIixwLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2Nrc3x8bC5kb25lKGZ1bmN0aW9uKCl7bS5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLG0ub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0sbS5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKXtmPWJbZF07aWYoY1AuZXhlYyhmKSl7ZGVsZXRlIGJbZF07aWYoZj09PShxPyJoaWRlIjoic2hvdyIpKWNvbnRpbnVlO28ucHVzaChkKX19Zz1vLmxlbmd0aDtpZihnKXtoPXAuX2RhdGEoYSwiZnhzaG93Iil8fHAuX2RhdGEoYSwiZnhzaG93Iix7fSkscT9wKGEpLnNob3coKTpsLmRvbmUoZnVuY3Rpb24oKXtwKGEpLmhpZGUoKX0pLGwuZG9uZShmdW5jdGlvbigpe3ZhciBiO3AucmVtb3ZlRGF0YShhLCJmeHNob3ciLCEwKTtmb3IoYiBpbiBuKXAuc3R5bGUoYSxiLG5bYl0pfSk7Zm9yKGQ9MDtkPGc7ZCsrKWU9b1tkXSxpPWwuY3JlYXRlVHdlZW4oZSxxP2hbZV06MCksbltlXT1oW2VdfHxwLnN0eWxlKGEsZSksZSBpbiBofHwoaFtlXT1pLnN0YXJ0LHEmJihpLmVuZD1pLnN0YXJ0LGkuc3RhcnQ9ZT09PSJ3aWR0aCJ8fGU9PT0iaGVpZ2h0Ij8xOjApKX19ZnVuY3Rpb24gY1ooYSxiLGMsZCxlKXtyZXR1cm4gbmV3IGNaLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9ZnVuY3Rpb24gYyQoYSxiKXt2YXIgYyxkPXtoZWlnaHQ6YX0sZT0wO2I9Yj8xOjA7Zm9yKDtlPDQ7ZSs9Mi1iKWM9YlZbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBkYShhKXtyZXR1cm4gcC5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfXZhciBjLGQsZT1hLmRvY3VtZW50LGY9YS5sb2NhdGlvbixnPWEubmF2aWdhdG9yLGg9YS5qUXVlcnksaT1hLiQsaj1BcnJheS5wcm90b3R5cGUucHVzaCxrPUFycmF5LnByb3RvdHlwZS5zbGljZSxsPUFycmF5LnByb3RvdHlwZS5pbmRleE9mLG09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyxuPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbz1TdHJpbmcucHJvdG90eXBlLnRyaW0scD1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgcC5mbi5pbml0KGEsYixjKX0scT0vW1wtK10/KD86XGQqXC58KVxkKyg/OltlRV1bXC0rXT9cZCt8KS8uc291cmNlLHI9L1xTLyxzPS9ccysvLHQ9L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLHU9L14oPzpbXiM8XSooPFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLHY9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyx3PS9eW1xdLDp7fVxzXSokLyx4PS8oPzpefDp8LCkoPzpccypcWykrL2cseT0vXFwoPzpbIlxcXC9iZm5ydF18dVtcZGEtZkEtRl17NH0pL2csej0vIlteIlxcXHJcbl0qInx0cnVlfGZhbHNlfG51bGx8LT8oPzpcZFxkKlwufClcZCsoPzpbZUVdW1wtK10/XGQrfCkvZyxBPS9eLW1zLS8sQj0vLShbXGRhLXpdKS9naSxDPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrIiIpLnRvVXBwZXJDYXNlKCl9LEQ9ZnVuY3Rpb24oKXtlLmFkZEV2ZW50TGlzdGVuZXI/KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsRCwhMSkscC5yZWFkeSgpKTplLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiJiYoZS5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixEKSxwLnJlYWR5KCkpfSxFPXt9O3AuZm49cC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnAsaW5pdDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoLGk7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSlyZXR1cm4gdGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXM7aWYodHlwZW9mIGE9PSJzdHJpbmciKXthLmNoYXJBdCgwKT09PSI8IiYmYS5jaGFyQXQoYS5sZW5ndGgtMSk9PT0iPiImJmEubGVuZ3RoPj0zP2Y9W251bGwsYSxudWxsXTpmPXUuZXhlYyhhKTtpZihmJiYoZlsxXXx8IWMpKXtpZihmWzFdKXJldHVybiBjPWMgaW5zdGFuY2VvZiBwP2NbMF06YyxpPWMmJmMubm9kZVR5cGU/Yy5vd25lckRvY3VtZW50fHxjOmUsYT1wLnBhcnNlSFRNTChmWzFdLGksITApLHYudGVzdChmWzFdKSYmcC5pc1BsYWluT2JqZWN0KGMpJiZ0aGlzLmF0dHIuY2FsbChhLGMsITApLHAubWVyZ2UodGhpcyxhKTtnPWUuZ2V0RWxlbWVudEJ5SWQoZlsyXSk7aWYoZyYmZy5wYXJlbnROb2RlKXtpZihnLmlkIT09ZlsyXSlyZXR1cm4gZC5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1nfXJldHVybiB0aGlzLmNvbnRleHQ9ZSx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4hY3x8Yy5qcXVlcnk/KGN8fGQpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihjKS5maW5kKGEpfXJldHVybiBwLmlzRnVuY3Rpb24oYSk/ZC5yZWFkeShhKTooYS5zZWxlY3RvciE9PWImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCkscC5tYWtlQXJyYXkoYSx0aGlzKSl9LHNlbGVjdG9yOiIiLGpxdWVyeToiMS44LjIiLGxlbmd0aDowLHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gay5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1wLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gZC5wcmV2T2JqZWN0PXRoaXMsZC5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Quc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGQuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpLGR9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcC5lYWNoKHRoaXMsYSxiKX0scmVhZHk6ZnVuY3Rpb24oYSl7cmV0dXJuIHAucmVhZHkucHJvbWlzZSgpLmRvbmUoYSksdGhpc30sZXE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9K2EsYT09PS0xP3RoaXMuc2xpY2UoYSk6dGhpcy5zbGljZShhLGErMSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGsuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsay5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhwLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6aixzb3J0OltdLnNvcnQsc3BsaWNlOltdLnNwbGljZX0scC5mbi5pbml0LnByb3RvdHlwZT1wLmZuLHAuZXh0ZW5kPXAuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYyxkLGUsZixnLGg9YXJndW1lbnRzWzBdfHx7fSxpPTEsaj1hcmd1bWVudHMubGVuZ3RoLGs9ITE7dHlwZW9mIGg9PSJib29sZWFuIiYmKGs9aCxoPWFyZ3VtZW50c1sxXXx8e30saT0yKSx0eXBlb2YgaCE9Im9iamVjdCImJiFwLmlzRnVuY3Rpb24oaCkmJihoPXt9KSxqPT09aSYmKGg9dGhpcywtLWkpO2Zvcig7aTxqO2krKylpZigoYT1hcmd1bWVudHNbaV0pIT1udWxsKWZvcihjIGluIGEpe2Q9aFtjXSxlPWFbY107aWYoaD09PWUpY29udGludWU7ayYmZSYmKHAuaXNQbGFpbk9iamVjdChlKXx8KGY9cC5pc0FycmF5KGUpKSk/KGY/KGY9ITEsZz1kJiZwLmlzQXJyYXkoZCk/ZDpbXSk6Zz1kJiZwLmlzUGxhaW5PYmplY3QoZCk/ZDp7fSxoW2NdPXAuZXh0ZW5kKGssZyxlKSk6ZSE9PWImJihoW2NdPWUpfXJldHVybiBofSxwLmV4dGVuZCh7bm9Db25mbGljdDpmdW5jdGlvbihiKXtyZXR1cm4gYS4kPT09cCYmKGEuJD1pKSxiJiZhLmpRdWVyeT09PXAmJihhLmpRdWVyeT1oKSxwfSxpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP3AucmVhZHlXYWl0Kys6cC5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMD8tLXAucmVhZHlXYWl0OnAuaXNSZWFkeSlyZXR1cm47aWYoIWUuYm9keSlyZXR1cm4gc2V0VGltZW91dChwLnJlYWR5LDEpO3AuaXNSZWFkeT0hMDtpZihhIT09ITAmJi0tcC5yZWFkeVdhaXQ+MClyZXR1cm47ZC5yZXNvbHZlV2l0aChlLFtwXSkscC5mbi50cmlnZ2VyJiZwKGUpLnRyaWdnZXIoInJlYWR5Iikub2ZmKCJyZWFkeSIpfSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBwLnR5cGUoYSk9PT0iZnVuY3Rpb24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBwLnR5cGUoYSk9PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbCYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChhKSkmJmlzRmluaXRlKGEpfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP1N0cmluZyhhKTpFW20uY2FsbChhKV18fCJvYmplY3QifSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe2lmKCFhfHxwLnR5cGUoYSkhPT0ib2JqZWN0Inx8YS5ub2RlVHlwZXx8cC5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIW4uY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhbi5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9dmFyIGQ7Zm9yKGQgaW4gYSk7cmV0dXJuIGQ9PT1ifHxuLmNhbGwoYSxkKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LHBhcnNlSFRNTDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIWF8fHR5cGVvZiBhIT0ic3RyaW5nIj9udWxsOih0eXBlb2YgYj09ImJvb2xlYW4iJiYoYz1iLGI9MCksYj1ifHxlLChkPXYuZXhlYyhhKSk/W2IuY3JlYXRlRWxlbWVudChkWzFdKV06KGQ9cC5idWlsZEZyYWdtZW50KFthXSxiLGM/bnVsbDpbXSkscC5tZXJnZShbXSwoZC5jYWNoZWFibGU/cC5jbG9uZShkLmZyYWdtZW50KTpkLmZyYWdtZW50KS5jaGlsZE5vZGVzKSkpfSxwYXJzZUpTT046ZnVuY3Rpb24oYil7aWYoIWJ8fHR5cGVvZiBiIT0ic3RyaW5nIilyZXR1cm4gbnVsbDtiPXAudHJpbShiKTtpZihhLkpTT04mJmEuSlNPTi5wYXJzZSlyZXR1cm4gYS5KU09OLnBhcnNlKGIpO2lmKHcudGVzdChiLnJlcGxhY2UoeSwiQCIpLnJlcGxhY2UoeiwiXSIpLnJlcGxhY2UoeCwiIikpKXJldHVybihuZXcgRnVuY3Rpb24oInJldHVybiAiK2IpKSgpO3AuZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0scGFyc2VYTUw6ZnVuY3Rpb24oYyl7dmFyIGQsZTtpZighY3x8dHlwZW9mIGMhPSJzdHJpbmciKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZT1uZXcgRE9NUGFyc2VyLGQ9ZS5wYXJzZUZyb21TdHJpbmcoYywidGV4dC94bWwiKSk6KGQ9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxkLmFzeW5jPSJmYWxzZSIsZC5sb2FkWE1MKGMpKX1jYXRjaChmKXtkPWJ9cmV0dXJuKCFkfHwhZC5kb2N1bWVudEVsZW1lbnR8fGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmcC5lcnJvcigiSW52YWxpZCBYTUw6ICIrYyksZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZyLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoQSwibXMtIikucmVwbGFjZShCLEMpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGY9MCxnPWEubGVuZ3RoLGg9Zz09PWJ8fHAuaXNGdW5jdGlvbihhKTtpZihkKXtpZihoKXtmb3IoZSBpbiBhKWlmKGMuYXBwbHkoYVtlXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtmPGc7KWlmKGMuYXBwbHkoYVtmKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihoKXtmb3IoZSBpbiBhKWlmKGMuY2FsbChhW2VdLGUsYVtlXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZjxnOylpZihjLmNhbGwoYVtmXSxmLGFbZisrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpvJiYhby5jYWxsKCLvu7/CoCIpP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOm8uY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UodCwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9Ynx8W107cmV0dXJuIGEhPW51bGwmJihjPXAudHlwZShhKSxhLmxlbmd0aD09bnVsbHx8Yz09PSJzdHJpbmcifHxjPT09ImZ1bmN0aW9uInx8Yz09PSJyZWdleHAifHxwLmlzV2luZG93KGEpP2ouY2FsbChkLGEpOnAubWVyZ2UoZCxhKSksZH0saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYil7aWYobClyZXR1cm4gbC5jYWxsKGIsYSxjKTtkPWIubGVuZ3RoLGM9Yz9jPDA/TWF0aC5tYXgoMCxkK2MpOmM6MDtmb3IoO2M8ZDtjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxjKXt2YXIgZD1jLmxlbmd0aCxlPWEubGVuZ3RoLGY9MDtpZih0eXBlb2YgZD09Im51bWJlciIpZm9yKDtmPGQ7ZisrKWFbZSsrXT1jW2ZdO2Vsc2Ugd2hpbGUoY1tmXSE9PWIpYVtlKytdPWNbZisrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoO2M9ISFjO2Zvcig7ZjxnO2YrKylkPSEhYihhW2ZdLGYpLGMhPT1kJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9YSBpbnN0YW5jZW9mIHB8fGkhPT1iJiZ0eXBlb2YgaT09Im51bWJlciImJihpPjAmJmFbMF0mJmFbaS0xXXx8aT09PTB8fHAuaXNBcnJheShhKSk7aWYoailmb3IoO2g8aTtoKyspZT1jKGFbaF0saCxkKSxlIT1udWxsJiYoZ1tnLmxlbmd0aF09ZSk7ZWxzZSBmb3IoZiBpbiBhKWU9YyhhW2ZdLGYsZCksZSE9bnVsbCYmKGdbZy5sZW5ndGhdPWUpO3JldHVybiBnLmNvbmNhdC5hcHBseShbXSxnKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZSxmO3JldHVybiB0eXBlb2YgYz09InN0cmluZyImJihkPWFbY10sYz1hLGE9ZCkscC5pc0Z1bmN0aW9uKGEpPyhlPWsuY2FsbChhcmd1bWVudHMsMiksZj1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGMsZS5jb25jYXQoay5jYWxsKGFyZ3VtZW50cykpKX0sZi5ndWlkPWEuZ3VpZD1hLmd1aWR8fHAuZ3VpZCsrLGYpOmJ9LGFjY2VzczpmdW5jdGlvbihhLGMsZCxlLGYsZyxoKXt2YXIgaSxqPWQ9PW51bGwsaz0wLGw9YS5sZW5ndGg7aWYoZCYmdHlwZW9mIGQ9PSJvYmplY3QiKXtmb3IoayBpbiBkKXAuYWNjZXNzKGEsYyxrLGRba10sMSxnLGUpO2Y9MX1lbHNlIGlmKGUhPT1iKXtpPWg9PT1iJiZwLmlzRnVuY3Rpb24oZSksaiYmKGk/KGk9YyxjPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gaS5jYWxsKHAoYSksYyl9KTooYy5jYWxsKGEsZSksYz1udWxsKSk7aWYoYylmb3IoO2s8bDtrKyspYyhhW2tdLGQsaT9lLmNhbGwoYVtrXSxrLGMoYVtrXSxkKSk6ZSxoKTtmPTF9cmV0dXJuIGY/YTpqP2MuY2FsbChhKTpsP2MoYVswXSxkKTpnfSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19KSxwLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYil7aWYoIWQpe2Q9cC5EZWZlcnJlZCgpO2lmKGUucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpc2V0VGltZW91dChwLnJlYWR5LDEpO2Vsc2UgaWYoZS5hZGRFdmVudExpc3RlbmVyKWUuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsRCwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixwLnJlYWR5LCExKTtlbHNle2UuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsRCksYS5hdHRhY2hFdmVudCgib25sb2FkIixwLnJlYWR5KTt2YXIgYz0hMTt0cnl7Yz1hLmZyYW1lRWxlbWVudD09bnVsbCYmZS5kb2N1bWVudEVsZW1lbnR9Y2F0Y2goZil7fWMmJmMuZG9TY3JvbGwmJmZ1bmN0aW9uIGcoKXtpZighcC5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGcsNTApfXAucmVhZHkoKX19KCl9fXJldHVybiBkLnByb21pc2UoYil9LHAuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe0VbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSksYz1wKGUpO3ZhciBGPXt9O3AuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9dHlwZW9mIGE9PSJzdHJpbmciP0ZbYV18fEcoYSk6cC5leHRlbmQoe30sYSk7dmFyIGMsZCxlLGYsZyxoLGk9W10saj0hYS5vbmNlJiZbXSxrPWZ1bmN0aW9uKGIpe2M9YS5tZW1vcnkmJmIsZD0hMCxoPWZ8fDAsZj0wLGc9aS5sZW5ndGgsZT0hMDtmb3IoO2kmJmg8ZztoKyspaWYoaVtoXS5hcHBseShiWzBdLGJbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2M9ITE7YnJlYWt9ZT0hMSxpJiYoaj9qLmxlbmd0aCYmayhqLnNoaWZ0KCkpOmM/aT1bXTpsLmRpc2FibGUoKSl9LGw9e2FkZDpmdW5jdGlvbigpe2lmKGkpe3ZhciBiPWkubGVuZ3RoOyhmdW5jdGlvbiBkKGIpe3AuZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGU9cC50eXBlKGMpO2U9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhbC5oYXMoYykpP2kucHVzaChjKTpjJiZjLmxlbmd0aCYmZSE9PSJzdHJpbmciJiZkKGMpfSl9KShhcmd1bWVudHMpLGU/Zz1pLmxlbmd0aDpjJiYoZj1iLGsoYykpfXJldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gaSYmcC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbihhLGIpe3ZhciBjO3doaWxlKChjPXAuaW5BcnJheShiLGksYykpPi0xKWkuc3BsaWNlKGMsMSksZSYmKGM8PWcmJmctLSxjPD1oJiZoLS0pfSksdGhpc30saGFzOmZ1bmN0aW9uKGEpe3JldHVybiBwLmluQXJyYXkoYSxpKT4tMX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaT1bXSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9aj1jPWIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sbG9jazpmdW5jdGlvbigpe3JldHVybiBqPWIsY3x8bC5kaXNhYmxlKCksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIWp9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9Ynx8W10sYj1bYSxiLnNsaWNlP2Iuc2xpY2UoKTpiXSxpJiYoIWR8fGopJiYoZT9qLnB1c2goYik6ayhiKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBsLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBsfSxwLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLHAuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIscC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIscC5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBwLkRlZmVycmVkKGZ1bmN0aW9uKGMpe3AuZWFjaChiLGZ1bmN0aW9uKGIsZCl7dmFyIGY9ZFswXSxnPWFbYl07ZVtkWzFdXShwLmlzRnVuY3Rpb24oZyk/ZnVuY3Rpb24oKXt2YXIgYT1nLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZwLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZisiV2l0aCJdKHRoaXM9PT1lP2M6dGhpcyxbYV0pfTpjW2ZdKX0pLGE9bnVsbH0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gYSE9bnVsbD9wLmV4dGVuZChhLGQpOmR9fSxlPXt9O3JldHVybiBkLnBpcGU9ZC50aGVuLHAuZWFjaChiLGZ1bmN0aW9uKGEsZil7dmFyIGc9ZlsyXSxoPWZbM107ZFtmWzFdXT1nLmFkZCxoJiZnLmFkZChmdW5jdGlvbigpe2M9aH0sYlthXjFdWzJdLmRpc2FibGUsYlsyXVsyXS5sb2NrKSxlW2ZbMF1dPWcuZmlyZSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWsuY2FsbChhcmd1bWVudHMpLGQ9Yy5sZW5ndGgsZT1kIT09MXx8YSYmcC5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZDowLGY9ZT09PTE/YTpwLkRlZmVycmVkKCksZz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9rLmNhbGwoYXJndW1lbnRzKTpkLGM9PT1oP2Yubm90aWZ5V2l0aChiLGMpOi0tZXx8Zi5yZXNvbHZlV2l0aChiLGMpfX0saCxpLGo7aWYoZD4xKXtoPW5ldyBBcnJheShkKSxpPW5ldyBBcnJheShkKSxqPW5ldyBBcnJheShkKTtmb3IoO2I8ZDtiKyspY1tiXSYmcC5pc0Z1bmN0aW9uKGNbYl0ucHJvbWlzZSk/Y1tiXS5wcm9taXNlKCkuZG9uZShnKGIsaixjKSkuZmFpbChmLnJlamVjdCkucHJvZ3Jlc3MoZyhiLGksaCkpOi0tZX1yZXR1cm4gZXx8Zi5yZXNvbHZlV2l0aChqLGMpLGYucHJvbWlzZSgpfX0pLHAuc3VwcG9ydD1mdW5jdGlvbigpe3ZhciBiLGMsZCxmLGcsaCxpLGosayxsLG0sbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uc2V0QXR0cmlidXRlKCJjbGFzc05hbWUiLCJ0Iiksbi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsYz1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIiksZD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sZC5zdHlsZS5jc3NUZXh0PSJ0b3A6MXB4O2Zsb2F0OmxlZnQ7b3BhY2l0eTouNSI7aWYoIWN8fCFjLmxlbmd0aClyZXR1cm57fTtmPWUuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZz1mLmFwcGVuZENoaWxkKGUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGg9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxiPXtsZWFkaW5nV2hpdGVzcGFjZTpuLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0zLHRib2R5OiFuLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhbi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovdG9wLy50ZXN0KGQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpkLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5Oi9eMC41Ly50ZXN0KGQuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFkLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246aC52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6Zy5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6bi5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWUuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZTplLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLGJveE1vZGVsOmUuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IixzdWJtaXRCdWJibGVzOiEwLGNoYW5nZUJ1YmJsZXM6ITAsZm9jdXNpbkJ1YmJsZXM6ITEsZGVsZXRlRXhwYW5kbzohMCxub0Nsb25lRXZlbnQ6ITAsaW5saW5lQmxvY2tOZWVkc0xheW91dDohMSxzaHJpbmtXcmFwQmxvY2tzOiExLHJlbGlhYmxlTWFyZ2luUmlnaHQ6ITAsYm94U2l6aW5nUmVsaWFibGU6ITAscGl4ZWxQb3NpdGlvbjohMX0saC5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNrZWQ9aC5jbG9uZU5vZGUoITApLmNoZWNrZWQsZi5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFnLmRpc2FibGVkO3RyeXtkZWxldGUgbi50ZXN0fWNhdGNoKG8pe2IuZGVsZXRlRXhwYW5kbz0hMX0hbi5hZGRFdmVudExpc3RlbmVyJiZuLmF0dGFjaEV2ZW50JiZuLmZpcmVFdmVudCYmKG4uYXR0YWNoRXZlbnQoIm9uY2xpY2siLG09ZnVuY3Rpb24oKXtiLm5vQ2xvbmVFdmVudD0hMX0pLG4uY2xvbmVOb2RlKCEwKS5maXJlRXZlbnQoIm9uY2xpY2siKSxuLmRldGFjaEV2ZW50KCJvbmNsaWNrIixtKSksaD1lLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksaC52YWx1ZT0idCIsaC5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGIucmFkaW9WYWx1ZT1oLnZhbHVlPT09InQiLGguc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGguc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLG4uYXBwZW5kQ2hpbGQoaCksaT1lLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxpLmFwcGVuZENoaWxkKG4ubGFzdENoaWxkKSxiLmNoZWNrQ2xvbmU9aS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsYi5hcHBlbmRDaGVja2VkPWguY2hlY2tlZCxpLnJlbW92ZUNoaWxkKGgpLGkuYXBwZW5kQ2hpbGQobik7aWYobi5hdHRhY2hFdmVudClmb3IoayBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWo9Im9uIitrLGw9aiBpbiBuLGx8fChuLnNldEF0dHJpYnV0ZShqLCJyZXR1cm47IiksbD10eXBlb2YgbltqXT09ImZ1bmN0aW9uIiksYltrKyJCdWJibGVzIl09bDtyZXR1cm4gcChmdW5jdGlvbigpe3ZhciBjLGQsZixnLGg9InBhZGRpbmc6MDttYXJnaW46MDtib3JkZXI6MDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjsiLGk9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO2lmKCFpKXJldHVybjtjPWUuY3JlYXRlRWxlbWVudCgiZGl2IiksYy5zdHlsZS5jc3NUZXh0PSJ2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOnN0YXRpYzt0b3A6MDttYXJnaW4tdG9wOjFweCIsaS5pbnNlcnRCZWZvcmUoYyxpLmZpcnN0Q2hpbGQpLGQ9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxjLmFwcGVuZENoaWxkKGQpLGQuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIiksZlswXS5zdHlsZS5jc3NUZXh0PSJwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lIixsPWZbMF0ub2Zmc2V0SGVpZ2h0PT09MCxmWzBdLnN0eWxlLmRpc3BsYXk9IiIsZlsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixiLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cz1sJiZmWzBdLm9mZnNldEhlaWdodD09PTAsZC5pbm5lckhUTUw9IiIsZC5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7cGFkZGluZzoxcHg7Ym9yZGVyOjFweDtkaXNwbGF5OmJsb2NrO3dpZHRoOjRweDttYXJnaW4tdG9wOjElO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxJTsiLGIuYm94U2l6aW5nPWQub2Zmc2V0V2lkdGg9PT00LGIuZG9lc05vdEluY2x1ZGVNYXJnaW5JbkJvZHlPZmZzZXQ9aS5vZmZzZXRUb3AhPT0xLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGIucGl4ZWxQb3NpdGlvbj0oYS5nZXRDb21wdXRlZFN0eWxlKGQsbnVsbCl8fHt9KS50b3AhPT0iMSUiLGIuYm94U2l6aW5nUmVsaWFibGU9KGEuZ2V0Q29tcHV0ZWRTdHlsZShkLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aD09PSI0cHgiLGc9ZS5jcmVhdGVFbGVtZW50KCJkaXYiKSxnLnN0eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PWgsZy5zdHlsZS5tYXJnaW5SaWdodD1nLnN0eWxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLGQuYXBwZW5kQ2hpbGQoZyksYi5yZWxpYWJsZU1hcmdpblJpZ2h0PSFwYXJzZUZsb2F0KChhLmdldENvbXB1dGVkU3R5bGUoZyxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSksdHlwZW9mIGQuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihkLmlubmVySFRNTD0iIixkLnN0eWxlLmNzc1RleHQ9aCsid2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pvb206MSIsYi5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWQub2Zmc2V0V2lkdGg9PT0zLGQuc3R5bGUuZGlzcGxheT0iYmxvY2siLGQuc3R5bGUub3ZlcmZsb3c9InZpc2libGUiLGQuaW5uZXJIVE1MPSI8ZGl2PjwvZGl2PiIsZC5maXJzdENoaWxkLnN0eWxlLndpZHRoPSI1cHgiLGIuc2hyaW5rV3JhcEJsb2Nrcz1kLm9mZnNldFdpZHRoIT09MyxjLnN0eWxlLnpvb209MSksaS5yZW1vdmVDaGlsZChjKSxjPWQ9Zj1nPW51bGx9KSxpLnJlbW92ZUNoaWxkKG4pLGM9ZD1mPWc9aD1pPW49bnVsbCxifSgpO3ZhciBIPS8oPzpce1tcc1xTXSpcfXxcW1tcc1xTXSpcXSkkLyxJPS8oW0EtWl0pL2c7cC5leHRlbmQoe2NhY2hlOnt9LGRlbGV0ZWRJZHM6W10sdXVpZDowLGV4cGFuZG86ImpRdWVyeSIrKHAuZm4uanF1ZXJ5K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG5vRGF0YTp7ZW1iZWQ6ITAsb2JqZWN0OiJjbHNpZDpEMjdDREI2RS1BRTZELTExY2YtOTZCOC00NDQ1NTM1NDAwMDAiLGFwcGxldDohMH0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP3AuY2FjaGVbYVtwLmV4cGFuZG9dXTphW3AuZXhwYW5kb10sISFhJiYhSyhhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCxlKXtpZighcC5hY2NlcHREYXRhKGEpKXJldHVybjt2YXIgZixnLGg9cC5leHBhbmRvLGk9dHlwZW9mIGM9PSJzdHJpbmciLGo9YS5ub2RlVHlwZSxrPWo/cC5jYWNoZTphLGw9aj9hW2hdOmFbaF0mJmg7aWYoKCFsfHwha1tsXXx8IWUmJiFrW2xdLmRhdGEpJiZpJiZkPT09YilyZXR1cm47bHx8KGo/YVtoXT1sPXAuZGVsZXRlZElkcy5wb3AoKXx8cC5ndWlkKys6bD1oKSxrW2xdfHwoa1tsXT17fSxqfHwoa1tsXS50b0pTT049cC5ub29wKSk7aWYodHlwZW9mIGM9PSJvYmplY3QifHx0eXBlb2YgYz09ImZ1bmN0aW9uIillP2tbbF09cC5leHRlbmQoa1tsXSxjKTprW2xdLmRhdGE9cC5leHRlbmQoa1tsXS5kYXRhLGMpO3JldHVybiBmPWtbbF0sZXx8KGYuZGF0YXx8KGYuZGF0YT17fSksZj1mLmRhdGEpLGQhPT1iJiYoZltwLmNhbWVsQ2FzZShjKV09ZCksaT8oZz1mW2NdLGc9PW51bGwmJihnPWZbcC5jYW1lbENhc2UoYyldKSk6Zz1mLGd9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiLGMpe2lmKCFwLmFjY2VwdERhdGEoYSkpcmV0dXJuO3ZhciBkLGUsZixnPWEubm9kZVR5cGUsaD1nP3AuY2FjaGU6YSxpPWc/YVtwLmV4cGFuZG9dOnAuZXhwYW5kbztpZighaFtpXSlyZXR1cm47aWYoYil7ZD1jP2hbaV06aFtpXS5kYXRhO2lmKGQpe3AuaXNBcnJheShiKXx8KGIgaW4gZD9iPVtiXTooYj1wLmNhbWVsQ2FzZShiKSxiIGluIGQ/Yj1bYl06Yj1iLnNwbGl0KCIgIikpKTtmb3IoZT0wLGY9Yi5sZW5ndGg7ZTxmO2UrKylkZWxldGUgZFtiW2VdXTtpZighKGM/SzpwLmlzRW1wdHlPYmplY3QpKGQpKXJldHVybn19aWYoIWMpe2RlbGV0ZSBoW2ldLmRhdGE7aWYoIUsoaFtpXSkpcmV0dXJufWc/cC5jbGVhbkRhdGEoW2FdLCEwKTpwLnN1cHBvcnQuZGVsZXRlRXhwYW5kb3x8aCE9aC53aW5kb3c/ZGVsZXRlIGhbaV06aFtpXT1udWxsfSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAuZGF0YShhLGIsYywhMCl9LGFjY2VwdERhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZSYmcC5ub0RhdGFbYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4hYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn19KSxwLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGMpe3ZhciBkLGUsZixnLGgsaT10aGlzWzBdLGo9MCxrPW51bGw7aWYoYT09PWIpe2lmKHRoaXMubGVuZ3RoKXtrPXAuZGF0YShpKTtpZihpLm5vZGVUeXBlPT09MSYmIXAuX2RhdGEoaSwicGFyc2VkQXR0cnMiKSl7Zj1pLmF0dHJpYnV0ZXM7Zm9yKGg9Zi5sZW5ndGg7ajxoO2orKylnPWZbal0ubmFtZSxnLmluZGV4T2YoImRhdGEtIil8fChnPXAuY2FtZWxDYXNlKGcuc3Vic3RyaW5nKDUpKSxKKGksZyxrW2ddKSk7cC5fZGF0YShpLCJwYXJzZWRBdHRycyIsITApfX1yZXR1cm4ga31yZXR1cm4gdHlwZW9mIGE9PSJvYmplY3QiP3RoaXMuZWFjaChmdW5jdGlvbigpe3AuZGF0YSh0aGlzLGEpfSk6KGQ9YS5zcGxpdCgiLiIsMiksZFsxXT1kWzFdPyIuIitkWzFdOiIiLGU9ZFsxXSsiISIscC5hY2Nlc3ModGhpcyxmdW5jdGlvbihjKXtpZihjPT09YilyZXR1cm4gaz10aGlzLnRyaWdnZXJIYW5kbGVyKCJnZXREYXRhIitlLFtkWzBdXSksaz09PWImJmkmJihrPXAuZGF0YShpLGEpLGs9SihpLGEsaykpLGs9PT1iJiZkWzFdP3RoaXMuZGF0YShkWzBdKTprO2RbMV09Yyx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1wKHRoaXMpO2IudHJpZ2dlckhhbmRsZXIoInNldERhdGEiK2UsZCkscC5kYXRhKHRoaXMsYSxjKSxiLnRyaWdnZXJIYW5kbGVyKCJjaGFuZ2VEYXRhIitlLGQpfSl9LG51bGwsYyxhcmd1bWVudHMubGVuZ3RoPjEsbnVsbCwhMSkpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtwLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLHAuZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSlyZXR1cm4gYj0oYnx8ImZ4IikrInF1ZXVlIixkPXAuX2RhdGEoYSxiKSxjJiYoIWR8fHAuaXNBcnJheShjKT9kPXAuX2RhdGEoYSxiLHAubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8fFtdfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPXAucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9cC5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXtwLmRlcXVldWUoYSxiKX07ZT09PSJpbnByb2dyZXNzIiYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKGI9PT0iZngiJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gcC5fZGF0YShhLGMpfHxwLl9kYXRhKGEsYyx7ZW1wdHk6cC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7cC5yZW1vdmVEYXRhKGEsYisicXVldWUiLCEwKSxwLnJlbW92ZURhdGEoYSxjLCEwKX0pfSl9fSkscC5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9MjtyZXR1cm4gdHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9ImZ4IixkLS0pLGFyZ3VtZW50cy5sZW5ndGg8ZD9wLnF1ZXVlKHRoaXNbMF0sYSk6Yz09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1wLnF1ZXVlKHRoaXMsYSxjKTtwLl9xdWV1ZUhvb2tzKHRoaXMsYSksYT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJnAuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3AuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9cC5meD9wLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT0xLGY9cC5EZWZlcnJlZCgpLGc9dGhpcyxoPXRoaXMubGVuZ3RoLGk9ZnVuY3Rpb24oKXstLWV8fGYucmVzb2x2ZVdpdGgoZyxbZ10pfTt0eXBlb2YgYSE9InN0cmluZyImJihjPWEsYT1iKSxhPWF8fCJmeCI7d2hpbGUoaC0tKWQ9cC5fZGF0YShnW2hdLGErInF1ZXVlSG9va3MiKSxkJiZkLmVtcHR5JiYoZSsrLGQuZW1wdHkuYWRkKGkpKTtyZXR1cm4gaSgpLGYucHJvbWlzZShjKX19KTt2YXIgTCxNLE4sTz0vW1x0XHJcbl0vZyxQPS9cci9nLFE9L14oPzpidXR0b258aW5wdXQpJC9pLFI9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksUz0vXmEoPzpyZWF8KSQvaSxUPS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLFU9cC5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZTtwLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBwLmFjY2Vzcyh0aGlzLHAuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7cC5yZW1vdmVBdHRyKHRoaXMsYSl9KX0scHJvcDpmdW5jdGlvbihhLGIpe3JldHVybiBwLmFjY2Vzcyh0aGlzLHAucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1wLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09YixkZWxldGUgdGhpc1thXX1jYXRjaChjKXt9fSl9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKHAuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3AodGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmciKXtiPWEuc3BsaXQocyk7Zm9yKGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspe2U9dGhpc1tjXTtpZihlLm5vZGVUeXBlPT09MSlpZighZS5jbGFzc05hbWUmJmIubGVuZ3RoPT09MSllLmNsYXNzTmFtZT1hO2Vsc2V7Zj0iICIrZS5jbGFzc05hbWUrIiAiO2ZvcihnPTAsaD1iLmxlbmd0aDtnPGg7ZysrKWYuaW5kZXhPZigiICIrYltnXSsiICIpPDAmJihmKz1iW2ddKyIgIik7ZS5jbGFzc05hbWU9cC50cmltKGYpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxmLGcsaCxpO2lmKHAuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3AodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHMpO2ZvcihoPTAsaT10aGlzLmxlbmd0aDtoPGk7aCsrKXtlPXRoaXNbaF07aWYoZS5ub2RlVHlwZT09PTEmJmUuY2xhc3NOYW1lKXtkPSgiICIrZS5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKE8sIiAiKTtmb3IoZj0wLGc9Yy5sZW5ndGg7ZjxnO2YrKyl3aGlsZShkLmluZGV4T2YoIiAiK2NbZl0rIiAiKT49MClkPWQucmVwbGFjZSgiICIrY1tmXSsiICIsIiAiKTtlLmNsYXNzTmFtZT1hP3AudHJpbShkKToiIn19fXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLGQ9dHlwZW9mIGI9PSJib29sZWFuIjtyZXR1cm4gcC5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihjKXtwKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihjPT09InN0cmluZyIpe3ZhciBlLGY9MCxnPXAodGhpcyksaD1iLGk9YS5zcGxpdChzKTt3aGlsZShlPWlbZisrXSloPWQ/aDohZy5oYXNDbGFzcyhlKSxnW2g/ImFkZENsYXNzIjoicmVtb3ZlQ2xhc3MiXShlKX1lbHNlIGlmKGM9PT0idW5kZWZpbmVkInx8Yz09PSJib29sZWFuIil0aGlzLmNsYXNzTmFtZSYmcC5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpwLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiJ9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGI9IiAiK2ErIiAiLGM9MCxkPXRoaXMubGVuZ3RoO2Zvcig7YzxkO2MrKylpZih0aGlzW2NdLm5vZGVUeXBlPT09MSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoTywiICIpLmluZGV4T2YoYik+PTApcmV0dXJuITA7cmV0dXJuITF9LHZhbDpmdW5jdGlvbihhKXt2YXIgYyxkLGUsZj10aGlzWzBdO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtpZihmKXJldHVybiBjPXAudmFsSG9va3NbZi50eXBlXXx8cC52YWxIb29rc1tmLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGMmJiJnZXQiaW4gYyYmKGQ9Yy5nZXQoZiwidmFsdWUiKSkhPT1iP2Q6KGQ9Zi52YWx1ZSx0eXBlb2YgZD09InN0cmluZyI/ZC5yZXBsYWNlKFAsIiIpOmQ9PW51bGw/IiI6ZCk7cmV0dXJufXJldHVybiBlPXAuaXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oZCl7dmFyIGYsZz1wKHRoaXMpO2lmKHRoaXMubm9kZVR5cGUhPT0xKXJldHVybjtlP2Y9YS5jYWxsKHRoaXMsZCxnLnZhbCgpKTpmPWEsZj09bnVsbD9mPSIiOnR5cGVvZiBmPT0ibnVtYmVyIj9mKz0iIjpwLmlzQXJyYXkoZikmJihmPXAubWFwKGYsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6YSsiIn0pKSxjPXAudmFsSG9va3NbdGhpcy50eXBlXXx8cC52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldO2lmKCFjfHwhKCJzZXQiaW4gYyl8fGMuc2V0KHRoaXMsZiwidmFsdWUiKT09PWIpdGhpcy52YWx1ZT1mfSl9fSkscC5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZj1hLnNlbGVjdGVkSW5kZXgsZz1bXSxoPWEub3B0aW9ucyxpPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihmPDApcmV0dXJuIG51bGw7Yz1pP2Y6MCxkPWk/ZisxOmgubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1oW2NdO2lmKGUuc2VsZWN0ZWQmJihwLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFwLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9cChlKS52YWwoKTtpZihpKXJldHVybiBiO2cucHVzaChiKX19cmV0dXJuIGkmJiFnLmxlbmd0aCYmaC5sZW5ndGg/cChoW2ZdKS52YWwoKTpnfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1wLm1ha2VBcnJheShiKTtyZXR1cm4gcChhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1wLmluQXJyYXkocCh0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKSxjfX19LGF0dHJGbjp7fSxhdHRyOmZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmLGcsaCxpPWEubm9kZVR5cGU7aWYoIWF8fGk9PT0zfHxpPT09OHx8aT09PTIpcmV0dXJuO2lmKGUmJnAuaXNGdW5jdGlvbihwLmZuW2NdKSlyZXR1cm4gcChhKVtjXShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBwLnByb3AoYSxjLGQpO2g9aSE9PTF8fCFwLmlzWE1MRG9jKGEpLGgmJihjPWMudG9Mb3dlckNhc2UoKSxnPXAuYXR0ckhvb2tzW2NdfHwoVC50ZXN0KGMpP006TCkpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7cC5yZW1vdmVBdHRyKGEsYyk7cmV0dXJufXJldHVybiBnJiYic2V0ImluIGcmJmgmJihmPWcuc2V0KGEsZCxjKSkhPT1iP2Y6KGEuc2V0QXR0cmlidXRlKGMsZCsiIiksZCl9cmV0dXJuIGcmJiJnZXQiaW4gZyYmaCYmKGY9Zy5nZXQoYSxjKSkhPT1udWxsP2Y6KGY9YS5nZXRBdHRyaWJ1dGUoYyksZj09PW51bGw/YjpmKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9MDtpZihiJiZhLm5vZGVUeXBlPT09MSl7ZD1iLnNwbGl0KHMpO2Zvcig7ZzxkLmxlbmd0aDtnKyspZT1kW2ddLGUmJihjPXAucHJvcEZpeFtlXXx8ZSxmPVQudGVzdChlKSxmfHxwLmF0dHIoYSxlLCIiKSxhLnJlbW92ZUF0dHJpYnV0ZShVP2U6YyksZiYmYyBpbiBhJiYoYVtjXT0hMSkpfX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZihRLnRlc3QoYS5ub2RlTmFtZSkmJmEucGFyZW50Tm9kZSlwLmVycm9yKCJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQiKTtlbHNlIGlmKCFwLnN1cHBvcnQucmFkaW9WYWx1ZSYmYj09PSJyYWRpbyImJnAubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX0sdmFsdWU6e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBMJiZwLm5vZGVOYW1lKGEsImJ1dHRvbiIpP0wuZ2V0KGEsYik6YiBpbiBhP2EudmFsdWU6bnVsbH0sc2V0OmZ1bmN0aW9uKGEsYixjKXtpZihMJiZwLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiBMLnNldChhLGIsYyk7YS52YWx1ZT1ifX19LHByb3BGaXg6e3RhYmluZGV4OiJ0YWJJbmRleCIscmVhZG9ubHk6InJlYWRPbmx5IiwiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIixtYXhsZW5ndGg6Im1heExlbmd0aCIsY2VsbHNwYWNpbmc6ImNlbGxTcGFjaW5nIixjZWxscGFkZGluZzoiY2VsbFBhZGRpbmciLHJvd3NwYW46InJvd1NwYW4iLGNvbHNwYW46ImNvbFNwYW4iLHVzZW1hcDoidXNlTWFwIixmcmFtZWJvcmRlcjoiZnJhbWVCb3JkZXIiLGNvbnRlbnRlZGl0YWJsZToiY29udGVudEVkaXRhYmxlIn0scHJvcDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZixnLGg9YS5ub2RlVHlwZTtpZighYXx8aD09PTN8fGg9PT04fHxoPT09MilyZXR1cm47cmV0dXJuIGc9aCE9PTF8fCFwLmlzWE1MRG9jKGEpLGcmJihjPXAucHJvcEZpeFtjXXx8YyxmPXAucHJvcEhvb2tzW2NdKSxkIT09Yj9mJiYic2V0ImluIGYmJihlPWYuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmYmJiJnZXQiaW4gZiYmKGU9Zi5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZSgidGFiaW5kZXgiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/cGFyc2VJbnQoYy52YWx1ZSwxMCk6Ui50ZXN0KGEubm9kZU5hbWUpfHxTLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOmJ9fX19KSxNPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZCxlPXAucHJvcChhLGMpO3JldHVybiBlPT09ITB8fHR5cGVvZiBlIT0iYm9vbGVhbiImJihkPWEuZ2V0QXR0cmlidXRlTm9kZShjKSkmJmQubm9kZVZhbHVlIT09ITE/Yy50b0xvd2VyQ2FzZSgpOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGI9PT0hMT9wLnJlbW92ZUF0dHIoYSxjKTooZD1wLnByb3BGaXhbY118fGMsZCBpbiBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKSxjfX0sVXx8KE49e25hbWU6ITAsaWQ6ITAsY29vcmRzOiEwfSxMPXAudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZDtyZXR1cm4gZD1hLmdldEF0dHJpYnV0ZU5vZGUoYyksZCYmKE5bY10/ZC52YWx1ZSE9PSIiOmQuc3BlY2lmaWVkKT9kLnZhbHVlOmJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHwoZD1lLmNyZWF0ZUF0dHJpYnV0ZShjKSxhLnNldEF0dHJpYnV0ZU5vZGUoZCkpLGQudmFsdWU9YisiIn19LHAuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtwLmF0dHJIb29rc1tiXT1wLmV4dGVuZChwLmF0dHJIb29rc1tiXSx7c2V0OmZ1bmN0aW9uKGEsYyl7aWYoYz09PSIiKXJldHVybiBhLnNldEF0dHJpYnV0ZShiLCJhdXRvIiksY319KX0pLHAuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OkwuZ2V0LHNldDpmdW5jdGlvbihhLGIsYyl7Yj09PSIiJiYoYj0iZmFsc2UiKSxMLnNldChhLGIsYyl9fSkscC5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxwLmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGMpe3AuYXR0ckhvb2tzW2NdPXAuZXh0ZW5kKHAuYXR0ckhvb2tzW2NdLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gZD09PW51bGw/YjpkfX0pfSkscC5zdXBwb3J0LnN0eWxlfHwocC5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fGJ9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9YisiIn19KSxwLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChwLnByb3BIb29rcy5zZWxlY3RlZD1wLmV4dGVuZChwLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pKSxwLnN1cHBvcnQuZW5jdHlwZXx8KHAucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLHAuc3VwcG9ydC5jaGVja09ufHxwLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtwLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLHAuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe3AudmFsSG9va3NbdGhpc109cC5leHRlbmQocC52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGEsYil7aWYocC5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9cC5pbkFycmF5KHAoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgVj0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksVz0vXihbXlwuXSp8KSg/OlwuKC4rKXwpJC8sWD0vKD86Xnxccylob3ZlcihcLlxTK3wpXGIvLFk9L15rZXkvLFo9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLCQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLF89ZnVuY3Rpb24oYSl7cmV0dXJuIHAuZXZlbnQuc3BlY2lhbC5ob3Zlcj9hOmEucmVwbGFjZShYLCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIil9O3AuZXZlbnQ9e2FkZDpmdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnLGgsaSxqLGssbCxtLG4sbyxxLHI7aWYoYS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04fHwhY3x8IWR8fCEoZz1wLl9kYXRhKGEpKSlyZXR1cm47ZC5oYW5kbGVyJiYobz1kLGQ9by5oYW5kbGVyLGY9by5zZWxlY3RvciksZC5ndWlkfHwoZC5ndWlkPXAuZ3VpZCsrKSxpPWcuZXZlbnRzLGl8fChnLmV2ZW50cz1pPXt9KSxoPWcuaGFuZGxlLGh8fChnLmhhbmRsZT1oPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgcCE9InVuZGVmaW5lZCImJighYXx8cC5ldmVudC50cmlnZ2VyZWQhPT1hLnR5cGUpP3AuZXZlbnQuZGlzcGF0Y2guYXBwbHkoaC5lbGVtLGFyZ3VtZW50cyk6Yn0saC5lbGVtPWEpLGM9cC50cmltKF8oYykpLnNwbGl0KCIgIik7Zm9yKGo9MDtqPGMubGVuZ3RoO2orKyl7az1XLmV4ZWMoY1tqXSl8fFtdLGw9a1sxXSxtPShrWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCkscj1wLmV2ZW50LnNwZWNpYWxbbF18fHt9LGw9KGY/ci5kZWxlZ2F0ZVR5cGU6ci5iaW5kVHlwZSl8fGwscj1wLmV2ZW50LnNwZWNpYWxbbF18fHt9LG49cC5leHRlbmQoe3R5cGU6bCxvcmlnVHlwZTprWzFdLGRhdGE6ZSxoYW5kbGVyOmQsZ3VpZDpkLmd1aWQsc2VsZWN0b3I6ZixuZWVkc0NvbnRleHQ6ZiYmcC5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGYpLG5hbWVzcGFjZTptLmpvaW4oIi4iKX0sbykscT1pW2xdO2lmKCFxKXtxPWlbbF09W10scS5kZWxlZ2F0ZUNvdW50PTA7aWYoIXIuc2V0dXB8fHIuc2V0dXAuY2FsbChhLGUsbSxoKT09PSExKWEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobCxoLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbCxoKX1yLmFkZCYmKHIuYWRkLmNhbGwoYSxuKSxuLmhhbmRsZXIuZ3VpZHx8KG4uaGFuZGxlci5ndWlkPWQuZ3VpZCkpLGY/cS5zcGxpY2UocS5kZWxlZ2F0ZUNvdW50KyssMCxuKTpxLnB1c2gobikscC5ldmVudC5nbG9iYWxbbF09ITB9YT1udWxsfSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scSxyPXAuaGFzRGF0YShhKSYmcC5fZGF0YShhKTtpZighcnx8IShtPXIuZXZlbnRzKSlyZXR1cm47Yj1wLnRyaW0oXyhifHwiIikpLnNwbGl0KCIgIik7Zm9yKGY9MDtmPGIubGVuZ3RoO2YrKyl7Zz1XLmV4ZWMoYltmXSl8fFtdLGg9aT1nWzFdLGo9Z1syXTtpZighaCl7Zm9yKGggaW4gbSlwLmV2ZW50LnJlbW92ZShhLGgrYltmXSxjLGQsITApO2NvbnRpbnVlfW49cC5ldmVudC5zcGVjaWFsW2hdfHx7fSxoPShkP24uZGVsZWdhdGVUeXBlOm4uYmluZFR5cGUpfHxoLG89bVtoXXx8W10saz1vLmxlbmd0aCxqPWo/bmV3IFJlZ0V4cCgiKF58XFwuKSIrai5zcGxpdCgiLiIpLnNvcnQoKS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsO2ZvcihsPTA7bDxvLmxlbmd0aDtsKyspcT1vW2xdLChlfHxpPT09cS5vcmlnVHlwZSkmJighY3x8Yy5ndWlkPT09cS5ndWlkKSYmKCFqfHxqLnRlc3QocS5uYW1lc3BhY2UpKSYmKCFkfHxkPT09cS5zZWxlY3Rvcnx8ZD09PSIqKiImJnEuc2VsZWN0b3IpJiYoby5zcGxpY2UobC0tLDEpLHEuc2VsZWN0b3ImJm8uZGVsZWdhdGVDb3VudC0tLG4ucmVtb3ZlJiZuLnJlbW92ZS5jYWxsKGEscSkpO28ubGVuZ3RoPT09MCYmayE9PW8ubGVuZ3RoJiYoKCFuLnRlYXJkb3dufHxuLnRlYXJkb3duLmNhbGwoYSxqLHIuaGFuZGxlKT09PSExKSYmcC5yZW1vdmVFdmVudChhLGgsci5oYW5kbGUpLGRlbGV0ZSBtW2hdKX1wLmlzRW1wdHlPYmplY3QobSkmJihkZWxldGUgci5oYW5kbGUscC5yZW1vdmVEYXRhKGEsImV2ZW50cyIsITApKX0sY3VzdG9tRXZlbnQ6e2dldERhdGE6ITAsc2V0RGF0YTohMCxjaGFuZ2VEYXRhOiEwfSx0cmlnZ2VyOmZ1bmN0aW9uKGMsZCxmLGcpe2lmKCFmfHxmLm5vZGVUeXBlIT09MyYmZi5ub2RlVHlwZSE9PTgpe3ZhciBoLGksaixrLGwsbSxuLG8scSxyLHM9Yy50eXBlfHxjLHQ9W107aWYoJC50ZXN0KHMrcC5ldmVudC50cmlnZ2VyZWQpKXJldHVybjtzLmluZGV4T2YoIiEiKT49MCYmKHM9cy5zbGljZSgwLC0xKSxpPSEwKSxzLmluZGV4T2YoIi4iKT49MCYmKHQ9cy5zcGxpdCgiLiIpLHM9dC5zaGlmdCgpLHQuc29ydCgpKTtpZigoIWZ8fHAuZXZlbnQuY3VzdG9tRXZlbnRbc10pJiYhcC5ldmVudC5nbG9iYWxbc10pcmV0dXJuO2M9dHlwZW9mIGM9PSJvYmplY3QiP2NbcC5leHBhbmRvXT9jOm5ldyBwLkV2ZW50KHMsYyk6bmV3IHAuRXZlbnQocyksYy50eXBlPXMsYy5pc1RyaWdnZXI9ITAsYy5leGNsdXNpdmU9aSxjLm5hbWVzcGFjZT10LmpvaW4oIi4iKSxjLm5hbWVzcGFjZV9yZT1jLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIit0LmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsbT1zLmluZGV4T2YoIjoiKTwwPyJvbiIrczoiIjtpZighZil7aD1wLmNhY2hlO2ZvcihqIGluIGgpaFtqXS5ldmVudHMmJmhbal0uZXZlbnRzW3NdJiZwLmV2ZW50LnRyaWdnZXIoYyxkLGhbal0uaGFuZGxlLmVsZW0sITApO3JldHVybn1jLnJlc3VsdD1iLGMudGFyZ2V0fHwoYy50YXJnZXQ9ZiksZD1kIT1udWxsP3AubWFrZUFycmF5KGQpOltdLGQudW5zaGlmdChjKSxuPXAuZXZlbnQuc3BlY2lhbFtzXXx8e307aWYobi50cmlnZ2VyJiZuLnRyaWdnZXIuYXBwbHkoZixkKT09PSExKXJldHVybjtxPVtbZixuLmJpbmRUeXBlfHxzXV07aWYoIWcmJiFuLm5vQnViYmxlJiYhcC5pc1dpbmRvdyhmKSl7cj1uLmRlbGVnYXRlVHlwZXx8cyxrPSQudGVzdChyK3MpP2Y6Zi5wYXJlbnROb2RlO2ZvcihsPWY7aztrPWsucGFyZW50Tm9kZSlxLnB1c2goW2sscl0pLGw9aztsPT09KGYub3duZXJEb2N1bWVudHx8ZSkmJnEucHVzaChbbC5kZWZhdWx0Vmlld3x8bC5wYXJlbnRXaW5kb3d8fGEscl0pfWZvcihqPTA7ajxxLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtqKyspaz1xW2pdWzBdLGMudHlwZT1xW2pdWzFdLG89KHAuX2RhdGEoaywiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZwLl9kYXRhKGssImhhbmRsZSIpLG8mJm8uYXBwbHkoayxkKSxvPW0mJmtbbV0sbyYmcC5hY2NlcHREYXRhKGspJiZvLmFwcGx5JiZvLmFwcGx5KGssZCk9PT0hMSYmYy5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBjLnR5cGU9cywhZyYmIWMuaXNEZWZhdWx0UHJldmVudGVkKCkmJighbi5fZGVmYXVsdHx8bi5fZGVmYXVsdC5hcHBseShmLm93bmVyRG9jdW1lbnQsZCk9PT0hMSkmJihzIT09ImNsaWNrInx8IXAubm9kZU5hbWUoZiwiYSIpKSYmcC5hY2NlcHREYXRhKGYpJiZtJiZmW3NdJiYocyE9PSJmb2N1cyImJnMhPT0iYmx1ciJ8fGMudGFyZ2V0Lm9mZnNldFdpZHRoIT09MCkmJiFwLmlzV2luZG93KGYpJiYobD1mW21dLGwmJihmW21dPW51bGwpLHAuZXZlbnQudHJpZ2dlcmVkPXMsZltzXSgpLHAuZXZlbnQudHJpZ2dlcmVkPWIsbCYmKGZbbV09bCkpLGMucmVzdWx0fXJldHVybn0sZGlzcGF0Y2g6ZnVuY3Rpb24oYyl7Yz1wLmV2ZW50LmZpeChjfHxhLmV2ZW50KTt2YXIgZCxlLGYsZyxoLGksaixsLG0sbixvPShwLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYy50eXBlXXx8W10scT1vLmRlbGVnYXRlQ291bnQscj1rLmNhbGwoYXJndW1lbnRzKSxzPSFjLmV4Y2x1c2l2ZSYmIWMubmFtZXNwYWNlLHQ9cC5ldmVudC5zcGVjaWFsW2MudHlwZV18fHt9LHU9W107clswXT1jLGMuZGVsZWdhdGVUYXJnZXQ9dGhpcztpZih0LnByZURpc3BhdGNoJiZ0LnByZURpc3BhdGNoLmNhbGwodGhpcyxjKT09PSExKXJldHVybjtpZihxJiYoIWMuYnV0dG9ufHxjLnR5cGUhPT0iY2xpY2siKSlmb3IoZj1jLnRhcmdldDtmIT10aGlzO2Y9Zi5wYXJlbnROb2RlfHx0aGlzKWlmKGYuZGlzYWJsZWQhPT0hMHx8Yy50eXBlIT09ImNsaWNrIil7aD17fSxqPVtdO2ZvcihkPTA7ZDxxO2QrKylsPW9bZF0sbT1sLnNlbGVjdG9yLGhbbV09PT1iJiYoaFttXT1sLm5lZWRzQ29udGV4dD9wKG0sdGhpcykuaW5kZXgoZik+PTA6cC5maW5kKG0sdGhpcyxudWxsLFtmXSkubGVuZ3RoKSxoW21dJiZqLnB1c2gobCk7ai5sZW5ndGgmJnUucHVzaCh7ZWxlbTpmLG1hdGNoZXM6an0pfW8ubGVuZ3RoPnEmJnUucHVzaCh7ZWxlbTp0aGlzLG1hdGNoZXM6by5zbGljZShxKX0pO2ZvcihkPTA7ZDx1Lmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtkKyspe2k9dVtkXSxjLmN1cnJlbnRUYXJnZXQ9aS5lbGVtO2ZvcihlPTA7ZTxpLm1hdGNoZXMubGVuZ3RoJiYhYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpO2UrKyl7bD1pLm1hdGNoZXNbZV07aWYoc3x8IWMubmFtZXNwYWNlJiYhbC5uYW1lc3BhY2V8fGMubmFtZXNwYWNlX3JlJiZjLm5hbWVzcGFjZV9yZS50ZXN0KGwubmFtZXNwYWNlKSljLmRhdGE9bC5kYXRhLGMuaGFuZGxlT2JqPWwsZz0oKHAuZXZlbnQuc3BlY2lhbFtsLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8bC5oYW5kbGVyKS5hcHBseShpLmVsZW0sciksZyE9PWImJihjLnJlc3VsdD1nLGc9PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSl9fXJldHVybiB0LnBvc3REaXNwYXRjaCYmdC5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGMpLGMucmVzdWx0fSxwcm9wczoiYXR0ckNoYW5nZSBhdHRyTmFtZSByZWxhdGVkTm9kZSBzcmNFbGVtZW50IGFsdEtleSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEud2hpY2g9PW51bGwmJihhLndoaWNoPWIuY2hhckNvZGUhPW51bGw/Yi5jaGFyQ29kZTpiLmtleUNvZGUpLGF9fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGMpe3ZhciBkLGYsZyxoPWMuYnV0dG9uLGk9Yy5mcm9tRWxlbWVudDtyZXR1cm4gYS5wYWdlWD09bnVsbCYmYy5jbGllbnRYIT1udWxsJiYoZD1hLnRhcmdldC5vd25lckRvY3VtZW50fHxlLGY9ZC5kb2N1bWVudEVsZW1lbnQsZz1kLmJvZHksYS5wYWdlWD1jLmNsaWVudFgrKGYmJmYuc2Nyb2xsTGVmdHx8ZyYmZy5zY3JvbGxMZWZ0fHwwKS0oZiYmZi5jbGllbnRMZWZ0fHxnJiZnLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yy5jbGllbnRZKyhmJiZmLnNjcm9sbFRvcHx8ZyYmZy5zY3JvbGxUb3B8fDApLShmJiZmLmNsaWVudFRvcHx8ZyYmZy5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZpJiYoYS5yZWxhdGVkVGFyZ2V0PWk9PT1hLnRhcmdldD9jLnRvRWxlbWVudDppKSwhYS53aGljaCYmaCE9PWImJihhLndoaWNoPWgmMT8xOmgmMj8zOmgmND8yOjApLGF9fSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtwLmV4cGFuZG9dKXJldHVybiBhO3ZhciBiLGMsZD1hLGY9cC5ldmVudC5maXhIb29rc1thLnR5cGVdfHx7fSxnPWYucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZi5wcm9wcyk6dGhpcy5wcm9wczthPXAuRXZlbnQoZCk7Zm9yKGI9Zy5sZW5ndGg7YjspYz1nWy0tYl0sYVtjXT1kW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFyZ2V0PWQuc3JjRWxlbWVudHx8ZSksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5tZXRhS2V5PSEhYS5tZXRhS2V5LGYuZmlsdGVyP2YuZmlsdGVyKGEsZCk6YX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7cC5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXAuZXh0ZW5kKG5ldyBwLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9wLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOnAuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LHAuZXZlbnQuaGFuZGxlPXAuZXZlbnQuZGlzcGF0Y2gscC5yZW1vdmVFdmVudD1lLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT0idW5kZWZpbmVkIiYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0scC5FdmVudD1mdW5jdGlvbihhLGIpe2lmKHRoaXMgaW5zdGFuY2VvZiBwLkV2ZW50KWEmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP2JiOmJhKTp0aGlzLnR5cGU9YSxiJiZwLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxwLm5vdygpLHRoaXNbcC5leHBhbmRvXT0hMDtlbHNlIHJldHVybiBuZXcgcC5FdmVudChhLGIpfSxwLkV2ZW50LnByb3RvdHlwZT17cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1iYjt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIWEpcmV0dXJuO2EucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITF9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YmI7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFhKXJldHVybjthLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMH0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1iYix0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6YmEsaXNQcm9wYWdhdGlvblN0b3BwZWQ6YmEsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6YmF9LHAuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7cC5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iaixnPWYuc2VsZWN0b3I7aWYoIWV8fGUhPT1kJiYhcC5jb250YWlucyhkLGUpKWEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YjtyZXR1cm4gY319fSkscC5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChwLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKHAubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO3AuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1wLm5vZGVOYW1lKGMsImlucHV0Iil8fHAubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIXAuX2RhdGEoZCwiX3N1Ym1pdF9hdHRhY2hlZCIpJiYocC5ldmVudC5hZGQoZCwic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KSxwLl9kYXRhKGQsIl9zdWJtaXRfYXR0YWNoZWQiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmcC5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKHAubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO3AuZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSkscC5zdXBwb3J0LmNoYW5nZUJ1YmJsZXN8fChwLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe2lmKFYudGVzdCh0aGlzLm5vZGVOYW1lKSl7aWYodGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIilwLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXthLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lPT09ImNoZWNrZWQiJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLHAuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSxwLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KTtyZXR1cm4hMX1wLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtWLnRlc3QoYi5ub2RlTmFtZSkmJiFwLl9kYXRhKGIsIl9jaGFuZ2VfYXR0YWNoZWQiKSYmKHAuZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJiFhLmlzU2ltdWxhdGVkJiYhYS5pc1RyaWdnZXImJnAuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSkscC5fZGF0YShiLCJfY2hhbmdlX2F0dGFjaGVkIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtpZih0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fGIudHlwZSE9PSJyYWRpbyImJmIudHlwZSE9PSJjaGVja2JveCIpcmV0dXJuIGEuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBwLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFWLnRlc3QodGhpcy5ub2RlTmFtZSl9fSkscC5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxwLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9MCxkPWZ1bmN0aW9uKGEpe3AuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxwLmV2ZW50LmZpeChhKSwhMCl9O3AuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtjKys9PT0wJiZlLmFkZEV2ZW50TGlzdGVuZXIoYSxkLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWM9PT0wJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxkLCEwKX19fSkscC5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGcsaDtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9ZHx8YyxjPWIpO2ZvcihoIGluIGEpdGhpcy5vbihoLGMsZCxhW2hdLGYpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9YmE7ZWxzZSBpZighZSlyZXR1cm4gdGhpcztyZXR1cm4gZj09PTEmJihnPWUsZT1mdW5jdGlvbihhKXtyZXR1cm4gcCgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1wLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe3AuZXZlbnQuYWRkKHRoaXMsYSxlLGQsYyl9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZjtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZT1hLmhhbmRsZU9iaixwKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihlLm5hbWVzcGFjZT9lLm9yaWdUeXBlKyIuIitlLm5hbWVzcGFjZTplLm9yaWdUeXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKSx0aGlzO2lmKHR5cGVvZiBhPT0ib2JqZWN0Iil7Zm9yKGYgaW4gYSl0aGlzLm9mZihmLGMsYVtmXSk7cmV0dXJuIHRoaXN9aWYoYz09PSExfHx0eXBlb2YgYz09ImZ1bmN0aW9uIilkPWMsYz1iO3JldHVybiBkPT09ITEmJihkPWJhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtwLmV2ZW50LnJlbW92ZSh0aGlzLGEsZCxjKX0pfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sbGl2ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKSx0aGlzfSxkaWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcCh0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYiksdGhpc30sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtwLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gcC5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8cC5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KHAuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtyZXR1cm4gcC5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIithLmd1aWQsZSsxKSxjLnByZXZlbnREZWZhdWx0KCksYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLHAuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3AuZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz09bnVsbCYmKGM9YSxhPW51bGwpLGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX0sWS50ZXN0KGIpJiYocC5ldmVudC5maXhIb29rc1tiXT1wLmV2ZW50LmtleUhvb2tzKSxaLnRlc3QoYikmJihwLmV2ZW50LmZpeEhvb2tzW2JdPXAuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGJjKGEsYixjLGQpe2M9Y3x8W10sYj1ifHxyO3ZhciBlLGYsaSxqLGs9Yi5ub2RlVHlwZTtpZighYXx8dHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBjO2lmKGshPT0xJiZrIT09OSlyZXR1cm5bXTtpPWcoYik7aWYoIWkmJiFkKWlmKGU9UC5leGVjKGEpKWlmKGo9ZVsxXSl7aWYoaz09PTkpe2Y9Yi5nZXRFbGVtZW50QnlJZChqKTtpZighZnx8IWYucGFyZW50Tm9kZSlyZXR1cm4gYztpZihmLmlkPT09ailyZXR1cm4gYy5wdXNoKGYpLGN9ZWxzZSBpZihiLm93bmVyRG9jdW1lbnQmJihmPWIub3duZXJEb2N1bWVudC5nZXRFbGVtZW50QnlJZChqKSkmJmgoYixmKSYmZi5pZD09PWopcmV0dXJuIGMucHVzaChmKSxjfWVsc2V7aWYoZVsyXSlyZXR1cm4gdy5hcHBseShjLHguY2FsbChiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpLDApKSxjO2lmKChqPWVbM10pJiZfJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHcuYXBwbHkoYyx4LmNhbGwoYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGopLDApKSxjfXJldHVybiBicChhLnJlcGxhY2UoTCwiJDEiKSxiLGMsZCxpKX1mdW5jdGlvbiBiZChhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBjPT09ImlucHV0IiYmYi50eXBlPT09YX19ZnVuY3Rpb24gYmUoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYz09PSJpbnB1dCJ8fGM9PT0iYnV0dG9uIikmJmIudHlwZT09PWF9fWZ1bmN0aW9uIGJmKGEpe3JldHVybiB6KGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLHooZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBiZyhhLGIsYyl7aWYoYT09PWIpcmV0dXJuIGM7dmFyIGQ9YS5uZXh0U2libGluZzt3aGlsZShkKXtpZihkPT09YilyZXR1cm4tMTtkPWQubmV4dFNpYmxpbmd9cmV0dXJuIDF9ZnVuY3Rpb24gYmgoYSxiKXt2YXIgYyxkLGYsZyxoLGksaixrPUNbb11bYV07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1lLnByZUZpbHRlcjt3aGlsZShoKXtpZighY3x8KGQ9TS5leGVjKGgpKSlkJiYoaD1oLnNsaWNlKGRbMF0ubGVuZ3RoKSksaS5wdXNoKGY9W10pO2M9ITE7aWYoZD1OLmV4ZWMoaCkpZi5wdXNoKGM9bmV3IHEoZC5zaGlmdCgpKSksaD1oLnNsaWNlKGMubGVuZ3RoKSxjLnR5cGU9ZFswXS5yZXBsYWNlKEwsIiAiKTtmb3IoZyBpbiBlLmZpbHRlcikoZD1XW2ddLmV4ZWMoaCkpJiYoIWpbZ118fChkPWpbZ10oZCxyLCEwKSkpJiYoZi5wdXNoKGM9bmV3IHEoZC5zaGlmdCgpKSksaD1oLnNsaWNlKGMubGVuZ3RoKSxjLnR5cGU9ZyxjLm1hdGNoZXM9ZCk7aWYoIWMpYnJlYWt9cmV0dXJuIGI/aC5sZW5ndGg6aD9iYy5lcnJvcihhKTpDKGEsaSkuc2xpY2UoMCl9ZnVuY3Rpb24gYmkoYSxiLGQpe3ZhciBlPWIuZGlyLGY9ZCYmYi5kaXI9PT0icGFyZW50Tm9kZSIsZz11Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGQpe3doaWxlKGI9YltlXSlpZihmfHxiLm5vZGVUeXBlPT09MSlyZXR1cm4gYShiLGMsZCl9OmZ1bmN0aW9uKGIsZCxoKXtpZighaCl7dmFyIGksaj10KyIgIitnKyIgIixrPWorYzt3aGlsZShiPWJbZV0paWYoZnx8Yi5ub2RlVHlwZT09PTEpe2lmKChpPWJbb10pPT09aylyZXR1cm4gYi5zaXpzZXQ7aWYodHlwZW9mIGk9PSJzdHJpbmciJiZpLmluZGV4T2Yoaik9PT0wKXtpZihiLnNpenNldClyZXR1cm4gYn1lbHNle2Jbb109aztpZihhKGIsZCxoKSlyZXR1cm4gYi5zaXpzZXQ9ITAsYjtiLnNpenNldD0hMX19fWVsc2Ugd2hpbGUoYj1iW2VdKWlmKGZ8fGIubm9kZVR5cGU9PT0xKWlmKGEoYixkLGgpKXJldHVybiBifX1mdW5jdGlvbiBiaihhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiBiayhhLGIsYyxkLGUpe3ZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1iIT1udWxsO2Zvcig7aDxpO2grKylpZihmPWFbaF0paWYoIWN8fGMoZixkLGUpKWcucHVzaChmKSxqJiZiLnB1c2goaCk7cmV0dXJuIGd9ZnVuY3Rpb24gYmwoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFtvXSYmKGQ9YmwoZCkpLGUmJiFlW29dJiYoZT1ibChlLGYpKSx6KGZ1bmN0aW9uKGYsZyxoLGkpe2lmKGYmJmUpcmV0dXJuO3ZhciBqLGssbCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fGJvKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdLGYpLHE9YSYmKGZ8fCFiKT9iayhwLG0sYSxoLGkpOnAscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2MmJmMocSxyLGgsaSk7aWYoZCl7bD1iayhyLG4pLGQobCxbXSxoLGkpLGo9bC5sZW5ndGg7d2hpbGUoai0tKWlmKGs9bFtqXSlyW25bal1dPSEocVtuW2pdXT1rKX1pZihmKXtqPWEmJnIubGVuZ3RoO3doaWxlKGotLSlpZihrPXJbal0pZlttW2pdXT0hKGdbbVtqXV09ayl9ZWxzZSByPWJrKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTp3LmFwcGx5KGcscil9KX1mdW5jdGlvbiBibShhKXt2YXIgYixjLGQsZj1hLmxlbmd0aCxnPWUucmVsYXRpdmVbYVswXS50eXBlXSxoPWd8fGUucmVsYXRpdmVbIiAiXSxpPWc/MTowLGo9YmkoZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1ifSxoLCEwKSxrPWJpKGZ1bmN0aW9uKGEpe3JldHVybiB5LmNhbGwoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3JldHVybiFnJiYoZHx8YyE9PWwpfHwoKGI9Yykubm9kZVR5cGU/aihhLGMsZCk6ayhhLGMsZCkpfV07Zm9yKDtpPGY7aSsrKWlmKGM9ZS5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W2JpKGJqKG0pLGMpXTtlbHNle2M9ZS5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hlcyk7aWYoY1tvXSl7ZD0rK2k7Zm9yKDtkPGY7ZCsrKWlmKGUucmVsYXRpdmVbYVtkXS50eXBlXSlicmVhaztyZXR1cm4gYmwoaT4xJiZiaihtKSxpPjEmJmEuc2xpY2UoMCxpLTEpLmpvaW4oIiIpLnJlcGxhY2UoTCwiJDEiKSxjLGk8ZCYmYm0oYS5zbGljZShpLGQpKSxkPGYmJmJtKGE9YS5zbGljZShkKSksZDxmJiZhLmpvaW4oIiIpKX1tLnB1c2goYyl9cmV0dXJuIGJqKG0pfWZ1bmN0aW9uIGJuKGEsYil7dmFyIGQ9Yi5sZW5ndGg+MCxmPWEubGVuZ3RoPjAsZz1mdW5jdGlvbihoLGksaixrLG0pe3ZhciBuLG8scCxxPVtdLHM9MCx1PSIwIix4PWgmJltdLHk9bSE9bnVsbCx6PWwsQT1ofHxmJiZlLmZpbmQuVEFHKCIqIixtJiZpLnBhcmVudE5vZGV8fGkpLEI9dCs9ej09bnVsbD8xOk1hdGguRTt5JiYobD1pIT09ciYmaSxjPWcuZWwpO2Zvcig7KG49QVt1XSkhPW51bGw7dSsrKXtpZihmJiZuKXtmb3Iobz0wO3A9YVtvXTtvKyspaWYocChuLGksaikpe2sucHVzaChuKTticmVha315JiYodD1CLGM9KytnLmVsKX1kJiYoKG49IXAmJm4pJiZzLS0saCYmeC5wdXNoKG4pKX1zKz11O2lmKGQmJnUhPT1zKXtmb3Iobz0wO3A9YltvXTtvKyspcCh4LHEsaSxqKTtpZihoKXtpZihzPjApd2hpbGUodS0tKSF4W3VdJiYhcVt1XSYmKHFbdV09di5jYWxsKGspKTtxPWJrKHEpfXcuYXBwbHkoayxxKSx5JiYhaCYmcS5sZW5ndGg+MCYmcytiLmxlbmd0aD4xJiZiYy51bmlxdWVTb3J0KGspfXJldHVybiB5JiYodD1CLGw9eikseH07cmV0dXJuIGcuZWw9MCxkP3ooZyk6Z31mdW5jdGlvbiBibyhhLGIsYyxkKXt2YXIgZT0wLGY9Yi5sZW5ndGg7Zm9yKDtlPGY7ZSsrKWJjKGEsYltlXSxjLGQpO3JldHVybiBjfWZ1bmN0aW9uIGJwKGEsYixjLGQsZil7dmFyIGcsaCxqLGssbCxtPWJoKGEpLG49bS5sZW5ndGg7aWYoIWQmJm0ubGVuZ3RoPT09MSl7aD1tWzBdPW1bMF0uc2xpY2UoMCk7aWYoaC5sZW5ndGg+MiYmKGo9aFswXSkudHlwZT09PSJJRCImJmIubm9kZVR5cGU9PT05JiYhZiYmZS5yZWxhdGl2ZVtoWzFdLnR5cGVdKXtiPWUuZmluZC5JRChqLm1hdGNoZXNbMF0ucmVwbGFjZShWLCIiKSxiLGYpWzBdO2lmKCFiKXJldHVybiBjO2E9YS5zbGljZShoLnNoaWZ0KCkubGVuZ3RoKX1mb3IoZz1XLlBPUy50ZXN0KGEpPy0xOmgubGVuZ3RoLTE7Zz49MDtnLS0pe2o9aFtnXTtpZihlLnJlbGF0aXZlW2s9ai50eXBlXSlicmVhaztpZihsPWUuZmluZFtrXSlpZihkPWwoai5tYXRjaGVzWzBdLnJlcGxhY2UoViwiIiksUi50ZXN0KGhbMF0udHlwZSkmJmIucGFyZW50Tm9kZXx8YixmKSl7aC5zcGxpY2UoZywxKSxhPWQubGVuZ3RoJiZoLmpvaW4oIiIpO2lmKCFhKXJldHVybiB3LmFwcGx5KGMseC5jYWxsKGQsMCkpLGM7YnJlYWt9fX1yZXR1cm4gaShhLG0pKGQsYixmLGMsUi50ZXN0KGEpKSxjfWZ1bmN0aW9uIGJxKCl7fXZhciBjLGQsZSxmLGcsaCxpLGosayxsLG09ITAsbj0idW5kZWZpbmVkIixvPSgic2l6Y2FjaGUiK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoIi4iLCIiKSxxPVN0cmluZyxyPWEuZG9jdW1lbnQscz1yLmRvY3VtZW50RWxlbWVudCx0PTAsdT0wLHY9W10ucG9wLHc9W10ucHVzaCx4PVtdLnNsaWNlLHk9W10uaW5kZXhPZnx8ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPXRoaXMubGVuZ3RoO2Zvcig7YjxjO2IrKylpZih0aGlzW2JdPT09YSlyZXR1cm4gYjtyZXR1cm4tMX0sej1mdW5jdGlvbihhLGIpe3JldHVybiBhW29dPWI9PW51bGx8fGIsYX0sQT1mdW5jdGlvbigpe3ZhciBhPXt9LGI9W107cmV0dXJuIHooZnVuY3Rpb24oYyxkKXtyZXR1cm4gYi5wdXNoKGMpPmUuY2FjaGVMZW5ndGgmJmRlbGV0ZSBhW2Iuc2hpZnQoKV0sYVtjXT1kfSxhKX0sQj1BKCksQz1BKCksRD1BKCksRT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsRj0iKD86XFxcXC58Wy1cXHddfFteXFx4MDAtXFx4YTBdKSsiLEc9Ri5yZXBsYWNlKCJ3IiwidyMiKSxIPSIoWypeJHwhfl0/PSkiLEk9IlxcWyIrRSsiKigiK0YrIikiK0UrIiooPzoiK0grRSsiKig/OihbJ1wiXSkoKD86XFxcXC58W15cXFxcXSkqPylcXDN8KCIrRysiKXwpfCkiK0UrIipcXF0iLEo9IjooIitGKyIpKD86XFwoKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcMnwoW14oKVtcXF1dKnwoPzooPzoiK0krIil8W146XXxcXFxcLikqfC4qKSlcXCl8KSIsSz0iOihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0UrIiooKD86LVxcZCk/XFxkKikiK0UrIipcXCl8KSg/PVteLV18JCkiLEw9bmV3IFJlZ0V4cCgiXiIrRSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitFKyIrJCIsImciKSxNPW5ldyBSZWdFeHAoIl4iK0UrIiosIitFKyIqIiksTj1uZXcgUmVnRXhwKCJeIitFKyIqKFtcXHgyMFxcdFxcclxcblxcZj4rfl0pIitFKyIqIiksTz1uZXcgUmVnRXhwKEopLFA9L14oPzojKFtcd1wtXSspfChcdyspfFwuKFtcd1wtXSspKSQvLFE9L146bm90LyxSPS9bXHgyMFx0XHJcblxmXSpbK35dLyxTPS86bm90XCgkLyxUPS9oXGQvaSxVPS9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2ksVj0vXFwoPyFcXCkvZyxXPXtJRDpuZXcgUmVnRXhwKCJeIygiK0YrIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrRisiKSIpLE5BTUU6bmV3IFJlZ0V4cCgiXlxcW25hbWU9WydcIl0/KCIrRisiKVsnXCJdP1xcXSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrRi5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrSSksUFNFVURPOm5ldyBSZWdFeHAoIl4iK0opLFBPUzpuZXcgUmVnRXhwKEssImkiKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fG50aHxmaXJzdHxsYXN0KS1jaGlsZCg/OlxcKCIrRSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrRSsiKig/OihbKy1dfCkiK0UrIiooXFxkKyl8KSkiK0UrIipcXCl8KSIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrRSsiKls+K35dfCIrSywiaSIpfSxYPWZ1bmN0aW9uKGEpe3ZhciBiPXIuY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiBhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yj1udWxsfX0sWT1YKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKHIuY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksWj1YKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsYS5maXJzdENoaWxkJiZ0eXBlb2YgYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSE9PW4mJmEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKT09PSIjIn0pLCQ9WChmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdD48L3NlbGVjdD4iO3ZhciBiPXR5cGVvZiBhLmxhc3RDaGlsZC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxlIik7cmV0dXJuIGIhPT0iYm9vbGVhbiImJmIhPT0ic3RyaW5nIn0pLF89WChmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J2hpZGRlbiBlJz48L2Rpdj48ZGl2IGNsYXNzPSdoaWRkZW4nPjwvZGl2PiIsIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZXx8IWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD8hMTooYS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIixhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0yKX0pLGJhPVgoZnVuY3Rpb24oYSl7YS5pZD1vKzAsYS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrbysiJz48L2E+PGRpdiBuYW1lPSciK28rIic+PC9kaXY+IixzLmluc2VydEJlZm9yZShhLHMuZmlyc3RDaGlsZCk7dmFyIGI9ci5nZXRFbGVtZW50c0J5TmFtZSYmci5nZXRFbGVtZW50c0J5TmFtZShvKS5sZW5ndGg9PT0yK3IuZ2V0RWxlbWVudHNCeU5hbWUobyswKS5sZW5ndGg7cmV0dXJuIGQ9IXIuZ2V0RWxlbWVudEJ5SWQobykscy5yZW1vdmVDaGlsZChhKSxifSk7dHJ5e3guY2FsbChzLmNoaWxkTm9kZXMsMClbMF0ubm9kZVR5cGV9Y2F0Y2goYmIpe3g9ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXTtmb3IoO2I9dGhpc1thXTthKyspYy5wdXNoKGIpO3JldHVybiBjfX1iYy5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGJjKGEsbnVsbCxudWxsLGIpfSxiYy5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYmMoYixudWxsLG51bGwsW2FdKS5sZW5ndGg+MH0sZj1iYy5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGU9YS5ub2RlVHlwZTtpZihlKXtpZihlPT09MXx8ZT09PTl8fGU9PT0xMSl7aWYodHlwZW9mIGEudGV4dENvbnRlbnQ9PSJzdHJpbmciKXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1mKGEpfWVsc2UgaWYoZT09PTN8fGU9PT00KXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIGZvcig7Yj1hW2RdO2QrKyljKz1mKGIpO3JldHVybiBjfSxnPWJjLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfSxoPWJjLmNvbnRhaW5zPXMuY29udGFpbnM/ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLm5vZGVUeXBlPT09OT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISEoZCYmZC5ub2RlVHlwZT09PTEmJmMuY29udGFpbnMmJmMuY29udGFpbnMoZCkpfTpzLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKGEsYil7cmV0dXJuIGImJiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTpmdW5jdGlvbihhLGIpe3doaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxiYy5hdHRyPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1nKGEpO3JldHVybiBkfHwoYj1iLnRvTG93ZXJDYXNlKCkpLChjPWUuYXR0ckhhbmRsZVtiXSk/YyhhKTpkfHwkP2EuZ2V0QXR0cmlidXRlKGIpOihjPWEuZ2V0QXR0cmlidXRlTm9kZShiKSxjP3R5cGVvZiBhW2JdPT0iYm9vbGVhbiI/YVtiXT9iOm51bGw6Yy5zcGVjaWZpZWQ/Yy52YWx1ZTpudWxsOm51bGwpfSxlPWJjLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOnosbWF0Y2g6VyxhdHRySGFuZGxlOlo/e306e2hyZWY6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKX19LGZpbmQ6e0lEOmQ/ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09biYmIWMpe3ZhciBkPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGQmJmQucGFyZW50Tm9kZT9bZF06W119fTpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPT1uJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gZT9lLmlkPT09YXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9PW4mJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS52YWx1ZT09PWE/W2VdOmI6W119fSxUQUc6WT9mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09bilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKGE9PT0iKiIpe3ZhciBkLGU9W10sZj0wO2Zvcig7ZD1jW2ZdO2YrKylkLm5vZGVUeXBlPT09MSYmZS5wdXNoKGQpO3JldHVybiBlfXJldHVybiBjfSxOQU1FOmJhJiZmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlOYW1lIT09bilyZXR1cm4gYi5nZXRFbGVtZW50c0J5TmFtZShuYW1lKX0sQ0xBU1M6XyYmZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUhPT1uJiYhYylyZXR1cm4gYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpfX0scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKFYsIiIpLGFbM109KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKFYsIiIpLGFbMl09PT0ifj0iJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLGFbMV09PT0ibnRoIj8oYVsyXXx8YmMuZXJyb3IoYVswXSksYVszXT0rKGFbM10/YVs0XSsoYVs1XXx8MSk6MiooYVsyXT09PSJldmVuInx8YVsyXT09PSJvZGQiKSksYVs0XT0rKGFbNl0rYVs3XXx8YVsyXT09PSJvZGQiKSk6YVsyXSYmYmMuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM7aWYoVy5DSElMRC50ZXN0KGFbMF0pKXJldHVybiBudWxsO2lmKGFbM10pYVsyXT1hWzNdO2Vsc2UgaWYoYj1hWzRdKU8udGVzdChiKSYmKGM9YmgoYiwhMCkpJiYoYz1iLmluZGV4T2YoIikiLGIubGVuZ3RoLWMpLWIubGVuZ3RoKSYmKGI9Yi5zbGljZSgwLGMpLGFbMF09YVswXS5zbGljZSgwLGMpKSxhWzJdPWI7cmV0dXJuIGEuc2xpY2UoMCwzKX19LGZpbHRlcjp7SUQ6ZD9mdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoViwiIiksZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2V0QXR0cmlidXRlKCJpZCIpPT09YX19OmZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZShWLCIiKSxmdW5jdGlvbihiKXt2YXIgYz10eXBlb2YgYi5nZXRBdHRyaWJ1dGVOb2RlIT09biYmYi5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBjJiZjLnZhbHVlPT09YX19LFRBRzpmdW5jdGlvbihhKXtyZXR1cm4gYT09PSIqIj9mdW5jdGlvbigpe3JldHVybiEwfTooYT1hLnJlcGxhY2UoViwiIikudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXtyZXR1cm4gYi5ub2RlTmFtZSYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09YX0pfSxDTEFTUzpmdW5jdGlvbihhKXt2YXIgYj1CW29dW2FdO3JldHVybiBifHwoYj1CKGEsbmV3IFJlZ0V4cCgiKF58IitFKyIpIithKyIoIitFKyJ8JCkiKSkpLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PW4mJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9fSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCxlKXt2YXIgZj1iYy5hdHRyKGQsYSk7cmV0dXJuIGY9PW51bGw/Yj09PSIhPSI6Yj8oZis9IiIsYj09PSI9Ij9mPT09YzpiPT09IiE9Ij9mIT09YzpiPT09Il49Ij9jJiZmLmluZGV4T2YoYyk9PT0wOmI9PT0iKj0iP2MmJmYuaW5kZXhPZihjKT4tMTpiPT09IiQ9Ij9jJiZmLnN1YnN0cihmLmxlbmd0aC1jLmxlbmd0aCk9PT1jOmI9PT0ifj0iPygiICIrZisiICIpLmluZGV4T2YoYyk+LTE6Yj09PSJ8PSI/Zj09PWN8fGYuc3Vic3RyKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYT09PSJudGgiP2Z1bmN0aW9uKGEpe3ZhciBiLGUsZj1hLnBhcmVudE5vZGU7aWYoYz09PTEmJmQ9PT0wKXJldHVybiEwO2lmKGYpe2U9MDtmb3IoYj1mLmZpcnN0Q2hpbGQ7YjtiPWIubmV4dFNpYmxpbmcpaWYoYi5ub2RlVHlwZT09PTEpe2UrKztpZihhPT09YilicmVha319cmV0dXJuIGUtPWQsZT09PWN8fGUlYz09PTAmJmUvYz49MH06ZnVuY3Rpb24oYil7dmFyIGM9Yjtzd2l0Y2goYSl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShjPWMucHJldmlvdXNTaWJsaW5nKWlmKGMubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGE9PT0iZmlyc3QiKXJldHVybiEwO2M9YjtjYXNlImxhc3QiOndoaWxlKGM9Yy5uZXh0U2libGluZylpZihjLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMH19fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPWUucHNldWRvc1thXXx8ZS5zZXRGaWx0ZXJzW2EudG9Mb3dlckNhc2UoKV18fGJjLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGRbb10/ZChiKTpkLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZS5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/eihmdW5jdGlvbihhLGMpe3ZhciBlLGY9ZChhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWU9eS5jYWxsKGEsZltnXSksYVtlXT0hKGNbZV09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZChhLDAsYyl9KTpkfX0scHNldWRvczp7bm90OnooZnVuY3Rpb24oYSl7dmFyIGI9W10sYz1bXSxkPWkoYS5yZXBsYWNlKEwsIiQxIikpO3JldHVybiBkW29dP3ooZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSlpZihmPWdbaF0pYVtoXT0hKGJbaF09Zil9KTpmdW5jdGlvbihhLGUsZil7cmV0dXJuIGJbMF09YSxkKGIsbnVsbCxmLGMpLCFjLnBvcCgpfX0pLGhhczp6KGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gYmMoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczp6KGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGYoYikpLmluZGV4T2YoYSk+LTF9fSksZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiEhYS5jaGVja2VkfHxiPT09Im9wdGlvbiImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWUucHNldWRvcy5lbXB0eShhKX0sZW1wdHk6ZnVuY3Rpb24oYSl7dmFyIGI7YT1hLmZpcnN0Q2hpbGQ7d2hpbGUoYSl7aWYoYS5ub2RlTmFtZT4iQCJ8fChiPWEubm9kZVR5cGUpPT09M3x8Yj09PTQpcmV0dXJuITE7YT1hLm5leHRTaWJsaW5nfXJldHVybiEwfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFQudGVzdChhLm5vZGVOYW1lKX0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYoYj1hLnR5cGUpPT09InRleHQiJiYoKGM9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSk9PW51bGx8fGMudG9Mb3dlckNhc2UoKT09PWIpfSxyYWRpbzpiZCgicmFkaW8iKSxjaGVja2JveDpiZCgiY2hlY2tib3giKSxmaWxlOmJkKCJmaWxlIikscGFzc3dvcmQ6YmQoInBhc3N3b3JkIiksaW1hZ2U6YmQoImltYWdlIiksc3VibWl0OmJlKCJzdWJtaXQiKSxyZXNldDpiZSgicmVzZXQiKSxidXR0b246ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiPT09ImlucHV0IiYmYS50eXBlPT09ImJ1dHRvbiJ8fGI9PT0iYnV0dG9uIn0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7dmFyIGI9YS5vd25lckRvY3VtZW50O3JldHVybiBhPT09Yi5hY3RpdmVFbGVtZW50JiYoIWIuaGFzRm9jdXN8fGIuaGFzRm9jdXMoKSkmJighIWEudHlwZXx8ISFhLmhyZWYpfSxhY3RpdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH0sZmlyc3Q6YmYoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswXX0pLGxhc3Q6YmYoZnVuY3Rpb24oYSxiLGMpe3JldHVybltiLTFdfSksZXE6YmYoZnVuY3Rpb24oYSxiLGMpe3JldHVybltjPDA/YytiOmNdfSksZXZlbjpiZihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA7ZDxiO2QrPTIpYS5wdXNoKGQpO3JldHVybiBhfSksb2RkOmJmKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MTtkPGI7ZCs9MilhLnB1c2goZCk7cmV0dXJuIGF9KSxsdDpiZihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzstLWQ+PTA7KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0OmJmKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YzwwP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGo9cy5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj9mdW5jdGlvbihhLGIpe3JldHVybiBhPT09Yj8oaz0hMCwwKTooIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb246YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSY0KT8tMToxfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBrPSEwLDA7aWYoYS5zb3VyY2VJbmRleCYmYi5zb3VyY2VJbmRleClyZXR1cm4gYS5zb3VyY2VJbmRleC1iLnNvdXJjZUluZGV4O3ZhciBjLGQsZT1bXSxmPVtdLGc9YS5wYXJlbnROb2RlLGg9Yi5wYXJlbnROb2RlLGk9ZztpZihnPT09aClyZXR1cm4gYmcoYSxiKTtpZighZylyZXR1cm4tMTtpZighaClyZXR1cm4gMTt3aGlsZShpKWUudW5zaGlmdChpKSxpPWkucGFyZW50Tm9kZTtpPWg7d2hpbGUoaSlmLnVuc2hpZnQoaSksaT1pLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaj0wO2o8YyYmajxkO2orKylpZihlW2pdIT09ZltqXSlyZXR1cm4gYmcoZVtqXSxmW2pdKTtyZXR1cm4gaj09PWM/YmcoYSxmW2pdLC0xKTpiZyhlW2pdLGIsMSl9LFswLDBdLnNvcnQoaiksbT0hayxiYy51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9MTtrPW0sYS5zb3J0KGopO2lmKGspZm9yKDtiPWFbY107YysrKWI9PT1hW2MtMV0mJmEuc3BsaWNlKGMtLSwxKTtyZXR1cm4gYX0sYmMuZXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK2EpfSxpPWJjLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1EW29dW2FdO2lmKCFmKXtifHwoYj1iaChhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj1ibShiW2NdKSxmW29dP2QucHVzaChmKTplLnB1c2goZik7Zj1EKGEsYm4oZSxkKSl9cmV0dXJuIGZ9LHIucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYSxiPWJwLGM9Lyd8XFwvZyxkPS9cPVtceDIwXHRcclxuXGZdKihbXiciXF1dKilbXHgyMFx0XHJcblxmXSpcXS9nLGU9WyI6Zm9jdXMiXSxmPVsiOmFjdGl2ZSIsIjpmb2N1cyJdLGg9cy5tYXRjaGVzU2VsZWN0b3J8fHMubW96TWF0Y2hlc1NlbGVjdG9yfHxzLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8cy5vTWF0Y2hlc1NlbGVjdG9yfHxzLm1zTWF0Y2hlc1NlbGVjdG9yO1goZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxzZWxlY3Q+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8ZS5wdXNoKCJcXFsiK0UrIiooPzpjaGVja2VkfGRpc2FibGVkfGlzbWFwfG11bHRpcGxlfHJlYWRvbmx5fHNlbGVjdGVkfHZhbHVlKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGUucHVzaCgiOmNoZWNrZWQiKX0pLFgoZnVuY3Rpb24oYSl7YS5pbm5lckhUTUw9IjxwIHRlc3Q9Jyc+PC9wPiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbdGVzdF49JyddIikubGVuZ3RoJiZlLnB1c2goIlsqXiRdPSIrRSsiKig/OlwiXCJ8JycpIiksYS5pbm5lckhUTUw9IjxpbnB1dCB0eXBlPSdoaWRkZW4nLz4iLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fGUucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKX0pLGU9bmV3IFJlZ0V4cChlLmpvaW4oInwiKSksYnA9ZnVuY3Rpb24oYSxkLGYsZyxoKXtpZighZyYmIWgmJighZXx8IWUudGVzdChhKSkpe3ZhciBpLGosaz0hMCxsPW8sbT1kLG49ZC5ub2RlVHlwZT09PTkmJmE7aWYoZC5ub2RlVHlwZT09PTEmJmQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXtpPWJoKGEpLChrPWQuZ2V0QXR0cmlidXRlKCJpZCIpKT9sPWsucmVwbGFjZShjLCJcXCQmIik6ZC5zZXRBdHRyaWJ1dGUoImlkIixsKSxsPSJbaWQ9JyIrbCsiJ10gIixqPWkubGVuZ3RoO3doaWxlKGotLSlpW2pdPWwraVtqXS5qb2luKCIiKTttPVIudGVzdChhKSYmZC5wYXJlbnROb2RlfHxkLG49aS5qb2luKCIsIil9aWYobil0cnl7cmV0dXJuIHcuYXBwbHkoZix4LmNhbGwobS5xdWVyeVNlbGVjdG9yQWxsKG4pLDApKSxmfWNhdGNoKHApe31maW5hbGx5e2t8fGQucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX1yZXR1cm4gYihhLGQsZixnLGgpfSxoJiYoWChmdW5jdGlvbihiKXthPWguY2FsbChiLCJkaXYiKTt0cnl7aC5jYWxsKGIsIlt0ZXN0IT0nJ106c2l6emxlIiksZi5wdXNoKCIhPSIsSil9Y2F0Y2goYyl7fX0pLGY9bmV3IFJlZ0V4cChmLmpvaW4oInwiKSksYmMubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGIsYyl7Yz1jLnJlcGxhY2UoZCwiPSckMSddIik7aWYoIWcoYikmJiFmLnRlc3QoYykmJighZXx8IWUudGVzdChjKSkpdHJ5e3ZhciBpPWguY2FsbChiLGMpO2lmKGl8fGF8fGIuZG9jdW1lbnQmJmIuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gaX1jYXRjaChqKXt9cmV0dXJuIGJjKGMsbnVsbCxudWxsLFtiXSkubGVuZ3RoPjB9KX0oKSxlLnBzZXVkb3MubnRoPWUucHNldWRvcy5lcSxlLmZpbHRlcnM9YnEucHJvdG90eXBlPWUucHNldWRvcyxlLnNldEZpbHRlcnM9bmV3IGJxLGJjLmF0dHI9cC5hdHRyLHAuZmluZD1iYyxwLmV4cHI9YmMuc2VsZWN0b3JzLHAuZXhwclsiOiJdPXAuZXhwci5wc2V1ZG9zLHAudW5pcXVlPWJjLnVuaXF1ZVNvcnQscC50ZXh0PWJjLmdldFRleHQscC5pc1hNTERvYz1iYy5pc1hNTCxwLmNvbnRhaW5zPWJjLmNvbnRhaW5zfShhKTt2YXIgYmM9L1VudGlsJC8sYmQ9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sYmU9L14uW146I1xbXC4sXSokLyxiZj1wLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LGJnPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O3AuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoPXRoaXM7aWYodHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBwKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTAsYz1oLmxlbmd0aDtiPGM7YisrKWlmKHAuY29udGFpbnMoaFtiXSx0aGlzKSlyZXR1cm4hMH0pO2c9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpO2ZvcihiPTAsYz10aGlzLmxlbmd0aDtiPGM7YisrKXtkPWcubGVuZ3RoLHAuZmluZChhLHRoaXNbYl0sZyk7aWYoYj4wKWZvcihlPWQ7ZTxnLmxlbmd0aDtlKyspZm9yKGY9MDtmPGQ7ZisrKWlmKGdbZl09PT1nW2VdKXtnLnNwbGljZShlLS0sMSk7YnJlYWt9fXJldHVybiBnfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1wKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8ZDtiKyspaWYocC5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYmoodGhpcyxhLCExKSwibm90IixhKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhiaih0aGlzLGEsITApLCJmaWx0ZXIiLGEpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIWEmJih0eXBlb2YgYT09InN0cmluZyI/YmYudGVzdChhKT9wKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpwLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz1iZi50ZXN0KGEpfHx0eXBlb2YgYSE9InN0cmluZyI/cChhLGJ8fHRoaXMuY29udGV4dCk6MDtmb3IoO2Q8ZTtkKyspe2M9dGhpc1tkXTt3aGlsZShjJiZjLm93bmVyRG9jdW1lbnQmJmMhPT1iJiZjLm5vZGVUeXBlIT09MTEpe2lmKGc/Zy5pbmRleChjKT4tMTpwLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGMsYSkpe2YucHVzaChjKTticmVha31jPWMucGFyZW50Tm9kZX19cmV0dXJuIGY9Zi5sZW5ndGg+MT9wLnVuaXF1ZShmKTpmLHRoaXMucHVzaFN0YWNrKGYsImNsb3Nlc3QiLGEpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT90eXBlb2YgYT09InN0cmluZyI/cC5pbkFycmF5KHRoaXNbMF0scChhKSk6cC5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYT09InN0cmluZyI/cChhLGIpOnAubWFrZUFycmF5KGEmJmEubm9kZVR5cGU/W2FdOmEpLGQ9cC5tZXJnZSh0aGlzLmdldCgpLGMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhiaChjWzBdKXx8YmgoZFswXSk/ZDpwLnVuaXF1ZShkKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKGE9PW51bGw/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pLHAuZm4uYW5kU2VsZj1wLmZuLmFkZEJhY2sscC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLm5vZGVUeXBlIT09MTE/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBwLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAuZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBiaShhLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBiaShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gcC5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gcC5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHAuZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gcC5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHAuc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHAuc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gcC5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50OnAubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7cC5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPXAubWFwKHRoaXMsYixjKTtyZXR1cm4gYmMudGVzdChhKXx8KGQ9YyksZCYmdHlwZW9mIGQ9PSJzdHJpbmciJiYoZT1wLmZpbHRlcihkLGUpKSxlPXRoaXMubGVuZ3RoPjEmJiFiZ1thXT9wLnVuaXF1ZShlKTplLHRoaXMubGVuZ3RoPjEmJmJkLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhlLGEsay5jYWxsKGFyZ3VtZW50cykuam9pbigiLCIpKX19KSxwLmV4dGVuZCh7ZmlsdGVyOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksYi5sZW5ndGg9PT0xP3AuZmluZC5tYXRjaGVzU2VsZWN0b3IoYlswXSxhKT9bYlswXV06W106cC5maW5kLm1hdGNoZXMoYSxiKX0sZGlyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1bXSxmPWFbY107d2hpbGUoZiYmZi5ub2RlVHlwZSE9PTkmJihkPT09Ynx8Zi5ub2RlVHlwZSE9PTF8fCFwKGYpLmlzKGQpKSlmLm5vZGVUeXBlPT09MSYmZS5wdXNoKGYpLGY9ZltjXTtyZXR1cm4gZX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIGJsPSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZmlnY2FwdGlvbnxmaWd1cmV8Zm9vdGVyfGhlYWRlcnxoZ3JvdXB8bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHByb2dyZXNzfHNlY3Rpb258c3VtbWFyeXx0aW1lfHZpZGVvIixibT0vIGpRdWVyeVxkKz0iKD86bnVsbHxcZCspIi9nLGJuPS9eXHMrLyxibz0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLGJwPS88KFtcdzpdKykvLGJxPS88dGJvZHkvaSxicj0vPHwmIz9cdys7Lyxicz0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLGJ0PS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYnU9bmV3IFJlZ0V4cCgiPCg/OiIrYmwrIilbXFxzLz5dIiwiaSIpLGJ2PS9eKD86Y2hlY2tib3h8cmFkaW8pJC8sYnc9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksYng9L1wvKGphdmF8ZWNtYSlzY3JpcHQvaSxieT0vXlxzKjwhKD86XFtDREFUQVxbfFwtXC0pfFtcXVwtXXsyfT5ccyokL2csYno9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYkE9YmsoZSksYkI9YkEuYXBwZW5kQ2hpbGQoZS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ynoub3B0Z3JvdXA9Ynoub3B0aW9uLGJ6LnRib2R5PWJ6LnRmb290PWJ6LmNvbGdyb3VwPWJ6LmNhcHRpb249YnoudGhlYWQsYnoudGg9YnoudGQscC5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fChiei5fZGVmYXVsdD1bMSwiWDxkaXY+IiwiPC9kaXY+Il0pLHAuZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBwLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yj9wLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxlKS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihwLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtwKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9cChhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBwLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3AodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXAodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9cC5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7cCh0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe3Aubm9kZU5hbWUodGhpcywiYm9keSIpfHxwKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpeyh0aGlzLm5vZGVUeXBlPT09MXx8dGhpcy5ub2RlVHlwZT09PTExKSYmdGhpcy5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpeyh0aGlzLm5vZGVUeXBlPT09MXx8dGhpcy5ub2RlVHlwZT09PTExKSYmdGhpcy5pbnNlcnRCZWZvcmUoYSx0aGlzLmZpcnN0Q2hpbGQpfSl9LGJlZm9yZTpmdW5jdGlvbigpe2lmKCFiaCh0aGlzWzBdKSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9cC5jbGVhbihhcmd1bWVudHMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhwLm1lcmdlKGEsdGhpcyksImJlZm9yZSIsdGhpcy5zZWxlY3Rvcil9fSxhZnRlcjpmdW5jdGlvbigpe2lmKCFiaCh0aGlzWzBdKSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9cC5jbGVhbihhcmd1bWVudHMpO3JldHVybiB0aGlzLnB1c2hTdGFjayhwLm1lcmdlKHRoaXMsYSksImFmdGVyIix0aGlzLnNlbGVjdG9yKX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtmb3IoOyhjPXRoaXNbZF0pIT1udWxsO2QrKylpZighYXx8cC5maWx0ZXIoYSxbY10pLmxlbmd0aCkhYiYmYy5ub2RlVHlwZT09PTEmJihwLmNsZWFuRGF0YShjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLHAuY2xlYW5EYXRhKFtjXSkpLGMucGFyZW50Tm9kZSYmYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpe3ZhciBhLGI9MDtmb3IoOyhhPXRoaXNbYl0pIT1udWxsO2IrKyl7YS5ub2RlVHlwZT09PTEmJnAuY2xlYW5EYXRhKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBwLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBwLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBjPXRoaXNbMF18fHt9LGQ9MCxlPXRoaXMubGVuZ3RoO2lmKGE9PT1iKXJldHVybiBjLm5vZGVUeXBlPT09MT9jLmlubmVySFRNTC5yZXBsYWNlKGJtLCIiKTpiO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJzLnRlc3QoYSkmJihwLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8IWJ1LnRlc3QoYSkpJiYocC5zdXBwb3J0LmxlYWRpbmdXaGl0ZXNwYWNlfHwhYm4udGVzdChhKSkmJiFielsoYnAuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKGJvLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPGU7ZCsrKWM9dGhpc1tkXXx8e30sYy5ub2RlVHlwZT09PTEmJihwLmNsZWFuRGF0YShjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLGMuaW5uZXJIVE1MPWEpO2M9MH1jYXRjaChmKXt9fWMmJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGJoKHRoaXNbMF0pP3RoaXMubGVuZ3RoP3RoaXMucHVzaFN0YWNrKHAocC5pc0Z1bmN0aW9uKGEpP2EoKTphKSwicmVwbGFjZVdpdGgiLGEpOnRoaXM6cC5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1wKHRoaXMpLGQ9Yy5odG1sKCk7Yy5yZXBsYWNlV2l0aChhLmNhbGwodGhpcyxiLGQpKX0pOih0eXBlb2YgYSE9InN0cmluZyImJihhPXAoYSkuZGV0YWNoKCkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dFNpYmxpbmcsYz10aGlzLnBhcmVudE5vZGU7cCh0aGlzKS5yZW1vdmUoKSxiP3AoYikuYmVmb3JlKGEpOnAoYykuYXBwZW5kKGEpfSkpfSxkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGMsZCl7YT1bXS5jb25jYXQuYXBwbHkoW10sYSk7dmFyIGUsZixnLGgsaT0wLGo9YVswXSxrPVtdLGw9dGhpcy5sZW5ndGg7aWYoIXAuc3VwcG9ydC5jaGVja0Nsb25lJiZsPjEmJnR5cGVvZiBqPT0ic3RyaW5nIiYmYncudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7cCh0aGlzKS5kb21NYW5pcChhLGMsZCl9KTtpZihwLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1wKHRoaXMpO2FbMF09ai5jYWxsKHRoaXMsZSxjP2YuaHRtbCgpOmIpLGYuZG9tTWFuaXAoYSxjLGQpfSk7aWYodGhpc1swXSl7ZT1wLmJ1aWxkRnJhZ21lbnQoYSx0aGlzLGspLGc9ZS5mcmFnbWVudCxmPWcuZmlyc3RDaGlsZCxnLmNoaWxkTm9kZXMubGVuZ3RoPT09MSYmKGc9Zik7aWYoZil7Yz1jJiZwLm5vZGVOYW1lKGYsInRyIik7Zm9yKGg9ZS5jYWNoZWFibGV8fGwtMTtpPGw7aSsrKWQuY2FsbChjJiZwLm5vZGVOYW1lKHRoaXNbaV0sInRhYmxlIik/YkModGhpc1tpXSwidGJvZHkiKTp0aGlzW2ldLGk9PT1oP2c6cC5jbG9uZShnLCEwLCEwKSl9Zz1mPW51bGwsay5sZW5ndGgmJnAuZWFjaChrLGZ1bmN0aW9uKGEsYil7Yi5zcmM/cC5hamF4P3AuYWpheCh7dXJsOmIuc3JjLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsYXN5bmM6ITEsZ2xvYmFsOiExLCJ0aHJvd3MiOiEwfSk6cC5lcnJvcigibm8gYWpheCIpOnAuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYnksIiIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX0pfXJldHVybiB0aGlzfX0pLHAuYnVpbGRGcmFnbWVudD1mdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoLGk9YVswXTtyZXR1cm4gYz1jfHxlLGM9IWMubm9kZVR5cGUmJmNbMF18fGMsYz1jLm93bmVyRG9jdW1lbnR8fGMsYS5sZW5ndGg9PT0xJiZ0eXBlb2YgaT09InN0cmluZyImJmkubGVuZ3RoPDUxMiYmYz09PWUmJmkuY2hhckF0KDApPT09IjwiJiYhYnQudGVzdChpKSYmKHAuc3VwcG9ydC5jaGVja0Nsb25lfHwhYncudGVzdChpKSkmJihwLnN1cHBvcnQuaHRtbDVDbG9uZXx8IWJ1LnRlc3QoaSkpJiYoZz0hMCxmPXAuZnJhZ21lbnRzW2ldLGg9ZiE9PWIpLGZ8fChmPWMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHAuY2xlYW4oYSxjLGYsZCksZyYmKHAuZnJhZ21lbnRzW2ldPWgmJmYpKSx7ZnJhZ21lbnQ6ZixjYWNoZWFibGU6Z319LHAuZnJhZ21lbnRzPXt9LHAuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7cC5mblthXT1mdW5jdGlvbihjKXt2YXIgZCxlPTAsZj1bXSxnPXAoYyksaD1nLmxlbmd0aCxpPXRoaXMubGVuZ3RoPT09MSYmdGhpc1swXS5wYXJlbnROb2RlO2lmKChpPT1udWxsfHxpJiZpLm5vZGVUeXBlPT09MTEmJmkuY2hpbGROb2Rlcy5sZW5ndGg9PT0xKSYmaD09PTEpcmV0dXJuIGdbYl0odGhpc1swXSksdGhpcztmb3IoO2U8aDtlKyspZD0oZT4wP3RoaXMuY2xvbmUoITApOnRoaXMpLmdldCgpLHAoZ1tlXSlbYl0oZCksZj1mLmNvbmNhdChkKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZixhLGcuc2VsZWN0b3IpfX0pLHAuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGc7cC5zdXBwb3J0Lmh0bWw1Q2xvbmV8fHAuaXNYTUxEb2MoYSl8fCFidS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zz1hLmNsb25lTm9kZSghMCk6KGJCLmlubmVySFRNTD1hLm91dGVySFRNTCxiQi5yZW1vdmVDaGlsZChnPWJCLmZpcnN0Q2hpbGQpKTtpZigoIXAuc3VwcG9ydC5ub0Nsb25lRXZlbnR8fCFwLnN1cHBvcnQubm9DbG9uZUNoZWNrZWQpJiYoYS5ub2RlVHlwZT09PTF8fGEubm9kZVR5cGU9PT0xMSkmJiFwLmlzWE1MRG9jKGEpKXtiRShhLGcpLGQ9YkYoYSksZT1iRihnKTtmb3IoZj0wO2RbZl07KytmKWVbZl0mJmJFKGRbZl0sZVtmXSl9aWYoYil7YkQoYSxnKTtpZihjKXtkPWJGKGEpLGU9YkYoZyk7Zm9yKGY9MDtkW2ZdOysrZiliRChkW2ZdLGVbZl0pfX1yZXR1cm4gZD1lPW51bGwsZ30sY2xlYW46ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGYsZyxoLGksaixrLGwsbSxuLG8scSxyLHM9Yj09PWUmJmJBLHQ9W107aWYoIWJ8fHR5cGVvZiBiLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9PSJ1bmRlZmluZWQiKWI9ZTtmb3IoZj0wOyhoPWFbZl0pIT1udWxsO2YrKyl7dHlwZW9mIGg9PSJudW1iZXIiJiYoaCs9IiIpO2lmKCFoKWNvbnRpbnVlO2lmKHR5cGVvZiBoPT0ic3RyaW5nIilpZighYnIudGVzdChoKSloPWIuY3JlYXRlVGV4dE5vZGUoaCk7ZWxzZXtzPXN8fGJrKGIpLGw9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxzLmFwcGVuZENoaWxkKGwpLGg9aC5yZXBsYWNlKGJvLCI8JDE+PC8kMj4iKSxpPShicC5leGVjKGgpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGo9YnpbaV18fGJ6Ll9kZWZhdWx0LGs9alswXSxsLmlubmVySFRNTD1qWzFdK2gralsyXTt3aGlsZShrLS0pbD1sLmxhc3RDaGlsZDtpZighcC5zdXBwb3J0LnRib2R5KXttPWJxLnRlc3QoaCksbj1pPT09InRhYmxlIiYmIW0/bC5maXJzdENoaWxkJiZsLmZpcnN0Q2hpbGQuY2hpbGROb2RlczpqWzFdPT09Ijx0YWJsZT4iJiYhbT9sLmNoaWxkTm9kZXM6W107Zm9yKGc9bi5sZW5ndGgtMTtnPj0wOy0tZylwLm5vZGVOYW1lKG5bZ10sInRib2R5IikmJiFuW2ddLmNoaWxkTm9kZXMubGVuZ3RoJiZuW2ddLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobltnXSl9IXAuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmYm4udGVzdChoKSYmbC5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShibi5leGVjKGgpWzBdKSxsLmZpcnN0Q2hpbGQpLGg9bC5jaGlsZE5vZGVzLGwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKX1oLm5vZGVUeXBlP3QucHVzaChoKTpwLm1lcmdlKHQsaCl9bCYmKGg9bD1zPW51bGwpO2lmKCFwLnN1cHBvcnQuYXBwZW5kQ2hlY2tlZClmb3IoZj0wOyhoPXRbZl0pIT1udWxsO2YrKylwLm5vZGVOYW1lKGgsImlucHV0Iik/YkcoaCk6dHlwZW9mIGguZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiZwLmdyZXAoaC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKSxiRyk7aWYoYyl7cT1mdW5jdGlvbihhKXtpZighYS50eXBlfHxieC50ZXN0KGEudHlwZSkpcmV0dXJuIGQ/ZC5wdXNoKGEucGFyZW50Tm9kZT9hLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSk6YSk6Yy5hcHBlbmRDaGlsZChhKX07Zm9yKGY9MDsoaD10W2ZdKSE9bnVsbDtmKyspaWYoIXAubm9kZU5hbWUoaCwic2NyaXB0Iil8fCFxKGgpKWMuYXBwZW5kQ2hpbGQoaCksdHlwZW9mIGguZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiYocj1wLmdyZXAocC5tZXJnZShbXSxoLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkscSksdC5zcGxpY2UuYXBwbHkodCxbZisxLDBdLmNvbmNhdChyKSksZis9ci5sZW5ndGgpfXJldHVybiB0fSxjbGVhbkRhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnPTAsaD1wLmV4cGFuZG8saT1wLmNhY2hlLGo9cC5zdXBwb3J0LmRlbGV0ZUV4cGFuZG8saz1wLmV2ZW50LnNwZWNpYWw7Zm9yKDsoZT1hW2ddKSE9bnVsbDtnKyspaWYoYnx8cC5hY2NlcHREYXRhKGUpKXtkPWVbaF0sYz1kJiZpW2RdO2lmKGMpe2lmKGMuZXZlbnRzKWZvcihmIGluIGMuZXZlbnRzKWtbZl0/cC5ldmVudC5yZW1vdmUoZSxmKTpwLnJlbW92ZUV2ZW50KGUsZixjLmhhbmRsZSk7aVtkXSYmKGRlbGV0ZSBpW2RdLGo/ZGVsZXRlIGVbaF06ZS5yZW1vdmVBdHRyaWJ1dGU/ZS5yZW1vdmVBdHRyaWJ1dGUoaCk6ZVtoXT1udWxsLHAuZGVsZXRlZElkcy5wdXNoKGQpKX19fX0pLGZ1bmN0aW9uKCl7dmFyIGEsYjtwLnVhTWF0Y2g9ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7dmFyIGI9LyhjaHJvbWUpWyBcL10oW1x3Ll0rKS8uZXhlYyhhKXx8Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8uZXhlYyhhKXx8LyhvcGVyYSkoPzouKnZlcnNpb258KVsgXC9dKFtcdy5dKykvLmV4ZWMoYSl8fC8obXNpZSkgKFtcdy5dKykvLmV4ZWMoYSl8fGEuaW5kZXhPZigiY29tcGF0aWJsZSIpPDAmJi8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKyl8KS8uZXhlYyhhKXx8W107cmV0dXJue2Jyb3dzZXI6YlsxXXx8IiIsdmVyc2lvbjpiWzJdfHwiMCJ9fSxhPXAudWFNYXRjaChnLnVzZXJBZ2VudCksYj17fSxhLmJyb3dzZXImJihiW2EuYnJvd3Nlcl09ITAsYi52ZXJzaW9uPWEudmVyc2lvbiksYi5jaHJvbWU/Yi53ZWJraXQ9ITA6Yi53ZWJraXQmJihiLnNhZmFyaT0hMCkscC5icm93c2VyPWIscC5zdWI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7cmV0dXJuIG5ldyBhLmZuLmluaXQoYixjKX1wLmV4dGVuZCghMCxhLHRoaXMpLGEuc3VwZXJjbGFzcz10aGlzLGEuZm49YS5wcm90b3R5cGU9dGhpcygpLGEuZm4uY29uc3RydWN0b3I9YSxhLnN1Yj10aGlzLnN1YixhLmZuLmluaXQ9ZnVuY3Rpb24gYyhjLGQpe3JldHVybiBkJiZkIGluc3RhbmNlb2YgcCYmIShkIGluc3RhbmNlb2YgYSkmJihkPWEoZCkpLHAuZm4uaW5pdC5jYWxsKHRoaXMsYyxkLGIpfSxhLmZuLmluaXQucHJvdG90eXBlPWEuZm47dmFyIGI9YShlKTtyZXR1cm4gYX19KCk7dmFyIGJILGJJLGJKLGJLPS9hbHBoYVwoW14pXSpcKS9pLGJMPS9vcGFjaXR5PShbXildKikvLGJNPS9eKHRvcHxyaWdodHxib3R0b218bGVmdCkkLyxiTj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sYk89L15tYXJnaW4vLGJQPW5ldyBSZWdFeHAoIl4oIitxKyIpKC4qKSQiLCJpIiksYlE9bmV3IFJlZ0V4cCgiXigiK3ErIikoPyFweClbYS16JV0rJCIsImkiKSxiUj1uZXcgUmVnRXhwKCJeKFstK10pPSgiK3ErIikiLCJpIiksYlM9e30sYlQ9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJVPXtsZXR0ZXJTcGFjaW5nOjAsZm9udFdlaWdodDo0MDB9LGJWPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sYlc9WyJXZWJraXQiLCJPIiwiTW96IiwibXMiXSxiWD1wLmZuLnRvZ2dsZTtwLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHAuYWNjZXNzKHRoaXMsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9wLnN0eWxlKGEsYyxkKTpwLmNzcyhhLGMpfSxhLGMsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBiJCh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBiJCh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJib29sZWFuIjtyZXR1cm4gcC5pc0Z1bmN0aW9uKGEpJiZwLmlzRnVuY3Rpb24oYik/YlguYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuZWFjaChmdW5jdGlvbigpeyhjP2E6YloodGhpcykpP3AodGhpcykuc2hvdygpOnAodGhpcykuaGlkZSgpfSl9fSkscC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1iSChhLCJvcGFjaXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y319fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6cC5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighYXx8YS5ub2RlVHlwZT09PTN8fGEubm9kZVR5cGU9PT04fHwhYS5zdHlsZSlyZXR1cm47dmFyIGYsZyxoLGk9cC5jYW1lbENhc2UoYyksaj1hLnN0eWxlO2M9cC5jc3NQcm9wc1tpXXx8KHAuY3NzUHJvcHNbaV09YlkoaixpKSksaD1wLmNzc0hvb2tzW2NdfHxwLmNzc0hvb2tzW2ldO2lmKGQ9PT1iKXJldHVybiBoJiYiZ2V0ImluIGgmJihmPWguZ2V0KGEsITEsZSkpIT09Yj9mOmpbY107Zz10eXBlb2YgZCxnPT09InN0cmluZyImJihmPWJSLmV4ZWMoZCkpJiYoZD0oZlsxXSsxKSpmWzJdK3BhcnNlRmxvYXQocC5jc3MoYSxjKSksZz0ibnVtYmVyIik7aWYoZD09bnVsbHx8Zz09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47Zz09PSJudW1iZXIiJiYhcC5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZighaHx8ISgic2V0ImluIGgpfHwoZD1oLnNldChhLGQsZSkpIT09Yil0cnl7altjXT1kfWNhdGNoKGspe319LGNzczpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZixnLGgsaT1wLmNhbWVsQ2FzZShjKTtyZXR1cm4gYz1wLmNzc1Byb3BzW2ldfHwocC5jc3NQcm9wc1tpXT1iWShhLnN0eWxlLGkpKSxoPXAuY3NzSG9va3NbY118fHAuY3NzSG9va3NbaV0saCYmImdldCJpbiBoJiYoZj1oLmdldChhLCEwLGUpKSxmPT09YiYmKGY9YkgoYSxjKSksZj09PSJub3JtYWwiJiZjIGluIGJVJiYoZj1iVVtjXSksZHx8ZSE9PWI/KGc9cGFyc2VGbG9hdChmKSxkfHxwLmlzTnVtZXJpYyhnKT9nfHwwOmYpOmZ9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fTtmb3IoZSBpbiBiKWZbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07ZD1jLmNhbGwoYSk7Zm9yKGUgaW4gYilhLnN0eWxlW2VdPWZbZV07cmV0dXJuIGR9fSksYS5nZXRDb21wdXRlZFN0eWxlP2JIPWZ1bmN0aW9uKGIsYyl7dmFyIGQsZSxmLGcsaD1hLmdldENvbXB1dGVkU3R5bGUoYixudWxsKSxpPWIuc3R5bGU7cmV0dXJuIGgmJihkPWhbY10sZD09PSIiJiYhcC5jb250YWlucyhiLm93bmVyRG9jdW1lbnQsYikmJihkPXAuc3R5bGUoYixjKSksYlEudGVzdChkKSYmYk8udGVzdChjKSYmKGU9aS53aWR0aCxmPWkubWluV2lkdGgsZz1pLm1heFdpZHRoLGkubWluV2lkdGg9aS5tYXhXaWR0aD1pLndpZHRoPWQsZD1oLndpZHRoLGkud2lkdGg9ZSxpLm1pbldpZHRoPWYsaS5tYXhXaWR0aD1nKSksZH06ZS5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoYkg9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5jdXJyZW50U3R5bGUmJmEuY3VycmVudFN0eWxlW2JdLGY9YS5zdHlsZTtyZXR1cm4gZT09bnVsbCYmZiYmZltiXSYmKGU9ZltiXSksYlEudGVzdChlKSYmIWJNLnRlc3QoYikmJihjPWYubGVmdCxkPWEucnVudGltZVN0eWxlJiZhLnJ1bnRpbWVTdHlsZS5sZWZ0LGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQpLGYubGVmdD1iPT09ImZvbnRTaXplIj8iMWVtIjplLGU9Zi5waXhlbExlZnQrInB4IixmLmxlZnQ9YyxkJiYoYS5ydW50aW1lU3R5bGUubGVmdD1kKSksZT09PSIiPyJhdXRvIjplfSkscC5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe3AuY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7aWYoYylyZXR1cm4gYS5vZmZzZXRXaWR0aD09PTAmJmJOLnRlc3QoYkgoYSwiZGlzcGxheSIpKT9wLnN3YXAoYSxiVCxmdW5jdGlvbigpe3JldHVybiBjYihhLGIsZCl9KTpjYihhLGIsZCl9LHNldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGJfKGEsYyxkP2NhKGEsYixkLHAuc3VwcG9ydC5ib3hTaXppbmcmJnAuY3NzKGEsImJveFNpemluZyIpPT09ImJvcmRlci1ib3giKTowKX19fSkscC5zdXBwb3J0Lm9wYWNpdHl8fChwLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBiTC50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/LjAxKnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9cC5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZj1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJnAudHJpbShmLnJlcGxhY2UoYkssIiIpKT09PSIiJiZjLnJlbW92ZUF0dHJpYnV0ZSl7Yy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpO2lmKGQmJiFkLmZpbHRlcilyZXR1cm59Yy5maWx0ZXI9YksudGVzdChmKT9mLnJlcGxhY2UoYkssZSk6ZisiICIrZX19KSxwKGZ1bmN0aW9uKCl7cC5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHR8fChwLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gcC5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LGZ1bmN0aW9uKCl7aWYoYilyZXR1cm4gYkgoYSwibWFyZ2luUmlnaHQiKX0pfX0pLCFwLnN1cHBvcnQucGl4ZWxQb3NpdGlvbiYmcC5mbi5wb3NpdGlvbiYmcC5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7cC5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyl7aWYoYyl7dmFyIGQ9YkgoYSxiKTtyZXR1cm4gYlEudGVzdChkKT9wKGEpLnBvc2l0aW9uKClbYl0rInB4IjpkfX19fSl9KSxwLmV4cHImJnAuZXhwci5maWx0ZXJzJiYocC5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiBhLm9mZnNldFdpZHRoPT09MCYmYS5vZmZzZXRIZWlnaHQ9PT0wfHwhcC5zdXBwb3J0LnJlbGlhYmxlSGlkZGVuT2Zmc2V0cyYmKGEuc3R5bGUmJmEuc3R5bGUuZGlzcGxheXx8YkgoYSwiZGlzcGxheSIpKT09PSJub25lIn0scC5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hcC5leHByLmZpbHRlcnMuaGlkZGVuKGEpfSkscC5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtwLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXt2YXIgZCxlPXR5cGVvZiBjPT0ic3RyaW5nIj9jLnNwbGl0KCIgIik6W2NdLGY9e307Zm9yKGQ9MDtkPDQ7ZCsrKWZbYStiVltkXStiXT1lW2RdfHxlW2QtMl18fGVbMF07cmV0dXJuIGZ9fSxiTy50ZXN0KGEpfHwocC5jc3NIb29rc1thK2JdLnNldD1iXyl9KTt2YXIgY2Q9LyUyMC9nLGNlPS9cW1xdJC8sY2Y9L1xyP1xuL2csY2c9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGNoPS9eKD86c2VsZWN0fHRleHRhcmVhKS9pO3AuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gcC5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzP3AubWFrZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lJiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tlZHx8Y2gudGVzdCh0aGlzLm5vZGVOYW1lKXx8Y2cudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPXAodGhpcykudmFsKCk7cmV0dXJuIGM9PW51bGw/bnVsbDpwLmlzQXJyYXkoYyk/cC5tYXAoYyxmdW5jdGlvbihhLGMpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoY2YsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGNmLCJcclxuIil9fSkuZ2V0KCl9fSkscC5wYXJhbT1mdW5jdGlvbihhLGMpe3ZhciBkLGU9W10sZj1mdW5jdGlvbihhLGIpe2I9cC5pc0Z1bmN0aW9uKGIpP2IoKTpiPT1udWxsPyIiOmIsZVtlLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2M9PT1iJiYoYz1wLmFqYXhTZXR0aW5ncyYmcC5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKHAuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFwLmlzUGxhaW5PYmplY3QoYSkpcC5lYWNoKGEsZnVuY3Rpb24oKXtmKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGQgaW4gYSljaShkLGFbZF0sYyxmKTtyZXR1cm4gZS5qb2luKCImIikucmVwbGFjZShjZCwiKyIpfTt2YXIgY2osY2ssY2w9LyMuKiQvLGNtPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsY249L14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdlfC4rXC1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxjbz0vXig/OkdFVHxIRUFEKSQvLGNwPS9eXC9cLy8sY3E9L1w/Lyxjcj0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSxjcz0vKFs/Jl0pXz1bXiZdKi8sY3Q9L14oW1x3XCtcLlwtXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLGN1PXAuZm4ubG9hZCxjdj17fSxjdz17fSxjeD1bIiovIl0rWyIqIl07dHJ5e2NrPWYuaHJlZn1jYXRjaChjeSl7Y2s9ZS5jcmVhdGVFbGVtZW50KCJhIiksY2suaHJlZj0iIixjaz1jay5ocmVmfWNqPWN0LmV4ZWMoY2sudG9Mb3dlckNhc2UoKSl8fFtdLHAuZm4ubG9hZD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZjdSlyZXR1cm4gY3UuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZSxmLGcsaD10aGlzLGk9YS5pbmRleE9mKCIgIik7cmV0dXJuIGk+PTAmJihlPWEuc2xpY2UoaSxhLmxlbmd0aCksYT1hLnNsaWNlKDAsaSkpLHAuaXNGdW5jdGlvbihjKT8oZD1jLGM9Yik6YyYmdHlwZW9mIGM9PSJvYmplY3QiJiYoZj0iUE9TVCIpLHAuYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmMsY29tcGxldGU6ZnVuY3Rpb24oYSxiKXtkJiZoLmVhY2goZCxnfHxbYS5yZXNwb25zZVRleHQsYixhXSl9fSkuZG9uZShmdW5jdGlvbihhKXtnPWFyZ3VtZW50cyxoLmh0bWwoZT9wKCI8ZGl2PiIpLmFwcGVuZChhLnJlcGxhY2UoY3IsIiIpKS5maW5kKGUpOmEpfSksdGhpc30scC5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3AuZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxwLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtwW2NdPWZ1bmN0aW9uKGEsZCxlLGYpe3JldHVybiBwLmlzRnVuY3Rpb24oZCkmJihmPWZ8fGUsZT1kLGQ9YikscC5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpmfSl9fSkscC5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBwLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBwLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9jQihhLHAuYWpheFNldHRpbmdzKTooYj1hLGE9cC5hamF4U2V0dGluZ3MpLGNCKGEsYiksYX0sYWpheFNldHRpbmdzOnt1cmw6Y2ssaXNMb2NhbDpjbi50ZXN0KGNqWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04Iixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Y3h9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpwLnBhcnNlSlNPTiwidGV4dCB4bWwiOnAucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6Y3ooY3YpLGFqYXhUcmFuc3BvcnQ6Y3ooY3cpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB5KGEsYyxmLGkpe3ZhciBrLHMsdCx1LHcseT1jO2lmKHY9PT0yKXJldHVybjt2PTIsaCYmY2xlYXJUaW1lb3V0KGgpLGc9YixlPWl8fCIiLHgucmVhZHlTdGF0ZT1hPjA/NDowLGYmJih1PWNDKGwseCxmKSk7aWYoYT49MjAwJiZhPDMwMHx8YT09PTMwNClsLmlmTW9kaWZpZWQmJih3PXguZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYocC5sYXN0TW9kaWZpZWRbZF09dyksdz14LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIiksdyYmKHAuZXRhZ1tkXT13KSksYT09PTMwND8oeT0ibm90bW9kaWZpZWQiLGs9ITApOihrPWNEKGwsdSkseT1rLnN0YXRlLHM9ay5kYXRhLHQ9ay5lcnJvcixrPSF0KTtlbHNle3Q9eTtpZigheXx8YSl5PSJlcnJvciIsYTwwJiYoYT0wKX14LnN0YXR1cz1hLHguc3RhdHVzVGV4dD0oY3x8eSkrIiIsaz9vLnJlc29sdmVXaXRoKG0sW3MseSx4XSk6by5yZWplY3RXaXRoKG0sW3gseSx0XSkseC5zdGF0dXNDb2RlKHIpLHI9YixqJiZuLnRyaWdnZXIoImFqYXgiKyhrPyJTdWNjZXNzIjoiRXJyb3IiKSxbeCxsLGs/czp0XSkscS5maXJlV2l0aChtLFt4LHldKSxqJiYobi50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt4LGxdKSwtLXAuYWN0aXZlfHxwLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfXR5cGVvZiBhPT0ib2JqZWN0IiYmKGM9YSxhPWIpLGM9Y3x8e307dmFyIGQsZSxmLGcsaCxpLGosayxsPXAuYWpheFNldHVwKHt9LGMpLG09bC5jb250ZXh0fHxsLG49bSE9PWwmJihtLm5vZGVUeXBlfHxtIGluc3RhbmNlb2YgcCk/cChtKTpwLmV2ZW50LG89cC5EZWZlcnJlZCgpLHE9cC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iikscj1sLnN0YXR1c0NvZGV8fHt9LHQ9e30sdT17fSx2PTAsdz0iY2FuY2VsZWQiLHg9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXYpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPXVbY109dVtjXXx8YSx0W2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiB2PT09Mj9lOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHY9PT0yKXtpZighZil7Zj17fTt3aGlsZShjPWNtLmV4ZWMoZSkpZltjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1mW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gdnx8KGwubWltZVR5cGU9YSksdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YXx8dyxnJiZnLmFib3J0KGEpLHkoMCxhKSx0aGlzfX07by5wcm9taXNlKHgpLHguc3VjY2Vzcz14LmRvbmUseC5lcnJvcj14LmZhaWwseC5jb21wbGV0ZT1xLmFkZCx4LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYodjwyKWZvcihiIGluIGEpcltiXT1bcltiXSxhW2JdXTtlbHNlIGI9YVt4LnN0YXR1c10seC5hbHdheXMoYil9cmV0dXJuIHRoaXN9LGwudXJsPSgoYXx8bC51cmwpKyIiKS5yZXBsYWNlKGNsLCIiKS5yZXBsYWNlKGNwLGNqWzFdKyIvLyIpLGwuZGF0YVR5cGVzPXAudHJpbShsLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQocyksbC5jcm9zc0RvbWFpbj09bnVsbCYmKGk9Y3QuZXhlYyhsLnVybC50b0xvd2VyQ2FzZSgpKXx8ITEsbC5jcm9zc0RvbWFpbj1pJiZpLmpvaW4oIjoiKSsoaVszXT8iIjppWzFdPT09Imh0dHA6Ij84MDo0NDMpIT09Y2ouam9pbigiOiIpKyhjalszXT8iIjpjalsxXT09PSJodHRwOiI/ODA6NDQzKSksbC5kYXRhJiZsLnByb2Nlc3NEYXRhJiZ0eXBlb2YgbC5kYXRhIT0ic3RyaW5nIiYmKGwuZGF0YT1wLnBhcmFtKGwuZGF0YSxsLnRyYWRpdGlvbmFsKSksY0EoY3YsbCxjLHgpO2lmKHY9PT0yKXJldHVybiB4O2o9bC5nbG9iYWwsbC50eXBlPWwudHlwZS50b1VwcGVyQ2FzZSgpLGwuaGFzQ29udGVudD0hY28udGVzdChsLnR5cGUpLGomJnAuYWN0aXZlKys9PT0wJiZwLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpO2lmKCFsLmhhc0NvbnRlbnQpe2wuZGF0YSYmKGwudXJsKz0oY3EudGVzdChsLnVybCk/IiYiOiI/IikrbC5kYXRhLGRlbGV0ZSBsLmRhdGEpLGQ9bC51cmw7aWYobC5jYWNoZT09PSExKXt2YXIgej1wLm5vdygpLEE9bC51cmwucmVwbGFjZShjcywiJDFfPSIreik7bC51cmw9QSsoQT09PWwudXJsPyhjcS50ZXN0KGwudXJsKT8iJiI6Ij8iKSsiXz0iK3o6IiIpfX0obC5kYXRhJiZsLmhhc0NvbnRlbnQmJmwuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSkmJnguc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixsLmNvbnRlbnRUeXBlKSxsLmlmTW9kaWZpZWQmJihkPWR8fGwudXJsLHAubGFzdE1vZGlmaWVkW2RdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixwLmxhc3RNb2RpZmllZFtkXSkscC5ldGFnW2RdJiZ4LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLHAuZXRhZ1tkXSkpLHguc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixsLmRhdGFUeXBlc1swXSYmbC5hY2NlcHRzW2wuZGF0YVR5cGVzWzBdXT9sLmFjY2VwdHNbbC5kYXRhVHlwZXNbMF1dKyhsLmRhdGFUeXBlc1swXSE9PSIqIj8iLCAiK2N4KyI7IHE9MC4wMSI6IiIpOmwuYWNjZXB0c1siKiJdKTtmb3IoayBpbiBsLmhlYWRlcnMpeC5zZXRSZXF1ZXN0SGVhZGVyKGssbC5oZWFkZXJzW2tdKTtpZighbC5iZWZvcmVTZW5kfHxsLmJlZm9yZVNlbmQuY2FsbChtLHgsbCkhPT0hMSYmdiE9PTIpe3c9ImFib3J0Ijtmb3IoayBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl4W2tdKGxba10pO2c9Y0EoY3csbCxjLHgpO2lmKCFnKXkoLTEsIk5vIFRyYW5zcG9ydCIpO2Vsc2V7eC5yZWFkeVN0YXRlPTEsaiYmbi50cmlnZ2VyKCJhamF4U2VuZCIsW3gsbF0pLGwuYXN5bmMmJmwudGltZW91dD4wJiYoaD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eC5hYm9ydCgidGltZW91dCIpfSxsLnRpbWVvdXQpKTt0cnl7dj0xLGcuc2VuZCh0LHkpfWNhdGNoKEIpe2lmKHY8Mil5KC0xLEIpO2Vsc2UgdGhyb3cgQn19cmV0dXJuIHh9cmV0dXJuIHguYWJvcnQoKX0sYWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY0U9W10sY0Y9L1w/LyxjRz0vKD0pXD8oPz0mfCQpfFw/XD8vLGNIPXAubm93KCk7cC5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPWNFLnBvcCgpfHxwLmV4cGFuZG8rIl8iK2NIKys7cmV0dXJuIHRoaXNbYV09ITAsYX19KSxwLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGMsZCxlKXt2YXIgZixnLGgsaT1jLmRhdGEsaj1jLnVybCxrPWMuanNvbnAhPT0hMSxsPWsmJmNHLnRlc3QoaiksbT1rJiYhbCYmdHlwZW9mIGk9PSJzdHJpbmciJiYhKGMuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmY0cudGVzdChpKTtpZihjLmRhdGFUeXBlc1swXT09PSJqc29ucCJ8fGx8fG0pcmV0dXJuIGY9Yy5qc29ucENhbGxiYWNrPXAuaXNGdW5jdGlvbihjLmpzb25wQ2FsbGJhY2spP2MuanNvbnBDYWxsYmFjaygpOmMuanNvbnBDYWxsYmFjayxnPWFbZl0sbD9jLnVybD1qLnJlcGxhY2UoY0csIiQxIitmKTptP2MuZGF0YT1pLnJlcGxhY2UoY0csIiQxIitmKTprJiYoYy51cmwrPShjRi50ZXN0KGopPyImIjoiPyIpK2MuanNvbnArIj0iK2YpLGMuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBofHxwLmVycm9yKGYrIiB3YXMgbm90IGNhbGxlZCIpLGhbMF19LGMuZGF0YVR5cGVzWzBdPSJqc29uIixhW2ZdPWZ1bmN0aW9uKCl7aD1hcmd1bWVudHN9LGUuYWx3YXlzKGZ1bmN0aW9uKCl7YVtmXT1nLGNbZl0mJihjLmpzb25wQ2FsbGJhY2s9ZC5qc29ucENhbGxiYWNrLGNFLnB1c2goZikpLGgmJnAuaXNGdW5jdGlvbihnKSYmZyhoWzBdKSxoPWc9Yn0pLCJzY3JpcHQifSkscC5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBwLmdsb2JhbEV2YWwoYSksYX19fSkscC5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2EuY2FjaGU9PT1iJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0hMSl9KSxwLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGMsZD1lLmhlYWR8fGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8ZS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixnKXtjPWUuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYy5hc3luYz0iYXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGMuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGMuc3JjPWEudXJsLGMub25sb2FkPWMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsZSl7aWYoZXx8IWMucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChjLnJlYWR5U3RhdGUpKWMub25sb2FkPWMub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZCYmYy5wYXJlbnROb2RlJiZkLnJlbW92ZUNoaWxkKGMpLGM9YixlfHxnKDIwMCwic3VjY2VzcyIpfSxkLmluc2VydEJlZm9yZShjLGQuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYy5vbmxvYWQoMCwxKX19fX0pO3ZhciBjSSxjSj1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gY0kpY0lbYV0oMCwxKX06ITEsY0s9MDtwLmFqYXhTZXR0aW5ncy54aHI9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmY0woKXx8Y00oKX06Y0wsZnVuY3Rpb24oYSl7cC5leHRlbmQocC5zdXBwb3J0LHthamF4OiEhYSxjb3JzOiEhYSYmIndpdGhDcmVkZW50aWFscyJpbiBhfSl9KHAuYWpheFNldHRpbmdzLnhocigpKSxwLnN1cHBvcnQuYWpheCYmcC5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGMpe2lmKCFjLmNyb3NzRG9tYWlufHxwLnN1cHBvcnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXt2YXIgZyxoLGk9Yy54aHIoKTtjLnVzZXJuYW1lP2kub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmkub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyk7aWYoYy54aHJGaWVsZHMpZm9yKGggaW4gYy54aHJGaWVsZHMpaVtoXT1jLnhockZpZWxkc1toXTtjLm1pbWVUeXBlJiZpLm92ZXJyaWRlTWltZVR5cGUmJmkub3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBlKSwhYy5jcm9zc0RvbWFpbiYmIWVbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGggaW4gZSlpLnNldFJlcXVlc3RIZWFkZXIoaCxlW2hdKX1jYXRjaChqKXt9aS5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxudWxsKSxkPWZ1bmN0aW9uKGEsZSl7dmFyIGgsaixrLGwsbTt0cnl7aWYoZCYmKGV8fGkucmVhZHlTdGF0ZT09PTQpKXtkPWIsZyYmKGkub25yZWFkeXN0YXRlY2hhbmdlPXAubm9vcCxjSiYmZGVsZXRlIGNJW2ddKTtpZihlKWkucmVhZHlTdGF0ZSE9PTQmJmkuYWJvcnQoKTtlbHNle2g9aS5zdGF0dXMsaz1pLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLGw9e30sbT1pLnJlc3BvbnNlWE1MLG0mJm0uZG9jdW1lbnRFbGVtZW50JiYobC54bWw9bSk7dHJ5e2wudGV4dD1pLnJlc3BvbnNlVGV4dH1jYXRjaChhKXt9dHJ5e2o9aS5zdGF0dXNUZXh0fWNhdGNoKG4pe2o9IiJ9IWgmJmMuaXNMb2NhbCYmIWMuY3Jvc3NEb21haW4/aD1sLnRleHQ/MjAwOjQwNDpoPT09MTIyMyYmKGg9MjA0KX19fWNhdGNoKG8pe2V8fGYoLTEsbyl9bCYmZihoLGosbCxrKX0sYy5hc3luYz9pLnJlYWR5U3RhdGU9PT00P3NldFRpbWVvdXQoZCwwKTooZz0rK2NLLGNKJiYoY0l8fChjST17fSxwKGEpLnVubG9hZChjSikpLGNJW2ddPWQpLGkub25yZWFkeXN0YXRlY2hhbmdlPWQpOmQoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtkJiZkKDAsMSl9fX19KTt2YXIgY04sY08sY1A9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNRPW5ldyBSZWdFeHAoIl4oPzooWy0rXSk9fCkoIitxKyIpKFthLXolXSopJCIsImkiKSxjUj0vcXVldWVIb29rcyQvLGNTPVtjWV0sY1Q9eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGY9Y1EuZXhlYyhiKSxnPWUuY3VyKCksaD0rZ3x8MCxpPTEsaj0yMDtpZihmKXtjPStmWzJdLGQ9ZlszXXx8KHAuY3NzTnVtYmVyW2FdPyIiOiJweCIpO2lmKGQhPT0icHgiJiZoKXtoPXAuY3NzKGUuZWxlbSxhLCEwKXx8Y3x8MTtkbyBpPWl8fCIuNSIsaD1oL2kscC5zdHlsZShlLmVsZW0sYSxoK2QpO3doaWxlKGkhPT0oaT1lLmN1cigpL2cpJiZpIT09MSYmLS1qKX1lLnVuaXQ9ZCxlLnN0YXJ0PWgsZS5lbmQ9ZlsxXT9oKyhmWzFdKzEpKmM6Y31yZXR1cm4gZX1dfTtwLkFuaW1hdGlvbj1wLmV4dGVuZChjVyx7dHdlZW5lcjpmdW5jdGlvbihhLGIpe3AuaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO3ZhciBjLGQ9MCxlPWEubGVuZ3RoO2Zvcig7ZDxlO2QrKyljPWFbZF0sY1RbY109Y1RbY118fFtdLGNUW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/Y1MudW5zaGlmdChhKTpjUy5wdXNoKGEpfX0pLHAuVHdlZW49Y1osY1oucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpjWixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwocC5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPWNaLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpjWi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1jWi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9cC5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOmNaLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LGNaLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1jWi5wcm90b3R5cGUsY1oucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBhLmVsZW1bYS5wcm9wXT09bnVsbHx8ISFhLmVsZW0uc3R5bGUmJmEuZWxlbS5zdHlsZVthLnByb3BdIT1udWxsPyhiPXAuY3NzKGEuZWxlbSxhLnByb3AsITEsIiIpLCFifHxiPT09ImF1dG8iPzA6Yik6YS5lbGVtW2EucHJvcF19LHNldDpmdW5jdGlvbihhKXtwLmZ4LnN0ZXBbYS5wcm9wXT9wLmZ4LnN0ZXBbYS5wcm9wXShhKTphLmVsZW0uc3R5bGUmJihhLmVsZW0uc3R5bGVbcC5jc3NQcm9wc1thLnByb3BdXSE9bnVsbHx8cC5jc3NIb29rc1thLnByb3BdKT9wLnN0eWxlKGEuZWxlbSxhLnByb3AsYS5ub3crYS51bml0KTphLmVsZW1bYS5wcm9wXT1hLm5vd319fSxjWi5wcm9wSG9va3Muc2Nyb2xsVG9wPWNaLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19LHAuZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sZnVuY3Rpb24oYSxiKXt2YXIgYz1wLmZuW2JdO3AuZm5bYl09ZnVuY3Rpb24oZCxlLGYpe3JldHVybiBkPT1udWxsfHx0eXBlb2YgZD09ImJvb2xlYW4ifHwhYSYmcC5pc0Z1bmN0aW9uKGQpJiZwLmlzRnVuY3Rpb24oZSk/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGMkKGIsITApLGQsZSxmKX19KSxwLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihiWikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9cC5pc0VtcHR5T2JqZWN0KGEpLGY9cC5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWNXKHRoaXMscC5leHRlbmQoe30sYSksZik7ZSYmYi5zdG9wKCEwKX07cmV0dXJuIGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGQpfTtyZXR1cm4gdHlwZW9mIGEhPSJzdHJpbmciJiYoZD1jLGM9YSxhPWIpLGMmJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxjPWEhPW51bGwmJmErInF1ZXVlSG9va3MiLGY9cC50aW1lcnMsZz1wLl9kYXRhKHRoaXMpO2lmKGMpZ1tjXSYmZ1tjXS5zdG9wJiZlKGdbY10pO2Vsc2UgZm9yKGMgaW4gZylnW2NdJiZnW2NdLnN0b3AmJmNSLnRlc3QoYykmJmUoZ1tjXSk7Zm9yKGM9Zi5sZW5ndGg7Yy0tOylmW2NdLmVsZW09PT10aGlzJiYoYT09bnVsbHx8ZltjXS5xdWV1ZT09PWEpJiYoZltjXS5hbmltLnN0b3AoZCksYj0hMSxmLnNwbGljZShjLDEpKTsoYnx8IWQpJiZwLmRlcXVldWUodGhpcyxhKX0pfX0pLHAuZWFjaCh7c2xpZGVEb3duOmMkKCJzaG93Iiksc2xpZGVVcDpjJCgiaGlkZSIpLHNsaWRlVG9nZ2xlOmMkKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7cC5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxwLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiZ0eXBlb2YgYT09Im9iamVjdCI/cC5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxwLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIXAuaXNGdW5jdGlvbihiKSYmYn07ZC5kdXJhdGlvbj1wLmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0aW9uPT0ibnVtYmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gcC5meC5zcGVlZHM/cC5meC5zcGVlZHNbZC5kdXJhdGlvbl06cC5meC5zcGVlZHMuX2RlZmF1bHQ7aWYoZC5xdWV1ZT09bnVsbHx8ZC5xdWV1ZT09PSEwKWQucXVldWU9ImZ4IjtyZXR1cm4gZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7cC5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZwLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0scC5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0scC50aW1lcnM9W10scC5meD1jWi5wcm90b3R5cGUuaW5pdCxwLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPXAudGltZXJzLGM9MDtmb3IoO2M8Yi5sZW5ndGg7YysrKWE9YltjXSwhYSgpJiZiW2NdPT09YSYmYi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxwLmZ4LnN0b3AoKX0scC5meC50aW1lcj1mdW5jdGlvbihhKXthKCkmJnAudGltZXJzLnB1c2goYSkmJiFjTyYmKGNPPXNldEludGVydmFsKHAuZngudGljayxwLmZ4LmludGVydmFsKSl9LHAuZnguaW50ZXJ2YWw9MTMscC5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChjTyksY089bnVsbH0scC5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0scC5meC5zdGVwPXt9LHAuZXhwciYmcC5leHByLmZpbHRlcnMmJihwLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gcC5ncmVwKHAudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGNfPS9eKD86Ym9keXxodG1sKSQvaTtwLmZuLm9mZnNldD1mdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBhPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtwLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGMsZCxlLGYsZyxoLGksaj17dG9wOjAsbGVmdDowfSxrPXRoaXNbMF0sbD1rJiZrLm93bmVyRG9jdW1lbnQ7aWYoIWwpcmV0dXJuO3JldHVybihkPWwuYm9keSk9PT1rP3Aub2Zmc2V0LmJvZHlPZmZzZXQoayk6KGM9bC5kb2N1bWVudEVsZW1lbnQscC5jb250YWlucyhjLGspPyh0eXBlb2Ygay5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPSJ1bmRlZmluZWQiJiYoaj1rLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxlPWRhKGwpLGY9Yy5jbGllbnRUb3B8fGQuY2xpZW50VG9wfHwwLGc9Yy5jbGllbnRMZWZ0fHxkLmNsaWVudExlZnR8fDAsaD1lLnBhZ2VZT2Zmc2V0fHxjLnNjcm9sbFRvcCxpPWUucGFnZVhPZmZzZXR8fGMuc2Nyb2xsTGVmdCx7dG9wOmoudG9wK2gtZixsZWZ0OmoubGVmdCtpLWd9KTpqKX0scC5vZmZzZXQ9e2JvZHlPZmZzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRUb3AsYz1hLm9mZnNldExlZnQ7cmV0dXJuIHAuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQocC5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQocC5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCkse3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9cC5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPXAoYSksZj1lLm9mZnNldCgpLGc9cC5jc3MoYSwidG9wIiksaD1wLmNzcyhhLCJsZWZ0IiksaT0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmcC5pbkFycmF5KCJhdXRvIixbZyxoXSk+LTEsaj17fSxrPXt9LGwsbTtpPyhrPWUucG9zaXRpb24oKSxsPWsudG9wLG09ay5sZWZ0KToobD1wYXJzZUZsb2F0KGcpfHwwLG09cGFyc2VGbG9hdChoKXx8MCkscC5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGYpKSxiLnRvcCE9bnVsbCYmKGoudG9wPWIudG9wLWYudG9wK2wpLGIubGVmdCE9bnVsbCYmKGoubGVmdD1iLmxlZnQtZi5sZWZ0K20pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGopOmUuY3NzKGopfX0scC5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuO3ZhciBhPXRoaXNbMF0sYj10aGlzLm9mZnNldFBhcmVudCgpLGM9dGhpcy5vZmZzZXQoKSxkPWNfLnRlc3QoYlswXS5ub2RlTmFtZSk/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKTtyZXR1cm4gYy50b3AtPXBhcnNlRmxvYXQocC5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMubGVmdC09cGFyc2VGbG9hdChwLmNzcyhhLCJtYXJnaW5MZWZ0IikpfHwwLGQudG9wKz1wYXJzZUZsb2F0KHAuY3NzKGJbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwLGQubGVmdCs9cGFyc2VGbG9hdChwLmNzcyhiWzBdLCJib3JkZXJMZWZ0V2lkdGgiKSl8fDAse3RvcDpjLnRvcC1kLnRvcCxsZWZ0OmMubGVmdC1kLmxlZnR9fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudHx8ZS5ib2R5O3doaWxlKGEmJiFjXy50ZXN0KGEubm9kZU5hbWUpJiZwLmNzcyhhLCJwb3NpdGlvbiIpPT09InN0YXRpYyIpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8ZS5ib2R5fSl9fSkscC5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYyl7dmFyIGQ9L1kvLnRlc3QoYyk7cC5mblthXT1mdW5jdGlvbihlKXtyZXR1cm4gcC5hY2Nlc3ModGhpcyxmdW5jdGlvbihhLGUsZil7dmFyIGc9ZGEoYSk7aWYoZj09PWIpcmV0dXJuIGc/YyBpbiBnP2dbY106Zy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZV06YVtlXTtnP2cuc2Nyb2xsVG8oZD9wKGcpLnNjcm9sbExlZnQoKTpmLGQ/ZjpwKGcpLnNjcm9sbFRvcCgpKTphW2VdPWZ9LGEsZSxhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pLHAuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYyl7cC5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OmMsIiI6Im91dGVyIithfSxmdW5jdGlvbihkLGUpe3AuZm5bZV09ZnVuY3Rpb24oZSxmKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoJiYoZHx8dHlwZW9mIGUhPSJib29sZWFuIiksaD1kfHwoZT09PSEwfHxmPT09ITA/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBwLmFjY2Vzcyh0aGlzLGZ1bmN0aW9uKGMsZCxlKXt2YXIgZjtyZXR1cm4gcC5pc1dpbmRvdyhjKT9jLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTpjLm5vZGVUeXBlPT09OT8oZj1jLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChjLmJvZHlbInNjcm9sbCIrYV0sZlsic2Nyb2xsIithXSxjLmJvZHlbIm9mZnNldCIrYV0sZlsib2Zmc2V0IithXSxmWyJjbGllbnQiK2FdKSk6ZT09PWI/cC5jc3MoYyxkLGUsaCk6cC5zdHlsZShjLGQsZSxoKX0sYyxnP2U6YixnLG51bGwpfX0pfSksYS5qUXVlcnk9YS4kPXAsdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZCYmZGVmaW5lLmFtZC5qUXVlcnkmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBwfSl9KSh3aW5kb3cpOw==" type="text/javascript"></script>
<script src="data:application/javascript;base64,ZDM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe3JldHVybiBudWxsIT1uJiYhaXNOYU4obil9ZnVuY3Rpb24gdChuKXtyZXR1cm4gbi5sZW5ndGh9ZnVuY3Rpb24gZShuKXtmb3IodmFyIHQ9MTtuKnQlMTspdCo9MTA7cmV0dXJuIHR9ZnVuY3Rpb24gcihuLHQpe3RyeXtmb3IodmFyIGUgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsZSx7dmFsdWU6dFtlXSxlbnVtZXJhYmxlOiExfSl9Y2F0Y2gocil7bi5wcm90b3R5cGU9dH19ZnVuY3Rpb24gaSgpe31mdW5jdGlvbiB1KCl7fWZ1bmN0aW9uIGEobix0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWUuYXBwbHkodCxhcmd1bWVudHMpO3JldHVybiByPT09dD9uOnJ9fWZ1bmN0aW9uIG8obix0KXtpZih0IGluIG4pcmV0dXJuIHQ7dD10LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpO2Zvcih2YXIgZT0wLHI9TmEubGVuZ3RoO3I+ZTsrK2Upe3ZhciBpPU5hW2VdK3Q7aWYoaSBpbiBuKXJldHVybiBpfX1mdW5jdGlvbiBjKG4pe2Zvcih2YXIgdD0tMSxlPW4ubGVuZ3RoLHI9W107Kyt0PGU7KXIucHVzaChuW3RdKTtyZXR1cm4gcn1mdW5jdGlvbiBsKG4pe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChuKX1mdW5jdGlvbiBzKCl7fWZ1bmN0aW9uIGYoKXt9ZnVuY3Rpb24gaChuKXtmdW5jdGlvbiB0KCl7Zm9yKHZhciB0LHI9ZSxpPS0xLHU9ci5sZW5ndGg7KytpPHU7KSh0PXJbaV0ub24pJiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbn12YXIgZT1bXSxyPW5ldyBpO3JldHVybiB0Lm9uPWZ1bmN0aW9uKHQsaSl7dmFyIHUsYT1yLmdldCh0KTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP2EmJmEub246KGEmJihhLm9uPW51bGwsZT1lLnNsaWNlKDAsdT1lLmluZGV4T2YoYSkpLmNvbmNhdChlLnNsaWNlKHUrMSkpLHIucmVtb3ZlKHQpKSxpJiZlLnB1c2goci5zZXQodCx7b246aX0pKSxuKX0sdH1mdW5jdGlvbiBnKCl7eWEuZXZlbnQucHJldmVudERlZmF1bHQoKX1mdW5jdGlvbiBwKCl7Zm9yKHZhciBuLHQ9eWEuZXZlbnQ7bj10LnNvdXJjZUV2ZW50Oyl0PW47cmV0dXJuIHR9ZnVuY3Rpb24gZChuKXtmb3IodmFyIHQ9bmV3IGYsZT0wLHI9YXJndW1lbnRzLmxlbmd0aDsrK2U8cjspdFthcmd1bWVudHNbZV1dPWgodCk7cmV0dXJuIHQub2Y9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gZnVuY3Rpb24oaSl7dHJ5e3ZhciB1PWkuc291cmNlRXZlbnQ9eWEuZXZlbnQ7aS50YXJnZXQ9bix5YS5ldmVudD1pLHRbaS50eXBlXS5hcHBseShlLHIpfWZpbmFsbHl7eWEuZXZlbnQ9dX19fSx0fWZ1bmN0aW9uIG0obil7cmV0dXJuIHphKG4sRmEpLG59ZnVuY3Rpb24gdihuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIERhKG4sdGhpcyl9fWZ1bmN0aW9uIHkobil7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpmdW5jdGlvbigpe3JldHVybiBqYShuLHRoaXMpfX1mdW5jdGlvbiBNKG4sdCl7ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pfWZ1bmN0aW9uIHIoKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCl9ZnVuY3Rpb24gaSgpe3RoaXMuc2V0QXR0cmlidXRlKG4sdCl9ZnVuY3Rpb24gdSgpe3RoaXMuc2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLHQpfWZ1bmN0aW9uIGEoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlKG4pOnRoaXMuc2V0QXR0cmlidXRlKG4sZSl9ZnVuY3Rpb24gbygpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyhuLnNwYWNlLG4ubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlMobi5zcGFjZSxuLmxvY2FsLGUpfXJldHVybiBuPXlhLm5zLnF1YWxpZnkobiksbnVsbD09dD9uLmxvY2FsP3I6ZToiZnVuY3Rpb24iPT10eXBlb2YgdD9uLmxvY2FsP286YTpuLmxvY2FsP3U6aX1mdW5jdGlvbiB4KG4pe3JldHVybiBuLnRyaW0oKS5yZXBsYWNlKC9ccysvZywiICIpfWZ1bmN0aW9uIGIobil7cmV0dXJuIG5ldyBSZWdFeHAoIig/Ol58XFxzKykiK3lhLnJlcXVvdGUobikrIig/Olxccyt8JCkiLCJnIil9ZnVuY3Rpb24gXyhuLHQpe2Z1bmN0aW9uIGUoKXtmb3IodmFyIGU9LTE7KytlPGk7KW5bZV0odGhpcyx0KX1mdW5jdGlvbiByKCl7Zm9yKHZhciBlPS0xLHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7KytlPGk7KW5bZV0odGhpcyxyKX1uPW4udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAodyk7dmFyIGk9bi5sZW5ndGg7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/cjplfWZ1bmN0aW9uIHcobil7dmFyIHQ9YihuKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtpZihpPWUuY2xhc3NMaXN0KXJldHVybiByP2kuYWRkKG4pOmkucmVtb3ZlKG4pO3ZhciBpPWUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIjtyPyh0Lmxhc3RJbmRleD0wLHQudGVzdChpKXx8ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix4KGkrIiAiK24pKSk6ZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix4KGkucmVwbGFjZSh0LCIgIikpKX19ZnVuY3Rpb24gUyhuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9ZnVuY3Rpb24gaSgpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobix0LGUpfWZ1bmN0aW9uIHUoKXt2YXIgcj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1yP3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobik6dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHIsZSl9cmV0dXJuIG51bGw9PXQ/cjoiZnVuY3Rpb24iPT10eXBlb2YgdD91Oml9ZnVuY3Rpb24gRShuLHQpe2Z1bmN0aW9uIGUoKXtkZWxldGUgdGhpc1tuXX1mdW5jdGlvbiByKCl7dGhpc1tuXT10fWZ1bmN0aW9uIGkoKXt2YXIgZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP2RlbGV0ZSB0aGlzW25dOnRoaXNbbl09ZX1yZXR1cm4gbnVsbD09dD9lOiJmdW5jdGlvbiI9PXR5cGVvZiB0P2k6cn1mdW5jdGlvbiBrKG4pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP246KG49eWEubnMucXVhbGlmeShuKSkubG9jYWw/ZnVuY3Rpb24oKXtyZXR1cm4gTWEuY3JlYXRlRWxlbWVudE5TKG4uc3BhY2Usbi5sb2NhbCl9OmZ1bmN0aW9uKCl7cmV0dXJuIE1hLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5hbWVzcGFjZVVSSSxuKX19ZnVuY3Rpb24gQShuKXtyZXR1cm57X19kYXRhX186bn19ZnVuY3Rpb24gTihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxuKX19ZnVuY3Rpb24gcShuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aHx8KG49eWEuYXNjZW5kaW5nKSxmdW5jdGlvbih0LGUpe3JldHVybiF0LSFlfHxuKHQuX19kYXRhX18sZS5fX2RhdGFfXyl9fWZ1bmN0aW9uIFQobix0KXtmb3IodmFyIGU9MCxyPW4ubGVuZ3RoO3I+ZTtlKyspZm9yKHZhciBpLHU9bltlXSxhPTAsbz11Lmxlbmd0aDtvPmE7YSsrKShpPXVbYV0pJiZ0KGksYSxlKTtyZXR1cm4gbn1mdW5jdGlvbiBDKG4pe3JldHVybiB6YShuLE9hKSxufWZ1bmN0aW9uIHoobix0LGUpe2Z1bmN0aW9uIHIoKXt2YXIgdD10aGlzW2FdO3QmJih0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIobix0LHQuJCksZGVsZXRlIHRoaXNbYV0pfWZ1bmN0aW9uIGkoKXt2YXIgaT1jKHQscWEoYXJndW1lbnRzKSk7ci5jYWxsKHRoaXMpLHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihuLHRoaXNbYV09aSxpLiQ9ZSksaS5fPXR9ZnVuY3Rpb24gdSgpe3ZhciB0LGU9bmV3IFJlZ0V4cCgiXl9fb24oW14uXSspIit5YS5yZXF1b3RlKG4pKyIkIik7Zm9yKHZhciByIGluIHRoaXMpaWYodD1yLm1hdGNoKGUpKXt2YXIgaT10aGlzW3JdO3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcih0WzFdLGksaS4kKSxkZWxldGUgdGhpc1tyXX19dmFyIGE9Il9fb24iK24sbz1uLmluZGV4T2YoIi4iKSxjPUQ7bz4wJiYobj1uLnN1YnN0cmluZygwLG8pKTt2YXIgbD1SYS5nZXQobik7cmV0dXJuIGwmJihuPWwsYz1qKSxvP3Q/aTpyOnQ/czp1fWZ1bmN0aW9uIEQobix0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9eWEuZXZlbnQ7eWEuZXZlbnQ9ZSx0WzBdPXRoaXMuX19kYXRhX187dHJ5e24uYXBwbHkodGhpcyx0KX1maW5hbGx5e3lhLmV2ZW50PXJ9fX1mdW5jdGlvbiBqKG4sdCl7dmFyIGU9RChuLHQpO3JldHVybiBmdW5jdGlvbihuKXt2YXIgdD10aGlzLHI9bi5yZWxhdGVkVGFyZ2V0O3ImJihyPT09dHx8OCZyLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKXx8ZS5jYWxsKHQsbil9fWZ1bmN0aW9uIEwobil7dmFyIHQ9InNlbGVjdHN0YXJ0LiIrbixlPSJkcmFnc3RhcnQuIituLHI9ImNsaWNrLiIrbixpPXlhLnNlbGVjdChiYSkub24odCxnKS5vbihlLGcpLHU9eGEuc3R5bGUsYT11W1VhXTtyZXR1cm4gdVtVYV09Im5vbmUiLGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIG8oKXtpLm9uKHIsbnVsbCl9aS5vbih0LG51bGwpLm9uKGUsbnVsbCksdVtVYV09YSxuJiYoaS5vbihyLGZ1bmN0aW9uKCl7ZygpLG8oKX0sITApLHNldFRpbWVvdXQobywwKSl9fWZ1bmN0aW9uIEgobix0KXt2YXIgZT1uLm93bmVyU1ZHRWxlbWVudHx8bjtpZihlLmNyZWF0ZVNWR1BvaW50KXt2YXIgcj1lLmNyZWF0ZVNWR1BvaW50KCk7aWYoMD5JYSYmKGJhLnNjcm9sbFh8fGJhLnNjcm9sbFkpKXtlPXlhLnNlbGVjdCgiYm9keSIpLmFwcGVuZCgic3ZnIikuc3R5bGUoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLG1hcmdpbjowLHBhZGRpbmc6MCxib3JkZXI6Im5vbmUifSwiaW1wb3J0YW50Iik7dmFyIGk9ZVswXVswXS5nZXRTY3JlZW5DVE0oKTtJYT0hKGkuZnx8aS5lKSxlLnJlbW92ZSgpfXJldHVybiBJYT8oci54PXQucGFnZVgsci55PXQucGFnZVkpOihyLng9dC5jbGllbnRYLHIueT10LmNsaWVudFkpLHI9ci5tYXRyaXhUcmFuc2Zvcm0obi5nZXRTY3JlZW5DVE0oKS5pbnZlcnNlKCkpLFtyLngsci55XX12YXIgdT1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVyblt0LmNsaWVudFgtdS5sZWZ0LW4uY2xpZW50TGVmdCx0LmNsaWVudFktdS50b3Atbi5jbGllbnRUb3BdfWZ1bmN0aW9uIEYoKXt9ZnVuY3Rpb24gUChuLHQsZSl7cmV0dXJuIG5ldyBPKG4sdCxlKX1mdW5jdGlvbiBPKG4sdCxlKXt0aGlzLmg9bix0aGlzLnM9dCx0aGlzLmw9ZX1mdW5jdGlvbiBZKG4sdCxlKXtmdW5jdGlvbiByKG4pe3JldHVybiBuPjM2MD9uLT0zNjA6MD5uJiYobis9MzYwKSw2MD5uP3UrKGEtdSkqbi82MDoxODA+bj9hOjI0MD5uP3UrKGEtdSkqKDI0MC1uKS82MDp1fWZ1bmN0aW9uIGkobil7cmV0dXJuIE1hdGgucm91bmQoMjU1KnIobikpfXZhciB1LGE7cmV0dXJuIG49aXNOYU4obik/MDoobiU9MzYwKTwwP24rMzYwOm4sdD1pc05hTih0KT8wOjA+dD8wOnQ+MT8xOnQsZT0wPmU/MDplPjE/MTplLGE9LjU+PWU/ZSooMSt0KTplK3QtZSp0LHU9MiplLWEscnQoaShuKzEyMCksaShuKSxpKG4tMTIwKSl9ZnVuY3Rpb24gUihuKXtyZXR1cm4gbj4wPzE6MD5uPy0xOjB9ZnVuY3Rpb24gVShuKXtyZXR1cm4gbj4xPzA6LTE+bj8kYTpNYXRoLmFjb3Mobil9ZnVuY3Rpb24gSShuKXtyZXR1cm4gbj4xPyRhLzI6LTE+bj8tJGEvMjpNYXRoLmFzaW4obil9ZnVuY3Rpb24gVihuKXtyZXR1cm4oTWF0aC5leHAobiktTWF0aC5leHAoLW4pKS8yfWZ1bmN0aW9uIFgobil7cmV0dXJuKE1hdGguZXhwKG4pK01hdGguZXhwKC1uKSkvMn1mdW5jdGlvbiBaKG4pe3JldHVybihuPU1hdGguc2luKG4vMikpKm59ZnVuY3Rpb24gQihuLHQsZSl7cmV0dXJuIG5ldyAkKG4sdCxlKX1mdW5jdGlvbiAkKG4sdCxlKXt0aGlzLmg9bix0aGlzLmM9dCx0aGlzLmw9ZX1mdW5jdGlvbiBXKG4sdCxlKXtyZXR1cm4gaXNOYU4obikmJihuPTApLGlzTmFOKHQpJiYodD0wKSxKKGUsTWF0aC5jb3Mobio9R2EpKnQsTWF0aC5zaW4obikqdCl9ZnVuY3Rpb24gSihuLHQsZSl7cmV0dXJuIG5ldyBHKG4sdCxlKX1mdW5jdGlvbiBHKG4sdCxlKXt0aGlzLmw9bix0aGlzLmE9dCx0aGlzLmI9ZX1mdW5jdGlvbiBLKG4sdCxlKXt2YXIgcj0obisxNikvMTE2LGk9cit0LzUwMCx1PXItZS8yMDA7cmV0dXJuIGk9bnQoaSkqdG8scj1udChyKSplbyx1PW50KHUpKnJvLHJ0KGV0KDMuMjQwNDU0MippLTEuNTM3MTM4NSpyLS40OTg1MzE0KnUpLGV0KC0uOTY5MjY2KmkrMS44NzYwMTA4KnIrLjA0MTU1Nip1KSxldCguMDU1NjQzNCppLS4yMDQwMjU5KnIrMS4wNTcyMjUyKnUpKX1mdW5jdGlvbiBRKG4sdCxlKXtyZXR1cm4gbj4wP0IoTWF0aC5hdGFuMihlLHQpKkthLE1hdGguc3FydCh0KnQrZSplKSxuKTpCKDAvMCwwLzAsbil9ZnVuY3Rpb24gbnQobil7cmV0dXJuIG4+LjIwNjg5MzAzND9uKm4qbjoobi00LzI5KS83Ljc4NzAzN31mdW5jdGlvbiB0dChuKXtyZXR1cm4gbj4uMDA4ODU2P01hdGgucG93KG4sMS8zKTo3Ljc4NzAzNypuKzQvMjl9ZnVuY3Rpb24gZXQobil7cmV0dXJuIE1hdGgucm91bmQoMjU1KiguMDAzMDQ+PW4/MTIuOTIqbjoxLjA1NSpNYXRoLnBvdyhuLDEvMi40KS0uMDU1KSl9ZnVuY3Rpb24gcnQobix0LGUpe3JldHVybiBuZXcgaXQobix0LGUpfWZ1bmN0aW9uIGl0KG4sdCxlKXt0aGlzLnI9bix0aGlzLmc9dCx0aGlzLmI9ZX1mdW5jdGlvbiB1dChuKXtyZXR1cm4gMTY+bj8iMCIrTWF0aC5tYXgoMCxuKS50b1N0cmluZygxNik6TWF0aC5taW4oMjU1LG4pLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBhdChuLHQsZSl7dmFyIHIsaSx1LGE9MCxvPTAsYz0wO2lmKHI9LyhbYS16XSspXCgoLiopXCkvaS5leGVjKG4pKXN3aXRjaChpPXJbMl0uc3BsaXQoIiwiKSxyWzFdKXtjYXNlImhzbCI6cmV0dXJuIGUocGFyc2VGbG9hdChpWzBdKSxwYXJzZUZsb2F0KGlbMV0pLzEwMCxwYXJzZUZsb2F0KGlbMl0pLzEwMCk7Y2FzZSJyZ2IiOnJldHVybiB0KHN0KGlbMF0pLHN0KGlbMV0pLHN0KGlbMl0pKX1yZXR1cm4odT1hby5nZXQobikpP3QodS5yLHUuZyx1LmIpOihudWxsIT1uJiYiIyI9PT1uLmNoYXJBdCgwKSYmKDQ9PT1uLmxlbmd0aD8oYT1uLmNoYXJBdCgxKSxhKz1hLG89bi5jaGFyQXQoMiksbys9byxjPW4uY2hhckF0KDMpLGMrPWMpOjc9PT1uLmxlbmd0aCYmKGE9bi5zdWJzdHJpbmcoMSwzKSxvPW4uc3Vic3RyaW5nKDMsNSksYz1uLnN1YnN0cmluZyg1LDcpKSxhPXBhcnNlSW50KGEsMTYpLG89cGFyc2VJbnQobywxNiksYz1wYXJzZUludChjLDE2KSksdChhLG8sYykpfWZ1bmN0aW9uIG90KG4sdCxlKXt2YXIgcixpLHU9TWF0aC5taW4obi89MjU1LHQvPTI1NSxlLz0yNTUpLGE9TWF0aC5tYXgobix0LGUpLG89YS11LGM9KGErdSkvMjtyZXR1cm4gbz8oaT0uNT5jP28vKGErdSk6by8oMi1hLXUpLHI9bj09YT8odC1lKS9vKyhlPnQ/NjowKTp0PT1hPyhlLW4pL28rMjoobi10KS9vKzQscio9NjApOihyPTAvMCxpPWM+MCYmMT5jPzA6ciksUChyLGksYyl9ZnVuY3Rpb24gY3Qobix0LGUpe249bHQobiksdD1sdCh0KSxlPWx0KGUpO3ZhciByPXR0KCguNDEyNDU2NCpuKy4zNTc1NzYxKnQrLjE4MDQzNzUqZSkvdG8pLGk9dHQoKC4yMTI2NzI5Km4rLjcxNTE1MjIqdCsuMDcyMTc1KmUpL2VvKSx1PXR0KCguMDE5MzMzOSpuKy4xMTkxOTIqdCsuOTUwMzA0MSplKS9ybyk7cmV0dXJuIEooMTE2KmktMTYsNTAwKihyLWkpLDIwMCooaS11KSl9ZnVuY3Rpb24gbHQobil7cmV0dXJuKG4vPTI1NSk8PS4wNDA0NT9uLzEyLjkyOk1hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gc3Qobil7dmFyIHQ9cGFyc2VGbG9hdChuKTtyZXR1cm4iJSI9PT1uLmNoYXJBdChuLmxlbmd0aC0xKT9NYXRoLnJvdW5kKDIuNTUqdCk6dH1mdW5jdGlvbiBmdChuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmZ1bmN0aW9uKCl7cmV0dXJuIG59fWZ1bmN0aW9uIGh0KG4pe3JldHVybiBufWZ1bmN0aW9uIGd0KG4pe3JldHVybiBmdW5jdGlvbih0LGUscil7cmV0dXJuIDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLHB0KHQsZSxuLHIpfX1mdW5jdGlvbiBwdChuLHQsZSxyKXtmdW5jdGlvbiBpKCl7dmFyIG4sdD1jLnN0YXR1cztpZighdCYmYy5yZXNwb25zZVRleHR8fHQ+PTIwMCYmMzAwPnR8fDMwND09PXQpe3RyeXtuPWUuY2FsbCh1LGMpfWNhdGNoKHIpe3JldHVybiBhLmVycm9yLmNhbGwodSxyKSx2b2lkIDB9YS5sb2FkLmNhbGwodSxuKX1lbHNlIGEuZXJyb3IuY2FsbCh1LGMpfXZhciB1PXt9LGE9eWEuZGlzcGF0Y2goInByb2dyZXNzIiwibG9hZCIsImVycm9yIiksbz17fSxjPW5ldyBYTUxIdHRwUmVxdWVzdCxsPW51bGw7cmV0dXJuIWJhLlhEb21haW5SZXF1ZXN0fHwid2l0aENyZWRlbnRpYWxzImluIGN8fCEvXihodHRwKHMpPzopP1wvXC8vLnRlc3Qobil8fChjPW5ldyBYRG9tYWluUmVxdWVzdCksIm9ubG9hZCJpbiBjP2Mub25sb2FkPWMub25lcnJvcj1pOmMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPjMmJmkoKX0sYy5vbnByb2dyZXNzPWZ1bmN0aW9uKG4pe3ZhciB0PXlhLmV2ZW50O3lhLmV2ZW50PW47dHJ5e2EucHJvZ3Jlc3MuY2FsbCh1LGMpfWZpbmFsbHl7eWEuZXZlbnQ9dH19LHUuaGVhZGVyPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49KG4rIiIpLnRvTG93ZXJDYXNlKCksYXJndW1lbnRzLmxlbmd0aDwyP29bbl06KG51bGw9PXQ/ZGVsZXRlIG9bbl06b1tuXT10KyIiLHUpfSx1Lm1pbWVUeXBlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PW4/bnVsbDpuKyIiLHUpOnR9LHUucmVzcG9uc2VUeXBlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW4sdSk6bH0sdS5yZXNwb25zZT1mdW5jdGlvbihuKXtyZXR1cm4gZT1uLHV9LFsiZ2V0IiwicG9zdCJdLmZvckVhY2goZnVuY3Rpb24obil7dVtuXT1mdW5jdGlvbigpe3JldHVybiB1LnNlbmQuYXBwbHkodSxbbl0uY29uY2F0KHFhKGFyZ3VtZW50cykpKX19KSx1LnNlbmQ9ZnVuY3Rpb24oZSxyLGkpe2lmKDI9PT1hcmd1bWVudHMubGVuZ3RoJiYiZnVuY3Rpb24iPT10eXBlb2YgciYmKGk9cixyPW51bGwpLGMub3BlbihlLG4sITApLG51bGw9PXR8fCJhY2NlcHQiaW4gb3x8KG8uYWNjZXB0PXQrIiwqLyoiKSxjLnNldFJlcXVlc3RIZWFkZXIpZm9yKHZhciBhIGluIG8pYy5zZXRSZXF1ZXN0SGVhZGVyKGEsb1thXSk7cmV0dXJuIG51bGwhPXQmJmMub3ZlcnJpZGVNaW1lVHlwZSYmYy5vdmVycmlkZU1pbWVUeXBlKHQpLG51bGwhPWwmJihjLnJlc3BvbnNlVHlwZT1sKSxudWxsIT1pJiZ1Lm9uKCJlcnJvciIsaSkub24oImxvYWQiLGZ1bmN0aW9uKG4pe2kobnVsbCxuKX0pLGMuc2VuZChudWxsPT1yP251bGw6ciksdX0sdS5hYm9ydD1mdW5jdGlvbigpe3JldHVybiBjLmFib3J0KCksdX0seWEucmViaW5kKHUsYSwib24iKSxudWxsPT1yP3U6dS5nZXQoZHQocikpfWZ1bmN0aW9uIGR0KG4pe3JldHVybiAxPT09bi5sZW5ndGg/ZnVuY3Rpb24odCxlKXtuKG51bGw9PXQ/ZTpudWxsKX06bn1mdW5jdGlvbiBtdCgpe3ZhciBuPXZ0KCksdD15dCgpLW47dD4yND8oaXNGaW5pdGUodCkmJihjbGVhclRpbWVvdXQoc28pLHNvPXNldFRpbWVvdXQobXQsdCkpLGxvPTApOihsbz0xLGZvKG10KSl9ZnVuY3Rpb24gdnQoKXtmb3IodmFyIG49RGF0ZS5ub3coKSx0PW9vO3Q7KW4+PXQudGltZSYmKHQuZmx1c2g9dC5jYWxsYmFjayhuLXQudGltZSkpLHQ9dC5uZXh0O3JldHVybiBufWZ1bmN0aW9uIHl0KCl7Zm9yKHZhciBuLHQ9b28sZT0xLzA7dDspdC5mbHVzaD90PW4/bi5uZXh0PXQubmV4dDpvbz10Lm5leHQ6KHQudGltZTxlJiYoZT10LnRpbWUpLHQ9KG49dCkubmV4dCk7cmV0dXJuIGNvPW4sZX1mdW5jdGlvbiBNdChuLHQpe3ZhciBlPU1hdGgucG93KDEwLDMqTWF0aC5hYnMoOC10KSk7cmV0dXJue3NjYWxlOnQ+OD9mdW5jdGlvbihuKXtyZXR1cm4gbi9lfTpmdW5jdGlvbihuKXtyZXR1cm4gbiplfSxzeW1ib2w6bn19ZnVuY3Rpb24geHQobix0KXtyZXR1cm4gdC0obj9NYXRoLmNlaWwoTWF0aC5sb2cobikvTWF0aC5MTjEwKToxKX1mdW5jdGlvbiBidChuKXtyZXR1cm4gbisiIn1mdW5jdGlvbiBfdCgpe31mdW5jdGlvbiB3dChuLHQsZSl7dmFyIHI9ZS5zPW4rdCxpPXItbix1PXItaTtlLnQ9bi11Kyh0LWkpfWZ1bmN0aW9uIFN0KG4sdCl7biYmd28uaGFzT3duUHJvcGVydHkobi50eXBlKSYmd29bbi50eXBlXShuLHQpfWZ1bmN0aW9uIEV0KG4sdCxlKXt2YXIgcixpPS0xLHU9bi5sZW5ndGgtZTtmb3IodC5saW5lU3RhcnQoKTsrK2k8dTspcj1uW2ldLHQucG9pbnQoclswXSxyWzFdKTt0LmxpbmVFbmQoKX1mdW5jdGlvbiBrdChuLHQpe3ZhciBlPS0xLHI9bi5sZW5ndGg7Zm9yKHQucG9seWdvblN0YXJ0KCk7KytlPHI7KUV0KG5bZV0sdCwxKTt0LnBvbHlnb25FbmQoKX1mdW5jdGlvbiBBdCgpe2Z1bmN0aW9uIG4obix0KXtuKj1HYSx0PXQqR2EvMiskYS80O3ZhciBlPW4tcixhPU1hdGguY29zKHQpLG89TWF0aC5zaW4odCksYz11Km8sbD1pKmErYypNYXRoLmNvcyhlKSxzPWMqTWF0aC5zaW4oZSk7RW8uYWRkKE1hdGguYXRhbjIocyxsKSkscj1uLGk9YSx1PW99dmFyIHQsZSxyLGksdTtrby5wb2ludD1mdW5jdGlvbihhLG8pe2tvLnBvaW50PW4scj0odD1hKSpHYSxpPU1hdGguY29zKG89KGU9bykqR2EvMiskYS80KSx1PU1hdGguc2luKG8pfSxrby5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBOdChuKXt2YXIgdD1uWzBdLGU9blsxXSxyPU1hdGguY29zKGUpO3JldHVybltyKk1hdGguY29zKHQpLHIqTWF0aC5zaW4odCksTWF0aC5zaW4oZSldfWZ1bmN0aW9uIHF0KG4sdCl7cmV0dXJuIG5bMF0qdFswXStuWzFdKnRbMV0rblsyXSp0WzJdfWZ1bmN0aW9uIFR0KG4sdCl7cmV0dXJuW25bMV0qdFsyXS1uWzJdKnRbMV0sblsyXSp0WzBdLW5bMF0qdFsyXSxuWzBdKnRbMV0tblsxXSp0WzBdXX1mdW5jdGlvbiBDdChuLHQpe25bMF0rPXRbMF0sblsxXSs9dFsxXSxuWzJdKz10WzJdfWZ1bmN0aW9uIHp0KG4sdCl7cmV0dXJuW25bMF0qdCxuWzFdKnQsblsyXSp0XX1mdW5jdGlvbiBEdChuKXt2YXIgdD1NYXRoLnNxcnQoblswXSpuWzBdK25bMV0qblsxXStuWzJdKm5bMl0pO25bMF0vPXQsblsxXS89dCxuWzJdLz10fWZ1bmN0aW9uIGp0KG4pe3JldHVybltNYXRoLmF0YW4yKG5bMV0sblswXSksSShuWzJdKV19ZnVuY3Rpb24gTHQobix0KXtyZXR1cm4gTWF0aC5hYnMoblswXS10WzBdKTxXYSYmTWF0aC5hYnMoblsxXS10WzFdKTxXYX1mdW5jdGlvbiBIdChuLHQpe24qPUdhO3ZhciBlPU1hdGguY29zKHQqPUdhKTtGdChlKk1hdGguY29zKG4pLGUqTWF0aC5zaW4obiksTWF0aC5zaW4odCkpfWZ1bmN0aW9uIEZ0KG4sdCxlKXsrK0FvLHFvKz0obi1xbykvQW8sVG8rPSh0LVRvKS9BbyxDbys9KGUtQ28pL0FvfWZ1bmN0aW9uIFB0KCl7ZnVuY3Rpb24gbihuLGkpe24qPUdhO3ZhciB1PU1hdGguY29zKGkqPUdhKSxhPXUqTWF0aC5jb3Mobiksbz11Kk1hdGguc2luKG4pLGM9TWF0aC5zaW4oaSksbD1NYXRoLmF0YW4yKE1hdGguc3FydCgobD1lKmMtcipvKSpsKyhsPXIqYS10KmMpKmwrKGw9dCpvLWUqYSkqbCksdCphK2UqbytyKmMpO05vKz1sLHpvKz1sKih0Kyh0PWEpKSxEbys9bCooZSsoZT1vKSksam8rPWwqKHIrKHI9YykpLEZ0KHQsZSxyKX12YXIgdCxlLHI7UG8ucG9pbnQ9ZnVuY3Rpb24oaSx1KXtpKj1HYTt2YXIgYT1NYXRoLmNvcyh1Kj1HYSk7dD1hKk1hdGguY29zKGkpLGU9YSpNYXRoLnNpbihpKSxyPU1hdGguc2luKHUpLFBvLnBvaW50PW4sRnQodCxlLHIpfX1mdW5jdGlvbiBPdCgpe1BvLnBvaW50PUh0fWZ1bmN0aW9uIFl0KCl7ZnVuY3Rpb24gbihuLHQpe24qPUdhO3ZhciBlPU1hdGguY29zKHQqPUdhKSxhPWUqTWF0aC5jb3Mobiksbz1lKk1hdGguc2luKG4pLGM9TWF0aC5zaW4odCksbD1pKmMtdSpvLHM9dSphLXIqYyxmPXIqby1pKmEsaD1NYXRoLnNxcnQobCpsK3MqcytmKmYpLGc9ciphK2kqbyt1KmMscD1oJiYtVShnKS9oLGQ9TWF0aC5hdGFuMihoLGcpO0xvKz1wKmwsSG8rPXAqcyxGbys9cCpmLE5vKz1kLHpvKz1kKihyKyhyPWEpKSxEbys9ZCooaSsoaT1vKSksam8rPWQqKHUrKHU9YykpLEZ0KHIsaSx1KX12YXIgdCxlLHIsaSx1O1BvLnBvaW50PWZ1bmN0aW9uKGEsbyl7dD1hLGU9byxQby5wb2ludD1uLGEqPUdhO3ZhciBjPU1hdGguY29zKG8qPUdhKTtyPWMqTWF0aC5jb3MoYSksaT1jKk1hdGguc2luKGEpLHU9TWF0aC5zaW4obyksRnQocixpLHUpfSxQby5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpLFBvLmxpbmVFbmQ9T3QsUG8ucG9pbnQ9SHR9fWZ1bmN0aW9uIFJ0KCl7cmV0dXJuITB9ZnVuY3Rpb24gVXQobix0LGUscixpKXt2YXIgdT1bXSxhPVtdO2lmKG4uZm9yRWFjaChmdW5jdGlvbihuKXtpZighKCh0PW4ubGVuZ3RoLTEpPD0wKSl7dmFyIHQsZT1uWzBdLHI9blt0XTtpZihMdChlLHIpKXtpLmxpbmVTdGFydCgpO2Zvcih2YXIgbz0wO3Q+bzsrK28paS5wb2ludCgoZT1uW29dKVswXSxlWzFdKTtyZXR1cm4gaS5saW5lRW5kKCksdm9pZCAwfXZhciBjPXtwb2ludDplLHBvaW50czpuLG90aGVyOm51bGwsdmlzaXRlZDohMSxlbnRyeTohMCxzdWJqZWN0OiEwfSxsPXtwb2ludDplLHBvaW50czpbZV0sb3RoZXI6Yyx2aXNpdGVkOiExLGVudHJ5OiExLHN1YmplY3Q6ITF9O2Mub3RoZXI9bCx1LnB1c2goYyksYS5wdXNoKGwpLGM9e3BvaW50OnIscG9pbnRzOltyXSxvdGhlcjpudWxsLHZpc2l0ZWQ6ITEsZW50cnk6ITEsc3ViamVjdDohMH0sbD17cG9pbnQ6cixwb2ludHM6W3JdLG90aGVyOmMsdmlzaXRlZDohMSxlbnRyeTohMCxzdWJqZWN0OiExfSxjLm90aGVyPWwsdS5wdXNoKGMpLGEucHVzaChsKX19KSxhLnNvcnQodCksSXQodSksSXQoYSksdS5sZW5ndGgpe2lmKGUpZm9yKHZhciBvPTEsYz0hZShhWzBdLnBvaW50KSxsPWEubGVuZ3RoO2w+bzsrK28pYVtvXS5lbnRyeT1jPSFjO2Zvcih2YXIgcyxmLGgsZz11WzBdOzspe2ZvcihzPWc7cy52aXNpdGVkOylpZigocz1zLm5leHQpPT09ZylyZXR1cm47Zj1zLnBvaW50cyxpLmxpbmVTdGFydCgpO2Rve2lmKHMudmlzaXRlZD1zLm90aGVyLnZpc2l0ZWQ9ITAscy5lbnRyeSl7aWYocy5zdWJqZWN0KWZvcih2YXIgbz0wO288Zi5sZW5ndGg7bysrKWkucG9pbnQoKGg9ZltvXSlbMF0saFsxXSk7ZWxzZSByKHMucG9pbnQscy5uZXh0LnBvaW50LDEsaSk7cz1zLm5leHR9ZWxzZXtpZihzLnN1YmplY3Qpe2Y9cy5wcmV2LnBvaW50cztmb3IodmFyIG89Zi5sZW5ndGg7LS1vPj0wOylpLnBvaW50KChoPWZbb10pWzBdLGhbMV0pfWVsc2UgcihzLnBvaW50LHMucHJldi5wb2ludCwtMSxpKTtzPXMucHJldn1zPXMub3RoZXIsZj1zLnBvaW50c313aGlsZSghcy52aXNpdGVkKTtpLmxpbmVFbmQoKX19fWZ1bmN0aW9uIEl0KG4pe2lmKHQ9bi5sZW5ndGgpe2Zvcih2YXIgdCxlLHI9MCxpPW5bMF07KytyPHQ7KWkubmV4dD1lPW5bcl0sZS5wcmV2PWksaT1lO2kubmV4dD1lPW5bMF0sZS5wcmV2PWl9fWZ1bmN0aW9uIFZ0KG4sdCxlLHIpe3JldHVybiBmdW5jdGlvbihpKXtmdW5jdGlvbiB1KHQsZSl7bih0LGUpJiZpLnBvaW50KHQsZSl9ZnVuY3Rpb24gYShuLHQpe2QucG9pbnQobix0KX1mdW5jdGlvbiBvKCl7bS5wb2ludD1hLGQubGluZVN0YXJ0KCl9ZnVuY3Rpb24gYygpe20ucG9pbnQ9dSxkLmxpbmVFbmQoKX1mdW5jdGlvbiBsKG4sdCl7eS5wb2ludChuLHQpLHAucHVzaChbbix0XSl9ZnVuY3Rpb24gcygpe3kubGluZVN0YXJ0KCkscD1bXX1mdW5jdGlvbiBmKCl7bChwWzBdWzBdLHBbMF1bMV0pLHkubGluZUVuZCgpO3ZhciBuLHQ9eS5jbGVhbigpLGU9di5idWZmZXIoKSxyPWUubGVuZ3RoO2lmKHAucG9wKCksZy5wdXNoKHApLHA9bnVsbCxyKXtpZigxJnQpe249ZVswXTt2YXIgdSxyPW4ubGVuZ3RoLTEsYT0tMTtmb3IoaS5saW5lU3RhcnQoKTsrK2E8cjspaS5wb2ludCgodT1uW2FdKVswXSx1WzFdKTtyZXR1cm4gaS5saW5lRW5kKCksdm9pZCAwfXI+MSYmMiZ0JiZlLnB1c2goZS5wb3AoKS5jb25jYXQoZS5zaGlmdCgpKSksaC5wdXNoKGUuZmlsdGVyKFh0KSl9fXZhciBoLGcscCxkPXQoaSksbT17cG9pbnQ6dSxsaW5lU3RhcnQ6byxsaW5lRW5kOmMscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bS5wb2ludD1sLG0ubGluZVN0YXJ0PXMsbS5saW5lRW5kPWYsaD1bXSxnPVtdLGkucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXttLnBvaW50PXUsbS5saW5lU3RhcnQ9byxtLmxpbmVFbmQ9YyxoPXlhLm1lcmdlKGgpLGgubGVuZ3RoP1V0KGgsQnQsbnVsbCxlLGkpOnIoZykmJihpLmxpbmVTdGFydCgpLGUobnVsbCxudWxsLDEsaSksaS5saW5lRW5kKCkpLGkucG9seWdvbkVuZCgpLGg9Zz1udWxsfSxzcGhlcmU6ZnVuY3Rpb24oKXtpLnBvbHlnb25TdGFydCgpLGkubGluZVN0YXJ0KCksZShudWxsLG51bGwsMSxpKSxpLmxpbmVFbmQoKSxpLnBvbHlnb25FbmQoKX19LHY9WnQoKSx5PXQodik7cmV0dXJuIG19fWZ1bmN0aW9uIFh0KG4pe3JldHVybiBuLmxlbmd0aD4xfWZ1bmN0aW9uIFp0KCl7dmFyIG4sdD1bXTtyZXR1cm57bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKG49W10pfSxwb2ludDpmdW5jdGlvbih0LGUpe24ucHVzaChbdCxlXSl9LGxpbmVFbmQ6cyxidWZmZXI6ZnVuY3Rpb24oKXt2YXIgZT10O3JldHVybiB0PVtdLG49bnVsbCxlfSxyZWpvaW46ZnVuY3Rpb24oKXt0Lmxlbmd0aD4xJiZ0LnB1c2godC5wb3AoKS5jb25jYXQodC5zaGlmdCgpKSl9fX1mdW5jdGlvbiBCdChuLHQpe3JldHVybigobj1uLnBvaW50KVswXTwwP25bMV0tJGEvMi1XYTokYS8yLW5bMV0pLSgodD10LnBvaW50KVswXTwwP3RbMV0tJGEvMi1XYTokYS8yLXRbMV0pfWZ1bmN0aW9uICR0KG4sdCl7dmFyIGU9blswXSxyPW5bMV0saT1bTWF0aC5zaW4oZSksLU1hdGguY29zKGUpLDBdLHU9MCxhPSExLG89ITEsYz0wO0VvLnJlc2V0KCk7Zm9yKHZhciBsPTAscz10Lmxlbmd0aDtzPmw7KytsKXt2YXIgZj10W2xdLGg9Zi5sZW5ndGg7aWYoaCl7Zm9yKHZhciBnPWZbMF0scD1nWzBdLGQ9Z1sxXS8yKyRhLzQsbT1NYXRoLnNpbihkKSx2PU1hdGguY29zKGQpLHk9MTs7KXt5PT09aCYmKHk9MCksbj1mW3ldO3ZhciBNPW5bMF0seD1uWzFdLzIrJGEvNCxiPU1hdGguc2luKHgpLF89TWF0aC5jb3MoeCksdz1NLXAsUz1NYXRoLmFicyh3KT4kYSxFPW0qYjtpZihFby5hZGQoTWF0aC5hdGFuMihFKk1hdGguc2luKHcpLHYqXytFKk1hdGguY29zKHcpKSksTWF0aC5hYnMoeCk8V2EmJihvPSEwKSx1Kz1TP3crKHc+PTA/MjotMikqJGE6dyxTXnA+PWVeTT49ZSl7dmFyIGs9VHQoTnQoZyksTnQobikpO0R0KGspO3ZhciBBPVR0KGksayk7RHQoQSk7dmFyIE49KFNedz49MD8tMToxKSpJKEFbMl0pO3I+TiYmKGMrPVNedz49MD8xOi0xKX1pZigheSsrKWJyZWFrO3A9TSxtPWIsdj1fLGc9bn1NYXRoLmFicyh1KT5XYSYmKGE9ITApfX1yZXR1cm4oIW8mJiFhJiYwPkVvfHwtV2E+dSleMSZjfWZ1bmN0aW9uIFd0KG4pe3ZhciB0LGU9MC8wLHI9MC8wLGk9MC8wO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtuLmxpbmVTdGFydCgpLHQ9MX0scG9pbnQ6ZnVuY3Rpb24odSxhKXt2YXIgbz11PjA/JGE6LSRhLGM9TWF0aC5hYnModS1lKTtNYXRoLmFicyhjLSRhKTxXYT8obi5wb2ludChlLHI9KHIrYSkvMj4wPyRhLzI6LSRhLzIpLG4ucG9pbnQoaSxyKSxuLmxpbmVFbmQoKSxuLmxpbmVTdGFydCgpLG4ucG9pbnQobyxyKSxuLnBvaW50KHUsciksdD0wKTppIT09byYmYz49JGEmJihNYXRoLmFicyhlLWkpPFdhJiYoZS09aSpXYSksTWF0aC5hYnModS1vKTxXYSYmKHUtPW8qV2EpLHI9SnQoZSxyLHUsYSksbi5wb2ludChpLHIpLG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCksbi5wb2ludChvLHIpLHQ9MCksbi5wb2ludChlPXUscj1hKSxpPW99LGxpbmVFbmQ6ZnVuY3Rpb24oKXtuLmxpbmVFbmQoKSxlPXI9MC8wfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLXR9fX1mdW5jdGlvbiBKdChuLHQsZSxyKXt2YXIgaSx1LGE9TWF0aC5zaW4obi1lKTtyZXR1cm4gTWF0aC5hYnMoYSk+V2E/TWF0aC5hdGFuKChNYXRoLnNpbih0KSoodT1NYXRoLmNvcyhyKSkqTWF0aC5zaW4oZSktTWF0aC5zaW4ocikqKGk9TWF0aC5jb3ModCkpKk1hdGguc2luKG4pKS8oaSp1KmEpKToodCtyKS8yfWZ1bmN0aW9uIEd0KG4sdCxlLHIpe3ZhciBpO2lmKG51bGw9PW4paT1lKiRhLzIsci5wb2ludCgtJGEsaSksci5wb2ludCgwLGkpLHIucG9pbnQoJGEsaSksci5wb2ludCgkYSwwKSxyLnBvaW50KCRhLC1pKSxyLnBvaW50KDAsLWkpLHIucG9pbnQoLSRhLC1pKSxyLnBvaW50KC0kYSwwKSxyLnBvaW50KC0kYSxpKTtlbHNlIGlmKE1hdGguYWJzKG5bMF0tdFswXSk+V2Epe3ZhciB1PShuWzBdPHRbMF0/MTotMSkqJGE7aT1lKnUvMixyLnBvaW50KC11LGkpLHIucG9pbnQoMCxpKSxyLnBvaW50KHUsaSl9ZWxzZSByLnBvaW50KHRbMF0sdFsxXSl9ZnVuY3Rpb24gS3Qobil7cmV0dXJuICR0KFlvLG4pfWZ1bmN0aW9uIFF0KG4pe2Z1bmN0aW9uIHQobix0KXtyZXR1cm4gTWF0aC5jb3MobikqTWF0aC5jb3ModCk+YX1mdW5jdGlvbiBlKG4pe3ZhciBlLHUsYSxjLHM7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe2M9YT0hMSxzPTF9LHBvaW50OmZ1bmN0aW9uKGYsaCl7dmFyIGcscD1bZixoXSxkPXQoZixoKSxtPW8/ZD8wOmkoZixoKTpkP2koZisoMD5mPyRhOi0kYSksaCk6MDtpZighZSYmKGM9YT1kKSYmbi5saW5lU3RhcnQoKSxkIT09YSYmKGc9cihlLHApLChMdChlLGcpfHxMdChwLGcpKSYmKHBbMF0rPVdhLHBbMV0rPVdhLGQ9dChwWzBdLHBbMV0pKSksZCE9PWEpcz0wLGQ/KG4ubGluZVN0YXJ0KCksZz1yKHAsZSksbi5wb2ludChnWzBdLGdbMV0pKTooZz1yKGUscCksbi5wb2ludChnWzBdLGdbMV0pLG4ubGluZUVuZCgpKSxlPWc7ZWxzZSBpZihsJiZlJiZvXmQpe3ZhciB2O20mdXx8ISh2PXIocCxlLCEwKSl8fChzPTAsbz8obi5saW5lU3RhcnQoKSxuLnBvaW50KHZbMF1bMF0sdlswXVsxXSksbi5wb2ludCh2WzFdWzBdLHZbMV1bMV0pLG4ubGluZUVuZCgpKToobi5wb2ludCh2WzFdWzBdLHZbMV1bMV0pLG4ubGluZUVuZCgpLG4ubGluZVN0YXJ0KCksbi5wb2ludCh2WzBdWzBdLHZbMF1bMV0pKSl9IWR8fGUmJkx0KGUscCl8fG4ucG9pbnQocFswXSxwWzFdKSxlPXAsYT1kLHU9bX0sbGluZUVuZDpmdW5jdGlvbigpe2EmJm4ubGluZUVuZCgpLGU9bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gc3woYyYmYSk8PDF9fX1mdW5jdGlvbiByKG4sdCxlKXt2YXIgcj1OdChuKSxpPU50KHQpLHU9WzEsMCwwXSxvPVR0KHIsaSksYz1xdChvLG8pLGw9b1swXSxzPWMtbCpsO2lmKCFzKXJldHVybiFlJiZuO3ZhciBmPWEqYy9zLGg9LWEqbC9zLGc9VHQodSxvKSxwPXp0KHUsZiksZD16dChvLGgpO0N0KHAsZCk7dmFyIG09Zyx2PXF0KHAsbSkseT1xdChtLG0pLE09dip2LXkqKHF0KHAscCktMSk7aWYoISgwPk0pKXt2YXIgeD1NYXRoLnNxcnQoTSksYj16dChtLCgtdi14KS95KTtpZihDdChiLHApLGI9anQoYiksIWUpcmV0dXJuIGI7dmFyIF8sdz1uWzBdLFM9dFswXSxFPW5bMV0saz10WzFdO3c+UyYmKF89dyx3PVMsUz1fKTt2YXIgQT1TLXcsTj1NYXRoLmFicyhBLSRhKTxXYSxxPU58fFdhPkE7aWYoIU4mJkU+ayYmKF89RSxFPWssaz1fKSxxP04/RStrPjBeYlsxXTwoTWF0aC5hYnMoYlswXS13KTxXYT9FOmspOkU8PWJbMV0mJmJbMV08PWs6QT4kYV4odzw9YlswXSYmYlswXTw9Uykpe3ZhciBUPXp0KG0sKC12K3gpL3kpO3JldHVybiBDdChULHApLFtiLGp0KFQpXX19fWZ1bmN0aW9uIGkodCxlKXt2YXIgcj1vP246JGEtbixpPTA7cmV0dXJuLXI+dD9pfD0xOnQ+ciYmKGl8PTIpLC1yPmU/aXw9NDplPnImJihpfD04KSxpfWZ1bmN0aW9uIHUobil7cmV0dXJuICR0KGMsbil9dmFyIGE9TWF0aC5jb3Mobiksbz1hPjAsYz1bbiwwXSxsPU1hdGguYWJzKGEpPldhLHM9U2Uobiw2KkdhKTtyZXR1cm4gVnQodCxlLHMsdSl9ZnVuY3Rpb24gbmUobix0LGUscil7ZnVuY3Rpb24gaShyLGkpe3JldHVybiBNYXRoLmFicyhyWzBdLW4pPFdhP2k+MD8wOjM6TWF0aC5hYnMoclswXS1lKTxXYT9pPjA/MjoxOk1hdGguYWJzKHJbMV0tdCk8V2E/aT4wPzE6MDppPjA/MzoyfWZ1bmN0aW9uIHUobix0KXtyZXR1cm4gYShuLnBvaW50LHQucG9pbnQpfWZ1bmN0aW9uIGEobix0KXt2YXIgZT1pKG4sMSkscj1pKHQsMSk7cmV0dXJuIGUhPT1yP2UtcjowPT09ZT90WzFdLW5bMV06MT09PWU/blswXS10WzBdOjI9PT1lP25bMV0tdFsxXTp0WzBdLW5bMF19ZnVuY3Rpb24gbyhpLHUpe3ZhciBhPXVbMF0taVswXSxvPXVbMV0taVsxXSxjPVswLDFdO3JldHVybiBNYXRoLmFicyhhKTxXYSYmTWF0aC5hYnMobyk8V2E/bjw9aVswXSYmaVswXTw9ZSYmdDw9aVsxXSYmaVsxXTw9cjp0ZShuLWlbMF0sYSxjKSYmdGUoaVswXS1lLC1hLGMpJiZ0ZSh0LWlbMV0sbyxjKSYmdGUoaVsxXS1yLC1vLGMpPyhjWzFdPDEmJih1WzBdPWlbMF0rY1sxXSphLHVbMV09aVsxXStjWzFdKm8pLGNbMF0+MCYmKGlbMF0rPWNbMF0qYSxpWzFdKz1jWzBdKm8pLCEwKTohMX1yZXR1cm4gZnVuY3Rpb24oYyl7ZnVuY3Rpb24gbCh1KXt2YXIgYT1pKHUsLTEpLG89cyhbMD09PWF8fDM9PT1hP246ZSxhPjE/cjp0XSk7cmV0dXJuIG99ZnVuY3Rpb24gcyhuKXtmb3IodmFyIHQ9MCxlPU0ubGVuZ3RoLHI9blsxXSxpPTA7ZT5pOysraSlmb3IodmFyIHUsYT0xLG89TVtpXSxjPW8ubGVuZ3RoLGw9b1swXTtjPmE7KythKXU9b1thXSxsWzFdPD1yP3VbMV0+ciYmZihsLHUsbik+MCYmKyt0OnVbMV08PXImJmYobCx1LG4pPDAmJi0tdCxsPXU7cmV0dXJuIDAhPT10fWZ1bmN0aW9uIGYobix0LGUpe3JldHVybih0WzBdLW5bMF0pKihlWzFdLW5bMV0pLShlWzBdLW5bMF0pKih0WzFdLW5bMV0pfWZ1bmN0aW9uIGgodSxvLGMsbCl7dmFyIHM9MCxmPTA7aWYobnVsbD09dXx8KHM9aSh1LGMpKSE9PShmPWkobyxjKSl8fGEodSxvKTwwXmM+MCl7ZG8gbC5wb2ludCgwPT09c3x8Mz09PXM/bjplLHM+MT9yOnQpO3doaWxlKChzPShzK2MrNCklNCkhPT1mKX1lbHNlIGwucG9pbnQob1swXSxvWzFdKX1mdW5jdGlvbiBnKGksdSl7cmV0dXJuIGk+PW4mJmU+PWkmJnU+PXQmJnI+PXV9ZnVuY3Rpb24gcChuLHQpe2cobix0KSYmYy5wb2ludChuLHQpfWZ1bmN0aW9uIGQoKXtULnBvaW50PXYsTSYmTS5wdXNoKHg9W10pLEE9ITAsaz0hMSxTPUU9MC8wfWZ1bmN0aW9uIG0oKXt5JiYodihiLF8pLHcmJmsmJnEucmVqb2luKCkseS5wdXNoKHEuYnVmZmVyKCkpKSxULnBvaW50PXAsayYmYy5saW5lRW5kKCl9ZnVuY3Rpb24gdihuLHQpe249TWF0aC5tYXgoLVJvLE1hdGgubWluKFJvLG4pKSx0PU1hdGgubWF4KC1SbyxNYXRoLm1pbihSbyx0KSk7dmFyIGU9ZyhuLHQpO2lmKE0mJngucHVzaChbbix0XSksQSliPW4sXz10LHc9ZSxBPSExLGUmJihjLmxpbmVTdGFydCgpLGMucG9pbnQobix0KSk7ZWxzZSBpZihlJiZrKWMucG9pbnQobix0KTtlbHNle3ZhciByPVtTLEVdLGk9W24sdF07byhyLGkpPyhrfHwoYy5saW5lU3RhcnQoKSxjLnBvaW50KHJbMF0sclsxXSkpLGMucG9pbnQoaVswXSxpWzFdKSxlfHxjLmxpbmVFbmQoKSk6ZSYmKGMubGluZVN0YXJ0KCksYy5wb2ludChuLHQpKX1TPW4sRT10LGs9ZX12YXIgeSxNLHgsYixfLHcsUyxFLGssQSxOPWMscT1adCgpLFQ9e3BvaW50OnAsbGluZVN0YXJ0OmQsbGluZUVuZDptLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2M9cSx5PVtdLE09W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtjPU4sKHk9eWEubWVyZ2UoeSkpLmxlbmd0aD8oYy5wb2x5Z29uU3RhcnQoKSxVdCh5LHUsbCxoLGMpLGMucG9seWdvbkVuZCgpKTpzKFtuLHRdKSYmKGMucG9seWdvblN0YXJ0KCksYy5saW5lU3RhcnQoKSxoKG51bGwsbnVsbCwxLGMpLGMubGluZUVuZCgpLGMucG9seWdvbkVuZCgpKSx5PU09eD1udWxsfX07cmV0dXJuIFR9fWZ1bmN0aW9uIHRlKG4sdCxlKXtpZihNYXRoLmFicyh0KTxXYSlyZXR1cm4gMD49bjt2YXIgcj1uL3Q7aWYodD4wKXtpZihyPmVbMV0pcmV0dXJuITE7cj5lWzBdJiYoZVswXT1yKX1lbHNle2lmKHI8ZVswXSlyZXR1cm4hMTtyPGVbMV0mJihlWzFdPXIpfXJldHVybiEwfWZ1bmN0aW9uIGVlKG4sdCl7ZnVuY3Rpb24gZShlLHIpe3JldHVybiBlPW4oZSxyKSx0KGVbMF0sZVsxXSl9cmV0dXJuIG4uaW52ZXJ0JiZ0LmludmVydCYmKGUuaW52ZXJ0PWZ1bmN0aW9uKGUscil7cmV0dXJuIGU9dC5pbnZlcnQoZSxyKSxlJiZuLmludmVydChlWzBdLGVbMV0pfSksZX1mdW5jdGlvbiByZShuKXt2YXIgdD0wLGU9JGEvMyxyPXZlKG4pLGk9cih0LGUpO3JldHVybiBpLnBhcmFsbGVscz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKHQ9blswXSokYS8xODAsZT1uWzFdKiRhLzE4MCk6WzE4MCoodC8kYSksMTgwKihlLyRhKV19LGl9ZnVuY3Rpb24gaWUobix0KXtmdW5jdGlvbiBlKG4sdCl7dmFyIGU9TWF0aC5zcXJ0KHUtMippKk1hdGguc2luKHQpKS9pO3JldHVybltlKk1hdGguc2luKG4qPWkpLGEtZSpNYXRoLmNvcyhuKV19dmFyIHI9TWF0aC5zaW4obiksaT0ocitNYXRoLnNpbih0KSkvMix1PTErciooMippLXIpLGE9TWF0aC5zcXJ0KHUpL2k7cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7dmFyIGU9YS10O3JldHVybltNYXRoLmF0YW4yKG4sZSkvaSxJKCh1LShuKm4rZSplKSppKmkpLygyKmkpKV19LGV9ZnVuY3Rpb24gdWUoKXtmdW5jdGlvbiBuKG4sdCl7SW8rPWkqbi1yKnQscj1uLGk9dH12YXIgdCxlLHIsaTskby5wb2ludD1mdW5jdGlvbih1LGEpeyRvLnBvaW50PW4sdD1yPXUsZT1pPWF9LCRvLmxpbmVFbmQ9ZnVuY3Rpb24oKXtuKHQsZSl9fWZ1bmN0aW9uIGFlKG4sdCl7Vm8+biYmKFZvPW4pLG4+Wm8mJihabz1uKSxYbz50JiYoWG89dCksdD5CbyYmKEJvPXQpfWZ1bmN0aW9uIG9lKCl7ZnVuY3Rpb24gbihuLHQpe2EucHVzaCgiTSIsbiwiLCIsdCx1KX1mdW5jdGlvbiB0KG4sdCl7YS5wdXNoKCJNIixuLCIsIix0KSxvLnBvaW50PWV9ZnVuY3Rpb24gZShuLHQpe2EucHVzaCgiTCIsbiwiLCIsdCl9ZnVuY3Rpb24gcigpe28ucG9pbnQ9bn1mdW5jdGlvbiBpKCl7YS5wdXNoKCJaIil9dmFyIHU9Y2UoNC41KSxhPVtdLG89e3BvaW50Om4sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7by5wb2ludD10fSxsaW5lRW5kOnIscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7by5saW5lRW5kPWl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtvLmxpbmVFbmQ9cixvLnBvaW50PW59LHBvaW50UmFkaXVzOmZ1bmN0aW9uKG4pe3JldHVybiB1PWNlKG4pLG99LHJlc3VsdDpmdW5jdGlvbigpe2lmKGEubGVuZ3RoKXt2YXIgbj1hLmpvaW4oIiIpO3JldHVybiBhPVtdLG59fX07cmV0dXJuIG99ZnVuY3Rpb24gY2Uobil7cmV0dXJuIm0wLCIrbisiYSIrbisiLCIrbisiIDAgMSwxIDAsIistMipuKyJhIituKyIsIituKyIgMCAxLDEgMCwiKzIqbisieiJ9ZnVuY3Rpb24gbGUobix0KXtxbys9bixUbys9dCwrK0NvfWZ1bmN0aW9uIHNlKCl7ZnVuY3Rpb24gbihuLHIpe3ZhciBpPW4tdCx1PXItZSxhPU1hdGguc3FydChpKmkrdSp1KTt6bys9YSoodCtuKS8yLERvKz1hKihlK3IpLzIsam8rPWEsbGUodD1uLGU9cil9dmFyIHQsZTtKby5wb2ludD1mdW5jdGlvbihyLGkpe0pvLnBvaW50PW4sbGUodD1yLGU9aSl9fWZ1bmN0aW9uIGZlKCl7Sm8ucG9pbnQ9bGV9ZnVuY3Rpb24gaGUoKXtmdW5jdGlvbiBuKG4sdCl7dmFyIGU9bi1yLHU9dC1pLGE9TWF0aC5zcXJ0KGUqZSt1KnUpO3pvKz1hKihyK24pLzIsRG8rPWEqKGkrdCkvMixqbys9YSxhPWkqbi1yKnQsTG8rPWEqKHIrbiksSG8rPWEqKGkrdCksRm8rPTMqYSxsZShyPW4saT10KX12YXIgdCxlLHIsaTtKby5wb2ludD1mdW5jdGlvbih1LGEpe0pvLnBvaW50PW4sbGUodD1yPXUsZT1pPWEpfSxKby5saW5lRW5kPWZ1bmN0aW9uKCl7bih0LGUpfX1mdW5jdGlvbiBnZShuKXtmdW5jdGlvbiB0KHQsZSl7bi5tb3ZlVG8odCxlKSxuLmFyYyh0LGUsYSwwLDIqJGEpfWZ1bmN0aW9uIGUodCxlKXtuLm1vdmVUbyh0LGUpLG8ucG9pbnQ9cn1mdW5jdGlvbiByKHQsZSl7bi5saW5lVG8odCxlKX1mdW5jdGlvbiBpKCl7by5wb2ludD10fWZ1bmN0aW9uIHUoKXtuLmNsb3NlUGF0aCgpfXZhciBhPTQuNSxvPXtwb2ludDp0LGxpbmVTdGFydDpmdW5jdGlvbigpe28ucG9pbnQ9ZX0sbGluZUVuZDppLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe28ubGluZUVuZD11fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7by5saW5lRW5kPWksby5wb2ludD10fSxwb2ludFJhZGl1czpmdW5jdGlvbihuKXtyZXR1cm4gYT1uLG99LHJlc3VsdDpzfTtyZXR1cm4gb31mdW5jdGlvbiBwZShuKXtmdW5jdGlvbiB0KHQpe2Z1bmN0aW9uIHIoZSxyKXtlPW4oZSxyKSx0LnBvaW50KGVbMF0sZVsxXSl9ZnVuY3Rpb24gaSgpe009MC8wLFMucG9pbnQ9YSx0LmxpbmVTdGFydCgpfWZ1bmN0aW9uIGEocixpKXt2YXIgYT1OdChbcixpXSksbz1uKHIsaSk7ZShNLHgseSxiLF8sdyxNPW9bMF0seD1vWzFdLHk9cixiPWFbMF0sXz1hWzFdLHc9YVsyXSx1LHQpLHQucG9pbnQoTSx4KX1mdW5jdGlvbiBvKCl7Uy5wb2ludD1yLHQubGluZUVuZCgpfWZ1bmN0aW9uIGMoKXtpKCksUy5wb2ludD1sLFMubGluZUVuZD1zfWZ1bmN0aW9uIGwobix0KXthKGY9bixoPXQpLGc9TSxwPXgsZD1iLG09Xyx2PXcsUy5wb2ludD1hfWZ1bmN0aW9uIHMoKXtlKE0seCx5LGIsXyx3LGcscCxmLGQsbSx2LHUsdCksUy5saW5lRW5kPW8sbygpfXZhciBmLGgsZyxwLGQsbSx2LHksTSx4LGIsXyx3LFM9e3BvaW50OnIsbGluZVN0YXJ0OmksbGluZUVuZDpvLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCksUy5saW5lU3RhcnQ9Y30scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpLFMubGluZVN0YXJ0PWl9fTtyZXR1cm4gU31mdW5jdGlvbiBlKHQsdSxhLG8sYyxsLHMsZixoLGcscCxkLG0sdil7dmFyIHk9cy10LE09Zi11LHg9eSp5K00qTTtpZih4PjQqciYmbS0tKXt2YXIgYj1vK2csXz1jK3Asdz1sK2QsUz1NYXRoLnNxcnQoYipiK18qXyt3KncpLEU9TWF0aC5hc2luKHcvPVMpLGs9TWF0aC5hYnMoTWF0aC5hYnModyktMSk8V2E/KGEraCkvMjpNYXRoLmF0YW4yKF8sYiksQT1uKGssRSksTj1BWzBdLHE9QVsxXSxUPU4tdCxDPXEtdSx6PU0qVC15KkM7KHoqei94PnJ8fE1hdGguYWJzKCh5KlQrTSpDKS94LS41KT4uM3x8aT5vKmcrYypwK2wqZCkmJihlKHQsdSxhLG8sYyxsLE4scSxrLGIvPVMsXy89Uyx3LG0sdiksdi5wb2ludChOLHEpLGUoTixxLGssYixfLHcscyxmLGgsZyxwLGQsbSx2KSl9fXZhciByPS41LGk9TWF0aC5jb3MoMzAqR2EpLHU9MTY7cmV0dXJuIHQucHJlY2lzaW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PShyPW4qbik+MCYmMTYsdCk6TWF0aC5zcXJ0KHIpfSx0fWZ1bmN0aW9uIGRlKG4pe3ZhciB0PXBlKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oW3QqS2EsZSpLYV0pfSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuPXQobikse3BvaW50OmZ1bmN0aW9uKHQsZSl7bi5wb2ludCh0KkdhLGUqR2EpfSxzcGhlcmU6ZnVuY3Rpb24oKXtuLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtuLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7bi5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe24ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25FbmQoKX19fX1mdW5jdGlvbiBtZShuKXtyZXR1cm4gdmUoZnVuY3Rpb24oKXtyZXR1cm4gbn0pKCl9ZnVuY3Rpb24gdmUobil7ZnVuY3Rpb24gdChuKXtyZXR1cm4gbj1vKG5bMF0qR2EsblsxXSpHYSksW25bMF0qaCtjLGwtblsxXSpoXX1mdW5jdGlvbiBlKG4pe3JldHVybiBuPW8uaW52ZXJ0KChuWzBdLWMpL2gsKGwtblsxXSkvaCksbiYmW25bMF0qS2EsblsxXSpLYV19ZnVuY3Rpb24gcigpe289ZWUoYT14ZSh2LHksTSksdSk7dmFyIG49dShkLG0pO3JldHVybiBjPWctblswXSpoLGw9cCtuWzFdKmgsaSgpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gcyYmKHMudmFsaWQ9ITEscz1udWxsKSx0fXZhciB1LGEsbyxjLGwscyxmPXBlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG49dShuLHQpLFtuWzBdKmgrYyxsLW5bMV0qaF19KSxoPTE1MCxnPTQ4MCxwPTI1MCxkPTAsbT0wLHY9MCx5PTAsTT0wLHg9T28sYj1odCxfPW51bGwsdz1udWxsO3JldHVybiB0LnN0cmVhbT1mdW5jdGlvbihuKXtyZXR1cm4gcyYmKHMudmFsaWQ9ITEpLHM9eWUoYSx4KGYoYihuKSkpKSxzLnZhbGlkPSEwLHN9LHQuY2xpcEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PW51bGw9PW4/KF89bixPbyk6UXQoKF89K24pKkdhKSxpKCkpOl99LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1uLGI9bnVsbD09bj9odDpuZShuWzBdWzBdLG5bMF1bMV0sblsxXVswXSxuWzFdWzFdKSxpKCkpOnd9LHQuc2NhbGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K24scigpKTpofSx0LnRyYW5zbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0rblswXSxwPStuWzFdLHIoKSk6W2cscF19LHQuY2VudGVyPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW5bMF0lMzYwKkdhLG09blsxXSUzNjAqR2EscigpKTpbZCpLYSxtKkthXX0sdC5yb3RhdGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9blswXSUzNjAqR2EseT1uWzFdJTM2MCpHYSxNPW4ubGVuZ3RoPjI/blsyXSUzNjAqR2E6MCxyKCkpOlt2KkthLHkqS2EsTSpLYV19LHlhLnJlYmluZCh0LGYsInByZWNpc2lvbiIpLGZ1bmN0aW9uKCl7cmV0dXJuIHU9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5pbnZlcnQ9dS5pbnZlcnQmJmUscigpfX1mdW5jdGlvbiB5ZShuLHQpe3JldHVybntwb2ludDpmdW5jdGlvbihlLHIpe3I9bihlKkdhLHIqR2EpLGU9clswXSx0LnBvaW50KGU+JGE/ZS0yKiRhOi0kYT5lP2UrMiokYTplLHJbMV0pfSxzcGhlcmU6ZnVuY3Rpb24oKXt0LnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3QucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25FbmQoKX19fWZ1bmN0aW9uIE1lKG4sdCl7cmV0dXJuW24sdF19ZnVuY3Rpb24geGUobix0LGUpe3JldHVybiBuP3R8fGU/ZWUoX2Uobiksd2UodCxlKSk6X2Uobik6dHx8ZT93ZSh0LGUpOk1lfWZ1bmN0aW9uIGJlKG4pe3JldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiB0Kz1uLFt0PiRhP3QtMiokYTotJGE+dD90KzIqJGE6dCxlXX19ZnVuY3Rpb24gX2Uobil7dmFyIHQ9YmUobik7cmV0dXJuIHQuaW52ZXJ0PWJlKC1uKSx0fWZ1bmN0aW9uIHdlKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPU1hdGguY29zKHQpLG89TWF0aC5jb3MobikqZSxjPU1hdGguc2luKG4pKmUsbD1NYXRoLnNpbih0KSxzPWwqcitvKmk7cmV0dXJuW01hdGguYXRhbjIoYyp1LXMqYSxvKnItbCppKSxJKHMqdStjKmEpXX12YXIgcj1NYXRoLmNvcyhuKSxpPU1hdGguc2luKG4pLHU9TWF0aC5jb3ModCksYT1NYXRoLnNpbih0KTtyZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT1NYXRoLmNvcyh0KSxvPU1hdGguY29zKG4pKmUsYz1NYXRoLnNpbihuKSplLGw9TWF0aC5zaW4odCkscz1sKnUtYyphO3JldHVybltNYXRoLmF0YW4yKGMqdStsKmEsbypyK3MqaSksSShzKnItbyppKV19LGV9ZnVuY3Rpb24gU2Uobix0KXt2YXIgZT1NYXRoLmNvcyhuKSxyPU1hdGguc2luKG4pO3JldHVybiBmdW5jdGlvbihpLHUsYSxvKXtudWxsIT1pPyhpPUVlKGUsaSksdT1FZShlLHUpLChhPjA/dT5pOmk+dSkmJihpKz0yKmEqJGEpKTooaT1uKzIqYSokYSx1PW4pO2Zvcih2YXIgYyxsPWEqdCxzPWk7YT4wP3M+dTp1PnM7cy09bClvLnBvaW50KChjPWp0KFtlLC1yKk1hdGguY29zKHMpLC1yKk1hdGguc2luKHMpXSkpWzBdLGNbMV0pfX1mdW5jdGlvbiBFZShuLHQpe3ZhciBlPU50KHQpO2VbMF0tPW4sRHQoZSk7dmFyIHI9VSgtZVsxXSk7cmV0dXJuKCgtZVsyXTwwPy1yOnIpKzIqTWF0aC5QSS1XYSklKDIqTWF0aC5QSSl9ZnVuY3Rpb24ga2Uobix0LGUpe3ZhciByPXlhLnJhbmdlKG4sdC1XYSxlKS5jb25jYXQodCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiByLm1hcChmdW5jdGlvbih0KXtyZXR1cm5bbix0XX0pfX1mdW5jdGlvbiBBZShuLHQsZSl7dmFyIHI9eWEucmFuZ2Uobix0LVdhLGUpLmNvbmNhdCh0KTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHIubWFwKGZ1bmN0aW9uKHQpe3JldHVyblt0LG5dfSl9fWZ1bmN0aW9uIE5lKG4pe3JldHVybiBuLnNvdXJjZX1mdW5jdGlvbiBxZShuKXtyZXR1cm4gbi50YXJnZXR9ZnVuY3Rpb24gVGUobix0LGUscil7dmFyIGk9TWF0aC5jb3ModCksdT1NYXRoLnNpbih0KSxhPU1hdGguY29zKHIpLG89TWF0aC5zaW4ociksYz1pKk1hdGguY29zKG4pLGw9aSpNYXRoLnNpbihuKSxzPWEqTWF0aC5jb3MoZSksZj1hKk1hdGguc2luKGUpLGg9MipNYXRoLmFzaW4oTWF0aC5zcXJ0KFooci10KStpKmEqWihlLW4pKSksZz0xL01hdGguc2luKGgpLHA9aD9mdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNpbihuKj1oKSpnLGU9TWF0aC5zaW4oaC1uKSpnLHI9ZSpjK3QqcyxpPWUqbCt0KmYsYT1lKnUrdCpvO3JldHVybltNYXRoLmF0YW4yKGkscikqS2EsTWF0aC5hdGFuMihhLE1hdGguc3FydChyKnIraSppKSkqS2FdfTpmdW5jdGlvbigpe3JldHVybltuKkthLHQqS2FdfTtyZXR1cm4gcC5kaXN0YW5jZT1oLHB9ZnVuY3Rpb24gQ2UoKXtmdW5jdGlvbiBuKG4saSl7dmFyIHU9TWF0aC5zaW4oaSo9R2EpLGE9TWF0aC5jb3MoaSksbz1NYXRoLmFicygobio9R2EpLXQpLGM9TWF0aC5jb3Mobyk7R28rPU1hdGguYXRhbjIoTWF0aC5zcXJ0KChvPWEqTWF0aC5zaW4obykpKm8rKG89cip1LWUqYSpjKSpvKSxlKnUrciphKmMpLHQ9bixlPXUscj1hfXZhciB0LGUscjtLby5wb2ludD1mdW5jdGlvbihpLHUpe3Q9aSpHYSxlPU1hdGguc2luKHUqPUdhKSxyPU1hdGguY29zKHUpLEtvLnBvaW50PW59LEtvLmxpbmVFbmQ9ZnVuY3Rpb24oKXtLby5wb2ludD1Lby5saW5lRW5kPXN9fWZ1bmN0aW9uIHplKG4sdCl7ZnVuY3Rpb24gZSh0LGUpe3ZhciByPU1hdGguY29zKHQpLGk9TWF0aC5jb3MoZSksdT1uKHIqaSk7cmV0dXJuW3UqaSpNYXRoLnNpbih0KSx1Kk1hdGguc2luKGUpXX1yZXR1cm4gZS5pbnZlcnQ9ZnVuY3Rpb24obixlKXt2YXIgcj1NYXRoLnNxcnQobipuK2UqZSksaT10KHIpLHU9TWF0aC5zaW4oaSksYT1NYXRoLmNvcyhpKTtyZXR1cm5bTWF0aC5hdGFuMihuKnUsciphKSxNYXRoLmFzaW4ociYmZSp1L3IpXX0sZX1mdW5jdGlvbiBEZShuLHQpe2Z1bmN0aW9uIGUobix0KXt2YXIgZT1NYXRoLmFicyhNYXRoLmFicyh0KS0kYS8yKTxXYT8wOmEvTWF0aC5wb3coaSh0KSx1KTtyZXR1cm5bZSpNYXRoLnNpbih1Km4pLGEtZSpNYXRoLmNvcyh1Km4pXX12YXIgcj1NYXRoLmNvcyhuKSxpPWZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnRhbigkYS80K24vMil9LHU9bj09PXQ/TWF0aC5zaW4obik6TWF0aC5sb2coci9NYXRoLmNvcyh0KSkvTWF0aC5sb2coaSh0KS9pKG4pKSxhPXIqTWF0aC5wb3coaShuKSx1KS91O3JldHVybiB1PyhlLmludmVydD1mdW5jdGlvbihuLHQpe3ZhciBlPWEtdCxyPVIodSkqTWF0aC5zcXJ0KG4qbitlKmUpO3JldHVybltNYXRoLmF0YW4yKG4sZSkvdSwyKk1hdGguYXRhbihNYXRoLnBvdyhhL3IsMS91KSktJGEvMl19LGUpOkxlfWZ1bmN0aW9uIGplKG4sdCl7ZnVuY3Rpb24gZShuLHQpe3ZhciBlPXUtdDtyZXR1cm5bZSpNYXRoLnNpbihpKm4pLHUtZSpNYXRoLmNvcyhpKm4pXX12YXIgcj1NYXRoLmNvcyhuKSxpPW49PT10P01hdGguc2luKG4pOihyLU1hdGguY29zKHQpKS8odC1uKSx1PXIvaStuO3JldHVybiBNYXRoLmFicyhpKTxXYT9NZTooZS5pbnZlcnQ9ZnVuY3Rpb24obix0KXt2YXIgZT11LXQ7cmV0dXJuW01hdGguYXRhbjIobixlKS9pLHUtUihpKSpNYXRoLnNxcnQobipuK2UqZSldfSxlKX1mdW5jdGlvbiBMZShuLHQpe3JldHVybltuLE1hdGgubG9nKE1hdGgudGFuKCRhLzQrdC8yKSldfWZ1bmN0aW9uIEhlKG4pe3ZhciB0LGU9bWUobikscj1lLnNjYWxlLGk9ZS50cmFuc2xhdGUsdT1lLmNsaXBFeHRlbnQ7cmV0dXJuIGUuc2NhbGU9ZnVuY3Rpb24oKXt2YXIgbj1yLmFwcGx5KGUsYXJndW1lbnRzKTtyZXR1cm4gbj09PWU/dD9lLmNsaXBFeHRlbnQobnVsbCk6ZTpufSxlLnRyYW5zbGF0ZT1mdW5jdGlvbigpe3ZhciBuPWkuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBuPT09ZT90P2UuY2xpcEV4dGVudChudWxsKTplOm59LGUuY2xpcEV4dGVudD1mdW5jdGlvbihuKXt2YXIgYT11LmFwcGx5KGUsYXJndW1lbnRzKTtpZihhPT09ZSl7aWYodD1udWxsPT1uKXt2YXIgbz0kYSpyKCksYz1pKCk7dShbW2NbMF0tbyxjWzFdLW9dLFtjWzBdK28sY1sxXStvXV0pfX1lbHNlIHQmJihhPW51bGwpO3JldHVybiBhfSxlLmNsaXBFeHRlbnQobnVsbCl9ZnVuY3Rpb24gRmUobix0KXt2YXIgZT1NYXRoLmNvcyh0KSpNYXRoLnNpbihuKTtyZXR1cm5bTWF0aC5sb2coKDErZSkvKDEtZSkpLzIsTWF0aC5hdGFuMihNYXRoLnRhbih0KSxNYXRoLmNvcyhuKSldfWZ1bmN0aW9uIFBlKG4pe2Z1bmN0aW9uIHQodCl7ZnVuY3Rpb24gYSgpe2wucHVzaCgiTSIsdShuKHMpLG8pKX1mb3IodmFyIGMsbD1bXSxzPVtdLGY9LTEsaD10Lmxlbmd0aCxnPWZ0KGUpLHA9ZnQocik7KytmPGg7KWkuY2FsbCh0aGlzLGM9dFtmXSxmKT9zLnB1c2goWytnLmNhbGwodGhpcyxjLGYpLCtwLmNhbGwodGhpcyxjLGYpXSk6cy5sZW5ndGgmJihhKCkscz1bXSk7cmV0dXJuIHMubGVuZ3RoJiZhKCksbC5sZW5ndGg/bC5qb2luKCIiKTpudWxsfXZhciBlPU9lLHI9WWUsaT1SdCx1PVJlLGE9dS5rZXksbz0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC55PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sdCk6cn0sdC5kZWZpbmVkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW4sdCk6aX0sdC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2Ygbj91PW46KHU9aWMuZ2V0KG4pfHxSZSkua2V5LHQpOmF9LHQudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1uLHQpOm99LHR9ZnVuY3Rpb24gT2Uobil7cmV0dXJuIG5bMF19ZnVuY3Rpb24gWWUobil7cmV0dXJuIG5bMV19ZnVuY3Rpb24gUmUobil7cmV0dXJuIG4uam9pbigiTCIpfWZ1bmN0aW9uIFVlKG4pe3JldHVybiBSZShuKSsiWiJ9ZnVuY3Rpb24gSWUobil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aCxyPW5bMF0saT1bclswXSwiLCIsclsxXV07Kyt0PGU7KWkucHVzaCgiSCIsKHJbMF0rKHI9blt0XSlbMF0pLzIsIlYiLHJbMV0pO3JldHVybiBlPjEmJmkucHVzaCgiSCIsclswXSksaS5qb2luKCIiKX1mdW5jdGlvbiBWZShuKXtmb3IodmFyIHQ9MCxlPW4ubGVuZ3RoLHI9blswXSxpPVtyWzBdLCIsIixyWzFdXTsrK3Q8ZTspaS5wdXNoKCJWIiwocj1uW3RdKVsxXSwiSCIsclswXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gWGUobil7Zm9yKHZhciB0PTAsZT1uLmxlbmd0aCxyPW5bMF0saT1bclswXSwiLCIsclsxXV07Kyt0PGU7KWkucHVzaCgiSCIsKHI9blt0XSlbMF0sIlYiLHJbMV0pO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIFplKG4sdCl7cmV0dXJuIG4ubGVuZ3RoPDQ/UmUobik6blsxXStXZShuLnNsaWNlKDEsbi5sZW5ndGgtMSksSmUobix0KSl9ZnVuY3Rpb24gQmUobix0KXtyZXR1cm4gbi5sZW5ndGg8Mz9SZShuKTpuWzBdK1dlKChuLnB1c2goblswXSksbiksSmUoW25bbi5sZW5ndGgtMl1dLmNvbmNhdChuLFtuWzFdXSksdCkpfWZ1bmN0aW9uICRlKG4sdCl7cmV0dXJuIG4ubGVuZ3RoPDM/UmUobik6blswXStXZShuLEplKG4sdCkpfWZ1bmN0aW9uIFdlKG4sdCl7aWYodC5sZW5ndGg8MXx8bi5sZW5ndGghPXQubGVuZ3RoJiZuLmxlbmd0aCE9dC5sZW5ndGgrMilyZXR1cm4gUmUobik7dmFyIGU9bi5sZW5ndGghPXQubGVuZ3RoLHI9IiIsaT1uWzBdLHU9blsxXSxhPXRbMF0sbz1hLGM9MTtpZihlJiYocis9IlEiKyh1WzBdLTIqYVswXS8zKSsiLCIrKHVbMV0tMiphWzFdLzMpKyIsIit1WzBdKyIsIit1WzFdLGk9blsxXSxjPTIpLHQubGVuZ3RoPjEpe289dFsxXSx1PW5bY10sYysrLHIrPSJDIisoaVswXSthWzBdKSsiLCIrKGlbMV0rYVsxXSkrIiwiKyh1WzBdLW9bMF0pKyIsIisodVsxXS1vWzFdKSsiLCIrdVswXSsiLCIrdVsxXTtmb3IodmFyIGw9MjtsPHQubGVuZ3RoO2wrKyxjKyspdT1uW2NdLG89dFtsXSxyKz0iUyIrKHVbMF0tb1swXSkrIiwiKyh1WzFdLW9bMV0pKyIsIit1WzBdKyIsIit1WzFdfWlmKGUpe3ZhciBzPW5bY107cis9IlEiKyh1WzBdKzIqb1swXS8zKSsiLCIrKHVbMV0rMipvWzFdLzMpKyIsIitzWzBdKyIsIitzWzFdfXJldHVybiByfWZ1bmN0aW9uIEplKG4sdCl7Zm9yKHZhciBlLHI9W10saT0oMS10KS8yLHU9blswXSxhPW5bMV0sbz0xLGM9bi5sZW5ndGg7KytvPGM7KWU9dSx1PWEsYT1uW29dLHIucHVzaChbaSooYVswXS1lWzBdKSxpKihhWzFdLWVbMV0pXSk7cmV0dXJuIHJ9ZnVuY3Rpb24gR2Uobil7aWYobi5sZW5ndGg8MylyZXR1cm4gUmUobik7dmFyIHQ9MSxlPW4ubGVuZ3RoLHI9blswXSxpPXJbMF0sdT1yWzFdLGE9W2ksaSxpLChyPW5bMV0pWzBdXSxvPVt1LHUsdSxyWzFdXSxjPVtpLCIsIix1XTtmb3IoZXIoYyxhLG8pOysrdDxlOylyPW5bdF0sYS5zaGlmdCgpLGEucHVzaChyWzBdKSxvLnNoaWZ0KCksby5wdXNoKHJbMV0pLGVyKGMsYSxvKTtmb3IodD0tMTsrK3Q8MjspYS5zaGlmdCgpLGEucHVzaChyWzBdKSxvLnNoaWZ0KCksby5wdXNoKHJbMV0pLGVyKGMsYSxvKTtyZXR1cm4gYy5qb2luKCIiKX1mdW5jdGlvbiBLZShuKXtpZihuLmxlbmd0aDw0KXJldHVybiBSZShuKTtmb3IodmFyIHQsZT1bXSxyPS0xLGk9bi5sZW5ndGgsdT1bMF0sYT1bMF07KytyPDM7KXQ9bltyXSx1LnB1c2godFswXSksYS5wdXNoKHRbMV0pO2ZvcihlLnB1c2godHIob2MsdSkrIiwiK3RyKG9jLGEpKSwtLXI7KytyPGk7KXQ9bltyXSx1LnNoaWZ0KCksdS5wdXNoKHRbMF0pLGEuc2hpZnQoKSxhLnB1c2godFsxXSksZXIoZSx1LGEpO3JldHVybiBlLmpvaW4oIiIpfWZ1bmN0aW9uIFFlKG4pe2Zvcih2YXIgdCxlLHI9LTEsaT1uLmxlbmd0aCx1PWkrNCxhPVtdLG89W107KytyPDQ7KWU9bltyJWldLGEucHVzaChlWzBdKSxvLnB1c2goZVsxXSk7Zm9yKHQ9W3RyKG9jLGEpLCIsIix0cihvYyxvKV0sLS1yOysrcjx1OyllPW5bciVpXSxhLnNoaWZ0KCksYS5wdXNoKGVbMF0pLG8uc2hpZnQoKSxvLnB1c2goZVsxXSksZXIodCxhLG8pO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIG5yKG4sdCl7dmFyIGU9bi5sZW5ndGgtMTtpZihlKWZvcih2YXIgcixpLHU9blswXVswXSxhPW5bMF1bMV0sbz1uW2VdWzBdLXUsYz1uW2VdWzFdLWEsbD0tMTsrK2w8PWU7KXI9bltsXSxpPWwvZSxyWzBdPXQqclswXSsoMS10KSoodStpKm8pLHJbMV09dCpyWzFdKygxLXQpKihhK2kqYyk7cmV0dXJuIEdlKG4pfWZ1bmN0aW9uIHRyKG4sdCl7cmV0dXJuIG5bMF0qdFswXStuWzFdKnRbMV0rblsyXSp0WzJdK25bM10qdFszXX1mdW5jdGlvbiBlcihuLHQsZSl7bi5wdXNoKCJDIix0cih1Yyx0KSwiLCIsdHIodWMsZSksIiwiLHRyKGFjLHQpLCIsIix0cihhYyxlKSwiLCIsdHIob2MsdCksIiwiLHRyKG9jLGUpKX1mdW5jdGlvbiBycihuLHQpe3JldHVybih0WzFdLW5bMV0pLyh0WzBdLW5bMF0pfWZ1bmN0aW9uIGlyKG4pe2Zvcih2YXIgdD0wLGU9bi5sZW5ndGgtMSxyPVtdLGk9blswXSx1PW5bMV0sYT1yWzBdPXJyKGksdSk7Kyt0PGU7KXJbdF09KGErKGE9cnIoaT11LHU9blt0KzFdKSkpLzI7cmV0dXJuIHJbdF09YSxyfWZ1bmN0aW9uIHVyKG4pe2Zvcih2YXIgdCxlLHIsaSx1PVtdLGE9aXIobiksbz0tMSxjPW4ubGVuZ3RoLTE7KytvPGM7KXQ9cnIobltvXSxuW28rMV0pLE1hdGguYWJzKHQpPDFlLTY/YVtvXT1hW28rMV09MDooZT1hW29dL3Qscj1hW28rMV0vdCxpPWUqZStyKnIsaT45JiYoaT0zKnQvTWF0aC5zcXJ0KGkpLGFbb109aSplLGFbbysxXT1pKnIpKTsKZm9yKG89LTE7KytvPD1jOylpPShuW01hdGgubWluKGMsbysxKV1bMF0tbltNYXRoLm1heCgwLG8tMSldWzBdKS8oNiooMSthW29dKmFbb10pKSx1LnB1c2goW2l8fDAsYVtvXSppfHwwXSk7cmV0dXJuIHV9ZnVuY3Rpb24gYXIobil7cmV0dXJuIG4ubGVuZ3RoPDM/UmUobik6blswXStXZShuLHVyKG4pKX1mdW5jdGlvbiBvcihuLHQsZSxyKXt2YXIgaSx1LGEsbyxjLGwscztyZXR1cm4gaT1yW25dLHU9aVswXSxhPWlbMV0saT1yW3RdLG89aVswXSxjPWlbMV0saT1yW2VdLGw9aVswXSxzPWlbMV0sKHMtYSkqKG8tdSktKGMtYSkqKGwtdSk+MH1mdW5jdGlvbiBjcihuLHQsZSl7cmV0dXJuKGVbMF0tdFswXSkqKG5bMV0tdFsxXSk8KGVbMV0tdFsxXSkqKG5bMF0tdFswXSl9ZnVuY3Rpb24gbHIobix0LGUscil7dmFyIGk9blswXSx1PWVbMF0sYT10WzBdLWksbz1yWzBdLXUsYz1uWzFdLGw9ZVsxXSxzPXRbMV0tYyxmPXJbMV0tbCxoPShvKihjLWwpLWYqKGktdSkpLyhmKmEtbypzKTtyZXR1cm5baStoKmEsYytoKnNdfWZ1bmN0aW9uIHNyKG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdO3JldHVybiEodFswXS1lWzBdfHx0WzFdLWVbMV0pfWZ1bmN0aW9uIGZyKG4sdCl7dmFyIGU9e2xpc3Q6bi5tYXAoZnVuY3Rpb24obix0KXtyZXR1cm57aW5kZXg6dCx4Om5bMF0seTpuWzFdfX0pLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gbi55PHQueT8tMTpuLnk+dC55PzE6bi54PHQueD8tMTpuLng+dC54PzE6MH0pLGJvdHRvbVNpdGU6bnVsbH0scj17bGlzdDpbXSxsZWZ0RW5kOm51bGwscmlnaHRFbmQ6bnVsbCxpbml0OmZ1bmN0aW9uKCl7ci5sZWZ0RW5kPXIuY3JlYXRlSGFsZkVkZ2UobnVsbCwibCIpLHIucmlnaHRFbmQ9ci5jcmVhdGVIYWxmRWRnZShudWxsLCJsIiksci5sZWZ0RW5kLnI9ci5yaWdodEVuZCxyLnJpZ2h0RW5kLmw9ci5sZWZ0RW5kLHIubGlzdC51bnNoaWZ0KHIubGVmdEVuZCxyLnJpZ2h0RW5kKX0sY3JlYXRlSGFsZkVkZ2U6ZnVuY3Rpb24obix0KXtyZXR1cm57ZWRnZTpuLHNpZGU6dCx2ZXJ0ZXg6bnVsbCxsOm51bGwscjpudWxsfX0saW5zZXJ0OmZ1bmN0aW9uKG4sdCl7dC5sPW4sdC5yPW4ucixuLnIubD10LG4ucj10fSxsZWZ0Qm91bmQ6ZnVuY3Rpb24obil7dmFyIHQ9ci5sZWZ0RW5kO2RvIHQ9dC5yO3doaWxlKHQhPXIucmlnaHRFbmQmJmkucmlnaHRPZih0LG4pKTtyZXR1cm4gdD10Lmx9LGRlbDpmdW5jdGlvbihuKXtuLmwucj1uLnIsbi5yLmw9bi5sLG4uZWRnZT1udWxsfSxyaWdodDpmdW5jdGlvbihuKXtyZXR1cm4gbi5yfSxsZWZ0OmZ1bmN0aW9uKG4pe3JldHVybiBuLmx9LGxlZnRSZWdpb246ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PW4uZWRnZT9lLmJvdHRvbVNpdGU6bi5lZGdlLnJlZ2lvbltuLnNpZGVdfSxyaWdodFJlZ2lvbjpmdW5jdGlvbihuKXtyZXR1cm4gbnVsbD09bi5lZGdlP2UuYm90dG9tU2l0ZTpuLmVkZ2UucmVnaW9uW2xjW24uc2lkZV1dfX0saT17YmlzZWN0OmZ1bmN0aW9uKG4sdCl7dmFyIGU9e3JlZ2lvbjp7bDpuLHI6dH0sZXA6e2w6bnVsbCxyOm51bGx9fSxyPXQueC1uLngsaT10Lnktbi55LHU9cj4wP3I6LXIsYT1pPjA/aTotaTtyZXR1cm4gZS5jPW4ueCpyK24ueSppKy41KihyKnIraSppKSx1PmE/KGUuYT0xLGUuYj1pL3IsZS5jLz1yKTooZS5iPTEsZS5hPXIvaSxlLmMvPWkpLGV9LGludGVyc2VjdDpmdW5jdGlvbihuLHQpe3ZhciBlPW4uZWRnZSxyPXQuZWRnZTtpZighZXx8IXJ8fGUucmVnaW9uLnI9PXIucmVnaW9uLnIpcmV0dXJuIG51bGw7dmFyIGk9ZS5hKnIuYi1lLmIqci5hO2lmKE1hdGguYWJzKGkpPDFlLTEwKXJldHVybiBudWxsO3ZhciB1LGEsbz0oZS5jKnIuYi1yLmMqZS5iKS9pLGM9KHIuYyplLmEtZS5jKnIuYSkvaSxsPWUucmVnaW9uLnIscz1yLnJlZ2lvbi5yO2wueTxzLnl8fGwueT09cy55JiZsLng8cy54Pyh1PW4sYT1lKToodT10LGE9cik7dmFyIGY9bz49YS5yZWdpb24uci54O3JldHVybiBmJiYibCI9PT11LnNpZGV8fCFmJiYiciI9PT11LnNpZGU/bnVsbDp7eDpvLHk6Y319LHJpZ2h0T2Y6ZnVuY3Rpb24obix0KXt2YXIgZT1uLmVkZ2Uscj1lLnJlZ2lvbi5yLGk9dC54PnIueDtpZihpJiYibCI9PT1uLnNpZGUpcmV0dXJuIDE7aWYoIWkmJiJyIj09PW4uc2lkZSlyZXR1cm4gMDtpZigxPT09ZS5hKXt2YXIgdT10Lnktci55LGE9dC54LXIueCxvPTAsYz0wO2lmKCFpJiZlLmI8MHx8aSYmZS5iPj0wP2M9bz11Pj1lLmIqYTooYz10LngrdC55KmUuYj5lLmMsZS5iPDAmJihjPSFjKSxjfHwobz0xKSksIW8pe3ZhciBsPXIueC1lLnJlZ2lvbi5sLng7Yz1lLmIqKGEqYS11KnUpPGwqdSooMSsyKmEvbCtlLmIqZS5iKSxlLmI8MCYmKGM9IWMpfX1lbHNle3ZhciBzPWUuYy1lLmEqdC54LGY9dC55LXMsaD10Lngtci54LGc9cy1yLnk7Yz1mKmY+aCpoK2cqZ31yZXR1cm4ibCI9PT1uLnNpZGU/YzohY30sZW5kUG9pbnQ6ZnVuY3Rpb24obixlLHIpe24uZXBbZV09cixuLmVwW2xjW2VdXSYmdChuKX0sZGlzdGFuY2U6ZnVuY3Rpb24obix0KXt2YXIgZT1uLngtdC54LHI9bi55LXQueTtyZXR1cm4gTWF0aC5zcXJ0KGUqZStyKnIpfX0sdT17bGlzdDpbXSxpbnNlcnQ6ZnVuY3Rpb24obix0LGUpe24udmVydGV4PXQsbi55c3Rhcj10LnkrZTtmb3IodmFyIHI9MCxpPXUubGlzdCxhPWkubGVuZ3RoO2E+cjtyKyspe3ZhciBvPWlbcl07aWYoIShuLnlzdGFyPm8ueXN0YXJ8fG4ueXN0YXI9PW8ueXN0YXImJnQueD5vLnZlcnRleC54KSlicmVha31pLnNwbGljZShyLDAsbil9LGRlbDpmdW5jdGlvbihuKXtmb3IodmFyIHQ9MCxlPXUubGlzdCxyPWUubGVuZ3RoO3I+dCYmZVt0XSE9bjsrK3QpO2Uuc3BsaWNlKHQsMSl9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT11Lmxpc3QubGVuZ3RofSxuZXh0RXZlbnQ6ZnVuY3Rpb24obil7Zm9yKHZhciB0PTAsZT11Lmxpc3Qscj1lLmxlbmd0aDtyPnQ7Kyt0KWlmKGVbdF09PW4pcmV0dXJuIGVbdCsxXTtyZXR1cm4gbnVsbH0sbWluOmZ1bmN0aW9uKCl7dmFyIG49dS5saXN0WzBdO3JldHVybnt4Om4udmVydGV4LngseTpuLnlzdGFyfX0sZXh0cmFjdE1pbjpmdW5jdGlvbigpe3JldHVybiB1Lmxpc3Quc2hpZnQoKX19O3IuaW5pdCgpLGUuYm90dG9tU2l0ZT1lLmxpc3Quc2hpZnQoKTtmb3IodmFyIGEsbyxjLGwscyxmLGgsZyxwLGQsbSx2LHksTT1lLmxpc3Quc2hpZnQoKTs7KWlmKHUuZW1wdHkoKXx8KGE9dS5taW4oKSksTSYmKHUuZW1wdHkoKXx8TS55PGEueXx8TS55PT1hLnkmJk0ueDxhLngpKW89ci5sZWZ0Qm91bmQoTSksYz1yLnJpZ2h0KG8pLGg9ci5yaWdodFJlZ2lvbihvKSx2PWkuYmlzZWN0KGgsTSksZj1yLmNyZWF0ZUhhbGZFZGdlKHYsImwiKSxyLmluc2VydChvLGYpLGQ9aS5pbnRlcnNlY3QobyxmKSxkJiYodS5kZWwobyksdS5pbnNlcnQobyxkLGkuZGlzdGFuY2UoZCxNKSkpLG89ZixmPXIuY3JlYXRlSGFsZkVkZ2UodiwiciIpLHIuaW5zZXJ0KG8sZiksZD1pLmludGVyc2VjdChmLGMpLGQmJnUuaW5zZXJ0KGYsZCxpLmRpc3RhbmNlKGQsTSkpLE09ZS5saXN0LnNoaWZ0KCk7ZWxzZXtpZih1LmVtcHR5KCkpYnJlYWs7bz11LmV4dHJhY3RNaW4oKSxsPXIubGVmdChvKSxjPXIucmlnaHQobykscz1yLnJpZ2h0KGMpLGg9ci5sZWZ0UmVnaW9uKG8pLGc9ci5yaWdodFJlZ2lvbihjKSxtPW8udmVydGV4LGkuZW5kUG9pbnQoby5lZGdlLG8uc2lkZSxtKSxpLmVuZFBvaW50KGMuZWRnZSxjLnNpZGUsbSksci5kZWwobyksdS5kZWwoYyksci5kZWwoYykseT0ibCIsaC55PmcueSYmKHA9aCxoPWcsZz1wLHk9InIiKSx2PWkuYmlzZWN0KGgsZyksZj1yLmNyZWF0ZUhhbGZFZGdlKHYseSksci5pbnNlcnQobCxmKSxpLmVuZFBvaW50KHYsbGNbeV0sbSksZD1pLmludGVyc2VjdChsLGYpLGQmJih1LmRlbChsKSx1Lmluc2VydChsLGQsaS5kaXN0YW5jZShkLGgpKSksZD1pLmludGVyc2VjdChmLHMpLGQmJnUuaW5zZXJ0KGYsZCxpLmRpc3RhbmNlKGQsaCkpfWZvcihvPXIucmlnaHQoci5sZWZ0RW5kKTtvIT1yLnJpZ2h0RW5kO289ci5yaWdodChvKSl0KG8uZWRnZSl9ZnVuY3Rpb24gaHIobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBncihuKXtyZXR1cm4gbi55fWZ1bmN0aW9uIHByKCl7cmV0dXJue2xlYWY6ITAsbm9kZXM6W10scG9pbnQ6bnVsbCx4Om51bGwseTpudWxsfX1mdW5jdGlvbiBkcihuLHQsZSxyLGksdSl7aWYoIW4odCxlLHIsaSx1KSl7dmFyIGE9LjUqKGUraSksbz0uNSoocit1KSxjPXQubm9kZXM7Y1swXSYmZHIobixjWzBdLGUscixhLG8pLGNbMV0mJmRyKG4sY1sxXSxhLHIsaSxvKSxjWzJdJiZkcihuLGNbMl0sZSxvLGEsdSksY1szXSYmZHIobixjWzNdLGEsbyxpLHUpfX1mdW5jdGlvbiBtcihuLHQpe249eWEucmdiKG4pLHQ9eWEucmdiKHQpO3ZhciBlPW4ucixyPW4uZyxpPW4uYix1PXQuci1lLGE9dC5nLXIsbz10LmItaTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIiMiK3V0KE1hdGgucm91bmQoZSt1Km4pKSt1dChNYXRoLnJvdW5kKHIrYSpuKSkrdXQoTWF0aC5yb3VuZChpK28qbikpfX1mdW5jdGlvbiB2cihuLHQpe3ZhciBlLHI9e30saT17fTtmb3IoZSBpbiBuKWUgaW4gdD9yW2VdPXhyKG5bZV0sdFtlXSk6aVtlXT1uW2VdO2ZvcihlIGluIHQpZSBpbiBufHwoaVtlXT10W2VdKTtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKGUgaW4gcilpW2VdPXJbZV0obik7cmV0dXJuIGl9fWZ1bmN0aW9uIHlyKG4sdCl7cmV0dXJuIHQtPW49K24sZnVuY3Rpb24oZSl7cmV0dXJuIG4rdCplfX1mdW5jdGlvbiBNcihuLHQpe3ZhciBlLHIsaSx1LGEsbz0wLGM9MCxsPVtdLHM9W107Zm9yKG4rPSIiLHQrPSIiLHNjLmxhc3RJbmRleD0wLHI9MDtlPXNjLmV4ZWModCk7KytyKWUuaW5kZXgmJmwucHVzaCh0LnN1YnN0cmluZyhvLGM9ZS5pbmRleCkpLHMucHVzaCh7aTpsLmxlbmd0aCx4OmVbMF19KSxsLnB1c2gobnVsbCksbz1zYy5sYXN0SW5kZXg7Zm9yKG88dC5sZW5ndGgmJmwucHVzaCh0LnN1YnN0cmluZyhvKSkscj0wLHU9cy5sZW5ndGg7KGU9c2MuZXhlYyhuKSkmJnU+cjsrK3IpaWYoYT1zW3JdLGEueD09ZVswXSl7aWYoYS5pKWlmKG51bGw9PWxbYS5pKzFdKWZvcihsW2EuaS0xXSs9YS54LGwuc3BsaWNlKGEuaSwxKSxpPXIrMTt1Pmk7KytpKXNbaV0uaS0tO2Vsc2UgZm9yKGxbYS5pLTFdKz1hLngrbFthLmkrMV0sbC5zcGxpY2UoYS5pLDIpLGk9cisxO3U+aTsrK2kpc1tpXS5pLT0yO2Vsc2UgaWYobnVsbD09bFthLmkrMV0pbFthLmldPWEueDtlbHNlIGZvcihsW2EuaV09YS54K2xbYS5pKzFdLGwuc3BsaWNlKGEuaSsxLDEpLGk9cisxO3U+aTsrK2kpc1tpXS5pLS07cy5zcGxpY2UociwxKSx1LS0sci0tfWVsc2UgYS54PXlyKHBhcnNlRmxvYXQoZVswXSkscGFyc2VGbG9hdChhLngpKTtmb3IoO3U+cjspYT1zLnBvcCgpLG51bGw9PWxbYS5pKzFdP2xbYS5pXT1hLng6KGxbYS5pXT1hLngrbFthLmkrMV0sbC5zcGxpY2UoYS5pKzEsMSkpLHUtLTtyZXR1cm4gMT09PWwubGVuZ3RoP251bGw9PWxbMF0/KGE9c1swXS54LGZ1bmN0aW9uKG4pe3JldHVybiBhKG4pKyIifSk6ZnVuY3Rpb24oKXtyZXR1cm4gdH06ZnVuY3Rpb24obil7Zm9yKHI9MDt1PnI7KytyKWxbKGE9c1tyXSkuaV09YS54KG4pO3JldHVybiBsLmpvaW4oIiIpfX1mdW5jdGlvbiB4cihuLHQpe2Zvcih2YXIgZSxyPXlhLmludGVycG9sYXRvcnMubGVuZ3RoOy0tcj49MCYmIShlPXlhLmludGVycG9sYXRvcnNbcl0obix0KSk7KTtyZXR1cm4gZX1mdW5jdGlvbiBicihuLHQpe3ZhciBlLHI9W10saT1bXSx1PW4ubGVuZ3RoLGE9dC5sZW5ndGgsbz1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCk7Zm9yKGU9MDtvPmU7KytlKXIucHVzaCh4cihuW2VdLHRbZV0pKTtmb3IoO3U+ZTsrK2UpaVtlXT1uW2VdO2Zvcig7YT5lOysrZSlpW2VdPXRbZV07cmV0dXJuIGZ1bmN0aW9uKG4pe2ZvcihlPTA7bz5lOysrZSlpW2VdPXJbZV0obik7cmV0dXJuIGl9fWZ1bmN0aW9uIF9yKG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMD49dD8wOnQ+PTE/MTpuKHQpfX1mdW5jdGlvbiB3cihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIDEtbigxLXQpfX1mdW5jdGlvbiBTcihuKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuLjUqKC41PnQ/bigyKnQpOjItbigyLTIqdCkpfX1mdW5jdGlvbiBFcihuKXtyZXR1cm4gbipufWZ1bmN0aW9uIGtyKG4pe3JldHVybiBuKm4qbn1mdW5jdGlvbiBBcihuKXtpZigwPj1uKXJldHVybiAwO2lmKG4+PTEpcmV0dXJuIDE7dmFyIHQ9bipuLGU9dCpuO3JldHVybiA0KiguNT5uP2U6Myoobi10KStlLS43NSl9ZnVuY3Rpb24gTnIobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LG4pfX1mdW5jdGlvbiBxcihuKXtyZXR1cm4gMS1NYXRoLmNvcyhuKiRhLzIpfWZ1bmN0aW9uIFRyKG4pe3JldHVybiBNYXRoLnBvdygyLDEwKihuLTEpKX1mdW5jdGlvbiBDcihuKXtyZXR1cm4gMS1NYXRoLnNxcnQoMS1uKm4pfWZ1bmN0aW9uIHpyKG4sdCl7dmFyIGU7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MiYmKHQ9LjQ1KSxhcmd1bWVudHMubGVuZ3RoP2U9dC8oMiokYSkqTWF0aC5hc2luKDEvbik6KG49MSxlPXQvNCksZnVuY3Rpb24ocil7cmV0dXJuIDErbipNYXRoLnBvdygyLDEwKi1yKSpNYXRoLnNpbigyKihyLWUpKiRhL3QpfX1mdW5jdGlvbiBEcihuKXtyZXR1cm4gbnx8KG49MS43MDE1OCksZnVuY3Rpb24odCl7cmV0dXJuIHQqdCooKG4rMSkqdC1uKX19ZnVuY3Rpb24ganIobil7cmV0dXJuIDEvMi43NT5uPzcuNTYyNSpuKm46Mi8yLjc1Pm4/Ny41NjI1KihuLT0xLjUvMi43NSkqbisuNzU6Mi41LzIuNzU+bj83LjU2MjUqKG4tPTIuMjUvMi43NSkqbisuOTM3NTo3LjU2MjUqKG4tPTIuNjI1LzIuNzUpKm4rLjk4NDM3NX1mdW5jdGlvbiBMcihuLHQpe249eWEuaGNsKG4pLHQ9eWEuaGNsKHQpO3ZhciBlPW4uaCxyPW4uYyxpPW4ubCx1PXQuaC1lLGE9dC5jLXIsbz10LmwtaTtyZXR1cm4gaXNOYU4oYSkmJihhPTAscj1pc05hTihyKT90LmM6ciksaXNOYU4odSk/KHU9MCxlPWlzTmFOKGUpP3QuaDplKTp1PjE4MD91LT0zNjA6LTE4MD51JiYodSs9MzYwKSxmdW5jdGlvbihuKXtyZXR1cm4gVyhlK3UqbixyK2EqbixpK28qbikrIiJ9fWZ1bmN0aW9uIEhyKG4sdCl7bj15YS5oc2wobiksdD15YS5oc2wodCk7dmFyIGU9bi5oLHI9bi5zLGk9bi5sLHU9dC5oLWUsYT10LnMtcixvPXQubC1pO3JldHVybiBpc05hTihhKSYmKGE9MCxyPWlzTmFOKHIpP3QuczpyKSxpc05hTih1KT8odT0wLGU9aXNOYU4oZSk/dC5oOmUpOnU+MTgwP3UtPTM2MDotMTgwPnUmJih1Kz0zNjApLGZ1bmN0aW9uKG4pe3JldHVybiBZKGUrdSpuLHIrYSpuLGkrbypuKSsiIn19ZnVuY3Rpb24gRnIobix0KXtuPXlhLmxhYihuKSx0PXlhLmxhYih0KTt2YXIgZT1uLmwscj1uLmEsaT1uLmIsdT10LmwtZSxhPXQuYS1yLG89dC5iLWk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBLKGUrdSpuLHIrYSpuLGkrbypuKSsiIn19ZnVuY3Rpb24gUHIobix0KXtyZXR1cm4gdC09bixmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChuK3QqZSl9fWZ1bmN0aW9uIE9yKG4pe3ZhciB0PVtuLmEsbi5iXSxlPVtuLmMsbi5kXSxyPVJyKHQpLGk9WXIodCxlKSx1PVJyKFVyKGUsdCwtaSkpfHwwO3RbMF0qZVsxXTxlWzBdKnRbMV0mJih0WzBdKj0tMSx0WzFdKj0tMSxyKj0tMSxpKj0tMSksdGhpcy5yb3RhdGU9KHI/TWF0aC5hdGFuMih0WzFdLHRbMF0pOk1hdGguYXRhbjIoLWVbMF0sZVsxXSkpKkthLHRoaXMudHJhbnNsYXRlPVtuLmUsbi5mXSx0aGlzLnNjYWxlPVtyLHVdLHRoaXMuc2tldz11P01hdGguYXRhbjIoaSx1KSpLYTowfWZ1bmN0aW9uIFlyKG4sdCl7cmV0dXJuIG5bMF0qdFswXStuWzFdKnRbMV19ZnVuY3Rpb24gUnIobil7dmFyIHQ9TWF0aC5zcXJ0KFlyKG4sbikpO3JldHVybiB0JiYoblswXS89dCxuWzFdLz10KSx0fWZ1bmN0aW9uIFVyKG4sdCxlKXtyZXR1cm4gblswXSs9ZSp0WzBdLG5bMV0rPWUqdFsxXSxufWZ1bmN0aW9uIElyKG4sdCl7dmFyIGUscj1bXSxpPVtdLHU9eWEudHJhbnNmb3JtKG4pLGE9eWEudHJhbnNmb3JtKHQpLG89dS50cmFuc2xhdGUsYz1hLnRyYW5zbGF0ZSxsPXUucm90YXRlLHM9YS5yb3RhdGUsZj11LnNrZXcsaD1hLnNrZXcsZz11LnNjYWxlLHA9YS5zY2FsZTtyZXR1cm4gb1swXSE9Y1swXXx8b1sxXSE9Y1sxXT8oci5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLCIsIixudWxsLCIpIiksaS5wdXNoKHtpOjEseDp5cihvWzBdLGNbMF0pfSx7aTozLHg6eXIob1sxXSxjWzFdKX0pKTpjWzBdfHxjWzFdP3IucHVzaCgidHJhbnNsYXRlKCIrYysiKSIpOnIucHVzaCgiIiksbCE9cz8obC1zPjE4MD9zKz0zNjA6cy1sPjE4MCYmKGwrPTM2MCksaS5wdXNoKHtpOnIucHVzaChyLnBvcCgpKyJyb3RhdGUoIixudWxsLCIpIiktMix4OnlyKGwscyl9KSk6cyYmci5wdXNoKHIucG9wKCkrInJvdGF0ZSgiK3MrIikiKSxmIT1oP2kucHVzaCh7aTpyLnB1c2goci5wb3AoKSsic2tld1goIixudWxsLCIpIiktMix4OnlyKGYsaCl9KTpoJiZyLnB1c2goci5wb3AoKSsic2tld1goIitoKyIpIiksZ1swXSE9cFswXXx8Z1sxXSE9cFsxXT8oZT1yLnB1c2goci5wb3AoKSsic2NhbGUoIixudWxsLCIsIixudWxsLCIpIiksaS5wdXNoKHtpOmUtNCx4OnlyKGdbMF0scFswXSl9LHtpOmUtMix4OnlyKGdbMV0scFsxXSl9KSk6KDEhPXBbMF18fDEhPXBbMV0pJiZyLnB1c2goci5wb3AoKSsic2NhbGUoIitwKyIpIiksZT1pLmxlbmd0aCxmdW5jdGlvbihuKXtmb3IodmFyIHQsdT0tMTsrK3U8ZTspclsodD1pW3VdKS5pXT10Lngobik7cmV0dXJuIHIuam9pbigiIil9fWZ1bmN0aW9uIFZyKG4sdCl7cmV0dXJuIHQ9dC0obj0rbik/MS8odC1uKTowLGZ1bmN0aW9uKGUpe3JldHVybihlLW4pKnR9fWZ1bmN0aW9uIFhyKG4sdCl7cmV0dXJuIHQ9dC0obj0rbik/MS8odC1uKTowLGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEsKGUtbikqdCkpfX1mdW5jdGlvbiBacihuKXtmb3IodmFyIHQ9bi5zb3VyY2UsZT1uLnRhcmdldCxyPSRyKHQsZSksaT1bdF07dCE9PXI7KXQ9dC5wYXJlbnQsaS5wdXNoKHQpO2Zvcih2YXIgdT1pLmxlbmd0aDtlIT09cjspaS5zcGxpY2UodSwwLGUpLGU9ZS5wYXJlbnQ7cmV0dXJuIGl9ZnVuY3Rpb24gQnIobil7Zm9yKHZhciB0PVtdLGU9bi5wYXJlbnQ7bnVsbCE9ZTspdC5wdXNoKG4pLG49ZSxlPWUucGFyZW50O3JldHVybiB0LnB1c2gobiksdH1mdW5jdGlvbiAkcihuLHQpe2lmKG49PT10KXJldHVybiBuO2Zvcih2YXIgZT1CcihuKSxyPUJyKHQpLGk9ZS5wb3AoKSx1PXIucG9wKCksYT1udWxsO2k9PT11OylhPWksaT1lLnBvcCgpLHU9ci5wb3AoKTtyZXR1cm4gYX1mdW5jdGlvbiBXcihuKXtuLmZpeGVkfD0yfWZ1bmN0aW9uIEpyKG4pe24uZml4ZWQmPS03fWZ1bmN0aW9uIEdyKG4pe24uZml4ZWR8PTQsbi5weD1uLngsbi5weT1uLnl9ZnVuY3Rpb24gS3Iobil7bi5maXhlZCY9LTV9ZnVuY3Rpb24gUXIobix0LGUpe3ZhciByPTAsaT0wO2lmKG4uY2hhcmdlPTAsIW4ubGVhZilmb3IodmFyIHUsYT1uLm5vZGVzLG89YS5sZW5ndGgsYz0tMTsrK2M8bzspdT1hW2NdLG51bGwhPXUmJihRcih1LHQsZSksbi5jaGFyZ2UrPXUuY2hhcmdlLHIrPXUuY2hhcmdlKnUuY3gsaSs9dS5jaGFyZ2UqdS5jeSk7aWYobi5wb2ludCl7bi5sZWFmfHwobi5wb2ludC54Kz1NYXRoLnJhbmRvbSgpLS41LG4ucG9pbnQueSs9TWF0aC5yYW5kb20oKS0uNSk7dmFyIGw9dCplW24ucG9pbnQuaW5kZXhdO24uY2hhcmdlKz1uLnBvaW50Q2hhcmdlPWwscis9bCpuLnBvaW50LngsaSs9bCpuLnBvaW50Lnl9bi5jeD1yL24uY2hhcmdlLG4uY3k9aS9uLmNoYXJnZX1mdW5jdGlvbiBuaShuLHQpe3JldHVybiB5YS5yZWJpbmQobix0LCJzb3J0IiwiY2hpbGRyZW4iLCJ2YWx1ZSIpLG4ubm9kZXM9bixuLmxpbmtzPWlpLG59ZnVuY3Rpb24gdGkobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24gZWkobil7cmV0dXJuIG4udmFsdWV9ZnVuY3Rpb24gcmkobix0KXtyZXR1cm4gdC52YWx1ZS1uLnZhbHVlfWZ1bmN0aW9uIGlpKG4pe3JldHVybiB5YS5tZXJnZShuLm1hcChmdW5jdGlvbihuKXtyZXR1cm4obi5jaGlsZHJlbnx8W10pLm1hcChmdW5jdGlvbih0KXtyZXR1cm57c291cmNlOm4sdGFyZ2V0OnR9fSl9KSl9ZnVuY3Rpb24gdWkobil7cmV0dXJuIG4ueH1mdW5jdGlvbiBhaShuKXtyZXR1cm4gbi55fWZ1bmN0aW9uIG9pKG4sdCxlKXtuLnkwPXQsbi55PWV9ZnVuY3Rpb24gY2kobil7cmV0dXJuIHlhLnJhbmdlKG4ubGVuZ3RoKX1mdW5jdGlvbiBsaShuKXtmb3IodmFyIHQ9LTEsZT1uWzBdLmxlbmd0aCxyPVtdOysrdDxlOylyW3RdPTA7cmV0dXJuIHJ9ZnVuY3Rpb24gc2kobil7Zm9yKHZhciB0LGU9MSxyPTAsaT1uWzBdWzFdLHU9bi5sZW5ndGg7dT5lOysrZSkodD1uW2VdWzFdKT5pJiYocj1lLGk9dCk7cmV0dXJuIHJ9ZnVuY3Rpb24gZmkobil7cmV0dXJuIG4ucmVkdWNlKGhpLDApfWZ1bmN0aW9uIGhpKG4sdCl7cmV0dXJuIG4rdFsxXX1mdW5jdGlvbiBnaShuLHQpe3JldHVybiBwaShuLE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIrMSkpfWZ1bmN0aW9uIHBpKG4sdCl7Zm9yKHZhciBlPS0xLHI9K25bMF0saT0oblsxXS1yKS90LHU9W107KytlPD10Oyl1W2VdPWkqZStyO3JldHVybiB1fWZ1bmN0aW9uIGRpKG4pe3JldHVyblt5YS5taW4obikseWEubWF4KG4pXX1mdW5jdGlvbiBtaShuLHQpe3JldHVybiBuLnBhcmVudD09dC5wYXJlbnQ/MToyfWZ1bmN0aW9uIHZpKG4pe3ZhciB0PW4uY2hpbGRyZW47cmV0dXJuIHQmJnQubGVuZ3RoP3RbMF06bi5fdHJlZS50aHJlYWR9ZnVuY3Rpb24geWkobil7dmFyIHQsZT1uLmNoaWxkcmVuO3JldHVybiBlJiYodD1lLmxlbmd0aCk/ZVt0LTFdOm4uX3RyZWUudGhyZWFkfWZ1bmN0aW9uIE1pKG4sdCl7dmFyIGU9bi5jaGlsZHJlbjtpZihlJiYoaT1lLmxlbmd0aCkpZm9yKHZhciByLGksdT0tMTsrK3U8aTspdChyPU1pKGVbdV0sdCksbik+MCYmKG49cik7cmV0dXJuIG59ZnVuY3Rpb24geGkobix0KXtyZXR1cm4gbi54LXQueH1mdW5jdGlvbiBiaShuLHQpe3JldHVybiB0Lngtbi54fWZ1bmN0aW9uIF9pKG4sdCl7cmV0dXJuIG4uZGVwdGgtdC5kZXB0aH1mdW5jdGlvbiB3aShuLHQpe2Z1bmN0aW9uIGUobixyKXt2YXIgaT1uLmNoaWxkcmVuO2lmKGkmJihhPWkubGVuZ3RoKSlmb3IodmFyIHUsYSxvPW51bGwsYz0tMTsrK2M8YTspdT1pW2NdLGUodSxvKSxvPXU7dChuLHIpfWUobixudWxsKX1mdW5jdGlvbiBTaShuKXtmb3IodmFyIHQsZT0wLHI9MCxpPW4uY2hpbGRyZW4sdT1pLmxlbmd0aDstLXU+PTA7KXQ9aVt1XS5fdHJlZSx0LnByZWxpbSs9ZSx0Lm1vZCs9ZSxlKz10LnNoaWZ0KyhyKz10LmNoYW5nZSl9ZnVuY3Rpb24gRWkobix0LGUpe249bi5fdHJlZSx0PXQuX3RyZWU7dmFyIHI9ZS8odC5udW1iZXItbi5udW1iZXIpO24uY2hhbmdlKz1yLHQuY2hhbmdlLT1yLHQuc2hpZnQrPWUsdC5wcmVsaW0rPWUsdC5tb2QrPWV9ZnVuY3Rpb24ga2kobix0LGUpe3JldHVybiBuLl90cmVlLmFuY2VzdG9yLnBhcmVudD09dC5wYXJlbnQ/bi5fdHJlZS5hbmNlc3RvcjplfWZ1bmN0aW9uIEFpKG4sdCl7cmV0dXJuIG4udmFsdWUtdC52YWx1ZX1mdW5jdGlvbiBOaShuLHQpe3ZhciBlPW4uX3BhY2tfbmV4dDtuLl9wYWNrX25leHQ9dCx0Ll9wYWNrX3ByZXY9bix0Ll9wYWNrX25leHQ9ZSxlLl9wYWNrX3ByZXY9dH1mdW5jdGlvbiBxaShuLHQpe24uX3BhY2tfbmV4dD10LHQuX3BhY2tfcHJldj1ufWZ1bmN0aW9uIFRpKG4sdCl7dmFyIGU9dC54LW4ueCxyPXQueS1uLnksaT1uLnIrdC5yO3JldHVybi45OTkqaSppPmUqZStyKnJ9ZnVuY3Rpb24gQ2kobil7ZnVuY3Rpb24gdChuKXtzPU1hdGgubWluKG4ueC1uLnIscyksZj1NYXRoLm1heChuLngrbi5yLGYpLGg9TWF0aC5taW4obi55LW4ucixoKSxnPU1hdGgubWF4KG4ueStuLnIsZyl9aWYoKGU9bi5jaGlsZHJlbikmJihsPWUubGVuZ3RoKSl7dmFyIGUscixpLHUsYSxvLGMsbCxzPTEvMCxmPS0xLzAsaD0xLzAsZz0tMS8wO2lmKGUuZm9yRWFjaCh6aSkscj1lWzBdLHIueD0tci5yLHIueT0wLHQociksbD4xJiYoaT1lWzFdLGkueD1pLnIsaS55PTAsdChpKSxsPjIpKWZvcih1PWVbMl0sTGkocixpLHUpLHQodSksTmkocix1KSxyLl9wYWNrX3ByZXY9dSxOaSh1LGkpLGk9ci5fcGFja19uZXh0LGE9MztsPmE7YSsrKXtMaShyLGksdT1lW2FdKTt2YXIgcD0wLGQ9MSxtPTE7Zm9yKG89aS5fcGFja19uZXh0O28hPT1pO289by5fcGFja19uZXh0LGQrKylpZihUaShvLHUpKXtwPTE7YnJlYWt9aWYoMT09cClmb3IoYz1yLl9wYWNrX3ByZXY7YyE9PW8uX3BhY2tfcHJldiYmIVRpKGMsdSk7Yz1jLl9wYWNrX3ByZXYsbSsrKTtwPyhtPmR8fGQ9PW0mJmkucjxyLnI/cWkocixpPW8pOnFpKHI9YyxpKSxhLS0pOihOaShyLHUpLGk9dSx0KHUpKX12YXIgdj0ocytmKS8yLHk9KGgrZykvMixNPTA7Zm9yKGE9MDtsPmE7YSsrKXU9ZVthXSx1LngtPXYsdS55LT15LE09TWF0aC5tYXgoTSx1LnIrTWF0aC5zcXJ0KHUueCp1LngrdS55KnUueSkpO24ucj1NLGUuZm9yRWFjaChEaSl9fWZ1bmN0aW9uIHppKG4pe24uX3BhY2tfbmV4dD1uLl9wYWNrX3ByZXY9bn1mdW5jdGlvbiBEaShuKXtkZWxldGUgbi5fcGFja19uZXh0LGRlbGV0ZSBuLl9wYWNrX3ByZXZ9ZnVuY3Rpb24gamkobix0LGUscil7dmFyIGk9bi5jaGlsZHJlbjtpZihuLng9dCs9cipuLngsbi55PWUrPXIqbi55LG4ucio9cixpKWZvcih2YXIgdT0tMSxhPWkubGVuZ3RoOysrdTxhOylqaShpW3VdLHQsZSxyKX1mdW5jdGlvbiBMaShuLHQsZSl7dmFyIHI9bi5yK2UucixpPXQueC1uLngsdT10Lnktbi55O2lmKHImJihpfHx1KSl7dmFyIGE9dC5yK2UucixvPWkqaSt1KnU7YSo9YSxyKj1yO3ZhciBjPS41KyhyLWEpLygyKm8pLGw9TWF0aC5zcXJ0KE1hdGgubWF4KDAsMiphKihyK28pLShyLT1vKSpyLWEqYSkpLygyKm8pO2UueD1uLngrYyppK2wqdSxlLnk9bi55K2MqdS1sKml9ZWxzZSBlLng9bi54K3IsZS55PW4ueX1mdW5jdGlvbiBIaShuKXtyZXR1cm4gMSt5YS5tYXgobixmdW5jdGlvbihuKXtyZXR1cm4gbi55fSl9ZnVuY3Rpb24gRmkobil7cmV0dXJuIG4ucmVkdWNlKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4rdC54fSwwKS9uLmxlbmd0aH1mdW5jdGlvbiBQaShuKXt2YXIgdD1uLmNoaWxkcmVuO3JldHVybiB0JiZ0Lmxlbmd0aD9QaSh0WzBdKTpufWZ1bmN0aW9uIE9pKG4pe3ZhciB0LGU9bi5jaGlsZHJlbjtyZXR1cm4gZSYmKHQ9ZS5sZW5ndGgpP09pKGVbdC0xXSk6bn1mdW5jdGlvbiBZaShuKXtyZXR1cm57eDpuLngseTpuLnksZHg6bi5keCxkeTpuLmR5fX1mdW5jdGlvbiBSaShuLHQpe3ZhciBlPW4ueCt0WzNdLHI9bi55K3RbMF0saT1uLmR4LXRbMV0tdFszXSx1PW4uZHktdFswXS10WzJdO3JldHVybiAwPmkmJihlKz1pLzIsaT0wKSwwPnUmJihyKz11LzIsdT0wKSx7eDplLHk6cixkeDppLGR5OnV9fWZ1bmN0aW9uIFVpKG4pe3ZhciB0PW5bMF0sZT1uW24ubGVuZ3RoLTFdO3JldHVybiBlPnQ/W3QsZV06W2UsdF19ZnVuY3Rpb24gSWkobil7cmV0dXJuIG4ucmFuZ2VFeHRlbnQ/bi5yYW5nZUV4dGVudCgpOlVpKG4ucmFuZ2UoKSl9ZnVuY3Rpb24gVmkobix0LGUscil7dmFyIGk9ZShuWzBdLG5bMV0pLHU9cih0WzBdLHRbMV0pO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdShpKG4pKX19ZnVuY3Rpb24gWGkobix0KXt2YXIgZSxyPTAsaT1uLmxlbmd0aC0xLHU9bltyXSxhPW5baV07cmV0dXJuIHU+YSYmKGU9cixyPWksaT1lLGU9dSx1PWEsYT1lKSxuW3JdPXQuZmxvb3IodSksbltpXT10LmNlaWwoYSksbn1mdW5jdGlvbiBaaShuKXtyZXR1cm4gbj97Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguZmxvb3IodC9uKSpufSxjZWlsOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmNlaWwodC9uKSpufX06eGN9ZnVuY3Rpb24gQmkobix0LGUscil7dmFyIGk9W10sdT1bXSxhPTAsbz1NYXRoLm1pbihuLmxlbmd0aCx0Lmxlbmd0aCktMTtmb3IobltvXTxuWzBdJiYobj1uLnNsaWNlKCkucmV2ZXJzZSgpLHQ9dC5zbGljZSgpLnJldmVyc2UoKSk7KythPD1vOylpLnB1c2goZShuW2EtMV0sblthXSkpLHUucHVzaChyKHRbYS0xXSx0W2FdKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXlhLmJpc2VjdChuLHQsMSxvKS0xO3JldHVybiB1W2VdKGlbZV0odCkpfX1mdW5jdGlvbiAkaShuLHQsZSxyKXtmdW5jdGlvbiBpKCl7dmFyIGk9TWF0aC5taW4obi5sZW5ndGgsdC5sZW5ndGgpPjI/Qmk6VmksYz1yP1hyOlZyO3JldHVybiBhPWkobix0LGMsZSksbz1pKHQsbixjLHhyKSx1fWZ1bmN0aW9uIHUobil7cmV0dXJuIGEobil9dmFyIGEsbztyZXR1cm4gdS5pbnZlcnQ9ZnVuY3Rpb24obil7cmV0dXJuIG8obil9LHUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQubWFwKE51bWJlciksaSgpKTpufSx1LnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4saSgpKTp0fSx1LnJhbmdlUm91bmQ9ZnVuY3Rpb24obil7cmV0dXJuIHUucmFuZ2UobikuaW50ZXJwb2xhdGUoUHIpfSx1LmNsYW1wPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4saSgpKTpyfSx1LmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4saSgpKTplfSx1LnRpY2tzPWZ1bmN0aW9uKHQpe3JldHVybiBRaShuLHQpfSx1LnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnUobix0LGUpfSx1Lm5pY2U9ZnVuY3Rpb24odCl7cmV0dXJuIEppKG4sdCksaSgpfSx1LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gJGkobix0LGUscil9LGkoKX1mdW5jdGlvbiBXaShuLHQpe3JldHVybiB5YS5yZWJpbmQobix0LCJyYW5nZSIsInJhbmdlUm91bmQiLCJpbnRlcnBvbGF0ZSIsImNsYW1wIil9ZnVuY3Rpb24gSmkobix0KXtyZXR1cm4gWGkobixaaSh0P0tpKG4sdClbMl06R2kobikpKX1mdW5jdGlvbiBHaShuKXt2YXIgdD1VaShuKSxlPXRbMV0tdFswXTtyZXR1cm4gTWF0aC5wb3coMTAsTWF0aC5yb3VuZChNYXRoLmxvZyhlKS9NYXRoLkxOMTApLTEpfWZ1bmN0aW9uIEtpKG4sdCl7dmFyIGU9VWkobikscj1lWzFdLWVbMF0saT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKHIvdCkvTWF0aC5MTjEwKSksdT10L3IqaTtyZXR1cm4uMTU+PXU/aSo9MTA6LjM1Pj11P2kqPTU6Ljc1Pj11JiYoaSo9MiksZVswXT1NYXRoLmNlaWwoZVswXS9pKSppLGVbMV09TWF0aC5mbG9vcihlWzFdL2kpKmkrLjUqaSxlWzJdPWksZX1mdW5jdGlvbiBRaShuLHQpe3JldHVybiB5YS5yYW5nZS5hcHBseSh5YSxLaShuLHQpKX1mdW5jdGlvbiBudShuLHQsZSl7dmFyIHI9LU1hdGguZmxvb3IoTWF0aC5sb2coS2kobix0KVsyXSkvTWF0aC5MTjEwKy4wMSk7cmV0dXJuIHlhLmZvcm1hdChlP2UucmVwbGFjZSh2byxmdW5jdGlvbihuLHQsZSxpLHUsYSxvLGMsbCxzKXtyZXR1cm5bdCxlLGksdSxhLG8sYyxsfHwiLiIrKHItMiooIiUiPT09cykpLHNdLmpvaW4oIiIpfSk6IiwuIityKyJmIil9ZnVuY3Rpb24gdHUobix0LGUscixpKXtmdW5jdGlvbiB1KHQpe3JldHVybiBuKGUodCkpfXJldHVybiB1LmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gcihuLmludmVydCh0KSl9LHUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0WzBdPDA/KGU9aXUscj11dSk6KGU9ZXUscj1ydSksbi5kb21haW4oKGk9dC5tYXAoTnVtYmVyKSkubWFwKGUpKSx1KTppfSx1LmJhc2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K24sdSk6dH0sdS5uaWNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gTWF0aC5wb3codCxNYXRoLmZsb29yKE1hdGgubG9nKG4pL01hdGgubG9nKHQpKSl9ZnVuY3Rpb24gYShuKXtyZXR1cm4gTWF0aC5wb3codCxNYXRoLmNlaWwoTWF0aC5sb2cobikvTWF0aC5sb2codCkpKX1yZXR1cm4gbi5kb21haW4oWGkoaSxlPT09ZXU/e2Zsb29yOnIsY2VpbDphfTp7Zmxvb3I6ZnVuY3Rpb24obil7cmV0dXJuLWEoLW4pfSxjZWlsOmZ1bmN0aW9uKG4pe3JldHVybi1yKC1uKX19KS5tYXAoZSkpLHV9LHUudGlja3M9ZnVuY3Rpb24oKXt2YXIgaT1VaShuLmRvbWFpbigpKSx1PVtdO2lmKGkuZXZlcnkoaXNGaW5pdGUpKXt2YXIgYT1NYXRoLmxvZyh0KSxvPU1hdGguZmxvb3IoaVswXS9hKSxjPU1hdGguY2VpbChpWzFdL2EpLGw9cihpWzBdKSxzPXIoaVsxXSksZj10JTE/Mjp0O2lmKGU9PT1pdSlmb3IodS5wdXNoKC1NYXRoLnBvdyh0LC1vKSk7bysrPGM7KWZvcih2YXIgaD1mLTE7aD4wO2gtLSl1LnB1c2goLU1hdGgucG93KHQsLW8pKmgpO2Vsc2V7Zm9yKDtjPm87bysrKWZvcih2YXIgaD0xO2Y+aDtoKyspdS5wdXNoKE1hdGgucG93KHQsbykqaCk7dS5wdXNoKE1hdGgucG93KHQsbykpfWZvcihvPTA7dVtvXTxsO28rKyk7Zm9yKGM9dS5sZW5ndGg7dVtjLTFdPnM7Yy0tKTt1PXUuc2xpY2UobyxjKX1yZXR1cm4gdX0sdS50aWNrRm9ybWF0PWZ1bmN0aW9uKG4saSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGJjO2FyZ3VtZW50cy5sZW5ndGg8Mj9pPWJjOiJmdW5jdGlvbiIhPXR5cGVvZiBpJiYoaT15YS5mb3JtYXQoaSkpO3ZhciBhLG89TWF0aC5sb2codCksYz1NYXRoLm1heCguMSxuL3UudGlja3MoKS5sZW5ndGgpLGw9ZT09PWl1PyhhPS0xZS0xMixNYXRoLmZsb29yKTooYT0xZS0xMixNYXRoLmNlaWwpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbi9yKG8qbChlKG4pL28rYSkpPD1jP2kobik6IiJ9fSx1LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdHUobi5jb3B5KCksdCxlLHIsaSl9LFdpKHUsbil9ZnVuY3Rpb24gZXUobil7cmV0dXJuIE1hdGgubG9nKDA+bj8wOm4pfWZ1bmN0aW9uIHJ1KG4pe3JldHVybiBNYXRoLmV4cChuKX1mdW5jdGlvbiBpdShuKXtyZXR1cm4tTWF0aC5sb2cobj4wPzA6LW4pfWZ1bmN0aW9uIHV1KG4pe3JldHVybi1NYXRoLmV4cCgtbil9ZnVuY3Rpb24gYXUobix0LGUpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIG4oaSh0KSl9dmFyIGk9b3UodCksdT1vdSgxL3QpO3JldHVybiByLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdShuLmludmVydCh0KSl9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuLmRvbWFpbigoZT10Lm1hcChOdW1iZXIpKS5tYXAoaSkpLHIpOmV9LHIudGlja3M9ZnVuY3Rpb24obil7cmV0dXJuIFFpKGUsbil9LHIudGlja0Zvcm1hdD1mdW5jdGlvbihuLHQpe3JldHVybiBudShlLG4sdCl9LHIubmljZT1mdW5jdGlvbihuKXtyZXR1cm4gci5kb21haW4oSmkoZSxuKSl9LHIuZXhwb25lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9b3UodD1hKSx1PW91KDEvdCksbi5kb21haW4oZS5tYXAoaSkpLHIpOnR9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBhdShuLmNvcHkoKSx0LGUpfSxXaShyLG4pfWZ1bmN0aW9uIG91KG4pe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gMD50Py1NYXRoLnBvdygtdCxuKTpNYXRoLnBvdyh0LG4pfX1mdW5jdGlvbiBjdShuLHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIGFbKCh1LmdldCh0KXx8dS5zZXQodCxuLnB1c2godCkpKS0xKSVhLmxlbmd0aF19ZnVuY3Rpb24gcih0LGUpe3JldHVybiB5YS5yYW5nZShuLmxlbmd0aCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0K2Uqbn0pfXZhciB1LGEsbztyZXR1cm4gZS5kb21haW49ZnVuY3Rpb24ocil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG47bj1bXSx1PW5ldyBpO2Zvcih2YXIgYSxvPS0xLGM9ci5sZW5ndGg7KytvPGM7KXUuaGFzKGE9cltvXSl8fHUuc2V0KGEsbi5wdXNoKGEpKTtyZXR1cm4gZVt0LnRdLmFwcGx5KGUsdC5hKX0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1uLG89MCx0PXt0OiJyYW5nZSIsYTphcmd1bWVudHN9LGUpOmF9LGUucmFuZ2VQb2ludHM9ZnVuY3Rpb24oaSx1KXthcmd1bWVudHMubGVuZ3RoPDImJih1PTApO3ZhciBjPWlbMF0sbD1pWzFdLHM9KGwtYykvKE1hdGgubWF4KDEsbi5sZW5ndGgtMSkrdSk7cmV0dXJuIGE9cihuLmxlbmd0aDwyPyhjK2wpLzI6YytzKnUvMixzKSxvPTAsdD17dDoicmFuZ2VQb2ludHMiLGE6YXJndW1lbnRzfSxlfSxlLnJhbmdlQmFuZHM9ZnVuY3Rpb24oaSx1LGMpe2FyZ3VtZW50cy5sZW5ndGg8MiYmKHU9MCksYXJndW1lbnRzLmxlbmd0aDwzJiYoYz11KTt2YXIgbD1pWzFdPGlbMF0scz1pW2wtMF0sZj1pWzEtbF0saD0oZi1zKS8obi5sZW5ndGgtdSsyKmMpO3JldHVybiBhPXIocytoKmMsaCksbCYmYS5yZXZlcnNlKCksbz1oKigxLXUpLHQ9e3Q6InJhbmdlQmFuZHMiLGE6YXJndW1lbnRzfSxlfSxlLnJhbmdlUm91bmRCYW5kcz1mdW5jdGlvbihpLHUsYyl7YXJndW1lbnRzLmxlbmd0aDwyJiYodT0wKSxhcmd1bWVudHMubGVuZ3RoPDMmJihjPXUpO3ZhciBsPWlbMV08aVswXSxzPWlbbC0wXSxmPWlbMS1sXSxoPU1hdGguZmxvb3IoKGYtcykvKG4ubGVuZ3RoLXUrMipjKSksZz1mLXMtKG4ubGVuZ3RoLXUpKmg7cmV0dXJuIGE9cihzK01hdGgucm91bmQoZy8yKSxoKSxsJiZhLnJldmVyc2UoKSxvPU1hdGgucm91bmQoaCooMS11KSksdD17dDoicmFuZ2VSb3VuZEJhbmRzIixhOmFyZ3VtZW50c30sZX0sZS5yYW5nZUJhbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gb30sZS5yYW5nZUV4dGVudD1mdW5jdGlvbigpe3JldHVybiBVaSh0LmFbMF0pfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gY3Uobix0KX0sZS5kb21haW4obil9ZnVuY3Rpb24gbHUobix0KXtmdW5jdGlvbiBlKCl7dmFyIGU9MCx1PXQubGVuZ3RoO2ZvcihpPVtdOysrZTx1OylpW2UtMV09eWEucXVhbnRpbGUobixlL3UpO3JldHVybiByfWZ1bmN0aW9uIHIobil7cmV0dXJuIGlzTmFOKG49K24pP3ZvaWQgMDp0W3lhLmJpc2VjdChpLG4pXX12YXIgaTtyZXR1cm4gci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dC5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIWlzTmFOKG4pfSkuc29ydCh5YS5hc2NlbmRpbmcpLGUoKSk6bn0sci5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGUoKSk6dH0sci5xdWFudGlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGx1KG4sdCl9LGUoKX1mdW5jdGlvbiBzdShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gZVtNYXRoLm1heCgwLE1hdGgubWluKGEsTWF0aC5mbG9vcih1Kih0LW4pKSkpXX1mdW5jdGlvbiBpKCl7cmV0dXJuIHU9ZS5sZW5ndGgvKHQtbiksYT1lLmxlbmd0aC0xLHJ9dmFyIHUsYTtyZXR1cm4gci5kb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K2VbMF0sdD0rZVtlLmxlbmd0aC0xXSxpKCkpOltuLHRdfSxyLnJhbmdlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4saSgpKTplfSxyLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gc3Uobix0LGUpfSxyLmludmVydEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdD1lLmluZGV4T2YodCksdD0wPnQ/MC8wOnQvdStuLFt0LHQrMS91XX0saSgpfWZ1bmN0aW9uIGZ1KG4sdCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZT49ZT90W3lhLmJpc2VjdChuLGUpXTp2b2lkIDB9cmV0dXJuIGUuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZSk6bn0sZS5yYW5nZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGUpOnR9LGUuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlPXQuaW5kZXhPZihlKSxbbltlLTFdLG5bZV1dfSxlLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZnUobix0KX0sZX1mdW5jdGlvbiBodShuKXtmdW5jdGlvbiB0KG4pe3JldHVybitufXJldHVybiB0LmludmVydD10LHQuZG9tYWluPXQucmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZS5tYXAodCksdCk6bn0sdC50aWNrcz1mdW5jdGlvbih0KXtyZXR1cm4gUWkobix0KX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51KG4sdCxlKX0sdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGh1KG4pfSx0fWZ1bmN0aW9uIGd1KG4pe3JldHVybiBuLmlubmVyUmFkaXVzfWZ1bmN0aW9uIHB1KG4pe3JldHVybiBuLm91dGVyUmFkaXVzfWZ1bmN0aW9uIGR1KG4pe3JldHVybiBuLnN0YXJ0QW5nbGV9ZnVuY3Rpb24gbXUobil7cmV0dXJuIG4uZW5kQW5nbGV9ZnVuY3Rpb24gdnUobil7Zm9yKHZhciB0LGUscixpPS0xLHU9bi5sZW5ndGg7KytpPHU7KXQ9bltpXSxlPXRbMF0scj10WzFdK2tjLHRbMF09ZSpNYXRoLmNvcyhyKSx0WzFdPWUqTWF0aC5zaW4ocik7cmV0dXJuIG59ZnVuY3Rpb24geXUobil7ZnVuY3Rpb24gdCh0KXtmdW5jdGlvbiBjKCl7ZC5wdXNoKCJNIixvKG4odiksZikscyxsKG4obS5yZXZlcnNlKCkpLGYpLCJaIil9Zm9yKHZhciBoLGcscCxkPVtdLG09W10sdj1bXSx5PS0xLE09dC5sZW5ndGgseD1mdChlKSxiPWZ0KGkpLF89ZT09PXI/ZnVuY3Rpb24oKXtyZXR1cm4gZ306ZnQociksdz1pPT09dT9mdW5jdGlvbigpe3JldHVybiBwfTpmdCh1KTsrK3k8TTspYS5jYWxsKHRoaXMsaD10W3ldLHkpPyhtLnB1c2goW2c9K3guY2FsbCh0aGlzLGgseSkscD0rYi5jYWxsKHRoaXMsaCx5KV0pLHYucHVzaChbK18uY2FsbCh0aGlzLGgseSksK3cuY2FsbCh0aGlzLGgseSldKSk6bS5sZW5ndGgmJihjKCksbT1bXSx2PVtdKTtyZXR1cm4gbS5sZW5ndGgmJmMoKSxkLmxlbmd0aD9kLmpvaW4oIiIpOm51bGx9dmFyIGU9T2Uscj1PZSxpPTAsdT1ZZSxhPVJ0LG89UmUsYz1vLmtleSxsPW8scz0iTCIsZj0uNztyZXR1cm4gdC54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXI9bix0KTpyfSx0LngwPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4sdCk6ZX0sdC54MT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT11PW4sdCk6dX0sdC55MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1uLHQpOml9LHQueTE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bix0KTp1fSx0LmRlZmluZWQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bix0KTphfSx0LmludGVycG9sYXRlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiBuP289bjoobz1pYy5nZXQobil8fFJlKS5rZXksbD1vLnJldmVyc2V8fG8scz1vLmNsb3NlZD8iTSI6IkwiLHQpOmN9LHQudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1uLHQpOmZ9LHR9ZnVuY3Rpb24gTXUobil7cmV0dXJuIG4ucmFkaXVzfWZ1bmN0aW9uIHh1KG4pe3JldHVybltuLngsbi55XX1mdW5jdGlvbiBidShuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlPXRbMF0scj10WzFdK2tjO3JldHVybltlKk1hdGguY29zKHIpLGUqTWF0aC5zaW4ocildfX1mdW5jdGlvbiBfdSgpe3JldHVybiA2NH1mdW5jdGlvbiB3dSgpe3JldHVybiJjaXJjbGUifWZ1bmN0aW9uIFN1KG4pe3ZhciB0PU1hdGguc3FydChuLyRhKTtyZXR1cm4iTTAsIit0KyJBIit0KyIsIit0KyIgMCAxLDEgMCwiKy10KyJBIit0KyIsIit0KyIgMCAxLDEgMCwiK3QrIloifWZ1bmN0aW9uIEV1KG4sdCl7cmV0dXJuIHphKG4semMpLG4uaWQ9dCxufWZ1bmN0aW9uIGt1KG4sdCxlLHIpe3ZhciBpPW4uaWQ7cmV0dXJuIFQobiwiZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihuLHUsYSl7bi5fX3RyYW5zaXRpb25fX1tpXS50d2Vlbi5zZXQodCxyKGUuY2FsbChuLG4uX19kYXRhX18sdSxhKSkpfTooZT1yKGUpLGZ1bmN0aW9uKG4pe24uX190cmFuc2l0aW9uX19baV0udHdlZW4uc2V0KHQsZSl9KSl9ZnVuY3Rpb24gQXUobil7cmV0dXJuIG51bGw9PW4mJihuPSIiKSxmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn19ZnVuY3Rpb24gTnUobix0LGUscil7dmFyIHU9bi5fX3RyYW5zaXRpb25fX3x8KG4uX190cmFuc2l0aW9uX189e2FjdGl2ZTowLGNvdW50OjB9KSxhPXVbZV07aWYoIWEpe3ZhciBvPXIudGltZTtyZXR1cm4gYT11W2VdPXt0d2VlbjpuZXcgaSxldmVudDp5YS5kaXNwYXRjaCgic3RhcnQiLCJlbmQiKSx0aW1lOm8sZWFzZTpyLmVhc2UsZGVsYXk6ci5kZWxheSxkdXJhdGlvbjpyLmR1cmF0aW9ufSwrK3UuY291bnQseWEudGltZXIoZnVuY3Rpb24ocil7ZnVuY3Rpb24gaShyKXtyZXR1cm4gdS5hY3RpdmU+ZT9sKCk6KHUuYWN0aXZlPWUsaC5zdGFydC5jYWxsKG4scyx0KSxhLnR3ZWVuLmZvckVhY2goZnVuY3Rpb24oZSxyKXsocj1yLmNhbGwobixzLHQpKSYmZC5wdXNoKHIpfSksYyhyKXx8eWEudGltZXIoYywwLG8pLDEpfWZ1bmN0aW9uIGMocil7aWYodS5hY3RpdmUhPT1lKXJldHVybiBsKCk7Zm9yKHZhciBpPShyLWcpL3AsYT1mKGkpLG89ZC5sZW5ndGg7bz4wOylkWy0tb10uY2FsbChuLGEpO3JldHVybiBpPj0xPyhsKCksaC5lbmQuY2FsbChuLHMsdCksMSk6dm9pZCAwfWZ1bmN0aW9uIGwoKXtyZXR1cm4tLXUuY291bnQ/ZGVsZXRlIHVbZV06ZGVsZXRlIG4uX190cmFuc2l0aW9uX18sMX12YXIgcz1uLl9fZGF0YV9fLGY9YS5lYXNlLGg9YS5ldmVudCxnPWEuZGVsYXkscD1hLmR1cmF0aW9uLGQ9W107cmV0dXJuIHI+PWc/aShyKTp5YS50aW1lcihpLGcsbyksMX0sMCxvKSxhfX1mdW5jdGlvbiBxdShuLHQpe24uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihuKXtyZXR1cm4idHJhbnNsYXRlKCIrdChuKSsiLDApIn0pfWZ1bmN0aW9uIFR1KG4sdCl7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKG4pe3JldHVybiJ0cmFuc2xhdGUoMCwiK3QobikrIikifSl9ZnVuY3Rpb24gQ3Uobix0LGUpe2lmKHI9W10sZSYmdC5sZW5ndGg+MSl7Zm9yKHZhciByLGksdSxhPVVpKG4uZG9tYWluKCkpLG89LTEsYz10Lmxlbmd0aCxsPSh0WzFdLXRbMF0pLysrZTsrK288YzspZm9yKGk9ZTstLWk+MDspKHU9K3Rbb10taSpsKT49YVswXSYmci5wdXNoKHUpO2ZvcigtLW8saT0wOysraTxlJiYodT0rdFtvXStpKmwpPGFbMV07KXIucHVzaCh1KX1yZXR1cm4gcn1mdW5jdGlvbiB6dSgpe3RoaXMuXz1uZXcgRGF0ZShhcmd1bWVudHMubGVuZ3RoPjE/RGF0ZS5VVEMuYXBwbHkodGhpcyxhcmd1bWVudHMpOmFyZ3VtZW50c1swXSl9ZnVuY3Rpb24gRHUobix0LGUpe2Z1bmN0aW9uIHIodCl7dmFyIGU9bih0KSxyPXUoZSwxKTtyZXR1cm4gci10PnQtZT9lOnJ9ZnVuY3Rpb24gaShlKXtyZXR1cm4gdChlPW4obmV3IE9jKGUtMSkpLDEpLGV9ZnVuY3Rpb24gdShuLGUpe3JldHVybiB0KG49bmV3IE9jKCtuKSxlKSxufWZ1bmN0aW9uIGEobixyLHUpe3ZhciBhPWkobiksbz1bXTtpZih1PjEpZm9yKDtyPmE7KWUoYSkldXx8by5wdXNoKG5ldyBEYXRlKCthKSksdChhLDEpO2Vsc2UgZm9yKDtyPmE7KW8ucHVzaChuZXcgRGF0ZSgrYSkpLHQoYSwxKTtyZXR1cm4gb31mdW5jdGlvbiBvKG4sdCxlKXt0cnl7T2M9enU7dmFyIHI9bmV3IHp1O3JldHVybiByLl89bixhKHIsdCxlKX1maW5hbGx5e09jPURhdGV9fW4uZmxvb3I9bixuLnJvdW5kPXIsbi5jZWlsPWksbi5vZmZzZXQ9dSxuLnJhbmdlPWE7dmFyIGM9bi51dGM9anUobik7cmV0dXJuIGMuZmxvb3I9YyxjLnJvdW5kPWp1KHIpLGMuY2VpbD1qdShpKSxjLm9mZnNldD1qdSh1KSxjLnJhbmdlPW8sbn1mdW5jdGlvbiBqdShuKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0cnl7T2M9enU7dmFyIHI9bmV3IHp1O3JldHVybiByLl89dCxuKHIsZSkuX31maW5hbGx5e09jPURhdGV9fX1mdW5jdGlvbiBMdShuLHQsZSxyKXtmb3IodmFyIGksdSxhPTAsbz10Lmxlbmd0aCxjPWUubGVuZ3RoO28+YTspe2lmKHI+PWMpcmV0dXJuLTE7aWYoaT10LmNoYXJDb2RlQXQoYSsrKSwzNz09PWkpe2lmKHU9YWxbdC5jaGFyQXQoYSsrKV0sIXV8fChyPXUobixlLHIpKTwwKXJldHVybi0xfWVsc2UgaWYoaSE9ZS5jaGFyQ29kZUF0KHIrKykpcmV0dXJuLTF9cmV0dXJuIHJ9ZnVuY3Rpb24gSHUobil7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK24ubWFwKHlhLnJlcXVvdGUpLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBGdShuKXtmb3IodmFyIHQ9bmV3IGksZT0tMSxyPW4ubGVuZ3RoOysrZTxyOyl0LnNldChuW2VdLnRvTG93ZXJDYXNlKCksZSk7cmV0dXJuIHR9ZnVuY3Rpb24gUHUobix0LGUpe3ZhciByPTA+bj8iLSI6IiIsaT0ocj8tbjpuKSsiIix1PWkubGVuZ3RoO3JldHVybiByKyhlPnU/bmV3IEFycmF5KGUtdSsxKS5qb2luKHQpK2k6aSl9ZnVuY3Rpb24gT3Uobix0LGUpe0djLmxhc3RJbmRleD0wO3ZhciByPUdjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLnc9S2MuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWXUobix0LGUpe1djLmxhc3RJbmRleD0wO3ZhciByPVdjLmV4ZWModC5zdWJzdHJpbmcoZSkpO3JldHVybiByPyhuLnc9SmMuZ2V0KHJbMF0udG9Mb3dlckNhc2UoKSksZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUnUobix0LGUpe29sLmxhc3RJbmRleD0wO3ZhciByPW9sLmV4ZWModC5zdWJzdHJpbmcoZSxlKzEpKTtyZXR1cm4gcj8obi53PStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFV1KG4sdCxlKXtvbC5sYXN0SW5kZXg9MDt2YXIgcj1vbC5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5VPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEl1KG4sdCxlKXtvbC5sYXN0SW5kZXg9MDt2YXIgcj1vbC5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5XPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFZ1KG4sdCxlKXt0bC5sYXN0SW5kZXg9MDt2YXIgcj10bC5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5tPWVsLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFh1KG4sdCxlKXtRYy5sYXN0SW5kZXg9MDt2YXIgcj1RYy5leGVjKHQuc3Vic3RyaW5nKGUpKTtyZXR1cm4gcj8obi5tPW5sLmdldChyWzBdLnRvTG93ZXJDYXNlKCkpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFp1KG4sdCxlKXtyZXR1cm4gTHUobix1bC5jLnRvU3RyaW5nKCksdCxlKX1mdW5jdGlvbiBCdShuLHQsZSl7cmV0dXJuIEx1KG4sdWwueC50b1N0cmluZygpLHQsZSl9ZnVuY3Rpb24gJHUobix0LGUpe3JldHVybiBMdShuLHVsLlgudG9TdHJpbmcoKSx0LGUpfWZ1bmN0aW9uIFd1KG4sdCxlKXtvbC5sYXN0SW5kZXg9MDt2YXIgcj1vbC5leGVjKHQuc3Vic3RyaW5nKGUsZSs0KSk7cmV0dXJuIHI/KG4ueT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBKdShuLHQsZSl7b2wubGFzdEluZGV4PTA7dmFyIHI9b2wuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLnk9R3UoK3JbMF0pLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEd1KG4pe3JldHVybiBuKyhuPjY4PzE5MDA6MmUzKX1mdW5jdGlvbiBLdShuLHQsZSl7b2wubGFzdEluZGV4PTA7dmFyIHI9b2wuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLm09clswXS0xLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFF1KG4sdCxlKXtvbC5sYXN0SW5kZXg9MDt2YXIgcj1vbC5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBuYShuLHQsZSl7b2wubGFzdEluZGV4PTA7dmFyIHI9b2wuZXhlYyh0LnN1YnN0cmluZyhlLGUrMykpO3JldHVybiByPyhuLmo9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdGEobix0LGUpe29sLmxhc3RJbmRleD0wO3ZhciByPW9sLmV4ZWModC5zdWJzdHJpbmcoZSxlKzIpKTtyZXR1cm4gcj8obi5IPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGVhKG4sdCxlKXtvbC5sYXN0SW5kZXg9MDt2YXIgcj1vbC5leGVjKHQuc3Vic3RyaW5nKGUsZSsyKSk7cmV0dXJuIHI/KG4uTT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiByYShuLHQsZSl7b2wubGFzdEluZGV4PTA7dmFyIHI9b2wuZXhlYyh0LnN1YnN0cmluZyhlLGUrMikpO3JldHVybiByPyhuLlM9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gaWEobix0LGUpe29sLmxhc3RJbmRleD0wO3ZhciByPW9sLmV4ZWModC5zdWJzdHJpbmcoZSxlKzMpKTtyZXR1cm4gcj8obi5MPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHVhKG4sdCxlKXt2YXIgcj1jbC5nZXQodC5zdWJzdHJpbmcoZSxlKz0yKS50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gbnVsbD09cj8tMToobi5wPXIsZSl9ZnVuY3Rpb24gYWEobil7dmFyIHQ9bi5nZXRUaW1lem9uZU9mZnNldCgpLGU9dD4wPyItIjoiKyIscj1+fihNYXRoLmFicyh0KS82MCksaT1NYXRoLmFicyh0KSU2MDtyZXR1cm4gZStQdShyLCIwIiwyKStQdShpLCIwIiwyKX1mdW5jdGlvbiBvYShuLHQsZSl7cmwubGFzdEluZGV4PTA7dmFyIHI9cmwuZXhlYyh0LnN1YnN0cmluZyhlLGUrMSkpO3JldHVybiByP2UrclswXS5sZW5ndGg6LTF9ZnVuY3Rpb24gY2Eobil7cmV0dXJuIG4udG9JU09TdHJpbmcoKX1mdW5jdGlvbiBsYShuLHQsZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbih0KX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHNhKG4uaW52ZXJ0KHQpKX0sci5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4uZG9tYWluKHQpLHIpOm4uZG9tYWluKCkubWFwKHNhKX0sci5uaWNlPWZ1bmN0aW9uKG4pe3JldHVybiByLmRvbWFpbihYaShyLmRvbWFpbigpLG4pKX0sci50aWNrcz1mdW5jdGlvbihlLGkpe3ZhciB1PVVpKHIuZG9tYWluKCkpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXt2YXIgYT11WzFdLXVbMF0sbz1hL2UsYz15YS5iaXNlY3Qoc2wsbyk7aWYoYz09c2wubGVuZ3RoKXJldHVybiB0LnllYXIodSxlKTtpZighYylyZXR1cm4gbi50aWNrcyhlKS5tYXAoc2EpO01hdGgubG9nKG8vc2xbYy0xXSk8TWF0aC5sb2coc2xbY10vbykmJi0tYyxlPXRbY10saT1lWzFdLGU9ZVswXS5yYW5nZX1yZXR1cm4gZSh1WzBdLG5ldyBEYXRlKCt1WzFdKzEpLGkpfSxyLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sci5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGxhKG4uY29weSgpLHQsZSl9LFdpKHIsbil9ZnVuY3Rpb24gc2Eobil7cmV0dXJuIG5ldyBEYXRlKG4pfWZ1bmN0aW9uIGZhKG4pe3JldHVybiBmdW5jdGlvbih0KXtmb3IodmFyIGU9bi5sZW5ndGgtMSxyPW5bZV07IXJbMV0odCk7KXI9blstLWVdO3JldHVybiByWzBdKHQpfX1mdW5jdGlvbiBoYShuKXt2YXIgdD1uZXcgRGF0ZShuLDAsMSk7cmV0dXJuIHQuc2V0RnVsbFllYXIobiksdH1mdW5jdGlvbiBnYShuKXt2YXIgdD1uLmdldEZ1bGxZZWFyKCksZT1oYSh0KSxyPWhhKHQrMSk7cmV0dXJuIHQrKG4tZSkvKHItZSl9ZnVuY3Rpb24gcGEobil7dmFyIHQ9bmV3IERhdGUoRGF0ZS5VVEMobiwwLDEpKTtyZXR1cm4gdC5zZXRVVENGdWxsWWVhcihuKSx0fWZ1bmN0aW9uIGRhKG4pe3ZhciB0PW4uZ2V0VVRDRnVsbFllYXIoKSxlPXBhKHQpLHI9cGEodCsxKTtyZXR1cm4gdCsobi1lKS8oci1lKX1mdW5jdGlvbiBtYShuKXtyZXR1cm4gSlNPTi5wYXJzZShuLnJlc3BvbnNlVGV4dCl9ZnVuY3Rpb24gdmEobil7dmFyIHQ9TWEuY3JlYXRlUmFuZ2UoKTtyZXR1cm4gdC5zZWxlY3ROb2RlKE1hLmJvZHkpLHQuY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KG4ucmVzcG9uc2VUZXh0KX12YXIgeWE9e3ZlcnNpb246IjMuMi4zIn07RGF0ZS5ub3d8fChEYXRlLm5vdz1mdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0pO3ZhciBNYT1kb2N1bWVudCx4YT1NYS5kb2N1bWVudEVsZW1lbnQsYmE9d2luZG93O3RyeXtNYS5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZS5zZXRQcm9wZXJ0eSgib3BhY2l0eSIsMCwiIil9Y2F0Y2goX2Epe3ZhciB3YT1iYS5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZSxTYT13YS5zZXRQcm9wZXJ0eTt3YS5zZXRQcm9wZXJ0eT1mdW5jdGlvbihuLHQsZSl7U2EuY2FsbCh0aGlzLG4sdCsiIixlKX19eWEuYXNjZW5kaW5nPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQ+bj8tMTpuPnQ/MTpuPj10PzA6MC8wfSx5YS5kZXNjZW5kaW5nPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4+dD8tMTp0Pm4/MTp0Pj1uPzA6MC8wfSx5YS5taW49ZnVuY3Rpb24obix0KXt2YXIgZSxyLGk9LTEsdT1uLmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2k8dSYmIShudWxsIT0oZT1uW2ldKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7KytpPHU7KW51bGwhPShyPW5baV0pJiZlPnImJihlPXIpfWVsc2V7Zm9yKDsrK2k8dSYmIShudWxsIT0oZT10LmNhbGwobixuW2ldLGkpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7KytpPHU7KW51bGwhPShyPXQuY2FsbChuLG5baV0saSkpJiZlPnImJihlPXIpfXJldHVybiBlfSx5YS5tYXg9ZnVuY3Rpb24obix0KXt2YXIgZSxyLGk9LTEsdT1uLmxlbmd0aDtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7Zm9yKDsrK2k8dSYmIShudWxsIT0oZT1uW2ldKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7KytpPHU7KW51bGwhPShyPW5baV0pJiZyPmUmJihlPXIpfWVsc2V7Zm9yKDsrK2k8dSYmIShudWxsIT0oZT10LmNhbGwobixuW2ldLGkpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7KytpPHU7KW51bGwhPShyPXQuY2FsbChuLG5baV0saSkpJiZyPmUmJihlPXIpfXJldHVybiBlfSx5YS5leHRlbnQ9ZnVuY3Rpb24obix0KXt2YXIgZSxyLGksdT0tMSxhPW4ubGVuZ3RoO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtmb3IoOysrdTxhJiYhKG51bGwhPShlPWk9blt1XSkmJmU+PWUpOyllPWk9dm9pZCAwO2Zvcig7Kyt1PGE7KW51bGwhPShyPW5bdV0pJiYoZT5yJiYoZT1yKSxyPmkmJihpPXIpKX1lbHNle2Zvcig7Kyt1PGEmJiEobnVsbCE9KGU9aT10LmNhbGwobixuW3VdLHUpKSYmZT49ZSk7KWU9dm9pZCAwO2Zvcig7Kyt1PGE7KW51bGwhPShyPXQuY2FsbChuLG5bdV0sdSkpJiYoZT5yJiYoZT1yKSxyPmkmJihpPXIpKX1yZXR1cm5bZSxpXX0seWEuc3VtPWZ1bmN0aW9uKG4sdCl7dmFyIGUscj0wLGk9bi5sZW5ndGgsdT0tMTtpZigxPT09YXJndW1lbnRzLmxlbmd0aClmb3IoOysrdTxpOylpc05hTihlPStuW3VdKXx8KHIrPWUpO2Vsc2UgZm9yKDsrK3U8aTspaXNOYU4oZT0rdC5jYWxsKG4sblt1XSx1KSl8fChyKz1lKTtyZXR1cm4gcn0seWEubWVhbj1mdW5jdGlvbih0LGUpe3ZhciByLGk9dC5sZW5ndGgsdT0wLGE9LTEsbz0wO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKWZvcig7KythPGk7KW4ocj10W2FdKSYmKHUrPShyLXUpLysrbyk7ZWxzZSBmb3IoOysrYTxpOyluKHI9ZS5jYWxsKHQsdFthXSxhKSkmJih1Kz0oci11KS8rK28pO3JldHVybiBvP3U6dm9pZCAwfSx5YS5xdWFudGlsZT1mdW5jdGlvbihuLHQpe3ZhciBlPShuLmxlbmd0aC0xKSp0KzEscj1NYXRoLmZsb29yKGUpLGk9K25bci0xXSx1PWUtcjtyZXR1cm4gdT9pK3UqKG5bcl0taSk6aX0seWEubWVkaWFuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MSYmKHQ9dC5tYXAoZSkpLHQ9dC5maWx0ZXIobiksdC5sZW5ndGg/eWEucXVhbnRpbGUodC5zb3J0KHlhLmFzY2VuZGluZyksLjUpOnZvaWQgMH0seWEuYmlzZWN0b3I9ZnVuY3Rpb24obil7cmV0dXJue2xlZnQ6ZnVuY3Rpb24odCxlLHIsaSl7Zm9yKGFyZ3VtZW50cy5sZW5ndGg8MyYmKHI9MCksYXJndW1lbnRzLmxlbmd0aDw0JiYoaT10Lmxlbmd0aCk7aT5yOyl7dmFyIHU9citpPj4+MTtuLmNhbGwodCx0W3VdLHUpPGU/cj11KzE6aT11fXJldHVybiByfSxyaWdodDpmdW5jdGlvbih0LGUscixpKXtmb3IoYXJndW1lbnRzLmxlbmd0aDwzJiYocj0wKSxhcmd1bWVudHMubGVuZ3RoPDQmJihpPXQubGVuZ3RoKTtpPnI7KXt2YXIgdT1yK2k+Pj4xO2U8bi5jYWxsKHQsdFt1XSx1KT9pPXU6cj11KzF9cmV0dXJuIHJ9fX07dmFyIEVhPXlhLmJpc2VjdG9yKGZ1bmN0aW9uKG4pe3JldHVybiBufSk7eWEuYmlzZWN0TGVmdD1FYS5sZWZ0LHlhLmJpc2VjdD15YS5iaXNlY3RSaWdodD1FYS5yaWdodCx5YS5zaHVmZmxlPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdCxlLHI9bi5sZW5ndGg7cjspZT0wfE1hdGgucmFuZG9tKCkqci0tLHQ9bltyXSxuW3JdPW5bZV0sbltlXT10O3JldHVybiBufSx5YS5wZXJtdXRlPWZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPVtdLHI9LTEsaT10Lmxlbmd0aDsrK3I8aTspZVtyXT1uW3Rbcl1dO3JldHVybiBlfSx5YS56aXA9ZnVuY3Rpb24oKXtpZighKGk9YXJndW1lbnRzLmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBuPS0xLGU9eWEubWluKGFyZ3VtZW50cyx0KSxyPW5ldyBBcnJheShlKTsrK248ZTspZm9yKHZhciBpLHU9LTEsYT1yW25dPW5ldyBBcnJheShpKTsrK3U8aTspYVt1XT1hcmd1bWVudHNbdV1bbl07cmV0dXJuIHJ9LHlhLnRyYW5zcG9zZT1mdW5jdGlvbihuKXtyZXR1cm4geWEuemlwLmFwcGx5KHlhLG4pfSx5YS5rZXlzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaChlKTtyZXR1cm4gdH0seWEudmFsdWVzPWZ1bmN0aW9uKG4pe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiBuKXQucHVzaChuW2VdKTtyZXR1cm4gdH0seWEuZW50cmllcz1mdW5jdGlvbihuKXt2YXIgdD1bXTtmb3IodmFyIGUgaW4gbil0LnB1c2goe2tleTplLHZhbHVlOm5bZV19KTtyZXR1cm4gdH0seWEubWVyZ2U9ZnVuY3Rpb24obil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sbil9LHlhLnJhbmdlPWZ1bmN0aW9uKG4sdCxyKXtpZihhcmd1bWVudHMubGVuZ3RoPDMmJihyPTEsYXJndW1lbnRzLmxlbmd0aDwyJiYodD1uLG49MCkpLDEvMD09PSh0LW4pL3IpdGhyb3cgbmV3IEVycm9yKCJpbmZpbml0ZSByYW5nZSIpO3ZhciBpLHU9W10sYT1lKE1hdGguYWJzKHIpKSxvPS0xO2lmKG4qPWEsdCo9YSxyKj1hLDA+cilmb3IoOyhpPW4rciorK28pPnQ7KXUucHVzaChpL2EpO2Vsc2UgZm9yKDsoaT1uK3IqKytvKTx0Oyl1LnB1c2goaS9hKTtyZXR1cm4gdX0seWEubWFwPWZ1bmN0aW9uKG4pe3ZhciB0PW5ldyBpO2Zvcih2YXIgZSBpbiBuKXQuc2V0KGUsbltlXSk7cmV0dXJuIHR9LHIoaSx7aGFzOmZ1bmN0aW9uKG4pe3JldHVybiBrYStuIGluIHRoaXN9LGdldDpmdW5jdGlvbihuKXtyZXR1cm4gdGhpc1trYStuXX0sc2V0OmZ1bmN0aW9uKG4sdCl7cmV0dXJuIHRoaXNba2Erbl09dH0scmVtb3ZlOmZ1bmN0aW9uKG4pe3JldHVybiBuPWthK24sbiBpbiB0aGlzJiZkZWxldGUgdGhpc1tuXX0sa2V5czpmdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCl7bi5wdXNoKHQpfSksbn0sdmFsdWVzOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LGUpe24ucHVzaChlKX0pLG59LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7bi5wdXNoKHtrZXk6dCx2YWx1ZTplfSl9KSxufSxmb3JFYWNoOmZ1bmN0aW9uKG4pe2Zvcih2YXIgdCBpbiB0aGlzKXQuY2hhckNvZGVBdCgwKT09PUFhJiZuLmNhbGwodGhpcyx0LnN1YnN0cmluZygxKSx0aGlzW3RdKX19KTt2YXIga2E9IlwwIixBYT1rYS5jaGFyQ29kZUF0KDApO3lhLm5lc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKHQsbyxjKXtpZihjPj1hLmxlbmd0aClyZXR1cm4gcj9yLmNhbGwodSxvKTplP28uc29ydChlKTpvO2Zvcih2YXIgbCxzLGYsaCxnPS0xLHA9by5sZW5ndGgsZD1hW2MrK10sbT1uZXcgaTsrK2c8cDspKGg9bS5nZXQobD1kKHM9b1tnXSkpKT9oLnB1c2gocyk6bS5zZXQobCxbc10pO3JldHVybiB0PyhzPXQoKSxmPWZ1bmN0aW9uKGUscil7cy5zZXQoZSxuKHQscixjKSkKfSk6KHM9e30sZj1mdW5jdGlvbihlLHIpe3NbZV09bih0LHIsYyl9KSxtLmZvckVhY2goZiksc31mdW5jdGlvbiB0KG4sZSl7aWYoZT49YS5sZW5ndGgpcmV0dXJuIG47dmFyIHI9W10saT1vW2UrK107cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuLGkpe3IucHVzaCh7a2V5Om4sdmFsdWVzOnQoaSxlKX0pfSksaT9yLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gaShuLmtleSx0LmtleSl9KTpyfXZhciBlLHIsdT17fSxhPVtdLG89W107cmV0dXJuIHUubWFwPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4oZSx0LDApfSx1LmVudHJpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHQobih5YS5tYXAsZSwwKSwwKX0sdS5rZXk9ZnVuY3Rpb24obil7cmV0dXJuIGEucHVzaChuKSx1fSx1LnNvcnRLZXlzPWZ1bmN0aW9uKG4pe3JldHVybiBvW2EubGVuZ3RoLTFdPW4sdX0sdS5zb3J0VmFsdWVzPWZ1bmN0aW9uKG4pe3JldHVybiBlPW4sdX0sdS5yb2xsdXA9ZnVuY3Rpb24obil7cmV0dXJuIHI9bix1fSx1fSx5YS5zZXQ9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IHU7aWYobilmb3IodmFyIGU9MDtlPG4ubGVuZ3RoO2UrKyl0LmFkZChuW2VdKTtyZXR1cm4gdH0scih1LHtoYXM6ZnVuY3Rpb24obil7cmV0dXJuIGthK24gaW4gdGhpc30sYWRkOmZ1bmN0aW9uKG4pe3JldHVybiB0aGlzW2thK25dPSEwLG59LHJlbW92ZTpmdW5jdGlvbihuKXtyZXR1cm4gbj1rYStuLG4gaW4gdGhpcyYmZGVsZXRlIHRoaXNbbl19LHZhbHVlczpmdW5jdGlvbigpe3ZhciBuPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCl7bi5wdXNoKHQpfSksbn0sZm9yRWFjaDpmdW5jdGlvbihuKXtmb3IodmFyIHQgaW4gdGhpcyl0LmNoYXJDb2RlQXQoMCk9PT1BYSYmbi5jYWxsKHRoaXMsdC5zdWJzdHJpbmcoMSkpfX0pLHlhLmJlaGF2aW9yPXt9LHlhLnJlYmluZD1mdW5jdGlvbihuLHQpe2Zvcih2YXIgZSxyPTEsaT1hcmd1bWVudHMubGVuZ3RoOysrcjxpOyluW2U9YXJndW1lbnRzW3JdXT1hKG4sdCx0W2VdKTtyZXR1cm4gbn07dmFyIE5hPVsid2Via2l0IiwibXMiLCJtb3oiLCJNb3oiLCJvIiwiTyJdLHFhPWw7dHJ5e3FhKHhhLmNoaWxkTm9kZXMpWzBdLm5vZGVUeXBlfWNhdGNoKFRhKXtxYT1jfXlhLmRpc3BhdGNoPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPW5ldyBmLHQ9LTEsZT1hcmd1bWVudHMubGVuZ3RoOysrdDxlOyluW2FyZ3VtZW50c1t0XV09aChuKTtyZXR1cm4gbn0sZi5wcm90b3R5cGUub249ZnVuY3Rpb24obix0KXt2YXIgZT1uLmluZGV4T2YoIi4iKSxyPSIiO2lmKGU+PTAmJihyPW4uc3Vic3RyaW5nKGUrMSksbj1uLnN1YnN0cmluZygwLGUpKSxuKXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpc1tuXS5vbihyKTp0aGlzW25dLm9uKHIsdCk7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKG51bGw9PXQpZm9yKG4gaW4gdGhpcyl0aGlzLmhhc093blByb3BlcnR5KG4pJiZ0aGlzW25dLm9uKHIsbnVsbCk7cmV0dXJuIHRoaXN9fSx5YS5ldmVudD1udWxsLHlhLnJlcXVvdGU9ZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZShDYSwiXFwkJiIpfTt2YXIgQ2E9L1tcXFxeXCRcKlwrXD9cfFxbXF1cKFwpXC5ce1x9XS9nLHphPXt9Ll9fcHJvdG9fXz9mdW5jdGlvbihuLHQpe24uX19wcm90b19fPXR9OmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlIGluIHQpbltlXT10W2VdfSxEYT1mdW5jdGlvbihuLHQpe3JldHVybiB0LnF1ZXJ5U2VsZWN0b3Iobil9LGphPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChuKX0sTGE9eGFbbyh4YSwibWF0Y2hlc1NlbGVjdG9yIildLEhhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIExhLmNhbGwobix0KX07ImZ1bmN0aW9uIj09dHlwZW9mIFNpenpsZSYmKERhPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFNpenpsZShuLHQpWzBdfHxudWxsfSxqYT1mdW5jdGlvbihuLHQpe3JldHVybiBTaXp6bGUudW5pcXVlU29ydChTaXp6bGUobix0KSl9LEhhPVNpenpsZS5tYXRjaGVzU2VsZWN0b3IpLHlhLnNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiBZYX07dmFyIEZhPXlhLnNlbGVjdGlvbi5wcm90b3R5cGU9W107RmEuc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0LGUscixpLHU9W107bj12KG4pO2Zvcih2YXIgYT0tMSxvPXRoaXMubGVuZ3RoOysrYTxvOyl7dS5wdXNoKHQ9W10pLHQucGFyZW50Tm9kZT0ocj10aGlzW2FdKS5wYXJlbnROb2RlO2Zvcih2YXIgYz0tMSxsPXIubGVuZ3RoOysrYzxsOykoaT1yW2NdKT8odC5wdXNoKGU9bi5jYWxsKGksaS5fX2RhdGFfXyxjKSksZSYmIl9fZGF0YV9fImluIGkmJihlLl9fZGF0YV9fPWkuX19kYXRhX18pKTp0LnB1c2gobnVsbCl9cmV0dXJuIG0odSl9LEZhLnNlbGVjdEFsbD1mdW5jdGlvbihuKXt2YXIgdCxlLHI9W107bj15KG4pO2Zvcih2YXIgaT0tMSx1PXRoaXMubGVuZ3RoOysraTx1Oylmb3IodmFyIGE9dGhpc1tpXSxvPS0xLGM9YS5sZW5ndGg7KytvPGM7KShlPWFbb10pJiYoci5wdXNoKHQ9cWEobi5jYWxsKGUsZS5fX2RhdGFfXyxvKSkpLHQucGFyZW50Tm9kZT1lKTtyZXR1cm4gbShyKX07dmFyIFBhPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIseGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC94bWxucy8ifTt5YS5ucz17cHJlZml4OlBhLHF1YWxpZnk6ZnVuY3Rpb24obil7dmFyIHQ9bi5pbmRleE9mKCI6IiksZT1uO3JldHVybiB0Pj0wJiYoZT1uLnN1YnN0cmluZygwLHQpLG49bi5zdWJzdHJpbmcodCsxKSksUGEuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOlBhW2VdLGxvY2FsOm59Om59fSxGYS5hdHRyPWZ1bmN0aW9uKG4sdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXtpZigic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBlPXRoaXMubm9kZSgpO3JldHVybiBuPXlhLm5zLnF1YWxpZnkobiksbi5sb2NhbD9lLmdldEF0dHJpYnV0ZU5TKG4uc3BhY2Usbi5sb2NhbCk6ZS5nZXRBdHRyaWJ1dGUobil9Zm9yKHQgaW4gbil0aGlzLmVhY2goTSh0LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKE0obix0KSl9LEZhLmNsYXNzZWQ9ZnVuY3Rpb24obix0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGU9dGhpcy5ub2RlKCkscj0obj1uLnRyaW0oKS5zcGxpdCgvXnxccysvZykpLmxlbmd0aCxpPS0xO2lmKHQ9ZS5jbGFzc0xpc3Qpe2Zvcig7KytpPHI7KWlmKCF0LmNvbnRhaW5zKG5baV0pKXJldHVybiExfWVsc2UgZm9yKHQ9ZS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7KytpPHI7KWlmKCFiKG5baV0pLnRlc3QodCkpcmV0dXJuITE7cmV0dXJuITB9Zm9yKHQgaW4gbil0aGlzLmVhY2goXyh0LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKF8obix0KSl9LEZhLnN0eWxlPWZ1bmN0aW9uKG4sdCxlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO2lmKDM+cil7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPnImJih0PSIiKTtmb3IoZSBpbiBuKXRoaXMuZWFjaChTKGUsbltlXSx0KSk7cmV0dXJuIHRoaXN9aWYoMj5yKXJldHVybiBiYS5nZXRDb21wdXRlZFN0eWxlKHRoaXMubm9kZSgpLG51bGwpLmdldFByb3BlcnR5VmFsdWUobik7ZT0iIn1yZXR1cm4gdGhpcy5lYWNoKFMobix0LGUpKX0sRmEucHJvcGVydHk9ZnVuY3Rpb24obix0KXtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gdGhpcy5ub2RlKClbbl07Zm9yKHQgaW4gbil0aGlzLmVhY2goRSh0LG5bdF0pKTtyZXR1cm4gdGhpc31yZXR1cm4gdGhpcy5lYWNoKEUobix0KSl9LEZhLnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKCl7dmFyIHQ9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy50ZXh0Q29udGVudD1udWxsPT10PyIiOnR9Om51bGw9PW4/ZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PSIifTpmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9bn0pOnRoaXMubm9kZSgpLnRleHRDb250ZW50fSxGYS5odG1sPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPW51bGw9PXQ/IiI6dH06bnVsbD09bj9mdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPSIifTpmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPW59KTp0aGlzLm5vZGUoKS5pbm5lckhUTUx9LEZhLmFwcGVuZD1mdW5jdGlvbihuKXtyZXR1cm4gbj1rKG4pLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9LEZhLmluc2VydD1mdW5jdGlvbihuLHQpe3JldHVybiBuPWsobiksdD12KHQpLHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxGYS5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5wYXJlbnROb2RlO24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9KX0sRmEuZGF0YT1mdW5jdGlvbihuLHQpe2Z1bmN0aW9uIGUobixlKXt2YXIgcix1LGEsbz1uLmxlbmd0aCxmPWUubGVuZ3RoLGg9TWF0aC5taW4obyxmKSxnPW5ldyBBcnJheShmKSxwPW5ldyBBcnJheShmKSxkPW5ldyBBcnJheShvKTtpZih0KXt2YXIgbSx2PW5ldyBpLHk9bmV3IGksTT1bXTtmb3Iocj0tMTsrK3I8bzspbT10LmNhbGwodT1uW3JdLHUuX19kYXRhX18sciksdi5oYXMobSk/ZFtyXT11OnYuc2V0KG0sdSksTS5wdXNoKG0pO2ZvcihyPS0xOysrcjxmOyltPXQuY2FsbChlLGE9ZVtyXSxyKSwodT12LmdldChtKSk/KGdbcl09dSx1Ll9fZGF0YV9fPWEpOnkuaGFzKG0pfHwocFtyXT1BKGEpKSx5LnNldChtLGEpLHYucmVtb3ZlKG0pO2ZvcihyPS0xOysrcjxvOyl2LmhhcyhNW3JdKSYmKGRbcl09bltyXSl9ZWxzZXtmb3Iocj0tMTsrK3I8aDspdT1uW3JdLGE9ZVtyXSx1Pyh1Ll9fZGF0YV9fPWEsZ1tyXT11KTpwW3JdPUEoYSk7Zm9yKDtmPnI7KytyKXBbcl09QShlW3JdKTtmb3IoO28+cjsrK3IpZFtyXT1uW3JdfXAudXBkYXRlPWcscC5wYXJlbnROb2RlPWcucGFyZW50Tm9kZT1kLnBhcmVudE5vZGU9bi5wYXJlbnROb2RlLGMucHVzaChwKSxsLnB1c2goZykscy5wdXNoKGQpfXZhciByLHUsYT0tMSxvPXRoaXMubGVuZ3RoO2lmKCFhcmd1bWVudHMubGVuZ3RoKXtmb3Iobj1uZXcgQXJyYXkobz0ocj10aGlzWzBdKS5sZW5ndGgpOysrYTxvOykodT1yW2FdKSYmKG5bYV09dS5fX2RhdGFfXyk7cmV0dXJuIG59dmFyIGM9QyhbXSksbD1tKFtdKSxzPW0oW10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKWZvcig7KythPG87KWUocj10aGlzW2FdLG4uY2FsbChyLHIucGFyZW50Tm9kZS5fX2RhdGFfXyxhKSk7ZWxzZSBmb3IoOysrYTxvOyllKHI9dGhpc1thXSxuKTtyZXR1cm4gbC5lbnRlcj1mdW5jdGlvbigpe3JldHVybiBjfSxsLmV4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gc30sbH0sRmEuZGF0dW09ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5wcm9wZXJ0eSgiX19kYXRhX18iLG4pOnRoaXMucHJvcGVydHkoIl9fZGF0YV9fIil9LEZhLmZpbHRlcj1mdW5jdGlvbihuKXt2YXIgdCxlLHIsaT1bXTsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49TihuKSk7Zm9yKHZhciB1PTAsYT10aGlzLmxlbmd0aDthPnU7dSsrKXtpLnB1c2godD1bXSksdC5wYXJlbnROb2RlPShlPXRoaXNbdV0pLnBhcmVudE5vZGU7Zm9yKHZhciBvPTAsYz1lLmxlbmd0aDtjPm87bysrKShyPWVbb10pJiZuLmNhbGwocixyLl9fZGF0YV9fLG8pJiZ0LnB1c2gocil9cmV0dXJuIG0oaSl9LEZhLm9yZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPS0xLHQ9dGhpcy5sZW5ndGg7KytuPHQ7KWZvcih2YXIgZSxyPXRoaXNbbl0saT1yLmxlbmd0aC0xLHU9cltpXTstLWk+PTA7KShlPXJbaV0pJiYodSYmdSE9PWUubmV4dFNpYmxpbmcmJnUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx1KSx1PWUpO3JldHVybiB0aGlzfSxGYS5zb3J0PWZ1bmN0aW9uKG4pe249cS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKHZhciB0PS0xLGU9dGhpcy5sZW5ndGg7Kyt0PGU7KXRoaXNbdF0uc29ydChuKTtyZXR1cm4gdGhpcy5vcmRlcigpfSxGYS5lYWNoPWZ1bmN0aW9uKG4pe3JldHVybiBUKHRoaXMsZnVuY3Rpb24odCxlLHIpe24uY2FsbCh0LHQuX19kYXRhX18sZSxyKX0pfSxGYS5jYWxsPWZ1bmN0aW9uKG4pe3ZhciB0PXFhKGFyZ3VtZW50cyk7cmV0dXJuIG4uYXBwbHkodFswXT10aGlzLHQpLHRoaXN9LEZhLmVtcHR5PWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxGYS5ub2RlPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTAsdD10aGlzLmxlbmd0aDt0Pm47bisrKWZvcih2YXIgZT10aGlzW25dLHI9MCxpPWUubGVuZ3RoO2k+cjtyKyspe3ZhciB1PWVbcl07aWYodSlyZXR1cm4gdX1yZXR1cm4gbnVsbH0sRmEuc2l6ZT1mdW5jdGlvbigpe3ZhciBuPTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrbn0pLG59O3ZhciBPYT1bXTt5YS5zZWxlY3Rpb24uZW50ZXI9Qyx5YS5zZWxlY3Rpb24uZW50ZXIucHJvdG90eXBlPU9hLE9hLmFwcGVuZD1GYS5hcHBlbmQsT2EuaW5zZXJ0PUZhLmluc2VydCxPYS5lbXB0eT1GYS5lbXB0eSxPYS5ub2RlPUZhLm5vZGUsT2EuY2FsbD1GYS5jYWxsLE9hLnNpemU9RmEuc2l6ZSxPYS5zZWxlY3Q9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscixpLHUsYT1bXSxvPS0xLGM9dGhpcy5sZW5ndGg7KytvPGM7KXtyPShpPXRoaXNbb10pLnVwZGF0ZSxhLnB1c2godD1bXSksdC5wYXJlbnROb2RlPWkucGFyZW50Tm9kZTtmb3IodmFyIGw9LTEscz1pLmxlbmd0aDsrK2w8czspKHU9aVtsXSk/KHQucHVzaChyW2xdPWU9bi5jYWxsKGkucGFyZW50Tm9kZSx1Ll9fZGF0YV9fLGwpKSxlLl9fZGF0YV9fPXUuX19kYXRhX18pOnQucHVzaChudWxsKX1yZXR1cm4gbShhKX0sRmEudHJhbnNpdGlvbj1mdW5jdGlvbigpe3ZhciBuLHQsZT1xY3x8KytEYyxyPVtdLGk9T2JqZWN0LmNyZWF0ZShqYyk7aS50aW1lPURhdGUubm93KCk7Zm9yKHZhciB1PS0xLGE9dGhpcy5sZW5ndGg7Kyt1PGE7KXtyLnB1c2gobj1bXSk7Zm9yKHZhciBvPXRoaXNbdV0sYz0tMSxsPW8ubGVuZ3RoOysrYzxsOykodD1vW2NdKSYmTnUodCxjLGUsaSksbi5wdXNoKHQpfXJldHVybiBFdShyLGUpfSx5YS5zZWxlY3Q9ZnVuY3Rpb24obil7dmFyIHQ9WyJzdHJpbmciPT10eXBlb2Ygbj9EYShuLE1hKTpuXTtyZXR1cm4gdC5wYXJlbnROb2RlPXhhLG0oW3RdKX0seWEuc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0PXFhKCJzdHJpbmciPT10eXBlb2Ygbj9qYShuLE1hKTpuKTtyZXR1cm4gdC5wYXJlbnROb2RlPXhhLG0oW3RdKX07dmFyIFlhPXlhLnNlbGVjdCh4YSk7RmEub249ZnVuY3Rpb24obix0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7aWYoMz5yKXtpZigic3RyaW5nIiE9dHlwZW9mIG4pezI+ciYmKHQ9ITEpO2ZvcihlIGluIG4pdGhpcy5lYWNoKHooZSxuW2VdLHQpKTtyZXR1cm4gdGhpc31pZigyPnIpcmV0dXJuKHI9dGhpcy5ub2RlKClbIl9fb24iK25dKSYmci5fO2U9ITF9cmV0dXJuIHRoaXMuZWFjaCh6KG4sdCxlKSl9O3ZhciBSYT15YS5tYXAoe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQifSk7UmEuZm9yRWFjaChmdW5jdGlvbihuKXsib24iK24gaW4gTWEmJlJhLnJlbW92ZShuKX0pO3ZhciBVYT1vKHhhLnN0eWxlLCJ1c2VyU2VsZWN0Iik7eWEubW91c2U9ZnVuY3Rpb24obil7cmV0dXJuIEgobixwKCkpfTt2YXIgSWE9L1dlYktpdC8udGVzdChiYS5uYXZpZ2F0b3IudXNlckFnZW50KT8tMTowO3lhLnRvdWNoZXM9ZnVuY3Rpb24obix0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyJiYodD1wKCkudG91Y2hlcyksdD9xYSh0KS5tYXAoZnVuY3Rpb24odCl7dmFyIGU9SChuLHQpO3JldHVybiBlLmlkZW50aWZpZXI9dC5pZGVudGlmaWVyLGV9KTpbXX0seWEuYmVoYXZpb3IuZHJhZz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzLm9uKCJtb3VzZWRvd24uZHJhZyIsdCkub24oInRvdWNoc3RhcnQuZHJhZyIsdCl9ZnVuY3Rpb24gdCgpe2Z1bmN0aW9uIG4oKXt2YXIgbj1hLnBhcmVudE5vZGU7cmV0dXJuIG51bGwhPWw/eWEudG91Y2hlcyhuKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIG4uaWRlbnRpZmllcj09PWx9KVswXTp5YS5tb3VzZShuKX1mdW5jdGlvbiB0KCl7aWYoIWEucGFyZW50Tm9kZSlyZXR1cm4gaSgpO3ZhciB0PW4oKSxlPXRbMF0tc1swXSxyPXRbMV0tc1sxXTtmfD1lfHIscz10LG8oe3R5cGU6ImRyYWciLHg6dFswXSt1WzBdLHk6dFsxXSt1WzFdLGR4OmUsZHk6cn0pfWZ1bmN0aW9uIGkoKXtnLm9uKG51bGwhPWw/InRvdWNobW92ZS5kcmFnLSIrbDoibW91c2Vtb3ZlLmRyYWciLG51bGwpLm9uKG51bGwhPWw/InRvdWNoZW5kLmRyYWctIitsOiJtb3VzZXVwLmRyYWciLG51bGwpLGgoZiYmeWEuZXZlbnQudGFyZ2V0PT09Yyksbyh7dHlwZToiZHJhZ2VuZCJ9KX12YXIgdSxhPXRoaXMsbz1lLm9mKGEsYXJndW1lbnRzKSxjPXlhLmV2ZW50LnRhcmdldCxsPXlhLmV2ZW50LnRvdWNoZXM/eWEuZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmllcjpudWxsLHM9bigpLGY9MCxoPUwobnVsbCE9bD8iZHJhZy0iK2w6ImRyYWciKSxnPXlhLnNlbGVjdChiYSkub24obnVsbCE9bD8idG91Y2htb3ZlLmRyYWctIitsOiJtb3VzZW1vdmUuZHJhZyIsdCkub24obnVsbCE9bD8idG91Y2hlbmQuZHJhZy0iK2w6Im1vdXNldXAuZHJhZyIsaSwhMCk7cj8odT1yLmFwcGx5KGEsYXJndW1lbnRzKSx1PVt1Lngtc1swXSx1Lnktc1sxXV0pOnU9WzAsMF0sbyh7dHlwZToiZHJhZ3N0YXJ0In0pfXZhciBlPWQobiwiZHJhZyIsImRyYWdzdGFydCIsImRyYWdlbmQiKSxyPW51bGw7cmV0dXJuIG4ub3JpZ2luPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXQsbik6cn0seWEucmViaW5kKG4sZSwib24iKX0seWEuYmVoYXZpb3Iuem9vbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt0aGlzLm9uKCJtb3VzZWRvd24uem9vbSIsbykub24oIm1vdXNlbW92ZS56b29tIixsKS5vbihaYSsiLnpvb20iLGMpLm9uKCJkYmxjbGljay56b29tIixzKS5vbigidG91Y2hzdGFydC56b29tIixmKS5vbigidG91Y2htb3ZlLnpvb20iLGgpLm9uKCJ0b3VjaGVuZC56b29tIixmKX1mdW5jdGlvbiB0KG4pe3JldHVyblsoblswXS1fWzBdKS93LChuWzFdLV9bMV0pL3ddfWZ1bmN0aW9uIGUobil7cmV0dXJuW25bMF0qdytfWzBdLG5bMV0qdytfWzFdXX1mdW5jdGlvbiByKG4pe3c9TWF0aC5tYXgoU1swXSxNYXRoLm1pbihTWzFdLG4pKX1mdW5jdGlvbiBpKG4sdCl7dD1lKHQpLF9bMF0rPW5bMF0tdFswXSxfWzFdKz1uWzFdLXRbMV19ZnVuY3Rpb24gdSgpe3kmJnkuZG9tYWluKHYucmFuZ2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tX1swXSkvd30pLm1hcCh2LmludmVydCkpLHgmJnguZG9tYWluKE0ucmFuZ2UoKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuKG4tX1sxXSkvd30pLm1hcChNLmludmVydCkpfWZ1bmN0aW9uIGEobil7dSgpLHlhLmV2ZW50LnByZXZlbnREZWZhdWx0KCksbih7dHlwZToiem9vbSIsc2NhbGU6dyx0cmFuc2xhdGU6X30pfWZ1bmN0aW9uIG8oKXtmdW5jdGlvbiBuKCl7Yz0xLGkoeWEubW91c2UocikscyksYSh1KX1mdW5jdGlvbiBlKCl7bC5vbigibW91c2Vtb3ZlLnpvb20iLG51bGwpLm9uKCJtb3VzZXVwLnpvb20iLG51bGwpLGYoYyYmeWEuZXZlbnQudGFyZ2V0PT09byl9dmFyIHI9dGhpcyx1PUUub2Yocixhcmd1bWVudHMpLG89eWEuZXZlbnQudGFyZ2V0LGM9MCxsPXlhLnNlbGVjdChiYSkub24oIm1vdXNlbW92ZS56b29tIixuKS5vbigibW91c2V1cC56b29tIixlKSxzPXQoeWEubW91c2UocikpLGY9TCgiem9vbSIpfWZ1bmN0aW9uIGMoKXtnfHwoZz10KHlhLm1vdXNlKHRoaXMpKSkscihNYXRoLnBvdygyLC4wMDIqVmEoKSkqdyksaSh5YS5tb3VzZSh0aGlzKSxnKSxhKEUub2YodGhpcyxhcmd1bWVudHMpKX1mdW5jdGlvbiBsKCl7Zz1udWxsfWZ1bmN0aW9uIHMoKXt2YXIgbj15YS5tb3VzZSh0aGlzKSxlPXQobiksdT1NYXRoLmxvZyh3KS9NYXRoLkxOMjtyKE1hdGgucG93KDIseWEuZXZlbnQuc2hpZnRLZXk/TWF0aC5jZWlsKHUpLTE6TWF0aC5mbG9vcih1KSsxKSksaShuLGUpLGEoRS5vZih0aGlzLGFyZ3VtZW50cykpfWZ1bmN0aW9uIGYoKXt2YXIgbj15YS50b3VjaGVzKHRoaXMpLGU9RGF0ZS5ub3coKTtpZihtPXcsZz17fSxwPTAsbi5mb3JFYWNoKGZ1bmN0aW9uKG4pe2dbbi5pZGVudGlmaWVyXT10KG4pfSksMT09PW4ubGVuZ3RoKXtpZig1MDA+ZS1iKXt2YXIgdT1uWzBdLG89dChuWzBdKTtyKDIqdyksaSh1LG8pLGEoRS5vZih0aGlzLGFyZ3VtZW50cykpfWI9ZX1lbHNlIGlmKG4ubGVuZ3RoPjEpe3ZhciB1PW5bMF0sYz1uWzFdLGw9dVswXS1jWzBdLHM9dVsxXS1jWzFdO3A9bCpsK3Mqc319ZnVuY3Rpb24gaCgpe3ZhciBuPXlhLnRvdWNoZXModGhpcyksdD1uWzBdLGU9Z1t0LmlkZW50aWZpZXJdO2lmKHU9blsxXSl7dmFyIHUsbz1nW3UuaWRlbnRpZmllcl0sYz15YS5ldmVudC5zY2FsZTtpZihudWxsPT1jKXt2YXIgbD0obD11WzBdLXRbMF0pKmwrKGw9dVsxXS10WzFdKSpsO2M9cCYmTWF0aC5zcXJ0KGwvcCl9dD1bKHRbMF0rdVswXSkvMiwodFsxXSt1WzFdKS8yXSxlPVsoZVswXStvWzBdKS8yLChlWzFdK29bMV0pLzJdLHIoYyptKX1pKHQsZSksYj1udWxsLGEoRS5vZih0aGlzLGFyZ3VtZW50cykpfXZhciBnLHAsbSx2LHksTSx4LGIsXz1bMCwwXSx3PTEsUz1YYSxFPWQobiwiem9vbSIpO3JldHVybiBuLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz10Lm1hcChOdW1iZXIpLHUoKSxuKTpffSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PSt0LHUoKSxuKTp3fSxuLnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPW51bGw9PXQ/WGE6dC5tYXAoTnVtYmVyKSxuKTpTfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9dCx2PXQuY29weSgpLF89WzAsMF0sdz0xLG4pOnl9LG4ueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD10LE09dC5jb3B5KCksXz1bMCwwXSx3PTEsbik6eH0seWEucmViaW5kKG4sRSwib24iKX07dmFyIFZhLFhhPVswLDEvMF0sWmE9Im9ud2hlZWwiaW4gTWE/KFZhPWZ1bmN0aW9uKCl7cmV0dXJuLXlhLmV2ZW50LmRlbHRhWSooeWEuZXZlbnQuZGVsdGFNb2RlPzEyMDoxKX0sIndoZWVsIik6Im9ubW91c2V3aGVlbCJpbiBNYT8oVmE9ZnVuY3Rpb24oKXtyZXR1cm4geWEuZXZlbnQud2hlZWxEZWx0YX0sIm1vdXNld2hlZWwiKTooVmE9ZnVuY3Rpb24oKXtyZXR1cm4teWEuZXZlbnQuZGV0YWlsfSwiTW96TW91c2VQaXhlbFNjcm9sbCIpO0YucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkrIiJ9LHlhLmhzbD1mdW5jdGlvbihuLHQsZSl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP24gaW5zdGFuY2VvZiBPP1Aobi5oLG4ucyxuLmwpOmF0KCIiK24sb3QsUCk6UCgrbiwrdCwrZSl9O3ZhciBCYT1PLnByb3RvdHlwZT1uZXcgRjtCYS5icmlnaHRlcj1mdW5jdGlvbihuKXtyZXR1cm4gbj1NYXRoLnBvdyguNyxhcmd1bWVudHMubGVuZ3RoP246MSksUCh0aGlzLmgsdGhpcy5zLHRoaXMubC9uKX0sQmEuZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxQKHRoaXMuaCx0aGlzLnMsbip0aGlzLmwpfSxCYS5yZ2I9ZnVuY3Rpb24oKXtyZXR1cm4gWSh0aGlzLmgsdGhpcy5zLHRoaXMubCl9O3ZhciAkYT1NYXRoLlBJLFdhPTFlLTYsSmE9V2EqV2EsR2E9JGEvMTgwLEthPTE4MC8kYTt5YS5oY2w9ZnVuY3Rpb24obix0LGUpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9uIGluc3RhbmNlb2YgJD9CKG4uaCxuLmMsbi5sKTpuIGluc3RhbmNlb2YgRz9RKG4ubCxuLmEsbi5iKTpRKChuPWN0KChuPXlhLnJnYihuKSkucixuLmcsbi5iKSkubCxuLmEsbi5iKTpCKCtuLCt0LCtlKX07dmFyIFFhPSQucHJvdG90eXBlPW5ldyBGO1FhLmJyaWdodGVyPWZ1bmN0aW9uKG4pe3JldHVybiBCKHRoaXMuaCx0aGlzLmMsTWF0aC5taW4oMTAwLHRoaXMubCtubyooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSl9LFFhLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gQih0aGlzLmgsdGhpcy5jLE1hdGgubWF4KDAsdGhpcy5sLW5vKihhcmd1bWVudHMubGVuZ3RoP246MSkpKX0sUWEucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIFcodGhpcy5oLHRoaXMuYyx0aGlzLmwpLnJnYigpfSx5YS5sYWI9ZnVuY3Rpb24obix0LGUpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9uIGluc3RhbmNlb2YgRz9KKG4ubCxuLmEsbi5iKTpuIGluc3RhbmNlb2YgJD9XKG4ubCxuLmMsbi5oKTpjdCgobj15YS5yZ2IobikpLnIsbi5nLG4uYik6SigrbiwrdCwrZSl9O3ZhciBubz0xOCx0bz0uOTUwNDcsZW89MSxybz0xLjA4ODgzLGlvPUcucHJvdG90eXBlPW5ldyBGO2lvLmJyaWdodGVyPWZ1bmN0aW9uKG4pe3JldHVybiBKKE1hdGgubWluKDEwMCx0aGlzLmwrbm8qKGFyZ3VtZW50cy5sZW5ndGg/bjoxKSksdGhpcy5hLHRoaXMuYil9LGlvLmRhcmtlcj1mdW5jdGlvbihuKXtyZXR1cm4gSihNYXRoLm1heCgwLHRoaXMubC1ubyooYXJndW1lbnRzLmxlbmd0aD9uOjEpKSx0aGlzLmEsdGhpcy5iKX0saW8ucmdiPWZ1bmN0aW9uKCl7cmV0dXJuIEsodGhpcy5sLHRoaXMuYSx0aGlzLmIpfSx5YS5yZ2I9ZnVuY3Rpb24obix0LGUpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9uIGluc3RhbmNlb2YgaXQ/cnQobi5yLG4uZyxuLmIpOmF0KCIiK24scnQsWSk6cnQofn5uLH5+dCx+fmUpfTt2YXIgdW89aXQucHJvdG90eXBlPW5ldyBGO3VvLmJyaWdodGVyPWZ1bmN0aW9uKG4pe249TWF0aC5wb3coLjcsYXJndW1lbnRzLmxlbmd0aD9uOjEpO3ZhciB0PXRoaXMucixlPXRoaXMuZyxyPXRoaXMuYixpPTMwO3JldHVybiB0fHxlfHxyPyh0JiZpPnQmJih0PWkpLGUmJmk+ZSYmKGU9aSksciYmaT5yJiYocj1pKSxydChNYXRoLm1pbigyNTUsTWF0aC5mbG9vcih0L24pKSxNYXRoLm1pbigyNTUsTWF0aC5mbG9vcihlL24pKSxNYXRoLm1pbigyNTUsTWF0aC5mbG9vcihyL24pKSkpOnJ0KGksaSxpKX0sdW8uZGFya2VyPWZ1bmN0aW9uKG4pe3JldHVybiBuPU1hdGgucG93KC43LGFyZ3VtZW50cy5sZW5ndGg/bjoxKSxydChNYXRoLmZsb29yKG4qdGhpcy5yKSxNYXRoLmZsb29yKG4qdGhpcy5nKSxNYXRoLmZsb29yKG4qdGhpcy5iKSl9LHVvLmhzbD1mdW5jdGlvbigpe3JldHVybiBvdCh0aGlzLnIsdGhpcy5nLHRoaXMuYil9LHVvLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiMiK3V0KHRoaXMucikrdXQodGhpcy5nKSt1dCh0aGlzLmIpfTt2YXIgYW89eWEubWFwKHthbGljZWJsdWU6IiNmMGY4ZmYiLGFudGlxdWV3aGl0ZToiI2ZhZWJkNyIsYXF1YToiIzAwZmZmZiIsYXF1YW1hcmluZToiIzdmZmZkNCIsYXp1cmU6IiNmMGZmZmYiLGJlaWdlOiIjZjVmNWRjIixiaXNxdWU6IiNmZmU0YzQiLGJsYWNrOiIjMDAwMDAwIixibGFuY2hlZGFsbW9uZDoiI2ZmZWJjZCIsYmx1ZToiIzAwMDBmZiIsYmx1ZXZpb2xldDoiIzhhMmJlMiIsYnJvd246IiNhNTJhMmEiLGJ1cmx5d29vZDoiI2RlYjg4NyIsY2FkZXRibHVlOiIjNWY5ZWEwIixjaGFydHJldXNlOiIjN2ZmZjAwIixjaG9jb2xhdGU6IiNkMjY5MWUiLGNvcmFsOiIjZmY3ZjUwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVlZCIsY29ybnNpbGs6IiNmZmY4ZGMiLGNyaW1zb246IiNkYzE0M2MiLGN5YW46IiMwMGZmZmYiLGRhcmtibHVlOiIjMDAwMDhiIixkYXJrY3lhbjoiIzAwOGI4YiIsZGFya2dvbGRlbnJvZDoiI2I4ODYwYiIsZGFya2dyYXk6IiNhOWE5YTkiLGRhcmtncmVlbjoiIzAwNjQwMCIsZGFya2dyZXk6IiNhOWE5YTkiLGRhcmtraGFraToiI2JkYjc2YiIsZGFya21hZ2VudGE6IiM4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2YjJmIixkYXJrb3JhbmdlOiIjZmY4YzAwIixkYXJrb3JjaGlkOiIjOTkzMmNjIixkYXJrcmVkOiIjOGIwMDAwIixkYXJrc2FsbW9uOiIjZTk5NjdhIixkYXJrc2VhZ3JlZW46IiM4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IiM0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IiMyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IiMyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IiMwMGNlZDEiLGRhcmt2aW9sZXQ6IiM5NDAwZDMiLGRlZXBwaW5rOiIjZmYxNDkzIixkZWVwc2t5Ymx1ZToiIzAwYmZmZiIsZGltZ3JheToiIzY5Njk2OSIsZGltZ3JleToiIzY5Njk2OSIsZG9kZ2VyYmx1ZToiIzFlOTBmZiIsZmlyZWJyaWNrOiIjYjIyMjIyIixmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGdyZXk6IiM4MDgwODAiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmF5OiIjZDNkM2QzIixsaWdodGdyZWVuOiIjOTBlZTkwIixsaWdodGdyZXk6IiNkM2QzZDMiLGxpZ2h0cGluazoiI2ZmYjZjMSIsbGlnaHRzYWxtb246IiNmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IiMyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiIzg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c2xhdGVncmV5OiIjNzc4ODk5IixsaWdodHN0ZWVsYmx1ZToiI2IwYzRkZSIsbGlnaHR5ZWxsb3c6IiNmZmZmZTAiLGxpbWU6IiMwMGZmMDAiLGxpbWVncmVlbjoiIzMyY2QzMiIsbGluZW46IiNmYWYwZTYiLG1hZ2VudGE6IiNmZjAwZmYiLG1hcm9vbjoiIzgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Y2RhYSIsbWVkaXVtYmx1ZToiIzAwMDBjZCIsbWVkaXVtb3JjaGlkOiIjYmE1NWQzIixtZWRpdW1wdXJwbGU6IiM5MzcwZGIiLG1lZGl1bXNlYWdyZWVuOiIjM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IiM3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IiM0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiI2M3MTU4NSIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixtaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkYjcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIixzYW5keWJyb3duOiIjZjRhNDYwIixzZWFncmVlbjoiIzJlOGI1NyIsc2Vhc2hlbGw6IiNmZmY1ZWUiLHNpZW5uYToiI2EwNTIyZCIsc2lsdmVyOiIjYzBjMGMwIixza3libHVlOiIjODdjZWViIixzbGF0ZWJsdWU6IiM2YTVhY2QiLHNsYXRlZ3JheToiIzcwODA5MCIsc2xhdGVncmV5OiIjNzA4MDkwIixzbm93OiIjZmZmYWZhIixzcHJpbmdncmVlbjoiIzAwZmY3ZiIsc3RlZWxibHVlOiIjNDY4MmI0Iix0YW46IiNkMmI0OGMiLHRlYWw6IiMwMDgwODAiLHRoaXN0bGU6IiNkOGJmZDgiLHRvbWF0bzoiI2ZmNjM0NyIsdHVycXVvaXNlOiIjNDBlMGQwIix2aW9sZXQ6IiNlZTgyZWUiLHdoZWF0OiIjZjVkZWIzIix3aGl0ZToiI2ZmZmZmZiIsd2hpdGVzbW9rZToiI2Y1ZjVmNSIseWVsbG93OiIjZmZmZjAwIix5ZWxsb3dncmVlbjoiIzlhY2QzMiJ9KTthby5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7YW8uc2V0KG4sYXQodCxydCxZKSl9KSx5YS5mdW5jdG9yPWZ0LHlhLnhocj1ndChodCkseWEuZHN2PWZ1bmN0aW9uKG4sdCl7ZnVuY3Rpb24gZShuLGUsdSl7YXJndW1lbnRzLmxlbmd0aDwzJiYodT1lLGU9bnVsbCk7dmFyIGE9eWEueGhyKG4sdCx1KTtyZXR1cm4gYS5yb3c9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/YS5yZXNwb25zZShudWxsPT0oZT1uKT9yOmkobikpOmV9LGEucm93KGUpfWZ1bmN0aW9uIHIobil7cmV0dXJuIGUucGFyc2Uobi5yZXNwb25zZVRleHQpfWZ1bmN0aW9uIGkobil7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLnBhcnNlKHQucmVzcG9uc2VUZXh0LG4pfX1mdW5jdGlvbiBhKHQpe3JldHVybiB0Lm1hcChvKS5qb2luKG4pfWZ1bmN0aW9uIG8obil7cmV0dXJuIGMudGVzdChuKT8nIicrbi5yZXBsYWNlKC9cIi9nLCciIicpKyciJzpufXZhciBjPW5ldyBSZWdFeHAoJ1siJytuKyJcbl0iKSxsPW4uY2hhckNvZGVBdCgwKTtyZXR1cm4gZS5wYXJzZT1mdW5jdGlvbihuLHQpe3ZhciByO3JldHVybiBlLnBhcnNlUm93cyhuLGZ1bmN0aW9uKG4sZSl7aWYocilyZXR1cm4gcihuLGUtMSk7dmFyIGk9bmV3IEZ1bmN0aW9uKCJkIiwicmV0dXJuIHsiK24ubWFwKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KG4pKyI6IGRbIit0KyJdIn0pLmpvaW4oIiwiKSsifSIpO3I9dD9mdW5jdGlvbihuLGUpe3JldHVybiB0KGkobiksZSl9Oml9KX0sZS5wYXJzZVJvd3M9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKCl7aWYocz49YylyZXR1cm4gYTtpZihpKXJldHVybiBpPSExLHU7dmFyIHQ9cztpZigzND09PW4uY2hhckNvZGVBdCh0KSl7Zm9yKHZhciBlPXQ7ZSsrPGM7KWlmKDM0PT09bi5jaGFyQ29kZUF0KGUpKXtpZigzNCE9PW4uY2hhckNvZGVBdChlKzEpKWJyZWFrOysrZX1zPWUrMjt2YXIgcj1uLmNoYXJDb2RlQXQoZSsxKTtyZXR1cm4gMTM9PT1yPyhpPSEwLDEwPT09bi5jaGFyQ29kZUF0KGUrMikmJisrcyk6MTA9PT1yJiYoaT0hMCksbi5zdWJzdHJpbmcodCsxLGUpLnJlcGxhY2UoLyIiL2csJyInKX1mb3IoO2M+czspe3ZhciByPW4uY2hhckNvZGVBdChzKyspLG89MTtpZigxMD09PXIpaT0hMDtlbHNlIGlmKDEzPT09cilpPSEwLDEwPT09bi5jaGFyQ29kZUF0KHMpJiYoKytzLCsrbyk7ZWxzZSBpZihyIT09bCljb250aW51ZTtyZXR1cm4gbi5zdWJzdHJpbmcodCxzLW8pfXJldHVybiBuLnN1YnN0cmluZyh0KX1mb3IodmFyIHIsaSx1PXt9LGE9e30sbz1bXSxjPW4ubGVuZ3RoLHM9MCxmPTA7KHI9ZSgpKSE9PWE7KXtmb3IodmFyIGg9W107ciE9PXUmJnIhPT1hOyloLnB1c2gocikscj1lKCk7KCF0fHwoaD10KGgsZisrKSkpJiZvLnB1c2goaCl9cmV0dXJuIG99LGUuZm9ybWF0PWZ1bmN0aW9uKHQpe2lmKEFycmF5LmlzQXJyYXkodFswXSkpcmV0dXJuIGUuZm9ybWF0Um93cyh0KTt2YXIgcj1uZXcgdSxpPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciB0IGluIG4pci5oYXModCl8fGkucHVzaChyLmFkZCh0KSl9KSxbaS5tYXAobykuam9pbihuKV0uY29uY2F0KHQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbyh0W25dKX0pLmpvaW4obil9KSkuam9pbigiXG4iKX0sZS5mb3JtYXRSb3dzPWZ1bmN0aW9uKG4pe3JldHVybiBuLm1hcChhKS5qb2luKCJcbiIpfSxlfSx5YS5jc3Y9eWEuZHN2KCIsIiwidGV4dC9jc3YiKSx5YS50c3Y9eWEuZHN2KCIJIiwidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpO3ZhciBvbyxjbyxsbyxzbzt5YS50aW1lcj1mdW5jdGlvbihuLHQsZSl7aWYoYXJndW1lbnRzLmxlbmd0aDwzKXtpZihhcmd1bWVudHMubGVuZ3RoPDIpdD0wO2Vsc2UgaWYoIWlzRmluaXRlKHQpKXJldHVybjtlPURhdGUubm93KCl9dmFyIHI9ZSt0LGk9e2NhbGxiYWNrOm4sdGltZTpyLG5leHQ6bnVsbH07Y28/Y28ubmV4dD1pOm9vPWksY289aSxsb3x8KHNvPWNsZWFyVGltZW91dChzbyksbG89MSxmbyhtdCkpfSx5YS50aW1lci5mbHVzaD1mdW5jdGlvbigpe3Z0KCkseXQoKX07dmFyIGZvPWJhW28oYmEsInJlcXVlc3RBbmltYXRpb25GcmFtZSIpXXx8ZnVuY3Rpb24obil7c2V0VGltZW91dChuLDE3KX0saG89Ii4iLGdvPSIsIixwbz1bMywzXSxtbz1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl0ubWFwKE10KTt5YS5mb3JtYXRQcmVmaXg9ZnVuY3Rpb24obix0KXt2YXIgZT0wO3JldHVybiBuJiYoMD5uJiYobio9LTEpLHQmJihuPXlhLnJvdW5kKG4seHQobix0KSkpLGU9MStNYXRoLmZsb29yKDFlLTEyK01hdGgubG9nKG4pL01hdGguTE4xMCksZT1NYXRoLm1heCgtMjQsTWF0aC5taW4oMjQsMypNYXRoLmZsb29yKCgwPj1lP2UrMTplLTEpLzMpKSkpLG1vWzgrZS8zXX0seWEucm91bmQ9ZnVuY3Rpb24obix0KXtyZXR1cm4gdD9NYXRoLnJvdW5kKG4qKHQ9TWF0aC5wb3coMTAsdCkpKS90Ok1hdGgucm91bmQobil9LHlhLmZvcm1hdD1mdW5jdGlvbihuKXt2YXIgdD12by5leGVjKG4pLGU9dFsxXXx8IiAiLHI9dFsyXXx8Ij4iLGk9dFszXXx8IiIsdT10WzRdfHwiIixhPXRbNV0sbz0rdFs2XSxjPXRbN10sbD10WzhdLHM9dFs5XSxmPTEsaD0iIixnPSExO3N3aXRjaChsJiYobD0rbC5zdWJzdHJpbmcoMSkpLChhfHwiMCI9PT1lJiYiPSI9PT1yKSYmKGE9ZT0iMCIscj0iPSIsYyYmKG8tPU1hdGguZmxvb3IoKG8tMSkvNCkpKSxzKXtjYXNlIm4iOmM9ITAscz0iZyI7YnJlYWs7Y2FzZSIlIjpmPTEwMCxoPSIlIixzPSJmIjticmVhaztjYXNlInAiOmY9MTAwLGg9IiUiLHM9InIiO2JyZWFrO2Nhc2UiYiI6Y2FzZSJvIjpjYXNlIngiOmNhc2UiWCI6dSYmKHU9IjAiK3MudG9Mb3dlckNhc2UoKSk7Y2FzZSJjIjpjYXNlImQiOmc9ITAsbD0wO2JyZWFrO2Nhc2UicyI6Zj0tMSxzPSJyIn0iIyI9PT11JiYodT0iIiksInIiIT1zfHxsfHwocz0iZyIpLG51bGwhPWwmJigiZyI9PXM/bD1NYXRoLm1heCgxLE1hdGgubWluKDIxLGwpKTooImUiPT1zfHwiZiI9PXMpJiYobD1NYXRoLm1heCgwLE1hdGgubWluKDIwLGwpKSkpLHM9eW8uZ2V0KHMpfHxidDt2YXIgcD1hJiZjO3JldHVybiBmdW5jdGlvbihuKXtpZihnJiZuJTEpcmV0dXJuIiI7dmFyIHQ9MD5ufHwwPT09biYmMD4xL24/KG49LW4sIi0iKTppO2lmKDA+Zil7dmFyIGQ9eWEuZm9ybWF0UHJlZml4KG4sbCk7bj1kLnNjYWxlKG4pLGg9ZC5zeW1ib2x9ZWxzZSBuKj1mO249cyhuLGwpLCFhJiZjJiYobj1NbyhuKSk7dmFyIG09dS5sZW5ndGgrbi5sZW5ndGgrKHA/MDp0Lmxlbmd0aCksdj1vPm0/bmV3IEFycmF5KG09by1tKzEpLmpvaW4oZSk6IiI7cmV0dXJuIHAmJihuPU1vKHYrbikpLGhvJiZuLnJlcGxhY2UoIi4iLGhvKSx0Kz11LCgiPCI9PT1yP3Qrbit2OiI+Ij09PXI/dit0K246Il4iPT09cj92LnN1YnN0cmluZygwLG0+Pj0xKSt0K24rdi5zdWJzdHJpbmcobSk6dCsocD9uOnYrbikpK2h9fTt2YXIgdm89Lyg/OihbXntdKT8oWzw+PV5dKSk/KFsrXC0gXSk/KCMpPygwKT8oXGQrKT8oLCk/KFwuLT9cZCspPyhbYS16JV0pPy9pLHlvPXlhLm1hcCh7YjpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygyKX0sYzpmdW5jdGlvbihuKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShuKX0sbzpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZyg4KX0seDpmdW5jdGlvbihuKXtyZXR1cm4gbi50b1N0cmluZygxNil9LFg6ZnVuY3Rpb24obil7cmV0dXJuIG4udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9LGc6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b1ByZWNpc2lvbih0KX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBuLnRvRXhwb25lbnRpYWwodCl9LGY6ZnVuY3Rpb24obix0KXtyZXR1cm4gbi50b0ZpeGVkKHQpfSxyOmZ1bmN0aW9uKG4sdCl7cmV0dXJuKG49eWEucm91bmQobix4dChuLHQpKSkudG9GaXhlZChNYXRoLm1heCgwLE1hdGgubWluKDIwLHh0KG4qKDErMWUtMTUpLHQpKSkpfX0pLE1vPWh0O2lmKHBvKXt2YXIgeG89cG8ubGVuZ3RoO01vPWZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1uLmxhc3RJbmRleE9mKCIuIiksZT10Pj0wPyIuIituLnN1YnN0cmluZyh0KzEpOih0PW4ubGVuZ3RoLCIiKSxyPVtdLGk9MCx1PXBvWzBdO3Q+MCYmdT4wOylyLnB1c2gobi5zdWJzdHJpbmcodC09dSx0K3UpKSx1PXBvW2k9KGkrMSkleG9dO3JldHVybiByLnJldmVyc2UoKS5qb2luKGdvfHwiIikrZX19eWEuZ2VvPXt9LF90LnByb3RvdHlwZT17czowLHQ6MCxhZGQ6ZnVuY3Rpb24obil7d3Qobix0aGlzLnQsYm8pLHd0KGJvLnMsdGhpcy5zLHRoaXMpLHRoaXMucz90aGlzLnQrPWJvLnQ6dGhpcy5zPWJvLnR9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSx2YWx1ZU9mOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc319O3ZhciBibz1uZXcgX3Q7eWEuZ2VvLnN0cmVhbT1mdW5jdGlvbihuLHQpe24mJl9vLmhhc093blByb3BlcnR5KG4udHlwZSk/X29bbi50eXBlXShuLHQpOlN0KG4sdCl9O3ZhciBfbz17RmVhdHVyZTpmdW5jdGlvbihuLHQpe1N0KG4uZ2VvbWV0cnksdCl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uZmVhdHVyZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylTdChlW3JdLmdlb21ldHJ5LHQpfX0sd289e1NwaGVyZTpmdW5jdGlvbihuLHQpe3Quc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKG4sdCl7dmFyIGU9bi5jb29yZGluYXRlczt0LnBvaW50KGVbMF0sZVsxXSl9LE11bHRpUG9pbnQ6ZnVuY3Rpb24obix0KXtmb3IodmFyIGUscj1uLmNvb3JkaW5hdGVzLGk9LTEsdT1yLmxlbmd0aDsrK2k8dTspZT1yW2ldLHQucG9pbnQoZVswXSxlWzFdKX0sTGluZVN0cmluZzpmdW5jdGlvbihuLHQpe0V0KG4uY29vcmRpbmF0ZXMsdCwwKX0sTXVsdGlMaW5lU3RyaW5nOmZ1bmN0aW9uKG4sdCl7Zm9yKHZhciBlPW4uY29vcmRpbmF0ZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylFdChlW3JdLHQsMCl9LFBvbHlnb246ZnVuY3Rpb24obix0KXtrdChuLmNvb3JkaW5hdGVzLHQpfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24obix0KXtmb3IodmFyIGU9bi5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KWt0KGVbcl0sdCl9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbihuLHQpe2Zvcih2YXIgZT1uLmdlb21ldHJpZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylTdChlW3JdLHQpfX07eWEuZ2VvLmFyZWE9ZnVuY3Rpb24obil7cmV0dXJuIFNvPTAseWEuZ2VvLnN0cmVhbShuLGtvKSxTb307dmFyIFNvLEVvPW5ldyBfdCxrbz17c3BoZXJlOmZ1bmN0aW9uKCl7U28rPTQqJGF9LHBvaW50OnMsbGluZVN0YXJ0OnMsbGluZUVuZDpzLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0VvLnJlc2V0KCksa28ubGluZVN0YXJ0PUF0fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIG49MipFbztTbys9MD5uPzQqJGErbjpuLGtvLmxpbmVTdGFydD1rby5saW5lRW5kPWtvLnBvaW50PXN9fTt5YS5nZW8uYm91bmRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHQpe00ucHVzaCh4PVtzPW4saD1uXSksZj50JiYoZj10KSx0PmcmJihnPXQpfWZ1bmN0aW9uIHQodCxlKXt2YXIgcj1OdChbdCpHYSxlKkdhXSk7aWYodil7dmFyIGk9VHQodixyKSx1PVtpWzFdLC1pWzBdLDBdLGE9VHQodSxpKTtEdChhKSxhPWp0KGEpO3ZhciBjPXQtcCxsPWM+MD8xOi0xLGQ9YVswXSpLYSpsLG09TWF0aC5hYnMoYyk+MTgwO2lmKG1eKGQ+bCpwJiZsKnQ+ZCkpe3ZhciB5PWFbMV0qS2E7eT5nJiYoZz15KX1lbHNlIGlmKGQ9KGQrMzYwKSUzNjAtMTgwLG1eKGQ+bCpwJiZsKnQ+ZCkpe3ZhciB5PS1hWzFdKkthO2Y+eSYmKGY9eSl9ZWxzZSBmPmUmJihmPWUpLGU+ZyYmKGc9ZSk7bT9wPnQ/byhzLHQpPm8ocyxoKSYmKGg9dCk6byh0LGgpPm8ocyxoKSYmKHM9dCk6aD49cz8ocz50JiYocz10KSx0PmgmJihoPXQpKTp0PnA/byhzLHQpPm8ocyxoKSYmKGg9dCk6byh0LGgpPm8ocyxoKSYmKHM9dCl9ZWxzZSBuKHQsZSk7dj1yLHA9dH1mdW5jdGlvbiBlKCl7Yi5wb2ludD10fWZ1bmN0aW9uIHIoKXt4WzBdPXMseFsxXT1oLGIucG9pbnQ9bix2PW51bGx9ZnVuY3Rpb24gaShuLGUpe2lmKHYpe3ZhciByPW4tcDt5Kz1NYXRoLmFicyhyKT4xODA/cisocj4wPzM2MDotMzYwKTpyfWVsc2UgZD1uLG09ZTtrby5wb2ludChuLGUpLHQobixlKX1mdW5jdGlvbiB1KCl7a28ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gYSgpe2koZCxtKSxrby5saW5lRW5kKCksTWF0aC5hYnMoeSk+V2EmJihzPS0oaD0xODApKSx4WzBdPXMseFsxXT1oLHY9bnVsbH1mdW5jdGlvbiBvKG4sdCl7cmV0dXJuKHQtPW4pPDA/dCszNjA6dH1mdW5jdGlvbiBjKG4sdCl7cmV0dXJuIG5bMF0tdFswXX1mdW5jdGlvbiBsKG4sdCl7cmV0dXJuIHRbMF08PXRbMV0/dFswXTw9biYmbjw9dFsxXTpuPHRbMF18fHRbMV08bn12YXIgcyxmLGgsZyxwLGQsbSx2LHksTSx4LGI9e3BvaW50Om4sbGluZVN0YXJ0OmUsbGluZUVuZDpyLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2IucG9pbnQ9aSxiLmxpbmVTdGFydD11LGIubGluZUVuZD1hLHk9MCxrby5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2tvLnBvbHlnb25FbmQoKSxiLnBvaW50PW4sYi5saW5lU3RhcnQ9ZSxiLmxpbmVFbmQ9ciwwPkVvPyhzPS0oaD0xODApLGY9LShnPTkwKSk6eT5XYT9nPTkwOi1XYT55JiYoZj0tOTApLHhbMF09cyx4WzFdPWh9fTtyZXR1cm4gZnVuY3Rpb24obil7Zz1oPS0ocz1mPTEvMCksTT1bXSx5YS5nZW8uc3RyZWFtKG4sYik7dmFyIHQ9TS5sZW5ndGg7aWYodCl7TS5zb3J0KGMpO2Zvcih2YXIgZSxyPTEsaT1NWzBdLHU9W2ldO3Q+cjsrK3IpZT1NW3JdLGwoZVswXSxpKXx8bChlWzFdLGkpPyhvKGlbMF0sZVsxXSk+byhpWzBdLGlbMV0pJiYoaVsxXT1lWzFdKSxvKGVbMF0saVsxXSk+byhpWzBdLGlbMV0pJiYoaVswXT1lWzBdKSk6dS5wdXNoKGk9ZSk7Zm9yKHZhciBhLGUscD0tMS8wLHQ9dS5sZW5ndGgtMSxyPTAsaT11W3RdO3Q+PXI7aT1lLCsrcillPXVbcl0sKGE9byhpWzFdLGVbMF0pKT5wJiYocD1hLHM9ZVswXSxoPWlbMV0pfXJldHVybiBNPXg9bnVsbCwxLzA9PT1zfHwxLzA9PT1mP1tbMC8wLDAvMF0sWzAvMCwwLzBdXTpbW3MsZl0sW2gsZ11dfX0oKSx5YS5nZW8uY2VudHJvaWQ9ZnVuY3Rpb24obil7QW89Tm89cW89VG89Q289em89RG89am89TG89SG89Rm89MCx5YS5nZW8uc3RyZWFtKG4sUG8pO3ZhciB0PUxvLGU9SG8scj1GbyxpPXQqdCtlKmUrcipyO3JldHVybiBKYT5pJiYodD16byxlPURvLHI9am8sV2E+Tm8mJih0PXFvLGU9VG8scj1DbyksaT10KnQrZSplK3IqcixKYT5pKT9bMC8wLDAvMF06W01hdGguYXRhbjIoZSx0KSpLYSxJKHIvTWF0aC5zcXJ0KGkpKSpLYV19O3ZhciBBbyxObyxxbyxUbyxDbyx6byxEbyxqbyxMbyxIbyxGbyxQbz17c3BoZXJlOnMscG9pbnQ6SHQsbGluZVN0YXJ0OlB0LGxpbmVFbmQ6T3QscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7UG8ubGluZVN0YXJ0PVl0fSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7UG8ubGluZVN0YXJ0PVB0fX0sT289VnQoUnQsV3QsR3QsS3QpLFlvPVstJGEsMF0sUm89MWU5Oyh5YS5nZW8uY29uaWNFcXVhbEFyZWE9ZnVuY3Rpb24oKXtyZXR1cm4gcmUoaWUpfSkucmF3PWllLHlhLmdlby5hbGJlcnM9ZnVuY3Rpb24oKXtyZXR1cm4geWEuZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFs5NiwwXSkuY2VudGVyKFstLjYsMzguN10pLnBhcmFsbGVscyhbMjkuNSw0NS41XSkuc2NhbGUoMTA3MCl9LHlhLmdlby5hbGJlcnNVc2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe3ZhciB1PW5bMF0sYT1uWzFdO3JldHVybiB0PW51bGwsZSh1LGEpLHR8fChyKHUsYSksdCl8fGkodSxhKSx0fXZhciB0LGUscixpLHU9eWEuZ2VvLmFsYmVycygpLGE9eWEuZ2VvLmNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTQsMF0pLmNlbnRlcihbLTIsNTguNV0pLnBhcmFsbGVscyhbNTUsNjVdKSxvPXlhLmdlby5jb25pY0VxdWFsQXJlYSgpLnJvdGF0ZShbMTU3LDBdKS5jZW50ZXIoWy0zLDE5LjldKS5wYXJhbGxlbHMoWzgsMThdKSxjPXtwb2ludDpmdW5jdGlvbihuLGUpe3Q9W24sZV19fTtyZXR1cm4gbi5pbnZlcnQ9ZnVuY3Rpb24obil7dmFyIHQ9dS5zY2FsZSgpLGU9dS50cmFuc2xhdGUoKSxyPShuWzBdLWVbMF0pL3QsaT0oblsxXS1lWzFdKS90O3JldHVybihpPj0uMTImJi4yMzQ+aSYmcj49LS40MjUmJi0uMjE0PnI/YTppPj0uMTY2JiYuMjM0PmkmJnI+PS0uMjE0JiYtLjExNT5yP286dSkuaW52ZXJ0KG4pfSxuLnN0cmVhbT1mdW5jdGlvbihuKXt2YXIgdD11LnN0cmVhbShuKSxlPWEuc3RyZWFtKG4pLHI9by5zdHJlYW0obik7cmV0dXJue3BvaW50OmZ1bmN0aW9uKG4saSl7dC5wb2ludChuLGkpLGUucG9pbnQobixpKSxyLnBvaW50KG4saSl9LHNwaGVyZTpmdW5jdGlvbigpe3Quc3BoZXJlKCksZS5zcGhlcmUoKSxyLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0LmxpbmVTdGFydCgpLGUubGluZVN0YXJ0KCksci5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3QubGluZUVuZCgpLGUubGluZUVuZCgpLHIubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0LnBvbHlnb25TdGFydCgpLGUucG9seWdvblN0YXJ0KCksci5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3QucG9seWdvbkVuZCgpLGUucG9seWdvbkVuZCgpLHIucG9seWdvbkVuZCgpfX19LG4ucHJlY2lzaW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnByZWNpc2lvbih0KSxhLnByZWNpc2lvbih0KSxvLnByZWNpc2lvbih0KSxuKTp1LnByZWNpc2lvbigpfSxuLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnNjYWxlKHQpLGEuc2NhbGUoLjM1KnQpLG8uc2NhbGUodCksbi50cmFuc2xhdGUodS50cmFuc2xhdGUoKSkpOnUuc2NhbGUoKX0sbi50cmFuc2xhdGU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHUudHJhbnNsYXRlKCk7dmFyIGw9dS5zY2FsZSgpLHM9K3RbMF0sZj0rdFsxXTtyZXR1cm4gZT11LnRyYW5zbGF0ZSh0KS5jbGlwRXh0ZW50KFtbcy0uNDU1KmwsZi0uMjM4KmxdLFtzKy40NTUqbCxmKy4yMzgqbF1dKS5zdHJlYW0oYykucG9pbnQscj1hLnRyYW5zbGF0ZShbcy0uMzA3KmwsZisuMjAxKmxdKS5jbGlwRXh0ZW50KFtbcy0uNDI1KmwrV2EsZisuMTIqbCtXYV0sW3MtLjIxNCpsLVdhLGYrLjIzNCpsLVdhXV0pLnN0cmVhbShjKS5wb2ludCxpPW8udHJhbnNsYXRlKFtzLS4yMDUqbCxmKy4yMTIqbF0pLmNsaXBFeHRlbnQoW1tzLS4yMTQqbCtXYSxmKy4xNjYqbCtXYV0sW3MtLjExNSpsLVdhLGYrLjIzNCpsLVdhXV0pLnN0cmVhbShjKS5wb2ludCxufSxuLnNjYWxlKDEwNzApfTt2YXIgVW8sSW8sVm8sWG8sWm8sQm8sJG89e3BvaW50OnMsbGluZVN0YXJ0OnMsbGluZUVuZDpzLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0lvPTAsJG8ubGluZVN0YXJ0PXVlfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7JG8ubGluZVN0YXJ0PSRvLmxpbmVFbmQ9JG8ucG9pbnQ9cyxVbys9TWF0aC5hYnMoSW8vMil9fSxXbz17cG9pbnQ6YWUsbGluZVN0YXJ0OnMsbGluZUVuZDpzLHBvbHlnb25TdGFydDpzLHBvbHlnb25FbmQ6c30sSm89e3BvaW50OmxlLGxpbmVTdGFydDpzZSxsaW5lRW5kOmZlLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe0pvLmxpbmVTdGFydD1oZX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0pvLnBvaW50PWxlLEpvLmxpbmVTdGFydD1zZSxKby5saW5lRW5kPWZlfX07eWEuZ2VvLnBhdGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe3JldHVybiBuJiYoImZ1bmN0aW9uIj09dHlwZW9mIG8mJnUucG9pbnRSYWRpdXMoK28uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxhJiZhLnZhbGlkfHwoYT1pKHUpKSx5YS5nZW8uc3RyZWFtKG4sYSkpLHUucmVzdWx0KCl9ZnVuY3Rpb24gdCgpe3JldHVybiBhPW51bGwsbn12YXIgZSxyLGksdSxhLG89NC41O3JldHVybiBuLmFyZWE9ZnVuY3Rpb24obil7cmV0dXJuIFVvPTAseWEuZ2VvLnN0cmVhbShuLGkoJG8pKSxVb30sbi5jZW50cm9pZD1mdW5jdGlvbihuKXtyZXR1cm4gcW89VG89Q289em89RG89am89TG89SG89Rm89MCx5YS5nZW8uc3RyZWFtKG4saShKbykpLEZvP1tMby9GbyxIby9Gb106am8/W3pvL2pvLERvL2pvXTpDbz9bcW8vQ28sVG8vQ29dOlswLzAsMC8wXX0sbi5ib3VuZHM9ZnVuY3Rpb24obil7cmV0dXJuIFpvPUJvPS0oVm89WG89MS8wKSx5YS5nZW8uc3RyZWFtKG4saShXbykpLFtbVm8sWG9dLFtabyxCb11dfSxuLnByb2plY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9KGU9bik/bi5zdHJlYW18fGRlKG4pOmh0LHQoKSk6ZX0sbi5jb250ZXh0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PW51bGw9PShyPW4pP25ldyBvZTpuZXcgZ2UobiksImZ1bmN0aW9uIiE9dHlwZW9mIG8mJnUucG9pbnRSYWRpdXMobyksdCgpKTpyfSxuLnBvaW50UmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6KHUucG9pbnRSYWRpdXMoK3QpLCt0KSxuKTpvfSxuLnByb2plY3Rpb24oeWEuZ2VvLmFsYmVyc1VzYSgpKS5jb250ZXh0KG51bGwpfSx5YS5nZW8ucHJvamVjdGlvbj1tZSx5YS5nZW8ucHJvamVjdGlvbk11dGF0b3I9dmUsKHlhLmdlby5lcXVpcmVjdGFuZ3VsYXI9ZnVuY3Rpb24oKXtyZXR1cm4gbWUoTWUpfSkucmF3PU1lLmludmVydD1NZSx5YS5nZW8ucm90YXRpb249ZnVuY3Rpb24obil7ZnVuY3Rpb24gdCh0KXtyZXR1cm4gdD1uKHRbMF0qR2EsdFsxXSpHYSksdFswXSo9S2EsdFsxXSo9S2EsdH1yZXR1cm4gbj14ZShuWzBdJTM2MCpHYSxuWzFdKkdhLG4ubGVuZ3RoPjI/blsyXSpHYTowKSx0LmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gdD1uLmludmVydCh0WzBdKkdhLHRbMV0qR2EpLHRbMF0qPUthLHRbMV0qPUthLHR9LHR9LHlhLmdlby5jaXJjbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHI/ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6cix0PXhlKC1uWzBdKkdhLC1uWzFdKkdhLDApLmludmVydCxpPVtdO3JldHVybiBlKG51bGwsbnVsbCwxLHtwb2ludDpmdW5jdGlvbihuLGUpe2kucHVzaChuPXQobixlKSksblswXSo9S2EsblsxXSo9S2F9fSkse3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltpXX19dmFyIHQsZSxyPVswLDBdLGk9NjtyZXR1cm4gbi5vcmlnaW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLmFuZ2xlPWZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPVNlKCh0PStyKSpHYSxpKkdhKSxuKTp0fSxuLnByZWNpc2lvbj1mdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1TZSh0KkdhLChpPStyKSpHYSksbik6aX0sbi5hbmdsZSg5MCl9LHlhLmdlby5kaXN0YW5jZT1mdW5jdGlvbihuLHQpe3ZhciBlLHI9KHRbMF0tblswXSkqR2EsaT1uWzFdKkdhLHU9dFsxXSpHYSxhPU1hdGguc2luKHIpLG89TWF0aC5jb3MociksYz1NYXRoLnNpbihpKSxsPU1hdGguY29zKGkpLHM9TWF0aC5zaW4odSksZj1NYXRoLmNvcyh1KTtyZXR1cm4gTWF0aC5hdGFuMihNYXRoLnNxcnQoKGU9ZiphKSplKyhlPWwqcy1jKmYqbykqZSksYypzK2wqZipvKX0seWEuZ2VvLmdyYXRpY3VsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczp0KCl9fWZ1bmN0aW9uIHQoKXtyZXR1cm4geWEucmFuZ2UoTWF0aC5jZWlsKHUvbSkqbSxpLG0pLm1hcChoKS5jb25jYXQoeWEucmFuZ2UoTWF0aC5jZWlsKGwvdikqdixjLHYpLm1hcChnKSkuY29uY2F0KHlhLnJhbmdlKE1hdGguY2VpbChyL3ApKnAsZSxwKS5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIE1hdGguYWJzKG4lbSk+V2F9KS5tYXAocykpLmNvbmNhdCh5YS5yYW5nZShNYXRoLmNlaWwoby9kKSpkLGEsZCkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLmFicyhuJXYpPldhfSkubWFwKGYpKX12YXIgZSxyLGksdSxhLG8sYyxsLHMsZixoLGcscD0xMCxkPXAsbT05MCx2PTM2MCx5PTIuNTtyZXR1cm4gbi5saW5lcz1mdW5jdGlvbigpe3JldHVybiB0KCkubWFwKGZ1bmN0aW9uKG4pe3JldHVybnt0eXBlOiJMaW5lU3RyaW5nIixjb29yZGluYXRlczpufX0pfSxuLm91dGxpbmU9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiUG9seWdvbiIsY29vcmRpbmF0ZXM6W2godSkuY29uY2F0KGcoYykuc2xpY2UoMSksaChpKS5yZXZlcnNlKCkuc2xpY2UoMSksZyhsKS5yZXZlcnNlKCkuc2xpY2UoMSkpXX19LG4uZXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24ubWFqb3JFeHRlbnQodCkubWlub3JFeHRlbnQodCk6bi5taW5vckV4dGVudCgpfSxuLm1ham9yRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0WzBdWzBdLGk9K3RbMV1bMF0sbD0rdFswXVsxXSxjPSt0WzFdWzFdLHU+aSYmKHQ9dSx1PWksaT10KSxsPmMmJih0PWwsbD1jLGM9dCksbi5wcmVjaXNpb24oeSkpOltbdSxsXSxbaSxjXV19LG4ubWlub3JFeHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3RbMF1bMF0sZT0rdFsxXVswXSxvPSt0WzBdWzFdLGE9K3RbMV1bMV0scj5lJiYodD1yLHI9ZSxlPXQpLG8+YSYmKHQ9byxvPWEsYT10KSxuLnByZWNpc2lvbih5KSk6W1tyLG9dLFtlLGFdXX0sbi5zdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP24ubWFqb3JTdGVwKHQpLm1pbm9yU3RlcCh0KTpuLm1pbm9yU3RlcCgpfSxuLm1ham9yU3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0rdFswXSx2PSt0WzFdLG4pOlttLHZdfSxuLm1pbm9yU3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0rdFswXSxkPSt0WzFdLG4pOltwLGRdfSxuLnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0rdCxzPWtlKG8sYSw5MCksZj1BZShyLGUseSksaD1rZShsLGMsOTApLGc9QWUodSxpLHkpLG4pOnl9LG4ubWFqb3JFeHRlbnQoW1stMTgwLC05MCtXYV0sWzE4MCw5MC1XYV1dKS5taW5vckV4dGVudChbWy0xODAsLTgwLVdhXSxbMTgwLDgwK1dhXV0pfSx5YS5nZW8uZ3JlYXRBcmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7cmV0dXJue3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOlt0fHxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlfHxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKV19fXZhciB0LGUscj1OZSxpPXFlO3JldHVybiBuLmRpc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHlhLmdlby5kaXN0YW5jZSh0fHxyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlfHxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LG4uc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWUsdD0iZnVuY3Rpb24iPT10eXBlb2YgZT9udWxsOmUsbik6cn0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P251bGw6dCxuKTppfSxuLnByZWNpc2lvbj1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP246MH0sbn0seWEuZ2VvLmludGVycG9sYXRlPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIFRlKG5bMF0qR2EsblsxXSpHYSx0WzBdKkdhLHRbMV0qR2EpfSx5YS5nZW8ubGVuZ3RoPWZ1bmN0aW9uKG4pe3JldHVybiBHbz0wLHlhLmdlby5zdHJlYW0obixLbyksR299O3ZhciBHbyxLbz17c3BoZXJlOnMscG9pbnQ6cyxsaW5lU3RhcnQ6Q2UsbGluZUVuZDpzLHBvbHlnb25TdGFydDpzLHBvbHlnb25FbmQ6c30sUW89emUoZnVuY3Rpb24obil7cmV0dXJuIE1hdGguc3FydCgyLygxK24pKX0sZnVuY3Rpb24obil7cmV0dXJuIDIqTWF0aC5hc2luKG4vMil9KTsoeWEuZ2VvLmF6aW11dGhhbEVxdWFsQXJlYT1mdW5jdGlvbigpe3JldHVybiBtZShRbyl9KS5yYXc9UW87dmFyIG5jPXplKGZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguYWNvcyhuKTtyZXR1cm4gdCYmdC9NYXRoLnNpbih0KX0saHQpOyh5YS5nZW8uYXppbXV0aGFsRXF1aWRpc3RhbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbWUobmMpfSkucmF3PW5jLCh5YS5nZW8uY29uaWNDb25mb3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4gcmUoRGUpfSkucmF3PURlLCh5YS5nZW8uY29uaWNFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiByZShqZSl9KS5yYXc9amU7dmFyIHRjPXplKGZ1bmN0aW9uKG4pe3JldHVybiAxL259LE1hdGguYXRhbik7KHlhLmdlby5nbm9tb25pYz1mdW5jdGlvbigpe3JldHVybiBtZSh0Yyl9KS5yYXc9dGMsTGUuaW52ZXJ0PWZ1bmN0aW9uKG4sdCl7cmV0dXJuW24sMipNYXRoLmF0YW4oTWF0aC5leHAodCkpLSRhLzJdfSwoeWEuZ2VvLm1lcmNhdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIEhlKExlKX0pLnJhdz1MZTt2YXIgZWM9emUoZnVuY3Rpb24oKXtyZXR1cm4gMX0sTWF0aC5hc2luKTsoeWEuZ2VvLm9ydGhvZ3JhcGhpYz1mdW5jdGlvbigpe3JldHVybiBtZShlYyl9KS5yYXc9ZWM7dmFyIHJjPXplKGZ1bmN0aW9uKG4pe3JldHVybiAxLygxK24pfSxmdW5jdGlvbihuKXtyZXR1cm4gMipNYXRoLmF0YW4obil9KTsoeWEuZ2VvLnN0ZXJlb2dyYXBoaWM9ZnVuY3Rpb24oKXtyZXR1cm4gbWUocmMpfSkucmF3PXJjLEZlLmludmVydD1mdW5jdGlvbihuLHQpe3JldHVybltNYXRoLmF0YW4yKFYobiksTWF0aC5jb3ModCkpLEkoTWF0aC5zaW4odCkvWChuKSldfSwoeWEuZ2VvLnRyYW5zdmVyc2VNZXJjYXRvcj1mdW5jdGlvbigpe3JldHVybiBIZShGZSl9KS5yYXc9RmUseWEuZ2VvbT17fSx5YS5zdmc9e30seWEuc3ZnLmxpbmU9ZnVuY3Rpb24oKXtyZXR1cm4gUGUoaHQpfTt2YXIgaWM9eWEubWFwKHtsaW5lYXI6UmUsImxpbmVhci1jbG9zZWQiOlVlLHN0ZXA6SWUsInN0ZXAtYmVmb3JlIjpWZSwic3RlcC1hZnRlciI6WGUsYmFzaXM6R2UsImJhc2lzLW9wZW4iOktlLCJiYXNpcy1jbG9zZWQiOlFlLGJ1bmRsZTpucixjYXJkaW5hbDokZSwiY2FyZGluYWwtb3BlbiI6WmUsImNhcmRpbmFsLWNsb3NlZCI6QmUsbW9ub3RvbmU6YXJ9KTtpYy5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7dC5rZXk9bix0LmNsb3NlZD0vLWNsb3NlZCQvLnRlc3Qobil9KTt2YXIgdWM9WzAsMi8zLDEvMywwXSxhYz1bMCwxLzMsMi8zLDBdLG9jPVswLDEvNiwyLzMsMS82XTt5YS5nZW9tLmh1bGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24gdChuKXtpZihuLmxlbmd0aDwzKXJldHVybltdO3ZhciB0LGksdSxhLG8sYyxsLHMsZixoLGcscCxkPWZ0KGUpLG09ZnQociksdj1uLmxlbmd0aCx5PXYtMSxNPVtdLHg9W10sYj0wOwppZihkPT09T2UmJnI9PT1ZZSl0PW47ZWxzZSBmb3IodT0wLHQ9W107dj51OysrdSl0LnB1c2goWytkLmNhbGwodGhpcyxpPW5bdV0sdSksK20uY2FsbCh0aGlzLGksdSldKTtmb3IodT0xO3Y+dTsrK3UpKHRbdV1bMV08dFtiXVsxXXx8dFt1XVsxXT09dFtiXVsxXSYmdFt1XVswXTx0W2JdWzBdKSYmKGI9dSk7Zm9yKHU9MDt2PnU7Kyt1KXUhPT1iJiYoYz10W3VdWzFdLXRbYl1bMV0sbz10W3VdWzBdLXRbYl1bMF0sTS5wdXNoKHthbmdsZTpNYXRoLmF0YW4yKGMsbyksaW5kZXg6dX0pKTtmb3IoTS5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4uYW5nbGUtdC5hbmdsZX0pLGc9TVswXS5hbmdsZSxoPU1bMF0uaW5kZXgsZj0wLHU9MTt5PnU7Kyt1KXtpZihhPU1bdV0uaW5kZXgsZz09TVt1XS5hbmdsZSl7aWYobz10W2hdWzBdLXRbYl1bMF0sYz10W2hdWzFdLXRbYl1bMV0sbD10W2FdWzBdLXRbYl1bMF0scz10W2FdWzFdLXRbYl1bMV0sbypvK2MqYz49bCpsK3Mqcyl7TVt1XS5pbmRleD0tMTtjb250aW51ZX1NW2ZdLmluZGV4PS0xfWc9TVt1XS5hbmdsZSxmPXUsaD1hfWZvcih4LnB1c2goYiksdT0wLGE9MDsyPnU7KythKU1bYV0uaW5kZXg+LTEmJih4LnB1c2goTVthXS5pbmRleCksdSsrKTtmb3IocD14Lmxlbmd0aDt5PmE7KythKWlmKCEoTVthXS5pbmRleDwwKSl7Zm9yKDshb3IoeFtwLTJdLHhbcC0xXSxNW2FdLmluZGV4LHQpOyktLXA7eFtwKytdPU1bYV0uaW5kZXh9dmFyIF89W107Zm9yKHU9cC0xO3U+PTA7LS11KV8ucHVzaChuW3hbdV1dKTtyZXR1cm4gX312YXIgZT1PZSxyPVllO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Qobik6KHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQpfSx5YS5nZW9tLnBvbHlnb249ZnVuY3Rpb24obil7cmV0dXJuIHphKG4sY2MpLG59O3ZhciBjYz15YS5nZW9tLnBvbHlnb24ucHJvdG90eXBlPVtdO2NjLmFyZWE9ZnVuY3Rpb24oKXtmb3IodmFyIG4sdD0tMSxlPXRoaXMubGVuZ3RoLHI9dGhpc1tlLTFdLGk9MDsrK3Q8ZTspbj1yLHI9dGhpc1t0XSxpKz1uWzFdKnJbMF0tblswXSpyWzFdO3JldHVybi41Kml9LGNjLmNlbnRyb2lkPWZ1bmN0aW9uKG4pe3ZhciB0LGUscj0tMSxpPXRoaXMubGVuZ3RoLHU9MCxhPTAsbz10aGlzW2ktMV07Zm9yKGFyZ3VtZW50cy5sZW5ndGh8fChuPS0xLyg2KnRoaXMuYXJlYSgpKSk7KytyPGk7KXQ9byxvPXRoaXNbcl0sZT10WzBdKm9bMV0tb1swXSp0WzFdLHUrPSh0WzBdK29bMF0pKmUsYSs9KHRbMV0rb1sxXSkqZTtyZXR1cm5bdSpuLGEqbl19LGNjLmNsaXA9ZnVuY3Rpb24obil7Zm9yKHZhciB0LGUscixpLHUsYSxvPXNyKG4pLGM9LTEsbD10aGlzLmxlbmd0aC1zcih0aGlzKSxzPXRoaXNbbC0xXTsrK2M8bDspe2Zvcih0PW4uc2xpY2UoKSxuLmxlbmd0aD0wLGk9dGhpc1tjXSx1PXRbKHI9dC5sZW5ndGgtbyktMV0sZT0tMTsrK2U8cjspYT10W2VdLGNyKGEscyxpKT8oY3IodSxzLGkpfHxuLnB1c2gobHIodSxhLHMsaSkpLG4ucHVzaChhKSk6Y3IodSxzLGkpJiZuLnB1c2gobHIodSxhLHMsaSkpLHU9YTtvJiZuLnB1c2goblswXSkscz1pfXJldHVybiBufSx5YS5nZW9tLmRlbGF1bmF5PWZ1bmN0aW9uKG4pe3ZhciB0PW4ubWFwKGZ1bmN0aW9uKCl7cmV0dXJuW119KSxlPVtdO3JldHVybiBmcihuLGZ1bmN0aW9uKGUpe3RbZS5yZWdpb24ubC5pbmRleF0ucHVzaChuW2UucmVnaW9uLnIuaW5kZXhdKX0pLHQuZm9yRWFjaChmdW5jdGlvbih0LHIpe3ZhciBpPW5bcl0sdT1pWzBdLGE9aVsxXTt0LmZvckVhY2goZnVuY3Rpb24obil7bi5hbmdsZT1NYXRoLmF0YW4yKG5bMF0tdSxuWzFdLWEpfSksdC5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4uYW5nbGUtdC5hbmdsZX0pO2Zvcih2YXIgbz0wLGM9dC5sZW5ndGgtMTtjPm87bysrKWUucHVzaChbaSx0W29dLHRbbysxXV0pfSksZX0seWEuZ2VvbS52b3Jvbm9pPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQobil7dmFyIHQsdSxhLG89bi5tYXAoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLGM9ZnQoZSksbD1mdChyKSxzPW4ubGVuZ3RoLGY9MWU2O2lmKGM9PT1PZSYmbD09PVllKXQ9bjtlbHNlIGZvcih0PW5ldyBBcnJheShzKSxhPTA7cz5hOysrYSl0W2FdPVsrYy5jYWxsKHRoaXMsdT1uW2FdLGEpLCtsLmNhbGwodGhpcyx1LGEpXTtpZihmcih0LGZ1bmN0aW9uKG4pe3ZhciB0LGUscixpLHUsYTsxPT09bi5hJiZuLmI+PTA/KHQ9bi5lcC5yLGU9bi5lcC5sKToodD1uLmVwLmwsZT1uLmVwLnIpLDE9PT1uLmE/KHU9dD90Lnk6LWYscj1uLmMtbi5iKnUsYT1lP2UueTpmLGk9bi5jLW4uYiphKToocj10P3QueDotZix1PW4uYy1uLmEqcixpPWU/ZS54OmYsYT1uLmMtbi5hKmkpO3ZhciBjPVtyLHVdLGw9W2ksYV07b1tuLnJlZ2lvbi5sLmluZGV4XS5wdXNoKGMsbCksb1tuLnJlZ2lvbi5yLmluZGV4XS5wdXNoKGMsbCl9KSxvPW8ubWFwKGZ1bmN0aW9uKG4sZSl7dmFyIHI9dFtlXVswXSxpPXRbZV1bMV0sdT1uLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5hdGFuMihuWzBdLXIsblsxXS1pKX0pLGE9eWEucmFuZ2Uobi5sZW5ndGgpLnNvcnQoZnVuY3Rpb24obix0KXtyZXR1cm4gdVtuXS11W3RdfSk7cmV0dXJuIGEuZmlsdGVyKGZ1bmN0aW9uKG4sdCl7cmV0dXJuIXR8fHVbbl0tdVthW3QtMV1dPldhfSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuW3RdfSl9KSxvLmZvckVhY2goZnVuY3Rpb24obixlKXt2YXIgcj1uLmxlbmd0aDtpZighcilyZXR1cm4gbi5wdXNoKFstZiwtZl0sWy1mLGZdLFtmLGZdLFtmLC1mXSk7aWYoIShyPjIpKXt2YXIgaT10W2VdLHU9blswXSxhPW5bMV0sbz1pWzBdLGM9aVsxXSxsPXVbMF0scz11WzFdLGg9YVswXSxnPWFbMV0scD1NYXRoLmFicyhoLWwpLGQ9Zy1zO2lmKE1hdGguYWJzKGQpPFdhKXt2YXIgbT1zPmM/LWY6ZjtuLnB1c2goWy1mLG1dLFtmLG1dKX1lbHNlIGlmKFdhPnApe3ZhciB2PWw+bz8tZjpmO24ucHVzaChbdiwtZl0sW3YsZl0pfWVsc2V7dmFyIG09KGwtbykqKGctcyk+KGgtbCkqKHMtYyk/ZjotZix5PU1hdGguYWJzKGQpLXA7TWF0aC5hYnMoeSk8V2E/bi5wdXNoKFswPmQ/bTotbSxtXSk6KHk+MCYmKG0qPS0xKSxuLnB1c2goWy1mLG1dLFtmLG1dKSl9fX0pLGkpZm9yKGE9MDtzPmE7KythKWkuY2xpcChvW2FdKTtmb3IoYT0wO3M+YTsrK2Epb1thXS5wb2ludD1uW2FdO3JldHVybiBvfXZhciBlPU9lLHI9WWUsaT1udWxsO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3Qobik6KHQueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHQpOmV9LHQueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1uLHQpOnJ9LHQuY2xpcEV4dGVudD1mdW5jdGlvbihuKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gaSYmW2lbMF0saVsyXV07aWYobnVsbD09bilpPW51bGw7ZWxzZXt2YXIgZT0rblswXVswXSxyPStuWzBdWzFdLHU9K25bMV1bMF0sYT0rblsxXVsxXTtpPXlhLmdlb20ucG9seWdvbihbW2Uscl0sW2UsYV0sW3UsYV0sW3Uscl1dKX1yZXR1cm4gdH0sdC5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2xpcEV4dGVudChuJiZbWzAsMF0sbl0pOmkmJmlbMl19LHQubGlua3M9ZnVuY3Rpb24obil7dmFyIHQsaSx1LGE9bi5tYXAoZnVuY3Rpb24oKXtyZXR1cm5bXX0pLG89W10sYz1mdChlKSxsPWZ0KHIpLHM9bi5sZW5ndGg7aWYoYz09PU9lJiZsPT09WWUpdD1uO2Vsc2UgZm9yKHQ9bmV3IEFycmF5KHMpLHU9MDtzPnU7Kyt1KXRbdV09WytjLmNhbGwodGhpcyxpPW5bdV0sdSksK2wuY2FsbCh0aGlzLGksdSldO3JldHVybiBmcih0LGZ1bmN0aW9uKHQpe3ZhciBlPXQucmVnaW9uLmwuaW5kZXgscj10LnJlZ2lvbi5yLmluZGV4O2FbZV1bcl18fChhW2VdW3JdPWFbcl1bZV09ITAsby5wdXNoKHtzb3VyY2U6bltlXSx0YXJnZXQ6bltyXX0pKX0pLG99LHQudHJpYW5nbGVzPWZ1bmN0aW9uKG4pe2lmKGU9PT1PZSYmcj09PVllKXJldHVybiB5YS5nZW9tLmRlbGF1bmF5KG4pO2Zvcih2YXIgdCxpPW5ldyBBcnJheShjKSx1PWZ0KGUpLGE9ZnQociksbz0tMSxjPW4ubGVuZ3RoOysrbzxjOykoaVtvXT1bK3UuY2FsbCh0aGlzLHQ9bltvXSxvKSwrYS5jYWxsKHRoaXMsdCxvKV0pLmRhdGE9dDtyZXR1cm4geWEuZ2VvbS5kZWxhdW5heShpKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLmRhdGF9KX0pfSx0KX07dmFyIGxjPXtsOiJyIixyOiJsIn07eWEuZ2VvbS5xdWFkdHJlZT1mdW5jdGlvbihuLHQsZSxyLGkpe2Z1bmN0aW9uIHUobil7ZnVuY3Rpb24gdShuLHQsZSxyLGksdSxhLG8pe2lmKCFpc05hTihlKSYmIWlzTmFOKHIpKWlmKG4ubGVhZil7dmFyIGM9bi54LHM9bi55O2lmKG51bGwhPWMpaWYoTWF0aC5hYnMoYy1lKStNYXRoLmFicyhzLXIpPC4wMSlsKG4sdCxlLHIsaSx1LGEsbyk7ZWxzZXt2YXIgZj1uLnBvaW50O24ueD1uLnk9bi5wb2ludD1udWxsLGwobixmLGMscyxpLHUsYSxvKSxsKG4sdCxlLHIsaSx1LGEsbyl9ZWxzZSBuLng9ZSxuLnk9cixuLnBvaW50PXR9ZWxzZSBsKG4sdCxlLHIsaSx1LGEsbyl9ZnVuY3Rpb24gbChuLHQsZSxyLGksYSxvLGMpe3ZhciBsPS41KihpK28pLHM9LjUqKGErYyksZj1lPj1sLGg9cj49cyxnPShoPDwxKStmO24ubGVhZj0hMSxuPW4ubm9kZXNbZ118fChuLm5vZGVzW2ddPXByKCkpLGY/aT1sOm89bCxoP2E9czpjPXMsdShuLHQsZSxyLGksYSxvLGMpfXZhciBzLGYsaCxnLHAsZCxtLHYseSxNPWZ0KG8pLHg9ZnQoYyk7aWYobnVsbCE9dClkPXQsbT1lLHY9cix5PWk7ZWxzZSBpZih2PXk9LShkPW09MS8wKSxmPVtdLGg9W10scD1uLmxlbmd0aCxhKWZvcihnPTA7cD5nOysrZylzPW5bZ10scy54PGQmJihkPXMueCkscy55PG0mJihtPXMueSkscy54PnYmJih2PXMueCkscy55PnkmJih5PXMueSksZi5wdXNoKHMueCksaC5wdXNoKHMueSk7ZWxzZSBmb3IoZz0wO3A+ZzsrK2cpe3ZhciBiPStNKHM9bltnXSxnKSxfPSt4KHMsZyk7ZD5iJiYoZD1iKSxtPl8mJihtPV8pLGI+diYmKHY9YiksXz55JiYoeT1fKSxmLnB1c2goYiksaC5wdXNoKF8pfXZhciB3PXYtZCxTPXktbTt3PlM/eT1tK3c6dj1kK1M7dmFyIEU9cHIoKTtpZihFLmFkZD1mdW5jdGlvbihuKXt1KEUsbiwrTShuLCsrZyksK3gobixnKSxkLG0sdix5KX0sRS52aXNpdD1mdW5jdGlvbihuKXtkcihuLEUsZCxtLHYseSl9LGc9LTEsbnVsbD09dCl7Zm9yKDsrK2c8cDspdShFLG5bZ10sZltnXSxoW2ddLGQsbSx2LHkpOy0tZ31lbHNlIG4uZm9yRWFjaChFLmFkZCk7cmV0dXJuIGY9aD1uPXM9bnVsbCxFfXZhciBhLG89T2UsYz1ZZTtyZXR1cm4oYT1hcmd1bWVudHMubGVuZ3RoKT8obz1ocixjPWdyLDM9PT1hJiYoaT1lLHI9dCxlPXQ9MCksdShuKSk6KHUueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1uLHUpOm99LHUueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1uLHUpOmN9LHUuZXh0ZW50PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT1uP3Q9ZT1yPWk9bnVsbDoodD0rblswXVswXSxlPStuWzBdWzFdLHI9K25bMV1bMF0saT0rblsxXVsxXSksdSk6bnVsbD09dD9udWxsOltbdCxlXSxbcixpXV19LHUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09bj90PWU9cj1pPW51bGw6KHQ9ZT0wLHI9K25bMF0saT0rblsxXSksdSk6bnVsbD09dD9udWxsOltyLXQsaS1lXX0sdSl9LHlhLmludGVycG9sYXRlUmdiPW1yLHlhLmludGVycG9sYXRlT2JqZWN0PXZyLHlhLmludGVycG9sYXRlTnVtYmVyPXlyLHlhLmludGVycG9sYXRlU3RyaW5nPU1yO3ZhciBzYz0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2c7eWEuaW50ZXJwb2xhdGU9eHIseWEuaW50ZXJwb2xhdG9ycz1bZnVuY3Rpb24obix0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4oInN0cmluZyI9PT1lP2FvLmhhcyh0KXx8L14oI3xyZ2JcKHxoc2xcKCkvLnRlc3QodCk/bXI6TXI6dCBpbnN0YW5jZW9mIEY/bXI6Im9iamVjdCI9PT1lP0FycmF5LmlzQXJyYXkodCk/YnI6dnI6eXIpKG4sdCl9XSx5YS5pbnRlcnBvbGF0ZUFycmF5PWJyO3ZhciBmYz1mdW5jdGlvbigpe3JldHVybiBodH0saGM9eWEubWFwKHtsaW5lYXI6ZmMscG9seTpOcixxdWFkOmZ1bmN0aW9uKCl7cmV0dXJuIEVyfSxjdWJpYzpmdW5jdGlvbigpe3JldHVybiBrcn0sc2luOmZ1bmN0aW9uKCl7cmV0dXJuIHFyfSxleHA6ZnVuY3Rpb24oKXtyZXR1cm4gVHJ9LGNpcmNsZTpmdW5jdGlvbigpe3JldHVybiBDcn0sZWxhc3RpYzp6cixiYWNrOkRyLGJvdW5jZTpmdW5jdGlvbigpe3JldHVybiBqcn19KSxnYz15YS5tYXAoeyJpbiI6aHQsb3V0OndyLCJpbi1vdXQiOlNyLCJvdXQtaW4iOmZ1bmN0aW9uKG4pe3JldHVybiBTcih3cihuKSl9fSk7eWEuZWFzZT1mdW5jdGlvbihuKXt2YXIgdD1uLmluZGV4T2YoIi0iKSxlPXQ+PTA/bi5zdWJzdHJpbmcoMCx0KTpuLHI9dD49MD9uLnN1YnN0cmluZyh0KzEpOiJpbiI7cmV0dXJuIGU9aGMuZ2V0KGUpfHxmYyxyPWdjLmdldChyKXx8aHQsX3IocihlLmFwcGx5KG51bGwsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSkpfSx5YS5pbnRlcnBvbGF0ZUhjbD1Mcix5YS5pbnRlcnBvbGF0ZUhzbD1Icix5YS5pbnRlcnBvbGF0ZUxhYj1Gcix5YS5pbnRlcnBvbGF0ZVJvdW5kPVByLHlhLnRyYW5zZm9ybT1mdW5jdGlvbihuKXt2YXIgdD1NYS5jcmVhdGVFbGVtZW50TlMoeWEubnMucHJlZml4LnN2ZywiZyIpO3JldHVybih5YS50cmFuc2Zvcm09ZnVuY3Rpb24obil7aWYobnVsbCE9bil7dC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsbik7dmFyIGU9dC50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpfXJldHVybiBuZXcgT3IoZT9lLm1hdHJpeDpwYyl9KShuKX0sT3IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMudHJhbnNsYXRlKyIpcm90YXRlKCIrdGhpcy5yb3RhdGUrIilza2V3WCgiK3RoaXMuc2tldysiKXNjYWxlKCIrdGhpcy5zY2FsZSsiKSJ9O3ZhciBwYz17YToxLGI6MCxjOjAsZDoxLGU6MCxmOjB9O3lhLmludGVycG9sYXRlVHJhbnNmb3JtPUlyLHlhLmxheW91dD17fSx5YS5sYXlvdXQuYnVuZGxlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe2Zvcih2YXIgdD1bXSxlPS0xLHI9bi5sZW5ndGg7KytlPHI7KXQucHVzaChacihuW2VdKSk7cmV0dXJuIHR9fSx5YS5sYXlvdXQuY2hvcmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIG4sbCxmLGgsZyxwPXt9LGQ9W10sbT15YS5yYW5nZSh1KSx2PVtdO2ZvcihlPVtdLHI9W10sbj0wLGg9LTE7KytoPHU7KXtmb3IobD0wLGc9LTE7KytnPHU7KWwrPWlbaF1bZ107ZC5wdXNoKGwpLHYucHVzaCh5YS5yYW5nZSh1KSksbis9bH1mb3IoYSYmbS5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGEoZFtuXSxkW3RdKX0pLG8mJnYuZm9yRWFjaChmdW5jdGlvbihuLHQpe24uc29ydChmdW5jdGlvbihuLGUpe3JldHVybiBvKGlbdF1bbl0saVt0XVtlXSl9KX0pLG49KDIqJGEtcyp1KS9uLGw9MCxoPS0xOysraDx1Oyl7Zm9yKGY9bCxnPS0xOysrZzx1Oyl7dmFyIHk9bVtoXSxNPXZbeV1bZ10seD1pW3ldW01dLGI9bCxfPWwrPXgqbjtwW3krIi0iK01dPXtpbmRleDp5LHN1YmluZGV4Ok0sc3RhcnRBbmdsZTpiLGVuZEFuZ2xlOl8sdmFsdWU6eH19clt5XT17aW5kZXg6eSxzdGFydEFuZ2xlOmYsZW5kQW5nbGU6bCx2YWx1ZToobC1mKS9ufSxsKz1zfWZvcihoPS0xOysraDx1Oylmb3IoZz1oLTE7KytnPHU7KXt2YXIgdz1wW2grIi0iK2ddLFM9cFtnKyItIitoXTsody52YWx1ZXx8Uy52YWx1ZSkmJmUucHVzaCh3LnZhbHVlPFMudmFsdWU/e3NvdXJjZTpTLHRhcmdldDp3fTp7c291cmNlOncsdGFyZ2V0OlN9KX1jJiZ0KCl9ZnVuY3Rpb24gdCgpe2Uuc29ydChmdW5jdGlvbihuLHQpe3JldHVybiBjKChuLnNvdXJjZS52YWx1ZStuLnRhcmdldC52YWx1ZSkvMiwodC5zb3VyY2UudmFsdWUrdC50YXJnZXQudmFsdWUpLzIpfSl9dmFyIGUscixpLHUsYSxvLGMsbD17fSxzPTA7cmV0dXJuIGwubWF0cml4PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PShpPW4pJiZpLmxlbmd0aCxlPXI9bnVsbCxsKTppfSxsLnBhZGRpbmc9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9bixlPXI9bnVsbCxsKTpzfSxsLnNvcnRHcm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9bixlPXI9bnVsbCxsKTphfSxsLnNvcnRTdWJncm91cHM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bixlPW51bGwsbCk6b30sbC5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPW4sZSYmdCgpLGwpOmN9LGwuY2hvcmRzPWZ1bmN0aW9uKCl7cmV0dXJuIGV8fG4oKSxlfSxsLmdyb3Vwcz1mdW5jdGlvbigpe3JldHVybiByfHxuKCkscn0sbH0seWEubGF5b3V0LmZvcmNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsaSl7aWYodC5wb2ludCE9PW4pe3ZhciB1PXQuY3gtbi54LGE9dC5jeS1uLnksbz0xL01hdGguc3FydCh1KnUrYSphKTtpZihkPihpLWUpKm8pe3ZhciBjPXQuY2hhcmdlKm8qbztyZXR1cm4gbi5weC09dSpjLG4ucHktPWEqYywhMH1pZih0LnBvaW50JiZpc0Zpbml0ZShvKSl7dmFyIGM9dC5wb2ludENoYXJnZSpvKm87bi5weC09dSpjLG4ucHktPWEqY319cmV0dXJuIXQuY2hhcmdlfX1mdW5jdGlvbiB0KG4pe24ucHg9eWEuZXZlbnQueCxuLnB5PXlhLmV2ZW50Lnksby5yZXN1bWUoKX12YXIgZSxyLGksdSxhLG89e30sYz15YS5kaXNwYXRjaCgic3RhcnQiLCJ0aWNrIiwiZW5kIiksbD1bMSwxXSxzPS45LGY9ZGMsaD1tYyxnPS0zMCxwPS4xLGQ9LjgsbT1bXSx2PVtdO3JldHVybiBvLnRpY2s9ZnVuY3Rpb24oKXtpZigocio9Ljk5KTwuMDA1KXJldHVybiBjLmVuZCh7dHlwZToiZW5kIixhbHBoYTpyPTB9KSwhMDt2YXIgdCxlLG8sZixoLGQseSxNLHgsYj1tLmxlbmd0aCxfPXYubGVuZ3RoO2ZvcihlPTA7Xz5lOysrZSlvPXZbZV0sZj1vLnNvdXJjZSxoPW8udGFyZ2V0LE09aC54LWYueCx4PWgueS1mLnksKGQ9TSpNK3gqeCkmJihkPXIqdVtlXSooKGQ9TWF0aC5zcXJ0KGQpKS1pW2VdKS9kLE0qPWQseCo9ZCxoLngtPU0qKHk9Zi53ZWlnaHQvKGgud2VpZ2h0K2Yud2VpZ2h0KSksaC55LT14KnksZi54Kz1NKih5PTEteSksZi55Kz14KnkpO2lmKCh5PXIqcCkmJihNPWxbMF0vMix4PWxbMV0vMixlPS0xLHkpKWZvcig7KytlPGI7KW89bVtlXSxvLngrPShNLW8ueCkqeSxvLnkrPSh4LW8ueSkqeTtpZihnKWZvcihRcih0PXlhLmdlb20ucXVhZHRyZWUobSkscixhKSxlPS0xOysrZTxiOykobz1tW2VdKS5maXhlZHx8dC52aXNpdChuKG8pKTtmb3IoZT0tMTsrK2U8Yjspbz1tW2VdLG8uZml4ZWQ/KG8ueD1vLnB4LG8ueT1vLnB5KTooby54LT0oby5weC0oby5weD1vLngpKSpzLG8ueS09KG8ucHktKG8ucHk9by55KSkqcyk7Yy50aWNrKHt0eXBlOiJ0aWNrIixhbHBoYTpyfSl9LG8ubm9kZXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09bixvKTptfSxvLmxpbmtzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PW4sbyk6dn0sby5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPW4sbyk6bH0sby5saW5rRGlzdGFuY2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjorbixvKTpmfSxvLmRpc3RhbmNlPW8ubGlua0Rpc3RhbmNlLG8ubGlua1N0cmVuZ3RoPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSJmdW5jdGlvbiI9PXR5cGVvZiBuP246K24sbyk6aH0sby5mcmljdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rbixvKTpzfSxvLmNoYXJnZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOituLG8pOmd9LG8uZ3Jhdml0eT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0rbixvKTpwfSxvLnRoZXRhPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPStuLG8pOmR9LG8uYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K24scj9yPW4+MD9uOjA6bj4wJiYoYy5zdGFydCh7dHlwZToic3RhcnQiLGFscGhhOnI9bn0pLHlhLnRpbWVyKG8udGljaykpLG8pOnJ9LG8uc3RhcnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4scil7Zm9yKHZhciBpLHU9dChlKSxhPS0xLG89dS5sZW5ndGg7KythPG87KWlmKCFpc05hTihpPXVbYV1bbl0pKXJldHVybiBpO3JldHVybiBNYXRoLnJhbmRvbSgpKnJ9ZnVuY3Rpb24gdCgpe2lmKCFjKXtmb3IoYz1bXSxyPTA7cD5yOysrciljW3JdPVtdO2ZvcihyPTA7ZD5yOysrcil7dmFyIG49dltyXTtjW24uc291cmNlLmluZGV4XS5wdXNoKG4udGFyZ2V0KSxjW24udGFyZ2V0LmluZGV4XS5wdXNoKG4uc291cmNlKX19cmV0dXJuIGNbZV19dmFyIGUscixjLHMscD1tLmxlbmd0aCxkPXYubGVuZ3RoLHk9bFswXSxNPWxbMV07Zm9yKGU9MDtwPmU7KytlKShzPW1bZV0pLmluZGV4PWUscy53ZWlnaHQ9MDtmb3IoZT0wO2Q+ZTsrK2Upcz12W2VdLCJudW1iZXIiPT10eXBlb2Ygcy5zb3VyY2UmJihzLnNvdXJjZT1tW3Muc291cmNlXSksIm51bWJlciI9PXR5cGVvZiBzLnRhcmdldCYmKHMudGFyZ2V0PW1bcy50YXJnZXRdKSwrK3Muc291cmNlLndlaWdodCwrK3MudGFyZ2V0LndlaWdodDtmb3IoZT0wO3A+ZTsrK2Upcz1tW2VdLGlzTmFOKHMueCkmJihzLng9bigieCIseSkpLGlzTmFOKHMueSkmJihzLnk9bigieSIsTSkpLGlzTmFOKHMucHgpJiYocy5weD1zLngpLGlzTmFOKHMucHkpJiYocy5weT1zLnkpO2lmKGk9W10sImZ1bmN0aW9uIj09dHlwZW9mIGYpZm9yKGU9MDtkPmU7KytlKWlbZV09K2YuY2FsbCh0aGlzLHZbZV0sZSk7ZWxzZSBmb3IoZT0wO2Q+ZTsrK2UpaVtlXT1mO2lmKHU9W10sImZ1bmN0aW9uIj09dHlwZW9mIGgpZm9yKGU9MDtkPmU7KytlKXVbZV09K2guY2FsbCh0aGlzLHZbZV0sZSk7ZWxzZSBmb3IoZT0wO2Q+ZTsrK2UpdVtlXT1oO2lmKGE9W10sImZ1bmN0aW9uIj09dHlwZW9mIGcpZm9yKGU9MDtwPmU7KytlKWFbZV09K2cuY2FsbCh0aGlzLG1bZV0sZSk7ZWxzZSBmb3IoZT0wO3A+ZTsrK2UpYVtlXT1nO3JldHVybiBvLnJlc3VtZSgpfSxvLnJlc3VtZT1mdW5jdGlvbigpe3JldHVybiBvLmFscGhhKC4xKX0sby5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIG8uYWxwaGEoMCl9LG8uZHJhZz1mdW5jdGlvbigpe3JldHVybiBlfHwoZT15YS5iZWhhdmlvci5kcmFnKCkub3JpZ2luKGh0KS5vbigiZHJhZ3N0YXJ0LmZvcmNlIixXcikub24oImRyYWcuZm9yY2UiLHQpLm9uKCJkcmFnZW5kLmZvcmNlIixKcikpLGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMub24oIm1vdXNlb3Zlci5mb3JjZSIsR3IpLm9uKCJtb3VzZW91dC5mb3JjZSIsS3IpLmNhbGwoZSksdm9pZCAwKTplfSx5YS5yZWJpbmQobyxjLCJvbiIpfTt2YXIgZGM9MjAsbWM9MTt5YS5sYXlvdXQuaGllcmFyY2h5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0LGEsbyl7dmFyIGM9aS5jYWxsKGUsdCxhKTtpZih0LmRlcHRoPWEsby5wdXNoKHQpLGMmJihsPWMubGVuZ3RoKSl7Zm9yKHZhciBsLHMsZj0tMSxoPXQuY2hpbGRyZW49W10sZz0wLHA9YSsxOysrZjxsOylzPW4oY1tmXSxwLG8pLHMucGFyZW50PXQsaC5wdXNoKHMpLGcrPXMudmFsdWU7ciYmaC5zb3J0KHIpLHUmJih0LnZhbHVlPWcpfWVsc2UgdSYmKHQudmFsdWU9K3UuY2FsbChlLHQsYSl8fDApO3JldHVybiB0fWZ1bmN0aW9uIHQobixyKXt2YXIgaT1uLmNoaWxkcmVuLGE9MDtpZihpJiYobz1pLmxlbmd0aCkpZm9yKHZhciBvLGM9LTEsbD1yKzE7KytjPG87KWErPXQoaVtjXSxsKTtlbHNlIHUmJihhPSt1LmNhbGwoZSxuLHIpfHwwKTtyZXR1cm4gdSYmKG4udmFsdWU9YSksYX1mdW5jdGlvbiBlKHQpe3ZhciBlPVtdO3JldHVybiBuKHQsMCxlKSxlfXZhciByPXJpLGk9dGksdT1laTtyZXR1cm4gZS5zb3J0PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW4sZSk6cn0sZS5jaGlsZHJlbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1uLGUpOml9LGUudmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9bixlKTp1fSxlLnJldmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIHQobiwwKSxufSxlfSx5YS5sYXlvdXQucGFydGl0aW9uPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbih0LGUscixpKXt2YXIgdT10LmNoaWxkcmVuO2lmKHQueD1lLHQueT10LmRlcHRoKmksdC5keD1yLHQuZHk9aSx1JiYoYT11Lmxlbmd0aCkpe3ZhciBhLG8sYyxsPS0xO2ZvcihyPXQudmFsdWU/ci90LnZhbHVlOjA7KytsPGE7KW4obz11W2xdLGUsYz1vLnZhbHVlKnIsaSksZSs9Y319ZnVuY3Rpb24gdChuKXt2YXIgZT1uLmNoaWxkcmVuLHI9MDtpZihlJiYoaT1lLmxlbmd0aCkpZm9yKHZhciBpLHU9LTE7Kyt1PGk7KXI9TWF0aC5tYXgocix0KGVbdV0pKTtyZXR1cm4gMStyfWZ1bmN0aW9uIGUoZSx1KXt2YXIgYT1yLmNhbGwodGhpcyxlLHUpO3JldHVybiBuKGFbMF0sMCxpWzBdLGlbMV0vdChhWzBdKSksYX12YXIgcj15YS5sYXlvdXQuaGllcmFyY2h5KCksaT1bMSwxXTtyZXR1cm4gZS5zaXplPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW4sZSk6aX0sbmkoZSxyKX0seWEubGF5b3V0LnBpZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odSl7dmFyIGE9dS5tYXAoZnVuY3Rpb24oZSxyKXtyZXR1cm4rdC5jYWxsKG4sZSxyKX0pLG89KygiZnVuY3Rpb24iPT10eXBlb2Ygcj9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpyKSxjPSgoImZ1bmN0aW9uIj09dHlwZW9mIGk/aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6aSktbykveWEuc3VtKGEpLGw9eWEucmFuZ2UodS5sZW5ndGgpO251bGwhPWUmJmwuc29ydChlPT09dmM/ZnVuY3Rpb24obix0KXtyZXR1cm4gYVt0XS1hW25dfTpmdW5jdGlvbihuLHQpe3JldHVybiBlKHVbbl0sdVt0XSl9KTt2YXIgcz1bXTtyZXR1cm4gbC5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciB0O3Nbbl09e2RhdGE6dVtuXSx2YWx1ZTp0PWFbbl0sc3RhcnRBbmdsZTpvLGVuZEFuZ2xlOm8rPXQqY319KSxzfXZhciB0PU51bWJlcixlPXZjLHI9MCxpPTIqJGE7cmV0dXJuIG4udmFsdWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dCxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXQsbik6aX0sbn07dmFyIHZjPXt9O3lhLmxheW91dC5zdGFjaz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obyxjKXt2YXIgbD1vLm1hcChmdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwobixlLHIpfSkscz1sLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm5bdS5jYWxsKG4sdCxlKSxhLmNhbGwobix0LGUpXX0pfSksZj1lLmNhbGwobixzLGMpO2w9eWEucGVybXV0ZShsLGYpLHM9eWEucGVybXV0ZShzLGYpO3ZhciBoLGcscCxkPXIuY2FsbChuLHMsYyksbT1sLmxlbmd0aCx2PWxbMF0ubGVuZ3RoO2ZvcihnPTA7dj5nOysrZylmb3IoaS5jYWxsKG4sbFswXVtnXSxwPWRbZ10sc1swXVtnXVsxXSksaD0xO20+aDsrK2gpaS5jYWxsKG4sbFtoXVtnXSxwKz1zW2gtMV1bZ11bMV0sc1toXVtnXVsxXSk7cmV0dXJuIG99dmFyIHQ9aHQsZT1jaSxyPWxpLGk9b2ksdT11aSxhPWFpO3JldHVybiBuLnZhbHVlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLG4pOnR9LG4ub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp5Yy5nZXQodCl8fGNpLG4pOmV9LG4ub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TWMuZ2V0KHQpfHxsaSxuKTpyfSxuLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCxuKTp1fSxuLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dCxuKTphfSxuLm91dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG4pOml9LG59O3ZhciB5Yz15YS5tYXAoeyJpbnNpZGUtb3V0IjpmdW5jdGlvbihuKXt2YXIgdCxlLHI9bi5sZW5ndGgsaT1uLm1hcChzaSksdT1uLm1hcChmaSksYT15YS5yYW5nZShyKS5zb3J0KGZ1bmN0aW9uKG4sdCl7cmV0dXJuIGlbbl0taVt0XX0pLG89MCxjPTAsbD1bXSxzPVtdO2Zvcih0PTA7cj50OysrdCllPWFbdF0sYz5vPyhvKz11W2VdLGwucHVzaChlKSk6KGMrPXVbZV0scy5wdXNoKGUpKTtyZXR1cm4gcy5yZXZlcnNlKCkuY29uY2F0KGwpfSxyZXZlcnNlOmZ1bmN0aW9uKG4pe3JldHVybiB5YS5yYW5nZShuLmxlbmd0aCkucmV2ZXJzZSgpfSwiZGVmYXVsdCI6Y2l9KSxNYz15YS5tYXAoe3NpbGhvdWV0dGU6ZnVuY3Rpb24obil7dmFyIHQsZSxyLGk9bi5sZW5ndGgsdT1uWzBdLmxlbmd0aCxhPVtdLG89MCxjPVtdO2ZvcihlPTA7dT5lOysrZSl7Zm9yKHQ9MCxyPTA7aT50O3QrKylyKz1uW3RdW2VdWzFdO3I+byYmKG89ciksYS5wdXNoKHIpfWZvcihlPTA7dT5lOysrZSljW2VdPShvLWFbZV0pLzI7cmV0dXJuIGN9LHdpZ2dsZTpmdW5jdGlvbihuKXt2YXIgdCxlLHIsaSx1LGEsbyxjLGwscz1uLmxlbmd0aCxmPW5bMF0saD1mLmxlbmd0aCxnPVtdO2ZvcihnWzBdPWM9bD0wLGU9MTtoPmU7KytlKXtmb3IodD0wLGk9MDtzPnQ7Kyt0KWkrPW5bdF1bZV1bMV07Zm9yKHQ9MCx1PTAsbz1mW2VdWzBdLWZbZS0xXVswXTtzPnQ7Kyt0KXtmb3Iocj0wLGE9KG5bdF1bZV1bMV0tblt0XVtlLTFdWzFdKS8oMipvKTt0PnI7KytyKWErPShuW3JdW2VdWzFdLW5bcl1bZS0xXVsxXSkvbzt1Kz1hKm5bdF1bZV1bMV19Z1tlXT1jLT1pP3UvaSpvOjAsbD5jJiYobD1jKX1mb3IoZT0wO2g+ZTsrK2UpZ1tlXS09bDtyZXR1cm4gZ30sZXhwYW5kOmZ1bmN0aW9uKG4pe3ZhciB0LGUscixpPW4ubGVuZ3RoLHU9blswXS5sZW5ndGgsYT0xL2ksbz1bXTtmb3IoZT0wO3U+ZTsrK2Upe2Zvcih0PTAscj0wO2k+dDt0Kyspcis9blt0XVtlXVsxXTtpZihyKWZvcih0PTA7aT50O3QrKyluW3RdW2VdWzFdLz1yO2Vsc2UgZm9yKHQ9MDtpPnQ7dCsrKW5bdF1bZV1bMV09YX1mb3IoZT0wO3U+ZTsrK2Upb1tlXT0wO3JldHVybiBvfSx6ZXJvOmxpfSk7eWEubGF5b3V0Lmhpc3RvZ3JhbT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obix1KXtmb3IodmFyIGEsbyxjPVtdLGw9bi5tYXAoZSx0aGlzKSxzPXIuY2FsbCh0aGlzLGwsdSksZj1pLmNhbGwodGhpcyxzLGwsdSksdT0tMSxoPWwubGVuZ3RoLGc9Zi5sZW5ndGgtMSxwPXQ/MToxL2g7Kyt1PGc7KWE9Y1t1XT1bXSxhLmR4PWZbdSsxXS0oYS54PWZbdV0pLGEueT0wO2lmKGc+MClmb3IodT0tMTsrK3U8aDspbz1sW3VdLG8+PXNbMF0mJm88PXNbMV0mJihhPWNbeWEuYmlzZWN0KGYsbywxLGcpLTFdLGEueSs9cCxhLnB1c2goblt1XSkpO3JldHVybiBjfXZhciB0PSEwLGU9TnVtYmVyLHI9ZGksaT1naTtyZXR1cm4gbi52YWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG4pOmV9LG4ucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZnQodCksbik6cn0sbi5iaW5zPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJudW1iZXIiPT10eXBlb2YgdD9mdW5jdGlvbihuKXtyZXR1cm4gcGkobix0KX06ZnQodCksbik6aX0sbi5mcmVxdWVuY3k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ISFlLG4pOnR9LG59LHlhLmxheW91dC50cmVlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe2Z1bmN0aW9uIGEobix0KXt2YXIgcj1uLmNoaWxkcmVuLGk9bi5fdHJlZTtpZihyJiYodT1yLmxlbmd0aCkpe2Zvcih2YXIgdSxvLGwscz1yWzBdLGY9cyxoPS0xOysraDx1OylsPXJbaF0sYShsLG8pLGY9YyhsLG8sZiksbz1sO1NpKG4pO3ZhciBnPS41KihzLl90cmVlLnByZWxpbStsLl90cmVlLnByZWxpbSk7dD8oaS5wcmVsaW09dC5fdHJlZS5wcmVsaW0rZShuLHQpLGkubW9kPWkucHJlbGltLWcpOmkucHJlbGltPWd9ZWxzZSB0JiYoaS5wcmVsaW09dC5fdHJlZS5wcmVsaW0rZShuLHQpKX1mdW5jdGlvbiBvKG4sdCl7bi54PW4uX3RyZWUucHJlbGltK3Q7dmFyIGU9bi5jaGlsZHJlbjtpZihlJiYocj1lLmxlbmd0aCkpe3ZhciByLGk9LTE7Zm9yKHQrPW4uX3RyZWUubW9kOysraTxyOylvKGVbaV0sdCl9fWZ1bmN0aW9uIGMobix0LHIpe2lmKHQpe2Zvcih2YXIgaSx1PW4sYT1uLG89dCxjPW4ucGFyZW50LmNoaWxkcmVuWzBdLGw9dS5fdHJlZS5tb2Qscz1hLl90cmVlLm1vZCxmPW8uX3RyZWUubW9kLGg9Yy5fdHJlZS5tb2Q7bz15aShvKSx1PXZpKHUpLG8mJnU7KWM9dmkoYyksYT15aShhKSxhLl90cmVlLmFuY2VzdG9yPW4saT1vLl90cmVlLnByZWxpbStmLXUuX3RyZWUucHJlbGltLWwrZShvLHUpLGk+MCYmKEVpKGtpKG8sbixyKSxuLGkpLGwrPWkscys9aSksZis9by5fdHJlZS5tb2QsbCs9dS5fdHJlZS5tb2QsaCs9Yy5fdHJlZS5tb2Qscys9YS5fdHJlZS5tb2Q7byYmIXlpKGEpJiYoYS5fdHJlZS50aHJlYWQ9byxhLl90cmVlLm1vZCs9Zi1zKSx1JiYhdmkoYykmJihjLl90cmVlLnRocmVhZD11LGMuX3RyZWUubW9kKz1sLWgscj1uKX1yZXR1cm4gcn12YXIgbD10LmNhbGwodGhpcyxuLHUpLHM9bFswXTt3aShzLGZ1bmN0aW9uKG4sdCl7bi5fdHJlZT17YW5jZXN0b3I6bixwcmVsaW06MCxtb2Q6MCxjaGFuZ2U6MCxzaGlmdDowLG51bWJlcjp0P3QuX3RyZWUubnVtYmVyKzE6MH19KSxhKHMpLG8ocywtcy5fdHJlZS5wcmVsaW0pO3ZhciBmPU1pKHMsYmkpLGg9TWkocyx4aSksZz1NaShzLF9pKSxwPWYueC1lKGYsaCkvMixkPWgueCtlKGgsZikvMixtPWcuZGVwdGh8fDE7cmV0dXJuIHdpKHMsaT9mdW5jdGlvbihuKXtuLngqPXJbMF0sbi55PW4uZGVwdGgqclsxXSxkZWxldGUgbi5fdHJlZX06ZnVuY3Rpb24obil7bi54PShuLngtcCkvKGQtcCkqclswXSxuLnk9bi5kZXB0aC9tKnJbMV0sZGVsZXRlIG4uX3RyZWV9KSxsfXZhciB0PXlhLmxheW91dC5oaWVyYXJjaHkoKS5zb3J0KG51bGwpLnZhbHVlKG51bGwpLGU9bWkscj1bMSwxXSxpPSExO3JldHVybiBuLnNlcGFyYXRpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLnNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbD09KHI9dCksbik6aT9udWxsOnJ9LG4ubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9bnVsbCE9KHI9dCksbik6aT9yOm51bGx9LG5pKG4sdCl9LHlhLmxheW91dC5wYWNrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBhPWUuY2FsbCh0aGlzLG4sdSksbz1hWzBdLGM9aVswXSxsPWlbMV0scz1udWxsPT10P01hdGguc3FydDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OmZ1bmN0aW9uKCl7cmV0dXJuIHR9O2lmKG8ueD1vLnk9MCx3aShvLGZ1bmN0aW9uKG4pe24ucj0rcyhuLnZhbHVlKX0pLHdpKG8sQ2kpLHIpe3ZhciBmPXIqKHQ/MTpNYXRoLm1heCgyKm8uci9jLDIqby5yL2wpKS8yO3dpKG8sZnVuY3Rpb24obil7bi5yKz1mfSksd2kobyxDaSksd2kobyxmdW5jdGlvbihuKXtuLnItPWZ9KX1yZXR1cm4gamkobyxjLzIsbC8yLHQ/MToxL01hdGgubWF4KDIqby5yL2MsMipvLnIvbCkpLGF9dmFyIHQsZT15YS5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChBaSkscj0wLGk9WzEsMV07cmV0dXJuIG4uc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG4pOml9LG4ucmFkaXVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW51bGw9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6K2Usbik6dH0sbi5wYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG4pOnJ9LG5pKG4sZSl9LHlhLmxheW91dC5jbHVzdGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHUpe3ZhciBhLG89dC5jYWxsKHRoaXMsbix1KSxjPW9bMF0sbD0wO3dpKGMsZnVuY3Rpb24obil7dmFyIHQ9bi5jaGlsZHJlbjt0JiZ0Lmxlbmd0aD8obi54PUZpKHQpLG4ueT1IaSh0KSk6KG4ueD1hP2wrPWUobixhKTowLG4ueT0wLGE9bil9KTt2YXIgcz1QaShjKSxmPU9pKGMpLGg9cy54LWUocyxmKS8yLGc9Zi54K2UoZixzKS8yO3JldHVybiB3aShjLGk/ZnVuY3Rpb24obil7bi54PShuLngtYy54KSpyWzBdLG4ueT0oYy55LW4ueSkqclsxXX06ZnVuY3Rpb24obil7bi54PShuLngtaCkvKGctaCkqclswXSxuLnk9KDEtKGMueT9uLnkvYy55OjEpKSpyWzFdfSksb312YXIgdD15YS5sYXlvdXQuaGllcmFyY2h5KCkuc29ydChudWxsKS52YWx1ZShudWxsKSxlPW1pLHI9WzEsMV0saT0hMTtyZXR1cm4gbi5zZXBhcmF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsbik6ZX0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGw9PShyPXQpLG4pOmk/bnVsbDpyfSxuLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW51bGwhPShyPXQpLG4pOmk/cjpudWxsfSxuaShuLHQpfSx5YS5sYXlvdXQudHJlZW1hcD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obix0KXtmb3IodmFyIGUscixpPS0xLHU9bi5sZW5ndGg7KytpPHU7KXI9KGU9bltpXSkudmFsdWUqKDA+dD8wOnQpLGUuYXJlYT1pc05hTihyKXx8MD49cj8wOnJ9ZnVuY3Rpb24gdChlKXt2YXIgdT1lLmNoaWxkcmVuO2lmKHUmJnUubGVuZ3RoKXt2YXIgYSxvLGMsbD1mKGUpLHM9W10saD11LnNsaWNlKCkscD0xLzAsZD0ic2xpY2UiPT09Zz9sLmR4OiJkaWNlIj09PWc/bC5keToic2xpY2UtZGljZSI9PT1nPzEmZS5kZXB0aD9sLmR5OmwuZHg6TWF0aC5taW4obC5keCxsLmR5KTtmb3IobihoLGwuZHgqbC5keS9lLnZhbHVlKSxzLmFyZWE9MDsoYz1oLmxlbmd0aCk+MDspcy5wdXNoKGE9aFtjLTFdKSxzLmFyZWErPWEuYXJlYSwic3F1YXJpZnkiIT09Z3x8KG89cihzLGQpKTw9cD8oaC5wb3AoKSxwPW8pOihzLmFyZWEtPXMucG9wKCkuYXJlYSxpKHMsZCxsLCExKSxkPU1hdGgubWluKGwuZHgsbC5keSkscy5sZW5ndGg9cy5hcmVhPTAscD0xLzApO3MubGVuZ3RoJiYoaShzLGQsbCwhMCkscy5sZW5ndGg9cy5hcmVhPTApLHUuZm9yRWFjaCh0KX19ZnVuY3Rpb24gZSh0KXt2YXIgcj10LmNoaWxkcmVuO2lmKHImJnIubGVuZ3RoKXt2YXIgdSxhPWYodCksbz1yLnNsaWNlKCksYz1bXTtmb3IobihvLGEuZHgqYS5keS90LnZhbHVlKSxjLmFyZWE9MDt1PW8ucG9wKCk7KWMucHVzaCh1KSxjLmFyZWErPXUuYXJlYSxudWxsIT11LnomJihpKGMsdS56P2EuZHg6YS5keSxhLCFvLmxlbmd0aCksYy5sZW5ndGg9Yy5hcmVhPTApO3IuZm9yRWFjaChlKX19ZnVuY3Rpb24gcihuLHQpe2Zvcih2YXIgZSxyPW4uYXJlYSxpPTAsdT0xLzAsYT0tMSxvPW4ubGVuZ3RoOysrYTxvOykoZT1uW2FdLmFyZWEpJiYodT5lJiYodT1lKSxlPmkmJihpPWUpKTtyZXR1cm4gcio9cix0Kj10LHI/TWF0aC5tYXgodCppKnAvcixyLyh0KnUqcCkpOjEvMH1mdW5jdGlvbiBpKG4sdCxlLHIpe3ZhciBpLHU9LTEsYT1uLmxlbmd0aCxvPWUueCxsPWUueSxzPXQ/YyhuLmFyZWEvdCk6MDtpZih0PT1lLmR4KXtmb3IoKHJ8fHM+ZS5keSkmJihzPWUuZHkpOysrdTxhOylpPW5bdV0saS54PW8saS55PWwsaS5keT1zLG8rPWkuZHg9TWF0aC5taW4oZS54K2UuZHgtbyxzP2MoaS5hcmVhL3MpOjApO2kuej0hMCxpLmR4Kz1lLngrZS5keC1vLGUueSs9cyxlLmR5LT1zfWVsc2V7Zm9yKChyfHxzPmUuZHgpJiYocz1lLmR4KTsrK3U8YTspaT1uW3VdLGkueD1vLGkueT1sLGkuZHg9cyxsKz1pLmR5PU1hdGgubWluKGUueStlLmR5LWwscz9jKGkuYXJlYS9zKTowKTtpLno9ITEsaS5keSs9ZS55K2UuZHktbCxlLngrPXMsZS5keC09c319ZnVuY3Rpb24gdShyKXt2YXIgaT1hfHxvKHIpLHU9aVswXTtyZXR1cm4gdS54PTAsdS55PTAsdS5keD1sWzBdLHUuZHk9bFsxXSxhJiZvLnJldmFsdWUodSksbihbdV0sdS5keCp1LmR5L3UudmFsdWUpLChhP2U6dCkodSksaCYmKGE9aSksaX12YXIgYSxvPXlhLmxheW91dC5oaWVyYXJjaHkoKSxjPU1hdGgucm91bmQsbD1bMSwxXSxzPW51bGwsZj1ZaSxoPSExLGc9InNxdWFyaWZ5IixwPS41KigxK01hdGguc3FydCg1KSk7cmV0dXJuIHUuc2l6ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1uLHUpOmx9LHUucGFkZGluZz1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KHQpe3ZhciBlPW4uY2FsbCh1LHQsdC5kZXB0aCk7cmV0dXJuIG51bGw9PWU/WWkodCk6UmkodCwibnVtYmVyIj09dHlwZW9mIGU/W2UsZSxlLGVdOmUpfWZ1bmN0aW9uIGUodCl7cmV0dXJuIFJpKHQsbil9aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHM7dmFyIHI7cmV0dXJuIGY9bnVsbD09KHM9bik/WWk6ImZ1bmN0aW9uIj09KHI9dHlwZW9mIG4pP3Q6Im51bWJlciI9PT1yPyhuPVtuLG4sbixuXSxlKTplLHV9LHUucm91bmQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9bj9NYXRoLnJvdW5kOk51bWJlcix1KTpjIT1OdW1iZXJ9LHUuc3RpY2t5PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPW4sYT1udWxsLHUpOmh9LHUucmF0aW89ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9bix1KTpwfSx1Lm1vZGU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9bisiIix1KTpnfSxuaSh1LG8pfSx5YS5yYW5kb209e25vcm1hbDpmdW5jdGlvbihuLHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIDI+ZSYmKHQ9MSksMT5lJiYobj0wKSxmdW5jdGlvbigpe3ZhciBlLHIsaTtkbyBlPTIqTWF0aC5yYW5kb20oKS0xLHI9MipNYXRoLnJhbmRvbSgpLTEsaT1lKmUrcipyO3doaWxlKCFpfHxpPjEpO3JldHVybiBuK3QqZSpNYXRoLnNxcnQoLTIqTWF0aC5sb2coaSkvaSl9fSxsb2dOb3JtYWw6ZnVuY3Rpb24oKXt2YXIgbj15YS5yYW5kb20ubm9ybWFsLmFwcGx5KHlhLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKG4oKSl9fSxpcndpbkhhbGw6ZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsZT0wO24+ZTtlKyspdCs9TWF0aC5yYW5kb20oKTtyZXR1cm4gdC9ufX19LHlhLnNjYWxlPXt9O3ZhciB4Yz17Zmxvb3I6aHQsY2VpbDpodH07eWEuc2NhbGUubGluZWFyPWZ1bmN0aW9uKCl7cmV0dXJuICRpKFswLDFdLFswLDFdLHhyLCExKX0seWEuc2NhbGUubG9nPWZ1bmN0aW9uKCl7cmV0dXJuIHR1KHlhLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCxNYXRoLkxOMTBdKSwxMCxldSxydSxbMSwxMF0pfTt2YXIgYmM9eWEuZm9ybWF0KCIuMGUiKTt5YS5zY2FsZS5wb3c9ZnVuY3Rpb24oKXtyZXR1cm4gYXUoeWEuc2NhbGUubGluZWFyKCksMSxbMCwxXSl9LHlhLnNjYWxlLnNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4geWEuc2NhbGUucG93KCkuZXhwb25lbnQoLjUpfSx5YS5zY2FsZS5vcmRpbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIGN1KFtdLHt0OiJyYW5nZSIsYTpbW11dfSl9LHlhLnNjYWxlLmNhdGVnb3J5MTA9ZnVuY3Rpb24oKXtyZXR1cm4geWEuc2NhbGUub3JkaW5hbCgpLnJhbmdlKF9jKX0seWEuc2NhbGUuY2F0ZWdvcnkyMD1mdW5jdGlvbigpe3JldHVybiB5YS5zY2FsZS5vcmRpbmFsKCkucmFuZ2Uod2MpfSx5YS5zY2FsZS5jYXRlZ29yeTIwYj1mdW5jdGlvbigpe3JldHVybiB5YS5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoU2MpfSx5YS5zY2FsZS5jYXRlZ29yeTIwYz1mdW5jdGlvbigpe3JldHVybiB5YS5zY2FsZS5vcmRpbmFsKCkucmFuZ2UoRWMpfTt2YXIgX2M9WyIjMWY3N2I0IiwiI2ZmN2YwZSIsIiMyY2EwMmMiLCIjZDYyNzI4IiwiIzk0NjdiZCIsIiM4YzU2NGIiLCIjZTM3N2MyIiwiIzdmN2Y3ZiIsIiNiY2JkMjIiLCIjMTdiZWNmIl0sd2M9WyIjMWY3N2I0IiwiI2FlYzdlOCIsIiNmZjdmMGUiLCIjZmZiYjc4IiwiIzJjYTAyYyIsIiM5OGRmOGEiLCIjZDYyNzI4IiwiI2ZmOTg5NiIsIiM5NDY3YmQiLCIjYzViMGQ1IiwiIzhjNTY0YiIsIiNjNDljOTQiLCIjZTM3N2MyIiwiI2Y3YjZkMiIsIiM3ZjdmN2YiLCIjYzdjN2M3IiwiI2JjYmQyMiIsIiNkYmRiOGQiLCIjMTdiZWNmIiwiIzllZGFlNSJdLFNjPVsiIzM5M2I3OSIsIiM1MjU0YTMiLCIjNmI2ZWNmIiwiIzljOWVkZSIsIiM2Mzc5MzkiLCIjOGNhMjUyIiwiI2I1Y2Y2YiIsIiNjZWRiOWMiLCIjOGM2ZDMxIiwiI2JkOWUzOSIsIiNlN2JhNTIiLCIjZTdjYjk0IiwiIzg0M2MzOSIsIiNhZDQ5NGEiLCIjZDY2MTZiIiwiI2U3OTY5YyIsIiM3YjQxNzMiLCIjYTU1MTk0IiwiI2NlNmRiZCIsIiNkZTllZDYiXSxFYz1bIiMzMTgyYmQiLCIjNmJhZWQ2IiwiIzllY2FlMSIsIiNjNmRiZWYiLCIjZTY1NTBkIiwiI2ZkOGQzYyIsIiNmZGFlNmIiLCIjZmRkMGEyIiwiIzMxYTM1NCIsIiM3NGM0NzYiLCIjYTFkOTliIiwiI2M3ZTljMCIsIiM3NTZiYjEiLCIjOWU5YWM4IiwiI2JjYmRkYyIsIiNkYWRhZWIiLCIjNjM2MzYzIiwiIzk2OTY5NiIsIiNiZGJkYmQiLCIjZDlkOWQ5Il07eWEuc2NhbGUucXVhbnRpbGU9ZnVuY3Rpb24oKXtyZXR1cm4gbHUoW10sW10pfSx5YS5zY2FsZS5xdWFudGl6ZT1mdW5jdGlvbigpe3JldHVybiBzdSgwLDEsWzAsMV0pfSx5YS5zY2FsZS50aHJlc2hvbGQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnUoWy41XSxbMCwxXSl9LHlhLnNjYWxlLmlkZW50aXR5PWZ1bmN0aW9uKCl7cmV0dXJuIGh1KFswLDFdKX0seWEuc3ZnLmFyYz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx1PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGE9ci5hcHBseSh0aGlzLGFyZ3VtZW50cykra2Msbz1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKStrYyxjPShhPm8mJihjPWEsYT1vLG89Yyksby1hKSxsPSRhPmM/IjAiOiIxIixzPU1hdGguY29zKGEpLGY9TWF0aC5zaW4oYSksaD1NYXRoLmNvcyhvKSxnPU1hdGguc2luKG8pO3JldHVybiBjPj1BYz9uPyJNMCwiK3UrIkEiK3UrIiwiK3UrIiAwIDEsMSAwLCIrLXUrIkEiK3UrIiwiK3UrIiAwIDEsMSAwLCIrdSsiTTAsIituKyJBIituKyIsIituKyIgMCAxLDAgMCwiKy1uKyJBIituKyIsIituKyIgMCAxLDAgMCwiK24rIloiOiJNMCwiK3UrIkEiK3UrIiwiK3UrIiAwIDEsMSAwLCIrLXUrIkEiK3UrIiwiK3UrIiAwIDEsMSAwLCIrdSsiWiI6bj8iTSIrdSpzKyIsIit1KmYrIkEiK3UrIiwiK3UrIiAwICIrbCsiLDEgIit1KmgrIiwiK3UqZysiTCIrbipoKyIsIituKmcrIkEiK24rIiwiK24rIiAwICIrbCsiLDAgIituKnMrIiwiK24qZisiWiI6Ik0iK3UqcysiLCIrdSpmKyJBIit1KyIsIit1KyIgMCAiK2wrIiwxICIrdSpoKyIsIit1KmcrIkwwLDAiKyJaIn12YXIgdD1ndSxlPXB1LHI9ZHUsaT1tdTtyZXR1cm4gbi5pbm5lclJhZGl1cz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1mdChlKSxuKTp0fSxuLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWZ0KHQpLG4pOmV9LG4uc3RhcnRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1mdCh0KSxuKTpyfSxuLmVuZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWZ0KHQpLG4pOml9LG4uY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgbj0odC5hcHBseSh0aGlzLGFyZ3VtZW50cykrZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsdT0oci5hcHBseSh0aGlzLGFyZ3VtZW50cykraS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIra2M7cmV0dXJuW01hdGguY29zKHUpKm4sTWF0aC5zaW4odSkqbl19LG59O3ZhciBrYz0tJGEvMixBYz0yKiRhLTFlLTY7eWEuc3ZnLmxpbmUucmFkaWFsPWZ1bmN0aW9uKCl7dmFyIG49UGUodnUpO3JldHVybiBuLnJhZGl1cz1uLngsZGVsZXRlIG4ueCxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG59LFZlLnJldmVyc2U9WGUsWGUucmV2ZXJzZT1WZSx5YS5zdmcuYXJlYT1mdW5jdGlvbigpe3JldHVybiB5dShodCl9LHlhLnN2Zy5hcmVhLnJhZGlhbD1mdW5jdGlvbigpe3ZhciBuPXl1KHZ1KTtyZXR1cm4gbi5yYWRpdXM9bi54LGRlbGV0ZSBuLngsbi5pbm5lclJhZGl1cz1uLngwLGRlbGV0ZSBuLngwLG4ub3V0ZXJSYWRpdXM9bi54MSxkZWxldGUgbi54MSxuLmFuZ2xlPW4ueSxkZWxldGUgbi55LG4uc3RhcnRBbmdsZT1uLnkwLGRlbGV0ZSBuLnkwLG4uZW5kQW5nbGU9bi55MSxkZWxldGUgbi55MSxufSx5YS5zdmcuY2hvcmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4sbyl7dmFyIGM9dCh0aGlzLHUsbixvKSxsPXQodGhpcyxhLG4sbyk7cmV0dXJuIk0iK2MucDArcihjLnIsYy5wMSxjLmExLWMuYTApKyhlKGMsbCk/aShjLnIsYy5wMSxjLnIsYy5wMCk6aShjLnIsYy5wMSxsLnIsbC5wMCkrcihsLnIsbC5wMSxsLmExLWwuYTApK2kobC5yLGwucDEsYy5yLGMucDApKSsiWiJ9ZnVuY3Rpb24gdChuLHQsZSxyKXt2YXIgaT10LmNhbGwobixlLHIpLHU9by5jYWxsKG4saSxyKSxhPWMuY2FsbChuLGkscikra2Mscz1sLmNhbGwobixpLHIpK2tjO3JldHVybntyOnUsYTA6YSxhMTpzLHAwOlt1Kk1hdGguY29zKGEpLHUqTWF0aC5zaW4oYSldLHAxOlt1Kk1hdGguY29zKHMpLHUqTWF0aC5zaW4ocyldfX1mdW5jdGlvbiBlKG4sdCl7cmV0dXJuIG4uYTA9PXQuYTAmJm4uYTE9PXQuYTF9ZnVuY3Rpb24gcihuLHQsZSl7cmV0dXJuIkEiK24rIiwiK24rIiAwICIrICsoZT4kYSkrIiwxICIrdH1mdW5jdGlvbiBpKG4sdCxlLHIpe3JldHVybiJRIDAsMCAiK3J9dmFyIHU9TmUsYT1xZSxvPU11LGM9ZHUsbD1tdTtyZXR1cm4gbi5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ZnQodCksbik6b30sbi5zb3VyY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZnQodCksbik6dX0sbi50YXJnZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ZnQodCksbik6YX0sbi5zdGFydEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWZ0KHQpLG4pOmN9LG4uZW5kQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZnQodCksbik6bH0sbn0seWEuc3ZnLmRpYWdvbmFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLGkpe3ZhciB1PXQuY2FsbCh0aGlzLG4saSksYT1lLmNhbGwodGhpcyxuLGkpLG89KHUueSthLnkpLzIsYz1bdSx7eDp1LngseTpvfSx7eDphLngseTpvfSxhXTtyZXR1cm4gYz1jLm1hcChyKSwiTSIrY1swXSsiQyIrY1sxXSsiICIrY1syXSsiICIrY1szXX12YXIgdD1OZSxlPXFlLHI9eHU7cmV0dXJuIG4uc291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWZ0KGUpLG4pOnR9LG4udGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWZ0KHQpLG4pOmV9LG4ucHJvamVjdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LG4pOnJ9LG59LHlhLnN2Zy5kaWFnb25hbC5yYWRpYWw9ZnVuY3Rpb24oKXt2YXIgbj15YS5zdmcuZGlhZ29uYWwoKSx0PXh1LGU9bi5wcm9qZWN0aW9uO3JldHVybiBuLnByb2plY3Rpb249ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShidSh0PW4pKTp0fSxufSx5YS5zdmcuc3ltYm9sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihuLHIpe3JldHVybihOYy5nZXQodC5jYWxsKHRoaXMsbixyKSl8fFN1KShlLmNhbGwodGhpcyxuLHIpKX12YXIgdD13dSxlPV91O3JldHVybiBuLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZnQoZSksbik6dH0sbi5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWZ0KHQpLG4pOmV9LG59O3ZhciBOYz15YS5tYXAoe2NpcmNsZTpTdSxjcm9zczpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobi81KS8yO3JldHVybiJNIistMyp0KyIsIistdCsiSCIrLXQrIlYiKy0zKnQrIkgiK3QrIlYiKy10KyJIIiszKnQrIlYiK3QrIkgiK3QrIlYiKzMqdCsiSCIrLXQrIlYiK3QrIkgiKy0zKnQrIloifSxkaWFtb25kOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuLygyKkNjKSksZT10KkNjO3JldHVybiJNMCwiKy10KyJMIitlKyIsMCIrIiAwLCIrdCsiICIrLWUrIiwwIisiWiJ9LHNxdWFyZTpmdW5jdGlvbihuKXt2YXIgdD1NYXRoLnNxcnQobikvMjtyZXR1cm4iTSIrLXQrIiwiKy10KyJMIit0KyIsIistdCsiICIrdCsiLCIrdCsiICIrLXQrIiwiK3QrIloifSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24obil7dmFyIHQ9TWF0aC5zcXJ0KG4vVGMpLGU9dCpUYy8yO3JldHVybiJNMCwiK2UrIkwiK3QrIiwiKy1lKyIgIistdCsiLCIrLWUrIloifSwidHJpYW5nbGUtdXAiOmZ1bmN0aW9uKG4pe3ZhciB0PU1hdGguc3FydChuL1RjKSxlPXQqVGMvMjtyZXR1cm4iTTAsIistZSsiTCIrdCsiLCIrZSsiICIrLXQrIiwiK2UrIloifX0pO3lhLnN2Zy5zeW1ib2xUeXBlcz1OYy5rZXlzKCk7dmFyIHFjLFRjPU1hdGguc3FydCgzKSxDYz1NYXRoLnRhbigzMCpHYSksemM9W10sRGM9MCxqYz17ZWFzZTpBcixkZWxheTowLGR1cmF0aW9uOjI1MH07emMuY2FsbD1GYS5jYWxsLHpjLmVtcHR5PUZhLmVtcHR5LHpjLm5vZGU9RmEubm9kZSx6Yy5zaXplPUZhLnNpemUseWEudHJhbnNpdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9xYz9uLnRyYW5zaXRpb24oKTpuOllhLnRyYW5zaXRpb24oKX0seWEudHJhbnNpdGlvbi5wcm90b3R5cGU9emMsemMuc2VsZWN0PWZ1bmN0aW9uKG4pe3ZhciB0LGUscixpPXRoaXMuaWQsdT1bXTtuPXYobik7Zm9yKHZhciBhPS0xLG89dGhpcy5sZW5ndGg7KythPG87KXt1LnB1c2godD1bXSk7Zm9yKHZhciBjPXRoaXNbYV0sbD0tMSxzPWMubGVuZ3RoOysrbDxzOykocj1jW2xdKSYmKGU9bi5jYWxsKHIsci5fX2RhdGFfXyxsKSk/KCJfX2RhdGFfXyJpbiByJiYoZS5fX2RhdGFfXz1yLl9fZGF0YV9fKSxOdShlLGwsaSxyLl9fdHJhbnNpdGlvbl9fW2ldKSx0LnB1c2goZSkpOnQucHVzaChudWxsKX1yZXR1cm4gRXUodSxpKX0semMuc2VsZWN0QWxsPWZ1bmN0aW9uKG4pe3ZhciB0LGUscixpLHUsYT10aGlzLmlkLG89W107bj15KG4pO2Zvcih2YXIgYz0tMSxsPXRoaXMubGVuZ3RoOysrYzxsOylmb3IodmFyIHM9dGhpc1tjXSxmPS0xLGg9cy5sZW5ndGg7KytmPGg7KWlmKHI9c1tmXSl7dT1yLl9fdHJhbnNpdGlvbl9fW2FdLGU9bi5jYWxsKHIsci5fX2RhdGFfXyxmKSxvLnB1c2godD1bXSk7Zm9yKHZhciBnPS0xLHA9ZS5sZW5ndGg7KytnPHA7KShpPWVbZ10pJiZOdShpLGcsYSx1KSx0LnB1c2goaSl9cmV0dXJuIEV1KG8sYSl9LHpjLmZpbHRlcj1mdW5jdGlvbihuKXt2YXIgdCxlLHIsaT1bXTsiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49TihuKSk7Zm9yKHZhciB1PTAsYT10aGlzLmxlbmd0aDthPnU7dSsrKXtpLnB1c2godD1bXSk7Zm9yKHZhciBlPXRoaXNbdV0sbz0wLGM9ZS5sZW5ndGg7Yz5vO28rKykocj1lW29dKSYmbi5jYWxsKHIsci5fX2RhdGFfXyxvKSYmdC5wdXNoKHIpfXJldHVybiBFdShpLHRoaXMuaWQsdGhpcy50aW1lKS5lYXNlKHRoaXMuZWFzZSgpKX0semMudHdlZW49ZnVuY3Rpb24obix0KXt2YXIgZT10aGlzLmlkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dGhpcy5ub2RlKCkuX190cmFuc2l0aW9uX19bZV0udHdlZW4uZ2V0KG4pOlQodGhpcyxudWxsPT10P2Z1bmN0aW9uKHQpe3QuX190cmFuc2l0aW9uX19bZV0udHdlZW4ucmVtb3ZlKG4pfTpmdW5jdGlvbihyKXtyLl9fdHJhbnNpdGlvbl9fW2VdLnR3ZWVuLnNldChuLHQpfSl9LHpjLmF0dHI9ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUobyl9ZnVuY3Rpb24gcigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlMoby5zcGFjZSxvLmxvY2FsKX1mdW5jdGlvbiBpKG4pe3JldHVybiBudWxsPT1uP2U6KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldEF0dHJpYnV0ZShvKTtyZXR1cm4gZSE9PW4mJih0PWEoZSxuKSxmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZShvLHQobikpfSl9KX1mdW5jdGlvbiB1KG4pe3JldHVybiBudWxsPT1uP3I6KG4rPSIiLGZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldEF0dHJpYnV0ZU5TKG8uc3BhY2Usby5sb2NhbCk7cmV0dXJuIGUhPT1uJiYodD1hKGUsbiksZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGVOUyhvLnNwYWNlLG8ubG9jYWwsdChuKSl9KX0pfWlmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHQgaW4gbil0aGlzLmF0dHIodCxuW3RdKTtyZXR1cm4gdGhpc312YXIgYT0idHJhbnNmb3JtIj09bj9Jcjp4cixvPXlhLm5zLnF1YWxpZnkobik7cmV0dXJuIGt1KHRoaXMsImF0dHIuIituLHQsby5sb2NhbD91OmkpfSx6Yy5hdHRyVHdlZW49ZnVuY3Rpb24obix0KXtmdW5jdGlvbiBlKG4sZSl7dmFyIHI9dC5jYWxsKHRoaXMsbixlLHRoaXMuZ2V0QXR0cmlidXRlKGkpKTtyZXR1cm4gciYmZnVuY3Rpb24obil7dGhpcy5zZXRBdHRyaWJ1dGUoaSxyKG4pKX19ZnVuY3Rpb24gcihuLGUpe3ZhciByPXQuY2FsbCh0aGlzLG4sZSx0aGlzLmdldEF0dHJpYnV0ZU5TKGkuc3BhY2UsaS5sb2NhbCkpO3JldHVybiByJiZmdW5jdGlvbihuKXt0aGlzLnNldEF0dHJpYnV0ZU5TKGkuc3BhY2UsaS5sb2NhbCxyKG4pKX19dmFyIGk9eWEubnMucXVhbGlmeShuKTtyZXR1cm4gdGhpcy50d2VlbigiYXR0ci4iK24saS5sb2NhbD9yOmUpfSx6Yy5zdHlsZT1mdW5jdGlvbihuLHQsZSl7ZnVuY3Rpb24gcigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkobil9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbnVsbD09dD9yOih0Kz0iIixmdW5jdGlvbigpe3ZhciByLGk9YmEuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLG51bGwpLmdldFByb3BlcnR5VmFsdWUobik7cmV0dXJuIGkhPT10JiYocj14cihpLHQpLGZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUuc2V0UHJvcGVydHkobixyKHQpLGUpfSl9KX12YXIgdT1hcmd1bWVudHMubGVuZ3RoO2lmKDM+dSl7aWYoInN0cmluZyIhPXR5cGVvZiBuKXsyPnUmJih0PSIiKTtmb3IoZSBpbiBuKXRoaXMuc3R5bGUoZSxuW2VdLHQpO3JldHVybiB0aGlzfWU9IiJ9cmV0dXJuIGt1KHRoaXMsInN0eWxlLiIrbix0LGkpfSx6Yy5zdHlsZVR3ZWVuPWZ1bmN0aW9uKG4sdCxlKXtmdW5jdGlvbiByKHIsaSl7dmFyIHU9dC5jYWxsKHRoaXMscixpLGJhLmdldENvbXB1dGVkU3R5bGUodGhpcyxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKG4pKTtyZXR1cm4gdSYmZnVuY3Rpb24odCl7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eShuLHUodCksZSl9fXJldHVybiBhcmd1bWVudHMubGVuZ3RoPDMmJihlPSIiKSx0aGlzLnR3ZWVuKCJzdHlsZS4iK24scil9LHpjLnRleHQ9ZnVuY3Rpb24obil7cmV0dXJuIGt1KHRoaXMsInRleHQiLG4sQXUpfSx6Yy5yZW1vdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKCJlbmQudHJhbnNpdGlvbiIsZnVuY3Rpb24oKXt2YXIgbjshdGhpcy5fX3RyYW5zaXRpb25fXyYmKG49dGhpcy5wYXJlbnROb2RlKSYmbi5yZW1vdmVDaGlsZCh0aGlzKX0pfSx6Yy5lYXNlPWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuaWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8MT90aGlzLm5vZGUoKS5fX3RyYW5zaXRpb25fX1t0XS5lYXNlOigiZnVuY3Rpb24iIT10eXBlb2YgbiYmKG49eWEuZWFzZS5hcHBseSh5YSxhcmd1bWVudHMpKSxUKHRoaXMsZnVuY3Rpb24oZSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5lYXNlPW59KSl9LHpjLmRlbGF5PWZ1bmN0aW9uKG4pe3ZhciB0PXRoaXMuaWQ7cmV0dXJuIFQodGhpcywiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbihlLHIsaSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kZWxheT0wfG4uY2FsbChlLGUuX19kYXRhX18scixpKX06KG58PTAsZnVuY3Rpb24oZSl7ZS5fX3RyYW5zaXRpb25fX1t0XS5kZWxheT1ufSkpfSx6Yy5kdXJhdGlvbj1mdW5jdGlvbihuKXt2YXIgdD10aGlzLmlkO3JldHVybiBUKHRoaXMsImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24oZSxyLGkpe2UuX190cmFuc2l0aW9uX19bdF0uZHVyYXRpb249TWF0aC5tYXgoMSwwfG4uY2FsbChlLGUuX19kYXRhX18scixpKSl9OihuPU1hdGgubWF4KDEsMHxuKSxmdW5jdGlvbihlKXtlLl9fdHJhbnNpdGlvbl9fW3RdLmR1cmF0aW9uPW59KSl9LHpjLmVhY2g9ZnVuY3Rpb24obix0KXt2YXIgZT10aGlzLmlkO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7dmFyIHI9amMsaT1xYztxYz1lLFQodGhpcyxmdW5jdGlvbih0LHIsaSl7amM9dC5fX3RyYW5zaXRpb25fX1tlXSxuLmNhbGwodCx0Ll9fZGF0YV9fLHIsaSl9KSxqYz1yLHFjPWl9ZWxzZSBUKHRoaXMsZnVuY3Rpb24ocil7ci5fX3RyYW5zaXRpb25fX1tlXS5ldmVudC5vbihuLHQpfSk7cmV0dXJuIHRoaXN9LHpjLnRyYW5zaXRpb249ZnVuY3Rpb24oKXtmb3IodmFyIG4sdCxlLHIsaT10aGlzLmlkLHU9KytEYyxhPVtdLG89MCxjPXRoaXMubGVuZ3RoO2M+bztvKyspe2EucHVzaChuPVtdKTtmb3IodmFyIHQ9dGhpc1tvXSxsPTAscz10Lmxlbmd0aDtzPmw7bCsrKShlPXRbbF0pJiYocj1PYmplY3QuY3JlYXRlKGUuX190cmFuc2l0aW9uX19baV0pLHIuZGVsYXkrPXIuZHVyYXRpb24sTnUoZSxsLHUscikpLG4ucHVzaChlKX1yZXR1cm4gRXUoYSx1KX0seWEuc3ZnLmF4aXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKG4pe24uZWFjaChmdW5jdGlvbigpe3ZhciBuLGY9eWEuc2VsZWN0KHRoaXMpLGg9bnVsbD09bD9lLnRpY2tzP2UudGlja3MuYXBwbHkoZSxjKTplLmRvbWFpbigpOmwsZz1udWxsPT10P2UudGlja0Zvcm1hdD9lLnRpY2tGb3JtYXQuYXBwbHkoZSxjKTpTdHJpbmc6dCxwPUN1KGUsaCxzKSxkPWYuc2VsZWN0QWxsKCIudGljay5taW5vciIpLmRhdGEocCxTdHJpbmcpLG09ZC5lbnRlcigpLmluc2VydCgibGluZSIsIi50aWNrIikuYXR0cigiY2xhc3MiLCJ0aWNrIG1pbm9yIikuc3R5bGUoIm9wYWNpdHkiLDFlLTYpLHY9eWEudHJhbnNpdGlvbihkLmV4aXQoKSkuc3R5bGUoIm9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLHk9eWEudHJhbnNpdGlvbihkKS5zdHlsZSgib3BhY2l0eSIsMSksTT1mLnNlbGVjdEFsbCgiLnRpY2subWFqb3IiKS5kYXRhKGgsU3RyaW5nKSx4PU0uZW50ZXIoKS5pbnNlcnQoImciLCIuZG9tYWluIikuYXR0cigiY2xhc3MiLCJ0aWNrIG1ham9yIikuc3R5bGUoIm9wYWNpdHkiLDFlLTYpLGI9eWEudHJhbnNpdGlvbihNLmV4aXQoKSkuc3R5bGUoIm9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLF89eWEudHJhbnNpdGlvbihNKS5zdHlsZSgib3BhY2l0eSIsMSksdz1JaShlKSxTPWYuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbMF0pLEU9KFMuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLHlhLnRyYW5zaXRpb24oUykpLGs9ZS5jb3B5KCksQT10aGlzLl9fY2hhcnRfX3x8azt0aGlzLl9fY2hhcnRfXz1rLHguYXBwZW5kKCJsaW5lIikseC5hcHBlbmQoInRleHQiKTt2YXIgTj14LnNlbGVjdCgibGluZSIpLHE9Xy5zZWxlY3QoImxpbmUiKSxUPU0uc2VsZWN0KCJ0ZXh0IikudGV4dChnKSxDPXguc2VsZWN0KCJ0ZXh0Iiksej1fLnNlbGVjdCgidGV4dCIpOwpzd2l0Y2gocil7Y2FzZSJib3R0b20iOm49cXUsbS5hdHRyKCJ5MiIsdSkseS5hdHRyKCJ4MiIsMCkuYXR0cigieTIiLHUpLE4uYXR0cigieTIiLGkpLEMuYXR0cigieSIsTWF0aC5tYXgoaSwwKStvKSxxLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsaSksei5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixNYXRoLm1heChpLDApK28pLFQuYXR0cigiZHkiLCIuNzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEUuYXR0cigiZCIsIk0iK3dbMF0rIiwiK2ErIlYwSCIrd1sxXSsiViIrYSk7YnJlYWs7Y2FzZSJ0b3AiOm49cXUsbS5hdHRyKCJ5MiIsLXUpLHkuYXR0cigieDIiLDApLmF0dHIoInkyIiwtdSksTi5hdHRyKCJ5MiIsLWkpLEMuYXR0cigieSIsLShNYXRoLm1heChpLDApK28pKSxxLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsLWkpLHouYXR0cigieCIsMCkuYXR0cigieSIsLShNYXRoLm1heChpLDApK28pKSxULmF0dHIoImR5IiwiMGVtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksRS5hdHRyKCJkIiwiTSIrd1swXSsiLCIrLWErIlYwSCIrd1sxXSsiViIrLWEpO2JyZWFrO2Nhc2UibGVmdCI6bj1UdSxtLmF0dHIoIngyIiwtdSkseS5hdHRyKCJ4MiIsLXUpLmF0dHIoInkyIiwwKSxOLmF0dHIoIngyIiwtaSksQy5hdHRyKCJ4IiwtKE1hdGgubWF4KGksMCkrbykpLHEuYXR0cigieDIiLC1pKS5hdHRyKCJ5MiIsMCksei5hdHRyKCJ4IiwtKE1hdGgubWF4KGksMCkrbykpLmF0dHIoInkiLDApLFQuYXR0cigiZHkiLCIuMzJlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsImVuZCIpLEUuYXR0cigiZCIsIk0iKy1hKyIsIit3WzBdKyJIMFYiK3dbMV0rIkgiKy1hKTticmVhaztjYXNlInJpZ2h0IjpuPVR1LG0uYXR0cigieDIiLHUpLHkuYXR0cigieDIiLHUpLmF0dHIoInkyIiwwKSxOLmF0dHIoIngyIixpKSxDLmF0dHIoIngiLE1hdGgubWF4KGksMCkrbykscS5hdHRyKCJ4MiIsaSkuYXR0cigieTIiLDApLHouYXR0cigieCIsTWF0aC5tYXgoaSwwKStvKS5hdHRyKCJ5IiwwKSxULmF0dHIoImR5IiwiLjMyZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLEUuYXR0cigiZCIsIk0iK2ErIiwiK3dbMF0rIkgwViIrd1sxXSsiSCIrYSl9aWYoZS50aWNrcyl4LmNhbGwobixBKSxfLmNhbGwobixrKSxiLmNhbGwobixrKSxtLmNhbGwobixBKSx5LmNhbGwobixrKSx2LmNhbGwobixrKTtlbHNle3ZhciBEPWsucmFuZ2VCYW5kKCkvMixqPWZ1bmN0aW9uKG4pe3JldHVybiBrKG4pK0R9O3guY2FsbChuLGopLF8uY2FsbChuLGopfX0pfXZhciB0LGU9eWEuc2NhbGUubGluZWFyKCkscj1MYyxpPTYsdT02LGE9NixvPTMsYz1bMTBdLGw9bnVsbCxzPTA7cmV0dXJuIG4uc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dCxuKTplfSxuLm9yaWVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10IGluIEhjP3QrIiI6TGMsbik6cn0sbi50aWNrcz1mdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWFyZ3VtZW50cyxuKTpjfSxuLnRpY2tWYWx1ZXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9dCxuKTpsfSxuLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxuKTp0fSxuLnRpY2tTaXplPWZ1bmN0aW9uKHQsZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGk7dmFyIHI9YXJndW1lbnRzLmxlbmd0aC0xO3JldHVybiBpPSt0LHU9cj4xPytlOmksYT1yPjA/K2FyZ3VtZW50c1tyXTppLG59LG4udGlja1BhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3Qsbik6b30sbi50aWNrU3ViZGl2aWRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt0LG4pOnN9LG59O3ZhciBMYz0iYm90dG9tIixIYz17dG9wOjEscmlnaHQ6MSxib3R0b206MSxsZWZ0OjF9O3lhLnN2Zy5icnVzaD1mdW5jdGlvbigpe2Z1bmN0aW9uIG4odSl7dS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHUsYT15YS5zZWxlY3QodGhpcykscz1hLnNlbGVjdEFsbCgiLmJhY2tncm91bmQiKS5kYXRhKFswXSksZj1hLnNlbGVjdEFsbCgiLmV4dGVudCIpLmRhdGEoWzBdKSxoPWEuc2VsZWN0QWxsKCIucmVzaXplIikuZGF0YShsLFN0cmluZyk7YS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIixpKS5vbigidG91Y2hzdGFydC5icnVzaCIsaSkscy5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwiYmFja2dyb3VuZCIpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikuc3R5bGUoImN1cnNvciIsImNyb3NzaGFpciIpLGYuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImV4dGVudCIpLnN0eWxlKCJjdXJzb3IiLCJtb3ZlIiksaC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihuKXtyZXR1cm4icmVzaXplICIrbn0pLnN0eWxlKCJjdXJzb3IiLGZ1bmN0aW9uKG4pe3JldHVybiBGY1tuXX0pLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLGZ1bmN0aW9uKG4pe3JldHVybi9bZXddJC8udGVzdChuKT8tMzpudWxsfSkuYXR0cigieSIsZnVuY3Rpb24obil7cmV0dXJuL15bbnNdLy50ZXN0KG4pPy0zOm51bGx9KS5hdHRyKCJ3aWR0aCIsNikuYXR0cigiaGVpZ2h0Iiw2KS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpLGguc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCksaC5leGl0KCkucmVtb3ZlKCksbyYmKHU9SWkobykscy5hdHRyKCJ4Iix1WzBdKS5hdHRyKCJ3aWR0aCIsdVsxXS11WzBdKSxlKGEpKSxjJiYodT1JaShjKSxzLmF0dHIoInkiLHVbMF0pLmF0dHIoImhlaWdodCIsdVsxXS11WzBdKSxyKGEpKSx0KGEpfSl9ZnVuY3Rpb24gdChuKXtuLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24obil7cmV0dXJuInRyYW5zbGF0ZSgiK3NbKy9lJC8udGVzdChuKV1bMF0rIiwiK3NbKy9ecy8udGVzdChuKV1bMV0rIikifSl9ZnVuY3Rpb24gZShuKXtuLnNlbGVjdCgiLmV4dGVudCIpLmF0dHIoIngiLHNbMF1bMF0pLG4uc2VsZWN0QWxsKCIuZXh0ZW50LC5uPnJlY3QsLnM+cmVjdCIpLmF0dHIoIndpZHRoIixzWzFdWzBdLXNbMF1bMF0pfWZ1bmN0aW9uIHIobil7bi5zZWxlY3QoIi5leHRlbnQiKS5hdHRyKCJ5IixzWzBdWzFdKSxuLnNlbGVjdEFsbCgiLmV4dGVudCwuZT5yZWN0LC53PnJlY3QiKS5hdHRyKCJoZWlnaHQiLHNbMV1bMV0tc1swXVsxXSl9ZnVuY3Rpb24gaSgpe2Z1bmN0aW9uIGkoKXt2YXIgbj15YS5ldmVudC5jaGFuZ2VkVG91Y2hlcztyZXR1cm4gbj95YS50b3VjaGVzKE0sbilbMF06eWEubW91c2UoTSl9ZnVuY3Rpb24gbCgpezMyPT15YS5ldmVudC5rZXlDb2RlJiYoa3x8KHY9bnVsbCxOWzBdLT1zWzFdWzBdLE5bMV0tPXNbMV1bMV0saz0yKSxnKCkpfWZ1bmN0aW9uIGgoKXszMj09eWEuZXZlbnQua2V5Q29kZSYmMj09ayYmKE5bMF0rPXNbMV1bMF0sTlsxXSs9c1sxXVsxXSxrPTAsZygpKX1mdW5jdGlvbiBwKCl7dmFyIG49aSgpLHU9ITE7eSYmKG5bMF0rPXlbMF0sblsxXSs9eVsxXSksa3x8KHlhLmV2ZW50LmFsdEtleT8odnx8KHY9WyhzWzBdWzBdK3NbMV1bMF0pLzIsKHNbMF1bMV0rc1sxXVsxXSkvMl0pLE5bMF09c1srKG5bMF08dlswXSldWzBdLE5bMV09c1srKG5bMV08dlsxXSldWzFdKTp2PW51bGwpLFMmJmQobixvLDApJiYoZShfKSx1PSEwKSxFJiZkKG4sYywxKSYmKHIoXyksdT0hMCksdSYmKHQoXyksYih7dHlwZToiYnJ1c2giLG1vZGU6az8ibW92ZSI6InJlc2l6ZSJ9KSl9ZnVuY3Rpb24gZChuLHQsZSl7dmFyIHIsaSxhPUlpKHQpLG89YVswXSxjPWFbMV0sbD1OW2VdLGg9c1sxXVtlXS1zWzBdW2VdO3JldHVybiBrJiYoby09bCxjLT1oK2wpLHI9ZltlXT9NYXRoLm1heChvLE1hdGgubWluKGMsbltlXSkpOm5bZV0saz9pPShyKz1sKStoOih2JiYobD1NYXRoLm1heChvLE1hdGgubWluKGMsMip2W2VdLXIpKSkscj5sPyhpPXIscj1sKTppPWwpLHNbMF1bZV0hPT1yfHxzWzFdW2VdIT09aT8odT1udWxsLHNbMF1bZV09cixzWzFdW2VdPWksITApOnZvaWQgMH1mdW5jdGlvbiBtKCl7cCgpLF8uc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG4uZW1wdHkoKT8ibm9uZSI6bnVsbCkseWEuc2VsZWN0KCJib2R5Iikuc3R5bGUoImN1cnNvciIsbnVsbCkscS5vbigibW91c2Vtb3ZlLmJydXNoIixudWxsKS5vbigibW91c2V1cC5icnVzaCIsbnVsbCkub24oInRvdWNobW92ZS5icnVzaCIsbnVsbCkub24oInRvdWNoZW5kLmJydXNoIixudWxsKS5vbigia2V5ZG93bi5icnVzaCIsbnVsbCkub24oImtleXVwLmJydXNoIixudWxsKSxBKCksYih7dHlwZToiYnJ1c2hlbmQifSl9dmFyIHYseSxNPXRoaXMseD15YS5zZWxlY3QoeWEuZXZlbnQudGFyZ2V0KSxiPWEub2YoTSxhcmd1bWVudHMpLF89eWEuc2VsZWN0KE0pLHc9eC5kYXR1bSgpLFM9IS9eKG58cykkLy50ZXN0KHcpJiZvLEU9IS9eKGV8dykkLy50ZXN0KHcpJiZjLGs9eC5jbGFzc2VkKCJleHRlbnQiKSxBPUwoImJydXNoIiksTj1pKCkscT15YS5zZWxlY3QoYmEpLm9uKCJrZXlkb3duLmJydXNoIixsKS5vbigia2V5dXAuYnJ1c2giLGgpO2lmKHlhLmV2ZW50LmNoYW5nZWRUb3VjaGVzP3Eub24oInRvdWNobW92ZS5icnVzaCIscCkub24oInRvdWNoZW5kLmJydXNoIixtKTpxLm9uKCJtb3VzZW1vdmUuYnJ1c2giLHApLm9uKCJtb3VzZXVwLmJydXNoIixtKSxrKU5bMF09c1swXVswXS1OWzBdLE5bMV09c1swXVsxXS1OWzFdO2Vsc2UgaWYodyl7dmFyIFQ9Ky93JC8udGVzdCh3KSxDPSsvXm4vLnRlc3Qodyk7eT1bc1sxLVRdWzBdLU5bMF0sc1sxLUNdWzFdLU5bMV1dLE5bMF09c1tUXVswXSxOWzFdPXNbQ11bMV19ZWxzZSB5YS5ldmVudC5hbHRLZXkmJih2PU4uc2xpY2UoKSk7Xy5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIikuc2VsZWN0QWxsKCIucmVzaXplIikuc3R5bGUoImRpc3BsYXkiLG51bGwpLHlhLnNlbGVjdCgiYm9keSIpLnN0eWxlKCJjdXJzb3IiLHguc3R5bGUoImN1cnNvciIpKSxiKHt0eXBlOiJicnVzaHN0YXJ0In0pLHAoKX12YXIgdSxhPWQobiwiYnJ1c2hzdGFydCIsImJydXNoIiwiYnJ1c2hlbmQiKSxvPW51bGwsYz1udWxsLGw9UGNbMF0scz1bWzAsMF0sWzAsMF1dLGY9WyEwLCEwXTtyZXR1cm4gbi54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQsbD1QY1shbzw8MXwhY10sbik6b30sbi55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPXQsbD1QY1shbzw8MXwhY10sbik6Y30sbi5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obyYmYz9mPVshIXRbMF0sISF0WzFdXToob3x8YykmJihmWyshb109ISF0KSxuKTpvJiZjP2Y6b3x8Yz9mWyshb106bnVsbH0sbi5leHRlbnQ9ZnVuY3Rpb24odCl7dmFyIGUscixpLGEsbDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1bWzAsMF0sWzAsMF1dLG8mJihlPXRbMF0scj10WzFdLGMmJihlPWVbMF0scj1yWzBdKSx1WzBdWzBdPWUsdVsxXVswXT1yLG8uaW52ZXJ0JiYoZT1vKGUpLHI9byhyKSksZT5yJiYobD1lLGU9cixyPWwpLHNbMF1bMF09MHxlLHNbMV1bMF09MHxyKSxjJiYoaT10WzBdLGE9dFsxXSxvJiYoaT1pWzFdLGE9YVsxXSksdVswXVsxXT1pLHVbMV1bMV09YSxjLmludmVydCYmKGk9YyhpKSxhPWMoYSkpLGk+YSYmKGw9aSxpPWEsYT1sKSxzWzBdWzFdPTB8aSxzWzFdWzFdPTB8YSksbik6KHQ9dXx8cyxvJiYoZT10WzBdWzBdLHI9dFsxXVswXSx1fHwoZT1zWzBdWzBdLHI9c1sxXVswXSxvLmludmVydCYmKGU9by5pbnZlcnQoZSkscj1vLmludmVydChyKSksZT5yJiYobD1lLGU9cixyPWwpKSksYyYmKGk9dFswXVsxXSxhPXRbMV1bMV0sdXx8KGk9c1swXVsxXSxhPXNbMV1bMV0sYy5pbnZlcnQmJihpPWMuaW52ZXJ0KGkpLGE9Yy5pbnZlcnQoYSkpLGk+YSYmKGw9aSxpPWEsYT1sKSkpLG8mJmM/W1tlLGldLFtyLGFdXTpvP1tlLHJdOmMmJltpLGFdKX0sbi5jbGVhcj1mdW5jdGlvbigpe3JldHVybiB1PW51bGwsc1swXVswXT1zWzBdWzFdPXNbMV1bMF09c1sxXVsxXT0wLG59LG4uZW1wdHk9ZnVuY3Rpb24oKXtyZXR1cm4gbyYmc1swXVswXT09PXNbMV1bMF18fGMmJnNbMF1bMV09PT1zWzFdWzFdfSx5YS5yZWJpbmQobixhLCJvbiIpfTt2YXIgRmM9e246Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sUGM9W1sibiIsImUiLCJzIiwidyIsIm53IiwibmUiLCJzZSIsInN3Il0sWyJlIiwidyJdLFsibiIsInMiXSxbXV07eWEudGltZT17fTt2YXIgT2M9RGF0ZSxZYz1bIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il07enUucHJvdG90eXBlPXtnZXREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENEYXRlKCl9LGdldERheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDRGF5KCl9LGdldEZ1bGxZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENGdWxsWWVhcigpfSxnZXRIb3VyczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDSG91cnMoKX0sZ2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRVVENNaWxsaXNlY29uZHMoKX0sZ2V0TWludXRlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTWludXRlcygpfSxnZXRNb250aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDTW9udGgoKX0sZ2V0U2Vjb25kczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uZ2V0VVRDU2Vjb25kcygpfSxnZXRUaW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5nZXRUaW1lKCl9LGdldFRpbWV6b25lT2Zmc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDB9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLnZhbHVlT2YoKX0sc2V0RGF0ZTpmdW5jdGlvbigpe1JjLnNldFVUQ0RhdGUuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldERheTpmdW5jdGlvbigpe1JjLnNldFVUQ0RheS5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0RnVsbFllYXI6ZnVuY3Rpb24oKXtSYy5zZXRVVENGdWxsWWVhci5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0SG91cnM6ZnVuY3Rpb24oKXtSYy5zZXRVVENIb3Vycy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TWlsbGlzZWNvbmRzOmZ1bmN0aW9uKCl7UmMuc2V0VVRDTWlsbGlzZWNvbmRzLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfSxzZXRNaW51dGVzOmZ1bmN0aW9uKCl7UmMuc2V0VVRDTWludXRlcy5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0TW9udGg6ZnVuY3Rpb24oKXtSYy5zZXRVVENNb250aC5hcHBseSh0aGlzLl8sYXJndW1lbnRzKX0sc2V0U2Vjb25kczpmdW5jdGlvbigpe1JjLnNldFVUQ1NlY29uZHMuYXBwbHkodGhpcy5fLGFyZ3VtZW50cyl9LHNldFRpbWU6ZnVuY3Rpb24oKXtSYy5zZXRUaW1lLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpfX07dmFyIFJjPURhdGUucHJvdG90eXBlLFVjPSIlYSAlYiAlZSAlWCAlWSIsSWM9IiVtLyVkLyVZIixWYz0iJUg6JU06JVMiLFhjPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxaYz1bIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLEJjPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSwkYz1bIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdO3lhLnRpbWUueWVhcj1EdShmdW5jdGlvbihuKXtyZXR1cm4gbj15YS50aW1lLmRheShuKSxuLnNldE1vbnRoKDAsMSksbn0sZnVuY3Rpb24obix0KXtuLnNldEZ1bGxZZWFyKG4uZ2V0RnVsbFllYXIoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RnVsbFllYXIoKX0pLHlhLnRpbWUueWVhcnM9eWEudGltZS55ZWFyLnJhbmdlLHlhLnRpbWUueWVhcnMudXRjPXlhLnRpbWUueWVhci51dGMucmFuZ2UseWEudGltZS5kYXk9RHUoZnVuY3Rpb24obil7dmFyIHQ9bmV3IE9jKDJlMywwKTtyZXR1cm4gdC5zZXRGdWxsWWVhcihuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpKSx0fSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSt0KX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0RGF0ZSgpLTF9KSx5YS50aW1lLmRheXM9eWEudGltZS5kYXkucmFuZ2UseWEudGltZS5kYXlzLnV0Yz15YS50aW1lLmRheS51dGMucmFuZ2UseWEudGltZS5kYXlPZlllYXI9ZnVuY3Rpb24obil7dmFyIHQ9eWEudGltZS55ZWFyKG4pO3JldHVybiBNYXRoLmZsb29yKChuLXQtNmU0KihuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSkvODY0ZTUpfSxZYy5mb3JFYWNoKGZ1bmN0aW9uKG4sdCl7bj1uLnRvTG93ZXJDYXNlKCksdD03LXQ7dmFyIGU9eWEudGltZVtuXT1EdShmdW5jdGlvbihuKXtyZXR1cm4obj15YS50aW1lLmRheShuKSkuc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSt0KSU3KSxufSxmdW5jdGlvbihuLHQpe24uc2V0RGF0ZShuLmdldERhdGUoKSs3Kk1hdGguZmxvb3IodCkpfSxmdW5jdGlvbihuKXt2YXIgZT15YS50aW1lLnllYXIobikuZ2V0RGF5KCk7cmV0dXJuIE1hdGguZmxvb3IoKHlhLnRpbWUuZGF5T2ZZZWFyKG4pKyhlK3QpJTcpLzcpLShlIT09dCl9KTt5YS50aW1lW24rInMiXT1lLnJhbmdlLHlhLnRpbWVbbisicyJdLnV0Yz1lLnV0Yy5yYW5nZSx5YS50aW1lW24rIk9mWWVhciJdPWZ1bmN0aW9uKG4pe3ZhciBlPXlhLnRpbWUueWVhcihuKS5nZXREYXkoKTtyZXR1cm4gTWF0aC5mbG9vcigoeWEudGltZS5kYXlPZlllYXIobikrKGUrdCklNykvNyl9fSkseWEudGltZS53ZWVrPXlhLnRpbWUuc3VuZGF5LHlhLnRpbWUud2Vla3M9eWEudGltZS5zdW5kYXkucmFuZ2UseWEudGltZS53ZWVrcy51dGM9eWEudGltZS5zdW5kYXkudXRjLnJhbmdlLHlhLnRpbWUud2Vla09mWWVhcj15YS50aW1lLnN1bmRheU9mWWVhcix5YS50aW1lLmZvcm1hdD1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgcixpLHUsYT1bXSxvPS0xLGM9MDsrK288ZTspMzc9PT1uLmNoYXJDb2RlQXQobykmJihhLnB1c2gobi5zdWJzdHJpbmcoYyxvKSksbnVsbCE9KGk9aWxbcj1uLmNoYXJBdCgrK28pXSkmJihyPW4uY2hhckF0KCsrbykpLCh1PXVsW3JdKSYmKHI9dSh0LG51bGw9PWk/ImUiPT09cj8iICI6IjAiOmkpKSxhLnB1c2gociksYz1vKzEpO3JldHVybiBhLnB1c2gobi5zdWJzdHJpbmcoYyxvKSksYS5qb2luKCIiKX12YXIgZT1uLmxlbmd0aDtyZXR1cm4gdC5wYXJzZT1mdW5jdGlvbih0KXt2YXIgZT17eToxOTAwLG06MCxkOjEsSDowLE06MCxTOjAsTDowfSxyPUx1KGUsbix0LDApO2lmKHIhPXQubGVuZ3RoKXJldHVybiBudWxsOyJwImluIGUmJihlLkg9ZS5IJTEyKzEyKmUucCk7dmFyIGk9bmV3IE9jO3JldHVybiJqImluIGU/aS5zZXRGdWxsWWVhcihlLnksMCxlLmopOiJ3ImluIGUmJigiVyJpbiBlfHwiVSJpbiBlKT8oaS5zZXRGdWxsWWVhcihlLnksMCwxKSxpLnNldEZ1bGxZZWFyKGUueSwwLCJXImluIGU/KGUudys2KSU3KzcqZS5XLShpLmdldERheSgpKzUpJTc6ZS53KzcqZS5VLShpLmdldERheSgpKzYpJTcpKTppLnNldEZ1bGxZZWFyKGUueSxlLm0sZS5kKSxpLnNldEhvdXJzKGUuSCxlLk0sZS5TLGUuTCksaX0sdC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBufSx0fTt2YXIgV2M9SHUoWGMpLEpjPUZ1KFhjKSxHYz1IdShaYyksS2M9RnUoWmMpLFFjPUh1KEJjKSxubD1GdShCYyksdGw9SHUoJGMpLGVsPUZ1KCRjKSxybD0vXiUvLGlsPXsiLSI6IiIsXzoiICIsMDoiMCJ9LHVsPXthOmZ1bmN0aW9uKG4pe3JldHVybiBaY1tuLmdldERheSgpXX0sQTpmdW5jdGlvbihuKXtyZXR1cm4gWGNbbi5nZXREYXkoKV19LGI6ZnVuY3Rpb24obil7cmV0dXJuICRjW24uZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24obil7cmV0dXJuIEJjW24uZ2V0TW9udGgoKV19LGM6eWEudGltZS5mb3JtYXQoVWMpLGQ6ZnVuY3Rpb24obix0KXtyZXR1cm4gUHUobi5nZXREYXRlKCksdCwyKX0sZTpmdW5jdGlvbihuLHQpe3JldHVybiBQdShuLmdldERhdGUoKSx0LDIpfSxIOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFB1KG4uZ2V0SG91cnMoKSx0LDIpfSxJOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFB1KG4uZ2V0SG91cnMoKSUxMnx8MTIsdCwyKX0sajpmdW5jdGlvbihuLHQpe3JldHVybiBQdSgxK3lhLnRpbWUuZGF5T2ZZZWFyKG4pLHQsMyl9LEw6ZnVuY3Rpb24obix0KXtyZXR1cm4gUHUobi5nZXRNaWxsaXNlY29uZHMoKSx0LDMpfSxtOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFB1KG4uZ2V0TW9udGgoKSsxLHQsMil9LE06ZnVuY3Rpb24obix0KXtyZXR1cm4gUHUobi5nZXRNaW51dGVzKCksdCwyKX0scDpmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRIb3VycygpPj0xMj8iUE0iOiJBTSJ9LFM6ZnVuY3Rpb24obix0KXtyZXR1cm4gUHUobi5nZXRTZWNvbmRzKCksdCwyKX0sVTpmdW5jdGlvbihuLHQpe3JldHVybiBQdSh5YS50aW1lLnN1bmRheU9mWWVhcihuKSx0LDIpfSx3OmZ1bmN0aW9uKG4pe3JldHVybiBuLmdldERheSgpfSxXOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFB1KHlhLnRpbWUubW9uZGF5T2ZZZWFyKG4pLHQsMil9LHg6eWEudGltZS5mb3JtYXQoSWMpLFg6eWEudGltZS5mb3JtYXQoVmMpLHk6ZnVuY3Rpb24obix0KXtyZXR1cm4gUHUobi5nZXRGdWxsWWVhcigpJTEwMCx0LDIpfSxZOmZ1bmN0aW9uKG4sdCl7cmV0dXJuIFB1KG4uZ2V0RnVsbFllYXIoKSUxZTQsdCw0KX0sWjphYSwiJSI6ZnVuY3Rpb24oKXtyZXR1cm4iJSJ9fSxhbD17YTpPdSxBOll1LGI6VnUsQjpYdSxjOlp1LGQ6UXUsZTpRdSxIOnRhLEk6dGEsajpuYSxMOmlhLG06S3UsTTplYSxwOnVhLFM6cmEsVTpVdSx3OlJ1LFc6SXUseDpCdSxYOiR1LHk6SnUsWTpXdSwiJSI6b2F9LG9sPS9eXHMqXGQrLyxjbD15YS5tYXAoe2FtOjAscG06MX0pO3lhLnRpbWUuZm9ybWF0LnV0Yz1mdW5jdGlvbihuKXtmdW5jdGlvbiB0KG4pe3RyeXtPYz16dTt2YXIgdD1uZXcgT2M7cmV0dXJuIHQuXz1uLGUodCl9ZmluYWxseXtPYz1EYXRlfX12YXIgZT15YS50aW1lLmZvcm1hdChuKTtyZXR1cm4gdC5wYXJzZT1mdW5jdGlvbihuKXt0cnl7T2M9enU7dmFyIHQ9ZS5wYXJzZShuKTtyZXR1cm4gdCYmdC5ffWZpbmFsbHl7T2M9RGF0ZX19LHQudG9TdHJpbmc9ZS50b1N0cmluZyx0fTt2YXIgbGw9eWEudGltZS5mb3JtYXQudXRjKCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKTt5YS50aW1lLmZvcm1hdC5pc289RGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcmJituZXcgRGF0ZSgiMjAwMC0wMS0wMVQwMDowMDowMC4wMDBaIik/Y2E6bGwsY2EucGFyc2U9ZnVuY3Rpb24obil7dmFyIHQ9bmV3IERhdGUobik7cmV0dXJuIGlzTmFOKHQpP251bGw6dH0sY2EudG9TdHJpbmc9bGwudG9TdHJpbmcseWEudGltZS5zZWNvbmQ9RHUoZnVuY3Rpb24obil7cmV0dXJuIG5ldyBPYygxZTMqTWF0aC5mbG9vcihuLzFlMykpfSxmdW5jdGlvbihuLHQpe24uc2V0VGltZShuLmdldFRpbWUoKSsxZTMqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFNlY29uZHMoKX0pLHlhLnRpbWUuc2Vjb25kcz15YS50aW1lLnNlY29uZC5yYW5nZSx5YS50aW1lLnNlY29uZHMudXRjPXlhLnRpbWUuc2Vjb25kLnV0Yy5yYW5nZSx5YS50aW1lLm1pbnV0ZT1EdShmdW5jdGlvbihuKXtyZXR1cm4gbmV3IE9jKDZlNCpNYXRoLmZsb29yKG4vNmU0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzZlNCpNYXRoLmZsb29yKHQpKX0sZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWludXRlcygpfSkseWEudGltZS5taW51dGVzPXlhLnRpbWUubWludXRlLnJhbmdlLHlhLnRpbWUubWludXRlcy51dGM9eWEudGltZS5taW51dGUudXRjLnJhbmdlLHlhLnRpbWUuaG91cj1EdShmdW5jdGlvbihuKXt2YXIgdD1uLmdldFRpbWV6b25lT2Zmc2V0KCkvNjA7cmV0dXJuIG5ldyBPYygzNmU1KihNYXRoLmZsb29yKG4vMzZlNS10KSt0KSl9LGZ1bmN0aW9uKG4sdCl7bi5zZXRUaW1lKG4uZ2V0VGltZSgpKzM2ZTUqTWF0aC5mbG9vcih0KSl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldEhvdXJzKCl9KSx5YS50aW1lLmhvdXJzPXlhLnRpbWUuaG91ci5yYW5nZSx5YS50aW1lLmhvdXJzLnV0Yz15YS50aW1lLmhvdXIudXRjLnJhbmdlLHlhLnRpbWUubW9udGg9RHUoZnVuY3Rpb24obil7cmV0dXJuIG49eWEudGltZS5kYXkobiksbi5zZXREYXRlKDEpLG59LGZ1bmN0aW9uKG4sdCl7bi5zZXRNb250aChuLmdldE1vbnRoKCkrdCl9LGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldE1vbnRoKCl9KSx5YS50aW1lLm1vbnRocz15YS50aW1lLm1vbnRoLnJhbmdlLHlhLnRpbWUubW9udGhzLnV0Yz15YS50aW1lLm1vbnRoLnV0Yy5yYW5nZTt2YXIgc2w9WzFlMyw1ZTMsMTVlMywzZTQsNmU0LDNlNSw5ZTUsMThlNSwzNmU1LDEwOGU1LDIxNmU1LDQzMmU1LDg2NGU1LDE3MjhlNSw2MDQ4ZTUsMjU5MmU2LDc3NzZlNiwzMTUzNmU2XSxmbD1bW3lhLnRpbWUuc2Vjb25kLDFdLFt5YS50aW1lLnNlY29uZCw1XSxbeWEudGltZS5zZWNvbmQsMTVdLFt5YS50aW1lLnNlY29uZCwzMF0sW3lhLnRpbWUubWludXRlLDFdLFt5YS50aW1lLm1pbnV0ZSw1XSxbeWEudGltZS5taW51dGUsMTVdLFt5YS50aW1lLm1pbnV0ZSwzMF0sW3lhLnRpbWUuaG91ciwxXSxbeWEudGltZS5ob3VyLDNdLFt5YS50aW1lLmhvdXIsNl0sW3lhLnRpbWUuaG91ciwxMl0sW3lhLnRpbWUuZGF5LDFdLFt5YS50aW1lLmRheSwyXSxbeWEudGltZS53ZWVrLDFdLFt5YS50aW1lLm1vbnRoLDFdLFt5YS50aW1lLm1vbnRoLDNdLFt5YS50aW1lLnllYXIsMV1dLGhsPVtbeWEudGltZS5mb3JtYXQoIiVZIiksUnRdLFt5YS50aW1lLmZvcm1hdCgiJUIiKSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNb250aCgpfV0sW3lhLnRpbWUuZm9ybWF0KCIlYiAlZCIpLGZ1bmN0aW9uKG4pe3JldHVybiAxIT1uLmdldERhdGUoKX1dLFt5YS50aW1lLmZvcm1hdCgiJWEgJWQiKSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXREYXkoKSYmMSE9bi5nZXREYXRlKCl9XSxbeWEudGltZS5mb3JtYXQoIiVJICVwIiksZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0SG91cnMoKX1dLFt5YS50aW1lLmZvcm1hdCgiJUk6JU0iKSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRNaW51dGVzKCl9XSxbeWEudGltZS5mb3JtYXQoIjolUyIpLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFNlY29uZHMoKX1dLFt5YS50aW1lLmZvcm1hdCgiLiVMIiksZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0TWlsbGlzZWNvbmRzKCl9XV0sZ2w9eWEuc2NhbGUubGluZWFyKCkscGw9ZmEoaGwpO2ZsLnllYXI9ZnVuY3Rpb24obix0KXtyZXR1cm4gZ2wuZG9tYWluKG4ubWFwKGdhKSkudGlja3ModCkubWFwKGhhKX0seWEudGltZS5zY2FsZT1mdW5jdGlvbigpe3JldHVybiBsYSh5YS5zY2FsZS5saW5lYXIoKSxmbCxwbCl9O3ZhciBkbD1mbC5tYXAoZnVuY3Rpb24obil7cmV0dXJuW25bMF0udXRjLG5bMV1dfSksbWw9W1t5YS50aW1lLmZvcm1hdC51dGMoIiVZIiksUnRdLFt5YS50aW1lLmZvcm1hdC51dGMoIiVCIiksZnVuY3Rpb24obil7cmV0dXJuIG4uZ2V0VVRDTW9udGgoKX1dLFt5YS50aW1lLmZvcm1hdC51dGMoIiViICVkIiksZnVuY3Rpb24obil7cmV0dXJuIDEhPW4uZ2V0VVRDRGF0ZSgpfV0sW3lhLnRpbWUuZm9ybWF0LnV0YygiJWEgJWQiKSxmdW5jdGlvbihuKXtyZXR1cm4gbi5nZXRVVENEYXkoKSYmMSE9bi5nZXRVVENEYXRlKCl9XSxbeWEudGltZS5mb3JtYXQudXRjKCIlSSAlcCIpLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ0hvdXJzKCl9XSxbeWEudGltZS5mb3JtYXQudXRjKCIlSTolTSIpLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ01pbnV0ZXMoKX1dLFt5YS50aW1lLmZvcm1hdC51dGMoIjolUyIpLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ1NlY29uZHMoKX1dLFt5YS50aW1lLmZvcm1hdC51dGMoIi4lTCIpLGZ1bmN0aW9uKG4pe3JldHVybiBuLmdldFVUQ01pbGxpc2Vjb25kcygpfV1dLHZsPWZhKG1sKTtyZXR1cm4gZGwueWVhcj1mdW5jdGlvbihuLHQpe3JldHVybiBnbC5kb21haW4obi5tYXAoZGEpKS50aWNrcyh0KS5tYXAocGEpfSx5YS50aW1lLnNjYWxlLnV0Yz1mdW5jdGlvbigpe3JldHVybiBsYSh5YS5zY2FsZS5saW5lYXIoKSxkbCx2bCl9LHlhLnRleHQ9Z3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VUZXh0fSkseWEuanNvbj1mdW5jdGlvbihuLHQpe3JldHVybiBwdChuLCJhcHBsaWNhdGlvbi9qc29uIixtYSx0KX0seWEuaHRtbD1mdW5jdGlvbihuLHQpe3JldHVybiBwdChuLCJ0ZXh0L2h0bWwiLHZhLHQpfSx5YS54bWw9Z3QoZnVuY3Rpb24obil7cmV0dXJuIG4ucmVzcG9uc2VYTUx9KSx5YX0oKTs=" type="text/javascript"></script>
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQpe3JldHVybihuZXcgRGF0ZSh0LGUrMSwwKSkuZ2V0RGF0ZSgpfWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLGkscyl7dmFyIG89ZShyKSx1PVtdO288ciYmdChvKTtpZihzPjEpd2hpbGUobzxpKXt2YXIgYT1uZXcgRGF0ZSgrbyk7bihhKSVzPT09MCYmdS5wdXNoKGEpLHQobyl9ZWxzZSB3aGlsZShvPGkpdS5wdXNoKG5ldyBEYXRlKCtvKSksdChvKTtyZXR1cm4gdX19dmFyIGU9d2luZG93Lm52fHx7fTtlLnZlcnNpb249IjEuMS4xMGIiLGUuZGV2PSEwLHdpbmRvdy5udj1lLGUudG9vbHRpcD17fSxlLnV0aWxzPXt9LGUubW9kZWxzPXt9LGUuY2hhcnRzPXt9LGUuZ3JhcGhzPVtdLGUubG9ncz17fSxlLmRpc3BhdGNoPWQzLmRpc3BhdGNoKCJyZW5kZXJfc3RhcnQiLCJyZW5kZXJfZW5kIiksZS5kZXYmJihlLmRpc3BhdGNoLm9uKCJyZW5kZXJfc3RhcnQiLGZ1bmN0aW9uKHQpe2UubG9ncy5zdGFydFRpbWU9KyhuZXcgRGF0ZSl9KSxlLmRpc3BhdGNoLm9uKCJyZW5kZXJfZW5kIixmdW5jdGlvbih0KXtlLmxvZ3MuZW5kVGltZT0rKG5ldyBEYXRlKSxlLmxvZ3MudG90YWxUaW1lPWUubG9ncy5lbmRUaW1lLWUubG9ncy5zdGFydFRpbWUsZS5sb2coInRvdGFsIixlLmxvZ3MudG90YWxUaW1lKX0pKSxlLmxvZz1mdW5jdGlvbigpe2lmKGUuZGV2JiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2cuYXBwbHkpY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxhcmd1bWVudHMpO2Vsc2UgaWYoZS5kZXYmJnR5cGVvZiBjb25zb2xlLmxvZz09ImZ1bmN0aW9uIiYmRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQpe3ZhciB0PUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoY29uc29sZS5sb2csY29uc29sZSk7dC5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9cmV0dXJuIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdfSxlLnJlbmRlcj1mdW5jdGlvbihuKXtuPW58fDEsZS5yZW5kZXIuYWN0aXZlPSEwLGUuZGlzcGF0Y2gucmVuZGVyX3N0YXJ0KCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0LHI7Zm9yKHZhciBpPTA7aTxuJiYocj1lLnJlbmRlci5xdWV1ZVtpXSk7aSsrKXQ9ci5nZW5lcmF0ZSgpLHR5cGVvZiByLmNhbGxiYWNrPT10eXBlb2YgRnVuY3Rpb24mJnIuY2FsbGJhY2sodCksZS5ncmFwaHMucHVzaCh0KTtlLnJlbmRlci5xdWV1ZS5zcGxpY2UoMCxpKSxlLnJlbmRlci5xdWV1ZS5sZW5ndGg/c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApOihlLnJlbmRlci5hY3RpdmU9ITEsZS5kaXNwYXRjaC5yZW5kZXJfZW5kKCkpfSwwKX0sZS5yZW5kZXIuYWN0aXZlPSExLGUucmVuZGVyLnF1ZXVlPVtdLGUuYWRkR3JhcGg9ZnVuY3Rpb24odCl7dHlwZW9mIGFyZ3VtZW50c1swXT09dHlwZW9mIEZ1bmN0aW9uJiYodD17Z2VuZXJhdGU6YXJndW1lbnRzWzBdLGNhbGxiYWNrOmFyZ3VtZW50c1sxXX0pLGUucmVuZGVyLnF1ZXVlLnB1c2godCksZS5yZW5kZXIuYWN0aXZlfHxlLnJlbmRlcigpfSxlLmlkZW50aXR5PWZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnN0cmlwPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLyhcc3wmKS9nLCIiKX0sZDMudGltZS5tb250aEVuZD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSwwKX0sZDMudGltZS5tb250aEVuZHM9bihkMy50aW1lLm1vbnRoRW5kLGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKSsxKSxlLnNldERhdGUodChlLmdldE1vbnRoKCkrMSxlLmdldEZ1bGxZZWFyKCkpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TW9udGgoKX0pLGUuaW50ZXJhY3RpdmVHdWlkZWxpbmU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhvKXtvLmVhY2goZnVuY3Rpb24obyl7ZnVuY3Rpb24gZygpe3ZhciBlPWQzLm1vdXNlKHRoaXMpLG49ZVswXSxyPWVbMV0sbz0hMCxhPSExO2wmJihuPWQzLmV2ZW50Lm9mZnNldFgscj1kMy5ldmVudC5vZmZzZXRZLGQzLmV2ZW50LnRhcmdldC50YWdOYW1lIT09InN2ZyImJihvPSExKSxkMy5ldmVudC50YXJnZXQuY2xhc3NOYW1lLmJhc2VWYWwubWF0Y2goIm52LWxlZ2VuZCIpJiYoYT0hMCkpLG8mJihuLT1pLmxlZnQsci09aS50b3ApO2lmKG48MHx8cjwwfHxuPnB8fHI+ZHx8ZDMuZXZlbnQucmVsYXRlZFRhcmdldCYmZDMuZXZlbnQucmVsYXRlZFRhcmdldC5vd25lclNWR0VsZW1lbnQ9PT11bmRlZmluZWR8fGEpe2lmKGwmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQub3duZXJTVkdFbGVtZW50PT09dW5kZWZpbmVkJiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0LmNsYXNzTmFtZS5tYXRjaCh0Lm52UG9pbnRlckV2ZW50c0NsYXNzKSlyZXR1cm47dS5lbGVtZW50TW91c2VvdXQoe21vdXNlWDpuLG1vdXNlWTpyfSksYy5yZW5kZXJHdWlkZUxpbmUobnVsbCk7cmV0dXJufXZhciBmPXMuaW52ZXJ0KG4pO3UuZWxlbWVudE1vdXNlbW92ZSh7bW91c2VYOm4sbW91c2VZOnIscG9pbnRYVmFsdWU6Zn0pfXZhciBoPWQzLnNlbGVjdCh0aGlzKSxwPW58fDk2MCxkPXJ8fDQwMCx2PWguc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtaW50ZXJhY3RpdmVMaW5lTGF5ZXIiKS5kYXRhKFtvXSksbT12LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCIgbnYtd3JhcCBudi1pbnRlcmFjdGl2ZUxpbmVMYXllciIpO20uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1pbnRlcmFjdGl2ZUd1aWRlTGluZSIpO2lmKCFmKXJldHVybjtmLm9uKCJtb3VzZW1vdmUiLGcsITApLm9uKCJtb3VzZW91dCIsZywhMCksYy5yZW5kZXJHdWlkZUxpbmU9ZnVuY3Rpb24odCl7aWYoIWEpcmV0dXJuO3ZhciBuPXYuc2VsZWN0KCIubnYtaW50ZXJhY3RpdmVHdWlkZUxpbmUiKS5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKHQhPW51bGw/W2UudXRpbHMuTmFOdG9aZXJvKHQpXTpbXSxTdHJpbmcpO24uZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsIm52LWd1aWRlbGluZSIpLmF0dHIoIngxIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pLmF0dHIoIngyIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pLmF0dHIoInkxIixkKS5hdHRyKCJ5MiIsMCksbi5leGl0KCkucmVtb3ZlKCl9fSl9dmFyIHQ9ZS5tb2RlbHMudG9vbHRpcCgpLG49bnVsbCxyPW51bGwsaT17bGVmdDowLHRvcDowfSxzPWQzLnNjYWxlLmxpbmVhcigpLG89ZDMuc2NhbGUubGluZWFyKCksdT1kMy5kaXNwYXRjaCgiZWxlbWVudE1vdXNlbW92ZSIsImVsZW1lbnRNb3VzZW91dCIpLGE9ITAsZj1udWxsLGw9bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikhPT0tMTtyZXR1cm4gYy5kaXNwYXRjaD11LGMudG9vbHRpcD10LGMubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpLnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOmkudG9wLGkubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6aS5sZWZ0LGMpOml9LGMud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxjKTpufSxjLmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLGMpOnJ9LGMueFNjYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsYyk6c30sYy5zaG93R3VpZGVMaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsYyk6YX0sYy5zdmdDb250YWluZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSxjKTpmfSxjfSxlLmludGVyYWN0aXZlQmlzZWN0PWZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7aWYoIWUgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4gbnVsbDt0eXBlb2YgbiE9ImZ1bmN0aW9uIiYmKG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS54fSk7dmFyIHI9ZDMuYmlzZWN0b3IobikubGVmdCxpPWQzLm1heChbMCxyKGUsdCktMV0pLHM9bihlW2ldLGkpO3R5cGVvZiBzPT0idW5kZWZpbmVkIiYmKHM9aSk7aWYocz09PXQpcmV0dXJuIGk7dmFyIG89ZDMubWluKFtpKzEsZS5sZW5ndGgtMV0pLHU9bihlW29dLG8pO3JldHVybiB0eXBlb2YgdT09InVuZGVmaW5lZCImJih1PW8pLE1hdGguYWJzKHUtdCk+PU1hdGguYWJzKHMtdCk/aTpvfSxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt3aW5kb3cubnYudG9vbHRpcD17fSx3aW5kb3cubnYubW9kZWxzLnRvb2x0aXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKCl7aWYoYSl7dmFyIGU9ZDMuc2VsZWN0KGEpO2Uubm9kZSgpLnRhZ05hbWUhPT0ic3ZnIiYmKGU9ZS5zZWxlY3QoInN2ZyIpKTt2YXIgdD1lLm5vZGUoKT9lLmF0dHIoInZpZXdCb3giKTpudWxsO2lmKHQpe3Q9dC5zcGxpdCgiICIpO3ZhciBuPXBhcnNlSW50KGUuc3R5bGUoIndpZHRoIikpL3RbMl07Zi5sZWZ0PWYubGVmdCpuLGYudG9wPWYudG9wKm59fX1mdW5jdGlvbiB5KGUpe3ZhciB0O2E/dD1kMy5zZWxlY3QoYSk6dD1kMy5zZWxlY3QoImJvZHkiKTt2YXIgbj10LnNlbGVjdCgiLm52dG9vbHRpcCIpO3JldHVybiBuLm5vZGUoKT09PW51bGwmJihuPXQuYXBwZW5kKCJkaXYiKS5hdHRyKCJjbGFzcyIsIm52dG9vbHRpcCAiKyh1P3U6Inh5LXRvb2x0aXAiKSkuYXR0cigiaWQiLGMpKSxuLm5vZGUoKS5pbm5lckhUTUw9ZSxuLnN0eWxlKCJ0b3AiLDApLnN0eWxlKCJsZWZ0IiwwKS5zdHlsZSgib3BhY2l0eSIsMCksbi5zZWxlY3RBbGwoImRpdiwgdGFibGUsIHRkLCB0ciIpLmNsYXNzZWQoaCwhMCksbi5jbGFzc2VkKGgsITApLG4ubm9kZSgpfWZ1bmN0aW9uIGIoKXtpZighbClyZXR1cm47aWYoIW0obikpcmV0dXJuO2coKTt2YXIgdD1mLmxlZnQsdT1vIT1udWxsP286Zi50b3AsYz15KHYobikpO2lmKGEpe3ZhciBoPWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInN2ZyIpWzBdLHA9aD9oLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZD17bGVmdDowLHRvcDowfTtpZihoKXt2YXIgdz1oLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEU9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtkLnRvcD1NYXRoLmFicyh3LnRvcC1FLnRvcCksZC5sZWZ0PU1hdGguYWJzKHcubGVmdC1FLmxlZnQpfXQrPWEub2Zmc2V0TGVmdCtkLmxlZnQtMiphLnNjcm9sbExlZnQsdSs9YS5vZmZzZXRUb3ArZC50b3AtMiphLnNjcm9sbFRvcH1yZXR1cm4gcyYmcz4wJiYodT1NYXRoLmZsb29yKHUvcykqcyksZS50b29sdGlwLmNhbGNUb29sdGlwUG9zaXRpb24oW3QsdV0scixpLGMpLGJ9dmFyIHQ9bnVsbCxuPW51bGwscj0idyIsaT01MCxzPTI1LG89bnVsbCx1PW51bGwsYT1udWxsLGY9e2xlZnQ6bnVsbCx0b3A6bnVsbH0sbD0hMCxjPSJudnRvb2x0aXAtIitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU1KSxoPSJudi1wb2ludGVyLWV2ZW50cy1ub25lIixwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHY9ZnVuY3Rpb24oZSl7aWYodCE9bnVsbClyZXR1cm4gdDtpZihlPT1udWxsKXJldHVybiIiO3ZhciBuPSI8dGFibGU+PHRoZWFkPjx0cj48dGQgY29sc3Bhbj0nMyc+PHN0cm9uZyBjbGFzcz0neC12YWx1ZSc+IitkKGUudmFsdWUpKyI8L3N0cm9uZz48L3RkPjwvdHI+PC90aGVhZD48dGJvZHk+IjtyZXR1cm4gZS5zZXJpZXMgaW5zdGFuY2VvZiBBcnJheSYmZS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlLHQpe24rPSI8dHI+IixuKz0iPHRkIGNsYXNzPSdsZWdlbmQtY29sb3ItZ3VpZGUnPjxkaXYgc3R5bGU9J2JhY2tncm91bmQtY29sb3I6ICIrZS5jb2xvcisiOyc+PC9kaXY+PC90ZD4iLG4rPSI8dGQgY2xhc3M9J2tleSc+IitlLmtleSsiOjwvdGQ+IixuKz0iPHRkIGNsYXNzPSd2YWx1ZSc+IitwKGUudmFsdWUsdCkrIjwvdGQ+PC90cj4ifSksbis9IjwvdGJvZHk+PC90YWJsZT4iLG59LG09ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuc2VyaWVzJiZlLnNlcmllcy5sZW5ndGg+MD8hMDohMX07cmV0dXJuIGIubnZQb2ludGVyRXZlbnRzQ2xhc3M9aCxiLmNvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ZSxiKTp0fSxiLmNvbnRlbnRHZW5lcmF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPT0iZnVuY3Rpb24iJiYodj1lKSxiKTp2fSxiLmRhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxiKTpufSxiLmdyYXZpdHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSxiKTpyfSxiLmRpc3RhbmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsYik6aX0sYi5zbmFwRGlzdGFuY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZSxiKTpzfSxiLmNsYXNzZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZSxiKTp1fSxiLmNoYXJ0Q29udGFpbmVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsYik6YX0sYi5wb3NpdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZi5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDpmLmxlZnQsZi50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDpmLnRvcCxiKTpmfSxiLmZpeGVkVG9wPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsYik6b30sYi5lbmFibGVkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsYik6bH0sYi52YWx1ZUZvcm1hdHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odHlwZW9mIGU9PSJmdW5jdGlvbiImJihwPWUpLGIpOnB9LGIuaGVhZGVyRm9ybWF0dGVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKGQ9ZSksYik6ZH0sYi5pZD1mdW5jdGlvbigpe3JldHVybiBjfSxifSxlLnRvb2x0aXAuc2hvdz1mdW5jdGlvbih0LG4scixpLHMsbyl7dmFyIHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dS5jbGFzc05hbWU9Im52dG9vbHRpcCAiKyhvP286Inh5LXRvb2x0aXAiKTt2YXIgYT1zO2lmKCFzfHxzLnRhZ05hbWUubWF0Y2goL2d8c3ZnL2kpKWE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTt1LnN0eWxlLmxlZnQ9MCx1LnN0eWxlLnRvcD0wLHUuc3R5bGUub3BhY2l0eT0wLHUuaW5uZXJIVE1MPW4sYS5hcHBlbmRDaGlsZCh1KSxzJiYodFswXT10WzBdLXMuc2Nyb2xsTGVmdCx0WzFdPXRbMV0tcy5zY3JvbGxUb3ApLGUudG9vbHRpcC5jYWxjVG9vbHRpcFBvc2l0aW9uKHQscixpLHUpfSxlLnRvb2x0aXAuZmluZEZpcnN0Tm9uU1ZHUGFyZW50PWZ1bmN0aW9uKGUpe3doaWxlKGUudGFnTmFtZS5tYXRjaCgvXmd8c3ZnJC9pKSE9PW51bGwpZT1lLnBhcmVudE5vZGU7cmV0dXJuIGV9LGUudG9vbHRpcC5maW5kVG90YWxPZmZzZXRUb3A9ZnVuY3Rpb24oZSx0KXt2YXIgbj10O2RvIGlzTmFOKGUub2Zmc2V0VG9wKXx8KG4rPWUub2Zmc2V0VG9wKTt3aGlsZShlPWUub2Zmc2V0UGFyZW50KTtyZXR1cm4gbn0sZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldExlZnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10O2RvIGlzTmFOKGUub2Zmc2V0TGVmdCl8fChuKz1lLm9mZnNldExlZnQpO3doaWxlKGU9ZS5vZmZzZXRQYXJlbnQpO3JldHVybiBufSxlLnRvb2x0aXAuY2FsY1Rvb2x0aXBQb3NpdGlvbj1mdW5jdGlvbih0LG4scixpKXt2YXIgcz1wYXJzZUludChpLm9mZnNldEhlaWdodCksbz1wYXJzZUludChpLm9mZnNldFdpZHRoKSx1PWUudXRpbHMud2luZG93U2l6ZSgpLndpZHRoLGE9ZS51dGlscy53aW5kb3dTaXplKCkuaGVpZ2h0LGY9d2luZG93LnBhZ2VZT2Zmc2V0LGw9d2luZG93LnBhZ2VYT2Zmc2V0LGMsaDthPXdpbmRvdy5pbm5lcldpZHRoPj1kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoP2E6YS0xNix1PXdpbmRvdy5pbm5lckhlaWdodD49ZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ/dTp1LTE2LG49bnx8InMiLHI9cnx8MjA7dmFyIHA9ZnVuY3Rpb24odCl7cmV0dXJuIGUudG9vbHRpcC5maW5kVG90YWxPZmZzZXRUb3AodCxoKX0sZD1mdW5jdGlvbih0KXtyZXR1cm4gZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldExlZnQodCxjKX07c3dpdGNoKG4pe2Nhc2UiZSI6Yz10WzBdLW8tcixoPXRbMV0tcy8yO3ZhciB2PWQoaSksbT1wKGkpO3Y8bCYmKGM9dFswXStyPmw/dFswXStyOmwtditjKSxtPGYmJihoPWYtbStoKSxtK3M+ZithJiYoaD1mK2EtbStoLXMpO2JyZWFrO2Nhc2UidyI6Yz10WzBdK3IsaD10WzFdLXMvMjt2YXIgdj1kKGkpLG09cChpKTt2K28+dSYmKGM9dFswXS1vLXIpLG08ZiYmKGg9Zis1KSxtK3M+ZithJiYoaD1mK2EtbStoLXMpO2JyZWFrO2Nhc2UibiI6Yz10WzBdLW8vMi01LGg9dFsxXStyO3ZhciB2PWQoaSksbT1wKGkpO3Y8bCYmKGM9bCs1KSx2K28+dSYmKGM9Yy1vLzIrNSksbStzPmYrYSYmKGg9ZithLW0raC1zKTticmVhaztjYXNlInMiOmM9dFswXS1vLzIsaD10WzFdLXMtcjt2YXIgdj1kKGkpLG09cChpKTt2PGwmJihjPWwrNSksditvPnUmJihjPWMtby8yKzUpLGY+bSYmKGg9Zik7YnJlYWs7Y2FzZSJub25lIjpjPXRbMF0saD10WzFdLXI7dmFyIHY9ZChpKSxtPXAoaSl9cmV0dXJuIGkuc3R5bGUubGVmdD1jKyJweCIsaS5zdHlsZS50b3A9aCsicHgiLGkuc3R5bGUub3BhY2l0eT0xLGkuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixpfSxlLnRvb2x0aXAuY2xlYW51cD1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm52dG9vbHRpcCIpLHQ9W107d2hpbGUoZS5sZW5ndGgpdC5wdXNoKGVbMF0pLGVbMF0uc3R5bGUudHJhbnNpdGlvbkRlbGF5PSIwICFpbXBvcnRhbnQiLGVbMF0uc3R5bGUub3BhY2l0eT0wLGVbMF0uY2xhc3NOYW1lPSJudnRvb2x0aXAtcGVuZGluZy1yZW1vdmFsIjtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2hpbGUodC5sZW5ndGgpe3ZhciBlPXQucG9wKCk7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfX0sNTAwKX19KCksZS51dGlscy53aW5kb3dTaXplPWZ1bmN0aW9uKCl7dmFyIGU9e3dpZHRoOjY0MCxoZWlnaHQ6NDgwfTtyZXR1cm4gZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCYmKGUud2lkdGg9ZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCxlLmhlaWdodD1kb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCksZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCYmKGUud2lkdGg9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoLGUuaGVpZ2h0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQpLHdpbmRvdy5pbm5lcldpZHRoJiZ3aW5kb3cuaW5uZXJIZWlnaHQmJihlLndpZHRoPXdpbmRvdy5pbm5lcldpZHRoLGUuaGVpZ2h0PXdpbmRvdy5pbm5lckhlaWdodCksZX0sZS51dGlscy53aW5kb3dSZXNpemU9ZnVuY3Rpb24oZSl7aWYoZT09PXVuZGVmaW5lZClyZXR1cm47dmFyIHQ9d2luZG93Lm9ucmVzaXplO3dpbmRvdy5vbnJlc2l6ZT1mdW5jdGlvbihuKXt0eXBlb2YgdD09ImZ1bmN0aW9uIiYmdChuKSxlKG4pfX0sZS51dGlscy5nZXRDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9PT0iW29iamVjdCBBcnJheV0iP2Z1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29sb3J8fHRbbiV0Lmxlbmd0aF19OnQ6ZS51dGlscy5kZWZhdWx0Q29sb3IoKX0sZS51dGlscy5kZWZhdWx0Q29sb3I9ZnVuY3Rpb24oKXt2YXIgZT1kMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFuZ2UoKTtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5jb2xvcnx8ZVtuJWUubGVuZ3RoXX19LGUudXRpbHMuY3VzdG9tVGhlbWU9ZnVuY3Rpb24oZSx0LG4pe3Q9dHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSxuPW58fGQzLnNjYWxlLmNhdGVnb3J5MjAoKS5yYW5nZSgpO3ZhciByPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbihpLHMpe3ZhciBvPXQoaSk7cmV0dXJuIHJ8fChyPW4ubGVuZ3RoKSx0eXBlb2YgZVtvXSE9InVuZGVmaW5lZCI/dHlwZW9mIGVbb109PSJmdW5jdGlvbiI/ZVtvXSgpOmVbb106blstLXJdfX0sZS51dGlscy5wamF4PWZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gcihyKXtkMy5odG1sKHIsZnVuY3Rpb24ocil7dmFyIGk9ZDMuc2VsZWN0KG4pLm5vZGUoKTtpLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGQzLnNlbGVjdChyKS5zZWxlY3Qobikubm9kZSgpLGkpLGUudXRpbHMucGpheCh0LG4pfSl9ZDMuc2VsZWN0QWxsKHQpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtoaXN0b3J5LnB1c2hTdGF0ZSh0aGlzLmhyZWYsdGhpcy50ZXh0Q29udGVudCx0aGlzLmhyZWYpLHIodGhpcy5ocmVmKSxkMy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpfSksZDMuc2VsZWN0KHdpbmRvdykub24oInBvcHN0YXRlIixmdW5jdGlvbigpe2QzLmV2ZW50LnN0YXRlJiZyKGQzLmV2ZW50LnN0YXRlKX0pfSxlLnV0aWxzLmNhbGNBcHByb3hUZXh0V2lkdGg9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGQzLnNlbGVjdGlvbil7dmFyIHQ9cGFyc2VJbnQoZS5zdHlsZSgiZm9udC1zaXplIikucmVwbGFjZSgicHgiLCIiKSksbj1lLnRleHQoKS5sZW5ndGg7cmV0dXJuIG4qdCouNX1yZXR1cm4gMH0sZS51dGlscy5OYU50b1plcm89ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlIT0ibnVtYmVyInx8aXNOYU4oZSl8fGU9PT1udWxsfHxlPT09SW5maW5pdHk/MDplfSxlLnV0aWxzLm9wdGlvbnNGdW5jPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZkMy5tYXAoZSkuZm9yRWFjaChmdW5jdGlvbihlLHQpe3R5cGVvZiB0aGlzW2VdPT0iZnVuY3Rpb24iJiZ0aGlzW2VdKHQpfS5iaW5kKHRoaXMpKSx0aGlzfSxlLm1vZGVscy5heGlzPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT1kMy5zZWxlY3QodGhpcyksdj1pLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWF4aXMiKS5kYXRhKFtlXSksbT12LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYXhpcyIpLGc9bS5hcHBlbmQoImciKSx5PXYuc2VsZWN0KCJnIik7cCE9PW51bGw/dC50aWNrcyhwKToodC5vcmllbnQoKT09InRvcCJ8fHQub3JpZW50KCk9PSJib3R0b20iKSYmdC50aWNrcyhNYXRoLmFicyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBdKS8xMDApLHkudHJhbnNpdGlvbigpLmNhbGwodCksZD1kfHx0LnNjYWxlKCk7dmFyIGI9dC50aWNrRm9ybWF0KCk7Yj09bnVsbCYmKGI9ZC50aWNrRm9ybWF0KCkpO3ZhciB3PXkuc2VsZWN0QWxsKCJ0ZXh0Lm52LWF4aXNsYWJlbCIpLmRhdGEoW298fG51bGxdKTt3LmV4aXQoKS5yZW1vdmUoKTtzd2l0Y2godC5vcmllbnQoKSl7Y2FzZSJ0b3AiOncuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpO3ZhciBFPXMucmFuZ2UoKS5sZW5ndGg9PTI/cy5yYW5nZSgpWzFdOnMucmFuZ2UoKVtzLnJhbmdlKCkubGVuZ3RoLTFdKyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBdKTt3LmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieSIsMCkuYXR0cigieCIsRS8yKTtpZih1KXt2YXIgUz12LnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShzLmRvbWFpbigpKTtTLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1heGlzTWF4TWluIikuYXBwZW5kKCJ0ZXh0IiksUy5leGl0KCkucmVtb3ZlKCksUy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK3MoZSkrIiwwKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIjBlbSIpLmF0dHIoInkiLC10LnRpY2tQYWRkaW5nKCkpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChmdW5jdGlvbihlLHQpe3ZhciBuPWIoZSk7cmV0dXJuKCIiK24pLm1hdGNoKCJOYU4iKT8iIjpufSksUy50cmFuc2l0aW9uKCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitzLnJhbmdlKClbdF0rIiwwKSJ9KX1icmVhaztjYXNlImJvdHRvbSI6dmFyIHg9MzYsVD0zMCxOPXkuc2VsZWN0QWxsKCJnIikuc2VsZWN0KCJ0ZXh0Iik7aWYoZiUzNjApe04uZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0QkJveCgpLndpZHRoO24+VCYmKFQ9bil9KTt2YXIgQz1NYXRoLmFicyhNYXRoLnNpbihmKk1hdGguUEkvMTgwKSkseD0oQz9DKlQ6VCkrMzA7Ti5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4icm90YXRlKCIrZisiIDAsMCkifSkuc3R5bGUoInRleHQtYW5jaG9yIixmJTM2MD4wPyJzdGFydCI6ImVuZCIpfXcuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpO3ZhciBFPXMucmFuZ2UoKS5sZW5ndGg9PTI/cy5yYW5nZSgpWzFdOnMucmFuZ2UoKVtzLnJhbmdlKCkubGVuZ3RoLTFdKyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBdKTt3LmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieSIseCkuYXR0cigieCIsRS8yKTtpZih1KXt2YXIgUz12LnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShbcy5kb21haW4oKVswXSxzLmRvbWFpbigpW3MuZG9tYWluKCkubGVuZ3RoLTFdXSk7Uy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLFMuZXhpdCgpLnJlbW92ZSgpLFMuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIisocyhlKSsoaD9zLnJhbmdlQmFuZCgpLzI6MCkpKyIsMCkifSkuc2VsZWN0KCJ0ZXh0IikuYXR0cigiZHkiLCIuNzFlbSIpLmF0dHIoInkiLHQudGlja1BhZGRpbmcoKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0dXJuInJvdGF0ZSgiK2YrIiAwLDApIn0pLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZj9mJTM2MD4wPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj1iKGUpO3JldHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn0pLFMudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHMoZSkrKGg/cy5yYW5nZUJhbmQoKS8yOjApKSsiLDApIn0pfWMmJk4uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyh0JTI9PTA/IjAiOiIxMiIpKyIpIn0pO2JyZWFrO2Nhc2UicmlnaHQiOncuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpLHcuc3R5bGUoInRleHQtYW5jaG9yIixsPyJtaWRkbGUiOiJiZWdpbiIpLmF0dHIoInRyYW5zZm9ybSIsbD8icm90YXRlKDkwKSI6IiIpLmF0dHIoInkiLGw/LU1hdGgubWF4KG4ucmlnaHQscikrMTI6LTEwKS5hdHRyKCJ4IixsP3MucmFuZ2UoKVswXS8yOnQudGlja1BhZGRpbmcoKSk7aWYodSl7dmFyIFM9di5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIpLmRhdGEocy5kb21haW4oKSk7Uy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwwKSxTLmV4aXQoKS5yZW1vdmUoKSxTLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKDAsIitzKGUpKyIpIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIoImR5IiwiLjMyZW0iKS5hdHRyKCJ5IiwwKS5hdHRyKCJ4Iix0LnRpY2tQYWRkaW5nKCkpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IikudGV4dChmdW5jdGlvbihlLHQpe3ZhciBuPWIoZSk7cmV0dXJuKCIiK24pLm1hdGNoKCJOYU4iKT8iIjpufSksUy50cmFuc2l0aW9uKCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3MucmFuZ2UoKVt0XSsiKSJ9KS5zZWxlY3QoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSl9YnJlYWs7Y2FzZSJsZWZ0Ijp3LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1heGlzbGFiZWwiKSx3LnN0eWxlKCJ0ZXh0LWFuY2hvciIsbD8ibWlkZGxlIjoiZW5kIikuYXR0cigidHJhbnNmb3JtIixsPyJyb3RhdGUoLTkwKSI6IiIpLmF0dHIoInkiLGw/LU1hdGgubWF4KG4ubGVmdCxyKSsxMjotMTApLmF0dHIoIngiLGw/LXMucmFuZ2UoKVswXS8yOi10LnRpY2tQYWRkaW5nKCkpO2lmKHUpe3ZhciBTPXYuc2VsZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5kYXRhKHMuZG9tYWluKCkpO1MuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMCksUy5leGl0KCkucmVtb3ZlKCksUy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrZChlKSsiKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIi4zMmVtIikuYXR0cigieSIsMCkuYXR0cigieCIsLXQudGlja1BhZGRpbmcoKSkuYXR0cigidGV4dC1hbmNob3IiLCJlbmQiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49YihlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSxTLnRyYW5zaXRpb24oKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrcy5yYW5nZSgpW3RdKyIpIn0pLnNlbGVjdCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKX19dy50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksdSYmKHQub3JpZW50KCk9PT0ibGVmdCJ8fHQub3JpZW50KCk9PT0icmlnaHQiKSYmKHkuc2VsZWN0QWxsKCJnIikuZWFjaChmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5hdHRyKCJvcGFjaXR5IiwxKTtpZihzKGUpPHMucmFuZ2UoKVsxXSsxMHx8cyhlKT5zLnJhbmdlKClbMF0tMTApKGU+MWUtMTB8fGU8LTFlLTEwKSYmZDMuc2VsZWN0KHRoaXMpLmF0dHIoIm9wYWNpdHkiLDApLGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5hdHRyKCJvcGFjaXR5IiwwKX0pLHMuZG9tYWluKClbMF09PXMuZG9tYWluKClbMV0mJnMuZG9tYWluKClbMF09PTAmJnYuc2VsZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8wOjF9KSk7aWYodSYmKHQub3JpZW50KCk9PT0idG9wInx8dC5vcmllbnQoKT09PSJib3R0b20iKSl7dmFyIGs9W107di5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIpLmVhY2goZnVuY3Rpb24oZSx0KXt0cnl7dD9rLnB1c2gocyhlKS10aGlzLmdldEJCb3goKS53aWR0aC00KTprLnB1c2gocyhlKSt0aGlzLmdldEJCb3goKS53aWR0aCs0KX1jYXRjaChuKXt0P2sucHVzaChzKGUpLTQpOmsucHVzaChzKGUpKzQpfX0pLHkuc2VsZWN0QWxsKCJnIikuZWFjaChmdW5jdGlvbihlLHQpe2lmKHMoZSk8a1swXXx8cyhlKT5rWzFdKWU+MWUtMTB8fGU8LTFlLTEwP2QzLnNlbGVjdCh0aGlzKS5yZW1vdmUoKTpkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0IikucmVtb3ZlKCl9KX1hJiZ5LnNlbGVjdEFsbCgiLnRpY2siKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIXBhcnNlRmxvYXQoTWF0aC5yb3VuZChlLl9fZGF0YV9fKjFlNSkvMWU2KSYmZS5fX2RhdGFfXyE9PXVuZGVmaW5lZH0pLmNsYXNzZWQoInplcm8iLCEwKSxkPXMuY29weSgpfSksdn12YXIgdD1kMy5zdmcuYXhpcygpLG49e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxyPTc1LGk9NjAscz1kMy5zY2FsZS5saW5lYXIoKSxvPW51bGwsdT0hMCxhPSEwLGY9MCxsPSEwLGM9ITEsaD0hMSxwPW51bGw7dC5zY2FsZShzKS5vcmllbnQoImJvdHRvbSIpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTt2YXIgZDtyZXR1cm4gdi5heGlzPXQsZDMucmViaW5kKHYsdCwib3JpZW50IiwidGlja1ZhbHVlcyIsInRpY2tTdWJkaXZpZGUiLCJ0aWNrU2l6ZSIsInRpY2tQYWRkaW5nIiwidGlja0Zvcm1hdCIpLGQzLnJlYmluZCh2LHMsImRvbWFpbiIsInJhbmdlIiwicmFuZ2VCYW5kIiwicmFuZ2VCYW5kcyIpLHYub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodiksdi5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDpuLnJpZ2h0LG4uYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206bi5ib3R0b20sbi5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsdik6bn0sdi53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLHYpOnJ9LHYudGlja3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSx2KTpwfSx2LmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1lLHYpOml9LHYuYXhpc0xhYmVsPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsdik6b30sdi5zaG93TWF4TWluPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsdik6dX0sdi5oaWdobGlnaHRaZXJvPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsdik6YX0sdi5zY2FsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLHQuc2NhbGUocyksaD10eXBlb2Ygcy5yYW5nZUJhbmRzPT0iZnVuY3Rpb24iLGQzLnJlYmluZCh2LHMsImRvbWFpbiIsInJhbmdlIiwicmFuZ2VCYW5kIiwicmFuZ2VCYW5kcyIpLHYpOnN9LHYucm90YXRlWUxhYmVsPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsdik6bH0sdi5yb3RhdGVMYWJlbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSx2KTpmfSx2LnN0YWdnZXJMYWJlbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ZSx2KTpjfSx2fSxlLm1vZGVscy5idWxsZXQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIHA9Yy10LmxlZnQtdC5yaWdodCxtPWgtdC50b3AtdC5ib3R0b20sZz1kMy5zZWxlY3QodGhpcykseT1pLmNhbGwodGhpcyxlLG4pLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSxiPXMuY2FsbCh0aGlzLGUsbikuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLHc9by5jYWxsKHRoaXMsZSxuKS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksRT11LmNhbGwodGhpcyxlLG4pLnNsaWNlKCksUz1hLmNhbGwodGhpcyxlLG4pLnNsaWNlKCkseD1mLmNhbGwodGhpcyxlLG4pLnNsaWNlKCksVD1kMy5zY2FsZS5saW5lYXIoKS5kb21haW4oZDMuZXh0ZW50KGQzLm1lcmdlKFtsLHldKSkpLnJhbmdlKHI/W3AsMF06WzAscF0pLE49dGhpcy5fX2NoYXJ0X198fGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCxJbmZpbml0eV0pLnJhbmdlKFQucmFuZ2UoKSk7dGhpcy5fX2NoYXJ0X189VDt2YXIgQz1kMy5taW4oeSksaz1kMy5tYXgoeSksTD15WzFdLEE9Zy5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1idWxsZXQiKS5kYXRhKFtlXSksTz1BLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYnVsbGV0IiksTT1PLmFwcGVuZCgiZyIpLF89QS5zZWxlY3QoImciKTtNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuZ2UgbnYtcmFuZ2VNYXgiKSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuZ2UgbnYtcmFuZ2VBdmciKSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuZ2UgbnYtcmFuZ2VNaW4iKSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtbWVhc3VyZSIpLE0uYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJudi1tYXJrZXJUcmlhbmdsZSIpLEEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBEPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhOKGUpLU4oMCkpfSxQPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhUKGUpLVQoMCkpfSxIPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/TihlKTpOKDApfSxCPWZ1bmN0aW9uKGUpe3JldHVybiBlPDA/VChlKTpUKDApfTtfLnNlbGVjdCgicmVjdC5udi1yYW5nZU1heCIpLmF0dHIoImhlaWdodCIsbSkuYXR0cigid2lkdGgiLFAoaz4wP2s6QykpLmF0dHIoIngiLEIoaz4wP2s6QykpLmRhdHVtKGs+MD9rOkMpLF8uc2VsZWN0KCJyZWN0Lm52LXJhbmdlQXZnIikuYXR0cigiaGVpZ2h0IixtKS5hdHRyKCJ3aWR0aCIsUChMKSkuYXR0cigieCIsQihMKSkuZGF0dW0oTCksXy5zZWxlY3QoInJlY3QubnYtcmFuZ2VNaW4iKS5hdHRyKCJoZWlnaHQiLG0pLmF0dHIoIndpZHRoIixQKGspKS5hdHRyKCJ4IixCKGspKS5hdHRyKCJ3aWR0aCIsUChrPjA/QzprKSkuYXR0cigieCIsQihrPjA/QzprKSkuZGF0dW0oaz4wP0M6ayksXy5zZWxlY3QoInJlY3QubnYtbWVhc3VyZSIpLnN0eWxlKCJmaWxsIixkKS5hdHRyKCJoZWlnaHQiLG0vMykuYXR0cigieSIsbS8zKS5hdHRyKCJ3aWR0aCIsdzwwP1QoMCktVCh3WzBdKTpUKHdbMF0pLVQoMCkpLmF0dHIoIngiLEIodykpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTp3WzBdLGxhYmVsOnhbMF18fCJDdXJyZW50Iixwb3M6W1Qod1swXSksbS8yXX0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe3YuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTp3WzBdLGxhYmVsOnhbMF18fCJDdXJyZW50In0pfSk7dmFyIGo9bS82O2JbMF0/Xy5zZWxlY3RBbGwoInBhdGgubnYtbWFya2VyVHJpYW5nbGUiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitUKGJbMF0pKyIsIittLzIrIikifSkuYXR0cigiZCIsIk0wLCIraisiTCIraisiLCIrIC1qKyIgIisgLWorIiwiKyAtaisiWiIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTpiWzBdLGxhYmVsOlNbMF18fCJQcmV2aW91cyIscG9zOltUKGJbMF0pLG0vMl19KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXt2LmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6YlswXSxsYWJlbDpTWzBdfHwiUHJldmlvdXMifSl9KTpfLnNlbGVjdEFsbCgicGF0aC5udi1tYXJrZXJUcmlhbmdsZSIpLnJlbW92ZSgpLEEuc2VsZWN0QWxsKCIubnYtcmFuZ2UiKS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpe3ZhciBuPUVbdF18fCh0P3Q9PTE/Ik1lYW4iOiJNaW5pbXVtIjoiTWF4aW11bSIpO3YuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6ZSxsYWJlbDpuLHBvczpbVChlKSxtLzJdfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7dmFyIG49RVt0XXx8KHQ/dD09MT8iTWVhbiI6Ik1pbmltdW0iOiJNYXhpbXVtIik7di5lbGVtZW50TW91c2VvdXQoe3ZhbHVlOmUsbGFiZWw6bn0pfSl9KSxtfXZhciB0PXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0ibGVmdCIscj0hMSxpPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJhbmdlc30scz1mdW5jdGlvbihlKXtyZXR1cm4gZS5tYXJrZXJzfSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLm1lYXN1cmVzfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLnJhbmdlTGFiZWxzP2UucmFuZ2VMYWJlbHM6W119LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFya2VyTGFiZWxzP2UubWFya2VyTGFiZWxzOltdfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBlLm1lYXN1cmVMYWJlbHM/ZS5tZWFzdXJlTGFiZWxzOltdfSxsPVswXSxjPTM4MCxoPTMwLHA9bnVsbCxkPWUudXRpbHMuZ2V0Q29sb3IoWyIjMWY3N2I0Il0pLHY9ZDMuZGlzcGF0Y2goImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXR1cm4gbS5kaXNwYXRjaD12LG0ub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQobSksbS5vcmllbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxyPW49PSJyaWdodCJ8fG49PSJib3R0b20iLG0pOm59LG0ucmFuZ2VzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsbSk6aX0sbS5tYXJrZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsbSk6c30sbS5tZWFzdXJlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLG0pOm99LG0uZm9yY2VYPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsbSk6bH0sbS53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLG0pOmN9LG0uaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWUsbSk6aH0sbS5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsbSk6dH0sbS50aWNrRm9ybWF0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPWUsbSk6cH0sbS5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1lLnV0aWxzLmdldENvbG9yKHQpLG0pOmR9LG19LGUubW9kZWxzLmJ1bGxldENoYXJ0PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihuLGgpe3ZhciBnPWQzLnNlbGVjdCh0aGlzKSx5PShhfHxwYXJzZUludChnLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1pLmxlZnQtaS5yaWdodCxiPWYtaS50b3AtaS5ib3R0b20sdz10aGlzO20udXBkYXRlPWZ1bmN0aW9uKCl7bShlKX0sbS5jb250YWluZXI9dGhpcztpZighbnx8IXMuY2FsbCh0aGlzLG4saCkpe3ZhciBFPWcuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbcF0pO3JldHVybiBFLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxFLmF0dHIoIngiLGkubGVmdCt5LzIpLmF0dHIoInkiLDE4K2kudG9wK2IvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLG19Zy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgUz1zLmNhbGwodGhpcyxuLGgpLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSx4PW8uY2FsbCh0aGlzLG4saCkuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLFQ9dS5jYWxsKHRoaXMsbixoKS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksTj1nLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWJ1bGxldENoYXJ0IikuZGF0YShbbl0pLEM9Ti5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWJ1bGxldENoYXJ0Iiksaz1DLmFwcGVuZCgiZyIpLEw9Ti5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYnVsbGV0V3JhcCIpLGsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi10aXRsZXMiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2kubGVmdCsiLCIraS50b3ArIikiKTt2YXIgQT1kMy5zY2FsZS5saW5lYXIoKS5kb21haW4oWzAsTWF0aC5tYXgoU1swXSx4WzBdLFRbMF0pXSkucmFuZ2Uocj9beSwwXTpbMCx5XSksTz10aGlzLl9fY2hhcnRfX3x8ZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKFswLEluZmluaXR5XSkucmFuZ2UoQS5yYW5nZSgpKTt0aGlzLl9fY2hhcnRfXz1BO3ZhciBNPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhPKGUpLU8oMCkpfSxfPWZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhBKGUpLUEoMCkpfSxEPWsuc2VsZWN0KCIubnYtdGl0bGVzIikuYXBwZW5kKCJnIikuYXR0cigidGV4dC1hbmNob3IiLCJlbmQiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTYsIisoZi1pLnRvcC1pLmJvdHRvbSkvMisiKSIpO0QuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi10aXRsZSIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGl0bGV9KSxELmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtc3VidGl0bGUiKS5hdHRyKCJkeSIsIjFlbSIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3VidGl0bGV9KSx0LndpZHRoKHkpLmhlaWdodChiKTt2YXIgUD1MLnNlbGVjdCgiLm52LWJ1bGxldFdyYXAiKTtkMy50cmFuc2l0aW9uKFApLmNhbGwodCk7dmFyIEg9bHx8QS50aWNrRm9ybWF0KHkvMTAwKSxCPUwuc2VsZWN0QWxsKCJnLm52LXRpY2siKS5kYXRhKEEudGlja3MoeS81MCksZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGV4dENvbnRlbnR8fEgoZSl9KSxqPUIuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXRpY2siKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitPKGUpKyIsMCkifSkuc3R5bGUoIm9wYWNpdHkiLDFlLTYpO2ouYXBwZW5kKCJsaW5lIikuYXR0cigieTEiLGIpLmF0dHIoInkyIixiKjcvNiksai5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImR5IiwiMWVtIikuYXR0cigieSIsYio3LzYpLnRleHQoSCk7dmFyIEY9ZDMudHJhbnNpdGlvbihCKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitBKGUpKyIsMCkifSkuc3R5bGUoIm9wYWNpdHkiLDEpO0Yuc2VsZWN0KCJsaW5lIikuYXR0cigieTEiLGIpLmF0dHIoInkyIixiKjcvNiksRi5zZWxlY3QoInRleHQiKS5hdHRyKCJ5IixiKjcvNiksZDMudHJhbnNpdGlvbihCLmV4aXQoKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrQShlKSsiLDApIn0pLnN0eWxlKCJvcGFjaXR5IiwxZS02KS5yZW1vdmUoKSxkLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7ZS5rZXk9bi50aXRsZSxjJiZ2KGUsdy5wYXJlbnROb2RlKX0pfSksZDMudGltZXIuZmx1c2goKSxtfXZhciB0PWUubW9kZWxzLmJ1bGxldCgpLG49ImxlZnQiLHI9ITEsaT17dG9wOjUscmlnaHQ6NDAsYm90dG9tOjIwLGxlZnQ6MTIwfSxzPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJhbmdlc30sbz1mdW5jdGlvbihlKXtyZXR1cm4gZS5tYXJrZXJzfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLm1lYXN1cmVzfSxhPW51bGwsZj01NSxsPW51bGwsYz0hMCxoPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK3QrIjwvaDM+IisiPHA+IituKyI8L3A+In0scD0iTm8gRGF0YSBBdmFpbGFibGUuIixkPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiksdj1mdW5jdGlvbih0LG4pe3ZhciByPXQucG9zWzBdKyhuLm9mZnNldExlZnR8fDApK2kubGVmdCxzPXQucG9zWzFdKyhuLm9mZnNldFRvcHx8MCkraS50b3Asbz1oKHQua2V5LHQubGFiZWwsdC52YWx1ZSx0LG0pO2UudG9vbHRpcC5zaG93KFtyLHNdLG8sdC52YWx1ZTwwPyJlIjoidyIsbnVsbCxuKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZC50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtkLnRvb2x0aXBIaWRlKGUpfSksZC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7YyYmZS50b29sdGlwLmNsZWFudXAoKX0pLG0uZGlzcGF0Y2g9ZCxtLmJ1bGxldD10LGQzLnJlYmluZChtLHQsImNvbG9yIiksbS5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChtKSxtLm9yaWVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLHI9bj09InJpZ2h0Inx8bj09ImJvdHRvbSIsbSk6bn0sbS5yYW5nZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZSxtKTpzfSxtLm1hcmtlcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ZSxtKTpvfSxtLm1lYXN1cmVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsbSk6dX0sbS53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLG0pOmF9LG0uaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUsbSk6Zn0sbS5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6aS50b3AsaS5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDppLnJpZ2h0LGkuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206aS5ib3R0b20saS5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDppLmxlZnQsbSk6aX0sbS50aWNrRm9ybWF0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsbSk6bH0sbS50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLG0pOmN9LG0udG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSxtKTpofSxtLm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLG0pOnB9LG19LGUubW9kZWxzLmN1bXVsYXRpdmVMaW5lQ2hhcnQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gXyhiKXtyZXR1cm4gYi5lYWNoKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIHEoZSx0KXtkMy5zZWxlY3QoXy5jb250YWluZXIpLnN0eWxlKCJjdXJzb3IiLCJldy1yZXNpemUiKX1mdW5jdGlvbiBSKGUsdCl7Ty54PWQzLmV2ZW50LngsTy5pPU1hdGgucm91bmQoQS5pbnZlcnQoTy54KSkscnQoKX1mdW5jdGlvbiBVKGUsdCl7ZDMuc2VsZWN0KF8uY29udGFpbmVyKS5zdHlsZSgiY3Vyc29yIiwiYXV0byIpLHguaW5kZXg9Ty5pLGsuc3RhdGVDaGFuZ2UoeCl9ZnVuY3Rpb24gcnQoKXtudC5kYXRhKFtPXSk7dmFyIGU9Xy50cmFuc2l0aW9uRHVyYXRpb24oKTtfLnRyYW5zaXRpb25EdXJhdGlvbigwKSxfLnVwZGF0ZSgpLF8udHJhbnNpdGlvbkR1cmF0aW9uKGUpfXZhciBQPWQzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJudi1jaGFydC0iK1MsITApLEg9dGhpcyxCPShmfHxwYXJzZUludChQLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11LmxlZnQtdS5yaWdodCxqPShsfHxwYXJzZUludChQLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b207Xy51cGRhdGU9ZnVuY3Rpb24oKXtQLnRyYW5zaXRpb24oKS5kdXJhdGlvbihMKS5jYWxsKF8pfSxfLmNvbnRhaW5lcj10aGlzLHguZGlzYWJsZWQ9Yi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIVQpe3ZhciBGO1Q9e307Zm9yKEYgaW4geCl4W0ZdaW5zdGFuY2VvZiBBcnJheT9UW0ZdPXhbRl0uc2xpY2UoMCk6VFtGXT14W0ZdfXZhciBJPWQzLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixxKS5vbigiZHJhZyIsUikub24oImRyYWdlbmQiLFUpO2lmKCFifHwhYi5sZW5ndGh8fCFiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgej1QLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW05dKTtyZXR1cm4gei5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksei5hdHRyKCJ4Iix1LmxlZnQrQi8yKS5hdHRyKCJ5Iix1LnRvcCtqLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxffVAuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksdz10LnhTY2FsZSgpLEU9dC55U2NhbGUoKTtpZigheSl7dmFyIFc9Yi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KS5tYXAoZnVuY3Rpb24oZSxuKXt2YXIgcj1kMy5leHRlbnQoZS52YWx1ZXMsdC55KCkpO3JldHVybiByWzBdPC0wLjk1JiYoclswXT0tMC45NSksWyhyWzBdLXJbMV0pLygxK3JbMV0pLChyWzFdLXJbMF0pLygxK3JbMF0pXX0pLFg9W2QzLm1pbihXLGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdfSksZDMubWF4KFcsZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19KV07dC55RG9tYWluKFgpfWVsc2UgdC55RG9tYWluKG51bGwpO0EuZG9tYWluKFswLGJbMF0udmFsdWVzLmxlbmd0aC0xXSkucmFuZ2UoWzAsQl0pLmNsYW1wKCEwKTt2YXIgYj1EKE8uaSxiKSxWPWc/Im5vbmUiOiJhbGwiLCQ9UC5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1jdW11bGF0aXZlTGluZSIpLmRhdGEoW2JdKSxKPSQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1jdW11bGF0aXZlTGluZSIpLmFwcGVuZCgiZyIpLEs9JC5zZWxlY3QoImciKTtKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmUiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFja2dyb3VuZCIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLFYpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1hdmdMaW5lc1dyYXAiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksSi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksYyYmKGkud2lkdGgoQiksSy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oYikuY2FsbChpKSx1LnRvcCE9aS5oZWlnaHQoKSYmKHUudG9wPWkuaGVpZ2h0KCksaj0obHx8cGFyc2VJbnQoUC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tKSxLLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtdS50b3ArIikiKSk7aWYobSl7dmFyIFE9W3trZXk6IlJlLXNjYWxlIHktYXhpcyIsZGlzYWJsZWQ6IXl9XTtzLndpZHRoKDE0MCkuY29sb3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSksSy5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bShRKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtdS50b3ArIikiKS5jYWxsKHMpfSQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdS5sZWZ0KyIsIit1LnRvcCsiKSIpLGQmJksuc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrQisiLDApIik7dmFyIEc9Yi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGVtcERpc2FibGVkfSk7JC5zZWxlY3QoIi50ZW1wRGlzYWJsZWQiKS5yZW1vdmUoKSxHLmxlbmd0aCYmJC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInRlbXBEaXNhYmxlZCIpLmF0dHIoIngiLEIvMikuYXR0cigieSIsIi0uNzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsImVuZCIpLnRleHQoRy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSkuam9pbigiLCAiKSsiIHZhbHVlcyBjYW5ub3QgYmUgY2FsY3VsYXRlZCBmb3IgdGhpcyB0aW1lIHBlcmlvZC4iKSxnJiYoby53aWR0aChCKS5oZWlnaHQoaikubWFyZ2luKHtsZWZ0OnUubGVmdCx0b3A6dS50b3B9KS5zdmdDb250YWluZXIoUCkueFNjYWxlKHcpLCQuc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS5jYWxsKG8pKSxKLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5hcHBlbmQoInJlY3QiKSxLLnNlbGVjdCgiLm52LWJhY2tncm91bmQgcmVjdCIpLmF0dHIoIndpZHRoIixCKS5hdHRyKCJoZWlnaHQiLGopLHQueShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNwbGF5Lnl9KS53aWR0aChCKS5oZWlnaHQoaikuY29sb3IoYi5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YShlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWJbdF0uZGlzYWJsZWQmJiFiW3RdLnRlbXBEaXNhYmxlZH0pKTt2YXIgWT1LLnNlbGVjdCgiLm52LWxpbmVzV3JhcCIpLmRhdHVtKGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiYhZS50ZW1wRGlzYWJsZWR9KSk7WS5jYWxsKHQpLGIuZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uuc2VyaWVzSW5kZXg9dH0pO3ZhciBaPWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiYhIUMoZSl9KSxldD1LLnNlbGVjdCgiLm52LWF2Z0xpbmVzV3JhcCIpLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoWixmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KSx0dD1mdW5jdGlvbihlKXt2YXIgdD1FKEMoZSkpO3JldHVybiB0PDA/MDp0Pmo/ajp0fTtldC5lbnRlcigpLmFwcGVuZCgibGluZSIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMTAsMTAiKS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLG4pe3JldHVybiB0LmNvbG9yKCkoZSxlLnNlcmllc0luZGV4KX0pLmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsQikuYXR0cigieTEiLHR0KS5hdHRyKCJ5MiIsdHQpLGV0LnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsZnVuY3Rpb24oZSl7dmFyIHQ9RShDKGUpKTtyZXR1cm4gdDwwfHx0Pmo/MDoxfSkuYXR0cigieDEiLDApLmF0dHIoIngyIixCKS5hdHRyKCJ5MSIsdHQpLmF0dHIoInkyIix0dCksZXQuZXhpdCgpLnJlbW92ZSgpO3ZhciBudD1ZLnNlbGVjdEFsbCgiLm52LWluZGV4TGluZSIpLmRhdGEoW09dKTtudC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtaW5kZXhMaW5lIikuYXR0cigid2lkdGgiLDMpLmF0dHIoIngiLC0yKS5hdHRyKCJmaWxsIiwicmVkIikuYXR0cigiZmlsbC1vcGFjaXR5IiwuNSkuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuY2FsbChJKSxudC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitBKGUuaSkrIiwwKSJ9KS5hdHRyKCJoZWlnaHQiLGopLGgmJihuLnNjYWxlKHcpLnRpY2tzKE1hdGgubWluKGJbMF0udmFsdWVzLmxlbmd0aCxCLzcwKSkudGlja1NpemUoLWosMCksSy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK0UucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oSy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKSkuY2FsbChuKSkscCYmKHIuc2NhbGUoRSkudGlja3Moai8zNikudGlja1NpemUoLUIsMCksZDMudHJhbnNpdGlvbihLLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpKS5jYWxsKHIpKSxLLnNlbGVjdCgiLm52LWJhY2tncm91bmQgcmVjdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtPLng9ZDMubW91c2UodGhpcylbMF0sTy5pPU1hdGgucm91bmQoQS5pbnZlcnQoTy54KSkseC5pbmRleD1PLmksay5zdGF0ZUNoYW5nZSh4KSxydCgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudENsaWNrIixmdW5jdGlvbihlKXtPLmk9ZS5wb2ludEluZGV4LE8ueD1BKE8uaSkseC5pbmRleD1PLmksay5zdGF0ZUNoYW5nZSh4KSxydCgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmxlZD0hZS5kaXNhYmxlZCx5PSFlLmRpc2FibGVkLHgucmVzY2FsZVk9eSxrLnN0YXRlQ2hhbmdlKHgpLF8udXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7eC5kaXNhYmxlZD1lLmRpc2FibGVkLGsuc3RhdGVDaGFuZ2UoeCksXy51cGRhdGUoKX0pLG8uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW1vdmUiLGZ1bmN0aW9uKGkpe3QuY2xlYXJIaWdobGlnaHRzKCk7dmFyIHMsZixsLGM9W107Yi5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD10LCFlLmRpc2FibGVkfSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2Y9ZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpLnBvaW50WFZhbHVlLF8ueCgpKSx0LmhpZ2hsaWdodFBvaW50KHIsZiwhMCk7dmFyIG89bi52YWx1ZXNbZl07aWYodHlwZW9mIG89PSJ1bmRlZmluZWQiKXJldHVybjt0eXBlb2Ygcz09InVuZGVmaW5lZCImJihzPW8pLHR5cGVvZiBsPT0idW5kZWZpbmVkIiYmKGw9Xy54U2NhbGUoKShfLngoKShvLGYpKSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6Xy55KCkobyxmKSxjb2xvcjphKG4sbi5zZXJpZXNJbmRleCl9KX0pO3ZhciBoPW4udGlja0Zvcm1hdCgpKF8ueCgpKHMsZikpO28udG9vbHRpcC5wb3NpdGlvbih7bGVmdDpsK3UubGVmdCx0b3A6aS5tb3VzZVkrdS50b3B9KS5jaGFydENvbnRhaW5lcihILnBhcmVudE5vZGUpLmVuYWJsZWQodikudmFsdWVGb3JtYXR0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci50aWNrRm9ybWF0KCkoZSl9KS5kYXRhKHt2YWx1ZTpoLHNlcmllczpjfSkoKSxvLnJlbmRlckd1aWRlTGluZShsKX0pLG8uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7ay50b29sdGlwSGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxrLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7diYmTShlLEgucGFyZW50Tm9kZSl9KSxrLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPSJ1bmRlZmluZWQiJiYoYi5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD1lLmRpc2FibGVkW25dfSkseC5kaXNhYmxlZD1lLmRpc2FibGVkKSx0eXBlb2YgZS5pbmRleCE9InVuZGVmaW5lZCImJihPLmk9ZS5pbmRleCxPLng9QShPLmkpLHguaW5kZXg9ZS5pbmRleCxudC5kYXRhKFtPXSkpLHR5cGVvZiBlLnJlc2NhbGVZIT0idW5kZWZpbmVkIiYmKHk9ZS5yZXNjYWxlWSksXy51cGRhdGUoKX0pfSksX31mdW5jdGlvbiBEKGUsbil7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG4scil7aWYoIW4udmFsdWVzKXJldHVybiBuO3ZhciBpPXQueSgpKG4udmFsdWVzW2VdLGUpO3JldHVybiBpPC0wLjk1PyhuLnRlbXBEaXNhYmxlZD0hMCxuKToobi50ZW1wRGlzYWJsZWQ9ITEsbi52YWx1ZXM9bi52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuZGlzcGxheT17eToodC55KCkoZSxuKS1pKS8oMStpKX0sZX0pLG4pfSl9dmFyIHQ9ZS5tb2RlbHMubGluZSgpLG49ZS5tb2RlbHMuYXhpcygpLHI9ZS5tb2RlbHMuYXhpcygpLGk9ZS5tb2RlbHMubGVnZW5kKCkscz1lLm1vZGVscy5sZWdlbmQoKSxvPWUuaW50ZXJhY3RpdmVHdWlkZWxpbmUoKSx1PXt0b3A6MzAscmlnaHQ6MzAsYm90dG9tOjUwLGxlZnQ6NjB9LGE9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxmPW51bGwsbD1udWxsLGM9ITAsaD0hMCxwPSEwLGQ9ITEsdj0hMCxtPSEwLGc9ITEseT0hMCxiPWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0sdyxFLFM9dC5pZCgpLHg9e2luZGV4OjAscmVzY2FsZVk6eX0sVD1udWxsLE49Ik5vIERhdGEgQXZhaWxhYmxlLiIsQz1mdW5jdGlvbihlKXtyZXR1cm4gZS5hdmVyYWdlfSxrPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLEw9MjUwO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWVudChkPyJyaWdodCI6ImxlZnQiKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgQT1kMy5zY2FsZS5saW5lYXIoKSxPPXtpOjAseDowfSxNPWZ1bmN0aW9uKGkscyl7dmFyIG89aS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT1pLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9bi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPXIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD1iKGkuc2VyaWVzLmtleSxhLGYsaSxfKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLG51bGwsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0say50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtrLnRvb2x0aXBIaWRlKGUpfSksay5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7diYmZS50b29sdGlwLmNsZWFudXAoKX0pLF8uZGlzcGF0Y2g9ayxfLmxpbmVzPXQsXy5sZWdlbmQ9aSxfLnhBeGlzPW4sXy55QXhpcz1yLF8uaW50ZXJhY3RpdmVMYXllcj1vLGQzLnJlYmluZChfLHQsImRlZmluZWQiLCJpc0FyZWEiLCJ4IiwieSIsInhTY2FsZSIsInlTY2FsZSIsInNpemUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIKLCJmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9pIiwiaWQiKSxfLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKF8pLF8ubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnUudG9wLHUucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnUuYm90dG9tLHUubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dS5sZWZ0LF8pOnV9LF8ud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSxfKTpmfSxfLmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1lLF8pOmx9LF8uY29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGEpLF8pOmF9LF8ucmVzY2FsZVk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9ZSx5KTp5fSxfLnNob3dDb250cm9scz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1lLF8pOm19LF8udXNlSW50ZXJhY3RpdmVHdWlkZWxpbmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ZSxlPT09ITAmJihfLmludGVyYWN0aXZlKCExKSxfLnVzZVZvcm9ub2koITEpKSxfKTpnfSxfLnNob3dMZWdlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ZSxfKTpjfSxfLnNob3dYQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLF8pOmh9LF8uc2hvd1lBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPWUsXyk6cH0sXy5yaWdodEFsaWduWUF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxfKTpkfSxfLnRvb2x0aXBzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PWUsXyk6dn0sXy50b29sdGlwQ29udGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj1lLF8pOmJ9LF8uc3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9ZSxfKTp4fSxfLmRlZmF1bHRTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD1lLF8pOlR9LF8ubm9EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPWUsXyk6Tn0sXy5hdmVyYWdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhDPWUsXyk6Q30sXy50cmFuc2l0aW9uRHVyYXRpb249ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEw9ZSxfKTpMfSxffSxlLm1vZGVscy5kaXNjcmV0ZUJhcj1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBFKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9bi10LmxlZnQtdC5yaWdodCxFPXItdC50b3AtdC5ib3R0b20sUz1kMy5zZWxlY3QodGhpcyk7ZT1lLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlcz1lLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWVzPXQsZX0pLGV9KTt2YXIgVD1wJiZkP1tdOmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDp1KGUsdCkseTphKGUsdCkseTA6ZS55MH19KX0pO3MuZG9tYWluKHB8fGQzLm1lcmdlKFQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlQmFuZHModnx8WzAsaV0sLjEpLG8uZG9tYWluKGR8fGQzLmV4dGVudChkMy5tZXJnZShUKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pLmNvbmNhdChmKSkpLGM/by5yYW5nZShtfHxbRS0oby5kb21haW4oKVswXTwwPzEyOjApLG8uZG9tYWluKClbMV0+MD8xMjowXSk6by5yYW5nZShtfHxbRSwwXSksYj1ifHxzLHc9d3x8by5jb3B5KCkucmFuZ2UoW28oMCksbygwKV0pO3ZhciBOPVMuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtZGlzY3JldGViYXIiKS5kYXRhKFtlXSksQz1OLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGViYXIiKSxrPUMuYXBwZW5kKCJnIiksTD1OLnNlbGVjdCgiZyIpO2suYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm91cHMiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgQT1OLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSk7QS5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksQS5leGl0KCkudHJhbnNpdGlvbigpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNikucmVtb3ZlKCksQS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLEEudHJhbnNpdGlvbigpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjc1KTt2YXIgTz1BLnNlbGVjdEFsbCgiZy5udi1iYXIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO08uZXhpdCgpLnJlbW92ZSgpO3ZhciBNPU8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrKHModShlLHQpKStzLnJhbmdlQmFuZCgpKi4wNSkrIiwgIitvKDApKyIpIn0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCksZy5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoodC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSxnLmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKHQsbil7Zy5lbGVtZW50Q2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLnJhbmdlQmFuZCgpKih0LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbih0LG4pe2cuZWxlbWVudERibENsaWNrKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoodC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pO00uYXBwZW5kKCJyZWN0IikuYXR0cigiaGVpZ2h0IiwwKS5hdHRyKCJ3aWR0aCIscy5yYW5nZUJhbmQoKSouOS9lLmxlbmd0aCksYz8oTS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLE8uc2VsZWN0KCJ0ZXh0IikudGV4dChmdW5jdGlvbihlLHQpe3JldHVybiBoKGEoZSx0KSl9KS50cmFuc2l0aW9uKCkuYXR0cigieCIscy5yYW5nZUJhbmQoKSouOS8yKS5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD9vKGEoZSx0KSktbygwKSsxMjotNH0pKTpPLnNlbGVjdEFsbCgidGV4dCIpLnJlbW92ZSgpLE8uYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIgcG9zaXRpdmUifSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGwoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGwoZSx0KX0pLnNlbGVjdCgicmVjdCIpLmF0dHIoImNsYXNzIix5KS50cmFuc2l0aW9uKCkuYXR0cigid2lkdGgiLHMucmFuZ2VCYW5kKCkqLjkvZS5sZW5ndGgpLE8udHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXt2YXIgbj1zKHUoZSx0KSkrcy5yYW5nZUJhbmQoKSouMDUscj1hKGUsdCk8MD9vKDApOm8oMCktbyhhKGUsdCkpPDE/bygwKS0xOm8oYShlLHQpKTtyZXR1cm4idHJhbnNsYXRlKCIrbisiLCAiK3IrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cigiaGVpZ2h0IixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhvKGEoZSx0KSktbyhkJiZkWzBdfHwwKSl8fDEpfSksYj1zLmNvcHkoKSx3PW8uY29weSgpfSksRX12YXIgdD17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49OTYwLHI9NTAwLGk9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz1kMy5zY2FsZS5vcmRpbmFsKCksbz1kMy5zY2FsZS5saW5lYXIoKSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj1bMF0sbD1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLGM9ITEsaD1kMy5mb3JtYXQoIiwuMmYiKSxwLGQsdixtLGc9ZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0IikseT0iZGlzY3JldGVCYXIiLGIsdztyZXR1cm4gRS5kaXNwYXRjaD1nLEUub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoRSksRS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsRSk6dX0sRS55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsRSk6YX0sRS5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsRSk6dH0sRS53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLEUpOm59LEUuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWUsRSk6cn0sRS54U2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZSxFKTpzfSxFLnlTY2FsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLEUpOm99LEUueERvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLEUpOnB9LEUueURvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1lLEUpOmR9LEUueFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PWUsRSk6dn0sRS55UmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09ZSxFKTptfSxFLmZvcmNlWT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLEUpOmZ9LEUuY29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZS51dGlscy5nZXRDb2xvcih0KSxFKTpsfSxFLmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsRSk6aX0sRS5zaG93VmFsdWVzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWUsRSk6Y30sRS52YWx1ZUZvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLEUpOmh9LEUucmVjdENsYXNzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWUsRSk6eX0sRX0sZS5tb2RlbHMuZGlzY3JldGVCYXJDaGFydD1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB3KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIHU9ZDMuc2VsZWN0KHRoaXMpLHA9dGhpcyxFPShzfHxwYXJzZUludCh1LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1pLmxlZnQtaS5yaWdodCxTPShvfHxwYXJzZUludCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktaS50b3AtaS5ib3R0b207dy51cGRhdGU9ZnVuY3Rpb24oKXtnLmJlZm9yZVVwZGF0ZSgpLHUudHJhbnNpdGlvbigpLmR1cmF0aW9uKHkpLmNhbGwodyl9LHcuY29udGFpbmVyPXRoaXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBUPXUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbbV0pO3JldHVybiBULmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxULmF0dHIoIngiLGkubGVmdCtFLzIpLmF0dHIoInkiLGkudG9wK1MvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHd9dS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxkPXQueFNjYWxlKCksdj10LnlTY2FsZSgpLmNsYW1wKCEwKTt2YXIgTj11LnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWRpc2NyZXRlQmFyV2l0aEF4ZXMiKS5kYXRhKFtlXSksQz1OLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGVCYXJXaXRoQXhlcyIpLmFwcGVuZCgiZyIpLGs9Qy5hcHBlbmQoImRlZnMiKSxMPU4uc2VsZWN0KCJnIik7Qy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEMuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxDLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxMLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2kubGVmdCsiLCIraS50b3ArIikiKSxsJiZMLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0UrIiwwKSIpLHQud2lkdGgoRSkuaGVpZ2h0KFMpO3ZhciBBPUwuc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKTtBLnRyYW5zaXRpb24oKS5jYWxsKHQpLGsuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYteC1sYWJlbC1jbGlwLSIrdC5pZCgpKS5hcHBlbmQoInJlY3QiKSxMLnNlbGVjdCgiI252LXgtbGFiZWwtY2xpcC0iK3QuaWQoKSsiIHJlY3QiKS5hdHRyKCJ3aWR0aCIsZC5yYW5nZUJhbmQoKSooYz8yOjEpKS5hdHRyKCJoZWlnaHQiLDE2KS5hdHRyKCJ4IiwtZC5yYW5nZUJhbmQoKS8oYz8xOjIpKTtpZihhKXtuLnNjYWxlKGQpLnRpY2tzKEUvMTAwKS50aWNrU2l6ZSgtUywwKSxMLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKHYucmFuZ2UoKVswXSsodC5zaG93VmFsdWVzKCkmJnYuZG9tYWluKClbMF08MD8xNjowKSkrIikiKSxMLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5jYWxsKG4pO3ZhciBPPUwuc2VsZWN0KCIubnYteC5udi1heGlzIikuc2VsZWN0QWxsKCJnIik7YyYmTy5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idHJhbnNsYXRlKDAsIisobiUyPT0wPyI1IjoiMTciKSsiKSJ9KX1mJiYoci5zY2FsZSh2KS50aWNrcyhTLzM2KS50aWNrU2l6ZSgtRSwwKSxMLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5jYWxsKHIpKSxnLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7aCYmYihlLHAucGFyZW50Tm9kZSl9KX0pLHd9dmFyIHQ9ZS5tb2RlbHMuZGlzY3JldGVCYXIoKSxuPWUubW9kZWxzLmF4aXMoKSxyPWUubW9kZWxzLmF4aXMoKSxpPXt0b3A6MTUscmlnaHQ6MTAsYm90dG9tOjUwLGxlZnQ6NjB9LHM9bnVsbCxvPW51bGwsdT1lLnV0aWxzLmdldENvbG9yKCksYT0hMCxmPSEwLGw9ITEsYz0hMSxoPSEwLHA9ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrdCsiPC9oMz4iKyI8cD4iK24rIjwvcD4ifSxkLHYsbT0iTm8gRGF0YSBBdmFpbGFibGUuIixnPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYmVmb3JlVXBkYXRlIikseT0yNTA7bi5vcmllbnQoImJvdHRvbSIpLmhpZ2hsaWdodFplcm8oITEpLnNob3dNYXhNaW4oITEpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxyLm9yaWVudChsPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWF0KGQzLmZvcm1hdCgiLC4xZiIpKTt2YXIgYj1mdW5jdGlvbihpLHMpe3ZhciBvPWkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9aS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPW4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj1yLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9cChpLnNlcmllcy5rZXksYSxmLGksdyk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0raS5sZWZ0LGUucG9zWzFdK2kudG9wXSxnLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2cudG9vbHRpcEhpZGUoZSl9KSxnLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtoJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksdy5kaXNwYXRjaD1nLHcuZGlzY3JldGViYXI9dCx3LnhBeGlzPW4sdy55QXhpcz1yLGQzLnJlYmluZCh3LHQsIngiLCJ5IiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJpZCIsInNob3dWYWx1ZXMiLCJ2YWx1ZUZvcm1hdCIpLHcub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodyksdy5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6aS50b3AsaS5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDppLnJpZ2h0LGkuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206aS5ib3R0b20saS5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDppLmxlZnQsdyk6aX0sdy53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLHcpOnN9LHcuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsdyk6b30sdy5jb2xvcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLnV0aWxzLmdldENvbG9yKG4pLHQuY29sb3IodSksdyk6dX0sdy5zaG93WEF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ZSx3KTphfSx3LnNob3dZQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLHcpOmZ9LHcucmlnaHRBbGlnbllBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0Iiksdyk6bH0sdy5zdGFnZ2VyTGFiZWxzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWUsdyk6Y30sdy50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLHcpOmh9LHcudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSx3KTpwfSx3Lm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1lLHcpOm19LHcudHJhbnNpdGlvbkR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWUsdyk6eX0sd30sZS5tb2RlbHMuZGlzdHJpYnV0aW9uPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgYT1uLShpPT09IngiP3QubGVmdCt0LnJpZ2h0OnQudG9wK3QuYm90dG9tKSxsPWk9PSJ4Ij8ieSI6IngiLGM9ZDMuc2VsZWN0KHRoaXMpO2Y9Znx8dTt2YXIgaD1jLnNlbGVjdEFsbCgiZy5udi1kaXN0cmlidXRpb24iKS5kYXRhKFtlXSkscD1oLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LWRpc3RyaWJ1dGlvbiIpLGQ9cC5hcHBlbmQoImciKSx2PWguc2VsZWN0KCJnIik7aC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIG09di5zZWxlY3RBbGwoImcubnYtZGlzdCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO20uZW50ZXIoKS5hcHBlbmQoImciKSxtLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1kaXN0IG52LXNlcmllcy0iK3R9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBvKGUsdCl9KTt2YXIgZz1tLnNlbGVjdEFsbCgibGluZS5udi1kaXN0IitpKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO2cuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYocyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZihzKGUsdCkpfSksbS5leGl0KCkuc2VsZWN0QWxsKCJsaW5lLm52LWRpc3QiK2kpLnRyYW5zaXRpb24oKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsdCkpfSkuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwwKS5yZW1vdmUoKSxnLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1kaXN0IitpKyIgbnYtZGlzdCIraSsiLSIrdH0pLmF0dHIobCsiMSIsMCkuYXR0cihsKyIyIixyKSxnLnRyYW5zaXRpb24oKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsdCkpfSksZj11LmNvcHkoKX0pLGx9dmFyIHQ9e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTQwMCxyPTgsaT0ieCIscz1mdW5jdGlvbihlKXtyZXR1cm4gZVtpXX0sbz1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLHU9ZDMuc2NhbGUubGluZWFyKCksYSxmO3JldHVybiBsLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGwpLGwubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LGwpOnR9LGwud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxsKTpufSxsLmF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZSxsKTppfSxsLnNpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSxsKTpyfSxsLmdldERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZDMuZnVuY3RvcihlKSxsKTpzfSxsLnNjYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsbCk6dX0sbC5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLnV0aWxzLmdldENvbG9yKHQpLGwpOm99LGx9LGUubW9kZWxzLmhpc3RvcmljYWxCYXI9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdyhFKXtyZXR1cm4gRS5lYWNoKGZ1bmN0aW9uKHcpe3ZhciBFPW4tdC5sZWZ0LXQucmlnaHQsUz1yLXQudG9wLXQuYm90dG9tLFQ9ZDMuc2VsZWN0KHRoaXMpO3MuZG9tYWluKGR8fGQzLmV4dGVudCh3WzBdLnZhbHVlcy5tYXAodSkuY29uY2F0KGYpKSksYz9zLnJhbmdlKG18fFtFKi41L3dbMF0udmFsdWVzLmxlbmd0aCxFKih3WzBdLnZhbHVlcy5sZW5ndGgtLjUpL3dbMF0udmFsdWVzLmxlbmd0aF0pOnMucmFuZ2UobXx8WzAsRV0pLG8uZG9tYWluKHZ8fGQzLmV4dGVudCh3WzBdLnZhbHVlcy5tYXAoYSkuY29uY2F0KGwpKSkucmFuZ2UoZ3x8W1MsMF0pLHMuZG9tYWluKClbMF09PT1zLmRvbWFpbigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5kb21haW4oKVswXS1zLmRvbWFpbigpWzBdKi4wMSxzLmRvbWFpbigpWzFdK3MuZG9tYWluKClbMV0qLjAxXSk6cy5kb21haW4oWy0xLDFdKSksby5kb21haW4oKVswXT09PW8uZG9tYWluKClbMV0mJihvLmRvbWFpbigpWzBdP28uZG9tYWluKFtvLmRvbWFpbigpWzBdK28uZG9tYWluKClbMF0qLjAxLG8uZG9tYWluKClbMV0tby5kb21haW4oKVsxXSouMDFdKTpvLmRvbWFpbihbLTEsMV0pKTt2YXIgTj1ULnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWhpc3RvcmljYWxCYXItIitpKS5kYXRhKFt3WzBdLnZhbHVlc10pLEM9Ti5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWhpc3RvcmljYWxCYXItIitpKSxrPUMuYXBwZW5kKCJkZWZzIiksTD1DLmFwcGVuZCgiZyIpLEE9Ti5zZWxlY3QoImciKTtMLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFycyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLFQub24oImNsaWNrIixmdW5jdGlvbihlLHQpe3kuY2hhcnRDbGljayh7ZGF0YTplLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOml9KX0pLGsuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYtY2hhcnQtY2xpcC1wYXRoLSIraSkuYXBwZW5kKCJyZWN0IiksTi5zZWxlY3QoIiNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIgcmVjdCIpLmF0dHIoIndpZHRoIixFKS5hdHRyKCJoZWlnaHQiLFMpLEEuYXR0cigiY2xpcC1wYXRoIixoPyJ1cmwoI252LWNoYXJ0LWNsaXAtcGF0aC0iK2krIikiOiIiKTt2YXIgTz1OLnNlbGVjdCgiLm52LWJhcnMiKS5zZWxlY3RBbGwoIi5udi1iYXIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCl9KTtPLmV4aXQoKS5yZW1vdmUoKTt2YXIgTT1PLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8obyhNYXRoLm1heCgwLGEodCxuKSkpKX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oTWF0aC5hYnMobyhhKHQsbikpLW8oMCkpKX0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHModShlLHQpKS1FL3dbMF0udmFsdWVzLmxlbmd0aCouNDUpKyIsMCkifSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCkseS5lbGVtZW50TW91c2VvdmVyKHtwb2ludDplLHNlcmllczp3WzBdLHBvczpbcyh1KGUsdCkpLG8oYShlLHQpKV0scG9pbnRJbmRleDp0LHNlcmllc0luZGV4OjAsZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe2lmKCFiKXJldHVybjtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSx5LmVsZW1lbnRNb3VzZW91dCh7cG9pbnQ6ZSxzZXJpZXM6d1swXSxwb2ludEluZGV4OnQsc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO3kuZWxlbWVudENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47eS5lbGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3ModShlLHQpKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7Ty5hdHRyKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGUsdCl9KS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0LG4pe3JldHVybihhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyIHBvc2l0aXZlIikrIiBudi1iYXItIituKyItIit0fSkudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHModShlLHQpKS1FL3dbMF0udmFsdWVzLmxlbmd0aCouNDUpKyIsMCkifSkuYXR0cigid2lkdGgiLEUvd1swXS52YWx1ZXMubGVuZ3RoKi45KSxPLnRyYW5zaXRpb24oKS5hdHRyKCJ5IixmdW5jdGlvbih0LG4pe3ZhciByPWEodCxuKTwwP28oMCk6bygwKS1vKGEodCxuKSk8MT9vKDApLTE6byhhKHQsbikpO3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhyKX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oTWF0aC5tYXgoTWF0aC5hYnMobyhhKHQsbikpLW8oMCkpLDEpKX0pfSksd312YXIgdD17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49OTYwLHI9NTAwLGk9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz1kMy5zY2FsZS5saW5lYXIoKSxvPWQzLnNjYWxlLmxpbmVhcigpLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT1mdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPVtdLGw9WzBdLGM9ITEsaD0hMCxwPWUudXRpbHMuZGVmYXVsdENvbG9yKCksZCx2LG0sZyx5PWQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpLGI9ITA7cmV0dXJuIHcuaGlnaGxpZ2h0UG9pbnQ9ZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QoIi5udi1oaXN0b3JpY2FsQmFyLSIraSkuc2VsZWN0KCIubnYtYmFycyAubnYtYmFyLTAtIitlKS5jbGFzc2VkKCJob3ZlciIsdCl9LHcuY2xlYXJIaWdobGlnaHRzPWZ1bmN0aW9uKCl7ZDMuc2VsZWN0KCIubnYtaGlzdG9yaWNhbEJhci0iK2kpLnNlbGVjdCgiLm52LWJhcnMgLm52LWJhci5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LHcuZGlzcGF0Y2g9eSx3Lm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKHcpLHcueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLHcpOnV9LHcueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLHcpOmF9LHcubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LHcpOnR9LHcud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSx3KTpufSx3LmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLHcpOnJ9LHcueFNjYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsdyk6c30sdy55U2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ZSx3KTpvfSx3LnhEb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSx3KTpkfSx3LnlEb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9ZSx3KTp2fSx3LnhSYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1lLHcpOm19LHcueVJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPWUsdyk6Z30sdy5mb3JjZVg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSx3KTpmfSx3LmZvcmNlWT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1lLHcpOmx9LHcucGFkRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLHcpOmN9LHcuY2xpcEVkZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSx3KTpofSx3LmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPWUudXRpbHMuZ2V0Q29sb3IodCksdyk6cH0sdy5pZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1lLHcpOml9LHcuaW50ZXJhY3RpdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9ITEsdyk6Yn0sd30sZS5tb2RlbHMuaGlzdG9yaWNhbEJhckNoYXJ0PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihkKXt2YXIgVD1kMy5zZWxlY3QodGhpcyksTj10aGlzLEM9KHV8fHBhcnNlSW50KFQuc3R5bGUoIndpZHRoIikpfHw5NjApLXMubGVmdC1zLnJpZ2h0LGs9KGF8fHBhcnNlSW50KFQuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1zLnRvcC1zLmJvdHRvbTt4LnVwZGF0ZT1mdW5jdGlvbigpe1QudHJhbnNpdGlvbigpLmR1cmF0aW9uKEUpLmNhbGwoeCl9LHguY29udGFpbmVyPXRoaXMsZy5kaXNhYmxlZD1kLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigheSl7dmFyIEw7eT17fTtmb3IoTCBpbiBnKWdbTF1pbnN0YW5jZW9mIEFycmF5P3lbTF09Z1tMXS5zbGljZSgwKTp5W0xdPWdbTF19aWYoIWR8fCFkLmxlbmd0aHx8IWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBBPVQuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbYl0pO3JldHVybiBBLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxBLmF0dHIoIngiLHMubGVmdCtDLzIpLmF0dHIoInkiLHMudG9wK2svMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHh9VC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSx2PXQueFNjYWxlKCksbT10LnlTY2FsZSgpO3ZhciBPPVQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtaGlzdG9yaWNhbEJhckNoYXJ0IikuZGF0YShbZF0pLE09Ty5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWhpc3RvcmljYWxCYXJDaGFydCIpLmFwcGVuZCgiZyIpLF89Ty5zZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksZiYmKGkud2lkdGgoQyksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZCkuY2FsbChpKSxzLnRvcCE9aS5oZWlnaHQoKSYmKHMudG9wPWkuaGVpZ2h0KCksaz0oYXx8cGFyc2VJbnQoVC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXMudG9wLXMuYm90dG9tKSxPLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtcy50b3ArIikiKSksTy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitzLmxlZnQrIiwiK3MudG9wKyIpIiksaCYmXy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitDKyIsMCkiKSx0LndpZHRoKEMpLmhlaWdodChrKS5jb2xvcihkLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxvKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4hZFt0XS5kaXNhYmxlZH0pKTt2YXIgRD1fLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7RC50cmFuc2l0aW9uKCkuY2FsbCh0KSxsJiYobi5zY2FsZSh2KS50aWNrU2l6ZSgtaywwKSxfLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrbS5yYW5nZSgpWzBdKyIpIiksXy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS50cmFuc2l0aW9uKCkuY2FsbChuKSksYyYmKHIuc2NhbGUobSkudGlja3Moay8zNikudGlja1NpemUoLUMsMCksXy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS50cmFuc2l0aW9uKCkuY2FsbChyKSksaS5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0hdC5kaXNhYmxlZCxkLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aHx8ZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9ITEsTy5zZWxlY3RBbGwoIi5udi1zZXJpZXMiKS5jbGFzc2VkKCJkaXNhYmxlZCIsITEpLGV9KSxnLmRpc2FibGVkPWQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pLHcuc3RhdGVDaGFuZ2UoZyksZS50cmFuc2l0aW9uKCkuY2FsbCh4KX0pLGkuZGlzcGF0Y2gub24oImxlZ2VuZERibGNsaWNrIixmdW5jdGlvbihlKXtkLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0hMH0pLGUuZGlzYWJsZWQ9ITEsZy5kaXNhYmxlZD1kLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KSx3LnN0YXRlQ2hhbmdlKGcpLHgudXBkYXRlKCl9KSx3Lm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7cCYmUyhlLE4ucGFyZW50Tm9kZSl9KSx3Lm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPSJ1bmRlZmluZWQiJiYoZC5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7ZS5kaXNhYmxlZD10LmRpc2FibGVkW25dfSksZy5kaXNhYmxlZD10LmRpc2FibGVkKSxlLmNhbGwoeCl9KX0pLHh9dmFyIHQ9ZS5tb2RlbHMuaGlzdG9yaWNhbEJhcigpLG49ZS5tb2RlbHMuYXhpcygpLHI9ZS5tb2RlbHMuYXhpcygpLGk9ZS5tb2RlbHMubGVnZW5kKCkscz17dG9wOjMwLHJpZ2h0OjkwLGJvdHRvbTo1MCxsZWZ0OjkwfSxvPWUudXRpbHMuZGVmYXVsdENvbG9yKCksdT1udWxsLGE9bnVsbCxmPSExLGw9ITAsYz0hMCxoPSExLHA9ITAsZD1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LHYsbSxnPXt9LHk9bnVsbCxiPSJObyBEYXRhIEF2YWlsYWJsZS4iLHc9ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksRT0yNTA7bi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZW50KGg/InJpZ2h0IjoibGVmdCIpO3ZhciBTPWZ1bmN0aW9uKGkscyl7aWYocyl7dmFyIG89ZDMuc2VsZWN0KHMpLnNlbGVjdCgic3ZnIiksdT1vLm5vZGUoKT9vLmF0dHIoInZpZXdCb3giKTpudWxsO2lmKHUpe3U9dS5zcGxpdCgiICIpO3ZhciBhPXBhcnNlSW50KG8uc3R5bGUoIndpZHRoIikpL3VbMl07aS5wb3NbMF09aS5wb3NbMF0qYSxpLnBvc1sxXT1pLnBvc1sxXSphfX12YXIgZj1pLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSxsPWkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYz1uLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGg9ci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxwPWQoaS5zZXJpZXMua2V5LGMsaCxpLHgpO2UudG9vbHRpcC5zaG93KFtmLGxdLHAsbnVsbCxudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rcy5sZWZ0LGUucG9zWzFdK3MudG9wXSx3LnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe3cudG9vbHRpcEhpZGUoZSl9KSx3Lm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtwJiZlLnRvb2x0aXAuY2xlYW51cCgpfSkseC5kaXNwYXRjaD13LHguYmFycz10LHgubGVnZW5kPWkseC54QXhpcz1uLHgueUF4aXM9cixkMy5yZWJpbmQoeCx0LCJkZWZpbmVkIiwiaXNBcmVhIiwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiwiaGlnaGxpZ2h0UG9pbnQiLCJjbGVhckhpZ2hsaWdodHMiLCJpbnRlcmFjdGl2ZSIpLHgub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoeCkseC5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHMudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6cy50b3Ascy5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDpzLnJpZ2h0LHMuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206cy5ib3R0b20scy5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDpzLmxlZnQseCk6c30seC53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLHgpOnV9LHguaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUseCk6YX0seC5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IobykseCk6b30seC5zaG93TGVnZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUseCk6Zn0seC5zaG93WEF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSx4KTpsfSx4LnNob3dZQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLHgpOmN9LHgucmlnaHRBbGlnbllBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IikseCk6aH0seC50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLHgpOnB9LHgudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSx4KTpkfSx4LnN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPWUseCk6Z30seC5kZWZhdWx0U3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9ZSx4KTp5fSx4Lm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj1lLHgpOmJ9LHgudHJhbnNpdGlvbkR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPWUseCk6RX0seH0sZS5tb2RlbHMuaW5kZW50ZWRUcmVlPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiBrKGUsdCxuKXtkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtpZihkMy5ldmVudC5zaGlmdEtleSYmIW4pcmV0dXJuIGQzLmV2ZW50LnNoaWZ0S2V5PSExLGUudmFsdWVzJiZlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyhlLnZhbHVlc3x8ZS5fdmFsdWVzKSYmayhlLDAsITApfSksITA7aWYoIU8oZSkpcmV0dXJuITA7ZS52YWx1ZXM/KGUuX3ZhbHVlcz1lLnZhbHVlcyxlLnZhbHVlcz1udWxsKTooZS52YWx1ZXM9ZS5fdmFsdWVzLGUuX3ZhbHVlcz1udWxsKSxnLnVwZGF0ZSgpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIGUuX3ZhbHVlcyYmZS5fdmFsdWVzLmxlbmd0aD9oOmUudmFsdWVzJiZlLnZhbHVlcy5sZW5ndGg/cDoiIn1mdW5jdGlvbiBBKGUpe3JldHVybiBlLl92YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGh9ZnVuY3Rpb24gTyhlKXt2YXIgdD1lLnZhbHVlc3x8ZS5fdmFsdWVzO3JldHVybiB0JiZ0Lmxlbmd0aH12YXIgdD0xLG49ZDMuc2VsZWN0KHRoaXMpLGk9ZDMubGF5b3V0LnRyZWUoKS5jaGlsZHJlbihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5zaXplKFtyLGZdKTtnLnVwZGF0ZT1mdW5jdGlvbigpe24udHJhbnNpdGlvbigpLmR1cmF0aW9uKDYwMCkuY2FsbChnKX0sZVswXXx8KGVbMF09e2tleTphfSk7dmFyIHM9aS5ub2RlcyhlWzBdKSx5PWQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImRpdiIpLmRhdGEoW1tzXV0pLGI9eS5lbnRlcigpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtaW5kZW50ZWR0cmVlIiksdz1iLmFwcGVuZCgidGFibGUiKSxFPXkuc2VsZWN0KCJ0YWJsZSIpLmF0dHIoIndpZHRoIiwiMTAwJSIpLmF0dHIoImNsYXNzIixjKTtpZihvKXt2YXIgUz13LmFwcGVuZCgidGhlYWQiKSx4PVMuYXBwZW5kKCJ0ciIpO2wuZm9yRWFjaChmdW5jdGlvbihlKXt4LmFwcGVuZCgidGgiKS5hdHRyKCJ3aWR0aCIsZS53aWR0aD9lLndpZHRoOiIxMCUiKS5zdHlsZSgidGV4dC1hbGlnbiIsZS50eXBlPT0ibnVtZXJpYyI/InJpZ2h0IjoibGVmdCIpLmFwcGVuZCgic3BhbiIpLnRleHQoZS5sYWJlbCl9KX12YXIgVD1FLnNlbGVjdEFsbCgidGJvZHkiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7VC5lbnRlcigpLmFwcGVuZCgidGJvZHkiKSx0PWQzLm1heChzLGZ1bmN0aW9uKGUpe3JldHVybiBlLmRlcHRofSksaS5zaXplKFtyLHQqZl0pO3ZhciBOPVQuc2VsZWN0QWxsKCJ0ciIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB1JiYhZS5jaGlsZHJlbj91KGUpOiEwfSl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWR8fGUuaWR8fCsrbX0pO04uZXhpdCgpLnJlbW92ZSgpLE4uc2VsZWN0KCJpbWcubnYtdHJlZWljb24iKS5hdHRyKCJzcmMiLEwpLmNsYXNzZWQoImZvbGRlZCIsQSk7dmFyIEM9Ti5lbnRlcigpLmFwcGVuZCgidHIiKTtsLmZvckVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj1DLmFwcGVuZCgidGQiKS5zdHlsZSgicGFkZGluZy1sZWZ0IixmdW5jdGlvbihlKXtyZXR1cm4odD8wOmUuZGVwdGgqZisxMisoTChlKT8wOjE2KSkrInB4In0sImltcG9ydGFudCIpLnN0eWxlKCJ0ZXh0LWFsaWduIixlLnR5cGU9PSJudW1lcmljIj8icmlnaHQiOiJsZWZ0Iik7dD09MCYmbi5hcHBlbmQoImltZyIpLmNsYXNzZWQoIm52LXRyZWVpY29uIiwhMCkuY2xhc3NlZCgibnYtZm9sZGVkIixBKS5hdHRyKCJzcmMiLEwpLnN0eWxlKCJ3aWR0aCIsIjE0cHgiKS5zdHlsZSgiaGVpZ2h0IiwiMTRweCIpLnN0eWxlKCJwYWRkaW5nIiwiMCAxcHgiKS5zdHlsZSgiZGlzcGxheSIsZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSk/ImlubGluZS1ibG9jayI6Im5vbmUifSkub24oImNsaWNrIixrKSxuLmVhY2goZnVuY3Rpb24obil7IXQmJnYobik/ZDMuc2VsZWN0KHRoaXMpLmFwcGVuZCgiYSIpLmF0dHIoImhyZWYiLHYpLmF0dHIoImNsYXNzIixkMy5mdW5jdG9yKGUuY2xhc3NlcykpLmFwcGVuZCgic3BhbiIpOmQzLnNlbGVjdCh0aGlzKS5hcHBlbmQoInNwYW4iKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJzcGFuIikuYXR0cigiY2xhc3MiLGQzLmZ1bmN0b3IoZS5jbGFzc2VzKSkudGV4dChmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXQ/ZS5mb3JtYXQodCk6dFtlLmtleV18fCItIn0pfSksZS5zaG93Q291bnQmJihuLmFwcGVuZCgic3BhbiIpLmF0dHIoImNsYXNzIiwibnYtY2hpbGRyZW5Db3VudCIpLE4uc2VsZWN0QWxsKCJzcGFuLm52LWNoaWxkcmVuQ291bnQiKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcyYmZS52YWx1ZXMubGVuZ3RofHxlLl92YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGg/IigiKyhlLnZhbHVlcyYmZS52YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB1P3UoZSk6ITB9KS5sZW5ndGh8fGUuX3ZhbHVlcyYmZS5fdmFsdWVzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdT91KGUpOiEwfSkubGVuZ3RofHwwKSsiKSI6IiJ9KSl9KSxOLm9yZGVyKCkub24oImNsaWNrIixmdW5jdGlvbihlKXtkLmVsZW1lbnRDbGljayh7cm93OnRoaXMsZGF0YTplLHBvczpbZS54LGUueV19KX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24oZSl7ZC5lbGVtZW50RGJsY2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlKXtkLmVsZW1lbnRNb3VzZW92ZXIoe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUpe2QuZWxlbWVudE1vdXNlb3V0KHtyb3c6dGhpcyxkYXRhOmUscG9zOltlLngsZS55XX0pfSl9KSxnfXZhciB0PXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj05NjAscj01MDAsaT1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCksbz0hMCx1PSExLGE9Ik5vIERhdGEgQXZhaWxhYmxlLiIsZj0yMCxsPVt7a2V5OiJrZXkiLGxhYmVsOiJOYW1lIix0eXBlOiJ0ZXh0In1dLGM9bnVsbCxoPSJpbWFnZXMvZ3JleS1wbHVzLnBuZyIscD0iaW1hZ2VzL2dyZXktbWludXMucG5nIixkPWQzLmRpc3BhdGNoKCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsY2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0Iiksdj1mdW5jdGlvbihlKXtyZXR1cm4gZS51cmx9LG09MDtyZXR1cm4gZy5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChnKSxnLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxnKTp0fSxnLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsZyk6bn0sZy5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSxnKTpyfSxnLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUudXRpbHMuZ2V0Q29sb3IodCksc2NhdHRlci5jb2xvcihpKSxnKTppfSxnLmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsZyk6c30sZy5oZWFkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ZSxnKTpvfSxnLm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLGcpOmF9LGcuZmlsdGVyWmVybz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLGcpOnV9LGcuY29sdW1ucz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1lLGcpOmx9LGcudGFibGVDbGFzcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLGcpOmN9LGcuaWNvbk9wZW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSxnKTpofSxnLmljb25DbG9zZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLGcpOnB9LGcuZ2V0VXJsPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PWUsZyk6dn0sZ30sZS5tb2RlbHMubGVnZW5kPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoaCl7cmV0dXJuIGguZWFjaChmdW5jdGlvbihjKXt2YXIgaD1uLXQubGVmdC10LnJpZ2h0LHA9ZDMuc2VsZWN0KHRoaXMpLGQ9cC5zZWxlY3RBbGwoImcubnYtbGVnZW5kIikuZGF0YShbY10pLHY9ZC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1sZWdlbmQiKS5hcHBlbmQoImciKSxtPWQuc2VsZWN0KCJnIik7ZC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIGc9bS5zZWxlY3RBbGwoIi5udi1zZXJpZXMiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkseT1nLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zZXJpZXMiKS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2wubGVnZW5kTW91c2VvdmVyKGUsdCl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7bC5sZWdlbmRNb3VzZW91dChlLHQpfSkub24oImNsaWNrIixmdW5jdGlvbihlLHQpe2wubGVnZW5kQ2xpY2soZSx0KSxhJiYoZj8oYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9ITB9KSxlLmRpc2FibGVkPSExKTooZS5kaXNhYmxlZD0hZS5kaXNhYmxlZCxjLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSkmJmMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibGVkPSExfSkpLGwuc3RhdGVDaGFuZ2Uoe2Rpc2FibGVkOmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pfSkpfSkub24oImRibGNsaWNrIixmdW5jdGlvbihlLHQpe2wubGVnZW5kRGJsY2xpY2soZSx0KSxhJiYoYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9ITB9KSxlLmRpc2FibGVkPSExLGwuc3RhdGVDaGFuZ2Uoe2Rpc2FibGVkOmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pfSkpfSk7eS5hcHBlbmQoImNpcmNsZSIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kLXN5bWJvbCIpLmF0dHIoInIiLDUpLHkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kLXRleHQiKS5hdHRyKCJkeSIsIi4zMmVtIikuYXR0cigiZHgiLCI4IiksZy5jbGFzc2VkKCJkaXNhYmxlZCIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWR9KSxnLmV4aXQoKS5yZW1vdmUoKSxnLnNlbGVjdCgiY2lyY2xlIikuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHMoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHMoZSx0KX0pLGcuc2VsZWN0KCJ0ZXh0IikudGV4dChpKTtpZihvKXt2YXIgYj1bXTtnLmVhY2goZnVuY3Rpb24odCxuKXt2YXIgcj1kMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0IiksaTt0cnl7aT1yLm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKX1jYXRjaChzKXtpPWUudXRpbHMuY2FsY0FwcHJveFRleHRXaWR0aChyKX1iLnB1c2goaSsyOCl9KTt2YXIgdz0wLEU9MCxTPVtdO3doaWxlKEU8aCYmdzxiLmxlbmd0aClTW3ddPWJbd10sRSs9Ylt3KytdO3c9PT0wJiYodz0xKTt3aGlsZShFPmgmJnc+MSl7Uz1bXSx3LS07Zm9yKHZhciB4PTA7eDxiLmxlbmd0aDt4KyspYlt4XT4oU1t4JXddfHwwKSYmKFNbeCV3XT1iW3hdKTtFPVMucmVkdWNlKGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBlK3R9KX12YXIgVD1bXTtmb3IodmFyIE49MCxDPTA7Tjx3O04rKylUW05dPUMsQys9U1tOXTtnLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrVFt0JXddKyIsIisoNStNYXRoLmZsb29yKHQvdykqMjApKyIpIn0pLHU/bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisobi10LnJpZ2h0LUUpKyIsIit0LnRvcCsiKSIpOm0uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIit0LnRvcCsiKSIpLHI9dC50b3ArdC5ib3R0b20rTWF0aC5jZWlsKGIubGVuZ3RoL3cpKjIwfWVsc2V7dmFyIGs9NSxMPTUsQT0wLE87Zy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUscil7dmFyIGk9ZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLm5vZGUoKS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKSsyODtyZXR1cm4gTz1MLG48dC5sZWZ0K3QucmlnaHQrTytpJiYoTD1PPTUsays9MjApLEwrPWksTD5BJiYoQT1MKSwidHJhbnNsYXRlKCIrTysiLCIraysiKSJ9KSxtLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhuLXQucmlnaHQtQSkrIiwiK3QudG9wKyIpIikscj10LnRvcCt0LmJvdHRvbStrKzE1fX0pLGN9dmFyIHQ9e3RvcDo1LHJpZ2h0OjAsYm90dG9tOjUsbGVmdDowfSxuPTQwMCxyPTIwLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSxzPWUudXRpbHMuZGVmYXVsdENvbG9yKCksbz0hMCx1PSEwLGE9ITAsZj0hMSxsPWQzLmRpc3BhdGNoKCJsZWdlbmRDbGljayIsImxlZ2VuZERibGNsaWNrIiwibGVnZW5kTW91c2VvdmVyIiwibGVnZW5kTW91c2VvdXQiLCJzdGF0ZUNoYW5nZSIpO3JldHVybiBjLmRpc3BhdGNoPWwsYy5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChjKSxjLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxjKTp0fSxjLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsYyk6bn0sYy5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSxjKTpyfSxjLmtleT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1lLGMpOml9LGMuY29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZS51dGlscy5nZXRDb2xvcih0KSxjKTpzfSxjLmFsaWduPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsYyk6b30sYy5yaWdodEFsaWduPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsYyk6dX0sYy51cGRhdGVTdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLGMpOmF9LGMucmFkaW9CdXR0b25Nb2RlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUsYyk6Zn0sY30sZS5tb2RlbHMubGluZT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBtKGcpe3JldHVybiBnLmVhY2goZnVuY3Rpb24obSl7dmFyIGc9ci1uLmxlZnQtbi5yaWdodCxiPWktbi50b3Atbi5ib3R0b20sdz1kMy5zZWxlY3QodGhpcyk7Yz10LnhTY2FsZSgpLGg9dC55U2NhbGUoKSxkPWR8fGMsdj12fHxoO3ZhciBFPXcuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZSIpLmRhdGEoW21dKSxTPUUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1saW5lIiksVD1TLmFwcGVuZCgiZGVmcyIpLE49Uy5hcHBlbmQoImciKSxDPUUuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdyb3VwcyIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zY2F0dGVyV3JhcCIpLEUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbi5sZWZ0KyIsIituLnRvcCsiKSIpLHQud2lkdGgoZykuaGVpZ2h0KGIpO3ZhciBrPUUuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKTtrLnRyYW5zaXRpb24oKS5jYWxsKHQpLFQuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYtZWRnZS1jbGlwLSIrdC5pZCgpKS5hcHBlbmQoInJlY3QiKSxFLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiIHJlY3QiKS5hdHRyKCJ3aWR0aCIsZykuYXR0cigiaGVpZ2h0IixiKSxDLmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWNsaXAtIit0LmlkKCkrIikiOiIiKSxrLmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWNsaXAtIit0LmlkKCkrIikiOiIiKTt2YXIgTD1FLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSk7TC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksTC5leGl0KCkudHJhbnNpdGlvbigpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNikucmVtb3ZlKCksTC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBzKGUsdCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBzKGUsdCl9KSxMLnRyYW5zaXRpb24oKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLC41KTt2YXIgQT1MLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZihlKT9bZV06W119KTtBLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJudi1hcmVhIikuYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGQzLnN2Zy5hcmVhKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGQobyh0LG4pKSl9KS55MChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh2KHUodCxuKSkpfSkueTEoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdihoLmRvbWFpbigpWzBdPD0wP2guZG9tYWluKClbMV0+PTA/MDpoLmRvbWFpbigpWzFdOmguZG9tYWluKClbMF0pfSkuYXBwbHkodGhpcyxbdC52YWx1ZXNdKX0pLEwuZXhpdCgpLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikucmVtb3ZlKCksQS50cmFuc2l0aW9uKCkuYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGQzLnN2Zy5hcmVhKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGMobyh0LG4pKSl9KS55MChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhoKHUodCxuKSkpfSkueTEoZnVuY3Rpb24oZSx0KXtyZXR1cm4gaChoLmRvbWFpbigpWzBdPD0wP2guZG9tYWluKClbMV0+PTA/MDpoLmRvbWFpbigpWzFdOmguZG9tYWluKClbMF0pfSkuYXBwbHkodGhpcyxbdC52YWx1ZXNdKX0pO3ZhciBPPUwuc2VsZWN0QWxsKCJwYXRoLm52LWxpbmUiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlLnZhbHVlc119KTtPLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJudi1saW5lIikuYXR0cigiZCIsZDMuc3ZnLmxpbmUoKS5pbnRlcnBvbGF0ZShwKS5kZWZpbmVkKGEpLngoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oZChvKHQsbikpKX0pLnkoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8odih1KHQsbikpKX0pKSxMLmV4aXQoKS5zZWxlY3RBbGwoInBhdGgubnYtbGluZSIpLnRyYW5zaXRpb24oKS5hdHRyKCJkIixkMy5zdmcubGluZSgpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhjKG8odCxuKSkpfSkueShmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhoKHUodCxuKSkpfSkpLE8udHJhbnNpdGlvbigpLmF0dHIoImQiLGQzLnN2Zy5saW5lKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGMobyh0LG4pKSl9KS55KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGgodSh0LG4pKSl9KSksZD1jLmNvcHkoKSx2PWguY29weSgpfSksbX12YXIgdD1lLm1vZGVscy5zY2F0dGVyKCksbj17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LHI9OTYwLGk9NTAwLHM9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sYT1mdW5jdGlvbihlLHQpe3JldHVybiFpc05hTih1KGUsdCkpJiZ1KGUsdCkhPT1udWxsfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBlLmFyZWF9LGw9ITEsYyxoLHA9ImxpbmVhciIKO3Quc2l6ZSgxNikuc2l6ZURvbWFpbihbMTYsMjU2XSk7dmFyIGQsdjtyZXR1cm4gbS5kaXNwYXRjaD10LmRpc3BhdGNoLG0uc2NhdHRlcj10LGQzLnJlYmluZChtLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9pIiwiY2xpcFJhZGl1cyIsInBhZERhdGEiLCJoaWdobGlnaHRQb2ludCIsImNsZWFySGlnaGxpZ2h0cyIpLG0ub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQobSksbS5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDpuLnJpZ2h0LG4uYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206bi5ib3R0b20sbi5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsbSk6bn0sbS53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLG0pOnJ9LG0uaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsbSk6aX0sbS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsdC54KGUpLG0pOm99LG0ueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLHQueShlKSxtKTp1fSxtLmNsaXBFZGdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsbSk6bH0sbS5jb2xvcj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLnV0aWxzLmdldENvbG9yKG4pLHQuY29sb3IocyksbSk6c30sbS5pbnRlcnBvbGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLG0pOnB9LG0uZGVmaW5lZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLG0pOmF9LG0uaXNBcmVhPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWQzLmZ1bmN0b3IoZSksbSk6Zn0sbX0sZS5tb2RlbHMubGluZUNoYXJ0PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIE4obSl7cmV0dXJuIG0uZWFjaChmdW5jdGlvbihtKXt2YXIgQz1kMy5zZWxlY3QodGhpcyksaz10aGlzLEw9KGF8fHBhcnNlSW50KEMuc3R5bGUoIndpZHRoIikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LEE9KGZ8fHBhcnNlSW50KEMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbTtOLnVwZGF0ZT1mdW5jdGlvbigpe0MudHJhbnNpdGlvbigpLmR1cmF0aW9uKHgpLmNhbGwoTil9LE4uY29udGFpbmVyPXRoaXMsYi5kaXNhYmxlZD1tLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighdyl7dmFyIE87dz17fTtmb3IoTyBpbiBiKWJbT11pbnN0YW5jZW9mIEFycmF5P3dbT109YltPXS5zbGljZSgwKTp3W09dPWJbT119aWYoIW18fCFtLmxlbmd0aHx8IW0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBNPUMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbRV0pO3JldHVybiBNLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxNLmF0dHIoIngiLG8ubGVmdCtMLzIpLmF0dHIoInkiLG8udG9wK0EvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLE59Qy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxnPXQueFNjYWxlKCkseT10LnlTY2FsZSgpO3ZhciBfPUMuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZUNoYXJ0IikuZGF0YShbbV0pLEQ9Xy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWxpbmVDaGFydCIpLmFwcGVuZCgiZyIpLFA9Xy5zZWxlY3QoImciKTtELmFwcGVuZCgicmVjdCIpLnN0eWxlKCJvcGFjaXR5IiwwKSxELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksRC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLEQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLEQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1pbnRlcmFjdGl2ZSIpLFAuc2VsZWN0KCJyZWN0IikuYXR0cigid2lkdGgiLEwpLmF0dHIoImhlaWdodCIsQSksbCYmKGkud2lkdGgoTCksUC5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0obSkuY2FsbChpKSxvLnRvcCE9aS5oZWlnaHQoKSYmKG8udG9wPWkuaGVpZ2h0KCksQT0oZnx8cGFyc2VJbnQoQy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9tKSxfLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtby50b3ArIikiKSksXy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmxlZnQrIiwiK28udG9wKyIpIikscCYmUC5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitMKyIsMCkiKSxkJiYocy53aWR0aChMKS5oZWlnaHQoQSkubWFyZ2luKHtsZWZ0Om8ubGVmdCx0b3A6by50b3B9KS5zdmdDb250YWluZXIoQykueFNjYWxlKGcpLF8uc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS5jYWxsKHMpKSx0LndpZHRoKEwpLmhlaWdodChBKS5jb2xvcihtLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHx1KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4hbVt0XS5kaXNhYmxlZH0pKTt2YXIgSD1QLnNlbGVjdCgiLm52LWxpbmVzV3JhcCIpLmRhdHVtKG0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpO0gudHJhbnNpdGlvbigpLmNhbGwodCksYyYmKG4uc2NhbGUoZykudGlja3MoTC8xMDApLnRpY2tTaXplKC1BLDApLFAuc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIit5LnJhbmdlKClbMF0rIikiKSxQLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5jYWxsKG4pKSxoJiYoci5zY2FsZSh5KS50aWNrcyhBLzM2KS50aWNrU2l6ZSgtTCwwKSxQLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5jYWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Yj1lLFMuc3RhdGVDaGFuZ2UoYiksTi51cGRhdGUoKX0pLHMuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW1vdmUiLGZ1bmN0aW9uKGkpe3QuY2xlYXJIaWdobGlnaHRzKCk7dmFyIGEsZixsLGM9W107bS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD10LCFlLmRpc2FibGVkfSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2Y9ZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpLnBvaW50WFZhbHVlLE4ueCgpKSx0LmhpZ2hsaWdodFBvaW50KHIsZiwhMCk7dmFyIHM9bi52YWx1ZXNbZl07aWYodHlwZW9mIHM9PSJ1bmRlZmluZWQiKXJldHVybjt0eXBlb2YgYT09InVuZGVmaW5lZCImJihhPXMpLHR5cGVvZiBsPT0idW5kZWZpbmVkIiYmKGw9Ti54U2NhbGUoKShOLngoKShzLGYpKSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6Ti55KCkocyxmKSxjb2xvcjp1KG4sbi5zZXJpZXNJbmRleCl9KX0pO3ZhciBoPW4udGlja0Zvcm1hdCgpKE4ueCgpKGEsZikpO3MudG9vbHRpcC5wb3NpdGlvbih7bGVmdDpsK28ubGVmdCx0b3A6aS5tb3VzZVkrby50b3B9KS5jaGFydENvbnRhaW5lcihrLnBhcmVudE5vZGUpLmVuYWJsZWQodikudmFsdWVGb3JtYXR0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci50aWNrRm9ybWF0KCkoZSl9KS5kYXRhKHt2YWx1ZTpoLHNlcmllczpjfSkoKSxzLnJlbmRlckd1aWRlTGluZShsKX0pLHMuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7Uy50b29sdGlwSGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxTLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7diYmVChlLGsucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPSJ1bmRlZmluZWQiJiYobS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD1lLmRpc2FibGVkW25dfSksYi5kaXNhYmxlZD1lLmRpc2FibGVkKSxOLnVwZGF0ZSgpfSl9KSxOfXZhciB0PWUubW9kZWxzLmxpbmUoKSxuPWUubW9kZWxzLmF4aXMoKSxyPWUubW9kZWxzLmF4aXMoKSxpPWUubW9kZWxzLmxlZ2VuZCgpLHM9ZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgpLG89e3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo2MH0sdT1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLGE9bnVsbCxmPW51bGwsbD0hMCxjPSEwLGg9ITAscD0hMSxkPSExLHY9ITAsbT1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LGcseSxiPXt9LHc9bnVsbCxFPSJObyBEYXRhIEF2YWlsYWJsZS4iLFM9ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIikseD0yNTA7bi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZW50KHA/InJpZ2h0IjoibGVmdCIpO3ZhciBUPWZ1bmN0aW9uKGkscyl7dmFyIG89aS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT1pLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9bi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPXIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD1tKGkuc2VyaWVzLmtleSxhLGYsaSxOKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLG51bGwsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK28ubGVmdCxlLnBvc1sxXStvLnRvcF0sUy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtTLnRvb2x0aXBIaWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7diYmZS50b29sdGlwLmNsZWFudXAoKX0pLE4uZGlzcGF0Y2g9UyxOLmxpbmVzPXQsTi5sZWdlbmQ9aSxOLnhBeGlzPW4sTi55QXhpcz1yLE4uaW50ZXJhY3RpdmVMYXllcj1zLGQzLnJlYmluZChOLHQsImRlZmluZWQiLCJpc0FyZWEiLCJ4IiwieSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCJjbGlwVm9yb25vaSIsInVzZVZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiksTi5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChOKSxOLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oby50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvbSxvLmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0Om8ubGVmdCxOKTpvfSxOLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsTik6YX0sTi5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSxOKTpmfSxOLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcih1KSxOKTp1fSxOLnNob3dMZWdlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSxOKTpsfSxOLnNob3dYQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLE4pOmN9LE4uc2hvd1lBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWUsTik6aH0sTi5yaWdodEFsaWduWUF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxOKTpwfSxOLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPWUsZT09PSEwJiYoTi5pbnRlcmFjdGl2ZSghMSksTi51c2VWb3Jvbm9pKCExKSksTik6ZH0sTi50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1lLE4pOnZ9LE4udG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09ZSxOKTptfSxOLnN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsTik6Yn0sTi5kZWZhdWx0U3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9ZSxOKTp3fSxOLm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1lLE4pOkV9LE4udHJhbnNpdGlvbkR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PWUsTik6eH0sTn0sZS5tb2RlbHMubGluZVBsdXNCYXJDaGFydD1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBUKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGw9ZDMuc2VsZWN0KHRoaXMpLGM9dGhpcyx2PShhfHxwYXJzZUludChsLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11LmxlZnQtdS5yaWdodCxOPShmfHxwYXJzZUludChsLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b207VC51cGRhdGU9ZnVuY3Rpb24oKXtsLnRyYW5zaXRpb24oKS5jYWxsKFQpfSxiLmRpc2FibGVkPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YXIgQzt3PXt9O2ZvcihDIGluIGIpYltDXWluc3RhbmNlb2YgQXJyYXk/d1tDXT1iW0NdLnNsaWNlKDApOndbQ109YltDXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIGs9bC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtFXSk7cmV0dXJuIGsuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLGsuYXR0cigieCIsdS5sZWZ0K3YvMikuYXR0cigieSIsdS50b3ArTi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksVH1sLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciBMPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLmJhcn0pLEE9ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuYmFyfSk7bT1BLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aCYmQS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KVswXS52YWx1ZXMubGVuZ3RoP3QueFNjYWxlKCk6bi54U2NhbGUoKSxnPW4ueVNjYWxlKCkseT10LnlTY2FsZSgpO3ZhciBPPWQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lUGx1c0JhciIpLmRhdGEoW2VdKSxNPU8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1saW5lUGx1c0JhciIpLmFwcGVuZCgiZyIpLF89Ty5zZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteTIgbnYtYXhpcyIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLHAmJihvLndpZHRoKHYvMiksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3JpZ2luYWxLZXk9ZS5vcmlnaW5hbEtleT09PXVuZGVmaW5lZD9lLmtleTplLm9yaWdpbmFsS2V5LGUua2V5PWUub3JpZ2luYWxLZXkrKGUuYmFyPyIgKGxlZnQgYXhpcykiOiIgKHJpZ2h0IGF4aXMpIiksZX0pKS5jYWxsKG8pLHUudG9wIT1vLmhlaWdodCgpJiYodS50b3A9by5oZWlnaHQoKSxOPShmfHxwYXJzZUludChsLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20pLF8uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3YvMisiLCIrIC11LnRvcCsiKSIpKSxPLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3UubGVmdCsiLCIrdS50b3ArIikiKSx0LndpZHRoKHYpLmhlaWdodChOKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxoKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpLG4ud2lkdGgodikuaGVpZ2h0KE4pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGgoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLmJhcn0pKTt2YXIgRD1fLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oTC5sZW5ndGg/TDpbe3ZhbHVlczpbXX1dKSxQPV8uc2VsZWN0KCIubnYtbGluZXNXcmFwIikuZGF0dW0oQVswXSYmIUFbMF0uZGlzYWJsZWQ/QTpbe3ZhbHVlczpbXX1dKTtkMy50cmFuc2l0aW9uKEQpLmNhbGwobiksZDMudHJhbnNpdGlvbihQKS5jYWxsKHQpLHIuc2NhbGUobSkudGlja3Modi8xMDApLnRpY2tTaXplKC1OLDApLF8uc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitnLnJhbmdlKClbMF0rIikiKSxkMy50cmFuc2l0aW9uKF8uc2VsZWN0KCIubnYteC5udi1heGlzIikpLmNhbGwociksaS5zY2FsZShnKS50aWNrcyhOLzM2KS50aWNrU2l6ZSgtdiwwKSxkMy50cmFuc2l0aW9uKF8uc2VsZWN0KCIubnYteTEubnYtYXhpcyIpKS5zdHlsZSgib3BhY2l0eSIsTC5sZW5ndGg/MTowKS5jYWxsKGkpLHMuc2NhbGUoeSkudGlja3MoTi8zNikudGlja1NpemUoTC5sZW5ndGg/MDotdiwwKSxfLnNlbGVjdCgiLm52LXkyLm52LWF4aXMiKS5zdHlsZSgib3BhY2l0eSIsQS5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit2KyIsMCkiKSxkMy50cmFuc2l0aW9uKF8uc2VsZWN0KCIubnYteTIubnYtYXhpcyIpKS5jYWxsKHMpLG8uZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtiPWUsUy5zdGF0ZUNoYW5nZShiKSxULnVwZGF0ZSgpfSksUy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2QmJngoZSxjLnBhcmVudE5vZGUpfSksUy5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0idW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9dC5kaXNhYmxlZFtuXX0pLGIuZGlzYWJsZWQ9dC5kaXNhYmxlZCksVC51cGRhdGUoKX0pfSksVH12YXIgdD1lLm1vZGVscy5saW5lKCksbj1lLm1vZGVscy5oaXN0b3JpY2FsQmFyKCkscj1lLm1vZGVscy5heGlzKCksaT1lLm1vZGVscy5heGlzKCkscz1lLm1vZGVscy5heGlzKCksbz1lLm1vZGVscy5sZWdlbmQoKSx1PXt0b3A6MzAscmlnaHQ6NjAsYm90dG9tOjUwLGxlZnQ6NjB9LGE9bnVsbCxmPW51bGwsbD1mdW5jdGlvbihlKXtyZXR1cm4gZS54fSxjPWZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGg9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxwPSEwLGQ9ITAsdj1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LG0sZyx5LGI9e30sdz1udWxsLEU9Ik5vIERhdGEgQXZhaWxhYmxlLiIsUz1kMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKTtuLnBhZERhdGEoITApLHQuY2xpcEVkZ2UoITEpLnBhZERhdGEoITApLHIub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KS5oaWdobGlnaHRaZXJvKCExKSxpLm9yaWVudCgibGVmdCIpLHMub3JpZW50KCJyaWdodCIpO3ZhciB4PWZ1bmN0aW9uKG4sbyl7dmFyIHU9bi5wb3NbMF0rKG8ub2Zmc2V0TGVmdHx8MCksYT1uLnBvc1sxXSsoby5vZmZzZXRUb3B8fDApLGY9ci50aWNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxsPShuLnNlcmllcy5iYXI/aTpzKS50aWNrRm9ybWF0KCkodC55KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxjPXYobi5zZXJpZXMua2V5LGYsbCxuLFQpO2UudG9vbHRpcC5zaG93KFt1LGFdLGMsbi52YWx1ZTwwPyJuIjoicyIsbnVsbCxvKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0sUy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtTLnRvb2x0aXBIaWRlKGUpfSksbi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rdS5sZWZ0LGUucG9zWzFdK3UudG9wXSxTLnRvb2x0aXBTaG93KGUpfSksbi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpcEhpZGUoZSl9KSxTLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtkJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksVC5kaXNwYXRjaD1TLFQubGVnZW5kPW8sVC5saW5lcz10LFQuYmFycz1uLFQueEF4aXM9cixULnkxQXhpcz1pLFQueTJBeGlzPXMsZDMucmViaW5kKFQsdCwiZGVmaW5lZCIsInNpemUiLCJjbGlwVm9yb25vaSIsImludGVycG9sYXRlIiksVC5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChUKSxULng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSx0LngoZSksbi54KGUpLFQpOmx9LFQueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLHQueShlKSxuLnkoZSksVCk6Y30sVC5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHUudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6dS50b3AsdS5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0b20sdS5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDp1LmxlZnQsVCk6dX0sVC53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLFQpOmF9LFQuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUsVCk6Zn0sVC5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLnV0aWxzLmdldENvbG9yKHQpLG8uY29sb3IoaCksVCk6aH0sVC5zaG93TGVnZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPWUsVCk6cH0sVC50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1lLFQpOmR9LFQudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9ZSxUKTp2fSxULnN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsVCk6Yn0sVC5kZWZhdWx0U3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9ZSxUKTp3fSxULm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1lLFQpOkV9LFR9LGUubW9kZWxzLmxpbmVXaXRoRm9jdXNDaGFydD1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBrKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gVShlKXt2YXIgdD0rKGU9PSJlIiksbj10PzE6LTEscj1NLzM7cmV0dXJuIk0iKy41Km4rIiwiK3IrIkE2LDYgMCAwICIrdCsiICIrNi41Km4rIiwiKyhyKzYpKyJWIisoMipyLTYpKyJBNiw2IDAgMCAiK3QrIiAiKy41Km4rIiwiKzIqcisiWiIrIk0iKzIuNSpuKyIsIisocis4KSsiViIrKDIqci04KSsiTSIrNC41Km4rIiwiKyhyKzgpKyJWIisoMipyLTgpfWZ1bmN0aW9uIHooKXthLmVtcHR5KCl8fGEuZXh0ZW50KHcpLEkuZGF0YShbYS5lbXB0eSgpP2cuZG9tYWluKCk6d10pLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj1nKGVbMF0pLXYucmFuZ2UoKVswXSxyPXYucmFuZ2UoKVsxXS1nKGVbMV0pO2QzLnNlbGVjdCh0aGlzKS5zZWxlY3QoIi5sZWZ0IikuYXR0cigid2lkdGgiLG48MD8wOm4pLGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoIi5yaWdodCIpLmF0dHIoIngiLGcoZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/MDpyKX0pfWZ1bmN0aW9uIFcoKXt3PWEuZW1wdHkoKT9udWxsOmEuZXh0ZW50KCk7dmFyIG49YS5lbXB0eSgpP2cuZG9tYWluKCk6YS5leHRlbnQoKTtpZihNYXRoLmFicyhuWzBdLW5bMV0pPD0xKXJldHVybjtULmJydXNoKHtleHRlbnQ6bixicnVzaDphfSkseigpO3ZhciBzPUguc2VsZWN0KCIubnYtZm9jdXMgLm52LWxpbmVzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubWFwKGZ1bmN0aW9uKGUscil7cmV0dXJue2tleTplLmtleSx2YWx1ZXM6ZS52YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQueCgpKGUscik+PW5bMF0mJnQueCgpKGUscik8PW5bMV19KX19KSk7cy50cmFuc2l0aW9uKCkuZHVyYXRpb24oTikuY2FsbCh0KSxILnNlbGVjdCgiLm52LWZvY3VzIC5udi14Lm52LWF4aXMiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oTikuY2FsbChyKSxILnNlbGVjdCgiLm52LWZvY3VzIC5udi15Lm52LWF4aXMiKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oTikuY2FsbChpKX12YXIgUz1kMy5zZWxlY3QodGhpcyksTD10aGlzLEE9KGh8fHBhcnNlSW50KFMuc3R5bGUoIndpZHRoIikpfHw5NjApLWYubGVmdC1mLnJpZ2h0LE89KHB8fHBhcnNlSW50KFMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1mLnRvcC1mLmJvdHRvbS1kLE09ZC1sLnRvcC1sLmJvdHRvbTtrLnVwZGF0ZT1mdW5jdGlvbigpe1MudHJhbnNpdGlvbigpLmR1cmF0aW9uKE4pLmNhbGwoayl9LGsuY29udGFpbmVyPXRoaXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBfPVMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbeF0pO3JldHVybiBfLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxfLmF0dHIoIngiLGYubGVmdCtBLzIpLmF0dHIoInkiLGYudG9wK08vMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLGt9Uy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSx2PXQueFNjYWxlKCksbT10LnlTY2FsZSgpLGc9bi54U2NhbGUoKSx5PW4ueVNjYWxlKCk7dmFyIEQ9Uy5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lV2l0aEZvY3VzQ2hhcnQiKS5kYXRhKFtlXSksUD1ELmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVdpdGhGb2N1c0NoYXJ0IikuYXBwZW5kKCJnIiksSD1ELnNlbGVjdCgiZyIpO1AuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIik7dmFyIEI9UC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWZvY3VzIik7Qi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIik7dmFyIGo9UC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRleHQiKTtqLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksai5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLGouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxqLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYnJ1c2hCYWNrZ3JvdW5kIiksai5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYnJ1c2giKSxiJiYodS53aWR0aChBKSxILnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKHUpLGYudG9wIT11LmhlaWdodCgpJiYoZi50b3A9dS5oZWlnaHQoKSxPPShwfHxwYXJzZUludChTLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktZi50b3AtZi5ib3R0b20tZCksSC5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLWYudG9wKyIpIikpLEQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZi5sZWZ0KyIsIitmLnRvcCsiKSIpLHQud2lkdGgoQSkuaGVpZ2h0KE8pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLG4uZGVmaW5lZCh0LmRlZmluZWQoKSkud2lkdGgoQSkuaGVpZ2h0KE0pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLEguc2VsZWN0KCIubnYtY29udGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKE8rZi5ib3R0b20rbC50b3ApKyIpIik7dmFyIEY9SC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi1saW5lc1dyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKTtkMy50cmFuc2l0aW9uKEYpLmNhbGwobiksci5zY2FsZSh2KS50aWNrcyhBLzEwMCkudGlja1NpemUoLU8sMCksaS5zY2FsZShtKS50aWNrcyhPLzM2KS50aWNrU2l6ZSgtQSwwKSxILnNlbGVjdCgiLm52LWZvY3VzIC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK08rIikiKSxhLngoZykub24oImJydXNoIixmdW5jdGlvbigpe3ZhciBlPWsudHJhbnNpdGlvbkR1cmF0aW9uKCk7ay50cmFuc2l0aW9uRHVyYXRpb24oMCksVygpLGsudHJhbnNpdGlvbkR1cmF0aW9uKGUpfSksdyYmYS5leHRlbnQodyk7dmFyIEk9SC5zZWxlY3QoIi5udi1icnVzaEJhY2tncm91bmQiKS5zZWxlY3RBbGwoImciKS5kYXRhKFt3fHxhLmV4dGVudCgpXSkscT1JLmVudGVyKCkuYXBwZW5kKCJnIik7cS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJoZWlnaHQiLE0pLHEuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJyaWdodCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImhlaWdodCIsTSk7dmFyIFI9SC5zZWxlY3QoIi5udi14Lm52LWJydXNoIikuY2FsbChhKTtSLnNlbGVjdEFsbCgicmVjdCIpLmF0dHIoImhlaWdodCIsTSksUi5zZWxlY3RBbGwoIi5yZXNpemUiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixVKSxXKCkscy5zY2FsZShnKS50aWNrcyhBLzEwMCkudGlja1NpemUoLU0sMCksSC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3kucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oSC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm52LWF4aXMiKSkuY2FsbChzKSxvLnNjYWxlKHkpLnRpY2tzKE0vMzYpLnRpY2tTaXplKC1BLDApLGQzLnRyYW5zaXRpb24oSC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Lm52LWF4aXMiKSkuY2FsbChvKSxILnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiksdS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2sudXBkYXRlKCl9KSxULm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7RSYmQyhlLEwucGFyZW50Tm9kZSl9KX0pLGt9dmFyIHQ9ZS5tb2RlbHMubGluZSgpLG49ZS5tb2RlbHMubGluZSgpLHI9ZS5tb2RlbHMuYXhpcygpLGk9ZS5tb2RlbHMuYXhpcygpLHM9ZS5tb2RlbHMuYXhpcygpLG89ZS5tb2RlbHMuYXhpcygpLHU9ZS5tb2RlbHMubGVnZW5kKCksYT1kMy5zdmcuYnJ1c2goKSxmPXt0b3A6MzAscmlnaHQ6MzAsYm90dG9tOjMwLGxlZnQ6NjB9LGw9e3RvcDowLHJpZ2h0OjMwLGJvdHRvbToyMCxsZWZ0OjYwfSxjPWUudXRpbHMuZGVmYXVsdENvbG9yKCksaD1udWxsLHA9bnVsbCxkPTEwMCx2LG0sZyx5LGI9ITAsdz1udWxsLEU9ITAsUz1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LHg9Ik5vIERhdGEgQXZhaWxhYmxlLiIsVD1kMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsImJydXNoIiksTj0yNTA7dC5jbGlwRWRnZSghMCksbi5pbnRlcmFjdGl2ZSghMSksci5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLGkub3JpZW50KCJsZWZ0Iikscy5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLG8ub3JpZW50KCJsZWZ0Iik7dmFyIEM9ZnVuY3Rpb24obixzKXt2YXIgbz1uLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PW4ucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT1yLnRpY2tGb3JtYXQoKSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGY9aS50aWNrRm9ybWF0KCkodC55KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxsPVMobi5zZXJpZXMua2V5LGEsZixuLGspO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rZi5sZWZ0LGUucG9zWzFdK2YudG9wXSxULnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxULm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtFJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksay5kaXNwYXRjaD1ULGsubGVnZW5kPXUsay5saW5lcz10LGsubGluZXMyPW4say54QXhpcz1yLGsueUF4aXM9aSxrLngyQXhpcz1zLGsueTJBeGlzPW8sZDMucmViaW5kKGssdCwiZGVmaW5lZCIsImlzQXJlYSIsInNpemUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCJjbGlwVm9yb25vaSIsImlkIiksay5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChrKSxrLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQueChlKSxuLngoZSksayk6dC54fSxrLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQueShlKSxuLnkoZSksayk6dC55fSxrLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZi50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDpmLnRvcCxmLnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0OmYucmlnaHQsZi5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTpmLmJvdHRvbSxmLmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0OmYubGVmdCxrKTpmfSxrLm1hcmdpbjI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSxrKTpsfSxrLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWUsayk6aH0say5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSxrKTpwfSxrLmhlaWdodDI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSxrKTpkfSxrLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWUudXRpbHMuZ2V0Q29sb3IodCksdS5jb2xvcihjKSxrKTpjfSxrLnNob3dMZWdlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9ZSxrKTpifSxrLnRvb2x0aXBzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPWUsayk6RX0say50b29sdGlwQ29udGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz1lLGspOlN9LGsuaW50ZXJwb2xhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQuaW50ZXJwb2xhdGUoZSksbi5pbnRlcnBvbGF0ZShlKSxrKTp0LmludGVycG9sYXRlKCl9LGsubm9EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PWUsayk6eH0say54VGlja0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oci50aWNrRm9ybWF0KGUpLHMudGlja0Zvcm1hdChlKSxrKTpyLnRpY2tGb3JtYXQoKX0say55VGlja0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS50aWNrRm9ybWF0KGUpLG8udGlja0Zvcm1hdChlKSxrKTppLnRpY2tGb3JtYXQoKX0say5icnVzaEV4dGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1lLGspOnd9LGsudHJhbnNpdGlvbkR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPWUsayk6Tn0sa30sZS5tb2RlbHMubGluZVBsdXNCYXJXaXRoRm9jdXNDaGFydD1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBCKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbnQoZSl7dmFyIHQ9KyhlPT0iZSIpLG49dD8xOi0xLHI9cS8zO3JldHVybiJNIisuNSpuKyIsIityKyJBNiw2IDAgMCAiK3QrIiAiKzYuNSpuKyIsIisocis2KSsiViIrKDIqci02KSsiQTYsNiAwIDAgIit0KyIgIisuNSpuKyIsIisyKnIrIloiKyJNIisyLjUqbisiLCIrKHIrOCkrIlYiKygyKnItOCkrIk0iKzQuNSpuKyIsIisocis4KSsiViIrKDIqci04KX1mdW5jdGlvbiBydCgpe2guZW1wdHkoKXx8aC5leHRlbnQoeCksWi5kYXRhKFtoLmVtcHR5KCk/ay5kb21haW4oKTp4XSkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPWsoZVswXSktay5yYW5nZSgpWzBdLHI9ay5yYW5nZSgpWzFdLWsoZVsxXSk7ZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgiLmxlZnQiKS5hdHRyKCJ3aWR0aCIsbjwwPzA6biksZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgiLnJpZ2h0IikuYXR0cigieCIsayhlWzFdKSkuYXR0cigid2lkdGgiLHI8MD8wOnIpfSl9ZnVuY3Rpb24gaXQoKXt4PWguZW1wdHkoKT9udWxsOmguZXh0ZW50KCksUz1oLmVtcHR5KCk/ay5kb21haW4oKTpoLmV4dGVudCgpLEQuYnJ1c2goe2V4dGVudDpTLGJydXNoOmh9KSxydCgpLHIud2lkdGgoRikuaGVpZ2h0KEkpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHcoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLmJhcn0pKSx0LndpZHRoKEYpLmhlaWdodChJKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpO3ZhciBuPUouc2VsZWN0KCIubnYtZm9jdXMgLm52LWJhcnNXcmFwIikuZGF0dW0oVS5sZW5ndGg/VS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57a2V5OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci54KCkoZSx0KT49U1swXSYmci54KCkoZSx0KTw9U1sxXX0pfX0pOlt7dmFsdWVzOltdfV0pLGk9Si5zZWxlY3QoIi5udi1mb2N1cyAubnYtbGluZXNXcmFwIikuZGF0dW0oelswXS5kaXNhYmxlZD9be3ZhbHVlczpbXX1dOnoubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJue2tleTplLmtleSx2YWx1ZXM6ZS52YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQueCgpKGUsbik+PVNbMF0mJnQueCgpKGUsbik8PVNbMV19KX19KSk7VS5sZW5ndGg/Qz1yLnhTY2FsZSgpOkM9dC54U2NhbGUoKSxzLnNjYWxlKEMpLnRpY2tzKEYvMTAwKS50aWNrU2l6ZSgtSSwwKSxzLmRvbWFpbihbTWF0aC5jZWlsKFNbMF0pLE1hdGguZmxvb3IoU1sxXSldKSxKLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihQKS5jYWxsKHMpLG4udHJhbnNpdGlvbigpLmR1cmF0aW9uKFApLmNhbGwociksaS50cmFuc2l0aW9uKCkuZHVyYXRpb24oUCkuY2FsbCh0KSxKLnNlbGVjdCgiLm52LWZvY3VzIC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK0wucmFuZ2UoKVswXSsiKSIpLHUuc2NhbGUoTCkudGlja3MoSS8zNikudGlja1NpemUoLUYsMCksSi5zZWxlY3QoIi5udi1mb2N1cyAubnYteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixVLmxlbmd0aD8xOjApLGEuc2NhbGUoQSkudGlja3MoSS8zNikudGlja1NpemUoVS5sZW5ndGg/MDotRiwwKSxKLnNlbGVjdCgiLm52LWZvY3VzIC5udi15Mi5udi1heGlzIikuc3R5bGUoIm9wYWNpdHkiLHoubGVuZ3RoPzE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrQy5yYW5nZSgpWzFdKyIsMCkiKSxKLnNlbGVjdCgiLm52LWZvY3VzIC5udi15MS5udi1heGlzIikudHJhbnNpdGlvbigpLmR1cmF0aW9uKFApLmNhbGwodSksSi5zZWxlY3QoIi5udi1mb2N1cyAubnYteTIubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihQKS5jYWxsKGEpfXZhciBOPWQzLnNlbGVjdCh0aGlzKSxqPXRoaXMsRj0odnx8cGFyc2VJbnQoTi5zdHlsZSgid2lkdGgiKSl8fDk2MCktcC5sZWZ0LXAucmlnaHQsST0obXx8cGFyc2VJbnQoTi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXAudG9wLXAuYm90dG9tLWcscT1nLWQudG9wLWQuYm90dG9tO0IudXBkYXRlPWZ1bmN0aW9uKCl7Ti50cmFuc2l0aW9uKCkuZHVyYXRpb24oUCkuY2FsbChCKX0sQi5jb250YWluZXI9dGhpcztpZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIFI9Ti5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtfXSk7cmV0dXJuIFIuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLFIuYXR0cigieCIscC5sZWZ0K0YvMikuYXR0cigieSIscC50b3ArSS8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQn1OLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciBVPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLmJhcn0pLHo9ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuYmFyfSk7Qz1yLnhTY2FsZSgpLGs9by5zY2FsZSgpLEw9ci55U2NhbGUoKSxBPXQueVNjYWxlKCksTz1pLnlTY2FsZSgpLE09bi55U2NhbGUoKTt2YXIgVz1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS5iYXJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnkoZSx0KSx5OmIoZSx0KX19KX0pLFg9ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJiFlLmJhcn0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6eShlLHQpLHk6YihlLHQpfX0pfSk7Qy5yYW5nZShbMCxGXSksay5kb21haW4oZDMuZXh0ZW50KGQzLm1lcmdlKFcuY29uY2F0KFgpKSxmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlKFswLEZdKTt2YXIgVj1OLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVQbHVzQmFyIikuZGF0YShbZV0pLCQ9Vi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWxpbmVQbHVzQmFyIikuYXBwZW5kKCJnIiksSj1WLnNlbGVjdCgiZyIpOyQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIik7dmFyIEs9JC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWZvY3VzIik7Sy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MSBudi1heGlzIiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52LWF4aXMiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIik7dmFyIFE9JC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRleHQiKTtRLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksUS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4aXMiKSxRLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteTIgbnYtYXhpcyIpLFEuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLFEuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxRLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYnJ1c2hCYWNrZ3JvdW5kIiksUS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYnJ1c2giKSxFJiYoYy53aWR0aChGLzIpLEouc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9yaWdpbmFsS2V5PWUub3JpZ2luYWxLZXk9PT11bmRlZmluZWQ/ZS5rZXk6ZS5vcmlnaW5hbEtleSxlLmtleT1lLm9yaWdpbmFsS2V5KyhlLmJhcj8iIChsZWZ0IGF4aXMpIjoiIChyaWdodCBheGlzKSIpLGV9KSkuY2FsbChjKSxwLnRvcCE9Yy5oZWlnaHQoKSYmKHAudG9wPWMuaGVpZ2h0KCksST0obXx8cGFyc2VJbnQoTi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXAudG9wLXAuYm90dG9tLWcpLEouc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0YvMisiLCIrIC1wLnRvcCsiKSIpKSxWLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3AubGVmdCsiLCIrcC50b3ArIikiKSxpLndpZHRoKEYpLmhlaWdodChxKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS5iYXJ9KSksbi53aWR0aChGKS5oZWlnaHQocSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJiFlW25dLmJhcn0pKTt2YXIgRz1KLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LWJhcnNXcmFwIikuZGF0dW0oVS5sZW5ndGg/VTpbe3ZhbHVlczpbXX1dKSxZPUouc2VsZWN0KCIubnYtY29udGV4dCAubnYtbGluZXNXcmFwIikuZGF0dW0oelswXS5kaXNhYmxlZD9be3ZhbHVlczpbXX1dOnopO0ouc2VsZWN0KCIubnYtY29udGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKEkrcC5ib3R0b20rZC50b3ApKyIpIiksRy50cmFuc2l0aW9uKCkuY2FsbChpKSxZLnRyYW5zaXRpb24oKS5jYWxsKG4pLGgueChrKS5vbigiYnJ1c2giLGl0KSx4JiZoLmV4dGVudCh4KTt2YXIgWj1KLnNlbGVjdCgiLm52LWJydXNoQmFja2dyb3VuZCIpLnNlbGVjdEFsbCgiZyIpLmRhdGEoW3h8fGguZXh0ZW50KCldKSxldD1aLmVudGVyKCkuYXBwZW5kKCJnIik7ZXQuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJsZWZ0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0IixxKSxldC5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInJpZ2h0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0IixxKTt2YXIgdHQ9Si5zZWxlY3QoIi5udi14Lm52LWJydXNoIikuY2FsbChoKTt0dC5zZWxlY3RBbGwoInJlY3QiKS5hdHRyKCJoZWlnaHQiLHEpLHR0LnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLG50KSxvLnRpY2tzKEYvMTAwKS50aWNrU2l6ZSgtcSwwKSxKLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTy5yYW5nZSgpWzBdKyIpIiksSi5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm52LWF4aXMiKS50cmFuc2l0aW9uKCkuY2FsbChvKSxmLnNjYWxlKE8pLnRpY2tzKHEvMzYpLnRpY2tTaXplKC1GLDApLEouc2VsZWN0KCIubnYtY29udGV4dCAubnYteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixVLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIray5yYW5nZSgpWzBdKyIpIiksSi5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15MS5udi1heGlzIikudHJhbnNpdGlvbigpLmNhbGwoZiksbC5zY2FsZShNKS50aWNrcyhxLzM2KS50aWNrU2l6ZShVLmxlbmd0aD8wOi1GLDApLEouc2VsZWN0KCIubnYtY29udGV4dCAubnYteTIubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5Iix6Lmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2sucmFuZ2UoKVsxXSsiLDApIiksSi5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Mi5udi1heGlzIikudHJhbnNpdGlvbigpLmNhbGwobCksYy5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0IudXBkYXRlKCl9KSxELm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7VCYmSChlLGoucGFyZW50Tm9kZSl9KSxpdCgpfSksQn12YXIgdD1lLm1vZGVscy5saW5lKCksbj1lLm1vZGVscy5saW5lKCkscj1lLm1vZGVscy5oaXN0b3JpY2FsQmFyKCksaT1lLm1vZGVscy5oaXN0b3JpY2FsQmFyKCkscz1lLm1vZGVscy5heGlzKCksbz1lLm1vZGVscy5heGlzKCksdT1lLm1vZGVscy5heGlzKCksYT1lLm1vZGVscy5heGlzKCksZj1lLm1vZGVscy5heGlzKCksbD1lLm1vZGVscy5heGlzKCksYz1lLm1vZGVscy5sZWdlbmQoKSxoPWQzLnN2Zy5icnVzaCgpLHA9e3RvcDozMCxyaWdodDozMCxib3R0b206MzAsbGVmdDo2MH0sZD17dG9wOjAscmlnaHQ6MzAsYm90dG9tOjIwLGxlZnQ6NjB9LHY9bnVsbCxtPW51bGwsZz0xMDAseT1mdW5jdGlvbihlKXtyZXR1cm4gZS54fSxiPWZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LHc9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxFPSEwLFMseD1udWxsLFQ9ITAsTj1mdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LEMsayxMLEEsTyxNLF89Ik5vIERhdGEgQXZhaWxhYmxlLiIsRD1kMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsImJydXNoIiksUD0wO3QuY2xpcEVkZ2UoITApLG4uaW50ZXJhY3RpdmUoITEpLHMub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSx1Lm9yaWVudCgibGVmdCIpLGEub3JpZW50KCJyaWdodCIpLG8ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxmLm9yaWVudCgibGVmdCIpLGwub3JpZW50KCJyaWdodCIpO3ZhciBIPWZ1bmN0aW9uKG4scil7UyYmKG4ucG9pbnRJbmRleCs9TWF0aC5jZWlsKFNbMF0pKTt2YXIgaT1uLnBvc1swXSsoci5vZmZzZXRMZWZ0fHwwKSxvPW4ucG9zWzFdKyhyLm9mZnNldFRvcHx8MCksZj1zLnRpY2tGb3JtYXQoKSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGw9KG4uc2VyaWVzLmJhcj91OmEpLnRpY2tGb3JtYXQoKSh0LnkoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGM9TihuLnNlcmllcy5rZXksZixsLG4sQik7ZS50b29sdGlwLnNob3coW2ksb10sYyxuLnZhbHVlPDA/Im4iOiJzIixudWxsLHIpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rcC5sZWZ0LGUucG9zWzFdK3AudG9wXSxELnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe0QudG9vbHRpcEhpZGUoZSl9KSxyLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPVtlLnBvc1swXStwLmxlZnQsZS5wb3NbMV0rcC50b3BdLEQudG9vbHRpcFNob3coZSl9KSxyLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7RC50b29sdGlwSGlkZShlKX0pLEQub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe1QmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxCLmRpc3BhdGNoPUQsQi5sZWdlbmQ9YyxCLmxpbmVzPXQsQi5saW5lczI9bixCLmJhcnM9cixCLmJhcnMyPWksQi54QXhpcz1zLEIueDJBeGlzPW8sQi55MUF4aXM9dSxCLnkyQXhpcz1hLEIueTNBeGlzPWYsQi55NEF4aXM9bCxkMy5yZWJpbmQoQix0LCJkZWZpbmVkIiwic2l6ZSIsImNsaXBWb3Jvbm9pIiwiaW50ZXJwb2xhdGUiKSxCLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEIpLEIueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1lLHQueChlKSxyLngoZSksQik6eX0sQi55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsdC55KGUpLHIueShlKSxCKTpifSxCLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocC50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDpwLnRvcCxwLnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0OnAucmlnaHQscC5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTpwLmJvdHRvbSxwLmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0OnAubGVmdCxCKTpwfSxCLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PWUsQik6dn0sQi5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09ZSxCKTptfSxCLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PWUudXRpbHMuZ2V0Q29sb3IodCksYy5jb2xvcih3KSxCKTp3fSxCLnNob3dMZWdlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9ZSxCKTpFfSxCLnRvb2x0aXBzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPWUsQik6VH0sQi50b29sdGlwQ29udGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj1lLEIpOk59LEIubm9EYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPWUsQik6X30sQi5icnVzaEV4dGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD1lLEIpOnh9LEJ9LGUubW9kZWxzLm11bHRpQmFyPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIE4oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgTj1uLXQubGVmdC10LnJpZ2h0LEM9ci10LnRvcC10LmJvdHRvbSxrPWQzLnNlbGVjdCh0aGlzKTtwJiZlLmxlbmd0aCYmKHA9W3t2YWx1ZXM6ZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybnt4OmUueCx5OjAsc2VyaWVzOmUuc2VyaWVzLHNpemU6LjAxfX0pfV0pLGMmJihlPWQzLmxheW91dC5zdGFjaygpLm9mZnNldCgiemVybyIpLnZhbHVlcyhmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS55KGEpKCFlLmxlbmd0aCYmcD9wOmUpKSxlPWUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVzPWUudmFsdWVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zZXJpZXM9dCxlfSksZX0pLGMmJmVbMF0udmFsdWVzLm1hcChmdW5jdGlvbih0LG4pe3ZhciByPTAsaT0wO2UubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWUudmFsdWVzW25dO3Quc2l6ZT1NYXRoLmFicyh0LnkpLHQueTwwPyh0LnkxPWksaS09dC5zaXplKToodC55MT10LnNpemUrcixyKz10LnNpemUpfSl9KTt2YXIgTD1nJiZ5P1tdOmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDp1KGUsdCkseTphKGUsdCkseTA6ZS55MCx5MTplLnkxfX0pfSk7aS5kb21haW4oZ3x8ZDMubWVyZ2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KSkucmFuZ2VCYW5kcyhifHxbMCxOXSxFKSxzLmRvbWFpbih5fHxkMy5leHRlbnQoZDMubWVyZ2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjP2UueT4wP2UueTE6ZS55MStlLnk6ZS55fSkuY29uY2F0KGYpKSkucmFuZ2Uod3x8W0MsMF0pLGkuZG9tYWluKClbMF09PT1pLmRvbWFpbigpWzFdJiYoaS5kb21haW4oKVswXT9pLmRvbWFpbihbaS5kb21haW4oKVswXS1pLmRvbWFpbigpWzBdKi4wMSxpLmRvbWFpbigpWzFdK2kuZG9tYWluKClbMV0qLjAxXSk6aS5kb21haW4oWy0xLDFdKSkscy5kb21haW4oKVswXT09PXMuZG9tYWluKClbMV0mJihzLmRvbWFpbigpWzBdP3MuZG9tYWluKFtzLmRvbWFpbigpWzBdK3MuZG9tYWluKClbMF0qLjAxLHMuZG9tYWluKClbMV0tcy5kb21haW4oKVsxXSouMDFdKTpzLmRvbWFpbihbLTEsMV0pKSx4PXh8fGksVD1UfHxzO3ZhciBBPWsuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGliYXIiKS5kYXRhKFtlXSksTz1BLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGliYXIiKSxNPU8uYXBwZW5kKCJkZWZzIiksXz1PLmFwcGVuZCgiZyIpLEQ9QS5zZWxlY3QoImciKTtfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksQS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksTS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi1lZGdlLWNsaXAtIitvKS5hcHBlbmQoInJlY3QiKSxBLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK28rIiByZWN0IikuYXR0cigid2lkdGgiLE4pLmF0dHIoImhlaWdodCIsQyksRC5hdHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYtZWRnZS1jbGlwLSIrbysiKSI6IiIpO3ZhciBQPUEuc2VsZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3JldHVybiB0fSk7UC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksUC5leGl0KCkudHJhbnNpdGlvbigpLnNlbGVjdEFsbCgicmVjdC5udi1iYXIiKS5kZWxheShmdW5jdGlvbih0LG4pe3JldHVybiBuKm0vZVswXS52YWx1ZXMubGVuZ3RofSkuYXR0cigieSIsZnVuY3Rpb24oZSl7cmV0dXJuIGM/VChlLnkwKTpUKDApfSkuYXR0cigiaGVpZ2h0IiwwKS5yZW1vdmUoKSxQLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmhvdmVyfSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoZSx0KX0pLFAudHJhbnNpdGlvbigpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjc1KTt2YXIgSD1QLnNlbGVjdEFsbCgicmVjdC5udi1iYXIiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybiBwJiYhZS5sZW5ndGg/cC52YWx1ZXM6dC52YWx1ZXN9KTtILmV4aXQoKS5yZW1vdmUoKTt2YXIgQj1ILmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIgcG9zaXRpdmUifSkuYXR0cigieCIsZnVuY3Rpb24odCxuLHIpe3JldHVybiBjPzA6cippLnJhbmdlQmFuZCgpL2UubGVuZ3RofSkuYXR0cigieSIsZnVuY3Rpb24oZSl7cmV0dXJuIFQoYz9lLnkwOjApfSkuYXR0cigiaGVpZ2h0IiwwKS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQoKS8oYz8xOmUubGVuZ3RoKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitpKHUoZSx0KSkrIiwwKSJ9KTtILnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSxuLHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsbix0KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCksUy5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltpKHUodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSxTLmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKHQsbil7Uy5lbGVtZW50Q2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W2kodSh0LG4pKStpLnJhbmdlQmFuZCgpKihjP2UubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLHMoYSh0LG4pKyhjP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbih0LG4pe1MuZWxlbWVudERibENsaWNrKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltpKHUodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLEguYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIgcG9zaXRpdmUifSkudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIraSh1KGUsdCkpKyIsMCkifSksZCYmKHZ8fCh2PWUubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSksSC5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkMy5yZ2IoZChlLHQpKS5kYXJrZXIodi5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiF2W3RdfSlbbl0pLnRvU3RyaW5nKCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQzLnJnYihkKGUsdCkpLmRhcmtlcih2Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIXZbdF19KVtuXSkudG9TdHJpbmcoKX0pKSxjP0gudHJhbnNpdGlvbigpLmRlbGF5KGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4qbS9lWzBdLnZhbHVlcy5sZW5ndGh9KS5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVybiBzKGM/ZS55MTowKX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMocyhlLnkrKGM/ZS55MDowKSktcyhjP2UueTA6MCkpLDEpfSkuYXR0cigieCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gYz8wOnQuc2VyaWVzKmkucmFuZ2VCYW5kKCkvZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQoKS8oYz8xOmUubGVuZ3RoKSk6SC50cmFuc2l0aW9uKCkuZGVsYXkoZnVuY3Rpb24odCxuKXtyZXR1cm4gbiptL2VbMF0udmFsdWVzLmxlbmd0aH0pLmF0dHIoIngiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuc2VyaWVzKmkucmFuZ2VCYW5kKCkvZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQoKS9lLmxlbmd0aCkuYXR0cigieSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/cygwKTpzKDApLXMoYShlLHQpKTwxP3MoMCktMTpzKGEoZSx0KSl8fDB9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHMoYShlLHQpKS1zKDApKSwxKXx8MH0pLHg9aS5jb3B5KCksVD1zCi5jb3B5KCl9KSxOfXZhciB0PXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj05NjAscj01MDAsaT1kMy5zY2FsZS5vcmRpbmFsKCkscz1kMy5zY2FsZS5saW5lYXIoKSxvPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT1mdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPVswXSxsPSEwLGM9ITEsaD1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLHA9ITEsZD1udWxsLHYsbT0xMjAwLGcseSxiLHcsRT0uMSxTPWQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpLHgsVDtyZXR1cm4gTi5kaXNwYXRjaD1TLE4ub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoTiksTi54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsTik6dX0sTi55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsTik6YX0sTi5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsTik6dH0sTi53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLE4pOm59LE4uaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWUsTik6cn0sTi54U2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZSxOKTppfSxOLnlTY2FsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLE4pOnN9LE4ueERvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1lLE4pOmd9LE4ueURvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1lLE4pOnl9LE4ueFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsTik6Yn0sTi55UmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9ZSxOKTp3fSxOLmZvcmNlWT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLE4pOmZ9LE4uc3RhY2tlZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLE4pOmN9LE4uY2xpcEVkZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSxOKTpsfSxOLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWUudXRpbHMuZ2V0Q29sb3IodCksTik6aH0sTi5iYXJDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1lLnV0aWxzLmdldENvbG9yKHQpLE4pOmR9LE4uZGlzYWJsZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9ZSxOKTp2fSxOLmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsTik6b30sTi5oaWRlYWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLE4pOnB9LE4uZGVsYXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09ZSxOKTptfSxOLmdyb3VwU3BhY2luZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1lLE4pOkV9LE59LGUubW9kZWxzLm11bHRpQmFyQ2hhcnQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBiPWQzLnNlbGVjdCh0aGlzKSxPPXRoaXMsTT0odXx8cGFyc2VJbnQoYi5zdHlsZSgid2lkdGgiKSl8fDk2MCktby5sZWZ0LW8ucmlnaHQsXz0oYXx8cGFyc2VJbnQoYi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9tO0EudXBkYXRlPWZ1bmN0aW9uKCl7Yi50cmFuc2l0aW9uKCkuZHVyYXRpb24oaykuY2FsbChBKX0sQS5jb250YWluZXI9dGhpcyxTLmRpc2FibGVkPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF4KXt2YXIgRDt4PXt9O2ZvcihEIGluIFMpU1tEXWluc3RhbmNlb2YgQXJyYXk/eFtEXT1TW0RdLnNsaWNlKDApOnhbRF09U1tEXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIFA9Yi5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIFAuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLFAuYXR0cigieCIsby5sZWZ0K00vMikuYXR0cigieSIsby50b3ArXy8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQX1iLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLHc9dC54U2NhbGUoKSxFPXQueVNjYWxlKCk7dmFyIEg9Yi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1tdWx0aUJhcldpdGhMZWdlbmQiKS5kYXRhKFtlXSksQj1ILmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGlCYXJXaXRoTGVnZW5kIikuYXBwZW5kKCJnIiksaj1ILnNlbGVjdCgiZyIpO0IuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksQi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksQi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksYyYmKGkud2lkdGgoTS1DKCkpLHQuYmFyQ29sb3IoKSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5jb2xvcj1kMy5yZ2IoIiNjY2MiKS5kYXJrZXIodCoxLjUpLnRvU3RyaW5nKCl9KSxqLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKGkpLG8udG9wIT1pLmhlaWdodCgpJiYoby50b3A9aS5oZWlnaHQoKSxfPShhfHxwYXJzZUludChiLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atby5ib3R0b20pLGouc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0MoKSsiLCIrIC1vLnRvcCsiKSIpKTtpZihsKXt2YXIgRj1be2tleToiR3JvdXBlZCIsZGlzYWJsZWQ6dC5zdGFja2VkKCl9LHtrZXk6IlN0YWNrZWQiLGRpc2FibGVkOiF0LnN0YWNrZWQoKX1dO3Mud2lkdGgoQygpKS5jb2xvcihbIiM0NDQiLCIjNDQ0IiwiIzQ0NCJdKSxqLnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcCIpLmRhdHVtKEYpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1vLnRvcCsiKSIpLmNhbGwocyl9SC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmxlZnQrIiwiK28udG9wKyIpIiksZCYmai5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitNKyIsMCkiKSx0LmRpc2FibGVkKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSkpLndpZHRoKE0pLmhlaWdodChfKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxmKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKTt2YXIgST1qLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7SS50cmFuc2l0aW9uKCkuY2FsbCh0KTtpZihoKXtuLnNjYWxlKHcpLnRpY2tzKE0vMTAwKS50aWNrU2l6ZSgtXywwKSxqLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrRS5yYW5nZSgpWzBdKyIpIiksai5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS50cmFuc2l0aW9uKCkuY2FsbChuKTt2YXIgcT1qLnNlbGVjdCgiLm52LXgubnYtYXhpcyA+IGciKS5zZWxlY3RBbGwoImciKTtxLnNlbGVjdEFsbCgibGluZSwgdGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKTtpZihtKXt2YXIgUj1mdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitlKyIsIit0KyIpIn0sVT01LHo9MTc7cS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUigwLG4lMj09MD9VOnopfSk7dmFyIFc9ZDMuc2VsZWN0QWxsKCIubnYteC5udi1heGlzIC5udi13cmFwIGcgZyB0ZXh0IilbMF0ubGVuZ3RoO2ouc2VsZWN0QWxsKCIubnYteC5udi1heGlzIC5udi1heGlzTWF4TWluIHRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoMCx0PT09MHx8VyUyIT09MD96OlUpfSl9diYmcS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4gbiVNYXRoLmNlaWwoZVswXS52YWx1ZXMubGVuZ3RoLyhNLzEwMCkpIT09MH0pLnNlbGVjdEFsbCgidGV4dCwgbGluZSIpLnN0eWxlKCJvcGFjaXR5IiwwKSxnJiZxLnNlbGVjdEFsbCgiLnRpY2sgdGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInJvdGF0ZSgiK2crIiAwLDApIikuc3R5bGUoInRleHQtYW5jaG9yIixnPjA/InN0YXJ0IjoiZW5kIiksai5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiB0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDEpfXAmJihyLnNjYWxlKEUpLnRpY2tzKF8vMzYpLnRpY2tTaXplKC1NLDApLGouc2VsZWN0KCIubnYteS5udi1heGlzIikudHJhbnNpdGlvbigpLmNhbGwocikpLGkuZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtTPWUsTi5zdGF0ZUNoYW5nZShTKSxBLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsbil7aWYoIWUuZGlzYWJsZWQpcmV0dXJuO0Y9Ri5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9ITAsZX0pLGUuZGlzYWJsZWQ9ITE7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3VwZWQiOnQuc3RhY2tlZCghMSk7YnJlYWs7Y2FzZSJTdGFja2VkIjp0LnN0YWNrZWQoITApfVMuc3RhY2tlZD10LnN0YWNrZWQoKSxOLnN0YXRlQ2hhbmdlKFMpLEEudXBkYXRlKCl9KSxOLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7eSYmTChlLE8ucGFyZW50Tm9kZSl9KSxOLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24obil7dHlwZW9mIG4uZGlzYWJsZWQhPSJ1bmRlZmluZWQiJiYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmxlZD1uLmRpc2FibGVkW3RdfSksUy5kaXNhYmxlZD1uLmRpc2FibGVkKSx0eXBlb2Ygbi5zdGFja2VkIT0idW5kZWZpbmVkIiYmKHQuc3RhY2tlZChuLnN0YWNrZWQpLFMuc3RhY2tlZD1uLnN0YWNrZWQpLEEudXBkYXRlKCl9KX0pLEF9dmFyIHQ9ZS5tb2RlbHMubXVsdGlCYXIoKSxuPWUubW9kZWxzLmF4aXMoKSxyPWUubW9kZWxzLmF4aXMoKSxpPWUubW9kZWxzLmxlZ2VuZCgpLHM9ZS5tb2RlbHMubGVnZW5kKCksbz17dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0OjYwfSx1PW51bGwsYT1udWxsLGY9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxsPSEwLGM9ITAsaD0hMCxwPSEwLGQ9ITEsdj0hMCxtPSExLGc9MCx5PSEwLGI9ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBvbiAiK3QrIjwvcD4ifSx3LEUsUz17c3RhY2tlZDohMX0seD1udWxsLFQ9Ik5vIERhdGEgQXZhaWxhYmxlLiIsTj1kMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxDPWZ1bmN0aW9uKCl7cmV0dXJuIGw/MTgwOjB9LGs9MjUwO3Quc3RhY2tlZCghMSksbi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLmhpZ2hsaWdodFplcm8oITApLnNob3dNYXhNaW4oITEpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxyLm9yaWVudChkPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWF0KGQzLmZvcm1hdCgiLC4xZiIpKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgTD1mdW5jdGlvbihpLHMpe3ZhciBvPWkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9aS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPW4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj1yLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9YihpLnNlcmllcy5rZXksYSxmLGksQSk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rby5sZWZ0LGUucG9zWzFdK28udG9wXSxOLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe04udG9vbHRpcEhpZGUoZSl9KSxOLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXt5JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQS5kaXNwYXRjaD1OLEEubXVsdGliYXI9dCxBLmxlZ2VuZD1pLEEueEF4aXM9bixBLnlBeGlzPXIsZDMucmViaW5kKEEsdCwieCIsInkiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImNsaXBFZGdlIiwiaWQiLCJzdGFja2VkIiwiZGVsYXkiLCJiYXJDb2xvciIsImdyb3VwU3BhY2luZyIpLEEub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQSksQS5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8udG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6by50b3Asby5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDpvLnJpZ2h0LG8uYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206by5ib3R0b20sby5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDpvLmxlZnQsQSk6b30sQS53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLEEpOnV9LEEuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUsQSk6YX0sQS5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoZiksQSk6Zn0sQS5zaG93Q29udHJvbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSxBKTpsfSxBLnNob3dMZWdlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ZSxBKTpjfSxBLnNob3dYQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLEEpOmh9LEEuc2hvd1lBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPWUsQSk6cH0sQS5yaWdodEFsaWduWUF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxBKTpkfSxBLnJlZHVjZVhUaWNrcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1lLEEpOnZ9LEEucm90YXRlTGFiZWxzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPWUsQSk6Z30sQS5zdGFnZ2VyTGFiZWxzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPWUsQSk6bX0sQS50b29sdGlwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsQSk6Yn0sQS50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1lLEEpOnl9LEEudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9ZSxBKTpifSxBLnN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPWUsQSk6U30sQS5kZWZhdWx0U3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9ZSxBKTp4fSxBLm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD1lLEEpOlR9LEEudHJhbnNpdGlvbkR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPWUsQSk6a30sQX0sZS5tb2RlbHMubXVsdGlCYXJIb3Jpem9udGFsPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIE4oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT1uLXQubGVmdC10LnJpZ2h0LGc9ci10LnRvcC10LmJvdHRvbSxOPWQzLnNlbGVjdCh0aGlzKTtwJiYoZT1kMy5sYXlvdXQuc3RhY2soKS5vZmZzZXQoInplcm8iKS52YWx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkueShhKShlKSksZT1lLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlcz1lLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWVzPXQsZX0pLGV9KSxwJiZlWzBdLnZhbHVlcy5tYXAoZnVuY3Rpb24odCxuKXt2YXIgcj0wLGk9MDtlLm1hcChmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlc1tuXTt0LnNpemU9TWF0aC5hYnModC55KSx0Lnk8MD8odC55MT1pLXQuc2l6ZSxpLT10LnNpemUpOih0LnkxPXIscis9dC5zaXplKX0pfSk7dmFyIEM9eSYmYj9bXTplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6dShlLHQpLHk6YShlLHQpLHkwOmUueTAseTE6ZS55MX19KX0pO3MuZG9tYWluKHl8fGQzLm1lcmdlKEMpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlQmFuZHMod3x8WzAsZ10sLjEpLG8uZG9tYWluKGJ8fGQzLmV4dGVudChkMy5tZXJnZShDKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHA/ZS55PjA/ZS55MStlLnk6ZS55MTplLnl9KS5jb25jYXQoZikpKSxkJiYhcD9vLnJhbmdlKEV8fFtvLmRvbWFpbigpWzBdPDA/djowLGktKG8uZG9tYWluKClbMV0+MD92OjApXSk6by5yYW5nZShFfHxbMCxpXSkseD14fHxzLFQ9VHx8ZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKG8uZG9tYWluKCkpLnJhbmdlKFtvKDApLG8oMCldKTt2YXIgaz1kMy5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGliYXJIb3Jpem9udGFsIikuZGF0YShbZV0pLEw9ay5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW11bHRpYmFySG9yaXpvbnRhbCIpLEE9TC5hcHBlbmQoImRlZnMiKSxPPUwuYXBwZW5kKCJnIiksTT1rLnNlbGVjdCgiZyIpO08uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm91cHMiKSxrLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgXz1rLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pO18uZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLF8uZXhpdCgpLnRyYW5zaXRpb24oKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLF8uYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcmllcy0iK3R9KS5jbGFzc2VkKCJob3ZlciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChlLHQpfSksXy50cmFuc2l0aW9uKCkuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwuNzUpO3ZhciBEPV8uc2VsZWN0QWxsKCJnLm52LWJhciIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSk7RC5leGl0KCkucmVtb3ZlKCk7dmFyIFA9RC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCxuLHIpe3JldHVybiJ0cmFuc2xhdGUoIitUKHA/dC55MDowKSsiLCIrKHA/MDpyKnMucmFuZ2VCYW5kKCkvZS5sZW5ndGgrcyh1KHQsbikpKSsiKSJ9KTtQLmFwcGVuZCgicmVjdCIpLmF0dHIoIndpZHRoIiwwKS5hdHRyKCJoZWlnaHQiLHMucmFuZ2VCYW5kKCkvKHA/MTplLmxlbmd0aCkpLEQub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSxTLmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W28oYSh0LG4pKyhwP3QueTA6MCkpLHModSh0LG4pKStzLnJhbmdlQmFuZCgpKihwP2UubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLFMuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXtTLmVsZW1lbnRDbGljayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHA/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikrKHA/dC55MDowKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKHQsbil7Uy5lbGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLnJhbmdlQmFuZCgpKihwP2UubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKyhwP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSksUC5hcHBlbmQoInRleHQiKSxkJiYhcD8oRC5zZWxlY3QoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/ImVuZCI6InN0YXJ0In0pLmF0dHIoInkiLHMucmFuZ2VCYW5kKCkvKGUubGVuZ3RoKjIpKS5hdHRyKCJkeSIsIi4zMmVtIikudGV4dChmdW5jdGlvbihlLHQpe3JldHVybiBtKGEoZSx0KSl9KSxELnRyYW5zaXRpb24oKS5zZWxlY3QoInRleHQiKS5hdHRyKCJ4IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8tNDpvKGEoZSx0KSktbygwKSs0fSkpOkQuc2VsZWN0QWxsKCJ0ZXh0IikudGV4dCgiIiksRC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdGl2ZSJ9KSxjJiYoaHx8KGg9ZS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKSxELnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQzLnJnYihjKGUsdCkpLmRhcmtlcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWhbdF19KVtuXSkudG9TdHJpbmcoKX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMucmdiKGMoZSx0KSkuZGFya2VyKGgubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4haFt0XX0pW25dKS50b1N0cmluZygpfSkpLHA/RC50cmFuc2l0aW9uKCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGUueTEpKyIsIitzKHUoZSx0KSkrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cigid2lkdGgiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguYWJzKG8oYShlLHQpK2UueTApLW8oZS55MCkpfSkuYXR0cigiaGVpZ2h0IixzLnJhbmdlQmFuZCgpKTpELnRyYW5zaXRpb24oKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiKyhhKHQsbik8MD9vKGEodCxuKSk6bygwKSkrIiwiKyh0LnNlcmllcypzLnJhbmdlQmFuZCgpL2UubGVuZ3RoK3ModSh0LG4pKSkrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cigiaGVpZ2h0IixzLnJhbmdlQmFuZCgpL2UubGVuZ3RoKS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMobyhhKGUsdCkpLW8oMCkpLDEpfSkseD1zLmNvcHkoKSxUPW8uY29weSgpfSksTn12YXIgdD17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49OTYwLHI9NTAwLGk9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz1kMy5zY2FsZS5vcmRpbmFsKCksbz1kMy5zY2FsZS5saW5lYXIoKSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj1bMF0sbD1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLGM9bnVsbCxoLHA9ITEsZD0hMSx2PTYwLG09ZDMuZm9ybWF0KCIsLjJmIiksZz0xMjAwLHksYix3LEUsUz1kMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSx4LFQ7cmV0dXJuIE4uZGlzcGF0Y2g9UyxOLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKE4pLE4ueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1lLE4pOnV9LE4ueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLE4pOmF9LE4ubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LE4pOnR9LE4ud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxOKTpufSxOLmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLE4pOnJ9LE4ueFNjYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsTik6c30sTi55U2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ZSxOKTpvfSxOLnhEb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9ZSxOKTp5fSxOLnlEb21haW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9ZSxOKTpifSxOLnhSYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1lLE4pOnd9LE4ueVJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPWUsTik6RX0sTi5mb3JjZVk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSxOKTpmfSxOLnN0YWNrZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSxOKTpwfSxOLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUudXRpbHMuZ2V0Q29sb3IodCksTik6bH0sTi5iYXJDb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLnV0aWxzLmdldENvbG9yKHQpLE4pOmN9LE4uZGlzYWJsZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSxOKTpofSxOLmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsTik6aX0sTi5kZWxheT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1lLE4pOmd9LE4uc2hvd1ZhbHVlcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1lLE4pOmR9LE4udmFsdWVGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09ZSxOKTptfSxOLnZhbHVlUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1lLE4pOnZ9LE59LGUubW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbENoYXJ0PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIFQoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihoKXt2YXIgZD1kMy5zZWxlY3QodGhpcyksTj10aGlzLEM9KHV8fHBhcnNlSW50KGQuc3R5bGUoIndpZHRoIikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LGs9KGF8fHBhcnNlSW50KGQuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbTtULnVwZGF0ZT1mdW5jdGlvbigpe2QudHJhbnNpdGlvbigpLmR1cmF0aW9uKFMpLmNhbGwoVCl9LFQuY29udGFpbmVyPXRoaXMsZy5kaXNhYmxlZD1oLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigheSl7dmFyIEw7eT17fTtmb3IoTCBpbiBnKWdbTF1pbnN0YW5jZW9mIEFycmF5P3lbTF09Z1tMXS5zbGljZSgwKTp5W0xdPWdbTF19aWYoIWh8fCFoLmxlbmd0aHx8IWguZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBBPWQuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbYl0pO3JldHVybiBBLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxBLmF0dHIoIngiLG8ubGVmdCtDLzIpLmF0dHIoInkiLG8udG9wK2svMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLFR9ZC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSx2PXQueFNjYWxlKCksbT10LnlTY2FsZSgpO3ZhciBPPWQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5kYXRhKFtoXSksTT1PLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5hcHBlbmQoImciKSxfPU8uc2VsZWN0KCJnIik7TS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxjJiYoaS53aWR0aChDLUUoKSksdC5iYXJDb2xvcigpJiZoLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLmNvbG9yPWQzLnJnYigiI2NjYyIpLmRhcmtlcih0KjEuNSkudG9TdHJpbmcoKX0pLF8uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGgpLmNhbGwoaSksby50b3AhPWkuaGVpZ2h0KCkmJihvLnRvcD1pLmhlaWdodCgpLGs9KGF8fHBhcnNlSW50KGQuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbSksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrRSgpKyIsIisgLW8udG9wKyIpIikpO2lmKGwpe3ZhciBEPVt7a2V5OiJHcm91cGVkIixkaXNhYmxlZDp0LnN0YWNrZWQoKX0se2tleToiU3RhY2tlZCIsZGlzYWJsZWQ6IXQuc3RhY2tlZCgpfV07cy53aWR0aChFKCkpLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0Il0pLF8uc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oRCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLW8udG9wKyIpIikuY2FsbChzKX1PLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28ubGVmdCsiLCIrby50b3ArIikiKSx0LmRpc2FibGVkKGgubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSkpLndpZHRoKEMpLmhlaWdodChrKS5jb2xvcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxmKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4haFt0XS5kaXNhYmxlZH0pKTt2YXIgUD1fLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oaC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7UC50cmFuc2l0aW9uKCkuY2FsbCh0KSxuLnNjYWxlKHYpLnRpY2tzKGsvMjQpLnRpY2tTaXplKC1DLDApLF8uc2VsZWN0KCIubnYteC5udi1heGlzIikudHJhbnNpdGlvbigpLmNhbGwobik7dmFyIEg9Xy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5zZWxlY3RBbGwoImciKTtILnNlbGVjdEFsbCgibGluZSwgdGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKSxyLnNjYWxlKG0pLnRpY2tzKEMvMTAwKS50aWNrU2l6ZSgtaywwKSxfLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIraysiKSIpLF8uc2VsZWN0KCIubnYteS5udi1heGlzIikudHJhbnNpdGlvbigpLmNhbGwociksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2c9ZSx3LnN0YXRlQ2hhbmdlKGcpLFQudXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47RD1ELm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0hMCxlfSksZS5kaXNhYmxlZD0hMTtzd2l0Y2goZS5rZXkpe2Nhc2UiR3JvdXBlZCI6dC5zdGFja2VkKCExKTticmVhaztjYXNlIlN0YWNrZWQiOnQuc3RhY2tlZCghMCl9Zy5zdGFja2VkPXQuc3RhY2tlZCgpLHcuc3RhdGVDaGFuZ2UoZyksVC51cGRhdGUoKX0pLHcub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtwJiZ4KGUsTi5wYXJlbnROb2RlKX0pLHcub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihuKXt0eXBlb2Ygbi5kaXNhYmxlZCE9InVuZGVmaW5lZCImJihoLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLmRpc2FibGVkPW4uZGlzYWJsZWRbdF19KSxnLmRpc2FibGVkPW4uZGlzYWJsZWQpLHR5cGVvZiBuLnN0YWNrZWQhPSJ1bmRlZmluZWQiJiYodC5zdGFja2VkKG4uc3RhY2tlZCksZy5zdGFja2VkPW4uc3RhY2tlZCksZS5jYWxsKFQpfSl9KSxUfXZhciB0PWUubW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbCgpLG49ZS5tb2RlbHMuYXhpcygpLHI9ZS5tb2RlbHMuYXhpcygpLGk9ZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxzPWUubW9kZWxzLmxlZ2VuZCgpLmhlaWdodCgzMCksbz17dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0OjYwfSx1PW51bGwsYT1udWxsLGY9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxsPSEwLGM9ITAsaD0hMSxwPSEwLGQ9ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiIC0gIit0KyI8L2gzPiIrIjxwPiIrbisiPC9wPiJ9LHYsbSxnPXtzdGFja2VkOmh9LHk9bnVsbCxiPSJObyBEYXRhIEF2YWlsYWJsZS4iLHc9ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksRT1mdW5jdGlvbigpe3JldHVybiBsPzE4MDowfSxTPTI1MDt0LnN0YWNrZWQoaCksbi5vcmllbnQoImxlZnQiKS50aWNrUGFkZGluZyg1KS5oaWdobGlnaHRaZXJvKCExKS5zaG93TWF4TWluKCExKS50aWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksci5vcmllbnQoImJvdHRvbSIpLnRpY2tGb3JtYXQoZDMuZm9ybWF0KCIsLjFmIikpLHMudXBkYXRlU3RhdGUoITEpO3ZhciB4PWZ1bmN0aW9uKGkscyl7dmFyIG89aS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT1pLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9bi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPXIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD1kKGkuc2VyaWVzLmtleSxhLGYsaSxUKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8MD8iZSI6InciLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPVtlLnBvc1swXStvLmxlZnQsZS5wb3NbMV0rby50b3BdLHcudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7dy50b29sdGlwSGlkZShlKX0pLHcub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3AmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxULmRpc3BhdGNoPXcsVC5tdWx0aWJhcj10LFQubGVnZW5kPWksVC54QXhpcz1uLFQueUF4aXM9cixkMy5yZWJpbmQoVCx0LCJ4IiwieSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiY2xpcEVkZ2UiLCJpZCIsImRlbGF5Iiwic2hvd1ZhbHVlcyIsInZhbHVlRm9ybWF0Iiwic3RhY2tlZCIsImJhckNvbG9yIiksVC5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChUKSxULm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oby50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvbSxvLmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0Om8ubGVmdCxUKTpvfSxULndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsVCk6dX0sVC5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ZSxUKTphfSxULmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihmKSxUKTpmfSxULnNob3dDb250cm9scz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1lLFQpOmx9LFQuc2hvd0xlZ2VuZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLFQpOmN9LFQudG9vbHRpcD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD1lLFQpOmR9LFQudG9vbHRpcHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSxUKTpwfSxULnRvb2x0aXBDb250ZW50PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPWUsVCk6ZH0sVC5zdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1lLFQpOmd9LFQuZGVmYXVsdFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWUsVCk6eX0sVC5ub0RhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9ZSxUKTpifSxULnRyYW5zaXRpb25EdXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz1lLFQpOlN9LFR9LGUubW9kZWxzLm11bHRpQ2hhcnQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB1PWQzLnNlbGVjdCh0aGlzKSxmPXRoaXM7Qy51cGRhdGU9ZnVuY3Rpb24oKXt1LnRyYW5zaXRpb24oKS5jYWxsKEMpfSxDLmNvbnRhaW5lcj10aGlzO3ZhciBrPShyfHxwYXJzZUludCh1LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS10LmxlZnQtdC5yaWdodCxMPShpfHxwYXJzZUludCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdC50b3AtdC5ib3R0b20sQT1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPT0ibGluZSImJmUueUF4aXM9PTF9KSxPPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9PSJsaW5lIiYmZS55QXhpcz09Mn0pLE09ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT09ImJhciImJmUueUF4aXM9PTF9KSxfPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9PSJiYXIiJiZlLnlBeGlzPT0yfSksRD1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPT0iYXJlYSImJmUueUF4aXM9PTF9KSxQPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9PSJhcmVhIiYmZS55QXhpcz09Mn0pLEg9ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUF4aXM9PTF9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OmUueCx5OmUueX19KX0pLEI9ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUF4aXM9PTJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OmUueCx5OmUueX19KX0pO2EuZG9tYWluKGQzLmV4dGVudChkMy5tZXJnZShILmNvbmNhdChCKSksZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yYW5nZShbMCxrXSk7dmFyIGo9dS5zZWxlY3RBbGwoImcud3JhcC5tdWx0aUNoYXJ0IikuZGF0YShbZV0pLEY9ai5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwid3JhcCBudmQzIG11bHRpQ2hhcnQiKS5hcHBlbmQoImciKTtGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwieCBheGlzIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInkxIGF4aXMiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwieTIgYXhpcyIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsaW5lczFXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxpbmVzMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYmFyczFXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImJhcnMyV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJzdGFjazFXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInN0YWNrMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGVnZW5kV3JhcCIpO3ZhciBJPWouc2VsZWN0KCJnIik7cyYmKHgud2lkdGgoay8yKSxJLnNlbGVjdCgiLmxlZ2VuZFdyYXAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5vcmlnaW5hbEtleT1lLm9yaWdpbmFsS2V5PT09dW5kZWZpbmVkP2Uua2V5OmUub3JpZ2luYWxLZXksZS5rZXk9ZS5vcmlnaW5hbEtleSsoZS55QXhpcz09MT8iIjoiIChyaWdodCBheGlzKSIpLGV9KSkuY2FsbCh4KSx0LnRvcCE9eC5oZWlnaHQoKSYmKHQudG9wPXguaGVpZ2h0KCksTD0oaXx8cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXQudG9wLXQuYm90dG9tKSxJLnNlbGVjdCgiLmxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitrLzIrIiwiKyAtdC50b3ArIikiKSksZC53aWR0aChrKS5oZWlnaHQoTCkuaW50ZXJwb2xhdGUoIm1vbm90b25lIikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPT0xJiZlW25dLnR5cGU9PSJsaW5lIn0pKSx2LndpZHRoKGspLmhlaWdodChMKS5pbnRlcnBvbGF0ZSgibW9ub3RvbmUiKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9PTImJmVbbl0udHlwZT09ImxpbmUifSkpLG0ud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz09MSYmZVtuXS50eXBlPT0iYmFyIn0pKSxnLndpZHRoKGspLmhlaWdodChMKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9PTImJmVbbl0udHlwZT09ImJhciJ9KSkseS53aWR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPT0xJiZlW25dLnR5cGU9PSJhcmVhIn0pKSxiLndpZHRoKGspLmhlaWdodChMKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9PTImJmVbbl0udHlwZT09ImFyZWEifSkpLEkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBxPUkuc2VsZWN0KCIubGluZXMxV3JhcCIpLmRhdHVtKEEpLFI9SS5zZWxlY3QoIi5iYXJzMVdyYXAiKS5kYXR1bShNKSxVPUkuc2VsZWN0KCIuc3RhY2sxV3JhcCIpLmRhdHVtKEQpLHo9SS5zZWxlY3QoIi5saW5lczJXcmFwIikuZGF0dW0oTyksVz1JLnNlbGVjdCgiLmJhcnMyV3JhcCIpLmRhdHVtKF8pLFg9SS5zZWxlY3QoIi5zdGFjazJXcmFwIikuZGF0dW0oUCksVj1ELmxlbmd0aD9ELm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSxuKXtyZXR1cm57eDplLngseTplLnkrdFtuXS55fX0pfSkuY29uY2F0KFt7eDowLHk6MH1dKTpbXSwkPVAubGVuZ3RoP1AubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcChmdW5jdGlvbihlLG4pe3JldHVybnt4OmUueCx5OmUueSt0W25dLnl9fSl9KS5jb25jYXQoW3t4OjAseTowfV0pOltdO2guZG9tYWluKGx8fGQzLmV4dGVudChkMy5tZXJnZShIKS5jb25jYXQoViksZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pKS5yYW5nZShbMCxMXSkscC5kb21haW4oY3x8ZDMuZXh0ZW50KGQzLm1lcmdlKEIpLmNvbmNhdCgkKSxmdW5jdGlvbihlKXtyZXR1cm4gZS55fSkpLnJhbmdlKFswLExdKSxkLnlEb21haW4oaC5kb21haW4oKSksbS55RG9tYWluKGguZG9tYWluKCkpLHkueURvbWFpbihoLmRvbWFpbigpKSx2LnlEb21haW4ocC5kb21haW4oKSksZy55RG9tYWluKHAuZG9tYWluKCkpLGIueURvbWFpbihwLmRvbWFpbigpKSxELmxlbmd0aCYmZDMudHJhbnNpdGlvbihVKS5jYWxsKHkpLFAubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFgpLmNhbGwoYiksTS5sZW5ndGgmJmQzLnRyYW5zaXRpb24oUikuY2FsbChtKSxfLmxlbmd0aCYmZDMudHJhbnNpdGlvbihXKS5jYWxsKGcpLEEubGVuZ3RoJiZkMy50cmFuc2l0aW9uKHEpLmNhbGwoZCksTy5sZW5ndGgmJmQzLnRyYW5zaXRpb24oeikuY2FsbCh2KSx3LnRpY2tzKGsvMTAwKS50aWNrU2l6ZSgtTCwwKSxJLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTCsiKSIpLGQzLnRyYW5zaXRpb24oSS5zZWxlY3QoIi54LmF4aXMiKSkuY2FsbCh3KSxFLnRpY2tzKEwvMzYpLnRpY2tTaXplKC1rLDApLGQzLnRyYW5zaXRpb24oSS5zZWxlY3QoIi55MS5heGlzIikpLmNhbGwoRSksUy50aWNrcyhMLzM2KS50aWNrU2l6ZSgtaywwKSxkMy50cmFuc2l0aW9uKEkuc2VsZWN0KCIueTIuYXhpcyIpKS5jYWxsKFMpLEkuc2VsZWN0KCIueTIuYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixCLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2EucmFuZ2UoKVsxXSsiLDApIikseC5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0MudXBkYXRlKCl9KSxULm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7byYmTihlLGYucGFyZW50Tm9kZSl9KX0pLEN9dmFyIHQ9e3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo2MH0sbj1kMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFuZ2UoKSxyPW51bGwsaT1udWxsLHM9ITAsbz0hMCx1PWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0sYSxmLGwsYyxhPWQzLnNjYWxlLmxpbmVhcigpLGg9ZDMuc2NhbGUubGluZWFyKCkscD1kMy5zY2FsZS5saW5lYXIoKSxkPWUubW9kZWxzLmxpbmUoKS55U2NhbGUoaCksdj1lLm1vZGVscy5saW5lKCkueVNjYWxlKHApLG09ZS5tb2RlbHMubXVsdGlCYXIoKS5zdGFja2VkKCExKS55U2NhbGUoaCksZz1lLm1vZGVscy5tdWx0aUJhcigpLnN0YWNrZWQoITEpLnlTY2FsZShwKSx5PWUubW9kZWxzLnN0YWNrZWRBcmVhKCkueVNjYWxlKGgpLGI9ZS5tb2RlbHMuc3RhY2tlZEFyZWEoKS55U2NhbGUocCksdz1lLm1vZGVscy5heGlzKCkuc2NhbGUoYSkub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxFPWUubW9kZWxzLmF4aXMoKS5zY2FsZShoKS5vcmllbnQoImxlZnQiKSxTPWUubW9kZWxzLmF4aXMoKS5zY2FsZShwKS5vcmllbnQoInJpZ2h0IikseD1lLm1vZGVscy5sZWdlbmQoKS5oZWlnaHQoMzApLFQ9ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiKSxOPWZ1bmN0aW9uKHQsbil7dmFyIHI9dC5wb3NbMF0rKG4ub2Zmc2V0TGVmdHx8MCksaT10LnBvc1sxXSsobi5vZmZzZXRUb3B8fDApLHM9dy50aWNrRm9ybWF0KCkoZC54KCkodC5wb2ludCx0LnBvaW50SW5kZXgpKSxvPSh0LnNlcmllcy55QXhpcz09Mj9TOkUpLnRpY2tGb3JtYXQoKShkLnkoKSh0LnBvaW50LHQucG9pbnRJbmRleCkpLGE9dSh0LnNlcmllcy5rZXkscyxvLHQsQyk7ZS50b29sdGlwLnNob3coW3IsaV0sYSx1bmRlZmluZWQsdW5kZWZpbmVkLG4ub2Zmc2V0UGFyZW50KX07cmV0dXJuIGQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLGQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxtLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPVtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSxtLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLGcuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLGcuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSkseS5kaXNwYXRjaC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2lmKCFNYXRoLnJvdW5kKHkueSgpKGUucG9pbnQpKjEwMCkpcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtkMy5zZWxlY3RBbGwoIi5wb2ludC5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LDApLCExO2UucG9zPVtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSx5LmRpc3BhdGNoLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLGIuZGlzcGF0Y2gub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtpZighTWF0aC5yb3VuZChiLnkoKShlLnBvaW50KSoxMDApKXJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZDMuc2VsZWN0QWxsKCIucG9pbnQuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIsITEpfSwwKSwhMTtlLnBvcz1bZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksYi5kaXNwYXRjaC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxkLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPVtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSxkLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksVC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7byYmZS50b29sdGlwLmNsZWFudXAoKX0pLEMuZGlzcGF0Y2g9VCxDLmxpbmVzMT1kLEMubGluZXMyPXYsQy5iYXJzMT1tLEMuYmFyczI9ZyxDLnN0YWNrMT15LEMuc3RhY2syPWIsQy54QXhpcz13LEMueUF4aXMxPUUsQy55QXhpczI9UyxDLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEMpLEMueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZ2V0WD1lLGQueChlKSxtLngoZSksQyk6Z2V0WH0sQy55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnZXRZPWUsZC55KGUpLG0ueShlKSxDKTpnZXRZfSxDLnlEb21haW4xPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsQyk6bH0sQy55RG9tYWluMj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLEMpOmN9LEMubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PWUsQyk6dH0sQy53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLEMpOnJ9LEMuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsQyk6aX0sQy5jb2xvcj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLHguY29sb3IoZSksQyk6bn0sQy5zaG93TGVnZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsQyk6c30sQy50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLEMpOm99LEMudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZSxDKTp1fSxDfSxlLm1vZGVscy5vaGxjQmFyPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgZz1uLXQubGVmdC10LnJpZ2h0LHg9ci10LnRvcC10LmJvdHRvbSxUPWQzLnNlbGVjdCh0aGlzKTtzLmRvbWFpbih5fHxkMy5leHRlbnQoZVswXS52YWx1ZXMubWFwKHUpLmNvbmNhdChwKSkpLHY/cy5yYW5nZSh3fHxbZyouNS9lWzBdLnZhbHVlcy5sZW5ndGgsZyooZVswXS52YWx1ZXMubGVuZ3RoLS41KS9lWzBdLnZhbHVlcy5sZW5ndGhdKTpzLnJhbmdlKHd8fFswLGddKSxvLmRvbWFpbihifHxbZDMubWluKGVbMF0udmFsdWVzLm1hcChoKS5jb25jYXQoZCkpLGQzLm1heChlWzBdLnZhbHVlcy5tYXAoYykuY29uY2F0KGQpKV0pLnJhbmdlKEV8fFt4LDBdKTtpZihzLmRvbWFpbigpWzBdPT09cy5kb21haW4oKVsxXXx8by5kb21haW4oKVswXT09PW8uZG9tYWluKClbMV0pc2luZ2xlUG9pbnQ9ITA7cy5kb21haW4oKVswXT09PXMuZG9tYWluKClbMV0mJihzLmRvbWFpbigpWzBdP3MuZG9tYWluKFtzLmRvbWFpbigpWzBdLXMuZG9tYWluKClbMF0qLjAxLHMuZG9tYWluKClbMV0rcy5kb21haW4oKVsxXSouMDFdKTpzLmRvbWFpbihbLTEsMV0pKSxvLmRvbWFpbigpWzBdPT09by5kb21haW4oKVsxXSYmKG8uZG9tYWluKClbMF0/by5kb21haW4oW28uZG9tYWluKClbMF0rby5kb21haW4oKVswXSouMDEsby5kb21haW4oKVsxXS1vLmRvbWFpbigpWzFdKi4wMV0pOm8uZG9tYWluKFstMSwxXSkpO3ZhciBOPWQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1vaGxjQmFyIikuZGF0YShbZVswXS52YWx1ZXNdKSxDPU4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1vaGxjQmFyIiksaz1DLmFwcGVuZCgiZGVmcyIpLEw9Qy5hcHBlbmQoImciKSxBPU4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXRpY2tzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksVC5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7Uy5jaGFydENsaWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6aX0pfSksay5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi1jaGFydC1jbGlwLXBhdGgtIitpKS5hcHBlbmQoInJlY3QiKSxOLnNlbGVjdCgiI252LWNoYXJ0LWNsaXAtcGF0aC0iK2krIiByZWN0IikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhlaWdodCIseCksQS5hdHRyKCJjbGlwLXBhdGgiLG0/InVybCgjbnYtY2hhcnQtY2xpcC1wYXRoLSIraSsiKSI6IiIpO3ZhciBPPU4uc2VsZWN0KCIubnYtdGlja3MiKS5zZWxlY3RBbGwoIi5udi10aWNrIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0pO08uZXhpdCgpLnJlbW92ZSgpO3ZhciBNPU8uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0LG4pe3JldHVybihmKGUsdCk+bChlLHQpPyJudi10aWNrIG5lZ2F0aXZlIjoibnYtdGljayBwb3NpdGl2ZSIpKyIgbnYtdGljay0iK24rIi0iK3R9KS5hdHRyKCJkIixmdW5jdGlvbih0LG4pe3ZhciByPWcvZVswXS52YWx1ZXMubGVuZ3RoKi45O3JldHVybiJtMCwwbDAsIisobyhmKHQsbikpLW8oYyh0LG4pKSkrImwiKyAtci8yKyIsMGwiK3IvMisiLDBsMCwiKyhvKGgodCxuKSktbyhmKHQsbikpKSsibDAsIisobyhsKHQsbikpLW8oaCh0LG4pKSkrImwiK3IvMisiLDBsIisgLXIvMisiLDB6In0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrcyh1KGUsdCkpKyIsIitvKGMoZSx0KSkrIikifSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSxTLmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50OnQsc2VyaWVzOmVbMF0scG9zOltzKHUodCxuKSksbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksUy5lbGVtZW50TW91c2VvdXQoe3BvaW50OnQsc2VyaWVzOmVbMF0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OjAsZTpkMy5ldmVudH0pfSkub24oImNsaWNrIixmdW5jdGlvbihlLHQpe1MuZWxlbWVudENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24oZSx0KXtTLmVsZW1lbnREYmxDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCkpLG8oYShlLHQpKV0sZTpkMy5ldmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KTtPLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQsbil7cmV0dXJuKGYoZSx0KT5sKGUsdCk/Im52LXRpY2sgbmVnYXRpdmUiOiJudi10aWNrIHBvc2l0aXZlIikrIiBudi10aWNrLSIrbisiLSIrdH0pLGQzLnRyYW5zaXRpb24oTykuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitzKHUoZSx0KSkrIiwiK28oYyhlLHQpKSsiKSJ9KS5hdHRyKCJkIixmdW5jdGlvbih0LG4pe3ZhciByPWcvZVswXS52YWx1ZXMubGVuZ3RoKi45O3JldHVybiJtMCwwbDAsIisobyhmKHQsbikpLW8oYyh0LG4pKSkrImwiKyAtci8yKyIsMGwiK3IvMisiLDBsMCwiKyhvKGgodCxuKSktbyhmKHQsbikpKSsibDAsIisobyhsKHQsbikpLW8oaCh0LG4pKSkrImwiK3IvMisiLDBsIisgLXIvMisiLDB6In0pfSkseH12YXIgdD17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49OTYwLHI9NTAwLGk9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz1kMy5zY2FsZS5saW5lYXIoKSxvPWQzLnNjYWxlLmxpbmVhcigpLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT1mdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9wZW59LGw9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xvc2V9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaGlnaH0saD1mdW5jdGlvbihlKXtyZXR1cm4gZS5sb3d9LHA9W10sZD1bXSx2PSExLG09ITAsZz1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLHksYix3LEUsUz1kMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXR1cm4geC5kaXNwYXRjaD1TLHgub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoeCkseC54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUseCk6dX0seC55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWUseCk6YX0seC5vcGVuPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUseCk6Zn0seC5jbG9zZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1lLHgpOmx9LHguaGlnaD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLHgpOmN9LHgubG93PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPWUseCk6aH0seC5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQseCk6dH0seC53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLHgpOm59LHguaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWUseCk6cn0seC54U2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ZSx4KTpzfSx4LnlTY2FsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLHgpOm99LHgueERvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1lLHgpOnl9LHgueURvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj1lLHgpOmJ9LHgueFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PWUseCk6d30seC55UmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9ZSx4KTpFfSx4LmZvcmNlWD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLHgpOnB9LHguZm9yY2VZPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPWUseCk6ZH0seC5wYWREYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PWUseCk6dn0seC5jbGlwRWRnZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1lLHgpOm19LHguY29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ZS51dGlscy5nZXRDb2xvcih0KSx4KTpnfSx4LmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUseCk6aX0seH0sZS5tb2RlbHMucGllPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEUoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiBQKGUpe3ZhciB0PShlLnN0YXJ0QW5nbGUrZS5lbmRBbmdsZSkqOTAvTWF0aC5QSS05MDtyZXR1cm4gdD45MD90LTE4MDp0fWZ1bmN0aW9uIEgoZSl7ZS5lbmRBbmdsZT1pc05hTihlLmVuZEFuZ2xlKT8wOmUuZW5kQW5nbGUsZS5zdGFydEFuZ2xlPWlzTmFOKGUuc3RhcnRBbmdsZSk/MDplLnN0YXJ0QW5nbGUsdnx8KGUuaW5uZXJSYWRpdXM9MCk7dmFyIHQ9ZDMuaW50ZXJwb2xhdGUodGhpcy5fY3VycmVudCxlKTtyZXR1cm4gdGhpcy5fY3VycmVudD10KDApLGZ1bmN0aW9uKAplKXtyZXR1cm4gTCh0KGUpKX19ZnVuY3Rpb24gQihlKXtlLmlubmVyUmFkaXVzPTA7dmFyIHQ9ZDMuaW50ZXJwb2xhdGUoe3N0YXJ0QW5nbGU6MCxlbmRBbmdsZTowfSxlKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIEwodChlKSl9fXZhciBvPW4tdC5sZWZ0LXQucmlnaHQsZj1yLXQudG9wLXQuYm90dG9tLEU9TWF0aC5taW4obyxmKS8yLFM9RS1FLzUseD1kMy5zZWxlY3QodGhpcyksVD14LnNlbGVjdEFsbCgiLm52LXdyYXAubnYtcGllIikuZGF0YShlKSxOPVQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1waWUgbnYtY2hhcnQtIit1KSxDPU4uYXBwZW5kKCJnIiksaz1ULnNlbGVjdCgiZyIpO0MuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1waWUiKSxULmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxrLnNlbGVjdCgiLm52LXBpZSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28vMisiLCIrZi8yKyIpIikseC5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7dy5jaGFydENsaWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6dX0pfSk7dmFyIEw9ZDMuc3ZnLmFyYygpLm91dGVyUmFkaXVzKFMpO2cmJkwuc3RhcnRBbmdsZShnKSx5JiZMLmVuZEFuZ2xlKHkpLHYmJkwuaW5uZXJSYWRpdXMoRSpiKTt2YXIgQT1kMy5sYXlvdXQucGllKCkuc29ydChudWxsKS52YWx1ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD8wOnMoZSl9KSxPPVQuc2VsZWN0KCIubnYtcGllIikuc2VsZWN0QWxsKCIubnYtc2xpY2UiKS5kYXRhKEEpO08uZXhpdCgpLnJlbW92ZSgpO3ZhciBNPU8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNsaWNlIikub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSx3LmVsZW1lbnRNb3VzZW92ZXIoe2xhYmVsOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLHBvaW50SW5kZXg6dCxwb3M6W2QzLmV2ZW50LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxpZDp1fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksdy5lbGVtZW50TW91c2VvdXQoe2xhYmVsOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLGluZGV4OnQsaWQ6dX0pfSkub24oImNsaWNrIixmdW5jdGlvbihlLHQpe3cuZWxlbWVudENsaWNrKHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZGF0YSxpbmRleDp0LHBvczpkMy5ldmVudCxpZDp1fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKGUsdCl7dy5lbGVtZW50RGJsQ2xpY2soe2xhYmVsOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pO08uYXR0cigiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpfSkuYXR0cigic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCl9KTt2YXIgXz1NLmFwcGVuZCgicGF0aCIpLmVhY2goZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudD1lfSk7ZDMudHJhbnNpdGlvbihPLnNlbGVjdCgicGF0aCIpKS5hdHRyKCJkIixMKS5hdHRyVHdlZW4oImQiLEgpO2lmKGwpe3ZhciBEPWQzLnN2Zy5hcmMoKS5pbm5lclJhZGl1cygwKTtjJiYoRD1MKSxoJiYoRD1kMy5zdmcuYXJjKCkub3V0ZXJSYWRpdXMoTC5vdXRlclJhZGl1cygpKSksTS5hcHBlbmQoImciKS5jbGFzc2VkKCJudi1sYWJlbCIsITApLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj1kMy5zZWxlY3QodGhpcyk7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe2lmKG0pe2Uub3V0ZXJSYWRpdXM9UysxMCxlLmlubmVyUmFkaXVzPVMrMTU7dmFyIHQ9KGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yKigxODAvTWF0aC5QSSk7cmV0dXJuKGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yPE1hdGguUEk/dC09OTA6dCs9OTAsInRyYW5zbGF0ZSgiK0QuY2VudHJvaWQoZSkrIikgcm90YXRlKCIrdCsiKSJ9cmV0dXJuIGUub3V0ZXJSYWRpdXM9RSsxMCxlLmlubmVyUmFkaXVzPUUrMTUsInRyYW5zbGF0ZSgiK0QuY2VudHJvaWQoZSkrIikifSksbi5hcHBlbmQoInJlY3QiKS5zdHlsZSgic3Ryb2tlIiwiI2ZmZiIpLnN0eWxlKCJmaWxsIiwiI2ZmZiIpLmF0dHIoInJ4IiwzKS5hdHRyKCJyeSIsMyksbi5hcHBlbmQoInRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLG0/KGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yPE1hdGguUEk/InN0YXJ0IjoiZW5kIjoibWlkZGxlIikuc3R5bGUoImZpbGwiLCIjMDAwIil9KSxPLnNlbGVjdCgiLm52LWxhYmVsIikudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7aWYobSl7ZS5vdXRlclJhZGl1cz1TKzEwLGUuaW5uZXJSYWRpdXM9UysxNTt2YXIgdD0oZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzIqKDE4MC9NYXRoLlBJKTtyZXR1cm4oZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzI8TWF0aC5QST90LT05MDp0Kz05MCwidHJhbnNsYXRlKCIrRC5jZW50cm9pZChlKSsiKSByb3RhdGUoIit0KyIpIn1yZXR1cm4gZS5vdXRlclJhZGl1cz1FKzEwLGUuaW5uZXJSYWRpdXM9RSsxNSwidHJhbnNsYXRlKCIrRC5jZW50cm9pZChlKSsiKSJ9KSxPLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj1kMy5zZWxlY3QodGhpcyk7bi5zZWxlY3QoIi5udi1sYWJlbCB0ZXh0Iikuc3R5bGUoInRleHQtYW5jaG9yIixtPyhlLnN0YXJ0QW5nbGUrZS5lbmRBbmdsZSkvMjxNYXRoLlBJPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0oZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUpLygyKk1hdGguUEkpLHI9e2tleTppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBlcmNlbnQ6ZDMuZm9ybWF0KCIlIikobil9O3JldHVybiBlLnZhbHVlJiZuPmQ/cltwXToiIn0pO3ZhciByPW4uc2VsZWN0KCJ0ZXh0Iikubm9kZSgpLmdldEJCb3goKTtuLnNlbGVjdCgiLm52LWxhYmVsIHJlY3QiKS5hdHRyKCJ3aWR0aCIsci53aWR0aCsxMCkuYXR0cigiaGVpZ2h0IixyLmhlaWdodCsxMCkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIitbci54LTUsci55LTVdKyIpIn0pfSl9fSksRX12YXIgdD17dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49NTAwLHI9NTAwLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0scz1mdW5jdGlvbihlKXtyZXR1cm4gZS55fSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLmRlc2NyaXB0aW9ufSx1PU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpLGE9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxmPWQzLmZvcm1hdCgiLC4yZiIpLGw9ITAsYz0hMCxoPSExLHA9ImtleSIsZD0uMDIsdj0hMSxtPSExLGc9ITEseT0hMSxiPS41LHc9ZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0Iik7cmV0dXJuIEUuZGlzcGF0Y2g9dyxFLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEUpLEUubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEUpOnR9LEUud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxFKTpufSxFLmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLEUpOnJ9LEUudmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBlLmxvZygicGllLnZhbHVlcygpIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIiksRX0sRS54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsRSk6aX0sRS55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWQzLmZ1bmN0b3IoZSksRSk6c30sRS5kZXNjcmlwdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1lLEUpOm99LEUuc2hvd0xhYmVscz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1lLEUpOmx9LEUubGFiZWxTdW5iZWFtTGF5b3V0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPWUsRSk6bX0sRS5kb251dExhYmVsc091dHNpZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSxFKTpofSxFLnBpZUxhYmVsc091dHNpZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ZSxFKTpjfSxFLmxhYmVsVHlwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLHA9cHx8ImtleSIsRSk6cH0sRS5kb251dD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1lLEUpOnZ9LEUuZG9udXRSYXRpbz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj1lLEUpOmJ9LEUuc3RhcnRBbmdsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1lLEUpOmd9LEUuZW5kQW5nbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9ZSxFKTp5fSxFLmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWUsRSk6dX0sRS5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLnV0aWxzLmdldENvbG9yKHQpLEUpOmF9LEUudmFsdWVGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSxFKTpmfSxFLmxhYmVsVGhyZXNob2xkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPWUsRSk6ZH0sRX0sZS5tb2RlbHMucGllQ2hhcnQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB1PWQzLnNlbGVjdCh0aGlzKSxhPXRoaXMsZj0oaXx8cGFyc2VJbnQodS5zdHlsZSgid2lkdGgiKSl8fDk2MCktci5sZWZ0LXIucmlnaHQsZD0oc3x8cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXIudG9wLXIuYm90dG9tO3YudXBkYXRlPWZ1bmN0aW9uKCl7dS50cmFuc2l0aW9uKCkuY2FsbCh2KX0sdi5jb250YWluZXI9dGhpcyxsLmRpc2FibGVkPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFjKXt2YXIgbTtjPXt9O2ZvcihtIGluIGwpbFttXWluc3RhbmNlb2YgQXJyYXk/Y1ttXT1sW21dLnNsaWNlKDApOmNbbV09bFttXX1pZighZXx8IWUubGVuZ3RoKXt2YXIgZz11LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW2hdKTtyZXR1cm4gZy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksZy5hdHRyKCJ4IixyLmxlZnQrZi8yKS5hdHRyKCJ5IixyLnRvcCtkLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx2fXUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIHk9dS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1waWVDaGFydCIpLmRhdGEoW2VdKSxiPXkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1waWVDaGFydCIpLmFwcGVuZCgiZyIpLHc9eS5zZWxlY3QoImciKTtiLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcGllV3JhcCIpLGIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksbyYmKG4ud2lkdGgoZikua2V5KHQueCgpKSx5LnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKG4pLHIudG9wIT1uLmhlaWdodCgpJiYoci50b3A9bi5oZWlnaHQoKSxkPShzfHxwYXJzZUludCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktci50b3Atci5ib3R0b20pLHkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1yLnRvcCsiKSIpKSx5LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3IubGVmdCsiLCIrci50b3ArIikiKSx0LndpZHRoKGYpLmhlaWdodChkKTt2YXIgRT13LnNlbGVjdCgiLm52LXBpZVdyYXAiKS5kYXR1bShbZV0pO2QzLnRyYW5zaXRpb24oRSkuY2FsbCh0KSxuLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7bD1lLHAuc3RhdGVDaGFuZ2UobCksdi51cGRhdGUoKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtwLnRvb2x0aXBIaWRlKGUpfSkscC5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0idW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9dC5kaXNhYmxlZFtuXX0pLGwuZGlzYWJsZWQ9dC5kaXNhYmxlZCksdi51cGRhdGUoKX0pfSksdn12YXIgdD1lLm1vZGVscy5waWUoKSxuPWUubW9kZWxzLmxlZ2VuZCgpLHI9e3RvcDozMCxyaWdodDoyMCxib3R0b206MjAsbGVmdDoyMH0saT1udWxsLHM9bnVsbCxvPSEwLHU9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxhPSEwLGY9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+Iit0KyI8L3A+In0sbD17fSxjPW51bGwsaD0iTm8gRGF0YSBBdmFpbGFibGUuIixwPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLGQ9ZnVuY3Rpb24obixyKXt2YXIgaT10LmRlc2NyaXB0aW9uKCkobi5wb2ludCl8fHQueCgpKG4ucG9pbnQpLHM9bi5wb3NbMF0rKHImJnIub2Zmc2V0TGVmdHx8MCksbz1uLnBvc1sxXSsociYmci5vZmZzZXRUb3B8fDApLHU9dC52YWx1ZUZvcm1hdCgpKHQueSgpKG4ucG9pbnQpKSxhPWYoaSx1LG4sdik7ZS50b29sdGlwLnNob3coW3Msb10sYSxuLnZhbHVlPDA/Im4iOiJzIixudWxsLHIpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rci5sZWZ0LGUucG9zWzFdK3IudG9wXSxwLnRvb2x0aXBTaG93KGUpfSkscC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2EmJmQoZSl9KSxwLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXthJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksdi5sZWdlbmQ9bix2LmRpc3BhdGNoPXAsdi5waWU9dCxkMy5yZWJpbmQodix0LCJ2YWx1ZUZvcm1hdCIsInZhbHVlcyIsIngiLCJ5IiwiZGVzY3JpcHRpb24iLCJpZCIsInNob3dMYWJlbHMiLCJkb251dExhYmVsc091dHNpZGUiLCJwaWVMYWJlbHNPdXRzaWRlIiwibGFiZWxUeXBlIiwiZG9udXQiLCJkb251dFJhdGlvIiwibGFiZWxUaHJlc2hvbGQiKSx2Lm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKHYpLHYubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyLnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnIudG9wLHIucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6ci5yaWdodCxyLmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnIuYm90dG9tLHIubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6ci5sZWZ0LHYpOnJ9LHYud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZSx2KTppfSx2LmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLHYpOnN9LHYuY29sb3I9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZS51dGlscy5nZXRDb2xvcihyKSxuLmNvbG9yKHUpLHQuY29sb3IodSksdik6dX0sdi5zaG93TGVnZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsdik6b30sdi50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLHYpOmF9LHYudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZSx2KTpmfSx2LnN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsdik6bH0sdi5kZWZhdWx0U3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ZSx2KTpjfSx2Lm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLHYpOmh9LHZ9LGUubW9kZWxzLnNjYXR0ZXI9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSShxKXtyZXR1cm4gcS5lYWNoKGZ1bmN0aW9uKEkpe2Z1bmN0aW9uIFEoKXtpZighZylyZXR1cm4hMTt2YXIgZSxpPWQzLm1lcmdlKEkubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLG4pe3ZhciByPWYoZSxuKSxpPWwoZSxuKTtyZXR1cm5bbyhyKStNYXRoLnJhbmRvbSgpKjFlLTcsdShpKStNYXRoLnJhbmRvbSgpKjFlLTcsdCxuLGVdfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGIoZVs0XSx0KX0pfSkpO2lmKEQ9PT0hMCl7aWYoeCl7dmFyIGE9WC5zZWxlY3QoImRlZnMiKS5zZWxlY3RBbGwoIi5udi1wb2ludC1jbGlwcyIpLmRhdGEoW3NdKS5lbnRlcigpO2EuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImNsYXNzIiwibnYtcG9pbnQtY2xpcHMiKS5hdHRyKCJpZCIsIm52LXBvaW50cy1jbGlwLSIrcyk7dmFyIGM9WC5zZWxlY3QoIiNudi1wb2ludHMtY2xpcC0iK3MpLnNlbGVjdEFsbCgiY2lyY2xlIikuZGF0YShpKTtjLmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJyIixUKSxjLmV4aXQoKS5yZW1vdmUoKSxjLmF0dHIoImN4IixmdW5jdGlvbihlKXtyZXR1cm4gZVswXX0pLmF0dHIoImN5IixmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pLFguc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI252LXBvaW50cy1jbGlwLSIrcysiKSIpfWkubGVuZ3RoJiYoaS5wdXNoKFtvLnJhbmdlKClbMF0tMjAsdS5yYW5nZSgpWzBdLTIwLG51bGwsbnVsbF0pLGkucHVzaChbby5yYW5nZSgpWzFdKzIwLHUucmFuZ2UoKVsxXSsyMCxudWxsLG51bGxdKSxpLnB1c2goW28ucmFuZ2UoKVswXS0yMCx1LnJhbmdlKClbMF0rMjAsbnVsbCxudWxsXSksaS5wdXNoKFtvLnJhbmdlKClbMV0rMjAsdS5yYW5nZSgpWzFdLTIwLG51bGwsbnVsbF0pKTt2YXIgaD1kMy5nZW9tLnBvbHlnb24oW1stMTAsLTEwXSxbLTEwLHIrMTBdLFtuKzEwLHIrMTBdLFtuKzEwLC0xMF1dKSxwPWQzLmdlb20udm9yb25vaShpKS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57ZGF0YTpoLmNsaXAoZSksc2VyaWVzOmlbdF1bMl0scG9pbnQ6aVt0XVszXX19KSxkPVguc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKHApO2QuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtcGF0aC0iK3R9KSxkLmV4aXQoKS5yZW1vdmUoKSxkLmF0dHIoImQiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmRhdGEubGVuZ3RoPT09MD8iTSAwIDAiOiJNIitlLmRhdGEuam9pbigiTCIpKyJaIn0pO3ZhciB2PWZ1bmN0aW9uKGUsbil7aWYoRilyZXR1cm4gMDt2YXIgcj1JW2Uuc2VyaWVzXTtpZih0eXBlb2Ygcj09InVuZGVmaW5lZCIpcmV0dXJuO3ZhciBpPXIudmFsdWVzW2UucG9pbnRdO24oe3BvaW50Omksc2VyaWVzOnIscG9zOltvKGYoaSxlLnBvaW50KSkrdC5sZWZ0LHUobChpLGUucG9pbnQpKSt0LnRvcF0sc2VyaWVzSW5kZXg6ZS5zZXJpZXMscG9pbnRJbmRleDplLnBvaW50fSl9O2Qub24oImNsaWNrIixmdW5jdGlvbihlKXt2KGUsXy5lbGVtZW50Q2xpY2spfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSl7dihlLF8uZWxlbWVudE1vdXNlb3Zlcil9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7dihlLF8uZWxlbWVudE1vdXNlb3V0KX0pfWVsc2UgWC5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RBbGwoIi5udi1ncm91cCIpLnNlbGVjdEFsbCgiLm52LXBvaW50Iikub24oImNsaWNrIixmdW5jdGlvbihlLG4pe2lmKEZ8fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgcj1JW2Uuc2VyaWVzXSxpPXIudmFsdWVzW25dO18uZWxlbWVudENsaWNrKHtwb2ludDppLHNlcmllczpyLHBvczpbbyhmKGksbikpK3QubGVmdCx1KGwoaSxuKSkrdC50b3BdLHNlcmllc0luZGV4OmUuc2VyaWVzLHBvaW50SW5kZXg6bn0pfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSxuKXtpZihGfHwhSVtlLnNlcmllc10pcmV0dXJuIDA7dmFyIHI9SVtlLnNlcmllc10saT1yLnZhbHVlc1tuXTtfLmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50Omksc2VyaWVzOnIscG9zOltvKGYoaSxuKSkrdC5sZWZ0LHUobChpLG4pKSt0LnRvcF0sc2VyaWVzSW5kZXg6ZS5zZXJpZXMscG9pbnRJbmRleDpufSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7aWYoRnx8IUlbZS5zZXJpZXNdKXJldHVybiAwO3ZhciBuPUlbZS5zZXJpZXNdLHI9bi52YWx1ZXNbdF07Xy5lbGVtZW50TW91c2VvdXQoe3BvaW50OnIsc2VyaWVzOm4sc2VyaWVzSW5kZXg6ZS5zZXJpZXMscG9pbnRJbmRleDp0fSl9KTtGPSExfXZhciBxPW4tdC5sZWZ0LXQucmlnaHQsUj1yLXQudG9wLXQuYm90dG9tLFU9ZDMuc2VsZWN0KHRoaXMpO0k9SS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS52YWx1ZXM9ZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlcmllcz10LGV9KSxlfSk7dmFyIFc9TiYmQyYmQT9bXTpkMy5tZXJnZShJLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6ZihlLHQpLHk6bChlLHQpLHNpemU6YyhlLHQpfX0pfSkpO28uZG9tYWluKE58fGQzLmV4dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkuY29uY2F0KGQpKSksdyYmSVswXT9vLnJhbmdlKGt8fFsocSpFK3EpLygyKklbMF0udmFsdWVzLmxlbmd0aCkscS1xKigxK0UpLygyKklbMF0udmFsdWVzLmxlbmd0aCldKTpvLnJhbmdlKGt8fFswLHFdKSx1LmRvbWFpbihDfHxkMy5leHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pLmNvbmNhdCh2KSkpLnJhbmdlKEx8fFtSLDBdKSxhLmRvbWFpbihBfHxkMy5leHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2l6ZX0pLmNvbmNhdChtKSkpLnJhbmdlKE98fFsxNiwyNTZdKTtpZihvLmRvbWFpbigpWzBdPT09by5kb21haW4oKVsxXXx8dS5kb21haW4oKVswXT09PXUuZG9tYWluKClbMV0pTT0hMDtvLmRvbWFpbigpWzBdPT09by5kb21haW4oKVsxXSYmKG8uZG9tYWluKClbMF0/by5kb21haW4oW28uZG9tYWluKClbMF0tby5kb21haW4oKVswXSouMDEsby5kb21haW4oKVsxXStvLmRvbWFpbigpWzFdKi4wMV0pOm8uZG9tYWluKFstMSwxXSkpLHUuZG9tYWluKClbMF09PT11LmRvbWFpbigpWzFdJiYodS5kb21haW4oKVswXT91LmRvbWFpbihbdS5kb21haW4oKVswXS11LmRvbWFpbigpWzBdKi4wMSx1LmRvbWFpbigpWzFdK3UuZG9tYWluKClbMV0qLjAxXSk6dS5kb21haW4oWy0xLDFdKSksaXNOYU4oby5kb21haW4oKVswXSkmJm8uZG9tYWluKFstMSwxXSksaXNOYU4odS5kb21haW4oKVswXSkmJnUuZG9tYWluKFstMSwxXSksUD1QfHxvLEg9SHx8dSxCPUJ8fGE7dmFyIFg9VS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zY2F0dGVyIikuZGF0YShbSV0pLFY9WC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNjYXR0ZXIgbnYtY2hhcnQtIitzKyhNPyIgbnYtc2luZ2xlLXBvaW50IjoiIikpLCQ9Vi5hcHBlbmQoImRlZnMiKSxKPVYuYXBwZW5kKCJnIiksSz1YLnNlbGVjdCgiZyIpO0ouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm91cHMiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcG9pbnQtcGF0aHMiKSxYLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSwkLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWVkZ2UtY2xpcC0iK3MpLmFwcGVuZCgicmVjdCIpLFguc2VsZWN0KCIjbnYtZWRnZS1jbGlwLSIrcysiIHJlY3QiKS5hdHRyKCJ3aWR0aCIscSkuYXR0cigiaGVpZ2h0IixSKSxLLmF0dHIoImNsaXAtcGF0aCIsUz8idXJsKCNudi1lZGdlLWNsaXAtIitzKyIpIjoiIiksRj0hMDt2YXIgRz1YLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSk7Ry5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksRy5leGl0KCkucmVtb3ZlKCksRy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLEcudHJhbnNpdGlvbigpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLC41KTtpZihwKXt2YXIgWT1HLnNlbGVjdEFsbCgiY2lyY2xlLm52LXBvaW50IikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9LHkpO1kuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcn0pLmF0dHIoImN4IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhQKGYodCxuKSkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKEgobCh0LG4pKSl9KS5hdHRyKCJyIixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLnNxcnQoYShjKGUsdCkpL01hdGguUEkpfSksWS5leGl0KCkucmVtb3ZlKCksRy5leGl0KCkuc2VsZWN0QWxsKCJwYXRoLm52LXBvaW50IikudHJhbnNpdGlvbigpLmF0dHIoImN4IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhvKGYodCxuKSkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKHUobCh0LG4pKSl9KS5yZW1vdmUoKSxZLmVhY2goZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgibnYtcG9pbnQiLCEwKS5jbGFzc2VkKCJudi1wb2ludC0iK3QsITApLmNsYXNzZWQoImhvdmVyIiwhMSl9KSxZLnRyYW5zaXRpb24oKS5hdHRyKCJjeCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8obyhmKHQsbikpKX0pLmF0dHIoImN5IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh1KGwodCxuKSkpfSkuYXR0cigiciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5zcXJ0KGEoYyhlLHQpKS9NYXRoLlBJKX0pfWVsc2V7dmFyIFk9Ry5zZWxlY3RBbGwoInBhdGgubnYtcG9pbnQiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO1kuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK1AoZihlLHQpKSsiLCIrSChsKGUsdCkpKyIpIn0pLmF0dHIoImQiLGQzLnN2Zy5zeW1ib2woKS50eXBlKGgpLnNpemUoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShjKGUsdCkpfSkpLFkuZXhpdCgpLnJlbW92ZSgpLEcuZXhpdCgpLnNlbGVjdEFsbCgicGF0aC5udi1wb2ludCIpLnRyYW5zaXRpb24oKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK28oZihlLHQpKSsiLCIrdShsKGUsdCkpKyIpIn0pLnJlbW92ZSgpLFkuZWFjaChmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJudi1wb2ludCIsITApLmNsYXNzZWQoIm52LXBvaW50LSIrdCwhMCkuY2xhc3NlZCgiaG92ZXIiLCExKX0pLFkudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrbyhmKGUsdCkpKyIsIit1KGwoZSx0KSkrIikifSkuYXR0cigiZCIsZDMuc3ZnLnN5bWJvbCgpLnR5cGUoaCkuc2l6ZShmdW5jdGlvbihlLHQpe3JldHVybiBhKGMoZSx0KSl9KSl9Y2xlYXJUaW1lb3V0KGopLGo9c2V0VGltZW91dChRLDMwMCksUD1vLmNvcHkoKSxIPXUuY29weSgpLEI9YS5jb3B5KCl9KSxJfXZhciB0PXt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj05NjAscj01MDAsaT1lLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNSksbz1kMy5zY2FsZS5saW5lYXIoKSx1PWQzLnNjYWxlLmxpbmVhcigpLGE9ZDMuc2NhbGUubGluZWFyKCksZj1mdW5jdGlvbihlKXtyZXR1cm4gZS54fSxsPWZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2l6ZXx8MX0saD1mdW5jdGlvbihlKXtyZXR1cm4gZS5zaGFwZXx8ImNpcmNsZSJ9LHA9ITAsZD1bXSx2PVtdLG09W10sZz0hMCx5PW51bGwsYj1mdW5jdGlvbihlKXtyZXR1cm4hZS5ub3RBY3RpdmV9LHc9ITEsRT0uMSxTPSExLHg9ITAsVD1mdW5jdGlvbigpe3JldHVybiAyNX0sTj1udWxsLEM9bnVsbCxrPW51bGwsTD1udWxsLEE9bnVsbCxPPW51bGwsTT0hMSxfPWQzLmRpc3BhdGNoKCJlbGVtZW50Q2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0IiksRD0hMCxQLEgsQixqLEY9ITE7cmV0dXJuIEkuY2xlYXJIaWdobGlnaHRzPWZ1bmN0aW9uKCl7ZDMuc2VsZWN0QWxsKCIubnYtY2hhcnQtIitzKyIgLm52LXBvaW50LmhvdmVyIikuY2xhc3NlZCgiaG92ZXIiLCExKX0sSS5oaWdobGlnaHRQb2ludD1mdW5jdGlvbihlLHQsbil7ZDMuc2VsZWN0KCIubnYtY2hhcnQtIitzKyIgLm52LXNlcmllcy0iK2UrIiAubnYtcG9pbnQtIit0KS5jbGFzc2VkKCJob3ZlciIsbil9LF8ub24oImVsZW1lbnRNb3VzZW92ZXIucG9pbnQiLGZ1bmN0aW9uKGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQoZS5zZXJpZXNJbmRleCxlLnBvaW50SW5kZXgsITApfSksXy5vbigiZWxlbWVudE1vdXNlb3V0LnBvaW50IixmdW5jdGlvbihlKXtnJiZJLmhpZ2hsaWdodFBvaW50KGUuc2VyaWVzSW5kZXgsZS5wb2ludEluZGV4LCExKX0pLEkuZGlzcGF0Y2g9XyxJLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEkpLEkueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1kMy5mdW5jdG9yKGUpLEkpOmZ9LEkueT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1kMy5mdW5jdG9yKGUpLEkpOmx9LEkuc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1kMy5mdW5jdG9yKGUpLEkpOmN9LEkubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEkpOnR9LEkud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ZSxJKTpufSxJLmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLEkpOnJ9LEkueFNjYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsSSk6b30sSS55U2NhbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZSxJKTp1fSxJLnpTY2FsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1lLEkpOmF9LEkueERvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj1lLEkpOk59LEkueURvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQz1lLEkpOkN9LEkuc2l6ZURvbWFpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT1lLEkpOkF9LEkueFJhbmdlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPWUsSSk6a30sSS55UmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEw9ZSxJKTpMfSxJLnNpemVSYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTz1lLEkpOk99LEkuZm9yY2VYPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPWUsSSk6ZH0sSS5mb3JjZVk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9ZSxJKTp2fSxJLmZvcmNlU2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT1lLEkpOm19LEkuaW50ZXJhY3RpdmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ZSxJKTpnfSxJLnBvaW50S2V5PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWUsSSk6eX0sSS5wb2ludEFjdGl2ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj1lLEkpOmJ9LEkucGFkRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz1lLEkpOnd9LEkucGFkRGF0YU91dGVyPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPWUsSSk6RX0sSS5jbGlwRWRnZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz1lLEkpOlN9LEkuY2xpcFZvcm9ub2k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9ZSxJKTp4fSxJLnVzZVZvcm9ub2k9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEQ9ZSxEPT09ITEmJih4PSExKSxJKTpEfSxJLmNsaXBSYWRpdXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9ZSxJKTpUfSxJLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUudXRpbHMuZ2V0Q29sb3IodCksSSk6aX0sSS5zaGFwZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLEkpOmh9LEkub25seUNpcmNsZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9ZSxJKTpwfSxJLmlkPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPWUsSSk6c30sSS5zaW5nbGVQb2ludD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT1lLEkpOk19LEl9LGUubW9kZWxzLnNjYXR0ZXJDaGFydD1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBGKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gSygpe2lmKFQpcmV0dXJuIFguc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKSwhMTtYLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO3ZhciBpPWQzLm1vdXNlKHRoaXMpO2guZGlzdG9ydGlvbih4KS5mb2N1cyhpWzBdKSxwLmRpc3RvcnRpb24oeCkuZm9jdXMoaVsxXSksWC5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmNhbGwodCksYiYmWC5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG4pLHcmJlguc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSxYLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblgiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pLFguc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodSl9dmFyIEM9ZDMuc2VsZWN0KHRoaXMpLGs9dGhpcyxMPShmfHxwYXJzZUludChDLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1hLmxlZnQtYS5yaWdodCxJPShsfHxwYXJzZUludChDLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b207Ri51cGRhdGU9ZnVuY3Rpb24oKXtDLnRyYW5zaXRpb24oKS5kdXJhdGlvbihEKS5jYWxsKEYpfSxGLmNvbnRhaW5lcj10aGlzLEEuZGlzYWJsZWQ9ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIU8pe3ZhciBxO089e307Zm9yKHEgaW4gQSlBW3FdaW5zdGFuY2VvZiBBcnJheT9PW3FdPUFbcV0uc2xpY2UoMCk6T1txXT1BW3FdfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgUj1DLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW19dKTtyZXR1cm4gUi5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksUi5hdHRyKCJ4IixhLmxlZnQrTC8yKS5hdHRyKCJ5IixhLnRvcCtJLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxGfUMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksUD1QfHxoLEg9SHx8cDt2YXIgVT1DLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXNjYXR0ZXJDaGFydCIpLmRhdGEoW2VdKSx6PVUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0LmlkKCkpLFc9ei5hcHBlbmQoImciKSxYPVUuc2VsZWN0KCJnIik7Vy5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtYmFja2dyb3VuZCIpLFcuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxXLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksVy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNjYXR0ZXJXcmFwIiksVy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RXcmFwIiksVy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxXLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIik7aWYoeSl7dmFyIFY9Uz9MLzI6TDtpLndpZHRoKFYpLFUuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksYS50b3AhPWkuaGVpZ2h0KCkmJihhLnRvcD1pLmhlaWdodCgpLEk9KGx8fHBhcnNlSW50KEMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRvbSksVS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKEwtVikrIiwiKyAtYS50b3ArIikiKX1TJiYocy53aWR0aCgxODApLmNvbG9yKFsiIzQ0NCJdKSxYLnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcCIpLmRhdHVtKGopLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1hLnRvcCsiKSIpLmNhbGwocykpLFUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS5sZWZ0KyIsIithLnRvcCsiKSIpLEUmJlguc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTCsiLDApIiksdC53aWR0aChMKS5oZWlnaHQoSSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksZCE9PTAmJnQueERvbWFpbihudWxsKSx2IT09MCYmdC55RG9tYWluKG51bGwpLFUuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpO2lmKGQhPT0wKXt2YXIgJD1oLmRvbWFpbigpWzFdLWguZG9tYWluKClbMF07dC54RG9tYWluKFtoLmRvbWFpbigpWzBdLWQqJCxoLmRvbWFpbigpWzFdK2QqJF0pfWlmKHYhPT0wKXt2YXIgSj1wLmRvbWFpbigpWzFdLXAuZG9tYWluKClbMF07dC55RG9tYWluKFtwLmRvbWFpbigpWzBdLXYqSixwLmRvbWFpbigpWzFdK3YqSl0pfSh2IT09MHx8ZCE9PTApJiZVLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KSxiJiYobi5zY2FsZShoKS50aWNrcyhuLnRpY2tzKCkmJm4udGlja3MoKS5sZW5ndGg/bi50aWNrcygpOkwvMTAwKS50aWNrU2l6ZSgtSSwwKSxYLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuY2FsbChuKSksdyYmKHIuc2NhbGUocCkudGlja3Moci50aWNrcygpJiZyLnRpY2tzKCkubGVuZ3RoP3IudGlja3MoKTpJLzM2KS50aWNrU2l6ZSgtTCwwKSxYLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLG0mJihvLmdldERhdGEodC54KCkpLnNjYWxlKGgpLndpZHRoKEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLFcuc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblgiKSxYLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwobykpLGcmJih1LmdldERhdGEodC55KCkpLnNjYWxlKHApLndpZHRoKEkpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLFcuc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblkiKSxYLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoRT9MOi11LnNpemUoKSkrIiwwKSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodSkpLGQzLmZpc2hleWUmJihYLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5hdHRyKCJ3aWR0aCIsTCkuYXR0cigiaGVpZ2h0IixJKSxYLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbigibW91c2Vtb3ZlIixLKSxYLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7VD0hVH0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljay5mcmVlemVGaXNoZXllIixmdW5jdGlvbigpe1Q9IVR9KSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsaSl7ZS5kaXNhYmxlZD0hZS5kaXNhYmxlZCx4PWUuZGlzYWJsZWQ/MDoyLjUsWC5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIixlLmRpc2FibGVkPyJub25lIjoiYWxsIiksWC5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsZS5kaXNhYmxlZD8iYWxsIjoibm9uZSIpLGUuZGlzYWJsZWQ/KGguZGlzdG9ydGlvbih4KS5mb2N1cygwKSxwLmRpc3RvcnRpb24oeCkuZm9jdXMoMCksWC5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmNhbGwodCksWC5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG4pLFguc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSk6VD0hMSxGLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0EuZGlzYWJsZWQ9ZS5kaXNhYmxlZCxNLnN0YXRlQ2hhbmdlKEEpLEYudXBkYXRlKCl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgtIitlLnBvaW50SW5kZXgpLmF0dHIoInkxIixmdW5jdGlvbih0LG4pe3JldHVybiBlLnBvc1sxXS1JfSksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLGUucG9zWzBdK28uc2l6ZSgpKSxlLnBvcz1bZS5wb3NbMF0rYS5sZWZ0LGUucG9zWzFdK2EudG9wXSxNLnRvb2x0aXBTaG93KGUpfSksTS5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe04mJkIoZSxrLnBhcmVudE5vZGUpfSksTS5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0idW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9dC5kaXNhYmxlZFtuXX0pLEEuZGlzYWJsZWQ9dC5kaXNhYmxlZCksRi51cGRhdGUoKX0pLFA9aC5jb3B5KCksSD1wLmNvcHkoKX0pLEZ9dmFyIHQ9ZS5tb2RlbHMuc2NhdHRlcigpLG49ZS5tb2RlbHMuYXhpcygpLHI9ZS5tb2RlbHMuYXhpcygpLGk9ZS5tb2RlbHMubGVnZW5kKCkscz1lLm1vZGVscy5sZWdlbmQoKSxvPWUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLHU9ZS5tb2RlbHMuZGlzdHJpYnV0aW9uKCksYT17dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0Ojc1fSxmPW51bGwsbD1udWxsLGM9ZS51dGlscy5kZWZhdWx0Q29sb3IoKSxoPWQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24oMCk6dC54U2NhbGUoKSxwPWQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24oMCk6dC55U2NhbGUoKSxkPTAsdj0wLG09ITEsZz0hMSx5PSEwLGI9ITAsdz0hMCxFPSExLFM9ISFkMy5maXNoZXllLHg9MCxUPSExLE49ITAsQz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIjxzdHJvbmc+Iit0KyI8L3N0cm9uZz4ifSxrPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK24rIjwvc3Ryb25nPiJ9LEw9bnVsbCxBPXt9LE89bnVsbCxNPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLF89Ik5vIERhdGEgQXZhaWxhYmxlLiIsRD0yNTA7dC54U2NhbGUoaCkueVNjYWxlKHApLG4ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZygxMCksci5vcmllbnQoRT8icmlnaHQiOiJsZWZ0IikudGlja1BhZGRpbmcoMTApLG8uYXhpcygieCIpLHUuYXhpcygieSIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBQLEgsQj1mdW5jdGlvbihpLHMpe3ZhciBvPWkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9aS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxmPWkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLGw9cC5yYW5nZSgpWzBdK2EudG9wKyhzLm9mZnNldFRvcHx8MCksYz1oLnJhbmdlKClbMF0rYS5sZWZ0KyhzLm9mZnNldExlZnR8fDApLGQ9aS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSx2PW4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbT1yLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpO0MhPW51bGwmJmUudG9vbHRpcC5zaG93KFtmLGxdLEMoaS5zZXJpZXMua2V5LHYsbSxpLEYpLCJuIiwxLHMsIngtbnZ0b29sdGlwIiksayE9bnVsbCYmZS50b29sdGlwLnNob3coW2MsZF0sayhpLnNlcmllcy5rZXksdixtLGksRiksImUiLDEscywieS1udnRvb2x0aXAiKSxMIT1udWxsJiZlLnRvb2x0aXAuc2hvdyhbbyx1XSxMKGkuc2VyaWVzLmtleSx2LG0saSxGKSxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfSxqPVt7a2V5OiJNYWduaWZ5IixkaXNhYmxlZDohMH1dO3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7TS50b29sdGlwSGlkZShlKSxkMy5zZWxlY3QoIi5udi1jaGFydC0iK3QuaWQoKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsMCksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLHUuc2l6ZSgpKX0pLE0ub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe04mJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxGLmRpc3BhdGNoPU0sRi5zY2F0dGVyPXQsRi5sZWdlbmQ9aSxGLmNvbnRyb2xzPXMsRi54QXhpcz1uLEYueUF4aXM9cixGLmRpc3RYPW8sRi5kaXN0WT11LGQzLnJlYmluZChGLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJwb2ludEFjdGl2ZSIsIngiLCJ5Iiwic2hhcGUiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwic2l6ZVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiY2xpcFZvcm9ub2kiLCJjbGlwUmFkaXVzIiwidXNlVm9yb25vaSIpLEYub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoRiksRi5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6YS50b3AsYS5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDphLnJpZ2h0LGEuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206YS5ib3R0b20sYS5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDphLmxlZnQsRik6YX0sRi53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLEYpOmZ9LEYuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsRik6bH0sRi5jb2xvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoYyksby5jb2xvcihjKSx1LmNvbG9yKGMpLEYpOmN9LEYuc2hvd0Rpc3RYPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPWUsRik6bX0sRi5zaG93RGlzdFk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ZSxGKTpnfSxGLnNob3dDb250cm9scz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz1lLEYpOlN9LEYuc2hvd0xlZ2VuZD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1lLEYpOnl9LEYuc2hvd1hBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsRik6Yn0sRi5zaG93WUF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9ZSxGKTp3fSxGLnJpZ2h0QWxpZ25ZQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1lLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLEYpOkV9LEYuZmlzaGV5ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD1lLEYpOnh9LEYueFBhZGRpbmc9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSxGKTpkfSxGLnlQYWRkaW5nPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PWUsRik6dn0sRi50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj1lLEYpOk59LEYudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEw9ZSxGKTpMfSxGLnRvb2x0aXBYQ29udGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQz1lLEYpOkN9LEYudG9vbHRpcFlDb250ZW50PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPWUsRik6a30sRi5zdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT1lLEYpOkF9LEYuZGVmYXVsdFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhPPWUsRik6T30sRi5ub0RhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89ZSxGKTpffSxGLnRyYW5zaXRpb25EdXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRD1lLEYpOkR9LEZ9LGUubW9kZWxzLnNjYXR0ZXJQbHVzTGluZUNoYXJ0PWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIEIoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiAkKCl7aWYoUylyZXR1cm4gei5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLCExO3ouc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIik7dmFyIGk9ZDMubW91c2UodGhpcyk7aC5kaXN0b3J0aW9uKEUpLmZvY3VzKGlbMF0pLHAuZGlzdG9ydGlvbihFKS5mb2N1cyhpWzFdKSx6LnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KSxnJiZ6LnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobikseSYmei5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpLHouc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwobyksei5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25ZIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KX12YXIgVD1kMy5zZWxlY3QodGhpcyksTj10aGlzLEM9KGZ8fHBhcnNlSW50KFQuc3R5bGUoIndpZHRoIikpfHw5NjApLWEubGVmdC1hLnJpZ2h0LGo9KGx8fHBhcnNlSW50KFQuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRvbTtCLnVwZGF0ZT1mdW5jdGlvbigpe1QudHJhbnNpdGlvbigpLmR1cmF0aW9uKE0pLmNhbGwoQil9LEIuY29udGFpbmVyPXRoaXMsay5kaXNhYmxlZD1lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighTCl7dmFyIEY7TD17fTtmb3IoRiBpbiBrKWtbRl1pbnN0YW5jZW9mIEFycmF5P0xbRl09a1tGXS5zbGljZSgwKTpMW0ZdPWtbRl19aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBJPVQuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbT10pO3JldHVybiBJLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxJLmF0dHIoIngiLGEubGVmdCtDLzIpLmF0dHIoInkiLGEudG9wK2ovMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLEJ9VC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxoPXQueFNjYWxlKCkscD10LnlTY2FsZSgpLF89X3x8aCxEPUR8fHA7dmFyIHE9VC5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zY2F0dGVyQ2hhcnQiKS5kYXRhKFtlXSksUj1xLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc2NhdHRlckNoYXJ0IG52LWNoYXJ0LSIrdC5pZCgpKSxVPVIuYXBwZW5kKCJnIiksej1xLnNlbGVjdCgiZyIpO1UuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LWJhY2tncm91bmQiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksVS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLFUuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxVLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2NhdHRlcldyYXAiKSxVLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcmVncmVzc2lvbkxpbmVzV3JhcCIpLFUuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1kaXN0V3JhcCIpLFUuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksVS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLHEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS5sZWZ0KyIsIithLnRvcCsiKSIpLGImJnouc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrQysiLDApIiksbSYmKGkud2lkdGgoQy8yKSxxLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKGkpLGEudG9wIT1pLmhlaWdodCgpJiYoYS50b3A9aS5oZWlnaHQoKSxqPShsfHxwYXJzZUludChULnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b20pLHEuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0MvMisiLCIrIC1hLnRvcCsiKSIpKSx3JiYocy53aWR0aCgxODApLmNvbG9yKFsiIzQ0NCJdKSx6LnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcCIpLmRhdHVtKEgpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1hLnRvcCsiKSIpLmNhbGwocykpLHQud2lkdGgoQykuaGVpZ2h0KGopLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLHEuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLHEuc2VsZWN0KCIubnYtcmVncmVzc2lvbkxpbmVzV3JhcCIpLmF0dHIoImNsaXAtcGF0aCIsInVybCgjbnYtZWRnZS1jbGlwLSIrdC5pZCgpKyIpIik7dmFyIFc9cS5zZWxlY3QoIi5udi1yZWdyZXNzaW9uTGluZXNXcmFwIikuc2VsZWN0QWxsKCIubnYtcmVnTGluZXMiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7Vy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcmVnTGluZXMiKTt2YXIgWD1XLnNlbGVjdEFsbCgiLm52LXJlZ0xpbmUiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pLFY9WC5lbnRlcigpLmFwcGVuZCgibGluZSIpLmF0dHIoImNsYXNzIiwibnYtcmVnTGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCk7WC50cmFuc2l0aW9uKCkuYXR0cigieDEiLGgucmFuZ2UoKVswXSkuYXR0cigieDIiLGgucmFuZ2UoKVsxXSkuYXR0cigieTEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoaC5kb21haW4oKVswXSplLnNsb3BlK2UuaW50ZXJjZXB0KX0pLmF0dHIoInkyIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGguZG9tYWluKClbMV0qZS5zbG9wZStlLmludGVyY2VwdCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGMoZSxuKX0pLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kaXNhYmxlZHx8dHlwZW9mIGUuc2xvcGU9PSJ1bmRlZmluZWQifHx0eXBlb2YgZS5pbnRlcmNlcHQ9PSJ1bmRlZmluZWQiPzA6MX0pLGcmJihuLnNjYWxlKGgpLnRpY2tzKG4udGlja3MoKT9uLnRpY2tzKCk6Qy8xMDApLnRpY2tTaXplKC1qLDApLHouc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5jYWxsKG4pKSx5JiYoci5zY2FsZShwKS50aWNrcyhyLnRpY2tzKCk/ci50aWNrcygpOmovMzYpLnRpY2tTaXplKC1DLDApLHouc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksZCYmKG8uZ2V0RGF0YSh0LngoKSkuc2NhbGUoaCkud2lkdGgoQykuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksVS5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdHJpYnV0aW9uWCIpLHouc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChvKSksdiYmKHUuZ2V0RGF0YSh0LnkoKSkuc2NhbGUocCkud2lkdGgoaikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksVS5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdHJpYnV0aW9uWSIpLHouc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhiP0M6LXUuc2l6ZSgpKSsiLDApIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KSksZDMuZmlzaGV5ZSYmKHouc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLmF0dHIoIndpZHRoIixDKS5hdHRyKCJoZWlnaHQiLGopLHouc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uKCJtb3VzZW1vdmUiLCQpLHouc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtTPSFTfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudENsaWNrLmZyZWV6ZUZpc2hleWUiLGZ1bmN0aW9uKCl7Uz0hU30pKSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxpKXtlLmRpc2FibGVkPSFlLmRpc2FibGVkLEU9ZS5kaXNhYmxlZD8wOjIuNSx6LnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZWQ/Im5vbmUiOiJhbGwiKSx6LnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIixlLmRpc2FibGVkPyJhbGwiOiJub25lIiksZS5kaXNhYmxlZD8oaC5kaXN0b3J0aW9uKEUpLmZvY3VzKDApLHAuZGlzdG9ydGlvbihFKS5mb2N1cygwKSx6LnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSx6LnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksei5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKTpTPSExLEIudXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7az1lLEEuc3RhdGVDaGFuZ2UoayksQi51cGRhdGUoKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLGUucG9zWzFdLWopLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHktIitlLnBvaW50SW5kZXgpLmF0dHIoIngyIixlLnBvc1swXStvLnNpemUoKSksZS5wb3M9W2UucG9zWzBdK2EubGVmdCxlLnBvc1sxXSthLnRvcF0sQS50b29sdGlwU2hvdyhlKX0pLEEub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXt4JiZQKGUsTi5wYXJlbnROb2RlKX0pLEEub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbih0KXt0eXBlb2YgdC5kaXNhYmxlZCE9InVuZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtlLmRpc2FibGVkPXQuZGlzYWJsZWRbbl19KSxrLmRpc2FibGVkPXQuZGlzYWJsZWQpLEIudXBkYXRlKCl9KSxfPWguY29weSgpLEQ9cC5jb3B5KCl9KSxCfXZhciB0PWUubW9kZWxzLnNjYXR0ZXIoKSxuPWUubW9kZWxzLmF4aXMoKSxyPWUubW9kZWxzLmF4aXMoKSxpPWUubW9kZWxzLmxlZ2VuZCgpLHM9ZS5tb2RlbHMubGVnZW5kKCksbz1lLm1vZGVscy5kaXN0cmlidXRpb24oKSx1PWUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLGE9e3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo3NX0sZj1udWxsLGw9bnVsbCxjPWUudXRpbHMuZGVmYXVsdENvbG9yKCksaD1kMy5maXNoZXllP2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueFNjYWxlKCkscD1kMy5maXNoZXllP2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueVNjYWxlKCksZD0hMSx2PSExLG09ITAsZz0hMCx5PSEwLGI9ITEsdz0hIWQzLmZpc2hleWUsRT0wLFM9ITEseD0hMCxUPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiJ9LE49ZnVuY3Rpb24oZSx0LG4pe3JldHVybiI8c3Ryb25nPiIrbisiPC9zdHJvbmc+In0sQz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK3IrIjwvcD4ifSxrPXt9LEw9bnVsbCxBPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIKKSxPPSJObyBEYXRhIEF2YWlsYWJsZS4iLE09MjUwO3QueFNjYWxlKGgpLnlTY2FsZShwKSxuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoMTApLHIub3JpZW50KGI/InJpZ2h0IjoibGVmdCIpLnRpY2tQYWRkaW5nKDEwKSxvLmF4aXMoIngiKSx1LmF4aXMoInkiKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgXyxELFA9ZnVuY3Rpb24oaSxzKXt2YXIgbz1pLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PWkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksZj1pLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSxsPXAucmFuZ2UoKVswXSthLnRvcCsocy5vZmZzZXRUb3B8fDApLGM9aC5yYW5nZSgpWzBdK2EubGVmdCsocy5vZmZzZXRMZWZ0fHwwKSxkPWkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksdj1uLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLG09ci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKTtUIT1udWxsJiZlLnRvb2x0aXAuc2hvdyhbZixsXSxUKGkuc2VyaWVzLmtleSx2LG0saSxCKSwibiIsMSxzLCJ4LW52dG9vbHRpcCIpLE4hPW51bGwmJmUudG9vbHRpcC5zaG93KFtjLGRdLE4oaS5zZXJpZXMua2V5LHYsbSxpLEIpLCJlIiwxLHMsInktbnZ0b29sdGlwIiksQyE9bnVsbCYmZS50b29sdGlwLnNob3coW28sdV0sQyhpLnNlcmllcy5rZXksdixtLGkucG9pbnQudG9vbHRpcCxpLEIpLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyl9LEg9W3trZXk6Ik1hZ25pZnkiLGRpc2FibGVkOiEwfV07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtBLnRvb2x0aXBIaWRlKGUpLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgtIitlLnBvaW50SW5kZXgpLmF0dHIoInkxIiwwKSxkMy5zZWxlY3QoIi5udi1jaGFydC0iK3QuaWQoKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ4MiIsdS5zaXplKCkpfSksQS5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7eCYmZS50b29sdGlwLmNsZWFudXAoKX0pLEIuZGlzcGF0Y2g9QSxCLnNjYXR0ZXI9dCxCLmxlZ2VuZD1pLEIuY29udHJvbHM9cyxCLnhBeGlzPW4sQi55QXhpcz1yLEIuZGlzdFg9byxCLmRpc3RZPXUsZDMucmViaW5kKEIsdCwiaWQiLCJpbnRlcmFjdGl2ZSIsInBvaW50QWN0aXZlIiwieCIsInkiLCJzaGFwZSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ6U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJzaXplUmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25vaSIsImNsaXBSYWRpdXMiLCJ1c2VWb3Jvbm9pIiksQi5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChCKSxCLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDphLnRvcCxhLnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0OmEucmlnaHQsYS5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0OmEubGVmdCxCKTphfSxCLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPWUsQik6Zn0sQi5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSxCKTpsfSxCLmNvbG9yPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihjKSxvLmNvbG9yKGMpLHUuY29sb3IoYyksQik6Y30sQi5zaG93RGlzdFg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSxCKTpkfSxCLnNob3dEaXN0WT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj1lLEIpOnZ9LEIuc2hvd0NvbnRyb2xzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PWUsQik6d30sQi5zaG93TGVnZW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPWUsQik6bX0sQi5zaG93WEF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9ZSxCKTpnfSxCLnNob3dZQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT1lLEIpOnl9LEIucmlnaHRBbGlnbllBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPWUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksQik6Yn0sQi5maXNoZXllPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPWUsQik6RX0sQi50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD1lLEIpOnh9LEIudG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9ZSxCKTpDfSxCLnRvb2x0aXBYQ29udGVudD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD1lLEIpOlR9LEIudG9vbHRpcFlDb250ZW50PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPWUsQik6Tn0sQi5zdGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz1lLEIpOmt9LEIuZGVmYXVsdFN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPWUsQik6TH0sQi5ub0RhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89ZSxCKTpPfSxCLnRyYW5zaXRpb25EdXJhdGlvbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT1lLEIpOk19LEJ9LGUubW9kZWxzLnNwYXJrbGluZT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9bi10LmxlZnQtdC5yaWdodCxkPXItdC50b3AtdC5ib3R0b20sdj1kMy5zZWxlY3QodGhpcyk7cy5kb21haW4obHx8ZDMuZXh0ZW50KGUsdSkpLnJhbmdlKGh8fFswLGldKSxvLmRvbWFpbihjfHxkMy5leHRlbnQoZSxhKSkucmFuZ2UocHx8W2QsMF0pO3ZhciBtPXYuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc3BhcmtsaW5lIikuZGF0YShbZV0pLGc9bS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNwYXJrbGluZSIpLGI9Zy5hcHBlbmQoImciKSx3PW0uc2VsZWN0KCJnIik7bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIEU9bS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pO0UuZW50ZXIoKS5hcHBlbmQoInBhdGgiKSxFLmV4aXQoKS5yZW1vdmUoKSxFLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGYoZSx0KX0pLmF0dHIoImQiLGQzLnN2Zy5saW5lKCkueChmdW5jdGlvbihlLHQpe3JldHVybiBzKHUoZSx0KSl9KS55KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oYShlLHQpKX0pKTt2YXIgUz1tLnNlbGVjdEFsbCgiY2lyY2xlLm52LXBvaW50IikuZGF0YShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQpe2lmKHQhPS0xKXt2YXIgbj1lW3RdO3JldHVybiBuLnBvaW50SW5kZXg9dCxufXJldHVybiBudWxsfXZhciB0PWUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pLHI9bih0Lmxhc3RJbmRleE9mKG8uZG9tYWluKClbMV0pKSxpPW4odC5pbmRleE9mKG8uZG9tYWluKClbMF0pKSxzPW4odC5sZW5ndGgtMSk7cmV0dXJuW2kscixzXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPW51bGx9KX0pO1MuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLFMuZXhpdCgpLnJlbW92ZSgpLFMuYXR0cigiY3giLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHModShlLGUucG9pbnRJbmRleCkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oYShlLGUucG9pbnRJbmRleCkpfSkuYXR0cigiciIsMikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoZSxlLnBvaW50SW5kZXgpPT1zLmRvbWFpbigpWzFdPyJudi1wb2ludCBudi1jdXJyZW50VmFsdWUiOmEoZSxlLnBvaW50SW5kZXgpPT1vLmRvbWFpbigpWzBdPyJudi1wb2ludCBudi1taW5WYWx1ZSI6Im52LXBvaW50IG52LW1heFZhbHVlIn0pfSksZH12YXIgdD17dG9wOjIscmlnaHQ6MCxib3R0b206MixsZWZ0OjB9LG49NDAwLHI9MzIsaT0hMCxzPWQzLnNjYWxlLmxpbmVhcigpLG89ZDMuc2NhbGUubGluZWFyKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGY9ZS51dGlscy5nZXRDb2xvcihbIiMwMDAiXSksbCxjLGgscDtyZXR1cm4gZC5vcHRpb25zPWUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChkKSxkLm1hcmdpbj1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9dHlwZW9mIGUudG9wIT0idW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PXR5cGVvZiBlLnJpZ2h0IT0idW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209dHlwZW9mIGUuYm90dG9tIT0idW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9dHlwZW9mIGUubGVmdCE9InVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxkKTp0fSxkLndpZHRoPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWUsZCk6bn0sZC5oZWlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ZSxkKTpyfSxkLng9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9ZDMuZnVuY3RvcihlKSxkKTp1fSxkLnk9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ZDMuZnVuY3RvcihlKSxkKTphfSxkLnhTY2FsZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1lLGQpOnN9LGQueVNjYWxlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWUsZCk6b30sZC54RG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWUsZCk6bH0sZC55RG9tYWluPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPWUsZCk6Y30sZC54UmFuZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSxkKTpofSxkLnlSYW5nZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLGQpOnB9LGQuYW5pbWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1lLGQpOml9LGQuY29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ZS51dGlscy5nZXRDb2xvcih0KSxkKTpmfSxkfSxlLm1vZGVscy5zcGFya2xpbmVQbHVzPWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihjKXtmdW5jdGlvbiBPKCl7aWYoYSlyZXR1cm47dmFyIGU9Qy5zZWxlY3RBbGwoIi5udi1ob3ZlclZhbHVlIikuZGF0YSh1KSxyPWUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWhvdmVyVmFsdWUiKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDApLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDApO2UuZXhpdCgpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigyNTApLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMCkucmVtb3ZlKCksZS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitzKHQueCgpKGNbZV0sZSkpKyIsMCkifSkudHJhbnNpdGlvbigpLmR1cmF0aW9uKDI1MCkuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxKTtpZighdS5sZW5ndGgpcmV0dXJuO3IuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoInkxIiwtbi50b3ApLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsYiksci5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LXhWYWx1ZSIpLmF0dHIoIngiLC02KS5hdHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikuYXR0cigiZHkiLCIuOWVtIiksQy5zZWxlY3QoIi5udi1ob3ZlclZhbHVlIC5udi14VmFsdWUiKS50ZXh0KGYodC54KCkoY1t1WzBdXSx1WzBdKSkpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi15VmFsdWUiKS5hdHRyKCJ4Iiw2KS5hdHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5hdHRyKCJkeSIsIi45ZW0iKSxDLnNlbGVjdCgiLm52LWhvdmVyVmFsdWUgLm52LXlWYWx1ZSIpLnRleHQobCh0LnkoKShjW3VbMF1dLHVbMF0pKSl9ZnVuY3Rpb24gTSgpe2Z1bmN0aW9uIHIoZSxuKXt2YXIgcj1NYXRoLmFicyh0LngoKShlWzBdLDApLW4pLGk9MDtmb3IodmFyIHM9MDtzPGUubGVuZ3RoO3MrKylNYXRoLmFicyh0LngoKShlW3NdLHMpLW4pPHImJihyPU1hdGguYWJzKHQueCgpKGVbc10scyktbiksaT1zKTtyZXR1cm4gaX1pZihhKXJldHVybjt2YXIgZT1kMy5tb3VzZSh0aGlzKVswXS1uLmxlZnQ7dT1bcihjLE1hdGgucm91bmQocy5pbnZlcnQoZSkpKV0sTygpfXZhciBtPWQzLnNlbGVjdCh0aGlzKSxnPShyfHxwYXJzZUludChtLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1uLmxlZnQtbi5yaWdodCxiPShpfHxwYXJzZUludChtLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktbi50b3Atbi5ib3R0b207di51cGRhdGU9ZnVuY3Rpb24oKXt2KGUpfSx2LmNvbnRhaW5lcj10aGlzO2lmKCFjfHwhYy5sZW5ndGgpe3ZhciB3PW0uc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbZF0pO3JldHVybiB3LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSx3LmF0dHIoIngiLG4ubGVmdCtnLzIpLmF0dHIoInkiLG4udG9wK2IvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHZ9bS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgRT10LnkoKShjW2MubGVuZ3RoLTFdLGMubGVuZ3RoLTEpO3M9dC54U2NhbGUoKSxvPXQueVNjYWxlKCk7dmFyIFM9bS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zcGFya2xpbmVwbHVzIikuZGF0YShbY10pLFQ9Uy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNwYXJrbGluZXBsdXMiKSxOPVQuYXBwZW5kKCJnIiksQz1TLnNlbGVjdCgiZyIpO04uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zcGFya2xpbmVXcmFwIiksTi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXZhbHVlV3JhcCIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ob3ZlckFyZWEiKSxTLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24ubGVmdCsiLCIrbi50b3ArIikiKTt2YXIgaz1DLnNlbGVjdCgiLm52LXNwYXJrbGluZVdyYXAiKTt0LndpZHRoKGcpLmhlaWdodChiKSxrLmNhbGwodCk7dmFyIEw9Qy5zZWxlY3QoIi5udi12YWx1ZVdyYXAiKSxBPUwuc2VsZWN0QWxsKCIubnYtY3VycmVudFZhbHVlIikuZGF0YShbRV0pO0EuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWN1cnJlbnRWYWx1ZSIpLmF0dHIoImR4IixwPy04OjgpLmF0dHIoImR5IiwiLjllbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIscD8iZW5kIjoic3RhcnQiKSxBLmF0dHIoIngiLGcrKHA/bi5yaWdodDowKSkuYXR0cigieSIsaD9mdW5jdGlvbihlKXtyZXR1cm4gbyhlKX06MCkuc3R5bGUoImZpbGwiLHQuY29sb3IoKShjW2MubGVuZ3RoLTFdLGMubGVuZ3RoLTEpKS50ZXh0KGwoRSkpLE4uc2VsZWN0KCIubnYtaG92ZXJBcmVhIikuYXBwZW5kKCJyZWN0Iikub24oIm1vdXNlbW92ZSIsTSkub24oImNsaWNrIixmdW5jdGlvbigpe2E9IWF9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7dT1bXSxPKCl9KSxDLnNlbGVjdCgiLm52LWhvdmVyQXJlYSByZWN0IikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrIC1uLmxlZnQrIiwiKyAtbi50b3ArIikifSkuYXR0cigid2lkdGgiLGcrbi5sZWZ0K24ucmlnaHQpLmF0dHIoImhlaWdodCIsYituLnRvcCl9KSx2fXZhciB0PWUubW9kZWxzLnNwYXJrbGluZSgpLG49e3RvcDoxNSxyaWdodDoxMDAsYm90dG9tOjEwLGxlZnQ6NTB9LHI9bnVsbCxpPW51bGwscyxvLHU9W10sYT0hMSxmPWQzLmZvcm1hdCgiLHIiKSxsPWQzLmZvcm1hdCgiLC4yZiIpLGM9ITAsaD0hMCxwPSExLGQ9Ik5vIERhdGEgQXZhaWxhYmxlLiI7cmV0dXJuIHYuc3BhcmtsaW5lPXQsZDMucmViaW5kKHYsdCwieCIsInkiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJjb2xvciIpLHYub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodiksdi5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDpuLnJpZ2h0LG4uYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206bi5ib3R0b20sbi5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsdik6bn0sdi53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1lLHYpOnJ9LHYuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPWUsdik6aX0sdi54VGlja0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLHYpOmZ9LHYueVRpY2tGb3JtYXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSx2KTpsfSx2LnNob3dWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLHYpOmN9LHYuYWxpZ25WYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLHYpOmh9LHYucmlnaHRBbGlnblZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPWUsdik6cH0sdi5ub0RhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9ZSx2KTpkfSx2fSxlLm1vZGVscy5zdGFja2VkQXJlYT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBnKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9bi10LmxlZnQtdC5yaWdodCxnPXItdC50b3AtdC5ib3R0b20sYj1kMy5zZWxlY3QodGhpcyk7cD12LnhTY2FsZSgpLGQ9di55U2NhbGUoKSxlPWUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2VyaWVzSW5kZXg9dCxlLnZhbHVlcz1lLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5pbmRleD1uLGUuc2VyaWVzSW5kZXg9dCxlfSksZX0pO3ZhciB3PWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSk7ZT1kMy5sYXlvdXQuc3RhY2soKS5vcmRlcihsKS5vZmZzZXQoZikudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLngobykueSh1KS5vdXQoZnVuY3Rpb24oZSx0LG4pe3ZhciByPXUoZSk9PT0wPzA6bjtlLmRpc3BsYXk9e3k6cix5MDp0fX0pKHcpO3ZhciBFPWIuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc3RhY2tlZGFyZWEiKS5kYXRhKFtlXSksUz1FLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc3RhY2tlZGFyZWEiKSxUPVMuYXBwZW5kKCJkZWZzIiksTj1TLmFwcGVuZCgiZyIpLEM9RS5zZWxlY3QoImciKTtOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXJlYVdyYXAiKSxOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2NhdHRlcldyYXAiKSxFLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSx2LndpZHRoKGEpLmhlaWdodChnKS54KG8pLnkoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzcGxheS55K2UuZGlzcGxheS55MH0pLmZvcmNlWShbMF0pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmllc0luZGV4KX0pKTt2YXIgaz1DLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZSk7ay5jYWxsKHYpLFQuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYtZWRnZS1jbGlwLSIrcykuYXBwZW5kKCJyZWN0IiksRS5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIitzKyIgcmVjdCIpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJoZWlnaHQiLGcpLEMuYXR0cigiY2xpcC1wYXRoIixoPyJ1cmwoI252LWVkZ2UtY2xpcC0iK3MrIikiOiIiKTt2YXIgTD1kMy5zdmcuYXJlYSgpLngoZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChvKGUsdCkpfSkueTAoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5LnkwKX0pLnkxKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlzcGxheS55K2UuZGlzcGxheS55MCl9KS5pbnRlcnBvbGF0ZShjKSxBPWQzLnN2Zy5hcmVhKCkueChmdW5jdGlvbihlLHQpe3JldHVybiBwKG8oZSx0KSl9KS55MChmdW5jdGlvbihlKXtyZXR1cm4gZChlLmRpc3BsYXkueTApfSkueTEoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5LnkwKX0pLE89Qy5zZWxlY3QoIi5udi1hcmVhV3JhcCIpLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0pO08uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtYXJlYSBudi1hcmVhLSIrdH0pLmF0dHIoImQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIEEoZS52YWx1ZXMsZS5zZXJpZXNJbmRleCl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLG0uYXJlYU1vdXNlb3Zlcih7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltkMy5ldmVudC5wYWdlWCxkMy5ldmVudC5wYWdlWV0sc2VyaWVzSW5kZXg6dH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLG0uYXJlYU1vdXNlb3V0KHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxzZXJpZXNJbmRleDp0fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksbS5hcmVhQ2xpY2soe3BvaW50OmUsc2VyaWVzOmUua2V5LHBvczpbZDMuZXZlbnQucGFnZVgsZDMuZXZlbnQucGFnZVldLHNlcmllc0luZGV4OnR9KX0pLE8uZXhpdCgpLnRyYW5zaXRpb24oKS5hdHRyKCJkIixmdW5jdGlvbihlLHQpe3JldHVybiBBKGUudmFsdWVzLHQpfSkucmVtb3ZlKCksTy5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5kZXgpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5kZXgpfSksTy50cmFuc2l0aW9uKCkuYXR0cigiZCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTChlLnZhbHVlcyx0KX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIuYXJlYSIsZnVuY3Rpb24oZSl7Qy5zZWxlY3QoIi5udi1jaGFydC0iK3MrIiAubnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhvdmVyIiwhMCl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQuYXJlYSIsZnVuY3Rpb24oZSl7Qy5zZWxlY3QoIi5udi1jaGFydC0iK3MrIiAubnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhvdmVyIiwhMSl9KX0pLGd9dmFyIHQ9e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTk2MCxyPTUwMCxpPWUudXRpbHMuZGVmYXVsdENvbG9yKCkscz1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU1KSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sYT0ic3RhY2siLGY9Inplcm8iLGw9ImRlZmF1bHQiLGM9ImxpbmVhciIsaD0hMSxwLGQsdj1lLm1vZGVscy5zY2F0dGVyKCksbT1kMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsImFyZWFDbGljayIsImFyZWFNb3VzZW92ZXIiLCJhcmVhTW91c2VvdXQiKTtyZXR1cm4gdi5zaXplKDIuMikuc2l6ZURvbWFpbihbMi4yLDIuMl0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljay5hcmVhIixmdW5jdGlvbihlKXttLmFyZWFDbGljayhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9W2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sbS50b29sdGlwU2hvdyhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXttLnRvb2x0aXBIaWRlKGUpfSksZy5kaXNwYXRjaD1tLGcuc2NhdHRlcj12LGQzLnJlYmluZChnLHYsImludGVyYWN0aXZlIiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInpTY2FsZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwic2l6ZURvbWFpbiIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImNsaXBSYWRpdXMiLCJoaWdobGlnaHRQb2ludCIsImNsZWFySGlnaGxpZ2h0cyIpLGcub3B0aW9ucz1lLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoZyksZy54PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWQzLmZ1bmN0b3IoZSksZyk6b30sZy55PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PWQzLmZ1bmN0b3IoZSksZyk6dX0sZy5tYXJnaW49ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPXR5cGVvZiBlLnRvcCE9InVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD10eXBlb2YgZS5yaWdodCE9InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPXR5cGVvZiBlLmJvdHRvbSE9InVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PXR5cGVvZiBlLmxlZnQhPSJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsZyk6dH0sZy53aWR0aD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1lLGcpOm59LGcuaGVpZ2h0PWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWUsZyk6cn0sZy5jbGlwRWRnZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD1lLGcpOmh9LGcuY29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ZS51dGlscy5nZXRDb2xvcih0KSxnKTppfSxnLm9mZnNldD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLGcpOmZ9LGcub3JkZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZSxnKTpsfSxnLnN0eWxlPWZ1bmN0aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBhO2E9ZTtzd2l0Y2goYSl7Y2FzZSJzdGFjayI6Zy5vZmZzZXQoInplcm8iKSxnLm9yZGVyKCJkZWZhdWx0Iik7YnJlYWs7Y2FzZSJzdHJlYW0iOmcub2Zmc2V0KCJ3aWdnbGUiKSxnLm9yZGVyKCJpbnNpZGUtb3V0Iik7YnJlYWs7Y2FzZSJzdHJlYW0tY2VudGVyIjpnLm9mZnNldCgic2lsaG91ZXR0ZSIpLGcub3JkZXIoImluc2lkZS1vdXQiKTticmVhaztjYXNlImV4cGFuZCI6Zy5vZmZzZXQoImV4cGFuZCIpLGcub3JkZXIoImRlZmF1bHQiKX1yZXR1cm4gZ30sZy5pbnRlcnBvbGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz1lLGcpOmN9LGd9LGUubW9kZWxzLnN0YWNrZWRBcmVhQ2hhcnQ9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gTyh5KXtyZXR1cm4geS5lYWNoKGZ1bmN0aW9uKHkpe3ZhciBNPWQzLnNlbGVjdCh0aGlzKSxfPXRoaXMsRD0oYXx8cGFyc2VJbnQoTS5zdHlsZSgid2lkdGgiKSl8fDk2MCktdS5sZWZ0LXUucmlnaHQsUD0oZnx8cGFyc2VJbnQoTS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tO08udXBkYXRlPWZ1bmN0aW9uKCl7TS50cmFuc2l0aW9uKCkuZHVyYXRpb24oTCkuY2FsbChPKX0sTy5jb250YWluZXI9dGhpcyxTLmRpc2FibGVkPXkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF4KXt2YXIgSDt4PXt9O2ZvcihIIGluIFMpU1tIXWluc3RhbmNlb2YgQXJyYXk/eFtIXT1TW0hdLnNsaWNlKDApOnhbSF09U1tIXX1pZigheXx8IXkubGVuZ3RofHwheS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIEI9TS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIEIuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEIuYXR0cigieCIsdS5sZWZ0K0QvMikuYXR0cigieSIsdS50b3ArUC8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksT31NLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGI9dC54U2NhbGUoKSx3PXQueVNjYWxlKCk7dmFyIGo9TS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zdGFja2VkQXJlYUNoYXJ0IikuZGF0YShbeV0pLEY9ai5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXN0YWNrZWRBcmVhQ2hhcnQiKS5hcHBlbmQoImciKSxJPWouc2VsZWN0KCJnIik7Ri5hcHBlbmQoInJlY3QiKS5zdHlsZSgib3BhY2l0eSIsMCksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc3RhY2tlZFdyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmUiKSxJLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIixEKS5hdHRyKCJoZWlnaHQiLFApO2lmKGgpe3ZhciBxPWM/RC1DOkQ7aS53aWR0aChxKSxJLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bSh5KS5jYWxsKGkpLHUudG9wIT1pLmhlaWdodCgpJiYodS50b3A9aS5oZWlnaHQoKSxQPShmfHxwYXJzZUludChNLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20pLEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhELXEpKyIsIisgLXUudG9wKyIpIil9aWYoYyl7dmFyIFI9W3trZXk6IlN0YWNrZWQiLGRpc2FibGVkOnQub2Zmc2V0KCkhPSJ6ZXJvIn0se2tleToiU3RyZWFtIixkaXNhYmxlZDp0Lm9mZnNldCgpIT0id2lnZ2xlIn0se2tleToiRXhwYW5kZWQiLGRpc2FibGVkOnQub2Zmc2V0KCkhPSJleHBhbmQifV07Qz1rLmxlbmd0aC8zKjI2MCxSPVIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBrLmluZGV4T2YoZS5rZXkpPi0xfSkscy53aWR0aChDKS5jb2xvcihbIiM0NDQiLCIjNDQ0IiwiIzQ0NCJdKSxJLnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcCIpLmRhdHVtKFIpLmNhbGwocyksdS50b3AhPU1hdGgubWF4KHMuaGVpZ2h0KCksaS5oZWlnaHQoKSkmJih1LnRvcD1NYXRoLm1heChzLmhlaWdodCgpLGkuaGVpZ2h0KCkpLFA9KGZ8fHBhcnNlSW50KE0uc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbSksSS5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtdS50b3ArIikiKX1qLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3UubGVmdCsiLCIrdS50b3ArIikiKSx2JiZJLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0QrIiwwKSIpLG0mJihvLndpZHRoKEQpLmhlaWdodChQKS5tYXJnaW4oe2xlZnQ6dS5sZWZ0LHRvcDp1LnRvcH0pLnN2Z0NvbnRhaW5lcihNKS54U2NhbGUoYiksai5zZWxlY3QoIi5udi1pbnRlcmFjdGl2ZSIpLmNhbGwobykpLHQud2lkdGgoRCkuaGVpZ2h0KFApO3ZhciBVPUkuc2VsZWN0KCIubnYtc3RhY2tlZFdyYXAiKS5kYXR1bSh5KTtVLnRyYW5zaXRpb24oKS5jYWxsKHQpLHAmJihuLnNjYWxlKGIpLnRpY2tzKEQvMTAwKS50aWNrU2l6ZSgtUCwwKSxJLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrUCsiKSIpLEkuc2VsZWN0KCIubnYteC5udi1heGlzIikudHJhbnNpdGlvbigpLmR1cmF0aW9uKDApLmNhbGwobikpLGQmJihyLnNjYWxlKHcpLnRpY2tzKHQub2Zmc2V0KCk9PSJ3aWdnbGUiPzA6UC8zNikudGlja1NpemUoLUQsMCkuc2V0VGlja0Zvcm1hdCh0Lm9mZnNldCgpPT0iZXhwYW5kIj9kMy5mb3JtYXQoIiUiKTpFKSxJLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLnRyYW5zaXRpb24oKS5kdXJhdGlvbigwKS5jYWxsKHIpKSx0LmRpc3BhdGNoLm9uKCJhcmVhQ2xpY2sudG9nZ2xlIixmdW5jdGlvbihlKXt5LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aD09PTE/eT15Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0hMSxlfSk6eT15Lm1hcChmdW5jdGlvbih0LG4pe3JldHVybiB0LmRpc2FibGVkPW4hPWUuc2VyaWVzSW5kZXgsdH0pLFMuZGlzYWJsZWQ9eS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSksTi5zdGF0ZUNoYW5nZShTKSxPLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe1MuZGlzYWJsZWQ9ZS5kaXNhYmxlZCxOLnN0YXRlQ2hhbmdlKFMpLE8udXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47Uj1SLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0hMCxlfSksZS5kaXNhYmxlZD0hMTtzd2l0Y2goZS5rZXkpe2Nhc2UiU3RhY2tlZCI6dC5zdHlsZSgic3RhY2siKTticmVhaztjYXNlIlN0cmVhbSI6dC5zdHlsZSgic3RyZWFtIik7YnJlYWs7Y2FzZSJFeHBhbmRlZCI6dC5zdHlsZSgiZXhwYW5kIil9Uy5zdHlsZT10LnN0eWxlKCksTi5zdGF0ZUNoYW5nZShTKSxPLnVwZGF0ZSgpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVhckhpZ2hsaWdodHMoKTt2YXIgcyxhLGYsYz1bXTt5LmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBlLnNlcmllc0luZGV4PXQsIWUuZGlzYWJsZWR9KS5mb3JFYWNoKGZ1bmN0aW9uKG4scil7YT1lLmludGVyYWN0aXZlQmlzZWN0KG4udmFsdWVzLGkucG9pbnRYVmFsdWUsTy54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixhLCEwKTt2YXIgbz1uLnZhbHVlc1thXTtpZih0eXBlb2Ygbz09InVuZGVmaW5lZCIpcmV0dXJuO3R5cGVvZiBzPT0idW5kZWZpbmVkIiYmKHM9byksdHlwZW9mIGY9PSJ1bmRlZmluZWQiJiYoZj1PLnhTY2FsZSgpKE8ueCgpKG8sYSkpKSxjLnB1c2goe2tleTpuLmtleSx2YWx1ZTpPLnkoKShvLGEpLGNvbG9yOmwobixuLnNlcmllc0luZGV4KX0pfSk7dmFyIGg9bi50aWNrRm9ybWF0KCkoTy54KCkocyxhKSk7by50b29sdGlwLnBvc2l0aW9uKHtsZWZ0OmYrdS5sZWZ0LHRvcDppLm1vdXNlWSt1LnRvcH0pLmNoYXJ0Q29udGFpbmVyKF8ucGFyZW50Tm9kZSkuZW5hYmxlZChnKS52YWx1ZUZvcm1hdHRlcihmdW5jdGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtYXQoKShlKX0pLmRhdGEoe3ZhbHVlOmgsc2VyaWVzOmN9KSgpLG8ucmVuZGVyR3VpZGVMaW5lKGYpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0IixmdW5jdGlvbihlKXtOLnRvb2x0aXBIaWRlKCksdC5jbGVhckhpZ2hsaWdodHMoKX0pLE4ub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtnJiZBKGUsXy5wYXJlbnROb2RlKX0pLE4ub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihlKXt0eXBlb2YgZS5kaXNhYmxlZCE9InVuZGVmaW5lZCImJih5LmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPWUuZGlzYWJsZWRbbl19KSxTLmRpc2FibGVkPWUuZGlzYWJsZWQpLHR5cGVvZiBlLnN0eWxlIT0idW5kZWZpbmVkIiYmdC5zdHlsZShlLnN0eWxlKSxPLnVwZGF0ZSgpfSl9KSxPfXZhciB0PWUubW9kZWxzLnN0YWNrZWRBcmVhKCksbj1lLm1vZGVscy5heGlzKCkscj1lLm1vZGVscy5heGlzKCksaT1lLm1vZGVscy5sZWdlbmQoKSxzPWUubW9kZWxzLmxlZ2VuZCgpLG89ZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgpLHU9e3RvcDozMCxyaWdodDoyNSxib3R0b206NTAsbGVmdDo2MH0sYT1udWxsLGY9bnVsbCxsPWUudXRpbHMuZGVmYXVsdENvbG9yKCksYz0hMCxoPSEwLHA9ITAsZD0hMCx2PSExLG09ITEsZz0hMCx5PWZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgb24gIit0KyI8L3A+In0sYix3LEU9ZDMuZm9ybWF0KCIsLjJmIiksUz17c3R5bGU6dC5zdHlsZSgpfSx4PW51bGwsVD0iTm8gRGF0YSBBdmFpbGFibGUuIixOPWQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLEM9MjUwLGs9WyJTdGFja2VkIiwiU3RyZWFtIiwiRXhwYW5kZWQiXSxMPTI1MDtuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNyksci5vcmllbnQodj8icmlnaHQiOiJsZWZ0Iikscy51cGRhdGVTdGF0ZSghMSk7dmFyIEE9ZnVuY3Rpb24oaSxzKXt2YXIgbz1pLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PWkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT1uLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGY9ci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPXkoaS5zZXJpZXMua2V5LGEsZixpLE8pO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsaS52YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtlLnBvcz1bZS5wb3NbMF0rdS5sZWZ0LGUucG9zWzFdK3UudG9wXSxOLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKGUpe04udG9vbHRpcEhpZGUoZSl9KSxOLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtnJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksTy5kaXNwYXRjaD1OLE8uc3RhY2tlZD10LE8ubGVnZW5kPWksTy5jb250cm9scz1zLE8ueEF4aXM9bixPLnlBeGlzPXIsTy5pbnRlcmFjdGl2ZUxheWVyPW8sZDMucmViaW5kKE8sdCwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwiaW50ZXJhY3RpdmUiLCJ1c2VWb3Jvbm9pIiwib2Zmc2V0Iiwib3JkZXIiLCJzdHlsZSIsImNsaXBFZGdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiaW50ZXJwb2xhdGUiKSxPLm9wdGlvbnM9ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKE8pLE8ubWFyZ2luPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnRvcD10eXBlb2YgZS50b3AhPSJ1bmRlZmluZWQiP2UudG9wOnUudG9wLHUucmlnaHQ9dHlwZW9mIGUucmlnaHQhPSJ1bmRlZmluZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT10eXBlb2YgZS5ib3R0b20hPSJ1bmRlZmluZWQiP2UuYm90dG9tOnUuYm90dG9tLHUubGVmdD10eXBlb2YgZS5sZWZ0IT0idW5kZWZpbmVkIj9lLmxlZnQ6dS5sZWZ0LE8pOnV9LE8ud2lkdGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ZSxPKTphfSxPLmhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1lLE8pOmZ9LE8uY29sb3I9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZS51dGlscy5nZXRDb2xvcihuKSxpLmNvbG9yKGwpLHQuY29sb3IobCksTyk6bH0sTy5zaG93Q29udHJvbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9ZSxPKTpjfSxPLnNob3dMZWdlbmQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9ZSxPKTpofSxPLnNob3dYQXhpcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1lLE8pOnB9LE8uc2hvd1lBeGlzPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPWUsTyk6ZH0sTy5yaWdodEFsaWduWUF4aXM9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9ZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxPKTp2fSxPLnVzZUludGVyYWN0aXZlR3VpZGVsaW5lPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPWUsZT09PSEwJiYoTy5pbnRlcmFjdGl2ZSghMSksTy51c2VWb3Jvbm9pKCExKSksTyk6bX0sTy50b29sdGlwPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PWUsTyk6eX0sTy50b29sdGlwcz1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz1lLE8pOmd9LE8udG9vbHRpcENvbnRlbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9ZSxPKTp5fSxPLnN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPWUsTyk6U30sTy5kZWZhdWx0U3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9ZSxPKTp4fSxPLm5vRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD1lLE8pOlR9LE8udHJhbnNpdGlvbkR1cmF0aW9uPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPWUsTyk6TH0sTy5jb250cm9sc0RhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9ZSxPKTprfSxyLnNldFRpY2tGb3JtYXQ9ci50aWNrRm9ybWF0LHIudGlja0Zvcm1hdD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT1lLHIpOkV9LE99fSkoKTs=" type="text/javascript"></script>
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIGQzLmZpc2hleWUgPSB7CiAgICBzY2FsZTogZnVuY3Rpb24oc2NhbGVUeXBlKSB7CiAgICAgIHJldHVybiBkM19maXNoZXllX3NjYWxlKHNjYWxlVHlwZSgpLCAzLCAwKTsKICAgIH0sCiAgICBjaXJjdWxhcjogZnVuY3Rpb24oKSB7CiAgICAgIHZhciByYWRpdXMgPSAyMDAsCiAgICAgICAgICBkaXN0b3J0aW9uID0gMiwKICAgICAgICAgIGswLAogICAgICAgICAgazEsCiAgICAgICAgICBmb2N1cyA9IFswLCAwXTsKCiAgICAgIGZ1bmN0aW9uIGZpc2hleWUoZCkgewogICAgICAgIHZhciBkeCA9IGQueCAtIGZvY3VzWzBdLAogICAgICAgICAgICBkeSA9IGQueSAtIGZvY3VzWzFdLAogICAgICAgICAgICBkZCA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7CiAgICAgICAgaWYgKCFkZCB8fCBkZCA+PSByYWRpdXMpIHJldHVybiB7eDogZC54LCB5OiBkLnksIHo6IDF9OwogICAgICAgIHZhciBrID0gazAgKiAoMSAtIE1hdGguZXhwKC1kZCAqIGsxKSkgLyBkZCAqIC43NSArIC4yNTsKICAgICAgICByZXR1cm4ge3g6IGZvY3VzWzBdICsgZHggKiBrLCB5OiBmb2N1c1sxXSArIGR5ICogaywgejogTWF0aC5taW4oaywgMTApfTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gcmVzY2FsZSgpIHsKICAgICAgICBrMCA9IE1hdGguZXhwKGRpc3RvcnRpb24pOwogICAgICAgIGswID0gazAgLyAoazAgLSAxKSAqIHJhZGl1czsKICAgICAgICBrMSA9IGRpc3RvcnRpb24gLyByYWRpdXM7CiAgICAgICAgcmV0dXJuIGZpc2hleWU7CiAgICAgIH0KCiAgICAgIGZpc2hleWUucmFkaXVzID0gZnVuY3Rpb24oXykgewogICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHJhZGl1czsKICAgICAgICByYWRpdXMgPSArXzsKICAgICAgICByZXR1cm4gcmVzY2FsZSgpOwogICAgICB9OwoKICAgICAgZmlzaGV5ZS5kaXN0b3J0aW9uID0gZnVuY3Rpb24oXykgewogICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGRpc3RvcnRpb247CiAgICAgICAgZGlzdG9ydGlvbiA9ICtfOwogICAgICAgIHJldHVybiByZXNjYWxlKCk7CiAgICAgIH07CgogICAgICBmaXNoZXllLmZvY3VzID0gZnVuY3Rpb24oXykgewogICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGZvY3VzOwogICAgICAgIGZvY3VzID0gXzsKICAgICAgICByZXR1cm4gZmlzaGV5ZTsKICAgICAgfTsKCiAgICAgIHJldHVybiByZXNjYWxlKCk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gZDNfZmlzaGV5ZV9zY2FsZShzY2FsZSwgZCwgYSkgewoKICAgIGZ1bmN0aW9uIGZpc2hleWUoXykgewogICAgICB2YXIgeCA9IHNjYWxlKF8pLAogICAgICAgICAgbGVmdCA9IHggPCBhLAogICAgICAgICAgdiwKICAgICAgICAgIHJhbmdlID0gZDMuZXh0ZW50KHNjYWxlLnJhbmdlKCkpLAogICAgICAgICAgbWluID0gcmFuZ2VbMF0sCiAgICAgICAgICBtYXggPSByYW5nZVsxXSwKICAgICAgICAgIG0gPSBsZWZ0ID8gYSAtIG1pbiA6IG1heCAtIGE7CiAgICAgIGlmIChtID09IDApIG0gPSBtYXggLSBtaW47CiAgICAgIHJldHVybiAobGVmdCA/IC0xIDogMSkgKiBtICogKGQgKyAxKSAvIChkICsgKG0gLyBNYXRoLmFicyh4IC0gYSkpKSArIGE7CiAgICB9CgogICAgZmlzaGV5ZS5kaXN0b3J0aW9uID0gZnVuY3Rpb24oXykgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBkOwogICAgICBkID0gK187CiAgICAgIHJldHVybiBmaXNoZXllOwogICAgfTsKCiAgICBmaXNoZXllLmZvY3VzID0gZnVuY3Rpb24oXykgewogICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBhOwogICAgICBhID0gK187CiAgICAgIHJldHVybiBmaXNoZXllOwogICAgfTsKCiAgICBmaXNoZXllLmNvcHkgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGQzX2Zpc2hleWVfc2NhbGUoc2NhbGUuY29weSgpLCBkLCBhKTsKICAgIH07CgogICAgZmlzaGV5ZS5uaWNlID0gc2NhbGUubmljZTsKICAgIGZpc2hleWUudGlja3MgPSBzY2FsZS50aWNrczsKICAgIGZpc2hleWUudGlja0Zvcm1hdCA9IHNjYWxlLnRpY2tGb3JtYXQ7CiAgICByZXR1cm4gZDMucmViaW5kKGZpc2hleWUsIHNjYWxlLCAiZG9tYWluIiwgInJhbmdlIik7CiAgfQp9KSgpOwo=" type="text/javascript"></script>
<script src="./Steve_John_Metro_Ridership2_files/angular.min.js"></script>
<script src="./Steve_John_Metro_Ridership2_files/lodash.min.js"></script>
<style>
.rChart {
display: block
margin: auto auto;
width: 100%;
height: 400px;
}
.bs-docs-example:after {
content: "";
background: transparent;
border: none;
}
</style>
</head>
<body ng-app="" class="ng-scope">
<!-- saved from url=(0079)http://timelyportfolio.github.io/rCharts_nvd3_templates/script_multiselect.html -->
<div class="container ng-scope" ng-controller="DemoCtrl">
<div class="row">
<div class="col-md-8">
<div class="bs-docs-example">
<div id="chart26e4220b3dab" class="rChart ">
<svg><g class="nvd3 nv-wrap nv-lineChart" transform="translate(60,30)"><g><rect width="420" height="320" style="opacity: 0;"></rect><g class="nv-x nv-axis" transform="translate(0,320)"><g class="nvd3 nv-wrap nv-axis"><g><g class="tick major" transform="translate(35,0)" style="opacity: 1;"><line y2="-320" x2="0"></line><text y="7" dy=".71em" x="0" style="text-anchor: middle;">1980</text></g><g class="tick major" transform="translate(151.66666666666666,0)" style="opacity: 1;"><line y2="-320" x2="0"></line><text y="7" dy=".71em" x="0" style="text-anchor: middle;">1990</text></g><g class="tick major" transform="translate(268.3333333333333,0)" style="opacity: 1;"><line y2="-320" x2="0"></line><text y="7" dy=".71em" x="0" style="text-anchor: middle;">2000</text></g><g class="tick major" transform="translate(385,0)" style="opacity: 1;"><line y2="-320" x2="0"></line><text y="7" dy=".71em" x="0" style="text-anchor: middle;">2010</text></g><path class="domain" d="M0,0V0H420V0"></path><text class="nv-axislabel" text-anchor="middle" y="36" x="210"></text></g><g class="nv-axisMaxMin" transform="translate(0,0)"><text dy=".71em" y="7" transform="rotate(0 0,0)" style="text-anchor: middle;">1977</text></g><g class="nv-axisMaxMin" transform="translate(420,0)"><text dy=".71em" y="7" transform="rotate(0 0,0)" style="text-anchor: middle;">2013</text></g></g></g><g class="nv-y nv-axis"><g class="nvd3 nv-wrap nv-axis"><g><g class="tick major" transform="translate(0,320)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="0" style="text-anchor: end;" y="0">0</text></g><g class="tick major" transform="translate(0,273.57609168721893)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="1" style="text-anchor: end;" y="0">5,000</text></g><g class="tick major" transform="translate(0,227.15218337443784)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="1" style="text-anchor: end;" y="0">10,000</text></g><g class="tick major" transform="translate(0,180.72827506165675)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="1" style="text-anchor: end;" y="0">15,000</text></g><g class="tick major" transform="translate(0,134.30436674887568)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="1" style="text-anchor: end;" y="0">20,000</text></g><g class="tick major" transform="translate(0,87.88045843609461)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="1" style="text-anchor: end;" y="0">25,000</text></g><g class="tick major" transform="translate(0,41.45655012331349)" style="opacity: 1;"><line x2="420" y2="0"></line><text x="-3" dy=".32em" opacity="1" style="text-anchor: end;" y="0">30,000</text></g><path class="domain" d="M0,0H0V320H0"></path><text class="nv-axislabel" transform="rotate(-90)" y="-63" x="-160" style="text-anchor: middle;">Average weekday boardings</text></g><g class="nv-axisMaxMin" transform="translate(0,320)"><text dy=".32em" y="0" x="-3" text-anchor="end" style="opacity: 1;">0</text></g><g class="nv-axisMaxMin" transform="translate(0,0)"><text dy=".32em" y="0" x="-3" text-anchor="end" style="opacity: 1;">34,500</text></g></g></g><g class="nv-linesWrap"><g class="nvd3 nv-wrap nv-line" transform="translate(0,0)"><defs><clippath id="nv-edge-clip-62134"><rect width="420" height="320"></rect></clippath></defs><g clip-path=""><g class="nv-groups"><g class="nv-group nv-series-0" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(31, 119, 180); stroke: rgb(31, 119, 180);"><path class="nv-line" d="M0,247.7272595386624L11.666666666666666,226.00087044828086L23.333333333333332,193.56912810097202L35,174.75816045263312L46.666666666666664,188.82460467140578L58.333333333333336,212.0365588277963L70,201.51690120412013L81.66666666666666,190.99724358044392L93.33333333333333,164.32206586391993L105,161.23951835195126L116.66666666666667,145.093283040766L128.33333333333331,140.11664006963585L140,124.32322646162774L151.66666666666666,119.16088785724651L163.33333333333331,155.2508341796025L174.99999999999997,125.74379805599887L186.66666666666666,129.49484984767156L198.33333333333331,130.48832148556505L210,128.86348469461774L221.66666666666669,134.07224720731176L233.33333333333334,141.871463803859L244.99999999999997,133.68228637748442L256.66666666666663,132.64239083127814L268.3333333333333,121.07355287973306L280,109.93181488466561L291.66666666666663,111.95589728710286L303.3333333333333,111.1852604091107L315,110.96242564920937L326.66666666666663,104.63020455534601L338.3333333333333,99.95067459741767L349.99999999999994,95.78180763092996L361.66666666666663,91.6779341360801L373.3333333333333,101.24125924851299L385,107.31350645582478L396.66666666666663,109.0404758450602L408.3333333333333,145.16756129406645L420,124.23966342666475"></path></g><g class="nv-group nv-series-1" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(174, 199, 232); stroke: rgb(174, 199, 232);"><path class="nv-line" d="M0,246.18598578267807L11.666666666666666,203.65240098650804L23.333333333333332,201.24764253590598L35,179.92049905701438L46.666666666666664,198.35079065718844L58.333333333333336,170.98853909763528L70,175.15740606412302L81.66666666666666,179.33555781227332L93.33333333333333,139.4481357899318L105,101.76120702161614L116.66666666666667,103.78528942405339L128.33333333333331,97.33236616857681L140,85.32714347889166L151.66666666666666,91.12084723632671L163.33333333333331,88.67894965907442L174.99999999999997,96.34817931234585L186.66666666666666,150.0142173219208L198.33333333333331,103.07036123603655L210,110.29392136950531L221.66666666666669,114.41636442768026L233.33333333333334,102.48541999129554L244.99999999999997,100.65631800377193L256.66666666666663,97.83374437835488L268.3333333333333,88.94820832728857L280,76.27448135789933L291.66666666666663,84.22225446104744L303.3333333333333,91.48295372116638L315,85.09502393732774L326.66666666666663,82.57884810677498L338.3333333333333,72.80197301610329L349.99999999999994,69.92369070071089L361.66666666666663,73.89757725228492L373.3333333333333,84.9928913390396L385,96.1903380240824L396.66666666666663,99.05933555781229L408.3333333333333,71.4185405483824L420,84.62150007253737"></path></g><g class="nv-group nv-series-2" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 127, 14); stroke: rgb(255, 127, 14);"><path class="nv-line" d="M0,300.50195850863196L0,300.50195850863196L0,300.50195850863196L11.666666666666666,296.7416219352967L11.666666666666666,296.7416219352967L11.666666666666666,296.7416219352967L23.333333333333332,283.4365298128536L23.333333333333332,283.4365298128536L23.333333333333332,283.4365298128536L35,282.33164079500943L35,282.33164079500943L35,282.33164079500943L46.666666666666664,281.5517191353547L46.666666666666664,281.5517191353547L46.666666666666664,281.5517191353547L58.333333333333336,285.1542144204265L58.333333333333336,285.1542144204265L58.333333333333336,285.1542144204265L70,275.8694327578703L70,275.8694327578703L70,275.8694327578703L81.66666666666666,266.5939358769766L81.66666666666666,266.5939358769766L81.66666666666666,266.5939358769766L93.33333333333333,255.58218482518498L93.33333333333333,255.58218482518498L93.33333333333333,255.58218482518498L105,257.7176846075729L105,257.7176846075729L105,257.7176846075729L116.66666666666667,257.3091542144204L116.66666666666667,257.3091542144204L116.66666666666667,257.3091542144204L128.33333333333331,257.17916727114465L128.33333333333331,257.17916727114465L128.33333333333331,257.17916727114465L140,240.64297113013203L140,240.64297113013203L140,240.64297113013203L151.66666666666666,252.52749165820399L151.66666666666666,252.52749165820399L151.66666666666666,252.52749165820399L163.33333333333331,244.59828811838096L163.33333333333331,244.59828811838096L163.33333333333331,244.59828811838096L174.99999999999997,249.61207021616133L174.99999999999997,249.61207021616133L174.99999999999997,249.61207021616133L186.66666666666666,252.6481938198172L186.66666666666666,252.6481938198172L186.66666666666666,252.6481938198172L198.33333333333331,251.5061656753228L198.33333333333331,251.5061656753228L198.33333333333331,251.5061656753228L210,250.71695923400551L210,250.71695923400551L210,250.71695923400551L221.66666666666669,260.14101262150007L221.66666666666669,260.14101262150007L221.66666666666669,260.14101262150007L233.33333333333334,259.41679965182067L233.33333333333334,259.41679965182067L233.33333333333334,259.41679965182067L244.99999999999997,225.49020745684027L244.99999999999997,225.49020745684027L244.99999999999997,225.49020745684027L256.66666666666663,232.34237632380677L256.66666666666663,232.34237632380677L256.66666666666663,232.34237632380677L268.3333333333333,221.92485129841867L268.3333333333333,221.92485129841867L268.3333333333333,221.92485129841867L280,203.99593790802265L280,203.99593790802265L280,203.99593790802265L291.66666666666663,191.56361526185987L291.66666666666663,191.56361526185987L291.66666666666663,191.56361526185987L303.3333333333333,174.55389525605688L303.3333333333333,174.55389525605688L303.3333333333333,174.55389525605688L315,167.33033512258814L315,167.33033512258814L315,167.33033512258814L326.66666666666663,139.18816190338023L326.66666666666663,139.18816190338023L326.66666666666663,139.18816190338023L338.3333333333333,128.05570868997535L338.3333333333333,128.05570868997535L338.3333333333333,128.05570868997535L349.99999999999994,116.46830117510518L349.99999999999994,116.46830117510518L349.99999999999994,116.46830117510518L361.66666666666663,86.61772812998694L361.66666666666663,86.61772812998694L361.66666666666663,86.61772812998694L373.3333333333333,80.94472653416511L373.3333333333333,80.94472653416511L373.3333333333333,80.94472653416511L385,79.5798636297693L385,79.5798636297693L385,79.5798636297693L396.66666666666663,80.6661830842884L396.66666666666663,80.6661830842884L396.66666666666663,80.6661830842884L408.3333333333333,73.14550993761787L408.3333333333333,73.14550993761787L408.3333333333333,73.14550993761787L420,80.2669374727985L420,80.2669374727985L420,80.2669374727985"></path></g><g class="nv-group nv-series-3" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 187, 120); stroke: rgb(255, 187, 120);"><path class="nv-line" d="M0,269.0265486725664L11.666666666666666,247.52299434208618L23.333333333333332,246.1395618743653L35,240.82866676338313L46.666666666666664,248.69287683156824L58.333333333333336,253.38169157115914L70,260.80023211954153L81.66666666666666,268.2280574495865L93.33333333333333,248.13578993181488L105,249.88132888437545L116.66666666666667,242.9363122007834L128.33333333333331,236.03771942550412L140,236.52052807195705L151.66666666666666,233.21514580008704L163.33333333333331,231.33033512258814L174.99999999999997,233.25228492673727L186.66666666666666,251.48759611199768L198.33333333333331,230.19759175975628L210,234.52430001450747L221.66666666666669,232.98302625852313L233.33333333333334,229.27839837516322L244.99999999999997,227.84854199912957L256.66666666666663,227.85782678079212L268.3333333333333,232.70448280864645L280,223.27114463948934L291.66666666666663,221.8598578267808L303.3333333333333,217.64456695198027L315,218.31307123168432L326.66666666666663,224.14391411576963L338.3333333333333,224.29247062237053L349.99999999999994,226.08443348324386L361.66666666666663,224.97954446539967L373.3333333333333,223.7260989409546L385,227.6071376759031L396.66666666666663,230.4668504279704L408.3333333333333,234.08791527636734L420,234.89569128100973"></path></g><g class="nv-group nv-series-4" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(44, 160, 44); stroke: rgb(44, 160, 44);"><path class="nv-line" d="M0,222.5747860147976L0,222.5747860147976L0,222.5747860147976L11.666666666666666,192.76135209632963L11.666666666666666,192.76135209632963L11.666666666666666,192.76135209632963L23.333333333333332,139.87523574640937L23.333333333333332,139.87523574640937L23.333333333333332,139.87523574640937L35,148.0829827361091L35,148.0829827361091L35,148.0829827361091L46.666666666666664,137.94400116059774L46.666666666666664,137.94400116059774L46.666666666666664,137.94400116059774L58.333333333333336,156.26287538082113L58.333333333333336,156.26287538082113L58.333333333333336,156.26287538082113L70,158.49122297983462L70,158.49122297983462L70,158.49122297983462L81.66666666666666,160.72885536051066L81.66666666666666,160.72885536051066L81.66666666666666,160.72885536051066L93.33333333333333,166.33686348469462L93.33333333333333,166.33686348469462L93.33333333333333,166.33686348469462L105,140.0052226896852L105,140.0052226896852L105,140.0052226896852L116.66666666666667,84.57507616422458L116.66666666666667,84.57507616422458L116.66666666666667,84.57507616422458L128.33333333333331,93.50703612360365L128.33333333333331,93.50703612360365L128.33333333333331,93.50703612360365L140,70.35079065718847L140,70.35079065718847L140,70.35079065718847L151.66666666666666,79.00420716669086L151.66666666666666,79.00420716669086L151.66666666666666,79.00420716669086L163.33333333333331,85.19715653561582L163.33333333333331,85.19715653561582L163.33333333333331,85.19715653561582L174.99999999999997,95.97678804584362L174.99999999999997,95.97678804584362L174.99999999999997,95.97678804584362L186.66666666666666,85.23429566226608L186.66666666666666,85.23429566226608L186.66666666666666,85.23429566226608L198.33333333333331,74.10184244886119L198.33333333333331,74.10184244886119L198.33333333333331,74.10184244886119L210,63.340780501958534L210,63.340780501958534L210,63.340780501958534L221.66666666666669,83.95299579283332L221.66666666666669,83.95299579283332L221.66666666666669,83.95299579283332L233.33333333333334,88.53967793413608L233.33333333333334,88.53967793413608L233.33333333333334,88.53967793413608L244.99999999999997,80.44334832438707L244.99999999999997,80.44334832438707L244.99999999999997,80.44334832438707L256.66666666666663,73.57260989409548L256.66666666666663,73.57260989409548L256.66666666666663,73.57260989409548L268.3333333333333,65.06774989119396L268.3333333333333,65.06774989119396L268.3333333333333,65.06774989119396L280,51.28913390396053L280,51.28913390396053L280,51.28913390396053L291.66666666666663,53.79602495285076L291.66666666666663,53.79602495285076L291.66666666666663,53.79602495285076L303.3333333333333,59.32047004207169L303.3333333333333,59.32047004207169L303.3333333333333,59.32047004207169L315,55.847961700275675L315,55.847961700275675L315,55.847961700275675L326.66666666666663,50.899173074133216L326.66666666666663,50.899173074133216L326.66666666666663,50.899173074133216L338.3333333333333,45.50471492818804L338.3333333333333,45.50471492818804L338.3333333333333,45.50471492818804L349.99999999999994,43.33207601914984L349.99999999999994,43.33207601914984L349.99999999999994,43.33207601914984L361.66666666666663,35.74640940084146L361.66666666666663,35.74640940084146L361.66666666666663,35.74640940084146L373.3333333333333,36.173509357319006L373.3333333333333,36.173509357319006L373.3333333333333,36.173509357319006L385,44.26055418540551L385,44.26055418540551L385,44.26055418540551L396.66666666666663,50.899173074133216L396.66666666666663,50.899173074133216L396.66666666666663,50.899173074133216L408.3333333333333,52.57971855505588L408.3333333333333,52.57971855505588L408.3333333333333,52.57971855505588L420,59.664006963586246L420,59.664006963586246L420,59.664006963586246"></path></g><g class="nv-group nv-series-5" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(152, 223, 138); stroke: rgb(152, 223, 138);"><path class="nv-line" d="M0,267.401711881619L11.666666666666666,275.8694327578703L23.333333333333332,280.01044537937037L35,273.67822428550704L46.666666666666664,280.7625126940374L58.333333333333336,282.1830842884085L70,282.2016538517336L81.66666666666666,282.22022341505874L93.33333333333333,274.58813288843754L105,272.84259393587695L116.66666666666667,265.8047294356594L128.33333333333331,264.70912519947774L140,261.25518642100684L151.66666666666666,261.24590163934425L163.33333333333331,263.36283185840705L174.99999999999997,267.07674452342957L186.66666666666666,267.318148846656L198.33333333333331,275.73944581459455L210,278.67343681996226L221.66666666666669,282.3873494849848L233.33333333333334,281.7838386769186L244.99999999999997,279.7319019294937L256.66666666666663,278.45988684172346L268.3333333333333,274.8945306833019L280,272.75903090091396L291.66666666666663,272.6011896126505L303.3333333333333,269.94574205715946L315,267.03960539677934L326.66666666666663,269.0172638909038L338.3333333333333,266.54751196866385L349.99999999999994,263.8642100681851L361.66666666666663,262.9543014652546L373.3333333333333,263.1678514434934L385,267.5316988248948L396.66666666666663,271.46844624981867L408.3333333333333,267.58740751487016L420,265.25692731756857"></path></g><g class="nv-group nv-series-6" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(214, 39, 40); stroke: rgb(214, 39, 40);"><path class="nv-line" d="M0,254.65370665892937L11.666666666666666,234.1343391846801L23.333333333333332,214.28347599013492L35,203.56883795154505L46.666666666666664,222.84404468301176L58.333333333333336,219.39010590454083L70,212.92789786740173L81.66666666666666,206.47497461192515L93.33333333333333,210.80168286667634L105,192.6127955897287L116.66666666666667,176.7079646017699L128.33333333333331,170.36645872624402L140,131.38894530683302L151.66666666666666,116.23618163354126L163.33333333333331,110.21035833454226L174.99999999999997,113.2186275932105L186.66666666666666,80.08124183954737L198.33333333333331,79.42202234150588L210,85.67068040040621L221.66666666666669,98.33512258813289L233.33333333333334,97.49020745684027L244.99999999999997,87.53692151458L256.66666666666663,75.4109966632816L268.3333333333333,66.2469171623386L280,43.88916291890325L291.66666666666663,38.87538082112292L303.3333333333333,25.84883214855654L315,16.82402437255189L326.66666666666663,24.149717104308706L338.3333333333333,17.353256927317545L349.99999999999994,14.205715943711027L361.66666666666663,0.761352096329631L373.3333333333333,0L385,15.969824459596737L396.66666666666663,7.130712316843187L408.3333333333333,11.28100972000584L420,13.83432467720877"></path></g><g class="nv-group nv-series-7" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 152, 150); stroke: rgb(255, 152, 150);"><path class="nv-line" d="M0,318.7001305672421L11.666666666666666,317.9666328159002L23.333333333333332,316.4346438415784L35,316.6389090381546L46.666666666666664,311.86653126360073L58.333333333333336,318.00377194255043L70,317.0660089946322L81.66666666666666,316.1375308283766L93.33333333333333,309.7960249528507L105,316.8338894530683L116.66666666666667,313.2128246046714L128.33333333333331,310.86377484404466L140,307.53982300884957L151.66666666666666,309.76817060786306L163.33333333333331,310.1209923110402L174.99999999999997,307.98549252865223L186.66666666666666,308.2733207601915L198.33333333333331,312.5350355433048L210,306.2585231394168L221.66666666666669,305.3021906281735L233.33333333333334,303.04598868417236L244.99999999999997,300.7433628318584L256.66666666666663,304.3272885536051L268.3333333333333,303.6680690555636L280,302.3124909328304L291.66666666666663,303.0552734658349L303.3333333333333,306.6206296242565L315,304.7358189467576L326.66666666666663,303.7330625272015L338.3333333333333,303.0924125924851L349.99999999999994,302.4610474394313L361.66666666666663,300.67836936022053L373.3333333333333,301.70898012476425L385,302.4610474394313L396.66666666666663,302.6745974176701L408.3333333333333,303.03670390250977L420,303.5845060206006"></path></g><g class="nv-group nv-series-8" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(148, 103, 189); stroke: rgb(148, 103, 189);"><path class="nv-line" d="M0,285.6834469751922L0,285.6834469751922L11.666666666666666,273.54823734223123L11.666666666666666,273.54823734223123L23.333333333333332,269.9364572754969L23.333333333333332,269.9364572754969L35,257.2534455244451L35,257.2534455244451L46.666666666666664,257.9405193674743L46.666666666666664,257.9405193674743L58.333333333333336,251.02335702886987L58.333333333333336,251.02335702886987L70,257.41128681270857L70,257.41128681270857L81.66666666666666,263.80850137820977L81.66666666666666,263.80850137820977L93.33333333333333,250.5498331640795L93.33333333333333,250.5498331640795L105,247.51370956042362L105,247.51370956042362L116.66666666666667,238.6745974176701L116.66666666666667,238.6745974176701L128.33333333333331,239.36167126069927L128.33333333333331,239.36167126069927L140,239.88161903380242L140,239.88161903380242L151.66666666666666,242.16567532279123L151.66666666666666,242.16567532279123L163.33333333333331,240.1137385753663L163.33333333333331,240.1137385753663L174.99999999999997,251.11620484549542L174.99999999999997,251.11620484549542L186.66666666666666,244.77469896996953L186.66666666666666,244.77469896996953L198.33333333333331,255.15508486870738L198.33333333333331,255.15508486870738L210,253.01958508631947L210,253.01958508631947L221.66666666666669,257.56912810097197L221.66666666666669,257.56912810097197L233.33333333333334,257.6062672276222L233.33333333333334,257.6062672276222L244.99999999999997,259.4817931234586L244.99999999999997,259.4817931234586L256.66666666666663,259.5653561584216L256.66666666666663,259.5653561584216L268.3333333333333,254.99724358044392L268.3333333333333,254.99724358044392L280,248.91571159146963L280,248.91571159146963L291.66666666666663,252.66676338314232L291.66666666666663,252.66676338314232L303.3333333333333,251.5247352386479L303.3333333333333,251.5247352386479L315,246.58523139416798L315,246.58523139416798L326.66666666666663,242.90845785579575L326.66666666666663,242.90845785579575L338.3333333333333,241.49717104308718L338.3333333333333,241.49717104308718L349.99999999999994,241.52502538807485L349.99999999999994,241.52502538807485L361.66666666666663,237.36544320324967L361.66666666666663,237.36544320324967L373.3333333333333,232.59306542869578L373.3333333333333,232.59306542869578L385,230.50398955462063L385,230.50398955462063L396.66666666666663,234.63571739445814L396.66666666666663,234.63571739445814L408.3333333333333,245.28536196141013L408.3333333333333,245.28536196141013L420,239.98375163209053L420,239.98375163209053"></path></g><g class="nv-group nv-series-9" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(197, 176, 213); stroke: rgb(197, 176, 213);"><path class="nv-line" d="M0,283.67793413608007L0,283.67793413608007L11.666666666666666,272.55476570433774L11.666666666666666,272.55476570433774L23.333333333333332,249.86275932105033L23.333333333333332,249.86275932105033L35,243.8276512403888L35,243.8276512403888L46.666666666666664,250.93979399390687L46.666666666666664,250.93979399390687L58.333333333333336,248.8135789931815L58.333333333333336,248.8135789931815L70,239.00884955752213L70,239.00884955752213L81.66666666666666,229.20412012186276L81.66666666666666,229.20412012186276L93.33333333333333,221.562744813579L93.33333333333333,221.562744813579L105,218.43377339329754L105,218.43377339329754L116.66666666666667,206.23357028869867L116.66666666666667,206.23357028869867L128.33333333333331,199.62280574495867L128.33333333333331,199.62280574495867L140,193.4205715943711L140,193.4205715943711L151.66666666666666,196.05744958653707L151.66666666666666,196.05744958653707L163.33333333333331,196.18743652981286L163.33333333333331,196.18743652981286L174.99999999999997,202.73320760191498L174.99999999999997,202.73320760191498L186.66666666666666,203.0024662701291L186.66666666666666,203.0024662701291L198.33333333333331,211.33091542144206L198.33333333333331,211.33091542144206L210,207.96053967793415L210,207.96053967793415L221.66666666666669,211.64659799796897L221.66666666666669,211.64659799796897L233.33333333333334,212.33367184099814L233.33333333333334,212.33367184099814L244.99999999999997,213.967793413608L244.99999999999997,213.967793413608L256.66666666666663,210.0031916436965L256.66666666666663,210.0031916436965L268.3333333333333,207.57986362976933L268.3333333333333,207.57986362976933L280,200.68127085449007L280,200.68127085449007L291.66666666666663,200.15203829972435L291.66666666666663,200.15203829972435L303.3333333333333,194.0983606557377L303.3333333333333,194.0983606557377L315,192.5942260264036L315,192.5942260264036L326.66666666666663,201.0712316843174L326.66666666666663,201.0712316843174L338.3333333333333,196.289569128101L338.3333333333333,196.289569128101L349.99999999999994,188.5460612215291L349.99999999999994,188.5460612215291L361.66666666666663,180.46830117510518L361.66666666666663,180.46830117510518L373.3333333333333,183.06804004062093L373.3333333333333,183.06804004062093L385,181.17394458145947L385,181.17394458145947L396.66666666666663,178.99202089075874L396.66666666666663,178.99202089075874L408.3333333333333,193.8012476425359L408.3333333333333,193.8012476425359L420,203.067459741767L420,203.067459741767"></path></g><g class="nv-group nv-series-10" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(140, 86, 75); stroke: rgb(140, 86, 75);"><path class="nv-line" d="M0,296.73233715363415L0,296.73233715363415L11.666666666666666,295.28391121427535L11.666666666666666,295.28391121427535L23.333333333333332,280.99463223560133L23.333333333333332,280.99463223560133L35,277.800667343682L35,277.800667343682L46.666666666666664,278.04207166690844L46.666666666666664,278.04207166690844L58.333333333333336,278.5155955316988L58.333333333333336,278.5155955316988L70,277.3271434788916L70,277.3271434788916L81.66666666666666,276.13869142608445L81.66666666666666,276.13869142608445L93.33333333333333,272.88901784418977L93.33333333333333,272.88901784418977L105,269.3608008124184L105,269.3608008124184L116.66666666666667,265.23835775424345L116.66666666666667,265.23835775424345L128.33333333333331,264.8391121427535L128.33333333333331,264.8391121427535L140,263.8734948498477L140,263.8734948498477L151.66666666666666,265.999709850573L151.66666666666666,265.999709850573L163.33333333333331,270.1500072537357L163.33333333333331,270.1500072537357L174.99999999999997,278.95198026983894L174.99999999999997,278.95198026983894L186.66666666666666,280.5396779341361L186.66666666666666,280.5396779341361L198.33333333333331,280.2518497025968L198.33333333333331,280.2518497025968L210,280.81822138401276L210,280.81822138401276L221.66666666666669,283.3993906862034L221.66666666666669,283.3993906862034L233.33333333333334,282.81444944146233L233.33333333333334,282.81444944146233L244.99999999999997,281.83026258523137L244.99999999999997,281.83026258523137L256.66666666666663,281.31031481212824L256.66666666666663,281.31031481212824L268.3333333333333,278.66415203829973L268.3333333333333,278.66415203829973L280,276.94646743072684L280,276.94646743072684L291.66666666666663,275.7487305962571L291.66666666666663,275.7487305962571L303.3333333333333,275.33091542144206L303.3333333333333,275.33091542144206L315,272.35050050776147L315,272.35050050776147L326.66666666666663,268.5437400261134L326.66666666666663,268.5437400261134L338.3333333333333,265.94400116059774L338.3333333333333,265.94400116059774L349.99999999999994,265.45190773248225L349.99999999999994,265.45190773248225L361.66666666666663,264.6627012911649L361.66666666666663,264.6627012911649L373.3333333333333,263.9384883214856L373.3333333333333,263.9384883214856L385,261.43159727259535L385,261.43159727259535L396.66666666666663,261.85869722907296L396.66666666666663,261.85869722907296L408.3333333333333,262.49934716378937L408.3333333333333,262.49934716378937L420,260.74452342956624L420,260.74452342956624"></path></g><g class="nv-group nv-series-11" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(196, 156, 148); stroke: rgb(196, 156, 148);"><path class="nv-line" d="M0,179.17771652400987L0,179.17771652400987L11.666666666666666,161.36950529522704L11.666666666666666,161.36950529522704L23.333333333333332,102.86609603946033L23.333333333333332,102.86609603946033L35,51.75337298708837L35,51.75337298708837L46.666666666666664,66.58116930219063L46.666666666666664,66.58116930219063L58.333333333333336,84.20368489772233L58.333333333333336,84.20368489772233L70,107.61061946902655L70,107.61061946902655L81.66666666666666,131.01755404033077L81.66666666666666,131.01755404033077L93.33333333333333,95.88394022921804L93.33333333333333,95.88394022921804L105,94.88118380966199L105,94.88118380966199L116.66666666666667,81.2882634556797L116.66666666666667,81.2882634556797L128.33333333333331,65.42985637603365L128.33333333333331,65.42985637603365L140,71.62280574495867L140,71.62280574495867L151.66666666666666,53.36892499637315L151.66666666666666,53.36892499637315L163.33333333333331,69.21804729435661L163.33333333333331,69.21804729435661L174.99999999999997,92.25359059915857L174.99999999999997,92.25359059915857L186.66666666666666,94.94617728129987L186.66666666666666,94.94617728129987L198.33333333333331,102.48541999129554L198.33333333333331,102.48541999129554L210,112.93079936167123L210,112.93079936167123L221.66666666666669,122.62411141737996L221.66666666666669,122.62411141737996L233.33333333333334,120.24720731176558L233.33333333333334,120.24720731176558L244.99999999999997,109.00333671840997L244.99999999999997,109.00333671840997L256.66666666666663,109.17974756999854L256.66666666666663,109.17974756999854L268.3333333333333,102.69896996953432L268.3333333333333,102.69896996953432L280,91.26011896126505L280,91.26011896126505L291.66666666666663,101.12984186856232L291.66666666666663,101.12984186856232L303.3333333333333,102.43899608298275L303.3333333333333,102.43899608298275L315,98.33512258813289L315,98.33512258813289L326.66666666666663,95.78180763092996L326.66666666666663,95.78180763092996L338.3333333333333,95.50326418105325L338.3333333333333,95.50326418105325L349.99999999999994,96.04178151748152L349.99999999999994,96.04178151748152L361.66666666666663,104.68591324532133L361.66666666666663,104.68591324532133L373.3333333333333,111.38024082402438L373.3333333333333,111.38024082402438L385,105.17800667343681L385,105.17800667343681L396.66666666666663,110.39605396779342L396.66666666666663,110.39605396779342L408.3333333333333,107.21137385753664L408.3333333333333,107.21137385753664L420,110.6745974176701L420,110.6745974176701"></path></g><g class="nv-group nv-series-12" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(227, 119, 194); stroke: rgb(227, 119, 194);"><path class="nv-line" d="M0,294.2068765414188L0,294.2068765414188L11.666666666666666,286.5376468881474L11.666666666666666,286.5376468881474L23.333333333333332,275.6651675612941L23.333333333333332,275.6651675612941L35,271.2920353982301L35,271.2920353982301L46.666666666666664,276.8721891774264L46.666666666666664,276.8721891774264L58.333333333333336,282.63803858987376L58.333333333333336,282.63803858987376L70,279.67619323951834L70,279.67619323951834L81.66666666666666,276.7236326708255L81.66666666666666,276.7236326708255L93.33333333333333,274.244595966923L93.33333333333333,274.244595966923L105,269.4815029740316L105,269.4815029740316L116.66666666666667,268.7480052226897L116.66666666666667,268.7480052226897L128.33333333333331,265.13622515595534L128.33333333333331,265.13622515595534L140,264.80197301610326L140,264.80197301610326L151.66666666666666,259.6582039750472L151.66666666666666,259.6582039750472L163.33333333333331,259.23110401856957L163.33333333333331,259.23110401856957L174.99999999999997,264.59770781952705L174.99999999999997,264.59770781952705L186.66666666666666,262.5086319454519L186.66666666666666,262.5086319454519L198.33333333333331,263.929203539823L198.33333333333331,263.929203539823L210,269.6671986072827L210,269.6671986072827L221.66666666666669,274.45814594516173L221.66666666666669,274.45814594516173L233.33333333333334,274.8759611199768L233.33333333333334,274.8759611199768L244.99999999999997,272.14623531118525L244.99999999999997,272.14623531118525L256.66666666666663,270.038589873785L256.66666666666663,270.038589873785L268.3333333333333,269.37008559408093L268.3333333333333,269.37008559408093L280,276.7607717974757L280,276.7607717974757L291.66666666666663,276.5100826925867L291.66666666666663,276.5100826925867L303.3333333333333,274.4767155084869L303.3333333333333,274.4767155084869L315,275.1545045698535L315,275.1545045698535L326.66666666666663,270.7906571884521L326.66666666666663,270.7906571884521L338.3333333333333,270.85565066008996L338.3333333333333,270.85565066008996L349.99999999999994,270.72566371681415L349.99999999999994,270.72566371681415L361.66666666666663,263.7156535615842L361.66666666666663,263.7156535615842L373.3333333333333,265.2012186275932L373.3333333333333,265.2012186275932L385,264.74626432612797L385,264.74626432612797L396.66666666666663,264.1891774263746L396.66666666666663,264.1891774263746L408.3333333333333,260.21529087480053L408.3333333333333,260.21529087480053L420,266.74249238357754L420,266.74249238357754"></path></g><g class="nv-group nv-series-13" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(247, 182, 210); stroke: rgb(247, 182, 210);"><path class="nv-line" d="M0,282.5266212099231L0,282.5266212099231L11.666666666666666,278.84984767155083L11.666666666666666,278.84984767155083L23.333333333333332,267.4481357899318L23.333333333333332,267.4481357899318L35,257.1048890178442L35,257.1048890178442L46.666666666666664,262.86145364862904L46.666666666666664,262.86145364862904L58.333333333333336,264.6627012911649L58.333333333333336,264.6627012911649L70,266.8817641085159L70,266.8817641085159L81.66666666666666,269.11011170752937L81.66666666666666,269.11011170752937L93.33333333333333,260.80023211954153L93.33333333333333,260.80023211954153L105,254.0687654141883L105,254.0687654141883L116.66666666666667,238.5074713477441L116.66666666666667,238.5074713477441L128.33333333333331,236.45553460031917L128.33333333333331,236.45553460031917L140,236.4276802553315L140,236.4276802553315L151.66666666666666,238.30320615116784L151.66666666666666,238.30320615116784L163.33333333333331,241.45074713477442L163.33333333333331,241.45074713477442L174.99999999999997,238.74887567097056L174.99999999999997,238.74887567097056L186.66666666666666,244.66328159001887L186.66666666666666,244.66328159001887L198.33333333333331,244.21761207021615L198.33333333333331,244.21761207021615L210,246.9287683156826L210,246.9287683156826L221.66666666666669,250.72624401566807L221.66666666666669,250.72624401566807L233.33333333333334,259.0361236036559L233.33333333333334,259.0361236036559L244.99999999999997,246.29740316262877L244.99999999999997,246.29740316262877L256.66666666666663,241.35789931814884L256.66666666666663,241.35789931814884L268.3333333333333,233.63296097490206L268.3333333333333,233.63296097490206L280,228.2756419556071L280,228.2756419556071L291.66666666666663,223.21543594951402L291.66666666666663,223.21543594951402L303.3333333333333,218.2480777600464L303.3333333333333,218.2480777600464L315,218.6566081531989L315,218.6566081531989L326.66666666666663,216.32612795589728L326.66666666666663,216.32612795589728L338.3333333333333,218.9537211664007L338.3333333333333,218.9537211664007L349.99999999999994,223.1690120412012L349.99999999999994,223.1690120412012L361.66666666666663,221.55346003191644L361.66666666666663,221.55346003191644L373.3333333333333,216.86464529232555L373.3333333333333,216.86464529232555L385,220.13288843754535L385,220.13288843754535L396.66666666666663,224.75670970549834L396.66666666666663,224.75670970549834L408.3333333333333,228.2756419556071L408.3333333333333,228.2756419556071L420,235.95415639054113L420,235.95415639054113"></path></g><g class="nv-group nv-series-14" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(127, 127, 127); stroke: rgb(127, 127, 127);"><path class="nv-line" d="M0,262.9543014652546L0,262.9543014652546L11.666666666666666,244.75612940664442L11.666666666666666,244.75612940664442L23.333333333333332,228.84201363702306L23.333333333333332,228.84201363702306L35,194.3954736689395L35,194.3954736689395L46.666666666666664,186.35485274916584L46.666666666666664,186.35485274916584L58.333333333333336,202.6032206586392L58.333333333333336,202.6032206586392L70,207.42202234150588L70,207.42202234150588L81.66666666666666,212.25010880603512L81.66666666666666,212.25010880603512L93.33333333333333,181.3967793413608L93.33333333333333,181.3967793413608L105,181.22965327143478L105,181.22965327143478L116.66666666666667,175.15740606412302L116.66666666666667,175.15740606412302L128.33333333333331,162.85507036123605L128.33333333333331,162.85507036123605L140,146.81096764833887L140,146.81096764833887L151.66666666666666,137.33120557086897L151.66666666666666,137.33120557086897L163.33333333333331,147.67445234295664L163.33333333333331,147.67445234295664L174.99999999999997,164.8327288553605L174.99999999999997,164.8327288553605L186.66666666666666,158.4355142898593L186.66666666666666,158.4355142898593L198.33333333333331,161.46235311185262L198.33333333333331,161.46235311185262L210,159.4104163644277L210,159.4104163644277L221.66666666666669,168.546641520383L221.66666666666669,168.546641520383L233.33333333333334,166.2997243580444L233.33333333333334,166.2997243580444L244.99999999999997,166.70825475119688L244.99999999999997,166.70825475119688L256.66666666666663,164.63774844044684L256.66666666666663,164.63774844044684L268.3333333333333,151.01697374147687L268.3333333333333,151.01697374147687L280,143.42202234150588L280,143.42202234150588L291.66666666666663,148.35224140432325L291.66666666666663,148.35224140432325L303.3333333333333,146.35601334687365L303.3333333333333,146.35601334687365L315,140.65515740606412L315,140.65515740606412L326.66666666666663,135.73422312490933L326.66666666666663,135.73422312490933L338.3333333333333,131.00826925866824L338.3333333333333,131.00826925866824L349.99999999999994,129.1048890178442L349.99999999999994,129.1048890178442L361.66666666666663,122.71695923400551L361.66666666666663,122.71695923400551L373.3333333333333,125.73451327433628L373.3333333333333,125.73451327433628L385,119.56941825039894L385,119.56941825039894L396.66666666666663,122.06702451762658L396.66666666666663,122.06702451762658L408.3333333333333,108.05628898882927L408.3333333333333,108.05628898882927L420,110.98099521253445L420,110.98099521253445"></path></g><g class="nv-group nv-series-15" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(199, 199, 199); stroke: rgb(199, 199, 199);"><path class="nv-line" d="M0,262.86145364862904L0,262.86145364862904L0,262.86145364862904L0,262.86145364862904L11.666666666666666,242.36994051936747L11.666666666666666,242.36994051936747L11.666666666666666,242.36994051936747L11.666666666666666,242.36994051936747L23.333333333333332,213.99564775859568L23.333333333333332,213.99564775859568L23.333333333333332,213.99564775859568L23.333333333333332,213.99564775859568L35,199.9570578848107L35,199.9570578848107L35,199.9570578848107L35,199.9570578848107L46.666666666666664,208.34121572609894L46.666666666666664,208.34121572609894L46.666666666666664,208.34121572609894L46.666666666666664,208.34121572609894L58.333333333333336,208.67546786595096L58.333333333333336,208.67546786595096L58.333333333333336,208.67546786595096L58.333333333333336,208.67546786595096L70,211.44233280139272L70,211.44233280139272L70,211.44233280139272L70,211.44233280139272L81.66666666666666,214.218482518497L81.66666666666666,214.218482518497L81.66666666666666,214.218482518497L81.66666666666666,214.218482518497L93.33333333333333,166.67111562454664L93.33333333333333,166.67111562454664L93.33333333333333,166.67111562454664L93.33333333333333,166.67111562454664L105,159.7910924125925L105,159.7910924125925L105,159.7910924125925L105,159.7910924125925L116.66666666666667,153.39387784709123L116.66666666666667,153.39387784709123L116.66666666666667,153.39387784709123L116.66666666666667,153.39387784709123L128.33333333333331,126.45872624401565L128.33333333333331,126.45872624401565L128.33333333333331,126.45872624401565L128.33333333333331,126.45872624401565L140,136.6719860728275L140,136.6719860728275L140,136.6719860728275L140,136.6719860728275L151.66666666666666,125.21456550123315L151.66666666666666,125.21456550123315L151.66666666666666,125.21456550123315L151.66666666666666,125.21456550123315L163.33333333333331,118.334542289279L163.33333333333331,118.334542289279L163.33333333333331,118.334542289279L163.33333333333331,118.334542289279L174.99999999999997,138.21325982881183L174.99999999999997,138.21325982881183L174.99999999999997,138.21325982881183L174.99999999999997,138.21325982881183L186.66666666666666,147.9529957928333L186.66666666666666,147.9529957928333L186.66666666666666,147.9529957928333L186.66666666666666,147.9529957928333L198.33333333333331,153.9323951835195L198.33333333333331,153.9323951835195L198.33333333333331,153.9323951835195L198.33333333333331,153.9323951835195L210,159.18758160452632L210,159.18758160452632L210,159.18758160452632L210,159.18758160452632L221.66666666666669,163.90425068910488L221.66666666666669,163.90425068910488L221.66666666666669,163.90425068910488L221.66666666666669,163.90425068910488L233.33333333333334,165.7240678949659L233.33333333333334,165.7240678949659L233.33333333333334,165.7240678949659L233.33333333333334,165.7240678949659L244.99999999999997,160.24604671405774L244.99999999999997,160.24604671405774L244.99999999999997,160.24604671405774L244.99999999999997,160.24604671405774L256.66666666666663,159.65182068765415L256.66666666666663,159.65182068765415L256.66666666666663,159.65182068765415L256.66666666666663,159.65182068765415L268.3333333333333,146.26316553024807L268.3333333333333,146.26316553024807L268.3333333333333,146.26316553024807L268.3333333333333,146.26316553024807L280,133.23661685768172L280,133.23661685768172L280,133.23661685768172L280,133.23661685768172L291.66666666666663,123.9332656318004L291.66666666666663,123.9332656318004L291.66666666666663,123.9332656318004L291.66666666666663,123.9332656318004L303.3333333333333,117.50819672131146L303.3333333333333,117.50819672131146L303.3333333333333,117.50819672131146L303.3333333333333,117.50819672131146L315,113.08864064993472L315,113.08864064993472L315,113.08864064993472L315,113.08864064993472L326.66666666666663,116.86754678659511L326.66666666666663,116.86754678659511L326.66666666666663,116.86754678659511L326.66666666666663,116.86754678659511L338.3333333333333,117.14609023647176L338.3333333333333,117.14609023647176L338.3333333333333,117.14609023647176L338.3333333333333,117.14609023647176L349.99999999999994,116.44044683011754L349.99999999999994,116.44044683011754L349.99999999999994,116.44044683011754L349.99999999999994,116.44044683011754L361.66666666666663,131.80676048164804L361.66666666666663,131.80676048164804L361.66666666666663,131.80676048164804L361.66666666666663,131.80676048164804L373.3333333333333,118.47381401421731L373.3333333333333,118.47381401421731L373.3333333333333,118.47381401421731L373.3333333333333,118.47381401421731L385,110.50747134774409L385,110.50747134774409L385,110.50747134774409L385,110.50747134774409L396.66666666666663,115.11272305237199L396.66666666666663,115.11272305237199L396.66666666666663,115.11272305237199L396.66666666666663,115.11272305237199L408.3333333333333,116.4218772667924L408.3333333333333,116.4218772667924L408.3333333333333,116.4218772667924L408.3333333333333,116.4218772667924L420,127.23864790367037L420,127.23864790367037L420,127.23864790367037L420,127.23864790367037"></path></g><g class="nv-group nv-series-16" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(188, 189, 34); stroke: rgb(188, 189, 34);"><path class="nv-line" d="M0,254.78369360220512L0,254.78369360220512L11.666666666666666,237.11475409836066L11.666666666666666,237.11475409836066L23.333333333333332,200.82054257942843L23.333333333333332,200.82054257942843L35,191.60075438851007L35,191.60075438851007L46.666666666666664,197.79370375743508L46.666666666666664,197.79370375743508L58.333333333333336,197.27375598433193L58.333333333333336,197.27375598433193L70,199.4649644566952L70,199.4649644566952L81.66666666666666,201.65617292905847L81.66666666666666,201.65617292905847L93.33333333333333,190.9229653271435L93.33333333333333,190.9229653271435L105,180.54257942840562L105,180.54257942840562L116.66666666666667,169.8000870448281L116.66666666666667,169.8000870448281L128.33333333333331,167.51603075583927L128.33333333333331,167.51603075583927L140,154.64732337153634L140,154.64732337153634L151.66666666666666,144.35050050776152L151.66666666666666,144.35050050776152L163.33333333333331,167.91527636732917L163.33333333333331,167.91527636732917L174.99999999999997,188.40678949659076L174.99999999999997,188.40678949659076L186.66666666666666,181.1646597997969L186.66666666666666,181.1646597997969L198.33333333333331,175.27810822573625L198.33333333333331,175.27810822573625L210,187.00478746554475L210,187.00478746554475L221.66666666666669,189.92949368924997L221.66666666666669,189.92949368924997L233.33333333333334,189.42811547947193L233.33333333333334,189.42811547947193L244.99999999999997,183.30944436384738L244.99999999999997,183.30944436384738L256.66666666666663,183.42086174379807L256.66666666666663,183.42086174379807L268.3333333333333,176.8379515450457L268.3333333333333,176.8379515450457L280,167.62744813578993L280,167.62744813578993L291.66666666666663,171.85202379225302L291.66666666666663,171.85202379225302L303.3333333333333,173.62541708980126L303.3333333333333,173.62541708980126L315,169.8000870448281L315,169.8000870448281L326.66666666666663,171.0071086609604L326.66666666666663,171.0071086609604L338.3333333333333,167.8874220223415L338.3333333333333,167.8874220223415L349.99999999999994,167.34890468591323L349.99999999999994,167.34890468591323L361.66666666666663,162.53938778470913L361.66666666666663,162.53938778470913L373.3333333333333,162.07514870158133L373.3333333333333,162.07514870158133L385,158.7233425213985L385,158.7233425213985L396.66666666666663,163.33787900768897L396.66666666666663,163.33787900768897L408.3333333333333,163.59785289424053L408.3333333333333,163.59785289424053L420,169.2708544900624L420,169.2708544900624"></path></g><g class="nv-group nv-series-17" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(219, 219, 141); stroke: rgb(219, 219, 141);"><path class="nv-line" d="M0,221.9712752067315L0,221.9712752067315L11.666666666666666,201.38691426084432L11.666666666666666,201.38691426084432L23.333333333333332,185.91846801102568L23.333333333333332,185.91846801102568L35,170.30146525460611L35,170.30146525460611L46.666666666666664,168.0545480922675L46.666666666666664,168.0545480922675L58.333333333333336,177.84999274626432L58.333333333333336,177.84999274626432L70,166.68968518787176L70,166.68968518787176L81.66666666666666,155.5293776294792L81.66666666666666,155.5293776294792L93.33333333333333,135.80850137820977L93.33333333333333,135.80850137820977L105,139.4759901349195L105,139.4759901349195L116.66666666666667,146.17960249528508L116.66666666666667,146.17960249528508L128.33333333333331,138.98389670680402L128.33333333333331,138.98389670680402L140,126.30088495575222L140,126.30088495575222L151.66666666666666,127.92572174669957L151.66666666666666,127.92572174669957L163.33333333333331,131.65820397504714L163.33333333333331,131.65820397504714L174.99999999999997,145.97533729870884L174.99999999999997,145.97533729870884L186.66666666666666,151.4162193529668L186.66666666666666,151.4162193529668L198.33333333333331,180.32902945016684L198.33333333333331,180.32902945016684L210,163.33787900768897L210,163.33787900768897L221.66666666666669,172.6597997968954L221.66666666666669,172.6597997968954L233.33333333333334,174.73030610764545L233.33333333333334,174.73030610764545L244.99999999999997,179.75337298708834L244.99999999999997,179.75337298708834L256.66666666666663,183.44871608878572L256.66666666666663,183.44871608878572L268.3333333333333,175.64021471057595L268.3333333333333,175.64021471057595L280,158.4355142898593L280,158.4355142898593L291.66666666666663,188.75032641810532L291.66666666666663,188.75032641810532L303.3333333333333,173.98752357464093L303.3333333333333,173.98752357464093L315,177.59930364137531L315,177.59930364137531L326.66666666666663,179.14057739735964L326.66666666666663,179.14057739735964L338.3333333333333,172.43696503699405L338.3333333333333,172.43696503699405L349.99999999999994,171.74060641230233L349.99999999999994,171.74060641230233L361.66666666666663,170.93283040765994L361.66666666666663,170.93283040765994L373.3333333333333,168.49093283040764L373.3333333333333,168.49093283040764L385,164.70274191208472L385,164.70274191208472L396.66666666666663,162.16799651820688L396.66666666666663,162.16799651820688L408.3333333333333,161.10024662701292L408.3333333333333,161.10024662701292L420,168.43522414043233L420,168.43522414043233"></path></g><g class="nv-group nv-series-18" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(23, 190, 207); stroke: rgb(23, 190, 207);"><path class="nv-line" d="M0,307.81836645872625L0,307.81836645872625L11.666666666666666,300.79907152183375L11.666666666666666,300.79907152183375L23.333333333333332,289.1281009720006L23.333333333333332,289.1281009720006L35,286.7047729580734L35,286.7047729580734L46.666666666666664,290.8829247062237L46.666666666666664,290.8829247062237L58.333333333333336,290.19585086319455L58.333333333333336,290.19585086319455L70,294.2533004497316L70,294.2533004497316L81.66666666666666,298.32003481793123L81.66666666666666,298.32003481793123L93.33333333333333,293.8076309299289L93.33333333333333,293.8076309299289L105,292.1642245756565L105,292.1642245756565L116.66666666666667,289.27665747860146L116.66666666666667,289.27665747860146L128.33333333333331,294.1325982881184L128.33333333333331,294.1325982881184L140,291.30073988103874L140,291.30073988103874L151.66666666666666,258.2562019440012L151.66666666666666,258.2562019440012L163.33333333333331,249.41708980124764L163.33333333333331,249.41708980124764L174.99999999999997,251.61758305527346L174.99999999999997,251.61758305527346L186.66666666666666,242.128536196141L186.66666666666666,242.128536196141L198.33333333333331,240.81009720005804L198.33333333333331,240.81009720005804L210,230.98679820107355L210,230.98679820107355L221.66666666666669,228.12708544900624L221.66666666666669,228.12708544900624L233.33333333333334,223.33613811112724L233.33333333333334,223.33613811112724L244.99999999999997,219.1208472363267L244.99999999999997,219.1208472363267L256.66666666666663,219.4272450311911L256.66666666666663,219.4272450311911L268.3333333333333,217.32888437545336L268.3333333333333,217.32888437545336L280,210.8945306833019L280,210.8945306833019L291.66666666666663,201.10837081096764L291.66666666666663,201.10837081096764L303.3333333333333,194.48832148556505L303.3333333333333,194.48832148556505L315,172.9940519367474L315,172.9940519367474L326.66666666666663,173.45829101987525L326.66666666666663,173.45829101987525L338.3333333333333,169.80937182649063L338.3333333333333,169.80937182649063L349.99999999999994,168.29595241549399L349.99999999999994,168.29595241549399L361.66666666666663,163.9878137240679L361.66666666666663,163.9878137240679L373.3333333333333,166.77324822283475L373.3333333333333,166.77324822283475L385,160.32960974902073L385,160.32960974902073L396.66666666666663,161.94516175830555L396.66666666666663,161.94516175830555L408.3333333333333,167.89670680400408L408.3333333333333,167.89670680400408L420,175.25953866241113L420,175.25953866241113"></path></g><g class="nv-group nv-series-19" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(158, 218, 229); stroke: rgb(158, 218, 229);"><path class="nv-line" d="M0,293.7240678949659L0,293.7240678949659L11.666666666666666,288.58029885390977L11.666666666666666,288.58029885390977L23.333333333333332,274.2538807485855L23.333333333333332,274.2538807485855L35,275.62802843464385L35,275.62802843464385L46.666666666666664,257.2998694327579L46.666666666666664,257.2998694327579L58.333333333333336,272.6940374292761L58.333333333333336,272.6940374292761L70,271.93268533294645L70,271.93268533294645L81.66666666666666,271.1806180182794L81.66666666666666,271.1806180182794L93.33333333333333,260.73523864790366L93.33333333333333,260.73523864790366L105,262.4250689104889L105,262.4250689104889L116.66666666666667,258.2654867256637L116.66666666666667,258.2654867256637L128.33333333333331,253.48382416944727L128.33333333333331,253.48382416944727L140,255.2757870303206L140,255.2757870303206L151.66666666666666,263.88277963151023L151.66666666666666,263.88277963151023L163.33333333333331,272.84259393587695L163.33333333333331,272.84259393587695L174.99999999999997,269.79718555055854L174.99999999999997,269.79718555055854L186.66666666666666,272.59190483098797L186.66666666666666,272.59190483098797L198.33333333333331,271.12490932830406L198.33333333333331,271.12490932830406L210,274.92238502828957L210,274.92238502828957L221.66666666666669,278.0142173219208L221.66666666666669,278.0142173219208L233.33333333333334,278.08849557522126L233.33333333333334,278.08849557522126L244.99999999999997,276.70506310750034L244.99999999999997,276.70506310750034L256.66666666666663,273.7339329754824L256.66666666666663,273.7339329754824L268.3333333333333,270.29856376033655L268.3333333333333,270.29856376033655L280,289.77803568837953L280,289.77803568837953L291.66666666666663,289.5366313651531L291.66666666666663,289.5366313651531L303.3333333333333,289.85231394168L303.3333333333333,289.85231394168L315,289.85231394168L315,289.85231394168L326.66666666666663,288.2367619323952L326.66666666666663,288.2367619323952L338.3333333333333,286.10126215000724L338.3333333333333,286.10126215000724L349.99999999999994,286.73262730306107L349.99999999999994,286.73262730306107L361.66666666666663,284.49499492238505L361.66666666666663,284.49499492238505L373.3333333333333,281.95096474684465L373.3333333333333,281.95096474684465L385,281.52386479036704L385,281.52386479036704L396.66666666666663,282.3966342666473L396.66666666666663,282.3966342666473L408.3333333333333,283.06513854635136L408.3333333333333,283.06513854635136L420,284.07717974756997L420,284.07717974756997"></path></g><g class="nv-group nv-series-20" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(31, 119, 180); stroke: rgb(31, 119, 180);"><path class="nv-line" d="M0,296.9830262585231L0,296.9830262585231L11.666666666666666,289.3137966052517L11.666666666666666,289.3137966052517L23.333333333333332,272.75903090091396L23.333333333333332,272.75903090091396L35,267.9587987813724L35,267.9587987813724L46.666666666666664,277.1135935006528L46.666666666666664,277.1135935006528L58.333333333333336,274.6809807050631L58.333333333333336,274.6809807050631L70,276.900043522414L70,276.900043522414L81.66666666666666,279.1283911214275L81.66666666666666,279.1283911214275L93.33333333333333,278.2463368634847L93.33333333333333,278.2463368634847L105,281.0596257072392L105,281.0596257072392L116.66666666666667,269.79718555055854L116.66666666666667,269.79718555055854L128.33333333333331,272.4897722326998L128.33333333333331,272.4897722326998L140,271.84912229798346L140,271.84912229798346L151.66666666666666,267.47599013491947L151.66666666666666,267.47599013491947L163.33333333333331,277.77281299869435L163.33333333333331,277.77281299869435L174.99999999999997,277.26215000725375L174.99999999999997,277.26215000725375L186.66666666666666,276.37081096764837L186.66666666666666,276.37081096764837L198.33333333333331,282.8887276947628L198.33333333333331,282.8887276947628L210,281.9881038734949L210,281.9881038734949L221.66666666666669,281.0781952705643L221.66666666666669,281.0781952705643L233.33333333333334,283.2694037429276L233.33333333333334,283.2694037429276L244.99999999999997,274.7274046133759L244.99999999999997,274.7274046133759L256.66666666666663,276.5936457275497L256.66666666666663,276.5936457275497L268.3333333333333,273.2139852023792L268.3333333333333,273.2139852023792L280,268.87799216596545L280,268.87799216596545L291.66666666666663,275.58160452633103L291.66666666666663,275.58160452633103L303.3333333333333,276.74220223415057L303.3333333333333,276.74220223415057L315,273.16756129406645L315,273.16756129406645L326.66666666666663,264.06847526476133L326.66666666666663,264.06847526476133L338.3333333333333,262.24865805890033L338.3333333333333,262.24865805890033L349.99999999999994,260.03888002321196L349.99999999999994,260.03888002321196L361.66666666666663,261.0973451327434L361.66666666666663,261.0973451327434L373.3333333333333,261.05092122443057L373.3333333333333,261.05092122443057L385,260.44741041636445L385,260.44741041636445L396.66666666666663,257.4298563760336L396.66666666666663,257.4298563760336L408.3333333333333,261.12519947773103L408.3333333333333,261.12519947773103L420,259.08254751196864L420,259.08254751196864"></path></g><g class="nv-group nv-series-21" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(174, 199, 232); stroke: rgb(174, 199, 232);"><path class="nv-line" d="M0,216.31684317423475L0,216.31684317423475L11.666666666666666,211.13593500652837L11.666666666666666,211.13593500652837L23.333333333333332,160.7195705788481L23.333333333333332,160.7195705788481L35,201.60046423908312L35,201.60046423908312L46.666666666666664,206.34498766864937L46.666666666666664,206.34498766864937L58.333333333333336,214.0977803568838L58.333333333333336,214.0977803568838L70,213.0393152473524L70,213.0393152473524L81.66666666666666,211.99013491948352L81.66666666666666,211.99013491948352L93.33333333333333,191.35006528362106L93.33333333333333,191.35006528362106L105,195.28681270854491L105,195.28681270854491L116.66666666666667,174.48890178441897L116.66666666666667,174.48890178441897L128.33333333333331,156.95923400551283L128.33333333333331,156.95923400551283L140,184.3029160017409L140,184.3029160017409L151.66666666666666,194.05193674742492L151.66666666666666,194.05193674742492L163.33333333333331,193.38343246772087L163.33333333333331,193.38343246772087L174.99999999999997,207.05063107500365L174.99999999999997,207.05063107500365L186.66666666666666,191.74002611344844L186.66666666666666,191.74002611344844L198.33333333333331,201.42405338749455L198.33333333333331,201.42405338749455L210,191.58218482518498L210,191.58218482518498L221.66666666666669,193.81053242419847L221.66666666666669,193.81053242419847L233.33333333333334,193.75482373422312L233.33333333333334,193.75482373422312L244.99999999999997,195.09183229363123L244.99999999999997,195.09183229363123L256.66666666666663,193.21630639779488L256.66666666666663,193.21630639779488L268.3333333333333,183.77368344697518L268.3333333333333,183.77368344697518L280,174.85100826925867L280,174.85100826925867L291.66666666666663,182.4366748875671L291.66666666666663,182.4366748875671L303.3333333333333,177.04221674162193L303.3333333333333,177.04221674162193L315,170.83998259103438L315,170.83998259103438L326.66666666666663,169.36370230668794L326.66666666666663,169.36370230668794L338.3333333333333,164.29421151893226L338.3333333333333,164.29421151893226L349.99999999999994,176.43870593355578L349.99999999999994,176.43870593355578L361.66666666666663,155.10227767300162L361.66666666666663,155.10227767300162L373.3333333333333,162.70651385463515L373.3333333333333,162.70651385463515L385,151.74118671115625L385,151.74118671115625L396.66666666666663,160.69171623386043L396.66666666666663,160.69171623386043L408.3333333333333,164.77702016538518L408.3333333333333,164.77702016538518L420,174.86029305092123L420,174.86029305092123"></path></g><g class="nv-group nv-series-22" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 127, 14); stroke: rgb(255, 127, 14);"><path class="nv-line" d="M0,282.3037864500218L0,282.3037864500218L11.666666666666666,262.58291019875236L11.666666666666666,262.58291019875236L23.333333333333332,242.82489482083272L23.333333333333332,242.82489482083272L35,204.6180182794139L35,204.6180182794139L46.666666666666664,230.33686348469462L46.666666666666664,230.33686348469462L58.333333333333336,229.83548527491658L58.333333333333336,229.83548527491658L70,236.36268678369362L70,236.36268678369362L81.66666666666666,242.88988829247063L81.66666666666666,242.88988829247063L93.33333333333333,236.56695198026983L93.33333333333333,236.56695198026983L105,231.76671986072827L105,231.76671986072827L116.66666666666667,232.33309154214422L116.66666666666667,232.33309154214422L128.33333333333331,214.60844334832439L128.33333333333331,214.60844334832439L140,216.74394313071232L140,216.74394313071232L151.66666666666666,209.2232699840418L151.66666666666666,209.2232699840418L163.33333333333331,208.0069635862469L163.33333333333331,208.0069635862469L174.99999999999997,212.482228347599L174.99999999999997,212.482228347599L186.66666666666666,193.76410851588568L186.66666666666666,193.76410851588568L198.33333333333331,204.6830117510518L198.33333333333331,204.6830117510518L210,200.74626432612797L210,200.74626432612797L221.66666666666669,209.6225155955317L221.66666666666669,209.6225155955317L233.33333333333334,205.70433773393296L233.33333333333334,205.70433773393296L244.99999999999997,211.2566371681416L244.99999999999997,211.2566371681416L256.66666666666663,206.5678224285507L256.66666666666663,206.5678224285507L268.3333333333333,206.34498766864937L268.3333333333333,206.34498766864937L280,207.1434788916292L280,207.1434788916292L291.66666666666663,208.38763963441173L291.66666666666663,208.38763963441173L303.3333333333333,216.3446975192224L303.3333333333333,216.3446975192224L315,200.08704482808645L315,200.08704482808645L326.66666666666663,206.40998114028724L326.66666666666663,206.40998114028724L338.3333333333333,204.26519657623678L338.3333333333333,204.26519657623678L349.99999999999994,212.32438705933555L349.99999999999994,212.32438705933555L361.66666666666663,208.33193094443638L361.66666666666663,208.33193094443638L373.3333333333333,201.48904685913246L373.3333333333333,201.48904685913246L385,200.27274046133758L385,200.27274046133758L396.66666666666663,202.983896706804L396.66666666666663,202.983896706804L408.3333333333333,209.08399825910345L408.3333333333333,209.08399825910345L420,219.85434498766864L420,219.85434498766864"></path></g><g class="nv-group nv-series-23" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 187, 120); stroke: rgb(255, 187, 120);"><path class="nv-line" d="M0,283.2694037429276L0,283.2694037429276L11.666666666666666,280.01044537937037L11.666666666666666,280.01044537937037L23.333333333333332,279.9268823444074L23.333333333333332,279.9268823444074L35,281.9881038734949L35,281.9881038734949L46.666666666666664,288.0139271724938L46.666666666666664,288.0139271724938L58.333333333333336,293.1948353402002L58.333333333333336,293.1948353402002L70,291.839257217467L70,291.839257217467L81.66666666666666,290.49296387639635L81.66666666666666,290.49296387639635L93.33333333333333,290.0472943565936L93.33333333333333,290.0472943565936L105,288.4410271289714L105,288.4410271289714L116.66666666666667,282.96300594806326L116.66666666666667,282.96300594806326L128.33333333333331,281.8116930219063L128.33333333333331,281.8116930219063L140,282.2759321050341L140,282.2759321050341L151.66666666666666,283.3993906862034L151.66666666666666,283.3993906862034L163.33333333333331,283.88219933265634L163.33333333333331,283.88219933265634L174.99999999999997,287.2711446394893L174.99999999999997,287.2711446394893L186.66666666666666,288.05106629914405L186.66666666666666,288.05106629914405L198.33333333333331,291.80211809081675L198.33333333333331,291.80211809081675L210,286.7047729580734L210,286.7047729580734L221.66666666666669,288.0789206441317L221.66666666666669,288.0789206441317L233.33333333333334,290.4836790947338L233.33333333333334,290.4836790947338L244.99999999999997,291.50500507761495L244.99999999999997,291.50500507761495L256.66666666666663,292.22921804729435L256.66666666666663,292.22921804729435L268.3333333333333,289.18380966197594L268.3333333333333,289.18380966197594L280,290.5301030030466L280,290.5301030030466L291.66666666666663,292.4891919338459L291.66666666666663,292.4891919338459L303.3333333333333,291.755694182504L303.3333333333333,291.755694182504L315,292.7120266937473L315,292.7120266937473L326.66666666666663,267.9309444363847L326.66666666666663,267.9309444363847L338.3333333333333,270.40998114028724L338.3333333333333,270.40998114028724L349.99999999999994,270.52139852023794L349.99999999999994,270.52139852023794L361.66666666666663,289.96373132163063L361.66666666666663,289.96373132163063L373.3333333333333,291.5699985492529L373.3333333333333,291.5699985492529L385,286.9554620629624L385,286.9554620629624L396.66666666666663,291.43072682431455L396.66666666666663,291.43072682431455L408.3333333333333,291.50500507761495L408.3333333333333,291.50500507761495L420,293.324822283476L420,293.324822283476"></path></g><g class="nv-group nv-series-24" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(44, 160, 44); stroke: rgb(44, 160, 44);"><path class="nv-line" d="M11.666666666666666,287.9582184825185L23.333333333333332,271.68199622805747L35,261.1994777310315L46.666666666666664,266.7053532569273L58.333333333333336,268.58087915276366L70,269.09154214420425L81.66666666666666,269.60220513564485L93.33333333333333,266.6960684752648L105,258.2654867256637L116.66666666666667,258.971130132018L128.33333333333331,251.80327868852459L140,245.8053097345133L151.66666666666666,255.22936312200784L163.33333333333331,250.2898592775279L174.99999999999997,255.97214565501235L186.66666666666666,257.15131292615695L198.33333333333331,262.6200493254026L210,268.1444944146235L221.66666666666669,270.40998114028724L233.33333333333334,268.9151312926157L244.99999999999997,268.07021616132306L256.66666666666663,265.73045118235893L268.3333333333333,264.74626432612797L280,261.0880603510808L291.66666666666663,262.15581024227475L303.3333333333333,261.691571159147L315,261.4780211809082L326.66666666666663,260.790947337879L338.3333333333333,258.5440301755404L349.99999999999994,256.9099086029305L361.66666666666663,254.67227622225448L373.3333333333333,253.5395328594226L385,256.3249673581895L396.66666666666663,258.9432757870303L408.3333333333333,256.6127955897287L420,258.0147976207747"></path></g><g class="nv-group nv-series-25" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(152, 223, 138); stroke: rgb(152, 223, 138);"><path class="nv-line" d="M11.666666666666666,292.43348324387057L11.666666666666666,292.43348324387057L11.666666666666666,292.43348324387057L23.333333333333332,274.5417089801248L23.333333333333332,274.5417089801248L23.333333333333332,274.5417089801248L35,270.8463658784274L35,270.8463658784274L35,270.8463658784274L46.666666666666664,278.3948933700856L46.666666666666664,278.3948933700856L46.666666666666664,278.3948933700856L58.333333333333336,281.4681561003917L58.333333333333336,281.4681561003917L58.333333333333336,281.4681561003917L70,284.30001450747136L70,284.30001450747136L70,284.30001450747136L81.66666666666666,287.14115769621355L81.66666666666666,287.14115769621355L81.66666666666666,287.14115769621355L93.33333333333333,279.49049760626724L93.33333333333333,279.49049760626724L93.33333333333333,279.49049760626724L105,274.80168286667634L105,274.80168286667634L105,274.80168286667634L116.66666666666667,268.0052226896852L116.66666666666667,268.0052226896852L116.66666666666667,268.0052226896852L128.33333333333331,269.0822573625417L128.33333333333331,269.0822573625417L128.33333333333331,269.0822573625417L140,266.5103728420136L140,266.5103728420136L140,266.5103728420136L151.66666666666666,265.91614681561003L151.66666666666666,265.91614681561003L151.66666666666666,265.91614681561003L163.33333333333331,268.1444944146235L163.33333333333331,268.1444944146235L163.33333333333331,268.1444944146235L174.99999999999997,273.26969389235455L174.99999999999997,273.26969389235455L174.99999999999997,273.26969389235455L186.66666666666666,274.6345567967503L186.66666666666666,274.6345567967503L186.66666666666666,274.6345567967503L198.33333333333331,273.260409110692L198.33333333333331,273.260409110692L198.33333333333331,273.260409110692L210,276.64006963586246L210,276.64006963586246L210,276.64006963586246L221.66666666666669,277.884230378645L221.66666666666669,277.884230378645L221.66666666666669,277.884230378645L233.33333333333334,279.8526040911069L233.33333333333334,279.8526040911069L233.33333333333334,279.8526040911069L244.99999999999997,277.86566081531987L244.99999999999997,277.86566081531987L244.99999999999997,277.86566081531987L256.66666666666663,278.2091977368345L256.66666666666663,278.2091977368345L256.66666666666663,278.2091977368345L268.3333333333333,272.45263310604963L268.3333333333333,272.45263310604963L268.3333333333333,272.45263310604963L280,266.7239228202524L280,266.7239228202524L280,266.7239228202524L291.66666666666663,265.581894675758L291.66666666666663,265.581894675758L291.66666666666663,265.581894675758L303.3333333333333,263.5299579283331L303.3333333333333,263.5299579283331L303.3333333333333,263.5299579283331L315,262.1001015522994L315,262.1001015522994L315,262.1001015522994L326.66666666666663,261.691571159147L326.66666666666663,261.691571159147L326.66666666666663,261.691571159147L338.3333333333333,258.11693021906285L338.3333333333333,258.11693021906285L338.3333333333333,258.11693021906285L349.99999999999994,256.1485565066009L349.99999999999994,256.1485565066009L349.99999999999994,256.1485565066009L361.66666666666663,254.34730886406498L361.66666666666663,254.34730886406498L361.66666666666663,254.34730886406498L373.3333333333333,253.16814159292034L373.3333333333333,253.16814159292034L373.3333333333333,253.16814159292034L385,249.96489191933847L385,249.96489191933847L385,249.96489191933847L396.66666666666663,251.62686783693601L396.66666666666663,251.62686783693601L396.66666666666663,251.62686783693601L408.3333333333333,249.10140722472073L408.3333333333333,249.10140722472073L408.3333333333333,249.10140722472073L420,247.08660960394604L420,247.08660960394604L420,247.08660960394604"></path></g><g class="nv-group nv-series-26" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(214, 39, 40); stroke: rgb(214, 39, 40);"><path class="nv-line" d="M11.666666666666666,235.31350645582475L23.333333333333332,191.31292615697083L35,167.59959379080226L46.666666666666664,175.7794864355143L58.333333333333336,185.5749310895111L70,184.37719425504133L81.66666666666666,183.18874220223415L93.33333333333333,195.16611054693166L105,189.61381111272306L116.66666666666667,183.84796170027565L128.33333333333331,185.5935006528362L140,173.95966922965326L151.66666666666666,182.0559988394023L163.33333333333331,195.72319744668505L174.99999999999997,201.70259683737126L186.66666666666666,210.6438415784129L198.33333333333331,205.63934426229508L210,214.97983461482664L221.66666666666669,221.9062817350936L233.33333333333334,223.86537066589293L244.99999999999997,221.77629479181778L256.66666666666663,221.48846656027854L268.3333333333333,213.29928913390398L280,208.21122878282316L291.66666666666663,208.26693747279847L303.3333333333333,205.11011170752937L315,204.27448135789933L326.66666666666663,198.5736254170898L338.3333333333333,189.71594371101116L349.99999999999994,182.79878137240678L361.66666666666663,179.28913390396053L373.3333333333333,189.29812853619615L385,195.38894530683302L396.66666666666663,194.9247062237052L408.3333333333333,193.5319889743218L420,198.7686058320035"></path></g><g class="nv-group nv-series-27" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 152, 150); stroke: rgb(255, 152, 150);"><path class="nv-line" d="M11.666666666666666,296.2680980705063L23.333333333333332,284.0400406209198L35,275.3494849847672L46.666666666666664,276.482228347599L58.333333333333336,281.5888582620049L70,279.3048019730161L81.66666666666666,277.02074568402725L93.33333333333333,271.76555926302046L105,270.75351806180186L116.66666666666667,268.66444218772665L128.33333333333331,264.09632960974903L140,260.3267082547512L151.66666666666666,262.18366458726246L163.33333333333331,260.13172783983754L174.99999999999997,265.6004642390831L186.66666666666666,264.81125779776585L198.33333333333331,266.816770636878L210,271.68199622805747L221.66666666666669,271.9883940229218L233.33333333333334,272.84259393587695L244.99999999999997,270.3821267952996L256.66666666666663,268.5344552444509L268.3333333333333,268.05164659799794L280,264.00348179312346L291.66666666666663,264.11489917307415L303.3333333333333,263.01001015522996L315,262.79646017699116L326.66666666666663,262.4250689104889L338.3333333333333,260.93021906281734L349.99999999999994,259.9646017699115L361.66666666666663,258.1262150007254L373.3333333333333,256.76135209632963L385,257.9312345858117L396.66666666666663,259.7603365733353L408.3333333333333,262.96358624691715L420,265.93471637893515"></path></g><g class="nv-group nv-series-28" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(148, 103, 189); stroke: rgb(148, 103, 189);"><path class="nv-line" d="M23.333333333333332,307.52125344552445L35,307.1870013056724L46.666666666666664,307.31698824894823L58.333333333333336,309.2110837081097L70,308.87683156825767L81.66666666666666,308.54257942840565L93.33333333333333,307.7905121137386L105,306.41636442768026L116.66666666666667,306.16567532279123L128.33333333333331,305.6178732047004L140,304.93079936167123L151.66666666666666,304.63368634846944L163.33333333333331,304.16944726534166L174.99999999999997,304.9865080516466L186.66666666666666,306.09139706949077L198.33333333333331,305.9428405628899L210,306.2213840127666L221.66666666666669,307.00130567242127L233.33333333333334,307.21485565066007L244.99999999999997,306.6391991875816L256.66666666666663,306.7227622225446L268.3333333333333,306.0264035978529L280,306.044973161178L291.66666666666663,306.0078340345278L303.3333333333333,306.2492383577542L315,305.5157406064123L326.66666666666663,305.6642971130132L338.3333333333333,305.57144929638764L349.99999999999994,305.06078630494704L361.66666666666663,304.87509067169594L373.3333333333333,305.627157986363L385,305.4136080081242L396.66666666666663,305.67358189467575L408.3333333333333,305.6457275496881L420,305.6364427680255"></path></g><g class="nv-group nv-series-29" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(197, 176, 213); stroke: rgb(197, 176, 213);"><path class="nv-line" d="M23.333333333333332,296.46307848542L35,295.5067459741767L46.666666666666664,301.28188016828665L58.333333333333336,302.81386914260844L70,302.03394748295375L81.66666666666666,301.26331060496153L93.33333333333333,302.2753518061802L105,301.1890323516611L116.66666666666667,300.58552154359495L128.33333333333331,300.0098650805165L140,299.517771652401L151.66666666666666,302.33106049615554L163.33333333333331,301.3654432032497L174.99999999999997,303.03670390250977L186.66666666666666,305.4507471347744L198.33333333333331,304.8379515450457L210,304.14159292035396L221.66666666666669,305.80356883795156L233.33333333333334,304.8565211083708L244.99999999999997,304.6244015668069L256.66666666666663,304.06731466705355L268.3333333333333,303.2688234440737L280,302.7860147976208L291.66666666666663,302.84172348759614L303.3333333333333,302.3681996228057L315,302.2289278978674L326.66666666666663,303.02741912084724L338.3333333333333,302.43319309444365L349.99999999999994,303.03670390250977L361.66666666666663,301.6347018714638L373.3333333333333,301.80182794138983L385,302.2753518061802L396.66666666666663,302.8788626142463L408.3333333333333,303.01813433918466L420,303.7144929638764"></path></g><g class="nv-group nv-series-30" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(140, 86, 75); stroke: rgb(140, 86, 75);"><path class="nv-line" d="M23.333333333333332,297.8929348614536L35,293.86333961990425L46.666666666666664,299.8984477005658L58.333333333333336,299.39706949078777L70,299.0163934426229L81.66666666666666,298.6450021761207L93.33333333333333,292.7027419120847L105,290.3722617147831L116.66666666666667,288.13462933410705L128.33333333333331,285.99912955171914L140,284.17002756419555L151.66666666666666,284.19788190918325L163.33333333333331,284.40214710575947L174.99999999999997,287.12258813288844L186.66666666666666,288.37603365733355L198.33333333333331,289.96373132163063L210,290.36297693312054L221.66666666666669,290.70651385463515L233.33333333333334,291.2914550993762L244.99999999999997,290.11228782823156L256.66666666666663,289.8244595966923L268.3333333333333,287.716814159292L280,287.85608588423037L291.66666666666663,287.9953576091687L303.3333333333333,288.7102857971856L315,288.2089075874075L326.66666666666663,292.9162918903235L338.3333333333333,294.27187001305674L349.99999999999994,294.0397504714928L361.66666666666663,294.3461482663572L373.3333333333333,295.92456114899176L385,296.1381111272305L396.66666666666663,296.9923110401857L408.3333333333333,298.3107500362687L420,299.65704337733933"></path></g><g class="nv-group nv-series-31" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(196, 156, 148); stroke: rgb(196, 156, 148);"><path class="nv-line" d="M23.333333333333332,285.7484404468301L35,286.9833164079501L46.666666666666664,299.7313216306398L58.333333333333336,298.5985782678079L70,299.3413608008124L81.66666666666666,300.09342811547947L93.33333333333333,300.17699115044246L105,298.04149136805455L116.66666666666667,295.5531698824895L128.33333333333331,293.97475699985495L140,295.30248077760046L151.66666666666666,296.62091977368345L163.33333333333331,298.12505440301754L174.99999999999997,300.35340200203103L186.66666666666666,300.09342811547947L198.33333333333331,301.82039750471495L210,299.78703032061514L221.66666666666669,300.50195850863196L233.33333333333334,300.0655737704918L244.99999999999997,298.45930654286957L256.66666666666663,297.8929348614536L268.3333333333333,294.90323516611056L280,293.16698099521255L291.66666666666663,292.34063542724505L303.3333333333333,291.2636007543885L315,290.67865950964745L326.66666666666663,290.8457855795735L338.3333333333333,287.6889598143044L349.99999999999994,287.6146815610039L361.66666666666663,287.02045553460033L373.3333333333333,287.86537066589295L385,288.3388945306833L396.66666666666663,289.60162483679096L408.3333333333333,289.7594661250544L420,291.12432902945017"></path></g><g class="nv-group nv-series-32" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(227, 119, 194); stroke: rgb(227, 119, 194);"><path class="nv-line" d="M23.333333333333332,266.9374727984912L35,258.79471928042943L46.666666666666664,259.51893225010883L58.333333333333336,265.34977513419415L70,266.10184244886113L81.66666666666666,266.86319454519077L93.33333333333333,267.12316843174233L105,263.68779921659655L116.66666666666667,261.22733207601914L128.33333333333331,242.3885100826926L140,237.67184099811402L151.66666666666666,238.42390831278107L163.33333333333331,239.49165820397505L174.99999999999997,242.24923835775425L186.66666666666666,238.8417234875961L198.33333333333331,268.135209632961L210,248.78572464819382L221.66666666666669,251.23690700710864L233.33333333333334,249.95560713767588L244.99999999999997,246.42739010590455L256.66666666666663,244.57971855505585L268.3333333333333,238.83243870593355L280,235.8334542289279L291.66666666666663,235.89844770056578L303.3333333333333,234.02292180472944L315,230.9960829827361L326.66666666666663,235.59204990570146L338.3333333333333,227.0964746844625L349.99999999999994,223.10401856956332L361.66666666666663,221.3491948353402L373.3333333333333,226.0565791382562L385,224.4874510372842L396.66666666666663,227.70927027419123L408.3333333333333,228.6470332221094L420,234.19004787465545"></path></g><g class="nv-group nv-series-33" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(247, 182, 210); stroke: rgb(247, 182, 210);"><path class="nv-line" d="M35,233.16872189177425L46.666666666666664,224.83098795879877L58.333333333333336,225.5459161468156L70,226.06586391991874L81.66666666666666,226.59509647468445L93.33333333333333,224.9331205570869L105,214.84984767155083L116.66666666666667,244.64471202669375L128.33333333333331,243.69766429711302L140,237.34687363992458L151.66666666666666,231.50674597417668L163.33333333333331,231.96170027564193L174.99999999999997,230.29043957638183L186.66666666666666,229.74263745829103L198.33333333333331,220.5414188306978L210,228.1549397939939L221.66666666666669,230.37400261134485L233.33333333333334,232.65805890033369L244.99999999999997,229.3898157551139L256.66666666666663,224.2089075874075L268.3333333333333,222.97403162628754L280,215.48121282460468L291.66666666666663,215.88045843609459L303.3333333333333,215.4347889162919L315,212.11083708109675L326.66666666666663,211.93442622950818L338.3333333333333,205.59292035398232L349.99999999999994,203.3460031916437L361.66666666666663,201.08980124764253L373.3333333333333,204.7387204410271L385,203.86595096474684L396.66666666666663,208.43406354272452L408.3333333333333,208.19265921949807L420,212.38938053097345"></path></g><g class="nv-group nv-series-34" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(127, 127, 127); stroke: rgb(127, 127, 127);"><path class="nv-line" d="M35,302.3681996228057L46.666666666666664,300.0470042071667L58.333333333333336,300.836210648484L70,299.95415639054113L81.66666666666666,299.0721021325983L93.33333333333333,298.17147831133036L105,295.3767590309009L116.66666666666667,297.0851588568113L128.33333333333331,295.59030900913973L140,293.8354852749166L151.66666666666666,291.42144204265196L163.33333333333331,292.4799071521834L174.99999999999997,297.02945016683594L186.66666666666666,296.19381981720585L198.33333333333331,294.3182939213695L210,294.98679820107355L221.66666666666669,295.7574350790657L233.33333333333334,295.562454664152L244.99999999999997,295.1075003626868L256.66666666666663,294.85681125779774L268.3333333333333,294.4482808646453L280,292.94414623531117L291.66666666666663,292.7491658203975L303.3333333333333,292.82344407369794L315,288.8124183954737L326.66666666666663,285.1634992020891L338.3333333333333,282.25736254170897L349.99999999999994,281.3195995937908L361.66666666666663,279.0912519947773L373.3333333333333,279.5647758595677L385,279.7504714928188L396.66666666666663,279.0169737414769L408.3333333333333,275.080226316553L420,275.163789351516"></path></g><g class="nv-group nv-series-35" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(199, 199, 199); stroke: rgb(199, 199, 199);"><path class="nv-line" d="M35,293.7704918032787L46.666666666666664,291.82997243580445L58.333333333333336,293.44552444508923L70,292.2663571739446L81.66666666666666,291.0964746844625L93.33333333333333,285.896996953431L105,282.1459451617583L116.66666666666667,282.3130712316843L128.33333333333331,280.7532279123749L140,273.7896416654577L151.66666666666666,270.6978093718265L163.33333333333331,268.36732917452485L174.99999999999997,267.5131292615697L186.66666666666666,267.7266792398085L198.33333333333331,262.86145364862904L210,264.1241839547367L221.66666666666669,266.5939358769766L233.33333333333334,263.28855360510664L244.99999999999997,258.9525605686929L256.66666666666663,258.8782823153924L268.3333333333333,254.27303061076455L280,252.45321340490352L291.66666666666663,257.8383867691861L303.3333333333333,254.39373277237777L315,252.06325257507615L326.66666666666663,251.70114609023648L338.3333333333333,251.17191353547076L349.99999999999994,251.24619178877123L361.66666666666663,251.46902654867256L373.3333333333333,251.43188742202233L385,249.63992456114897L396.66666666666663,250.52197881909183L408.3333333333333,250.5962570723923L420,248.60002901494272"></path></g><g class="nv-group nv-series-36" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(188, 189, 34); stroke: rgb(188, 189, 34);"><path class="nv-line" d="M35,303.95589728710286L46.666666666666664,299.0256782242855L58.333333333333336,299.46206296242565L70,298.8214130277093L81.66666666666666,298.1807630929929L93.33333333333333,294.4018569563325L105,294.0397504714928L116.66666666666667,298.2643261279559L128.33333333333331,297.6886696648774L140,297.21514580008704L151.66666666666666,298.53358479617003L163.33333333333331,295.2189177426375L174.99999999999997,293.4269548817641L186.66666666666666,297.41941099666326L198.33333333333331,297.7536631365153L210,298.199332656318L221.66666666666669,298.76570433773395L233.33333333333334,299.86130857391555L244.99999999999997,298.63571739445814L256.66666666666663,299.5270564340635L268.3333333333333,298.32931959959376L280,295.79457420571595L291.66666666666663,295.646017699115L303.3333333333333,292.0806615406935L315,290.89220948788625L326.66666666666663,289.4623531118526L338.3333333333333,286.50050776149715L349.99999999999994,283.9193384593066L361.66666666666663,282.7123168431742L373.3333333333333,282.23879297838386L385,281.90454083853183L396.66666666666663,283.2972580879153L408.3333333333333,285.3399100536776L420,285.69273175685476"></path></g><g class="nv-group nv-series-37" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(219, 219, 141); stroke: rgb(219, 219, 141);"><path class="nv-line" d="M46.666666666666664,296.72305237197156L58.333333333333336,292.4799071521834L70,285.646307848542L81.66666666666666,278.8219933265632L93.33333333333333,285.4327578703032L105,279.5554910779051L116.66666666666667,275.41447845640505L128.33333333333331,271.85840707964604L140,269.39793993906864L151.66666666666666,267.04889017844187L163.33333333333331,270.59567677353834L174.99999999999997,266.1204120121863L186.66666666666666,267.7173944581459L198.33333333333331,266.9096184535035L210,271.36631365153056L221.66666666666669,272.0719570578848L233.33333333333334,270.8835050050776L244.99999999999997,265.84186856230957L256.66666666666663,263.50210358334544L268.3333333333333,257.95908893079934L280,264.08704482808645L291.66666666666663,264.2263165530248L303.3333333333333,265.5447555491078L315,267.97736834469754L326.66666666666663,284.7363992456115L338.3333333333333,282.15522994342086L349.99999999999994,283.4272450311911L361.66666666666663,283.8172058610184L373.3333333333333,285.88771217176844L385,285.09850573045117L396.66666666666663,286.33338169157116L408.3333333333333,287.0947337879008L420,288.8217031771362"></path></g><g class="nv-group nv-series-38" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(23, 190, 207); stroke: rgb(23, 190, 207);"><path class="nv-line" d="M46.666666666666664,296.81590018859714L58.333333333333336,291.42144204265196L70,291.9042506891049L81.66666666666666,292.3963441172204L93.33333333333333,291.6814159292035L105,287.800377194255L116.66666666666667,287.0761642245757L128.33333333333331,284.0400406209198L140,282.16451472508345L151.66666666666666,283.9471928042942L163.33333333333331,286.3705208182214L174.99999999999997,290.6693747279849L186.66666666666666,293.0927027419121L198.33333333333331,294.28115479471927L210,294.2347308864065L221.66666666666669,295.28391121427535L233.33333333333334,295.66458726244014L244.99999999999997,294.1511678514435L256.66666666666663,294.1233135064558L268.3333333333333,292.1549397939939L280,291.2264616277383L291.66666666666663,292.3684897722327L303.3333333333333,292.257072392282L315,291.6628463658784L326.66666666666663,289.9173074133179L338.3333333333333,288.5060206006093L349.99999999999994,289.47163789351515L361.66666666666663,288.5988684172349L373.3333333333333,289.2116640069636L385,288.4410271289714L396.66666666666663,289.9080226316553L408.3333333333333,290.4465399680836L420,290.6322356013347"></path></g><g class="nv-group nv-series-39" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(158, 218, 229); stroke: rgb(158, 218, 229);"><path class="nv-line" d="M46.666666666666664,302.45176265776877L58.333333333333336,301.755404033077L70,300.58552154359495L81.66666666666666,299.4156390541129L93.33333333333333,298.48716088785727L105,295.90599158566664L116.66666666666667,292.4056288988829L128.33333333333331,292.43348324387057L140,290.9850573045118L151.66666666666666,292.86986798201076L163.33333333333331,294.17902219643116L174.99999999999997,297.22443058174963L186.66666666666666,299.13709560423615L198.33333333333331,299.9634411722037L210,300.5112432902945L221.66666666666669,301.58827796315103L233.33333333333334,301.6625562164515L244.99999999999997,299.75917597562744L256.66666666666663,299.1278108225736L268.3333333333333,298.42216741621934L280,299.39706949078777L291.66666666666663,300.10271289714206L303.3333333333333,300.60409110692007L315,301.83896706804006L326.66666666666663,301.69041056143914L338.3333333333333,300.28840853039316L349.99999999999994,300.15842158711735L361.66666666666663,299.3413608008124L373.3333333333333,299.37849992746266L385,299.1928042942115L396.66666666666663,300.0377194255041L408.3333333333333,297.95792833309156L420,300.45553460031914"></path></g><g class="nv-group nv-series-40" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(31, 119, 180); stroke: rgb(31, 119, 180);"><path class="nv-line" d="M58.333333333333336,297.31727839837515L70,294.9125199477731L81.66666666666666,292.50776149717103L93.33333333333333,284.06789496590744L105,287.3918468011026L116.66666666666667,288.25533149572027L128.33333333333331,285.57202959524153L140,283.5943711011171L151.66666666666666,284.1236036558828L163.33333333333331,283.47366893950385L174.99999999999997,286.01769911504425L186.66666666666666,282.24807776004644L198.33333333333331,280.9667778906137L210,279.8340345277818L221.66666666666669,280.8739300739881L233.33333333333334,278.7477150732627L244.99999999999997,278.84984767155083L256.66666666666663,276.9928913390396L268.3333333333333,279.18409981140286L280,278.6270129116495L291.66666666666663,276.54722181923694L303.3333333333333,278.0327868852459L315,277.45713042216744L326.66666666666663,275.1452197881909L338.3333333333333,272.8147395908893L349.99999999999994,273.79892644712027L361.66666666666663,273.48324387059336L373.3333333333333,275.3680545480923L385,276.77005657913827L396.66666666666663,276.5843609458871L408.3333333333333,276.3615261859858L420,276.0736979544465"></path></g><g class="nv-group nv-series-41" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(174, 199, 232); stroke: rgb(174, 199, 232);"><path class="nv-line" d="M58.333333333333336,248.90642680980704L70,248.78572464819382L81.66666666666666,248.67430726824315L93.33333333333333,258.2562019440012L105,247.9593790802263L116.66666666666667,256.5756564630785L128.33333333333331,248.08008124183954L140,246.40882054257943L151.66666666666666,238.78601479762077L163.33333333333331,256.9284781662556L174.99999999999997,263.9570578848107L186.66666666666666,251.8682721601625L198.33333333333331,260.373132163064L210,257.78267807921077L221.66666666666669,260.2431452197882L233.33333333333334,258.07050631075003L244.99999999999997,261.84012766574784L256.66666666666663,260.2709995647759L268.3333333333333,260.03888002321196L280,257.1420281444944L291.66666666666663,256.48280864645295L303.3333333333333,256.3249673581895L315,255.72145655012332L326.66666666666663,254.13375888582618L338.3333333333333,250.71695923400551L349.99999999999994,248.22863774844046L361.66666666666663,248.98998984477004L373.3333333333333,252.44392862324096L385,253.56738720441027L396.66666666666663,249.81633541273754L408.3333333333333,257.80124764253594L420,260.44741041636445"></path></g><g class="nv-group nv-series-42" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 127, 14); stroke: rgb(255, 127, 14);"><path class="nv-line" d="M58.333333333333336,278.6270129116495L70,279.6483388945307L81.66666666666666,280.6789496590744L93.33333333333333,260.0110256782243L105,256.86348469461774L116.66666666666667,261.3851733642826L128.33333333333331,261.73799506745974L140,261.54301465254605L151.66666666666666,261.0230668794429L163.33333333333331,257.7548237342231L174.99999999999997,254.29160017408964L186.66666666666666,256.02785434498765L198.33333333333331,252.1375308283766L210,258.636877992166L221.66666666666669,260.6609603946032L233.33333333333334,258.5625997388655L244.99999999999997,258.553314957203L256.66666666666663,260.9952125344552L268.3333333333333,258.32119541563907L280,251.72900043522415L291.66666666666663,251.11620484549542L303.3333333333333,257.3277237777455L315,250.43841578412884L326.66666666666663,249.75134194109967L338.3333333333333,245.00681851153342L349.99999999999994,241.34861453648628L361.66666666666663,238.98099521253445L373.3333333333333,243.01059045408385L385,249.37066589293488L396.66666666666663,246.98447700565794L408.3333333333333,246.51095314086754L420,248.19149862179023"></path></g><g class="nv-group nv-series-43" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 187, 120); stroke: rgb(255, 187, 120);"><path class="nv-line" d="M81.66666666666666,307.9762077469897L81.66666666666666,307.9762077469897L93.33333333333333,300.2791237487306L93.33333333333333,300.2791237487306L105,297.7629479181779L105,297.7629479181779L116.66666666666667,296.3330915421442L116.66666666666667,296.3330915421442L128.33333333333331,295.07964601769913L128.33333333333331,295.07964601769913L140,293.2969679384883L140,293.2969679384883L151.66666666666666,291.6442768025533L151.66666666666666,291.6442768025533L163.33333333333331,290.67865950964745L163.33333333333331,290.67865950964745L174.99999999999997,291.6628463658784L174.99999999999997,291.6628463658784L186.66666666666666,290.0380095749311L186.66666666666666,290.0380095749311L198.33333333333331,289.3137966052517L198.33333333333331,289.3137966052517L210,289.6387639634412L210,289.6387639634412L221.66666666666669,291.0964746844625L221.66666666666669,291.0964746844625L233.33333333333334,291.18932250108804L233.33333333333334,291.18932250108804L244.99999999999997,290.2051356448571L244.99999999999997,290.2051356448571L256.66666666666663,289.27665747860146L256.66666666666663,289.27665747860146L268.3333333333333,287.6796750326418L268.3333333333333,287.6796750326418L280,284.9313796605252L280,284.9313796605252L291.66666666666663,284.68069055563615L291.66666666666663,284.68069055563615L303.3333333333333,283.6315102277673L303.3333333333333,283.6315102277673L315,282.3594951399971L315,282.3594951399971L326.66666666666663,280.9853474539388L326.66666666666663,280.9853474539388L338.3333333333333,279.9268823444074L338.3333333333333,279.9268823444074L349.99999999999994,279.82474974611927L349.99999999999994,279.82474974611927L361.66666666666663,278.1627738285217L361.66666666666663,278.1627738285217L373.3333333333333,277.3549978238793L373.3333333333333,277.3549978238793L385,277.9956477585957L385,277.9956477585957L396.66666666666663,277.6706804004062L396.66666666666663,277.6706804004062L408.3333333333333,278.36703902509794L408.3333333333333,278.36703902509794L420,279.0726824314522L420,279.0726824314522"></path></g><g class="nv-group nv-series-44" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(44, 160, 44); stroke: rgb(44, 160, 44);"><path class="nv-line" d="M81.66666666666666,303.23168431742346L81.66666666666666,303.23168431742346L93.33333333333333,296.3330915421442L93.33333333333333,296.3330915421442L105,288.0882054257943L105,288.0882054257943L116.66666666666667,287.3918468011026L116.66666666666667,287.3918468011026L128.33333333333331,285.2563470187146L128.33333333333331,285.2563470187146L140,283.37153634121574L140,283.37153634121574L151.66666666666666,281.52386479036704L151.66666666666666,281.52386479036704L163.33333333333331,282.0995212534455L163.33333333333331,282.0995212534455L174.99999999999997,282.3594951399971L174.99999999999997,282.3594951399971L186.66666666666666,281.106049615552L186.66666666666666,281.106049615552L198.33333333333331,281.5702886986798L198.33333333333331,281.5702886986798L210,282.508051646598L210,282.508051646598L221.66666666666669,283.826490642681L221.66666666666669,283.826490642681L233.33333333333334,281.6167126069926L233.33333333333334,281.6167126069926L244.99999999999997,279.21195415639056L244.99999999999997,279.21195415639056L256.66666666666663,276.64935441752505L256.66666666666663,276.64935441752505L268.3333333333333,271.4220223415059L268.3333333333333,271.4220223415059L280,267.2810097200058L280,267.2810097200058L291.66666666666663,266.14826635717395L291.66666666666663,266.14826635717395L303.3333333333333,263.79921659654724L303.3333333333333,263.79921659654724L315,255.2757870303206L315,255.2757870303206L326.66666666666663,243.47482953721166L326.66666666666663,243.47482953721166L338.3333333333333,238.86029305092123L338.3333333333333,238.86029305092123L349.99999999999994,235.65704337733933L349.99999999999994,235.65704337733933L361.66666666666663,231.70172638909037L361.66666666666663,231.70172638909037L373.3333333333333,233.57725228492674L373.3333333333333,233.57725228492674L385,236.52052807195705L385,236.52052807195705L396.66666666666663,233.59582184825186L396.66666666666663,233.59582184825186L408.3333333333333,235.601334687364L408.3333333333333,235.601334687364L420,235.935586827216L420,235.935586827216"></path></g><g class="nv-group nv-series-45" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(152, 223, 138); stroke: rgb(152, 223, 138);"><path class="nv-line" d="M81.66666666666666,294.67111562454664L81.66666666666666,294.67111562454664L93.33333333333333,288.76599448716087L93.33333333333333,288.76599448716087L105,285.71130132017987L105,285.71130132017987L116.66666666666667,287.4011315827651L116.66666666666667,287.4011315827651L128.33333333333331,286.3426664732337L128.33333333333331,286.3426664732337L140,281.1524735238648L140,281.1524735238648L151.66666666666666,284.0586101842449L151.66666666666666,284.0586101842449L163.33333333333331,275.1452197881909L163.33333333333331,275.1452197881909L174.99999999999997,263.49281880168286L174.99999999999997,263.49281880168286L186.66666666666666,258.91542144204266L186.66666666666666,258.91542144204266L198.33333333333331,264.6534165095024L198.33333333333331,264.6534165095024L210,262.76860583200346L210,262.76860583200346L221.66666666666669,262.4250689104889L221.66666666666669,262.4250689104889L233.33333333333334,262.4157841288263L233.33333333333334,262.4157841288263L244.99999999999997,265.40548382416944L244.99999999999997,265.40548382416944L256.66666666666663,262.88930799361674L256.66666666666663,262.88930799361674L268.3333333333333,256.43638473814013L268.3333333333333,256.43638473814013L280,248.80429421151894L280,248.80429421151894L291.66666666666663,247.48585521543595L291.66666666666663,247.48585521543595L303.3333333333333,248.13578993181488L303.3333333333333,248.13578993181488L315,240.35514289859276L315,240.35514289859276L326.66666666666663,240.42942115189322L326.66666666666663,240.42942115189322L338.3333333333333,241.8964166545771L338.3333333333333,241.8964166545771L349.99999999999994,240.89366023502103L349.99999999999994,240.89366023502103L361.66666666666663,233.42869577832585L361.66666666666663,233.42869577832585L373.3333333333333,231.43246772087625L373.3333333333333,231.43246772087625L385,229.68692876831568L385,229.68692876831568L396.66666666666663,231.1910633976498L396.66666666666663,231.1910633976498L408.3333333333333,231.83171333236618L408.3333333333333,231.83171333236618L420,232.15668069055565L420,232.15668069055565"></path></g><g class="nv-group nv-series-46" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(214, 39, 40); stroke: rgb(214, 39, 40);"><path class="nv-line" d="M81.66666666666666,310.89162918903236L93.33333333333333,308.21761207021615L105,306.3235166110547L116.66666666666667,304.97722326998405L128.33333333333331,305.1350645582475L140,302.03394748295375L151.66666666666666,297.2708544900624L163.33333333333331,302.83243870593355L174.99999999999997,307.5862469171623L186.66666666666666,308.4590163934426L198.33333333333331,308.93254025823296L210,309.2482228347599L221.66666666666669,310.2138401276658L233.33333333333334,310.86377484404466L244.99999999999997,310.9380530973451L256.66666666666663,310.27883359930365L268.3333333333333,309.7124619178877L280,308.0597707819527L291.66666666666663,305.75714492963874L303.3333333333333,305.07935586827216L315,303.3988103873495L326.66666666666663,303.3988103873495L338.3333333333333,301.8853909763528L349.99999999999994,301.08689975337296L361.66666666666663,299.90773248222837L373.3333333333333,296.82518497025967L385,297.72580879152764L396.66666666666663,300.5576671986073L408.3333333333333,300.68765414188306L420,301.8853909763528"></path></g><g class="nv-group nv-series-47" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 152, 150); stroke: rgb(255, 152, 150);"><path class="nv-line" d="M81.66666666666666,282.0809516901204L93.33333333333333,263.37211664006963L105,254.7279849122298L116.66666666666667,247.12374873059628L128.33333333333331,245.70317713622518L140,236.63194545190774L151.66666666666666,232.30523719715654L163.33333333333331,235.74060641230233L174.99999999999997,249.75134194109967L186.66666666666666,246.6316553024808L198.33333333333331,253.99448716088784L210,246.49238357754245L221.66666666666669,249.71420281444944L233.33333333333334,249.95560713767588L244.99999999999997,253.39097635282172L256.66666666666663,252.17466995502684L268.3333333333333,247.69940519367475L280,242.26780792107934L291.66666666666663,244.94182503989555L303.3333333333333,244.45901639344262L315,241.0700710866096L326.66666666666663,242.2399535760917L338.3333333333333,239.70520818221385L349.99999999999994,240.141592920354L361.66666666666663,237.9782387929784L373.3333333333333,237.85753663136518L385,238.66531263600754L396.66666666666663,234.72856521108372L408.3333333333333,235.87987813724067L420,240.42013637023067"></path></g><g class="nv-group nv-series-48" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(148, 103, 189); stroke: rgb(148, 103, 189);"><path class="nv-line" d="M93.33333333333333,273.4739590889308L105,262.77789061366605L116.66666666666667,254.03162628753807L128.33333333333331,256.5199477731031L140,252.17466995502684L151.66666666666666,249.69563325112432L163.33333333333331,251.28333091542146L174.99999999999997,247.7736834469752L186.66666666666666,253.21456550123315L198.33333333333331,249.20353982300884L210,250.35485274916584L221.66666666666669,251.23690700710864L233.33333333333334,249.472798491223L244.99999999999997,246.75235746409402L256.66666666666663,246.78949659074425L268.3333333333333,241.36718409981142L280,240.23444073697954L291.66666666666663,239.06455824749747L303.3333333333333,234.53358479617003L315,232.44450892209488L326.66666666666663,227.65356158421588L338.3333333333333,222.23124909328305L349.99999999999994,220.30001450747136L361.66666666666663,218.16451472508342L373.3333333333333,220.3742927607718L385,221.53489046859133L396.66666666666663,220.04932540258233L408.3333333333333,218.9072972580879L420,221.50703612360365"></path></g><g class="nv-group nv-series-49" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(197, 176, 213); stroke: rgb(197, 176, 213);"><path class="nv-line" d="M93.33333333333333,267.318148846656L105,254.02234150587554L116.66666666666667,248.93428115479472L128.33333333333331,248.04294211518933L140,244.19904250689103L151.66666666666666,243.23342521398519L163.33333333333331,242.50921224430581L174.99999999999997,242.11925141447847L186.66666666666666,241.7292905846511L198.33333333333331,240.89366023502103L210,242.5370665892935L221.66666666666669,243.14057739735964L233.33333333333334,242.50921224430581L244.99999999999997,241.78499927462644L256.66666666666663,240.32728855360511L268.3333333333333,235.61061946902655L280,234.6264326127956L291.66666666666663,234.83998259103438L303.3333333333333,233.4565501233135L315,233.55868272160163L326.66666666666663,233.94864355142897L338.3333333333333,229.27839837516322L349.99999999999994,229.81691571159146L361.66666666666663,225.39735964021472L373.3333333333333,229.97475699985495L385,228.97200058029887L396.66666666666663,227.55142898592774L408.3333333333333,230.2068765414188L420,229.90976352821704"></path></g><g class="nv-group nv-series-50" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(140, 86, 75); stroke: rgb(140, 86, 75);"><path class="nv-line" d="M93.33333333333333,295.69244160742784L105,292.64703322210937L116.66666666666667,290.6508051646598L128.33333333333331,289.26737269693893L140,286.22196431162047L151.66666666666666,284.7735383722617L163.33333333333331,287.54040330770346L174.99999999999997,288.3017554040331L186.66666666666666,285.93413608008126L198.33333333333331,286.11054693166983L210,288.0789206441317L221.66666666666669,288.6081531988974L233.33333333333334,288.8495575221239L244.99999999999997,287.41041636442765L256.66666666666663,288.14391411576963L268.3333333333333,287.02974031626286L280,286.6212099231104L291.66666666666663,284.97780356883794L303.3333333333333,286.6490642680981L315,282.7401711881619L326.66666666666663,269.60220513564485L338.3333333333333,268.2094878862614L349.99999999999994,267.6152618598578L361.66666666666663,265.9904250689105L373.3333333333333,264.7741186711156L385,265.74902074568405L396.66666666666663,265.44262295081967L408.3333333333333,265.5726098940955L420,265.61903380240824"></path></g><g class="nv-group nv-series-51" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(196, 156, 148); stroke: rgb(196, 156, 148);"><path class="nv-line" d="M93.33333333333333,294.79181778615987L105,290.87363992456113L116.66666666666667,286.2683882199333L128.33333333333331,283.1951254896272L140,279.29551719135355L151.66666666666666,278.2091977368345L163.33333333333331,280.20542579428405L174.99999999999997,283.6315102277673L186.66666666666666,283.70578848106777L198.33333333333331,283.53866241114173L210,283.68721891774265L221.66666666666669,284.57855795734804L233.33333333333334,285.3306252720151L244.99999999999997,284.17002756419555L256.66666666666663,283.6965036994052L268.3333333333333,281.5517191353547L280,278.79413898157554L291.66666666666663,276.1944001160598L303.3333333333333,274.6809807050631L315,272.7311765559263L326.66666666666663,272.4154939793994L338.3333333333333,272.6476135209633L349.99999999999994,271.1991875816045L361.66666666666663,270.3635572319745L373.3333333333333,267.75453358479615L385,268.24662701291163L396.66666666666663,265.53547076744525L408.3333333333333,264.19846220803714L420,262.2393732772378"></path></g><g class="nv-group nv-series-52" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(227, 119, 194); stroke: rgb(227, 119, 194);"><path class="nv-line" d="M93.33333333333333,300.1305672421297L105,294.0211809081677L116.66666666666667,288.701001015523L128.33333333333331,287.15972725953867L140,283.17655592630206L151.66666666666666,283.3808211228783L163.33333333333331,284.1050340925577L174.99999999999997,285.32134049035255L186.66666666666666,285.9898447700566L198.33333333333331,287.03902509792545L210,288.03249673581894L221.66666666666669,288.56172929058465L233.33333333333334,289.0073988103874L244.99999999999997,287.0854490062382L256.66666666666663,287.1040185695633L268.3333333333333,284.3092992891339L280,283.6500797910924L291.66666666666663,282.9165820397505L303.3333333333333,281.8766864935442L315,281.3474539387785L326.66666666666663,280.6603800957493L338.3333333333333,279.4719280429421L349.99999999999994,277.54997823879296L361.66666666666663,276.02727404613375L373.3333333333333,274.69026548672565L385,274.2538807485855L396.66666666666663,275.32163063977947L408.3333333333333,275.11736544320325L420,274.50456985347455"></path></g><g class="nv-group nv-series-53" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(247, 182, 210); stroke: rgb(247, 182, 210);"><path class="nv-line" d="M93.33333333333333,282.3966342666473L105,265.9068620339475L116.66666666666667,252.04468301175106L128.33333333333331,244.3847381401422L140,235.92630204555348L151.66666666666666,235.4527781807631L163.33333333333331,238.80458436094588L174.99999999999997,241.71072102132598L186.66666666666666,242.7041926592195L198.33333333333331,242.74133178586973L210,236.30697809371827L221.66666666666669,236.22341505875528L233.33333333333334,237.58827796315103L244.99999999999997,235.8334542289279L256.66666666666663,235.40635427245033L268.3333333333333,229.31553750181342L280,221.25634701871462L291.66666666666663,217.40316262875382L303.3333333333333,205.8900333671841L315,198.36936022051356L326.66666666666663,195.95531698824894L338.3333333333333,190.99724358044392L349.99999999999994,185.9370375743508L361.66666666666663,186.39199187581605L373.3333333333333,189.01958508631947L385,190.52371971565356L396.66666666666663,191.35006528362106L408.3333333333333,191.22007834034528L420,195.17539532859422"></path></g><g class="nv-group nv-series-54" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(127, 127, 127); stroke: rgb(127, 127, 127);"><path class="nv-line" d="M93.33333333333333,281.67242129696797L105,275.3866241114174L116.66666666666667,277.15073262730306L128.33333333333331,267.4109966632816L140,266.3711011170753L151.66666666666666,268.0887857246482L163.33333333333331,268.1166400696359L174.99999999999997,270.6513854635137L186.66666666666666,271.71913535470765L198.33333333333331,271.6262875380821L210,275.3866241114174L221.66666666666669,271.9234005512839L233.33333333333334,269.3608008124184L244.99999999999997,267.8938053097345L256.66666666666663,267.38314231829395L268.3333333333333,264.60699260118963L280,262.96358624691715L291.66666666666663,261.95154504569854L303.3333333333333,263.3349775134194L315,259.5467865950965L326.66666666666663,257.9126650224866L338.3333333333333,249.77919628608734L349.99999999999994,250.42913100246628L361.66666666666663,251.28333091542146L373.3333333333333,252.31394167996518L385,254.16161323081388L396.66666666666663,258.00551283911216L408.3333333333333,252.96387639634412L420,254.31945451907734"></path></g><g class="nv-group nv-series-55" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(199, 199, 199); stroke: rgb(199, 199, 199);"><path class="nv-line" d="M93.33333333333333,298.14362396634266L105,289.6944726534165L116.66666666666667,285.99912955171914L128.33333333333331,279.79689540113156L140,278.06992601189614L151.66666666666666,278.0792107935587L163.33333333333331,280.90178441897575L174.99999999999997,282.1088060351081L186.66666666666666,284.76425359059914L198.33333333333331,284.2071666908458L210,284.9220948788626L221.66666666666669,285.896996953431L233.33333333333334,284.87567097054983L244.99999999999997,285.99912955171914L256.66666666666663,287.14115769621355L268.3333333333333,284.1328884375453L280,280.39112142753515L291.66666666666663,279.4347889162919L303.3333333333333,277.8378064703322L315,278.1627738285217L326.66666666666663,277.9306542869578L338.3333333333333,275.7765849412447L349.99999999999994,275.3866241114174L361.66666666666663,274.1053242419846L373.3333333333333,277.03003046568983L385,277.4107065138546L396.66666666666663,275.6837371246192L408.3333333333333,276.9928913390396L420,277.57783258378066"></path></g><g class="nv-group nv-series-56" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(188, 189, 34); stroke: rgb(188, 189, 34);"><path class="nv-line" d="M93.33333333333333,299.5827651240389L105,291.43072682431455L116.66666666666667,284.9499492238503L128.33333333333331,281.84883214855654L140,282.173799506746L151.66666666666666,279.7690410561439L163.33333333333331,283.27868852459017L174.99999999999997,283.76149717104306L186.66666666666666,287.0761642245757L198.33333333333331,286.00841433338167L210,286.52836210648485L221.66666666666669,286.4540838531844L233.33333333333334,285.4698969969534L244.99999999999997,285.99912955171914L256.66666666666663,285.1634992020891L268.3333333333333,282.3966342666473L280,280.1961410126215L291.66666666666663,278.7198607282751L303.3333333333333,280.7903670390251L315,281.2638909038155L326.66666666666663,285.81343391846804L338.3333333333333,285.5163209052662L349.99999999999994,282.76802553314957L361.66666666666663,281.9602495285072L373.3333333333333,281.9695343101697L385,280.91106920063834L396.66666666666663,280.39112142753515L408.3333333333333,281.45887131872917L420,283.3158276512404"></path></g><g class="nv-group nv-series-57" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(219, 219, 141); stroke: rgb(219, 219, 141);"><path class="nv-line" d="M116.66666666666667,291.5421442042652L128.33333333333331,287.74466850427973L140,284.99637313216306L151.66666666666666,277.7913825620194L163.33333333333331,279.7411867111563L174.99999999999997,280.7810822573625L186.66666666666666,283.2508341796025L198.33333333333331,282.1923690700711L210,283.5943711011171L221.66666666666669,284.87567097054983L233.33333333333334,284.49499492238505L244.99999999999997,283.14870158131436L256.66666666666663,282.33164079500943L268.3333333333333,280.855360510663L280,278.3948933700856L291.66666666666663,277.9027999419701L303.3333333333333,275.21949804149136L315,273.56680690555635L326.66666666666663,273.3532569273176L338.3333333333333,270.29856376033655L349.99999999999994,269.0172638909038L361.66666666666663,268.9151312926157L373.3333333333333,270.75351806180186L385,270.13143769041056L396.66666666666663,270.6978093718265L408.3333333333333,271.357028869868L420,273.96605251704625"></path></g><g class="nv-group nv-series-58" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(23, 190, 207); stroke: rgb(23, 190, 207);"><path class="nv-line" d="M116.66666666666667,288.79384883214857L128.33333333333331,285.0149426954882L140,282.7216016248368L151.66666666666666,280.3632670825475L163.33333333333331,279.80618018279415L174.99999999999997,283.7336428260554L186.66666666666666,284.4300014507471L198.33333333333331,285.0706513854635L210,285.6648774118671L221.66666666666669,287.8932250108806L233.33333333333334,287.24329029450166L244.99999999999997,286.0269838967068L256.66666666666663,286.33338169157116L268.3333333333333,285.12636007543887L280,282.3037864500218L291.66666666666663,282.4059190483099L303.3333333333333,284.0586101842449L315,282.6937472798491L326.66666666666663,282.9165820397505L338.3333333333333,280.6510953140868L349.99999999999994,280.5768170607863L361.66666666666663,280.01973016103295L373.3333333333333,280.9853474539388L385,281.6167126069926L396.66666666666663,281.9138256201944L408.3333333333333,280.1961410126215L420,281.85811693021907"></path></g><g class="nv-group nv-series-59" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(158, 218, 229); stroke: rgb(158, 218, 229);"><path class="nv-line" d="M116.66666666666667,262.75932105034093L128.33333333333331,252.75032641810532L140,249.09212244305817L151.66666666666666,242.4442187726679L163.33333333333331,228.2385028289569L174.99999999999997,218.20165385173365L186.66666666666666,234.47787610619469L198.33333333333331,235.5363412157261L210,232.85303931524737L221.66666666666669,232.79733062527202L233.33333333333334,231.46032206586392L244.99999999999997,226.28869867982013L256.66666666666663,227.70927027419123L268.3333333333333,224.94240533874944L280,212.23153924271L291.66666666666663,207.46844624981867L303.3333333333333,203.31814884665602L315,200.6534165095024L326.66666666666663,200.85768170607864L338.3333333333333,197.65443203249674L349.99999999999994,197.97011460902365L361.66666666666663,193.3370085594081L373.3333333333333,192.25068910488903L385,190.31945451907734L396.66666666666663,192.96561729290585L408.3333333333333,192.12070216161322L420,197.98868417234877"></path></g><g class="nv-group nv-series-60" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(31, 119, 180); stroke: rgb(31, 119, 180);"><path class="nv-line" d="M116.66666666666667,281.5610039170173L128.33333333333331,277.8935151603076L140,271.44987668649355L151.66666666666666,268.302335702887L163.33333333333331,268.03307703467283L174.99999999999997,271.1620484549543L186.66666666666666,270.81851153343973L198.33333333333331,269.63005948063255L210,270.7999419701146L221.66666666666669,271.56129406644425L233.33333333333334,267.6338314231829L244.99999999999997,263.5670970549833L256.66666666666663,262.1465254606122L268.3333333333333,255.25721746699548L280,252.4160742782533L291.66666666666663,246.70593355578123L303.3333333333333,240.51298418685622L315,240.29943420861744L326.66666666666663,230.41114173799508L338.3333333333333,226.00087044828086L349.99999999999994,224.45959669229654L361.66666666666663,220.20716669084578L373.3333333333333,222.5190773248223L385,219.39010590454083L396.66666666666663,220.28144494414624L408.3333333333333,218.87944291310023L420,223.7260989409546"></path></g><g class="nv-group nv-series-61" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(174, 199, 232); stroke: rgb(174, 199, 232);"><path class="nv-line" d="M163.33333333333331,303.3988103873495L174.99999999999997,302.83243870593355L186.66666666666666,302.9717104308719L198.33333333333331,302.45176265776877L210,302.3774844044683L221.66666666666669,302.7860147976208L233.33333333333334,302.656027854345L244.99999999999997,302.823153924271L256.66666666666663,303.3802408240244L268.3333333333333,302.73030610764545L280,302.0803713912665L291.66666666666663,301.21688669664877L303.3333333333333,301.19831713332366L315,300.60409110692007L326.66666666666663,300.66908457855794L338.3333333333333,299.852023792253L349.99999999999994,298.6264326127956L361.66666666666663,297.63296097490206L373.3333333333333,296.6580589003337L385,298.032206586392L396.66666666666663,298.04149136805455L408.3333333333333,297.2708544900624L420,297.31727839837515"></path></g><g class="nv-group nv-series-62" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 127, 14); stroke: rgb(255, 127, 14);"><path class="nv-line" d="M163.33333333333331,271.24561148991734L174.99999999999997,268.1537791962861L186.66666666666666,267.99593790802265L198.33333333333331,268.135209632961L210,268.8594226026404L221.66666666666669,270.4471202669375L233.33333333333334,270.8742202234151L244.99999999999997,268.24662701291163L256.66666666666663,288.58029885390977L268.3333333333333,282.85158856811256L280,279.2583780647033L291.66666666666663,277.51283911214273L303.3333333333333,275.9344262295082L315,278.2370520818221L326.66666666666663,278.5155955316988L338.3333333333333,274.6252720150878L349.99999999999994,274.745974176701L361.66666666666663,275.8601479762077L373.3333333333333,276.7979109241259L385,277.8192369070071L396.66666666666663,278.47845640504863L408.3333333333333,279.38836500797913L420,281.9881038734949"></path></g><g class="nv-group nv-series-63" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 187, 120); stroke: rgb(255, 187, 120);"><path class="nv-line" d="M163.33333333333331,313.0921224430582L163.33333333333331,313.0921224430582L174.99999999999997,306.6391991875816L174.99999999999997,306.6391991875816L186.66666666666666,304.2065863919919L186.66666666666666,304.2065863919919L198.33333333333331,303.34310169737415L198.33333333333331,303.34310169737415L210,302.72102132598286L210,302.72102132598286L221.66666666666669,303.31524735238645L221.66666666666669,303.31524735238645L233.33333333333334,303.4173799506746L233.33333333333334,303.4173799506746L244.99999999999997,302.2753518061802L244.99999999999997,302.2753518061802L256.66666666666663,304.2901494269549L256.66666666666663,304.2901494269549L268.3333333333333,304.8193819817206L268.3333333333333,304.8193819817206L280,303.1202669374728L280,303.1202669374728L291.66666666666663,301.80182794138983L291.66666666666663,301.80182794138983L303.3333333333333,292.43348324387057L303.3333333333333,292.43348324387057L315,288.64529232554764L315,288.64529232554764L326.66666666666663,288.8217031771362L326.66666666666663,288.8217031771362L338.3333333333333,286.43551428985927L338.3333333333333,286.43551428985927L349.99999999999994,286.2683882199333L349.99999999999994,286.2683882199333L361.66666666666663,282.95372116640067L361.66666666666663,282.95372116640067L373.3333333333333,286.2591034382707L373.3333333333333,286.2591034382707L385,283.9007688959814L385,283.9007688959814L396.66666666666663,284.59712752067315L396.66666666666663,284.59712752067315L408.3333333333333,280.41897577252286L408.3333333333333,280.41897577252286L420,280.1404323226462L420,280.1404323226462"></path></g><g class="nv-group nv-series-64" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(44, 160, 44); stroke: rgb(44, 160, 44);"><path class="nv-line" d="M163.33333333333331,306.128536196141L163.33333333333331,306.128536196141L174.99999999999997,296.9458871318729L174.99999999999997,296.9458871318729L186.66666666666666,295.0332221093863L186.66666666666666,295.0332221093863L198.33333333333331,291.3657333526766L198.33333333333331,291.3657333526766L210,293.5012331350646L210,293.5012331350646L221.66666666666669,295.81314376904106L221.66666666666669,295.81314376904106L233.33333333333334,296.1566806905556L233.33333333333334,296.1566806905556L244.99999999999997,294.1325982881184L244.99999999999997,294.1325982881184L256.66666666666663,292.5170462788336L256.66666666666663,292.5170462788336L268.3333333333333,291.1521833744378L268.3333333333333,291.1521833744378L280,289.17452488031336L280,289.17452488031336L291.66666666666663,288.0417815174815L291.66666666666663,288.0417815174815L303.3333333333333,287.6611054693167L303.3333333333333,287.6611054693167L315,287.52183374437834L315,287.52183374437834L326.66666666666663,287.96750326418106L326.66666666666663,287.96750326418106L338.3333333333333,285.8412882634557L338.3333333333333,285.8412882634557L349.99999999999994,284.68069055563615L349.99999999999994,284.68069055563615L361.66666666666663,282.591614681561L361.66666666666663,282.591614681561L373.3333333333333,280.48396924416073L373.3333333333333,280.48396924416073L385,280.1682866676338L385,280.1682866676338L396.66666666666663,278.78485419991296L396.66666666666663,278.78485419991296L408.3333333333333,276.398665312636L408.3333333333333,276.398665312636L420,275.8880023211954L420,275.8880023211954"></path></g><g class="nv-group nv-series-65" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(152, 223, 138); stroke: rgb(152, 223, 138);"><path class="nv-line" d="M163.33333333333331,304.3272885536051L163.33333333333331,304.3272885536051L174.99999999999997,293.04627883359933L174.99999999999997,293.04627883359933L186.66666666666666,292.55418540548385L186.66666666666666,292.55418540548385L198.33333333333331,290.61366603800957L198.33333333333331,290.61366603800957L210,290.9664877411867L210,290.9664877411867L221.66666666666669,290.7343681996228L221.66666666666669,290.7343681996228L233.33333333333334,289.60162483679096L233.33333333333334,289.60162483679096L244.99999999999997,289.0073988103874L244.99999999999997,289.0073988103874L256.66666666666663,286.6490642680981L256.66666666666663,286.6490642680981L268.3333333333333,287.5311185260409L268.3333333333333,287.5311185260409L280,285.4141883069781L280,285.4141883069781L291.66666666666663,282.63803858987376L291.66666666666663,282.63803858987376L303.3333333333333,281.8674017118816L303.3333333333333,281.8674017118816L315,278.0977803568838L315,278.0977803568838L326.66666666666663,275.52589583635574L326.66666666666663,275.52589583635574L338.3333333333333,269.8064703322211L338.3333333333333,269.8064703322211L349.99999999999994,264.9041056143914L349.99999999999994,264.9041056143914L361.66666666666663,259.02683882199335L361.66666666666663,259.02683882199335L373.3333333333333,253.93877847091252L373.3333333333333,253.93877847091252L385,253.3074133178587L385,253.3074133178587L396.66666666666663,254.5608588423038L396.66666666666663,254.5608588423038L408.3333333333333,252.7967503264181L408.3333333333333,252.7967503264181L420,250.35485274916584L420,250.35485274916584"></path></g><g class="nv-group nv-series-66" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(214, 39, 40); stroke: rgb(214, 39, 40);"><path class="nv-line" d="M174.99999999999997,294.79181778615987L186.66666666666666,292.23850282895694L198.33333333333331,289.9730161032932L210,290.38154649644565L221.66666666666669,289.3137966052517L233.33333333333334,289.26737269693893L244.99999999999997,293.2598288118381L256.66666666666663,291.5421442042652L268.3333333333333,289.49949223850285L280,287.14115769621355L291.66666666666663,287.6796750326418L303.3333333333333,287.74466850427973L315,285.80414913680545L326.66666666666663,285.8412882634557L338.3333333333333,284.3928623240969L349.99999999999994,284.48571014072246L361.66666666666663,284.4578557957348L373.3333333333333,285.7484404468301L385,284.79210793558684L396.66666666666663,286.0826925866821L408.3333333333333,286.69548817641083L420,288.61743798056"></path></g><g class="nv-group nv-series-67" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 152, 150); stroke: rgb(255, 152, 150);"><path class="nv-line" d="M174.99999999999997,256.05570868997535L186.66666666666666,246.6316553024808L198.33333333333331,241.20005802988538L210,244.03191643696505L221.66666666666669,247.1330335122588L233.33333333333334,243.8926447120267L244.99999999999997,237.26331060496156L256.66666666666663,233.49368924996372L268.3333333333333,225.935876976643L280,252.90816770636877L291.66666666666663,253.16814159292034L303.3333333333333,253.91092412592485L315,254.67227622225448L326.66666666666663,253.91092412592485L338.3333333333333,247.78296822863774L349.99999999999994,249.04569853474538L361.66666666666663,248.6835920499057L373.3333333333333,248.33077034672857L385,247.82010735528797L396.66666666666663,250.55911794574206L408.3333333333333,249.45422892789787L420,251.83113303351226"></path></g><g class="nv-group nv-series-68" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(148, 103, 189); stroke: rgb(148, 103, 189);"><path class="nv-line" d="M174.99999999999997,308.9882489482083L186.66666666666666,307.5676773538372L198.33333333333331,306.5370665892935L210,306.7691861308574L221.66666666666669,307.65124038880026L233.33333333333334,306.84346438415787L244.99999999999997,305.8499927462643L256.66666666666663,305.0236471782968L268.3333333333333,303.02741912084724L280,298.4314521978819L291.66666666666663,291.2264616277383L303.3333333333333,292.42419846220804L315,290.92006383287395L326.66666666666663,291.69998549252864L338.3333333333333,289.935876976643L349.99999999999994,280.60467140577396L361.66666666666663,229.3062527201509L373.3333333333333,235.38778470912519L385,234.98853909763528L396.66666666666663,243.40983606557376L408.3333333333333,228.22921804729435L420,234.31075003626867"></path></g><g class="nv-group nv-series-69" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(197, 176, 213); stroke: rgb(197, 176, 213);"><path class="nv-line" d="M174.99999999999997,289.17452488031336L186.66666666666666,285.4327578703032L198.33333333333331,283.35296677789063L210,281.82097780356884L221.66666666666669,283.993616712607L233.33333333333334,282.3594951399971L244.99999999999997,281.4031626287538L256.66666666666663,277.633541273756L268.3333333333333,278.5341650950239L280,277.03003046568983L291.66666666666663,282.4894820832729L303.3333333333333,289.5087770201654L315,289.5923400551284L326.66666666666663,290.79007688959814L338.3333333333333,290.6322356013347L349.99999999999994,290.27941389815754L361.66666666666663,290.520818221384L373.3333333333333,291.52357464094007L385,283.1022776730016L396.66666666666663,280.6696648774119L408.3333333333333,277.884230378645L420,279.6390541128681"></path></g><g class="nv-group nv-series-70" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(140, 86, 75); stroke: rgb(140, 86, 75);"><path class="nv-line" d="M198.33333333333331,309.601044537937L210,306.0356883795155L221.66666666666669,303.2781082257363L233.33333333333334,300.35340200203103L244.99999999999997,298.96068475264764L256.66666666666663,299.2020890758741L268.3333333333333,294.8475264761352L280,291.3564485710141L291.66666666666663,290.2329899898448L303.3333333333333,289.07239228202525L315,288.6081531988974L326.66666666666663,286.24981865660817L338.3333333333333,280.9760626722762L349.99999999999994,278.8591324532134L361.66666666666663,276.147976207747L373.3333333333333,277.0393152473524L385,276.1758305527346L396.66666666666663,275.73016103293196L408.3333333333333,277.1135935006528L420,278.6455824749746"></path></g><g class="nv-group nv-series-71" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(196, 156, 148); stroke: rgb(196, 156, 148);"><path class="nv-line" d="M198.33333333333331,296.91803278688525L210,292.62846365878426L221.66666666666669,291.5699985492529L233.33333333333334,284.3092992891339L244.99999999999997,277.86566081531987L256.66666666666663,274.90381546496445L268.3333333333333,266.2782533004497L280,259.8160452633106L291.66666666666663,256.9749020745684L303.3333333333333,255.832873930074L315,253.61381111272306L326.66666666666663,254.9601044537937L338.3333333333333,252.17466995502684L349.99999999999994,251.9332656318004L361.66666666666663,250.9955026838822L373.3333333333333,251.3204700420717L385,252.27680255331495L396.66666666666663,255.72145655012332L408.3333333333333,255.56361526185987L420,257.26273030610764"></path></g><g class="nv-group nv-series-72" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(227, 119, 194); stroke: rgb(227, 119, 194);"><path class="nv-line" d="M198.33333333333331,299.04424778761063L210,297.8000870448281L221.66666666666669,298.0786304947048L233.33333333333334,296.1566806905556L244.99999999999997,294.7082547511969L256.66666666666663,293.44552444508923L268.3333333333333,288.533874945597L280,283.89148411431887L291.66666666666663,279.5462062962426L303.3333333333333,276.8814739590889L315,277.0114609023647L326.66666666666663,276.94646743072684L338.3333333333333,274.7645437400261L349.99999999999994,274.4767155084869L361.66666666666663,273.260409110692L373.3333333333333,272.7126069926012L385,270.70709415348904L396.66666666666663,270.10358334542286L408.3333333333333,270.4564050486L420,272.46191788771216"></path></g><g class="nv-group nv-series-73" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(247, 182, 210); stroke: rgb(247, 182, 210);"><path class="nv-line" d="M198.33333333333331,305.2836210648484L210,302.5817496010445L221.66666666666669,302.34963005948066L233.33333333333334,301.69041056143914L244.99999999999997,300.1305672421297L256.66666666666663,299.36921514580007L268.3333333333333,294.06760481648047L280,290.7529377629479L291.66666666666663,289.202379225301L303.3333333333333,289.89873784999276L315,288.11605977078193L326.66666666666663,288.2924706223705L338.3333333333333,286.0548382416945L349.99999999999994,284.3557231974467L361.66666666666663,283.55723197446684L373.3333333333333,285.70201653851734L385,284.6342666473234L396.66666666666663,284.2071666908458L408.3333333333333,283.3158276512404L420,283.742927607718"></path></g><g class="nv-group nv-series-74" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(127, 127, 127); stroke: rgb(127, 127, 127);"><path class="nv-line" d="M244.99999999999997,268.0052226896852L256.66666666666663,260.8559408095169L268.3333333333333,253.79022196431163L280,243.92049905701435L291.66666666666663,241.85927752792688L303.3333333333333,241.24648193819817L315,233.97649789641665L326.66666666666663,232.57449586537066L338.3333333333333,228.4799071521834L349.99999999999994,229.2969679384883L361.66666666666663,228.7955897287103L373.3333333333333,230.94965907442332L385,230.26258523139416L396.66666666666663,231.39532859422604L408.3333333333333,235.61061946902655L420,242.88060351080807"></path></g><g class="nv-group nv-series-75" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(199, 199, 199); stroke: rgb(199, 199, 199);"><path class="nv-line" d="M256.66666666666663,281.9695343101697L268.3333333333333,277.1135935006528L280,273.76178732047003L291.66666666666663,271.21775714492964L303.3333333333333,269.11011170752937L315,268.2094878862614L326.66666666666663,267.4109966632816L338.3333333333333,264.81125779776585L349.99999999999994,263.3999709850573L361.66666666666663,263.20499057014365L373.3333333333333,264.60699260118963L385,265.61903380240824L396.66666666666663,265.6840272740461L408.3333333333333,262.527201508777L420,262.9078775569418"></path></g><g class="nv-group nv-series-76" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(188, 189, 34); stroke: rgb(188, 189, 34);"><path class="nv-line" d="M268.3333333333333,283.26011896126505L268.3333333333333,283.26011896126505L280,275.7023066879443L280,275.7023066879443L291.66666666666663,270.3635572319745L291.66666666666663,270.3635572319745L303.3333333333333,265.82329899898446L303.3333333333333,265.82329899898446L315,264.2077469896997L315,264.2077469896997L326.66666666666663,258.7575801537792L326.66666666666663,258.7575801537792L338.3333333333333,251.94255041346293L338.3333333333333,251.94255041346293L349.99999999999994,241.627157986363L349.99999999999994,241.627157986363L361.66666666666663,225.5923400551284L361.66666666666663,225.5923400551284L373.3333333333333,214.38560858842305L373.3333333333333,214.38560858842305L385,208.67546786595096L385,208.67546786595096L396.66666666666663,204.9986943275787L396.66666666666663,204.9986943275787L408.3333333333333,200.59770781952705L408.3333333333333,200.59770781952705L420,200.30987958798784L420,200.30987958798784"></path></g><g class="nv-group nv-series-77" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(219, 219, 141); stroke: rgb(219, 219, 141);"><path class="nv-line" d="M268.3333333333333,292.990570143624L268.3333333333333,292.990570143624L280,288.06035108080664L280,288.06035108080664L291.66666666666663,285.0335122588133L291.66666666666663,285.0335122588133L303.3333333333333,282.75874075148704L303.3333333333333,282.75874075148704L315,280.4282605541854L315,280.4282605541854L326.66666666666663,279.18409981140286L326.66666666666663,279.18409981140286L338.3333333333333,275.94371101117076L338.3333333333333,275.94371101117076L349.99999999999994,275.3587697664297L349.99999999999994,275.3587697664297L361.66666666666663,273.1954156390541L361.66666666666663,273.1954156390541L373.3333333333333,269.871463803859L373.3333333333333,269.871463803859L385,265.63760336573336L385,265.63760336573336L396.66666666666663,264.0406209197737L396.66666666666663,264.0406209197737L408.3333333333333,261.45945161758306L408.3333333333333,261.45945161758306L420,261.5987233425214L420,261.5987233425214"></path></g><g class="nv-group nv-series-78" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(23, 190, 207); stroke: rgb(23, 190, 207);"><path class="nv-line" d="M280,274.8759611199768L291.66666666666663,268.92441607427827L303.3333333333333,266.89104889017847L315,263.9941970114609L326.66666666666663,262.45292325547655L338.3333333333333,259.71391266502246L349.99999999999994,259.55607137675906L361.66666666666663,258.0983606557377L373.3333333333333,260.13172783983754L385,256.2321195415639L396.66666666666663,258.1633541273756L408.3333333333333,257.1884520528072L420,258.6740171188162"></path></g><g class="nv-group nv-series-79" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(158, 218, 229); stroke: rgb(158, 218, 229);"><path class="nv-line" d="M280,304.1973016103293L291.66666666666663,302.1732192078921L303.3333333333333,300.8733497751342L315,299.3227912374873L326.66666666666663,297.9857826780792L338.3333333333333,296.5652110837081L349.99999999999994,296.2680980705063L361.66666666666663,294.7175395328594L373.3333333333333,294.726824314522L385,293.76120702161614L396.66666666666663,293.826200493254L408.3333333333333,291.82068765414186L420,291.8671115624547"></path></g><g class="nv-group nv-series-80" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(31, 119, 180); stroke: rgb(31, 119, 180);"><path class="nv-line" d="M280,297.9672131147541L291.66666666666663,295.51603075583927L303.3333333333333,293.6405048600029L315,291.2914550993762L326.66666666666663,290.3444073697954L338.3333333333333,288.4131727839837L349.99999999999994,289.1281009720006L361.66666666666663,289.7316117800667L373.3333333333333,290.80864645292326L385,290.61366603800957L396.66666666666663,291.7092702741912L408.3333333333333,290.520818221384L420,291.21717684607574"></path></g><g class="nv-group nv-series-81" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(174, 199, 232); stroke: rgb(174, 199, 232);"><path class="nv-line" d="M280,280.4653996808356L291.66666666666663,272.2855070361236L303.3333333333333,268.5344552444509L315,266.42680980705063L326.66666666666663,265.0712316843174L338.3333333333333,261.7101407224721L349.99999999999994,260.9859277527927L361.66666666666663,259.30538227187003L373.3333333333333,261.84941244741043L385,264.93195995937907L396.66666666666663,266.3711011170753L408.3333333333333,265.13622515595534L420,268.720150877702"></path></g><g class="nv-group nv-series-82" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 127, 14); stroke: rgb(255, 127, 14);"><path class="nv-line" d="M280,271.8862614246337L291.66666666666663,267.67097054983316L303.3333333333333,265.6004642390831L315,263.15856666183083L326.66666666666663,263.929203539823L338.3333333333333,262.3043667488757L349.99999999999994,259.55607137675906L361.66666666666663,258.43261279558976L373.3333333333333,260.0853039315247L385,258.08907587407515L396.66666666666663,260.41955607137675L408.3333333333333,260.61453648629043L420,264.996953431017"></path></g><g class="nv-group nv-series-83" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(255, 187, 120); stroke: rgb(255, 187, 120);"><path class="nv-line" d="M326.66666666666663,299.78703032061514L338.3333333333333,292.65631800377196L349.99999999999994,287.6053967793414L361.66666666666663,277.26215000725375L373.3333333333333,271.44987668649355L385,267.3274336283186L396.66666666666663,250.72624401566807L408.3333333333333,245.5453358479617L420,241.48788626142465"></path></g><g class="nv-group nv-series-84" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(44, 160, 44); stroke: rgb(44, 160, 44);"><path class="nv-line" d="M326.66666666666663,280.1311475409836L338.3333333333333,275.1916436965037L349.99999999999994,273.4368199622806L361.66666666666663,271.76555926302046L373.3333333333333,272.5361961410126L385,270.9484984767155L396.66666666666663,272.5454809226752L408.3333333333333,272.0998114028725L420,274.745974176701"></path></g><g class="nv-group nv-series-85" style="stroke-opacity: 1; fill-opacity: 0.5; fill: rgb(152, 223, 138); stroke: rgb(152, 223, 138);"><path class="nv-line" d="M326.66666666666663,309.65675322791236L338.3333333333333,308.3940229218047L349.99999999999994,307.50268388219934L361.66666666666663,306.77847091251994L373.3333333333333,305.70143623966345L385,304.45727549688087L396.66666666666663,303.8816190338024L408.3333333333333,298.73784999274625L420,302.08965617292904"></path></g></g><g class="nv-scatterWrap" clip-path=""><g class="nvd3 nv-wrap nv-scatter nv-chart-62134" transform="translate(0,0)"><defs><clippath id="nv-edge-clip-62134"><rect width="420" height="320"></rect></clippath><clippath class="nv-point-clips" id="nv-points-clip-62134"><circle r="25" cx="1.3513626507483421e-8" cy="247.7272596066632"></circle><circle r="25" cx="11.66666672469073" cy="226.00087052296453"></circle><circle r="25" cx="23.3333333768846" cy="193.56912812999963"></circle><circle r="25" cx="35.00000006508618" cy="174.75816054026316"></circle><circle r="25" cx="46.6666667480572" cy="188.82460476408033"></circle><circle r="25" cx="58.333333372548545" cy="212.03655890132777"></circle><circle r="25" cx="70.00000006712052" cy="201.5169012044642"></circle><circle r="25" cx="81.66666667524319" cy="190.99724359571238"></circle><circle r="25" cx="93.33333341672994" cy="164.3220658869251"></circle><circle r="25" cx="105.00000008777536" cy="161.23951843536648"></circle><circle r="25" cx="116.66666666727046" cy="145.09328313079635"></circle><circle r="25" cx="128.33333337272663" cy="140.11664013378405"></circle><circle r="25" cx="140.00000009836197" cy="124.32322653182032"></circle><circle r="25" cx="151.66666675468613" cy="119.1608879554996"></circle><circle r="25" cx="163.33333335676983" cy="155.25083425724793"></circle><circle r="25" cx="175.0000000340441" cy="125.74379808859393"></circle><circle r="25" cx="186.66666675125063" cy="129.49484987946525"></circle><circle r="25" cx="198.3333333882318" cy="130.48832150653695"></circle><circle r="25" cx="210.00000003448872" cy="128.86348471749645"></circle><circle r="25" cx="221.66666675752475" cy="134.07224726411744"></circle><circle r="25" cx="233.33333336005" cy="141.87146382003374"></circle><circle r="25" cx="245.00000003027637" cy="133.68228643952423"></circle><circle r="25" cx="256.66666674149326" cy="132.6423908620232"></circle><circle r="25" cx="268.3333333850809" cy="121.07355288897006"></circle><circle r="25" cx="280.00000004193174" cy="109.93181490588448"></circle><circle r="25" cx="291.666666726955" cy="111.95589737612558"></circle><circle r="25" cx="303.33333340398093" cy="111.18526049301686"></circle><circle r="25" cx="315.00000002711386" cy="110.96242572585481"></circle><circle r="25" cx="326.6666666816276" cy="104.63020460012598"></circle><circle r="25" cx="338.3333334202778" cy="99.95067469300346"></circle><circle r="25" cx="350.00000003287005" cy="95.78180768453191"></circle><circle r="25" cx="361.6666667030776" cy="91.67793423254687"></circle><circle r="25" cx="373.3333334264917" cy="101.241259313052"></circle><circle r="25" cx="385.00000005612276" cy="107.31350655010597"></circle><circle r="25" cx="396.66666666864205" cy="109.04047587100492"></circle><circle r="25" cx="408.3333334135552" cy="145.16756129588816"></circle><circle r="25" cx="420.00000004340615" cy="124.23966352204442"></circle><circle r="25" cx="6.826676405034959e-9" cy="246.18598586829083"></circle><circle r="25" cx="11.666666761699004" cy="203.6524010323024"></circle><circle r="25" cx="23.33333341000659" cy="201.24764255121394"></circle><circle r="25" cx="35.00000001743186" cy="179.92049915370677"></circle><circle r="25" cx="46.666666726319875" cy="198.35079072214984"></circle><circle r="25" cx="58.33333340095036" cy="170.98853913689098"></circle><circle r="25" cx="70.00000008193912" cy="175.1574061201521"></circle><circle r="25" cx="81.66666668752751" cy="179.33555783872686"></circle><circle r="25" cx="93.33333338011289" cy="139.4481358202295"></circle><circle r="25" cx="105.00000005562146" cy="101.76120708267337"></circle><circle r="25" cx="116.66666673099876" cy="103.7852894297665"></circle><circle r="25" cx="128.33333335445138" cy="97.33236620313582"></circle><circle r="25" cx="140.00000008845066" cy="85.32714355312339"></circle><circle r="25" cx="151.6666666751552" cy="91.12084730376228"></circle><circle r="25" cx="163.33333338317235" cy="88.67894966139787"></circle><circle r="25" cx="175.00000008636255" cy="96.34817931433359"></circle><circle r="25" cx="186.6666667105257" cy="150.01421738829174"></circle><circle r="25" cx="198.33333338980896" cy="103.07036128600063"></circle><circle r="25" cx="210.00000005525868" cy="110.2939213882127"></circle><circle r="25" cx="221.66666667404442" cy="114.41636445139811"></circle><circle r="25" cx="233.3333333481109" cy="102.4854200201238"></circle><circle r="25" cx="245.00000005314985" cy="100.65631809563772"></circle><circle r="25" cx="256.66666671696663" cy="97.83374439590115"></circle><circle r="25" cx="268.3333334030228" cy="88.94820841424806"></circle><circle r="25" cx="280.00000007755494" cy="76.27448138623532"></circle><circle r="25" cx="291.66666667835386" cy="84.22225448016273"></circle><circle r="25" cx="303.3333333743201" cy="91.48295381542441"></circle><circle r="25" cx="315.0000000576251" cy="85.09502393870736"></circle><circle r="25" cx="326.6666667530045" cy="82.57884816831773"></circle><circle r="25" cx="338.33333335480387" cy="72.8019730212005"></circle><circle r="25" cx="350.00000009463974" cy="69.92369075387286"></circle><circle r="25" cx="361.666666696732" cy="73.89757732790034"></circle><circle r="25" cx="373.3333333787781" cy="84.99289141021572"></circle><circle r="25" cx="385.0000000909289" cy="96.1903380872209"></circle><circle r="25" cx="396.66666676653057" cy="99.05933559913892"></circle><circle r="25" cx="408.33333335738047" cy="71.4185406150051"></circle><circle r="25" cx="420.0000000904378" cy="84.62150007568837"></circle><circle r="25" cx="3.632962112314999e-8" cy="300.50195860559256"></circle><circle r="25" cx="6.8935480667278165e-9" cy="300.5019586051897"></circle><circle r="25" cx="3.573344445321709e-8" cy="300.50195860176774"></circle><circle r="25" cx="11.666666701823287" cy="296.7416220281079"></circle><circle r="25" cx="11.666666741694703" cy="296.74162200603837"></circle><circle r="25" cx="11.666666752442383" cy="296.7416219641427"></circle><circle r="25" cx="23.333333336154755" cy="283.43652988973304"></circle><circle r="25" cx="23.333333350885336" cy="283.43652987238977"></circle><circle r="25" cx="23.333333358130226" cy="283.4365298926793"></circle><circle r="25" cx="35.00000004849005" cy="282.3316408804901"></circle><circle r="25" cx="35.00000001298574" cy="282.33164084221465"></circle><circle r="25" cx="35.00000000232723" cy="282.3316408631826"></circle><circle r="25" cx="46.666666702912195" cy="281.5517191370655"></circle><circle r="25" cx="46.66666671713851" cy="281.5517191369092"></circle><circle r="25" cx="46.66666668735807" cy="281.55171919303314"></circle><circle r="25" cx="58.333333377379425" cy="285.1542144860439"></circle><circle r="25" cx="58.333333426643684" cy="285.1542145001276"></circle><circle r="25" cx="58.3333333447213" cy="285.15421446140067"></circle><circle r="25" cx="70.00000004452788" cy="275.8694327850462"></circle><circle r="25" cx="70.00000006627606" cy="275.86943280403614"></circle><circle r="25" cx="70.00000008159175" cy="275.8694328431574"></circle><circle r="25" cx="81.666666694786" cy="266.5939358841448"></circle><circle r="25" cx="81.66666669637308" cy="266.5939359747128"></circle><circle r="25" cx="81.66666674762911" cy="266.5939359416731"></circle><circle r="25" cx="93.33333341979572" cy="255.58218483258645"></circle><circle r="25" cx="93.3333333883646" cy="255.58218483295488"></circle><circle r="25" cx="93.33333333752402" cy="255.58218487416818"></circle><circle r="25" cx="105.0000000509172" cy="257.71768465551764"></circle><circle r="25" cx="105.0000000558879" cy="257.71768466050275"></circle><circle r="25" cx="105.00000003764151" cy="257.7176846782022"></circle><circle r="25" cx="116.66666670629805" cy="257.309154265041"></circle><circle r="25" cx="116.66666674727811" cy="257.30915423848785"></circle><circle r="25" cx="116.66666670174712" cy="257.3091543126495"></circle><circle r="25" cx="128.3333334020207" cy="257.179167305182"></circle><circle r="25" cx="128.33333342590677" cy="257.1791673540555"></circle><circle r="25" cx="128.33333342891834" cy="257.1791672753929"></circle><circle r="25" cx="140.00000001858285" cy="240.64297116752624"></circle><circle r="25" cx="140.00000000430086" cy="240.64297116809934"></circle><circle r="25" cx="140.0000000447318" cy="240.6429711430348"></circle><circle r="25" cx="151.66666668952388" cy="252.52749175796023"></circle><circle r="25" cx="151.6666666710993" cy="252.52749167932632"></circle><circle r="25" cx="151.66666668340812" cy="252.52749169374192"></circle><circle r="25" cx="163.33333338302532" cy="244.59828817081498"></circle><circle r="25" cx="163.33333342800043" cy="244.59828817977572"></circle><circle r="25" cx="163.33333338846973" cy="244.5982881393056"></circle><circle r="25" cx="175.0000000816951" cy="249.61207026529158"></circle><circle r="25" cx="175.00000004086596" cy="249.61207021774868"></circle><circle r="25" cx="175.00000002330378" cy="249.6120702737024"></circle><circle r="25" cx="186.66666673538893" cy="252.64819387542752"></circle><circle r="25" cx="186.66666671820266" cy="252.64819391178304"></circle><circle r="25" cx="186.66666670477588" cy="252.648193847246"></circle><circle r="25" cx="198.3333333647681" cy="251.50616574927162"></circle><circle r="25" cx="198.3333333364911" cy="251.50616571716188"></circle><circle r="25" cx="198.33333337467175" cy="251.50616570349948"></circle><circle r="25" cx="210.00000001300654" cy="250.7169593230969"></circle><circle r="25" cx="210.00000009566043" cy="250.71695931553433"></circle><circle r="25" cx="210.00000007092834" cy="250.7169592779843"></circle><circle r="25" cx="221.66666669790828" cy="260.14101270603027"></circle><circle r="25" cx="221.66666673518236" cy="260.1410126704692"></circle><circle r="25" cx="221.66666668767675" cy="260.14101264214753"></circle><circle r="25" cx="233.3333333985285" cy="259.4167997179812"></circle><circle r="25" cx="233.33333339907793" cy="259.41679973467694"></circle><circle r="25" cx="233.33333343112076" cy="259.4167996552875"></circle><circle r="25" cx="245.00000003325118" cy="225.49020746299826"></circle><circle r="25" cx="245.00000001844165" cy="225.49020753618043"></circle><circle r="25" cx="245.00000009805382" cy="225.49020747386962"></circle><circle r="25" cx="256.6666667230627" cy="232.3423763295933"></circle><circle r="25" cx="256.6666667061572" cy="232.34237632552075"></circle><circle r="25" cx="256.66666667305435" cy="232.34237638782335"></circle><circle r="25" cx="268.3333334291065" cy="221.92485138139577"></circle><circle r="25" cx="268.3333334127979" cy="221.9248513426674"></circle><circle r="25" cx="268.3333333364754" cy="221.92485135697046"></circle><circle r="25" cx="280.0000000758521" cy="203.99593792560165"></circle><circle r="25" cx="280.00000005446293" cy="203.9959379567672"></circle><circle r="25" cx="280.00000007293977" cy="203.9959380032656"></circle><circle r="25" cx="291.6666667055736" cy="191.56361527875464"></circle><circle r="25" cx="291.66666668577" cy="191.5636152841873"></circle><circle r="25" cx="291.6666667216048" cy="191.56361529552873"></circle><circle r="25" cx="303.3333333918288" cy="174.55389532237825"></circle><circle r="25" cx="303.3333334134638" cy="174.55389531829135"></circle><circle r="25" cx="303.3333334158497" cy="174.5538953177914"></circle><circle r="25" cx="315.00000008688033" cy="167.33033516735244"></circle><circle r="25" cx="315.00000000410233" cy="167.33033518607598"></circle><circle r="25" cx="315.000000076132" cy="167.33033517614723"></circle><circle r="25" cx="326.6666667446546" cy="139.18816193582137"></circle><circle r="25" cx="326.66666668466775" cy="139.18816196661126"></circle><circle r="25" cx="326.66666672467375" cy="139.18816197412363"></circle><circle r="25" cx="338.33333334193725" cy="128.05570871982022"></circle><circle r="25" cx="338.33333333502037" cy="128.0557086985018"></circle><circle r="25" cx="338.33333334108795" cy="128.05570870625596"></circle><circle r="25" cx="350.00000002335923" cy="116.46830122710705"></circle><circle r="25" cx="350.0000000741301" cy="116.46830123028988"></circle><circle r="25" cx="350.00000007728806" cy="116.46830118017071"></circle><circle r="25" cx="361.66666669892055" cy="86.6177281440004"></circle><circle r="25" cx="361.6666667145329" cy="86.61772814511835"></circle><circle r="25" cx="361.6666666848288" cy="86.61772817717372"></circle><circle r="25" cx="373.3333334069458" cy="80.9447265615932"></circle><circle r="25" cx="373.33333337453587" cy="80.94472660984532"></circle><circle r="25" cx="373.3333333373281" cy="80.94472658034604"></circle><circle r="25" cx="385.00000003957337" cy="79.5798637282232"></circle><circle r="25" cx="385.0000000141273" cy="79.57986365921849"></circle><circle r="25" cx="385.00000005019166" cy="79.5798636768207"></circle><circle r="25" cx="396.66666670055866" cy="80.66618315730742"></circle><circle r="25" cx="396.66666668842674" cy="80.66618311974555"></circle><circle r="25" cx="396.6666667596248" cy="80.66618312802359"></circle><circle r="25" cx="408.3333333962918" cy="73.14550997812906"></circle><circle r="25" cx="408.33333335603464" cy="73.14550993878804"></circle><circle r="25" cx="408.3333334134631" cy="73.14550995441532"></circle><circle r="25" cx="420.00000006970214" cy="80.26693747964411"></circle><circle r="25" cx="420.0000000361988" cy="80.26693753229077"></circle><circle r="25" cx="420.00000003209044" cy="80.26693755804423"></circle><circle r="25" cx="7.168745314702392e-8" cy="269.026548718342"></circle><circle r="25" cx="11.666666706778207" cy="247.5229943520217"></circle><circle r="25" cx="23.33333337237559" cy="246.13956188881178"></circle><circle r="25" cx="35.00000006302743" cy="240.82866683385816"></circle><circle r="25" cx="46.66666673461013" cy="248.69287685982215"></circle><circle r="25" cx="58.33333335675061" cy="253.381691571895"></circle><circle r="25" cx="70.00000006703335" cy="260.80023220418525"></circle><circle r="25" cx="81.6666667083986" cy="268.2280574875314"></circle><circle r="25" cx="93.33333337568935" cy="248.1357900091545"></circle><circle r="25" cx="105.00000003693067" cy="249.8813289413165"></circle><circle r="25" cx="116.6666666995686" cy="242.9363122214968"></circle><circle r="25" cx="128.3333333847985" cy="236.0377194423347"></circle><circle r="25" cx="140.00000006707097" cy="236.520528148819"></circle><circle r="25" cx="151.66666669926576" cy="233.21514587898534"></circle><circle r="25" cx="163.3333333569199" cy="231.33033519104484"></circle><circle r="25" cx="175.00000005925108" cy="233.25228502086924"></circle><circle r="25" cx="186.66666667336662" cy="251.4875961138052"></circle><circle r="25" cx="198.33333340890732" cy="230.19759185461356"></circle><circle r="25" cx="210.00000007919786" cy="234.5243000750062"></circle><circle r="25" cx="221.66666666824005" cy="232.98302633962453"></circle><circle r="25" cx="233.3333333751298" cy="229.27839846761998"></circle><circle r="25" cx="245.00000009416402" cy="227.8485420927081"></circle><circle r="25" cx="256.66666669626227" cy="227.8578267939548"></circle><circle r="25" cx="268.3333333565088" cy="232.70448285839916"></circle><circle r="25" cx="280.0000000219857" cy="223.27114464026164"></circle><circle r="25" cx="291.6666666935836" cy="221.85985783155968"></circle><circle r="25" cx="303.33333337954804" cy="217.64456699702345"></circle><circle r="25" cx="315.0000000275365" cy="218.31307131834976"></circle><circle r="25" cx="326.6666667503986" cy="224.14391421096914"></circle><circle r="25" cx="338.3333333773747" cy="224.2924706882646"></circle><circle r="25" cx="350.0000000729068" cy="226.08443350546193"></circle><circle r="25" cx="361.66666675557235" cy="224.97954453469185"></circle><circle r="25" cx="373.3333333869085" cy="223.72609901968912"></circle><circle r="25" cx="385.0000000856167" cy="227.60713774574245"></circle><circle r="25" cx="396.6666666684899" cy="230.46685049603195"></circle><circle r="25" cx="408.33333336109297" cy="234.08791528605923"></circle><circle r="25" cx="420.00000003378875" cy="234.89569137296195"></circle><circle r="25" cx="8.562191657256335e-8" cy="222.57478609831958"></circle><circle r="25" cx="9.83119468903169e-8" cy="222.57478608243724"></circle><circle r="25" cx="6.110446508973837e-8" cy="222.57478603529475"></circle><circle r="25" cx="11.666666746756382" cy="192.76135210314362"></circle><circle r="25" cx="11.66666672798053" cy="192.76135216918252"></circle><circle r="25" cx="11.666666697206644" cy="192.7613521334693"></circle><circle r="25" cx="23.333333346487038" cy="139.87523580659067"></circle><circle r="25" cx="23.33333339432434" cy="139.8752358289962"></circle><circle r="25" cx="23.33333338777209" cy="139.87523577285313"></circle><circle r="25" cx="35.00000009094749" cy="148.0829828170809"></circle><circle r="25" cx="35.000000027897755" cy="148.082982752909"></circle><circle r="25" cx="35.00000008284434" cy="148.08298280033716"></circle><circle r="25" cx="46.66666670758598" cy="137.94400122924523"></circle><circle r="25" cx="46.66666666963535" cy="137.94400118954044"></circle><circle r="25" cx="46.6666666799383" cy="137.94400123691645"></circle><circle r="25" cx="58.33333335700325" cy="156.26287546170624"></circle><circle r="25" cx="58.333333374562464" cy="156.26287543890484"></circle><circle r="25" cx="58.333333373603885" cy="156.26287545534947"></circle><circle r="25" cx="70.00000003248431" cy="158.49122306720847"></circle><circle r="25" cx="70.00000005047372" cy="158.49122303246784"></circle><circle r="25" cx="70.00000007138982" cy="158.49122305187714"></circle><circle r="25" cx="81.6666666913213" cy="160.7288553851982"></circle><circle r="25" cx="81.66666668357205" cy="160.72885536828338"></circle><circle r="25" cx="81.66666668788058" cy="160.72885542886598"></circle><circle r="25" cx="93.33333337616617" cy="166.3368635540191"></circle><circle r="25" cx="93.33333335197688" cy="166.33686354045597"></circle><circle r="25" cx="93.33333339474015" cy="166.33686354921986"></circle><circle r="25" cx="105.0000000997828" cy="140.0052227732789"></circle><circle r="25" cx="105.00000009525202" cy="140.0052226965933"></circle><circle r="25" cx="105.00000007120407" cy="140.00522269273287"></circle><circle r="25" cx="116.66666672691515" cy="84.57507623294636"></circle><circle r="25" cx="116.66666672302173" cy="84.57507624141998"></circle><circle r="25" cx="116.66666669384567" cy="84.5750762220228"></circle><circle r="25" cx="128.33333342507012" cy="93.50703613669708"></circle><circle r="25" cx="128.33333340807184" cy="93.5070361452114"></circle><circle r="25" cx="128.33333341810393" cy="93.50703613630134"></circle><circle r="25" cx="140.00000004731822" cy="70.35079069529426"></circle><circle r="25" cx="140.00000006012198" cy="70.35079075209293"></circle><circle r="25" cx="140.00000002780627" cy="70.3507907271256"></circle><circle r="25" cx="151.66666671332786" cy="79.00420726304633"></circle><circle r="25" cx="151.66666675429835" cy="79.00420718419578"></circle><circle r="25" cx="151.66666670381326" cy="79.00420721381757"></circle><circle r="25" cx="163.33333341170498" cy="85.19715657169797"></circle><circle r="25" cx="163.33333339411" cy="85.19715663243781"></circle><circle r="25" cx="163.33333334339676" cy="85.19715660123352"></circle><circle r="25" cx="175.0000000839606" cy="95.97678806199143"></circle><circle r="25" cx="175.00000005081526" cy="95.9767881414795"></circle><circle r="25" cx="175.00000000330056" cy="95.97678807973944"></circle><circle r="25" cx="186.66666668267297" cy="85.23429574072858"></circle><circle r="25" cx="186.66666674488172" cy="85.2342957007867"></circle><circle r="25" cx="186.6666666909316" cy="85.2342956622746"></circle><circle r="25" cx="198.3333333775678" cy="74.10184248253987"></circle><circle r="25" cx="198.3333333539539" cy="74.10184252233368"></circle><circle r="25" cx="198.33333342238586" cy="74.1018424733674"></circle><circle r="25" cx="210.00000006074282" cy="63.34078059034159"></circle><circle r="25" cx="210.0000000434139" cy="63.340780558711764"></circle><circle r="25" cx="210.00000005075844" cy="63.34078059083502"></circle><circle r="25" cx="221.66666672109022" cy="83.95299587340422"></circle><circle r="25" cx="221.66666674896655" cy="83.9529958804778"></circle><circle r="25" cx="221.66666670039916" cy="83.95299588830206"></circle><circle r="25" cx="233.3333334331705" cy="88.53967801665989"></circle><circle r="25" cx="233.33333334297117" cy="88.53967802008557"></circle><circle r="25" cx="233.3333333816911" cy="88.53967802779164"></circle><circle r="25" cx="245.00000002008417" cy="80.4433483577893"></circle><circle r="25" cx="245.00000003437674" cy="80.44334834233788"></circle><circle r="25" cx="245.00000005588072" cy="80.44334835901934"></circle><circle r="25" cx="256.66666668523953" cy="73.57260994726701"></circle><circle r="25" cx="256.6666667408742" cy="73.57260995269338"></circle><circle r="25" cx="256.6666666874171" cy="73.57260994042029"></circle><circle r="25" cx="268.333333363606" cy="65.06774990650584"></circle><circle r="25" cx="268.33333339302266" cy="65.06774989404478"></circle><circle r="25" cx="268.3333333414187" cy="65.06774994841852"></circle><circle r="25" cx="280.00000004212256" cy="51.28913397733069"></circle><circle r="25" cx="280.0000000516913" cy="51.28913390699417"></circle><circle r="25" cx="280.0000000072755" cy="51.28913398008818"></circle><circle r="25" cx="291.6666667497372" cy="53.79602503262903"></circle><circle r="25" cx="291.6666666783299" cy="53.79602504593376"></circle><circle r="25" cx="291.66666673229525" cy="53.79602505223168"></circle><circle r="25" cx="303.33333338168023" cy="59.320470046842466"></circle><circle r="25" cx="303.33333334788597" cy="59.32047012148256"></circle><circle r="25" cx="303.3333333958512" cy="59.32047014154639"></circle><circle r="25" cx="315.00000002569743" cy="55.84796175044341"></circle><circle r="25" cx="315.0000000058348" cy="55.8479617909122"></circle><circle r="25" cx="315.0000000629359" cy="55.84796174101576"></circle><circle r="25" cx="326.6666667161019" cy="50.89917307853907"></circle><circle r="25" cx="326.6666667062468" cy="50.899173098652525"></circle><circle r="25" cx="326.66666673389113" cy="50.89917313178097"></circle><circle r="25" cx="338.3333333399507" cy="45.50471493433231"></circle><circle r="25" cx="338.3333333968429" cy="45.504714990042594"></circle><circle r="25" cx="338.33333338840004" cy="45.50471498370661"></circle><circle r="25" cx="350.0000000970833" cy="43.332076032250754"></circle><circle r="25" cx="350.00000001376793" cy="43.332076032380265"></circle><circle r="25" cx="350.0000000293307" cy="43.33207605070122"></circle><circle r="25" cx="361.66666673202036" cy="35.746409431207354"></circle><circle r="25" cx="361.6666667654206" cy="35.746409432221064"></circle><circle r="25" cx="361.6666667423101" cy="35.746409441856144"></circle><circle r="25" cx="373.3333333383515" cy="36.173509426733375"></circle><circle r="25" cx="373.3333333647583" cy="36.173509450237525"></circle><circle r="25" cx="373.3333333606574" cy="36.17350943304441"></circle><circle r="25" cx="385.00000002552616" cy="44.260554220228336"></circle><circle r="25" cx="385.0000000491705" cy="44.26055422867663"></circle><circle r="25" cx="385.0000000873862" cy="44.260554258939734"></circle><circle r="25" cx="396.66666670206365" cy="50.899173080872465"></circle><circle r="25" cx="396.66666666761705" cy="50.8991730882003"></circle><circle r="25" cx="396.6666666963379" cy="50.89917314100105"></circle><circle r="25" cx="408.33333335468507" cy="52.579718643225505"></circle><circle r="25" cx="408.3333334142866" cy="52.57971865205017"></circle><circle r="25" cx="408.3333333577582" cy="52.579718559868574"></circle><circle r="25" cx="420.00000007829624" cy="59.66400703995949"></circle><circle r="25" cx="420.0000000044656" cy="59.66400698352967"></circle><circle r="25" cx="420.0000000777969" cy="59.66400704782922"></circle><circle r="25" cx="9.14320854935795e-9" cy="267.4017119542831"></circle><circle r="25" cx="11.666666698928243" cy="275.86943282803816"></circle><circle r="25" cx="23.333333362982124" cy="280.01044544899844"></circle><circle r="25" cx="35.000000089824795" cy="273.67822432982365"></circle><circle r="25" cx="46.66666671068113" cy="280.7625127782355"></circle><circle r="25" cx="58.333333335346204" cy="282.1830842993695"></circle><circle r="25" cx="70.00000001635354" cy="282.20165389653147"></circle><circle r="25" cx="81.66666675662107" cy="282.2202234910304"></circle><circle r="25" cx="93.33333340545555" cy="274.5881329724664"></circle><circle r="25" cx="105.00000005595939" cy="272.8425939917805"></circle><circle r="25" cx="116.66666669691726" cy="265.80472946844435"></circle><circle r="25" cx="128.33333342831148" cy="264.70912524032076"></circle><circle r="25" cx="140.00000000152735" cy="261.255186443841"></circle><circle r="25" cx="151.66666675061978" cy="261.2459017061636"></circle><circle r="25" cx="163.33333338924845" cy="263.3628319117385"></circle><circle r="25" cx="175.0000000731982" cy="267.0767445969057"></circle><circle r="25" cx="186.66666675272003" cy="267.31814888336504"></circle><circle r="25" cx="198.33333340348943" cy="275.73944582537376"></circle><circle r="25" cx="210.00000006122025" cy="278.67343691569783"></circle><circle r="25" cx="221.66666668859514" cy="282.3873495804794"></circle><circle r="25" cx="233.33333339762044" cy="281.7838386942694"></circle><circle r="25" cx="245.0000000520524" cy="279.73190193736417"></circle><circle r="25" cx="256.666666685804" cy="278.4598868668229"></circle><circle r="25" cx="268.3333333768523" cy="274.8945307209447"></circle><circle r="25" cx="280.000000095552" cy="272.759030987453"></circle><circle r="25" cx="291.666666685648" cy="272.60118965321084"></circle><circle r="25" cx="303.3333334243075" cy="269.9457421097117"></circle><circle r="25" cx="315.00000002441794" cy="267.03960545180723"></circle><circle r="25" cx="326.66666672409593" cy="269.0172639324956"></circle><circle r="25" cx="338.3333334327244" cy="266.54751197546767"></circle><circle r="25" cx="350.00000007404225" cy="263.86421014277323"></circle><circle r="25" cx="361.66666670890555" cy="262.95430153428237"></circle><circle r="25" cx="373.3333334145636" cy="263.16785154233264"></circle><circle r="25" cx="385.0000000860225" cy="267.53169891834995"></circle><circle r="25" cx="396.66666676558225" cy="271.4684463147836"></circle><circle r="25" cx="408.3333333667749" cy="267.58740757689696"></circle><circle r="25" cx="420.00000002809367" cy="265.25692735064035"></circle><circle r="25" cx="6.656353867147117e-8" cy="254.6537067064087"></circle><circle r="25" cx="11.666666735821403" cy="234.1343392508155"></circle><circle r="25" cx="23.333333359981673" cy="214.28347607085445"></circle><circle r="25" cx="35.00000007079477" cy="203.5688380017919"></circle><circle r="25" cx="46.66666671551144" cy="222.84404474304495"></circle><circle r="25" cx="58.333333335519086" cy="219.39010591766453"></circle><circle r="25" cx="70.00000000033394" cy="212.92789786854073"></circle><circle r="25" cx="81.66666669040997" cy="206.4749746926824"></circle><circle r="25" cx="93.33333339111853" cy="210.80168295306058"></circle><circle r="25" cx="105.00000000240907" cy="192.61279562679402"></circle><circle r="25" cx="116.6666667515241" cy="176.70796468688087"></circle><circle r="25" cx="128.33333339851842" cy="170.36645881755857"></circle><circle r="25" cx="140.00000009441322" cy="131.38894538448733"></circle><circle r="25" cx="151.66666668530812" cy="116.23618163657031"></circle><circle r="25" cx="163.333333348982" cy="110.2103583667997"></circle><circle r="25" cx="175.00000009945873" cy="113.21862763546811"></circle><circle r="25" cx="186.666666672677" cy="80.08124189184217"></circle><circle r="25" cx="198.3333333849169" cy="79.42202238541776"></circle><circle r="25" cx="210.00000004292073" cy="85.67068045867943"></circle><circle r="25" cx="221.66666671884008" cy="98.33512268067827"></circle><circle r="25" cx="233.33333342602444" cy="97.4902075017529"></circle><circle r="25" cx="245.00000007432635" cy="87.53692151681054"></circle><circle r="25" cx="256.66666668155773" cy="75.41099674956718"></circle><circle r="25" cx="268.33333336319924" cy="66.24691724304718"></circle><circle r="25" cx="280.00000007909927" cy="43.8891629872565"></circle><circle r="25" cx="291.6666666704008" cy="38.87538086080642"></circle><circle r="25" cx="303.33333340094356" cy="25.848832170811274"></circle><circle r="25" cx="315.00000004772727" cy="16.82402438639558"></circle><circle r="25" cx="326.66666676500256" cy="24.149717192963866"></circle><circle r="25" cx="338.3333334116649" cy="17.35325695952371"></circle><circle r="25" cx="350.00000008131025" cy="14.205715963022838"></circle><circle r="25" cx="361.6666666758042" cy="0.7613521410845097"></circle><circle r="25" cx="373.3333333509778" cy="2.890479292254895e-8"></circle><circle r="25" cx="385.00000005703004" cy="15.969824513474965"></circle><circle r="25" cx="396.66666668932305" cy="7.130712323853344"></circle><circle r="25" cx="408.3333334278424" cy="11.281009807697766"></circle><circle r="25" cx="420.00000008994994" cy="13.834324682446939"></circle><circle r="25" cx="4.4546716241165994e-8" cy="318.700130642237"></circle><circle r="25" cx="11.666666718875057" cy="317.9666328458127"></circle><circle r="25" cx="23.333333357527156" cy="316.4346438461743"></circle><circle r="25" cx="35.00000004407418" cy="316.63890908437764"></circle><circle r="25" cx="46.666666760078904" cy="311.86653128124175"></circle><circle r="25" cx="58.333333420602145" cy="318.00377199064116"></circle><circle r="25" cx="70.00000007949026" cy="317.0660089969804"></circle><circle r="25" cx="81.6666667013721" cy="316.13753085277835"></circle><circle r="25" cx="93.3333333808246" cy="309.79602500298677"></circle><circle r="25" cx="105.00000006159692" cy="316.8338894549956"></circle><circle r="25" cx="116.66666673076092" cy="313.21282470230824"></circle><circle r="25" cx="128.33333333550274" cy="310.8637748648859"></circle><circle r="25" cx="140.0000000539842" cy="307.53982304736223"></circle><circle r="25" cx="151.66666674670722" cy="309.76817063926256"></circle><circle r="25" cx="163.33333336147962" cy="310.12099237108043"></circle><circle r="25" cx="175.00000000653716" cy="307.9854926048507"></circle><circle r="25" cx="186.66666671506778" cy="308.27332084900195"></circle><circle r="25" cx="198.33333337659877" cy="312.53503563155016"></circle><circle r="25" cx="210.0000000625614" cy="306.25852323915836"></circle><circle r="25" cx="221.66666670690685" cy="305.3021906639304"></circle><circle r="25" cx="233.33333342365003" cy="303.04598877790454"></circle><circle r="25" cx="245.00000000720817" cy="300.7433628949172"></circle><circle r="25" cx="256.66666671289454" cy="304.32728863477547"></circle><circle r="25" cx="268.3333334254367" cy="303.66806907787026"></circle><circle r="25" cx="280.00000008986046" cy="302.3124909968957"></circle><circle r="25" cx="291.66666676577427" cy="303.0552734891754"></circle><circle r="25" cx="303.333333377983" cy="306.6206296475091"></circle><circle r="25" cx="315.0000000339942" cy="304.73581895650494"></circle><circle r="25" cx="326.66666672009967" cy="303.73306260346465"></circle><circle r="25" cx="338.3333333501232" cy="303.09241262356426"></circle><circle r="25" cx="350.0000000608205" cy="302.46104753271345"></circle><circle r="25" cx="361.6666667498379" cy="300.6783693604837"></circle><circle r="25" cx="373.33333338821024" cy="301.70898015189914"></circle><circle r="25" cx="385.00000005382196" cy="302.4610475359349"></circle><circle r="25" cx="396.6666667248936" cy="302.6745974592375"></circle><circle r="25" cx="408.3333333927578" cy="303.03670392556677"></circle><circle r="25" cx="420.0000000165744" cy="303.5845060579083"></circle><circle r="25" cx="3.558704222086817e-8" cy="285.68344701091326"></circle><circle r="25" cx="5.626901476643979e-8" cy="285.6834470026594"></circle><circle r="25" cx="11.66666669088703" cy="273.5482374413621"></circle><circle r="25" cx="11.66666669171944" cy="273.54823735489884"></circle><circle r="25" cx="23.33333341399" cy="269.93645731447026"></circle><circle r="25" cx="23.33333342921486" cy="269.9364573049075"></circle><circle r="25" cx="35.000000084893394" cy="257.2534455402166"></circle><circle r="25" cx="35.00000008321921" cy="257.2534455562433"></circle><circle r="25" cx="46.66666670372532" cy="257.9405194228602"></circle><circle r="25" cx="46.666666765286955" cy="257.94051938471637"></circle><circle r="25" cx="58.33333341399727" cy="251.0233570791485"></circle><circle r="25" cx="58.333333362636104" cy="251.02335704789442"></circle><circle r="25" cx="70.00000009513816" cy="257.4112868384829"></circle><circle r="25" cx="70.00000002455421" cy="257.4112869089019"></circle><circle r="25" cx="81.66666673198672" cy="263.8085014211048"></circle><circle r="25" cx="81.66666676313213" cy="263.80850144564084"></circle><circle r="25" cx="93.33333342484119" cy="250.54983325308294"></circle><circle r="25" cx="93.33333338243062" cy="250.54983320170035"></circle><circle r="25" cx="105.00000001192437" cy="247.51370964639074"></circle><circle r="25" cx="105.00000007912536" cy="247.51370959791922"></circle><circle r="25" cx="116.66666673090148" cy="238.67459745615992"></circle><circle r="25" cx="116.66666673685395" cy="238.67459747917127"></circle><circle r="25" cx="128.33333340754703" cy="239.36167133163443"></circle><circle r="25" cx="128.33333341285706" cy="239.36167127458765"></circle><circle r="25" cx="140.00000000491994" cy="239.881619035012"></circle><circle r="25" cx="140.00000009053812" cy="239.88161903472354"></circle><circle r="25" cx="151.66666668106797" cy="242.165675377495"></circle><circle r="25" cx="151.66666676137024" cy="242.165675417577"></circle><circle r="25" cx="163.33333342475015" cy="240.11373862120038"></circle><circle r="25" cx="163.33333342431328" cy="240.1137386394155"></circle><circle r="25" cx="175.00000002430014" cy="251.11620488529346"></circle><circle r="25" cx="175.0000000641506" cy="251.11620487147962"></circle><circle r="25" cx="186.66666667929493" cy="244.77469906309358"></circle><circle r="25" cx="186.6666666753734" cy="244.7746989767598"></circle><circle r="25" cx="198.3333333623345" cy="255.15508495598286"></circle><circle r="25" cx="198.3333333945947" cy="255.1550849283016"></circle><circle r="25" cx="210.0000000822626" cy="253.0195851804033"></circle><circle r="25" cx="210.00000003265959" cy="253.01958514290752"></circle><circle r="25" cx="221.6666667432145" cy="257.5691281632991"></circle><circle r="25" cx="221.66666672640417" cy="257.56912816961693"></circle><circle r="25" cx="233.3333334139682" cy="257.6062672693223"></circle><circle r="25" cx="233.33333339243188" cy="257.6062672632338"></circle><circle r="25" cx="245.00000008190153" cy="259.4817932182079"></circle><circle r="25" cx="245.00000002761652" cy="259.48179315440274"></circle><circle r="25" cx="256.6666666819341" cy="259.56535622046044"></circle><circle r="25" cx="256.6666667098526" cy="259.56535620869846"></circle><circle r="25" cx="268.3333334248134" cy="254.99724366951915"></circle><circle r="25" cx="268.3333333754677" cy="254.99724358266906"></circle><circle r="25" cx="280.0000000235003" cy="248.91571159818318"></circle><circle r="25" cx="280.00000002998036" cy="248.9157116136572"></circle><circle r="25" cx="291.6666666935301" cy="252.66676343090674"></circle><circle r="25" cx="291.6666667420564" cy="252.66676346173938"></circle><circle r="25" cx="303.3333333489072" cy="251.52473524362705"></circle><circle r="25" cx="303.33333340795843" cy="251.52473532216482"></circle><circle r="25" cx="315.00000001275055" cy="246.5852314040478"></circle><circle r="25" cx="315.0000000135863" cy="246.585231432632"></circle><circle r="25" cx="326.6666667552214" cy="242.90845790189098"></circle><circle r="25" cx="326.6666667613426" cy="242.90845795300385"></circle><circle r="25" cx="338.3333334131576" cy="241.49717108398704"></circle><circle r="25" cx="338.33333337613215" cy="241.49717109960304"></circle><circle r="25" cx="350.0000000862928" cy="241.52502543943763"></circle><circle r="25" cx="350.0000000915966" cy="241.52502546833023"></circle><circle r="25" cx="361.6666666918048" cy="237.36544325137305"></circle><circle r="25" cx="361.66666673431877" cy="237.3654432706387"></circle><circle r="25" cx="373.33333337410113" cy="232.59306547456433"></circle><circle r="25" cx="373.33333334314506" cy="232.59306544088153"></circle><circle r="25" cx="385.0000000103109" cy="230.50398965383238"></circle><circle r="25" cx="385.0000000793401" cy="230.50398957489642"></circle><circle r="25" cx="396.66666673508" cy="234.6357174824733"></circle><circle r="25" cx="396.66666668189583" cy="234.6357174844086"></circle><circle r="25" cx="408.333333418635" cy="245.28536196694552"></circle><circle r="25" cx="408.33333334136256" cy="245.28536202895478"></circle><circle r="25" cx="420.00000003054777" cy="239.98375170532677"></circle><circle r="25" cx="420.0000000549975" cy="239.98375165271847"></circle><circle r="25" cx="1.689479169435799e-8" cy="283.67793415015393"></circle><circle r="25" cx="4.4104876555502415e-8" cy="283.67793423514286"></circle><circle r="25" cx="11.66666675916798" cy="272.5547657120933"></circle><circle r="25" cx="11.66666670605112" cy="272.5547657807824"></circle><circle r="25" cx="23.333333420137695" cy="249.86275932179282"></circle><circle r="25" cx="23.33333342785213" cy="249.86275937208742"></circle><circle r="25" cx="35.00000000637801" cy="243.82765132539333"></circle><circle r="25" cx="35.00000001778193" cy="243.82765125641174"></circle><circle r="25" cx="46.6666667433247" cy="250.9397940259081"></circle><circle r="25" cx="46.66666676096278" cy="250.93979403685088"></circle><circle r="25" cx="58.33333341814039" cy="248.8135790720278"></circle><circle r="25" cx="58.333333335888895" cy="248.81357906928727"></circle><circle r="25" cx="70.00000006909849" cy="239.00884961360424"></circle><circle r="25" cx="70.00000005272278" cy="239.00884965364003"></circle><circle r="25" cx="81.66666676415697" cy="229.20412019172923"></circle><circle r="25" cx="81.66666666696467" cy="229.2041202058471"></circle><circle r="25" cx="93.33333334418467" cy="221.56274487164922"></circle><circle r="25" cx="93.3333334176413" cy="221.5627449002939"></circle><circle r="25" cx="105.00000007972123" cy="218.4337734880335"></circle><circle r="25" cx="105.00000000692432" cy="218.43377343947532"></circle><circle r="25" cx="116.6666667520227" cy="206.2335703450972"></circle><circle r="25" cx="116.66666674627338" cy="206.23357031172537"></circle><circle r="25" cx="128.33333340522907" cy="199.6228058151945"></circle><circle r="25" cx="128.33333338439647" cy="199.6228058123523"></circle><circle r="25" cx="140.0000000187381" cy="193.42057165532057"></circle><circle r="25" cx="140.00000000086092" cy="193.42057162768066"></circle><circle r="25" cx="151.66666671754726" cy="196.05744966989195"></circle><circle r="25" cx="151.6666667566561" cy="196.05744960588348"></circle><circle r="25" cx="163.33333335011395" cy="196.18743658016484"></circle><circle r="25" cx="163.3333333656168" cy="196.18743660651663"></circle><circle r="25" cx="175.00000006182358" cy="202.73320768286794"></circle><circle r="25" cx="175.0000000897463" cy="202.73320764625691"></circle><circle r="25" cx="186.66666675084542" cy="203.0024663145818"></circle><circle r="25" cx="186.66666675765956" cy="203.00246628140337"></circle><circle r="25" cx="198.3333334140437" cy="211.33091542293886"></circle><circle r="25" cx="198.33333341690357" cy="211.33091547698018"></circle><circle r="25" cx="210.00000006257517" cy="207.96053971628132"></circle><circle r="25" cx="210.00000001115168" cy="207.96053974323306"></circle><circle r="25" cx="221.66666670100264" cy="211.64659808188273"></circle><circle r="25" cx="221.66666672134886" cy="211.646598026633"></circle><circle r="25" cx="233.33333335372117" cy="212.33367193132764"></circle><circle r="25" cx="233.33333337044152" cy="212.3336719203692"></circle><circle r="25" cx="245.00000005342218" cy="213.96779341644438"></circle><circle r="25" cx="245.00000003124478" cy="213.96779344184256"></circle><circle r="25" cx="256.66666672233663" cy="210.00319165704573"></circle><circle r="25" cx="256.66666675343095" cy="210.00319168426705"></circle><circle r="25" cx="268.3333333355362" cy="207.57986364016625"></circle><circle r="25" cx="268.33333337044746" cy="207.5798636971962"></circle><circle r="25" cx="280.00000009264437" cy="200.6812709396321"></circle><circle r="25" cx="280.0000000175584" cy="200.68127095385807"></circle><circle r="25" cx="291.6666667541843" cy="200.15203835468935"></circle><circle r="25" cx="291.6666666859685" cy="200.15203830903224"></circle><circle r="25" cx="303.333333359384" cy="194.09836073627687"></circle><circle r="25" cx="303.3333333575948" cy="194.0983607122837"></circle><circle r="25" cx="315.00000000391316" cy="192.59422608169496"></circle><circle r="25" cx="315.0000000837818" cy="192.59422612085316"></circle><circle r="25" cx="326.66666670252647" cy="201.07123176033642"></circle><circle r="25" cx="326.6666666767665" cy="201.07123170449103"></circle><circle r="25" cx="338.33333333942056" cy="196.28956917741013"></circle><circle r="25" cx="338.33333337225434" cy="196.2895691799637"></circle><circle r="25" cx="350.00000007485573" cy="188.54606127219446"></circle><circle r="25" cx="350.00000001564945" cy="188.54606129440506"></circle><circle r="25" cx="361.6666666973173" cy="180.46830122059694"></circle><circle r="25" cx="361.66666667833096" cy="180.4683011862659"></circle><circle r="25" cx="373.33333335636115" cy="183.0680401211968"></circle><circle r="25" cx="373.3333334170416" cy="183.06804012147097"></circle><circle r="25" cx="385.0000000249799" cy="181.1739446685412"></circle><circle r="25" cx="385.00000006618217" cy="181.17394466589965"></circle><circle r="25" cx="396.6666667216108" cy="178.99202095156238"></circle><circle r="25" cx="396.66666676388706" cy="178.9920209813577"></circle><circle r="25" cx="408.3333333336204" cy="193.80124773964235"></circle><circle r="25" cx="408.3333333439132" cy="193.80124770715184"></circle><circle r="25" cx="420.00000000898314" cy="203.06745982031347"></circle><circle r="25" cx="420.00000008942135" cy="203.06745982547557"></circle><circle r="25" cx="8.328280332498253e-8" cy="296.7323371596109"></circle><circle r="25" cx="5.832601280417293e-8" cy="296.7323371585501"></circle><circle r="25" cx="11.666666697566304" cy="295.2839112254608"></circle><circle r="25" cx="11.666666735171116" cy="295.28391125048546"></circle><circle r="25" cx="23.33333340236883" cy="280.994632252732"></circle><circle r="25" cx="23.333333397510607" cy="280.9946322505582"></circle><circle r="25" cx="35.00000008632698" cy="277.8006674163791"></circle><circle r="25" cx="35.00000003123864" cy="277.80066738108945"></circle><circle r="25" cx="46.66666672205442" cy="278.0420716931358"></circle><circle r="25" cx="46.66666675122883" cy="278.042071711789"></circle><circle r="25" cx="58.33333342767877" cy="278.5155955860675"></circle><circle r="25" cx="58.333333424990876" cy="278.51559561324575"></circle><circle r="25" cx="70.00000009996563" cy="277.3271435685591"></circle><circle r="25" cx="70.00000001896949" cy="277.3271435002199"></circle><circle r="25" cx="81.66666670147293" cy="276.138691471473"></circle><circle r="25" cx="81.66666670868572" cy="276.1386915254093"></circle><circle r="25" cx="93.33333335725555" cy="272.88901787081784"></circle><circle r="25" cx="93.33333341727794" cy="272.8890178469827"></circle><circle r="25" cx="105.00000006931745" cy="269.36080088248866"></circle><circle r="25" cx="105.00000007910133" cy="269.36080090535575"></circle><circle r="25" cx="116.66666673724696" cy="265.2383578287157"></circle><circle r="25" cx="116.6666667170725" cy="265.238357765306"></circle><circle r="25" cx="128.333333378765" cy="264.8391121760767"></circle><circle r="25" cx="128.3333333440809" cy="264.8391122160974"></circle><circle r="25" cx="140.00000007536175" cy="263.8734949402739"></circle><circle r="25" cx="140.00000008546385" cy="263.87349487174396"></circle><circle r="25" cx="151.66666675408044" cy="265.99970991343577"></circle><circle r="25" cx="151.66666668596406" cy="265.999709879519"></circle><circle r="25" cx="163.33333333363225" cy="270.15000732646166"></circle><circle r="25" cx="163.33333336362438" cy="270.1500073064495"></circle><circle r="25" cx="175.00000002395274" cy="278.95198033387425"></circle><circle r="25" cx="175.0000000582552" cy="278.9519803251933"></circle><circle r="25" cx="186.66666672088587" cy="280.5396780189297"></circle><circle r="25" cx="186.66666670101074" cy="280.5396779609705"></circle><circle r="25" cx="198.33333336172112" cy="280.2518497357241"></circle><circle r="25" cx="198.33333341790743" cy="280.25184976946827"></circle><circle r="25" cx="210.00000009148047" cy="280.81822147765416"></circle><circle r="25" cx="210.0000000568323" cy="280.8182214791939"></circle><circle r="25" cx="221.66666667316727" cy="283.39939071179117"></circle><circle r="25" cx="221.66666671042117" cy="283.39939076076575"></circle><circle r="25" cx="233.3333333995413" cy="282.8144494901549"></circle><circle r="25" cx="233.33333337411054" cy="282.81444944725655"></circle><circle r="25" cx="245.00000007275204" cy="281.8302626847319"></circle><circle r="25" cx="245.00000009620987" cy="281.8302626737991"></circle><circle r="25" cx="256.6666667487406" cy="281.3103148302565"></circle><circle r="25" cx="256.66666672701655" cy="281.3103149007641"></circle><circle r="25" cx="268.3333333435643" cy="278.6641521004296"></circle><circle r="25" cx="268.33333342583035" cy="278.6641520533588"></circle><circle r="25" cx="280.00000003739535" cy="276.94646746157065"></circle><circle r="25" cx="280.0000000021923" cy="276.94646744586606"></circle><circle r="25" cx="291.66666670982045" cy="275.7487306558875"></circle><circle r="25" cx="291.66666670422524" cy="275.74873068310274"></circle><circle r="25" cx="303.33333336619006" cy="275.3309154525469"></circle><circle r="25" cx="303.3333333387599" cy="275.3309154612371"></circle><circle r="25" cx="315.00000000393413" cy="272.3505005436073"></circle><circle r="25" cx="315.00000007600016" cy="272.35050058771765"></circle><circle r="25" cx="326.66666669524125" cy="268.54374003027124"></circle><circle r="25" cx="326.66666671611733" cy="268.54374012308205"></circle><circle r="25" cx="338.33333338139414" cy="265.9440012200363"></circle><circle r="25" cx="338.333333405781" cy="265.94400120004883"></circle><circle r="25" cx="350.0000000047519" cy="265.45190781444813"></circle><circle r="25" cx="350.0000000417458" cy="265.4519078172945"></circle><circle r="25" cx="361.66666672771737" cy="264.6627013534813"></circle><circle r="25" cx="361.666666729559" cy="264.6627013537896"></circle><circle r="25" cx="373.33333335407605" cy="263.9384884038481"></circle><circle r="25" cx="373.33333343249296" cy="263.93848838525497"></circle><circle r="25" cx="385.000000064418" cy="261.4315973197041"></circle><circle r="25" cx="385.0000000832465" cy="261.4315973082233"></circle><circle r="25" cx="396.6666667578398" cy="261.85869728428764"></circle><circle r="25" cx="396.66666669887553" cy="261.8586972590469"></circle><circle r="25" cx="408.3333333524892" cy="262.49934722510875"></circle><circle r="25" cx="408.33333341962697" cy="262.49934724398526"></circle><circle r="25" cx="420.00000005072724" cy="260.7445234471502"></circle><circle r="25" cx="420.0000000300857" cy="260.74452345304417"></circle><circle r="25" cx="1.7041279235854744e-9" cy="179.17771653341103"></circle><circle r="25" cx="9.94169121608138e-8" cy="179.1777165896542"></circle><circle r="25" cx="11.66666674290589" cy="161.36950530270263"></circle><circle r="25" cx="11.666666666954738" cy="161.36950536946514"></circle><circle r="25" cx="23.333333427613702" cy="102.86609611890769"></circle><circle r="25" cx="23.333333378063266" cy="102.86609613626261"></circle><circle r="25" cx="35.00000004799907" cy="51.75337301850602"></circle><circle r="25" cx="35.00000004946942" cy="51.75337302169679"></circle><circle r="25" cx="46.66666674328919" cy="66.58116930653935"></circle><circle r="25" cx="46.666666668286894" cy="66.58116939319106"></circle><circle r="25" cx="58.33333337038094" cy="84.20368497681358"></circle><circle r="25" cx="58.3333333521157" cy="84.20368495972588"></circle><circle r="25" cx="70.00000001138713" cy="107.61061947762019"></circle><circle r="25" cx="70.00000002093446" cy="107.6106195029851"></circle><circle r="25" cx="81.66666674300967" cy="131.0175541098775"></circle><circle r="25" cx="81.66666671122347" cy="131.01755409808695"></circle><circle r="25" cx="93.33333338703744" cy="95.88394031575217"></circle><circle r="25" cx="93.33333335826758" cy="95.88394029251577"></circle><circle r="25" cx="105.00000004291242" cy="94.88118383570975"></circle><circle r="25" cx="105.00000003476251" cy="94.88118385851287"></circle><circle r="25" cx="116.66666673248675" cy="81.2882634818418"></circle><circle r="25" cx="116.66666667109986" cy="81.28826348406695"></circle><circle r="25" cx="128.33333343278562" cy="65.42985640717966"></circle><circle r="25" cx="128.33333339989488" cy="65.42985646796159"></circle><circle r="25" cx="140.00000005445276" cy="71.62280574908908"></circle><circle r="25" cx="140.0000000613629" cy="71.62280579744417"></circle><circle r="25" cx="151.66666667242717" cy="53.368925067091055"></circle><circle r="25" cx="151.6666666931999" cy="53.36892508747146"></circle><circle r="25" cx="163.33333333797734" cy="69.21804733720919"></circle><circle r="25" cx="163.3333333427811" cy="69.21804733044131"></circle><circle r="25" cx="175.0000000968383" cy="92.25359067754466"></circle><circle r="25" cx="175.00000002487366" cy="92.25359068726272"></circle><circle r="25" cx="186.66666676559083" cy="94.94617728235032"></circle><circle r="25" cx="186.6666667218616" cy="94.946177331064"></circle><circle r="25" cx="198.3333333842199" cy="102.48542008922459"></circle><circle r="25" cx="198.33333338658463" cy="102.48542001793771"></circle><circle r="25" cx="210.00000006712924" cy="112.9307993866733"></circle><circle r="25" cx="210.00000009597957" cy="112.93079937549209"></circle><circle r="25" cx="221.6666667656033" cy="122.62411144559948"></circle><circle r="25" cx="221.66666676584347" cy="122.62411146888012"></circle><circle r="25" cx="233.33333340451748" cy="120.24720736943088"></circle><circle r="25" cx="233.33333334366762" cy="120.24720733616418"></circle><circle r="25" cx="245.00000008576228" cy="109.00333681441357"></circle><circle r="25" cx="245.0000000432098" cy="109.0033368182164"></circle><circle r="25" cx="256.66666668458197" cy="109.1797475836018"></circle><circle r="25" cx="256.66666673748085" cy="109.17974763191935"></circle><circle r="25" cx="268.3333333734079" cy="102.69897002363315"></circle><circle r="25" cx="268.3333333405073" cy="102.69897001643452"></circle><circle r="25" cx="280.00000009840943" cy="91.26011897957163"></circle><circle r="25" cx="280.0000000837003" cy="91.26011905991332"></circle><circle r="25" cx="291.66666671441783" cy="101.12984194360907"></circle><circle r="25" cx="291.66666675515154" cy="101.12984195918766"></circle><circle r="25" cx="303.33333342642624" cy="102.43899616291621"></circle><circle r="25" cx="303.33333335393684" cy="102.43899616655321"></circle><circle r="25" cx="315.00000006079534" cy="98.33512262815886"></circle><circle r="25" cx="315.0000000734182" cy="98.3351226196188"></circle><circle r="25" cx="326.6666667611516" cy="95.78180768516935"></circle><circle r="25" cx="326.66666671987707" cy="95.78180770274069"></circle><circle r="25" cx="338.33333337122247" cy="95.50326424126617"></circle><circle r="25" cx="338.3333333788741" cy="95.50326418122131"></circle><circle r="25" cx="350.0000000388059" cy="96.04178156494388"></circle><circle r="25" cx="350.0000000313786" cy="96.04178157901306"></circle><circle r="25" cx="361.66666668043507" cy="104.6859132993874"></circle><circle r="25" cx="361.66666676134895" cy="104.68591325476837"></circle><circle r="25" cx="373.3333333836773" cy="111.38024091673292"></circle><circle r="25" cx="373.3333333692625" cy="111.38024083758576"></circle><circle r="25" cx="385.00000000544543" cy="105.17800673854532"></circle><circle r="25" cx="385.00000009381586" cy="105.17800668684714"></circle><circle r="25" cx="396.66666676438996" cy="110.39605399666763"></circle><circle r="25" cx="396.6666666954953" cy="110.39605405233328"></circle><circle r="25" cx="408.33333339376605" cy="107.2113738775811"></circle><circle r="25" cx="408.33333334229434" cy="107.21137391114823"></circle><circle r="25" cx="420.0000000949023" cy="110.67459751617393"></circle><circle r="25" cx="420.0000000372319" cy="110.67459742772975"></circle><circle r="25" cx="6.668996545486151e-8" cy="294.2068766385189"></circle><circle r="25" cx="1.8801178224384783e-8" cy="294.20687663851584"></circle><circle r="25" cx="11.666666717269717" cy="286.53764698194044"></circle><circle r="25" cx="11.666666763411987" cy="286.53764693171564"></circle><circle r="25" cx="23.333333371057886" cy="275.6651676424855"></circle><circle r="25" cx="23.333333408259072" cy="275.66516758556276"></circle><circle r="25" cx="35.00000006504671" cy="271.29203549676197"></circle><circle r="25" cx="35.00000002422781" cy="271.29203542695933"></circle><circle r="25" cx="46.666666734162455" cy="276.872189233297"></circle><circle r="25" cx="46.66666672234894" cy="276.8721892184715"></circle><circle r="25" cx="58.33333338309128" cy="282.6380386268229"></circle><circle r="25" cx="58.333333412825176" cy="282.63803861666696"></circle><circle r="25" cx="70.00000009799585" cy="279.6761932966503"></circle><circle r="25" cx="70.00000001616212" cy="279.6761932580688"></circle><circle r="25" cx="81.6666667295943" cy="276.72363275417575"></circle><circle r="25" cx="81.66666667743546" cy="276.7236327430942"></circle><circle r="25" cx="93.33333334053805" cy="274.2445959690538"></circle><circle r="25" cx="93.33333334150498" cy="274.24459599210974"></circle><circle r="25" cx="105.00000000866264" cy="269.48150306429534"></circle><circle r="25" cx="105.00000005088427" cy="269.48150302807977"></circle><circle r="25" cx="116.66666674142023" cy="268.74800523068035"></circle><circle r="25" cx="116.66666673795382" cy="268.74800531166164"></circle><circle r="25" cx="128.33333339912454" cy="265.13622517043547"></circle><circle r="25" cx="128.33333340897545" cy="265.13622516480854"></circle><circle r="25" cx="140.0000000430943" cy="264.8019731010528"></circle><circle r="25" cx="140.0000000374651" cy="264.8019730317083"></circle><circle r="25" cx="151.66666671056282" cy="259.6582040054418"></circle><circle r="25" cx="151.66666668223755" cy="259.6582040117424"></circle><circle r="25" cx="163.33333333649463" cy="259.23110410518285"></circle><circle r="25" cx="163.33333334745313" cy="259.2311041072024"></circle><circle r="25" cx="175.00000004248818" cy="264.5977079043206"></circle><circle r="25" cx="175.0000000311162" cy="264.5977078593348"></circle><circle r="25" cx="186.66666669776137" cy="262.5086319877212"></circle><circle r="25" cx="186.6666666739615" cy="262.5086319625131"></circle><circle r="25" cx="198.33333334250256" cy="263.929203561702"></circle><circle r="25" cx="198.333333397129" cy="263.9292035781881"></circle><circle r="25" cx="210.00000001411533" cy="269.66719870010695"></circle><circle r="25" cx="210.0000000168433" cy="269.6671987058245"></circle><circle r="25" cx="221.66666667021434" cy="274.4581460092242"></circle><circle r="25" cx="221.66666668700572" cy="274.45814596485894"></circle><circle r="25" cx="233.33333335861894" cy="274.8759611200653"></circle><circle r="25" cx="233.3333334084522" cy="274.8759611883937"></circle><circle r="25" cx="245.00000005812618" cy="272.1462353292608"></circle><circle r="25" cx="245.0000000908545" cy="272.1462353116469"></circle><circle r="25" cx="256.66666670016525" cy="270.03858993599437"></circle><circle r="25" cx="256.666666696167" cy="270.0385899725993"></circle><circle r="25" cx="268.33333333742644" cy="269.37008560736956"></circle><circle r="25" cx="268.33333340544345" cy="269.3700856407717"></circle><circle r="25" cx="280.0000000471848" cy="276.76077185142515"></circle><circle r="25" cx="280.00000001299315" cy="276.7607718735645"></circle><circle r="25" cx="291.6666667360094" cy="276.5100827505192"></circle><circle r="25" cx="291.6666666910239" cy="276.5100827486313"></circle><circle r="25" cx="303.3333334134688" cy="274.4767155504275"></circle><circle r="25" cx="303.3333333391263" cy="274.47671555404736"></circle><circle r="25" cx="315.0000000428474" cy="275.1545046080232"></circle><circle r="25" cx="315.0000000868682" cy="275.154504588041"></circle><circle r="25" cx="326.666666701287" cy="270.79065727656223"></circle><circle r="25" cx="326.66666667831674" cy="270.79065726373307"></circle><circle r="25" cx="338.333333348672" cy="270.8556507273711"></circle><circle r="25" cx="338.3333334063859" cy="270.8556506962902"></circle><circle r="25" cx="350.0000000052175" cy="270.72566378892395"></circle><circle r="25" cx="350.00000001696" cy="270.7256638005383"></circle><circle r="25" cx="361.66666670512967" cy="263.71565356943495"></circle><circle r="25" cx="361.6666667244136" cy="263.7156536401208"></circle><circle r="25" cx="373.3333333435894" cy="265.2012186546411"></circle><circle r="25" cx="373.33333340671794" cy="265.20121865025266"></circle><circle r="25" cx="385.00000006739987" cy="264.74626434709927"></circle><circle r="25" cx="385.00000001041633" cy="264.7462644260573"></circle><circle r="25" cx="396.6666666764868" cy="264.189177490991"></circle><circle r="25" cx="396.666666702953" cy="264.18917746992093"></circle><circle r="25" cx="408.33333336926205" cy="260.21529087483617"></circle><circle r="25" cx="408.33333337598583" cy="260.2152908789612"></circle><circle r="25" cx="420.0000000083473" cy="266.7424924731563"></circle><circle r="25" cx="420.0000000980908" cy="266.7424924637015"></circle><circle r="25" cx="6.092728751245886e-8" cy="282.52662124251106"></circle><circle r="25" cx="5.44212898472324e-8" cy="282.5266212199846"></circle><circle r="25" cx="11.666666765595693" cy="278.8498477611768"></circle><circle r="25" cx="11.666666742536984" cy="278.8498477278185"></circle><circle r="25" cx="23.333333344334083" cy="267.44813583651296"></circle><circle r="25" cx="23.33333338287144" cy="267.44813586673297"></circle><circle r="25" cx="35.00000002731245" cy="257.1048890690424"></circle><circle r="25" cx="35.00000000411782" cy="257.10488905821774"></circle><circle r="25" cx="46.66666669713593" cy="262.86145371129845"></circle><circle r="25" cx="46.66666670383674" cy="262.86145372085383"></circle><circle r="25" cx="58.333333349964434" cy="264.66270135992823"></circle><circle r="25" cx="58.33333342050214" cy="264.6627013375536"></circle><circle r="25" cx="70.0000000040325" cy="266.8817642069169"></circle><circle r="25" cx="70.00000006895596" cy="266.8817641846406"></circle><circle r="25" cx="81.66666671168448" cy="269.11011177559874"></circle><circle r="25" cx="81.666666743868" cy="269.11011174797886"></circle><circle r="25" cx="93.33333343197698" cy="260.8002321728592"></circle><circle r="25" cx="93.33333337068363" cy="260.8002321355622"></circle><circle r="25" cx="105.00000005452965" cy="254.06876547301474"></circle><circle r="25" cx="105.00000004207715" cy="254.06876546265113"></circle><circle r="25" cx="116.66666674655266" cy="238.5074714032092"></circle><circle r="25" cx="116.66666670767191" cy="238.50747138214047"></circle><circle r="25" cx="128.33333341102653" cy="236.45553461774958"></circle><circle r="25" cx="128.33333341967793" cy="236.45553467632408"></circle><circle r="25" cx="140.00000007638485" cy="236.42768027925968"></circle><circle r="25" cx="140.0000000303625" cy="236.42768028766636"></circle><circle r="25" cx="151.6666667457539" cy="238.30320618611924"></circle><circle r="25" cx="151.66666674154754" cy="238.30320623736628"></circle><circle r="25" cx="163.33333341154145" cy="241.45074713786568"></circle><circle r="25" cx="163.33333336583408" cy="241.45074720512227"></circle><circle r="25" cx="175.0000000760829" cy="238.7488757460459"></circle><circle r="25" cx="175.00000001899878" cy="238.74887573851552"></circle><circle r="25" cx="186.66666670023227" cy="244.66328168119452"></circle><circle r="25" cx="186.66666674882515" cy="244.6632816220021"></circle><circle r="25" cx="198.33333339900406" cy="244.21761209560105"></circle><circle r="25" cx="198.333333334323" cy="244.21761210471556"></circle><circle r="25" cx="210.00000000996107" cy="246.92876832087774"></circle><circle r="25" cx="210.00000005221676" cy="246.92876836395018"></circle><circle r="25" cx="221.6666667278589" cy="250.7262440989967"></circle><circle r="25" cx="221.66666669179617" cy="250.72624409956728"></circle><circle r="25" cx="233.33333333787886" cy="259.0361236562735"></circle><circle r="25" cx="233.33333341697252" cy="259.03612361128"></circle><circle r="25" cx="245.0000000709484" cy="246.29740324392458"></circle><circle r="25" cx="245.00000008236583" cy="246.29740323347178"></circle><circle r="25" cx="256.6666666702263" cy="241.35789939468327"></circle><circle r="25" cx="256.6666666667995" cy="241.35789933271454"></circle><circle r="25" cx="268.33333343156113" cy="233.63296101043244"></circle><circle r="25" cx="268.3333333678866" cy="233.63296105727318"></circle><circle r="25" cx="280.00000004051793" cy="228.27564199369604"></circle><circle r="25" cx="280.0000000281117" cy="228.27564201223157"></circle><circle r="25" cx="291.6666667022418" cy="223.21543597045755"></circle><circle r="25" cx="291.6666666731182" cy="223.2154359743072"></circle><circle r="25" cx="303.33333334353193" cy="218.24807782686867"></circle><circle r="25" cx="303.33333342398095" cy="218.24807783234223"></circle><circle r="25" cx="315.0000000968774" cy="218.6566081568499"></circle><circle r="25" cx="315.00000003439317" cy="218.65660823808065"></circle><circle r="25" cx="326.66666669122816" cy="216.3261280059104"></circle><circle r="25" cx="326.6666666935174" cy="216.32612796371237"></circle><circle r="25" cx="338.33333342760756" cy="218.95372121752717"></circle><circle r="25" cx="338.333333362828" cy="218.95372125211983"></circle><circle r="25" cx="350.00000009956835" cy="223.1690120790017"></circle><circle r="25" cx="350.0000000446663" cy="223.16901207105815"></circle><circle r="25" cx="361.66666669836724" cy="221.55346009355222"></circle><circle r="25" cx="361.6666667513122" cy="221.55346009967522"></circle><circle r="25" cx="373.3333333365822" cy="216.86464538315784"></circle><circle r="25" cx="373.3333334170422" cy="216.86464537599662"></circle><circle r="25" cx="385.00000009392147" cy="220.13288845436313"></circle><circle r="25" cx="385.00000003114735" cy="220.13288850888355"></circle><circle r="25" cx="396.66666669740334" cy="224.75670979121668"></circle><circle r="25" cx="396.66666676657786" cy="224.75670970589545"></circle><circle r="25" cx="408.333333413837" cy="228.27564201253438"></circle><circle r="25" cx="408.33333343061764" cy="228.27564200062614"></circle><circle r="25" cx="420.00000000140096" cy="235.95415645857355"></circle><circle r="25" cx="420.00000000492315" cy="235.9541564616695"></circle><circle r="25" cx="2.6921773026697335e-8" cy="262.9543014719237"></circle><circle r="25" cx="3.308443177957088e-8" cy="262.9543014735288"></circle><circle r="25" cx="11.666666743646635" cy="244.75612944146184"></circle><circle r="25" cx="11.666666719946997" cy="244.75612943864382"></circle><circle r="25" cx="23.33333339368593" cy="228.842013684498"></circle><circle r="25" cx="23.33333341824406" cy="228.84201368790403"></circle><circle r="25" cx="35.000000097551776" cy="194.39547372682463"></circle><circle r="25" cx="35.00000007925834" cy="194.39547369221972"></circle><circle r="25" cx="46.666666705390554" cy="186.3548528448713"></circle><circle r="25" cx="46.66666673217454" cy="186.35485277585207"></circle><circle r="25" cx="58.333333401670025" cy="202.60322067283832"></circle><circle r="25" cx="58.333333347541554" cy="202.6032207230224"></circle><circle r="25" cx="70.00000002821858" cy="207.42202243117603"></circle><circle r="25" cx="70.00000005425403" cy="207.42202244099596"></circle><circle r="25" cx="81.66666676520653" cy="212.25010890480746"></circle><circle r="25" cx="81.66666674694042" cy="212.25010886328684"></circle><circle r="25" cx="93.33333339052622" cy="181.3967794192665"></circle><circle r="25" cx="93.33333338114745" cy="181.39677943867673"></circle><circle r="25" cx="105.00000009274383" cy="181.2296533530534"></circle><circle r="25" cx="105.00000009330904" cy="181.22965335553687"></circle><circle r="25" cx="116.66666674901116" cy="175.1574061505748"></circle><circle r="25" cx="116.66666671385332" cy="175.15740615652345"></circle><circle r="25" cx="128.33333341105111" cy="162.85507043480962"></circle><circle r="25" cx="128.3333333813725" cy="162.85507040156378"></circle><circle r="25" cx="140.00000001720468" cy="146.81096765268612"></circle><circle r="25" cx="140.00000008527323" cy="146.81096770760254"></circle><circle r="25" cx="151.6666667130304" cy="137.33120559952752"></circle><circle r="25" cx="151.66666667471924" cy="137.33120565744932"></circle><circle r="25" cx="163.33333337105597" cy="147.6744523809584"></circle><circle r="25" cx="163.33333339251513" cy="147.67445239068806"></circle><circle r="25" cx="175.00000000653714" cy="164.8327289281728"></circle><circle r="25" cx="175.00000000016868" cy="164.83272890166862"></circle><circle r="25" cx="186.66666668864855" cy="158.43551433466138"></circle><circle r="25" cx="186.66666674070498" cy="158.43551429236734"></circle><circle r="25" cx="198.3333333552566" cy="161.4623531716523"></circle><circle r="25" cx="198.33333341883866" cy="161.462353168136"></circle><circle r="25" cx="210.00000008876674" cy="159.41041643953616"></circle><circle r="25" cx="210.00000002774382" cy="159.41041640094303"></circle><circle r="25" cx="221.66666672680918" cy="168.54664157250065"></circle><circle r="25" cx="221.66666674179774" cy="168.54664152320666"></circle><circle r="25" cx="233.33333335045697" cy="166.29972439396022"></circle><circle r="25" cx="233.33333337849498" cy="166.29972442865218"></circle><circle r="25" cx="245.00000005653783" cy="166.70825483030183"></circle><circle r="25" cx="245.0000000717495" cy="166.7082547957467"></circle><circle r="25" cx="256.6666667149834" cy="164.63774847989998"></circle><circle r="25" cx="256.6666667198035" cy="164.63774848763236"></circle><circle r="25" cx="268.3333333890557" cy="151.01697382294589"></circle><circle r="25" cx="268.33333342032125" cy="151.0169737449925"></circle><circle r="25" cx="280.0000000106512" cy="143.42202237341948"></circle><circle r="25" cx="280.00000008046334" cy="143.42202239180145"></circle><circle r="25" cx="291.66666669854123" cy="148.35224140790402"></circle><circle r="25" cx="291.6666667176425" cy="148.35224148521866"></circle><circle r="25" cx="303.3333333746555" cy="146.3560133831669"></circle><circle r="25" cx="303.3333334080282" cy="146.35601340453906"></circle><circle r="25" cx="315.00000001129933" cy="140.65515744530228"></circle><circle r="25" cx="315.000000063817" cy="140.65515743436623"></circle><circle r="25" cx="326.6666666693193" cy="135.73422314785225"></circle><circle r="25" cx="326.6666667042527" cy="135.73422319687012"></circle><circle r="25" cx="338.3333333905733" cy="131.00826929348085"></circle><circle r="25" cx="338.3333333986478" cy="131.00826927463038"></circle><circle r="25" cx="350.00000008927134" cy="129.10488906068755"></circle><circle r="25" cx="350.00000006765976" cy="129.10488902133855"></circle><circle r="25" cx="361.66666668683786" cy="122.7169593107648"></circle><circle r="25" cx="361.6666667155749" cy="122.7169592568203"></circle><circle r="25" cx="373.3333333726708" cy="125.73451332957515"></circle><circle r="25" cx="373.3333333914673" cy="125.7345133263437"></circle><circle r="25" cx="385.00000009374315" cy="119.56941833964824"></circle><circle r="25" cx="385.0000000790796" cy="119.56941826345063"></circle><circle r="25" cx="396.6666666951091" cy="122.0670245373796"></circle><circle r="25" cx="396.66666671211135" cy="122.06702457343371"></circle><circle r="25" cx="408.33333342746124" cy="108.05628901204571"></circle><circle r="25" cx="408.3333333481737" cy="108.05628904549567"></circle><circle r="25" cx="420.0000000747365" cy="110.98099521861674"></circle><circle r="25" cx="420.0000000817864" cy="110.98099530827864"></circle><circle r="25" cx="6.514524766243995e-8" cy="262.86145372756584"></circle><circle r="25" cx="4.78412308730185e-8" cy="262.86145374143655"></circle><circle r="25" cx="2.3494259454309938e-8" cy="262.86145367021635"></circle><circle r="25" cx="1.3022550707682967e-8" cy="262.86145373853503"></circle><circle r="25" cx="11.666666753525103" cy="242.36994058671826"></circle><circle r="25" cx="11.666666724928323" cy="242.36994058568123"></circle><circle r="25" cx="11.666666709175951" cy="242.3699405556716"></circle><circle r="25" cx="11.666666734270152" cy="242.36994060313393"></circle><circle r="25" cx="23.33333335605447" cy="213.9956478293158"></circle><circle r="25" cx="23.333333419555913" cy="213.9956478483331"></circle><circle r="25" cx="23.3333334140553" cy="213.99564777425903"></circle><circle r="25" cx="23.33333336208127" cy="213.99564778138745"></circle><circle r="25" cx="35.00000002111666" cy="199.95705792406787"></circle><circle r="25" cx="35.00000009665785" cy="199.95705791770212"></circle><circle r="25" cx="35.00000003905837" cy="199.95705790819957"></circle><circle r="25" cx="35.00000000849951" cy="199.95705793083894"></circle><circle r="25" cx="46.666666756318435" cy="208.34121575511202"></circle><circle r="25" cx="46.66666669683106" cy="208.34121578332415"></circle><circle r="25" cx="46.66666674237537" cy="208.34121575722241"></circle><circle r="25" cx="46.66666674153375" cy="208.34121576364112"></circle><circle r="25" cx="58.33333342174308" cy="208.675467898191"></circle><circle r="25" cx="58.333333422670755" cy="208.6754679237818"></circle><circle r="25" cx="58.333333347425565" cy="208.67546795145682"></circle><circle r="25" cx="58.33333340455242" cy="208.67546796573768"></circle><circle r="25" cx="70.00000006796878" cy="211.44233280540857"></circle><circle r="25" cx="70.00000000171097" cy="211.44233284299858"></circle><circle r="25" cx="70.000000031666" cy="211.44233283349277"></circle><circle r="25" cx="70.00000007017145" cy="211.44233288602098"></circle><circle r="25" cx="81.66666670663527" cy="214.21848255303146"></circle><circle r="25" cx="81.66666672011861" cy="214.21848255923024"></circle><circle r="25" cx="81.66666667593442" cy="214.21848260763082"></circle><circle r="25" cx="81.66666673162415" cy="214.21848261168955"></circle><circle r="25" cx="93.33333339445852" cy="166.6711156372363"></circle><circle r="25" cx="93.33333333658814" cy="166.671115710275"></circle><circle r="25" cx="93.3333333907528" cy="166.67111570951437"></circle><circle r="25" cx="93.33333340487908" cy="166.67111571166703"></circle><circle r="25" cx="105.00000009429485" cy="159.79109247070048"></circle><circle r="25" cx="105.00000009505466" cy="159.79109246349407"></circle><circle r="25" cx="105.00000005799298" cy="159.7910924323396"></circle><circle r="25" cx="105.00000004352728" cy="159.79109241383188"></circle><circle r="25" cx="116.66666671805928" cy="153.39387793800904"></circle><circle r="25" cx="116.6666667042703" cy="153.39387794038092"></circle><circle r="25" cx="116.66666668100899" cy="153.39387785425436"></circle><circle r="25" cx="116.66666671004772" cy="153.39387790375565"></circle><circle r="25" cx="128.3333333884108" cy="126.4587262906875"></circle><circle r="25" cx="128.33333341818215" cy="126.45872626670067"></circle><circle r="25" cx="128.33333334407374" cy="126.45872627687541"></circle><circle r="25" cx="128.33333337101124" cy="126.45872626940107"></circle><circle r="25" cx="140.00000009328807" cy="136.67198615629712"></circle><circle r="25" cx="140.0000000650258" cy="136.67198610248386"></circle><circle r="25" cx="140.0000000057719" cy="136.67198612984558"></circle><circle r="25" cx="140.0000000274204" cy="136.67198617190596"></circle><circle r="25" cx="151.6666667572053" cy="125.21456552907898"></circle><circle r="25" cx="151.66666675070377" cy="125.21456558256956"></circle><circle r="25" cx="151.66666666793535" cy="125.21456558574702"></circle><circle r="25" cx="151.6666667518211" cy="125.21456553664815"></circle><circle r="25" cx="163.33333337340855" cy="118.33454233608538"></circle><circle r="25" cx="163.3333333625874" cy="118.33454232697586"></circle><circle r="25" cx="163.3333334153773" cy="118.33454234317922"></circle><circle r="25" cx="163.33333337554657" cy="118.33454238491879"></circle><circle r="25" cx="175.0000000834697" cy="138.21325989448485"></circle><circle r="25" cx="175.00000009457287" cy="138.2132598881302"></circle><circle r="25" cx="175.0000000118277" cy="138.21325988751724"></circle><circle r="25" cx="175.00000005691342" cy="138.2132598724951"></circle><circle r="25" cx="186.66666668431483" cy="147.9529958764669"></circle><circle r="25" cx="186.66666668213563" cy="147.95299580089838"></circle><circle r="25" cx="186.6666666697117" cy="147.9529958806878"></circle><circle r="25" cx="186.6666666751939" cy="147.95299585180598"></circle><circle r="25" cx="198.3333334038676" cy="153.93239522330055"></circle><circle r="25" cx="198.3333333800641" cy="153.93239523711156"></circle><circle r="25" cx="198.3333334084885" cy="153.9323952269347"></circle><circle r="25" cx="198.33333341395877" cy="153.93239525320817"></circle><circle r="25" cx="210.000000004313" cy="159.18758167147195"></circle><circle r="25" cx="210.00000001746818" cy="159.187581648191"></circle><circle r="25" cx="210.0000000766564" cy="159.18758161662072"></circle><circle r="25" cx="210.00000007800472" cy="159.18758162818781"></circle><circle r="25" cx="221.66666668294513" cy="163.90425068932893"></circle><circle r="25" cx="221.6666666878389" cy="163.90425071257113"></circle><circle r="25" cx="221.66666674582567" cy="163.9042507146608"></circle><circle r="25" cx="221.66666675266563" cy="163.90425074972464"></circle><circle r="25" cx="233.33333341019477" cy="165.7240678982793"></circle><circle r="25" cx="233.33333338215644" cy="165.72406795692487"></circle><circle r="25" cx="233.33333335514735" cy="165.72406791779858"></circle><circle r="25" cx="233.33333339535605" cy="165.72406796511794"></circle><circle r="25" cx="245.00000003520867" cy="160.24604673593893"></circle><circle r="25" cx="245.00000002598324" cy="160.24604678754665"></circle><circle r="25" cx="245.00000009315508" cy="160.24604671725152"></circle><circle r="25" cx="245.00000000740093" cy="160.2460467461814"></circle><circle r="25" cx="256.6666667428364" cy="159.65182072037385"></circle><circle r="25" cx="256.6666667187899" cy="159.65182076528725"></circle><circle r="25" cx="256.6666666885111" cy="159.65182073751896"></circle><circle r="25" cx="256.6666667241435" cy="159.65182070819577"></circle><circle r="25" cx="268.3333334102605" cy="146.26316553304628"></circle><circle r="25" cx="268.3333333832544" cy="146.26316560041457"></circle><circle r="25" cx="268.33333334032915" cy="146.26316556271127"></circle><circle r="25" cx="268.33333334447724" cy="146.2631655563708"></circle><circle r="25" cx="280.00000007409" cy="133.23661689044536"></circle><circle r="25" cx="280.00000002187636" cy="133.23661687294526"></circle><circle r="25" cx="280.0000000045209" cy="133.23661695123184"></circle><circle r="25" cx="280.00000008221224" cy="133.2366169532242"></circle><circle r="25" cx="291.6666667003985" cy="123.93326572944156"></circle><circle r="25" cx="291.66666674301734" cy="123.93326565642606"></circle><circle r="25" cx="291.6666666698195" cy="123.93326567753547"></circle><circle r="25" cx="291.66666674510935" cy="123.93326566054343"></circle><circle r="25" cx="303.33333339086107" cy="117.50819674392515"></circle><circle r="25" cx="303.33333337102334" cy="117.50819676397057"></circle><circle r="25" cx="303.3333333854113" cy="117.50819677633082"></circle><circle r="25" cx="303.33333343330224" cy="117.50819675870383"></circle><circle r="25" cx="315.0000000991794" cy="113.08864065898196"></circle><circle r="25" cx="315.00000004354314" cy="113.08864072334754"></circle><circle r="25" cx="315.0000000224074" cy="113.08864065041722"></circle><circle r="25" cx="315.0000000998305" cy="113.08864066876761"></circle><circle r="25" cx="326.66666674225837" cy="116.86754678876488"></circle><circle r="25" cx="326.6666666814422" cy="116.86754688198384"></circle><circle r="25" cx="326.6666667031735" cy="116.86754682778867"></circle><circle r="25" cx="326.66666667977466" cy="116.86754682254467"></circle><circle r="25" cx="338.3333333826454" cy="117.14609023863169"></circle><circle r="25" cx="338.3333333758095" cy="117.14609027738334"></circle><circle r="25" cx="338.33333335843815" cy="117.14609026851538"></circle><circle r="25" cx="338.3333333837709" cy="117.14609031360402"></circle><circle r="25" cx="350.00000009757673" cy="116.44044683541021"></circle><circle r="25" cx="350.00000003706276" cy="116.4404468607465"></circle><circle r="25" cx="350.0000000229649" cy="116.44044688807388"></circle><circle r="25" cx="350.0000000517827" cy="116.44044687960694"></circle><circle r="25" cx="361.6666667645285" cy="131.8067605240037"></circle><circle r="25" cx="361.66666676049095" cy="131.80676052635658"></circle><circle r="25" cx="361.66666668226173" cy="131.80676056246767"></circle><circle r="25" cx="361.6666667226745" cy="131.80676051703858"></circle><circle r="25" cx="373.33333342520467" cy="118.47381404216544"></circle><circle r="25" cx="373.3333333610136" cy="118.47381408227047"></circle><circle r="25" cx="373.33333343064817" cy="118.47381411252859"></circle><circle r="25" cx="373.3333334047686" cy="118.4738140966626"></circle><circle r="25" cx="385.00000009873344" cy="110.50747140828808"></circle><circle r="25" cx="385.0000000322953" cy="110.50747144734522"></circle><circle r="25" cx="385.0000000008457" cy="110.50747141657159"></circle><circle r="25" cx="385.0000000383119" cy="110.5074714278493"></circle><circle r="25" cx="396.66666675349694" cy="115.11272312181922"></circle><circle r="25" cx="396.6666666983431" cy="115.11272308471386"></circle><circle r="25" cx="396.66666668367355" cy="115.11272307801472"></circle><circle r="25" cx="396.6666667037275" cy="115.11272306108671"></circle><circle r="25" cx="408.3333333622581" cy="116.42187727901711"></circle><circle r="25" cx="408.333333336693" cy="116.42187732318011"></circle><circle r="25" cx="408.3333333978005" cy="116.42187731975301"></circle><circle r="25" cx="408.3333334235663" cy="116.42187727963258"></circle><circle r="25" cx="420.000000007399" cy="127.23864791093585"></circle><circle r="25" cx="420.00000008474876" cy="127.23864799974774"></circle><circle r="25" cx="420.00000009099915" cy="127.23864793919383"></circle><circle r="25" cx="420.0000000950061" cy="127.23864796798645"></circle><circle r="25" cx="3.9937313739210364e-8" cy="254.78369368092024"></circle><circle r="25" cx="2.4213321669958532e-8" cy="254.78369367787775"></circle><circle r="25" cx="11.66666672843068" cy="237.11475410607778"></circle><circle r="25" cx="11.666666709803698" cy="237.11475415332194"></circle><circle r="25" cx="23.3333333854023" cy="200.8205426727621"></circle><circle r="25" cx="23.333333349491845" cy="200.8205426254042"></circle><circle r="25" cx="35.000000028853414" cy="191.60075441794024"></circle><circle r="25" cx="35.00000002410348" cy="191.60075446978817"></circle><circle r="25" cx="46.66666670600659" cy="197.79370385627"></circle><circle r="25" cx="46.666666758629404" cy="197.79370385353442"></circle><circle r="25" cx="58.33333341148059" cy="197.2737559896821"></circle><circle r="25" cx="58.33333341049099" cy="197.27375603720176"></circle><circle r="25" cx="70.00000004302842" cy="199.46496447075518"></circle><circle r="25" cx="70.00000000369094" cy="199.46496448360554"></circle><circle r="25" cx="81.66666673468896" cy="201.6561729759293"></circle><circle r="25" cx="81.66666675909637" cy="201.6561729294109"></circle><circle r="25" cx="93.33333338642981" cy="190.92296534827005"></circle><circle r="25" cx="93.333333345997" cy="190.92296535169672"></circle><circle r="25" cx="105.00000009258652" cy="180.54257945631184"></circle><circle r="25" cx="105.00000005755277" cy="180.54257949097533"></circle><circle r="25" cx="116.66666669552244" cy="169.8000871063361"></circle><circle r="25" cx="116.66666673955572" cy="169.80008713569984"></circle><circle r="25" cx="128.33333335150317" cy="167.51603076142146"></circle><circle r="25" cx="128.33333337575306" cy="167.51603077976327"></circle><circle r="25" cx="140.00000003848402" cy="154.6473234205858"></circle><circle r="25" cx="140.0000000708621" cy="154.64732342357965"></circle><circle r="25" cx="151.66666672419066" cy="144.35050055425074"></circle><circle r="25" cx="151.66666667830881" cy="144.350500606524"></circle><circle r="25" cx="163.33333339711865" cy="167.9152764342644"></circle><circle r="25" cx="163.33333337458106" cy="167.91527637922553"></circle><circle r="25" cx="175.00000009175665" cy="188.4067895547068"></circle><circle r="25" cx="175.0000000319148" cy="188.40678951762476"></circle><circle r="25" cx="186.66666669529616" cy="181.164659878161"></circle><circle r="25" cx="186.66666676010223" cy="181.1646598389549"></circle><circle r="25" cx="198.33333336163327" cy="175.27810826658202"></circle><circle r="25" cx="198.33333337153914" cy="175.27810827233148"></circle><circle r="25" cx="210.00000000462688" cy="187.0047874935256"></circle><circle r="25" cx="210.000000081421" cy="187.0047874920411"></circle><circle r="25" cx="221.6666667004326" cy="189.92949377315082"></circle><circle r="25" cx="221.66666670109876" cy="189.92949371151224"></circle><circle r="25" cx="233.3333334094906" cy="189.42811548938707"></circle><circle r="25" cx="233.33333339712982" cy="189.4281155145445"></circle><circle r="25" cx="245.00000007160054" cy="183.3094444276593"></circle><circle r="25" cx="245.00000002716016" cy="183.30944446031205"></circle><circle r="25" cx="256.66666672976794" cy="183.42086178490638"></circle><circle r="25" cx="256.6666667464412" cy="183.42086178889352"></circle><circle r="25" cx="268.33333340549746" cy="176.83795156339428"></circle><circle r="25" cx="268.3333333526265" cy="176.83795157921145"></circle><circle r="25" cx="280.000000089957" cy="167.62744816385964"></circle><circle r="25" cx="280.0000000005704" cy="167.6274482053383"></circle><circle r="25" cx="291.6666667178879" cy="171.85202382066396"></circle><circle r="25" cx="291.66666671917676" cy="171.85202385664525"></circle><circle r="25" cx="303.3333333371587" cy="173.62541717909002"></circle><circle r="25" cx="303.3333334029774" cy="173.62541717114988"></circle><circle r="25" cx="315.00000001740136" cy="169.80008710945805"></circle><circle r="25" cx="315.00000005846476" cy="169.8000870694349"></circle><circle r="25" cx="326.6666667347594" cy="171.0071086727319"></circle><circle r="25" cx="326.6666667098578" cy="171.00710867994275"></circle><circle r="25" cx="338.3333333894784" cy="167.8874221167636"></circle><circle r="25" cx="338.3333333663813" cy="167.88742209447983"></circle><circle r="25" cx="350.0000000473368" cy="167.34890477051184"></circle><circle r="25" cx="350.00000001096566" cy="167.34890470752146"></circle><circle r="25" cx="361.66666676140443" cy="162.53938780315573"></circle><circle r="25" cx="361.66666668042336" cy="162.5393878068291"></circle><circle r="25" cx="373.33333334522393" cy="162.075148778029"></circle><circle r="25" cx="373.3333333675976" cy="162.0751487955167"></circle><circle r="25" cx="385.00000005082916" cy="158.72334258603905"></circle><circle r="25" cx="385.0000000602431" cy="158.72334259701861"></circle><circle r="25" cx="396.6666667029483" cy="163.3378790717277"></circle><circle r="25" cx="396.66666668333704" cy="163.3378790895006"></circle><circle r="25" cx="408.33333339968624" cy="163.59785295853024"></circle><circle r="25" cx="408.3333333701793" cy="163.59785293445282"></circle><circle r="25" cx="420.00000002324504" cy="169.27085458527802"></circle><circle r="25" cx="420.0000000300276" cy="169.27085458945663"></circle><circle r="25" cx="8.615656611509621e-8" cy="221.9712752213596"></circle><circle r="25" cx="4.987021405249834e-8" cy="221.97127524475937"></circle><circle r="25" cx="11.666666696888177" cy="201.38691433847944"></circle><circle r="25" cx="11.666666709996438" cy="201.386914301502"></circle><circle r="25" cx="23.33333339174843" cy="185.9184680211553"></circle><circle r="25" cx="23.333333371384004" cy="185.91846804298683"></circle><circle r="25" cx="35.000000068372266" cy="170.30146530302278"></circle><circle r="25" cx="35.00000006177288" cy="170.30146531989482"></circle><circle r="25" cx="46.666666722347586" cy="168.05454813590316"></circle><circle r="25" cx="46.666666731115406" cy="168.05454811158174"></circle><circle r="25" cx="58.333333365343265" cy="177.8499927898537"></circle><circle r="25" cx="58.33333333841138" cy="177.84999278933978"></circle><circle r="25" cx="70.00000002625916" cy="166.6896852467903"></circle><circle r="25" cx="70.00000008499488" cy="166.68968525503925"></circle><circle r="25" cx="81.66666669551267" cy="155.52937772718178"></circle><circle r="25" cx="81.66666674213702" cy="155.52937767992935"></circle><circle r="25" cx="93.33333337001744" cy="135.8085013983862"></circle><circle r="25" cx="93.33333340175757" cy="135.80850145877804"></circle><circle r="25" cx="105.00000005864074" cy="139.47599022774514"></circle><circle r="25" cx="105.00000005660472" cy="139.47599023064762"></circle><circle r="25" cx="116.66666674976874" cy="146.1796025306872"></circle><circle r="25" cx="116.66666668608374" cy="146.17960259009374"></circle><circle r="25" cx="128.3333334167109" cy="138.9838967215529"></circle><circle r="25" cx="128.3333333558551" cy="138.98389675451736"></circle><circle r="25" cx="140.0000000663128" cy="126.30088496784718"></circle><circle r="25" cx="140.0000000751598" cy="126.30088497028572"></circle><circle r="25" cx="151.6666667077921" cy="127.925721815741"></circle><circle r="25" cx="151.66666666768353" cy="127.92572178841782"></circle><circle r="25" cx="163.333333400666" cy="131.65820399075142"></circle><circle r="25" cx="163.3333333737003" cy="131.65820407114595"></circle><circle r="25" cx="175.00000006395138" cy="145.97533736367473"></circle><circle r="25" cx="175.00000005133387" cy="145.9753373617179"></circle><circle r="25" cx="186.6666667171504" cy="151.41621939147754"></circle><circle r="25" cx="186.66666671823344" cy="151.41621939046004"></circle><circle r="25" cx="198.33333333496265" cy="180.3290295153562"></circle><circle r="25" cx="198.33333338421397" cy="180.329029542293"></circle><circle r="25" cx="210.00000002664774" cy="163.3378790680477"></circle><circle r="25" cx="210.00000005604957" cy="163.33787908026434"></circle><circle r="25" cx="221.66666668864784" cy="172.6597998214119"></circle><circle r="25" cx="221.666666701538" cy="172.6597998261588"></circle><circle r="25" cx="233.3333333603287" cy="174.73030612335384"></circle><circle r="25" cx="233.3333333451362" cy="174.73030611416735"></circle><circle r="25" cx="245.00000008781157" cy="179.75337302624717"></circle><circle r="25" cx="245.00000005426443" cy="179.75337306526268"></circle><circle r="25" cx="256.6666667557154" cy="183.44871615956228"></circle><circle r="25" cx="256.6666666890665" cy="183.4487161509852"></circle><circle r="25" cx="268.3333333947105" cy="175.64021475415313"></circle><circle r="25" cx="268.33333342639753" cy="175.640214754845"></circle><circle r="25" cx="280.00000009204706" cy="158.43551438408537"></circle><circle r="25" cx="280.00000009393" cy="158.43551434713794"></circle><circle r="25" cx="291.6666667228243" cy="188.75032644315587"></circle><circle r="25" cx="291.66666673999987" cy="188.75032650482137"></circle><circle r="25" cx="303.333333337547" cy="173.98752365801752"></circle><circle r="25" cx="303.33333339564666" cy="173.98752358865275"></circle><circle r="25" cx="315.00000002862515" cy="177.59930373527249"></circle><circle r="25" cx="315.0000000614881" cy="177.59930367450823"></circle><circle r="25" cx="326.66666674288126" cy="179.14057745570588"></circle><circle r="25" cx="326.6666667485561" cy="179.14057747827013"></circle><circle r="25" cx="338.33333335827643" cy="172.43696506381292"></circle><circle r="25" cx="338.3333333840185" cy="172.43696509707996"></circle><circle r="25" cx="350.00000003808645" cy="171.74060641828558"></circle><circle r="25" cx="350.00000008344927" cy="171.74060649565834"></circle><circle r="25" cx="361.6666666931279" cy="170.9328304091907"></circle><circle r="25" cx="361.66666666807913" cy="170.93283045630938"></circle><circle r="25" cx="373.33333335844713" cy="168.49093292965057"></circle><circle r="25" cx="373.3333333669788" cy="168.49093286090593"></circle><circle r="25" cx="385.0000000835402" cy="164.70274192537022"></circle><circle r="25" cx="385.00000003894456" cy="164.7027419667103"></circle><circle r="25" cx="396.6666667650308" cy="162.1679966132909"></circle><circle r="25" cx="396.6666667513633" cy="162.16799660305134"></circle><circle r="25" cx="408.33333338394505" cy="161.1002466549943"></circle><circle r="25" cx="408.33333342740633" cy="161.1002466521573"></circle><circle r="25" cx="420.0000000619712" cy="168.43522417582534"></circle><circle r="25" cx="420.000000048534" cy="168.4352242115259"></circle><circle r="25" cx="6.153796473518013e-9" cy="307.8183665050429"></circle><circle r="25" cx="8.869898314587772e-8" cy="307.8183664930712"></circle><circle r="25" cx="11.666666722086921" cy="300.7990715524736"></circle><circle r="25" cx="11.666666714775229" cy="300.79907161588284"></circle><circle r="25" cx="23.333333351341498" cy="289.1281010622285"></circle><circle r="25" cx="23.333333426510013" cy="289.12810106496227"></circle><circle r="25" cx="35.00000001463887" cy="286.7047730023958"></circle><circle r="25" cx="35.000000033377" cy="286.70477303142223"></circle><circle r="25" cx="46.66666673078973" cy="290.88292474623046"></circle><circle r="25" cx="46.66666668334939" cy="290.8829248015173"></circle><circle r="25" cx="58.33333336464655" cy="290.1958509548868"></circle><circle r="25" cx="58.33333334130339" cy="290.1958508814912"></circle><circle r="25" cx="70.0000000662371" cy="294.2533005056655"></circle><circle r="25" cx="70.0000000833114" cy="294.2533005432754"></circle><circle r="25" cx="81.66666676050936" cy="298.32003490686225"></circle><circle r="25" cx="81.66666669584932" cy="298.3200349016843"></circle><circle r="25" cx="93.33333339788058" cy="293.80763102102145"></circle><circle r="25" cx="93.33333333839008" cy="293.80763100091093"></circle><circle r="25" cx="105.00000008584587" cy="292.1642246701013"></circle><circle r="25" cx="105.00000005389347" cy="292.1642245837225"></circle><circle r="25" cx="116.66666670779446" cy="289.2766575008866"></circle><circle r="25" cx="116.66666675734048" cy="289.2766575063409"></circle><circle r="25" cx="128.3333333915958" cy="294.1325983435351"></circle><circle r="25" cx="128.33333338801873" cy="294.1325983639654"></circle><circle r="25" cx="140.00000003397983" cy="291.30073995765247"></circle><circle r="25" cx="140.00000003910628" cy="291.30073996931594"></circle><circle r="25" cx="151.66666670582782" cy="258.25620202590466"></circle><circle r="25" cx="151.66666668990416" cy="258.2562020131292"></circle><circle r="25" cx="163.33333339759" cy="249.4170898611139"></circle><circle r="25" cx="163.33333341348444" cy="249.41708981935545"></circle><circle r="25" cx="175.00000000216892" cy="251.61758315423563"></circle><circle r="25" cx="175.000000065199" cy="251.6175830980024"></circle><circle r="25" cx="186.66666676433445" cy="242.12853624266478"></circle><circle r="25" cx="186.66666669460827" cy="242.12853627378837"></circle><circle r="25" cx="198.33333339612793" cy="240.81009720615802"></circle><circle r="25" cx="198.3333334144627" cy="240.81009723830869"></circle><circle r="25" cx="210.0000000555134" cy="230.9867982109951"></circle><circle r="25" cx="210.0000000956743" cy="230.98679820842585"></circle><circle r="25" cx="221.66666674386215" cy="228.12708546270485"></circle><circle r="25" cx="221.666666759508" cy="228.1270854683622"></circle><circle r="25" cx="233.33333334347958" cy="223.3361381410601"></circle><circle r="25" cx="233.3333334036052" cy="223.33613821092334"></circle><circle r="25" cx="245.00000003277825" cy="219.12084724039104"></circle><circle r="25" cx="245.00000007240078" cy="219.12084730768385"></circle><circle r="25" cx="256.6666667388924" cy="219.42724505722748"></circle><circle r="25" cx="256.66666671691087" cy="219.42724504021007"></circle><circle r="25" cx="268.33333334069334" cy="217.32888446636673"></circle><circle r="25" cx="268.33333337628704" cy="217.32888445191205"></circle><circle r="25" cx="280.0000000353924" cy="210.89453070831104"></circle><circle r="25" cx="280.0000000972957" cy="210.89453071212105"></circle><circle r="25" cx="291.6666666774499" cy="201.1083708158383"></circle><circle r="25" cx="291.66666668665044" cy="201.10837090417843"></circle><circle r="25" cx="303.3333334122246" cy="194.48832151577943"></circle><circle r="25" cx="303.33333341216456" cy="194.48832149798565"></circle><circle r="25" cx="315.0000000385736" cy="172.99405200581677"></circle><circle r="25" cx="315.00000002303534" cy="172.99405197081296"></circle><circle r="25" cx="326.66666666940006" cy="173.4582911025182"></circle><circle r="25" cx="326.6666666954949" cy="173.45829109169654"></circle><circle r="25" cx="338.33333335709636" cy="169.8093718843453"></circle><circle r="25" cx="338.3333333420598" cy="169.80937185371806"></circle><circle r="25" cx="350.00000009182025" cy="168.2959524333133"></circle><circle r="25" cx="350.00000000568724" cy="168.29595245611875"></circle><circle r="25" cx="361.6666667094706" cy="163.98781376304314"></circle><circle r="25" cx="361.6666666796446" cy="163.9878138209205"></circle><circle r="25" cx="373.3333333804792" cy="166.77324827528278"></circle><circle r="25" cx="373.33333337490575" cy="166.77324826320378"></circle><circle r="25" cx="385.0000000582388" cy="160.32960979523793"></circle><circle r="25" cx="385.0000000872629" cy="160.32960979492535"></circle><circle r="25" cx="396.66666674954797" cy="161.94516181833137"></circle><circle r="25" cx="396.6666667406595" cy="161.9451618396545"></circle><circle r="25" cx="408.333333351931" cy="167.89670683772465"></circle><circle r="25" cx="408.333333417225" cy="167.89670687335487"></circle><circle r="25" cx="420.00000009763676" cy="175.25953866602717"></circle><circle r="25" cx="420.00000000183474" cy="175.2595387323456"></circle><circle r="25" cx="1.2003231002017855e-8" cy="293.72406792042665"></circle><circle r="25" cx="3.429302028380334e-8" cy="293.72406789759447"></circle><circle r="25" cx="11.666666751071729" cy="288.58029885860316"></circle><circle r="25" cx="11.666666688047812" cy="288.5802989476935"></circle><circle r="25" cx="23.333333356969884" cy="274.2538808290198"></circle><circle r="25" cx="23.33333335863125" cy="274.2538807854763"></circle><circle r="25" cx="35.000000027321704" cy="275.62802843993194"></circle><circle r="25" cx="35.00000003520013" cy="275.6280284736104"></circle><circle r="25" cx="46.6666667399955" cy="257.2998694407676"></circle><circle r="25" cx="46.66666669521151" cy="257.2998694944006"></circle><circle r="25" cx="58.33333335466865" cy="272.69403751338007"></circle><circle r="25" cx="58.33333342338807" cy="272.69403743182596"></circle><circle r="25" cx="70.00000009665465" cy="271.9326854007164"></circle><circle r="25" cx="70.00000009913377" cy="271.9326854250042"></circle><circle r="25" cx="81.66666666856653" cy="271.1806180955451"></circle><circle r="25" cx="81.66666674439865" cy="271.1806180352943"></circle><circle r="25" cx="93.33333340902256" cy="260.7352387103146"></circle><circle r="25" cx="93.3333334059714" cy="260.7352387271213"></circle><circle r="25" cx="105.0000000120371" cy="262.42506894375873"></circle><circle r="25" cx="105.00000003865495" cy="262.42506894340937"></circle><circle r="25" cx="116.6666667124885" cy="258.26548678045725"></circle><circle r="25" cx="116.66666669319721" cy="258.2654867848705"></circle><circle r="25" cx="128.33333341809512" cy="253.48382422741875"></circle><circle r="25" cx="128.33333337723414" cy="253.48382419403308"></circle><circle r="25" cx="140.0000000789235" cy="255.27578711939955"></circle><circle r="25" cx="140.00000009370305" cy="255.27578711446813"></circle><circle r="25" cx="151.66666674695594" cy="263.88277965985475"></circle><circle r="25" cx="151.66666671666485" cy="263.88277968428514"></circle><circle r="25" cx="163.33333336317125" cy="272.84259401215803"></circle><circle r="25" cx="163.3333333737714" cy="272.8425939416867"></circle><circle r="25" cx="175.00000004777377" cy="269.79718561273677"></circle><circle r="25" cx="175.00000008319674" cy="269.7971855824502"></circle><circle r="25" cx="186.6666666819269" cy="272.5919048557298"></circle><circle r="25" cx="186.6666667438944" cy="272.59190492721393"></circle><circle r="25" cx="198.33333339088853" cy="271.1249093646925"></circle><circle r="25" cx="198.33333341821486" cy="271.12490942590307"></circle><circle r="25" cx="210.0000000200976" cy="274.9223851103813"></circle><circle r="25" cx="210.0000000019183" cy="274.92238503295164"></circle><circle r="25" cx="221.66666671512385" cy="278.0142173814669"></circle><circle r="25" cx="221.66666669254565" cy="278.0142173349825"></circle><circle r="25" cx="233.33333333972124" cy="278.08849564235913"></circle><circle r="25" cx="233.33333341783333" cy="278.08849560338024"></circle><circle r="25" cx="245.0000000222519" cy="276.70506311686256"></circle><circle r="25" cx="245.00000008976835" cy="276.7050631173083"></circle><circle r="25" cx="256.666666708395" cy="273.73393303781467"></circle><circle r="25" cx="256.6666667268715" cy="273.73393306267764"></circle><circle r="25" cx="268.3333333725765" cy="270.2985638275689"></circle><circle r="25" cx="268.3333334325911" cy="270.29856378068564"></circle><circle r="25" cx="280.00000009445006" cy="289.7780357067882"></circle><circle r="25" cx="280.00000002588746" cy="289.778035727682"></circle><circle r="25" cx="291.666666689984" cy="289.5366313806752"></circle><circle r="25" cx="291.6666667210432" cy="289.53663137268234"></circle><circle r="25" cx="303.3333333905125" cy="289.8523139583022"></circle><circle r="25" cx="303.33333343288723" cy="289.8523139853541"></circle><circle r="25" cx="315.0000000643082" cy="289.8523140299371"></circle><circle r="25" cx="315.0000000884435" cy="289.852313993128"></circle><circle r="25" cx="326.666666671992" cy="288.2367619620228"></circle><circle r="25" cx="326.6666667332934" cy="288.2367620069025"></circle><circle r="25" cx="338.33333341541794" cy="286.10126222933627"></circle><circle r="25" cx="338.33333335631494" cy="286.1012622239907"></circle><circle r="25" cx="350.00000000608725" cy="286.732627367175"></circle><circle r="25" cx="350.00000005643244" cy="286.73262738208"></circle><circle r="25" cx="361.6666666702261" cy="284.49499500116815"></circle><circle r="25" cx="361.66666671889425" cy="284.4949949834789"></circle><circle r="25" cx="373.33333335700996" cy="281.9509648335874"></circle><circle r="25" cx="373.3333333915832" cy="281.9509647983999"></circle><circle r="25" cx="385.00000005034224" cy="281.5238648671479"></circle><circle r="25" cx="385.0000000698823" cy="281.52386488759464"></circle><circle r="25" cx="396.66666669732024" cy="282.3966342738621"></circle><circle r="25" cx="396.6666667499298" cy="282.39663429392846"></circle><circle r="25" cx="408.3333334085665" cy="283.0651385856186"></circle><circle r="25" cx="408.3333333374594" cy="283.0651385485122"></circle><circle r="25" cx="420.0000000575569" cy="284.0771797855904"></circle><circle r="25" cx="420.00000002228893" cy="284.07717981992346"></circle><circle r="25" cx="2.3512171301990745e-8" cy="296.98302627711126"></circle><circle r="25" cx="2.522863463964313e-8" cy="296.9830263128649"></circle><circle r="25" cx="11.666666744099073" cy="289.31379662368715"></circle><circle r="25" cx="11.6666667555692" cy="289.3137966184798"></circle><circle r="25" cx="23.333333355824646" cy="272.75903099797745"></circle><circle r="25" cx="23.333333379696633" cy="272.75903093997147"></circle><circle r="25" cx="35.00000009958436" cy="267.95879878145126"></circle><circle r="25" cx="35.00000003048955" cy="267.9587987906077"></circle><circle r="25" cx="46.66666667523876" cy="277.1135935358325"></circle><circle r="25" cx="46.66666674888577" cy="277.11359351769494"></circle><circle r="25" cx="58.33333340546593" cy="274.68098073794994"></circle><circle r="25" cx="58.333333383109824" cy="274.6809807699063"></circle><circle r="25" cx="70.00000001899495" cy="276.9000436046099"></circle><circle r="25" cx="70.00000007240318" cy="276.9000435702887"></circle><circle r="25" cx="81.66666676293205" cy="279.1283911862087"></circle><circle r="25" cx="81.66666669798738" cy="279.12839114228456"></circle><circle r="25" cx="93.3333333704542" cy="278.24633694383454"></circle><circle r="25" cx="93.33333334920367" cy="278.246336906197"></circle><circle r="25" cx="105.00000008146971" cy="281.0596257906475"></circle><circle r="25" cx="105.00000006131111" cy="281.0596257461401"></circle><circle r="25" cx="116.66666676418092" cy="269.7971856173583"></circle><circle r="25" cx="116.66666666866165" cy="269.79718562659383"></circle><circle r="25" cx="128.3333333367445" cy="272.4897722420368"></circle><circle r="25" cx="128.33333337773328" cy="272.4897722401965"></circle><circle r="25" cx="140.00000007668956" cy="271.849122305383"></circle><circle r="25" cx="140.00000002483068" cy="271.84912239623225"></circle><circle r="25" cx="151.66666669018423" cy="267.4759901706781"></circle><circle r="25" cx="151.66666667989418" cy="267.4759902152776"></circle><circle r="25" cx="163.33333338018812" cy="277.77281309188953"></circle><circle r="25" cx="163.33333334450265" cy="277.77281308171047"></circle><circle r="25" cx="175.00000007148896" cy="277.2621500759087"></circle><circle r="25" cx="175.0000000489368" cy="277.26215005055917"></circle><circle r="25" cx="186.6666667592438" cy="276.3708110356441"></circle><circle r="25" cx="186.66666673639608" cy="276.3708109837889"></circle><circle r="25" cx="198.33333334267505" cy="282.88872772519835"></circle><circle r="25" cx="198.333333382211" cy="282.88872775460044"></circle><circle r="25" cx="210.00000008071112" cy="281.9881038883516"></circle><circle r="25" cx="210.0000000751114" cy="281.98810390841726"></circle><circle r="25" cx="221.66666671773257" cy="281.07819528326627"></circle><circle r="25" cx="221.66666668724662" cy="281.078195322964"></circle><circle r="25" cx="233.33333338722457" cy="283.2694038119149"></circle><circle r="25" cx="233.3333333749577" cy="283.26940382324165"></circle><circle r="25" cx="245.00000005683074" cy="274.72740467737873"></circle><circle r="25" cx="245.00000006204593" cy="274.7274047075276"></circle><circle r="25" cx="256.6666667317861" cy="276.59364573835205"></circle><circle r="25" cx="256.66666673917587" cy="276.59364575408455"></circle><circle r="25" cx="268.33333335243617" cy="273.21398522735905"></circle><circle r="25" cx="268.33333340342625" cy="273.213985281956"></circle><circle r="25" cx="280.0000000765616" cy="268.8779921822218"></circle><circle r="25" cx="280.0000000021038" cy="268.8779921814186"></circle><circle r="25" cx="291.666666677185" cy="275.5816045680193"></circle><circle r="25" cx="291.66666668638237" cy="275.58160458762944"></circle><circle r="25" cx="303.33333333461854" cy="276.74220231577954"></circle><circle r="25" cx="303.3333333940622" cy="276.7422022906436"></circle><circle r="25" cx="315.0000000785511" cy="273.167561379094"></circle><circle r="25" cx="315.0000000503118" cy="273.1675613298251"></circle><circle r="25" cx="326.6666666872659" cy="264.0684753536425"></circle><circle r="25" cx="326.66666669532844" cy="264.0684753395346"></circle><circle r="25" cx="338.33333339199015" cy="262.2486581527602"></circle><circle r="25" cx="338.3333334152937" cy="262.2486581151147"></circle><circle r="25" cx="350.0000000497707" cy="260.03888008442703"></circle><circle r="25" cx="350.0000000964171" cy="260.0388801153121"></circle><circle r="25" cx="361.6666667381437" cy="261.0973451838047"></circle><circle r="25" cx="361.66666670689096" cy="261.09734517999146"></circle><circle r="25" cx="373.33333341348003" cy="261.05092125653294"></circle><circle r="25" cx="373.3333333443538" cy="261.05092132201486"></circle><circle r="25" cx="385.00000002466214" cy="260.44741048563753"></circle><circle r="25" cx="385.00000007825133" cy="260.4474104851228"></circle><circle r="25" cx="396.6666666882524" cy="257.4298564739975"></circle><circle r="25" cx="396.6666667446236" cy="257.4298564429472"></circle><circle r="25" cx="408.33333339331847" cy="261.1251995045174"></circle><circle r="25" cx="408.333333388404" cy="261.12519950613535"></circle><circle r="25" cx="420.0000000435228" cy="259.0825475330557"></circle><circle r="25" cx="420.00000009472836" cy="259.082547565203"></circle><circle r="25" cx="2.3135206452570853e-8" cy="216.31684319219764"></circle><circle r="25" cx="7.288193944841623e-8" cy="216.31684321556915"></circle><circle r="25" cx="11.666666720848438" cy="211.13593509967524"></circle><circle r="25" cx="11.666666699480368" cy="211.1359350415302"></circle><circle r="25" cx="23.33333340336646" cy="160.71957066071815"></circle><circle r="25" cx="23.333333359808258" cy="160.71957062757548"></circle><circle r="25" cx="35.000000035099966" cy="201.60046430174702"></circle><circle r="25" cx="35.00000002839739" cy="201.60046424713724"></circle><circle r="25" cx="46.66666668068741" cy="206.34498774741576"></circle><circle r="25" cx="46.66666671914425" cy="206.3449877416401"></circle><circle r="25" cx="58.33333336499745" cy="214.09778037010815"></circle><circle r="25" cx="58.333333357542266" cy="214.09778043200322"></circle><circle r="25" cx="70.00000000256426" cy="213.03931528750144"></circle><circle r="25" cx="70.00000008583707" cy="213.03931529575647"></circle><circle r="25" cx="81.66666671315174" cy="211.9901349460813"></circle><circle r="25" cx="81.66666673409705" cy="211.99013499177036"></circle><circle r="25" cx="93.33333335875409" cy="191.3500653191975"></circle><circle r="25" cx="93.33333337320423" cy="191.3500653439178"></circle><circle r="25" cx="105.00000005922247" cy="195.2868128052244"></circle><circle r="25" cx="105.00000002354729" cy="195.28681276659174"></circle><circle r="25" cx="116.66666674179466" cy="174.488901833851"></circle><circle r="25" cx="116.66666672550927" cy="174.48890182772035"></circle><circle r="25" cx="128.3333333736132" cy="156.95923404104298"></circle><circle r="25" cx="128.3333333519444" cy="156.95923404672175"></circle><circle r="25" cx="140.00000008329926" cy="184.30291609865182"></circle><circle r="25" cx="140.00000001193317" cy="184.3029160690887"></circle><circle r="25" cx="151.66666674929277" cy="194.0519367914011"></circle><circle r="25" cx="151.66666667361463" cy="194.05193681982402"></circle><circle r="25" cx="163.3333333779716" cy="193.38343251188806"></circle><circle r="25" cx="163.33333336878044" cy="193.383432474263"></circle><circle r="25" cx="175.00000005196802" cy="207.05063113925183"></circle><circle r="25" cx="175.00000009007496" cy="207.05063112974196"></circle><circle r="25" cx="186.6666667149552" cy="191.74002616049685"></circle><circle r="25" cx="186.6666667450118" cy="191.74002618181234"></circle><circle r="25" cx="198.3333334294423" cy="201.42405342421802"></circle><circle r="25" cx="198.3333333813712" cy="201.42405341768503"></circle><circle r="25" cx="210.00000003015703" cy="191.58218484517639"></circle><circle r="25" cx="210.00000003772493" cy="191.58218489989022"></circle><circle r="25" cx="221.6666666897951" cy="193.81053243802214"></circle><circle r="25" cx="221.6666667005853" cy="193.8105324557721"></circle><circle r="25" cx="233.33333341262403" cy="193.7548238280069"></circle><circle r="25" cx="233.33333337290182" cy="193.75482376323885"></circle><circle r="25" cx="245.0000000438965" cy="195.0918323552277"></circle><circle r="25" cx="245.00000007270032" cy="195.09183237308906"></circle><circle r="25" cx="256.66666669804096" cy="193.21630648559545"></circle><circle r="25" cx="256.6666666925703" cy="193.2163064588162"></circle><circle r="25" cx="268.33333342921105" cy="183.77368352742766"></circle><circle r="25" cx="268.3333334086454" cy="183.7736835314748"></circle><circle r="25" cx="280.0000000304079" cy="174.85100834360534"></circle><circle r="25" cx="280.0000000558909" cy="174.85100828447605"></circle><circle r="25" cx="291.6666667276854" cy="182.43667495299295"></circle><circle r="25" cx="291.66666669818443" cy="182.43667495759655"></circle><circle r="25" cx="303.3333333592215" cy="177.04221682263713"></circle><circle r="25" cx="303.3333333411695" cy="177.04221683596015"></circle><circle r="25" cx="315.00000000661964" cy="170.83998266229565"></circle><circle r="25" cx="315.00000002089735" cy="170.83998268195555"></circle><circle r="25" cx="326.66666667841497" cy="169.36370234348544"></circle><circle r="25" cx="326.66666671205337" cy="169.36370232174366"></circle><circle r="25" cx="338.33333337523294" cy="164.2942115640077"></circle><circle r="25" cx="338.33333333742615" cy="164.29421161743676"></circle><circle r="25" cx="350.00000001224953" cy="176.43870599624225"></circle><circle r="25" cx="350.00000003478425" cy="176.43870600515928"></circle><circle r="25" cx="361.6666666854227" cy="155.10227773773693"></circle><circle r="25" cx="361.66666672380353" cy="155.10227776254905"></circle><circle r="25" cx="373.33333336710274" cy="162.7065139384177"></circle><circle r="25" cx="373.3333334218632" cy="162.70651394549995"></circle><circle r="25" cx="385.0000000124258" cy="151.74118676308694"></circle><circle r="25" cx="385.0000000055889" cy="151.74118677291085"></circle><circle r="25" cx="396.66666669003337" cy="160.6917162359305"></circle><circle r="25" cx="396.66666667882043" cy="160.69171626429778"></circle><circle r="25" cx="408.3333334104965" cy="164.7770202076914"></circle><circle r="25" cx="408.3333334135801" cy="164.77702021189376"></circle><circle r="25" cx="420.0000000480325" cy="174.8602930737575"></circle><circle r="25" cx="420.0000000242588" cy="174.860293136568"></circle><circle r="25" cx="5.083865672349929e-9" cy="282.3037865147134"></circle><circle r="25" cx="8.305122072342782e-8" cy="282.3037864690034"></circle><circle r="25" cx="11.666666706267335" cy="262.58291028493244"></circle><circle r="25" cx="11.666666677517437" cy="262.5829102574268"></circle><circle r="25" cx="23.3333334122337" cy="242.82489490661564"></circle><circle r="25" cx="23.333333401982447" cy="242.8248948636558"></circle><circle r="25" cx="35.00000000433607" cy="204.6180183516424"></circle><circle r="25" cx="35.00000006262072" cy="204.618018347701"></circle><circle r="25" cx="46.666666682869575" cy="230.33686352161524"></circle><circle r="25" cx="46.666666741717606" cy="230.33686355273434"></circle><circle r="25" cx="58.333333396076966" cy="229.8354853429798"></circle><circle r="25" cx="58.33333340536428" cy="229.83548530607388"></circle><circle r="25" cx="70.0000000791101" cy="236.36268683099496"></circle><circle r="25" cx="70.0000000537495" cy="236.36268679269938"></circle><circle r="25" cx="81.6666667548983" cy="242.88988829800238"></circle><circle r="25" cx="81.66666672047883" cy="242.88988831796118"></circle><circle r="25" cx="93.33333342935994" cy="236.566952047084"></circle><circle r="25" cx="93.33333341003483" cy="236.56695202408176"></circle><circle r="25" cx="105.00000003406663" cy="231.76671986917793"></circle><circle r="25" cx="105.00000004108345" cy="231.7667198852823"></circle><circle r="25" cx="116.6666666670724" cy="232.33309163947393"></circle><circle r="25" cx="116.6666666939713" cy="232.33309156143193"></circle><circle r="25" cx="128.33333338742835" cy="214.6084433672447"></circle><circle r="25" cx="128.33333336450332" cy="214.60844343291515"></circle><circle r="25" cx="140.00000006895957" cy="216.74394318557373"></circle><circle r="25" cx="140.000000043407" cy="216.74394316819635"></circle><circle r="25" cx="151.6666667009816" cy="209.22327007514045"></circle><circle r="25" cx="151.66666667345106" cy="209.22327002566357"></circle><circle r="25" cx="163.3333333690231" cy="208.00696366643228"></circle><circle r="25" cx="163.33333337755653" cy="208.0069636494018"></circle><circle r="25" cx="175.00000008964082" cy="212.48222838874375"></circle><circle r="25" cx="175.00000004735455" cy="212.4822283538095"></circle><circle r="25" cx="186.66666675189433" cy="193.7641085503151"></circle><circle r="25" cx="186.6666667342701" cy="193.7641085991365"></circle><circle r="25" cx="198.3333333571345" cy="204.68301179984138"></circle><circle r="25" cx="198.33333339567372" cy="204.68301185075592"></circle><circle r="25" cx="210.0000000799003" cy="200.74626434329477"></circle><circle r="25" cx="210.0000000274457" cy="200.74626435442903"></circle><circle r="25" cx="221.6666667318006" cy="209.62251566333399"></circle><circle r="25" cx="221.6666667348727" cy="209.62251565504428"></circle><circle r="25" cx="233.3333333593923" cy="205.7043377658427"></circle><circle r="25" cx="233.3333333630129" cy="205.70433774326796"></circle><circle r="25" cx="245.00000009660258" cy="211.2566372023827"></circle><circle r="25" cx="245.0000000868069" cy="211.25663718478486"></circle><circle r="25" cx="256.6666667595337" cy="206.56782251641536"></circle><circle r="25" cx="256.6666667649752" cy="206.56782244236175"></circle><circle r="25" cx="268.33333336784204" cy="206.34498774720828"></circle><circle r="25" cx="268.3333333498697" cy="206.34498773343623"></circle><circle r="25" cx="280.0000000919206" cy="207.14347893554833"></circle><circle r="25" cx="280.00000006406526" cy="207.143478978098"></circle><circle r="25" cx="291.66666671145214" cy="208.38763972356392"></circle><circle r="25" cx="291.666666671535" cy="208.3876397209322"></circle><circle r="25" cx="303.3333333972273" cy="216.3446975361128"></circle><circle r="25" cx="303.3333333767761" cy="216.34469757902747"></circle><circle r="25" cx="315.0000000739596" cy="200.08704483162964"></circle><circle r="25" cx="315.00000000227595" cy="200.08704484885226"></circle><circle r="25" cx="326.6666666726117" cy="206.40998123118143"></circle><circle r="25" cx="326.6666666790933" cy="206.40998119222525"></circle><circle r="25" cx="338.33333337648037" cy="204.26519660843385"></circle><circle r="25" cx="338.3333333398932" cy="204.26519665744866"></circle><circle r="25" cx="350.0000000515139" cy="212.32438707318147"></circle><circle r="25" cx="350.0000000544019" cy="212.32438710659008"></circle><circle r="25" cx="361.66666676075897" cy="208.3319310325333"></circle><circle r="25" cx="361.66666667458736" cy="208.33193095386088"></circle><circle r="25" cx="373.3333333471345" cy="201.48904687660593"></circle><circle r="25" cx="373.3333333724233" cy="201.48904695602351"></circle><circle r="25" cx="385.0000000421195" cy="200.27274049059776"></circle><circle r="25" cx="385.000000046454" cy="200.27274053243613"></circle><circle r="25" cx="396.6666666822934" cy="202.98389677262705"></circle><circle r="25" cx="396.6666667387113" cy="202.98389678494982"></circle><circle r="25" cx="408.33333340455476" cy="209.08399828437723"></circle><circle r="25" cx="408.3333334275036" cy="209.08399834424557"></circle><circle r="25" cx="420.00000001797895" cy="219.85434505272463"></circle><circle r="25" cx="420.0000000618707" cy="219.8543450182774"></circle><circle r="25" cx="7.213906100951135e-8" cy="283.2694038171045"></circle><circle r="25" cx="1.3583829114213585e-8" cy="283.26940377156876"></circle><circle r="25" cx="11.666666763074094" cy="280.01044539743845"></circle><circle r="25" cx="11.666666758006539" cy="280.01044542851866"></circle><circle r="25" cx="23.333333379479555" cy="279.92688236363625"></circle><circle r="25" cx="23.333333419659763" cy="279.92688239076796"></circle><circle r="25" cx="35.00000008107972" cy="281.98810394244947"></circle><circle r="25" cx="35.00000007135956" cy="281.9881038997963"></circle><circle r="25" cx="46.66666667618023" cy="288.0139271870247"></circle><circle r="25" cx="46.6666667347072" cy="288.0139272460982"></circle><circle r="25" cx="58.333333428941216" cy="293.19483535456277"></circle><circle r="25" cx="58.33333339878439" cy="293.1948354265787"></circle><circle r="25" cx="70.00000002198294" cy="291.8392572732931"></circle><circle r="25" cx="70.00000004532417" cy="291.839257309782"></circle><circle r="25" cx="81.66666670322299" cy="290.49296389711503"></circle><circle r="25" cx="81.66666672918454" cy="290.49296395972385"></circle><circle r="25" cx="93.33333343131484" cy="290.0472943816749"></circle><circle r="25" cx="93.33333336840414" cy="290.047294390033"></circle><circle r="25" cx="105.00000009877924" cy="288.4410272013811"></circle><circle r="25" cx="105.00000006248399" cy="288.44102722126564"></circle><circle r="25" cx="116.66666672278237" cy="282.9630060124233"></circle><circle r="25" cx="116.66666676622907" cy="282.9630059699399"></circle><circle r="25" cx="128.3333333944868" cy="281.8116931101854"></circle><circle r="25" cx="128.33333340607075" cy="281.81169309649516"></circle><circle r="25" cx="140.0000000418798" cy="282.27593210883725"></circle><circle r="25" cx="140.00000007042183" cy="282.275932193779"></circle><circle r="25" cx="151.6666667329907" cy="283.39939072967877"></circle><circle r="25" cx="151.66666674532598" cy="283.39939072097354"></circle><circle r="25" cx="163.33333333421552" cy="283.8821993439257"></circle><circle r="25" cx="163.3333334067187" cy="283.88219935097607"></circle><circle r="25" cx="175.00000009690737" cy="287.2711446785216"></circle><circle r="25" cx="175.00000007330468" cy="287.27114470733204"></circle><circle r="25" cx="186.6666666799335" cy="288.05106630363116"></circle><circle r="25" cx="186.66666675441138" cy="288.05106632723306"></circle><circle r="25" cx="198.33333339094537" cy="291.80211812638936"></circle><circle r="25" cx="198.3333333995259" cy="291.80211812615545"></circle><circle r="25" cx="210.0000000592784" cy="286.7047730383027"></circle><circle r="25" cx="210.00000004854988" cy="286.7047730166175"></circle><circle r="25" cx="221.66666671745386" cy="288.0789207287102"></circle><circle r="25" cx="221.66666672093032" cy="288.07892073480195"></circle><circle r="25" cx="233.33333341484783" cy="290.4836791166838"></circle><circle r="25" cx="233.33333341007875" cy="290.48367909652796"></circle><circle r="25" cx="245.0000000472407" cy="291.50500510963036"></circle><circle r="25" cx="245.00000003380717" cy="291.50500510584754"></circle><circle r="25" cx="256.6666666955292" cy="292.22921813691306"></circle><circle r="25" cx="256.6666666857031" cy="292.22921807911894"></circle><circle r="25" cx="268.3333334204318" cy="289.18380973266915"></circle><circle r="25" cx="268.3333333420576" cy="289.18380966522386"></circle><circle r="25" cx="280.0000000470784" cy="290.5301030192318"></circle><circle r="25" cx="280.00000002845894" cy="290.53010309877743"></circle><circle r="25" cx="291.66666669704756" cy="292.489192016073"></circle><circle r="25" cx="291.6666667199467" cy="292.48919197888944"></circle><circle r="25" cx="303.33333336281396" cy="291.7556942189446"></circle><circle r="25" cx="303.33333334588383" cy="291.7556942754128"></circle><circle r="25" cx="315.00000002955056" cy="292.7120267088901"></circle><circle r="25" cx="315.00000000570446" cy="292.712026736262"></circle><circle r="25" cx="326.666666696343" cy="267.9309444936128"></circle><circle r="25" cx="326.6666666972637" cy="267.9309445146656"></circle><circle r="25" cx="338.3333333416831" cy="270.40998120528144"></circle><circle r="25" cx="338.33333336458" cy="270.40998121313356"></circle><circle r="25" cx="350.0000000122208" cy="270.52139858065766"></circle><circle r="25" cx="350.00000005254435" cy="270.5213985986916"></circle><circle r="25" cx="361.66666668986596" cy="289.96373140201894"></circle><circle r="25" cx="361.6666667664959" cy="289.96373136244733"></circle><circle r="25" cx="373.33333336849813" cy="291.5699985652277"></circle><circle r="25" cx="373.3333333619134" cy="291.56999864585475"></circle><circle r="25" cx="385.00000001202517" cy="286.9554620809218"></circle><circle r="25" cx="385.00000008729074" cy="286.9554620963014"></circle><circle r="25" cx="396.6666666915582" cy="291.43072690265245"></circle><circle r="25" cx="396.6666666913753" cy="291.4307268411513"></circle><circle r="25" cx="408.33333340308917" cy="291.5050051748893"></circle><circle r="25" cx="408.3333333893" cy="291.50500517472017"></circle><circle r="25" cx="420.0000000983867" cy="293.32482230292067"></circle><circle r="25" cx="420.0000000073444" cy="293.32482230214123"></circle><circle r="25" cx="11.666666690538106" cy="287.95821857907225"></circle><circle r="25" cx="23.33333339120358" cy="271.68199623192527"></circle><circle r="25" cx="35.0000000303079" cy="261.19947776742873"></circle><circle r="25" cx="46.66666670912047" cy="266.70535329458437"></circle><circle r="25" cx="58.333333376195846" cy="268.58087916387495"></circle><circle r="25" cx="70.00000002372802" cy="269.0915421525893"></circle><circle r="25" cx="81.66666674941881" cy="269.60220514686256"></circle><circle r="25" cx="93.33333339384718" cy="266.6960685332514"></circle><circle r="25" cx="105.00000001234487" cy="258.2654868104351"></circle><circle r="25" cx="116.66666667681558" cy="258.9711301349693"></circle><circle r="25" cx="128.33333334355507" cy="251.8032787620115"></circle><circle r="25" cx="140.00000006130685" cy="245.8053098156617"></circle><circle r="25" cx="151.66666667775567" cy="255.2293631711068"></circle><circle r="25" cx="163.33333337703053" cy="250.28985934063022"></circle><circle r="25" cx="175.00000002659115" cy="255.97214568945705"></circle><circle r="25" cx="186.6666666932538" cy="257.1513129976944"></circle><circle r="25" cx="198.33333333932265" cy="262.6200493281017"></circle><circle r="25" cx="210.0000000421512" cy="268.1444944957118"></circle><circle r="25" cx="221.66666669953278" cy="270.40998123487793"></circle><circle r="25" cx="233.33333338625243" cy="268.9151313483227"></circle><circle r="25" cx="245.00000000793023" cy="268.0702162544176"></circle><circle r="25" cx="256.66666675136076" cy="265.7304512391437"></circle><circle r="25" cx="268.33333337319254" cy="264.74626439967966"></circle><circle r="25" cx="280.000000024949" cy="261.08806038592206"></circle><circle r="25" cx="291.66666674581705" cy="262.15581033340203"></circle><circle r="25" cx="303.33333337517337" cy="261.6915712521996"></circle><circle r="25" cx="315.00000002369893" cy="261.4780211891166"></circle><circle r="25" cx="326.66666675806584" cy="260.7909473572662"></circle><circle r="25" cx="338.33333339331415" cy="258.54403023422793"></circle><circle r="25" cx="350.00000004002186" cy="256.9099086932345"></circle><circle r="25" cx="361.66666674147996" cy="254.67227631317107"></circle><circle r="25" cx="373.33333337738037" cy="253.53953293418536"></circle><circle r="25" cx="385.0000000703094" cy="256.3249674305981"></circle><circle r="25" cx="396.6666666938073" cy="258.94327582821063"></circle><circle r="25" cx="408.33333339625955" cy="256.6127956517935"></circle><circle r="25" cx="420.0000000239946" cy="258.014797657708"></circle><circle r="25" cx="11.666666763954566" cy="292.4334833384117"></circle><circle r="25" cx="11.666666756937884" cy="292.43348325593905"></circle><circle r="25" cx="11.666666680721223" cy="292.4334833289976"></circle><circle r="25" cx="23.333333354154718" cy="274.541708999281"></circle><circle r="25" cx="23.33333341964725" cy="274.5417090063716"></circle><circle r="25" cx="23.33333338405382" cy="274.54170907281923"></circle><circle r="25" cx="35.00000008842804" cy="270.8463659559798"></circle><circle r="25" cx="35.00000007371715" cy="270.84636591251007"></circle><circle r="25" cx="35.000000019304" cy="270.8463659370136"></circle><circle r="25" cx="46.66666667973188" cy="278.39489344049474"></circle><circle r="25" cx="46.666666737866514" cy="278.3948934080681"></circle><circle r="25" cx="46.666666704919685" cy="278.39489346875234"></circle><circle r="25" cx="58.33333339872111" cy="281.4681561544768"></circle><circle r="25" cx="58.333333399867584" cy="281.4681561034206"></circle><circle r="25" cx="58.33333336215795" cy="281.46815619528627"></circle><circle r="25" cx="70.0000000541264" cy="284.3000145249353"></circle><circle r="25" cx="70.00000008511525" cy="284.30001453665017"></circle><circle r="25" cx="70.00000000016797" cy="284.300014541776"></circle><circle r="25" cx="81.66666675491746" cy="287.1411577663556"></circle><circle r="25" cx="81.66666674402221" cy="287.141157715904"></circle><circle r="25" cx="81.66666669759195" cy="287.1411577791603"></circle><circle r="25" cx="93.33333337223641" cy="279.49049763724435"></circle><circle r="25" cx="93.33333335696122" cy="279.4904977043523"></circle><circle r="25" cx="93.33333341277971" cy="279.49049762453234"></circle><circle r="25" cx="105.00000003566946" cy="274.80168288278634"></circle><circle r="25" cx="105.00000004974024" cy="274.80168296662515"></circle><circle r="25" cx="105.00000007828895" cy="274.8016829316642"></circle><circle r="25" cx="116.66666670710799" cy="268.0052227474108"></circle><circle r="25" cx="116.6666666690063" cy="268.00522278084503"></circle><circle r="25" cx="116.66666676511869" cy="268.0052226904937"></circle><circle r="25" cx="128.3333334140543" cy="269.08225745374"></circle><circle r="25" cx="128.33333334113888" cy="269.0822574094496"></circle><circle r="25" cx="128.33333336947385" cy="269.0822573876138"></circle><circle r="25" cx="140.00000005298847" cy="266.51037291661834"></circle><circle r="25" cx="140.00000001156246" cy="266.5103729179063"></circle><circle r="25" cx="140.00000004746434" cy="266.5103729386188"></circle><circle r="25" cx="151.66666676642149" cy="265.9161469128199"></circle><circle r="25" cx="151.66666667540076" cy="265.9161468912224"></circle><circle r="25" cx="151.66666675121903" cy="265.9161469090064"></circle><circle r="25" cx="163.33333338640458" cy="268.14449449365105"></circle><circle r="25" cx="163.33333340103718" cy="268.1444944259104"></circle><circle r="25" cx="163.33333342772897" cy="268.14449446763285"></circle><circle r="25" cx="175.00000007883787" cy="273.26969394860333"></circle><circle r="25" cx="175.00000008167783" cy="273.2696939485759"></circle><circle r="25" cx="175.00000008725087" cy="273.2696939209194"></circle><circle r="25" cx="186.66666670776107" cy="274.6345568194195"></circle><circle r="25" cx="186.66666669025284" cy="274.6345568497378"></circle><circle r="25" cx="186.6666667133497" cy="274.63455680111724"></circle><circle r="25" cx="198.33333335685555" cy="273.2604092031572"></circle><circle r="25" cx="198.33333336002758" cy="273.2604091240036"></circle><circle r="25" cx="198.3333334243355" cy="273.26040917846825"></circle><circle r="25" cx="210.000000007626" cy="276.64006972995867"></circle><circle r="25" cx="210.000000032218" cy="276.64006964160143"></circle><circle r="25" cx="210.00000007997974" cy="276.64006965778026"></circle><circle r="25" cx="221.666666765246" cy="277.88423044386667"></circle><circle r="25" cx="221.6666667219632" cy="277.88423038934013"></circle><circle r="25" cx="221.6666667106612" cy="277.8842303959433"></circle><circle r="25" cx="233.33333341689695" cy="279.8526041409463"></circle><circle r="25" cx="233.3333333400945" cy="279.8526041811918"></circle><circle r="25" cx="233.33333336483793" cy="279.8526041203162"></circle><circle r="25" cx="245.00000003565123" cy="277.8656609043002"></circle><circle r="25" cx="245.00000002105685" cy="277.86566087232234"></circle><circle r="25" cx="245.0000000565102" cy="277.8656608954738"></circle><circle r="25" cx="256.6666667388745" cy="278.2091977626636"></circle><circle r="25" cx="256.6666666753299" cy="278.20919782727594"></circle><circle r="25" cx="256.66666670889606" cy="278.2091977451537"></circle><circle r="25" cx="268.33333333817706" cy="272.45263313014766"></circle><circle r="25" cx="268.3333333978004" cy="272.4526331501263"></circle><circle r="25" cx="268.3333333510514" cy="272.45263315532543"></circle><circle r="25" cx="280.0000000368653" cy="266.72392291398467"></circle><circle r="25" cx="280.0000000925033" cy="266.72392285405317"></circle><circle r="25" cx="280.0000000348273" cy="266.72392285423376"></circle><circle r="25" cx="291.66666675950586" cy="265.5818947731827"></circle><circle r="25" cx="291.66666675263303" cy="265.5818947508951"></circle><circle r="25" cx="291.66666668884966" cy="265.581894732511"></circle><circle r="25" cx="303.3333333782513" cy="263.5299580028177"></circle><circle r="25" cx="303.333333396771" cy="263.5299580159453"></circle><circle r="25" cx="303.3333333841323" cy="263.5299579410024"></circle><circle r="25" cx="315.00000001525206" cy="262.10010163419463"></circle><circle r="25" cx="315.0000000515896" cy="262.1001016144018"></circle><circle r="25" cx="315.0000000086669" cy="262.10010160774294"></circle><circle r="25" cx="326.66666670291573" cy="261.6915712398916"></circle><circle r="25" cx="326.6666666802887" cy="261.69157117738547"></circle><circle r="25" cx="326.66666668901854" cy="261.69157125403245"></circle><circle r="25" cx="338.33333342060934" cy="258.1169302259628"></circle><circle r="25" cx="338.3333333372737" cy="258.11693025590466"></circle><circle r="25" cx="338.3333333744076" cy="258.1169302863587"></circle><circle r="25" cx="350.00000002773675" cy="256.1485566034084"></circle><circle r="25" cx="350.0000000258582" cy="256.14855654475133"></circle><circle r="25" cx="350.00000005205527" cy="256.14855654770565"></circle><circle r="25" cx="361.6666666883793" cy="254.34730893788392"></circle><circle r="25" cx="361.6666667011516" cy="254.34730894645833"></circle><circle r="25" cx="361.6666667198397" cy="254.34730888334263"></circle><circle r="25" cx="373.3333334019628" cy="253.1681416873073"></circle><circle r="25" cx="373.33333333705" cy="253.16814160962656"></circle><circle r="25" cx="373.3333334313164" cy="253.16814162718535"></circle><circle r="25" cx="385.0000000998601" cy="249.96489199769766"></circle><circle r="25" cx="385.0000000304974" cy="249.96489198766807"></circle><circle r="25" cx="385.00000007768966" cy="249.96489196356958"></circle><circle r="25" cx="396.66666666669335" cy="251.62686791680244"></circle><circle r="25" cx="396.666666751155" cy="251.6268678760163"></circle><circle r="25" cx="396.6666666894129" cy="251.62686786305963"></circle><circle r="25" cx="408.3333333381268" cy="249.10140724583368"></circle><circle r="25" cx="408.3333333851041" cy="249.10140724398127"></circle><circle r="25" cx="408.3333333989492" cy="249.10140728370038"></circle><circle r="25" cx="420.0000000962864" cy="247.0866096569449"></circle><circle r="25" cx="420.0000000867779" cy="247.08660970302986"></circle><circle r="25" cx="420.00000008940367" cy="247.08660966316552"></circle><circle r="25" cx="11.666666716329878" cy="235.31350649205388"></circle><circle r="25" cx="23.33333335483692" cy="191.3129261603596"></circle><circle r="25" cx="35.00000008166184" cy="167.59959382985286"></circle><circle r="25" cx="46.666666765915565" cy="175.77948648304084"></circle><circle r="25" cx="58.33333333682774" cy="185.57493110414427"></circle><circle r="25" cx="70.00000000966308" cy="184.3771942624974"></circle><circle r="25" cx="81.66666669098717" cy="183.18874228411295"></circle><circle r="25" cx="93.33333341230093" cy="195.1661105496083"></circle><circle r="25" cx="105.00000007706696" cy="189.61381111416122"></circle><circle r="25" cx="116.66666670379357" cy="183.8479617853305"></circle><circle r="25" cx="128.33333336745747" cy="185.59350071807324"></circle><circle r="25" cx="140.00000001268106" cy="173.95966926896983"></circle><circle r="25" cx="151.6666667339561" cy="182.0559988566087"></circle><circle r="25" cx="163.33333337261092" cy="195.72319749991715"></circle><circle r="25" cx="175.00000008036713" cy="201.70259686030178"></circle><circle r="25" cx="186.66666670554116" cy="210.64384167015845"></circle><circle r="25" cx="198.33333340628963" cy="205.63934427199538"></circle><circle r="25" cx="210.00000001129283" cy="214.97983470331215"></circle><circle r="25" cx="221.66666673975183" cy="221.90628178238237"></circle><circle r="25" cx="233.33333336533312" cy="223.86537072459797"></circle><circle r="25" cx="245.00000003495123" cy="221.77629486108987"></circle><circle r="25" cx="256.66666674774865" cy="221.48846656304934"></circle><circle r="25" cx="268.3333333891886" cy="213.29928919666224"></circle><circle r="25" cx="280.0000000398259" cy="208.21122885276284"></circle><circle r="25" cx="291.6666666716564" cy="208.2669375549614"></circle><circle r="25" cx="303.3333334241404" cy="205.11011177276373"></circle><circle r="25" cx="315.0000000732518" cy="204.27448139755592"></circle><circle r="25" cx="326.66666668570645" cy="198.57362549019203"></circle><circle r="25" cx="338.3333333641453" cy="189.71594374528354"></circle><circle r="25" cx="350.0000000189378" cy="182.79878142826288"></circle><circle r="25" cx="361.66666673387334" cy="179.28913394009092"></circle><circle r="25" cx="373.3333333714091" cy="189.29812854300863"></circle><circle r="25" cx="385.000000022243" cy="195.38894534525218"></circle><circle r="25" cx="396.66666675976785" cy="194.92470622683396"></circle><circle r="25" cx="408.33333335772005" cy="193.531989065521"></circle><circle r="25" cx="420.0000000198192" cy="198.7686058777112"></circle><circle r="25" cx="11.666666681997405" cy="296.2680980920937"></circle><circle r="25" cx="23.33333334410932" cy="284.0400407137544"></circle><circle r="25" cx="35.00000000850561" cy="275.349485059948"></circle><circle r="25" cx="46.66666676537576" cy="276.4822283659591"></circle><circle r="25" cx="58.33333338002192" cy="281.5888583393796"></circle><circle r="25" cx="70.000000070889" cy="279.3048020005504"></circle><circle r="25" cx="81.66666670542011" cy="277.02074570362277"></circle><circle r="25" cx="93.33333334792061" cy="271.76555935176475"></circle><circle r="25" cx="105.00000005096287" cy="270.753518146034"></circle><circle r="25" cx="116.66666667584664" cy="268.66444222066684"></circle><circle r="25" cx="128.3333334286975" cy="264.09632961106826"></circle><circle r="25" cx="140.00000009625592" cy="260.3267083416549"></circle><circle r="25" cx="151.666666761114" cy="262.18366466895816"></circle><circle r="25" cx="163.33333343020342" cy="260.13172790851706"></circle><circle r="25" cx="175.00000009610474" cy="265.6004643208703"></circle><circle r="25" cx="186.66666671468766" cy="264.8112578377262"></circle><circle r="25" cx="198.33333342023886" cy="266.8167706433487"></circle><circle r="25" cx="210.00000007307918" cy="271.68199624273785"></circle><circle r="25" cx="221.66666674833175" cy="271.98839404761446"></circle><circle r="25" cx="233.33333334845815" cy="272.8425939376174"></circle><circle r="25" cx="245.00000006738156" cy="270.3821268803756"></circle><circle r="25" cx="256.66666669427633" cy="268.5344552626879"></circle><circle r="25" cx="268.33333343202133" cy="268.05164664304147"></circle><circle r="25" cx="280.0000000419736" cy="264.00348186700506"></circle><circle r="25" cx="291.666666762214" cy="264.11489918704905"></circle><circle r="25" cx="303.33333341082334" cy="263.0100101804883"></circle><circle r="25" cx="315.0000000207781" cy="262.7964602093534"></circle><circle r="25" cx="326.6666667383263" cy="262.4250689189947"></circle><circle r="25" cx="338.3333334026883" cy="260.9302191222489"></circle><circle r="25" cx="350.00000006825957" cy="259.9646017900272"></circle><circle r="25" cx="361.6666666708254" cy="258.12621507536085"></circle><circle r="25" cx="373.33333340920575" cy="256.76135217598494"></circle><circle r="25" cx="385.00000008124334" cy="257.9312346076681"></circle><circle r="25" cx="396.6666667376173" cy="259.7603366135706"></circle><circle r="25" cx="408.33333337863496" cy="262.96358632226844"></circle><circle r="25" cx="420.00000009012945" cy="265.93471642714627"></circle><circle r="25" cx="23.33333338702621" cy="307.52125353685227"></circle><circle r="25" cx="35.000000038854985" cy="307.1870013860955"></circle><circle r="25" cx="46.6666667035704" cy="307.3169883390394"></circle><circle r="25" cx="58.33333338317687" cy="309.21108379920014"></circle><circle r="25" cx="70.00000007349979" cy="308.87683157190634"></circle><circle r="25" cx="81.66666666711625" cy="308.54257951781955"></circle><circle r="25" cx="93.33333335799806" cy="307.79051213578697"></circle><circle r="25" cx="105.00000002184728" cy="306.416364517276"></circle><circle r="25" cx="116.6666666710986" cy="306.1656753411176"></circle><circle r="25" cx="128.3333333488289" cy="305.6178732900072"></circle><circle r="25" cx="140.00000006758714" cy="304.9307994562911"></circle><circle r="25" cx="151.66666667937076" cy="304.6336864085444"></circle><circle r="25" cx="163.33333336839027" cy="304.1694473332914"></circle><circle r="25" cx="175.0000000285565" cy="304.9865081223605"></circle><circle r="25" cx="186.66666674444775" cy="306.0913971650745"></circle><circle r="25" cx="198.33333340865954" cy="305.9428405991564"></circle><circle r="25" cx="210.00000008884163" cy="306.2213840304368"></circle><circle r="25" cx="221.66666667539863" cy="307.0013056986392"></circle><circle r="25" cx="233.33333333999045" cy="307.2148556634586"></circle><circle r="25" cx="245.00000004159355" cy="306.6391992022046"></circle><circle r="25" cx="256.6666667217416" cy="306.72276230262713"></circle><circle r="25" cx="268.3333334121015" cy="306.02640369601716"></circle><circle r="25" cx="280.00000009770713" cy="306.0449732382543"></circle><circle r="25" cx="291.6666667593188" cy="306.0078340598827"></circle><circle r="25" cx="303.33333339151454" cy="306.2492384544"></circle><circle r="25" cx="315.0000000180046" cy="305.5157406423307"></circle><circle r="25" cx="326.66666666709415" cy="305.6642971261428"></circle><circle r="25" cx="338.3333333432298" cy="305.57144931270534"></circle><circle r="25" cx="350.0000000842255" cy="305.0607863945485"></circle><circle r="25" cx="361.66666669830624" cy="304.8750907493048"></circle><circle r="25" cx="373.33333340935593" cy="305.6271579904829"></circle><circle r="25" cx="385.0000000022266" cy="305.41360804867844"></circle><circle r="25" cx="396.66666674298386" cy="305.6735818983401"></circle><circle r="25" cx="408.3333334096742" cy="305.6457275558786"></circle><circle r="25" cx="420.0000000080398" cy="305.6364428008212"></circle><circle r="25" cx="23.333333414781023" cy="296.46307858093763"></circle><circle r="25" cx="35.00000009333589" cy="295.5067460298003"></circle><circle r="25" cx="46.66666667257839" cy="301.2818802635153"></circle><circle r="25" cx="58.33333340619643" cy="302.8138691750603"></circle><circle r="25" cx="70.00000000917338" cy="302.0339475640895"></circle><circle r="25" cx="81.6666667433193" cy="301.2633106723423"></circle><circle r="25" cx="93.33333341150782" cy="302.27535189883884"></circle><circle r="25" cx="105.00000003570383" cy="301.1890323934926"></circle><circle r="25" cx="116.66666667940096" cy="300.58552163937884"></circle><circle r="25" cx="128.33333339478304" cy="300.00986512637695"></circle><circle r="25" cx="140.0000000779437" cy="299.51777168488775"></circle><circle r="25" cx="151.66666671000362" cy="302.3310605619505"></circle><circle r="25" cx="163.3333334177925" cy="301.3654432157384"></circle><circle r="25" cx="175.00000007814356" cy="303.03670392983486"></circle><circle r="25" cx="186.66666673832782" cy="305.45074716940644"></circle><circle r="25" cx="198.33333335624633" cy="304.83795156870974"></circle><circle r="25" cx="210.00000005614595" cy="304.14159301606355"></circle><circle r="25" cx="221.66666671950296" cy="305.80356888083"></circle><circle r="25" cx="233.3333334237361" cy="304.85652117222315"></circle><circle r="25" cx="245.00000007514595" cy="304.62440164797476"></circle><circle r="25" cx="256.6666667392133" cy="304.0673147007361"></circle><circle r="25" cx="268.333333344277" cy="303.2688234665123"></circle><circle r="25" cx="280.000000061041" cy="302.7860148501963"></circle><circle r="25" cx="291.6666666955225" cy="302.84172357386564"></circle><circle r="25" cx="303.33333336441274" cy="302.3681997027415"></circle><circle r="25" cx="315.0000000310538" cy="302.22892790836255"></circle><circle r="25" cx="326.66666669997204" cy="303.02741921935643"></circle><circle r="25" cx="338.3333333361539" cy="302.43319316297584"></circle><circle r="25" cx="350.0000000291171" cy="303.0367039976519"></circle><circle r="25" cx="361.6666666777524" cy="301.6347019693898"></circle><circle r="25" cx="373.3333334206115" cy="301.8018279766362"></circle><circle r="25" cx="385.000000014384" cy="302.27535184018865"></circle><circle r="25" cx="396.66666672157885" cy="302.87886268343186"></circle><circle r="25" cx="408.33333335174547" cy="303.01813441314454"></circle><circle r="25" cx="420.00000009215603" cy="303.7144930471046"></circle><circle r="25" cx="23.33333335121567" cy="297.8929348927534"></circle><circle r="25" cx="35.0000000227918" cy="293.8633396417239"></circle><circle r="25" cx="46.66666676125788" cy="299.8984477779571"></circle><circle r="25" cx="58.33333342002835" cy="299.39706951095616"></circle><circle r="25" cx="70.00000004462466" cy="299.0163935248173"></circle><circle r="25" cx="81.66666671861023" cy="298.64500222099576"></circle><circle r="25" cx="93.33333333617033" cy="292.70274196848953"></circle><circle r="25" cx="105.00000006695177" cy="290.37226175662755"></circle><circle r="25" cx="116.66666673560202" cy="288.13462933702147"></circle><circle r="25" cx="128.33333339944875" cy="285.99912960249327"></circle><circle r="25" cx="140.00000006656913" cy="284.17002759908166"></circle><circle r="25" cx="151.6666667551043" cy="284.19788193590136"></circle><circle r="25" cx="163.33333335821015" cy="284.40214713467117"></circle><circle r="25" cx="175.0000000690666" cy="287.12258819824257"></circle><circle r="25" cx="186.66666670735327" cy="288.37603374452715"></circle><circle r="25" cx="198.33333333969614" cy="289.96373134146677"></circle><circle r="25" cx="210.00000002499644" cy="290.36297700604365"></circle><circle r="25" cx="221.66666675274863" cy="290.70651391391186"></circle><circle r="25" cx="233.33333340001195" cy="291.29145511743536"></circle><circle r="25" cx="245.00000001809113" cy="290.1122879106914"></circle><circle r="25" cx="256.6666666983279" cy="289.82445965749827"></circle><circle r="25" cx="268.3333333516596" cy="287.7168141902972"></circle><circle r="25" cx="280.00000001317545" cy="287.85608592788634"></circle><circle r="25" cx="291.6666666770718" cy="287.99535762275804"></circle><circle r="25" cx="303.33333342696505" cy="288.71028586751896"></circle><circle r="25" cx="315.0000000177845" cy="288.2089076544171"></circle><circle r="25" cx="326.666666743328" cy="292.9162918913752"></circle><circle r="25" cx="338.33333340991464" cy="294.2718700653597"></circle><circle r="25" cx="350.00000003606806" cy="294.0397504774932"></circle><circle r="25" cx="361.6666667521885" cy="294.3461483104673"></circle><circle r="25" cx="373.3333333345863" cy="295.9245612481481"></circle><circle r="25" cx="385.0000000864312" cy="296.13811119388004"></circle><circle r="25" cx="396.6666666694772" cy="296.99231110737253"></circle><circle r="25" cx="408.33333339722" cy="298.3107501102817"></circle><circle r="25" cx="420.0000000675734" cy="299.6570434212483"></circle><circle r="25" cx="23.33333342562972" cy="285.7484404528576"></circle><circle r="25" cx="35.000000096199415" cy="286.9833164782212"></circle><circle r="25" cx="46.66666675718183" cy="299.7313216378863"></circle><circle r="25" cx="58.333333410809495" cy="298.59857834361196"></circle><circle r="25" cx="70.00000004241389" cy="299.34136083400807"></circle><circle r="25" cx="81.66666669312222" cy="300.093428193165"></circle><circle r="25" cx="93.33333338350917" cy="300.1769912356487"></circle><circle r="25" cx="105.00000006136254" cy="298.0414914428455"></circle><circle r="25" cx="116.6666667369478" cy="295.5531699596965"></circle><circle r="25" cx="128.33333338443697" cy="293.97475701198096"></circle><circle r="25" cx="140.00000002120765" cy="295.3024808371074"></circle><circle r="25" cx="151.66666666974783" cy="296.6209198359691"></circle><circle r="25" cx="163.33333343004534" cy="298.1250544326608"></circle><circle r="25" cx="175.00000009439583" cy="300.35340206009084"></circle><circle r="25" cx="186.66666670889003" cy="300.0934282048452"></circle><circle r="25" cx="198.33333338912053" cy="301.82039755327486"></circle><circle r="25" cx="210.0000000444009" cy="299.78703036641446"></circle><circle r="25" cx="221.66666673945682" cy="300.50195860692907"></circle><circle r="25" cx="233.333333422905" cy="300.0655738557703"></circle><circle r="25" cx="245.00000009275666" cy="298.45930656878096"></circle><circle r="25" cx="256.6666667666097" cy="297.8929349231408"></circle><circle r="25" cx="268.33333337214845" cy="294.90323519556614"></circle><circle r="25" cx="280.00000009454135" cy="293.1669810668231"></circle><circle r="25" cx="291.6666667119076" cy="292.34063543827654"></circle><circle r="25" cx="303.33333342711273" cy="291.2636007926432"></circle><circle r="25" cx="315.00000004152844" cy="290.6786595757874"></circle><circle r="25" cx="326.6666666682492" cy="290.84578562729604"></circle><circle r="25" cx="338.3333333589548" cy="287.68895987465345"></circle><circle r="25" cx="350.00000009069674" cy="287.61468163940197"></circle><circle r="25" cx="361.66666668243244" cy="287.02045560598697"></circle><circle r="25" cx="373.333333412698" cy="287.8653707186982"></circle><circle r="25" cx="385.0000000881486" cy="288.33889456263887"></circle><circle r="25" cx="396.66666673877654" cy="289.60162486110653"></circle><circle r="25" cx="408.3333333504658" cy="289.75946620444"></circle><circle r="25" cx="420.00000002304154" cy="291.12432907640124"></circle><circle r="25" cx="23.33333334399075" cy="266.93747285240005"></circle><circle r="25" cx="35.000000060130745" cy="258.79471934475106"></circle><circle r="25" cx="46.66666667954404" cy="259.51893233817026"></circle><circle r="25" cx="58.3333333586312" cy="265.34977517318265"></circle><circle r="25" cx="70.00000005576696" cy="266.1018425259113"></circle><circle r="25" cx="81.66666668008273" cy="266.8631945483478"></circle><circle r="25" cx="93.33333343100722" cy="267.1231684774252"></circle><circle r="25" cx="105.00000006905226" cy="263.6877992389608"></circle><circle r="25" cx="116.66666669562497" cy="261.22733209725476"></circle><circle r="25" cx="128.33333339268032" cy="242.3885100970645"></circle><circle r="25" cx="140.0000000205453" cy="237.6718410182061"></circle><circle r="25" cx="151.66666671751233" cy="238.42390835973316"></circle><circle r="25" cx="163.33333337915207" cy="239.4916582076056"></circle><circle r="25" cx="175.0000000626939" cy="242.24923842772546"></circle><circle r="25" cx="186.66666675569238" cy="238.84172351593037"></circle><circle r="25" cx="198.33333342066493" cy="268.1352097119694"></circle><circle r="25" cx="210.0000000194793" cy="248.78572465546267"></circle><circle r="25" cx="221.66666670976105" cy="251.23690709162108"></circle><circle r="25" cx="233.3333334024828" cy="249.95560720395363"></circle><circle r="25" cx="245.0000000852262" cy="246.42739012934786"></circle><circle r="25" cx="256.6666667507741" cy="244.57971860071387"></circle><circle r="25" cx="268.333333358469" cy="238.83243878951615"></circle><circle r="25" cx="280.0000000821345" cy="235.83345431863708"></circle><circle r="25" cx="291.66666672354285" cy="235.8984477925009"></circle><circle r="25" cx="303.3333334226808" cy="234.02292184405337"></circle><circle r="25" cx="315.00000002593845" cy="230.99608306318794"></circle><circle r="25" cx="326.6666666952259" cy="235.59204993487856"></circle><circle r="25" cx="338.3333333904302" cy="227.0964747489249"></circle><circle r="25" cx="350.0000000706217" cy="223.10401857901556"></circle><circle r="25" cx="361.6666666929267" cy="221.34919488500836"></circle><circle r="25" cx="373.3333333430299" cy="226.05657916060713"></circle><circle r="25" cx="385.000000065024" cy="224.4874511226132"></circle><circle r="25" cx="396.66666676055337" cy="227.70927035869818"></circle><circle r="25" cx="408.3333334064094" cy="228.64703330323576"></circle><circle r="25" cx="420.00000000165306" cy="234.19004789203495"></circle><circle r="25" cx="35.000000030029845" cy="233.16872192477888"></circle><circle r="25" cx="46.66666672325271" cy="224.83098800792953"></circle><circle r="25" cx="58.33333336729035" cy="225.5459162034049"></circle><circle r="25" cx="70.00000000441732" cy="226.06586395404932"></circle><circle r="25" cx="81.66666671976456" cy="226.59509653261517"></circle><circle r="25" cx="93.33333342570957" cy="224.93312059757574"></circle><circle r="25" cx="105.00000001812073" cy="214.8498476829014"></circle><circle r="25" cx="116.666666702908" cy="244.64471205774848"></circle><circle r="25" cx="128.33333335932045" cy="243.69766432814808"></circle><circle r="25" cx="140.00000006551406" cy="237.34687365886663"></circle><circle r="25" cx="151.66666668614062" cy="231.50674598238504"></circle><circle r="25" cx="163.3333334235697" cy="231.96170033119188"></circle><circle r="25" cx="175.00000008450314" cy="230.29043965637737"></circle><circle r="25" cx="186.66666668537013" cy="229.7426374899403"></circle><circle r="25" cx="198.3333333565065" cy="220.54141893051295"></circle><circle r="25" cx="210.00000004996002" cy="228.15493987864076"></circle><circle r="25" cx="221.66666675872577" cy="230.37400263677202"></circle><circle r="25" cx="233.33333338439553" cy="232.65805895540046"></circle><circle r="25" cx="245.00000005254842" cy="229.38981581463028"></circle><circle r="25" cx="256.66666674344066" cy="224.2089076222566"></circle><circle r="25" cx="268.33333336429956" cy="222.97403165621873"></circle><circle r="25" cx="280.0000000484893" cy="215.48121286884603"></circle><circle r="25" cx="291.666666751241" cy="215.88045850602282"></circle><circle r="25" cx="303.33333335805276" cy="215.43478892339732"></circle><circle r="25" cx="315.0000000007952" cy="212.11083711659455"></circle><circle r="25" cx="326.6666666691599" cy="211.93442626571132"></circle><circle r="25" cx="338.333333374162" cy="205.5929203917349"></circle><circle r="25" cx="350.0000000756466" cy="203.34600328943512"></circle><circle r="25" cx="361.6666667506856" cy="201.08980131808278"></circle><circle r="25" cx="373.33333337428587" cy="204.73872051663758"></circle><circle r="25" cx="385.0000000659055" cy="203.8659510389213"></circle><circle r="25" cx="396.666666723513" cy="208.434063580154"></circle><circle r="25" cx="408.3333333809285" cy="208.19265924400804"></circle><circle r="25" cx="420.00000000436" cy="212.38938053834832"></circle><circle r="25" cx="35.00000006474755" cy="302.36819969690487"></circle><circle r="25" cx="46.66666667512584" cy="300.0470042243329"></circle><circle r="25" cx="58.3333333411243" cy="300.836210699909"></circle><circle r="25" cx="70.00000007046265" cy="299.9541564351995"></circle><circle r="25" cx="81.66666666795257" cy="299.07210220964976"></circle><circle r="25" cx="93.33333335927232" cy="298.1714784021604"></circle><circle r="25" cx="105.00000006244034" cy="295.37675913042494"></circle><circle r="25" cx="116.6666667002257" cy="297.0851589467383"></circle><circle r="25" cx="128.33333341100513" cy="295.5903090291736"></circle><circle r="25" cx="140.00000002112273" cy="293.8354852959501"></circle><circle r="25" cx="151.66666669232725" cy="291.42144208344894"></circle><circle r="25" cx="163.33333339044233" cy="292.47990721242377"></circle><circle r="25" cx="175.00000004603663" cy="297.0294502082811"></circle><circle r="25" cx="186.66666672180915" cy="296.19381984268847"></circle><circle r="25" cx="198.33333339216892" cy="294.3182940205249"></circle><circle r="25" cx="210.00000007476115" cy="294.98679825903156"></circle><circle r="25" cx="221.66666676021163" cy="295.7574350934446"></circle><circle r="25" cx="233.33333340084516" cy="295.5624546911916"></circle><circle r="25" cx="245.00000002406748" cy="295.10750038302865"></circle><circle r="25" cx="256.66666673038304" cy="294.8568112651364"></circle><circle r="25" cx="268.33333335413107" cy="294.44828094972803"></circle><circle r="25" cx="280.0000000248399" cy="292.9441463200006"></circle><circle r="25" cx="291.6666667221387" cy="292.74916590028283"></circle><circle r="25" cx="303.3333333632159" cy="292.8234441552741"></circle><circle r="25" cx="315.0000000056909" cy="288.8124184086607"></circle><circle r="25" cx="326.66666672345076" cy="285.1634992222762"></circle><circle r="25" cx="338.3333333998686" cy="282.25736256292464"></circle><circle r="25" cx="350.00000001203335" cy="281.3195996560797"></circle><circle r="25" cx="361.6666667208647" cy="279.0912519963163"></circle><circle r="25" cx="373.33333337993423" cy="279.56477586415355"></circle><circle r="25" cx="385.0000000851699" cy="279.7504715813596"></circle><circle r="25" cx="396.66666667800666" cy="279.0169738045119"></circle><circle r="25" cx="408.33333334051133" cy="275.0802263484455"></circle><circle r="25" cx="420.00000002185686" cy="275.163789436401"></circle><circle r="25" cx="35.00000007613602" cy="293.7704918452592"></circle><circle r="25" cx="46.66666668666036" cy="291.82997253180633"></circle><circle r="25" cx="58.33333343093855" cy="293.44552447829335"></circle><circle r="25" cx="70.00000007919694" cy="292.26635718997045"></circle><circle r="25" cx="81.66666671524443" cy="291.0964747205512"></circle><circle r="25" cx="93.33333342347085" cy="285.8969970283975"></circle><circle r="25" cx="105.000000069543" cy="282.14594522340076"></circle><circle r="25" cx="116.66666669928212" cy="282.31307128151127"></circle><circle r="25" cx="128.33333340598384" cy="280.75322800822374"></circle><circle r="25" cx="140.00000006093157" cy="273.78964168490586"></circle><circle r="25" cx="151.6666667187305" cy="270.69780937285515"></circle><circle r="25" cx="163.33333339047363" cy="268.3673292015685"></circle><circle r="25" cx="175.00000000374828" cy="267.51312933749216"></circle><circle r="25" cx="186.66666673470252" cy="267.7266793202568"></circle><circle r="25" cx="198.33333341845005" cy="262.86145372264707"></circle><circle r="25" cx="210.00000005594794" cy="264.1241840153046"></circle><circle r="25" cx="221.66666669986674" cy="266.59393596344853"></circle><circle r="25" cx="233.33333342464982" cy="263.2885536603999"></circle><circle r="25" cx="245.00000003533958" cy="258.95256065248486"></circle><circle r="25" cx="256.666666720697" cy="258.87828239657176"></circle><circle r="25" cx="268.33333339265295" cy="254.27303064641893"></circle><circle r="25" cx="280.0000000522879" cy="252.4532134545965"></circle><circle r="25" cx="291.66666672370974" cy="257.83838684887644"></circle><circle r="25" cx="303.33333334216286" cy="254.3937327764003"></circle><circle r="25" cx="315.0000000229984" cy="252.06325263096886"></circle><circle r="25" cx="326.66666669526876" cy="251.70114618298226"></circle><circle r="25" cx="338.3333334235587" cy="251.171913621697"></circle><circle r="25" cx="350.0000000776384" cy="251.2461918300435"></circle><circle r="25" cx="361.6666667216929" cy="251.46902658322645"></circle><circle r="25" cx="373.3333333485798" cy="251.4318874998917"></circle><circle r="25" cx="385.00000007599573" cy="249.6399245701326"></circle><circle r="25" cx="396.6666667483452" cy="250.52197886230982"></circle><circle r="25" cx="408.3333333667566" cy="250.59625709829675"></circle><circle r="25" cx="420.0000000460615" cy="248.60002908712679"></circle><circle r="25" cx="35.0000000762636" cy="303.95589733656294"></circle><circle r="25" cx="46.66666674854284" cy="299.0256782551466"></circle><circle r="25" cx="58.333333377902576" cy="299.46206302963185"></circle><circle r="25" cx="70.00000003302489" cy="298.82141307968567"></circle><circle r="25" cx="81.66666670327018" cy="298.18076315547376"></circle><circle r="25" cx="93.33333336075256" cy="294.40185702940283"></circle><circle r="25" cx="105.00000005537403" cy="294.0397505599276"></circle><circle r="25" cx="116.66666674399796" cy="298.26432621249296"></circle><circle r="25" cx="128.33333335208746" cy="297.6886697056582"></circle><circle r="25" cx="140.00000008009303" cy="297.2151458675045"></circle><circle r="25" cx="151.6666667060653" cy="298.53358486414453"></circle><circle r="25" cx="163.3333334032703" cy="295.2189178003485"></circle><circle r="25" cx="175.00000003533899" cy="293.42695493870895"></circle><circle r="25" cx="186.66666668166573" cy="297.41941102381344"></circle><circle r="25" cx="198.33333335130024" cy="297.7536631655242"></circle><circle r="25" cx="210.00000002790767" cy="298.1993327238903"></circle><circle r="25" cx="221.66666669789126" cy="298.7657044261268"></circle><circle r="25" cx="233.3333333612071" cy="299.8613086525709"></circle><circle r="25" cx="245.00000004794282" cy="298.6357174029542"></circle><circle r="25" cx="256.6666667369163" cy="299.5270565152886"></circle><circle r="25" cx="268.3333334224626" cy="298.3293196018132"></circle><circle r="25" cx="280.0000000263839" cy="295.7945742818332"></circle><circle r="25" cx="291.6666667624132" cy="295.6460177177245"></circle><circle r="25" cx="303.33333336359624" cy="292.0806615833109"></circle><circle r="25" cx="315.00000007970954" cy="290.8922095503982"></circle><circle r="25" cx="326.6666667561764" cy="289.4623531868229"></circle><circle r="25" cx="338.33333335772693" cy="286.50050778250807"></circle><circle r="25" cx="350.0000000138857" cy="283.9193385206168"></circle><circle r="25" cx="361.66666668644086" cy="282.71231688282415"></circle><circle r="25" cx="373.33333340010125" cy="282.23879301422784"></circle><circle r="25" cx="385.00000006577466" cy="281.9045408632789"></circle><circle r="25" cx="396.66666666783766" cy="283.29725809611915"></circle><circle r="25" cx="408.3333333359991" cy="285.3399101186945"></circle><circle r="25" cx="420.0000000423555" cy="285.6927318416425"></circle><circle r="25" cx="46.666666687699575" cy="296.72305241514687"></circle><circle r="25" cx="58.33333337974836" cy="292.4799072118091"></circle><circle r="25" cx="70.0000000559209" cy="285.6463079099406"></circle><circle r="25" cx="81.6666666936789" cy="278.8219933537402"></circle><circle r="25" cx="93.33333342230226" cy="285.43275796893516"></circle><circle r="25" cx="105.00000004657302" cy="279.5554911139939"></circle><circle r="25" cx="116.66666675625399" cy="275.4144784996861"></circle><circle r="25" cx="128.33333339690887" cy="271.8584071347173"></circle><circle r="25" cx="140.00000003852625" cy="269.3979399670122"></circle><circle r="25" cx="151.66666669713655" cy="267.04889023769226"></circle><circle r="25" cx="163.33333341701547" cy="270.59567685331166"></circle><circle r="25" cx="175.00000002929647" cy="266.1204120292785"></circle><circle r="25" cx="186.66666673212194" cy="267.7173945002994"></circle><circle r="25" cx="198.3333333591986" cy="266.9096185141757"></circle><circle r="25" cx="210.00000002322258" cy="271.36631366721224"></circle><circle r="25" cx="221.66666670973598" cy="272.0719570770155"></circle><circle r="25" cx="233.33333335807" cy="270.88350510083427"></circle><circle r="25" cx="245.00000009705357" cy="265.84186856376016"></circle><circle r="25" cx="256.66666672938555" cy="263.50210359290224"></circle><circle r="25" cx="268.3333333557194" cy="257.9590890285518"></circle><circle r="25" cx="280.0000000815751" cy="264.08704485244954"></circle><circle r="25" cx="291.66666673926215" cy="264.2263166514514"></circle><circle r="25" cx="303.33333336133705" cy="265.54475556900917"></circle><circle r="25" cx="315.0000000139489" cy="267.9773684336783"></circle><circle r="25" cx="326.66666668175253" cy="284.7363992497366"></circle><circle r="25" cx="338.33333340133015" cy="282.15523001632664"></circle><circle r="25" cx="350.000000095284" cy="283.4272451129023"></circle><circle r="25" cx="361.6666667388828" cy="283.81720592483424"></circle><circle r="25" cx="373.33333334319695" cy="285.8877122242875"></circle><circle r="25" cx="385.00000009684777" cy="285.0985058059398"></circle><circle r="25" cx="396.6666667470219" cy="286.3333817005323"></circle><circle r="25" cx="408.333333403536" cy="287.0947338439054"></circle><circle r="25" cx="420.0000000774465" cy="288.8217032436339"></circle><circle r="25" cx="46.666666715844805" cy="296.8159002781418"></circle><circle r="25" cx="58.33333340988979" cy="291.421442079115"></circle><circle r="25" cx="70.00000003817715" cy="291.9042507117746"></circle><circle r="25" cx="81.66666668945035" cy="292.396344199107"></circle><circle r="25" cx="93.33333334943723" cy="291.68141598161225"></circle><circle r="25" cx="105.00000001772975" cy="287.800377265916"></circle><circle r="25" cx="116.66666669865963" cy="287.0761642524271"></circle><circle r="25" cx="128.3333333837973" cy="284.0400406921071"></circle><circle r="25" cx="140.00000001240377" cy="282.164514758926"></circle><circle r="25" cx="151.66666674978237" cy="283.9471928702752"></circle><circle r="25" cx="163.33333338515166" cy="286.370520902686"></circle><circle r="25" cx="175.00000009117778" cy="290.6693747791697"></circle><circle r="25" cx="186.66666674075023" cy="293.0927027715247"></circle><circle r="25" cx="198.33333334376027" cy="294.2811548896068"></circle><circle r="25" cx="210.0000000115078" cy="294.2347309774626"></circle><circle r="25" cx="221.66666669685293" cy="295.2839112737321"></circle><circle r="25" cx="233.33333343100324" cy="295.66458734107727"></circle><circle r="25" cx="245.00000003700504" cy="294.1511678568087"></circle><circle r="25" cx="256.66666670762197" cy="294.12331351918687"></circle><circle r="25" cx="268.33333337385284" cy="292.15493984043513"></circle><circle r="25" cx="280.0000000265924" cy="291.2264616851112"></circle><circle r="25" cx="291.6666666825062" cy="292.36848985839003"></circle><circle r="25" cx="303.3333333524853" cy="292.25707241403586"></circle><circle r="25" cx="315.0000000105912" cy="291.66284642985624"></circle><circle r="25" cx="326.6666666758066" cy="289.91730749787206"></circle><circle r="25" cx="338.3333333359541" cy="288.5060206612834"></circle><circle r="25" cx="350.0000000443401" cy="289.4716379421832"></circle><circle r="25" cx="361.66666676124214" cy="288.5988684993855"></circle><circle r="25" cx="373.33333342869435" cy="289.21166406679873"></circle><circle r="25" cx="385.0000000384765" cy="288.441027150343"></circle><circle r="25" cx="396.66666670467527" cy="289.9080227238973"></circle><circle r="25" cx="408.333333347321" cy="290.446540064756"></circle><circle r="25" cx="420.00000000105547" cy="290.632235638445"></circle><circle r="25" cx="46.666666748988" cy="302.45176271861874"></circle><circle r="25" cx="58.33333336343293" cy="301.75540404357434"></circle><circle r="25" cx="70.00000006055579" cy="300.585521544197"></circle><circle r="25" cx="81.66666672289588" cy="299.415639056616"></circle><circle r="25" cx="93.33333336782184" cy="298.4871609056549"></circle><circle r="25" cx="105.00000007724071" cy="295.90599162758565"></circle><circle r="25" cx="116.66666668650006" cy="292.4056289061492"></circle><circle r="25" cx="128.3333333490136" cy="292.4334832550372"></circle><circle r="25" cx="140.00000003417875" cy="290.9850573398388"></circle><circle r="25" cx="151.66666669704418" cy="292.8698679925964"></circle><circle r="25" cx="163.33333338963772" cy="294.1790222497497"></circle><circle r="25" cx="175.00000002570147" cy="297.22443067424086"></circle><circle r="25" cx="186.66666668916997" cy="299.1370956431993"></circle><circle r="25" cx="198.33333342063457" cy="299.96344120390313"></circle><circle r="25" cx="210.00000004992813" cy="300.51124337845937"></circle><circle r="25" cx="221.66666667294578" cy="301.58827799762685"></circle><circle r="25" cx="233.3333334320772" cy="301.6625562563804"></circle><circle r="25" cx="245.00000002311634" cy="299.75917605979146"></circle><circle r="25" cx="256.6666667301642" cy="299.12781088580095"></circle><circle r="25" cx="268.3333334213217" cy="298.422167462325"></circle><circle r="25" cx="280.00000008710055" cy="299.39706952043275"></circle><circle r="25" cx="291.6666666859305" cy="300.1027129116956"></circle><circle r="25" cx="303.3333334167316" cy="300.604091157239"></circle><circle r="25" cx="315.0000000728674" cy="301.83896707067186"></circle><circle r="25" cx="326.666666716707" cy="301.6904105774641"></circle><circle r="25" cx="338.33333337388945" cy="300.2884085380184"></circle><circle r="25" cx="350.00000008660714" cy="300.1584215924195"></circle><circle r="25" cx="361.66666676578035" cy="299.34136081803246"></circle><circle r="25" cx="373.3333334289702" cy="299.37849994903314"></circle><circle r="25" cx="385.0000000302415" cy="299.1928043524817"></circle><circle r="25" cx="396.6666667603283" cy="300.0377194583618"></circle><circle r="25" cx="408.3333333663131" cy="297.9579283502699"></circle><circle r="25" cx="420.0000000346286" cy="300.455534653221"></circle><circle r="25" cx="58.333333342404806" cy="297.3172784693724"></circle><circle r="25" cx="70.00000006206591" cy="294.9125200014996"></circle><circle r="25" cx="81.66666666706057" cy="292.50776150994426"></circle><circle r="25" cx="93.33333343301881" cy="284.0678949745197"></circle><circle r="25" cx="105.00000000287727" cy="287.3918468628326"></circle><circle r="25" cx="116.66666674910098" cy="288.255331499202"></circle><circle r="25" cx="128.3333334099646" cy="285.5720296560955"></circle><circle r="25" cx="140.00000001106926" cy="283.5943711869825"></circle><circle r="25" cx="151.66666670227966" cy="284.12360367266075"></circle><circle r="25" cx="163.33333343313677" cy="283.47366899512275"></circle><circle r="25" cx="175.00000002515569" cy="286.01769918652917"></circle><circle r="25" cx="186.66666673686876" cy="282.24807780574133"></circle><circle r="25" cx="198.33333341492124" cy="280.9667779207473"></circle><circle r="25" cx="210.00000002145785" cy="279.83403460414445"></circle><circle r="25" cx="221.66666669042488" cy="280.87393015055784"></circle><circle r="25" cx="233.33333337179118" cy="278.7477151690996"></circle><circle r="25" cx="245.00000003143245" cy="278.84984770929793"></circle><circle r="25" cx="256.666666729682" cy="276.9928913958319"></circle><circle r="25" cx="268.3333334047866" cy="279.1840998125643"></circle><circle r="25" cx="280.0000000559841" cy="278.6270129849395"></circle><circle r="25" cx="291.6666666915687" cy="276.547221901147"></circle><circle r="25" cx="303.33333336269277" cy="278.03278695841226"></circle><circle r="25" cx="315.0000000891373" cy="277.45713048723974"></circle><circle r="25" cx="326.6666667232295" cy="275.14521983347015"></circle><circle r="25" cx="338.33333342801564" cy="272.8147395979205"></circle><circle r="25" cx="350.00000007197417" cy="273.79892654355774"></circle><circle r="25" cx="361.66666674688884" cy="273.48324389180897"></circle><circle r="25" cx="373.3333333491323" cy="275.36805460900126"></circle><circle r="25" cx="385.00000008475087" cy="276.7700566449976"></circle><circle r="25" cx="396.6666667180077" cy="276.5843610191876"></circle><circle r="25" cx="408.333333349539" cy="276.36152627930994"></circle><circle r="25" cx="420.0000000137101" cy="276.07369797181764"></circle><circle r="25" cx="58.333333429122334" cy="248.90642688257867"></circle><circle r="25" cx="70.00000008191064" cy="248.7857246907241"></circle><circle r="25" cx="81.66666669242386" cy="248.67430727569663"></circle><circle r="25" cx="93.33333340705803" cy="258.25620199635586"></circle><circle r="25" cx="105.00000007067635" cy="247.95937917676548"></circle><circle r="25" cx="116.66666676229742" cy="256.5756564964238"></circle><circle r="25" cx="128.33333337056482" cy="248.08008133397234"></circle><circle r="25" cx="140.00000006045022" cy="246.40882056734097"></circle><circle r="25" cx="151.66666671397743" cy="238.78601480148805"></circle><circle r="25" cx="163.333333360736" cy="256.92847822057365"></circle><circle r="25" cx="175.000000037845" cy="263.9570579423753"></circle><circle r="25" cx="186.66666675206278" cy="251.86827216250697"></circle><circle r="25" cx="198.3333334146407" cy="260.3731322191381"></circle><circle r="25" cx="210.00000001852413" cy="257.7826781579102"></circle><circle r="25" cx="221.666666709873" cy="260.2431452322991"></circle><circle r="25" cx="233.33333341280215" cy="258.0705063181465"></circle><circle r="25" cx="245.00000007057216" cy="261.84012767912975"></circle><circle r="25" cx="256.666666735274" cy="260.27099964486706"></circle><circle r="25" cx="268.33333338089426" cy="260.0388800542034"></circle><circle r="25" cx="280.0000000736144" cy="257.14202819497956"></circle><circle r="25" cx="291.6666667080944" cy="256.4828087001927"></circle><circle r="25" cx="303.33333334814205" cy="256.3249673730206"></circle><circle r="25" cx="315.000000089283" cy="255.7214566127483"></circle><circle r="25" cx="326.66666669466844" cy="254.13375896836573"></circle><circle r="25" cx="338.33333342583575" cy="250.71695926472668"></circle><circle r="25" cx="350.00000001642553" cy="248.22863779171922"></circle><circle r="25" cx="361.666666682602" cy="248.98998986028116"></circle><circle r="25" cx="373.3333333930979" cy="252.44392867421544"></circle><circle r="25" cx="385.00000006884153" cy="253.56738730411757"></circle><circle r="25" cx="396.666666703379" cy="249.81633544167406"></circle><circle r="25" cx="408.3333333458424" cy="257.80124766305516"></circle><circle r="25" cx="420.00000005188156" cy="260.4474104438081"></circle><circle r="25" cx="58.33333334367381" cy="278.62701293777906"></circle><circle r="25" cx="70.00000001142719" cy="279.6483389085561"></circle><circle r="25" cx="81.66666672889652" cy="280.67894974086835"></circle><circle r="25" cx="93.3333333820812" cy="260.01102571370683"></circle><circle r="25" cx="105.00000004056999" cy="256.86348475520055"></circle><circle r="25" cx="116.66666667075091" cy="261.3851734019825"></circle><circle r="25" cx="128.33333336347684" cy="261.7379951419135"></circle><circle r="25" cx="140.0000000816298" cy="261.54301473340405"></circle><circle r="25" cx="151.66666675614323" cy="261.02306695420515"></circle><circle r="25" cx="163.33333341613994" cy="257.7548237541205"></circle><circle r="25" cx="175.000000046491" cy="254.2916002028912"></circle><circle r="25" cx="186.66666676084517" cy="256.02785436865776"></circle><circle r="25" cx="198.33333341913138" cy="252.13753085694717"></circle><circle r="25" cx="210.00000002322955" cy="258.6368780090627"></circle><circle r="25" cx="221.66666670896726" cy="260.6609604757355"></circle><circle r="25" cx="233.33333333656537" cy="258.5625998307489"></circle><circle r="25" cx="245.0000000391938" cy="258.55331504535366"></circle><circle r="25" cx="256.66666672238904" cy="260.9952126271943"></circle><circle r="25" cx="268.33333342097427" cy="258.32119549721864"></circle><circle r="25" cx="280.00000000411535" cy="251.72900045644522"></circle><circle r="25" cx="291.66666667157523" cy="251.11620492862866"></circle><circle r="25" cx="303.3333334214928" cy="257.3277238106257"></circle><circle r="25" cx="315.0000000441398" cy="250.43841582113194"></circle><circle r="25" cx="326.66666673502937" cy="249.75134202583374"></circle><circle r="25" cx="338.33333339861537" cy="245.00681856348623"></circle><circle r="25" cx="350.0000000052925" cy="241.34861456099742"></circle><circle r="25" cx="361.66666668690124" cy="238.98099522305031"></circle><circle r="25" cx="373.3333334213125" cy="243.01059052061743"></circle><circle r="25" cx="385.000000012354" cy="249.3706659451265"></circle><circle r="25" cx="396.66666667671785" cy="246.98447703890474"></circle><circle r="25" cx="408.3333333587675" cy="246.5109532133076"></circle><circle r="25" cx="420.0000000925384" cy="248.19149868249974"></circle><circle r="25" cx="81.66666666850996" cy="307.976207797701"></circle><circle r="25" cx="81.6666666875779" cy="307.9762077798628"></circle><circle r="25" cx="93.3333334214141" cy="300.27912383718086"></circle><circle r="25" cx="93.33333339477835" cy="300.2791238100395"></circle><circle r="25" cx="105.00000000534719" cy="297.76294793567973"></circle><circle r="25" cx="105.00000005948601" cy="297.76294793507765"></circle><circle r="25" cx="116.66666667396551" cy="296.3330916347607"></circle><circle r="25" cx="116.66666674005741" cy="296.33309159288973"></circle><circle r="25" cx="128.33333337918378" cy="295.0796461001175"></circle><circle r="25" cx="128.33333342981874" cy="295.0796460536535"></circle><circle r="25" cx="140.00000008229765" cy="293.2969679588356"></circle><circle r="25" cx="140.0000000622713" cy="293.29696799234694"></circle><circle r="25" cx="151.66666673311474" cy="291.64427686487153"></circle><circle r="25" cx="151.66666675855524" cy="291.64427686804885"></circle><circle r="25" cx="163.33333333887686" cy="290.6786595772981"></circle><circle r="25" cx="163.33333336149667" cy="290.6786595097993"></circle><circle r="25" cx="175.00000003139797" cy="291.66284644453435"></circle><circle r="25" cx="175.00000004891092" cy="291.66284644423735"></circle><circle r="25" cx="186.66666668314622" cy="290.03800962173426"></circle><circle r="25" cx="186.66666670689355" cy="290.0380095760311"></circle><circle r="25" cx="198.33333335275069" cy="289.3137966906222"></circle><circle r="25" cx="198.33333335748583" cy="289.31379668229164"></circle><circle r="25" cx="210.00000001213806" cy="289.6387640118761"></circle><circle r="25" cx="210.00000007644064" cy="289.6387639977137"></circle><circle r="25" cx="221.6666666981592" cy="291.09647477822415"></circle><circle r="25" cx="221.66666668041043" cy="291.096474707209"></circle><circle r="25" cx="233.333333352487" cy="291.18932253290734"></circle><circle r="25" cx="233.33333333792845" cy="291.1893225472596"></circle><circle r="25" cx="245.00000007466886" cy="290.2051357100319"></circle><circle r="25" cx="245.00000009585983" cy="290.2051356963137"></circle><circle r="25" cx="256.66666673910186" cy="289.27665749576437"></circle><circle r="25" cx="256.66666670952276" cy="289.2766575740278"></circle><circle r="25" cx="268.3333333653569" cy="287.6796751172626"></circle><circle r="25" cx="268.3333333527599" cy="287.679675106061"></circle><circle r="25" cx="280.00000002581896" cy="284.93137967694025"></circle><circle r="25" cx="280.00000004934924" cy="284.93137971758887"></circle><circle r="25" cx="291.6666667314235" cy="284.6806906359861"></circle><circle r="25" cx="291.66666669013995" cy="284.6806905886339"></circle><circle r="25" cx="303.33333337806926" cy="283.6315103218366"></circle><circle r="25" cx="303.3333334080647" cy="283.6315102340937"></circle><circle r="25" cx="315.00000008364003" cy="282.3594951623983"></circle><circle r="25" cx="315.0000000932499" cy="282.3594952348556"></circle><circle r="25" cx="326.6666666782394" cy="280.98534752798656"></circle><circle r="25" cx="326.6666667251022" cy="280.985347458416"></circle><circle r="25" cx="338.333333368435" cy="279.9268824224092"></circle><circle r="25" cx="338.33333340830126" cy="279.9268824106109"></circle><circle r="25" cx="350.00000006626976" cy="279.82474979297655"></circle><circle r="25" cx="350.000000044342" cy="279.82474984600964"></circle><circle r="25" cx="361.66666669803044" cy="278.16277382936113"></circle><circle r="25" cx="361.6666667066746" cy="278.16277385530685"></circle><circle r="25" cx="373.3333333553961" cy="277.35499792142554"></circle><circle r="25" cx="373.3333333732429" cy="277.35499791652626"></circle><circle r="25" cx="385.0000000325958" cy="277.9956477593019"></circle><circle r="25" cx="385.00000001932625" cy="277.99564779316245"></circle><circle r="25" cx="396.6666666921836" cy="277.6706804588364"></circle><circle r="25" cx="396.6666667477459" cy="277.67068047268174"></circle><circle r="25" cx="408.3333333699278" cy="278.36703902809415"></circle><circle r="25" cx="408.33333334866575" cy="278.36703906244657"></circle><circle r="25" cx="420.00000007805824" cy="279.0726825249667"></circle><circle r="25" cx="420.0000000696763" cy="279.0726825192189"></circle><circle r="25" cx="81.66666669785278" cy="303.2316843235828"></circle><circle r="25" cx="81.66666671205202" cy="303.2316843965384"></circle><circle r="25" cx="93.33333336708368" cy="296.3330915654051"></circle><circle r="25" cx="93.33333342939956" cy="296.33309159613515"></circle><circle r="25" cx="105.00000006925471" cy="288.0882054819742"></circle><circle r="25" cx="105.00000004101922" cy="288.0882055079929"></circle><circle r="25" cx="116.66666670015232" cy="287.39184686570604"></circle><circle r="25" cx="116.6666667618596" cy="287.3918468298346"></circle><circle r="25" cx="128.33333337537644" cy="285.25634705364297"></circle><circle r="25" cx="128.33333338534774" cy="285.25634704363137"></circle><circle r="25" cx="140.00000005117306" cy="283.37153637697736"></circle><circle r="25" cx="140.0000000758582" cy="283.37153636257085"></circle><circle r="25" cx="151.66666671233202" cy="281.5238648357955"></circle><circle r="25" cx="151.66666675448693" cy="281.52386487778824"></circle><circle r="25" cx="163.33333335188956" cy="282.099521346024"></circle><circle r="25" cx="163.33333342203247" cy="282.0995213005178"></circle><circle r="25" cx="175.0000000296482" cy="282.3594952032708"></circle><circle r="25" cx="175.00000003153605" cy="282.35949523957345"></circle><circle r="25" cx="186.66666672711798" cy="281.10604966987194"></circle><circle r="25" cx="186.66666666862798" cy="281.106049682899"></circle><circle r="25" cx="198.3333333857032" cy="281.57028874271725"></circle><circle r="25" cx="198.33333343242123" cy="281.5702887588603"></circle><circle r="25" cx="210.00000005712235" cy="282.5080516597767"></circle><circle r="25" cx="210.00000000586473" cy="282.50805167729004"></circle><circle r="25" cx="221.66666673653626" cy="283.82649067962484"></circle><circle r="25" cx="221.66666666915543" cy="283.82649072425914"></circle><circle r="25" cx="233.3333333865113" cy="281.61671260858026"></circle><circle r="25" cx="233.33333336002426" cy="281.6167126402787"></circle><circle r="25" cx="245.00000004531373" cy="279.211954249923"></circle><circle r="25" cx="245.00000009080674" cy="279.2119542247527"></circle><circle r="25" cx="256.6666667386921" cy="276.6493544387193"></circle><circle r="25" cx="256.66666669504843" cy="276.6493544390546"></circle><circle r="25" cx="268.33333340225926" cy="271.4220223737621"></circle><circle r="25" cx="268.33333341993864" cy="271.42202242607283"></circle><circle r="25" cx="280.00000004402517" cy="267.28100980785905"></circle><circle r="25" cx="280.0000000922908" cy="267.28100972807766"></circle><circle r="25" cx="291.666666700893" cy="266.14826644450864"></circle><circle r="25" cx="291.6666667023187" cy="266.14826636214553"></circle><circle r="25" cx="303.3333333759237" cy="263.79921660160227"></circle><circle r="25" cx="303.3333333634597" cy="263.7992166593906"></circle><circle r="25" cx="315.0000000733967" cy="255.27578708292174"></circle><circle r="25" cx="315.0000000999542" cy="255.27578709193187"></circle><circle r="25" cx="326.66666672990436" cy="243.47482961726365"></circle><circle r="25" cx="326.66666669744944" cy="243.47482955067517"></circle><circle r="25" cx="338.33333337661975" cy="238.86029310360027"></circle><circle r="25" cx="338.3333334280946" cy="238.86029309058975"></circle><circle r="25" cx="350.0000000450493" cy="235.65704341312244"></circle><circle r="25" cx="350.0000000593365" cy="235.6570434031319"></circle><circle r="25" cx="361.6666667115106" cy="231.7017264069896"></circle><circle r="25" cx="361.6666666900332" cy="231.70172647909556"></circle><circle r="25" cx="373.33333341129133" cy="233.57725237716292"></circle><circle r="25" cx="373.3333333482652" cy="233.5772523112767"></circle><circle r="25" cx="385.00000007435943" cy="236.520528074335"></circle><circle r="25" cx="385.0000000835258" cy="236.52052812990172"></circle><circle r="25" cx="396.6666667150177" cy="233.5958219241581"></circle><circle r="25" cx="396.6666667443456" cy="233.59582190198654"></circle><circle r="25" cx="408.3333333755815" cy="235.6013347157241"></circle><circle r="25" cx="408.33333337549254" cy="235.6013347130717"></circle><circle r="25" cx="420.00000009946854" cy="235.93558683274114"></circle><circle r="25" cx="420.0000000193457" cy="235.93558692075965"></circle><circle r="25" cx="81.66666674291064" cy="294.671115722232"></circle><circle r="25" cx="81.66666675254987" cy="294.6711157141291"></circle><circle r="25" cx="93.33333340777902" cy="288.7659945475854"></circle><circle r="25" cx="93.33333338553076" cy="288.76599452048316"></circle><circle r="25" cx="105.0000000126094" cy="285.71130135767106"></circle><circle r="25" cx="105.00000006339926" cy="285.711301409824"></circle><circle r="25" cx="116.66666676290176" cy="287.40113160880685"></circle><circle r="25" cx="116.66666670605242" cy="287.40113159175155"></circle><circle r="25" cx="128.33333335996238" cy="286.3426664805803"></circle><circle r="25" cx="128.33333338148674" cy="286.3426665587113"></circle><circle r="25" cx="140.00000005786933" cy="281.15247352468435"></circle><circle r="25" cx="140.0000000896487" cy="281.1524735854179"></circle><circle r="25" cx="151.66666668162935" cy="284.0586102523847"></circle><circle r="25" cx="151.66666672864332" cy="284.0586102415139"></circle><circle r="25" cx="163.3333333881193" cy="275.14521988031385"></circle><circle r="25" cx="163.33333340603156" cy="275.1452198485353"></circle><circle r="25" cx="175.00000002111497" cy="263.4928188962484"></circle><circle r="25" cx="175.00000000950126" cy="263.49281881490066"></circle><circle r="25" cx="186.6666666747321" cy="258.9154214444677"></circle><circle r="25" cx="186.66666668481324" cy="258.9154215106183"></circle><circle r="25" cx="198.33333333699184" cy="264.65341657366645"></circle><circle r="25" cx="198.33333339697927" cy="264.65341656336375"></circle><circle r="25" cx="210.00000002184964" cy="262.7686058853755"></circle><circle r="25" cx="210.00000007912834" cy="262.7686059155551"></circle><circle r="25" cx="221.66666671342313" cy="262.4250689438212"></circle><circle r="25" cx="221.66666674284912" cy="262.4250689636347"></circle><circle r="25" cx="233.33333335569327" cy="262.41578417087385"></circle><circle r="25" cx="233.3333333490426" cy="262.4157841722819"></circle><circle r="25" cx="245.0000000070838" cy="265.4054838449573"></circle><circle r="25" cx="245.0000000924302" cy="265.40548384485686"></circle><circle r="25" cx="256.6666666668129" cy="262.88930801291133"></circle><circle r="25" cx="256.6666667233351" cy="262.88930802460277"></circle><circle r="25" cx="268.33333339940674" cy="256.4363848263123"></circle><circle r="25" cx="268.3333333816125" cy="256.4363848293174"></circle><circle r="25" cx="280.000000013718" cy="248.80429426585803"></circle><circle r="25" cx="280.0000000192431" cy="248.80429427521494"></circle><circle r="25" cx="291.66666668854106" cy="247.48585531169792"></circle><circle r="25" cx="291.6666666692713" cy="247.48585530421553"></circle><circle r="25" cx="303.3333334137676" cy="248.13578997503475"></circle><circle r="25" cx="303.3333333939263" cy="248.1357900292091"></circle><circle r="25" cx="315.00000002686176" cy="240.3551429395359"></circle><circle r="25" cx="315.00000009855256" cy="240.35514290135131"></circle><circle r="25" cx="326.6666667072356" cy="240.42942120347251"></circle><circle r="25" cx="326.6666667523307" cy="240.42942116712115"></circle><circle r="25" cx="338.3333333951243" cy="241.8964167408732"></circle><circle r="25" cx="338.33333336868316" cy="241.89641671196762"></circle><circle r="25" cx="350.0000000483877" cy="240.89366027105217"></circle><circle r="25" cx="350.00000004464505" cy="240.89366027923006"></circle><circle r="25" cx="361.6666667449286" cy="233.42869583277002"></circle><circle r="25" cx="361.6666667019677" cy="233.42869584658183"></circle><circle r="25" cx="373.3333333917881" cy="231.43246775390028"></circle><circle r="25" cx="373.33333335539055" cy="231.4324678100928"></circle><circle r="25" cx="385.00000005410175" cy="229.68692884403245"></circle><circle r="25" cx="385.0000000678226" cy="229.68692882459547"></circle><circle r="25" cx="396.6666666955467" cy="231.19106349761273"></circle><circle r="25" cx="396.6666666868212" cy="231.19106339832095"></circle><circle r="25" cx="408.33333341646994" cy="231.831713374384"></circle><circle r="25" cx="408.33333341553146" cy="231.8317133661276"></circle><circle r="25" cx="420.00000001669156" cy="232.15668072168828"></circle><circle r="25" cx="420.00000002369876" cy="232.1566807817299"></circle><circle r="25" cx="81.66666671859915" cy="310.89162924379644"></circle><circle r="25" cx="93.33333333882564" cy="308.21761209952"></circle><circle r="25" cx="105.00000003421412" cy="306.3235166841376"></circle><circle r="25" cx="116.66666674400162" cy="304.9772233328326"></circle><circle r="25" cx="128.33333340225306" cy="305.13506459182514"></circle><circle r="25" cx="140.00000001164665" cy="302.03394756069736"></circle><circle r="25" cx="151.66666668572142" cy="297.2708545487596"></circle><circle r="25" cx="163.33333342716486" cy="302.8324387926959"></circle><circle r="25" cx="175.00000003520117" cy="307.5862470060559"></circle><circle r="25" cx="186.66666671943835" cy="308.45901647895766"></circle><circle r="25" cx="198.33333338026395" cy="308.93254032842685"></circle><circle r="25" cx="210.00000000138107" cy="309.24822285206767"></circle><circle r="25" cx="221.66666670357768" cy="310.213840210439"></circle><circle r="25" cx="233.33333333756025" cy="310.86377487394105"></circle><circle r="25" cx="245.00000000836621" cy="310.9380531241435"></circle><circle r="25" cx="256.66666672762994" cy="310.27883364998695"></circle><circle r="25" cx="268.33333334778916" cy="309.7124619491879"></circle><circle r="25" cx="280.00000002184856" cy="308.05977080160534"></circle><circle r="25" cx="291.6666666945317" cy="305.7571450243119"></circle><circle r="25" cx="303.33333339801516" cy="305.07935588338916"></circle><circle r="25" cx="315.00000007518315" cy="303.3988104429006"></circle><circle r="25" cx="326.666666747028" cy="303.398810400871"></circle><circle r="25" cx="338.3333333357014" cy="301.8853910505595"></circle><circle r="25" cx="350.0000000446205" cy="301.0868997678989"></circle><circle r="25" cx="361.6666667618324" cy="299.90773250197344"></circle><circle r="25" cx="373.3333333595767" cy="296.82518502013244"></circle><circle r="25" cx="385.00000009624557" cy="297.7258087992086"></circle><circle r="25" cx="396.66666675901206" cy="300.5576672750394"></circle><circle r="25" cx="408.3333334146158" cy="300.6876541781543"></circle><circle r="25" cx="420.00000007301577" cy="301.8853910437442"></circle><circle r="25" cx="81.66666673642139" cy="282.0809517737916"></circle><circle r="25" cx="93.33333342341568" cy="263.37211673770923"></circle><circle r="25" cx="105.00000006434236" cy="254.72798492058996"></circle><circle r="25" cx="116.66666669289563" cy="247.12374882973114"></circle><circle r="25" cx="128.33333334147255" cy="245.70317721035596"></circle><circle r="25" cx="140.00000007062866" cy="236.63194550157786"></circle><circle r="25" cx="151.66666671608078" cy="232.30523724636862"></circle><circle r="25" cx="163.33333342343292" cy="235.7406065030894"></circle><circle r="25" cx="175.0000000097666" cy="249.75134204029627"></circle><circle r="25" cx="186.6666666707415" cy="246.63165538573548"></circle><circle r="25" cx="198.33333339468084" cy="253.99448726002544"></circle><circle r="25" cx="210.00000004531398" cy="246.4923835891922"></circle><circle r="25" cx="221.6666667026636" cy="249.71420281622005"></circle><circle r="25" cx="233.33333335668982" cy="249.95560723066274"></circle><circle r="25" cx="245.00000003561547" cy="253.39097639907038"></circle><circle r="25" cx="256.6666667254486" cy="252.17466999698863"></circle><circle r="25" cx="268.3333334184142" cy="247.699405196826"></circle><circle r="25" cx="280.0000000348543" cy="242.26780794183796"></circle><circle r="25" cx="291.666666744018" cy="244.94182506346525"></circle><circle r="25" cx="303.333333398736" cy="244.45901640198304"></circle><circle r="25" cx="315.0000000004004" cy="241.07007109699867"></circle><circle r="25" cx="326.6666667657282" cy="242.23995363180467"></circle><circle r="25" cx="338.33333336400443" cy="239.705208280636"></circle><circle r="25" cx="350.0000000339345" cy="240.1415929778305"></circle><circle r="25" cx="361.66666675531536" cy="237.97823882251123"></circle><circle r="25" cx="373.33333341716474" cy="237.85753669910025"></circle><circle r="25" cx="385.00000006283904" cy="238.6653126372168"></circle><circle r="25" cx="396.66666667314047" cy="234.7285652156103"></circle><circle r="25" cx="408.33333333451026" cy="235.8798781499283"></circle><circle r="25" cx="420.0000000317391" cy="240.4201364149325"></circle><circle r="25" cx="93.33333339429053" cy="273.47395913449304"></circle><circle r="25" cx="105.00000008553508" cy="262.7778906162631"></circle><circle r="25" cx="116.6666667149378" cy="254.0316262901022"></circle><circle r="25" cx="128.3333333660956" cy="256.51994777530155"></circle><circle r="25" cx="140.00000002571318" cy="252.17467005354735"></circle><circle r="25" cx="151.6666666874912" cy="249.69563332898937"></circle><circle r="25" cx="163.33333342832873" cy="251.283330998805"></circle><circle r="25" cx="175.00000002484614" cy="247.77368354124465"></circle><circle r="25" cx="186.6666667399445" cy="253.21456551657587"></circle><circle r="25" cx="198.33333335508738" cy="249.2035398325523"></circle><circle r="25" cx="210.0000000635105" cy="250.3548528394687"></circle><circle r="25" cx="221.6666667204297" cy="251.23690707555014"></circle><circle r="25" cx="233.33333342577023" cy="249.47279853506691"></circle><circle r="25" cx="245.0000000161381" cy="246.7523575388037"></circle><circle r="25" cx="256.66666676639096" cy="246.78949663169774"></circle><circle r="25" cx="268.3333333445132" cy="241.3671841610364"></circle><circle r="25" cx="280.00000007838133" cy="240.234440742009"></circle><circle r="25" cx="291.6666667664543" cy="239.0645582972565"></circle><circle r="25" cx="303.3333334139535" cy="234.5335848850699"></circle><circle r="25" cx="315.0000000753136" cy="232.44450893642977"></circle><circle r="25" cx="326.66666673132613" cy="227.65356159206937"></circle><circle r="25" cx="338.33333342580005" cy="222.23124914317907"></circle><circle r="25" cx="350.0000000271378" cy="220.30001451494581"></circle><circle r="25" cx="361.66666672593425" cy="218.16451480506643"></circle><circle r="25" cx="373.3333334250016" cy="220.37429284194553"></circle><circle r="25" cx="385.0000000871393" cy="221.53489049567443"></circle><circle r="25" cx="396.6666666939698" cy="220.04932547503296"></circle><circle r="25" cx="408.3333334189671" cy="218.90729732882576"></circle><circle r="25" cx="420.0000000061574" cy="221.5070361523585"></circle><circle r="25" cx="93.33333336355541" cy="267.31814884925063"></circle><circle r="25" cx="105.00000007802942" cy="254.02234156710867"></circle><circle r="25" cx="116.6666667009959" cy="248.93428122754386"></circle><circle r="25" cx="128.3333333856606" cy="248.0429421903885"></circle><circle r="25" cx="140.0000000409031" cy="244.19904260343952"></circle><circle r="25" cx="151.66666674668792" cy="243.23342530369973"></circle><circle r="25" cx="163.33333339967413" cy="242.509212290677"></circle><circle r="25" cx="175.0000000681628" cy="242.11925149777147"></circle><circle r="25" cx="186.66666673343462" cy="241.7292906325026"></circle><circle r="25" cx="198.33333338786315" cy="240.89366030260524"></circle><circle r="25" cx="210.00000003112999" cy="242.53706667197153"></circle><circle r="25" cx="221.66666673607332" cy="243.14057741259097"></circle><circle r="25" cx="233.33333337318638" cy="242.50921229637936"></circle><circle r="25" cx="245.00000007171263" cy="241.7849993514608"></circle><circle r="25" cx="256.6666667053347" cy="240.32728864611533"></circle><circle r="25" cx="268.3333333895433" cy="235.61061953916436"></circle><circle r="25" cx="280.00000008600523" cy="234.62643269572658"></circle><circle r="25" cx="291.6666667180953" cy="234.83998266470425"></circle><circle r="25" cx="303.333333407369" cy="233.4565502062518"></circle><circle r="25" cx="315.0000000856944" cy="233.55868279568804"></circle><circle r="25" cx="326.66666676079603" cy="233.9486436071874"></circle><circle r="25" cx="338.3333333604841" cy="229.27839840434305"></circle><circle r="25" cx="350.0000000117336" cy="229.8169157562874"></circle><circle r="25" cx="361.6666667120734" cy="225.3973597150928"></circle><circle r="25" cx="373.33333339489644" cy="229.97475700333433"></circle><circle r="25" cx="385.00000004337807" cy="228.97200058092696"></circle><circle r="25" cx="396.66666668586726" cy="227.55142906452247"></circle><circle r="25" cx="408.33333337842527" cy="230.20687655823443"></circle><circle r="25" cx="420.00000009020226" cy="229.9097635533695"></circle><circle r="25" cx="93.33333343179717" cy="295.6924416101686"></circle><circle r="25" cx="105.00000003791749" cy="292.6470332585295"></circle><circle r="25" cx="116.66666672388737" cy="290.65080525955506"></circle><circle r="25" cx="128.3333333952721" cy="289.26737277377856"></circle><circle r="25" cx="140.00000001851367" cy="286.2219643309634"></circle><circle r="25" cx="151.66666670876089" cy="284.7735384124899"></circle><circle r="25" cx="163.3333334331369" cy="287.5404033697737"></circle><circle r="25" cx="175.00000004418652" cy="288.30175550192723"></circle><circle r="25" cx="186.66666668530777" cy="285.9341360886789"></circle><circle r="25" cx="198.33333333879833" cy="286.1105469530634"></circle><circle r="25" cx="210.0000000140885" cy="288.07892066459016"></circle><circle r="25" cx="221.66666671851985" cy="288.6081532036033"></circle><circle r="25" cx="233.33333339336352" cy="288.84955755714344"></circle><circle r="25" cx="245.00000000765897" cy="287.41041645476594"></circle><circle r="25" cx="256.6666667653428" cy="288.14391416055577"></circle><circle r="25" cx="268.33333335335544" cy="287.02974040824495"></circle><circle r="25" cx="280.0000000320671" cy="286.6212100046212"></circle><circle r="25" cx="291.6666666899605" cy="284.97780365578564"></circle><circle r="25" cx="303.33333340554276" cy="286.6490643233089"></circle><circle r="25" cx="315.00000004445684" cy="282.74017125372"></circle><circle r="25" cx="326.66666668713634" cy="269.60220522175143"></circle><circle r="25" cx="338.3333334183659" cy="268.20948792118713"></circle><circle r="25" cx="350.0000000088181" cy="267.6152619589847"></circle><circle r="25" cx="361.6666667049472" cy="265.99042507960746"></circle><circle r="25" cx="373.33333340015804" cy="264.77411871692345"></circle><circle r="25" cx="385.00000001651756" cy="265.74902084380943"></circle><circle r="25" cx="396.6666667594569" cy="265.4426229855202"></circle><circle r="25" cx="408.3333334000822" cy="265.572609970927"></circle><circle r="25" cx="420.00000008227926" cy="265.6190338038613"></circle><circle r="25" cx="93.33333334700998" cy="294.79181787300126"></circle><circle r="25" cx="105.00000004375279" cy="290.87363998846365"></circle><circle r="25" cx="116.66666673686126" cy="286.26838822598444"></circle><circle r="25" cx="128.3333333361257" cy="283.195125537514"></circle><circle r="25" cx="140.00000009720736" cy="279.29551723079356"></circle><circle r="25" cx="151.66666668564903" cy="278.2091977919485"></circle><circle r="25" cx="163.33333342991594" cy="280.20542588346916"></circle><circle r="25" cx="175.0000000243735" cy="283.6315102950374"></circle><circle r="25" cx="186.66666674962323" cy="283.70578849503937"></circle><circle r="25" cx="198.33333335233544" cy="283.5386624169"></circle><circle r="25" cx="210.00000000648254" cy="283.68721898858973"></circle><circle r="25" cx="221.66666673188334" cy="284.5785580224811"></circle><circle r="25" cx="233.3333333837798" cy="285.33062532332036"></circle><circle r="25" cx="245.00000003629373" cy="284.1700276416383"></circle><circle r="25" cx="256.6666667452057" cy="283.6965037701024"></circle><circle r="25" cx="268.33333342223864" cy="281.5517191904727"></circle><circle r="25" cx="280.00000009835384" cy="278.7941390117259"></circle><circle r="25" cx="291.66666669536386" cy="276.194400134954"></circle><circle r="25" cx="303.3333333898195" cy="274.6809807345475"></circle><circle r="25" cx="315.0000000946115" cy="272.7311765930776"></circle><circle r="25" cx="326.66666671754086" cy="272.4154940262542"></circle><circle r="25" cx="338.3333334184176" cy="272.64761358048423"></circle><circle r="25" cx="350.0000000682592" cy="271.19918760174517"></circle><circle r="25" cx="361.6666667110108" cy="270.3635572520271"></circle><circle r="25" cx="373.33333337542547" cy="267.7545335977077"></circle><circle r="25" cx="385.00000008720053" cy="268.2466270216783"></circle><circle r="25" cx="396.6666667447801" cy="265.5354708435134"></circle><circle r="25" cx="408.33333336294135" cy="264.198462236475"></circle><circle r="25" cx="420.00000004177326" cy="262.239373342532"></circle><circle r="25" cx="93.33333339355838" cy="300.130567315303"></circle><circle r="25" cx="105.0000000076763" cy="294.021180911631"></circle><circle r="25" cx="116.66666669259178" cy="288.7010010385036"></circle><circle r="25" cx="128.33333336511194" cy="287.1597273223729"></circle><circle r="25" cx="140.00000000878276" cy="283.1765559728281"></circle><circle r="25" cx="151.66666672517758" cy="283.3808211678529"></circle><circle r="25" cx="163.33333342623064" cy="284.10503413844805"></circle><circle r="25" cx="175.00000000931638" cy="285.3213405612764"></circle><circle r="25" cx="186.66666670824355" cy="285.9898447980431"></circle><circle r="25" cx="198.3333333349661" cy="287.0390251430342"></circle><circle r="25" cx="210.00000009826994" cy="288.03249675007714"></circle><circle r="25" cx="221.66666676206214" cy="288.5617293645077"></circle><circle r="25" cx="233.33333338639108" cy="289.00739883645247"></circle><circle r="25" cx="245.00000006769196" cy="287.0854490828605"></circle><circle r="25" cx="256.66666668011703" cy="287.1040185778578"></circle><circle r="25" cx="268.3333333625625" cy="284.3092993760506"></circle><circle r="25" cx="280.00000009609977" cy="283.6500798678512"></circle><circle r="25" cx="291.6666667364636" cy="282.91658209632305"></circle><circle r="25" cx="303.33333334498286" cy="281.8766865326373"></circle><circle r="25" cx="315.0000000503113" cy="281.3474539618992"></circle><circle r="25" cx="326.66666673622194" cy="280.66038016322204"></circle><circle r="25" cx="338.3333333602512" cy="279.47192806606995"></circle><circle r="25" cx="350.00000000067615" cy="277.5499783327936"></circle><circle r="25" cx="361.66666669125317" cy="276.02727406635273"></circle><circle r="25" cx="373.3333333687537" cy="274.6902655189814"></circle><circle r="25" cx="385.0000000773877" cy="274.25388083559716"></circle><circle r="25" cx="396.66666668173355" cy="275.3216307132231"></circle><circle r="25" cx="408.3333334256494" cy="275.117365515007"></circle><circle r="25" cx="420.000000038603" cy="274.5045698616026"></circle><circle r="25" cx="93.33333337071802" cy="282.3966343030015"></circle><circle r="25" cx="105.00000007407596" cy="265.9068621219212"></circle><circle r="25" cx="116.66666674064096" cy="252.04468307064914"></circle><circle r="25" cx="128.33333337380483" cy="244.38473814642504"></circle><circle r="25" cx="140.000000076378" cy="235.92630214025354"></circle><circle r="25" cx="151.6666667123912" cy="235.4527782193229"></circle><circle r="25" cx="163.33333336396115" cy="238.80458438432274"></circle><circle r="25" cx="175.00000008608805" cy="241.710721077019"></circle><circle r="25" cx="186.6666667086064" cy="242.7041927307762"></circle><circle r="25" cx="198.33333340119793" cy="242.74133188381822"></circle><circle r="25" cx="210.0000000155722" cy="236.30697817651023"></circle><circle r="25" cx="221.66666669516303" cy="236.22341506060076"></circle><circle r="25" cx="233.33333340269414" cy="237.58827803079663"></circle><circle r="25" cx="245.0000000631861" cy="235.83345427524537"></circle><circle r="25" cx="256.66666667105585" cy="235.40635430854604"></circle><circle r="25" cx="268.33333342136075" cy="229.3155375282441"></circle><circle r="25" cx="280.0000000525834" cy="221.25634710311965"></circle><circle r="25" cx="291.6666666851031" cy="217.40316264708696"></circle><circle r="25" cx="303.333333362728" cy="205.89003345562628"></circle><circle r="25" cx="315.0000000077415" cy="198.36936031117568"></circle><circle r="25" cx="326.6666666978248" cy="195.9553170724841"></circle><circle r="25" cx="338.3333333920883" cy="190.9972436376486"></circle><circle r="25" cx="350.0000000984122" cy="185.9370376505165"></circle><circle r="25" cx="361.6666667350901" cy="186.39199194427664"></circle><circle r="25" cx="373.3333333874534" cy="189.01958508646473"></circle><circle r="25" cx="385.0000000284923" cy="190.52371981222697"></circle><circle r="25" cx="396.66666668345886" cy="191.35006534780067"></circle><circle r="25" cx="408.3333333757097" cy="191.22007838255374"></circle><circle r="25" cx="420.0000000099348" cy="195.17539534070087"></circle><circle r="25" cx="93.33333341307505" cy="281.67242132882853"></circle><circle r="25" cx="105.00000006407657" cy="275.3866241146627"></circle><circle r="25" cx="116.66666667395016" cy="277.1507326410479"></circle><circle r="25" cx="128.33333343228938" cy="267.4109967216189"></circle><circle r="25" cx="140.00000002307684" cy="266.37110119100157"></circle><circle r="25" cx="151.6666667548514" cy="268.0887857951819"></circle><circle r="25" cx="163.33333335363844" cy="268.11664008585825"></circle><circle r="25" cx="175.0000000813716" cy="270.6513854788923"></circle><circle r="25" cx="186.66666675092492" cy="271.719135421795"></circle><circle r="25" cx="198.33333343137403" cy="271.6262876041361"></circle><circle r="25" cx="210.00000007648075" cy="275.3866241658388"></circle><circle r="25" cx="221.66666668880367" cy="271.9234005769897"></circle><circle r="25" cx="233.33333339978185" cy="269.36080086699025"></circle><circle r="25" cx="245.00000004302433" cy="267.8938053417276"></circle><circle r="25" cx="256.6666667141507" cy="267.38314236047364"></circle><circle r="25" cx="268.33333342195255" cy="264.60699260379374"></circle><circle r="25" cx="280.00000005916587" cy="262.9635862822826"></circle><circle r="25" cx="291.6666667192197" cy="261.95154508232895"></circle><circle r="25" cx="303.3333333911817" cy="263.3349775156382"></circle><circle r="25" cx="315.0000000177768" cy="259.5467866058093"></circle><circle r="25" cx="326.66666670296723" cy="257.9126650988079"></circle><circle r="25" cx="338.3333333908504" c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment