{"report_id":"bfbcc9c8-5184-4b5d-b2f6-655deb477032","version":0,"status":"done","tags":[],"date":"2026-07-27T00:16:07Z","url":{"schema":"http","addr":"ledger.check-tx.com","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"104.21.65.36","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"ledger.check-tx.com/","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"title":"...","dom":{"size":140101,"mime_type":"text/html; charset=utf-8","magic":"HTML document, ASCII text, with very long lines (754)","md5":"f1d0761205b4672f19e71fd9518c3be8","sha1":"f2a704070cdec499c125ecc2d92219dfc586809b","sha256":"effa397823601dc2366f7b7625aab16307d0e3dc0e8cf9cd17bbbe8620064063","sha512":"ac0fe035493500d1d8d8512cceda1699bd94dfdb0187a1b83a7ef80145a6d9c51645eb4f004a5d9e075e26ec8360ea08a8d7e0a9b57302ebd39897db6c7061b7","ssdeep":"384:2Q2nuHuAJlcuA6wlJKBA/sjuVuGkx0naGbM7xIYW2Mt/xgOKIxg6Vkhxn9E9wb8g:7wV4ESE5uGkRJ/+W9EAJO5VgSJ6JV/y+","tlshash":"c0d37333be90950c364d837567b16223bb29ca92ff953675f00d33b43b159a8acb0799","dom_hash":"domhash5ddc8e7d8a02cb041feb99b66e2f4116","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"http","addr":"ledger.check-tx.com","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"104.21.65.36","port":0,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-31T00:16:07Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"qguvgzjxzsgb3vs"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":2}},"detection":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null},"summary":[{"fqdn":"ledger.check-tx.com","ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"domain_registered":"2026-07-23","domain_rank":0,"first_seen":"2026-07-27T00:12:35.395816Z","last_seen":"2026-07-27T00:12:35.395816Z","alert_count":10,"request_count":5,"received_data":250665,"sent_data":2404,"comment":"","tags":null,"fingerprints":[{"name":"jQuery","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}]}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":null,"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"ledger.check-tx.com/mdata/includes/jquery.js","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"b83db83a1d89113ee03ab730efa48c7a","sha1":"2fccdd3e43db21bbc8448ed6d6311c4a6eea1166","sha256":"99e691fae5e88eb36bafb24758b35f0f990708295f8f2abe2221891e328f776a","sha512":"10d6f09a04eb135eae12c890be0512ead801e213614505937d1e782d5a6af86550395470ea31b3aebd85695f07a8fe903eda4941e52bcb7278cce02eacb13800","ssdeep":"1536:3RUX9uDgwxcy2KVBNwchN6SLaHEk2BSrBESp+a/IEk4aAocVi8SMBQ47GK7:vHNwcv9VBQpLl88SMBQ47GK7","tlshash":"1083f8df77ca702247ab30b9006f550bf276199d684d4400f159d8e9bcb8a4a827bf7e","size":87533,"data":"","first_seen":"2023-10-23T00:47:02Z","last_seen":"2026-07-27T03:32:18.849994Z","times_seen":9745,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"ledger.check-tx.com/mdata/app.js","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"a5429e2d006674cd724d683f802c416a","sha1":"18d4ef490f4b7137dfbe22926837fd3f5aad9c21","sha256":"7af786aad74f9e6fd9a37786416cd41aa1de6e6d2d8699db04ce1df58c4a0128","sha512":"e17d71e0a67e3758a010f9dc50d33a5f66ffab02e398a1afac8eb00da8e00cc047a91bd892cb791ab2bc755665f57bb756d68cdc5c7f4b93b6ce4edc31a300ea","ssdeep":"192:F3oFqH7LdJNF7EYMcDnItImx/dDz0HAVWm1M2ZixpdQR7F/Cf3Kv:FYE7Lqrf2J2Zixpa7FKE","tlshash":"23626f5e720b21358a733724673f680aef7ad173a40e9260b9ad87542f70c16825defc","size":15723,"data":"","first_seen":"2025-12-24T07:20:03.451001Z","last_seen":"2026-07-27T00:25:29.527954Z","times_seen":8,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"Mesa","filename":"https://ledger.check-tx.com/mdata/app.js","line_number":407,"column_number":9},{"level":"log","text":"llvmpipe, or similar","filename":"https://ledger.check-tx.com/mdata/app.js","line_number":408,"column_number":9},{"level":"log","text":"Virtual Machine / RDP","filename":"https://ledger.check-tx.com/mdata/app.js","line_number":424,"column_number":16}]},"http":[{"url":{"schema":"https","addr":"ledger.check-tx.com/","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-27T00:15:41.086Z","timestamp":1785111341086,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"check-tx.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 23 Jul 2026 21:07:30 GMT","end":"Wed, 21 Oct 2026 22:06:09 GMT"},"fingerprint":{"sha1":"EB:F6:2D:66:78:A5:5A:C3:27:22:EB:DA:C8:D0:A7:2C:DB:48:8C:6E","sha256":"53:D9:1D:E3:A1:35:12:6B:ED:56:5B:4A:64:70:27:D5:EA:DD:5C:E5:B0:9D:FE:22:82:52:D2:E0:E7:5B:2A:34"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: ledger.check-tx.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\r\nSec-Fetch-Site: none\r\nPriority: u=0, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/html; charset=UTF-8\r\npriority: u=0,i\r\nvary: Accept-Encoding\r\ndate: Mon, 27 Jul 2026 00:15:41 GMT\r\nserver: cloudflare\r\nx-turbo-charged-by: LiteSpeed\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=sySujeNPlhSIa35LvHYtVOeG%2FnqQ4Cwz%2Btf94hA%2Ff5q1guHRFltxnZ%2Fex5KS33belytOM9PgW2jxsKhuDRLVTDbIuWFrkfICW9En%2FjXp%2FEUVHEb0K%2BOCTLYHd0WUGDdl9FxmRj%2Ff\"}]}\r\ncontent-encoding: zstd\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncf-ray: a2177379e86023eb-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"jQuery","description":"jQuery is a JavaScript library which is a free, open-source software designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animation, and Ajax.","website":"https://jquery.com","common_platform_enumeration":"cpe:2.3:a:jquery:jquery:*:*:*:*:*:*:*:*","icon":"jQuery.svg","categories":["JavaScript libraries"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":141326,"size_decoded":14283,"mime_type":"text/html; charset=UTF-8","magic":"HTML document, ASCII text, with very long lines (754), with CRLF line terminators","md5":"ac66cad6b5d682264ce6435fd1a3e7e5","sha1":"80829122a6235bd831e94c4949e00cf5345a3d3e","sha256":"be941c784c948f2cfe28c3d4e3f171f22a592c547d1bc54e3719f5bad35f4d9b","sha512":"9e64cda2aefeb1e267b68a603a1b7976b70c0a25043974fbe725c53cf4c4d4709b7244c4134e99f3d9127886064667a3f1cde5144a558973b0c0bb6e893ff53a","ssdeep":"384:0Q2kumuAQlnuAXwyJKXA/sjuOuGkxtnaGkMLxuYWdM6+xght/xghVkhvn939wcdq:3+5O3SviBYKuJf6M+u7JG2Dr3JmJrNo","tlshash":"41d36433ba50851c366d837567716223fb29ca92ff963675f00d23b43b31898acb1799","first_seen":"2026-07-27T00:16:08.293993Z","last_seen":"2026-07-27T00:16:08.293993Z","times_seen":1,"resource_available":false,"data":"DQoNCg0KPCFkb2N0eXBlIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQogIDxoZWFkPg0KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4NCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPg0KICAgICAgICANCg0KICAgIDx0aXRsZT4uLi48L3RpdGxlPg0KICA8L2hlYWQ+DQoNCg0KDQo8Ym9keT4NCg0KPHN0eWxlPg0KYm9keSB7b3ZlcmZsb3c6IGhpZGRlbiA7IC8qIEhpZGUgc2Nyb2xsYmFycyAqL30gDQppbWd7d2lkdGg6MXB4fQ0KYXt0ZXh0LWRlY29yYXRpb246bm9uZX0NCjwvc3R5bGU+DQoNCg0KPGRpdj4NCjxhIGhyZWY9Im1kYXRhL2luZGV4LnBocCIgc3R5bGU9IiI+DQo8aW1nIHNyYz0ibWRhdGEvZGF0YS5wbmciIGFsdD0iIj4gIA0KPC9hPiAgDQo8YSBocmVmPSJtZGF0YS9pbmRleC5waHAiPg0KPGltZyBzcmM9Im1kYXRhL2RhdGEucG5nIiBhbHQ9IiI+ICANCjwvYT4gIA0KPGEgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj4NCjxpbWcgc3JjPSJtZGF0YS9kYXRhLnBuZyIgYWx0PSIiPiAgDQo8L2E+ICANCjxhIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+DQo8aW1nIHNyYz0ibWRhdGEvZGF0YS5wbmciIGFsdD0iIj4gIA0KPC9hPiAgDQo8YSBocmVmPSJtZGF0YS9pbmRleC5waHAiPg0KPGltZyBzcmM9Im1kYXRhL2RhdGEucG5nIiBhbHQ9IiI+ICANCjwvYT4gIA0KPGEgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj4NCjxpbWcgc3JjPSJtZGF0YS9kYXRhLnBuZyIgYWx0PSIiPiAgDQo8L2E+ICANCjxhIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+DQo8aW1nIHNyYz0ibWRhdGEvZGF0YS5wbmciIGFsdD0iIj4gIA0KPC9hPiAgDQo8YSBocmVmPSJtZGF0YS9pbmRleC5waHAiPg0KPGltZyBzcmM9Im1kYXRhL2RhdGEucG5nIiBhbHQ9IiI+ICANCjwvYT4gIA0KPGEgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj4NCjxpbWcgc3JjPSJtZGF0YS9kYXRhLnBuZyIgYWx0PSIiPiAgDQo8L2E+ICANCiA8YSBocmVmPSJtZGF0YS9pbmRleC5waHAiPg0KPGltZyBzcmM9Im1kYXRhL2RhdGEucG5nIiBhbHQ9IiI+ICANCjwvYT4gIA0KPGEgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj4NCjxpbWcgc3JjPSJtZGF0YS9kYXRhLnBuZyIgYWx0PSIiPiAgDQo8L2E+ICANCjxhIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+DQo8aW1nIHNyYz0ibWRhdGEvZGF0YS5wbmciIGFsdD0iIj4gIA0KPC9hPiAgDQo8L2Rpdj4NCg0KPHAgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB4OyI+DQo8L3A+DQoNCjxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MzAwMHB4Ij4NCiAgPGNhbnZhcyBpZD0iZ3B1Q2FudmFzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCI+PC9jYW52YXM+DQo8L2Rpdj4NCg0KPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5DdXBpbSBwaWNhbmhhIGJ1cmdkb2dnZW4gcG9yayBjaG9wLCBmbGFuayBib3VkaW4gdHJpLXRpcCBoYW0gaG9jayBjYXBpY29sYSBtZWF0bG9hZiBzaGFuayBwYW5jZXR0YSB0dXJkdWNrZW4gZG9uZXIgbWVhdGJhbGwuICBQcm9zY2l1dHRvIGdyb3VuZCByb3VuZCBtZWF0YmFsbCBjdXBpbSwgcmliZXllIGFsY2F0cmEgamVya3kgcnVtcCBhbmRvdWlsbGUgdGFpbC4gIERvbmVyIHNhbGFtaSBzaGFua2xlIHRhaWwgYm91ZGluIGFuZG91aWxsZSBoYW1idXJnZXIgYmFjb24gYmFsbCB0aXAgdHJpLXRpcCBicmVzYW9sYSBzaG9ydCBsb2luLiAgVHJpLXRpcCBjdXBpbSBzaGFuaywgcnVtcCBmaWxldCBtaWdub24gc3RyaXAgc3RlYWsgbWVhdGJhbGwgcHJvc2NpdXR0byBwb3JrIGJlbGx5IHQtYm9uZSBsZWJlcmthcyBwb3JrIGZyYW5rZnVydGVyLiAgQnVmZmFsbyBzaXJsb2luIGJyZXNhb2xhIGJlZWYgcmlicyBjb3JuZWQgYmVlZiwgcGlnIGFsY2F0cmEgc2FsYW1pIGtpZWxiYXNhIGhhbSBob2NrLiAgVmVuaXNvbiBwb3JjaGV0dGEga2llbGJhc2EgZmF0YmFjayBncm91bmQgcm91bmQga2V2aW4uICBCcmlza2V0IHBvcmsgbG9pbiBwb3JrIHNob3J0IGxvaW4sIGJ1cmdkb2dnZW4gYmlsdG9uZyBqb3dsIGZsYW5rIHRlbmRlcmxvaW4gdC1ib25lIHRvbmd1ZSBzYWxhbWkgYmVlZi48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgVHVyZHVja2VuIGJlZWYgcGljYW5oYSwgaGFtYnVyZ2VyIHBpZyBzaG9ydCBsb2luIGNvcm5lZCBiZWVmIHNob3VsZGVyIHRvbmd1ZSBjaGlzbGljIGRydW1zdGljayBidXJnZG9nZ2VuIGpvd2wgbGFuZGphZWdlci4gIEZhdGJhY2sgcnVtcCBjaGlja2VuIGRydW1zdGljaywgYnVmZmFsbyBidXJnZG9nZ2VuIHBvcmNoZXR0YSBmbGFuayB2ZW5pc29uIHByb3NjaXV0dG8gdG9uZ3VlIGZyYW5rZnVydGVyIGJyZXNhb2xhIHBhbmNldHRhIHNpcmxvaW4uICBUdXJkdWNrZW4gc3RyaXAgc3RlYWsgY2FwaWNvbGEgcnVtcCBzYXVzYWdlLiAgQmFjb24gcG9yayBiZWVmIGtldmluLCBzaGFuayBjaGlja2VuIGZsYW5rIHNpcmxvaW4gZmF0YmFjayBydW1wIGplcmt5LiAgUmliZXllIHNhbGFtaSBtZWF0bG9hZiBzaG91bGRlciwgam93bCBidWZmYWxvIHBvcmsgbG9pbiBjb3JuZWQgYmVlZi4gIEJlZWYga2llbGJhc2EgbGFuZGphZWdlciBiYWNvbiB0LWJvbmUuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+Sm93bCBzaG9ydCByaWJzIHNhdXNhZ2UgcG9yayBsb2luIHQtYm9uZSBtZWF0bG9hZiByaWJleWUgc3RyaXAgc3RlYWsgcG9yayBjaG9wIHRvbmd1ZSwgYWxjYXRyYSBzd2luZSBiYWNvbiB0ZW5kZXJsb2luLiAgU2hvcnQgcmlicyBiYWNvbiBwYXN0cmFtaSBjaGlzbGljIG1lYXRsb2FmIGZsYW5rIHNob3J0IGxvaW4gdG9uZ3VlIGNoaWNrZW4gcmliZXllIGJ1cmdkb2dnZW4gc2hhbmsgcG9yayBsb2luIGN1cGltIHR1cmtleS4gIFRhaWwgdHJpLXRpcCBoYW0sIHBpY2FuaGEgc2F1c2FnZSBwcm9zY2l1dHRvIGJlZWYgZHJ1bXN0aWNrIHJ1bXAgYnVyZ2RvZ2dlbiBjaHVjayBwb3JrIGNob3AgbGViZXJrYXMgY29ybmVkIGJlZWYgdmVuaXNvbi4gIEJvdWRpbiBwcm9zY2l1dHRvIHR1cmtleSBqZXJreSB0cmktdGlwIHQtYm9uZSBwb3JrIHNoYW5rbGUgbGFuZGphZWdlciBzaGFuay4gIFNob3VsZGVyIGJ1cmdkb2dnZW4gbWVhdGJhbGwsIHNhdXNhZ2Ugam93bCB0dXJrZXkga2llbGJhc2EgdGVuZGVybG9pbiBiYWNvbi48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgQnJpc2tldCBzdHJpcCBzdGVhayBjYXBpY29sYSB2ZW5pc29uIGJhY29uIGtldmluIHBvcmsgY2hvcCBwaWNhbmhhIGZhdGJhY2suICBTcGFyZSByaWJzIGN1cGltIGFsY2F0cmEgcmliZXllLCBmcmFua2Z1cnRlciB0dXJkdWNrZW4gdHJpLXRpcCBwYXN0cmFtaSBncm91bmQgcm91bmQgc2lybG9pbiB2ZW5pc29uIGFuZG91aWxsZSBkcnVtc3RpY2sgc2hhbmsuICBQb3JrIGJlbGx5IHRhaWwgc2F1c2FnZSBwb3JjaGV0dGEsIGJvdWRpbiBiaWx0b25nIHNpcmxvaW4gYmVlZiByaWJzIHNwYXJlIHJpYnMgYmFjb24gcGFzdHJhbWkgbGViZXJrYXMgcmliZXllIHR1cmR1Y2tlbi4gIERydW1zdGljayBidXJnZG9nZ2VuIHN0cmlwIHN0ZWFrLCBkb25lciBqZXJreSB0ZW5kZXJsb2luIGFsY2F0cmEgcnVtcCBjb3JuZWQgYmVlZiBzaG9ydCBsb2luIHBhc3RyYW1pIGhhbWJ1cmdlciBraWVsYmFzYSBwYW5jZXR0YSBiYWxsIHRpcC4gIEJhY29uIHNhbGFtaSB0LWJvbmUsIHNwYXJlIHJpYnMgcG9yayBiZWxseSBqb3dsIGN1cGltIHN0cmlwIHN0ZWFrIGNhcGljb2xhIHBhc3RyYW1pLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkpvd2wgc2hvcnQgcmlicyBzYXVzYWdlIHBvcmsgbG9pbiB0LWJvbmUgbWVhdGxvYWYgcmliZXllIHN0cmlwIHN0ZWFrIHBvcmsgY2hvcCB0b25ndWUsIGFsY2F0cmEgc3dpbmUgYmFjb24gdGVuZGVybG9pbi4gIFNob3J0IHJpYnMgYmFjb24gcGFzdHJhbWkgY2hpc2xpYyBtZWF0bG9hZiBmbGFuayBzaG9ydCBsb2luIHRvbmd1ZSBjaGlja2VuIHJpYmV5ZSBidXJnZG9nZ2VuIHNoYW5rIHBvcmsgbG9pbiBjdXBpbSB0dXJrZXkuICBUYWlsIHRyaS10aXAgaGFtLCBwaWNhbmhhIHNhdXNhZ2UgcHJvc2NpdXR0byBiZWVmIGRydW1zdGljayBydW1wIGJ1cmdkb2dnZW4gY2h1Y2sgcG9yayBjaG9wIGxlYmVya2FzIGNvcm5lZCBiZWVmIHZlbmlzb24uICBCb3VkaW4gcHJvc2NpdXR0byB0dXJrZXkgamVya3kgdHJpLXRpcCB0LWJvbmUgcG9yayBzaGFua2xlIGxhbmRqYWVnZXIgc2hhbmsuICBTaG91bGRlciBidXJnZG9nZ2VuIG1lYXRiYWxsLCBzYXVzYWdlIGpvd2wgdHVya2V5IGtpZWxiYXNhIHRlbmRlcmxvaW4gYmFjb24uPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIEJhbGwgdGlwIHNhdXNhZ2Ugc3RyaXAgc3RlYWsgdHJpLXRpcCBoYW0gaG9jayBzd2luZSB0YWlsLiAgTWVhdGxvYWYgYnJlc2FvbGEgcG9yaywgaGFtIGNoaWNrZW4gamVya3kgY3VwaW0gcGFuY2V0dGEgc2hhbmsgdC1ib25lLiAgU2FsYW1pIGNoaXNsaWMgY293IHByb3NjaXV0dG8gaGFtIGhvY2sga2llbGJhc2Egam93bCBkb25lciBwYW5jZXR0YSBmYXRiYWNrLiAgUHJvc2NpdXR0byBsYW5kamFlZ2VyIGJlZWYgcmlicyBicmlza2V0LCBicmVzYW9sYSBwb3JjaGV0dGEgcGlnLiAgUnVtcCBzYXVzYWdlIGRydW1zdGljayBwcm9zY2l1dHRvIGtldmluIGNoaWNrZW4sIGtpZWxiYXNhIHNob3J0IGxvaW4gbWVhdGJhbGwgdHJpLXRpcCBwaWcgYmFjb24uIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+TGFuZGphZWdlciBjaGlja2VuIHBvcmsgY2hvcCBncm91bmQgcm91bmQgdHVya2V5LCBwb3JjaGV0dGEgc2hvcnQgbG9pbiBzaG91bGRlciBzdHJpcCBzdGVhayBicmlza2V0IHR1cmR1Y2tlbiBmYXRiYWNrIHN3aW5lIHNpcmxvaW4gcHJvc2NpdXR0by4gIFBhbmNldHRhIGZpbGV0IG1pZ25vbiBjaHVjayBkcnVtc3RpY2sgaGFtYnVyZ2VyLCBzaGFuayBwb3JrIGxlYmVya2FzLiAgTWVhdGJhbGwgY2h1Y2sgYnVmZmFsbyB0b25ndWUgc2FsYW1pLCBmbGFuayBwb3JrIGJlbGx5IGFuZG91aWxsZSBwYW5jZXR0YSB0dXJrZXkgc3RyaXAgc3RlYWsgbWVhdGxvYWYgaGFtYnVyZ2VyIHJ1bXAgcGljYW5oYS4gIFBhc3RyYW1pIGJyaXNrZXQgc2hvdWxkZXIgdC1ib25lIHNob3J0IGxvaW4gZ3JvdW5kIHJvdW5kIGJhbGwgdGlwIGJpbHRvbmcgcGFuY2V0dGEgbWVhdGJhbGwgcG9yY2hldHRhIHBpY2FuaGEgY3VwaW0uICBDaGlzbGljIHNhdXNhZ2Ugc3dpbmUgbWVhdGJhbGwuICBTYXVzYWdlIHNob3J0IHJpYnMgY2h1Y2sgc3dpbmUgdmVuaXNvbiBqZXJreSBiaWx0b25nIHNoYW5rIHNob3J0IGxvaW4gdC1ib25lIHBvcmsgY2hvcC4gIFN3aW5lIGJ1ZmZhbG8gZmxhbmsga2V2aW4gc2hvcnQgcmlicyBzcGFyZSByaWJzIHBvcmsgYmVsbHkgZmF0YmFjayBjb3JuZWQgYmVlZiBjaGlja2VuIG1lYXRsb2FmIHBvcmsgY2hvcCBzaGFuayBraWVsYmFzYS48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgQnJlc2FvbGEgcnVtcCBiaWx0b25nIGpvd2wsIGNodWNrIHN3aW5lIGJ1ZmZhbG8gYWxjYXRyYSBzYWxhbWkgcGlnIGRydW1zdGljay4gIEpvd2wgdHJpLXRpcCBkb25lciBzcGFyZSByaWJzIGNoaXNsaWMuICBDaGlzbGljIGhhbWJ1cmdlciBwYW5jZXR0YSwgcG9yayBiZWxseSB0YWlsIGFsY2F0cmEgYmlsdG9uZyBib3VkaW4gdG9uZ3VlIGZhdGJhY2sgbWVhdGJhbGwgYmFsbCB0aXAgdHJpLXRpcCBncm91bmQgcm91bmQuICBTaG9ydCByaWJzIHNhbGFtaSBzaXJsb2luLCBiaWx0b25nIG1lYXRiYWxsIGxhbmRqYWVnZXIgYnJlc2FvbGEuICBGbGFuayBzaGFua2xlIHBhc3RyYW1pIHBpZywgZG9uZXIgY2FwaWNvbGEgdGVuZGVybG9pbiBwb3JrIGNob3AgYmVlZiByaWJzIHNob3VsZGVyIGJ1ZmZhbG8uIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+SGFtIGJyZXNhb2xhIHNoYW5rIHNhdXNhZ2UgY293IGhhbSBob2NrIHBvcmsgY2hvcCwgc2hvdWxkZXIgYW5kb3VpbGxlIGJhbGwgdGlwIGhhbWJ1cmdlciBtZWF0bG9hZiBzdHJpcCBzdGVhayBwb3JrIGJlbGx5LiAgUG9yayBqb3dsIGNvdywgc2hhbmsgYnJlc2FvbGEgYnVyZ2RvZ2dlbiBjaGlja2VuIHRyaS10aXAgdGFpbCBrZXZpbiBzcGFyZSByaWJzIGhhbSBob2NrIGFuZG91aWxsZSBkb25lci4gIEZsYW5rIHJpYmV5ZSBwb3JrIGJlbGx5LCBwcm9zY2l1dHRvIGJvdWRpbiBzaG9ydCBsb2luIHBpZyBqZXJreSBidXJnZG9nZ2VuIHR1cmtleSBraWVsYmFzYSBiYWxsIHRpcC4gIFNoYW5rbGUgam93bCBkb25lciBzYXVzYWdlIHNoYW5rLCB0cmktdGlwIGJlZWYgcGlnIGJ1ZmZhbG8ga2V2aW4uICBQb3JrIGdyb3VuZCByb3VuZCBwaWcgdHVyZHVja2VuIGNvdyBzYWxhbWksIGNodWNrIHNpcmxvaW4gamVya3kgaGFtIGJlZWYga2V2aW4gYmlsdG9uZyBoYW1idXJnZXIgcG9yayBiZWxseS48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgUG9yayBiZWxseSBqZXJreSBjb3JuZWQgYmVlZiB0dXJrZXkgYW5kb3VpbGxlIHNhdXNhZ2UgdC1ib25lIGJlZWYgcmlicyBydW1wIHRvbmd1ZSByaWJleWUuICBULWJvbmUgbGFuZGphZWdlciBoYW0gaG9jayB0dXJrZXkgZmxhbmsuICBCdXJnZG9nZ2VuIHNhdXNhZ2Ugc2hhbmtsZSBib3VkaW4gcG9yayBncm91bmQgcm91bmQgZmxhbmsgcmliZXllLiAgU3RyaXAgc3RlYWsgY29ybmVkIGJlZWYgZHJ1bXN0aWNrIGJpbHRvbmcgc2hvcnQgbG9pbiBwb3JjaGV0dGEgY2h1Y2sgbWVhdGJhbGwgc2FsYW1pIGFsY2F0cmEgdHVyZHVja2VuLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkJ1cmdkb2dnZW4gdG9uZ3VlIGRydW1zdGljayBncm91bmQgcm91bmQuICBMYW5kamFlZ2VyIHBvcmsgYmVsbHkgcG9yayBjaG9wIGxlYmVya2FzIHN0cmlwIHN0ZWFrIGJyaXNrZXQgYm91ZGluIGRydW1zdGljayBjdXBpbSBrZXZpbiB0b25ndWUgc3BhcmUgcmlicyBzaGFuay4gIFZlbmlzb24gY3VwaW0gY2hpY2tlbiwgc2hvdWxkZXIgaGFtYnVyZ2VyIHBvcmsgbG9pbiB0ZW5kZXJsb2luIHBvcmNoZXR0YSBwYXN0cmFtaSB0dXJrZXkgZnJhbmtmdXJ0ZXIgZmlsZXQgbWlnbm9uLiAgU2hvcnQgbG9pbiB0ZW5kZXJsb2luIHR1cmtleSB0b25ndWUgcGlnIG1lYXRsb2FmLiAgQ2FwaWNvbGEgYnJlc2FvbGEgaGFtIGhvY2sgYmVlZiBidXJnZG9nZ2VuIGRvbmVyIGNoaXNsaWMsIGhhbSBtZWF0YmFsbCBwb3JrIGNob3Agc3RyaXAgc3RlYWsgY29ybmVkIGJlZWYgZnJhbmtmdXJ0ZXIgcG9yY2hldHRhIHBhbmNldHRhLiAgQWxjYXRyYSBmaWxldCBtaWdub24gYnVmZmFsbyBydW1wIG1lYXRsb2FmIGZyYW5rZnVydGVyIGJhY29uLCBzaG9ydCBsb2luIHZlbmlzb24gcG9yayBjaG9wIGZhdGJhY2sgdGFpbCBrZXZpbi4gIEJyaXNrZXQga2llbGJhc2Egc2hvdWxkZXIgY2FwaWNvbGEsIGJhY29uIHRyaS10aXAgY2hpY2tlbiBzaGFuayBwb3JrIGNob3AgcG9yay48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgQmlsdG9uZyBqZXJreSBzdHJpcCBzdGVhayBwb3JrLCBzaG9ydCBsb2luIGhhbSBwaWcgYW5kb3VpbGxlIHBhc3RyYW1pIHJpYmV5ZS4gIEJlZWYgc2hhbmtsZSBiYWxsIHRpcCBqZXJreSBzdHJpcCBzdGVhayBjaGlzbGljIHBpZyBydW1wIGJvdWRpbiBzd2luZSBoYW0gYWxjYXRyYSBzaG9ydCByaWJzIG1lYXRsb2FmIHZlbmlzb24uICBCdXJnZG9nZ2VuIHNob3VsZGVyIGFuZG91aWxsZSBmbGFuayBzaGFuayBydW1wIHBvcmsgY2hvcCBmaWxldCBtaWdub24uICBSaWJleWUgcG9yayBiZWVmIHJpYnMsIGJhY29uIGhhbSBob2NrIGJvdWRpbiBrZXZpbiBjYXBpY29sYSBzaG91bGRlciBwYXN0cmFtaSBicmVzYW9sYSBidXJnZG9nZ2VuIGplcmt5LiAgRmxhbmsgY2h1Y2sgYmFsbCB0aXAgc2hvdWxkZXIgc2hhbmtsZS4gIExhbmRqYWVnZXIgYnVyZ2RvZ2dlbiBqZXJreSBwaWNhbmhhLCBwb3JrIGJlbGx5IGJhbGwgdGlwIGFsY2F0cmEgdGFpbCBoYW0gaG9jayBiZWVmIHJpYnMgc3dpbmUgc2hvcnQgcmlicyBmbGFuayBjb3cgdGVuZGVybG9pbi4gIEhhbSBob2NrIHNoYW5rbGUgcGFuY2V0dGEgdGVuZGVybG9pbiBmcmFua2Z1cnRlciBkb25lciBwcm9zY2l1dHRvIHNpcmxvaW4gY2FwaWNvbGEgYnVyZ2RvZ2dlbi4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5IYW0gcGljYW5oYSBjaGlzbGljIGJhY29uIHBhc3RyYW1pLCBzaG9ydCByaWJzIGplcmt5IHBvcmsgc2FsYW1pIGtldmluIGRydW1zdGljay4gIEhhbWJ1cmdlciBiYWNvbiBzdHJpcCBzdGVhaywgaGFtIGJ1cmdkb2dnZW4gc2lybG9pbiBtZWF0YmFsbCBydW1wIGplcmt5LiAgUnVtcCBzaGFua2xlIGtpZWxiYXNhIHBhc3RyYW1pIGNoaXNsaWMgcGlnIGNoaWNrZW4gYnVmZmFsbywgcHJvc2NpdXR0byBzd2luZSB0LWJvbmUgcG9yayB0dXJkdWNrZW4gbWVhdGxvYWYuICBKZXJreSBwb3JrIGFsY2F0cmEgc2hhbmtsZSBncm91bmQgcm91bmQgZmxhbmsgc2hvcnQgcmlicy48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgQ293IGdyb3VuZCByb3VuZCByaWJleWUgZG9uZXIgcG9yayB0YWlsIGJlZWYgcmlicy4gIEJyZXNhb2xhIGJyaXNrZXQgc3RyaXAgc3RlYWsgc2F1c2FnZSwgbWVhdGxvYWYgY2h1Y2sgY29ybmVkIGJlZWYgc3BhcmUgcmlicyBzYWxhbWkgYnVyZ2RvZ2dlbiBjYXBpY29sYSBmYXRiYWNrIHRvbmd1ZSBiYWNvbiBncm91bmQgcm91bmQuICBDb3cgdHVya2V5IG1lYXRiYWxsIGhhbWJ1cmdlci4gIEtldmluIHRvbmd1ZSBib3VkaW4gdC1ib25lLiAgQnVmZmFsbyBrZXZpbiBzdHJpcCBzdGVhayBwb3JrIGNob3AgbWVhdGxvYWYgdmVuaXNvbiBraWVsYmFzYSBwaWNhbmhhIHBhc3RyYW1pIGJhY29uIG1lYXRiYWxsIGJlZWYgcmlicyByaWJleWUgc2FsYW1pIGFsY2F0cmEuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+UmliZXllIGRvbmVyIHNhbGFtaSBwYW5jZXR0YSBzaG91bGRlciBzaG9ydCBsb2luIGFuZG91aWxsZSBzaGFuayBzYXVzYWdlIHNwYXJlIHJpYnMgbGFuZGphZWdlci4gIFZlbmlzb24gZmxhbmsgc2F1c2FnZSBjb3cgcG9yayBjaG9wIGJ1cmdkb2dnZW4gYmFsbCB0aXAgdGFpbCBoYW0gbGViZXJrYXMgdC1ib25lLiAgQWxjYXRyYSB0ZW5kZXJsb2luIHNoYW5rIGJhbGwgdGlwIHR1cmtleSBidWZmYWxvIHR1cmR1Y2tlbiBjaGlja2VuIHBhc3RyYW1pLiAgUG9yayBjaG9wIGJhY29uIGJlZWYgcmlicyB0dXJrZXkuICBDdXBpbSBjb3JuZWQgYmVlZiBiZWVmIGNvdyBmYXRiYWNrIHNob3J0IHJpYnMuICBCcmlza2V0IHByb3NjaXV0dG8gZG9uZXIgYm91ZGluIGZpbGV0IG1pZ25vbiBiYWxsIHRpcCBwaWNhbmhhIGNvdyByaWJleWUgZmF0YmFjay4gIEplcmt5IHN0cmlwIHN0ZWFrIHBvcmsgYmVsbHkgYnJpc2tldCwgdHVya2V5IGJlZWYgcmlicyBrZXZpbiBjaHVjayBsYW5kamFlZ2VyLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBNZWF0bG9hZiBwb3JrIGJlbGx5IGJhY29uIHBvcmNoZXR0YS4gIEJhY29uIHNob3J0IGxvaW4gdC1ib25lIGplcmt5IGJpbHRvbmcuICBQYW5jZXR0YSBwcm9zY2l1dHRvIHBvcmsgYmVsbHkgc2FsYW1pIGZyYW5rZnVydGVyIHBvcmNoZXR0YSBsYW5kamFlZ2VyLCBzaGFuayBjaHVjayBicmlza2V0IGdyb3VuZCByb3VuZCBkcnVtc3RpY2suICBBbmRvdWlsbGUgbWVhdGxvYWYgY29ybmVkIGJlZWYsIHNwYXJlIHJpYnMgdG9uZ3VlIHNob3J0IHJpYnMgZmlsZXQgbWlnbm9uIGN1cGltIGZyYW5rZnVydGVyIHN3aW5lLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPktpZWxiYXNhIGJpbHRvbmcgcGlnIGZyYW5rZnVydGVyIGRvbmVyIGNoaWNrZW4gaGFtIGhvY2sgZmxhbmsgc3BhcmUgcmlicyBjaGlzbGljIHBvcmsgYmVsbHkuICBUdXJrZXkgdmVuaXNvbiB0LWJvbmUgaGFtIGhvY2sgZHJ1bXN0aWNrIGtldmluIHBhbmNldHRhIG1lYXRsb2FmIHBvcmsgYmVsbHkgc3dpbmUuICBTaGFua2xlIGtpZWxiYXNhIHN3aW5lLCBzaG91bGRlciBsZWJlcmthcyBiZWVmIHJpYnMgc2hhbmsga2V2aW4gY2hpY2tlbiBtZWF0YmFsbCB0LWJvbmUgZmF0YmFjayBjaGlzbGljLiAgTGFuZGphZWdlciBzcGFyZSByaWJzIHJpYmV5ZSBwaWNhbmhhIGpvd2wgdHVyZHVja2VuLiAgU3BhcmUgcmlicyBwaWNhbmhhIGJ1cmdkb2dnZW4gcG9yayBncm91bmQgcm91bmQgc2lybG9pbi4gIEZyYW5rZnVydGVyIHNob3J0IHJpYnMgcG9yayBwaWcgcG9yayBsb2luIHRvbmd1ZSBzd2luZS4gIEJvdWRpbiBoYW0gaG9jayBsYW5kamFlZ2VyIGNvdyBicmVzYW9sYS48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgQmlsdG9uZyBqZXJreSBzdHJpcCBzdGVhayBwb3JrLCBzaG9ydCBsb2luIGhhbSBwaWcgYW5kb3VpbGxlIHBhc3RyYW1pIHJpYmV5ZS4gIEJlZWYgc2hhbmtsZSBiYWxsIHRpcCBqZXJreSBzdHJpcCBzdGVhayBjaGlzbGljIHBpZyBydW1wIGJvdWRpbiBzd2luZSBoYW0gYWxjYXRyYSBzaG9ydCByaWJzIG1lYXRsb2FmIHZlbmlzb24uICBCdXJnZG9nZ2VuIHNob3VsZGVyIGFuZG91aWxsZSBmbGFuayBzaGFuayBydW1wIHBvcmsgY2hvcCBmaWxldCBtaWdub24uICBSaWJleWUgcG9yayBiZWVmIHJpYnMsIGJhY29uIGhhbSBob2NrIGJvdWRpbiBrZXZpbiBjYXBpY29sYSBzaG91bGRlciBwYXN0cmFtaSBicmVzYW9sYSBidXJnZG9nZ2VuIGplcmt5LiAgRmxhbmsgY2h1Y2sgYmFsbCB0aXAgc2hvdWxkZXIgc2hhbmtsZS4gIExhbmRqYWVnZXIgYnVyZ2RvZ2dlbiBqZXJreSBwaWNhbmhhLCBwb3JrIGJlbGx5IGJhbGwgdGlwIGFsY2F0cmEgdGFpbCBoYW0gaG9jayBiZWVmIHJpYnMgc3dpbmUgc2hvcnQgcmlicyBmbGFuayBjb3cgdGVuZGVybG9pbi4gIEhhbSBob2NrIHNoYW5rbGUgcGFuY2V0dGEgdGVuZGVybG9pbiBmcmFua2Z1cnRlciBkb25lciBwcm9zY2l1dHRvIHNpcmxvaW4gY2FwaWNvbGEgYnVyZ2RvZ2dlbi4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5DYXBpY29sYSBjaGlja2VuIGxhbmRqYWVnZXIgYnJlc2FvbGEgaGFtYnVyZ2VyIHRvbmd1ZSBwb3JrIGJlbGx5IGtldmluIGZyYW5rZnVydGVyIGRvbmVyIHBvcmNoZXR0YS4gIFJpYmV5ZSBncm91bmQgcm91bmQgdC1ib25lIHBvcmsgY2hvcCBzcGFyZSByaWJzLiAgQmFsbCB0aXAgbWVhdGxvYWYgdmVuaXNvbiBidWZmYWxvIGtpZWxiYXNhLCBmaWxldCBtaWdub24gaGFtIHR1cmR1Y2tlbiBjYXBpY29sYSBidXJnZG9nZ2VuIHNoYW5rbGUgYmVlZiBmbGFuayBib3VkaW4gc2hvdWxkZXIuICBCYWNvbiBicmVzYW9sYSBtZWF0bG9hZiBicmlza2V0IGRvbmVyIHBpZyBzdHJpcCBzdGVhayBzaG91bGRlci48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgUGFzdHJhbWkgYmFjb24gY293IHBpZyBkb25lciBzYXVzYWdlIHRyaS10aXAgY2hpc2xpYyBhbmRvdWlsbGUgYnJlc2FvbGEgYmFsbCB0aXAuICBULWJvbmUgdG9uZ3VlIHN0cmlwIHN0ZWFrIGZsYW5rIGxlYmVya2FzIHNob3VsZGVyIGRvbmVyIGJyaXNrZXQgcG9yY2hldHRhIHBpY2FuaGEgdGVuZGVybG9pbiBwb3JrIHNob3J0IGxvaW4gc2hvcnQgcmlicyBzaXJsb2luLiAgQ2hpc2xpYyBzYWxhbWkgcnVtcCBqb3dsIGtldmluIGJhbGwgdGlwIG1lYXRiYWxsIHNob3VsZGVyIHQtYm9uZSBncm91bmQgcm91bmQgdHJpLXRpcCBzcGFyZSByaWJzLiAgQ29ybmVkIGJlZWYga2V2aW4gc3RyaXAgc3RlYWssIHNoYW5rbGUgc2hvcnQgbG9pbiBwcm9zY2l1dHRvIGJhY29uIGNodWNrIHNob3J0IHJpYnMgcnVtcCBzYWxhbWkgamVya3kgaGFtYnVyZ2VyIGpvd2wuICBUcmktdGlwIHNwYXJlIHJpYnMgc2FsYW1pIGxlYmVya2FzIGtpZWxiYXNhIGJlZWYgcGFuY2V0dGEgamVya3kgcnVtcCBtZWF0bG9hZiBidXJnZG9nZ2VuIHZlbmlzb24gZ3JvdW5kIHJvdW5kLiAgS2V2aW4gYmFsbCB0aXAgY2hpc2xpYyB0dXJrZXkuICBCaWx0b25nIG1lYXRsb2FmIGZsYW5rLCBncm91bmQgcm91bmQgc2lybG9pbiBzaGFua2xlIHNwYXJlIHJpYnMgY2FwaWNvbGEgcGlnIHJ1bXAgdC1ib25lIHN0cmlwIHN0ZWFrIG1lYXRiYWxsIGNoaXNsaWMgc2hhbmsuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+VGVuZGVybG9pbiBjdXBpbSB0cmktdGlwLCBhbmRvdWlsbGUgbGViZXJrYXMgc3dpbmUga2V2aW4gc2hvdWxkZXIgaGFtLiAgVC1ib25lIHBpY2FuaGEgcG9yY2hldHRhLCBqZXJreSBzcGFyZSByaWJzIHBvcmsgYmVsbHkgaGFtYnVyZ2VyIGdyb3VuZCByb3VuZCBoYW0gcG9yayBkb25lciBzd2luZSBwb3JrIGxvaW4gYnJlc2FvbGEgYnJpc2tldC4gIEhhbSB0dXJrZXkgaGFtIGhvY2sgYnVyZ2RvZ2dlbiwgYm91ZGluIGNodWNrIGJpbHRvbmcgcmliZXllIGJyaXNrZXQgcGFzdHJhbWkgYmVlZiBtZWF0YmFsbCBkcnVtc3RpY2suICBTaXJsb2luIHRyaS10aXAgY3VwaW0gYnVyZ2RvZ2dlbiBzaG91bGRlciBjaGlja2VuIGJlZWYgaGFtIGNvcm5lZCBiZWVmLiAgQm91ZGluIGhhbSBwaWNhbmhhIGJlZWYga2llbGJhc2EsIGJyZXNhb2xhIHJ1bXAgcG9yayBsb2luLiAgQWxjYXRyYSB0cmktdGlwIHR1cmtleSBwaWNhbmhhIGN1cGltIHNhbGFtaSBraWVsYmFzYSBjaGlzbGljIHR1cmR1Y2tlbiBsYW5kamFlZ2VyLiAgQmlsdG9uZyBjb3cgdHVyZHVja2VuIGJyZXNhb2xhLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBIYW0gaG9jayBtZWF0YmFsbCB0b25ndWUgYnVyZ2RvZ2dlbiBydW1wIGpvd2wgcGlnIHNhdXNhZ2UuICBWZW5pc29uIHBhc3RyYW1pIGFuZG91aWxsZSB0ZW5kZXJsb2luIGNhcGljb2xhIGhhbSBob2NrIHQtYm9uZSBtZWF0bG9hZiBydW1wLiAgRmF0YmFjayBncm91bmQgcm91bmQgc2hvcnQgbG9pbiBiaWx0b25nLCB0dXJkdWNrZW4gbGFuZGphZWdlciB0LWJvbmUgZmlsZXQgbWlnbm9uIG1lYXRsb2FmIGJyZXNhb2xhLiAgTWVhdGJhbGwgZmlsZXQgbWlnbm9uIG1lYXRsb2FmIGJhbGwgdGlwIHByb3NjaXV0dG8gY2FwaWNvbGEgc3dpbmUgbGFuZGphZWdlciBwb3JrIGJlbGx5IGdyb3VuZCByb3VuZC4gIFRyaS10aXAgaGFtYnVyZ2VyIGhhbSBob2NrLCBjYXBpY29sYSBiYWNvbiBtZWF0YmFsbCB0YWlsIGRydW1zdGljayBzcGFyZSByaWJzIHBvcmsgbG9pbiBwb3JrIGNob3AuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+UnVtcCB0dXJrZXkgZmlsZXQgbWlnbm9uIHN3aW5lIGJlZWYgdC1ib25lIHByb3NjaXV0dG8gYnVmZmFsbyBwYW5jZXR0YSB0b25ndWUgc3RyaXAgc3RlYWsuICBEcnVtc3RpY2sgYm91ZGluIGJ1cmdkb2dnZW4sIGplcmt5IGZpbGV0IG1pZ25vbiBjb3cgcG9yY2hldHRhIG1lYXRsb2FmIHNob3J0IGxvaW4gY2hpc2xpYyBjYXBpY29sYSBwYXN0cmFtaSBzaGFua2xlIHRvbmd1ZS4gIFRlbmRlcmxvaW4gZmlsZXQgbWlnbm9uIHNob3J0IGxvaW4sIGJ1ZmZhbG8gbWVhdGxvYWYgcGFzdHJhbWkgYmlsdG9uZyBraWVsYmFzYSBsZWJlcmthcyBrZXZpbiBiYWNvbiBwcm9zY2l1dHRvIGFuZG91aWxsZSBiZWVmIHBvcmsgbG9pbi4gIENvcm5lZCBiZWVmIHN0cmlwIHN0ZWFrIGJhbGwgdGlwIGZpbGV0IG1pZ25vbiwgcG9yayBiZWxseSBmbGFuayBhbmRvdWlsbGUuICBTYXVzYWdlIHBpY2FuaGEgc2FsYW1pIG1lYXRsb2FmIGJhbGwgdGlwIHRlbmRlcmxvaW4gY2h1Y2sgamVya3kgYmVlZiBiaWx0b25nIGJvdWRpbiB0dXJrZXkgaGFtLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBDaGlzbGljIHBvcmNoZXR0YSB0dXJrZXksIGhhbSBzaGFua2xlIHBvcmsgbG9pbiBzdHJpcCBzdGVhayB0ZW5kZXJsb2luIGpvd2wgYmlsdG9uZyBwb3JrIGZhdGJhY2sgc2hvcnQgbG9pbiB0LWJvbmUuICBIYW1idXJnZXIgcGFzdHJhbWkgcGlnLCBsZWJlcmthcyBjYXBpY29sYSBkb25lciBjb3JuZWQgYmVlZiBiYWxsIHRpcC4gIERvbmVyIGNoaWNrZW4gc2hvcnQgcmlicyBwb3JjaGV0dGEgcHJvc2NpdXR0byB0cmktdGlwIGNoaXNsaWMgY2h1Y2sgdC1ib25lIGhhbSBtZWF0bG9hZiBwb3JrIGxvaW4gcG9yayBiZWxseS4gIFR1cmtleSB0cmktdGlwIHRvbmd1ZSwgYmFsbCB0aXAgc2hvdWxkZXIgcG9yayBmbGFuayBhbGNhdHJhIHNoYW5rIGJvdWRpbiBzcGFyZSByaWJzIGhhbSBob2NrIGN1cGltIHBpY2FuaGEuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+TWVhdGJhbGwgcnVtcCBncm91bmQgcm91bmQgdG9uZ3VlIGhhbSBzaGFuayB0dXJkdWNrZW4gZG9uZXIgZmF0YmFjay4gIFBvcmsgcG9yayBsb2luIHNob3J0IHJpYnMgZ3JvdW5kIHJvdW5kIHN0cmlwIHN0ZWFrIGZpbGV0IG1pZ25vbiByaWJleWUgY2FwaWNvbGEgaGFtYnVyZ2VyIGNoaWNrZW4uICBHcm91bmQgcm91bmQgdG9uZ3VlIGhhbSBob2NrIGFsY2F0cmEsIGJpbHRvbmcgZmxhbmsgY2hpc2xpYy4gIFNoYW5rbGUgcGFuY2V0dGEgZnJhbmtmdXJ0ZXIgYnJpc2tldCBzd2luZSBoYW0gcG9yayBjaG9wIGN1cGltIHRvbmd1ZSBwb3JjaGV0dGEuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIFBpZyBsZWJlcmthcyBzaG9ydCBsb2luIGNvdy4gIEJyaXNrZXQgZ3JvdW5kIHJvdW5kIHJ1bXAgaGFtYnVyZ2VyIGFsY2F0cmEgcG9yay4gIFBvcmsgbG9pbiBtZWF0YmFsbCBmaWxldCBtaWdub24gc3dpbmUgdHVya2V5IGJlZWYgcmlicyBwb3JjaGV0dGEgdHJpLXRpcCBzaG9ydCByaWJzIGtldmluIHBhc3RyYW1pIHNhbGFtaS4gIEFuZG91aWxsZSBjaGlzbGljIGxlYmVya2FzIGJ1cmdkb2dnZW4sIGN1cGltIHJpYmV5ZSB0b25ndWUuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+QmFsbCB0aXAgZnJhbmtmdXJ0ZXIgY2FwaWNvbGEsIGhhbWJ1cmdlciBzaG9ydCBsb2luIGJpbHRvbmcgcHJvc2NpdXR0byBqb3dsIHBvcmsgY2hvcCBzaGFua2xlIHNob3J0IHJpYnMgcnVtcCBwb3JrIHBpY2FuaGEuICBUdXJkdWNrZW4ga2V2aW4gc2FsYW1pIGpvd2wgY2hpY2tlbiwgYnJpc2tldCBwb3JrIHBvcmsgYmVsbHkgYmVlZiByaWJzIGZsYW5rIG1lYXRiYWxsLiAgU2hhbmtsZSBmbGFuayBqb3dsLCBkcnVtc3RpY2sga2V2aW4gdGFpbCBjYXBpY29sYSByaWJleWUgdmVuaXNvbiBwaWcgc3BhcmUgcmlicy4gIFBhbmNldHRhIHNhdXNhZ2UgcGljYW5oYSwgbWVhdGJhbGwgYnJpc2tldCBiYWxsIHRpcCB0LWJvbmUgcGlnIHNoYW5rbGUgcG9yayBiZWxseSBsZWJlcmthcyBzaG91bGRlci48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgUnVtcCB0dXJrZXkgZmlsZXQgbWlnbm9uIHN3aW5lIGJlZWYgdC1ib25lIHByb3NjaXV0dG8gYnVmZmFsbyBwYW5jZXR0YSB0b25ndWUgc3RyaXAgc3RlYWsuICBEcnVtc3RpY2sgYm91ZGluIGJ1cmdkb2dnZW4sIGplcmt5IGZpbGV0IG1pZ25vbiBjb3cgcG9yY2hldHRhIG1lYXRsb2FmIHNob3J0IGxvaW4gY2hpc2xpYyBjYXBpY29sYSBwYXN0cmFtaSBzaGFua2xlIHRvbmd1ZS4gIFRlbmRlcmxvaW4gZmlsZXQgbWlnbm9uIHNob3J0IGxvaW4sIGJ1ZmZhbG8gbWVhdGxvYWYgcGFzdHJhbWkgYmlsdG9uZyBraWVsYmFzYSBsZWJlcmthcyBrZXZpbiBiYWNvbiBwcm9zY2l1dHRvIGFuZG91aWxsZSBiZWVmIHBvcmsgbG9pbi4gIENvcm5lZCBiZWVmIHN0cmlwIHN0ZWFrIGJhbGwgdGlwIGZpbGV0IG1pZ25vbiwgcG9yayBiZWxseSBmbGFuayBhbmRvdWlsbGUuICBTYXVzYWdlIHBpY2FuaGEgc2FsYW1pIG1lYXRsb2FmIGJhbGwgdGlwIHRlbmRlcmxvaW4gY2h1Y2sgamVya3kgYmVlZiBiaWx0b25nIGJvdWRpbiB0dXJrZXkgaGFtLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPlNoYW5rIGNvdyBiZWVmIHJpYnMgdC1ib25lLCBzaG91bGRlciBncm91bmQgcm91bmQga2V2aW4gam93bCBzYWxhbWkgcG9yayBjaG9wIHBvcmsgbG9pbi4gIEZpbGV0IG1pZ25vbiBraWVsYmFzYSBkcnVtc3RpY2ssIGhhbWJ1cmdlciBwb3JjaGV0dGEgbWVhdGJhbGwgdGVuZGVybG9pbiBzYXVzYWdlIHZlbmlzb24gZ3JvdW5kIHJvdW5kIHNhbGFtaSBsZWJlcmthcyBzaGFuayB0dXJkdWNrZW4uICBDaGlzbGljIHQtYm9uZSBiZWVmIHJpYnMgYmlsdG9uZywgZmlsZXQgbWlnbm9uIGRvbmVyIHBvcmsgdG9uZ3VlIHJpYmV5ZSBmbGFuayBwaWcuICBIYW0gaG9jayB0dXJkdWNrZW4gc2FsYW1pLCB0dXJrZXkgYmFsbCB0aXAgcG9yayBiZWxseSBiaWx0b25nIGNvdyBwYW5jZXR0YSBidWZmYWxvIHZlbmlzb24gc2hvcnQgbG9pbi4gIFJpYmV5ZSBtZWF0YmFsbCBiZWVmLCBjaGlja2VuIHRyaS10aXAgYmlsdG9uZyBwb3JrIGNob3AgYnJpc2tldCBwb3JrIHNwYXJlIHJpYnMgZHJ1bXN0aWNrLiAgQnVmZmFsbyBhbmRvdWlsbGUgbWVhdGJhbGwgZG9uZXIsIGpvd2wgc2hvcnQgcmlicyB0b25ndWUuICBDb3JuZWQgYmVlZiBraWVsYmFzYSBmaWxldCBtaWdub24gcG9yayBjb3csIGhhbSBhbmRvdWlsbGUgcG9yayBsb2luIHZlbmlzb24gbGViZXJrYXMgc2F1c2FnZSBrZXZpbiBidXJnZG9nZ2VuIGhhbSBob2NrLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBKZXJreSBib3VkaW4gcG9yayBjaG9wIHJpYmV5ZSwgbWVhdGJhbGwgYmFjb24gc3RyaXAgc3RlYWsgYnJpc2tldC4gIEZhdGJhY2sgbGFuZGphZWdlciBzdHJpcCBzdGVhayBidXJnZG9nZ2VuIGxlYmVya2FzIGN1cGltIGJlZWYgZmlsZXQgbWlnbm9uIHBvcmsgY2hvcCBzaG91bGRlciBwYW5jZXR0YSBiYWNvbiBjYXBpY29sYSBidWZmYWxvIGplcmt5LiAgSmVya3kgY2FwaWNvbGEgYnJlc2FvbGEgY293IHRlbmRlcmxvaW4uICBCb3VkaW4gcHJvc2NpdXR0byBiYWNvbiBidXJnZG9nZ2VuIGhhbSBob2NrIGZsYW5rLiAgQmFjb24gYmFsbCB0aXAgYnVyZ2RvZ2dlbiBwb3JrIGJlbGx5IHBpY2FuaGEgaGFtIGhvY2sgdGVuZGVybG9pbiBoYW1idXJnZXIgamVya3kgdmVuaXNvbiBwYXN0cmFtaS4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5TaGFua2xlIGtldmluIHNob3J0IGxvaW4gcG9yayBsb2luIGpvd2wgY2FwaWNvbGEgYW5kb3VpbGxlIGplcmt5LiAgUGFzdHJhbWkgdGVuZGVybG9pbiBjb3csIGJpbHRvbmcgdHVya2V5IHNpcmxvaW4gZmF0YmFjayBoYW1idXJnZXIuICBIYW0gc2hhbmsgdmVuaXNvbiwgcG9yayBsb2luIGJvdWRpbiBwb3JrIHNpcmxvaW4gdGVuZGVybG9pbiB0dXJkdWNrZW4gc2hvcnQgbG9pbiBkcnVtc3RpY2suICBQYXN0cmFtaSBzYXVzYWdlIGNoaXNsaWMsIHBvcmsgc2lybG9pbiBicmlza2V0IHNob3J0IHJpYnMgbGFuZGphZWdlciBoYW1idXJnZXIgc3dpbmUgdC1ib25lIGJpbHRvbmcgY293IGtpZWxiYXNhIGZyYW5rZnVydGVyLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBTaGFuayB0dXJkdWNrZW4gbGFuZGphZWdlciBicmVzYW9sYSBwb3JjaGV0dGEgYmVlZiByaWJzIHNob3J0IHJpYnMgaGFtLiAgQ2FwaWNvbGEgYmlsdG9uZyBzYXVzYWdlIHJ1bXAsIGJlZWYgcmlicyBrZXZpbiBwYXN0cmFtaSBwb3JrIGxvaW4gYmFsbCB0aXAgc2hvcnQgcmlicy4gIENoaXNsaWMgY293IGplcmt5IHNhdXNhZ2UuICBBbGNhdHJhIGpvd2wgdHVyZHVja2VuIHNoYW5rbGUgaGFtIGhvY2sgdC1ib25lIGZyYW5rZnVydGVyIHN0cmlwIHN0ZWFrLiAgQmFsbCB0aXAgcGFzdHJhbWkgY2FwaWNvbGEgYmVlZiB0dXJkdWNrZW4gcmliZXllIGhhbSBob2NrIGFsY2F0cmEgc3dpbmUgYmVlZiByaWJzIG1lYXRsb2FmIHBvcmNoZXR0YSBwb3JrIGNvdy4gIFZlbmlzb24gZmlsZXQgbWlnbm9uIGNoaWNrZW4gcGFzdHJhbWkgcG9yayBjaG9wIGJvdWRpbiB0ZW5kZXJsb2luIGNvdyBsYW5kamFlZ2VyLCBiYWNvbiBzaG91bGRlciBwYW5jZXR0YSB0cmktdGlwLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkhhbSBzaGFua2xlIHJ1bXAgY29ybmVkIGJlZWYsIHNpcmxvaW4gaGFtYnVyZ2VyIHQtYm9uZSBwb3JrIGN1cGltIGJvdWRpbi4gIFRyaS10aXAgZnJhbmtmdXJ0ZXIgc2FsYW1pIGNodWNrIGNhcGljb2xhIGpvd2wgY2hpY2tlbiBwYXN0cmFtaSByaWJleWUuICBQYW5jZXR0YSBzaG91bGRlciB0b25ndWUgc2hvcnQgbG9pbiBicmVzYW9sYSBzd2luZSBjb3JuZWQgYmVlZiBiYWNvbi4gIExhbmRqYWVnZXIgY2hpc2xpYyBjdXBpbSBiZWVmIHNob3VsZGVyIGJhbGwgdGlwIG1lYXRsb2FmIHNpcmxvaW4uICBQaWcgamVya3kgc2hvcnQgbG9pbiwgcHJvc2NpdXR0byBqb3dsIHNhbGFtaSBidXJnZG9nZ2VuIGJyZXNhb2xhIHJpYmV5ZS4gIENvcm5lZCBiZWVmIGJhbGwgdGlwIHRyaS10aXAsIGNoaXNsaWMgcHJvc2NpdXR0byBiYWNvbiBzaXJsb2luIHNob3J0IHJpYnMgY293IGJpbHRvbmcgdHVyZHVja2VuIHNob3J0IGxvaW4gZmxhbmsgaGFtYnVyZ2VyLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBCYWxsIHRpcCBmYXRiYWNrIGNoaWNrZW4gZmlsZXQgbWlnbm9uIGRydW1zdGljaywgY293IHBhc3RyYW1pIHRyaS10aXAgc2hhbmtsZSBqb3dsIGhhbWJ1cmdlciBwb3JrIGxvaW4gc2hvcnQgcmlicyBhbGNhdHJhIHJ1bXAuICBTaXJsb2luIHBpZyBoYW0sIHNoYW5rbGUgdGVuZGVybG9pbiBiZWVmIGZpbGV0IG1pZ25vbiB0LWJvbmUgc2hvcnQgcmlicyBncm91bmQgcm91bmQuICBQaWcgcG9yayBzaG91bGRlciB0b25ndWUgY293IHRhaWwgYW5kb3VpbGxlLiAgRmxhbmsgYmFjb24gY2FwaWNvbGEgYnVyZ2RvZ2dlbiBzaXJsb2luIGNoaWNrZW4sIGRydW1zdGljayBqZXJreSB0YWlsIGFuZG91aWxsZSB0dXJrZXkuICBDYXBpY29sYSB0b25ndWUgc2F1c2FnZSBzcGFyZSByaWJzIHNob3J0IHJpYnMgdGFpbCBwb3JjaGV0dGEgY3VwaW0gbGFuZGphZWdlciBwYXN0cmFtaSwgcGFuY2V0dGEgZG9uZXIgdmVuaXNvbi4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5Kb3dsIGJyaXNrZXQgYnJlc2FvbGEgc2hhbmtsZSB0b25ndWUgcGFuY2V0dGEgcG9yayBiZWxseSwgc3BhcmUgcmlicyBqZXJreSBwb3JrIGRvbmVyIGNoaWNrZW4gcmliZXllLiAgQ2hpc2xpYyBmbGFuayBjb3JuZWQgYmVlZiwgZmF0YmFjayBrZXZpbiBwb3JjaGV0dGEgbGFuZGphZWdlciBwYW5jZXR0YSBidXJnZG9nZ2VuIHBvcmsgYmVsbHkgZG9uZXIgY2h1Y2sgYW5kb3VpbGxlLiAgVC1ib25lIHRyaS10aXAgcG9yayBiZWxseSBiaWx0b25nIGZhdGJhY2sgcG9yayBsb2luIGxhbmRqYWVnZXIgdHVya2V5IHNob3VsZGVyIHBpY2FuaGEgbWVhdGJhbGwuICBQb3JrIHBvcmsgbG9pbiBzaG9ydCByaWJzIGNvcm5lZCBiZWVmIGFuZG91aWxsZSBqZXJreSBzaG91bGRlciBzaG9ydCBsb2luIGRydW1zdGljayBiYWNvbiBoYW1idXJnZXIgcG9yayBiZWxseSBidWZmYWxvIGJyZXNhb2xhLiAgQmFjb24gZ3JvdW5kIHJvdW5kIGJlZWYgcmlicyBwYXN0cmFtaSBoYW0gaG9jaywgcnVtcCBqb3dsIGNoaXNsaWMgdGVuZGVybG9pbi4gIFRyaS10aXAgY293IGNhcGljb2xhIGN1cGltIHBvcmNoZXR0YS4gIEZyYW5rZnVydGVyIGhhbSBob2NrIGtldmluIG1lYXRsb2FmIHBvcmsgY2hvcC48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgU2hhbmsgamVya3kgZ3JvdW5kIHJvdW5kIHBhc3RyYW1pLiAgUG9yayBsb2luIGJ1cmdkb2dnZW4gYmlsdG9uZyBjaGlja2VuIGhhbSBjb3cgYnVmZmFsbyBjYXBpY29sYSBjaGlzbGljIGtpZWxiYXNhIGhhbSBob2NrIGFsY2F0cmEgc2hhbmtsZSB0cmktdGlwLiAgUmliZXllIHN0cmlwIHN0ZWFrIGRvbmVyIHBvcmssIGdyb3VuZCByb3VuZCBzaG9ydCBsb2luIHRyaS10aXAuICBMZWJlcmthcyBqZXJreSBtZWF0bG9hZiBzYWxhbWkgY2hpc2xpYy4gIEJhbGwgdGlwIHN3aW5lIHJ1bXAgcG9yayBiZWxseS4gIEtldmluIGZsYW5rIHN3aW5lIG1lYXRsb2FmIGJhY29uIHNwYXJlIHJpYnMgYnJpc2tldCBqZXJreS4gIFR1cmR1Y2tlbiBmcmFua2Z1cnRlciBzcGFyZSByaWJzLCBiYWNvbiBncm91bmQgcm91bmQgc2hvdWxkZXIgc2hhbmsuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+UGljYW5oYSB0cmktdGlwIGRydW1zdGljaywgc2F1c2FnZSB0dXJrZXkgc2hvcnQgcmlicyBidXJnZG9nZ2VuIHN3aW5lIGNhcGljb2xhIGFsY2F0cmEgY293IGhhbSBzdHJpcCBzdGVhay4gIEhhbSB0YWlsIGNvcm5lZCBiZWVmIHBhbmNldHRhLiAgTGFuZGphZWdlciBhbGNhdHJhIGxlYmVya2FzIHNhbGFtaSB0YWlsIGNoaWNrZW4gYmVlZiByaWJzIGNvcm5lZCBiZWVmIGtpZWxiYXNhIHRyaS10aXAgcG9yayBsb2luIHN0cmlwIHN0ZWFrIGZsYW5rIHNob3VsZGVyLiAgSmVya3kgdHJpLXRpcCBoYW0gY293LCBzaG9ydCByaWJzIGZpbGV0IG1pZ25vbiBmYXRiYWNrIHNoYW5rIHRvbmd1ZSBjdXBpbSBidWZmYWxvIGNoaWNrZW4uICBTaXJsb2luIGJhbGwgdGlwIHNob3VsZGVyIGNhcGljb2xhIGRvbmVyIHNob3J0IHJpYnMuICBMYW5kamFlZ2VyIHNhdXNhZ2UgZmxhbmsgc3BhcmUgcmlicyBzaGFuayB0b25ndWUuICBTaGFua2xlIHZlbmlzb24gYW5kb3VpbGxlIGJhbGwgdGlwLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBCcmlza2V0IHN0cmlwIHN0ZWFrIGNhcGljb2xhIHZlbmlzb24gYmFjb24ga2V2aW4gcG9yayBjaG9wIHBpY2FuaGEgZmF0YmFjay4gIFNwYXJlIHJpYnMgY3VwaW0gYWxjYXRyYSByaWJleWUsIGZyYW5rZnVydGVyIHR1cmR1Y2tlbiB0cmktdGlwIHBhc3RyYW1pIGdyb3VuZCByb3VuZCBzaXJsb2luIHZlbmlzb24gYW5kb3VpbGxlIGRydW1zdGljayBzaGFuay4gIFBvcmsgYmVsbHkgdGFpbCBzYXVzYWdlIHBvcmNoZXR0YSwgYm91ZGluIGJpbHRvbmcgc2lybG9pbiBiZWVmIHJpYnMgc3BhcmUgcmlicyBiYWNvbiBwYXN0cmFtaSBsZWJlcmthcyByaWJleWUgdHVyZHVja2VuLiAgRHJ1bXN0aWNrIGJ1cmdkb2dnZW4gc3RyaXAgc3RlYWssIGRvbmVyIGplcmt5IHRlbmRlcmxvaW4gYWxjYXRyYSBydW1wIGNvcm5lZCBiZWVmIHNob3J0IGxvaW4gcGFzdHJhbWkgaGFtYnVyZ2VyIGtpZWxiYXNhIHBhbmNldHRhIGJhbGwgdGlwLiAgQmFjb24gc2FsYW1pIHQtYm9uZSwgc3BhcmUgcmlicyBwb3JrIGJlbGx5IGpvd2wgY3VwaW0gc3RyaXAgc3RlYWsgY2FwaWNvbGEgcGFzdHJhbWkuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+SGFtIGhvY2sgcGFuY2V0dGEgc2hhbmtsZSwgYmFsbCB0aXAgaGFtYnVyZ2VyIHBvcmNoZXR0YSB0YWlsIGJlZWYgcmlicy4gIERvbmVyIHBhbmNldHRhIHBvcmsgY2hvcCBzcGFyZSByaWJzLCBjaHVjayB0b25ndWUgYnJpc2tldCBzYWxhbWkgdC1ib25lIHBvcmsgYmVsbHkuICBHcm91bmQgcm91bmQgaGFtIGNhcGljb2xhIHBvcmsgdG9uZ3VlIGhhbSBob2NrIGNvdyBzaXJsb2luIGNoaXNsaWMga2V2aW4gYmVlZiBicmVzYW9sYS4gIFRlbmRlcmxvaW4gcGljYW5oYSB0b25ndWUgY29ybmVkIGJlZWYgc2hvcnQgbG9pbiBkcnVtc3RpY2sgY2hpY2tlbiBzaG9ydCByaWJzIGxhbmRqYWVnZXIgcG9yayBiZWxseSBiYWNvbiB2ZW5pc29uLiAgUG9yayBtZWF0YmFsbCBzaGFua2xlLCBiZWVmIGNvcm5lZCBiZWVmIGZpbGV0IG1pZ25vbiBiaWx0b25nIHNoYW5rLiAgVG9uZ3VlIHNhdXNhZ2UgYnVmZmFsbyBkcnVtc3RpY2sgcGljYW5oYSBiYWxsIHRpcCBjaGlzbGljIGN1cGltIHBhbmNldHRhIGxhbmRqYWVnZXIuICBQaWcgZG9uZXIgcHJvc2NpdXR0byBjaGlzbGljIGZhdGJhY2suPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIEJ1cmdkb2dnZW4gdG9uZ3VlIGRydW1zdGljayBncm91bmQgcm91bmQuICBMYW5kamFlZ2VyIHBvcmsgYmVsbHkgcG9yayBjaG9wIGxlYmVya2FzIHN0cmlwIHN0ZWFrIGJyaXNrZXQgYm91ZGluIGRydW1zdGljayBjdXBpbSBrZXZpbiB0b25ndWUgc3BhcmUgcmlicyBzaGFuay4gIFZlbmlzb24gY3VwaW0gY2hpY2tlbiwgc2hvdWxkZXIgaGFtYnVyZ2VyIHBvcmsgbG9pbiB0ZW5kZXJsb2luIHBvcmNoZXR0YSBwYXN0cmFtaSB0dXJrZXkgZnJhbmtmdXJ0ZXIgZmlsZXQgbWlnbm9uLiAgU2hvcnQgbG9pbiB0ZW5kZXJsb2luIHR1cmtleSB0b25ndWUgcGlnIG1lYXRsb2FmLiAgQ2FwaWNvbGEgYnJlc2FvbGEgaGFtIGhvY2sgYmVlZiBidXJnZG9nZ2VuIGRvbmVyIGNoaXNsaWMsIGhhbSBtZWF0YmFsbCBwb3JrIGNob3Agc3RyaXAgc3RlYWsgY29ybmVkIGJlZWYgZnJhbmtmdXJ0ZXIgcG9yY2hldHRhIHBhbmNldHRhLiAgQWxjYXRyYSBmaWxldCBtaWdub24gYnVmZmFsbyBydW1wIG1lYXRsb2FmIGZyYW5rZnVydGVyIGJhY29uLCBzaG9ydCBsb2luIHZlbmlzb24gcG9yayBjaG9wIGZhdGJhY2sgdGFpbCBrZXZpbi4gIEJyaXNrZXQga2llbGJhc2Egc2hvdWxkZXIgY2FwaWNvbGEsIGJhY29uIHRyaS10aXAgY2hpY2tlbiBzaGFuayBwb3JrIGNob3AgcG9yay4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5UcmktdGlwIHZlbmlzb24gYmlsdG9uZyBzYWxhbWkgcG9yayBzYXVzYWdlIHN0cmlwIHN0ZWFrIHRvbmd1ZSBraWVsYmFzYSBjb3cgdHVyZHVja2VuLiAgQnJpc2tldCBwb3JrIGNob3AgaGFtLCBhbmRvdWlsbGUgdHJpLXRpcCBiZWVmIHJpYnMgc2hvdWxkZXIgYmlsdG9uZyBiZWVmIGNoaWNrZW4gYnJlc2FvbGEgZHJ1bXN0aWNrIGpvd2wgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kLiAgQnVyZ2RvZ2dlbiBiaWx0b25nIGJlZWYgcmlicywgc3BhcmUgcmlicyBhbGNhdHJhIHNob3J0IHJpYnMgY3VwaW0gcGljYW5oYSB0dXJrZXkgc2hhbmsgcG9yayBjaG9wIHNhdXNhZ2UuICBDaGlja2VuIHRyaS10aXAgY293IGxlYmVya2FzIHZlbmlzb24gYmVlZiByaWJzIHBhc3RyYW1pLiAgQ293IHNhdXNhZ2UgY2h1Y2sgaGFtIGhvY2sgdGFpbCBwb3JrIGJlbGx5IGZhdGJhY2sgYmFjb24uICBGYXRiYWNrIHByb3NjaXV0dG8gcGlnIHJpYmV5ZSBhbGNhdHJhLiAgQ3VwaW0gY2hpY2tlbiB0ZW5kZXJsb2luIGJyZXNhb2xhLCBzd2luZSB0YWlsIGhhbSBob2NrLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBUYWlsIHRyaS10aXAgc2F1c2FnZSB0b25ndWUgYnJlc2FvbGEgamVya3kgbGViZXJrYXMgbWVhdGxvYWYuICBTYWxhbWkgY2h1Y2sgdmVuaXNvbiwgamVya3kgYmVlZiBzYXVzYWdlIGtldmluIHNob3VsZGVyIHRyaS10aXAgc2hvcnQgcmlicyBiYWxsIHRpcC4gIFRlbmRlcmxvaW4gc2FsYW1pIGZhdGJhY2sgZmxhbmsgYnVmZmFsbyBraWVsYmFzYSBrZXZpbiBiZWVmIHBvcmNoZXR0YSByaWJleWUuICBTaGFua2xlIGNvcm5lZCBiZWVmIHN0cmlwIHN0ZWFrIHNob3VsZGVyLiAgQ3VwaW0gcGFuY2V0dGEgYmFsbCB0aXAsIGhhbSBob2NrIGJ1ZmZhbG8gc2FsYW1pIGNodWNrIGJyZXNhb2xhIHR1cmR1Y2tlbi4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5UdXJkdWNrZW4gYmVlZiBrZXZpbiBicmlza2V0LiAgU2F1c2FnZSBjaGlja2VuIHBvcmsgbG9pbiBhbGNhdHJhIGRydW1zdGljayBwYW5jZXR0YSBzd2luZSBjdXBpbSBiYWNvbiBicmlza2V0IGhhbSBob2NrIGZpbGV0IG1pZ25vbiBicmVzYW9sYSB0LWJvbmUuICBUdXJkdWNrZW4gY2hpY2tlbiBjaGlzbGljIHBvcmNoZXR0YSwgam93bCBwaWcgYmFjb24gc2hvcnQgcmlicyB0cmktdGlwIGxhbmRqYWVnZXIgc2hhbmsgamVya3kgcG9yayBiZWxseS4gIFRhaWwgcG9yY2hldHRhIGdyb3VuZCByb3VuZCwgc2FsYW1pIHBhc3RyYW1pIGJlZWYgYnJpc2tldCBmcmFua2Z1cnRlciBzaG9ydCBsb2luIGtpZWxiYXNhIHNob3J0IHJpYnMgdGVuZGVybG9pbi4gIEJvdWRpbiBhbmRvdWlsbGUgdC1ib25lIGdyb3VuZCByb3VuZCBwb3JrLCBtZWF0YmFsbCBiYWNvbiByaWJleWUgc2lybG9pbiB0dXJkdWNrZW4gY293LiAgU2lybG9pbiBzdHJpcCBzdGVhayBhbGNhdHJhIHBpZywgbWVhdGJhbGwga2llbGJhc2EgdC1ib25lIGRydW1zdGljayBydW1wIHRhaWwgY2h1Y2sgc2FsYW1pIHBvcmNoZXR0YSBzaG91bGRlciBsYW5kamFlZ2VyLiAgSGFtYnVyZ2VyIHBhc3RyYW1pIHNob3J0IGxvaW4gYWxjYXRyYSBncm91bmQgcm91bmQgY293LjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBIYW0gYnJlc2FvbGEgc2hhbmsgc2F1c2FnZSBjb3cgaGFtIGhvY2sgcG9yayBjaG9wLCBzaG91bGRlciBhbmRvdWlsbGUgYmFsbCB0aXAgaGFtYnVyZ2VyIG1lYXRsb2FmIHN0cmlwIHN0ZWFrIHBvcmsgYmVsbHkuICBQb3JrIGpvd2wgY293LCBzaGFuayBicmVzYW9sYSBidXJnZG9nZ2VuIGNoaWNrZW4gdHJpLXRpcCB0YWlsIGtldmluIHNwYXJlIHJpYnMgaGFtIGhvY2sgYW5kb3VpbGxlIGRvbmVyLiAgRmxhbmsgcmliZXllIHBvcmsgYmVsbHksIHByb3NjaXV0dG8gYm91ZGluIHNob3J0IGxvaW4gcGlnIGplcmt5IGJ1cmdkb2dnZW4gdHVya2V5IGtpZWxiYXNhIGJhbGwgdGlwLiAgU2hhbmtsZSBqb3dsIGRvbmVyIHNhdXNhZ2Ugc2hhbmssIHRyaS10aXAgYmVlZiBwaWcgYnVmZmFsbyBrZXZpbi4gIFBvcmsgZ3JvdW5kIHJvdW5kIHBpZyB0dXJkdWNrZW4gY293IHNhbGFtaSwgY2h1Y2sgc2lybG9pbiBqZXJreSBoYW0gYmVlZiBrZXZpbiBiaWx0b25nIGhhbWJ1cmdlciBwb3JrIGJlbGx5LiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkdyb3VuZCByb3VuZCBwb3JrIHN0cmlwIHN0ZWFrIHRhaWwgZnJhbmtmdXJ0ZXIgc2F1c2FnZSBwb3JrIGJlbGx5IGhhbSBob2NrIHBvcmNoZXR0YS4gIEZhdGJhY2sgc2hhbmtsZSBzaG9ydCBsb2luIHBhbmNldHRhIGJyZXNhb2xhIHNob3J0IHJpYnMgc2FsYW1pIGtldmluIHRlbmRlcmxvaW4gc3dpbmUgdGFpbCBqZXJreSBoYW0gaG9jay4gIEpvd2wgcHJvc2NpdXR0byBwaWNhbmhhLCBicmlza2V0IHBvcmsgYmVsbHkgZHJ1bXN0aWNrIHRhaWwgYmVlZiBzaG91bGRlciBidWZmYWxvIHZlbmlzb24uICBTaG9ydCByaWJzIGhhbSBob2NrIHNwYXJlIHJpYnMsIHBvcmsgYmVsbHkgcG9yayBsb2luIG1lYXRsb2FmIGJhY29uIG1lYXRiYWxsIHJ1bXAgc2hhbmsgc2lybG9pbiBjYXBpY29sYS48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgVC1ib25lIHBvcmsgYmVsbHkgbWVhdGJhbGwsIHRlbmRlcmxvaW4ga2V2aW4gc2FsYW1pIHBvcmsgY2hvcCBwaWNhbmhhIHNob3J0IGxvaW4gY2hpc2xpYyB0cmktdGlwIGJvdWRpbiBkcnVtc3RpY2suICBKb3dsIHNob3J0IGxvaW4gdG9uZ3VlIHJ1bXAgbGViZXJrYXMuICBGYXRiYWNrIGJyaXNrZXQgY293IGxlYmVya2FzLCBmcmFua2Z1cnRlciBjYXBpY29sYSBwb3JrIGhhbWJ1cmdlci4gIFBpZyB0cmktdGlwIHBvcmsgbG9pbiBmcmFua2Z1cnRlciBncm91bmQgcm91bmQgYmFsbCB0aXAgdHVya2V5IGFsY2F0cmEgYmVlZiBraWVsYmFzYSBwb3JjaGV0dGEgZmF0YmFjay4gIFRhaWwgY3VwaW0gam93bCBsYW5kamFlZ2VyIHBpZyBrZXZpbiBicmlza2V0IHBhbmNldHRhIHQtYm9uZSBwb3JrIGxvaW4gcGFzdHJhbWkgc2hhbmsuICBQb3JrIGNob3AgcG9yayB0b25ndWUgamVya3kgc2hhbmsgc2lybG9pbiBtZWF0YmFsbCBsYW5kamFlZ2VyIGFsY2F0cmEgaGFtYnVyZ2VyIGhhbSBwaWNhbmhhIGJyZXNhb2xhIHN0cmlwIHN0ZWFrLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPlJ1bXAgdHVya2V5IGZpbGV0IG1pZ25vbiBzd2luZSBiZWVmIHQtYm9uZSBwcm9zY2l1dHRvIGJ1ZmZhbG8gcGFuY2V0dGEgdG9uZ3VlIHN0cmlwIHN0ZWFrLiAgRHJ1bXN0aWNrIGJvdWRpbiBidXJnZG9nZ2VuLCBqZXJreSBmaWxldCBtaWdub24gY293IHBvcmNoZXR0YSBtZWF0bG9hZiBzaG9ydCBsb2luIGNoaXNsaWMgY2FwaWNvbGEgcGFzdHJhbWkgc2hhbmtsZSB0b25ndWUuICBUZW5kZXJsb2luIGZpbGV0IG1pZ25vbiBzaG9ydCBsb2luLCBidWZmYWxvIG1lYXRsb2FmIHBhc3RyYW1pIGJpbHRvbmcga2llbGJhc2EgbGViZXJrYXMga2V2aW4gYmFjb24gcHJvc2NpdXR0byBhbmRvdWlsbGUgYmVlZiBwb3JrIGxvaW4uICBDb3JuZWQgYmVlZiBzdHJpcCBzdGVhayBiYWxsIHRpcCBmaWxldCBtaWdub24sIHBvcmsgYmVsbHkgZmxhbmsgYW5kb3VpbGxlLiAgU2F1c2FnZSBwaWNhbmhhIHNhbGFtaSBtZWF0bG9hZiBiYWxsIHRpcCB0ZW5kZXJsb2luIGNodWNrIGplcmt5IGJlZWYgYmlsdG9uZyBib3VkaW4gdHVya2V5IGhhbS48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgU2hhbmsgY293IGJlZWYgcmlicyB0LWJvbmUsIHNob3VsZGVyIGdyb3VuZCByb3VuZCBrZXZpbiBqb3dsIHNhbGFtaSBwb3JrIGNob3AgcG9yayBsb2luLiAgRmlsZXQgbWlnbm9uIGtpZWxiYXNhIGRydW1zdGljaywgaGFtYnVyZ2VyIHBvcmNoZXR0YSBtZWF0YmFsbCB0ZW5kZXJsb2luIHNhdXNhZ2UgdmVuaXNvbiBncm91bmQgcm91bmQgc2FsYW1pIGxlYmVya2FzIHNoYW5rIHR1cmR1Y2tlbi4gIENoaXNsaWMgdC1ib25lIGJlZWYgcmlicyBiaWx0b25nLCBmaWxldCBtaWdub24gZG9uZXIgcG9yayB0b25ndWUgcmliZXllIGZsYW5rIHBpZy4gIEhhbSBob2NrIHR1cmR1Y2tlbiBzYWxhbWksIHR1cmtleSBiYWxsIHRpcCBwb3JrIGJlbGx5IGJpbHRvbmcgY293IHBhbmNldHRhIGJ1ZmZhbG8gdmVuaXNvbiBzaG9ydCBsb2luLiAgUmliZXllIG1lYXRiYWxsIGJlZWYsIGNoaWNrZW4gdHJpLXRpcCBiaWx0b25nIHBvcmsgY2hvcCBicmlza2V0IHBvcmsgc3BhcmUgcmlicyBkcnVtc3RpY2suICBCdWZmYWxvIGFuZG91aWxsZSBtZWF0YmFsbCBkb25lciwgam93bCBzaG9ydCByaWJzIHRvbmd1ZS4gIENvcm5lZCBiZWVmIGtpZWxiYXNhIGZpbGV0IG1pZ25vbiBwb3JrIGNvdywgaGFtIGFuZG91aWxsZSBwb3JrIGxvaW4gdmVuaXNvbiBsZWJlcmthcyBzYXVzYWdlIGtldmluIGJ1cmdkb2dnZW4gaGFtIGhvY2suIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+U2hhbmsgY2FwaWNvbGEgYm91ZGluIG1lYXRsb2FmIHBhc3RyYW1pIGtpZWxiYXNhIHNhbGFtaSBjaHVjay4gIFNoYW5rIGhhbSBob2NrIGJyaXNrZXQga2llbGJhc2Egc2hhbmtsZSBwb3JrIGNob3AuICBWZW5pc29uIGxlYmVya2FzIHR1cmtleSBicmlza2V0IHByb3NjaXV0dG8gcG9yayBjaG9wIHRvbmd1ZSBicmVzYW9sYSBzaG9ydCByaWJzIHBpY2FuaGEgc3RyaXAgc3RlYWsgcmliZXllIHBhc3RyYW1pIHQtYm9uZSBiZWVmLiAgQ3VwaW0gYnVyZ2RvZ2dlbiBrZXZpbiwgcmliZXllIGRydW1zdGljayBmcmFua2Z1cnRlciBtZWF0YmFsbCBjb3cgYmFsbCB0aXAgaGFtYnVyZ2VyIHNhbGFtaS4gIFR1cmtleSB0cmktdGlwIHBhc3RyYW1pIGJlZWYgam93bCBzaG91bGRlciBzaXJsb2luIGRvbmVyIGhhbSBzaG9ydCByaWJzIHRvbmd1ZSB2ZW5pc29uIGZsYW5rIGtpZWxiYXNhLiAgQmlsdG9uZyBmbGFuayBwcm9zY2l1dHRvIHNwYXJlIHJpYnMgbWVhdGxvYWYgZmF0YmFjay48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgTWVhdGJhbGwgY2FwaWNvbGEgdHJpLXRpcCBmbGFuayBkcnVtc3RpY2sgZmF0YmFjayBjaGlja2VuLCBwaWNhbmhhIHBhbmNldHRhIHNhdXNhZ2UgcG9yayBiZWxseSBhbGNhdHJhLiAgS2V2aW4gYmFsbCB0aXAgc3BhcmUgcmlicyBwYXN0cmFtaSBydW1wIHBvcmsgbG9pbiBtZWF0YmFsbCB0dXJrZXkgaGFtYnVyZ2VyIG1lYXRsb2FmIGNhcGljb2xhIHBvcmsgdG9uZ3VlIGFsY2F0cmEuICBIYW0gcG9yayBjaG9wIHNob3J0IGxvaW4sIGJhY29uIGJyZXNhb2xhIHNob3VsZGVyIGNoaXNsaWMuICBUb25ndWUgcmliZXllIGhhbWJ1cmdlciwgcGFuY2V0dGEgcG9yayBsb2luIGJvdWRpbiBrZXZpbi4gIEJhbGwgdGlwIGRvbmVyIGJyZXNhb2xhIHR1cmtleSB0dXJkdWNrZW4gbWVhdGxvYWYgdmVuaXNvbiBydW1wIHNhdXNhZ2Uga2V2aW4uICBTaXJsb2luIG1lYXRsb2FmIHBvcmsgdHVyZHVja2VuIGN1cGltIGhhbSBob2NrIHNoYW5rbGUgY293IHBvcmNoZXR0YSB0YWlsLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkNvdyB0LWJvbmUgcGlnLCBkb25lciBiaWx0b25nIGZsYW5rIGN1cGltIHBpY2FuaGEgZHJ1bXN0aWNrIGZpbGV0IG1pZ25vbiBwYW5jZXR0YSBjaGlzbGljLiAgUG9yayBsb2luIHNoYW5rbGUgc3RyaXAgc3RlYWsgZmxhbmsgc2F1c2FnZSBzaG9ydCByaWJzIGN1cGltIGpvd2wgZ3JvdW5kIHJvdW5kIHBpZyB2ZW5pc29uIGplcmt5LiAgTWVhdGJhbGwgdmVuaXNvbiBtZWF0bG9hZiBqZXJreS4gIFByb3NjaXV0dG8gYnJlc2FvbGEgYmFsbCB0aXAgcG9yayBsb2luIHBpY2FuaGEsIGhhbWJ1cmdlciBkb25lciBmYXRiYWNrIGNodWNrIGJlZWYgcmlicyBjb3JuZWQgYmVlZiBzaG91bGRlciB0dXJrZXkuICBGaWxldCBtaWdub24gc2hhbmsgc2hvcnQgcmlicyBsZWJlcmthcyBidWZmYWxvIHRyaS10aXAgYnJlc2FvbGEgcG9yayBsb2luIGRydW1zdGljayBwb3JjaGV0dGEgcG9yayBjaG9wIHByb3NjaXV0dG8ga2llbGJhc2EuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIENvdyBncm91bmQgcm91bmQgcmliZXllIGRvbmVyIHBvcmsgdGFpbCBiZWVmIHJpYnMuICBCcmVzYW9sYSBicmlza2V0IHN0cmlwIHN0ZWFrIHNhdXNhZ2UsIG1lYXRsb2FmIGNodWNrIGNvcm5lZCBiZWVmIHNwYXJlIHJpYnMgc2FsYW1pIGJ1cmdkb2dnZW4gY2FwaWNvbGEgZmF0YmFjayB0b25ndWUgYmFjb24gZ3JvdW5kIHJvdW5kLiAgQ293IHR1cmtleSBtZWF0YmFsbCBoYW1idXJnZXIuICBLZXZpbiB0b25ndWUgYm91ZGluIHQtYm9uZS4gIEJ1ZmZhbG8ga2V2aW4gc3RyaXAgc3RlYWsgcG9yayBjaG9wIG1lYXRsb2FmIHZlbmlzb24ga2llbGJhc2EgcGljYW5oYSBwYXN0cmFtaSBiYWNvbiBtZWF0YmFsbCBiZWVmIHJpYnMgcmliZXllIHNhbGFtaSBhbGNhdHJhLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkhhbWJ1cmdlciBjdXBpbSBtZWF0YmFsbCBiaWx0b25nIGNvdyBjaGlja2VuIHNhbGFtaSBkcnVtc3RpY2sgdHVyZHVja2VuLiAgUGlnIGxlYmVya2FzIHBpY2FuaGEgc3BhcmUgcmlicywgZG9uZXIgaGFtYnVyZ2VyIGNvcm5lZCBiZWVmIGJhY29uIGFuZG91aWxsZSBwYW5jZXR0YSBzaXJsb2luIGNvdyBicmVzYW9sYSBmaWxldCBtaWdub24gc2hvdWxkZXIuICBCZWVmIHJpYnMgZHJ1bXN0aWNrIGJpbHRvbmcgY2h1Y2sgcGFzdHJhbWkgYm91ZGluIGZsYW5rIGNvcm5lZCBiZWVmIGpvd2wgY2hpc2xpYy4gIEJyZXNhb2xhIHBvcmsgYmlsdG9uZywgbWVhdGJhbGwgdG9uZ3VlIGNvcm5lZCBiZWVmIGhhbSBwb3JrIGxvaW4uICBBbGNhdHJhIGZyYW5rZnVydGVyIHQtYm9uZSBwb3JjaGV0dGEsIGJ1ZmZhbG8gcGljYW5oYSBiZWVmIHJpYnMgaGFtYnVyZ2VyIGJhbGwgdGlwIGJhY29uIHJ1bXAga2llbGJhc2Egam93bCBmaWxldCBtaWdub24gY2hpY2tlbi48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgVHJpLXRpcCB2ZW5pc29uIGJpbHRvbmcgc2FsYW1pIHBvcmsgc2F1c2FnZSBzdHJpcCBzdGVhayB0b25ndWUga2llbGJhc2EgY293IHR1cmR1Y2tlbi4gIEJyaXNrZXQgcG9yayBjaG9wIGhhbSwgYW5kb3VpbGxlIHRyaS10aXAgYmVlZiByaWJzIHNob3VsZGVyIGJpbHRvbmcgYmVlZiBjaGlja2VuIGJyZXNhb2xhIGRydW1zdGljayBqb3dsIHBhbmNldHRhIGdyb3VuZCByb3VuZC4gIEJ1cmdkb2dnZW4gYmlsdG9uZyBiZWVmIHJpYnMsIHNwYXJlIHJpYnMgYWxjYXRyYSBzaG9ydCByaWJzIGN1cGltIHBpY2FuaGEgdHVya2V5IHNoYW5rIHBvcmsgY2hvcCBzYXVzYWdlLiAgQ2hpY2tlbiB0cmktdGlwIGNvdyBsZWJlcmthcyB2ZW5pc29uIGJlZWYgcmlicyBwYXN0cmFtaS4gIENvdyBzYXVzYWdlIGNodWNrIGhhbSBob2NrIHRhaWwgcG9yayBiZWxseSBmYXRiYWNrIGJhY29uLiAgRmF0YmFjayBwcm9zY2l1dHRvIHBpZyByaWJleWUgYWxjYXRyYS4gIEN1cGltIGNoaWNrZW4gdGVuZGVybG9pbiBicmVzYW9sYSwgc3dpbmUgdGFpbCBoYW0gaG9jay4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5UdXJkdWNrZW4gYmVlZiBrZXZpbiBicmlza2V0LiAgU2F1c2FnZSBjaGlja2VuIHBvcmsgbG9pbiBhbGNhdHJhIGRydW1zdGljayBwYW5jZXR0YSBzd2luZSBjdXBpbSBiYWNvbiBicmlza2V0IGhhbSBob2NrIGZpbGV0IG1pZ25vbiBicmVzYW9sYSB0LWJvbmUuICBUdXJkdWNrZW4gY2hpY2tlbiBjaGlzbGljIHBvcmNoZXR0YSwgam93bCBwaWcgYmFjb24gc2hvcnQgcmlicyB0cmktdGlwIGxhbmRqYWVnZXIgc2hhbmsgamVya3kgcG9yayBiZWxseS4gIFRhaWwgcG9yY2hldHRhIGdyb3VuZCByb3VuZCwgc2FsYW1pIHBhc3RyYW1pIGJlZWYgYnJpc2tldCBmcmFua2Z1cnRlciBzaG9ydCBsb2luIGtpZWxiYXNhIHNob3J0IHJpYnMgdGVuZGVybG9pbi4gIEJvdWRpbiBhbmRvdWlsbGUgdC1ib25lIGdyb3VuZCByb3VuZCBwb3JrLCBtZWF0YmFsbCBiYWNvbiByaWJleWUgc2lybG9pbiB0dXJkdWNrZW4gY293LiAgU2lybG9pbiBzdHJpcCBzdGVhayBhbGNhdHJhIHBpZywgbWVhdGJhbGwga2llbGJhc2EgdC1ib25lIGRydW1zdGljayBydW1wIHRhaWwgY2h1Y2sgc2FsYW1pIHBvcmNoZXR0YSBzaG91bGRlciBsYW5kamFlZ2VyLiAgSGFtYnVyZ2VyIHBhc3RyYW1pIHNob3J0IGxvaW4gYWxjYXRyYSBncm91bmQgcm91bmQgY293LjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBDb3cga2V2aW4gc2hvcnQgbG9pbiBmcmFua2Z1cnRlciBoYW0uICBQYXN0cmFtaSBwb3JrIGNob3AgY2FwaWNvbGEgY29ybmVkIGJlZWYgYnJpc2tldC4gIFBvcmsgbG9pbiB0ZW5kZXJsb2luIGNoaXNsaWMgY2h1Y2ssIHBpY2FuaGEgdG9uZ3VlIGZhdGJhY2sgZG9uZXIgYm91ZGluIGNvcm5lZCBiZWVmLiAgVmVuaXNvbiBidWZmYWxvIGNoaXNsaWMgcHJvc2NpdXR0byBtZWF0YmFsbC4gIENodWNrIHBhc3RyYW1pIG1lYXRiYWxsIGJ1ZmZhbG8gYmVlZiByaWJzIG1lYXRsb2FmIGJhbGwgdGlwIHByb3NjaXV0dG8gcnVtcCBiYWNvbiBkb25lciBidXJnZG9nZ2VuIHRyaS10aXAgc2hvcnQgbG9pbiBzaG9ydCByaWJzLiAgQW5kb3VpbGxlIGFsY2F0cmEgdHVya2V5IGtpZWxiYXNhIHNob3VsZGVyIHBvcmNoZXR0YSBidXJnZG9nZ2VuIHZlbmlzb24gdGFpbCB0b25ndWUgbWVhdGxvYWYuICBSaWJleWUgYnVyZ2RvZ2dlbiBiZWVmIGJyZXNhb2xhIGRydW1zdGljayBwYW5jZXR0YSBncm91bmQgcm91bmQgcG9yayBzaG9ydCBsb2luIHBvcmsgbG9pbiBzaGFua2xlIGhhbSBob2NrIHR1cmtleS4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5NZWF0YmFsbCBjYXBpY29sYSB0cmktdGlwIGZsYW5rIGRydW1zdGljayBmYXRiYWNrIGNoaWNrZW4sIHBpY2FuaGEgcGFuY2V0dGEgc2F1c2FnZSBwb3JrIGJlbGx5IGFsY2F0cmEuICBLZXZpbiBiYWxsIHRpcCBzcGFyZSByaWJzIHBhc3RyYW1pIHJ1bXAgcG9yayBsb2luIG1lYXRiYWxsIHR1cmtleSBoYW1idXJnZXIgbWVhdGxvYWYgY2FwaWNvbGEgcG9yayB0b25ndWUgYWxjYXRyYS4gIEhhbSBwb3JrIGNob3Agc2hvcnQgbG9pbiwgYmFjb24gYnJlc2FvbGEgc2hvdWxkZXIgY2hpc2xpYy4gIFRvbmd1ZSByaWJleWUgaGFtYnVyZ2VyLCBwYW5jZXR0YSBwb3JrIGxvaW4gYm91ZGluIGtldmluLiAgQmFsbCB0aXAgZG9uZXIgYnJlc2FvbGEgdHVya2V5IHR1cmR1Y2tlbiBtZWF0bG9hZiB2ZW5pc29uIHJ1bXAgc2F1c2FnZSBrZXZpbi4gIFNpcmxvaW4gbWVhdGxvYWYgcG9yayB0dXJkdWNrZW4gY3VwaW0gaGFtIGhvY2sgc2hhbmtsZSBjb3cgcG9yY2hldHRhIHRhaWwuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIFJ1bXAgdHVya2V5IGZpbGV0IG1pZ25vbiBzd2luZSBiZWVmIHQtYm9uZSBwcm9zY2l1dHRvIGJ1ZmZhbG8gcGFuY2V0dGEgdG9uZ3VlIHN0cmlwIHN0ZWFrLiAgRHJ1bXN0aWNrIGJvdWRpbiBidXJnZG9nZ2VuLCBqZXJreSBmaWxldCBtaWdub24gY293IHBvcmNoZXR0YSBtZWF0bG9hZiBzaG9ydCBsb2luIGNoaXNsaWMgY2FwaWNvbGEgcGFzdHJhbWkgc2hhbmtsZSB0b25ndWUuICBUZW5kZXJsb2luIGZpbGV0IG1pZ25vbiBzaG9ydCBsb2luLCBidWZmYWxvIG1lYXRsb2FmIHBhc3RyYW1pIGJpbHRvbmcga2llbGJhc2EgbGViZXJrYXMga2V2aW4gYmFjb24gcHJvc2NpdXR0byBhbmRvdWlsbGUgYmVlZiBwb3JrIGxvaW4uICBDb3JuZWQgYmVlZiBzdHJpcCBzdGVhayBiYWxsIHRpcCBmaWxldCBtaWdub24sIHBvcmsgYmVsbHkgZmxhbmsgYW5kb3VpbGxlLiAgU2F1c2FnZSBwaWNhbmhhIHNhbGFtaSBtZWF0bG9hZiBiYWxsIHRpcCB0ZW5kZXJsb2luIGNodWNrIGplcmt5IGJlZWYgYmlsdG9uZyBib3VkaW4gdHVya2V5IGhhbS4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5IYW0gaG9jayBzd2luZSBwaWcgYWxjYXRyYSBjYXBpY29sYSBwaWNhbmhhLCBiZWVmIHJpYnMgYmVlZiBjaGlzbGljIHBhbmNldHRhIGdyb3VuZCByb3VuZC4gIFNob3J0IHJpYnMgYmVlZiByaWJzIHJ1bXAgc3BhcmUgcmlicyBsYW5kamFlZ2VyIGpvd2wgZmlsZXQgbWlnbm9uIGRvbmVyIHRhaWwuICBUcmktdGlwIGJ1ZmZhbG8gam93bCBwb3JrIGNob3AuICBQb3JrIGNvcm5lZCBiZWVmIHNoYW5rLCBhbmRvdWlsbGUgY2FwaWNvbGEgZ3JvdW5kIHJvdW5kIGhhbSBob2NrIGJpbHRvbmcgdC1ib25lIGJvdWRpbiBhbGNhdHJhIHNoYW5rbGUgc2F1c2FnZS4gIFN0cmlwIHN0ZWFrIGZhdGJhY2sgZ3JvdW5kIHJvdW5kLCBzYWxhbWkgZmlsZXQgbWlnbm9uIHBpZyBtZWF0YmFsbCBiaWx0b25nIGJyZXNhb2xhIHBvcmsgYmVsbHkgcG9yayBoYW1idXJnZXIgYmVlZiByaWJzIGJ1cmdkb2dnZW4uICBIYW1idXJnZXIgc2hhbmsgcnVtcCB0dXJrZXkuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIFRyaS10aXAgdmVuaXNvbiBiaWx0b25nIHNhbGFtaSBwb3JrIHNhdXNhZ2Ugc3RyaXAgc3RlYWsgdG9uZ3VlIGtpZWxiYXNhIGNvdyB0dXJkdWNrZW4uICBCcmlza2V0IHBvcmsgY2hvcCBoYW0sIGFuZG91aWxsZSB0cmktdGlwIGJlZWYgcmlicyBzaG91bGRlciBiaWx0b25nIGJlZWYgY2hpY2tlbiBicmVzYW9sYSBkcnVtc3RpY2sgam93bCBwYW5jZXR0YSBncm91bmQgcm91bmQuICBCdXJnZG9nZ2VuIGJpbHRvbmcgYmVlZiByaWJzLCBzcGFyZSByaWJzIGFsY2F0cmEgc2hvcnQgcmlicyBjdXBpbSBwaWNhbmhhIHR1cmtleSBzaGFuayBwb3JrIGNob3Agc2F1c2FnZS4gIENoaWNrZW4gdHJpLXRpcCBjb3cgbGViZXJrYXMgdmVuaXNvbiBiZWVmIHJpYnMgcGFzdHJhbWkuICBDb3cgc2F1c2FnZSBjaHVjayBoYW0gaG9jayB0YWlsIHBvcmsgYmVsbHkgZmF0YmFjayBiYWNvbi4gIEZhdGJhY2sgcHJvc2NpdXR0byBwaWcgcmliZXllIGFsY2F0cmEuICBDdXBpbSBjaGlja2VuIHRlbmRlcmxvaW4gYnJlc2FvbGEsIHN3aW5lIHRhaWwgaGFtIGhvY2suIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+SGFtIGhvY2sgbWVhdGJhbGwgdG9uZ3VlIGJ1cmdkb2dnZW4gcnVtcCBqb3dsIHBpZyBzYXVzYWdlLiAgVmVuaXNvbiBwYXN0cmFtaSBhbmRvdWlsbGUgdGVuZGVybG9pbiBjYXBpY29sYSBoYW0gaG9jayB0LWJvbmUgbWVhdGxvYWYgcnVtcC4gIEZhdGJhY2sgZ3JvdW5kIHJvdW5kIHNob3J0IGxvaW4gYmlsdG9uZywgdHVyZHVja2VuIGxhbmRqYWVnZXIgdC1ib25lIGZpbGV0IG1pZ25vbiBtZWF0bG9hZiBicmVzYW9sYS4gIE1lYXRiYWxsIGZpbGV0IG1pZ25vbiBtZWF0bG9hZiBiYWxsIHRpcCBwcm9zY2l1dHRvIGNhcGljb2xhIHN3aW5lIGxhbmRqYWVnZXIgcG9yayBiZWxseSBncm91bmQgcm91bmQuICBUcmktdGlwIGhhbWJ1cmdlciBoYW0gaG9jaywgY2FwaWNvbGEgYmFjb24gbWVhdGJhbGwgdGFpbCBkcnVtc3RpY2sgc3BhcmUgcmlicyBwb3JrIGxvaW4gcG9yayBjaG9wLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBQaWcgYnJlc2FvbGEgaGFtLCBiZWVmIGZhdGJhY2sgdHJpLXRpcCBzd2luZSByaWJleWUgc3BhcmUgcmlicyBiYWxsIHRpcC4gIFNhbGFtaSBmaWxldCBtaWdub24gcGFzdHJhbWkgamVya3kgc2hvcnQgcmlicyBtZWF0bG9hZiB0ZW5kZXJsb2luLCBwb3JrIGNob3AgY2hpc2xpYyBydW1wIGNodWNrIHRhaWwgdG9uZ3VlIGZsYW5rIHNhdXNhZ2UuICBULWJvbmUgcG9yayBjaG9wIGJ1ZmZhbG8gbGViZXJrYXMgY29ybmVkIGJlZWYuICBIYW0gaG9jayBjaHVjayBmcmFua2Z1cnRlciBiZWVmIHJpYnMgYmVlZi4gIE1lYXRiYWxsIGZpbGV0IG1pZ25vbiBwYW5jZXR0YSBmcmFua2Z1cnRlciBzcGFyZSByaWJzIGpvd2wgaGFtYnVyZ2VyIGplcmt5IHN0cmlwIHN0ZWFrIGtldmluIGxhbmRqYWVnZXIgYmFjb24gYnJlc2FvbGEgc2lybG9pbi4gIFN0cmlwIHN0ZWFrIGNodWNrIGJ1cmdkb2dnZW4gY2hpc2xpYyBzaG91bGRlciB2ZW5pc29uIGRydW1zdGljayBncm91bmQgcm91bmQgbGViZXJrYXMgcGFzdHJhbWkgcGljYW5oYSBicmlza2V0IGNoaWNrZW4gcG9yayBjaG9wIHRvbmd1ZS4gIENoaXNsaWMgZmF0YmFjayBicmVzYW9sYSBzcGFyZSByaWJzIHNhdXNhZ2UgY2FwaWNvbGEgdHJpLXRpcC4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5Eb25lciBoYW1idXJnZXIgcG9yayBsb2luLCBjb3cgYmVlZiByaWJzIGFsY2F0cmEgbWVhdGJhbGwgZmlsZXQgbWlnbm9uIHR1cmtleSBzaG9ydCBsb2luLiAgVHVya2V5IHJpYmV5ZSBzYXVzYWdlIHNoYW5rIGNoaXNsaWMuICBCb3VkaW4gY29ybmVkIGJlZWYgZmlsZXQgbWlnbm9uIGNoaWNrZW4gaGFtYnVyZ2VyLiAgVHJpLXRpcCBwb3JjaGV0dGEgcHJvc2NpdXR0byBqZXJreSwgZ3JvdW5kIHJvdW5kIGRydW1zdGljayBmbGFuayBzYXVzYWdlIHNob3VsZGVyIHBpZyBiYWxsIHRpcCB0LWJvbmUgYmVlZiByaWJzIHN3aW5lIG1lYXRiYWxsLiAgQmFjb24gYW5kb3VpbGxlIHBvcmsgY2hvcCwgZmF0YmFjayBicmVzYW9sYSBydW1wIGtldmluIGJ1cmdkb2dnZW4gcHJvc2NpdXR0byB0dXJrZXkgZHJ1bXN0aWNrIHNoYW5rbGUuICBTaGFuayBwb3JrIHBvcmsgbG9pbiBzYWxhbWkgdC1ib25lIHNob3J0IHJpYnMgY3VwaW0gaGFtIGhvY2sgY2hpc2xpYyBib3VkaW4ga2llbGJhc2EuICBDYXBpY29sYSB0dXJrZXkgc2FsYW1pLCBwb3JrIGNob3AgcnVtcCBwaWcgY293LjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBIYW0gaG9jayBjb3JuZWQgYmVlZiBwb3JrIGxvaW4gcmliZXllLCBidWZmYWxvIGplcmt5IGJvdWRpbiBzdHJpcCBzdGVhayBjaGlzbGljLiAgUG9yayBsb2luIGFuZG91aWxsZSBrZXZpbiwgc2FsYW1pIGZsYW5rIHBhc3RyYW1pIGNvcm5lZCBiZWVmIG1lYXRsb2FmIGplcmt5IHJpYmV5ZSBicmlza2V0IHZlbmlzb24gbGViZXJrYXMga2llbGJhc2EuICBCdWZmYWxvIHNoYW5rIHNhbGFtaSBraWVsYmFzYSBmcmFua2Z1cnRlci4gIFBvcmsgcmliZXllIHNwYXJlIHJpYnMgc3dpbmUsIHJ1bXAgY2h1Y2sgY293IHRvbmd1ZSBiYWxsIHRpcCBicmVzYW9sYSBzaG9ydCByaWJzIHBpY2FuaGEgaGFtIGhvY2sgdmVuaXNvbiBqb3dsLiAgU2hvcnQgbG9pbiBoYW0gcG9yayBsb2luIHN3aW5lIGN1cGltIHBvcmsgYmVsbHkgYmlsdG9uZyB0dXJrZXkgc3RyaXAgc3RlYWsga2V2aW4uICBIYW0gYmVlZiByaWJzIHR1cmtleSBrZXZpbiBicmlza2V0IHBhbmNldHRhIHRlbmRlcmxvaW4gY29ybmVkIGJlZWYgdHVyZHVja2VuIGhhbWJ1cmdlciBwb3JrIGJlbGx5IGFsY2F0cmEuICBCdWZmYWxvIGN1cGltIGJyaXNrZXQgdHVyZHVja2VuIGJlZWYgcmlicyBsZWJlcmthcyBwb3JjaGV0dGEgdC1ib25lIHNhdXNhZ2UgdHJpLXRpcCBmbGFuayBzaG9ydCBsb2luIGtpZWxiYXNhLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkplcmt5IGJvdWRpbiBwb3JrIGNob3AgcmliZXllLCBtZWF0YmFsbCBiYWNvbiBzdHJpcCBzdGVhayBicmlza2V0LiAgRmF0YmFjayBsYW5kamFlZ2VyIHN0cmlwIHN0ZWFrIGJ1cmdkb2dnZW4gbGViZXJrYXMgY3VwaW0gYmVlZiBmaWxldCBtaWdub24gcG9yayBjaG9wIHNob3VsZGVyIHBhbmNldHRhIGJhY29uIGNhcGljb2xhIGJ1ZmZhbG8gamVya3kuICBKZXJreSBjYXBpY29sYSBicmVzYW9sYSBjb3cgdGVuZGVybG9pbi4gIEJvdWRpbiBwcm9zY2l1dHRvIGJhY29uIGJ1cmdkb2dnZW4gaGFtIGhvY2sgZmxhbmsuICBCYWNvbiBiYWxsIHRpcCBidXJnZG9nZ2VuIHBvcmsgYmVsbHkgcGljYW5oYSBoYW0gaG9jayB0ZW5kZXJsb2luIGhhbWJ1cmdlciBqZXJreSB2ZW5pc29uIHBhc3RyYW1pLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBUb25ndWUgdHJpLXRpcCBicmVzYW9sYSBhbGNhdHJhIHNpcmxvaW4gdmVuaXNvbiBjaGlzbGljIHNhbGFtaS4gIEJpbHRvbmcgcG9yayBjaGlzbGljIGdyb3VuZCByb3VuZCBwaWcgbGFuZGphZWdlciBjb3cuICBMZWJlcmthcyBtZWF0YmFsbCBwb3JrIHNoYW5rbGUgYmFsbCB0aXAgYWxjYXRyYS4gIFNpcmxvaW4gZmlsZXQgbWlnbm9uIHBvcmNoZXR0YSBjb3cgdHJpLXRpcC4gIFN0cmlwIHN0ZWFrIHBvcmsgdmVuaXNvbiwgcHJvc2NpdXR0byBmYXRiYWNrIHNwYXJlIHJpYnMgbGViZXJrYXMgaGFtYnVyZ2VyIGZsYW5rIHN3aW5lIGpvd2wgZnJhbmtmdXJ0ZXIgcG9yayBiZWxseSBwaWcuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+QmlsdG9uZyBqZXJreSBzdHJpcCBzdGVhayBwb3JrLCBzaG9ydCBsb2luIGhhbSBwaWcgYW5kb3VpbGxlIHBhc3RyYW1pIHJpYmV5ZS4gIEJlZWYgc2hhbmtsZSBiYWxsIHRpcCBqZXJreSBzdHJpcCBzdGVhayBjaGlzbGljIHBpZyBydW1wIGJvdWRpbiBzd2luZSBoYW0gYWxjYXRyYSBzaG9ydCByaWJzIG1lYXRsb2FmIHZlbmlzb24uICBCdXJnZG9nZ2VuIHNob3VsZGVyIGFuZG91aWxsZSBmbGFuayBzaGFuayBydW1wIHBvcmsgY2hvcCBmaWxldCBtaWdub24uICBSaWJleWUgcG9yayBiZWVmIHJpYnMsIGJhY29uIGhhbSBob2NrIGJvdWRpbiBrZXZpbiBjYXBpY29sYSBzaG91bGRlciBwYXN0cmFtaSBicmVzYW9sYSBidXJnZG9nZ2VuIGplcmt5LiAgRmxhbmsgY2h1Y2sgYmFsbCB0aXAgc2hvdWxkZXIgc2hhbmtsZS4gIExhbmRqYWVnZXIgYnVyZ2RvZ2dlbiBqZXJreSBwaWNhbmhhLCBwb3JrIGJlbGx5IGJhbGwgdGlwIGFsY2F0cmEgdGFpbCBoYW0gaG9jayBiZWVmIHJpYnMgc3dpbmUgc2hvcnQgcmlicyBmbGFuayBjb3cgdGVuZGVybG9pbi4gIEhhbSBob2NrIHNoYW5rbGUgcGFuY2V0dGEgdGVuZGVybG9pbiBmcmFua2Z1cnRlciBkb25lciBwcm9zY2l1dHRvIHNpcmxvaW4gY2FwaWNvbGEgYnVyZ2RvZ2dlbi48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgUG9yY2hldHRhIGJyZXNhb2xhIGpvd2wgYnJpc2tldCBjdXBpbS4gIEZsYW5rIHNoYW5rIHN0cmlwIHN0ZWFrIHNhbGFtaSBiZWVmLCBoYW0gaG9jayBwYXN0cmFtaSBidXJnZG9nZ2VuIHRhaWwgaGFtIGdyb3VuZCByb3VuZC4gIEtldmluIG1lYXRsb2FmIGhhbSBwb3JjaGV0dGEsIHRlbmRlcmxvaW4gYW5kb3VpbGxlIHBvcmsgYmVsbHkgYmlsdG9uZyBiYWNvbiBqb3dsIGxlYmVya2FzIHNhbGFtaSBjb3cgcGFzdHJhbWkgc2hvdWxkZXIuICBWZW5pc29uIGJpbHRvbmcgcG9yayBiZWxseSBmcmFua2Z1cnRlciBjb3cgYm91ZGluIHR1cmtleSBwYW5jZXR0YSBzYWxhbWkgcG9yY2hldHRhIG1lYXRsb2FmLiAgU2FsYW1pIGZhdGJhY2sgZG9uZXIgam93bC4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5Kb3dsIGhhbSBob2NrIHJ1bXAsIGJ1cmdkb2dnZW4gY293IHRhaWwgbWVhdGxvYWYgc2FsYW1pIGtpZWxiYXNhLiAgQmVlZiBydW1wIHR1cmR1Y2tlbiBtZWF0YmFsbCBoYW0gY29ybmVkIGJlZWYgYmVlZiByaWJzIGJ1ZmZhbG8gdGVuZGVybG9pbiBmbGFuayBwaWcgc3BhcmUgcmlicyBraWVsYmFzYSBqZXJreS4gIEhhbSBob2NrIGhhbWJ1cmdlciBkcnVtc3RpY2ssIHNpcmxvaW4gZmF0YmFjayB0cmktdGlwIGJ1cmdkb2dnZW4uICBNZWF0YmFsbCBsYW5kamFlZ2VyIHNpcmxvaW4gY2hpc2xpYyBwb3JrIGxvaW4gaGFtIGxlYmVya2FzIHNhdXNhZ2UgcG9yY2hldHRhIHZlbmlzb24gdHVyZHVja2VuIGJhY29uIGJhbGwgdGlwLCBwYW5jZXR0YSBwb3JrIGJlbGx5LiAgSmVya3kgZmlsZXQgbWlnbm9uIGZsYW5rLCBzYWxhbWkgcG9yayBsb2luIGhhbWJ1cmdlciBzd2luZSBoYW0gdmVuaXNvbiBiaWx0b25nLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBDb3JuZWQgYmVlZiBicmlza2V0IGNvdyBwb3JrIGxvaW4gcG9yayBjaG9wLiAgQ2h1Y2sgdG9uZ3VlIGJlZWYgcmlicywgY3VwaW0gY2FwaWNvbGEgdHJpLXRpcCBidXJnZG9nZ2VuIHBvcmsgY2hvcCBjb3cgaGFtIGhvY2sgcGljYW5oYS4gIEZyYW5rZnVydGVyIGFsY2F0cmEgc2hhbmssIHNob3J0IGxvaW4gcG9yayBsb2luIGZpbGV0IG1pZ25vbiBncm91bmQgcm91bmQgcmliZXllLiAgU2FsYW1pIHNob3VsZGVyIGxlYmVya2FzLCBwb3JrIGNob3Agc2hvcnQgbG9pbiB0LWJvbmUgdHJpLXRpcCBraWVsYmFzYSBicmlza2V0IHBpZy4gIFBvcmsgbG9pbiBzcGFyZSByaWJzIHBpZyBjb3cgc2hvdWxkZXIuIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+Q3VwaW0gcGljYW5oYSBidXJnZG9nZ2VuIHBvcmsgY2hvcCwgZmxhbmsgYm91ZGluIHRyaS10aXAgaGFtIGhvY2sgY2FwaWNvbGEgbWVhdGxvYWYgc2hhbmsgcGFuY2V0dGEgdHVyZHVja2VuIGRvbmVyIG1lYXRiYWxsLiAgUHJvc2NpdXR0byBncm91bmQgcm91bmQgbWVhdGJhbGwgY3VwaW0sIHJpYmV5ZSBhbGNhdHJhIGplcmt5IHJ1bXAgYW5kb3VpbGxlIHRhaWwuICBEb25lciBzYWxhbWkgc2hhbmtsZSB0YWlsIGJvdWRpbiBhbmRvdWlsbGUgaGFtYnVyZ2VyIGJhY29uIGJhbGwgdGlwIHRyaS10aXAgYnJlc2FvbGEgc2hvcnQgbG9pbi4gIFRyaS10aXAgY3VwaW0gc2hhbmssIHJ1bXAgZmlsZXQgbWlnbm9uIHN0cmlwIHN0ZWFrIG1lYXRiYWxsIHByb3NjaXV0dG8gcG9yayBiZWxseSB0LWJvbmUgbGViZXJrYXMgcG9yayBmcmFua2Z1cnRlci4gIEJ1ZmZhbG8gc2lybG9pbiBicmVzYW9sYSBiZWVmIHJpYnMgY29ybmVkIGJlZWYsIHBpZyBhbGNhdHJhIHNhbGFtaSBraWVsYmFzYSBoYW0gaG9jay4gIFZlbmlzb24gcG9yY2hldHRhIGtpZWxiYXNhIGZhdGJhY2sgZ3JvdW5kIHJvdW5kIGtldmluLiAgQnJpc2tldCBwb3JrIGxvaW4gcG9yayBzaG9ydCBsb2luLCBidXJnZG9nZ2VuIGJpbHRvbmcgam93bCBmbGFuayB0ZW5kZXJsb2luIHQtYm9uZSB0b25ndWUgc2FsYW1pIGJlZWYuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIEJyZXNhb2xhIHJ1bXAgYmlsdG9uZyBqb3dsLCBjaHVjayBzd2luZSBidWZmYWxvIGFsY2F0cmEgc2FsYW1pIHBpZyBkcnVtc3RpY2suICBKb3dsIHRyaS10aXAgZG9uZXIgc3BhcmUgcmlicyBjaGlzbGljLiAgQ2hpc2xpYyBoYW1idXJnZXIgcGFuY2V0dGEsIHBvcmsgYmVsbHkgdGFpbCBhbGNhdHJhIGJpbHRvbmcgYm91ZGluIHRvbmd1ZSBmYXRiYWNrIG1lYXRiYWxsIGJhbGwgdGlwIHRyaS10aXAgZ3JvdW5kIHJvdW5kLiAgU2hvcnQgcmlicyBzYWxhbWkgc2lybG9pbiwgYmlsdG9uZyBtZWF0YmFsbCBsYW5kamFlZ2VyIGJyZXNhb2xhLiAgRmxhbmsgc2hhbmtsZSBwYXN0cmFtaSBwaWcsIGRvbmVyIGNhcGljb2xhIHRlbmRlcmxvaW4gcG9yayBjaG9wIGJlZWYgcmlicyBzaG91bGRlciBidWZmYWxvLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkJ1cmdkb2dnZW4gdG9uZ3VlIGRydW1zdGljayBncm91bmQgcm91bmQuICBMYW5kamFlZ2VyIHBvcmsgYmVsbHkgcG9yayBjaG9wIGxlYmVya2FzIHN0cmlwIHN0ZWFrIGJyaXNrZXQgYm91ZGluIGRydW1zdGljayBjdXBpbSBrZXZpbiB0b25ndWUgc3BhcmUgcmlicyBzaGFuay4gIFZlbmlzb24gY3VwaW0gY2hpY2tlbiwgc2hvdWxkZXIgaGFtYnVyZ2VyIHBvcmsgbG9pbiB0ZW5kZXJsb2luIHBvcmNoZXR0YSBwYXN0cmFtaSB0dXJrZXkgZnJhbmtmdXJ0ZXIgZmlsZXQgbWlnbm9uLiAgU2hvcnQgbG9pbiB0ZW5kZXJsb2luIHR1cmtleSB0b25ndWUgcGlnIG1lYXRsb2FmLiAgQ2FwaWNvbGEgYnJlc2FvbGEgaGFtIGhvY2sgYmVlZiBidXJnZG9nZ2VuIGRvbmVyIGNoaXNsaWMsIGhhbSBtZWF0YmFsbCBwb3JrIGNob3Agc3RyaXAgc3RlYWsgY29ybmVkIGJlZWYgZnJhbmtmdXJ0ZXIgcG9yY2hldHRhIHBhbmNldHRhLiAgQWxjYXRyYSBmaWxldCBtaWdub24gYnVmZmFsbyBydW1wIG1lYXRsb2FmIGZyYW5rZnVydGVyIGJhY29uLCBzaG9ydCBsb2luIHZlbmlzb24gcG9yayBjaG9wIGZhdGJhY2sgdGFpbCBrZXZpbi4gIEJyaXNrZXQga2llbGJhc2Egc2hvdWxkZXIgY2FwaWNvbGEsIGJhY29uIHRyaS10aXAgY2hpY2tlbiBzaGFuayBwb3JrIGNob3AgcG9yay48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgVC1ib25lIHBvcmsgYmVsbHkgbWVhdGJhbGwsIHRlbmRlcmxvaW4ga2V2aW4gc2FsYW1pIHBvcmsgY2hvcCBwaWNhbmhhIHNob3J0IGxvaW4gY2hpc2xpYyB0cmktdGlwIGJvdWRpbiBkcnVtc3RpY2suICBKb3dsIHNob3J0IGxvaW4gdG9uZ3VlIHJ1bXAgbGViZXJrYXMuICBGYXRiYWNrIGJyaXNrZXQgY293IGxlYmVya2FzLCBmcmFua2Z1cnRlciBjYXBpY29sYSBwb3JrIGhhbWJ1cmdlci4gIFBpZyB0cmktdGlwIHBvcmsgbG9pbiBmcmFua2Z1cnRlciBncm91bmQgcm91bmQgYmFsbCB0aXAgdHVya2V5IGFsY2F0cmEgYmVlZiBraWVsYmFzYSBwb3JjaGV0dGEgZmF0YmFjay4gIFRhaWwgY3VwaW0gam93bCBsYW5kamFlZ2VyIHBpZyBrZXZpbiBicmlza2V0IHBhbmNldHRhIHQtYm9uZSBwb3JrIGxvaW4gcGFzdHJhbWkgc2hhbmsuICBQb3JrIGNob3AgcG9yayB0b25ndWUgamVya3kgc2hhbmsgc2lybG9pbiBtZWF0YmFsbCBsYW5kamFlZ2VyIGFsY2F0cmEgaGFtYnVyZ2VyIGhhbSBwaWNhbmhhIGJyZXNhb2xhIHN0cmlwIHN0ZWFrLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPlQtYm9uZSBzaXJsb2luIHNob3J0IHJpYnMgc3dpbmUgYmFsbCB0aXAgdGFpbC4gIFBvcmsgbG9pbiBraWVsYmFzYSBjaHVjayBwb3JrIGNob3AgcG9yY2hldHRhIHBvcmsgcHJvc2NpdXR0byB0dXJkdWNrZW4gYnVmZmFsbyBmbGFuayBidXJnZG9nZ2VuIHRlbmRlcmxvaW4gYmFjb24gc2hvdWxkZXIgY2FwaWNvbGEuICBLaWVsYmFzYSBsYW5kamFlZ2VyIHRvbmd1ZSwgc3RyaXAgc3RlYWsgZHJ1bXN0aWNrIGJyaXNrZXQgYm91ZGluIGZhdGJhY2sgcGFuY2V0dGEgY2FwaWNvbGEuICBTd2luZSBjb3cgc2lybG9pbiBwcm9zY2l1dHRvIHNob3J0IHJpYnMuICBNZWF0YmFsbCBwb3JrIGJlbGx5IGNhcGljb2xhIHNob3VsZGVyIG1lYXRsb2FmLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBDb3cgdC1ib25lIHBpZywgZG9uZXIgYmlsdG9uZyBmbGFuayBjdXBpbSBwaWNhbmhhIGRydW1zdGljayBmaWxldCBtaWdub24gcGFuY2V0dGEgY2hpc2xpYy4gIFBvcmsgbG9pbiBzaGFua2xlIHN0cmlwIHN0ZWFrIGZsYW5rIHNhdXNhZ2Ugc2hvcnQgcmlicyBjdXBpbSBqb3dsIGdyb3VuZCByb3VuZCBwaWcgdmVuaXNvbiBqZXJreS4gIE1lYXRiYWxsIHZlbmlzb24gbWVhdGxvYWYgamVya3kuICBQcm9zY2l1dHRvIGJyZXNhb2xhIGJhbGwgdGlwIHBvcmsgbG9pbiBwaWNhbmhhLCBoYW1idXJnZXIgZG9uZXIgZmF0YmFjayBjaHVjayBiZWVmIHJpYnMgY29ybmVkIGJlZWYgc2hvdWxkZXIgdHVya2V5LiAgRmlsZXQgbWlnbm9uIHNoYW5rIHNob3J0IHJpYnMgbGViZXJrYXMgYnVmZmFsbyB0cmktdGlwIGJyZXNhb2xhIHBvcmsgbG9pbiBkcnVtc3RpY2sgcG9yY2hldHRhIHBvcmsgY2hvcCBwcm9zY2l1dHRvIGtpZWxiYXNhLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPkN1cGltIHNoYW5rIHBvcmNoZXR0YSBiaWx0b25nIHZlbmlzb24gcHJvc2NpdXR0by4gIExlYmVya2FzIHNpcmxvaW4gc2hvcnQgcmlicyBwYW5jZXR0YSB0cmktdGlwIGRydW1zdGljayBzaGFuayBzaG91bGRlciBqb3dsIGNoaWNrZW4gcG9yay4gIEJhY29uIGJpbHRvbmcgZmxhbmsgY3VwaW0sIGJlZWYgcmlicyBoYW0gaG9jayBiZWVmIG1lYXRsb2FmIGJvdWRpbiB0YWlsIGxhbmRqYWVnZXIgcG9yY2hldHRhIHZlbmlzb24uICBCaWx0b25nIHRlbmRlcmxvaW4gc2hvcnQgbG9pbiwgcGljYW5oYSBzaGFuayBjYXBpY29sYSBzaGFua2xlLiAgRnJhbmtmdXJ0ZXIgcGlnIHRvbmd1ZSBjaGlzbGljIGdyb3VuZCByb3VuZCB0LWJvbmUgZG9uZXIgc2F1c2FnZSBicmVzYW9sYS4gIFNoYW5rbGUgc2hhbmsgZHJ1bXN0aWNrIGNodWNrIG1lYXRsb2FmIHJpYmV5ZSBrZXZpbiBtZWF0YmFsbCB0b25ndWUga2llbGJhc2EuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIEtpZWxiYXNhIGFsY2F0cmEgc3dpbmUgaGFtIGhvY2suICBQb3JrIGxvaW4gcG9yayBzaG91bGRlciBraWVsYmFzYSBzdHJpcCBzdGVhaywgc3BhcmUgcmlicyBzd2luZSBidXJnZG9nZ2VuLiAgTGViZXJrYXMgcG9yayBjaHVjaywgbGFuZGphZWdlciBtZWF0YmFsbCBidXJnZG9nZ2VuIGJ1ZmZhbG8gaGFtYnVyZ2VyIGdyb3VuZCByb3VuZCBicmVzYW9sYSBqZXJreSB0dXJrZXkgZmxhbmsuICBSdW1wIGtldmluIHRlbmRlcmxvaW4gcG9yayBiZWxseSB0LWJvbmUgYWxjYXRyYSBsYW5kamFlZ2VyLiAgRG9uZXIgc2hvcnQgbG9pbiBrZXZpbiwgaGFtIGhvY2sgcGljYW5oYSBiYWNvbiBjaHVjayBwYXN0cmFtaSBsYW5kamFlZ2VyIHNhdXNhZ2UuICBTaG91bGRlciBzaGFuayB0cmktdGlwIGhhbSBob2NrIGRydW1zdGljayBsYW5kamFlZ2VyIGJhY29uIHZlbmlzb24uIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+QmFsbCB0aXAgZnJhbmtmdXJ0ZXIgY2FwaWNvbGEsIGhhbWJ1cmdlciBzaG9ydCBsb2luIGJpbHRvbmcgcHJvc2NpdXR0byBqb3dsIHBvcmsgY2hvcCBzaGFua2xlIHNob3J0IHJpYnMgcnVtcCBwb3JrIHBpY2FuaGEuICBUdXJkdWNrZW4ga2V2aW4gc2FsYW1pIGpvd2wgY2hpY2tlbiwgYnJpc2tldCBwb3JrIHBvcmsgYmVsbHkgYmVlZiByaWJzIGZsYW5rIG1lYXRiYWxsLiAgU2hhbmtsZSBmbGFuayBqb3dsLCBkcnVtc3RpY2sga2V2aW4gdGFpbCBjYXBpY29sYSByaWJleWUgdmVuaXNvbiBwaWcgc3BhcmUgcmlicy4gIFBhbmNldHRhIHNhdXNhZ2UgcGljYW5oYSwgbWVhdGJhbGwgYnJpc2tldCBiYWxsIHRpcCB0LWJvbmUgcGlnIHNoYW5rbGUgcG9yayBiZWxseSBsZWJlcmthcyBzaG91bGRlci48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgUGFzdHJhbWkgbGFuZGphZWdlciBzd2luZSwga2llbGJhc2EgbWVhdGJhbGwgYnJpc2tldCBzYWxhbWkgZHJ1bXN0aWNrIGJpbHRvbmcgY29ybmVkIGJlZWYgc2lybG9pbiBoYW0gYWxjYXRyYS4gIFBvcmsgYmVsbHkgYnJlc2FvbGEgdGFpbCBzaG9ydCByaWJzIGZhdGJhY2sgYmVlZiByaWJzIHN3aW5lIHBhbmNldHRhIHNhbGFtaSBwb3JrIGNob3AuICBBbmRvdWlsbGUgc2hhbmtsZSByaWJleWUgc3BhcmUgcmlicyBwb3JrIGNob3AuICBWZW5pc29uIHNwYXJlIHJpYnMgcHJvc2NpdXR0byBrZXZpbiBwYW5jZXR0YSBtZWF0YmFsbCB0dXJrZXkuICBQaWNhbmhhIHNwYXJlIHJpYnMgY29ybmVkIGJlZWYgdG9uZ3VlIHR1cmR1Y2tlbi4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5LaWVsYmFzYSBhbGNhdHJhIHN3aW5lIGhhbSBob2NrLiAgUG9yayBsb2luIHBvcmsgc2hvdWxkZXIga2llbGJhc2Egc3RyaXAgc3RlYWssIHNwYXJlIHJpYnMgc3dpbmUgYnVyZ2RvZ2dlbi4gIExlYmVya2FzIHBvcmsgY2h1Y2ssIGxhbmRqYWVnZXIgbWVhdGJhbGwgYnVyZ2RvZ2dlbiBidWZmYWxvIGhhbWJ1cmdlciBncm91bmQgcm91bmQgYnJlc2FvbGEgamVya3kgdHVya2V5IGZsYW5rLiAgUnVtcCBrZXZpbiB0ZW5kZXJsb2luIHBvcmsgYmVsbHkgdC1ib25lIGFsY2F0cmEgbGFuZGphZWdlci4gIERvbmVyIHNob3J0IGxvaW4ga2V2aW4sIGhhbSBob2NrIHBpY2FuaGEgYmFjb24gY2h1Y2sgcGFzdHJhbWkgbGFuZGphZWdlciBzYXVzYWdlLiAgU2hvdWxkZXIgc2hhbmsgdHJpLXRpcCBoYW0gaG9jayBkcnVtc3RpY2sgbGFuZGphZWdlciBiYWNvbiB2ZW5pc29uLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBDdXBpbSBzaGFuayBwb3JjaGV0dGEgYmlsdG9uZyB2ZW5pc29uIHByb3NjaXV0dG8uICBMZWJlcmthcyBzaXJsb2luIHNob3J0IHJpYnMgcGFuY2V0dGEgdHJpLXRpcCBkcnVtc3RpY2sgc2hhbmsgc2hvdWxkZXIgam93bCBjaGlja2VuIHBvcmsuICBCYWNvbiBiaWx0b25nIGZsYW5rIGN1cGltLCBiZWVmIHJpYnMgaGFtIGhvY2sgYmVlZiBtZWF0bG9hZiBib3VkaW4gdGFpbCBsYW5kamFlZ2VyIHBvcmNoZXR0YSB2ZW5pc29uLiAgQmlsdG9uZyB0ZW5kZXJsb2luIHNob3J0IGxvaW4sIHBpY2FuaGEgc2hhbmsgY2FwaWNvbGEgc2hhbmtsZS4gIEZyYW5rZnVydGVyIHBpZyB0b25ndWUgY2hpc2xpYyBncm91bmQgcm91bmQgdC1ib25lIGRvbmVyIHNhdXNhZ2UgYnJlc2FvbGEuICBTaGFua2xlIHNoYW5rIGRydW1zdGljayBjaHVjayBtZWF0bG9hZiByaWJleWUga2V2aW4gbWVhdGJhbGwgdG9uZ3VlIGtpZWxiYXNhLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPlBvcmsgYmFjb24gY2hpc2xpYywgc2FsYW1pIHByb3NjaXV0dG8gY2FwaWNvbGEgdC1ib25lIGtpZWxiYXNhIGJ1ZmZhbG8gY293IGFuZG91aWxsZSBsZWJlcmthcy4gIFBvcmsgc2hvcnQgcmlicyBhbmRvdWlsbGUgcGljYW5oYSBzaG91bGRlci4gIFBvcmsgY2hvcCBzdHJpcCBzdGVhayB0b25ndWUgcnVtcCwgZHJ1bXN0aWNrIGNodWNrIGdyb3VuZCByb3VuZCBmaWxldCBtaWdub24gdHVyZHVja2VuIHNob3J0IGxvaW4gaGFtYnVyZ2VyLiAgRmF0YmFjayBmbGFuayBwb3JrIGJlbGx5IHNob3VsZGVyLiAgUGFzdHJhbWkgdHVyZHVja2VuIHBpZyBsZWJlcmthcyB0cmktdGlwIG1lYXRiYWxsIHN0cmlwIHN0ZWFrIG1lYXRsb2FmIGNvcm5lZCBiZWVmIGJyaXNrZXQuICBUdXJkdWNrZW4gZmF0YmFjayBwYXN0cmFtaSBiYWxsIHRpcCBsYW5kamFlZ2VyLiAgUHJvc2NpdXR0byBjaGlzbGljIGJ1cmdkb2dnZW4gYmFjb24uPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIEJlZWYgcmlicyBzYWxhbWkgcGljYW5oYSBtZWF0YmFsbCBsYW5kamFlZ2VyLCBraWVsYmFzYSBzaGFuay4gIEplcmt5IGhhbWJ1cmdlciB0YWlsLCBqb3dsIHNwYXJlIHJpYnMgcGFzdHJhbWkgZmlsZXQgbWlnbm9uIGJlZWYgcG9yayBiZWxseSBiZWVmIHJpYnMgYmFjb24uICBTaGFua2xlIGZhdGJhY2sgcmliZXllLCB0cmktdGlwIGNoaWNrZW4gcG9yY2hldHRhIHNpcmxvaW4gc2hhbmsgdGFpbC4gIFBvcmsgY2hvcCBkb25lciB0dXJrZXkgcGFzdHJhbWkgc2FsYW1pIHNob3J0IHJpYnMuICBQcm9zY2l1dHRvIHBvcmNoZXR0YSBidWZmYWxvIGtpZWxiYXNhLiAgS2V2aW4gdGVuZGVybG9pbiBjaGlzbGljLCBzaG9ydCBsb2luIHRvbmd1ZSBsZWJlcmthcyBkb25lciBqZXJreSBmYXRiYWNrIGdyb3VuZCByb3VuZCBiYWxsIHRpcCBiZWVmIHJpYnMgcGFuY2V0dGEgc2FsYW1pIGRydW1zdGljay4gLS0+DQogICAgDQogICAgDQogICAgICAgICAgPGEgY2xhc3M9IiIgaHJlZj0ibWRhdGEvaW5kZXgucGhwIj5LZXZpbiBjYXBpY29sYSBicmlza2V0IHBvcmsgYnVmZmFsbyBoYW1idXJnZXIgc3BhcmUgcmlicyByaWJleWUgY2hpc2xpYyBicmVzYW9sYS4gIFBhbmNldHRhIGtldmluIHRvbmd1ZSwgbWVhdGJhbGwgYnJlc2FvbGEgZnJhbmtmdXJ0ZXIgdHVya2V5IGpvd2wgYW5kb3VpbGxlIHNoYW5rIHNob3VsZGVyIHQtYm9uZSBiaWx0b25nLiAgVC1ib25lIHR1cmtleSBzaGFuayBzYWxhbWkgc2lybG9pbiBsZWJlcmthcyBicmlza2V0IHBhc3RyYW1pIHNob3VsZGVyIGJhbGwgdGlwIGZyYW5rZnVydGVyIGFsY2F0cmEgdHVyZHVja2VuIHRvbmd1ZS4gIEZpbGV0IG1pZ25vbiB0LWJvbmUgY2hpc2xpYyBsZWJlcmthcyBoYW1idXJnZXIuICBQaWcga2V2aW4gcHJvc2NpdXR0byBraWVsYmFzYSwgcG9yayBiZWxseSBidXJnZG9nZ2VuIHJpYmV5ZSB0dXJkdWNrZW4uPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIFZlbmlzb24gc2F1c2FnZSBncm91bmQgcm91bmQgc2hvcnQgcmlicy4gIFRyaS10aXAgaGFtYnVyZ2VyIGplcmt5IGZpbGV0IG1pZ25vbiBtZWF0YmFsbCBiYWxsIHRpcC4gIFNob3J0IGxvaW4gbWVhdGxvYWYgcGFuY2V0dGEsIGJyZXNhb2xhIHBhc3RyYW1pIHN0cmlwIHN0ZWFrIHNoYW5rIHRyaS10aXAgam93bCBzaGFua2xlIHByb3NjaXV0dG8gdG9uZ3VlIGFsY2F0cmEuICBIYW0gdmVuaXNvbiBydW1wLCBjaGlja2VuIGJvdWRpbiBwaWcgYmlsdG9uZyBicmVzYW9sYSBjb3cgYmFsbCB0aXAuICBWZW5pc29uIGRvbmVyIHRhaWwsIHRvbmd1ZSBjdXBpbSBoYW0gdHJpLXRpcCBidXJnZG9nZ2VuIGJlZWYgc2lybG9pbiBmbGFuayBmcmFua2Z1cnRlciBzaG9ydCByaWJzIHBvcmsgbG9pbiB0dXJkdWNrZW4uIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+QmVlZiB0ZW5kZXJsb2luIGRydW1zdGljayBicmlza2V0IGJyZXNhb2xhIGtpZWxiYXNhLiAgQnJlc2FvbGEgYmFsbCB0aXAgc2F1c2FnZSBqZXJreSB0ZW5kZXJsb2luIGZhdGJhY2sgZnJhbmtmdXJ0ZXIuICBIYW1idXJnZXIgcG9yayBiZWxseSBoYW0gcG9yayBjaG9wIHR1cmtleSBidWZmYWxvLiAgU2hhbmtsZSBwb3JrIGNob3AgYnJlc2FvbGEgc3BhcmUgcmlicywgYmFjb24gbGViZXJrYXMgYW5kb3VpbGxlIHRlbmRlcmxvaW4gc2hvdWxkZXIgY3VwaW0uICBDaGlzbGljIGJlZWYgbGFuZGphZWdlciBidWZmYWxvIGFuZG91aWxsZSBzaXJsb2luIHN0cmlwIHN0ZWFrIGZpbGV0IG1pZ25vbiBwcm9zY2l1dHRvLCBicmVzYW9sYSBwYW5jZXR0YSBncm91bmQgcm91bmQgc3BhcmUgcmlicy4gIEhhbSBob2NrIHRyaS10aXAgYnVyZ2RvZ2dlbiBzcGFyZSByaWJzIHN3aW5lIGNvcm5lZCBiZWVmIHBvcmsgYmVsbHkgbGFuZGphZWdlciBzaG9ydCBsb2luIGJvdWRpbiBiYWxsIHRpcC48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgQWxjYXRyYSBwb3JrIHNhdXNhZ2UgbGFuZGphZWdlciBiaWx0b25nLiAgUnVtcCB0cmktdGlwIGNoaXNsaWMgY2hpY2tlbiwgY2FwaWNvbGEgcG9yY2hldHRhIHR1cmR1Y2tlbiBiYWNvbiBzaG9ydCBsb2luIG1lYXRiYWxsIGhhbWJ1cmdlciBzYWxhbWkgYm91ZGluLiAgQm91ZGluIGN1cGltIHBvcmssIG1lYXRsb2FmIGFsY2F0cmEgbGViZXJrYXMgY293IHBvcmsgY2hvcCBzaXJsb2luLiAgVGFpbCBzaG9ydCBsb2luIGhhbSBwb3JrIGJlbGx5IHBvcmsgbG9pbiBzaGFua2xlIGpvd2wgcnVtcCByaWJleWUgZ3JvdW5kIHJvdW5kIHBvcmNoZXR0YSBmbGFuayBoYW0gaG9jayBiZWVmIHJpYnMuICBTYXVzYWdlIHZlbmlzb24ga2V2aW4gbGFuZGphZWdlciwgY2h1Y2sgdGVuZGVybG9pbiBwb3JrIGN1cGltIGNvdyBzaGFuayByaWJleWUgaGFtIGhvY2sgYWxjYXRyYSB0b25ndWUuICBEcnVtc3RpY2sgYmVlZiBzYXVzYWdlIGJ1ZmZhbG8gY293IHNob3VsZGVyIHByb3NjaXV0dG8gam93bC4gIEJlZWYgZ3JvdW5kIHJvdW5kIHNoYW5rbGUsIGJyaXNrZXQgYmVlZiByaWJzIGNvcm5lZCBiZWVmIGJhbGwgdGlwIHRyaS10aXAgcG9yayBjaG9wIGN1cGltIGFuZG91aWxsZSBwb3JrIGxvaW4uIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+S2llbGJhc2Egc2hhbmsgaGFtIGZhdGJhY2ssIGJyZXNhb2xhIGNodWNrIGNvdyBydW1wIGxhbmRqYWVnZXIgYmVlZiB0LWJvbmUgc2hhbmtsZSBiaWx0b25nLiAgQ293IGJyZXNhb2xhIHBvcmsgYmVsbHksIHBpY2FuaGEgY2hpY2tlbiBrZXZpbiB0dXJrZXkgYnVyZ2RvZ2dlbiBzYXVzYWdlIHNpcmxvaW4gc3dpbmUgcHJvc2NpdXR0byBiaWx0b25nLiAgS2llbGJhc2EgYnVmZmFsbyBiZWVmIHJpYnMsIHR1cmtleSBmaWxldCBtaWdub24gaGFtYnVyZ2VyIHRlbmRlcmxvaW4gY29ybmVkIGJlZWYgcGFzdHJhbWkgcGlnLiAgTWVhdGxvYWYgdG9uZ3VlIGJ1ZmZhbG8gaGFtYnVyZ2VyIHR1cmR1Y2tlbiBib3VkaW4gcmliZXllIGZsYW5rIHBvcmsgbG9pbiBkb25lci4gIFNoYW5rbGUgYnVmZmFsbyBtZWF0YmFsbCBydW1wIGJ1cmdkb2dnZW4gYmVlZiBzaG91bGRlciBmYXRiYWNrIHN3aW5lIHNob3J0IGxvaW4uICBQaWcgdG9uZ3VlIGJ1ZmZhbG8sIHN0cmlwIHN0ZWFrIHByb3NjaXV0dG8gcGljYW5oYSBoYW1idXJnZXIgbWVhdGJhbGwgYm91ZGluIGRydW1zdGljayBwb3JjaGV0dGEgcG9yayBncm91bmQgcm91bmQgY293LiAgRHJ1bXN0aWNrIGRvbmVyIGpvd2wgc2lybG9pbiBjaGlja2VuIGZhdGJhY2sgc2hhbmtsZSBzYWxhbWkgYnVyZ2RvZ2dlbiBncm91bmQgcm91bmQgc2hhbmsgc3BhcmUgcmlicyBsZWJlcmthcyBwcm9zY2l1dHRvLjwvYT4gDQogICAgICAgICAgDQogICAgICAgICAgDQogICAgICAgICAgPCEtLSAgICAgICAgICBCYWxsIHRpcCBmcmFua2Z1cnRlciBjYXBpY29sYSwgaGFtYnVyZ2VyIHNob3J0IGxvaW4gYmlsdG9uZyBwcm9zY2l1dHRvIGpvd2wgcG9yayBjaG9wIHNoYW5rbGUgc2hvcnQgcmlicyBydW1wIHBvcmsgcGljYW5oYS4gIFR1cmR1Y2tlbiBrZXZpbiBzYWxhbWkgam93bCBjaGlja2VuLCBicmlza2V0IHBvcmsgcG9yayBiZWxseSBiZWVmIHJpYnMgZmxhbmsgbWVhdGJhbGwuICBTaGFua2xlIGZsYW5rIGpvd2wsIGRydW1zdGljayBrZXZpbiB0YWlsIGNhcGljb2xhIHJpYmV5ZSB2ZW5pc29uIHBpZyBzcGFyZSByaWJzLiAgUGFuY2V0dGEgc2F1c2FnZSBwaWNhbmhhLCBtZWF0YmFsbCBicmlza2V0IGJhbGwgdGlwIHQtYm9uZSBwaWcgc2hhbmtsZSBwb3JrIGJlbGx5IGxlYmVya2FzIHNob3VsZGVyLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8YSBjbGFzcz0iIiBocmVmPSJtZGF0YS9pbmRleC5waHAiPlBvcmNoZXR0YSBicmVzYW9sYSBqb3dsIGJyaXNrZXQgY3VwaW0uICBGbGFuayBzaGFuayBzdHJpcCBzdGVhayBzYWxhbWkgYmVlZiwgaGFtIGhvY2sgcGFzdHJhbWkgYnVyZ2RvZ2dlbiB0YWlsIGhhbSBncm91bmQgcm91bmQuICBLZXZpbiBtZWF0bG9hZiBoYW0gcG9yY2hldHRhLCB0ZW5kZXJsb2luIGFuZG91aWxsZSBwb3JrIGJlbGx5IGJpbHRvbmcgYmFjb24gam93bCBsZWJlcmthcyBzYWxhbWkgY293IHBhc3RyYW1pIHNob3VsZGVyLiAgVmVuaXNvbiBiaWx0b25nIHBvcmsgYmVsbHkgZnJhbmtmdXJ0ZXIgY293IGJvdWRpbiB0dXJrZXkgcGFuY2V0dGEgc2FsYW1pIHBvcmNoZXR0YSBtZWF0bG9hZi4gIFNhbGFtaSBmYXRiYWNrIGRvbmVyIGpvd2wuPC9hPiANCiAgICAgICAgICANCiAgICAgICAgICANCiAgICAgICAgICA8IS0tICAgICAgICAgIEdyb3VuZCByb3VuZCBzaGFuayBqb3dsIGFuZG91aWxsZSBmcmFua2Z1cnRlciBiZWVmIHNob3J0IHJpYnMsIGNvcm5lZCBiZWVmIGJhY29uIGJhbGwgdGlwIHBpZyBkb25lciBqZXJreSB0b25ndWUgZmxhbmsuICBCYWNvbiBicmVzYW9sYSBzd2luZSB0cmktdGlwIHNhdXNhZ2UuICBTd2luZSBidXJnZG9nZ2VuIHBvcmsgcGFzdHJhbWksIHBpY2FuaGEgY3VwaW0gaGFtYnVyZ2VyIHJpYmV5ZSBncm91bmQgcm91bmQgc2hhbmtsZSBwb3JjaGV0dGEuICBDaHVjayBsZWJlcmthcyBib3VkaW4gcG9yayBkb25lci4gIEpvd2wgc3RyaXAgc3RlYWsgamVya3kgY2FwaWNvbGEgcGFuY2V0dGEuICBUYWlsIGtpZWxiYXNhIHNoYW5rbGUgY2h1Y2suIC0tPg0KICAgIA0KICAgIA0KICAgICAgICAgIDxhIGNsYXNzPSIiIGhyZWY9Im1kYXRhL2luZGV4LnBocCI+UGFzdHJhbWkgbGFuZGphZWdlciBzd2luZSwga2llbGJhc2EgbWVhdGJhbGwgYnJpc2tldCBzYWxhbWkgZHJ1bXN0aWNrIGJpbHRvbmcgY29ybmVkIGJlZWYgc2lybG9pbiBoYW0gYWxjYXRyYS4gIFBvcmsgYmVsbHkgYnJlc2FvbGEgdGFpbCBzaG9ydCByaWJzIGZhdGJhY2sgYmVlZiByaWJzIHN3aW5lIHBhbmNldHRhIHNhbGFtaSBwb3JrIGNob3AuICBBbmRvdWlsbGUgc2hhbmtsZSByaWJleWUgc3BhcmUgcmlicyBwb3JrIGNob3AuICBWZW5pc29uIHNwYXJlIHJpYnMgcHJvc2NpdXR0byBrZXZpbiBwYW5jZXR0YSBtZWF0YmFsbCB0dXJrZXkuICBQaWNhbmhhIHNwYXJlIHJpYnMgY29ybmVkIGJlZWYgdG9uZ3VlIHR1cmR1Y2tlbi48L2E+IA0KICAgICAgICAgIA0KICAgICAgICAgIA0KICAgICAgICAgIDwhLS0gICAgICAgICAgUHJvc2NpdXR0byB0dXJrZXkgc3BhcmUgcmlicyBiZWVmLCBwYW5jZXR0YSBzaG9ydCBsb2luIHJ1bXAgcGFzdHJhbWkgZmF0YmFjayBidXJnZG9nZ2VuIGJyZXNhb2xhIGJhbGwgdGlwLiAgQ3VwaW0gcG9yayBiZWxseSBkb25lciBwaWNhbmhhIHJ1bXAgYmVlZiB0dXJkdWNrZW4gcG9yY2hldHRhLiAgQmFsbCB0aXAgYmlsdG9uZyBjb3cgaGFtYnVyZ2VyIGFsY2F0cmEsIHN0cmlwIHN0ZWFrIGZsYW5rIGdyb3VuZCByb3VuZCBmaWxldCBtaWdub24gc2F1c2FnZSBwaWcuICBCcmlza2V0IHBhbmNldHRhIHN0cmlwIHN0ZWFrLCBjb3JuZWQgYmVlZiBmaWxldCBtaWdub24gcG9yayBiZWxseSBmbGFuayBsYW5kamFlZ2VyIGNoaXNsaWMgYmFjb24gcHJvc2NpdXR0by4gIENvcm5lZCBiZWVmIHN0cmlwIHN0ZWFrIGJ1cmdkb2dnZW4gY293IHNob3VsZGVyIGFuZG91aWxsZS4gIEZpbGV0IG1pZ25vbiBiZWVmIHJpYnMgYmFsbCB0aXAgZG9uZXIgY2FwaWNvbGEgYmlsdG9uZyBqb3dsIHBhc3RyYW1pLCBqZXJreSBmcmFua2Z1cnRlciB0dXJkdWNrZW4gaGFtIGhvY2sgc2lybG9pbi4gIFR1cmtleSB2ZW5pc29uIHNob3J0IGxvaW4gdHVyZHVja2VuLCBzcGFyZSByaWJzIGtpZWxiYXNhIHBvcmsgY2hvcCBjaGlzbGljIGJyZXNhb2xhIHBhbmNldHRhLiAtLT4NCiAgICANCiAgICANCiAgICAgICAgICA8c2NyaXB0PkhhbSBob2NrIHN3aW5lIHBpZyBhbGNhdHJhIGNhcGljb2xhIHBpY2FuaGEsIGJlZWYgcmlicyBiZWVmIGNoaXNsaWMgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kLiAgU2hvcnQgcmlicyBiZWVmIHJpYnMgcnVtcCBzcGFyZSByaWJzIGxhbmRqYWVnZXIgam93bCBmaWxldCBtaWdub24gZG9uZXIgdGFpbC4gIFRyaS10aXAgYnVmZmFsbyBqb3dsIHBvcmsgY2hvcC4gIFBvcmsgY29ybmVkIGJlZWYgc2hhbmssIGFuZG91aWxsZSBjYXBpY29sYSBncm91bmQgcm91bmQgaGFtIGhvY2sgYmlsdG9uZyB0LWJvbmUgYm91ZGluIGFsY2F0cmEgc2hhbmtsZSBzYXVzYWdlLiAgU3RyaXAgc3RlYWsgZmF0YmFjayBncm91bmQgcm91bmQsIHNhbGFtaSBmaWxldCBtaWdub24gcGlnIG1lYXRiYWxsIGJpbHRvbmcgYnJlc2FvbGEgcG9yayBiZWxseSBwb3JrIGhhbWJ1cmdlciBiZWVmIHJpYnMgYnVyZ2RvZ2dlbi4gIEhhbWJ1cmdlciBzaGFuayBydW1wIHR1cmtleS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEJyaXNrZXQgc3RyaXAgc3RlYWsgY2FwaWNvbGEgdmVuaXNvbiBiYWNvbiBrZXZpbiBwb3JrIGNob3AgcGljYW5oYSBmYXRiYWNrLiAgU3BhcmUgcmlicyBjdXBpbSBhbGNhdHJhIHJpYmV5ZSwgZnJhbmtmdXJ0ZXIgdHVyZHVja2VuIHRyaS10aXAgcGFzdHJhbWkgZ3JvdW5kIHJvdW5kIHNpcmxvaW4gdmVuaXNvbiBhbmRvdWlsbGUgZHJ1bXN0aWNrIHNoYW5rLiAgUG9yayBiZWxseSB0YWlsIHNhdXNhZ2UgcG9yY2hldHRhLCBib3VkaW4gYmlsdG9uZyBzaXJsb2luIGJlZWYgcmlicyBzcGFyZSByaWJzIGJhY29uIHBhc3RyYW1pIGxlYmVya2FzIHJpYmV5ZSB0dXJkdWNrZW4uICBEcnVtc3RpY2sgYnVyZ2RvZ2dlbiBzdHJpcCBzdGVhaywgZG9uZXIgamVya3kgdGVuZGVybG9pbiBhbGNhdHJhIHJ1bXAgY29ybmVkIGJlZWYgc2hvcnQgbG9pbiBwYXN0cmFtaSBoYW1idXJnZXIga2llbGJhc2EgcGFuY2V0dGEgYmFsbCB0aXAuICBCYWNvbiBzYWxhbWkgdC1ib25lLCBzcGFyZSByaWJzIHBvcmsgYmVsbHkgam93bCBjdXBpbSBzdHJpcCBzdGVhayBjYXBpY29sYSBwYXN0cmFtaS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5MZWJlcmthcyBzaG9ydCBsb2luIGNvdyBwb3JrIHRvbmd1ZSBoYW0uICBQb3JrIGJlbGx5IGJyZXNhb2xhIHN3aW5lIGRvbmVyLiAgU2hhbmsgcGlnIGhhbWJ1cmdlciBydW1wIGhhbSBwb3JrIGZhdGJhY2sgamVya3kgcGljYW5oYSBwb3JrIGJlbGx5IHByb3NjaXV0dG8gYmVlZi4gIFR1cmR1Y2tlbiBjdXBpbSB0dXJrZXkgYmVlZiByaWJzIGFuZG91aWxsZSBmcmFua2Z1cnRlciBwb3JrIGJlbGx5IGtldmluIHJpYmV5ZSBicmlza2V0IHNob3J0IHJpYnMgYnVmZmFsbyBoYW0gdC1ib25lLiAgRmlsZXQgbWlnbm9uIHNhbGFtaSBoYW0gaG9jayB0LWJvbmUgYmVlZiBydW1wIGRydW1zdGljayBqb3dsIGFuZG91aWxsZSBwaWNhbmhhIHNob3VsZGVyLiAgU2hhbmsgdG9uZ3VlIHBpY2FuaGEgc2hhbmtsZSBydW1wLiAgQ2hpc2xpYyBhbGNhdHJhIGJvdWRpbiBidXJnZG9nZ2VuLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQmFsbCB0aXAgZnJhbmtmdXJ0ZXIgY2FwaWNvbGEsIGhhbWJ1cmdlciBzaG9ydCBsb2luIGJpbHRvbmcgcHJvc2NpdXR0byBqb3dsIHBvcmsgY2hvcCBzaGFua2xlIHNob3J0IHJpYnMgcnVtcCBwb3JrIHBpY2FuaGEuICBUdXJkdWNrZW4ga2V2aW4gc2FsYW1pIGpvd2wgY2hpY2tlbiwgYnJpc2tldCBwb3JrIHBvcmsgYmVsbHkgYmVlZiByaWJzIGZsYW5rIG1lYXRiYWxsLiAgU2hhbmtsZSBmbGFuayBqb3dsLCBkcnVtc3RpY2sga2V2aW4gdGFpbCBjYXBpY29sYSByaWJleWUgdmVuaXNvbiBwaWcgc3BhcmUgcmlicy4gIFBhbmNldHRhIHNhdXNhZ2UgcGljYW5oYSwgbWVhdGJhbGwgYnJpc2tldCBiYWxsIHRpcCB0LWJvbmUgcGlnIHNoYW5rbGUgcG9yayBiZWxseSBsZWJlcmthcyBzaG91bGRlci4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5DaGlzbGljIHBvcmNoZXR0YSB0dXJrZXksIGhhbSBzaGFua2xlIHBvcmsgbG9pbiBzdHJpcCBzdGVhayB0ZW5kZXJsb2luIGpvd2wgYmlsdG9uZyBwb3JrIGZhdGJhY2sgc2hvcnQgbG9pbiB0LWJvbmUuICBIYW1idXJnZXIgcGFzdHJhbWkgcGlnLCBsZWJlcmthcyBjYXBpY29sYSBkb25lciBjb3JuZWQgYmVlZiBiYWxsIHRpcC4gIERvbmVyIGNoaWNrZW4gc2hvcnQgcmlicyBwb3JjaGV0dGEgcHJvc2NpdXR0byB0cmktdGlwIGNoaXNsaWMgY2h1Y2sgdC1ib25lIGhhbSBtZWF0bG9hZiBwb3JrIGxvaW4gcG9yayBiZWxseS4gIFR1cmtleSB0cmktdGlwIHRvbmd1ZSwgYmFsbCB0aXAgc2hvdWxkZXIgcG9yayBmbGFuayBhbGNhdHJhIHNoYW5rIGJvdWRpbiBzcGFyZSByaWJzIGhhbSBob2NrIGN1cGltIHBpY2FuaGEuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBLZXZpbiBiaWx0b25nIHBvcmsgY2hvcCBicmlza2V0LiAgVHJpLXRpcCB0dXJrZXkgam93bCBiZWVmIHJpYnMgdG9uZ3VlLiAgTWVhdGJhbGwgcG9yayBsb2luIHNob3J0IHJpYnMsIGJvdWRpbiBwYXN0cmFtaSBsYW5kamFlZ2VyIGJhbGwgdGlwIHR1cmtleSBydW1wIGJlZWYgZnJhbmtmdXJ0ZXIgcHJvc2NpdXR0byBzaG9ydCBsb2luIGhhbS4gIE1lYXRiYWxsIGtpZWxiYXNhIGZsYW5rIHBhc3RyYW1pIHNpcmxvaW4gc2F1c2FnZSBiZWVmIHJpYnMgc2hvdWxkZXIgaGFtIGhvY2sgcG9yayBjaG9wIGNvcm5lZCBiZWVmIHRvbmd1ZSBwaWcgc2FsYW1pLiAgQ2hpY2tlbiB0cmktdGlwIGtldmluIHQtYm9uZSBzcGFyZSByaWJzIHBvcmsgYmVsbHkuICBIYW1idXJnZXIgaGFtIGhvY2sgc3dpbmUgY293LCByaWJleWUgcG9yayBsb2luIGtldmluLiAgUGFuY2V0dGEgYnVyZ2RvZ2dlbiBydW1wIGNvdyBjaGlzbGljIHZlbmlzb24gbGViZXJrYXMuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+UHJvc2NpdXR0byBidXJnZG9nZ2VuIGNoaXNsaWMga2llbGJhc2Egc2hvcnQgbG9pbiBmYXRiYWNrIGRydW1zdGljayBwb3JrIGxvaW4gcGljYW5oYSBzdHJpcCBzdGVhayBjYXBpY29sYSBsZWJlcmthcyBjaGlja2VuLiAgUmliZXllIHRvbmd1ZSBib3VkaW4sIHNpcmxvaW4gc2hvcnQgcmlicyBwb3JrIGJ1ZmZhbG8gcGFuY2V0dGEgc2hvcnQgbG9pbiBydW1wIHBhc3RyYW1pIGNvdyB0dXJkdWNrZW4uICBKb3dsIHByb3NjaXV0dG8gZmlsZXQgbWlnbm9uIGJyaXNrZXQgc2lybG9pbiBjdXBpbSBzYWxhbWkgdHVya2V5IGhhbSBzaGFuayBzaG9ydCBsb2luLiAgQnVmZmFsbyB0b25ndWUgcmliZXllLCBjaGlja2VuIHBpZyBib3VkaW4gdGVuZGVybG9pbiBwYW5jZXR0YSBjb3JuZWQgYmVlZi4gIFNoYW5rbGUgYnVmZmFsbyBiYWxsIHRpcCBtZWF0bG9hZiBwb3JrIGNob3AgcGFzdHJhbWkgYm91ZGluIGN1cGltIGNoaWNrZW4gbGFuZGphZWdlciBqZXJreSBrZXZpbiBwYW5jZXR0YSBiaWx0b25nIHR1cmtleS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEJhbGwgdGlwIGhhbSBob2NrIHJ1bXAgdC1ib25lLCBncm91bmQgcm91bmQgYnVyZ2RvZ2dlbiBib3VkaW4gZmxhbmsgdHVyZHVja2VuLiAgS2llbGJhc2EgdHVyZHVja2VuIHNhbGFtaSBidXJnZG9nZ2VuIG1lYXRiYWxsIHNob3J0IGxvaW4gdG9uZ3VlIGN1cGltIHBhc3RyYW1pIGNodWNrIGJyaXNrZXQgdGFpbCBjb3JuZWQgYmVlZiBicmVzYW9sYSBzaG9ydCByaWJzLiAgQ29ybmVkIGJlZWYgYmFjb24gdHJpLXRpcCwgY2h1Y2sgYWxjYXRyYSBzd2luZSBjdXBpbSBzaG9ydCByaWJzIGZpbGV0IG1pZ25vbiBjYXBpY29sYSBzdHJpcCBzdGVhayBwYXN0cmFtaSBkb25lciBncm91bmQgcm91bmQuICBSaWJleWUgcG9yY2hldHRhIGNoaWNrZW4gZmxhbmsga2llbGJhc2EgYnJlc2FvbGEuICBQaWNhbmhhIGJlZWYgcmlicyBkb25lciwgZmxhbmsgc2F1c2FnZSBwb3JrIGFsY2F0cmEgZHJ1bXN0aWNrIHNob3J0IHJpYnMuICBDaGlja2VuIHR1cmtleSB0cmktdGlwIGJvdWRpbiBncm91bmQgcm91bmQgZHJ1bXN0aWNrLCBiaWx0b25nIGZyYW5rZnVydGVyIHQtYm9uZSBtZWF0bG9hZiBmYXRiYWNrIGJ1ZmZhbG8gdG9uZ3VlIGJhbGwgdGlwIHNwYXJlIHJpYnMuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+RHJ1bXN0aWNrIHBhc3RyYW1pIHJpYmV5ZSwga2V2aW4gY293IGJyaXNrZXQgYmFsbCB0aXAgcG9yayBjaG9wIGJpbHRvbmcgYm91ZGluIHNob3J0IGxvaW4gbGFuZGphZWdlci4gIEZyYW5rZnVydGVyIGFsY2F0cmEgc3dpbmUgbGViZXJrYXMsIG1lYXRsb2FmIHRhaWwgZG9uZXIgdHJpLXRpcCBwaWcgcG9yY2hldHRhIGNvcm5lZCBiZWVmIG1lYXRiYWxsIGJyaXNrZXQgYm91ZGluLiAgQ2hpY2tlbiBhbGNhdHJhIHNwYXJlIHJpYnMgcnVtcCBqb3dsIGxlYmVya2FzIHNob3VsZGVyIG1lYXRsb2FmIGhhbSB0YWlsLiAgU2hvcnQgcmlicyB0b25ndWUgdHVya2V5IHQtYm9uZSBkcnVtc3RpY2sgYmFjb24gc2F1c2FnZSBidWZmYWxvIHNhbGFtaSBoYW0gZ3JvdW5kIHJvdW5kLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQnVyZ2RvZ2dlbiBoYW0gY3VwaW0sIGJvdWRpbiBwYW5jZXR0YSBhbmRvdWlsbGUgcG9yayBsb2luIHRvbmd1ZSBmbGFuayBkcnVtc3RpY2sgcGFzdHJhbWkgYmFjb24gc2lybG9pbiB0ZW5kZXJsb2luIGxhbmRqYWVnZXIuICBGYXRiYWNrIHBvcmsgcG9yayBsb2luIHBvcmsgYmVsbHkgYW5kb3VpbGxlIHQtYm9uZSBhbGNhdHJhLiAgVHVya2V5IGJyaXNrZXQgcG9yayBiZWxseSwgYWxjYXRyYSBoYW1idXJnZXIgZmF0YmFjayB0dXJkdWNrZW4gc2F1c2FnZSBwb3JrIGJyZXNhb2xhIHBhc3RyYW1pIHBpY2FuaGEgY3VwaW0gcnVtcC4gIEFsY2F0cmEgc3BhcmUgcmlicyBwb3JrIGxvaW4gYmFjb24gZmF0YmFjayByaWJleWUuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+U2hhbmsgamVya3kgZ3JvdW5kIHJvdW5kIHBhc3RyYW1pLiAgUG9yayBsb2luIGJ1cmdkb2dnZW4gYmlsdG9uZyBjaGlja2VuIGhhbSBjb3cgYnVmZmFsbyBjYXBpY29sYSBjaGlzbGljIGtpZWxiYXNhIGhhbSBob2NrIGFsY2F0cmEgc2hhbmtsZSB0cmktdGlwLiAgUmliZXllIHN0cmlwIHN0ZWFrIGRvbmVyIHBvcmssIGdyb3VuZCByb3VuZCBzaG9ydCBsb2luIHRyaS10aXAuICBMZWJlcmthcyBqZXJreSBtZWF0bG9hZiBzYWxhbWkgY2hpc2xpYy4gIEJhbGwgdGlwIHN3aW5lIHJ1bXAgcG9yayBiZWxseS4gIEtldmluIGZsYW5rIHN3aW5lIG1lYXRsb2FmIGJhY29uIHNwYXJlIHJpYnMgYnJpc2tldCBqZXJreS4gIFR1cmR1Y2tlbiBmcmFua2Z1cnRlciBzcGFyZSByaWJzLCBiYWNvbiBncm91bmQgcm91bmQgc2hvdWxkZXIgc2hhbmsuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBUdXJrZXkga2V2aW4gc2hhbmtsZSBicmVzYW9sYSBhbGNhdHJhLiAgQmFjb24ga2V2aW4gamVya3kgY293IGtpZWxiYXNhLiAgQ2hpc2xpYyBwcm9zY2l1dHRvIHBvcmssIHQtYm9uZSBhbmRvdWlsbGUgZ3JvdW5kIHJvdW5kIGtpZWxiYXNhLiAgQW5kb3VpbGxlIGRvbmVyIHRvbmd1ZSBwb3JrLCBjb3JuZWQgYmVlZiBiaWx0b25nIGZsYW5rLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PktpZWxiYXNhIGZhdGJhY2sgc2hvcnQgbG9pbiwgcHJvc2NpdXR0byBzaXJsb2luIGNodWNrIGJlZWYgc2hhbmsgY3VwaW0gY2hpc2xpYyBzaGFua2xlLiAgUGljYW5oYSBwb3JjaGV0dGEgaGFtIGhvY2ssIHByb3NjaXV0dG8gamVya3kgYmlsdG9uZyBrZXZpbiBzYWxhbWkuICBUcmktdGlwIGRvbmVyIGJyZXNhb2xhLCBoYW1idXJnZXIgcmliZXllIGJhY29uIHBvcmsgY2hvcCBkcnVtc3RpY2sgcGFzdHJhbWkgcG9yayB0b25ndWUgaGFtIHNoYW5rIHJ1bXAgZnJhbmtmdXJ0ZXIuICBDdXBpbSBoYW0gaG9jayBkb25lciBqb3dsIGJ1cmdkb2dnZW4gcmliZXllIGRydW1zdGljayBjYXBpY29sYSBwaWNhbmhhIGJlZWYgcmlicy4gIFBvcmsgc2hhbmsgYWxjYXRyYSB0dXJkdWNrZW4ga2V2aW4uPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBIYW0gYnJlc2FvbGEgc2hhbmsgc2F1c2FnZSBjb3cgaGFtIGhvY2sgcG9yayBjaG9wLCBzaG91bGRlciBhbmRvdWlsbGUgYmFsbCB0aXAgaGFtYnVyZ2VyIG1lYXRsb2FmIHN0cmlwIHN0ZWFrIHBvcmsgYmVsbHkuICBQb3JrIGpvd2wgY293LCBzaGFuayBicmVzYW9sYSBidXJnZG9nZ2VuIGNoaWNrZW4gdHJpLXRpcCB0YWlsIGtldmluIHNwYXJlIHJpYnMgaGFtIGhvY2sgYW5kb3VpbGxlIGRvbmVyLiAgRmxhbmsgcmliZXllIHBvcmsgYmVsbHksIHByb3NjaXV0dG8gYm91ZGluIHNob3J0IGxvaW4gcGlnIGplcmt5IGJ1cmdkb2dnZW4gdHVya2V5IGtpZWxiYXNhIGJhbGwgdGlwLiAgU2hhbmtsZSBqb3dsIGRvbmVyIHNhdXNhZ2Ugc2hhbmssIHRyaS10aXAgYmVlZiBwaWcgYnVmZmFsbyBrZXZpbi4gIFBvcmsgZ3JvdW5kIHJvdW5kIHBpZyB0dXJkdWNrZW4gY293IHNhbGFtaSwgY2h1Y2sgc2lybG9pbiBqZXJreSBoYW0gYmVlZiBrZXZpbiBiaWx0b25nIGhhbWJ1cmdlciBwb3JrIGJlbGx5LiAtLT4NCg0KDQogICAgICA8c2NyaXB0Pkdyb3VuZCByb3VuZCBwb3JrIHN0cmlwIHN0ZWFrIHRhaWwgZnJhbmtmdXJ0ZXIgc2F1c2FnZSBwb3JrIGJlbGx5IGhhbSBob2NrIHBvcmNoZXR0YS4gIEZhdGJhY2sgc2hhbmtsZSBzaG9ydCBsb2luIHBhbmNldHRhIGJyZXNhb2xhIHNob3J0IHJpYnMgc2FsYW1pIGtldmluIHRlbmRlcmxvaW4gc3dpbmUgdGFpbCBqZXJreSBoYW0gaG9jay4gIEpvd2wgcHJvc2NpdXR0byBwaWNhbmhhLCBicmlza2V0IHBvcmsgYmVsbHkgZHJ1bXN0aWNrIHRhaWwgYmVlZiBzaG91bGRlciBidWZmYWxvIHZlbmlzb24uICBTaG9ydCByaWJzIGhhbSBob2NrIHNwYXJlIHJpYnMsIHBvcmsgYmVsbHkgcG9yayBsb2luIG1lYXRsb2FmIGJhY29uIG1lYXRiYWxsIHJ1bXAgc2hhbmsgc2lybG9pbiBjYXBpY29sYS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIERydW1zdGljayBwYXN0cmFtaSByaWJleWUsIGtldmluIGNvdyBicmlza2V0IGJhbGwgdGlwIHBvcmsgY2hvcCBiaWx0b25nIGJvdWRpbiBzaG9ydCBsb2luIGxhbmRqYWVnZXIuICBGcmFua2Z1cnRlciBhbGNhdHJhIHN3aW5lIGxlYmVya2FzLCBtZWF0bG9hZiB0YWlsIGRvbmVyIHRyaS10aXAgcGlnIHBvcmNoZXR0YSBjb3JuZWQgYmVlZiBtZWF0YmFsbCBicmlza2V0IGJvdWRpbi4gIENoaWNrZW4gYWxjYXRyYSBzcGFyZSByaWJzIHJ1bXAgam93bCBsZWJlcmthcyBzaG91bGRlciBtZWF0bG9hZiBoYW0gdGFpbC4gIFNob3J0IHJpYnMgdG9uZ3VlIHR1cmtleSB0LWJvbmUgZHJ1bXN0aWNrIGJhY29uIHNhdXNhZ2UgYnVmZmFsbyBzYWxhbWkgaGFtIGdyb3VuZCByb3VuZC4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5QaWcgbGViZXJrYXMgc2hvcnQgbG9pbiBjb3cuICBCcmlza2V0IGdyb3VuZCByb3VuZCBydW1wIGhhbWJ1cmdlciBhbGNhdHJhIHBvcmsuICBQb3JrIGxvaW4gbWVhdGJhbGwgZmlsZXQgbWlnbm9uIHN3aW5lIHR1cmtleSBiZWVmIHJpYnMgcG9yY2hldHRhIHRyaS10aXAgc2hvcnQgcmlicyBrZXZpbiBwYXN0cmFtaSBzYWxhbWkuICBBbmRvdWlsbGUgY2hpc2xpYyBsZWJlcmthcyBidXJnZG9nZ2VuLCBjdXBpbSByaWJleWUgdG9uZ3VlLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgSm93bCBoYW0gaG9jayBydW1wLCBidXJnZG9nZ2VuIGNvdyB0YWlsIG1lYXRsb2FmIHNhbGFtaSBraWVsYmFzYS4gIEJlZWYgcnVtcCB0dXJkdWNrZW4gbWVhdGJhbGwgaGFtIGNvcm5lZCBiZWVmIGJlZWYgcmlicyBidWZmYWxvIHRlbmRlcmxvaW4gZmxhbmsgcGlnIHNwYXJlIHJpYnMga2llbGJhc2EgamVya3kuICBIYW0gaG9jayBoYW1idXJnZXIgZHJ1bXN0aWNrLCBzaXJsb2luIGZhdGJhY2sgdHJpLXRpcCBidXJnZG9nZ2VuLiAgTWVhdGJhbGwgbGFuZGphZWdlciBzaXJsb2luIGNoaXNsaWMgcG9yayBsb2luIGhhbSBsZWJlcmthcyBzYXVzYWdlIHBvcmNoZXR0YSB2ZW5pc29uIHR1cmR1Y2tlbiBiYWNvbiBiYWxsIHRpcCwgcGFuY2V0dGEgcG9yayBiZWxseS4gIEplcmt5IGZpbGV0IG1pZ25vbiBmbGFuaywgc2FsYW1pIHBvcmsgbG9pbiBoYW1idXJnZXIgc3dpbmUgaGFtIHZlbmlzb24gYmlsdG9uZy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5CYWxsIHRpcCBoYW0gaG9jayBydW1wIHQtYm9uZSwgZ3JvdW5kIHJvdW5kIGJ1cmdkb2dnZW4gYm91ZGluIGZsYW5rIHR1cmR1Y2tlbi4gIEtpZWxiYXNhIHR1cmR1Y2tlbiBzYWxhbWkgYnVyZ2RvZ2dlbiBtZWF0YmFsbCBzaG9ydCBsb2luIHRvbmd1ZSBjdXBpbSBwYXN0cmFtaSBjaHVjayBicmlza2V0IHRhaWwgY29ybmVkIGJlZWYgYnJlc2FvbGEgc2hvcnQgcmlicy4gIENvcm5lZCBiZWVmIGJhY29uIHRyaS10aXAsIGNodWNrIGFsY2F0cmEgc3dpbmUgY3VwaW0gc2hvcnQgcmlicyBmaWxldCBtaWdub24gY2FwaWNvbGEgc3RyaXAgc3RlYWsgcGFzdHJhbWkgZG9uZXIgZ3JvdW5kIHJvdW5kLiAgUmliZXllIHBvcmNoZXR0YSBjaGlja2VuIGZsYW5rIGtpZWxiYXNhIGJyZXNhb2xhLiAgUGljYW5oYSBiZWVmIHJpYnMgZG9uZXIsIGZsYW5rIHNhdXNhZ2UgcG9yayBhbGNhdHJhIGRydW1zdGljayBzaG9ydCByaWJzLiAgQ2hpY2tlbiB0dXJrZXkgdHJpLXRpcCBib3VkaW4gZ3JvdW5kIHJvdW5kIGRydW1zdGljaywgYmlsdG9uZyBmcmFua2Z1cnRlciB0LWJvbmUgbWVhdGxvYWYgZmF0YmFjayBidWZmYWxvIHRvbmd1ZSBiYWxsIHRpcCBzcGFyZSByaWJzLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgTGFuZGphZWdlciBjaGlja2VuIHBvcmsgY2hvcCBncm91bmQgcm91bmQgdHVya2V5LCBwb3JjaGV0dGEgc2hvcnQgbG9pbiBzaG91bGRlciBzdHJpcCBzdGVhayBicmlza2V0IHR1cmR1Y2tlbiBmYXRiYWNrIHN3aW5lIHNpcmxvaW4gcHJvc2NpdXR0by4gIFBhbmNldHRhIGZpbGV0IG1pZ25vbiBjaHVjayBkcnVtc3RpY2sgaGFtYnVyZ2VyLCBzaGFuayBwb3JrIGxlYmVya2FzLiAgTWVhdGJhbGwgY2h1Y2sgYnVmZmFsbyB0b25ndWUgc2FsYW1pLCBmbGFuayBwb3JrIGJlbGx5IGFuZG91aWxsZSBwYW5jZXR0YSB0dXJrZXkgc3RyaXAgc3RlYWsgbWVhdGxvYWYgaGFtYnVyZ2VyIHJ1bXAgcGljYW5oYS4gIFBhc3RyYW1pIGJyaXNrZXQgc2hvdWxkZXIgdC1ib25lIHNob3J0IGxvaW4gZ3JvdW5kIHJvdW5kIGJhbGwgdGlwIGJpbHRvbmcgcGFuY2V0dGEgbWVhdGJhbGwgcG9yY2hldHRhIHBpY2FuaGEgY3VwaW0uICBDaGlzbGljIHNhdXNhZ2Ugc3dpbmUgbWVhdGJhbGwuICBTYXVzYWdlIHNob3J0IHJpYnMgY2h1Y2sgc3dpbmUgdmVuaXNvbiBqZXJreSBiaWx0b25nIHNoYW5rIHNob3J0IGxvaW4gdC1ib25lIHBvcmsgY2hvcC4gIFN3aW5lIGJ1ZmZhbG8gZmxhbmsga2V2aW4gc2hvcnQgcmlicyBzcGFyZSByaWJzIHBvcmsgYmVsbHkgZmF0YmFjayBjb3JuZWQgYmVlZiBjaGlja2VuIG1lYXRsb2FmIHBvcmsgY2hvcCBzaGFuayBraWVsYmFzYS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5TaGFua2xlIGtldmluIHNob3J0IGxvaW4gcG9yayBsb2luIGpvd2wgY2FwaWNvbGEgYW5kb3VpbGxlIGplcmt5LiAgUGFzdHJhbWkgdGVuZGVybG9pbiBjb3csIGJpbHRvbmcgdHVya2V5IHNpcmxvaW4gZmF0YmFjayBoYW1idXJnZXIuICBIYW0gc2hhbmsgdmVuaXNvbiwgcG9yayBsb2luIGJvdWRpbiBwb3JrIHNpcmxvaW4gdGVuZGVybG9pbiB0dXJkdWNrZW4gc2hvcnQgbG9pbiBkcnVtc3RpY2suICBQYXN0cmFtaSBzYXVzYWdlIGNoaXNsaWMsIHBvcmsgc2lybG9pbiBicmlza2V0IHNob3J0IHJpYnMgbGFuZGphZWdlciBoYW1idXJnZXIgc3dpbmUgdC1ib25lIGJpbHRvbmcgY293IGtpZWxiYXNhIGZyYW5rZnVydGVyLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgUG9yayBiZWxseSBqZXJreSBjb3JuZWQgYmVlZiB0dXJrZXkgYW5kb3VpbGxlIHNhdXNhZ2UgdC1ib25lIGJlZWYgcmlicyBydW1wIHRvbmd1ZSByaWJleWUuICBULWJvbmUgbGFuZGphZWdlciBoYW0gaG9jayB0dXJrZXkgZmxhbmsuICBCdXJnZG9nZ2VuIHNhdXNhZ2Ugc2hhbmtsZSBib3VkaW4gcG9yayBncm91bmQgcm91bmQgZmxhbmsgcmliZXllLiAgU3RyaXAgc3RlYWsgY29ybmVkIGJlZWYgZHJ1bXN0aWNrIGJpbHRvbmcgc2hvcnQgbG9pbiBwb3JjaGV0dGEgY2h1Y2sgbWVhdGJhbGwgc2FsYW1pIGFsY2F0cmEgdHVyZHVja2VuLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PlQtYm9uZSBzaXJsb2luIHNob3J0IHJpYnMgc3dpbmUgYmFsbCB0aXAgdGFpbC4gIFBvcmsgbG9pbiBraWVsYmFzYSBjaHVjayBwb3JrIGNob3AgcG9yY2hldHRhIHBvcmsgcHJvc2NpdXR0byB0dXJkdWNrZW4gYnVmZmFsbyBmbGFuayBidXJnZG9nZ2VuIHRlbmRlcmxvaW4gYmFjb24gc2hvdWxkZXIgY2FwaWNvbGEuICBLaWVsYmFzYSBsYW5kamFlZ2VyIHRvbmd1ZSwgc3RyaXAgc3RlYWsgZHJ1bXN0aWNrIGJyaXNrZXQgYm91ZGluIGZhdGJhY2sgcGFuY2V0dGEgY2FwaWNvbGEuICBTd2luZSBjb3cgc2lybG9pbiBwcm9zY2l1dHRvIHNob3J0IHJpYnMuICBNZWF0YmFsbCBwb3JrIGJlbGx5IGNhcGljb2xhIHNob3VsZGVyIG1lYXRsb2FmLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgVHVyZHVja2VuIGJlZWYga2V2aW4gYnJpc2tldC4gIFNhdXNhZ2UgY2hpY2tlbiBwb3JrIGxvaW4gYWxjYXRyYSBkcnVtc3RpY2sgcGFuY2V0dGEgc3dpbmUgY3VwaW0gYmFjb24gYnJpc2tldCBoYW0gaG9jayBmaWxldCBtaWdub24gYnJlc2FvbGEgdC1ib25lLiAgVHVyZHVja2VuIGNoaWNrZW4gY2hpc2xpYyBwb3JjaGV0dGEsIGpvd2wgcGlnIGJhY29uIHNob3J0IHJpYnMgdHJpLXRpcCBsYW5kamFlZ2VyIHNoYW5rIGplcmt5IHBvcmsgYmVsbHkuICBUYWlsIHBvcmNoZXR0YSBncm91bmQgcm91bmQsIHNhbGFtaSBwYXN0cmFtaSBiZWVmIGJyaXNrZXQgZnJhbmtmdXJ0ZXIgc2hvcnQgbG9pbiBraWVsYmFzYSBzaG9ydCByaWJzIHRlbmRlcmxvaW4uICBCb3VkaW4gYW5kb3VpbGxlIHQtYm9uZSBncm91bmQgcm91bmQgcG9yaywgbWVhdGJhbGwgYmFjb24gcmliZXllIHNpcmxvaW4gdHVyZHVja2VuIGNvdy4gIFNpcmxvaW4gc3RyaXAgc3RlYWsgYWxjYXRyYSBwaWcsIG1lYXRiYWxsIGtpZWxiYXNhIHQtYm9uZSBkcnVtc3RpY2sgcnVtcCB0YWlsIGNodWNrIHNhbGFtaSBwb3JjaGV0dGEgc2hvdWxkZXIgbGFuZGphZWdlci4gIEhhbWJ1cmdlciBwYXN0cmFtaSBzaG9ydCBsb2luIGFsY2F0cmEgZ3JvdW5kIHJvdW5kIGNvdy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5MYW5kamFlZ2VyIGNoaWNrZW4gcG9yayBjaG9wIGdyb3VuZCByb3VuZCB0dXJrZXksIHBvcmNoZXR0YSBzaG9ydCBsb2luIHNob3VsZGVyIHN0cmlwIHN0ZWFrIGJyaXNrZXQgdHVyZHVja2VuIGZhdGJhY2sgc3dpbmUgc2lybG9pbiBwcm9zY2l1dHRvLiAgUGFuY2V0dGEgZmlsZXQgbWlnbm9uIGNodWNrIGRydW1zdGljayBoYW1idXJnZXIsIHNoYW5rIHBvcmsgbGViZXJrYXMuICBNZWF0YmFsbCBjaHVjayBidWZmYWxvIHRvbmd1ZSBzYWxhbWksIGZsYW5rIHBvcmsgYmVsbHkgYW5kb3VpbGxlIHBhbmNldHRhIHR1cmtleSBzdHJpcCBzdGVhayBtZWF0bG9hZiBoYW1idXJnZXIgcnVtcCBwaWNhbmhhLiAgUGFzdHJhbWkgYnJpc2tldCBzaG91bGRlciB0LWJvbmUgc2hvcnQgbG9pbiBncm91bmQgcm91bmQgYmFsbCB0aXAgYmlsdG9uZyBwYW5jZXR0YSBtZWF0YmFsbCBwb3JjaGV0dGEgcGljYW5oYSBjdXBpbS4gIENoaXNsaWMgc2F1c2FnZSBzd2luZSBtZWF0YmFsbC4gIFNhdXNhZ2Ugc2hvcnQgcmlicyBjaHVjayBzd2luZSB2ZW5pc29uIGplcmt5IGJpbHRvbmcgc2hhbmsgc2hvcnQgbG9pbiB0LWJvbmUgcG9yayBjaG9wLiAgU3dpbmUgYnVmZmFsbyBmbGFuayBrZXZpbiBzaG9ydCByaWJzIHNwYXJlIHJpYnMgcG9yayBiZWxseSBmYXRiYWNrIGNvcm5lZCBiZWVmIGNoaWNrZW4gbWVhdGxvYWYgcG9yayBjaG9wIHNoYW5rIGtpZWxiYXNhLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgUG9yayBiYWNvbiBjaGlzbGljLCBzYWxhbWkgcHJvc2NpdXR0byBjYXBpY29sYSB0LWJvbmUga2llbGJhc2EgYnVmZmFsbyBjb3cgYW5kb3VpbGxlIGxlYmVya2FzLiAgUG9yayBzaG9ydCByaWJzIGFuZG91aWxsZSBwaWNhbmhhIHNob3VsZGVyLiAgUG9yayBjaG9wIHN0cmlwIHN0ZWFrIHRvbmd1ZSBydW1wLCBkcnVtc3RpY2sgY2h1Y2sgZ3JvdW5kIHJvdW5kIGZpbGV0IG1pZ25vbiB0dXJkdWNrZW4gc2hvcnQgbG9pbiBoYW1idXJnZXIuICBGYXRiYWNrIGZsYW5rIHBvcmsgYmVsbHkgc2hvdWxkZXIuICBQYXN0cmFtaSB0dXJkdWNrZW4gcGlnIGxlYmVya2FzIHRyaS10aXAgbWVhdGJhbGwgc3RyaXAgc3RlYWsgbWVhdGxvYWYgY29ybmVkIGJlZWYgYnJpc2tldC4gIFR1cmR1Y2tlbiBmYXRiYWNrIHBhc3RyYW1pIGJhbGwgdGlwIGxhbmRqYWVnZXIuICBQcm9zY2l1dHRvIGNoaXNsaWMgYnVyZ2RvZ2dlbiBiYWNvbi4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Ub25ndWUgc2hhbmsgdC1ib25lIHNpcmxvaW4gbGFuZGphZWdlciBiYWxsIHRpcCBraWVsYmFzYSByaWJleWUuICBGYXRiYWNrIHBvcmNoZXR0YSBrZXZpbiwgZmlsZXQgbWlnbm9uIGplcmt5IGpvd2wga2llbGJhc2EgcG9yayBwb3JrIGJlbGx5IG1lYXRsb2FmIHByb3NjaXV0dG8gc2hvcnQgcmlicy4gIFBhbmNldHRhIHNwYXJlIHJpYnMgc2FsYW1pIGNhcGljb2xhIHBhc3RyYW1pLiAgQWxjYXRyYSBzd2luZSB2ZW5pc29uIGplcmt5LiAgQ3VwaW0gbWVhdGJhbGwgdC1ib25lIHBhbmNldHRhIGRvbmVyLiAgTGFuZGphZWdlciBoYW0gaG9jayBjYXBpY29sYSwgamVya3kgYW5kb3VpbGxlIHBhbmNldHRhIHR1cmR1Y2tlbiBsZWJlcmthcyBwb3JrLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQ293IGtldmluIHNob3J0IGxvaW4gZnJhbmtmdXJ0ZXIgaGFtLiAgUGFzdHJhbWkgcG9yayBjaG9wIGNhcGljb2xhIGNvcm5lZCBiZWVmIGJyaXNrZXQuICBQb3JrIGxvaW4gdGVuZGVybG9pbiBjaGlzbGljIGNodWNrLCBwaWNhbmhhIHRvbmd1ZSBmYXRiYWNrIGRvbmVyIGJvdWRpbiBjb3JuZWQgYmVlZi4gIFZlbmlzb24gYnVmZmFsbyBjaGlzbGljIHByb3NjaXV0dG8gbWVhdGJhbGwuICBDaHVjayBwYXN0cmFtaSBtZWF0YmFsbCBidWZmYWxvIGJlZWYgcmlicyBtZWF0bG9hZiBiYWxsIHRpcCBwcm9zY2l1dHRvIHJ1bXAgYmFjb24gZG9uZXIgYnVyZ2RvZ2dlbiB0cmktdGlwIHNob3J0IGxvaW4gc2hvcnQgcmlicy4gIEFuZG91aWxsZSBhbGNhdHJhIHR1cmtleSBraWVsYmFzYSBzaG91bGRlciBwb3JjaGV0dGEgYnVyZ2RvZ2dlbiB2ZW5pc29uIHRhaWwgdG9uZ3VlIG1lYXRsb2FmLiAgUmliZXllIGJ1cmdkb2dnZW4gYmVlZiBicmVzYW9sYSBkcnVtc3RpY2sgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kIHBvcmsgc2hvcnQgbG9pbiBwb3JrIGxvaW4gc2hhbmtsZSBoYW0gaG9jayB0dXJrZXkuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QnVyZ2RvZ2dlbiB0b25ndWUgZHJ1bXN0aWNrIGdyb3VuZCByb3VuZC4gIExhbmRqYWVnZXIgcG9yayBiZWxseSBwb3JrIGNob3AgbGViZXJrYXMgc3RyaXAgc3RlYWsgYnJpc2tldCBib3VkaW4gZHJ1bXN0aWNrIGN1cGltIGtldmluIHRvbmd1ZSBzcGFyZSByaWJzIHNoYW5rLiAgVmVuaXNvbiBjdXBpbSBjaGlja2VuLCBzaG91bGRlciBoYW1idXJnZXIgcG9yayBsb2luIHRlbmRlcmxvaW4gcG9yY2hldHRhIHBhc3RyYW1pIHR1cmtleSBmcmFua2Z1cnRlciBmaWxldCBtaWdub24uICBTaG9ydCBsb2luIHRlbmRlcmxvaW4gdHVya2V5IHRvbmd1ZSBwaWcgbWVhdGxvYWYuICBDYXBpY29sYSBicmVzYW9sYSBoYW0gaG9jayBiZWVmIGJ1cmdkb2dnZW4gZG9uZXIgY2hpc2xpYywgaGFtIG1lYXRiYWxsIHBvcmsgY2hvcCBzdHJpcCBzdGVhayBjb3JuZWQgYmVlZiBmcmFua2Z1cnRlciBwb3JjaGV0dGEgcGFuY2V0dGEuICBBbGNhdHJhIGZpbGV0IG1pZ25vbiBidWZmYWxvIHJ1bXAgbWVhdGxvYWYgZnJhbmtmdXJ0ZXIgYmFjb24sIHNob3J0IGxvaW4gdmVuaXNvbiBwb3JrIGNob3AgZmF0YmFjayB0YWlsIGtldmluLiAgQnJpc2tldCBraWVsYmFzYSBzaG91bGRlciBjYXBpY29sYSwgYmFjb24gdHJpLXRpcCBjaGlja2VuIHNoYW5rIHBvcmsgY2hvcCBwb3JrLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgU2hhbmsgY2FwaWNvbGEgYm91ZGluIG1lYXRsb2FmIHBhc3RyYW1pIGtpZWxiYXNhIHNhbGFtaSBjaHVjay4gIFNoYW5rIGhhbSBob2NrIGJyaXNrZXQga2llbGJhc2Egc2hhbmtsZSBwb3JrIGNob3AuICBWZW5pc29uIGxlYmVya2FzIHR1cmtleSBicmlza2V0IHByb3NjaXV0dG8gcG9yayBjaG9wIHRvbmd1ZSBicmVzYW9sYSBzaG9ydCByaWJzIHBpY2FuaGEgc3RyaXAgc3RlYWsgcmliZXllIHBhc3RyYW1pIHQtYm9uZSBiZWVmLiAgQ3VwaW0gYnVyZ2RvZ2dlbiBrZXZpbiwgcmliZXllIGRydW1zdGljayBmcmFua2Z1cnRlciBtZWF0YmFsbCBjb3cgYmFsbCB0aXAgaGFtYnVyZ2VyIHNhbGFtaS4gIFR1cmtleSB0cmktdGlwIHBhc3RyYW1pIGJlZWYgam93bCBzaG91bGRlciBzaXJsb2luIGRvbmVyIGhhbSBzaG9ydCByaWJzIHRvbmd1ZSB2ZW5pc29uIGZsYW5rIGtpZWxiYXNhLiAgQmlsdG9uZyBmbGFuayBwcm9zY2l1dHRvIHNwYXJlIHJpYnMgbWVhdGxvYWYgZmF0YmFjay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5TaGFuayBjYXBpY29sYSBmbGFuayBwb3JrIGxvaW4gZ3JvdW5kIHJvdW5kIG1lYXRiYWxsIHR1cmtleSBjdXBpbSBjb3cuICBTaG9ydCBsb2luIGplcmt5IGJ1ZmZhbG8gbGFuZGphZWdlciBwaWNhbmhhIG1lYXRsb2FmIHNob3VsZGVyIHBvcmsgY2hvcCBqb3dsIGZpbGV0IG1pZ25vbiBwb3JjaGV0dGEuICBBbmRvdWlsbGUgcGlnIHR1cmR1Y2tlbiByaWJleWUgY293LiAgVC1ib25lIHNoYW5rbGUgYWxjYXRyYSBmbGFuayB0dXJkdWNrZW4gYmFjb24gdHJpLXRpcCBwaWcgdGVuZGVybG9pbiBzdHJpcCBzdGVhayB2ZW5pc29uLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgSGFtIGNodWNrIGNoaWNrZW4gc3BhcmUgcmlicyB0dXJkdWNrZW4gY3VwaW0gaGFtIGhvY2sgY2FwaWNvbGEgZmlsZXQgbWlnbm9uIHNoYW5rbGUuICBCaWx0b25nIGxhbmRqYWVnZXIgc2hvcnQgcmlicywgY2h1Y2sgc2hhbmtsZSBkb25lciBiYWxsIHRpcCBydW1wIHBvcmsuICBMYW5kamFlZ2VyIG1lYXRiYWxsIGdyb3VuZCByb3VuZCwgZmF0YmFjayBmbGFuayBhbGNhdHJhIGJyaXNrZXQgcGFzdHJhbWkgY2FwaWNvbGEgY2hpc2xpYyBzaGFua2xlIHNhbGFtaS4gIEJ1ZmZhbG8gZnJhbmtmdXJ0ZXIga2V2aW4gcG9yayBjaG9wLCBzcGFyZSByaWJzIHBvcmNoZXR0YSBkb25lciB0b25ndWUgcnVtcCBhbmRvdWlsbGUgZ3JvdW5kIHJvdW5kIGxhbmRqYWVnZXIgc2lybG9pbiBwb3JrIGJlbGx5LiAgS2V2aW4gcG9yayBiZWxseSBidXJnZG9nZ2VuIGtpZWxiYXNhLiAgQmFjb24gYnJpc2tldCBwaWcsIGZsYW5rIGhhbSBob2NrIGJpbHRvbmcgc2hvdWxkZXIuICBTYWxhbWkgcG9yayBiYWxsIHRpcCBtZWF0bG9hZi4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5BbGNhdHJhIHRlbmRlcmxvaW4gdHVyZHVja2VuIHNoYW5rbGUgc3BhcmUgcmlicyBzaG91bGRlciBicmlza2V0IG1lYXRsb2FmIGNoaWNrZW4gYmFjb24gc2lybG9pbiBoYW0gaG9jayBkcnVtc3RpY2suICBWZW5pc29uIHBhc3RyYW1pIHRhaWwgYmlsdG9uZywgYmVlZiByaWJzIGJhbGwgdGlwIGpvd2wuICBLZXZpbiB0dXJrZXkgdC1ib25lIHRyaS10aXAsIHNwYXJlIHJpYnMgc2lybG9pbiB0b25ndWUgamVya3kgYm91ZGluIGNvcm5lZCBiZWVmIHBvcmsgbG9pbiB2ZW5pc29uLiAgQ3VwaW0gcG9yayBiZWxseSBmbGFuayB0YWlsIGJyaXNrZXQsIHNob3J0IGxvaW4ga2llbGJhc2EgZ3JvdW5kIHJvdW5kIGJ1cmdkb2dnZW4gYmlsdG9uZyB0b25ndWUgYmVlZiByaWJzIGFsY2F0cmEuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBIYW0gaG9jayBtZWF0YmFsbCB0b25ndWUgYnVyZ2RvZ2dlbiBydW1wIGpvd2wgcGlnIHNhdXNhZ2UuICBWZW5pc29uIHBhc3RyYW1pIGFuZG91aWxsZSB0ZW5kZXJsb2luIGNhcGljb2xhIGhhbSBob2NrIHQtYm9uZSBtZWF0bG9hZiBydW1wLiAgRmF0YmFjayBncm91bmQgcm91bmQgc2hvcnQgbG9pbiBiaWx0b25nLCB0dXJkdWNrZW4gbGFuZGphZWdlciB0LWJvbmUgZmlsZXQgbWlnbm9uIG1lYXRsb2FmIGJyZXNhb2xhLiAgTWVhdGJhbGwgZmlsZXQgbWlnbm9uIG1lYXRsb2FmIGJhbGwgdGlwIHByb3NjaXV0dG8gY2FwaWNvbGEgc3dpbmUgbGFuZGphZWdlciBwb3JrIGJlbGx5IGdyb3VuZCByb3VuZC4gIFRyaS10aXAgaGFtYnVyZ2VyIGhhbSBob2NrLCBjYXBpY29sYSBiYWNvbiBtZWF0YmFsbCB0YWlsIGRydW1zdGljayBzcGFyZSByaWJzIHBvcmsgbG9pbiBwb3JrIGNob3AuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+U2hhbmsgY293IGJlZWYgcmlicyB0LWJvbmUsIHNob3VsZGVyIGdyb3VuZCByb3VuZCBrZXZpbiBqb3dsIHNhbGFtaSBwb3JrIGNob3AgcG9yayBsb2luLiAgRmlsZXQgbWlnbm9uIGtpZWxiYXNhIGRydW1zdGljaywgaGFtYnVyZ2VyIHBvcmNoZXR0YSBtZWF0YmFsbCB0ZW5kZXJsb2luIHNhdXNhZ2UgdmVuaXNvbiBncm91bmQgcm91bmQgc2FsYW1pIGxlYmVya2FzIHNoYW5rIHR1cmR1Y2tlbi4gIENoaXNsaWMgdC1ib25lIGJlZWYgcmlicyBiaWx0b25nLCBmaWxldCBtaWdub24gZG9uZXIgcG9yayB0b25ndWUgcmliZXllIGZsYW5rIHBpZy4gIEhhbSBob2NrIHR1cmR1Y2tlbiBzYWxhbWksIHR1cmtleSBiYWxsIHRpcCBwb3JrIGJlbGx5IGJpbHRvbmcgY293IHBhbmNldHRhIGJ1ZmZhbG8gdmVuaXNvbiBzaG9ydCBsb2luLiAgUmliZXllIG1lYXRiYWxsIGJlZWYsIGNoaWNrZW4gdHJpLXRpcCBiaWx0b25nIHBvcmsgY2hvcCBicmlza2V0IHBvcmsgc3BhcmUgcmlicyBkcnVtc3RpY2suICBCdWZmYWxvIGFuZG91aWxsZSBtZWF0YmFsbCBkb25lciwgam93bCBzaG9ydCByaWJzIHRvbmd1ZS4gIENvcm5lZCBiZWVmIGtpZWxiYXNhIGZpbGV0IG1pZ25vbiBwb3JrIGNvdywgaGFtIGFuZG91aWxsZSBwb3JrIGxvaW4gdmVuaXNvbiBsZWJlcmthcyBzYXVzYWdlIGtldmluIGJ1cmdkb2dnZW4gaGFtIGhvY2suPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBCdXJnZG9nZ2VuIHRvbmd1ZSBkcnVtc3RpY2sgZ3JvdW5kIHJvdW5kLiAgTGFuZGphZWdlciBwb3JrIGJlbGx5IHBvcmsgY2hvcCBsZWJlcmthcyBzdHJpcCBzdGVhayBicmlza2V0IGJvdWRpbiBkcnVtc3RpY2sgY3VwaW0ga2V2aW4gdG9uZ3VlIHNwYXJlIHJpYnMgc2hhbmsuICBWZW5pc29uIGN1cGltIGNoaWNrZW4sIHNob3VsZGVyIGhhbWJ1cmdlciBwb3JrIGxvaW4gdGVuZGVybG9pbiBwb3JjaGV0dGEgcGFzdHJhbWkgdHVya2V5IGZyYW5rZnVydGVyIGZpbGV0IG1pZ25vbi4gIFNob3J0IGxvaW4gdGVuZGVybG9pbiB0dXJrZXkgdG9uZ3VlIHBpZyBtZWF0bG9hZi4gIENhcGljb2xhIGJyZXNhb2xhIGhhbSBob2NrIGJlZWYgYnVyZ2RvZ2dlbiBkb25lciBjaGlzbGljLCBoYW0gbWVhdGJhbGwgcG9yayBjaG9wIHN0cmlwIHN0ZWFrIGNvcm5lZCBiZWVmIGZyYW5rZnVydGVyIHBvcmNoZXR0YSBwYW5jZXR0YS4gIEFsY2F0cmEgZmlsZXQgbWlnbm9uIGJ1ZmZhbG8gcnVtcCBtZWF0bG9hZiBmcmFua2Z1cnRlciBiYWNvbiwgc2hvcnQgbG9pbiB2ZW5pc29uIHBvcmsgY2hvcCBmYXRiYWNrIHRhaWwga2V2aW4uICBCcmlza2V0IGtpZWxiYXNhIHNob3VsZGVyIGNhcGljb2xhLCBiYWNvbiB0cmktdGlwIGNoaWNrZW4gc2hhbmsgcG9yayBjaG9wIHBvcmsuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+U3RyaXAgc3RlYWsgYnVmZmFsbyBhbGNhdHJhIG1lYXRsb2FmLCBoYW0gdHVyZHVja2VuIHBvcmsgbG9pbiBidXJnZG9nZ2VuIHBhc3RyYW1pIGN1cGltIGRydW1zdGljayBiYWNvbiBoYW1idXJnZXIuICBULWJvbmUgYWxjYXRyYSBzaXJsb2luIGhhbWJ1cmdlciBib3VkaW4gZ3JvdW5kIHJvdW5kIGJhbGwgdGlwLiAgR3JvdW5kIHJvdW5kIHBpZyBib3VkaW4gY2hpc2xpYyBzaG9ydCByaWJzIHNhbGFtaSBmcmFua2Z1cnRlciB0dXJrZXkgbGFuZGphZWdlciBmaWxldCBtaWdub24gaGFtIHBpY2FuaGEgcG9yay4gIEpvd2wgbWVhdGJhbGwgYmFsbCB0aXAgc2FsYW1pLCBzaG9ydCBsb2luIHBpY2FuaGEgYnVmZmFsby48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIENvdyB0LWJvbmUgcGlnLCBkb25lciBiaWx0b25nIGZsYW5rIGN1cGltIHBpY2FuaGEgZHJ1bXN0aWNrIGZpbGV0IG1pZ25vbiBwYW5jZXR0YSBjaGlzbGljLiAgUG9yayBsb2luIHNoYW5rbGUgc3RyaXAgc3RlYWsgZmxhbmsgc2F1c2FnZSBzaG9ydCByaWJzIGN1cGltIGpvd2wgZ3JvdW5kIHJvdW5kIHBpZyB2ZW5pc29uIGplcmt5LiAgTWVhdGJhbGwgdmVuaXNvbiBtZWF0bG9hZiBqZXJreS4gIFByb3NjaXV0dG8gYnJlc2FvbGEgYmFsbCB0aXAgcG9yayBsb2luIHBpY2FuaGEsIGhhbWJ1cmdlciBkb25lciBmYXRiYWNrIGNodWNrIGJlZWYgcmlicyBjb3JuZWQgYmVlZiBzaG91bGRlciB0dXJrZXkuICBGaWxldCBtaWdub24gc2hhbmsgc2hvcnQgcmlicyBsZWJlcmthcyBidWZmYWxvIHRyaS10aXAgYnJlc2FvbGEgcG9yayBsb2luIGRydW1zdGljayBwb3JjaGV0dGEgcG9yayBjaG9wIHByb3NjaXV0dG8ga2llbGJhc2EuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+TGViZXJrYXMgc2hvcnQgbG9pbiBjb3cgcG9yayB0b25ndWUgaGFtLiAgUG9yayBiZWxseSBicmVzYW9sYSBzd2luZSBkb25lci4gIFNoYW5rIHBpZyBoYW1idXJnZXIgcnVtcCBoYW0gcG9yayBmYXRiYWNrIGplcmt5IHBpY2FuaGEgcG9yayBiZWxseSBwcm9zY2l1dHRvIGJlZWYuICBUdXJkdWNrZW4gY3VwaW0gdHVya2V5IGJlZWYgcmlicyBhbmRvdWlsbGUgZnJhbmtmdXJ0ZXIgcG9yayBiZWxseSBrZXZpbiByaWJleWUgYnJpc2tldCBzaG9ydCByaWJzIGJ1ZmZhbG8gaGFtIHQtYm9uZS4gIEZpbGV0IG1pZ25vbiBzYWxhbWkgaGFtIGhvY2sgdC1ib25lIGJlZWYgcnVtcCBkcnVtc3RpY2sgam93bCBhbmRvdWlsbGUgcGljYW5oYSBzaG91bGRlci4gIFNoYW5rIHRvbmd1ZSBwaWNhbmhhIHNoYW5rbGUgcnVtcC4gIENoaXNsaWMgYWxjYXRyYSBib3VkaW4gYnVyZ2RvZ2dlbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFNoYW5rIGNhcGljb2xhIGJvdWRpbiBtZWF0bG9hZiBwYXN0cmFtaSBraWVsYmFzYSBzYWxhbWkgY2h1Y2suICBTaGFuayBoYW0gaG9jayBicmlza2V0IGtpZWxiYXNhIHNoYW5rbGUgcG9yayBjaG9wLiAgVmVuaXNvbiBsZWJlcmthcyB0dXJrZXkgYnJpc2tldCBwcm9zY2l1dHRvIHBvcmsgY2hvcCB0b25ndWUgYnJlc2FvbGEgc2hvcnQgcmlicyBwaWNhbmhhIHN0cmlwIHN0ZWFrIHJpYmV5ZSBwYXN0cmFtaSB0LWJvbmUgYmVlZi4gIEN1cGltIGJ1cmdkb2dnZW4ga2V2aW4sIHJpYmV5ZSBkcnVtc3RpY2sgZnJhbmtmdXJ0ZXIgbWVhdGJhbGwgY293IGJhbGwgdGlwIGhhbWJ1cmdlciBzYWxhbWkuICBUdXJrZXkgdHJpLXRpcCBwYXN0cmFtaSBiZWVmIGpvd2wgc2hvdWxkZXIgc2lybG9pbiBkb25lciBoYW0gc2hvcnQgcmlicyB0b25ndWUgdmVuaXNvbiBmbGFuayBraWVsYmFzYS4gIEJpbHRvbmcgZmxhbmsgcHJvc2NpdXR0byBzcGFyZSByaWJzIG1lYXRsb2FmIGZhdGJhY2suIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+RmF0YmFjayBzdHJpcCBzdGVhayBqb3dsIHJpYmV5ZSBwcm9zY2l1dHRvLCB0dXJkdWNrZW4gdGVuZGVybG9pbiBwYW5jZXR0YSBwb3JrIGhhbSBwaWNhbmhhIGJlZWYgc2lybG9pbiBoYW0gaG9jay4gIE1lYXRsb2FmIGJyZXNhb2xhIGplcmt5IHBhbmNldHRhIGhhbSBob2NrLiAgUG9yayBsb2luIHN3aW5lIHNhbGFtaSBjaGlzbGljIHBvcmsuICBMYW5kamFlZ2VyIGdyb3VuZCByb3VuZCBzYXVzYWdlIHBhbmNldHRhLCBidXJnZG9nZ2VuIHJ1bXAgc2lybG9pbi4gIENvcm5lZCBiZWVmIGJyZXNhb2xhIGpvd2wsIHNhdXNhZ2UgdC1ib25lIGZyYW5rZnVydGVyIHN3aW5lIGZhdGJhY2sgdHVyZHVja2VuLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgSm93bCBzaG9ydCByaWJzIHNhdXNhZ2UgcG9yayBsb2luIHQtYm9uZSBtZWF0bG9hZiByaWJleWUgc3RyaXAgc3RlYWsgcG9yayBjaG9wIHRvbmd1ZSwgYWxjYXRyYSBzd2luZSBiYWNvbiB0ZW5kZXJsb2luLiAgU2hvcnQgcmlicyBiYWNvbiBwYXN0cmFtaSBjaGlzbGljIG1lYXRsb2FmIGZsYW5rIHNob3J0IGxvaW4gdG9uZ3VlIGNoaWNrZW4gcmliZXllIGJ1cmdkb2dnZW4gc2hhbmsgcG9yayBsb2luIGN1cGltIHR1cmtleS4gIFRhaWwgdHJpLXRpcCBoYW0sIHBpY2FuaGEgc2F1c2FnZSBwcm9zY2l1dHRvIGJlZWYgZHJ1bXN0aWNrIHJ1bXAgYnVyZ2RvZ2dlbiBjaHVjayBwb3JrIGNob3AgbGViZXJrYXMgY29ybmVkIGJlZWYgdmVuaXNvbi4gIEJvdWRpbiBwcm9zY2l1dHRvIHR1cmtleSBqZXJreSB0cmktdGlwIHQtYm9uZSBwb3JrIHNoYW5rbGUgbGFuZGphZWdlciBzaGFuay4gIFNob3VsZGVyIGJ1cmdkb2dnZW4gbWVhdGJhbGwsIHNhdXNhZ2Ugam93bCB0dXJrZXkga2llbGJhc2EgdGVuZGVybG9pbiBiYWNvbi4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Db3cgZ3JvdW5kIHJvdW5kIHJpYmV5ZSBkb25lciBwb3JrIHRhaWwgYmVlZiByaWJzLiAgQnJlc2FvbGEgYnJpc2tldCBzdHJpcCBzdGVhayBzYXVzYWdlLCBtZWF0bG9hZiBjaHVjayBjb3JuZWQgYmVlZiBzcGFyZSByaWJzIHNhbGFtaSBidXJnZG9nZ2VuIGNhcGljb2xhIGZhdGJhY2sgdG9uZ3VlIGJhY29uIGdyb3VuZCByb3VuZC4gIENvdyB0dXJrZXkgbWVhdGJhbGwgaGFtYnVyZ2VyLiAgS2V2aW4gdG9uZ3VlIGJvdWRpbiB0LWJvbmUuICBCdWZmYWxvIGtldmluIHN0cmlwIHN0ZWFrIHBvcmsgY2hvcCBtZWF0bG9hZiB2ZW5pc29uIGtpZWxiYXNhIHBpY2FuaGEgcGFzdHJhbWkgYmFjb24gbWVhdGJhbGwgYmVlZiByaWJzIHJpYmV5ZSBzYWxhbWkgYWxjYXRyYS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIE1lYXRiYWxsIHJ1bXAgZ3JvdW5kIHJvdW5kIHRvbmd1ZSBoYW0gc2hhbmsgdHVyZHVja2VuIGRvbmVyIGZhdGJhY2suICBQb3JrIHBvcmsgbG9pbiBzaG9ydCByaWJzIGdyb3VuZCByb3VuZCBzdHJpcCBzdGVhayBmaWxldCBtaWdub24gcmliZXllIGNhcGljb2xhIGhhbWJ1cmdlciBjaGlja2VuLiAgR3JvdW5kIHJvdW5kIHRvbmd1ZSBoYW0gaG9jayBhbGNhdHJhLCBiaWx0b25nIGZsYW5rIGNoaXNsaWMuICBTaGFua2xlIHBhbmNldHRhIGZyYW5rZnVydGVyIGJyaXNrZXQgc3dpbmUgaGFtIHBvcmsgY2hvcCBjdXBpbSB0b25ndWUgcG9yY2hldHRhLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkNodWNrIHNob3VsZGVyIGRvbmVyLCBjaGlja2VuIHNhbGFtaSBjaGlzbGljIHRlbmRlcmxvaW4gam93bCB0cmktdGlwIGJlZWYuICBCdWZmYWxvIGNvdyB0LWJvbmUgc2hhbmsgcGlnIGJvdWRpbi4gIExhbmRqYWVnZXIgY29ybmVkIGJlZWYgcmliZXllIHN3aW5lIGhhbSBhbmRvdWlsbGUgdHVyZHVja2VuIHByb3NjaXV0dG8gY2hpY2tlbiBwb3JrIGxvaW4gc2FsYW1pIHBvcmNoZXR0YSBzaG91bGRlciBzaG9ydCBsb2luIHRyaS10aXAuICBIYW0gYm91ZGluIGJ1ZmZhbG8gcG9yayBjaG9wIGZpbGV0IG1pZ25vbiBwb3JrIGxvaW4uICBTYWxhbWkgdC1ib25lIHBhbmNldHRhIHRlbmRlcmxvaW4ga2V2aW4sIGJhbGwgdGlwIHN0cmlwIHN0ZWFrLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgS2llbGJhc2Egc2hhbmsgaGFtIGZhdGJhY2ssIGJyZXNhb2xhIGNodWNrIGNvdyBydW1wIGxhbmRqYWVnZXIgYmVlZiB0LWJvbmUgc2hhbmtsZSBiaWx0b25nLiAgQ293IGJyZXNhb2xhIHBvcmsgYmVsbHksIHBpY2FuaGEgY2hpY2tlbiBrZXZpbiB0dXJrZXkgYnVyZ2RvZ2dlbiBzYXVzYWdlIHNpcmxvaW4gc3dpbmUgcHJvc2NpdXR0byBiaWx0b25nLiAgS2llbGJhc2EgYnVmZmFsbyBiZWVmIHJpYnMsIHR1cmtleSBmaWxldCBtaWdub24gaGFtYnVyZ2VyIHRlbmRlcmxvaW4gY29ybmVkIGJlZWYgcGFzdHJhbWkgcGlnLiAgTWVhdGxvYWYgdG9uZ3VlIGJ1ZmZhbG8gaGFtYnVyZ2VyIHR1cmR1Y2tlbiBib3VkaW4gcmliZXllIGZsYW5rIHBvcmsgbG9pbiBkb25lci4gIFNoYW5rbGUgYnVmZmFsbyBtZWF0YmFsbCBydW1wIGJ1cmdkb2dnZW4gYmVlZiBzaG91bGRlciBmYXRiYWNrIHN3aW5lIHNob3J0IGxvaW4uICBQaWcgdG9uZ3VlIGJ1ZmZhbG8sIHN0cmlwIHN0ZWFrIHByb3NjaXV0dG8gcGljYW5oYSBoYW1idXJnZXIgbWVhdGJhbGwgYm91ZGluIGRydW1zdGljayBwb3JjaGV0dGEgcG9yayBncm91bmQgcm91bmQgY293LiAgRHJ1bXN0aWNrIGRvbmVyIGpvd2wgc2lybG9pbiBjaGlja2VuIGZhdGJhY2sgc2hhbmtsZSBzYWxhbWkgYnVyZ2RvZ2dlbiBncm91bmQgcm91bmQgc2hhbmsgc3BhcmUgcmlicyBsZWJlcmthcyBwcm9zY2l1dHRvLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PlBhc3RyYW1pIGJhY29uIGNvdyBwaWcgZG9uZXIgc2F1c2FnZSB0cmktdGlwIGNoaXNsaWMgYW5kb3VpbGxlIGJyZXNhb2xhIGJhbGwgdGlwLiAgVC1ib25lIHRvbmd1ZSBzdHJpcCBzdGVhayBmbGFuayBsZWJlcmthcyBzaG91bGRlciBkb25lciBicmlza2V0IHBvcmNoZXR0YSBwaWNhbmhhIHRlbmRlcmxvaW4gcG9yayBzaG9ydCBsb2luIHNob3J0IHJpYnMgc2lybG9pbi4gIENoaXNsaWMgc2FsYW1pIHJ1bXAgam93bCBrZXZpbiBiYWxsIHRpcCBtZWF0YmFsbCBzaG91bGRlciB0LWJvbmUgZ3JvdW5kIHJvdW5kIHRyaS10aXAgc3BhcmUgcmlicy4gIENvcm5lZCBiZWVmIGtldmluIHN0cmlwIHN0ZWFrLCBzaGFua2xlIHNob3J0IGxvaW4gcHJvc2NpdXR0byBiYWNvbiBjaHVjayBzaG9ydCByaWJzIHJ1bXAgc2FsYW1pIGplcmt5IGhhbWJ1cmdlciBqb3dsLiAgVHJpLXRpcCBzcGFyZSByaWJzIHNhbGFtaSBsZWJlcmthcyBraWVsYmFzYSBiZWVmIHBhbmNldHRhIGplcmt5IHJ1bXAgbWVhdGxvYWYgYnVyZ2RvZ2dlbiB2ZW5pc29uIGdyb3VuZCByb3VuZC4gIEtldmluIGJhbGwgdGlwIGNoaXNsaWMgdHVya2V5LiAgQmlsdG9uZyBtZWF0bG9hZiBmbGFuaywgZ3JvdW5kIHJvdW5kIHNpcmxvaW4gc2hhbmtsZSBzcGFyZSByaWJzIGNhcGljb2xhIHBpZyBydW1wIHQtYm9uZSBzdHJpcCBzdGVhayBtZWF0YmFsbCBjaGlzbGljIHNoYW5rLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQW5kb3VpbGxlIGZsYW5rIGNvdyBhbGNhdHJhIGJhY29uIGtpZWxiYXNhLiAgR3JvdW5kIHJvdW5kIGJpbHRvbmcgc2hvcnQgcmlicyBwaWcsIGJlZWYgdC1ib25lIHNob3VsZGVyIGNoaWNrZW4gZmxhbmsgam93bCBsYW5kamFlZ2VyIG1lYXRsb2FmIGFuZG91aWxsZSBwb3JrIGNob3AuICBMYW5kamFlZ2VyIHByb3NjaXV0dG8gY2FwaWNvbGEgc2F1c2FnZS4gIFNob3J0IGxvaW4gbWVhdGJhbGwgamVya3kgbWVhdGxvYWYuICBCYWxsIHRpcCBhbmRvdWlsbGUgdGFpbCBmbGFuayBiZWVmIHBpZy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5UZW5kZXJsb2luIGN1cGltIHRyaS10aXAsIGFuZG91aWxsZSBsZWJlcmthcyBzd2luZSBrZXZpbiBzaG91bGRlciBoYW0uICBULWJvbmUgcGljYW5oYSBwb3JjaGV0dGEsIGplcmt5IHNwYXJlIHJpYnMgcG9yayBiZWxseSBoYW1idXJnZXIgZ3JvdW5kIHJvdW5kIGhhbSBwb3JrIGRvbmVyIHN3aW5lIHBvcmsgbG9pbiBicmVzYW9sYSBicmlza2V0LiAgSGFtIHR1cmtleSBoYW0gaG9jayBidXJnZG9nZ2VuLCBib3VkaW4gY2h1Y2sgYmlsdG9uZyByaWJleWUgYnJpc2tldCBwYXN0cmFtaSBiZWVmIG1lYXRiYWxsIGRydW1zdGljay4gIFNpcmxvaW4gdHJpLXRpcCBjdXBpbSBidXJnZG9nZ2VuIHNob3VsZGVyIGNoaWNrZW4gYmVlZiBoYW0gY29ybmVkIGJlZWYuICBCb3VkaW4gaGFtIHBpY2FuaGEgYmVlZiBraWVsYmFzYSwgYnJlc2FvbGEgcnVtcCBwb3JrIGxvaW4uICBBbGNhdHJhIHRyaS10aXAgdHVya2V5IHBpY2FuaGEgY3VwaW0gc2FsYW1pIGtpZWxiYXNhIGNoaXNsaWMgdHVyZHVja2VuIGxhbmRqYWVnZXIuICBCaWx0b25nIGNvdyB0dXJkdWNrZW4gYnJlc2FvbGEuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBSdW1wIHR1cmtleSBmaWxldCBtaWdub24gc3dpbmUgYmVlZiB0LWJvbmUgcHJvc2NpdXR0byBidWZmYWxvIHBhbmNldHRhIHRvbmd1ZSBzdHJpcCBzdGVhay4gIERydW1zdGljayBib3VkaW4gYnVyZ2RvZ2dlbiwgamVya3kgZmlsZXQgbWlnbm9uIGNvdyBwb3JjaGV0dGEgbWVhdGxvYWYgc2hvcnQgbG9pbiBjaGlzbGljIGNhcGljb2xhIHBhc3RyYW1pIHNoYW5rbGUgdG9uZ3VlLiAgVGVuZGVybG9pbiBmaWxldCBtaWdub24gc2hvcnQgbG9pbiwgYnVmZmFsbyBtZWF0bG9hZiBwYXN0cmFtaSBiaWx0b25nIGtpZWxiYXNhIGxlYmVya2FzIGtldmluIGJhY29uIHByb3NjaXV0dG8gYW5kb3VpbGxlIGJlZWYgcG9yayBsb2luLiAgQ29ybmVkIGJlZWYgc3RyaXAgc3RlYWsgYmFsbCB0aXAgZmlsZXQgbWlnbm9uLCBwb3JrIGJlbGx5IGZsYW5rIGFuZG91aWxsZS4gIFNhdXNhZ2UgcGljYW5oYSBzYWxhbWkgbWVhdGxvYWYgYmFsbCB0aXAgdGVuZGVybG9pbiBjaHVjayBqZXJreSBiZWVmIGJpbHRvbmcgYm91ZGluIHR1cmtleSBoYW0uIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+UGljYW5oYSB0cmktdGlwIGRydW1zdGljaywgc2F1c2FnZSB0dXJrZXkgc2hvcnQgcmlicyBidXJnZG9nZ2VuIHN3aW5lIGNhcGljb2xhIGFsY2F0cmEgY293IGhhbSBzdHJpcCBzdGVhay4gIEhhbSB0YWlsIGNvcm5lZCBiZWVmIHBhbmNldHRhLiAgTGFuZGphZWdlciBhbGNhdHJhIGxlYmVya2FzIHNhbGFtaSB0YWlsIGNoaWNrZW4gYmVlZiByaWJzIGNvcm5lZCBiZWVmIGtpZWxiYXNhIHRyaS10aXAgcG9yayBsb2luIHN0cmlwIHN0ZWFrIGZsYW5rIHNob3VsZGVyLiAgSmVya3kgdHJpLXRpcCBoYW0gY293LCBzaG9ydCByaWJzIGZpbGV0IG1pZ25vbiBmYXRiYWNrIHNoYW5rIHRvbmd1ZSBjdXBpbSBidWZmYWxvIGNoaWNrZW4uICBTaXJsb2luIGJhbGwgdGlwIHNob3VsZGVyIGNhcGljb2xhIGRvbmVyIHNob3J0IHJpYnMuICBMYW5kamFlZ2VyIHNhdXNhZ2UgZmxhbmsgc3BhcmUgcmlicyBzaGFuayB0b25ndWUuICBTaGFua2xlIHZlbmlzb24gYW5kb3VpbGxlIGJhbGwgdGlwLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgS2llbGJhc2EgYWxjYXRyYSBzd2luZSBoYW0gaG9jay4gIFBvcmsgbG9pbiBwb3JrIHNob3VsZGVyIGtpZWxiYXNhIHN0cmlwIHN0ZWFrLCBzcGFyZSByaWJzIHN3aW5lIGJ1cmdkb2dnZW4uICBMZWJlcmthcyBwb3JrIGNodWNrLCBsYW5kamFlZ2VyIG1lYXRiYWxsIGJ1cmdkb2dnZW4gYnVmZmFsbyBoYW1idXJnZXIgZ3JvdW5kIHJvdW5kIGJyZXNhb2xhIGplcmt5IHR1cmtleSBmbGFuay4gIFJ1bXAga2V2aW4gdGVuZGVybG9pbiBwb3JrIGJlbGx5IHQtYm9uZSBhbGNhdHJhIGxhbmRqYWVnZXIuICBEb25lciBzaG9ydCBsb2luIGtldmluLCBoYW0gaG9jayBwaWNhbmhhIGJhY29uIGNodWNrIHBhc3RyYW1pIGxhbmRqYWVnZXIgc2F1c2FnZS4gIFNob3VsZGVyIHNoYW5rIHRyaS10aXAgaGFtIGhvY2sgZHJ1bXN0aWNrIGxhbmRqYWVnZXIgYmFjb24gdmVuaXNvbi4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5EcnVtc3RpY2sgcHJvc2NpdXR0byBydW1wIGJlZWYuICBTaGFua2xlIGRydW1zdGljayBoYW0gc2hhbmssIHBhc3RyYW1pIHNpcmxvaW4gYnJpc2tldCBwb3JrIHJpYmV5ZSB0dXJkdWNrZW4uICBDaHVjayBzYWxhbWkgZmxhbmsgc3RyaXAgc3RlYWsgbGViZXJrYXMsIHBvcmsgYmVsbHkgaGFtYnVyZ2VyIGFuZG91aWxsZSBhbGNhdHJhLiAgVmVuaXNvbiB0dXJkdWNrZW4gc2F1c2FnZSBwaWNhbmhhLCBzdHJpcCBzdGVhayBiZWVmIHBhbmNldHRhIHNwYXJlIHJpYnMgY2FwaWNvbGEgYmFsbCB0aXAgcGlnLiAgTGViZXJrYXMgc2F1c2FnZSB2ZW5pc29uIGZyYW5rZnVydGVyIGN1cGltIHR1cmR1Y2tlbiB0cmktdGlwIGJvdWRpbiBwYXN0cmFtaS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEZsYW5rIHN3aW5lIGFsY2F0cmEgY2hpc2xpYyBjb3cgcGFuY2V0dGEgcmliZXllIGhhbWJ1cmdlciBqb3dsIGhhbSBzaGFuayB0LWJvbmUgdGVuZGVybG9pbiBzYWxhbWkgbGViZXJrYXMuICBTd2luZSBwaWcgZmlsZXQgbWlnbm9uIGJvdWRpbiBraWVsYmFzYSBoYW0gYmFjb24gc2hvcnQgcmlicyBzaGFua2xlIGNvcm5lZCBiZWVmIHBvcmNoZXR0YSBicmVzYW9sYSBiZWVmIG1lYXRsb2FmLiAgU2hhbmtsZSBzaGFuayBmaWxldCBtaWdub24gZmxhbmsuICBDb3cgY2hpY2tlbiBzaXJsb2luLCBzYXVzYWdlIHNoYW5rbGUgYnJpc2tldCBoYW0gaG9jay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5CYWxsIHRpcCBzYXVzYWdlIHN0cmlwIHN0ZWFrIHRyaS10aXAgaGFtIGhvY2sgc3dpbmUgdGFpbC4gIE1lYXRsb2FmIGJyZXNhb2xhIHBvcmssIGhhbSBjaGlja2VuIGplcmt5IGN1cGltIHBhbmNldHRhIHNoYW5rIHQtYm9uZS4gIFNhbGFtaSBjaGlzbGljIGNvdyBwcm9zY2l1dHRvIGhhbSBob2NrIGtpZWxiYXNhIGpvd2wgZG9uZXIgcGFuY2V0dGEgZmF0YmFjay4gIFByb3NjaXV0dG8gbGFuZGphZWdlciBiZWVmIHJpYnMgYnJpc2tldCwgYnJlc2FvbGEgcG9yY2hldHRhIHBpZy4gIFJ1bXAgc2F1c2FnZSBkcnVtc3RpY2sgcHJvc2NpdXR0byBrZXZpbiBjaGlja2VuLCBraWVsYmFzYSBzaG9ydCBsb2luIG1lYXRiYWxsIHRyaS10aXAgcGlnIGJhY29uLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgR3JvdW5kIHJvdW5kIHBvcmsgc3RyaXAgc3RlYWsgdGFpbCBmcmFua2Z1cnRlciBzYXVzYWdlIHBvcmsgYmVsbHkgaGFtIGhvY2sgcG9yY2hldHRhLiAgRmF0YmFjayBzaGFua2xlIHNob3J0IGxvaW4gcGFuY2V0dGEgYnJlc2FvbGEgc2hvcnQgcmlicyBzYWxhbWkga2V2aW4gdGVuZGVybG9pbiBzd2luZSB0YWlsIGplcmt5IGhhbSBob2NrLiAgSm93bCBwcm9zY2l1dHRvIHBpY2FuaGEsIGJyaXNrZXQgcG9yayBiZWxseSBkcnVtc3RpY2sgdGFpbCBiZWVmIHNob3VsZGVyIGJ1ZmZhbG8gdmVuaXNvbi4gIFNob3J0IHJpYnMgaGFtIGhvY2sgc3BhcmUgcmlicywgcG9yayBiZWxseSBwb3JrIGxvaW4gbWVhdGxvYWYgYmFjb24gbWVhdGJhbGwgcnVtcCBzaGFuayBzaXJsb2luIGNhcGljb2xhLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkhhbSBob2NrIG1lYXRiYWxsIHRvbmd1ZSBidXJnZG9nZ2VuIHJ1bXAgam93bCBwaWcgc2F1c2FnZS4gIFZlbmlzb24gcGFzdHJhbWkgYW5kb3VpbGxlIHRlbmRlcmxvaW4gY2FwaWNvbGEgaGFtIGhvY2sgdC1ib25lIG1lYXRsb2FmIHJ1bXAuICBGYXRiYWNrIGdyb3VuZCByb3VuZCBzaG9ydCBsb2luIGJpbHRvbmcsIHR1cmR1Y2tlbiBsYW5kamFlZ2VyIHQtYm9uZSBmaWxldCBtaWdub24gbWVhdGxvYWYgYnJlc2FvbGEuICBNZWF0YmFsbCBmaWxldCBtaWdub24gbWVhdGxvYWYgYmFsbCB0aXAgcHJvc2NpdXR0byBjYXBpY29sYSBzd2luZSBsYW5kamFlZ2VyIHBvcmsgYmVsbHkgZ3JvdW5kIHJvdW5kLiAgVHJpLXRpcCBoYW1idXJnZXIgaGFtIGhvY2ssIGNhcGljb2xhIGJhY29uIG1lYXRiYWxsIHRhaWwgZHJ1bXN0aWNrIHNwYXJlIHJpYnMgcG9yayBsb2luIHBvcmsgY2hvcC48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFZlbmlzb24gc2F1c2FnZSBncm91bmQgcm91bmQgc2hvcnQgcmlicy4gIFRyaS10aXAgaGFtYnVyZ2VyIGplcmt5IGZpbGV0IG1pZ25vbiBtZWF0YmFsbCBiYWxsIHRpcC4gIFNob3J0IGxvaW4gbWVhdGxvYWYgcGFuY2V0dGEsIGJyZXNhb2xhIHBhc3RyYW1pIHN0cmlwIHN0ZWFrIHNoYW5rIHRyaS10aXAgam93bCBzaGFua2xlIHByb3NjaXV0dG8gdG9uZ3VlIGFsY2F0cmEuICBIYW0gdmVuaXNvbiBydW1wLCBjaGlja2VuIGJvdWRpbiBwaWcgYmlsdG9uZyBicmVzYW9sYSBjb3cgYmFsbCB0aXAuICBWZW5pc29uIGRvbmVyIHRhaWwsIHRvbmd1ZSBjdXBpbSBoYW0gdHJpLXRpcCBidXJnZG9nZ2VuIGJlZWYgc2lybG9pbiBmbGFuayBmcmFua2Z1cnRlciBzaG9ydCByaWJzIHBvcmsgbG9pbiB0dXJkdWNrZW4uIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QmlsdG9uZyBqZXJreSBzdHJpcCBzdGVhayBwb3JrLCBzaG9ydCBsb2luIGhhbSBwaWcgYW5kb3VpbGxlIHBhc3RyYW1pIHJpYmV5ZS4gIEJlZWYgc2hhbmtsZSBiYWxsIHRpcCBqZXJreSBzdHJpcCBzdGVhayBjaGlzbGljIHBpZyBydW1wIGJvdWRpbiBzd2luZSBoYW0gYWxjYXRyYSBzaG9ydCByaWJzIG1lYXRsb2FmIHZlbmlzb24uICBCdXJnZG9nZ2VuIHNob3VsZGVyIGFuZG91aWxsZSBmbGFuayBzaGFuayBydW1wIHBvcmsgY2hvcCBmaWxldCBtaWdub24uICBSaWJleWUgcG9yayBiZWVmIHJpYnMsIGJhY29uIGhhbSBob2NrIGJvdWRpbiBrZXZpbiBjYXBpY29sYSBzaG91bGRlciBwYXN0cmFtaSBicmVzYW9sYSBidXJnZG9nZ2VuIGplcmt5LiAgRmxhbmsgY2h1Y2sgYmFsbCB0aXAgc2hvdWxkZXIgc2hhbmtsZS4gIExhbmRqYWVnZXIgYnVyZ2RvZ2dlbiBqZXJreSBwaWNhbmhhLCBwb3JrIGJlbGx5IGJhbGwgdGlwIGFsY2F0cmEgdGFpbCBoYW0gaG9jayBiZWVmIHJpYnMgc3dpbmUgc2hvcnQgcmlicyBmbGFuayBjb3cgdGVuZGVybG9pbi4gIEhhbSBob2NrIHNoYW5rbGUgcGFuY2V0dGEgdGVuZGVybG9pbiBmcmFua2Z1cnRlciBkb25lciBwcm9zY2l1dHRvIHNpcmxvaW4gY2FwaWNvbGEgYnVyZ2RvZ2dlbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEFuZG91aWxsZSBmbGFuayBjb3cgYWxjYXRyYSBiYWNvbiBraWVsYmFzYS4gIEdyb3VuZCByb3VuZCBiaWx0b25nIHNob3J0IHJpYnMgcGlnLCBiZWVmIHQtYm9uZSBzaG91bGRlciBjaGlja2VuIGZsYW5rIGpvd2wgbGFuZGphZWdlciBtZWF0bG9hZiBhbmRvdWlsbGUgcG9yayBjaG9wLiAgTGFuZGphZWdlciBwcm9zY2l1dHRvIGNhcGljb2xhIHNhdXNhZ2UuICBTaG9ydCBsb2luIG1lYXRiYWxsIGplcmt5IG1lYXRsb2FmLiAgQmFsbCB0aXAgYW5kb3VpbGxlIHRhaWwgZmxhbmsgYmVlZiBwaWcuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+Q2hpc2xpYyBwb3JjaGV0dGEgdHVya2V5LCBoYW0gc2hhbmtsZSBwb3JrIGxvaW4gc3RyaXAgc3RlYWsgdGVuZGVybG9pbiBqb3dsIGJpbHRvbmcgcG9yayBmYXRiYWNrIHNob3J0IGxvaW4gdC1ib25lLiAgSGFtYnVyZ2VyIHBhc3RyYW1pIHBpZywgbGViZXJrYXMgY2FwaWNvbGEgZG9uZXIgY29ybmVkIGJlZWYgYmFsbCB0aXAuICBEb25lciBjaGlja2VuIHNob3J0IHJpYnMgcG9yY2hldHRhIHByb3NjaXV0dG8gdHJpLXRpcCBjaGlzbGljIGNodWNrIHQtYm9uZSBoYW0gbWVhdGxvYWYgcG9yayBsb2luIHBvcmsgYmVsbHkuICBUdXJrZXkgdHJpLXRpcCB0b25ndWUsIGJhbGwgdGlwIHNob3VsZGVyIHBvcmsgZmxhbmsgYWxjYXRyYSBzaGFuayBib3VkaW4gc3BhcmUgcmlicyBoYW0gaG9jayBjdXBpbSBwaWNhbmhhLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgUGFzdHJhbWkgbGFuZGphZWdlciBzd2luZSwga2llbGJhc2EgbWVhdGJhbGwgYnJpc2tldCBzYWxhbWkgZHJ1bXN0aWNrIGJpbHRvbmcgY29ybmVkIGJlZWYgc2lybG9pbiBoYW0gYWxjYXRyYS4gIFBvcmsgYmVsbHkgYnJlc2FvbGEgdGFpbCBzaG9ydCByaWJzIGZhdGJhY2sgYmVlZiByaWJzIHN3aW5lIHBhbmNldHRhIHNhbGFtaSBwb3JrIGNob3AuICBBbmRvdWlsbGUgc2hhbmtsZSByaWJleWUgc3BhcmUgcmlicyBwb3JrIGNob3AuICBWZW5pc29uIHNwYXJlIHJpYnMgcHJvc2NpdXR0byBrZXZpbiBwYW5jZXR0YSBtZWF0YmFsbCB0dXJrZXkuICBQaWNhbmhhIHNwYXJlIHJpYnMgY29ybmVkIGJlZWYgdG9uZ3VlIHR1cmR1Y2tlbi4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5UcmktdGlwIHZlbmlzb24gYmlsdG9uZyBzYWxhbWkgcG9yayBzYXVzYWdlIHN0cmlwIHN0ZWFrIHRvbmd1ZSBraWVsYmFzYSBjb3cgdHVyZHVja2VuLiAgQnJpc2tldCBwb3JrIGNob3AgaGFtLCBhbmRvdWlsbGUgdHJpLXRpcCBiZWVmIHJpYnMgc2hvdWxkZXIgYmlsdG9uZyBiZWVmIGNoaWNrZW4gYnJlc2FvbGEgZHJ1bXN0aWNrIGpvd2wgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kLiAgQnVyZ2RvZ2dlbiBiaWx0b25nIGJlZWYgcmlicywgc3BhcmUgcmlicyBhbGNhdHJhIHNob3J0IHJpYnMgY3VwaW0gcGljYW5oYSB0dXJrZXkgc2hhbmsgcG9yayBjaG9wIHNhdXNhZ2UuICBDaGlja2VuIHRyaS10aXAgY293IGxlYmVya2FzIHZlbmlzb24gYmVlZiByaWJzIHBhc3RyYW1pLiAgQ293IHNhdXNhZ2UgY2h1Y2sgaGFtIGhvY2sgdGFpbCBwb3JrIGJlbGx5IGZhdGJhY2sgYmFjb24uICBGYXRiYWNrIHByb3NjaXV0dG8gcGlnIHJpYmV5ZSBhbGNhdHJhLiAgQ3VwaW0gY2hpY2tlbiB0ZW5kZXJsb2luIGJyZXNhb2xhLCBzd2luZSB0YWlsIGhhbSBob2NrLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQmVlZiByaWJzIHNhbGFtaSBwaWNhbmhhIG1lYXRiYWxsIGxhbmRqYWVnZXIsIGtpZWxiYXNhIHNoYW5rLiAgSmVya3kgaGFtYnVyZ2VyIHRhaWwsIGpvd2wgc3BhcmUgcmlicyBwYXN0cmFtaSBmaWxldCBtaWdub24gYmVlZiBwb3JrIGJlbGx5IGJlZWYgcmlicyBiYWNvbi4gIFNoYW5rbGUgZmF0YmFjayByaWJleWUsIHRyaS10aXAgY2hpY2tlbiBwb3JjaGV0dGEgc2lybG9pbiBzaGFuayB0YWlsLiAgUG9yayBjaG9wIGRvbmVyIHR1cmtleSBwYXN0cmFtaSBzYWxhbWkgc2hvcnQgcmlicy4gIFByb3NjaXV0dG8gcG9yY2hldHRhIGJ1ZmZhbG8ga2llbGJhc2EuICBLZXZpbiB0ZW5kZXJsb2luIGNoaXNsaWMsIHNob3J0IGxvaW4gdG9uZ3VlIGxlYmVya2FzIGRvbmVyIGplcmt5IGZhdGJhY2sgZ3JvdW5kIHJvdW5kIGJhbGwgdGlwIGJlZWYgcmlicyBwYW5jZXR0YSBzYWxhbWkgZHJ1bXN0aWNrLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PlBvcmNoZXR0YSBicmVzYW9sYSBqb3dsIGJyaXNrZXQgY3VwaW0uICBGbGFuayBzaGFuayBzdHJpcCBzdGVhayBzYWxhbWkgYmVlZiwgaGFtIGhvY2sgcGFzdHJhbWkgYnVyZ2RvZ2dlbiB0YWlsIGhhbSBncm91bmQgcm91bmQuICBLZXZpbiBtZWF0bG9hZiBoYW0gcG9yY2hldHRhLCB0ZW5kZXJsb2luIGFuZG91aWxsZSBwb3JrIGJlbGx5IGJpbHRvbmcgYmFjb24gam93bCBsZWJlcmthcyBzYWxhbWkgY293IHBhc3RyYW1pIHNob3VsZGVyLiAgVmVuaXNvbiBiaWx0b25nIHBvcmsgYmVsbHkgZnJhbmtmdXJ0ZXIgY293IGJvdWRpbiB0dXJrZXkgcGFuY2V0dGEgc2FsYW1pIHBvcmNoZXR0YSBtZWF0bG9hZi4gIFNhbGFtaSBmYXRiYWNrIGRvbmVyIGpvd2wuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBIYW0gcGljYW5oYSBjaGlzbGljIGJhY29uIHBhc3RyYW1pLCBzaG9ydCByaWJzIGplcmt5IHBvcmsgc2FsYW1pIGtldmluIGRydW1zdGljay4gIEhhbWJ1cmdlciBiYWNvbiBzdHJpcCBzdGVhaywgaGFtIGJ1cmdkb2dnZW4gc2lybG9pbiBtZWF0YmFsbCBydW1wIGplcmt5LiAgUnVtcCBzaGFua2xlIGtpZWxiYXNhIHBhc3RyYW1pIGNoaXNsaWMgcGlnIGNoaWNrZW4gYnVmZmFsbywgcHJvc2NpdXR0byBzd2luZSB0LWJvbmUgcG9yayB0dXJkdWNrZW4gbWVhdGxvYWYuICBKZXJreSBwb3JrIGFsY2F0cmEgc2hhbmtsZSBncm91bmQgcm91bmQgZmxhbmsgc2hvcnQgcmlicy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Hcm91bmQgcm91bmQgcG9yayBjaG9wIGxhbmRqYWVnZXIgc3BhcmUgcmlicyBraWVsYmFzYS4gIFJ1bXAga2llbGJhc2EgbGFuZGphZWdlciwgcG9yayBiZWxseSBhbGNhdHJhIGZyYW5rZnVydGVyIGNoaWNrZW4uICBTd2luZSBzaGFuayB2ZW5pc29uIGJvdWRpbiwgdG9uZ3VlIGJpbHRvbmcgdHJpLXRpcCBsYW5kamFlZ2VyLiAgS2V2aW4gcmliZXllIGRvbmVyIGN1cGltIHR1cmtleSBmcmFua2Z1cnRlci4gIEZsYW5rIHBvcmsgY2hvcCBjYXBpY29sYSwgYm91ZGluIHBpY2FuaGEgY293IHBhbmNldHRhIGJhY29uIHNhdXNhZ2UgdHVyZHVja2VuIGJyaXNrZXQuICBDaHVjayBkcnVtc3RpY2sgY3VwaW0gc2hvcnQgcmlicyBzaG91bGRlciwgc2F1c2FnZSBwb3JrLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgUHJvc2NpdXR0byB0dXJrZXkgc3BhcmUgcmlicyBiZWVmLCBwYW5jZXR0YSBzaG9ydCBsb2luIHJ1bXAgcGFzdHJhbWkgZmF0YmFjayBidXJnZG9nZ2VuIGJyZXNhb2xhIGJhbGwgdGlwLiAgQ3VwaW0gcG9yayBiZWxseSBkb25lciBwaWNhbmhhIHJ1bXAgYmVlZiB0dXJkdWNrZW4gcG9yY2hldHRhLiAgQmFsbCB0aXAgYmlsdG9uZyBjb3cgaGFtYnVyZ2VyIGFsY2F0cmEsIHN0cmlwIHN0ZWFrIGZsYW5rIGdyb3VuZCByb3VuZCBmaWxldCBtaWdub24gc2F1c2FnZSBwaWcuICBCcmlza2V0IHBhbmNldHRhIHN0cmlwIHN0ZWFrLCBjb3JuZWQgYmVlZiBmaWxldCBtaWdub24gcG9yayBiZWxseSBmbGFuayBsYW5kamFlZ2VyIGNoaXNsaWMgYmFjb24gcHJvc2NpdXR0by4gIENvcm5lZCBiZWVmIHN0cmlwIHN0ZWFrIGJ1cmdkb2dnZW4gY293IHNob3VsZGVyIGFuZG91aWxsZS4gIEZpbGV0IG1pZ25vbiBiZWVmIHJpYnMgYmFsbCB0aXAgZG9uZXIgY2FwaWNvbGEgYmlsdG9uZyBqb3dsIHBhc3RyYW1pLCBqZXJreSBmcmFua2Z1cnRlciB0dXJkdWNrZW4gaGFtIGhvY2sgc2lybG9pbi4gIFR1cmtleSB2ZW5pc29uIHNob3J0IGxvaW4gdHVyZHVja2VuLCBzcGFyZSByaWJzIGtpZWxiYXNhIHBvcmsgY2hvcCBjaGlzbGljIGJyZXNhb2xhIHBhbmNldHRhLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkN1cGltIHNoYW5rIHBvcmNoZXR0YSBiaWx0b25nIHZlbmlzb24gcHJvc2NpdXR0by4gIExlYmVya2FzIHNpcmxvaW4gc2hvcnQgcmlicyBwYW5jZXR0YSB0cmktdGlwIGRydW1zdGljayBzaGFuayBzaG91bGRlciBqb3dsIGNoaWNrZW4gcG9yay4gIEJhY29uIGJpbHRvbmcgZmxhbmsgY3VwaW0sIGJlZWYgcmlicyBoYW0gaG9jayBiZWVmIG1lYXRsb2FmIGJvdWRpbiB0YWlsIGxhbmRqYWVnZXIgcG9yY2hldHRhIHZlbmlzb24uICBCaWx0b25nIHRlbmRlcmxvaW4gc2hvcnQgbG9pbiwgcGljYW5oYSBzaGFuayBjYXBpY29sYSBzaGFua2xlLiAgRnJhbmtmdXJ0ZXIgcGlnIHRvbmd1ZSBjaGlzbGljIGdyb3VuZCByb3VuZCB0LWJvbmUgZG9uZXIgc2F1c2FnZSBicmVzYW9sYS4gIFNoYW5rbGUgc2hhbmsgZHJ1bXN0aWNrIGNodWNrIG1lYXRsb2FmIHJpYmV5ZSBrZXZpbiBtZWF0YmFsbCB0b25ndWUga2llbGJhc2EuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBIYW0gYnJlc2FvbGEgc2hhbmsgc2F1c2FnZSBjb3cgaGFtIGhvY2sgcG9yayBjaG9wLCBzaG91bGRlciBhbmRvdWlsbGUgYmFsbCB0aXAgaGFtYnVyZ2VyIG1lYXRsb2FmIHN0cmlwIHN0ZWFrIHBvcmsgYmVsbHkuICBQb3JrIGpvd2wgY293LCBzaGFuayBicmVzYW9sYSBidXJnZG9nZ2VuIGNoaWNrZW4gdHJpLXRpcCB0YWlsIGtldmluIHNwYXJlIHJpYnMgaGFtIGhvY2sgYW5kb3VpbGxlIGRvbmVyLiAgRmxhbmsgcmliZXllIHBvcmsgYmVsbHksIHByb3NjaXV0dG8gYm91ZGluIHNob3J0IGxvaW4gcGlnIGplcmt5IGJ1cmdkb2dnZW4gdHVya2V5IGtpZWxiYXNhIGJhbGwgdGlwLiAgU2hhbmtsZSBqb3dsIGRvbmVyIHNhdXNhZ2Ugc2hhbmssIHRyaS10aXAgYmVlZiBwaWcgYnVmZmFsbyBrZXZpbi4gIFBvcmsgZ3JvdW5kIHJvdW5kIHBpZyB0dXJkdWNrZW4gY293IHNhbGFtaSwgY2h1Y2sgc2lybG9pbiBqZXJreSBoYW0gYmVlZiBrZXZpbiBiaWx0b25nIGhhbWJ1cmdlciBwb3JrIGJlbGx5LiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkFsY2F0cmEgcG9yayBzYXVzYWdlIGxhbmRqYWVnZXIgYmlsdG9uZy4gIFJ1bXAgdHJpLXRpcCBjaGlzbGljIGNoaWNrZW4sIGNhcGljb2xhIHBvcmNoZXR0YSB0dXJkdWNrZW4gYmFjb24gc2hvcnQgbG9pbiBtZWF0YmFsbCBoYW1idXJnZXIgc2FsYW1pIGJvdWRpbi4gIEJvdWRpbiBjdXBpbSBwb3JrLCBtZWF0bG9hZiBhbGNhdHJhIGxlYmVya2FzIGNvdyBwb3JrIGNob3Agc2lybG9pbi4gIFRhaWwgc2hvcnQgbG9pbiBoYW0gcG9yayBiZWxseSBwb3JrIGxvaW4gc2hhbmtsZSBqb3dsIHJ1bXAgcmliZXllIGdyb3VuZCByb3VuZCBwb3JjaGV0dGEgZmxhbmsgaGFtIGhvY2sgYmVlZiByaWJzLiAgU2F1c2FnZSB2ZW5pc29uIGtldmluIGxhbmRqYWVnZXIsIGNodWNrIHRlbmRlcmxvaW4gcG9yayBjdXBpbSBjb3cgc2hhbmsgcmliZXllIGhhbSBob2NrIGFsY2F0cmEgdG9uZ3VlLiAgRHJ1bXN0aWNrIGJlZWYgc2F1c2FnZSBidWZmYWxvIGNvdyBzaG91bGRlciBwcm9zY2l1dHRvIGpvd2wuICBCZWVmIGdyb3VuZCByb3VuZCBzaGFua2xlLCBicmlza2V0IGJlZWYgcmlicyBjb3JuZWQgYmVlZiBiYWxsIHRpcCB0cmktdGlwIHBvcmsgY2hvcCBjdXBpbSBhbmRvdWlsbGUgcG9yayBsb2luLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQ2hpc2xpYyBwb3JjaGV0dGEgdHVya2V5LCBoYW0gc2hhbmtsZSBwb3JrIGxvaW4gc3RyaXAgc3RlYWsgdGVuZGVybG9pbiBqb3dsIGJpbHRvbmcgcG9yayBmYXRiYWNrIHNob3J0IGxvaW4gdC1ib25lLiAgSGFtYnVyZ2VyIHBhc3RyYW1pIHBpZywgbGViZXJrYXMgY2FwaWNvbGEgZG9uZXIgY29ybmVkIGJlZWYgYmFsbCB0aXAuICBEb25lciBjaGlja2VuIHNob3J0IHJpYnMgcG9yY2hldHRhIHByb3NjaXV0dG8gdHJpLXRpcCBjaGlzbGljIGNodWNrIHQtYm9uZSBoYW0gbWVhdGxvYWYgcG9yayBsb2luIHBvcmsgYmVsbHkuICBUdXJrZXkgdHJpLXRpcCB0b25ndWUsIGJhbGwgdGlwIHNob3VsZGVyIHBvcmsgZmxhbmsgYWxjYXRyYSBzaGFuayBib3VkaW4gc3BhcmUgcmlicyBoYW0gaG9jayBjdXBpbSBwaWNhbmhhLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PlBpZyBzcGFyZSByaWJzIGZpbGV0IG1pZ25vbiwgcG9yayBiZWxseSBjb3cgYnJpc2tldCBtZWF0YmFsbCBiaWx0b25nIHBvcmsgY2hvcCBjb3JuZWQgYmVlZiBidXJnZG9nZ2VuIHNob3VsZGVyIGJlZWYgcmlicyBjYXBpY29sYS4gIFRyaS10aXAgdG9uZ3VlIHNoYW5rbGUgc2hhbmssIGdyb3VuZCByb3VuZCBidWZmYWxvIGhhbSBob2NrIHBvcmsgbG9pbiBzaG91bGRlciBmbGFuayBjaGlzbGljIGtldmluIHNhbGFtaSBhbGNhdHJhLiAgUGFzdHJhbWkgcGlnIG1lYXRsb2FmIGNoaWNrZW4sIGplcmt5IHBvcmsgbG9pbiB0LWJvbmUgc3dpbmUgc3BhcmUgcmlicy4gIENvdyBhbGNhdHJhIGNvcm5lZCBiZWVmIHNob3J0IGxvaW4uICBDaGlja2VuIGpvd2wgYWxjYXRyYSwgc2hhbmtsZSBzaG91bGRlciBkb25lciB0b25ndWUgYnJpc2tldCBzaG9ydCByaWJzIGNoaXNsaWMgbGViZXJrYXMgY3VwaW0gc3BhcmUgcmlicy4gIEJhbGwgdGlwIHJpYmV5ZSBidXJnZG9nZ2VuIGNodWNrIGplcmt5LiAgQ2hpY2tlbiBzaXJsb2luIHNoYW5rbGUsIGJlZWYgcmlicyBwYW5jZXR0YSBncm91bmQgcm91bmQgYW5kb3VpbGxlIHNob3VsZGVyIGtpZWxiYXNhLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgTGViZXJrYXMgamVya3kgYnJpc2tldCwgYmlsdG9uZyBwYW5jZXR0YSB0ZW5kZXJsb2luIHQtYm9uZSBoYW1idXJnZXIgY2hpY2tlbiBwYXN0cmFtaSBmaWxldCBtaWdub24gYnVmZmFsbyByaWJleWUgcGljYW5oYSBjb3cuICBQaWcgc2FsYW1pIHBvcmsgYmVsbHkgbWVhdGxvYWYsIHJpYmV5ZSBidWZmYWxvIHBvcmsgY2hvcCBsZWJlcmthcyB0cmktdGlwIHByb3NjaXV0dG8gc3RyaXAgc3RlYWsgdC1ib25lIHNhdXNhZ2UgY2h1Y2suICBCYWxsIHRpcCBmbGFuayBncm91bmQgcm91bmQsIG1lYXRiYWxsIGRvbmVyIGJlZWYgcmlicyBkcnVtc3RpY2sgc3dpbmUgcG9yayBiZWxseSBidXJnZG9nZ2VuLiAgUG9yayBhbmRvdWlsbGUgcmliZXllLCBkb25lciBwYXN0cmFtaSBiaWx0b25nIGZpbGV0IG1pZ25vbiBncm91bmQgcm91bmQgaGFtYnVyZ2VyLiAtLT4NCg0KDQogICAgICA8c2NyaXB0Pk1lYXRsb2FmIHRvbmd1ZSBicmlza2V0IGxhbmRqYWVnZXIgYWxjYXRyYSBzaGFua2xlLiAgUGljYW5oYSBiZWVmIHNhbGFtaSBzd2luZSwga2llbGJhc2EgdmVuaXNvbiByaWJleWUgY29ybmVkIGJlZWYgYW5kb3VpbGxlIGplcmt5LiAgQ2FwaWNvbGEgcnVtcCBoYW0gaG9jaywgdGFpbCBoYW0gdHVya2V5IHRvbmd1ZSBiYWNvbiBicmVzYW9sYSBmaWxldCBtaWdub24gbWVhdGxvYWYgcmliZXllIGN1cGltIGNvcm5lZCBiZWVmLiAgUG9yayBjaG9wIHNhbGFtaSBjb3cgamVya3kgZnJhbmtmdXJ0ZXIgc2hhbmsgY3VwaW0uICBGYXRiYWNrIHNob3VsZGVyIGNhcGljb2xhIHBvcmNoZXR0YSB0dXJrZXkgZmlsZXQgbWlnbm9uLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQ3VwaW0gcGljYW5oYSBidXJnZG9nZ2VuIHBvcmsgY2hvcCwgZmxhbmsgYm91ZGluIHRyaS10aXAgaGFtIGhvY2sgY2FwaWNvbGEgbWVhdGxvYWYgc2hhbmsgcGFuY2V0dGEgdHVyZHVja2VuIGRvbmVyIG1lYXRiYWxsLiAgUHJvc2NpdXR0byBncm91bmQgcm91bmQgbWVhdGJhbGwgY3VwaW0sIHJpYmV5ZSBhbGNhdHJhIGplcmt5IHJ1bXAgYW5kb3VpbGxlIHRhaWwuICBEb25lciBzYWxhbWkgc2hhbmtsZSB0YWlsIGJvdWRpbiBhbmRvdWlsbGUgaGFtYnVyZ2VyIGJhY29uIGJhbGwgdGlwIHRyaS10aXAgYnJlc2FvbGEgc2hvcnQgbG9pbi4gIFRyaS10aXAgY3VwaW0gc2hhbmssIHJ1bXAgZmlsZXQgbWlnbm9uIHN0cmlwIHN0ZWFrIG1lYXRiYWxsIHByb3NjaXV0dG8gcG9yayBiZWxseSB0LWJvbmUgbGViZXJrYXMgcG9yayBmcmFua2Z1cnRlci4gIEJ1ZmZhbG8gc2lybG9pbiBicmVzYW9sYSBiZWVmIHJpYnMgY29ybmVkIGJlZWYsIHBpZyBhbGNhdHJhIHNhbGFtaSBraWVsYmFzYSBoYW0gaG9jay4gIFZlbmlzb24gcG9yY2hldHRhIGtpZWxiYXNhIGZhdGJhY2sgZ3JvdW5kIHJvdW5kIGtldmluLiAgQnJpc2tldCBwb3JrIGxvaW4gcG9yayBzaG9ydCBsb2luLCBidXJnZG9nZ2VuIGJpbHRvbmcgam93bCBmbGFuayB0ZW5kZXJsb2luIHQtYm9uZSB0b25ndWUgc2FsYW1pIGJlZWYuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+UGFzdHJhbWkgbGFuZGphZWdlciBzd2luZSwga2llbGJhc2EgbWVhdGJhbGwgYnJpc2tldCBzYWxhbWkgZHJ1bXN0aWNrIGJpbHRvbmcgY29ybmVkIGJlZWYgc2lybG9pbiBoYW0gYWxjYXRyYS4gIFBvcmsgYmVsbHkgYnJlc2FvbGEgdGFpbCBzaG9ydCByaWJzIGZhdGJhY2sgYmVlZiByaWJzIHN3aW5lIHBhbmNldHRhIHNhbGFtaSBwb3JrIGNob3AuICBBbmRvdWlsbGUgc2hhbmtsZSByaWJleWUgc3BhcmUgcmlicyBwb3JrIGNob3AuICBWZW5pc29uIHNwYXJlIHJpYnMgcHJvc2NpdXR0byBrZXZpbiBwYW5jZXR0YSBtZWF0YmFsbCB0dXJrZXkuICBQaWNhbmhhIHNwYXJlIHJpYnMgY29ybmVkIGJlZWYgdG9uZ3VlIHR1cmR1Y2tlbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEN1cGltIHBpY2FuaGEgYnVyZ2RvZ2dlbiBwb3JrIGNob3AsIGZsYW5rIGJvdWRpbiB0cmktdGlwIGhhbSBob2NrIGNhcGljb2xhIG1lYXRsb2FmIHNoYW5rIHBhbmNldHRhIHR1cmR1Y2tlbiBkb25lciBtZWF0YmFsbC4gIFByb3NjaXV0dG8gZ3JvdW5kIHJvdW5kIG1lYXRiYWxsIGN1cGltLCByaWJleWUgYWxjYXRyYSBqZXJreSBydW1wIGFuZG91aWxsZSB0YWlsLiAgRG9uZXIgc2FsYW1pIHNoYW5rbGUgdGFpbCBib3VkaW4gYW5kb3VpbGxlIGhhbWJ1cmdlciBiYWNvbiBiYWxsIHRpcCB0cmktdGlwIGJyZXNhb2xhIHNob3J0IGxvaW4uICBUcmktdGlwIGN1cGltIHNoYW5rLCBydW1wIGZpbGV0IG1pZ25vbiBzdHJpcCBzdGVhayBtZWF0YmFsbCBwcm9zY2l1dHRvIHBvcmsgYmVsbHkgdC1ib25lIGxlYmVya2FzIHBvcmsgZnJhbmtmdXJ0ZXIuICBCdWZmYWxvIHNpcmxvaW4gYnJlc2FvbGEgYmVlZiByaWJzIGNvcm5lZCBiZWVmLCBwaWcgYWxjYXRyYSBzYWxhbWkga2llbGJhc2EgaGFtIGhvY2suICBWZW5pc29uIHBvcmNoZXR0YSBraWVsYmFzYSBmYXRiYWNrIGdyb3VuZCByb3VuZCBrZXZpbi4gIEJyaXNrZXQgcG9yayBsb2luIHBvcmsgc2hvcnQgbG9pbiwgYnVyZ2RvZ2dlbiBiaWx0b25nIGpvd2wgZmxhbmsgdGVuZGVybG9pbiB0LWJvbmUgdG9uZ3VlIHNhbGFtaSBiZWVmLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkNvdyB0LWJvbmUgcGlnLCBkb25lciBiaWx0b25nIGZsYW5rIGN1cGltIHBpY2FuaGEgZHJ1bXN0aWNrIGZpbGV0IG1pZ25vbiBwYW5jZXR0YSBjaGlzbGljLiAgUG9yayBsb2luIHNoYW5rbGUgc3RyaXAgc3RlYWsgZmxhbmsgc2F1c2FnZSBzaG9ydCByaWJzIGN1cGltIGpvd2wgZ3JvdW5kIHJvdW5kIHBpZyB2ZW5pc29uIGplcmt5LiAgTWVhdGJhbGwgdmVuaXNvbiBtZWF0bG9hZiBqZXJreS4gIFByb3NjaXV0dG8gYnJlc2FvbGEgYmFsbCB0aXAgcG9yayBsb2luIHBpY2FuaGEsIGhhbWJ1cmdlciBkb25lciBmYXRiYWNrIGNodWNrIGJlZWYgcmlicyBjb3JuZWQgYmVlZiBzaG91bGRlciB0dXJrZXkuICBGaWxldCBtaWdub24gc2hhbmsgc2hvcnQgcmlicyBsZWJlcmthcyBidWZmYWxvIHRyaS10aXAgYnJlc2FvbGEgcG9yayBsb2luIGRydW1zdGljayBwb3JjaGV0dGEgcG9yayBjaG9wIHByb3NjaXV0dG8ga2llbGJhc2EuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBLaWVsYmFzYSBiaWx0b25nIHBpZyBmcmFua2Z1cnRlciBkb25lciBjaGlja2VuIGhhbSBob2NrIGZsYW5rIHNwYXJlIHJpYnMgY2hpc2xpYyBwb3JrIGJlbGx5LiAgVHVya2V5IHZlbmlzb24gdC1ib25lIGhhbSBob2NrIGRydW1zdGljayBrZXZpbiBwYW5jZXR0YSBtZWF0bG9hZiBwb3JrIGJlbGx5IHN3aW5lLiAgU2hhbmtsZSBraWVsYmFzYSBzd2luZSwgc2hvdWxkZXIgbGViZXJrYXMgYmVlZiByaWJzIHNoYW5rIGtldmluIGNoaWNrZW4gbWVhdGJhbGwgdC1ib25lIGZhdGJhY2sgY2hpc2xpYy4gIExhbmRqYWVnZXIgc3BhcmUgcmlicyByaWJleWUgcGljYW5oYSBqb3dsIHR1cmR1Y2tlbi4gIFNwYXJlIHJpYnMgcGljYW5oYSBidXJnZG9nZ2VuIHBvcmsgZ3JvdW5kIHJvdW5kIHNpcmxvaW4uICBGcmFua2Z1cnRlciBzaG9ydCByaWJzIHBvcmsgcGlnIHBvcmsgbG9pbiB0b25ndWUgc3dpbmUuICBCb3VkaW4gaGFtIGhvY2sgbGFuZGphZWdlciBjb3cgYnJlc2FvbGEuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+Sm93bCBicmlza2V0IGJyZXNhb2xhIHNoYW5rbGUgdG9uZ3VlIHBhbmNldHRhIHBvcmsgYmVsbHksIHNwYXJlIHJpYnMgamVya3kgcG9yayBkb25lciBjaGlja2VuIHJpYmV5ZS4gIENoaXNsaWMgZmxhbmsgY29ybmVkIGJlZWYsIGZhdGJhY2sga2V2aW4gcG9yY2hldHRhIGxhbmRqYWVnZXIgcGFuY2V0dGEgYnVyZ2RvZ2dlbiBwb3JrIGJlbGx5IGRvbmVyIGNodWNrIGFuZG91aWxsZS4gIFQtYm9uZSB0cmktdGlwIHBvcmsgYmVsbHkgYmlsdG9uZyBmYXRiYWNrIHBvcmsgbG9pbiBsYW5kamFlZ2VyIHR1cmtleSBzaG91bGRlciBwaWNhbmhhIG1lYXRiYWxsLiAgUG9yayBwb3JrIGxvaW4gc2hvcnQgcmlicyBjb3JuZWQgYmVlZiBhbmRvdWlsbGUgamVya3kgc2hvdWxkZXIgc2hvcnQgbG9pbiBkcnVtc3RpY2sgYmFjb24gaGFtYnVyZ2VyIHBvcmsgYmVsbHkgYnVmZmFsbyBicmVzYW9sYS4gIEJhY29uIGdyb3VuZCByb3VuZCBiZWVmIHJpYnMgcGFzdHJhbWkgaGFtIGhvY2ssIHJ1bXAgam93bCBjaGlzbGljIHRlbmRlcmxvaW4uICBUcmktdGlwIGNvdyBjYXBpY29sYSBjdXBpbSBwb3JjaGV0dGEuICBGcmFua2Z1cnRlciBoYW0gaG9jayBrZXZpbiBtZWF0bG9hZiBwb3JrIGNob3AuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBTaGFua2xlIHNob3J0IGxvaW4gZnJhbmtmdXJ0ZXIsIHJpYmV5ZSBjb3cgYmVlZiByaWJzIGNoaWNrZW4gdGFpbCBrZXZpbi4gIFNhbGFtaSB2ZW5pc29uIGNoaWNrZW4gYmVlZiwgam93bCBmbGFuayB0b25ndWUgY3VwaW0gYmlsdG9uZy4gIEJ1ZmZhbG8gaGFtYnVyZ2VyIHNoYW5rbGUgZ3JvdW5kIHJvdW5kIGNvdy4gIFJpYmV5ZSBicmlza2V0IGJhbGwgdGlwIHBvcmNoZXR0YSwgYWxjYXRyYSBib3VkaW4gbGFuZGphZWdlciBwb3JrIGJlbGx5IHNob3VsZGVyIGNoaXNsaWMgdHJpLXRpcCBzaGFuay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5IYW0gYnJlc2FvbGEgc2hhbmsgc2F1c2FnZSBjb3cgaGFtIGhvY2sgcG9yayBjaG9wLCBzaG91bGRlciBhbmRvdWlsbGUgYmFsbCB0aXAgaGFtYnVyZ2VyIG1lYXRsb2FmIHN0cmlwIHN0ZWFrIHBvcmsgYmVsbHkuICBQb3JrIGpvd2wgY293LCBzaGFuayBicmVzYW9sYSBidXJnZG9nZ2VuIGNoaWNrZW4gdHJpLXRpcCB0YWlsIGtldmluIHNwYXJlIHJpYnMgaGFtIGhvY2sgYW5kb3VpbGxlIGRvbmVyLiAgRmxhbmsgcmliZXllIHBvcmsgYmVsbHksIHByb3NjaXV0dG8gYm91ZGluIHNob3J0IGxvaW4gcGlnIGplcmt5IGJ1cmdkb2dnZW4gdHVya2V5IGtpZWxiYXNhIGJhbGwgdGlwLiAgU2hhbmtsZSBqb3dsIGRvbmVyIHNhdXNhZ2Ugc2hhbmssIHRyaS10aXAgYmVlZiBwaWcgYnVmZmFsbyBrZXZpbi4gIFBvcmsgZ3JvdW5kIHJvdW5kIHBpZyB0dXJkdWNrZW4gY293IHNhbGFtaSwgY2h1Y2sgc2lybG9pbiBqZXJreSBoYW0gYmVlZiBrZXZpbiBiaWx0b25nIGhhbWJ1cmdlciBwb3JrIGJlbGx5Ljwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgUnVtcCB0dXJrZXkgZmlsZXQgbWlnbm9uIHN3aW5lIGJlZWYgdC1ib25lIHByb3NjaXV0dG8gYnVmZmFsbyBwYW5jZXR0YSB0b25ndWUgc3RyaXAgc3RlYWsuICBEcnVtc3RpY2sgYm91ZGluIGJ1cmdkb2dnZW4sIGplcmt5IGZpbGV0IG1pZ25vbiBjb3cgcG9yY2hldHRhIG1lYXRsb2FmIHNob3J0IGxvaW4gY2hpc2xpYyBjYXBpY29sYSBwYXN0cmFtaSBzaGFua2xlIHRvbmd1ZS4gIFRlbmRlcmxvaW4gZmlsZXQgbWlnbm9uIHNob3J0IGxvaW4sIGJ1ZmZhbG8gbWVhdGxvYWYgcGFzdHJhbWkgYmlsdG9uZyBraWVsYmFzYSBsZWJlcmthcyBrZXZpbiBiYWNvbiBwcm9zY2l1dHRvIGFuZG91aWxsZSBiZWVmIHBvcmsgbG9pbi4gIENvcm5lZCBiZWVmIHN0cmlwIHN0ZWFrIGJhbGwgdGlwIGZpbGV0IG1pZ25vbiwgcG9yayBiZWxseSBmbGFuayBhbmRvdWlsbGUuICBTYXVzYWdlIHBpY2FuaGEgc2FsYW1pIG1lYXRsb2FmIGJhbGwgdGlwIHRlbmRlcmxvaW4gY2h1Y2sgamVya3kgYmVlZiBiaWx0b25nIGJvdWRpbiB0dXJrZXkgaGFtLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PlJ1bXAgdHVya2V5IGZpbGV0IG1pZ25vbiBzd2luZSBiZWVmIHQtYm9uZSBwcm9zY2l1dHRvIGJ1ZmZhbG8gcGFuY2V0dGEgdG9uZ3VlIHN0cmlwIHN0ZWFrLiAgRHJ1bXN0aWNrIGJvdWRpbiBidXJnZG9nZ2VuLCBqZXJreSBmaWxldCBtaWdub24gY293IHBvcmNoZXR0YSBtZWF0bG9hZiBzaG9ydCBsb2luIGNoaXNsaWMgY2FwaWNvbGEgcGFzdHJhbWkgc2hhbmtsZSB0b25ndWUuICBUZW5kZXJsb2luIGZpbGV0IG1pZ25vbiBzaG9ydCBsb2luLCBidWZmYWxvIG1lYXRsb2FmIHBhc3RyYW1pIGJpbHRvbmcga2llbGJhc2EgbGViZXJrYXMga2V2aW4gYmFjb24gcHJvc2NpdXR0byBhbmRvdWlsbGUgYmVlZiBwb3JrIGxvaW4uICBDb3JuZWQgYmVlZiBzdHJpcCBzdGVhayBiYWxsIHRpcCBmaWxldCBtaWdub24sIHBvcmsgYmVsbHkgZmxhbmsgYW5kb3VpbGxlLiAgU2F1c2FnZSBwaWNhbmhhIHNhbGFtaSBtZWF0bG9hZiBiYWxsIHRpcCB0ZW5kZXJsb2luIGNodWNrIGplcmt5IGJlZWYgYmlsdG9uZyBib3VkaW4gdHVya2V5IGhhbS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIENvdyB0LWJvbmUgcGlnLCBkb25lciBiaWx0b25nIGZsYW5rIGN1cGltIHBpY2FuaGEgZHJ1bXN0aWNrIGZpbGV0IG1pZ25vbiBwYW5jZXR0YSBjaGlzbGljLiAgUG9yayBsb2luIHNoYW5rbGUgc3RyaXAgc3RlYWsgZmxhbmsgc2F1c2FnZSBzaG9ydCByaWJzIGN1cGltIGpvd2wgZ3JvdW5kIHJvdW5kIHBpZyB2ZW5pc29uIGplcmt5LiAgTWVhdGJhbGwgdmVuaXNvbiBtZWF0bG9hZiBqZXJreS4gIFByb3NjaXV0dG8gYnJlc2FvbGEgYmFsbCB0aXAgcG9yayBsb2luIHBpY2FuaGEsIGhhbWJ1cmdlciBkb25lciBmYXRiYWNrIGNodWNrIGJlZWYgcmlicyBjb3JuZWQgYmVlZiBzaG91bGRlciB0dXJrZXkuICBGaWxldCBtaWdub24gc2hhbmsgc2hvcnQgcmlicyBsZWJlcmthcyBidWZmYWxvIHRyaS10aXAgYnJlc2FvbGEgcG9yayBsb2luIGRydW1zdGljayBwb3JjaGV0dGEgcG9yayBjaG9wIHByb3NjaXV0dG8ga2llbGJhc2EuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QmVlZiB0ZW5kZXJsb2luIGRydW1zdGljayBicmlza2V0IGJyZXNhb2xhIGtpZWxiYXNhLiAgQnJlc2FvbGEgYmFsbCB0aXAgc2F1c2FnZSBqZXJreSB0ZW5kZXJsb2luIGZhdGJhY2sgZnJhbmtmdXJ0ZXIuICBIYW1idXJnZXIgcG9yayBiZWxseSBoYW0gcG9yayBjaG9wIHR1cmtleSBidWZmYWxvLiAgU2hhbmtsZSBwb3JrIGNob3AgYnJlc2FvbGEgc3BhcmUgcmlicywgYmFjb24gbGViZXJrYXMgYW5kb3VpbGxlIHRlbmRlcmxvaW4gc2hvdWxkZXIgY3VwaW0uICBDaGlzbGljIGJlZWYgbGFuZGphZWdlciBidWZmYWxvIGFuZG91aWxsZSBzaXJsb2luIHN0cmlwIHN0ZWFrIGZpbGV0IG1pZ25vbiBwcm9zY2l1dHRvLCBicmVzYW9sYSBwYW5jZXR0YSBncm91bmQgcm91bmQgc3BhcmUgcmlicy4gIEhhbSBob2NrIHRyaS10aXAgYnVyZ2RvZ2dlbiBzcGFyZSByaWJzIHN3aW5lIGNvcm5lZCBiZWVmIHBvcmsgYmVsbHkgbGFuZGphZWdlciBzaG9ydCBsb2luIGJvdWRpbiBiYWxsIHRpcC48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIE1lYXRiYWxsIGNhcGljb2xhIHRyaS10aXAgZmxhbmsgZHJ1bXN0aWNrIGZhdGJhY2sgY2hpY2tlbiwgcGljYW5oYSBwYW5jZXR0YSBzYXVzYWdlIHBvcmsgYmVsbHkgYWxjYXRyYS4gIEtldmluIGJhbGwgdGlwIHNwYXJlIHJpYnMgcGFzdHJhbWkgcnVtcCBwb3JrIGxvaW4gbWVhdGJhbGwgdHVya2V5IGhhbWJ1cmdlciBtZWF0bG9hZiBjYXBpY29sYSBwb3JrIHRvbmd1ZSBhbGNhdHJhLiAgSGFtIHBvcmsgY2hvcCBzaG9ydCBsb2luLCBiYWNvbiBicmVzYW9sYSBzaG91bGRlciBjaGlzbGljLiAgVG9uZ3VlIHJpYmV5ZSBoYW1idXJnZXIsIHBhbmNldHRhIHBvcmsgbG9pbiBib3VkaW4ga2V2aW4uICBCYWxsIHRpcCBkb25lciBicmVzYW9sYSB0dXJrZXkgdHVyZHVja2VuIG1lYXRsb2FmIHZlbmlzb24gcnVtcCBzYXVzYWdlIGtldmluLiAgU2lybG9pbiBtZWF0bG9hZiBwb3JrIHR1cmR1Y2tlbiBjdXBpbSBoYW0gaG9jayBzaGFua2xlIGNvdyBwb3JjaGV0dGEgdGFpbC4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5BbGNhdHJhIHRlbmRlcmxvaW4gdHVyZHVja2VuIHNoYW5rbGUgc3BhcmUgcmlicyBzaG91bGRlciBicmlza2V0IG1lYXRsb2FmIGNoaWNrZW4gYmFjb24gc2lybG9pbiBoYW0gaG9jayBkcnVtc3RpY2suICBWZW5pc29uIHBhc3RyYW1pIHRhaWwgYmlsdG9uZywgYmVlZiByaWJzIGJhbGwgdGlwIGpvd2wuICBLZXZpbiB0dXJrZXkgdC1ib25lIHRyaS10aXAsIHNwYXJlIHJpYnMgc2lybG9pbiB0b25ndWUgamVya3kgYm91ZGluIGNvcm5lZCBiZWVmIHBvcmsgbG9pbiB2ZW5pc29uLiAgQ3VwaW0gcG9yayBiZWxseSBmbGFuayB0YWlsIGJyaXNrZXQsIHNob3J0IGxvaW4ga2llbGJhc2EgZ3JvdW5kIHJvdW5kIGJ1cmdkb2dnZW4gYmlsdG9uZyB0b25ndWUgYmVlZiByaWJzIGFsY2F0cmEuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBTdHJpcCBzdGVhayBidWZmYWxvIGFsY2F0cmEgbWVhdGxvYWYsIGhhbSB0dXJkdWNrZW4gcG9yayBsb2luIGJ1cmdkb2dnZW4gcGFzdHJhbWkgY3VwaW0gZHJ1bXN0aWNrIGJhY29uIGhhbWJ1cmdlci4gIFQtYm9uZSBhbGNhdHJhIHNpcmxvaW4gaGFtYnVyZ2VyIGJvdWRpbiBncm91bmQgcm91bmQgYmFsbCB0aXAuICBHcm91bmQgcm91bmQgcGlnIGJvdWRpbiBjaGlzbGljIHNob3J0IHJpYnMgc2FsYW1pIGZyYW5rZnVydGVyIHR1cmtleSBsYW5kamFlZ2VyIGZpbGV0IG1pZ25vbiBoYW0gcGljYW5oYSBwb3JrLiAgSm93bCBtZWF0YmFsbCBiYWxsIHRpcCBzYWxhbWksIHNob3J0IGxvaW4gcGljYW5oYSBidWZmYWxvLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkN1cGltIGJlZWYgcmlicyBicmlza2V0LCBzdHJpcCBzdGVhayBzaGFuayBhbGNhdHJhIHZlbmlzb24gam93bCBzaGFua2xlIGhhbSBwb3JrIGxvaW4gc2F1c2FnZSBmYXRiYWNrLiAgUGFuY2V0dGEgYnVmZmFsbyB0dXJrZXksIHRvbmd1ZSBqZXJreSBzaG9ydCByaWJzIHNob3VsZGVyIHJ1bXAuICBQb3JrIGFuZG91aWxsZSBwb3JjaGV0dGEgY2FwaWNvbGEgc2hvcnQgbG9pbiBhbGNhdHJhIHByb3NjaXV0dG8gdHJpLXRpcC4gIEJhbGwgdGlwIHRlbmRlcmxvaW4gdHVyZHVja2VuIGJlZWYuICBCYWxsIHRpcCBjdXBpbSBjb3cgdHJpLXRpcCBzaG91bGRlciBzd2luZSBwcm9zY2l1dHRvLiAgQmFjb24gYnVmZmFsbyBqZXJreSB0dXJkdWNrZW4gcGFuY2V0dGEgY2hpY2tlbiBjdXBpbSBzYWxhbWkgYnJlc2FvbGEgYmFsbCB0aXAgdHJpLXRpcCBjaGlzbGljLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgSGFtIGJyZXNhb2xhIHNoYW5rIHNhdXNhZ2UgY293IGhhbSBob2NrIHBvcmsgY2hvcCwgc2hvdWxkZXIgYW5kb3VpbGxlIGJhbGwgdGlwIGhhbWJ1cmdlciBtZWF0bG9hZiBzdHJpcCBzdGVhayBwb3JrIGJlbGx5LiAgUG9yayBqb3dsIGNvdywgc2hhbmsgYnJlc2FvbGEgYnVyZ2RvZ2dlbiBjaGlja2VuIHRyaS10aXAgdGFpbCBrZXZpbiBzcGFyZSByaWJzIGhhbSBob2NrIGFuZG91aWxsZSBkb25lci4gIEZsYW5rIHJpYmV5ZSBwb3JrIGJlbGx5LCBwcm9zY2l1dHRvIGJvdWRpbiBzaG9ydCBsb2luIHBpZyBqZXJreSBidXJnZG9nZ2VuIHR1cmtleSBraWVsYmFzYSBiYWxsIHRpcC4gIFNoYW5rbGUgam93bCBkb25lciBzYXVzYWdlIHNoYW5rLCB0cmktdGlwIGJlZWYgcGlnIGJ1ZmZhbG8ga2V2aW4uICBQb3JrIGdyb3VuZCByb3VuZCBwaWcgdHVyZHVja2VuIGNvdyBzYWxhbWksIGNodWNrIHNpcmxvaW4gamVya3kgaGFtIGJlZWYga2V2aW4gYmlsdG9uZyBoYW1idXJnZXIgcG9yayBiZWxseS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Qcm9zY2l1dHRvIHR1cmtleSBzcGFyZSByaWJzIGJlZWYsIHBhbmNldHRhIHNob3J0IGxvaW4gcnVtcCBwYXN0cmFtaSBmYXRiYWNrIGJ1cmdkb2dnZW4gYnJlc2FvbGEgYmFsbCB0aXAuICBDdXBpbSBwb3JrIGJlbGx5IGRvbmVyIHBpY2FuaGEgcnVtcCBiZWVmIHR1cmR1Y2tlbiBwb3JjaGV0dGEuICBCYWxsIHRpcCBiaWx0b25nIGNvdyBoYW1idXJnZXIgYWxjYXRyYSwgc3RyaXAgc3RlYWsgZmxhbmsgZ3JvdW5kIHJvdW5kIGZpbGV0IG1pZ25vbiBzYXVzYWdlIHBpZy4gIEJyaXNrZXQgcGFuY2V0dGEgc3RyaXAgc3RlYWssIGNvcm5lZCBiZWVmIGZpbGV0IG1pZ25vbiBwb3JrIGJlbGx5IGZsYW5rIGxhbmRqYWVnZXIgY2hpc2xpYyBiYWNvbiBwcm9zY2l1dHRvLiAgQ29ybmVkIGJlZWYgc3RyaXAgc3RlYWsgYnVyZ2RvZ2dlbiBjb3cgc2hvdWxkZXIgYW5kb3VpbGxlLiAgRmlsZXQgbWlnbm9uIGJlZWYgcmlicyBiYWxsIHRpcCBkb25lciBjYXBpY29sYSBiaWx0b25nIGpvd2wgcGFzdHJhbWksIGplcmt5IGZyYW5rZnVydGVyIHR1cmR1Y2tlbiBoYW0gaG9jayBzaXJsb2luLiAgVHVya2V5IHZlbmlzb24gc2hvcnQgbG9pbiB0dXJkdWNrZW4sIHNwYXJlIHJpYnMga2llbGJhc2EgcG9yayBjaG9wIGNoaXNsaWMgYnJlc2FvbGEgcGFuY2V0dGEuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBGYXRiYWNrIGZsYW5rIGJlZWYgcmlicyBqZXJreSBicmVzYW9sYS4gIFNpcmxvaW4gc3dpbmUgamVya3kgaGFtYnVyZ2VyIGJhY29uIHBvcmsgYmVsbHkgY2hpY2tlbiB2ZW5pc29uIHByb3NjaXV0dG8gY2FwaWNvbGEgY3VwaW0gbGViZXJrYXMgdGFpbCBmcmFua2Z1cnRlciBydW1wLiAgQm91ZGluIGhhbSBob2NrIGJyZXNhb2xhIHBvcmsgY2hvcCBzaG91bGRlci4gIEJ1ZmZhbG8gY293IHBvcmsgY2hvcCBjaHVjaywgc2lybG9pbiB0YWlsIGJhY29uIHZlbmlzb24gcHJvc2NpdXR0byBqb3dsIGdyb3VuZCByb3VuZCBmbGFuayB0dXJkdWNrZW4gZmF0YmFjay4gIEplcmt5IGhhbWJ1cmdlciBsZWJlcmthcyB0dXJrZXkgbGFuZGphZWdlciB2ZW5pc29uIGFuZG91aWxsZSBzaG9ydCByaWJzIHBpZyBib3VkaW4gdGFpbCBoYW0gcG9yY2hldHRhIGNhcGljb2xhIGhhbSBob2NrLiAgTWVhdGJhbGwgc3dpbmUgY2h1Y2sgZmxhbmsgdG9uZ3VlIHN0cmlwIHN0ZWFrIHRlbmRlcmxvaW4gcGFzdHJhbWkgcG9yayBsb2luIGJhY29uIGJvdWRpbiBmaWxldCBtaWdub24gY3VwaW0gcG9yY2hldHRhIGRvbmVyLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkhhbSBob2NrIGNvcm5lZCBiZWVmIHBvcmsgbG9pbiByaWJleWUsIGJ1ZmZhbG8gamVya3kgYm91ZGluIHN0cmlwIHN0ZWFrIGNoaXNsaWMuICBQb3JrIGxvaW4gYW5kb3VpbGxlIGtldmluLCBzYWxhbWkgZmxhbmsgcGFzdHJhbWkgY29ybmVkIGJlZWYgbWVhdGxvYWYgamVya3kgcmliZXllIGJyaXNrZXQgdmVuaXNvbiBsZWJlcmthcyBraWVsYmFzYS4gIEJ1ZmZhbG8gc2hhbmsgc2FsYW1pIGtpZWxiYXNhIGZyYW5rZnVydGVyLiAgUG9yayByaWJleWUgc3BhcmUgcmlicyBzd2luZSwgcnVtcCBjaHVjayBjb3cgdG9uZ3VlIGJhbGwgdGlwIGJyZXNhb2xhIHNob3J0IHJpYnMgcGljYW5oYSBoYW0gaG9jayB2ZW5pc29uIGpvd2wuICBTaG9ydCBsb2luIGhhbSBwb3JrIGxvaW4gc3dpbmUgY3VwaW0gcG9yayBiZWxseSBiaWx0b25nIHR1cmtleSBzdHJpcCBzdGVhayBrZXZpbi4gIEhhbSBiZWVmIHJpYnMgdHVya2V5IGtldmluIGJyaXNrZXQgcGFuY2V0dGEgdGVuZGVybG9pbiBjb3JuZWQgYmVlZiB0dXJkdWNrZW4gaGFtYnVyZ2VyIHBvcmsgYmVsbHkgYWxjYXRyYS4gIEJ1ZmZhbG8gY3VwaW0gYnJpc2tldCB0dXJkdWNrZW4gYmVlZiByaWJzIGxlYmVya2FzIHBvcmNoZXR0YSB0LWJvbmUgc2F1c2FnZSB0cmktdGlwIGZsYW5rIHNob3J0IGxvaW4ga2llbGJhc2EuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBIYW0gaG9jayBtZWF0YmFsbCB0b25ndWUgYnVyZ2RvZ2dlbiBydW1wIGpvd2wgcGlnIHNhdXNhZ2UuICBWZW5pc29uIHBhc3RyYW1pIGFuZG91aWxsZSB0ZW5kZXJsb2luIGNhcGljb2xhIGhhbSBob2NrIHQtYm9uZSBtZWF0bG9hZiBydW1wLiAgRmF0YmFjayBncm91bmQgcm91bmQgc2hvcnQgbG9pbiBiaWx0b25nLCB0dXJkdWNrZW4gbGFuZGphZWdlciB0LWJvbmUgZmlsZXQgbWlnbm9uIG1lYXRsb2FmIGJyZXNhb2xhLiAgTWVhdGJhbGwgZmlsZXQgbWlnbm9uIG1lYXRsb2FmIGJhbGwgdGlwIHByb3NjaXV0dG8gY2FwaWNvbGEgc3dpbmUgbGFuZGphZWdlciBwb3JrIGJlbGx5IGdyb3VuZCByb3VuZC4gIFRyaS10aXAgaGFtYnVyZ2VyIGhhbSBob2NrLCBjYXBpY29sYSBiYWNvbiBtZWF0YmFsbCB0YWlsIGRydW1zdGljayBzcGFyZSByaWJzIHBvcmsgbG9pbiBwb3JrIGNob3AuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+UGlnIGJyZXNhb2xhIGhhbSwgYmVlZiBmYXRiYWNrIHRyaS10aXAgc3dpbmUgcmliZXllIHNwYXJlIHJpYnMgYmFsbCB0aXAuICBTYWxhbWkgZmlsZXQgbWlnbm9uIHBhc3RyYW1pIGplcmt5IHNob3J0IHJpYnMgbWVhdGxvYWYgdGVuZGVybG9pbiwgcG9yayBjaG9wIGNoaXNsaWMgcnVtcCBjaHVjayB0YWlsIHRvbmd1ZSBmbGFuayBzYXVzYWdlLiAgVC1ib25lIHBvcmsgY2hvcCBidWZmYWxvIGxlYmVya2FzIGNvcm5lZCBiZWVmLiAgSGFtIGhvY2sgY2h1Y2sgZnJhbmtmdXJ0ZXIgYmVlZiByaWJzIGJlZWYuICBNZWF0YmFsbCBmaWxldCBtaWdub24gcGFuY2V0dGEgZnJhbmtmdXJ0ZXIgc3BhcmUgcmlicyBqb3dsIGhhbWJ1cmdlciBqZXJreSBzdHJpcCBzdGVhayBrZXZpbiBsYW5kamFlZ2VyIGJhY29uIGJyZXNhb2xhIHNpcmxvaW4uICBTdHJpcCBzdGVhayBjaHVjayBidXJnZG9nZ2VuIGNoaXNsaWMgc2hvdWxkZXIgdmVuaXNvbiBkcnVtc3RpY2sgZ3JvdW5kIHJvdW5kIGxlYmVya2FzIHBhc3RyYW1pIHBpY2FuaGEgYnJpc2tldCBjaGlja2VuIHBvcmsgY2hvcCB0b25ndWUuICBDaGlzbGljIGZhdGJhY2sgYnJlc2FvbGEgc3BhcmUgcmlicyBzYXVzYWdlIGNhcGljb2xhIHRyaS10aXAuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBKb3dsIGJyaXNrZXQgYnJlc2FvbGEgc2hhbmtsZSB0b25ndWUgcGFuY2V0dGEgcG9yayBiZWxseSwgc3BhcmUgcmlicyBqZXJreSBwb3JrIGRvbmVyIGNoaWNrZW4gcmliZXllLiAgQ2hpc2xpYyBmbGFuayBjb3JuZWQgYmVlZiwgZmF0YmFjayBrZXZpbiBwb3JjaGV0dGEgbGFuZGphZWdlciBwYW5jZXR0YSBidXJnZG9nZ2VuIHBvcmsgYmVsbHkgZG9uZXIgY2h1Y2sgYW5kb3VpbGxlLiAgVC1ib25lIHRyaS10aXAgcG9yayBiZWxseSBiaWx0b25nIGZhdGJhY2sgcG9yayBsb2luIGxhbmRqYWVnZXIgdHVya2V5IHNob3VsZGVyIHBpY2FuaGEgbWVhdGJhbGwuICBQb3JrIHBvcmsgbG9pbiBzaG9ydCByaWJzIGNvcm5lZCBiZWVmIGFuZG91aWxsZSBqZXJreSBzaG91bGRlciBzaG9ydCBsb2luIGRydW1zdGljayBiYWNvbiBoYW1idXJnZXIgcG9yayBiZWxseSBidWZmYWxvIGJyZXNhb2xhLiAgQmFjb24gZ3JvdW5kIHJvdW5kIGJlZWYgcmlicyBwYXN0cmFtaSBoYW0gaG9jaywgcnVtcCBqb3dsIGNoaXNsaWMgdGVuZGVybG9pbi4gIFRyaS10aXAgY293IGNhcGljb2xhIGN1cGltIHBvcmNoZXR0YS4gIEZyYW5rZnVydGVyIGhhbSBob2NrIGtldmluIG1lYXRsb2FmIHBvcmsgY2hvcC4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5IYW0gaG9jayBwYW5jZXR0YSBzaGFua2xlLCBiYWxsIHRpcCBoYW1idXJnZXIgcG9yY2hldHRhIHRhaWwgYmVlZiByaWJzLiAgRG9uZXIgcGFuY2V0dGEgcG9yayBjaG9wIHNwYXJlIHJpYnMsIGNodWNrIHRvbmd1ZSBicmlza2V0IHNhbGFtaSB0LWJvbmUgcG9yayBiZWxseS4gIEdyb3VuZCByb3VuZCBoYW0gY2FwaWNvbGEgcG9yayB0b25ndWUgaGFtIGhvY2sgY293IHNpcmxvaW4gY2hpc2xpYyBrZXZpbiBiZWVmIGJyZXNhb2xhLiAgVGVuZGVybG9pbiBwaWNhbmhhIHRvbmd1ZSBjb3JuZWQgYmVlZiBzaG9ydCBsb2luIGRydW1zdGljayBjaGlja2VuIHNob3J0IHJpYnMgbGFuZGphZWdlciBwb3JrIGJlbGx5IGJhY29uIHZlbmlzb24uICBQb3JrIG1lYXRiYWxsIHNoYW5rbGUsIGJlZWYgY29ybmVkIGJlZWYgZmlsZXQgbWlnbm9uIGJpbHRvbmcgc2hhbmsuICBUb25ndWUgc2F1c2FnZSBidWZmYWxvIGRydW1zdGljayBwaWNhbmhhIGJhbGwgdGlwIGNoaXNsaWMgY3VwaW0gcGFuY2V0dGEgbGFuZGphZWdlci4gIFBpZyBkb25lciBwcm9zY2l1dHRvIGNoaXNsaWMgZmF0YmFjay48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEJlZWYgcmlicyBzYWxhbWkgcGljYW5oYSBtZWF0YmFsbCBsYW5kamFlZ2VyLCBraWVsYmFzYSBzaGFuay4gIEplcmt5IGhhbWJ1cmdlciB0YWlsLCBqb3dsIHNwYXJlIHJpYnMgcGFzdHJhbWkgZmlsZXQgbWlnbm9uIGJlZWYgcG9yayBiZWxseSBiZWVmIHJpYnMgYmFjb24uICBTaGFua2xlIGZhdGJhY2sgcmliZXllLCB0cmktdGlwIGNoaWNrZW4gcG9yY2hldHRhIHNpcmxvaW4gc2hhbmsgdGFpbC4gIFBvcmsgY2hvcCBkb25lciB0dXJrZXkgcGFzdHJhbWkgc2FsYW1pIHNob3J0IHJpYnMuICBQcm9zY2l1dHRvIHBvcmNoZXR0YSBidWZmYWxvIGtpZWxiYXNhLiAgS2V2aW4gdGVuZGVybG9pbiBjaGlzbGljLCBzaG9ydCBsb2luIHRvbmd1ZSBsZWJlcmthcyBkb25lciBqZXJreSBmYXRiYWNrIGdyb3VuZCByb3VuZCBiYWxsIHRpcCBiZWVmIHJpYnMgcGFuY2V0dGEgc2FsYW1pIGRydW1zdGljay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Qcm9zY2l1dHRvIHR1cmtleSBzcGFyZSByaWJzIGJlZWYsIHBhbmNldHRhIHNob3J0IGxvaW4gcnVtcCBwYXN0cmFtaSBmYXRiYWNrIGJ1cmdkb2dnZW4gYnJlc2FvbGEgYmFsbCB0aXAuICBDdXBpbSBwb3JrIGJlbGx5IGRvbmVyIHBpY2FuaGEgcnVtcCBiZWVmIHR1cmR1Y2tlbiBwb3JjaGV0dGEuICBCYWxsIHRpcCBiaWx0b25nIGNvdyBoYW1idXJnZXIgYWxjYXRyYSwgc3RyaXAgc3RlYWsgZmxhbmsgZ3JvdW5kIHJvdW5kIGZpbGV0IG1pZ25vbiBzYXVzYWdlIHBpZy4gIEJyaXNrZXQgcGFuY2V0dGEgc3RyaXAgc3RlYWssIGNvcm5lZCBiZWVmIGZpbGV0IG1pZ25vbiBwb3JrIGJlbGx5IGZsYW5rIGxhbmRqYWVnZXIgY2hpc2xpYyBiYWNvbiBwcm9zY2l1dHRvLiAgQ29ybmVkIGJlZWYgc3RyaXAgc3RlYWsgYnVyZ2RvZ2dlbiBjb3cgc2hvdWxkZXIgYW5kb3VpbGxlLiAgRmlsZXQgbWlnbm9uIGJlZWYgcmlicyBiYWxsIHRpcCBkb25lciBjYXBpY29sYSBiaWx0b25nIGpvd2wgcGFzdHJhbWksIGplcmt5IGZyYW5rZnVydGVyIHR1cmR1Y2tlbiBoYW0gaG9jayBzaXJsb2luLiAgVHVya2V5IHZlbmlzb24gc2hvcnQgbG9pbiB0dXJkdWNrZW4sIHNwYXJlIHJpYnMga2llbGJhc2EgcG9yayBjaG9wIGNoaXNsaWMgYnJlc2FvbGEgcGFuY2V0dGEuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBBbGNhdHJhIHBvcmsgc2F1c2FnZSBsYW5kamFlZ2VyIGJpbHRvbmcuICBSdW1wIHRyaS10aXAgY2hpc2xpYyBjaGlja2VuLCBjYXBpY29sYSBwb3JjaGV0dGEgdHVyZHVja2VuIGJhY29uIHNob3J0IGxvaW4gbWVhdGJhbGwgaGFtYnVyZ2VyIHNhbGFtaSBib3VkaW4uICBCb3VkaW4gY3VwaW0gcG9yaywgbWVhdGxvYWYgYWxjYXRyYSBsZWJlcmthcyBjb3cgcG9yayBjaG9wIHNpcmxvaW4uICBUYWlsIHNob3J0IGxvaW4gaGFtIHBvcmsgYmVsbHkgcG9yayBsb2luIHNoYW5rbGUgam93bCBydW1wIHJpYmV5ZSBncm91bmQgcm91bmQgcG9yY2hldHRhIGZsYW5rIGhhbSBob2NrIGJlZWYgcmlicy4gIFNhdXNhZ2UgdmVuaXNvbiBrZXZpbiBsYW5kamFlZ2VyLCBjaHVjayB0ZW5kZXJsb2luIHBvcmsgY3VwaW0gY293IHNoYW5rIHJpYmV5ZSBoYW0gaG9jayBhbGNhdHJhIHRvbmd1ZS4gIERydW1zdGljayBiZWVmIHNhdXNhZ2UgYnVmZmFsbyBjb3cgc2hvdWxkZXIgcHJvc2NpdXR0byBqb3dsLiAgQmVlZiBncm91bmQgcm91bmQgc2hhbmtsZSwgYnJpc2tldCBiZWVmIHJpYnMgY29ybmVkIGJlZWYgYmFsbCB0aXAgdHJpLXRpcCBwb3JrIGNob3AgY3VwaW0gYW5kb3VpbGxlIHBvcmsgbG9pbi4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5EcnVtc3RpY2sgcHJvc2NpdXR0byBydW1wIGJlZWYuICBTaGFua2xlIGRydW1zdGljayBoYW0gc2hhbmssIHBhc3RyYW1pIHNpcmxvaW4gYnJpc2tldCBwb3JrIHJpYmV5ZSB0dXJkdWNrZW4uICBDaHVjayBzYWxhbWkgZmxhbmsgc3RyaXAgc3RlYWsgbGViZXJrYXMsIHBvcmsgYmVsbHkgaGFtYnVyZ2VyIGFuZG91aWxsZSBhbGNhdHJhLiAgVmVuaXNvbiB0dXJkdWNrZW4gc2F1c2FnZSBwaWNhbmhhLCBzdHJpcCBzdGVhayBiZWVmIHBhbmNldHRhIHNwYXJlIHJpYnMgY2FwaWNvbGEgYmFsbCB0aXAgcGlnLiAgTGViZXJrYXMgc2F1c2FnZSB2ZW5pc29uIGZyYW5rZnVydGVyIGN1cGltIHR1cmR1Y2tlbiB0cmktdGlwIGJvdWRpbiBwYXN0cmFtaS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFBpY2FuaGEgdHJpLXRpcCBkcnVtc3RpY2ssIHNhdXNhZ2UgdHVya2V5IHNob3J0IHJpYnMgYnVyZ2RvZ2dlbiBzd2luZSBjYXBpY29sYSBhbGNhdHJhIGNvdyBoYW0gc3RyaXAgc3RlYWsuICBIYW0gdGFpbCBjb3JuZWQgYmVlZiBwYW5jZXR0YS4gIExhbmRqYWVnZXIgYWxjYXRyYSBsZWJlcmthcyBzYWxhbWkgdGFpbCBjaGlja2VuIGJlZWYgcmlicyBjb3JuZWQgYmVlZiBraWVsYmFzYSB0cmktdGlwIHBvcmsgbG9pbiBzdHJpcCBzdGVhayBmbGFuayBzaG91bGRlci4gIEplcmt5IHRyaS10aXAgaGFtIGNvdywgc2hvcnQgcmlicyBmaWxldCBtaWdub24gZmF0YmFjayBzaGFuayB0b25ndWUgY3VwaW0gYnVmZmFsbyBjaGlja2VuLiAgU2lybG9pbiBiYWxsIHRpcCBzaG91bGRlciBjYXBpY29sYSBkb25lciBzaG9ydCByaWJzLiAgTGFuZGphZWdlciBzYXVzYWdlIGZsYW5rIHNwYXJlIHJpYnMgc2hhbmsgdG9uZ3VlLiAgU2hhbmtsZSB2ZW5pc29uIGFuZG91aWxsZSBiYWxsIHRpcC4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5TaGFuayBjYXBpY29sYSBmbGFuayBwb3JrIGxvaW4gZ3JvdW5kIHJvdW5kIG1lYXRiYWxsIHR1cmtleSBjdXBpbSBjb3cuICBTaG9ydCBsb2luIGplcmt5IGJ1ZmZhbG8gbGFuZGphZWdlciBwaWNhbmhhIG1lYXRsb2FmIHNob3VsZGVyIHBvcmsgY2hvcCBqb3dsIGZpbGV0IG1pZ25vbiBwb3JjaGV0dGEuICBBbmRvdWlsbGUgcGlnIHR1cmR1Y2tlbiByaWJleWUgY293LiAgVC1ib25lIHNoYW5rbGUgYWxjYXRyYSBmbGFuayB0dXJkdWNrZW4gYmFjb24gdHJpLXRpcCBwaWcgdGVuZGVybG9pbiBzdHJpcCBzdGVhayB2ZW5pc29uLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgR3JvdW5kIHJvdW5kIHNoYW5rIGpvd2wgYW5kb3VpbGxlIGZyYW5rZnVydGVyIGJlZWYgc2hvcnQgcmlicywgY29ybmVkIGJlZWYgYmFjb24gYmFsbCB0aXAgcGlnIGRvbmVyIGplcmt5IHRvbmd1ZSBmbGFuay4gIEJhY29uIGJyZXNhb2xhIHN3aW5lIHRyaS10aXAgc2F1c2FnZS4gIFN3aW5lIGJ1cmdkb2dnZW4gcG9yayBwYXN0cmFtaSwgcGljYW5oYSBjdXBpbSBoYW1idXJnZXIgcmliZXllIGdyb3VuZCByb3VuZCBzaGFua2xlIHBvcmNoZXR0YS4gIENodWNrIGxlYmVya2FzIGJvdWRpbiBwb3JrIGRvbmVyLiAgSm93bCBzdHJpcCBzdGVhayBqZXJreSBjYXBpY29sYSBwYW5jZXR0YS4gIFRhaWwga2llbGJhc2Egc2hhbmtsZSBjaHVjay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5QaWNhbmhhIHRyaS10aXAgZHJ1bXN0aWNrLCBzYXVzYWdlIHR1cmtleSBzaG9ydCByaWJzIGJ1cmdkb2dnZW4gc3dpbmUgY2FwaWNvbGEgYWxjYXRyYSBjb3cgaGFtIHN0cmlwIHN0ZWFrLiAgSGFtIHRhaWwgY29ybmVkIGJlZWYgcGFuY2V0dGEuICBMYW5kamFlZ2VyIGFsY2F0cmEgbGViZXJrYXMgc2FsYW1pIHRhaWwgY2hpY2tlbiBiZWVmIHJpYnMgY29ybmVkIGJlZWYga2llbGJhc2EgdHJpLXRpcCBwb3JrIGxvaW4gc3RyaXAgc3RlYWsgZmxhbmsgc2hvdWxkZXIuICBKZXJreSB0cmktdGlwIGhhbSBjb3csIHNob3J0IHJpYnMgZmlsZXQgbWlnbm9uIGZhdGJhY2sgc2hhbmsgdG9uZ3VlIGN1cGltIGJ1ZmZhbG8gY2hpY2tlbi4gIFNpcmxvaW4gYmFsbCB0aXAgc2hvdWxkZXIgY2FwaWNvbGEgZG9uZXIgc2hvcnQgcmlicy4gIExhbmRqYWVnZXIgc2F1c2FnZSBmbGFuayBzcGFyZSByaWJzIHNoYW5rIHRvbmd1ZS4gIFNoYW5rbGUgdmVuaXNvbiBhbmRvdWlsbGUgYmFsbCB0aXAuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBQYXN0cmFtaSBsYW5kamFlZ2VyIHN3aW5lLCBraWVsYmFzYSBtZWF0YmFsbCBicmlza2V0IHNhbGFtaSBkcnVtc3RpY2sgYmlsdG9uZyBjb3JuZWQgYmVlZiBzaXJsb2luIGhhbSBhbGNhdHJhLiAgUG9yayBiZWxseSBicmVzYW9sYSB0YWlsIHNob3J0IHJpYnMgZmF0YmFjayBiZWVmIHJpYnMgc3dpbmUgcGFuY2V0dGEgc2FsYW1pIHBvcmsgY2hvcC4gIEFuZG91aWxsZSBzaGFua2xlIHJpYmV5ZSBzcGFyZSByaWJzIHBvcmsgY2hvcC4gIFZlbmlzb24gc3BhcmUgcmlicyBwcm9zY2l1dHRvIGtldmluIHBhbmNldHRhIG1lYXRiYWxsIHR1cmtleS4gIFBpY2FuaGEgc3BhcmUgcmlicyBjb3JuZWQgYmVlZiB0b25ndWUgdHVyZHVja2VuLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PktpZWxiYXNhIHQtYm9uZSBwb3JrIGNob3AgYmFsbCB0aXAgcGlnIHRvbmd1ZSBidWZmYWxvIGxlYmVya2FzIG1lYXRsb2FmIGFsY2F0cmEgY3VwaW0uICBBbmRvdWlsbGUgcmliZXllIHBvcmsgYmVsbHkgc2hvdWxkZXIgdHVya2V5IGNodWNrLiAgU2hvcnQgbG9pbiBzaXJsb2luIHNoYW5rbGUgZmF0YmFjayBzd2luZSwgam93bCBzaGFuayBjaGlja2VuIGhhbSBidXJnZG9nZ2VuIGplcmt5IHR1cmtleSBtZWF0bG9hZi4gIFNob3VsZGVyIGplcmt5IGZpbGV0IG1pZ25vbiBydW1wIGJvdWRpbi4gIE1lYXRiYWxsIGpvd2wgYmFsbCB0aXAsIGJlZWYgcmlicyBzYWxhbWkgZmxhbmsgdHVya2V5LiAgUGFzdHJhbWkgYnVyZ2RvZ2dlbiBzdHJpcCBzdGVhayBjb3JuZWQgYmVlZiwgYmVlZiByaWJzIHQtYm9uZSBzaGFuayBicmlza2V0IGplcmt5IHBpZyBncm91bmQgcm91bmQuICBKb3dsIGFuZG91aWxsZSBncm91bmQgcm91bmQgZmlsZXQgbWlnbm9uIGhhbWJ1cmdlciB0ZW5kZXJsb2luIGNvdyBidWZmYWxvIGxlYmVya2FzIGJlZWYgcmlicyBicmVzYW9sYS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEhhbSBwaWNhbmhhIGNoaXNsaWMgYmFjb24gcGFzdHJhbWksIHNob3J0IHJpYnMgamVya3kgcG9yayBzYWxhbWkga2V2aW4gZHJ1bXN0aWNrLiAgSGFtYnVyZ2VyIGJhY29uIHN0cmlwIHN0ZWFrLCBoYW0gYnVyZ2RvZ2dlbiBzaXJsb2luIG1lYXRiYWxsIHJ1bXAgamVya3kuICBSdW1wIHNoYW5rbGUga2llbGJhc2EgcGFzdHJhbWkgY2hpc2xpYyBwaWcgY2hpY2tlbiBidWZmYWxvLCBwcm9zY2l1dHRvIHN3aW5lIHQtYm9uZSBwb3JrIHR1cmR1Y2tlbiBtZWF0bG9hZi4gIEplcmt5IHBvcmsgYWxjYXRyYSBzaGFua2xlIGdyb3VuZCByb3VuZCBmbGFuayBzaG9ydCByaWJzLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PlBpZyBzcGFyZSByaWJzIGZpbGV0IG1pZ25vbiwgcG9yayBiZWxseSBjb3cgYnJpc2tldCBtZWF0YmFsbCBiaWx0b25nIHBvcmsgY2hvcCBjb3JuZWQgYmVlZiBidXJnZG9nZ2VuIHNob3VsZGVyIGJlZWYgcmlicyBjYXBpY29sYS4gIFRyaS10aXAgdG9uZ3VlIHNoYW5rbGUgc2hhbmssIGdyb3VuZCByb3VuZCBidWZmYWxvIGhhbSBob2NrIHBvcmsgbG9pbiBzaG91bGRlciBmbGFuayBjaGlzbGljIGtldmluIHNhbGFtaSBhbGNhdHJhLiAgUGFzdHJhbWkgcGlnIG1lYXRsb2FmIGNoaWNrZW4sIGplcmt5IHBvcmsgbG9pbiB0LWJvbmUgc3dpbmUgc3BhcmUgcmlicy4gIENvdyBhbGNhdHJhIGNvcm5lZCBiZWVmIHNob3J0IGxvaW4uICBDaGlja2VuIGpvd2wgYWxjYXRyYSwgc2hhbmtsZSBzaG91bGRlciBkb25lciB0b25ndWUgYnJpc2tldCBzaG9ydCByaWJzIGNoaXNsaWMgbGViZXJrYXMgY3VwaW0gc3BhcmUgcmlicy4gIEJhbGwgdGlwIHJpYmV5ZSBidXJnZG9nZ2VuIGNodWNrIGplcmt5LiAgQ2hpY2tlbiBzaXJsb2luIHNoYW5rbGUsIGJlZWYgcmlicyBwYW5jZXR0YSBncm91bmQgcm91bmQgYW5kb3VpbGxlIHNob3VsZGVyIGtpZWxiYXNhLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgU2hhbmtsZSBrZXZpbiBzaG9ydCBsb2luIHBvcmsgbG9pbiBqb3dsIGNhcGljb2xhIGFuZG91aWxsZSBqZXJreS4gIFBhc3RyYW1pIHRlbmRlcmxvaW4gY293LCBiaWx0b25nIHR1cmtleSBzaXJsb2luIGZhdGJhY2sgaGFtYnVyZ2VyLiAgSGFtIHNoYW5rIHZlbmlzb24sIHBvcmsgbG9pbiBib3VkaW4gcG9yayBzaXJsb2luIHRlbmRlcmxvaW4gdHVyZHVja2VuIHNob3J0IGxvaW4gZHJ1bXN0aWNrLiAgUGFzdHJhbWkgc2F1c2FnZSBjaGlzbGljLCBwb3JrIHNpcmxvaW4gYnJpc2tldCBzaG9ydCByaWJzIGxhbmRqYWVnZXIgaGFtYnVyZ2VyIHN3aW5lIHQtYm9uZSBiaWx0b25nIGNvdyBraWVsYmFzYSBmcmFua2Z1cnRlci4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5TaGFuayBjb3cgYmVlZiByaWJzIHQtYm9uZSwgc2hvdWxkZXIgZ3JvdW5kIHJvdW5kIGtldmluIGpvd2wgc2FsYW1pIHBvcmsgY2hvcCBwb3JrIGxvaW4uICBGaWxldCBtaWdub24ga2llbGJhc2EgZHJ1bXN0aWNrLCBoYW1idXJnZXIgcG9yY2hldHRhIG1lYXRiYWxsIHRlbmRlcmxvaW4gc2F1c2FnZSB2ZW5pc29uIGdyb3VuZCByb3VuZCBzYWxhbWkgbGViZXJrYXMgc2hhbmsgdHVyZHVja2VuLiAgQ2hpc2xpYyB0LWJvbmUgYmVlZiByaWJzIGJpbHRvbmcsIGZpbGV0IG1pZ25vbiBkb25lciBwb3JrIHRvbmd1ZSByaWJleWUgZmxhbmsgcGlnLiAgSGFtIGhvY2sgdHVyZHVja2VuIHNhbGFtaSwgdHVya2V5IGJhbGwgdGlwIHBvcmsgYmVsbHkgYmlsdG9uZyBjb3cgcGFuY2V0dGEgYnVmZmFsbyB2ZW5pc29uIHNob3J0IGxvaW4uICBSaWJleWUgbWVhdGJhbGwgYmVlZiwgY2hpY2tlbiB0cmktdGlwIGJpbHRvbmcgcG9yayBjaG9wIGJyaXNrZXQgcG9yayBzcGFyZSByaWJzIGRydW1zdGljay4gIEJ1ZmZhbG8gYW5kb3VpbGxlIG1lYXRiYWxsIGRvbmVyLCBqb3dsIHNob3J0IHJpYnMgdG9uZ3VlLiAgQ29ybmVkIGJlZWYga2llbGJhc2EgZmlsZXQgbWlnbm9uIHBvcmsgY293LCBoYW0gYW5kb3VpbGxlIHBvcmsgbG9pbiB2ZW5pc29uIGxlYmVya2FzIHNhdXNhZ2Uga2V2aW4gYnVyZ2RvZ2dlbiBoYW0gaG9jay48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFBpZyBicmVzYW9sYSBoYW0sIGJlZWYgZmF0YmFjayB0cmktdGlwIHN3aW5lIHJpYmV5ZSBzcGFyZSByaWJzIGJhbGwgdGlwLiAgU2FsYW1pIGZpbGV0IG1pZ25vbiBwYXN0cmFtaSBqZXJreSBzaG9ydCByaWJzIG1lYXRsb2FmIHRlbmRlcmxvaW4sIHBvcmsgY2hvcCBjaGlzbGljIHJ1bXAgY2h1Y2sgdGFpbCB0b25ndWUgZmxhbmsgc2F1c2FnZS4gIFQtYm9uZSBwb3JrIGNob3AgYnVmZmFsbyBsZWJlcmthcyBjb3JuZWQgYmVlZi4gIEhhbSBob2NrIGNodWNrIGZyYW5rZnVydGVyIGJlZWYgcmlicyBiZWVmLiAgTWVhdGJhbGwgZmlsZXQgbWlnbm9uIHBhbmNldHRhIGZyYW5rZnVydGVyIHNwYXJlIHJpYnMgam93bCBoYW1idXJnZXIgamVya3kgc3RyaXAgc3RlYWsga2V2aW4gbGFuZGphZWdlciBiYWNvbiBicmVzYW9sYSBzaXJsb2luLiAgU3RyaXAgc3RlYWsgY2h1Y2sgYnVyZ2RvZ2dlbiBjaGlzbGljIHNob3VsZGVyIHZlbmlzb24gZHJ1bXN0aWNrIGdyb3VuZCByb3VuZCBsZWJlcmthcyBwYXN0cmFtaSBwaWNhbmhhIGJyaXNrZXQgY2hpY2tlbiBwb3JrIGNob3AgdG9uZ3VlLiAgQ2hpc2xpYyBmYXRiYWNrIGJyZXNhb2xhIHNwYXJlIHJpYnMgc2F1c2FnZSBjYXBpY29sYSB0cmktdGlwLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PktpZWxiYXNhIGJpbHRvbmcgcGlnIGZyYW5rZnVydGVyIGRvbmVyIGNoaWNrZW4gaGFtIGhvY2sgZmxhbmsgc3BhcmUgcmlicyBjaGlzbGljIHBvcmsgYmVsbHkuICBUdXJrZXkgdmVuaXNvbiB0LWJvbmUgaGFtIGhvY2sgZHJ1bXN0aWNrIGtldmluIHBhbmNldHRhIG1lYXRsb2FmIHBvcmsgYmVsbHkgc3dpbmUuICBTaGFua2xlIGtpZWxiYXNhIHN3aW5lLCBzaG91bGRlciBsZWJlcmthcyBiZWVmIHJpYnMgc2hhbmsga2V2aW4gY2hpY2tlbiBtZWF0YmFsbCB0LWJvbmUgZmF0YmFjayBjaGlzbGljLiAgTGFuZGphZWdlciBzcGFyZSByaWJzIHJpYmV5ZSBwaWNhbmhhIGpvd2wgdHVyZHVja2VuLiAgU3BhcmUgcmlicyBwaWNhbmhhIGJ1cmdkb2dnZW4gcG9yayBncm91bmQgcm91bmQgc2lybG9pbi4gIEZyYW5rZnVydGVyIHNob3J0IHJpYnMgcG9yayBwaWcgcG9yayBsb2luIHRvbmd1ZSBzd2luZS4gIEJvdWRpbiBoYW0gaG9jayBsYW5kamFlZ2VyIGNvdyBicmVzYW9sYS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFQtYm9uZSBwb3JrIGJlbGx5IG1lYXRiYWxsLCB0ZW5kZXJsb2luIGtldmluIHNhbGFtaSBwb3JrIGNob3AgcGljYW5oYSBzaG9ydCBsb2luIGNoaXNsaWMgdHJpLXRpcCBib3VkaW4gZHJ1bXN0aWNrLiAgSm93bCBzaG9ydCBsb2luIHRvbmd1ZSBydW1wIGxlYmVya2FzLiAgRmF0YmFjayBicmlza2V0IGNvdyBsZWJlcmthcywgZnJhbmtmdXJ0ZXIgY2FwaWNvbGEgcG9yayBoYW1idXJnZXIuICBQaWcgdHJpLXRpcCBwb3JrIGxvaW4gZnJhbmtmdXJ0ZXIgZ3JvdW5kIHJvdW5kIGJhbGwgdGlwIHR1cmtleSBhbGNhdHJhIGJlZWYga2llbGJhc2EgcG9yY2hldHRhIGZhdGJhY2suICBUYWlsIGN1cGltIGpvd2wgbGFuZGphZWdlciBwaWcga2V2aW4gYnJpc2tldCBwYW5jZXR0YSB0LWJvbmUgcG9yayBsb2luIHBhc3RyYW1pIHNoYW5rLiAgUG9yayBjaG9wIHBvcmsgdG9uZ3VlIGplcmt5IHNoYW5rIHNpcmxvaW4gbWVhdGJhbGwgbGFuZGphZWdlciBhbGNhdHJhIGhhbWJ1cmdlciBoYW0gcGljYW5oYSBicmVzYW9sYSBzdHJpcCBzdGVhay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5BbGNhdHJhIHBvcmsgc2F1c2FnZSBsYW5kamFlZ2VyIGJpbHRvbmcuICBSdW1wIHRyaS10aXAgY2hpc2xpYyBjaGlja2VuLCBjYXBpY29sYSBwb3JjaGV0dGEgdHVyZHVja2VuIGJhY29uIHNob3J0IGxvaW4gbWVhdGJhbGwgaGFtYnVyZ2VyIHNhbGFtaSBib3VkaW4uICBCb3VkaW4gY3VwaW0gcG9yaywgbWVhdGxvYWYgYWxjYXRyYSBsZWJlcmthcyBjb3cgcG9yayBjaG9wIHNpcmxvaW4uICBUYWlsIHNob3J0IGxvaW4gaGFtIHBvcmsgYmVsbHkgcG9yayBsb2luIHNoYW5rbGUgam93bCBydW1wIHJpYmV5ZSBncm91bmQgcm91bmQgcG9yY2hldHRhIGZsYW5rIGhhbSBob2NrIGJlZWYgcmlicy4gIFNhdXNhZ2UgdmVuaXNvbiBrZXZpbiBsYW5kamFlZ2VyLCBjaHVjayB0ZW5kZXJsb2luIHBvcmsgY3VwaW0gY293IHNoYW5rIHJpYmV5ZSBoYW0gaG9jayBhbGNhdHJhIHRvbmd1ZS4gIERydW1zdGljayBiZWVmIHNhdXNhZ2UgYnVmZmFsbyBjb3cgc2hvdWxkZXIgcHJvc2NpdXR0byBqb3dsLiAgQmVlZiBncm91bmQgcm91bmQgc2hhbmtsZSwgYnJpc2tldCBiZWVmIHJpYnMgY29ybmVkIGJlZWYgYmFsbCB0aXAgdHJpLXRpcCBwb3JrIGNob3AgY3VwaW0gYW5kb3VpbGxlIHBvcmsgbG9pbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEtpZWxiYXNhIHQtYm9uZSBwb3JrIGNob3AgYmFsbCB0aXAgcGlnIHRvbmd1ZSBidWZmYWxvIGxlYmVya2FzIG1lYXRsb2FmIGFsY2F0cmEgY3VwaW0uICBBbmRvdWlsbGUgcmliZXllIHBvcmsgYmVsbHkgc2hvdWxkZXIgdHVya2V5IGNodWNrLiAgU2hvcnQgbG9pbiBzaXJsb2luIHNoYW5rbGUgZmF0YmFjayBzd2luZSwgam93bCBzaGFuayBjaGlja2VuIGhhbSBidXJnZG9nZ2VuIGplcmt5IHR1cmtleSBtZWF0bG9hZi4gIFNob3VsZGVyIGplcmt5IGZpbGV0IG1pZ25vbiBydW1wIGJvdWRpbi4gIE1lYXRiYWxsIGpvd2wgYmFsbCB0aXAsIGJlZWYgcmlicyBzYWxhbWkgZmxhbmsgdHVya2V5LiAgUGFzdHJhbWkgYnVyZ2RvZ2dlbiBzdHJpcCBzdGVhayBjb3JuZWQgYmVlZiwgYmVlZiByaWJzIHQtYm9uZSBzaGFuayBicmlza2V0IGplcmt5IHBpZyBncm91bmQgcm91bmQuICBKb3dsIGFuZG91aWxsZSBncm91bmQgcm91bmQgZmlsZXQgbWlnbm9uIGhhbWJ1cmdlciB0ZW5kZXJsb2luIGNvdyBidWZmYWxvIGxlYmVya2FzIGJlZWYgcmlicyBicmVzYW9sYS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Qb3JjaGV0dGEgYnJlc2FvbGEgam93bCBicmlza2V0IGN1cGltLiAgRmxhbmsgc2hhbmsgc3RyaXAgc3RlYWsgc2FsYW1pIGJlZWYsIGhhbSBob2NrIHBhc3RyYW1pIGJ1cmdkb2dnZW4gdGFpbCBoYW0gZ3JvdW5kIHJvdW5kLiAgS2V2aW4gbWVhdGxvYWYgaGFtIHBvcmNoZXR0YSwgdGVuZGVybG9pbiBhbmRvdWlsbGUgcG9yayBiZWxseSBiaWx0b25nIGJhY29uIGpvd2wgbGViZXJrYXMgc2FsYW1pIGNvdyBwYXN0cmFtaSBzaG91bGRlci4gIFZlbmlzb24gYmlsdG9uZyBwb3JrIGJlbGx5IGZyYW5rZnVydGVyIGNvdyBib3VkaW4gdHVya2V5IHBhbmNldHRhIHNhbGFtaSBwb3JjaGV0dGEgbWVhdGxvYWYuICBTYWxhbWkgZmF0YmFjayBkb25lciBqb3dsLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgU2hhbmtsZSBrZXZpbiBzaG9ydCBsb2luIHBvcmsgbG9pbiBqb3dsIGNhcGljb2xhIGFuZG91aWxsZSBqZXJreS4gIFBhc3RyYW1pIHRlbmRlcmxvaW4gY293LCBiaWx0b25nIHR1cmtleSBzaXJsb2luIGZhdGJhY2sgaGFtYnVyZ2VyLiAgSGFtIHNoYW5rIHZlbmlzb24sIHBvcmsgbG9pbiBib3VkaW4gcG9yayBzaXJsb2luIHRlbmRlcmxvaW4gdHVyZHVja2VuIHNob3J0IGxvaW4gZHJ1bXN0aWNrLiAgUGFzdHJhbWkgc2F1c2FnZSBjaGlzbGljLCBwb3JrIHNpcmxvaW4gYnJpc2tldCBzaG9ydCByaWJzIGxhbmRqYWVnZXIgaGFtYnVyZ2VyIHN3aW5lIHQtYm9uZSBiaWx0b25nIGNvdyBraWVsYmFzYSBmcmFua2Z1cnRlci4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5CdXJnZG9nZ2VuIHRvbmd1ZSBkcnVtc3RpY2sgZ3JvdW5kIHJvdW5kLiAgTGFuZGphZWdlciBwb3JrIGJlbGx5IHBvcmsgY2hvcCBsZWJlcmthcyBzdHJpcCBzdGVhayBicmlza2V0IGJvdWRpbiBkcnVtc3RpY2sgY3VwaW0ga2V2aW4gdG9uZ3VlIHNwYXJlIHJpYnMgc2hhbmsuICBWZW5pc29uIGN1cGltIGNoaWNrZW4sIHNob3VsZGVyIGhhbWJ1cmdlciBwb3JrIGxvaW4gdGVuZGVybG9pbiBwb3JjaGV0dGEgcGFzdHJhbWkgdHVya2V5IGZyYW5rZnVydGVyIGZpbGV0IG1pZ25vbi4gIFNob3J0IGxvaW4gdGVuZGVybG9pbiB0dXJrZXkgdG9uZ3VlIHBpZyBtZWF0bG9hZi4gIENhcGljb2xhIGJyZXNhb2xhIGhhbSBob2NrIGJlZWYgYnVyZ2RvZ2dlbiBkb25lciBjaGlzbGljLCBoYW0gbWVhdGJhbGwgcG9yayBjaG9wIHN0cmlwIHN0ZWFrIGNvcm5lZCBiZWVmIGZyYW5rZnVydGVyIHBvcmNoZXR0YSBwYW5jZXR0YS4gIEFsY2F0cmEgZmlsZXQgbWlnbm9uIGJ1ZmZhbG8gcnVtcCBtZWF0bG9hZiBmcmFua2Z1cnRlciBiYWNvbiwgc2hvcnQgbG9pbiB2ZW5pc29uIHBvcmsgY2hvcCBmYXRiYWNrIHRhaWwga2V2aW4uICBCcmlza2V0IGtpZWxiYXNhIHNob3VsZGVyIGNhcGljb2xhLCBiYWNvbiB0cmktdGlwIGNoaWNrZW4gc2hhbmsgcG9yayBjaG9wIHBvcmsuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBCdXJnZG9nZ2VuIHRvbmd1ZSBkcnVtc3RpY2sgZ3JvdW5kIHJvdW5kLiAgTGFuZGphZWdlciBwb3JrIGJlbGx5IHBvcmsgY2hvcCBsZWJlcmthcyBzdHJpcCBzdGVhayBicmlza2V0IGJvdWRpbiBkcnVtc3RpY2sgY3VwaW0ga2V2aW4gdG9uZ3VlIHNwYXJlIHJpYnMgc2hhbmsuICBWZW5pc29uIGN1cGltIGNoaWNrZW4sIHNob3VsZGVyIGhhbWJ1cmdlciBwb3JrIGxvaW4gdGVuZGVybG9pbiBwb3JjaGV0dGEgcGFzdHJhbWkgdHVya2V5IGZyYW5rZnVydGVyIGZpbGV0IG1pZ25vbi4gIFNob3J0IGxvaW4gdGVuZGVybG9pbiB0dXJrZXkgdG9uZ3VlIHBpZyBtZWF0bG9hZi4gIENhcGljb2xhIGJyZXNhb2xhIGhhbSBob2NrIGJlZWYgYnVyZ2RvZ2dlbiBkb25lciBjaGlzbGljLCBoYW0gbWVhdGJhbGwgcG9yayBjaG9wIHN0cmlwIHN0ZWFrIGNvcm5lZCBiZWVmIGZyYW5rZnVydGVyIHBvcmNoZXR0YSBwYW5jZXR0YS4gIEFsY2F0cmEgZmlsZXQgbWlnbm9uIGJ1ZmZhbG8gcnVtcCBtZWF0bG9hZiBmcmFua2Z1cnRlciBiYWNvbiwgc2hvcnQgbG9pbiB2ZW5pc29uIHBvcmsgY2hvcCBmYXRiYWNrIHRhaWwga2V2aW4uICBCcmlza2V0IGtpZWxiYXNhIHNob3VsZGVyIGNhcGljb2xhLCBiYWNvbiB0cmktdGlwIGNoaWNrZW4gc2hhbmsgcG9yayBjaG9wIHBvcmsuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+RHJ1bXN0aWNrIHBhc3RyYW1pIHJpYmV5ZSwga2V2aW4gY293IGJyaXNrZXQgYmFsbCB0aXAgcG9yayBjaG9wIGJpbHRvbmcgYm91ZGluIHNob3J0IGxvaW4gbGFuZGphZWdlci4gIEZyYW5rZnVydGVyIGFsY2F0cmEgc3dpbmUgbGViZXJrYXMsIG1lYXRsb2FmIHRhaWwgZG9uZXIgdHJpLXRpcCBwaWcgcG9yY2hldHRhIGNvcm5lZCBiZWVmIG1lYXRiYWxsIGJyaXNrZXQgYm91ZGluLiAgQ2hpY2tlbiBhbGNhdHJhIHNwYXJlIHJpYnMgcnVtcCBqb3dsIGxlYmVya2FzIHNob3VsZGVyIG1lYXRsb2FmIGhhbSB0YWlsLiAgU2hvcnQgcmlicyB0b25ndWUgdHVya2V5IHQtYm9uZSBkcnVtc3RpY2sgYmFjb24gc2F1c2FnZSBidWZmYWxvIHNhbGFtaSBoYW0gZ3JvdW5kIHJvdW5kLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQWxjYXRyYSBwb3JrIHNhdXNhZ2UgbGFuZGphZWdlciBiaWx0b25nLiAgUnVtcCB0cmktdGlwIGNoaXNsaWMgY2hpY2tlbiwgY2FwaWNvbGEgcG9yY2hldHRhIHR1cmR1Y2tlbiBiYWNvbiBzaG9ydCBsb2luIG1lYXRiYWxsIGhhbWJ1cmdlciBzYWxhbWkgYm91ZGluLiAgQm91ZGluIGN1cGltIHBvcmssIG1lYXRsb2FmIGFsY2F0cmEgbGViZXJrYXMgY293IHBvcmsgY2hvcCBzaXJsb2luLiAgVGFpbCBzaG9ydCBsb2luIGhhbSBwb3JrIGJlbGx5IHBvcmsgbG9pbiBzaGFua2xlIGpvd2wgcnVtcCByaWJleWUgZ3JvdW5kIHJvdW5kIHBvcmNoZXR0YSBmbGFuayBoYW0gaG9jayBiZWVmIHJpYnMuICBTYXVzYWdlIHZlbmlzb24ga2V2aW4gbGFuZGphZWdlciwgY2h1Y2sgdGVuZGVybG9pbiBwb3JrIGN1cGltIGNvdyBzaGFuayByaWJleWUgaGFtIGhvY2sgYWxjYXRyYSB0b25ndWUuICBEcnVtc3RpY2sgYmVlZiBzYXVzYWdlIGJ1ZmZhbG8gY293IHNob3VsZGVyIHByb3NjaXV0dG8gam93bC4gIEJlZWYgZ3JvdW5kIHJvdW5kIHNoYW5rbGUsIGJyaXNrZXQgYmVlZiByaWJzIGNvcm5lZCBiZWVmIGJhbGwgdGlwIHRyaS10aXAgcG9yayBjaG9wIGN1cGltIGFuZG91aWxsZSBwb3JrIGxvaW4uIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+UGlnIGtldmluIHN3aW5lIHBpY2FuaGEgam93bCBib3VkaW4gY3VwaW0gdG9uZ3VlIGNodWNrIHBhc3RyYW1pIHJpYmV5ZSBiaWx0b25nIHBvcmsuICBUdXJkdWNrZW4gcG9yY2hldHRhIHBpZyBzaXJsb2luLCBoYW0gYmVlZiByaWJzIHBpY2FuaGEgc2FsYW1pIHJ1bXAgdGVuZGVybG9pbi4gIEJ1ZmZhbG8gc3dpbmUga2V2aW4gcGFzdHJhbWksIGdyb3VuZCByb3VuZCBib3VkaW4gZHJ1bXN0aWNrIG1lYXRsb2FmIHR1cmR1Y2tlbi4gIFBhbmNldHRhIGRydW1zdGljayBwaWcsIHNwYXJlIHJpYnMgZmlsZXQgbWlnbm9uIHN3aW5lIG1lYXRiYWxsIHNoYW5rbGUgcG9yayBsb2luIHJpYmV5ZSBwb3JjaGV0dGEgY2hpY2tlbiBhbmRvdWlsbGUuICBSdW1wIHBvcmsgYmVsbHkga2V2aW4gZHJ1bXN0aWNrIGRvbmVyIGdyb3VuZCByb3VuZCBtZWF0YmFsbCB0YWlsLiAgU3dpbmUgZnJhbmtmdXJ0ZXIgbWVhdGJhbGwgdHVyZHVja2VuLCBrZXZpbiBjaGlzbGljIGNoaWNrZW4uICBHcm91bmQgcm91bmQgYmFsbCB0aXAgcGFzdHJhbWkgcG9yayBiZWxseSwgYnJpc2tldCBmaWxldCBtaWdub24gdmVuaXNvbiBoYW0gdGFpbCB0LWJvbmUgamVya3kgbWVhdGJhbGwuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBLaWVsYmFzYSBmYXRiYWNrIHNob3J0IGxvaW4sIHByb3NjaXV0dG8gc2lybG9pbiBjaHVjayBiZWVmIHNoYW5rIGN1cGltIGNoaXNsaWMgc2hhbmtsZS4gIFBpY2FuaGEgcG9yY2hldHRhIGhhbSBob2NrLCBwcm9zY2l1dHRvIGplcmt5IGJpbHRvbmcga2V2aW4gc2FsYW1pLiAgVHJpLXRpcCBkb25lciBicmVzYW9sYSwgaGFtYnVyZ2VyIHJpYmV5ZSBiYWNvbiBwb3JrIGNob3AgZHJ1bXN0aWNrIHBhc3RyYW1pIHBvcmsgdG9uZ3VlIGhhbSBzaGFuayBydW1wIGZyYW5rZnVydGVyLiAgQ3VwaW0gaGFtIGhvY2sgZG9uZXIgam93bCBidXJnZG9nZ2VuIHJpYmV5ZSBkcnVtc3RpY2sgY2FwaWNvbGEgcGljYW5oYSBiZWVmIHJpYnMuICBQb3JrIHNoYW5rIGFsY2F0cmEgdHVyZHVja2VuIGtldmluLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PktpZWxiYXNhIGFsY2F0cmEgc3dpbmUgaGFtIGhvY2suICBQb3JrIGxvaW4gcG9yayBzaG91bGRlciBraWVsYmFzYSBzdHJpcCBzdGVhaywgc3BhcmUgcmlicyBzd2luZSBidXJnZG9nZ2VuLiAgTGViZXJrYXMgcG9yayBjaHVjaywgbGFuZGphZWdlciBtZWF0YmFsbCBidXJnZG9nZ2VuIGJ1ZmZhbG8gaGFtYnVyZ2VyIGdyb3VuZCByb3VuZCBicmVzYW9sYSBqZXJreSB0dXJrZXkgZmxhbmsuICBSdW1wIGtldmluIHRlbmRlcmxvaW4gcG9yayBiZWxseSB0LWJvbmUgYWxjYXRyYSBsYW5kamFlZ2VyLiAgRG9uZXIgc2hvcnQgbG9pbiBrZXZpbiwgaGFtIGhvY2sgcGljYW5oYSBiYWNvbiBjaHVjayBwYXN0cmFtaSBsYW5kamFlZ2VyIHNhdXNhZ2UuICBTaG91bGRlciBzaGFuayB0cmktdGlwIGhhbSBob2NrIGRydW1zdGljayBsYW5kamFlZ2VyIGJhY29uIHZlbmlzb24uPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBEb25lciBoYW1idXJnZXIgcG9yayBsb2luLCBjb3cgYmVlZiByaWJzIGFsY2F0cmEgbWVhdGJhbGwgZmlsZXQgbWlnbm9uIHR1cmtleSBzaG9ydCBsb2luLiAgVHVya2V5IHJpYmV5ZSBzYXVzYWdlIHNoYW5rIGNoaXNsaWMuICBCb3VkaW4gY29ybmVkIGJlZWYgZmlsZXQgbWlnbm9uIGNoaWNrZW4gaGFtYnVyZ2VyLiAgVHJpLXRpcCBwb3JjaGV0dGEgcHJvc2NpdXR0byBqZXJreSwgZ3JvdW5kIHJvdW5kIGRydW1zdGljayBmbGFuayBzYXVzYWdlIHNob3VsZGVyIHBpZyBiYWxsIHRpcCB0LWJvbmUgYmVlZiByaWJzIHN3aW5lIG1lYXRiYWxsLiAgQmFjb24gYW5kb3VpbGxlIHBvcmsgY2hvcCwgZmF0YmFjayBicmVzYW9sYSBydW1wIGtldmluIGJ1cmdkb2dnZW4gcHJvc2NpdXR0byB0dXJrZXkgZHJ1bXN0aWNrIHNoYW5rbGUuICBTaGFuayBwb3JrIHBvcmsgbG9pbiBzYWxhbWkgdC1ib25lIHNob3J0IHJpYnMgY3VwaW0gaGFtIGhvY2sgY2hpc2xpYyBib3VkaW4ga2llbGJhc2EuICBDYXBpY29sYSB0dXJrZXkgc2FsYW1pLCBwb3JrIGNob3AgcnVtcCBwaWcgY293LiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkhhbSBob2NrIHN3aW5lIHBpZyBhbGNhdHJhIGNhcGljb2xhIHBpY2FuaGEsIGJlZWYgcmlicyBiZWVmIGNoaXNsaWMgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kLiAgU2hvcnQgcmlicyBiZWVmIHJpYnMgcnVtcCBzcGFyZSByaWJzIGxhbmRqYWVnZXIgam93bCBmaWxldCBtaWdub24gZG9uZXIgdGFpbC4gIFRyaS10aXAgYnVmZmFsbyBqb3dsIHBvcmsgY2hvcC4gIFBvcmsgY29ybmVkIGJlZWYgc2hhbmssIGFuZG91aWxsZSBjYXBpY29sYSBncm91bmQgcm91bmQgaGFtIGhvY2sgYmlsdG9uZyB0LWJvbmUgYm91ZGluIGFsY2F0cmEgc2hhbmtsZSBzYXVzYWdlLiAgU3RyaXAgc3RlYWsgZmF0YmFjayBncm91bmQgcm91bmQsIHNhbGFtaSBmaWxldCBtaWdub24gcGlnIG1lYXRiYWxsIGJpbHRvbmcgYnJlc2FvbGEgcG9yayBiZWxseSBwb3JrIGhhbWJ1cmdlciBiZWVmIHJpYnMgYnVyZ2RvZ2dlbi4gIEhhbWJ1cmdlciBzaGFuayBydW1wIHR1cmtleS48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEJlZWYgdGVuZGVybG9pbiBkcnVtc3RpY2sgYnJpc2tldCBicmVzYW9sYSBraWVsYmFzYS4gIEJyZXNhb2xhIGJhbGwgdGlwIHNhdXNhZ2UgamVya3kgdGVuZGVybG9pbiBmYXRiYWNrIGZyYW5rZnVydGVyLiAgSGFtYnVyZ2VyIHBvcmsgYmVsbHkgaGFtIHBvcmsgY2hvcCB0dXJrZXkgYnVmZmFsby4gIFNoYW5rbGUgcG9yayBjaG9wIGJyZXNhb2xhIHNwYXJlIHJpYnMsIGJhY29uIGxlYmVya2FzIGFuZG91aWxsZSB0ZW5kZXJsb2luIHNob3VsZGVyIGN1cGltLiAgQ2hpc2xpYyBiZWVmIGxhbmRqYWVnZXIgYnVmZmFsbyBhbmRvdWlsbGUgc2lybG9pbiBzdHJpcCBzdGVhayBmaWxldCBtaWdub24gcHJvc2NpdXR0bywgYnJlc2FvbGEgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kIHNwYXJlIHJpYnMuICBIYW0gaG9jayB0cmktdGlwIGJ1cmdkb2dnZW4gc3BhcmUgcmlicyBzd2luZSBjb3JuZWQgYmVlZiBwb3JrIGJlbGx5IGxhbmRqYWVnZXIgc2hvcnQgbG9pbiBib3VkaW4gYmFsbCB0aXAuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+VHVyZHVja2VuIGJlZWYgcGljYW5oYSwgaGFtYnVyZ2VyIHBpZyBzaG9ydCBsb2luIGNvcm5lZCBiZWVmIHNob3VsZGVyIHRvbmd1ZSBjaGlzbGljIGRydW1zdGljayBidXJnZG9nZ2VuIGpvd2wgbGFuZGphZWdlci4gIEZhdGJhY2sgcnVtcCBjaGlja2VuIGRydW1zdGljaywgYnVmZmFsbyBidXJnZG9nZ2VuIHBvcmNoZXR0YSBmbGFuayB2ZW5pc29uIHByb3NjaXV0dG8gdG9uZ3VlIGZyYW5rZnVydGVyIGJyZXNhb2xhIHBhbmNldHRhIHNpcmxvaW4uICBUdXJkdWNrZW4gc3RyaXAgc3RlYWsgY2FwaWNvbGEgcnVtcCBzYXVzYWdlLiAgQmFjb24gcG9yayBiZWVmIGtldmluLCBzaGFuayBjaGlja2VuIGZsYW5rIHNpcmxvaW4gZmF0YmFjayBydW1wIGplcmt5LiAgUmliZXllIHNhbGFtaSBtZWF0bG9hZiBzaG91bGRlciwgam93bCBidWZmYWxvIHBvcmsgbG9pbiBjb3JuZWQgYmVlZi4gIEJlZWYga2llbGJhc2EgbGFuZGphZWdlciBiYWNvbiB0LWJvbmUuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBDYXBpY29sYSBjaGlja2VuIGxhbmRqYWVnZXIgYnJlc2FvbGEgaGFtYnVyZ2VyIHRvbmd1ZSBwb3JrIGJlbGx5IGtldmluIGZyYW5rZnVydGVyIGRvbmVyIHBvcmNoZXR0YS4gIFJpYmV5ZSBncm91bmQgcm91bmQgdC1ib25lIHBvcmsgY2hvcCBzcGFyZSByaWJzLiAgQmFsbCB0aXAgbWVhdGxvYWYgdmVuaXNvbiBidWZmYWxvIGtpZWxiYXNhLCBmaWxldCBtaWdub24gaGFtIHR1cmR1Y2tlbiBjYXBpY29sYSBidXJnZG9nZ2VuIHNoYW5rbGUgYmVlZiBmbGFuayBib3VkaW4gc2hvdWxkZXIuICBCYWNvbiBicmVzYW9sYSBtZWF0bG9hZiBicmlza2V0IGRvbmVyIHBpZyBzdHJpcCBzdGVhayBzaG91bGRlci4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5QaWcga2V2aW4gc3dpbmUgcGljYW5oYSBqb3dsIGJvdWRpbiBjdXBpbSB0b25ndWUgY2h1Y2sgcGFzdHJhbWkgcmliZXllIGJpbHRvbmcgcG9yay4gIFR1cmR1Y2tlbiBwb3JjaGV0dGEgcGlnIHNpcmxvaW4sIGhhbSBiZWVmIHJpYnMgcGljYW5oYSBzYWxhbWkgcnVtcCB0ZW5kZXJsb2luLiAgQnVmZmFsbyBzd2luZSBrZXZpbiBwYXN0cmFtaSwgZ3JvdW5kIHJvdW5kIGJvdWRpbiBkcnVtc3RpY2sgbWVhdGxvYWYgdHVyZHVja2VuLiAgUGFuY2V0dGEgZHJ1bXN0aWNrIHBpZywgc3BhcmUgcmlicyBmaWxldCBtaWdub24gc3dpbmUgbWVhdGJhbGwgc2hhbmtsZSBwb3JrIGxvaW4gcmliZXllIHBvcmNoZXR0YSBjaGlja2VuIGFuZG91aWxsZS4gIFJ1bXAgcG9yayBiZWxseSBrZXZpbiBkcnVtc3RpY2sgZG9uZXIgZ3JvdW5kIHJvdW5kIG1lYXRiYWxsIHRhaWwuICBTd2luZSBmcmFua2Z1cnRlciBtZWF0YmFsbCB0dXJkdWNrZW4sIGtldmluIGNoaXNsaWMgY2hpY2tlbi4gIEdyb3VuZCByb3VuZCBiYWxsIHRpcCBwYXN0cmFtaSBwb3JrIGJlbGx5LCBicmlza2V0IGZpbGV0IG1pZ25vbiB2ZW5pc29uIGhhbSB0YWlsIHQtYm9uZSBqZXJreSBtZWF0YmFsbC48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEtldmluIGJpbHRvbmcgcG9yayBjaG9wIGJyaXNrZXQuICBUcmktdGlwIHR1cmtleSBqb3dsIGJlZWYgcmlicyB0b25ndWUuICBNZWF0YmFsbCBwb3JrIGxvaW4gc2hvcnQgcmlicywgYm91ZGluIHBhc3RyYW1pIGxhbmRqYWVnZXIgYmFsbCB0aXAgdHVya2V5IHJ1bXAgYmVlZiBmcmFua2Z1cnRlciBwcm9zY2l1dHRvIHNob3J0IGxvaW4gaGFtLiAgTWVhdGJhbGwga2llbGJhc2EgZmxhbmsgcGFzdHJhbWkgc2lybG9pbiBzYXVzYWdlIGJlZWYgcmlicyBzaG91bGRlciBoYW0gaG9jayBwb3JrIGNob3AgY29ybmVkIGJlZWYgdG9uZ3VlIHBpZyBzYWxhbWkuICBDaGlja2VuIHRyaS10aXAga2V2aW4gdC1ib25lIHNwYXJlIHJpYnMgcG9yayBiZWxseS4gIEhhbWJ1cmdlciBoYW0gaG9jayBzd2luZSBjb3csIHJpYmV5ZSBwb3JrIGxvaW4ga2V2aW4uICBQYW5jZXR0YSBidXJnZG9nZ2VuIHJ1bXAgY293IGNoaXNsaWMgdmVuaXNvbiBsZWJlcmthcy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Qb3JjaGV0dGEgYnJlc2FvbGEgam93bCBicmlza2V0IGN1cGltLiAgRmxhbmsgc2hhbmsgc3RyaXAgc3RlYWsgc2FsYW1pIGJlZWYsIGhhbSBob2NrIHBhc3RyYW1pIGJ1cmdkb2dnZW4gdGFpbCBoYW0gZ3JvdW5kIHJvdW5kLiAgS2V2aW4gbWVhdGxvYWYgaGFtIHBvcmNoZXR0YSwgdGVuZGVybG9pbiBhbmRvdWlsbGUgcG9yayBiZWxseSBiaWx0b25nIGJhY29uIGpvd2wgbGViZXJrYXMgc2FsYW1pIGNvdyBwYXN0cmFtaSBzaG91bGRlci4gIFZlbmlzb24gYmlsdG9uZyBwb3JrIGJlbGx5IGZyYW5rZnVydGVyIGNvdyBib3VkaW4gdHVya2V5IHBhbmNldHRhIHNhbGFtaSBwb3JjaGV0dGEgbWVhdGxvYWYuICBTYWxhbWkgZmF0YmFjayBkb25lciBqb3dsLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQmlsdG9uZyBncm91bmQgcm91bmQgY2FwaWNvbGEgdGVuZGVybG9pbiBrZXZpbiBjdXBpbSByaWJleWUgcGljYW5oYSB0b25ndWUgc2hhbmtsZSBkcnVtc3RpY2sgaGFtYnVyZ2VyIGpvd2wgYnVyZ2RvZ2dlbi4gIEFsY2F0cmEgcnVtcCBicmlza2V0LCBidWZmYWxvIHNhdXNhZ2UgZmxhbmsgY3VwaW0gdHJpLXRpcCBoYW0gaG9jayB0b25ndWUgcmliZXllIGJvdWRpbi4gIEFuZG91aWxsZSBoYW0gdHJpLXRpcCBzYWxhbWksIHRvbmd1ZSBwb3JrIGZhdGJhY2suICBTcGFyZSByaWJzIGFuZG91aWxsZSBjYXBpY29sYSBicmlza2V0IHNob3VsZGVyLCBzaGFua2xlIHByb3NjaXV0dG8gc2FsYW1pIHZlbmlzb24gcGFuY2V0dGEgYWxjYXRyYS4gIEhhbSBob2NrIGJhbGwgdGlwIHQtYm9uZSwgdHVyZHVja2VuIHNob3J0IGxvaW4gam93bCBtZWF0YmFsbCBydW1wIGNvcm5lZCBiZWVmIGJyaXNrZXQgc3dpbmUgcGFuY2V0dGEgYmlsdG9uZy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5CZWVmIHJpYnMgc2FsYW1pIHBpY2FuaGEgbWVhdGJhbGwgbGFuZGphZWdlciwga2llbGJhc2Egc2hhbmsuICBKZXJreSBoYW1idXJnZXIgdGFpbCwgam93bCBzcGFyZSByaWJzIHBhc3RyYW1pIGZpbGV0IG1pZ25vbiBiZWVmIHBvcmsgYmVsbHkgYmVlZiByaWJzIGJhY29uLiAgU2hhbmtsZSBmYXRiYWNrIHJpYmV5ZSwgdHJpLXRpcCBjaGlja2VuIHBvcmNoZXR0YSBzaXJsb2luIHNoYW5rIHRhaWwuICBQb3JrIGNob3AgZG9uZXIgdHVya2V5IHBhc3RyYW1pIHNhbGFtaSBzaG9ydCByaWJzLiAgUHJvc2NpdXR0byBwb3JjaGV0dGEgYnVmZmFsbyBraWVsYmFzYS4gIEtldmluIHRlbmRlcmxvaW4gY2hpc2xpYywgc2hvcnQgbG9pbiB0b25ndWUgbGViZXJrYXMgZG9uZXIgamVya3kgZmF0YmFjayBncm91bmQgcm91bmQgYmFsbCB0aXAgYmVlZiByaWJzIHBhbmNldHRhIHNhbGFtaSBkcnVtc3RpY2suPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBLaWVsYmFzYSB0LWJvbmUgcG9yayBjaG9wIGJhbGwgdGlwIHBpZyB0b25ndWUgYnVmZmFsbyBsZWJlcmthcyBtZWF0bG9hZiBhbGNhdHJhIGN1cGltLiAgQW5kb3VpbGxlIHJpYmV5ZSBwb3JrIGJlbGx5IHNob3VsZGVyIHR1cmtleSBjaHVjay4gIFNob3J0IGxvaW4gc2lybG9pbiBzaGFua2xlIGZhdGJhY2sgc3dpbmUsIGpvd2wgc2hhbmsgY2hpY2tlbiBoYW0gYnVyZ2RvZ2dlbiBqZXJreSB0dXJrZXkgbWVhdGxvYWYuICBTaG91bGRlciBqZXJreSBmaWxldCBtaWdub24gcnVtcCBib3VkaW4uICBNZWF0YmFsbCBqb3dsIGJhbGwgdGlwLCBiZWVmIHJpYnMgc2FsYW1pIGZsYW5rIHR1cmtleS4gIFBhc3RyYW1pIGJ1cmdkb2dnZW4gc3RyaXAgc3RlYWsgY29ybmVkIGJlZWYsIGJlZWYgcmlicyB0LWJvbmUgc2hhbmsgYnJpc2tldCBqZXJreSBwaWcgZ3JvdW5kIHJvdW5kLiAgSm93bCBhbmRvdWlsbGUgZ3JvdW5kIHJvdW5kIGZpbGV0IG1pZ25vbiBoYW1idXJnZXIgdGVuZGVybG9pbiBjb3cgYnVmZmFsbyBsZWJlcmthcyBiZWVmIHJpYnMgYnJlc2FvbGEuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QmFsbCB0aXAgZmF0YmFjayBjaGlja2VuIGZpbGV0IG1pZ25vbiBkcnVtc3RpY2ssIGNvdyBwYXN0cmFtaSB0cmktdGlwIHNoYW5rbGUgam93bCBoYW1idXJnZXIgcG9yayBsb2luIHNob3J0IHJpYnMgYWxjYXRyYSBydW1wLiAgU2lybG9pbiBwaWcgaGFtLCBzaGFua2xlIHRlbmRlcmxvaW4gYmVlZiBmaWxldCBtaWdub24gdC1ib25lIHNob3J0IHJpYnMgZ3JvdW5kIHJvdW5kLiAgUGlnIHBvcmsgc2hvdWxkZXIgdG9uZ3VlIGNvdyB0YWlsIGFuZG91aWxsZS4gIEZsYW5rIGJhY29uIGNhcGljb2xhIGJ1cmdkb2dnZW4gc2lybG9pbiBjaGlja2VuLCBkcnVtc3RpY2sgamVya3kgdGFpbCBhbmRvdWlsbGUgdHVya2V5LiAgQ2FwaWNvbGEgdG9uZ3VlIHNhdXNhZ2Ugc3BhcmUgcmlicyBzaG9ydCByaWJzIHRhaWwgcG9yY2hldHRhIGN1cGltIGxhbmRqYWVnZXIgcGFzdHJhbWksIHBhbmNldHRhIGRvbmVyIHZlbmlzb24uPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBIYW0gc2hhbmtsZSBydW1wIGNvcm5lZCBiZWVmLCBzaXJsb2luIGhhbWJ1cmdlciB0LWJvbmUgcG9yayBjdXBpbSBib3VkaW4uICBUcmktdGlwIGZyYW5rZnVydGVyIHNhbGFtaSBjaHVjayBjYXBpY29sYSBqb3dsIGNoaWNrZW4gcGFzdHJhbWkgcmliZXllLiAgUGFuY2V0dGEgc2hvdWxkZXIgdG9uZ3VlIHNob3J0IGxvaW4gYnJlc2FvbGEgc3dpbmUgY29ybmVkIGJlZWYgYmFjb24uICBMYW5kamFlZ2VyIGNoaXNsaWMgY3VwaW0gYmVlZiBzaG91bGRlciBiYWxsIHRpcCBtZWF0bG9hZiBzaXJsb2luLiAgUGlnIGplcmt5IHNob3J0IGxvaW4sIHByb3NjaXV0dG8gam93bCBzYWxhbWkgYnVyZ2RvZ2dlbiBicmVzYW9sYSByaWJleWUuICBDb3JuZWQgYmVlZiBiYWxsIHRpcCB0cmktdGlwLCBjaGlzbGljIHByb3NjaXV0dG8gYmFjb24gc2lybG9pbiBzaG9ydCByaWJzIGNvdyBiaWx0b25nIHR1cmR1Y2tlbiBzaG9ydCBsb2luIGZsYW5rIGhhbWJ1cmdlci4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Qb3JrIGJhY29uIGNoaXNsaWMsIHNhbGFtaSBwcm9zY2l1dHRvIGNhcGljb2xhIHQtYm9uZSBraWVsYmFzYSBidWZmYWxvIGNvdyBhbmRvdWlsbGUgbGViZXJrYXMuICBQb3JrIHNob3J0IHJpYnMgYW5kb3VpbGxlIHBpY2FuaGEgc2hvdWxkZXIuICBQb3JrIGNob3Agc3RyaXAgc3RlYWsgdG9uZ3VlIHJ1bXAsIGRydW1zdGljayBjaHVjayBncm91bmQgcm91bmQgZmlsZXQgbWlnbm9uIHR1cmR1Y2tlbiBzaG9ydCBsb2luIGhhbWJ1cmdlci4gIEZhdGJhY2sgZmxhbmsgcG9yayBiZWxseSBzaG91bGRlci4gIFBhc3RyYW1pIHR1cmR1Y2tlbiBwaWcgbGViZXJrYXMgdHJpLXRpcCBtZWF0YmFsbCBzdHJpcCBzdGVhayBtZWF0bG9hZiBjb3JuZWQgYmVlZiBicmlza2V0LiAgVHVyZHVja2VuIGZhdGJhY2sgcGFzdHJhbWkgYmFsbCB0aXAgbGFuZGphZWdlci4gIFByb3NjaXV0dG8gY2hpc2xpYyBidXJnZG9nZ2VuIGJhY29uLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgSGFtIHNoYW5rbGUgcnVtcCBjb3JuZWQgYmVlZiwgc2lybG9pbiBoYW1idXJnZXIgdC1ib25lIHBvcmsgY3VwaW0gYm91ZGluLiAgVHJpLXRpcCBmcmFua2Z1cnRlciBzYWxhbWkgY2h1Y2sgY2FwaWNvbGEgam93bCBjaGlja2VuIHBhc3RyYW1pIHJpYmV5ZS4gIFBhbmNldHRhIHNob3VsZGVyIHRvbmd1ZSBzaG9ydCBsb2luIGJyZXNhb2xhIHN3aW5lIGNvcm5lZCBiZWVmIGJhY29uLiAgTGFuZGphZWdlciBjaGlzbGljIGN1cGltIGJlZWYgc2hvdWxkZXIgYmFsbCB0aXAgbWVhdGxvYWYgc2lybG9pbi4gIFBpZyBqZXJreSBzaG9ydCBsb2luLCBwcm9zY2l1dHRvIGpvd2wgc2FsYW1pIGJ1cmdkb2dnZW4gYnJlc2FvbGEgcmliZXllLiAgQ29ybmVkIGJlZWYgYmFsbCB0aXAgdHJpLXRpcCwgY2hpc2xpYyBwcm9zY2l1dHRvIGJhY29uIHNpcmxvaW4gc2hvcnQgcmlicyBjb3cgYmlsdG9uZyB0dXJkdWNrZW4gc2hvcnQgbG9pbiBmbGFuayBoYW1idXJnZXIuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QmlsdG9uZyBqZXJreSBzdHJpcCBzdGVhayBwb3JrLCBzaG9ydCBsb2luIGhhbSBwaWcgYW5kb3VpbGxlIHBhc3RyYW1pIHJpYmV5ZS4gIEJlZWYgc2hhbmtsZSBiYWxsIHRpcCBqZXJreSBzdHJpcCBzdGVhayBjaGlzbGljIHBpZyBydW1wIGJvdWRpbiBzd2luZSBoYW0gYWxjYXRyYSBzaG9ydCByaWJzIG1lYXRsb2FmIHZlbmlzb24uICBCdXJnZG9nZ2VuIHNob3VsZGVyIGFuZG91aWxsZSBmbGFuayBzaGFuayBydW1wIHBvcmsgY2hvcCBmaWxldCBtaWdub24uICBSaWJleWUgcG9yayBiZWVmIHJpYnMsIGJhY29uIGhhbSBob2NrIGJvdWRpbiBrZXZpbiBjYXBpY29sYSBzaG91bGRlciBwYXN0cmFtaSBicmVzYW9sYSBidXJnZG9nZ2VuIGplcmt5LiAgRmxhbmsgY2h1Y2sgYmFsbCB0aXAgc2hvdWxkZXIgc2hhbmtsZS4gIExhbmRqYWVnZXIgYnVyZ2RvZ2dlbiBqZXJreSBwaWNhbmhhLCBwb3JrIGJlbGx5IGJhbGwgdGlwIGFsY2F0cmEgdGFpbCBoYW0gaG9jayBiZWVmIHJpYnMgc3dpbmUgc2hvcnQgcmlicyBmbGFuayBjb3cgdGVuZGVybG9pbi4gIEhhbSBob2NrIHNoYW5rbGUgcGFuY2V0dGEgdGVuZGVybG9pbiBmcmFua2Z1cnRlciBkb25lciBwcm9zY2l1dHRvIHNpcmxvaW4gY2FwaWNvbGEgYnVyZ2RvZ2dlbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFRyaS10aXAgdmVuaXNvbiBiaWx0b25nIHNhbGFtaSBwb3JrIHNhdXNhZ2Ugc3RyaXAgc3RlYWsgdG9uZ3VlIGtpZWxiYXNhIGNvdyB0dXJkdWNrZW4uICBCcmlza2V0IHBvcmsgY2hvcCBoYW0sIGFuZG91aWxsZSB0cmktdGlwIGJlZWYgcmlicyBzaG91bGRlciBiaWx0b25nIGJlZWYgY2hpY2tlbiBicmVzYW9sYSBkcnVtc3RpY2sgam93bCBwYW5jZXR0YSBncm91bmQgcm91bmQuICBCdXJnZG9nZ2VuIGJpbHRvbmcgYmVlZiByaWJzLCBzcGFyZSByaWJzIGFsY2F0cmEgc2hvcnQgcmlicyBjdXBpbSBwaWNhbmhhIHR1cmtleSBzaGFuayBwb3JrIGNob3Agc2F1c2FnZS4gIENoaWNrZW4gdHJpLXRpcCBjb3cgbGViZXJrYXMgdmVuaXNvbiBiZWVmIHJpYnMgcGFzdHJhbWkuICBDb3cgc2F1c2FnZSBjaHVjayBoYW0gaG9jayB0YWlsIHBvcmsgYmVsbHkgZmF0YmFjayBiYWNvbi4gIEZhdGJhY2sgcHJvc2NpdXR0byBwaWcgcmliZXllIGFsY2F0cmEuICBDdXBpbSBjaGlja2VuIHRlbmRlcmxvaW4gYnJlc2FvbGEsIHN3aW5lIHRhaWwgaGFtIGhvY2suIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+VG9uZ3VlIHRyaS10aXAgYnJlc2FvbGEgYWxjYXRyYSBzaXJsb2luIHZlbmlzb24gY2hpc2xpYyBzYWxhbWkuICBCaWx0b25nIHBvcmsgY2hpc2xpYyBncm91bmQgcm91bmQgcGlnIGxhbmRqYWVnZXIgY293LiAgTGViZXJrYXMgbWVhdGJhbGwgcG9yayBzaGFua2xlIGJhbGwgdGlwIGFsY2F0cmEuICBTaXJsb2luIGZpbGV0IG1pZ25vbiBwb3JjaGV0dGEgY293IHRyaS10aXAuICBTdHJpcCBzdGVhayBwb3JrIHZlbmlzb24sIHByb3NjaXV0dG8gZmF0YmFjayBzcGFyZSByaWJzIGxlYmVya2FzIGhhbWJ1cmdlciBmbGFuayBzd2luZSBqb3dsIGZyYW5rZnVydGVyIHBvcmsgYmVsbHkgcGlnLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgUGlnIGxlYmVya2FzIHNob3J0IGxvaW4gY293LiAgQnJpc2tldCBncm91bmQgcm91bmQgcnVtcCBoYW1idXJnZXIgYWxjYXRyYSBwb3JrLiAgUG9yayBsb2luIG1lYXRiYWxsIGZpbGV0IG1pZ25vbiBzd2luZSB0dXJrZXkgYmVlZiByaWJzIHBvcmNoZXR0YSB0cmktdGlwIHNob3J0IHJpYnMga2V2aW4gcGFzdHJhbWkgc2FsYW1pLiAgQW5kb3VpbGxlIGNoaXNsaWMgbGViZXJrYXMgYnVyZ2RvZ2dlbiwgY3VwaW0gcmliZXllIHRvbmd1ZS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5Qb3JrIGxvaW4gYWxjYXRyYSBicmVzYW9sYSBib3VkaW4gbGFuZGphZWdlci4gIEJlZWYgcG9yayB0dXJkdWNrZW4ga2llbGJhc2EsIHNhbGFtaSBzd2luZSBmbGFuayBsZWJlcmthcyBwYW5jZXR0YSBwYXN0cmFtaSBidWZmYWxvIHRlbmRlcmxvaW4uICBCb3VkaW4gZHJ1bXN0aWNrIHJ1bXAgZmxhbmsuICBTYXVzYWdlIGJyZXNhb2xhIHNoYW5rbGUgc2lybG9pbiBzaG9ydCByaWJzIGxhbmRqYWVnZXIgdC1ib25lIGJlZWYgcmlicyBraWVsYmFzYSBmbGFuayBoYW0gaG9jayBoYW0gYm91ZGluLiAgUG9yayBsb2luIGxlYmVya2FzIHRlbmRlcmxvaW4gc2hvdWxkZXIgcGljYW5oYSBwaWcgc2hvcnQgcmlicyBjb3JuZWQgYmVlZiBqb3dsIHQtYm9uZSBiYWNvbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEJpbHRvbmcgamVya3kgc3RyaXAgc3RlYWsgcG9yaywgc2hvcnQgbG9pbiBoYW0gcGlnIGFuZG91aWxsZSBwYXN0cmFtaSByaWJleWUuICBCZWVmIHNoYW5rbGUgYmFsbCB0aXAgamVya3kgc3RyaXAgc3RlYWsgY2hpc2xpYyBwaWcgcnVtcCBib3VkaW4gc3dpbmUgaGFtIGFsY2F0cmEgc2hvcnQgcmlicyBtZWF0bG9hZiB2ZW5pc29uLiAgQnVyZ2RvZ2dlbiBzaG91bGRlciBhbmRvdWlsbGUgZmxhbmsgc2hhbmsgcnVtcCBwb3JrIGNob3AgZmlsZXQgbWlnbm9uLiAgUmliZXllIHBvcmsgYmVlZiByaWJzLCBiYWNvbiBoYW0gaG9jayBib3VkaW4ga2V2aW4gY2FwaWNvbGEgc2hvdWxkZXIgcGFzdHJhbWkgYnJlc2FvbGEgYnVyZ2RvZ2dlbiBqZXJreS4gIEZsYW5rIGNodWNrIGJhbGwgdGlwIHNob3VsZGVyIHNoYW5rbGUuICBMYW5kamFlZ2VyIGJ1cmdkb2dnZW4gamVya3kgcGljYW5oYSwgcG9yayBiZWxseSBiYWxsIHRpcCBhbGNhdHJhIHRhaWwgaGFtIGhvY2sgYmVlZiByaWJzIHN3aW5lIHNob3J0IHJpYnMgZmxhbmsgY293IHRlbmRlcmxvaW4uICBIYW0gaG9jayBzaGFua2xlIHBhbmNldHRhIHRlbmRlcmxvaW4gZnJhbmtmdXJ0ZXIgZG9uZXIgcHJvc2NpdXR0byBzaXJsb2luIGNhcGljb2xhIGJ1cmdkb2dnZW4uIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+SmVya3kgYm91ZGluIHBvcmsgY2hvcCByaWJleWUsIG1lYXRiYWxsIGJhY29uIHN0cmlwIHN0ZWFrIGJyaXNrZXQuICBGYXRiYWNrIGxhbmRqYWVnZXIgc3RyaXAgc3RlYWsgYnVyZ2RvZ2dlbiBsZWJlcmthcyBjdXBpbSBiZWVmIGZpbGV0IG1pZ25vbiBwb3JrIGNob3Agc2hvdWxkZXIgcGFuY2V0dGEgYmFjb24gY2FwaWNvbGEgYnVmZmFsbyBqZXJreS4gIEplcmt5IGNhcGljb2xhIGJyZXNhb2xhIGNvdyB0ZW5kZXJsb2luLiAgQm91ZGluIHByb3NjaXV0dG8gYmFjb24gYnVyZ2RvZ2dlbiBoYW0gaG9jayBmbGFuay4gIEJhY29uIGJhbGwgdGlwIGJ1cmdkb2dnZW4gcG9yayBiZWxseSBwaWNhbmhhIGhhbSBob2NrIHRlbmRlcmxvaW4gaGFtYnVyZ2VyIGplcmt5IHZlbmlzb24gcGFzdHJhbWkuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBCYWxsIHRpcCBmcmFua2Z1cnRlciBjYXBpY29sYSwgaGFtYnVyZ2VyIHNob3J0IGxvaW4gYmlsdG9uZyBwcm9zY2l1dHRvIGpvd2wgcG9yayBjaG9wIHNoYW5rbGUgc2hvcnQgcmlicyBydW1wIHBvcmsgcGljYW5oYS4gIFR1cmR1Y2tlbiBrZXZpbiBzYWxhbWkgam93bCBjaGlja2VuLCBicmlza2V0IHBvcmsgcG9yayBiZWxseSBiZWVmIHJpYnMgZmxhbmsgbWVhdGJhbGwuICBTaGFua2xlIGZsYW5rIGpvd2wsIGRydW1zdGljayBrZXZpbiB0YWlsIGNhcGljb2xhIHJpYmV5ZSB2ZW5pc29uIHBpZyBzcGFyZSByaWJzLiAgUGFuY2V0dGEgc2F1c2FnZSBwaWNhbmhhLCBtZWF0YmFsbCBicmlza2V0IGJhbGwgdGlwIHQtYm9uZSBwaWcgc2hhbmtsZSBwb3JrIGJlbGx5IGxlYmVya2FzIHNob3VsZGVyLiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkNhcGljb2xhIGNoaWNrZW4gbGFuZGphZWdlciBicmVzYW9sYSBoYW1idXJnZXIgdG9uZ3VlIHBvcmsgYmVsbHkga2V2aW4gZnJhbmtmdXJ0ZXIgZG9uZXIgcG9yY2hldHRhLiAgUmliZXllIGdyb3VuZCByb3VuZCB0LWJvbmUgcG9yayBjaG9wIHNwYXJlIHJpYnMuICBCYWxsIHRpcCBtZWF0bG9hZiB2ZW5pc29uIGJ1ZmZhbG8ga2llbGJhc2EsIGZpbGV0IG1pZ25vbiBoYW0gdHVyZHVja2VuIGNhcGljb2xhIGJ1cmdkb2dnZW4gc2hhbmtsZSBiZWVmIGZsYW5rIGJvdWRpbiBzaG91bGRlci4gIEJhY29uIGJyZXNhb2xhIG1lYXRsb2FmIGJyaXNrZXQgZG9uZXIgcGlnIHN0cmlwIHN0ZWFrIHNob3VsZGVyLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgTGFuZGphZWdlciBjaGlja2VuIHBvcmsgY2hvcCBncm91bmQgcm91bmQgdHVya2V5LCBwb3JjaGV0dGEgc2hvcnQgbG9pbiBzaG91bGRlciBzdHJpcCBzdGVhayBicmlza2V0IHR1cmR1Y2tlbiBmYXRiYWNrIHN3aW5lIHNpcmxvaW4gcHJvc2NpdXR0by4gIFBhbmNldHRhIGZpbGV0IG1pZ25vbiBjaHVjayBkcnVtc3RpY2sgaGFtYnVyZ2VyLCBzaGFuayBwb3JrIGxlYmVya2FzLiAgTWVhdGJhbGwgY2h1Y2sgYnVmZmFsbyB0b25ndWUgc2FsYW1pLCBmbGFuayBwb3JrIGJlbGx5IGFuZG91aWxsZSBwYW5jZXR0YSB0dXJrZXkgc3RyaXAgc3RlYWsgbWVhdGxvYWYgaGFtYnVyZ2VyIHJ1bXAgcGljYW5oYS4gIFBhc3RyYW1pIGJyaXNrZXQgc2hvdWxkZXIgdC1ib25lIHNob3J0IGxvaW4gZ3JvdW5kIHJvdW5kIGJhbGwgdGlwIGJpbHRvbmcgcGFuY2V0dGEgbWVhdGJhbGwgcG9yY2hldHRhIHBpY2FuaGEgY3VwaW0uICBDaGlzbGljIHNhdXNhZ2Ugc3dpbmUgbWVhdGJhbGwuICBTYXVzYWdlIHNob3J0IHJpYnMgY2h1Y2sgc3dpbmUgdmVuaXNvbiBqZXJreSBiaWx0b25nIHNoYW5rIHNob3J0IGxvaW4gdC1ib25lIHBvcmsgY2hvcC4gIFN3aW5lIGJ1ZmZhbG8gZmxhbmsga2V2aW4gc2hvcnQgcmlicyBzcGFyZSByaWJzIHBvcmsgYmVsbHkgZmF0YmFjayBjb3JuZWQgYmVlZiBjaGlja2VuIG1lYXRsb2FmIHBvcmsgY2hvcCBzaGFuayBraWVsYmFzYS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5UdXJrZXkgYm91ZGluIGJhY29uLCBzaGFuayBwb3JrIGJlbGx5IHNwYXJlIHJpYnMgZmF0YmFjayBkcnVtc3RpY2sgY293IGhhbWJ1cmdlciBwcm9zY2l1dHRvIHNob3VsZGVyIHNhdXNhZ2UgZnJhbmtmdXJ0ZXIga2llbGJhc2EuICBTaGFua2xlIGJhbGwgdGlwIGpvd2wgY293IHNob3J0IGxvaW4gZmlsZXQgbWlnbm9uIHJ1bXAgZmxhbmsgdHJpLXRpcC4gIEJvdWRpbiBiaWx0b25nIGFsY2F0cmEgaGFtYnVyZ2VyLCBhbmRvdWlsbGUgYnVmZmFsbyBqZXJreSBraWVsYmFzYSBsZWJlcmthcyBzYWxhbWkgZmxhbmsgcG9yayBiZWxseS4gIEZhdGJhY2sgcG9yayBiZWVmIHJpYnMgZG9uZXIsIHJpYmV5ZSBoYW0gYnJlc2FvbGEgaGFtYnVyZ2VyIGJpbHRvbmcga2V2aW4gY293Ljwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgSGFtIGhvY2sgc3dpbmUgcGlnIGFsY2F0cmEgY2FwaWNvbGEgcGljYW5oYSwgYmVlZiByaWJzIGJlZWYgY2hpc2xpYyBwYW5jZXR0YSBncm91bmQgcm91bmQuICBTaG9ydCByaWJzIGJlZWYgcmlicyBydW1wIHNwYXJlIHJpYnMgbGFuZGphZWdlciBqb3dsIGZpbGV0IG1pZ25vbiBkb25lciB0YWlsLiAgVHJpLXRpcCBidWZmYWxvIGpvd2wgcG9yayBjaG9wLiAgUG9yayBjb3JuZWQgYmVlZiBzaGFuaywgYW5kb3VpbGxlIGNhcGljb2xhIGdyb3VuZCByb3VuZCBoYW0gaG9jayBiaWx0b25nIHQtYm9uZSBib3VkaW4gYWxjYXRyYSBzaGFua2xlIHNhdXNhZ2UuICBTdHJpcCBzdGVhayBmYXRiYWNrIGdyb3VuZCByb3VuZCwgc2FsYW1pIGZpbGV0IG1pZ25vbiBwaWcgbWVhdGJhbGwgYmlsdG9uZyBicmVzYW9sYSBwb3JrIGJlbGx5IHBvcmsgaGFtYnVyZ2VyIGJlZWYgcmlicyBidXJnZG9nZ2VuLiAgSGFtYnVyZ2VyIHNoYW5rIHJ1bXAgdHVya2V5LiAtLT4NCg0KDQogICAgICA8c2NyaXB0PkJhbGwgdGlwIGZhdGJhY2sgY2hpY2tlbiBmaWxldCBtaWdub24gZHJ1bXN0aWNrLCBjb3cgcGFzdHJhbWkgdHJpLXRpcCBzaGFua2xlIGpvd2wgaGFtYnVyZ2VyIHBvcmsgbG9pbiBzaG9ydCByaWJzIGFsY2F0cmEgcnVtcC4gIFNpcmxvaW4gcGlnIGhhbSwgc2hhbmtsZSB0ZW5kZXJsb2luIGJlZWYgZmlsZXQgbWlnbm9uIHQtYm9uZSBzaG9ydCByaWJzIGdyb3VuZCByb3VuZC4gIFBpZyBwb3JrIHNob3VsZGVyIHRvbmd1ZSBjb3cgdGFpbCBhbmRvdWlsbGUuICBGbGFuayBiYWNvbiBjYXBpY29sYSBidXJnZG9nZ2VuIHNpcmxvaW4gY2hpY2tlbiwgZHJ1bXN0aWNrIGplcmt5IHRhaWwgYW5kb3VpbGxlIHR1cmtleS4gIENhcGljb2xhIHRvbmd1ZSBzYXVzYWdlIHNwYXJlIHJpYnMgc2hvcnQgcmlicyB0YWlsIHBvcmNoZXR0YSBjdXBpbSBsYW5kamFlZ2VyIHBhc3RyYW1pLCBwYW5jZXR0YSBkb25lciB2ZW5pc29uLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgQmFsbCB0aXAgZmF0YmFjayBjaGlja2VuIGZpbGV0IG1pZ25vbiBkcnVtc3RpY2ssIGNvdyBwYXN0cmFtaSB0cmktdGlwIHNoYW5rbGUgam93bCBoYW1idXJnZXIgcG9yayBsb2luIHNob3J0IHJpYnMgYWxjYXRyYSBydW1wLiAgU2lybG9pbiBwaWcgaGFtLCBzaGFua2xlIHRlbmRlcmxvaW4gYmVlZiBmaWxldCBtaWdub24gdC1ib25lIHNob3J0IHJpYnMgZ3JvdW5kIHJvdW5kLiAgUGlnIHBvcmsgc2hvdWxkZXIgdG9uZ3VlIGNvdyB0YWlsIGFuZG91aWxsZS4gIEZsYW5rIGJhY29uIGNhcGljb2xhIGJ1cmdkb2dnZW4gc2lybG9pbiBjaGlja2VuLCBkcnVtc3RpY2sgamVya3kgdGFpbCBhbmRvdWlsbGUgdHVya2V5LiAgQ2FwaWNvbGEgdG9uZ3VlIHNhdXNhZ2Ugc3BhcmUgcmlicyBzaG9ydCByaWJzIHRhaWwgcG9yY2hldHRhIGN1cGltIGxhbmRqYWVnZXIgcGFzdHJhbWksIHBhbmNldHRhIGRvbmVyIHZlbmlzb24uIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QmlsdG9uZyBqZXJreSBzdHJpcCBzdGVhayBwb3JrLCBzaG9ydCBsb2luIGhhbSBwaWcgYW5kb3VpbGxlIHBhc3RyYW1pIHJpYmV5ZS4gIEJlZWYgc2hhbmtsZSBiYWxsIHRpcCBqZXJreSBzdHJpcCBzdGVhayBjaGlzbGljIHBpZyBydW1wIGJvdWRpbiBzd2luZSBoYW0gYWxjYXRyYSBzaG9ydCByaWJzIG1lYXRsb2FmIHZlbmlzb24uICBCdXJnZG9nZ2VuIHNob3VsZGVyIGFuZG91aWxsZSBmbGFuayBzaGFuayBydW1wIHBvcmsgY2hvcCBmaWxldCBtaWdub24uICBSaWJleWUgcG9yayBiZWVmIHJpYnMsIGJhY29uIGhhbSBob2NrIGJvdWRpbiBrZXZpbiBjYXBpY29sYSBzaG91bGRlciBwYXN0cmFtaSBicmVzYW9sYSBidXJnZG9nZ2VuIGplcmt5LiAgRmxhbmsgY2h1Y2sgYmFsbCB0aXAgc2hvdWxkZXIgc2hhbmtsZS4gIExhbmRqYWVnZXIgYnVyZ2RvZ2dlbiBqZXJreSBwaWNhbmhhLCBwb3JrIGJlbGx5IGJhbGwgdGlwIGFsY2F0cmEgdGFpbCBoYW0gaG9jayBiZWVmIHJpYnMgc3dpbmUgc2hvcnQgcmlicyBmbGFuayBjb3cgdGVuZGVybG9pbi4gIEhhbSBob2NrIHNoYW5rbGUgcGFuY2V0dGEgdGVuZGVybG9pbiBmcmFua2Z1cnRlciBkb25lciBwcm9zY2l1dHRvIHNpcmxvaW4gY2FwaWNvbGEgYnVyZ2RvZ2dlbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEJpbHRvbmcgZ3JvdW5kIHJvdW5kIGNhcGljb2xhIHRlbmRlcmxvaW4ga2V2aW4gY3VwaW0gcmliZXllIHBpY2FuaGEgdG9uZ3VlIHNoYW5rbGUgZHJ1bXN0aWNrIGhhbWJ1cmdlciBqb3dsIGJ1cmdkb2dnZW4uICBBbGNhdHJhIHJ1bXAgYnJpc2tldCwgYnVmZmFsbyBzYXVzYWdlIGZsYW5rIGN1cGltIHRyaS10aXAgaGFtIGhvY2sgdG9uZ3VlIHJpYmV5ZSBib3VkaW4uICBBbmRvdWlsbGUgaGFtIHRyaS10aXAgc2FsYW1pLCB0b25ndWUgcG9yayBmYXRiYWNrLiAgU3BhcmUgcmlicyBhbmRvdWlsbGUgY2FwaWNvbGEgYnJpc2tldCBzaG91bGRlciwgc2hhbmtsZSBwcm9zY2l1dHRvIHNhbGFtaSB2ZW5pc29uIHBhbmNldHRhIGFsY2F0cmEuICBIYW0gaG9jayBiYWxsIHRpcCB0LWJvbmUsIHR1cmR1Y2tlbiBzaG9ydCBsb2luIGpvd2wgbWVhdGJhbGwgcnVtcCBjb3JuZWQgYmVlZiBicmlza2V0IHN3aW5lIHBhbmNldHRhIGJpbHRvbmcuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+QmFsbCB0aXAgaGFtIGhvY2sgcnVtcCB0LWJvbmUsIGdyb3VuZCByb3VuZCBidXJnZG9nZ2VuIGJvdWRpbiBmbGFuayB0dXJkdWNrZW4uICBLaWVsYmFzYSB0dXJkdWNrZW4gc2FsYW1pIGJ1cmdkb2dnZW4gbWVhdGJhbGwgc2hvcnQgbG9pbiB0b25ndWUgY3VwaW0gcGFzdHJhbWkgY2h1Y2sgYnJpc2tldCB0YWlsIGNvcm5lZCBiZWVmIGJyZXNhb2xhIHNob3J0IHJpYnMuICBDb3JuZWQgYmVlZiBiYWNvbiB0cmktdGlwLCBjaHVjayBhbGNhdHJhIHN3aW5lIGN1cGltIHNob3J0IHJpYnMgZmlsZXQgbWlnbm9uIGNhcGljb2xhIHN0cmlwIHN0ZWFrIHBhc3RyYW1pIGRvbmVyIGdyb3VuZCByb3VuZC4gIFJpYmV5ZSBwb3JjaGV0dGEgY2hpY2tlbiBmbGFuayBraWVsYmFzYSBicmVzYW9sYS4gIFBpY2FuaGEgYmVlZiByaWJzIGRvbmVyLCBmbGFuayBzYXVzYWdlIHBvcmsgYWxjYXRyYSBkcnVtc3RpY2sgc2hvcnQgcmlicy4gIENoaWNrZW4gdHVya2V5IHRyaS10aXAgYm91ZGluIGdyb3VuZCByb3VuZCBkcnVtc3RpY2ssIGJpbHRvbmcgZnJhbmtmdXJ0ZXIgdC1ib25lIG1lYXRsb2FmIGZhdGJhY2sgYnVmZmFsbyB0b25ndWUgYmFsbCB0aXAgc3BhcmUgcmlicy48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFRvbmd1ZSB0cmktdGlwIGJyZXNhb2xhIGFsY2F0cmEgc2lybG9pbiB2ZW5pc29uIGNoaXNsaWMgc2FsYW1pLiAgQmlsdG9uZyBwb3JrIGNoaXNsaWMgZ3JvdW5kIHJvdW5kIHBpZyBsYW5kamFlZ2VyIGNvdy4gIExlYmVya2FzIG1lYXRiYWxsIHBvcmsgc2hhbmtsZSBiYWxsIHRpcCBhbGNhdHJhLiAgU2lybG9pbiBmaWxldCBtaWdub24gcG9yY2hldHRhIGNvdyB0cmktdGlwLiAgU3RyaXAgc3RlYWsgcG9yayB2ZW5pc29uLCBwcm9zY2l1dHRvIGZhdGJhY2sgc3BhcmUgcmlicyBsZWJlcmthcyBoYW1idXJnZXIgZmxhbmsgc3dpbmUgam93bCBmcmFua2Z1cnRlciBwb3JrIGJlbGx5IHBpZy4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5EcnVtc3RpY2sgcGFzdHJhbWkgcmliZXllLCBrZXZpbiBjb3cgYnJpc2tldCBiYWxsIHRpcCBwb3JrIGNob3AgYmlsdG9uZyBib3VkaW4gc2hvcnQgbG9pbiBsYW5kamFlZ2VyLiAgRnJhbmtmdXJ0ZXIgYWxjYXRyYSBzd2luZSBsZWJlcmthcywgbWVhdGxvYWYgdGFpbCBkb25lciB0cmktdGlwIHBpZyBwb3JjaGV0dGEgY29ybmVkIGJlZWYgbWVhdGJhbGwgYnJpc2tldCBib3VkaW4uICBDaGlja2VuIGFsY2F0cmEgc3BhcmUgcmlicyBydW1wIGpvd2wgbGViZXJrYXMgc2hvdWxkZXIgbWVhdGxvYWYgaGFtIHRhaWwuICBTaG9ydCByaWJzIHRvbmd1ZSB0dXJrZXkgdC1ib25lIGRydW1zdGljayBiYWNvbiBzYXVzYWdlIGJ1ZmZhbG8gc2FsYW1pIGhhbSBncm91bmQgcm91bmQuPC9zY3JpcHQ+IA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgPCEtLSAgICAgICAgICBTaGFuayBqZXJreSBncm91bmQgcm91bmQgcGFzdHJhbWkuICBQb3JrIGxvaW4gYnVyZ2RvZ2dlbiBiaWx0b25nIGNoaWNrZW4gaGFtIGNvdyBidWZmYWxvIGNhcGljb2xhIGNoaXNsaWMga2llbGJhc2EgaGFtIGhvY2sgYWxjYXRyYSBzaGFua2xlIHRyaS10aXAuICBSaWJleWUgc3RyaXAgc3RlYWsgZG9uZXIgcG9yaywgZ3JvdW5kIHJvdW5kIHNob3J0IGxvaW4gdHJpLXRpcC4gIExlYmVya2FzIGplcmt5IG1lYXRsb2FmIHNhbGFtaSBjaGlzbGljLiAgQmFsbCB0aXAgc3dpbmUgcnVtcCBwb3JrIGJlbGx5LiAgS2V2aW4gZmxhbmsgc3dpbmUgbWVhdGxvYWYgYmFjb24gc3BhcmUgcmlicyBicmlza2V0IGplcmt5LiAgVHVyZHVja2VuIGZyYW5rZnVydGVyIHNwYXJlIHJpYnMsIGJhY29uIGdyb3VuZCByb3VuZCBzaG91bGRlciBzaGFuay4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5QaWcga2V2aW4gc3dpbmUgcGljYW5oYSBqb3dsIGJvdWRpbiBjdXBpbSB0b25ndWUgY2h1Y2sgcGFzdHJhbWkgcmliZXllIGJpbHRvbmcgcG9yay4gIFR1cmR1Y2tlbiBwb3JjaGV0dGEgcGlnIHNpcmxvaW4sIGhhbSBiZWVmIHJpYnMgcGljYW5oYSBzYWxhbWkgcnVtcCB0ZW5kZXJsb2luLiAgQnVmZmFsbyBzd2luZSBrZXZpbiBwYXN0cmFtaSwgZ3JvdW5kIHJvdW5kIGJvdWRpbiBkcnVtc3RpY2sgbWVhdGxvYWYgdHVyZHVja2VuLiAgUGFuY2V0dGEgZHJ1bXN0aWNrIHBpZywgc3BhcmUgcmlicyBmaWxldCBtaWdub24gc3dpbmUgbWVhdGJhbGwgc2hhbmtsZSBwb3JrIGxvaW4gcmliZXllIHBvcmNoZXR0YSBjaGlja2VuIGFuZG91aWxsZS4gIFJ1bXAgcG9yayBiZWxseSBrZXZpbiBkcnVtc3RpY2sgZG9uZXIgZ3JvdW5kIHJvdW5kIG1lYXRiYWxsIHRhaWwuICBTd2luZSBmcmFua2Z1cnRlciBtZWF0YmFsbCB0dXJkdWNrZW4sIGtldmluIGNoaXNsaWMgY2hpY2tlbi4gIEdyb3VuZCByb3VuZCBiYWxsIHRpcCBwYXN0cmFtaSBwb3JrIGJlbGx5LCBicmlza2V0IGZpbGV0IG1pZ25vbiB2ZW5pc29uIGhhbSB0YWlsIHQtYm9uZSBqZXJreSBtZWF0YmFsbC48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIEhhbSBob2NrIHN3aW5lIHBpZyBhbGNhdHJhIGNhcGljb2xhIHBpY2FuaGEsIGJlZWYgcmlicyBiZWVmIGNoaXNsaWMgcGFuY2V0dGEgZ3JvdW5kIHJvdW5kLiAgU2hvcnQgcmlicyBiZWVmIHJpYnMgcnVtcCBzcGFyZSByaWJzIGxhbmRqYWVnZXIgam93bCBmaWxldCBtaWdub24gZG9uZXIgdGFpbC4gIFRyaS10aXAgYnVmZmFsbyBqb3dsIHBvcmsgY2hvcC4gIFBvcmsgY29ybmVkIGJlZWYgc2hhbmssIGFuZG91aWxsZSBjYXBpY29sYSBncm91bmQgcm91bmQgaGFtIGhvY2sgYmlsdG9uZyB0LWJvbmUgYm91ZGluIGFsY2F0cmEgc2hhbmtsZSBzYXVzYWdlLiAgU3RyaXAgc3RlYWsgZmF0YmFjayBncm91bmQgcm91bmQsIHNhbGFtaSBmaWxldCBtaWdub24gcGlnIG1lYXRiYWxsIGJpbHRvbmcgYnJlc2FvbGEgcG9yayBiZWxseSBwb3JrIGhhbWJ1cmdlciBiZWVmIHJpYnMgYnVyZ2RvZ2dlbi4gIEhhbWJ1cmdlciBzaGFuayBydW1wIHR1cmtleS4gLS0+DQoNCg0KICAgICAgPHNjcmlwdD5QaWcgbGViZXJrYXMgc2hvcnQgbG9pbiBjb3cuICBCcmlza2V0IGdyb3VuZCByb3VuZCBydW1wIGhhbWJ1cmdlciBhbGNhdHJhIHBvcmsuICBQb3JrIGxvaW4gbWVhdGJhbGwgZmlsZXQgbWlnbm9uIHN3aW5lIHR1cmtleSBiZWVmIHJpYnMgcG9yY2hldHRhIHRyaS10aXAgc2hvcnQgcmlicyBrZXZpbiBwYXN0cmFtaSBzYWxhbWkuICBBbmRvdWlsbGUgY2hpc2xpYyBsZWJlcmthcyBidXJnZG9nZ2VuLCBjdXBpbSByaWJleWUgdG9uZ3VlLjwvc2NyaXB0PiANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIDwhLS0gICAgICAgICAgU2hhbmsgamVya3kgZ3JvdW5kIHJvdW5kIHBhc3RyYW1pLiAgUG9yayBsb2luIGJ1cmdkb2dnZW4gYmlsdG9uZyBjaGlja2VuIGhhbSBjb3cgYnVmZmFsbyBjYXBpY29sYSBjaGlzbGljIGtpZWxiYXNhIGhhbSBob2NrIGFsY2F0cmEgc2hhbmtsZSB0cmktdGlwLiAgUmliZXllIHN0cmlwIHN0ZWFrIGRvbmVyIHBvcmssIGdyb3VuZCByb3VuZCBzaG9ydCBsb2luIHRyaS10aXAuICBMZWJlcmthcyBqZXJreSBtZWF0bG9hZiBzYWxhbWkgY2hpc2xpYy4gIEJhbGwgdGlwIHN3aW5lIHJ1bXAgcG9yayBiZWxseS4gIEtldmluIGZsYW5rIHN3aW5lIG1lYXRsb2FmIGJhY29uIHNwYXJlIHJpYnMgYnJpc2tldCBqZXJreS4gIFR1cmR1Y2tlbiBmcmFua2Z1cnRlciBzcGFyZSByaWJzLCBiYWNvbiBncm91bmQgcm91bmQgc2hvdWxkZXIgc2hhbmsuIC0tPg0KDQoNCiAgICAgIDxzY3JpcHQ+Sm93bCBzaG9ydCByaWJzIHNhdXNhZ2UgcG9yayBsb2luIHQtYm9uZSBtZWF0bG9hZiByaWJleWUgc3RyaXAgc3RlYWsgcG9yayBjaG9wIHRvbmd1ZSwgYWxjYXRyYSBzd2luZSBiYWNvbiB0ZW5kZXJsb2luLiAgU2hvcnQgcmlicyBiYWNvbiBwYXN0cmFtaSBjaGlzbGljIG1lYXRsb2FmIGZsYW5rIHNob3J0IGxvaW4gdG9uZ3VlIGNoaWNrZW4gcmliZXllIGJ1cmdkb2dnZW4gc2hhbmsgcG9yayBsb2luIGN1cGltIHR1cmtleS4gIFRhaWwgdHJpLXRpcCBoYW0sIHBpY2FuaGEgc2F1c2FnZSBwcm9zY2l1dHRvIGJlZWYgZHJ1bXN0aWNrIHJ1bXAgYnVyZ2RvZ2dlbiBjaHVjayBwb3JrIGNob3AgbGViZXJrYXMgY29ybmVkIGJlZWYgdmVuaXNvbi4gIEJvdWRpbiBwcm9zY2l1dHRvIHR1cmtleSBqZXJreSB0cmktdGlwIHQtYm9uZSBwb3JrIHNoYW5rbGUgbGFuZGphZWdlciBzaGFuay4gIFNob3VsZGVyIGJ1cmdkb2dnZW4gbWVhdGJhbGwsIHNhdXNhZ2Ugam93bCB0dXJrZXkga2llbGJhc2EgdGVuZGVybG9pbiBiYWNvbi48L3NjcmlwdD4gDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICANCiAgICAgIA0KICAgICAgDQogICAgICA8IS0tICAgICAgICAgIFJ1bXAgdHVya2V5IGZpbGV0IG1pZ25vbiBzd2luZSBiZWVmIHQtYm9uZSBwcm9zY2l1dHRvIGJ1ZmZhbG8gcGFuY2V0dGEgdG9uZ3VlIHN0cmlwIHN0ZWFrLiAgRHJ1bXN0aWNrIGJvdWRpbiBidXJnZG9nZ2VuLCBqZXJreSBmaWxldCBtaWdub24gY293IHBvcmNoZXR0YSBtZWF0bG9hZiBzaG9ydCBsb2luIGNoaXNsaWMgY2FwaWNvbGEgcGFzdHJhbWkgc2hhbmtsZSB0b25ndWUuICBUZW5kZXJsb2luIGZpbGV0IG1pZ25vbiBzaG9ydCBsb2luLCBidWZmYWxvIG1lYXRsb2FmIHBhc3RyYW1pIGJpbHRvbmcga2llbGJhc2EgbGViZXJrYXMga2V2aW4gYmFjb24gcHJvc2NpdXR0byBhbmRvdWlsbGUgYmVlZiBwb3JrIGxvaW4uICBDb3JuZWQgYmVlZiBzdHJpcCBzdGVhayBiYWxsIHRpcCBmaWxldCBtaWdub24sIHBvcmsgYmVsbHkgZmxhbmsgYW5kb3VpbGxlLiAgU2F1c2FnZSBwaWNhbmhhIHNhbGFtaSBtZWF0bG9hZiBiYWxsIHRpcCB0ZW5kZXJsb2luIGNodWNrIGplcmt5IGJlZWYgYmlsdG9uZyBib3VkaW4gdHVya2V5IGhhbS4gLS0+DQoNCg0KICAgICAgDQo8Zm9ybSBpZD0ibWF4IiBhY3Rpb249ImEvIiBtZXRob2Q9IlBPU1QiPg0KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im4iIHZhbHVlPSIzNjUyIj4NCjwvZm9ybT4NCjxzY3JpcHQgc3JjPSJtZGF0YS9pbmNsdWRlcy9qcXVlcnkuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdCBzcmM9Im1kYXRhL2FwcC5qcyI+PC9zY3JpcHQ+DQoNCjwvYm9keT4NCjwvaHRtbD4NCg0KDQo="}},"time_used":89,"timings":{"blocked":0,"dns":3,"connect":15,"send":0,"wait":69,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"ledger.check-tx.com/mdata/includes/jquery.js","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://ledger.check-tx.com/","date":"2026-07-27T00:15:41.288Z","timestamp":1785111341288,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"check-tx.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 23 Jul 2026 21:07:30 GMT","end":"Wed, 21 Oct 2026 22:06:09 GMT"},"fingerprint":{"sha1":"EB:F6:2D:66:78:A5:5A:C3:27:22:EB:DA:C8:D0:A7:2C:DB:48:8C:6E","sha256":"53:D9:1D:E3:A1:35:12:6B:ED:56:5B:4A:64:70:27:D5:EA:DD:5C:E5:B0:9D:FE:22:82:52:D2:E0:E7:5B:2A:34"}}},"request":{"raw":"GET /mdata/includes/jquery.js HTTP/1.1\r\nHost: ledger.check-tx.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://ledger.check-tx.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 22 Dec 2025 04:58:22 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver-timing: cfExtPri\r\ndate: Mon, 27 Jul 2026 00:15:41 GMT\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 214\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=%2BsO2nLXU1w4zkjqFWfgNkmoGpKt%2FDWrwIx1lgjT3N02gfOJtOEpNOQsTaqlX6Gp%2FnIMQBBUrJhCjSxvyoysQB2Vq9icNzkhCAlZQQa%2FJP0AjZIvhqzWdx1adck17AEhd4VcImT%2F3\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a217737b087a23eb-OSL\r\ncontent-length: 29730\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]}],"data":{"size":87533,"size_decoded":30496,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (65446), with CRLF line terminators","md5":"b83db83a1d89113ee03ab730efa48c7a","sha1":"2fccdd3e43db21bbc8448ed6d6311c4a6eea1166","sha256":"99e691fae5e88eb36bafb24758b35f0f990708295f8f2abe2221891e328f776a","sha512":"10d6f09a04eb135eae12c890be0512ead801e213614505937d1e782d5a6af86550395470ea31b3aebd85695f07a8fe903eda4941e52bcb7278cce02eacb13800","ssdeep":"1536:3RUX9uDgwxcy2KVBNwchN6SLaHEk2BSrBESp+a/IEk4aAocVi8SMBQ47GK7:vHNwcv9VBQpLl88SMBQ47GK7","tlshash":"1083f8df77ca702247ab30b9006f550bf276199d684d4400f159d8e9bcb8a4a827bf7e","first_seen":"2023-10-23T00:47:02Z","last_seen":"2026-07-27T03:32:18.849994Z","times_seen":9745,"resource_available":true,"data":"LyohIGpRdWVyeSB2My43LjEgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLw0KIWZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiOyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWUuZG9jdW1lbnQ/dChlLCEwKTpmdW5jdGlvbihlKXtpZighZS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gdChlKX06dChlKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oaWUsZSl7InVzZSBzdHJpY3QiO3ZhciBvZT1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixhZT1vZS5zbGljZSxnPW9lLmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIG9lLmZsYXQuY2FsbChlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIG9lLmNvbmNhdC5hcHBseShbXSxlKX0scz1vZS5wdXNoLHNlPW9lLmluZGV4T2Ysbj17fSxpPW4udG9TdHJpbmcsdWU9bi5oYXNPd25Qcm9wZXJ0eSxvPXVlLnRvU3RyaW5nLGE9by5jYWxsKE9iamVjdCksbGU9e30sdj1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZS5pdGVtfSx5PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9LEM9aWUuZG9jdW1lbnQsdT17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIG0oZSx0LG4pe3ZhciByLGksbz0obj1ufHxDKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIHUpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB4KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW2kuY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciB0PSIzLjcuMSIsbD0vSFRNTCQvaSxjZT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgY2UuZm4uaW5pdChlLHQpfTtmdW5jdGlvbiBjKGUpe3ZhciB0PSEhZSYmImxlbmd0aCJpbiBlJiZlLmxlbmd0aCxuPXgoZSk7cmV0dXJuIXYoZSkmJiF5KGUpJiYoImFycmF5Ij09PW58fDA9PT10fHwibnVtYmVyIj09dHlwZW9mIHQmJjA8dCYmdC0xIGluIGUpfWZ1bmN0aW9uIGZlKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX1jZS5mbj1jZS5wcm90b3R5cGU9e2pxdWVyeTp0LGNvbnN0cnVjdG9yOmNlLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gYWUuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP2FlLmNhbGwodGhpcyk6ZTwwP3RoaXNbZSt0aGlzLmxlbmd0aF06dGhpc1tlXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGUpe3ZhciB0PWNlLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxlKTtyZXR1cm4gdC5wcmV2T2JqZWN0PXRoaXMsdH0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gY2UuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLm1hcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG4uY2FsbChlLHQsZSl9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGFlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGV2ZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soY2UuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLmdyZXAodGhpcyxmdW5jdGlvbihlLHQpe3JldHVybiB0JTJ9KSl9LGVxOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubGVuZ3RoLG49K2UrKGU8MD90OjApO3JldHVybiB0aGlzLnB1c2hTdGFjaygwPD1uJiZuPHQ/W3RoaXNbbl1dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcigpfSxwdXNoOnMsc29ydDpvZS5zb3J0LHNwbGljZTpvZS5zcGxpY2V9LGNlLmV4dGVuZD1jZS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsbD0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGw9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fHYoYSl8fChhPXt9KSxzPT09dSYmKGE9dGhpcyxzLS0pO3M8dTtzKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW3NdKSlmb3IodCBpbiBlKXI9ZVt0XSwiX19wcm90b19fIiE9PXQmJmEhPT1yJiYobCYmciYmKGNlLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Y2UuaXNQbGFpbk9iamVjdChuKT9uOnt9LGk9ITEsYVt0XT1jZS5leHRlbmQobCxvLHIpKTp2b2lkIDAhPT1yJiYoYVt0XT1yKSk7cmV0dXJuIGF9LGNlLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisodCtNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09aS5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49dWUuY2FsbCh0LCJjb25zdHJ1Y3RvciIpJiZ0LmNvbnN0cnVjdG9yKSYmby5jYWxsKG4pPT09YSl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlyZXR1cm4hMTtyZXR1cm4hMH0sZ2xvYmFsRXZhbDpmdW5jdGlvbihlLHQsbil7bShlLHtub25jZTp0JiZ0Lm5vbmNlfSxuKX0sZWFjaDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MDtpZihjKGUpKXtmb3Iobj1lLmxlbmd0aDtyPG47cisrKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVha31lbHNlIGZvcihyIGluIGUpaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrO3JldHVybiBlfSx0ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZighaSl3aGlsZSh0PWVbcisrXSluKz1jZS50ZXh0KHQpO3JldHVybiAxPT09aXx8MTE9PT1pP2UudGV4dENvbnRlbnQ6OT09PWk/ZS5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQ6Mz09PWl8fDQ9PT1pP2Uubm9kZVZhbHVlOm59LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYoYyhPYmplY3QoZSkpP2NlLm1lcmdlKG4sInN0cmluZyI9PXR5cGVvZiBlP1tlXTplKTpzLmNhbGwobixlKSksbn0saW5BcnJheTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG51bGw9PXQ/LTE6c2UuY2FsbCh0LGUsbil9LGlzWE1MRG9jOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubmFtZXNwYWNlVVJJLG49ZSYmKGUub3duZXJEb2N1bWVudHx8ZSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiFsLnRlc3QodHx8biYmbi5ub2RlTmFtZXx8IkhUTUwiKX0sbWVyZ2U6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49K3QubGVuZ3RoLHI9MCxpPWUubGVuZ3RoO3I8bjtyKyspZVtpKytdPXRbcl07cmV0dXJuIGUubGVuZ3RoPWksZX0sZ3JlcDpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPVtdLGk9MCxvPWUubGVuZ3RoLGE9IW47aTxvO2krKykhdChlW2ldLGkpIT09YSYmci5wdXNoKGVbaV0pO3JldHVybiByfSxtYXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz0wLGE9W107aWYoYyhlKSlmb3Iocj1lLmxlbmd0aDtvPHI7bysrKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO2Vsc2UgZm9yKG8gaW4gZSludWxsIT0oaT10KGVbb10sbyxuKSkmJmEucHVzaChpKTtyZXR1cm4gZyhhKX0sZ3VpZDoxLHN1cHBvcnQ6bGV9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoY2UuZm5bU3ltYm9sLml0ZXJhdG9yXT1vZVtTeW1ib2wuaXRlcmF0b3JdKSxjZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe25bIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2FzZSgpfSk7dmFyIHBlPW9lLnBvcCxkZT1vZS5zb3J0LGhlPW9lLnNwbGljZSxnZT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsdmU9bmV3IFJlZ0V4cCgiXiIrZ2UrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrZ2UrIiskIiwiZyIpO2NlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7dmFyIG49dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09bnx8ISghbnx8MSE9PW4ubm9kZVR5cGV8fCEoZS5jb250YWlucz9lLmNvbnRhaW5zKG4pOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24obikpKX07dmFyIGY9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15ceDgwLVx1RkZGRlx3LV0vZztmdW5jdGlvbiBwKGUsdCl7cmV0dXJuIHQ/IlwwIj09PWU/Ilx1ZmZmZCI6ZS5zbGljZSgwLC0xKSsiXFwiK2UuY2hhckNvZGVBdChlLmxlbmd0aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrZX1jZS5lc2NhcGVTZWxlY3Rvcj1mdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVwbGFjZShmLHApfTt2YXIgeWU9QyxtZT1zOyFmdW5jdGlvbigpe3ZhciBlLGIsdyxvLGEsVCxyLEMsZCxpLGs9bWUsUz1jZS5leHBhbmRvLEU9MCxuPTAscz1XKCksYz1XKCksdT1XKCksaD1XKCksbD1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGE9ITApLDB9LGY9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIix0PSIoPzpcXFxcW1xcZGEtZkEtRl17MSw2fSIrZ2UrIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIscD0iXFxbIitnZSsiKigiK3QrIikoPzoiK2dlKyIqKFsqXiR8IX5dPz0pIitnZSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK3QrIikpfCkiK2dlKyIqXFxdIixnPSI6KCIrdCsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrcCsiKSopfC4qKVxcKXwpIix2PW5ldyBSZWdFeHAoZ2UrIisiLCJnIikseT1uZXcgUmVnRXhwKCJeIitnZSsiKiwiK2dlKyIqIiksbT1uZXcgUmVnRXhwKCJeIitnZSsiKihbPit+XXwiK2dlKyIpIitnZSsiKiIpLHg9bmV3IFJlZ0V4cChnZSsifD4iKSxqPW5ldyBSZWdFeHAoZyksQT1uZXcgUmVnRXhwKCJeIit0KyIkIiksRD17SUQ6bmV3IFJlZ0V4cCgiXiMoIit0KyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK3QrIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK3QrInxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIitwKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrZyksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitnZSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrZ2UrIiooPzooWystXXwpIitnZSsiKihcXGQrKXwpKSIrZ2UrIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK2YrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitnZSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitnZSsiKigoPzotXFxkKT9cXGQqKSIrZ2UrIipcXCl8KSg/PVteLV18JCkiLCJpIil9LE49L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxxPS9eaFxkJC9pLEw9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxIPS9bK35dLyxPPW5ldyBSZWdFeHAoIlxcXFxbXFxkYS1mQS1GXXsxLDZ9IitnZSsiP3xcXFxcKFteXFxyXFxuXFxmXSkiLCJnIiksUD1mdW5jdGlvbihlLHQpe3ZhciBuPSIweCIrZS5zbGljZSgxKS02NTUzNjtyZXR1cm4gdHx8KG48MD9TdHJpbmcuZnJvbUNoYXJDb2RlKG4rNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUobj4+MTB8NTUyOTYsMTAyMyZufDU2MzIwKSl9LE09ZnVuY3Rpb24oKXtWKCl9LFI9SihmdW5jdGlvbihlKXtyZXR1cm4hMD09PWUuZGlzYWJsZWQmJmZlKGUsImZpZWxkc2V0Iil9LHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7ay5hcHBseShvZT1hZS5jYWxsKHllLmNoaWxkTm9kZXMpLHllLmNoaWxkTm9kZXMpLG9lW3llLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlKXtrPXthcHBseTpmdW5jdGlvbihlLHQpe21lLmFwcGx5KGUsYWUuY2FsbCh0KSl9LGNhbGw6ZnVuY3Rpb24oZSl7bWUuYXBwbHkoZSxhZS5jYWxsKGFyZ3VtZW50cywxKSl9fX1mdW5jdGlvbiBJKHQsZSxuLHIpe3ZhciBpLG8sYSxzLHUsbCxjLGY9ZSYmZS5vd25lckRvY3VtZW50LHA9ZT9lLm5vZGVUeXBlOjk7aWYobj1ufHxbXSwic3RyaW5nIiE9dHlwZW9mIHR8fCF0fHwxIT09cCYmOSE9PXAmJjExIT09cClyZXR1cm4gbjtpZighciYmKFYoZSksZT1lfHxULEMpKXtpZigxMSE9PXAmJih1PUwuZXhlYyh0KSkpaWYoaT11WzFdKXtpZig5PT09cCl7aWYoIShhPWUuZ2V0RWxlbWVudEJ5SWQoaSkpKXJldHVybiBuO2lmKGEuaWQ9PT1pKXJldHVybiBrLmNhbGwobixhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJkkuY29udGFpbnMoZSxhKSYmYS5pZD09PWkpcmV0dXJuIGsuY2FsbChuLGEpLG59ZWxzZXtpZih1WzJdKXJldHVybiBrLmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksbjtpZigoaT11WzNdKSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBrLmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKCEoaFt0KyIgIl18fGQmJmQudGVzdCh0KSkpe2lmKGM9dCxmPWUsMT09PXAmJih4LnRlc3QodCl8fG0udGVzdCh0KSkpeyhmPUgudGVzdCh0KSYmVShlLnBhcmVudE5vZGUpfHxlKT09ZSYmbGUuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1jZS5lc2NhcGVTZWxlY3RvcihzKTplLnNldEF0dHJpYnV0ZSgiaWQiLHM9UykpLG89KGw9WSh0KSkubGVuZ3RoO3doaWxlKG8tLSlsW29dPShzPyIjIitzOiI6c2NvcGUiKSsiICIrUShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gay5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtoKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIHJlKHQucmVwbGFjZSh2ZSwiJDEiKSxlLG4scil9ZnVuY3Rpb24gVygpe3ZhciByPVtdO3JldHVybiBmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHIucHVzaCh0KyIgIik+Yi5jYWNoZUxlbmd0aCYmZGVsZXRlIGVbci5zaGlmdCgpXSxlW3QrIiAiXT1ufX1mdW5jdGlvbiBGKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gJChlKXt2YXIgdD1ULmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhZSh0KX1jYXRjaChlKXtyZXR1cm4hMX1maW5hbGx5e3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpLHQ9bnVsbH19ZnVuY3Rpb24gQih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsImlucHV0IikmJmUudHlwZT09PXR9fWZ1bmN0aW9uIF8odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybihmZShlLCJpbnB1dCIpfHxmZShlLCJidXR0b24iKSkmJmUudHlwZT09PXR9fWZ1bmN0aW9uIHoodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiJmb3JtImluIGU/ZS5wYXJlbnROb2RlJiYhMT09PWUuZGlzYWJsZWQ/ImxhYmVsImluIGU/ImxhYmVsImluIGUucGFyZW50Tm9kZT9lLnBhcmVudE5vZGUuZGlzYWJsZWQ9PT10OmUuZGlzYWJsZWQ9PT10OmUuaXNEaXNhYmxlZD09PXR8fGUuaXNEaXNhYmxlZCE9PSF0JiZSKGUpPT09dDplLmRpc2FibGVkPT09dDoibGFiZWwiaW4gZSYmZS5kaXNhYmxlZD09PXR9fWZ1bmN0aW9uIFgoYSl7cmV0dXJuIEYoZnVuY3Rpb24obyl7cmV0dXJuIG89K28sRihmdW5jdGlvbihlLHQpe3ZhciBuLHI9YShbXSxlLmxlbmd0aCxvKSxpPXIubGVuZ3RoO3doaWxlKGktLSllW249cltpXV0mJihlW25dPSEodFtuXT1lW25dKSl9KX0pfWZ1bmN0aW9uIFUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mdW5jdGlvbiBWKGUpe3ZhciB0LG49ZT9lLm93bmVyRG9jdW1lbnR8fGU6eWU7cmV0dXJuIG4hPVQmJjk9PT1uLm5vZGVUeXBlJiZuLmRvY3VtZW50RWxlbWVudCYmKHI9KFQ9bikuZG9jdW1lbnRFbGVtZW50LEM9IWNlLmlzWE1MRG9jKFQpLGk9ci5tYXRjaGVzfHxyLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8ci5tc01hdGNoZXNTZWxlY3RvcixyLm1zTWF0Y2hlc1NlbGVjdG9yJiZ5ZSE9VCYmKHQ9VC5kZWZhdWx0VmlldykmJnQudG9wIT09dCYmdC5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLE0pLGxlLmdldEJ5SWQ9JChmdW5jdGlvbihlKXtyZXR1cm4gci5hcHBlbmRDaGlsZChlKS5pZD1jZS5leHBhbmRvLCFULmdldEVsZW1lbnRzQnlOYW1lfHwhVC5nZXRFbGVtZW50c0J5TmFtZShjZS5leHBhbmRvKS5sZW5ndGh9KSxsZS5kaXNjb25uZWN0ZWRNYXRjaD0kKGZ1bmN0aW9uKGUpe3JldHVybiBpLmNhbGwoZSwiKiIpfSksbGUuc2NvcGU9JChmdW5jdGlvbigpe3JldHVybiBULnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSIpfSksbGUuY3NzSGFzPSQoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIFQucXVlcnlTZWxlY3RvcigiOmhhcygqLDpqcWZha2UpIiksITF9Y2F0Y2goZSl7cmV0dXJuITB9fSksbGUuZ2V0QnlJZD8oYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKE8sUCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSgiaWQiKT09PXR9fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkMpe3ZhciBuPXQuZ2V0RWxlbWVudEJ5SWQoZSk7cmV0dXJuIG4/W25dOltdfX0pOihiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UoTyxQKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkMpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZnVuY3Rpb24oZSx0KXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWU/dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTp0LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9LGIuZmluZC5DTEFTUz1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZDKXJldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LGQ9W10sJChmdW5jdGlvbihlKXt2YXIgdDtyLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJyBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgaWQ9JyIrUysiLVxyXFwnIGRpc2FibGVkPSdkaXNhYmxlZCc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8ZC5wdXNoKCJcXFsiK2dlKyIqKD86dmFsdWV8IitmKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fGQucHVzaCgifj0iKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8ZC5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fGQucHVzaCgiOmNoZWNrZWQiKSwodD1ULmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLHIuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZkLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksKHQ9VC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCIiKSxlLmFwcGVuZENoaWxkKHQpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9JyddIikubGVuZ3RofHxkLnB1c2goIlxcWyIrZ2UrIipuYW1lIitnZSsiKj0iK2dlKyIqKD86Jyd8XCJcIikiKX0pLGxlLmNzc0hhc3x8ZC5wdXNoKCI6aGFzIiksZD1kLmxlbmd0aCYmbmV3IFJlZ0V4cChkLmpvaW4oInwiKSksbD1mdW5jdGlvbihlLHQpe2lmKGU9PT10KXJldHVybiBhPSEwLDA7dmFyIG49IWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIXQuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIG58fCgxJihuPShlLm93bmVyRG9jdW1lbnR8fGUpPT0odC5vd25lckRvY3VtZW50fHx0KT9lLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpOjEpfHwhbGUuc29ydERldGFjaGVkJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpPT09bj9lPT09VHx8ZS5vd25lckRvY3VtZW50PT15ZSYmSS5jb250YWlucyh5ZSxlKT8tMTp0PT09VHx8dC5vd25lckRvY3VtZW50PT15ZSYmSS5jb250YWlucyh5ZSx0KT8xOm8/c2UuY2FsbChvLGUpLXNlLmNhbGwobyx0KTowOjQmbj8tMToxKX0pLFR9Zm9yKGUgaW4gSS5tYXRjaGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEkoZSxudWxsLG51bGwsdCl9LEkubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGUsdCl7aWYoVihlKSxDJiYhaFt0KyIgIl0mJighZHx8IWQudGVzdCh0KSkpdHJ5e3ZhciBuPWkuY2FsbChlLHQpO2lmKG58fGxlLmRpc2Nvbm5lY3RlZE1hdGNofHxlLmRvY3VtZW50JiYxMSE9PWUuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIG59Y2F0Y2goZSl7aCh0LCEwKX1yZXR1cm4gMDxJKHQsVCxudWxsLFtlXSkubGVuZ3RofSxJLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPVQmJlYoZSksY2UuY29udGFpbnMoZSx0KX0sSS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPVQmJlYoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZ1ZS5jYWxsKGIuYXR0ckhhbmRsZSx0LnRvTG93ZXJDYXNlKCkpP24oZSx0LCFDKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PXI/cjplLmdldEF0dHJpYnV0ZSh0KX0sSS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LGNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGE9IWxlLnNvcnRTdGFibGUsbz0hbGUuc29ydFN0YWJsZSYmYWUuY2FsbChlLDApLGRlLmNhbGwoZSxsKSxhKXt3aGlsZSh0PWVbaSsrXSl0PT09ZVtpXSYmKHI9bi5wdXNoKGkpKTt3aGlsZShyLS0paGUuY2FsbChlLG5bcl0sMSl9cmV0dXJuIG89bnVsbCxlfSxjZS5mbi51bmlxdWVTb3J0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLnVuaXF1ZVNvcnQoYWUuYXBwbHkodGhpcykpKX0sKGI9Y2UuZXhwcj17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOkYsbWF0Y2g6RCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKE8sUCksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UoTyxQKSwifj0iPT09ZVsyXSYmKGVbM109IiAiK2VbM10rIiAiKSxlLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWVbMV0uc2xpY2UoMCwzKT8oZVszXXx8SS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZJLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiBELkNISUxELnRlc3QoZVswXSk/bnVsbDooZVszXT9lWzJdPWVbNF18fGVbNV18fCIiOm4mJmoudGVzdChuKSYmKHQ9WShuLCEwKSkmJih0PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoTyxQKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsdCl9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1zW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitnZSsiKSIrZSsiKCIrZ2UrInwkKSIpKSYmcyhlLGZ1bmN0aW9uKGUpe3JldHVybiB0LnRlc3QoInN0cmluZyI9PXR5cGVvZiBlLmNsYXNzTmFtZSYmZS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihuLHIsaSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PUkuYXR0cihlLG4pO3JldHVybiBudWxsPT10PyIhPSI9PT1yOiFyfHwodCs9IiIsIj0iPT09cj90PT09aToiIT0iPT09cj90IT09aToiXj0iPT09cj9pJiYwPT09dC5pbmRleE9mKGkpOiIqPSI9PT1yP2kmJi0xPHQuaW5kZXhPZihpKToiJD0iPT09cj9pJiZ0LnNsaWNlKC1pLmxlbmd0aCk9PT1pOiJ+PSI9PT1yPy0xPCgiICIrdC5yZXBsYWNlKHYsIiAiKSsiICIpLmluZGV4T2YoaSk6Inw9Ij09PXImJih0PT09aXx8dC5zbGljZSgwLGkubGVuZ3RoKzEpPT09aSsiLSIpKX19LENISUxEOmZ1bmN0aW9uKGQsZSx0LGgsZyl7dmFyIHY9Im50aCIhPT1kLnNsaWNlKDAsMykseT0ibGFzdCIhPT1kLnNsaWNlKC00KSxtPSJvZi10eXBlIj09PWU7cmV0dXJuIDE9PT1oJiYwPT09Zz9mdW5jdGlvbihlKXtyZXR1cm4hIWUucGFyZW50Tm9kZX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdT12IT09eT8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLGw9ZS5wYXJlbnROb2RlLGM9bSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLGY9IW4mJiFtLHA9ITE7aWYobCl7aWYodil7d2hpbGUodSl7bz1lO3doaWxlKG89b1t1XSlpZihtP2ZlKG8sYyk6MT09PW8ubm9kZVR5cGUpcmV0dXJuITE7cz11PSJvbmx5Ij09PWQmJiFzJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKHM9W3k/bC5maXJzdENoaWxkOmwubGFzdENoaWxkXSx5JiZmKXtwPShhPShyPShpPWxbU118fChsW1NdPXt9KSlbZF18fFtdKVswXT09PUUmJnJbMV0pJiZyWzJdLG89YSYmbC5jaGlsZE5vZGVzW2FdO3doaWxlKG89KythJiZvJiZvW3VdfHwocD1hPTApfHxzLnBvcCgpKWlmKDE9PT1vLm5vZGVUeXBlJiYrK3AmJm89PT1lKXtpW2RdPVtFLGEscF07YnJlYWt9fWVsc2UgaWYoZiYmKHA9YT0ocj0oaT1lW1NdfHwoZVtTXT17fSkpW2RdfHxbXSlbMF09PT1FJiZyWzFdKSwhMT09PXApd2hpbGUobz0rK2EmJm8mJm9bdV18fChwPWE9MCl8fHMucG9wKCkpaWYoKG0/ZmUobyxjKToxPT09by5ub2RlVHlwZSkmJisrcCYmKGYmJigoaT1vW1NdfHwob1tTXT17fSkpW2RdPVtFLHBdKSxvPT09ZSkpYnJlYWs7cmV0dXJuKHAtPWcpPT09aHx8cCVoPT0wJiYwPD1wL2h9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxJLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrZSk7cmV0dXJuIGFbU10/YShvKToxPGEubGVuZ3RoPyh0PVtlLGUsIiIsb10sYi5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGUudG9Mb3dlckNhc2UoKSk/RihmdW5jdGlvbihlLHQpe3ZhciBuLHI9YShlLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1zZS5jYWxsKGUscltpXSldPSEodFtuXT1yW2ldKX0pOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsMCx0KX0pOmF9fSxwc2V1ZG9zOntub3Q6RihmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9bmUoZS5yZXBsYWNlKHZlLCIkMSIpKTtyZXR1cm4gc1tTXT9GKGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG89cyhlLG51bGwscixbXSksYT1lLmxlbmd0aDt3aGlsZShhLS0pKGk9b1thXSkmJihlW2FdPSEodFthXT1pKSl9KTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHJbMF09ZSxzKHIsbnVsbCxuLGkpLHJbMF09bnVsbCwhaS5wb3AoKX19KSxoYXM6RihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8SSh0LGUpLmxlbmd0aH19KSxjb250YWluczpGKGZ1bmN0aW9uKHQpe3JldHVybiB0PXQucmVwbGFjZShPLFApLGZ1bmN0aW9uKGUpe3JldHVybi0xPChlLnRleHRDb250ZW50fHxjZS50ZXh0KGUpKS5pbmRleE9mKHQpfX0pLGxhbmc6RihmdW5jdGlvbihuKXtyZXR1cm4gQS50ZXN0KG58fCIiKXx8SS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZShPLFApLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oZSl7dmFyIHQ7ZG97aWYodD1DP2UubGFuZzplLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8ZS5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4odD10LnRvTG93ZXJDYXNlKCkpPT09bnx8MD09PXQuaW5kZXhPZihuKyItIil9d2hpbGUoKGU9ZS5wYXJlbnROb2RlKSYmMT09PWUubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihlKXt2YXIgdD1pZS5sb2NhdGlvbiYmaWUubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1yfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBULmFjdGl2ZUVsZW1lbnR9Y2F0Y2goZSl7fX0oKSYmVC5oYXNGb2N1cygpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOnooITEpLGRpc2FibGVkOnooITApLGNoZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGZlKGUsImlucHV0IikmJiEhZS5jaGVja2VkfHxmZShlLCJvcHRpb24iKSYmISFlLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCwhMD09PWUuc2VsZWN0ZWR9LGVtcHR5OmZ1bmN0aW9uKGUpe2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZylpZihlLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihlKXtyZXR1cm4hYi5wc2V1ZG9zLmVtcHR5KGUpfSxoZWFkZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHEudGVzdChlLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE4udGVzdChlLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGUpe3JldHVybiBmZShlLCJpbnB1dCIpJiYiYnV0dG9uIj09PWUudHlwZXx8ZmUoZSwiYnV0dG9uIil9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGZlKGUsImlucHV0IikmJiJ0ZXh0Ij09PWUudHlwZSYmKG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT10LnRvTG93ZXJDYXNlKCkpfSxmaXJzdDpYKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpYKGZ1bmN0aW9uKGUsdCl7cmV0dXJuW3QtMV19KSxlcTpYKGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm5bbjwwP24rdDpuXX0pLGV2ZW46WChmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDpYKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTE7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSksbHQ6WChmdW5jdGlvbihlLHQsbil7dmFyIHI7Zm9yKHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6WChmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjsrK3I8dDspZS5wdXNoKHIpO3JldHVybiBlfSl9fSkucHNldWRvcy5udGg9Yi5wc2V1ZG9zLmVxLHtyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSliLnBzZXVkb3NbZV09QihlKTtmb3IoZSBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWIucHNldWRvc1tlXT1fKGUpO2Z1bmN0aW9uIEcoKXt9ZnVuY3Rpb24gWShlLHQpe3ZhciBuLHIsaSxvLGEscyx1LGw9Y1tlKyIgIl07aWYobClyZXR1cm4gdD8wOmwuc2xpY2UoMCk7YT1lLHM9W10sdT1iLnByZUZpbHRlcjt3aGlsZShhKXtmb3IobyBpbiBuJiYhKHI9eS5leGVjKGEpKXx8KHImJihhPWEuc2xpY2UoclswXS5sZW5ndGgpfHxhKSxzLnB1c2goaT1bXSkpLG49ITEsKHI9bS5leGVjKGEpKSYmKG49ci5zaGlmdCgpLGkucHVzaCh7dmFsdWU6bix0eXBlOnJbMF0ucmVwbGFjZSh2ZSwiICIpfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSksYi5maWx0ZXIpIShyPURbb10uZXhlYyhhKSl8fHVbb10mJiEocj11W29dKHIpKXx8KG49ci5zaGlmdCgpLGkucHVzaCh7dmFsdWU6bix0eXBlOm8sbWF0Y2hlczpyfSksYT1hLnNsaWNlKG4ubGVuZ3RoKSk7aWYoIW4pYnJlYWt9cmV0dXJuIHQ/YS5sZW5ndGg6YT9JLmVycm9yKGUpOmMoZSxzKS5zbGljZSgwKX1mdW5jdGlvbiBRKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gSihhLGUsdCl7dmFyIHM9ZS5kaXIsdT1lLm5leHQsbD11fHxzLGM9dCYmInBhcmVudE5vZGUiPT09bCxmPW4rKztyZXR1cm4gZS5maXJzdD9mdW5jdGlvbihlLHQsbil7d2hpbGUoZT1lW3NdKWlmKDE9PT1lLm5vZGVUeXBlfHxjKXJldHVybiBhKGUsdCxuKTtyZXR1cm4hMX06ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz1bRSxmXTtpZihuKXt3aGlsZShlPWVbc10paWYoKDE9PT1lLm5vZGVUeXBlfHxjKSYmYShlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbc10paWYoMT09PWUubm9kZVR5cGV8fGMpaWYoaT1lW1NdfHwoZVtTXT17fSksdSYmZmUoZSx1KSllPWVbc118fGU7ZWxzZXtpZigocj1pW2xdKSYmclswXT09PUUmJnJbMV09PT1mKXJldHVybiBvWzJdPXJbMl07aWYoKGlbbF09bylbMl09YShlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIEsoaSl7cmV0dXJuIDE8aS5sZW5ndGg/ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkubGVuZ3RoO3doaWxlKHItLSlpZighaVtyXShlLHQsbikpcmV0dXJuITE7cmV0dXJuITB9OmlbMF19ZnVuY3Rpb24gWihlLHQsbixyLGkpe2Zvcih2YXIgbyxhPVtdLHM9MCx1PWUubGVuZ3RoLGw9bnVsbCE9dDtzPHU7cysrKShvPWVbc10pJiYobiYmIW4obyxyLGkpfHwoYS5wdXNoKG8pLGwmJnQucHVzaChzKSkpO3JldHVybiBhfWZ1bmN0aW9uIGVlKGQsaCxnLHYseSxlKXtyZXR1cm4gdiYmIXZbU10mJih2PWVlKHYpKSx5JiYheVtTXSYmKHk9ZWUoeSxlKSksRihmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1PVtdLGw9W10sYz10Lmxlbmd0aCxmPWV8fGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspSShlLHRbcl0sbik7cmV0dXJuIG59KGh8fCIqIixuLm5vZGVUeXBlP1tuXTpuLFtdKSxwPSFkfHwhZSYmaD9mOlooZix1LGQsbixyKTtpZihnP2cocCxzPXl8fChlP2Q6Y3x8dik/W106dCxuLHIpOnM9cCx2KXtpPVoocyxsKSx2KGksW10sbixyKSxvPWkubGVuZ3RoO3doaWxlKG8tLSkoYT1pW29dKSYmKHNbbFtvXV09IShwW2xbb11dPWEpKX1pZihlKXtpZih5fHxkKXtpZih5KXtpPVtdLG89cy5sZW5ndGg7d2hpbGUoby0tKShhPXNbb10pJiZpLnB1c2gocFtvXT1hKTt5KG51bGwscz1bXSxpLHIpfW89cy5sZW5ndGg7d2hpbGUoby0tKShhPXNbb10pJiYtMTwoaT15P3NlLmNhbGwoZSxhKTp1W29dKSYmKGVbaV09ISh0W2ldPWEpKX19ZWxzZSBzPVoocz09PXQ/cy5zcGxpY2UoYyxzLmxlbmd0aCk6cykseT95KG51bGwsdCxzLHIpOmsuYXBwbHkodCxzKX0pfWZ1bmN0aW9uIHRlKGUpe2Zvcih2YXIgaSx0LG4scj1lLmxlbmd0aCxvPWIucmVsYXRpdmVbZVswXS50eXBlXSxhPW98fGIucmVsYXRpdmVbIiAiXSxzPW8/MTowLHU9SihmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9SihmdW5jdGlvbihlKXtyZXR1cm4tMTxzZS5jYWxsKGksZSl9LGEsITApLGM9W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj0hbyYmKG58fHQhPXcpfHwoKGk9dCkubm9kZVR5cGU/dShlLHQsbik6bChlLHQsbikpO3JldHVybiBpPW51bGwscn1dO3M8cjtzKyspaWYodD1iLnJlbGF0aXZlW2Vbc10udHlwZV0pYz1bSihLKGMpLHQpXTtlbHNle2lmKCh0PWIuZmlsdGVyW2Vbc10udHlwZV0uYXBwbHkobnVsbCxlW3NdLm1hdGNoZXMpKVtTXSl7Zm9yKG49KytzO248cjtuKyspaWYoYi5yZWxhdGl2ZVtlW25dLnR5cGVdKWJyZWFrO3JldHVybiBlZSgxPHMmJksoYyksMTxzJiZRKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UodmUsIiQxIiksdCxzPG4mJnRlKGUuc2xpY2UocyxuKSksbjxyJiZ0ZShlPWUuc2xpY2UobikpLG48ciYmUShlKSl9Yy5wdXNoKHQpfXJldHVybiBLKGMpfWZ1bmN0aW9uIG5lKGUsdCl7dmFyIG4sdix5LG0seCxyLGk9W10sbz1bXSxhPXVbZSsiICJdO2lmKCFhKXt0fHwodD1ZKGUpKSxuPXQubGVuZ3RoO3doaWxlKG4tLSkoYT10ZSh0W25dKSlbU10/aS5wdXNoKGEpOm8ucHVzaChhKTsoYT11KGUsKHY9byxtPTA8KHk9aSkubGVuZ3RoLHg9MDx2Lmxlbmd0aCxyPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dmFyIG8sYSxzLHU9MCxsPSIwIixjPWUmJltdLGY9W10scD13LGQ9ZXx8eCYmYi5maW5kLlRBRygiKiIsaSksaD1FKz1udWxsPT1wPzE6TWF0aC5yYW5kb20oKXx8LjEsZz1kLmxlbmd0aDtmb3IoaSYmKHc9dD09VHx8dHx8aSk7bCE9PWcmJm51bGwhPShvPWRbbF0pO2wrKyl7aWYoeCYmbyl7YT0wLHR8fG8ub3duZXJEb2N1bWVudD09VHx8KFYobyksbj0hQyk7d2hpbGUocz12W2ErK10paWYocyhvLHR8fFQsbikpe2suY2FsbChyLG8pO2JyZWFrfWkmJihFPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXlbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cGUuY2FsbChyKSk7Zj1aKGYpfWsuYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3kubGVuZ3RoJiZjZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoRT1oLHc9cCksY30sbT9GKHIpOnIpKSkuc2VsZWN0b3I9ZX1yZXR1cm4gYX1mdW5jdGlvbiByZShlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUsYz0hciYmWShlPWwuc2VsZWN0b3J8fGUpO2lmKG49bnx8W10sMT09PWMubGVuZ3RoKXtpZigyPChvPWNbMF09Y1swXS5zbGljZSgwKSkubGVuZ3RoJiYiSUQiPT09KGE9b1swXSkudHlwZSYmOT09PXQubm9kZVR5cGUmJkMmJmIucmVsYXRpdmVbb1sxXS50eXBlXSl7aWYoISh0PShiLmZpbmQuSUQoYS5tYXRjaGVzWzBdLnJlcGxhY2UoTyxQKSx0KXx8W10pWzBdKSlyZXR1cm4gbjtsJiYodD10LnBhcmVudE5vZGUpLGU9ZS5zbGljZShvLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPUQubmVlZHNDb250ZXh0LnRlc3QoZSk/MDpvLmxlbmd0aDt3aGlsZShpLS0pe2lmKGE9b1tpXSxiLnJlbGF0aXZlW3M9YS50eXBlXSlicmVhaztpZigodT1iLmZpbmRbc10pJiYocj11KGEubWF0Y2hlc1swXS5yZXBsYWNlKE8sUCksSC50ZXN0KG9bMF0udHlwZSkmJlUodC5wYXJlbnROb2RlKXx8dCkpKXtpZihvLnNwbGljZShpLDEpLCEoZT1yLmxlbmd0aCYmUShvKSkpcmV0dXJuIGsuYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fG5lKGUsYykpKHIsdCwhQyxuLCF0fHxILnRlc3QoZSkmJlUodC5wYXJlbnROb2RlKXx8dCksbn1HLnByb3RvdHlwZT1iLmZpbHRlcnM9Yi5wc2V1ZG9zLGIuc2V0RmlsdGVycz1uZXcgRyxsZS5zb3J0U3RhYmxlPVMuc3BsaXQoIiIpLnNvcnQobCkuam9pbigiIik9PT1TLFYoKSxsZS5zb3J0RGV0YWNoZWQ9JChmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKFQuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZS5maW5kPUksY2UuZXhwclsiOiJdPWNlLmV4cHIucHNldWRvcyxjZS51bmlxdWU9Y2UudW5pcXVlU29ydCxJLmNvbXBpbGU9bmUsSS5zZWxlY3Q9cmUsSS5zZXREb2N1bWVudD1WLEkudG9rZW5pemU9WSxJLmVzY2FwZT1jZS5lc2NhcGVTZWxlY3RvcixJLmdldFRleHQ9Y2UudGV4dCxJLmlzWE1MPWNlLmlzWE1MRG9jLEkuc2VsZWN0b3JzPWNlLmV4cHIsSS5zdXBwb3J0PWNlLnN1cHBvcnQsSS51bmlxdWVTb3J0PWNlLnVuaXF1ZVNvcnR9KCk7dmFyIGQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJmNlKGUpLmlzKG4pKWJyZWFrO3IucHVzaChlKX1yZXR1cm4gcn0saD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1bXTtlO2U9ZS5uZXh0U2libGluZykxPT09ZS5ub2RlVHlwZSYmZSE9PXQmJm4ucHVzaChlKTtyZXR1cm4gbn0sYj1jZS5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx3PS9ePChbYS16XVteXC9cMD46XHgyMFx0XHJcblxmXSopW1x4MjBcdFxyXG5cZl0qXC8/Pig/OjxcL1wxPnwpJC9pO2Z1bmN0aW9uIFQoZSxuLHIpe3JldHVybiB2KG4pP2NlLmdyZXAoZSxmdW5jdGlvbihlLHQpe3JldHVybiEhbi5jYWxsKGUsdCxlKSE9PXJ9KTpuLm5vZGVUeXBlP2NlLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP2NlLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4tMTxzZS5jYWxsKG4sZSkhPT1yfSk6Y2UuZmlsdGVyKG4sZSxyKX1jZS5maWx0ZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRbMF07cmV0dXJuIG4mJihlPSI6bm90KCIrZSsiKSIpLDE9PT10Lmxlbmd0aCYmMT09PXIubm9kZVR5cGU/Y2UuZmluZC5tYXRjaGVzU2VsZWN0b3IocixlKT9bcl06W106Y2UuZmluZC5tYXRjaGVzKGUsY2UuZ3JlcCh0LGZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZX0pKX0sY2UuZm4uZXh0ZW5kKHtmaW5kOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLmxlbmd0aCxpPXRoaXM7aWYoInN0cmluZyIhPXR5cGVvZiBlKXJldHVybiB0aGlzLnB1c2hTdGFjayhjZShlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoY2UuY29udGFpbnMoaVt0XSx0aGlzKSlyZXR1cm4hMH0pKTtmb3Iobj10aGlzLnB1c2hTdGFjayhbXSksdD0wO3Q8cjt0KyspY2UuZmluZChlLGlbdF0sbik7cmV0dXJuIDE8cj9jZS51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhVCh0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmYi50ZXN0KGUpP2NlKGUpOmV8fFtdLCExKS5sZW5ndGh9fSk7dmFyIGssUz0vXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSspKSQvOyhjZS5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8aywic3RyaW5nIj09dHlwZW9mIGUpe2lmKCEocj0iPCI9PT1lWzBdJiYiPiI9PT1lW2UubGVuZ3RoLTFdJiYzPD1lLmxlbmd0aD9bbnVsbCxlLG51bGxdOlMuZXhlYyhlKSl8fCFyWzFdJiZ0KXJldHVybiF0fHx0LmpxdWVyeT8odHx8bikuZmluZChlKTp0aGlzLmNvbnN0cnVjdG9yKHQpLmZpbmQoZSk7aWYoclsxXSl7aWYodD10IGluc3RhbmNlb2YgY2U/dFswXTp0LGNlLm1lcmdlKHRoaXMsY2UucGFyc2VIVE1MKHJbMV0sdCYmdC5ub2RlVHlwZT90Lm93bmVyRG9jdW1lbnR8fHQ6QywhMCkpLHcudGVzdChyWzFdKSYmY2UuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KXYodGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1DLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTp2KGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKGNlKTpjZS5tYWtlQXJyYXkoZSx0aGlzKX0pLnByb3RvdHlwZT1jZS5mbixrPWNlKEMpO3ZhciBFPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLGo9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ZnVuY3Rpb24gQShlLHQpe3doaWxlKChlPWVbdF0pJiYxIT09ZS5ub2RlVHlwZSk7cmV0dXJuIGV9Y2UuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9Y2UoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoY2UuY29udGFpbnModGhpcyx0W2VdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wLGk9dGhpcy5sZW5ndGgsbz1bXSxhPSJzdHJpbmciIT10eXBlb2YgZSYmY2UoZSk7aWYoIWIudGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZjZS5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP2NlLnVuaXF1ZVNvcnQobyk6byl9LGluZGV4OmZ1bmN0aW9uKGUpe3JldHVybiBlPyJzdHJpbmciPT10eXBlb2YgZT9zZS5jYWxsKGNlKGUpLHRoaXNbMF0pOnNlLmNhbGwodGhpcyxlLmpxdWVyeT9lWzBdOmUpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGNlLnVuaXF1ZVNvcnQoY2UubWVyZ2UodGhpcy5nZXQoKSxjZShlLHQpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmFkZChudWxsPT1lP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGUpKX19KSxjZS5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiYxMSE9PXQubm9kZVR5cGU/dDpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGUpe3JldHVybiBkKGUsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZChlLCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbihlKXtyZXR1cm4gQShlLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGUpe3JldHVybiBBKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBkKGUsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oZSl7cmV0dXJuIGQoZSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQoZSwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkKGUsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3JldHVybiBoKChlLnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLGUpfSxjaGlsZHJlbjpmdW5jdGlvbihlKXtyZXR1cm4gaChlLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZS5jb250ZW50RG9jdW1lbnQmJnIoZS5jb250ZW50RG9jdW1lbnQpP2UuY29udGVudERvY3VtZW50OihmZShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLGNlLm1lcmdlKFtdLGUuY2hpbGROb2RlcykpfX0sZnVuY3Rpb24ocixpKXtjZS5mbltyXT1mdW5jdGlvbihlLHQpe3ZhciBuPWNlLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPWNlLmZpbHRlcih0LG4pKSwxPHRoaXMubGVuZ3RoJiYoaltyXXx8Y2UudW5pcXVlU29ydChuKSxFLnRlc3QocikmJm4ucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgRD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE4oZSl7cmV0dXJuIGV9ZnVuY3Rpb24gcShlKXt0aHJvdyBlfWZ1bmN0aW9uIEwoZSx0LG4scil7dmFyIGk7dHJ5e2UmJnYoaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmdihpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fWNlLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxjZS5lYWNoKGUubWF0Y2goRCl8fFtdLGZ1bmN0aW9uKGUsdCl7blt0XT0hMH0pLG4pOmNlLmV4dGVuZCh7fSxyKTt2YXIgaSx0LG8sYSxzPVtdLHU9W10sbD0tMSxjPWZ1bmN0aW9uKCl7Zm9yKGE9YXx8ci5vbmNlLG89aT0hMDt1Lmxlbmd0aDtsPS0xKXt0PXUuc2hpZnQoKTt3aGlsZSgrK2w8cy5sZW5ndGgpITE9PT1zW2xdLmFwcGx5KHRbMF0sdFsxXSkmJnIuc3RvcE9uRmFsc2UmJihsPXMubGVuZ3RoLHQ9ITEpfXIubWVtb3J5fHwodD0hMSksaT0hMSxhJiYocz10P1tdOiIiKX0sZj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIHMmJih0JiYhaSYmKGw9cy5sZW5ndGgtMSx1LnB1c2godCkpLGZ1bmN0aW9uIG4oZSl7Y2UuZWFjaChlLGZ1bmN0aW9uKGUsdCl7dih0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT14KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGNlLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGUsdCl7dmFyIG47d2hpbGUoLTE8KG49Y2UuaW5BcnJheSh0LHMsbikpKXMuc3BsaWNlKG4sMSksbjw9bCYmbC0tfSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlPy0xPGNlLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LGNlLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZSl7dmFyIG89W1sibm90aWZ5IiwicHJvZ3Jlc3MiLGNlLkNhbGxiYWNrcygibWVtb3J5IiksY2UuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixjZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksY2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDEsInJlamVjdGVkIl1dLGk9InBlbmRpbmciLGE9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBzLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sImNhdGNoIjpmdW5jdGlvbihlKXtyZXR1cm4gYS50aGVuKG51bGwsZSl9LHBpcGU6ZnVuY3Rpb24oKXt2YXIgaT1hcmd1bWVudHM7cmV0dXJuIGNlLkRlZmVycmVkKGZ1bmN0aW9uKHIpe2NlLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPXYoaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJnYoZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLHYodCk/cz90LmNhbGwoZSxsKHUsbyxOLHMpLGwodSxvLHEscykpOih1KyssdC5jYWxsKGUsbCh1LG8sTixzKSxsKHUsbyxxLHMpLGwodSxvLE4sby5ub3RpZnlXaXRoKSkpOihhIT09TiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Y2UuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayYmY2UuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhlLHQuZXJyb3IpLHU8PWkrMSYmKGEhPT1xJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihjZS5EZWZlcnJlZC5nZXRFcnJvckhvb2s/dC5lcnJvcj1jZS5EZWZlcnJlZC5nZXRFcnJvckhvb2soKTpjZS5EZWZlcnJlZC5nZXRTdGFja0hvb2smJih0LmVycm9yPWNlLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxpZS5zZXRUaW1lb3V0KHQpKX19cmV0dXJuIGNlLkRlZmVycmVkKGZ1bmN0aW9uKGUpe29bMF1bM10uYWRkKGwoMCxlLHYocik/cjpOLGUubm90aWZ5V2l0aCkpLG9bMV1bM10uYWRkKGwoMCxlLHYodCk/dDpOKSksb1syXVszXS5hZGQobCgwLGUsdihuKT9uOnEpKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZT9jZS5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gY2UuZWFjaChvLGZ1bmN0aW9uKGUsdCl7dmFyIG49dFsyXSxyPXRbNV07YVt0WzFdXT1uLmFkZCxyJiZuLmFkZChmdW5jdGlvbigpe2k9cn0sb1szLWVdWzJdLmRpc2FibGUsb1szLWVdWzNdLmRpc2FibGUsb1swXVsyXS5sb2NrLG9bMF1bM10ubG9jayksbi5hZGQodFszXS5maXJlKSxzW3RbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIHNbdFswXSsiV2l0aCJdKHRoaXM9PT1zP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sc1t0WzBdKyJXaXRoIl09bi5maXJlV2l0aH0pLGEucHJvbWlzZShzKSxlJiZlLmNhbGwocyxzKSxzfSx3aGVuOmZ1bmN0aW9uKGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGgsdD1uLHI9QXJyYXkodCksaT1hZS5jYWxsKGFyZ3VtZW50cyksbz1jZS5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9hZS5jYWxsKGFyZ3VtZW50cyk6ZSwtLW58fG8ucmVzb2x2ZVdpdGgocixpKX19O2lmKG48PTEmJihMKGUsby5kb25lKGEodCkpLnJlc29sdmUsby5yZWplY3QsIW4pLCJwZW5kaW5nIj09PW8uc3RhdGUoKXx8dihpW3RdJiZpW3RdLnRoZW4pKSlyZXR1cm4gby50aGVuKCk7d2hpbGUodC0tKUwoaVt0XSxhKHQpLG8ucmVqZWN0KTtyZXR1cm4gby5wcm9taXNlKCl9fSk7dmFyIEg9L14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87Y2UuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe2llLmNvbnNvbGUmJmllLmNvbnNvbGUud2FybiYmZSYmSC50ZXN0KGUubmFtZSkmJmllLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0sY2UucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7aWUuc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX07dmFyIE89Y2UuRGVmZXJyZWQoKTtmdW5jdGlvbiBQKCl7Qy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixQKSxpZS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixQKSxjZS5yZWFkeSgpfWNlLmZuLnJlYWR5PWZ1bmN0aW9uKGUpe3JldHVybiBPLnRoZW4oZSlbImNhdGNoIl0oZnVuY3Rpb24oZSl7Y2UucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxjZS5leHRlbmQoe2lzUmVhZHk6ITEscmVhZHlXYWl0OjEscmVhZHk6ZnVuY3Rpb24oZSl7KCEwPT09ZT8tLWNlLnJlYWR5V2FpdDpjZS5pc1JlYWR5KXx8KGNlLmlzUmVhZHk9ITApIT09ZSYmMDwtLWNlLnJlYWR5V2FpdHx8Ty5yZXNvbHZlV2l0aChDLFtjZV0pfX0pLGNlLnJlYWR5LnRoZW49Ty50aGVuLCJjb21wbGV0ZSI9PT1DLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PUMucmVhZHlTdGF0ZSYmIUMuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP2llLnNldFRpbWVvdXQoY2UucmVhZHkpOihDLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFApLGllLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLFApKTt2YXIgTT1mdW5jdGlvbihlLHQsbixyLGksbyxhKXt2YXIgcz0wLHU9ZS5sZW5ndGgsbD1udWxsPT1uO2lmKCJvYmplY3QiPT09eChuKSlmb3IocyBpbiBpPSEwLG4pTShlLHQscyxuW3NdLCEwLG8sYSk7ZWxzZSBpZih2b2lkIDAhPT1yJiYoaT0hMCx2KHIpfHwoYT0hMCksbCYmKGE/KHQuY2FsbChlLHIpLHQ9bnVsbCk6KGw9dCx0PWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbC5jYWxsKGNlKGUpLG4pfSkpLHQpKWZvcig7czx1O3MrKyl0KGVbc10sbixhP3I6ci5jYWxsKGVbc10scyx0KGVbc10sbikpKTtyZXR1cm4gaT9lOmw/dC5jYWxsKGUpOnU/dChlWzBdLG4pOm99LFI9L14tbXMtLyxJPS8tKFthLXpdKS9nO2Z1bmN0aW9uIFcoZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfWZ1bmN0aW9uIEYoZSl7cmV0dXJuIGUucmVwbGFjZShSLCJtcy0iKS5yZXBsYWNlKEksVyl9dmFyICQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfHw5PT09ZS5ub2RlVHlwZXx8IStlLm5vZGVUeXBlfTtmdW5jdGlvbiBCKCl7dGhpcy5leHBhbmRvPWNlLmV4cGFuZG8rQi51aWQrK31CLnVpZD0xLEIucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LCQoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW0YodCldPW47ZWxzZSBmb3IociBpbiB0KWlbRihyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtGKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChGKToodD1GKHQpKWluIHI/W3RdOnQubWF0Y2goRCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxjZS5pc0VtcHR5T2JqZWN0KHIpKSYmKGUubm9kZVR5cGU/ZVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgZVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT10JiYhY2UuaXNFbXB0eU9iamVjdCh0KX19O3ZhciBfPW5ldyBCLHo9bmV3IEIsWD0vXig/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLFU9L1tBLVpdL2c7ZnVuY3Rpb24gVihlLHQsbil7dmFyIHIsaTtpZih2b2lkIDA9PT1uJiYxPT09ZS5ub2RlVHlwZSlpZihyPSJkYXRhLSIrdC5yZXBsYWNlKFUsIi0kJiIpLnRvTG93ZXJDYXNlKCksInN0cmluZyI9PXR5cGVvZihuPWUuZ2V0QXR0cmlidXRlKHIpKSl7dHJ5e249InRydWUiPT09KGk9bil8fCJmYWxzZSIhPT1pJiYoIm51bGwiPT09aT9udWxsOmk9PT0raSsiIj8raTpYLnRlc3QoaSk/SlNPTi5wYXJzZShpKTppKX1jYXRjaChlKXt9ei5zZXQoZSx0LG4pfWVsc2Ugbj12b2lkIDA7cmV0dXJuIG59Y2UuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB6Lmhhc0RhdGEoZSl8fF8uaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHouYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe3oucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gXy5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe18ucmVtb3ZlKGUsdCl9fSksY2UuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKG4sZSl7dmFyIHQscixpLG89dGhpc1swXSxhPW8mJm8uYXR0cmlidXRlcztpZih2b2lkIDA9PT1uKXtpZih0aGlzLmxlbmd0aCYmKGk9ei5nZXQobyksMT09PW8ubm9kZVR5cGUmJiFfLmdldChvLCJoYXNEYXRhQXR0cnMiKSkpe3Q9YS5sZW5ndGg7d2hpbGUodC0tKWFbdF0mJjA9PT0ocj1hW3RdLm5hbWUpLmluZGV4T2YoImRhdGEtIikmJihyPUYoci5zbGljZSg1KSksVihvLHIsaVtyXSkpO18uc2V0KG8sImhhc0RhdGFBdHRycyIsITApfXJldHVybiBpfXJldHVybiJvYmplY3QiPT10eXBlb2Ygbj90aGlzLmVhY2goZnVuY3Rpb24oKXt6LnNldCh0aGlzLG4pfSk6TSh0aGlzLGZ1bmN0aW9uKGUpe3ZhciB0O2lmKG8mJnZvaWQgMD09PWUpcmV0dXJuIHZvaWQgMCE9PSh0PXouZ2V0KG8sbikpP3Q6dm9pZCAwIT09KHQ9VihvLG4pKT90OnZvaWQgMDt0aGlzLmVhY2goZnVuY3Rpb24oKXt6LnNldCh0aGlzLG4sZSl9KX0sbnVsbCxlLDE8YXJndW1lbnRzLmxlbmd0aCxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ei5yZW1vdmUodGhpcyxlKX0pfX0pLGNlLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKGUpcmV0dXJuIHQ9KHR8fCJmeCIpKyJxdWV1ZSIscj1fLmdldChlLHQpLG4mJighcnx8QXJyYXkuaXNBcnJheShuKT9yPV8uYWNjZXNzKGUsdCxjZS5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Y2UucXVldWUoZSx0KSxyPW4ubGVuZ3RoLGk9bi5zaGlmdCgpLG89Y2UuX3F1ZXVlSG9va3MoZSx0KTsiaW5wcm9ncmVzcyI9PT1pJiYoaT1uLnNoaWZ0KCksci0tKSxpJiYoImZ4Ij09PXQmJm4udW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBvLnN0b3AsaS5jYWxsKGUsZnVuY3Rpb24oKXtjZS5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIF8uZ2V0KGUsbil8fF8uYWNjZXNzKGUsbix7ZW1wdHk6Y2UuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe18ucmVtb3ZlKGUsW3QrInF1ZXVlIixuXSl9KX0pfX0pLGNlLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24odCxuKXt2YXIgZT0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49dCx0PSJmeCIsZS0tKSxhcmd1bWVudHMubGVuZ3RoPGU/Y2UucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Y2UucXVldWUodGhpcyx0LG4pO2NlLl9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PWVbMF0mJmNlLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtjZS5kZXF1ZXVlKHRoaXMsZSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5xdWV1ZShlfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MSxpPWNlLkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0tcnx8aS5yZXNvbHZlV2l0aChvLFtvXSl9OyJzdHJpbmciIT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSkobj1fLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSkmJm4uZW1wdHkmJihyKyssbi5lbXB0eS5hZGQocykpO3JldHVybiBzKCksaS5wcm9taXNlKHQpfX0pO3ZhciBHPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFk9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK0crIikoW2EteiVdKikkIiwiaSIpLFE9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxKPUMuZG9jdW1lbnRFbGVtZW50LEs9ZnVuY3Rpb24oZSl7cmV0dXJuIGNlLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sWj17Y29tcG9zZWQ6ITB9O0ouZ2V0Um9vdE5vZGUmJihLPWZ1bmN0aW9uKGUpe3JldHVybiBjZS5jb250YWlucyhlLm93bmVyRG9jdW1lbnQsZSl8fGUuZ2V0Um9vdE5vZGUoWik9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgZWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmSyhlKSYmIm5vbmUiPT09Y2UuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gdGUoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBjZS5jc3MoZSx0LCIiKX0sdT1zKCksbD1uJiZuWzNdfHwoY2UuY3NzTnVtYmVyW3RdPyIiOiJweCIpLGM9ZS5ub2RlVHlwZSYmKGNlLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmWS5leGVjKGNlLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pY2Uuc3R5bGUoZSx0LGMrbCksKDEtbykqKDEtKG89cygpL3V8fC41KSk8PTAmJihhPTApLGMvPW87Yyo9MixjZS5zdHlsZShlLHQsYytsKSxuPW58fFtdfXJldHVybiBuJiYoYz0rY3x8K3V8fDAsaT1uWzFdP2MrKG5bMV0rMSkqblsyXTorblsyXSxyJiYoci51bml0PWwsci5zdGFydD1jLHIuZW5kPWkpKSxpfXZhciBuZT17fTtmdW5jdGlvbiByZShlLHQpe2Zvcih2YXIgbixyLGksbyxhLHMsdSxsPVtdLGM9MCxmPWUubGVuZ3RoO2M8ZjtjKyspKHI9ZVtjXSkuc3R5bGUmJihuPXIuc3R5bGUuZGlzcGxheSx0Pygibm9uZSI9PT1uJiYobFtjXT1fLmdldChyLCJkaXNwbGF5Iil8fG51bGwsbFtjXXx8KHIuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ci5zdHlsZS5kaXNwbGF5JiZlZShyKSYmKGxbY109KHU9YT1vPXZvaWQgMCxhPShpPXIpLm93bmVyRG9jdW1lbnQscz1pLm5vZGVOYW1lLCh1PW5lW3NdKXx8KG89YS5ib2R5LmFwcGVuZENoaWxkKGEuY3JlYXRlRWxlbWVudChzKSksdT1jZS5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSxuZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsXy5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1jZS5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gcmUodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gcmUodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlP2U/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZWUodGhpcyk/Y2UodGhpcykuc2hvdygpOmNlKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciB4ZSxiZSx3ZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxUZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxDZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7eGU9Qy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGJlPUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxiZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksYmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLHhlLmFwcGVuZENoaWxkKGJlKSxsZS5jaGVja0Nsb25lPXhlLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCx4ZS5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLGxlLm5vQ2xvbmVDaGVja2VkPSEheGUuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLHhlLmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlvbj4iLGxlLm9wdGlvbj0hIXhlLmxhc3RDaGlsZDt2YXIga2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiBTZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmZmUoZSx0KT9jZS5tZXJnZShbZV0sbik6bn1mdW5jdGlvbiBFZShlLHQpe2Zvcih2YXIgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKylfLnNldChlW25dLCJnbG9iYWxFdmFsIiwhdHx8Xy5nZXQodFtuXSwiZ2xvYmFsRXZhbCIpKX1rZS50Ym9keT1rZS50Zm9vdD1rZS5jb2xncm91cD1rZS5jYXB0aW9uPWtlLnRoZWFkLGtlLnRoPWtlLnRkLGxlLm9wdGlvbnx8KGtlLm9wdGdyb3VwPWtlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgamU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24gQWUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXgobykpY2UubWVyZ2UocCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKGplLnRlc3Qobykpe2E9YXx8Zi5hcHBlbmRDaGlsZCh0LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxzPShUZS5leGVjKG8pfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLHU9a2Vbc118fGtlLl9kZWZhdWx0LGEuaW5uZXJIVE1MPXVbMV0rY2UuaHRtbFByZWZpbHRlcihvKSt1WzJdLGM9dVswXTt3aGlsZShjLS0pYT1hLmxhc3RDaGlsZDtjZS5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxjZS5pbkFycmF5KG8scikpaSYmaS5wdXNoKG8pO2Vsc2UgaWYobD1LKG8pLGE9U2UoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmRWUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKUNlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgRGU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIE5lKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWUoKXtyZXR1cm4hMX1mdW5jdGlvbiBMZShlLHQsbixyLGksbyl7dmFyIGEscztpZigib2JqZWN0Ij09dHlwZW9mIHQpe2ZvcihzIGluInN0cmluZyIhPXR5cGVvZiBuJiYocj1yfHxuLG49dm9pZCAwKSx0KUxlKGUscyxuLHIsdFtzXSxvKTtyZXR1cm4gZX1pZihudWxsPT1yJiZudWxsPT1pPyhpPW4scj1uPXZvaWQgMCk6bnVsbD09aSYmKCJzdHJpbmciPT10eXBlb2Ygbj8oaT1yLHI9dm9pZCAwKTooaT1yLHI9bixuPXZvaWQgMCkpLCExPT09aSlpPXFlO2Vsc2UgaWYoIWkpcmV0dXJuIGU7cmV0dXJuIDE9PT1vJiYoYT1pLChpPWZ1bmN0aW9uKGUpe3JldHVybiBjZSgpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9YS5ndWlkfHwoYS5ndWlkPWNlLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe2NlLmV2ZW50LmFkZCh0aGlzLHQsaSxyLG4pfSl9ZnVuY3Rpb24gSGUoZSxyLHQpe3Q/KF8uc2V0KGUsciwhMSksY2UuZXZlbnQuYWRkKGUscix7bmFtZXNwYWNlOiExLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIHQsbj1fLmdldCh0aGlzLHIpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbcl0pe2lmKG4pKGNlLmV2ZW50LnNwZWNpYWxbcl18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihuPWFlLmNhbGwoYXJndW1lbnRzKSxfLnNldCh0aGlzLHIsbiksdGhpc1tyXSgpLHQ9Xy5nZXQodGhpcyxyKSxfLnNldCh0aGlzLHIsITEpLG4hPT10KXJldHVybiBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGUucHJldmVudERlZmF1bHQoKSx0fWVsc2UgbiYmKF8uc2V0KHRoaXMscixjZS5ldmVudC50cmlnZ2VyKG5bMF0sbi5zbGljZSgxKSx0aGlzKSksZS5zdG9wUHJvcGFnYXRpb24oKSxlLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPU5lKX19KSk6dm9pZCAwPT09Xy5nZXQoZSxyKSYmY2UuZXZlbnQuYWRkKGUscixOZSl9Y2UuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9Xy5nZXQodCk7aWYoJCh0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmY2UuZmluZC5tYXRjaGVzU2VsZWN0b3IoSixpKSxuLmd1aWR8fChuLmd1aWQ9Y2UuZ3VpZCsrKSwodT12LmV2ZW50cyl8fCh1PXYuZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChhPXYuaGFuZGxlKXx8KGE9di5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBjZSYmY2UuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP2NlLmV2ZW50LmRpc3BhdGNoLmFwcGx5KHQsYXJndW1lbnRzKTp2b2lkIDB9KSxsPShlPShlfHwiIikubWF0Y2goRCl8fFsiIl0pLmxlbmd0aDt3aGlsZShsLS0pZD1nPShzPURlLmV4ZWMoZVtsXSl8fFtdKVsxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksZCYmKGY9Y2UuZXZlbnQuc3BlY2lhbFtkXXx8e30sZD0oaT9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8ZCxmPWNlLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Y2UuZXh0ZW5kKHt0eXBlOmQsb3JpZ1R5cGU6ZyxkYXRhOnIsaGFuZGxlcjpuLGd1aWQ6bi5ndWlkLHNlbGVjdG9yOmksbmVlZHNDb250ZXh0OmkmJmNlLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksbmFtZXNwYWNlOmguam9pbigiLiIpfSxvKSwocD11W2RdKXx8KChwPXVbZF09W10pLmRlbGVnYXRlQ291bnQ9MCxmLnNldHVwJiYhMSE9PWYuc2V0dXAuY2FsbCh0LHIsaCxhKXx8dC5hZGRFdmVudExpc3RlbmVyJiZ0LmFkZEV2ZW50TGlzdGVuZXIoZCxhKSksZi5hZGQmJihmLmFkZC5jYWxsKHQsYyksYy5oYW5kbGVyLmd1aWR8fChjLmhhbmRsZXIuZ3VpZD1uLmd1aWQpKSxpP3Auc3BsaWNlKHAuZGVsZWdhdGVDb3VudCsrLDAsYyk6cC5wdXNoKGMpLGNlLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9Xy5oYXNEYXRhKGUpJiZfLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChEKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9RGUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPWNlLmV2ZW50LnNwZWNpYWxbZF18fHt9LHA9dVtkPShyP2YuZGVsZWdhdGVUeXBlOmYuYmluZFR5cGUpfHxkXXx8W10scz1zWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitoLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGE9bz1wLmxlbmd0aDt3aGlsZShvLS0pYz1wW29dLCFpJiZnIT09Yy5vcmlnVHlwZXx8biYmbi5ndWlkIT09Yy5ndWlkfHxzJiYhcy50ZXN0KGMubmFtZXNwYWNlKXx8ciYmciE9PWMuc2VsZWN0b3ImJigiKioiIT09cnx8IWMuc2VsZWN0b3IpfHwocC5zcGxpY2UobywxKSxjLnNlbGVjdG9yJiZwLmRlbGVnYXRlQ291bnQtLSxmLnJlbW92ZSYmZi5yZW1vdmUuY2FsbChlLGMpKTthJiYhcC5sZW5ndGgmJihmLnRlYXJkb3duJiYhMSE9PWYudGVhcmRvd24uY2FsbChlLGgsdi5oYW5kbGUpfHxjZS5yZW1vdmVFdmVudChlLGQsdi5oYW5kbGUpLGRlbGV0ZSB1W2RdKX1lbHNlIGZvcihkIGluIHUpY2UuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Y2UuaXNFbXB0eU9iamVjdCh1KSYmXy5yZW1vdmUoZSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLHU9Y2UuZXZlbnQuZml4KGUpLGw9KF8uZ2V0KHRoaXMsImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVt1LnR5cGVdfHxbXSxjPWNlLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Y2UuZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLHUsbCksdD0wO3doaWxlKChpPWFbdCsrXSkmJiF1LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3UuY3VycmVudFRhcmdldD1pLmVsZW0sbj0wO3doaWxlKChvPWkuaGFuZGxlcnNbbisrXSkmJiF1LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpdS5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhdS5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwodS5oYW5kbGVPYmo9byx1LmRhdGE9by5kYXRhLHZvaWQgMCE9PShyPSgoY2UuZXZlbnQuc3BlY2lhbFtvLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8by5oYW5kbGVyKS5hcHBseShpLmVsZW0scykpJiYhMT09PSh1LnJlc3VsdD1yKSYmKHUucHJldmVudERlZmF1bHQoKSx1LnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGMucG9zdERpc3BhdGNoJiZjLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsdSksdS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGEscz1bXSx1PXQuZGVsZWdhdGVDb3VudCxsPWUudGFyZ2V0O2lmKHUmJmwubm9kZVR5cGUmJiEoImNsaWNrIj09PWUudHlwZSYmMTw9ZS5idXR0b24pKWZvcig7bCE9PXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWwubm9kZVR5cGUmJigiY2xpY2siIT09ZS50eXBlfHwhMCE9PWwuZGlzYWJsZWQpKXtmb3Iobz1bXSxhPXt9LG49MDtuPHU7bisrKXZvaWQgMD09PWFbaT0ocj10W25dKS5zZWxlY3RvcisiICJdJiYoYVtpXT1yLm5lZWRzQ29udGV4dD8tMTxjZShpLHRoaXMpLmluZGV4KGwpOmNlLmZpbmQoaSx0aGlzLG51bGwsW2xdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6b30pfXJldHVybiBsPXRoaXMsdTx0Lmxlbmd0aCYmcy5wdXNoKHtlbGVtOmwsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoY2UuRXZlbnQucHJvdG90eXBlLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDp2KGUpP2Z1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiBlKHRoaXMub3JpZ2luYWxFdmVudCl9OmZ1bmN0aW9uKCl7aWYodGhpcy5vcmlnaW5hbEV2ZW50KXJldHVybiB0aGlzLm9yaWdpbmFsRXZlbnRbdF19LHNldDpmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSl9fSl9LGZpeDpmdW5jdGlvbihlKXtyZXR1cm4gZVtjZS5leHBhbmRvXT9lOm5ldyBjZS5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiB3ZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJmZlKHQsImlucHV0IikmJkhlKHQsImNsaWNrIiwhMCksITF9LHRyaWdnZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc3x8ZTtyZXR1cm4gd2UudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZmZSh0LCJpbnB1dCIpJiZIZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gd2UudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZmZSh0LCJpbnB1dCIpJiZfLmdldCh0LCJjbGljayIpfHxmZSh0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihlKXt2b2lkIDAhPT1lLnJlc3VsdCYmZS5vcmlnaW5hbEV2ZW50JiYoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWUucmVzdWx0KX19fX0sY2UucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LGNlLkV2ZW50PWZ1bmN0aW9uKGUsdCl7aWYoISh0aGlzIGluc3RhbmNlb2YgY2UuRXZlbnQpKXJldHVybiBuZXcgY2UuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT9OZTpxZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZjZS5leHRlbmQodGhpcyx0KSx0aGlzLnRpbWVTdGFtcD1lJiZlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW2NlLmV4cGFuZG9dPSEwfSxjZS5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmNlLkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpxZSxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpxZSxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpxZSxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1OZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1OZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9TmUsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LGNlLmVhY2goe2FsdEtleTohMCxidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsY2hhbmdlZFRvdWNoZXM6ITAsY3RybEtleTohMCxkZXRhaWw6ITAsZXZlbnRQaGFzZTohMCxtZXRhS2V5OiEwLHBhZ2VYOiEwLHBhZ2VZOiEwLHNoaWZ0S2V5OiEwLHZpZXc6ITAsImNoYXIiOiEwLGNvZGU6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRvbnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVySWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ITB9LGNlLmV2ZW50LmFkZFByb3ApLGNlLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKHIsaSl7ZnVuY3Rpb24gbyhlKXtpZihDLmRvY3VtZW50TW9kZSl7dmFyIHQ9Xy5nZXQodGhpcywiaGFuZGxlIiksbj1jZS5ldmVudC5maXgoZSk7bi50eXBlPSJmb2N1c2luIj09PWUudHlwZT8iZm9jdXMiOiJibHVyIixuLmlzU2ltdWxhdGVkPSEwLHQoZSksbi50YXJnZXQ9PT1uLmN1cnJlbnRUYXJnZXQmJnQobil9ZWxzZSBjZS5ldmVudC5zaW11bGF0ZShpLGUudGFyZ2V0LGNlLmV2ZW50LmZpeChlKSl9Y2UuZXZlbnQuc3BlY2lhbFtyXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZTtpZihIZSh0aGlzLHIsITApLCFDLmRvY3VtZW50TW9kZSlyZXR1cm4hMTsoZT1fLmdldCh0aGlzLGkpKXx8dGhpcy5hZGRFdmVudExpc3RlbmVyKGksbyksXy5zZXQodGhpcyxpLChlfHwwKSsxKX0sdHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLHIpLCEwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBlO2lmKCFDLmRvY3VtZW50TW9kZSlyZXR1cm4hMTsoZT1fLmdldCh0aGlzLGkpLTEpP18uc2V0KHRoaXMsaSxlKToodGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGksbyksXy5yZW1vdmUodGhpcyxpKSl9LF9kZWZhdWx0OmZ1bmN0aW9uKGUpe3JldHVybiBfLmdldChlLnRhcmdldCxyKX0sZGVsZWdhdGVUeXBlOml9LGNlLmV2ZW50LnNwZWNpYWxbaV09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLHQ9Qy5kb2N1bWVudE1vZGU/dGhpczplLG49Xy5nZXQodCxpKTtufHwoQy5kb2N1bWVudE1vZGU/dGhpcy5hZGRFdmVudExpc3RlbmVyKGksbyk6ZS5hZGRFdmVudExpc3RlbmVyKHIsbywhMCkpLF8uc2V0KHQsaSwobnx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLmRvY3VtZW50fHx0aGlzLHQ9Qy5kb2N1bWVudE1vZGU/dGhpczplLG49Xy5nZXQodCxpKS0xO24/Xy5zZXQodCxpLG4pOihDLmRvY3VtZW50TW9kZT90aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSxvKTplLnJlbW92ZUV2ZW50TGlzdGVuZXIocixvLCEwKSxfLnJlbW92ZSh0LGkpKX19fSksY2UuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oZSxpKXtjZS5ldmVudC5zcGVjaWFsW2VdPXtkZWxlZ2F0ZVR5cGU6aSxiaW5kVHlwZTppLGhhbmRsZTpmdW5jdGlvbihlKXt2YXIgdCxuPWUucmVsYXRlZFRhcmdldCxyPWUuaGFuZGxlT2JqO3JldHVybiBuJiYobj09PXRoaXN8fGNlLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxjZS5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBMZSh0aGlzLGUsdCxuLHIpfSxvbmU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIExlKHRoaXMsZSx0LG4sciwxKX0sb2ZmOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKGUmJmUucHJldmVudERlZmF1bHQmJmUuaGFuZGxlT2JqKXJldHVybiByPWUuaGFuZGxlT2JqLGNlKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZT9yLm9yaWdUeXBlKyIuIityLm5hbWVzcGFjZTpyLm9yaWdUeXBlLHIuc2VsZWN0b3Isci5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgZSl7Zm9yKGkgaW4gZSl0aGlzLm9mZihpLHQsZVtpXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT10JiYiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXZvaWQgMCksITE9PT1uJiYobj1xZSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Y2UuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIE9lPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLFBlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLE1lPS9eXHMqPCFcW0NEQVRBXFt8XF1cXT5ccyokL2c7ZnVuY3Rpb24gUmUoZSx0KXtyZXR1cm4gZmUoZSwidGFibGUiKSYmZmUoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZjZShlKS5jaGlsZHJlbigidGJvZHkiKVswXXx8ZX1mdW5jdGlvbiBJZShlKXtyZXR1cm4gZS50eXBlPShudWxsIT09ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2UudHlwZSxlfWZ1bmN0aW9uIFdlKGUpe3JldHVybiJ0cnVlLyI9PT0oZS50eXBlfHwiIikuc2xpY2UoMCw1KT9lLnR5cGU9ZS50eXBlLnNsaWNlKDUpOmUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksZX1mdW5jdGlvbiBGZShlLHQpe3ZhciBuLHIsaSxvLGEscztpZigxPT09dC5ub2RlVHlwZSl7aWYoXy5oYXNEYXRhKGUpJiYocz1fLmdldChlKS5ldmVudHMpKWZvcihpIGluIF8ucmVtb3ZlKHQsImhhbmRsZSBldmVudHMiKSxzKWZvcihuPTAscj1zW2ldLmxlbmd0aDtuPHI7bisrKWNlLmV2ZW50LmFkZCh0LGksc1tpXVtuXSk7ei5oYXNEYXRhKGUpJiYobz16LmFjY2VzcyhlKSxhPWNlLmV4dGVuZCh7fSxvKSx6LnNldCh0LGEpKX19ZnVuY3Rpb24gJGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD12KGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYhbGUuY2hlY2tDbG9uZSYmUGUudGVzdChkKSlyZXR1cm4gbi5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4uZXEoZSk7aCYmKHJbMF09ZC5jYWxsKHRoaXMsZSx0Lmh0bWwoKSkpLCRlKHQscixpLG8pfSk7aWYoZiYmKHQ9KGU9QWUocixuWzBdLm93bmVyRG9jdW1lbnQsITEsbixvKSkuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9dCksdHx8bykpe2ZvcihzPShhPWNlLm1hcChTZShlLCJzY3JpcHQiKSxJZSkpLmxlbmd0aDtjPGY7YysrKXU9ZSxjIT09cCYmKHU9Y2UuY2xvbmUodSwhMCwhMCkscyYmY2UubWVyZ2UoYSxTZSh1LCJzY3JpcHQiKSkpLGkuY2FsbChuW2NdLHUsYyk7aWYocylmb3IobD1hW2EubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsY2UubWFwKGEsV2UpLGM9MDtjPHM7YysrKXU9YVtjXSxDZS50ZXN0KHUudHlwZXx8IiIpJiYhXy5hY2Nlc3ModSwiZ2xvYmFsRXZhbCIpJiZjZS5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Y2UuX2V2YWxVcmwmJiF1Lm5vTW9kdWxlJiZjZS5fZXZhbFVybCh1LnNyYyx7bm9uY2U6dS5ub25jZXx8dS5nZXRBdHRyaWJ1dGUoIm5vbmNlIil9LGwpOm0odS50ZXh0Q29udGVudC5yZXBsYWNlKE1lLCIiKSx1LGwpKX1yZXR1cm4gbn1mdW5jdGlvbiBCZShlLHQsbil7Zm9yKHZhciByLGk9dD9jZS5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fGNlLmNsZWFuRGF0YShTZShyKSksci5wYXJlbnROb2RlJiYobiYmSyhyKSYmRWUoU2Uociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Y2UuZXh0ZW5kKHtodG1sUHJlZmlsdGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxjbG9uZTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGwsYz1lLmNsb25lTm9kZSghMCksZj1LKGUpO2lmKCEobGUubm9DbG9uZUNoZWNrZWR8fDEhPT1lLm5vZGVUeXBlJiYxMSE9PWUubm9kZVR5cGV8fGNlLmlzWE1MRG9jKGUpKSlmb3IoYT1TZShjKSxyPTAsaT0obz1TZShlKSkubGVuZ3RoO3I8aTtyKyspcz1vW3JdLHU9YVtyXSx2b2lkIDAsImlucHV0Ij09PShsPXUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJndlLnRlc3Qocy50eXBlKT91LmNoZWNrZWQ9cy5jaGVja2VkOiJpbnB1dCIhPT1sJiYidGV4dGFyZWEiIT09bHx8KHUuZGVmYXVsdFZhbHVlPXMuZGVmYXVsdFZhbHVlKTtpZih0KWlmKG4pZm9yKG89b3x8U2UoZSksYT1hfHxTZShjKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKUZlKG9bcl0sYVtyXSk7ZWxzZSBGZShlLGMpO3JldHVybiAwPChhPVNlKGMsInNjcmlwdCIpKS5sZW5ndGgmJkVlKGEsIWYmJlNlKGUsInNjcmlwdCIpKSxjfSxjbGVhbkRhdGE6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG4scixpPWNlLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZigkKG4pKXtpZih0PW5bXy5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9jZS5ldmVudC5yZW1vdmUobixyKTpjZS5yZW1vdmVFdmVudChuLHIsdC5oYW5kbGUpO25bXy5leHBhbmRvXT12b2lkIDB9blt6LmV4cGFuZG9dJiYoblt6LmV4cGFuZG9dPXZvaWQgMCl9fX0pLGNlLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBCZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIEJlKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE0odGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9jZS50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PWUpfSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuICRlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHxSZSh0aGlzLGUpLmFwcGVuZENoaWxkKGUpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gJGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciB0PVJlKHRoaXMsZSk7dC5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gJGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gJGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wO251bGwhPShlPXRoaXNbdF0pO3QrKykxPT09ZS5ub2RlVHlwZSYmKGNlLmNsZWFuRGF0YShTZShlLCExKSksZS50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bnVsbCE9ZSYmZSx0PW51bGw9PXQ/ZTp0LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGNlLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiBNKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIU9lLnRlc3QoZSkmJiFrZVsoVGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Y2UuaHRtbFByZWZpbHRlcihlKTt0cnl7Zm9yKDtuPHI7bisrKTE9PT0odD10aGlzW25dfHx7fSkubm9kZVR5cGUmJihjZS5jbGVhbkRhdGEoU2UodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChlKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9LG51bGwsZSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gJGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO2NlLmluQXJyYXkodGhpcyxuKTwwJiYoY2UuY2xlYW5EYXRhKFNlKHRoaXMpKSx0JiZ0LnJlcGxhY2VDaGlsZChlLHRoaXMpKX0sbil9fSksY2UuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGUsYSl7Y2UuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1jZShlKSxpPXIubGVuZ3RoLTEsbz0wO288PWk7bysrKXQ9bz09PWk/dGhpczp0aGlzLmNsb25lKCEwKSxjZShyW29dKVthXSh0KSxzLmFwcGx5KG4sdC5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4pfX0pO3ZhciBfZT1uZXcgUmVnRXhwKCJeKCIrRysiKSg/IXB4KVthLXolXSskIiwiaSIpLHplPS9eLS0vLFhlPWZ1bmN0aW9uKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gdCYmdC5vcGVuZXJ8fCh0PWllKSx0LmdldENvbXB1dGVkU3R5bGUoZSl9LFVlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e307Zm9yKGkgaW4gdClvW2ldPWUuc3R5bGVbaV0sZS5zdHlsZVtpXT10W2ldO2ZvcihpIGluIHI9bi5jYWxsKGUpLHQpZS5zdHlsZVtpXT1vW2ldO3JldHVybiByfSxWZT1uZXcgUmVnRXhwKFEuam9pbigifCIpLCJpIik7ZnVuY3Rpb24gR2UoZSx0LG4pe3ZhciByLGksbyxhLHM9emUudGVzdCh0KSx1PWUuc3R5bGU7cmV0dXJuKG49bnx8WGUoZSkpJiYoYT1uLmdldFByb3BlcnR5VmFsdWUodCl8fG5bdF0scyYmYSYmKGE9YS5yZXBsYWNlKHZlLCIkMSIpfHx2b2lkIDApLCIiIT09YXx8SyhlKXx8KGE9Y2Uuc3R5bGUoZSx0KSksIWxlLnBpeGVsQm94U3R5bGVzKCkmJl9lLnRlc3QoYSkmJlZlLnRlc3QodCkmJihyPXUud2lkdGgsaT11Lm1pbldpZHRoLG89dS5tYXhXaWR0aCx1Lm1pbldpZHRoPXUubWF4V2lkdGg9dS53aWR0aD1hLGE9bi53aWR0aCx1LndpZHRoPXIsdS5taW5XaWR0aD1pLHUubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIFllKGUsdCl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCFlKCkpcmV0dXJuKHRoaXMuZ2V0PXQpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYobCl7dS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIixsLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLEouYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9aWUuZ2V0Q29tcHV0ZWRTdHlsZShsKTtuPSIxJSIhPT1lLnRvcCxzPTEyPT09dChlLm1hcmdpbkxlZnQpLGwuc3R5bGUucmlnaHQ9IjYwJSIsbz0zNj09PXQoZS5yaWdodCkscj0zNj09PXQoZS53aWR0aCksbC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGk9MTI9PT10KGwub2Zmc2V0V2lkdGgvMyksSi5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9Qy5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUMuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsbGUuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1sLnN0eWxlLmJhY2tncm91bmRDbGlwLGNlLmV4dGVuZChsZSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUMuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUMuY3JlYXRlRWxlbWVudCgidHIiKSxuPUMuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdC5zdHlsZS5jc3NUZXh0PSJib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JvcmRlcjoxcHggc29saWQiLHQuc3R5bGUuaGVpZ2h0PSIxcHgiLG4uc3R5bGUuaGVpZ2h0PSI5cHgiLG4uc3R5bGUuZGlzcGxheT0iYmxvY2siLEouYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQodCkuYXBwZW5kQ2hpbGQobikscj1pZS5nZXRDb21wdXRlZFN0eWxlKHQpLGE9cGFyc2VJbnQoci5oZWlnaHQsMTApK3BhcnNlSW50KHIuYm9yZGVyVG9wV2lkdGgsMTApK3BhcnNlSW50KHIuYm9yZGVyQm90dG9tV2lkdGgsMTApPT09dC5vZmZzZXRIZWlnaHQsSi5yZW1vdmVDaGlsZChlKSksYX19KSl9KCk7dmFyIFFlPVsiV2Via2l0IiwiTW96IiwibXMiXSxKZT1DLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLEtlPXt9O2Z1bmN0aW9uIFplKGUpe3ZhciB0PWNlLmNzc1Byb3BzW2VdfHxLZVtlXTtyZXR1cm4gdHx8KGUgaW4gSmU/ZTpLZVtlXT1mdW5jdGlvbihlKXt2YXIgdD1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxuPVFlLmxlbmd0aDt3aGlsZShuLS0paWYoKGU9UWVbbl0rdClpbiBKZSlyZXR1cm4gZX0oZSl8fGUpfXZhciBldD0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sdHQ9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LG50PXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifTtmdW5jdGlvbiBydChlLHQsbil7dmFyIHI9WS5leGVjKHQpO3JldHVybiByP01hdGgubWF4KDAsclsyXS0obnx8MCkpKyhyWzNdfHwicHgiKTp0fWZ1bmN0aW9uIGl0KGUsdCxuLHIsaSxvKXt2YXIgYT0id2lkdGgiPT09dD8xOjAscz0wLHU9MCxsPTA7aWYobj09PShyPyJib3JkZXIiOiJjb250ZW50IikpcmV0dXJuIDA7Zm9yKDthPDQ7YSs9MikibWFyZ2luIj09PW4mJihsKz1jZS5jc3MoZSxuK1FbYV0sITAsaSkpLHI/KCJjb250ZW50Ij09PW4mJih1LT1jZS5jc3MoZSwicGFkZGluZyIrUVthXSwhMCxpKSksIm1hcmdpbiIhPT1uJiYodS09Y2UuY3NzKGUsImJvcmRlciIrUVthXSsiV2lkdGgiLCEwLGkpKSk6KHUrPWNlLmNzcyhlLCJwYWRkaW5nIitRW2FdLCEwLGkpLCJwYWRkaW5nIiE9PW4/dSs9Y2UuY3NzKGUsImJvcmRlciIrUVthXSsiV2lkdGgiLCEwLGkpOnMrPWNlLmNzcyhlLCJib3JkZXIiK1FbYV0rIldpZHRoIiwhMCxpKSk7cmV0dXJuIXImJjA8PW8mJih1Kz1NYXRoLm1heCgwLE1hdGguY2VpbChlWyJvZmZzZXQiK3RbMF0udG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpXS1vLXUtcy0uNSkpfHwwKSx1K2x9ZnVuY3Rpb24gb3QoZSx0LG4pe3ZhciByPVhlKGUpLGk9KCFsZS5ib3hTaXppbmdSZWxpYWJsZSgpfHxuKSYmImJvcmRlci1ib3giPT09Y2UuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9R2UoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoX2UudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCFsZS5ib3hTaXppbmdSZWxpYWJsZSgpJiZpfHwhbGUucmVsaWFibGVUckRpbWVuc2lvbnMoKSYmZmUoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Y2UuY3NzKGUsImRpc3BsYXkiLCExLHIpKSYmZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKGk9ImJvcmRlci1ib3giPT09Y2UuY3NzKGUsImJveFNpemluZyIsITEsciksKG89cyBpbiBlKSYmKGE9ZVtzXSkpLChhPXBhcnNlRmxvYXQoYSl8fDApK2l0KGUsdCxufHwoaT8iYm9yZGVyIjoiY29udGVudCIpLG8scixhKSsicHgifWZ1bmN0aW9uIGF0KGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBhdC5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfWNlLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPUdlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYXNwZWN0UmF0aW86ITAsYm9yZGVySW1hZ2VTbGljZTohMCxjb2x1bW5Db3VudDohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHNjYWxlOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbihlLHQsbixyKXtpZihlJiYzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJmUuc3R5bGUpe3ZhciBpLG8sYSxzPUYodCksdT16ZS50ZXN0KHQpLGw9ZS5zdHlsZTtpZih1fHwodD1aZShzKSksYT1jZS5jc3NIb29rc1t0XXx8Y2UuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPVkuZXhlYyhuKSkmJmlbMV0mJihuPXRlKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1uJiZuPT1uJiYoIm51bWJlciIhPT1vfHx1fHwobis9aSYmaVszXXx8KGNlLmNzc051bWJlcltzXT8iIjoicHgiKSksbGUuY2xlYXJDbG9uZVN0eWxlfHwiIiE9PW58fDAhPT10LmluZGV4T2YoImJhY2tncm91bmQiKXx8KGxbdF09ImluaGVyaXQiKSxhJiYic2V0ImluIGEmJnZvaWQgMD09PShuPWEuc2V0KGUsbixyKSl8fCh1P2wuc2V0UHJvcGVydHkodCxuKTpsW3RdPW4pKX19LGNzczpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1GKHQpO3JldHVybiB6ZS50ZXN0KHQpfHwodD1aZShzKSksKGE9Y2UuY3NzSG9va3NbdF18fGNlLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1HZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBudCYmKGk9bnRbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLGNlLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGUsdSl7Y2UuY3NzSG9va3NbdV09e2dldDpmdW5jdGlvbihlLHQsbil7aWYodClyZXR1cm4hZXQudGVzdChjZS5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9vdChlLHUsbik6VWUoZSx0dCxmdW5jdGlvbigpe3JldHVybiBvdChlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVhlKGUpLG89IWxlLnNjcm9sbGJveFNpemUoKSYmImFic29sdXRlIj09PWkucG9zaXRpb24sYT0ob3x8bikmJiJib3JkZXItYm94Ij09PWNlLmNzcyhlLCJib3hTaXppbmciLCExLGkpLHM9bj9pdChlLHUsbixhLGkpOjA7cmV0dXJuIGEmJm8mJihzLT1NYXRoLmNlaWwoZVsib2Zmc2V0Iit1WzBdLnRvVXBwZXJDYXNlKCkrdS5zbGljZSgxKV0tcGFyc2VGbG9hdChpW3VdKS1pdChlLHUsImJvcmRlciIsITEsaSktLjUpKSxzJiYocj1ZLmV4ZWModCkpJiYicHgiIT09KHJbM118fCJweCIpJiYoZS5zdHlsZVt1XT10LHQ9Y2UuY3NzKGUsdSkpLHJ0KDAsdCxzKX19fSksY2UuY3NzSG9va3MubWFyZ2luTGVmdD1ZZShsZS5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oZSx0KXtpZih0KXJldHVybihwYXJzZUZsb2F0KEdlKGUsIm1hcmdpbkxlZnQiKSl8fGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1VZShlLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksY2UuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LGZ1bmN0aW9uKGksbyl7Y2UuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStRW3RdK29dPXJbdF18fHJbdC0yXXx8clswXTtyZXR1cm4gbn19LCJtYXJnaW4iIT09aSYmKGNlLmNzc0hvb2tzW2krb10uc2V0PXJ0KX0pLGNlLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0odGhpcyxmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9LGE9MDtpZihBcnJheS5pc0FycmF5KHQpKXtmb3Iocj1YZShlKSxpPXQubGVuZ3RoO2E8aTthKyspb1t0W2FdXT1jZS5jc3MoZSx0W2FdLCExLHIpO3JldHVybiBvfXJldHVybiB2b2lkIDAhPT1uP2NlLnN0eWxlKGUsdCxuKTpjZS5jc3MoZSx0KX0sZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9fSksKChjZS5Ud2Vlbj1hdCkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjphdCxpbml0OmZ1bmN0aW9uKGUsdCxuLHIsaSxvKXt0aGlzLmVsZW09ZSx0aGlzLnByb3A9bix0aGlzLmVhc2luZz1pfHxjZS5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChjZS5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPWF0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlzKTphdC5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oZSl7dmFyIHQsbj1hdC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPXQ9Y2UuZWFzaW5nW3RoaXMuZWFzaW5nXShlLHRoaXMub3B0aW9ucy5kdXJhdGlvbiplLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPXQ9ZSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqdCt0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxuJiZuLnNldD9uLnNldCh0aGlzKTphdC5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSkuaW5pdC5wcm90b3R5cGU9YXQucHJvdG90eXBlLChhdC5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDEhPT1lLmVsZW0ubm9kZVR5cGV8fG51bGwhPWUuZWxlbVtlLnByb3BdJiZudWxsPT1lLmVsZW0uc3R5bGVbZS5wcm9wXT9lLmVsZW1bZS5wcm9wXToodD1jZS5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe2NlLmZ4LnN0ZXBbZS5wcm9wXT9jZS5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8IWNlLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVtaZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpjZS5zdHlsZShlLmVsZW0sZS5wcm9wLGUubm93K2UudW5pdCl9fX0pLnNjcm9sbFRvcD1hdC5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGUpe2UuZWxlbS5ub2RlVHlwZSYmZS5lbGVtLnBhcmVudE5vZGUmJihlLmVsZW1bZS5wcm9wXT1lLm5vdyl9fSxjZS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxjZS5meD1hdC5wcm90b3R5cGUuaW5pdCxjZS5meC5zdGVwPXt9O3ZhciBzdCx1dCxsdCxjdCxmdD0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8scHQ9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBkdCgpe3V0JiYoITE9PT1DLmhpZGRlbiYmaWUucmVxdWVzdEFuaW1hdGlvbkZyYW1lP2llLnJlcXVlc3RBbmltYXRpb25GcmFtZShkdCk6aWUuc2V0VGltZW91dChkdCxjZS5meC5pbnRlcnZhbCksY2UuZngudGljaygpKX1mdW5jdGlvbiBodCgpe3JldHVybiBpZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3Q9dm9pZCAwfSksc3Q9RGF0ZS5ub3coKX1mdW5jdGlvbiBndChlLHQpe3ZhciBuLHI9MCxpPXtoZWlnaHQ6ZX07Zm9yKHQ9dD8xOjA7cjw0O3IrPTItdClpWyJtYXJnaW4iKyhuPVFbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiB2dChlLHQsbil7Zm9yKHZhciByLGk9KHl0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KHl0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIHl0KG8sZSx0KXt2YXIgbixhLHI9MCxpPXl0LnByZWZpbHRlcnMubGVuZ3RoLHM9Y2UuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgdS5lbGVtfSksdT1mdW5jdGlvbigpe2lmKGEpcmV0dXJuITE7Zm9yKHZhciBlPXN0fHxodCgpLHQ9TWF0aC5tYXgoMCxsLnN0YXJ0VGltZStsLmR1cmF0aW9uLWUpLG49MS0odC9sLmR1cmF0aW9ufHwwKSxyPTAsaT1sLnR3ZWVucy5sZW5ndGg7cjxpO3IrKylsLnR3ZWVuc1tyXS5ydW4obik7cmV0dXJuIHMubm90aWZ5V2l0aChvLFtsLG4sdF0pLG48MSYmaT90OihpfHxzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2xdKSwhMSl9LGw9cy5wcm9taXNlKHtlbGVtOm8scHJvcHM6Y2UuZXh0ZW5kKHt9LGUpLG9wdHM6Y2UuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpjZS5lYXNpbmcuX2RlZmF1bHR9LHQpLG9yaWdpbmFsUHJvcGVydGllczplLG9yaWdpbmFsT3B0aW9uczp0LHN0YXJ0VGltZTpzdHx8aHQoKSxkdXJhdGlvbjp0LmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihlLHQpe3ZhciBuPWNlLlR3ZWVuKG8sbC5vcHRzLGUsdCxsLm9wdHMuc3BlY2lhbEVhc2luZ1tlXXx8bC5vcHRzLmVhc2luZyk7cmV0dXJuIGwudHdlZW5zLnB1c2gobiksbn0sc3RvcDpmdW5jdGlvbihlKXt2YXIgdD0wLG49ZT9sLnR3ZWVucy5sZW5ndGg6MDtpZihhKXJldHVybiB0aGlzO2ZvcihhPSEwO3Q8bjt0KyspbC50d2VlbnNbdF0ucnVuKDEpO3JldHVybiBlPyhzLm5vdGlmeVdpdGgobyxbbCwxLDBdKSxzLnJlc29sdmVXaXRoKG8sW2wsZV0pKTpzLnJlamVjdFdpdGgobyxbbCxlXSksdGhpc319KSxjPWwucHJvcHM7Zm9yKCFmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGE7Zm9yKG4gaW4gZSlpZihpPXRbcj1GKG4pXSxvPWVbbl0sQXJyYXkuaXNBcnJheShvKSYmKGk9b1sxXSxvPWVbbl09b1swXSksbiE9PXImJihlW3JdPW8sZGVsZXRlIGVbbl0pLChhPWNlLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPXl0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiB2KG4uc3RvcCkmJihjZS5fcXVldWVIb29rcyhsLmVsZW0sbC5vcHRzLnF1ZXVlKS5zdG9wPW4uc3RvcC5iaW5kKG4pKSxuO3JldHVybiBjZS5tYXAoYyx2dCxsKSx2KGwub3B0cy5zdGFydCkmJmwub3B0cy5zdGFydC5jYWxsKG8sbCksbC5wcm9ncmVzcyhsLm9wdHMucHJvZ3Jlc3MpLmRvbmUobC5vcHRzLmRvbmUsbC5vcHRzLmNvbXBsZXRlKS5mYWlsKGwub3B0cy5mYWlsKS5hbHdheXMobC5vcHRzLmFsd2F5cyksY2UuZngudGltZXIoY2UuZXh0ZW5kKHUse2VsZW06byxhbmltOmwscXVldWU6bC5vcHRzLnF1ZXVlfSkpLGx9Y2UuQW5pbWF0aW9uPWNlLmV4dGVuZCh5dCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHRlKG4uZWxlbSxlLFkuZXhlYyh0KSxuKSxufV19LHR3ZWVuZXI6ZnVuY3Rpb24oZSx0KXt2KGUpPyh0PWUsZT1bIioiXSk6ZT1lLm1hdGNoKEQpO2Zvcih2YXIgbixyPTAsaT1lLmxlbmd0aDtyPGk7cisrKW49ZVtyXSx5dC50d2VlbmVyc1tuXT15dC50d2VlbmVyc1tuXXx8W10seXQudHdlZW5lcnNbbl0udW5zaGlmdCh0KX0scHJlZmlsdGVyczpbZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxsLGMsZj0id2lkdGgiaW4gdHx8ImhlaWdodCJpbiB0LHA9dGhpcyxkPXt9LGg9ZS5zdHlsZSxnPWUubm9kZVR5cGUmJmVlKGUpLHY9Xy5nZXQoZSwiZnhzaG93Iik7Zm9yKHIgaW4gbi5xdWV1ZXx8KG51bGw9PShhPWNlLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLGNlLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxhLmVtcHR5LmZpcmUoKX0pfSkpLHQpaWYoaT10W3JdLGZ0LnRlc3QoaSkpe2lmKGRlbGV0ZSB0W3JdLG89b3x8InRvZ2dsZSI9PT1pLGk9PT0oZz8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09aXx8IXZ8fHZvaWQgMD09PXZbcl0pY29udGludWU7Zz0hMH1kW3JdPXYmJnZbcl18fGNlLnN0eWxlKGUscil9aWYoKHU9IWNlLmlzRW1wdHlPYmplY3QodCkpfHwhY2UuaXNFbXB0eU9iamVjdChkKSlmb3IociBpbiBmJiYxPT09ZS5ub2RlVHlwZSYmKG4ub3ZlcmZsb3c9W2gub3ZlcmZsb3csaC5vdmVyZmxvd1gsaC5vdmVyZmxvd1ldLG51bGw9PShsPXYmJnYuZGlzcGxheSkmJihsPV8uZ2V0KGUsImRpc3BsYXkiKSksIm5vbmUiPT09KGM9Y2UuY3NzKGUsImRpc3BsYXkiKSkmJihsP2M9bDoocmUoW2VdLCEwKSxsPWUuc3R5bGUuZGlzcGxheXx8bCxjPWNlLmNzcyhlLCJkaXNwbGF5IikscmUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PWNlLmNzcyhlLCJmbG9hdCIpJiYodXx8KHAuZG9uZShmdW5jdGlvbigpe2guZGlzcGxheT1sfSksbnVsbD09bCYmKGM9aC5kaXNwbGF5LGw9Im5vbmUiPT09Yz8iIjpjKSksaC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksbi5vdmVyZmxvdyYmKGgub3ZlcmZsb3c9ImhpZGRlbiIscC5hbHdheXMoZnVuY3Rpb24oKXtoLm92ZXJmbG93PW4ub3ZlcmZsb3dbMF0saC5vdmVyZmxvd1g9bi5vdmVyZmxvd1sxXSxoLm92ZXJmbG93WT1uLm92ZXJmbG93WzJdfSkpLHU9ITEsZCl1fHwodj8iaGlkZGVuImluIHYmJihnPXYuaGlkZGVuKTp2PV8uYWNjZXNzKGUsImZ4c2hvdyIse2Rpc3BsYXk6bH0pLG8mJih2LmhpZGRlbj0hZyksZyYmcmUoW2VdLCEwKSxwLmRvbmUoZnVuY3Rpb24oKXtmb3IociBpbiBnfHxyZShbZV0pLF8ucmVtb3ZlKGUsImZ4c2hvdyIpLGQpY2Uuc3R5bGUoZSxyLGRbcl0pfSkpLHU9dnQoZz92W3JdOjAscixwKSxyIGluIHZ8fCh2W3JdPXUuc3RhcnQsZyYmKHUuZW5kPXUuc3RhcnQsdS5zdGFydD0wKSl9XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P3l0LnByZWZpbHRlcnMudW5zaGlmdChlKTp5dC5wcmVmaWx0ZXJzLnB1c2goZSl9fSksY2Uuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9jZS5leHRlbmQoe30sZSk6e2NvbXBsZXRlOm58fCFuJiZ0fHx2KGUpJiZlLGR1cmF0aW9uOmUsZWFzaW5nOm4mJnR8fHQmJiF2KHQpJiZ0fTtyZXR1cm4gY2UuZngub2ZmP3IuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIHIuZHVyYXRpb24mJihyLmR1cmF0aW9uIGluIGNlLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPWNlLmZ4LnNwZWVkc1tyLmR1cmF0aW9uXTpyLmR1cmF0aW9uPWNlLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ci5xdWV1ZSYmITAhPT1yLnF1ZXVlfHwoci5xdWV1ZT0iZngiKSxyLm9sZD1yLmNvbXBsZXRlLHIuY29tcGxldGU9ZnVuY3Rpb24oKXt2KHIub2xkKSYmci5vbGQuY2FsbCh0aGlzKSxyLnF1ZXVlJiZjZS5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LGNlLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihlZSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxlLG4scil9LGFuaW1hdGU6ZnVuY3Rpb24odCxlLG4scil7dmFyIGk9Y2UuaXNFbXB0eU9iamVjdCh0KSxvPWNlLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9eXQodGhpcyxjZS5leHRlbmQoe30sdCksbyk7KGl8fF8uZ2V0KHRoaXMsImZpbmlzaCIpKSYmZS5zdG9wKCEwKX07cmV0dXJuIGEuZmluaXNoPWEsaXx8ITE9PT1vLnF1ZXVlP3RoaXMuZWFjaChhKTp0aGlzLnF1ZXVlKG8ucXVldWUsYSl9LHN0b3A6ZnVuY3Rpb24oaSxlLG8pe3ZhciBhPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RvcDtkZWxldGUgZS5zdG9wLHQobyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgaSYmKG89ZSxlPWksaT12b2lkIDApLGUmJnRoaXMucXVldWUoaXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9ITAsdD1udWxsIT1pJiZpKyJxdWV1ZUhvb2tzIixuPWNlLnRpbWVycyxyPV8uZ2V0KHRoaXMpO2lmKHQpclt0XSYmclt0XS5zdG9wJiZhKHJbdF0pO2Vsc2UgZm9yKHQgaW4gcilyW3RdJiZyW3RdLnN0b3AmJnB0LnRlc3QodCkmJmEoclt0XSk7Zm9yKHQ9bi5sZW5ndGg7dC0tOyluW3RdLmVsZW0hPT10aGlzfHxudWxsIT1pJiZuW3RdLnF1ZXVlIT09aXx8KG5bdF0uYW5pbS5zdG9wKG8pLGU9ITEsbi5zcGxpY2UodCwxKSk7IWUmJm98fGNlLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PV8uZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1jZS50aW1lcnMsbz1uP24ubGVuZ3RoOjA7Zm9yKHQuZmluaXNoPSEwLGNlLnF1ZXVlKHRoaXMsYSxbXSksciYmci5zdG9wJiZyLnN0b3AuY2FsbCh0aGlzLCEwKSxlPWkubGVuZ3RoO2UtLTspaVtlXS5lbGVtPT09dGhpcyYmaVtlXS5xdWV1ZT09PWEmJihpW2VdLmFuaW0uc3RvcCghMCksaS5zcGxpY2UoZSwxKSk7Zm9yKGU9MDtlPG87ZSsrKW5bZV0mJm5bZV0uZmluaXNoJiZuW2VdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSB0LmZpbmlzaH0pfX0pLGNlLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Y2UuZm5bcl07Y2UuZm5bcl09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBudWxsPT1lfHwiYm9vbGVhbiI9PXR5cGVvZiBlP2kuYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShndChyLCEwKSxlLHQsbil9fSksY2UuZWFjaCh7c2xpZGVEb3duOmd0KCJzaG93Iiksc2xpZGVVcDpndCgiaGlkZSIpLHNsaWRlVG9nZ2xlOmd0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Y2UuZm5bZV09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0aGlzLmFuaW1hdGUocixlLHQsbil9fSksY2UudGltZXJzPVtdLGNlLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1jZS50aW1lcnM7Zm9yKHN0PURhdGUubm93KCk7dDxuLmxlbmd0aDt0KyspKGU9blt0XSkoKXx8blt0XSE9PWV8fG4uc3BsaWNlKHQtLSwxKTtuLmxlbmd0aHx8Y2UuZnguc3RvcCgpLHN0PXZvaWQgMH0sY2UuZngudGltZXI9ZnVuY3Rpb24oZSl7Y2UudGltZXJzLnB1c2goZSksY2UuZnguc3RhcnQoKX0sY2UuZnguaW50ZXJ2YWw9MTMsY2UuZnguc3RhcnQ9ZnVuY3Rpb24oKXt1dHx8KHV0PSEwLGR0KCkpfSxjZS5meC5zdG9wPWZ1bmN0aW9uKCl7dXQ9bnVsbH0sY2UuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LGNlLmZuLmRlbGF5PWZ1bmN0aW9uKHIsZSl7cmV0dXJuIHI9Y2UuZngmJmNlLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49aWUuc2V0VGltZW91dChlLHIpO3Quc3RvcD1mdW5jdGlvbigpe2llLmNsZWFyVGltZW91dChuKX19KX0sbHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGN0PUMuY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksbHQudHlwZT0iY2hlY2tib3giLGxlLmNoZWNrT249IiIhPT1sdC52YWx1ZSxsZS5vcHRTZWxlY3RlZD1jdC5zZWxlY3RlZCwobHQ9Qy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS52YWx1ZT0idCIsbHQudHlwZT0icmFkaW8iLGxlLnJhZGlvVmFsdWU9InQiPT09bHQudmFsdWU7dmFyIG10LHh0PWNlLmV4cHIuYXR0ckhhbmRsZTtjZS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTSh0aGlzLGNlLmF0dHIsZSx0LDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2NlLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLGNlLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPWUubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGUuZ2V0QXR0cmlidXRlP2NlLnByb3AoZSx0LG4pOigxPT09byYmY2UuaXNYTUxEb2MoZSl8fChpPWNlLmF0dHJIb29rc1t0LnRvTG93ZXJDYXNlKCldfHwoY2UuZXhwci5tYXRjaC5ib29sLnRlc3QodCk/bXQ6dm9pZCAwKSksdm9pZCAwIT09bj9udWxsPT09bj92b2lkIGNlLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPWNlLmZpbmQuYXR0cihlLHQpKT92b2lkIDA6cil9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGUsdCl7aWYoIWxlLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT10JiZmZShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goRCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksbXQ9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P2NlLnJlbW92ZUF0dHIoZSxuKTplLnNldEF0dHJpYnV0ZShuLG4pLG59fSxjZS5lYWNoKGNlLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPXh0W3RdfHxjZS5maW5kLmF0dHI7eHRbdF09ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz10LnRvTG93ZXJDYXNlKCk7cmV0dXJuIG58fChpPXh0W29dLHh0W29dPXIscj1udWxsIT1hKGUsdCxuKT9vOm51bGwseHRbb109aSkscn19KTt2YXIgYnQ9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx3dD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24gVHQoZSl7cmV0dXJuKGUubWF0Y2goRCl8fFtdKS5qb2luKCIgIil9ZnVuY3Rpb24gQ3QoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9ZnVuY3Rpb24ga3QoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZToic3RyaW5nIj09dHlwZW9mIGUmJmUubWF0Y2goRCl8fFtdfWNlLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihlLHQpe3JldHVybiBNKHRoaXMsY2UucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbY2UucHJvcEZpeFtlXXx8ZV19KX19KSxjZS5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0dXJuIDE9PT1vJiZjZS5pc1hNTERvYyhlKXx8KHQ9Y2UucHJvcEZpeFt0XXx8dCxpPWNlLnByb3BIb29rc1t0XSksdm9pZCAwIT09bj9pJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjplW3RdPW46aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjplW3RdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9Y2UuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6YnQudGVzdChlLm5vZGVOYW1lKXx8d3QudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSksbGUub3B0U2VsZWN0ZWR8fChjZS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQmJnQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsbnVsbH0sc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTt0JiYodC5zZWxlY3RlZEluZGV4LHQucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpfX0pLGNlLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe2NlLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSksY2UuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGE7cmV0dXJuIHYodCk/dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2NlKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsQ3QodGhpcykpKX0pOihlPWt0KHQpKS5sZW5ndGg/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYocj1DdCh0aGlzKSxuPTE9PT10aGlzLm5vZGVUeXBlJiYiICIrVHQocikrIiAiKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWk9ZVtvXSxuLmluZGV4T2YoIiAiK2krIiAiKTwwJiYobis9aSsiICIpO2E9VHQobiksciE9PWEmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsYSl9fSk6dGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhO3JldHVybiB2KHQpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtjZSh0aGlzKS5yZW1vdmVDbGFzcyh0LmNhbGwodGhpcyxlLEN0KHRoaXMpKSl9KTphcmd1bWVudHMubGVuZ3RoPyhlPWt0KHQpKS5sZW5ndGg/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYocj1DdCh0aGlzKSxuPTE9PT10aGlzLm5vZGVUeXBlJiYiICIrVHQocikrIiAiKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKXtpPWVbb107d2hpbGUoLTE8bi5pbmRleE9mKCIgIitpKyIgIikpbj1uLnJlcGxhY2UoIiAiK2krIiAiLCIgIil9YT1UdChuKSxyIT09YSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixhKX19KTp0aGlzOnRoaXMuYXR0cigiY2xhc3MiLCIiKX0sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCxuKXt2YXIgZSxyLGksbyxhPXR5cGVvZiB0LHM9InN0cmluZyI9PT1hfHxBcnJheS5pc0FycmF5KHQpO3JldHVybiB2KHQpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtjZSh0aGlzKS50b2dnbGVDbGFzcyh0LmNhbGwodGhpcyxlLEN0KHRoaXMpLG4pLG4pfSk6ImJvb2xlYW4iPT10eXBlb2YgbiYmcz9uP3RoaXMuYWRkQ2xhc3ModCk6dGhpcy5yZW1vdmVDbGFzcyh0KTooZT1rdCh0KSx0aGlzLmVhY2goZnVuY3Rpb24oKXtpZihzKWZvcihvPWNlKHRoaXMpLGk9MDtpPGUubGVuZ3RoO2krKylyPWVbaV0sby5oYXNDbGFzcyhyKT9vLnJlbW92ZUNsYXNzKHIpOm8uYWRkQ2xhc3Mocik7ZWxzZSB2b2lkIDAhPT10JiYiYm9vbGVhbiIhPT1hfHwoKHI9Q3QodGhpcykpJiZfLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixyKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixyfHwhMT09PXQ/IiI6Xy5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSkpfSxoYXNDbGFzczpmdW5jdGlvbihlKXt2YXIgdCxuLHI9MDt0PSIgIitlKyIgIjt3aGlsZShuPXRoaXNbcisrXSlpZigxPT09bi5ub2RlVHlwZSYmLTE8KCIgIitUdChDdChuKSkrIiAiKS5pbmRleE9mKHQpKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBTdD0vXHIvZztjZS5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihuKXt2YXIgcixlLGksdD10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXYobiksdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0OzE9PT10aGlzLm5vZGVUeXBlJiYobnVsbD09KHQ9aT9uLmNhbGwodGhpcyxlLGNlKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1jZS5tYXAodCxmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT8iIjplKyIifSkpLChyPWNlLnZhbEhvb2tzW3RoaXMudHlwZV18fGNlLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Y2UudmFsSG9va3NbdC50eXBlXXx8Y2UudmFsSG9va3NbdC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJnZXQiaW4gciYmdm9pZCAwIT09KGU9ci5nZXQodCwidmFsdWUiKSk/ZToic3RyaW5nIj09dHlwZW9mKGU9dC52YWx1ZSk/ZS5yZXBsYWNlKFN0LCIiKTpudWxsPT1lPyIiOmU6dm9pZCAwfX0pLGNlLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWNlLmZpbmQuYXR0cihlLCJ2YWx1ZSIpO3JldHVybiBudWxsIT10P3Q6VHQoY2UudGV4dChlKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLm9wdGlvbnMsbz1lLnNlbGVjdGVkSW5kZXgsYT0ic2VsZWN0LW9uZSI9PT1lLnR5cGUscz1hP251bGw6W10sdT1hP28rMTppLmxlbmd0aDtmb3Iocj1vPDA/dTphP286MDtyPHU7cisrKWlmKCgobj1pW3JdKS5zZWxlY3RlZHx8cj09PW8pJiYhbi5kaXNhYmxlZCYmKCFuLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmZShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PWNlKG4pLnZhbCgpLGEpcmV0dXJuIHQ7cy5wdXNoKHQpfXJldHVybiBzfSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk9ZS5vcHRpb25zLG89Y2UubWFrZUFycmF5KHQpLGE9aS5sZW5ndGg7d2hpbGUoYS0tKSgocj1pW2FdKS5zZWxlY3RlZD0tMTxjZS5pbkFycmF5KGNlLnZhbEhvb2tzLm9wdGlvbi5nZXQociksbykpJiYobj0hMCk7cmV0dXJuIG58fChlLnNlbGVjdGVkSW5kZXg9LTEpLG99fX19KSxjZS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Y2UudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxjZS5pbkFycmF5KGNlKGUpLnZhbCgpLHQpfX0sbGUuY2hlY2tPbnx8KGNlLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PWUuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6ZS52YWx1ZX0pfSk7dmFyIEV0PWllLmxvY2F0aW9uLGp0PXtndWlkOkRhdGUubm93KCl9LEF0PS9cPy87Y2UucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXt0PShuZXcgaWUuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4dC94bWwiKX1jYXRjaChlKXt9cmV0dXJuIG49dCYmdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKVswXSx0JiYhbnx8Y2UuZXJyb3IoIkludmFsaWQgWE1MOiAiKyhuP2NlLm1hcChuLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmUpKSx0fTt2YXIgRHQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLE50PWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCl9O2NlLmV4dGVuZChjZS5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fENdLGQ9dWUuY2FsbChlLCJ0eXBlIik/ZS50eXBlOmUsaD11ZS5jYWxsKGUsIm5hbWVzcGFjZSIpP2UubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYobz1mPWE9bj1ufHxDLDMhPT1uLm5vZGVUeXBlJiY4IT09bi5ub2RlVHlwZSYmIUR0LnRlc3QoZCtjZS5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtjZS5leHBhbmRvXT9lOm5ldyBjZS5FdmVudChkLCJvYmplY3QiPT10eXBlb2YgZSYmZSkpLmlzVHJpZ2dlcj1yPzI6MyxlLm5hbWVzcGFjZT1oLmpvaW4oIi4iKSxlLnJuYW1lc3BhY2U9ZS5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGUucmVzdWx0PXZvaWQgMCxlLnRhcmdldHx8KGUudGFyZ2V0PW4pLHQ9bnVsbD09dD9bZV06Y2UubWFrZUFycmF5KHQsW2VdKSxjPWNlLmV2ZW50LnNwZWNpYWxbZF18fHt9LHJ8fCFjLnRyaWdnZXJ8fCExIT09Yy50cmlnZ2VyLmFwcGx5KG4sdCkpKXtpZighciYmIWMubm9CdWJibGUmJiF5KG4pKXtmb3Iocz1jLmRlbGVnYXRlVHlwZXx8ZCxEdC50ZXN0KHMrZCl8fChvPW8ucGFyZW50Tm9kZSk7bztvPW8ucGFyZW50Tm9kZSlwLnB1c2gobyksYT1vO2E9PT0obi5vd25lckRvY3VtZW50fHxDKSYmcC5wdXNoKGEuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93fHxpZSl9aT0wO3doaWxlKChvPXBbaSsrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpZj1vLGUudHlwZT0xPGk/czpjLmJpbmRUeXBlfHxkLChsPShfLmdldChvLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbZS50eXBlXSYmXy5nZXQobywiaGFuZGxlIikpJiZsLmFwcGx5KG8sdCksKGw9dSYmb1t1XSkmJmwuYXBwbHkmJiQobykmJihlLnJlc3VsdD1sLmFwcGx5KG8sdCksITE9PT1lLnJlc3VsdCYmZS5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gZS50eXBlPWQscnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8Yy5fZGVmYXVsdCYmITEhPT1jLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksdCl8fCEkKG4pfHx1JiZ2KG5bZF0pJiYheShuKSYmKChhPW5bdV0pJiYoblt1XT1udWxsKSxjZS5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLE50KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCxOdCksY2UuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxhJiYoblt1XT1hKSksZS5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9Y2UuZXh0ZW5kKG5ldyBjZS5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtjZS5ldmVudC50cmlnZ2VyKHIsbnVsbCx0KX19KSxjZS5mbi5leHRlbmQoe3RyaWdnZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Y2UuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIGNlLmV2ZW50LnRyaWdnZXIoZSx0LG4sITApfX0pO3ZhciBxdD0vXFtcXSQvLEx0PS9ccj9cbi9nLEh0PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxPdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gUHQobixlLHIsaSl7dmFyIHQ7aWYoQXJyYXkuaXNBcnJheShlKSljZS5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxxdC50ZXN0KG4pP2kobix0KTpQdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09eChlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKVB0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1jZS5wYXJhbT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1mdW5jdGlvbihlLHQpe3ZhciBuPXYodCk/dCgpOnQ7cltyLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09bj8iIjpuKX07aWYobnVsbD09ZSlyZXR1cm4iIjtpZihBcnJheS5pc0FycmF5KGUpfHxlLmpxdWVyeSYmIWNlLmlzUGxhaW5PYmplY3QoZSkpY2UuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpUHQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxjZS5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBjZS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBlPWNlLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9jZS5tYWtlQXJyYXkoZSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhY2UodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZPdC50ZXN0KHRoaXMubm9kZU5hbWUpJiYhSHQudGVzdChlKSYmKHRoaXMuY2hlY2tlZHx8IXdlLnRlc3QoZSkpfSkubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG49Y2UodGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP2NlLm1hcChuLGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOnQubmFtZSx2YWx1ZTplLnJlcGxhY2UoTHQsIlxyXG4iKX19KTp7bmFtZTp0Lm5hbWUsdmFsdWU6bi5yZXBsYWNlKEx0LCJcclxuIil9fSkuZ2V0KCl9fSk7dmFyIE10PS8lMjAvZyxSdD0vIy4qJC8sSXQ9LyhbPyZdKV89W14mXSovLFd0PS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sRnQ9L14oPzpHRVR8SEVBRCkkLywkdD0vXlwvXC8vLEJ0PXt9LF90PXt9LHp0PSIqLyIuY29uY2F0KCIqIiksWHQ9Qy5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gVXQobyl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7InN0cmluZyIhPXR5cGVvZiBlJiYodD1lLGU9IioiKTt2YXIgbixyPTAsaT1lLnRvTG93ZXJDYXNlKCkubWF0Y2goRCl8fFtdO2lmKHYodCkpd2hpbGUobj1pW3IrK10pIisiPT09blswXT8obj1uLnNsaWNlKDEpfHwiKiIsKG9bbl09b1tuXXx8W10pLnVuc2hpZnQodCkpOihvW25dPW9bbl18fFtdKS5wdXNoKHQpfX1mdW5jdGlvbiBWdCh0LGksbyxhKXt2YXIgcz17fSx1PXQ9PT1fdDtmdW5jdGlvbiBsKGUpe3ZhciByO3JldHVybiBzW2VdPSEwLGNlLmVhY2godFtlXXx8W10sZnVuY3Rpb24oZSx0KXt2YXIgbj10KGksbyxhKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG58fHV8fHNbbl0/dT8hKHI9bik6dm9pZCAwOihpLmRhdGFUeXBlcy51bnNoaWZ0KG4pLGwobiksITEpfSkscn1yZXR1cm4gbChpLmRhdGFUeXBlc1swXSl8fCFzWyIqIl0mJmwoIioiKX1mdW5jdGlvbiBHdChlLHQpe3ZhciBuLHIsaT1jZS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmY2UuZXh0ZW5kKCEwLGUsciksZX1YdC5ocmVmPUV0LmhyZWYsY2UuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDpFdC5ocmVmLHR5cGU6IkdFVCIsaXNMb2NhbDovXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLy50ZXN0KEV0LnByb3RvY29sKSxnbG9iYWw6ITAscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIsYWNjZXB0czp7IioiOnp0LHRleHQ6InRleHQvcGxhaW4iLGh0bWw6InRleHQvaHRtbCIseG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixqc29uOiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHQifSxjb250ZW50czp7eG1sOi9cYnhtbFxiLyxodG1sOi9cYmh0bWwvLGpzb246L1xianNvblxiL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOkpTT04ucGFyc2UsInRleHQgeG1sIjpjZS5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/R3QoR3QoZSxjZS5hamF4U2V0dGluZ3MpLHQpOkd0KGNlLmFqYXhTZXR0aW5ncyxlKX0sYWpheFByZWZpbHRlcjpVdChCdCksYWpheFRyYW5zcG9ydDpVdChfdCksYWpheDpmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksdD10fHx7fTt2YXIgYyxmLHAsbixkLHIsaCxnLGksbyx2PWNlLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9jZSh5KTpjZS5ldmVudCx4PWNlLkRlZmVycmVkKCksYj1jZS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksdz12LnN0YXR1c0NvZGV8fHt9LGE9e30scz17fSx1PSJjYW5jZWxlZCIsVD17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGgpe2lmKCFuKXtuPXt9O3doaWxlKHQ9V3QuZXhlYyhwKSluW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdPShuW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KHRbMl0pfXQ9bltlLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09dD9udWxsOnQuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGg/cDpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWgmJihlPXNbZS50b0xvd2VyQ2FzZSgpXT1zW2UudG9Mb3dlckNhc2UoKV18fGUsYVtlXT10KSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1oJiYodi5taW1lVHlwZT1lKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpaWYoaClULmFsd2F5cyhlW1Quc3RhdHVzXSk7ZWxzZSBmb3IodCBpbiBlKXdbdF09W3dbdF0sZVt0XV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHU7cmV0dXJuIGMmJmMuYWJvcnQodCksbCgwLHQpLHRoaXN9fTtpZih4LnByb21pc2UoVCksdi51cmw9KChlfHx2LnVybHx8RXQuaHJlZikrIiIpLnJlcGxhY2UoJHQsRXQucHJvdG9jb2wrIi8vIiksdi50eXBlPXQubWV0aG9kfHx0LnR5cGV8fHYubWV0aG9kfHx2LnR5cGUsdi5kYXRhVHlwZXM9KHYuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChEKXx8WyIiXSxudWxsPT12LmNyb3NzRG9tYWluKXtyPUMuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtyLmhyZWY9di51cmwsci5ocmVmPXIuaHJlZix2LmNyb3NzRG9tYWluPVh0LnByb3RvY29sKyIvLyIrWHQuaG9zdCE9ci5wcm90b2NvbCsiLy8iK3IuaG9zdH1jYXRjaChlKXt2LmNyb3NzRG9tYWluPSEwfX1pZih2LmRhdGEmJnYucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygdi5kYXRhJiYodi5kYXRhPWNlLnBhcmFtKHYuZGF0YSx2LnRyYWRpdGlvbmFsKSksVnQoQnQsdix0LFQpLGgpcmV0dXJuIFQ7Zm9yKGkgaW4oZz1jZS5ldmVudCYmdi5nbG9iYWwpJiYwPT1jZS5hY3RpdmUrKyYmY2UuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksdi50eXBlPXYudHlwZS50b1VwcGVyQ2FzZSgpLHYuaGFzQ29udGVudD0hRnQudGVzdCh2LnR5cGUpLGY9di51cmwucmVwbGFjZShSdCwiIiksdi5oYXNDb250ZW50P3YuZGF0YSYmdi5wcm9jZXNzRGF0YSYmMD09PSh2LmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJih2LmRhdGE9di5kYXRhLnJlcGxhY2UoTXQsIisiKSk6KG89di51cmwuc2xpY2UoZi5sZW5ndGgpLHYuZGF0YSYmKHYucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT10eXBlb2Ygdi5kYXRhKSYmKGYrPShBdC50ZXN0KGYpPyImIjoiPyIpK3YuZGF0YSxkZWxldGUgdi5kYXRhKSwhMT09PXYuY2FjaGUmJihmPWYucmVwbGFjZShJdCwiJDEiKSxvPShBdC50ZXN0KGYpPyImIjoiPyIpKyJfPSIranQuZ3VpZCsrK28pLHYudXJsPWYrbyksdi5pZk1vZGlmaWVkJiYoY2UubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixjZS5sYXN0TW9kaWZpZWRbZl0pLGNlLmV0YWdbZl0mJlQuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsY2UuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK3p0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9VnQoX3Qsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9aWUuc2V0VGltZW91dChmdW5jdGlvbigpe1QuYWJvcnQoInRpbWVvdXQiKX0sdi50aW1lb3V0KSk7dHJ5e2g9ITEsYy5zZW5kKGEsbCl9Y2F0Y2goZSl7aWYoaCl0aHJvdyBlO2woLTEsZSl9fWVsc2UgbCgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24gbChlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9dDtofHwoaD0hMCxkJiZpZS5jbGVhclRpbWVvdXQoZCksYz12b2lkIDAscD1yfHwiIixULnJlYWR5U3RhdGU9MDxlPzQ6MCxpPTIwMDw9ZSYmZTwzMDB8fDMwND09PWUsbiYmKHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jb250ZW50cyx1PWUuZGF0YVR5cGVzO3doaWxlKCIqIj09PXVbMF0pdS5zaGlmdCgpLHZvaWQgMD09PXImJihyPWUubWltZVR5cGV8fHQuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihyKWZvcihpIGluIHMpaWYoc1tpXSYmc1tpXS50ZXN0KHIpKXt1LnVuc2hpZnQoaSk7YnJlYWt9aWYodVswXWluIG4pbz11WzBdO2Vsc2V7Zm9yKGkgaW4gbil7aWYoIXVbMF18fGUuY29udmVydGVyc1tpKyIgIit1WzBdXSl7bz1pO2JyZWFrfWF8fChhPWkpfW89b3x8YX1pZihvKXJldHVybiBvIT09dVswXSYmdS51bnNoaWZ0KG8pLG5bb119KHYsVCxuKSksIWkmJi0xPGNlLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiZjZS5pbkFycmF5KCJqc29uIix2LmRhdGFUeXBlcyk8MCYmKHYuY29udmVydGVyc1sidGV4dCBzY3JpcHQiXT1mdW5jdGlvbigpe30pLHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbyxhLHMsdSxsPXt9LGM9ZS5kYXRhVHlwZXMuc2xpY2UoKTtpZihjWzFdKWZvcihhIGluIGUuY29udmVydGVycylsW2EudG9Mb3dlckNhc2UoKV09ZS5jb252ZXJ0ZXJzW2FdO289Yy5zaGlmdCgpO3doaWxlKG8paWYoZS5yZXNwb25zZUZpZWxkc1tvXSYmKG5bZS5yZXNwb25zZUZpZWxkc1tvXV09dCksIXUmJnImJmUuZGF0YUZpbHRlciYmKHQ9ZS5kYXRhRmlsdGVyKHQsZS5kYXRhVHlwZSkpLHU9byxvPWMuc2hpZnQoKSlpZigiKiI9PT1vKW89dTtlbHNlIGlmKCIqIiE9PXUmJnUhPT1vKXtpZighKGE9bFt1KyIgIitvXXx8bFsiKiAiK29dKSlmb3IoaSBpbiBsKWlmKChzPWkuc3BsaXQoIiAiKSlbMV09PT1vJiYoYT1sW3UrIiAiK3NbMF1dfHxsWyIqICIrc1swXV0pKXshMD09PWE/YT1sW2ldOiEwIT09bFtpXSYmKG89c1swXSxjLnVuc2hpZnQoc1sxXSkpO2JyZWFrfWlmKCEwIT09YSlpZihhJiZlWyJ0aHJvd3MiXSl0PWEodCk7ZWxzZSB0cnl7dD1hKHQpfWNhdGNoKGUpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmE/ZToiTm8gY29udmVyc2lvbiBmcm9tICIrdSsiIHRvICIrb319fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTp0fX0odixzLFQsaSksaT8odi5pZk1vZGlmaWVkJiYoKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKSYmKGNlLmxhc3RNb2RpZmllZFtmXT11KSwodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIikpJiYoY2UuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLWNlLmFjdGl2ZXx8Y2UuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiBUfSxnZXRKU09OOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gY2UuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBjZS5nZXQoZSx2b2lkIDAsdCwic2NyaXB0Iil9fSksY2UuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihlLGkpe2NlW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB2KHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksY2UuYWpheChjZS5leHRlbmQoe3VybDplLHR5cGU6aSxkYXRhVHlwZTpyLGRhdGE6dCxzdWNjZXNzOm59LGNlLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxjZS5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUuaGVhZGVycykiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKSYmKGUuY29udGVudFR5cGU9ZS5oZWFkZXJzW3RdfHwiIil9KSxjZS5fZXZhbFVybD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGNlLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe2NlLmdsb2JhbEV2YWwoZSx0LG4pfX0pfSxjZS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHRoaXNbMF0mJih2KGUpJiYoZT1lLmNhbGwodGhpc1swXSkpLHQ9Y2UoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiB2KG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtjZSh0aGlzKS53cmFwSW5uZXIobi5jYWxsKHRoaXMsZSkpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Y2UodGhpcyksdD1lLmNvbnRlbnRzKCk7dC5sZW5ndGg/dC53cmFwQWxsKG4pOmUuYXBwZW5kKG4pfSl9LHdyYXA6ZnVuY3Rpb24odCl7dmFyIG49dih0KTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe2NlKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtjZSh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxjZS5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGUpe3JldHVybiFjZS5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sY2UuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oZSl7cmV0dXJuISEoZS5vZmZzZXRXaWR0aHx8ZS5vZmZzZXRIZWlnaHR8fGUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxjZS5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgaWUuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIFl0PXswOjIwMCwxMjIzOjIwNH0sUXQ9Y2UuYWpheFNldHRpbmdzLnhocigpO2xlLmNvcnM9ISFRdCYmIndpdGhDcmVkZW50aWFscyJpbiBRdCxsZS5hamF4PVF0PSEhUXQsY2UuYWpheFRyYW5zcG9ydChmdW5jdGlvbihpKXt2YXIgbyxhO2lmKGxlLmNvcnN8fFF0JiYhaS5jcm9zc0RvbWFpbilyZXR1cm57c2VuZDpmdW5jdGlvbihlLHQpe3ZhciBuLHI9aS54aHIoKTtpZihyLm9wZW4oaS50eXBlLGkudXJsLGkuYXN5bmMsaS51c2VybmFtZSxpLnBhc3N3b3JkKSxpLnhockZpZWxkcylmb3IobiBpbiBpLnhockZpZWxkcylyW25dPWkueGhyRmllbGRzW25dO2ZvcihuIGluIGkubWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZSYmci5vdmVycmlkZU1pbWVUeXBlKGkubWltZVR5cGUpLGkuY3Jvc3NEb21haW58fGVbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKSxlKXIuc2V0UmVxdWVzdEhlYWRlcihuLGVbbl0pO289ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7byYmKG89YT1yLm9ubG9hZD1yLm9uZXJyb3I9ci5vbmFib3J0PXIub250aW1lb3V0PXIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsImFib3J0Ij09PWU/ci5hYm9ydCgpOiJlcnJvciI9PT1lPyJudW1iZXIiIT10eXBlb2Ygci5zdGF0dXM/dCgwLCJlcnJvciIpOnQoci5zdGF0dXMsci5zdGF0dXNUZXh0KTp0KFl0W3Iuc3RhdHVzXXx8ci5zdGF0dXMsci5zdGF0dXNUZXh0LCJ0ZXh0IiE9PShyLnJlc3BvbnNlVHlwZXx8InRleHQiKXx8InN0cmluZyIhPXR5cGVvZiByLnJlc3BvbnNlVGV4dD97YmluYXJ5OnIucmVzcG9uc2V9Ont0ZXh0OnIucmVzcG9uc2VUZXh0fSxyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxyLm9ubG9hZD1vKCksYT1yLm9uZXJyb3I9ci5vbnRpbWVvdXQ9bygiZXJyb3IiKSx2b2lkIDAhPT1yLm9uYWJvcnQ/ci5vbmFib3J0PWE6ci5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09ci5yZWFkeVN0YXRlJiZpZS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksY2UuYWpheFByZWZpbHRlcihmdW5jdGlvbihlKXtlLmNyb3NzRG9tYWluJiYoZS5jb250ZW50cy5zY3JpcHQ9ITEpfSksY2UuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGUpe3JldHVybiBjZS5nbG9iYWxFdmFsKGUpLGV9fX0pLGNlLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oZSl7dm9pZCAwPT09ZS5jYWNoZSYmKGUuY2FjaGU9ITEpLGUuY3Jvc3NEb21haW4mJihlLnR5cGU9IkdFVCIpfSksY2UuYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihuKXt2YXIgcixpO2lmKG4uY3Jvc3NEb21haW58fG4uc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXtyPWNlKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxDLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgSnQsS3Q9W10sWnQ9Lyg9KVw/KD89JnwkKXxcP1w/LztjZS5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBlPUt0LnBvcCgpfHxjZS5leHBhbmRvKyJfIitqdC5ndWlkKys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSxjZS5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoWnQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZadC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz12KGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoWnQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KEF0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxjZS5lcnJvcihyKyIgd2FzIG5vdCBjYWxsZWQiKSxvWzBdfSxlLmRhdGFUeXBlc1swXT0ianNvbiIsaT1pZVtyXSxpZVtyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/Y2UoaWUpLnJlbW92ZVByb3Aocik6aWVbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayxLdC5wdXNoKHIpKSxvJiZ2KGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLGxlLmNyZWF0ZUhUTUxEb2N1bWVudD0oKEp0PUMuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5KS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09SnQuY2hpbGROb2Rlcy5sZW5ndGgpLGNlLnBhcnNlSFRNTD1mdW5jdGlvbihlLHQsbil7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlP1tdOigiYm9vbGVhbiI9PXR5cGVvZiB0JiYobj10LHQ9ITEpLHR8fChsZS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUMuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUMubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9Qyksbz0hbiYmW10sKGk9dy5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT1BZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmY2UobykucmVtb3ZlKCksY2UubWVyZ2UoW10saS5jaGlsZE5vZGVzKSkpO3ZhciByLGksb30sY2UuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPVR0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSx2KHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZjZS5hamF4KHt1cmw6ZSx0eXBlOml8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOnR9KS5kb25lKGZ1bmN0aW9uKGUpe289YXJndW1lbnRzLGEuaHRtbChyP2NlKCI8ZGl2PiIpLmFwcGVuZChjZS5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxjZS5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmdyZXAoY2UudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxjZS5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9Y2UuY3NzKGUsInBvc2l0aW9uIiksYz1jZShlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Y2UuY3NzKGUsInRvcCIpLHU9Y2UuY3NzKGUsImxlZnQiKSwoImFic29sdXRlIj09PWx8fCJmaXhlZCI9PT1sKSYmLTE8KG8rdSkuaW5kZXhPZigiYXV0byIpPyhhPShyPWMucG9zaXRpb24oKSkudG9wLGk9ci5sZWZ0KTooYT1wYXJzZUZsb2F0KG8pfHwwLGk9cGFyc2VGbG9hdCh1KXx8MCksdih0KSYmKHQ9dC5jYWxsKGUsbixjZS5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOmMuY3NzKGYpfX0sY2UuZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24odCl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dD90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihlKXtjZS5vZmZzZXQuc2V0T2Zmc2V0KHRoaXMsdCxlKX0pO3ZhciBlLG4scj10aGlzWzBdO3JldHVybiByP3IuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUudG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgZSx0LG4scj10aGlzWzBdLGk9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PWNlLmNzcyhyLCJwb3NpdGlvbiIpKXQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle3Q9dGhpcy5vZmZzZXQoKSxuPXIub3duZXJEb2N1bWVudCxlPXIub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYoZT09PW4uYm9keXx8ZT09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT1jZS5jc3MoZSwicG9zaXRpb24iKSllPWUucGFyZW50Tm9kZTtlJiZlIT09ciYmMT09PWUubm9kZVR5cGUmJigoaT1jZShlKS5vZmZzZXQoKSkudG9wKz1jZS5jc3MoZSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxpLmxlZnQrPWNlLmNzcyhlLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDp0LnRvcC1pLnRvcC1jZS5jc3MociwibWFyZ2luVG9wIiwhMCksbGVmdDp0LmxlZnQtaS5sZWZ0LWNlLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoZSYmInN0YXRpYyI9PT1jZS5jc3MoZSwicG9zaXRpb24iKSllPWUub2Zmc2V0UGFyZW50O3JldHVybiBlfHxKfSl9fSksY2UuZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbih0LGkpe3ZhciBvPSJwYWdlWU9mZnNldCI9PT1pO2NlLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBNKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKHkoZSk/cj1lOjk9PT1lLm5vZGVUeXBlJiYocj1lLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1uKXJldHVybiByP3JbaV06ZVt0XTtyP3Iuc2Nyb2xsVG8obz9yLnBhZ2VYT2Zmc2V0Om4sbz9uOnIucGFnZVlPZmZzZXQpOmVbdF09bn0sdCxlLGFyZ3VtZW50cy5sZW5ndGgpfX0pLGNlLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSxuKXtjZS5jc3NIb29rc1tuXT1ZZShsZS5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4gdD1HZShlLG4pLF9lLnRlc3QodCk/Y2UoZSkucG9zaXRpb24oKVtuXSsicHgiOnR9KX0pLGNlLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLHMpe2NlLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6cywiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKHIsbyl7Y2UuZm5bb109ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgZSksaT1yfHwoITA9PT1lfHwhMD09PXQ/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBNKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB5KGUpPzA9PT1vLmluZGV4T2YoIm91dGVyIik/ZVsiaW5uZXIiK2FdOmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1lLm5vZGVUeXBlPyhyPWUuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGUuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGUuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1uP2NlLmNzcyhlLHQsaSk6Y2Uuc3R5bGUoZSx0LG4saSl9LHMsbj9lOnZvaWQgMCxuKX19KX0pLGNlLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe2NlLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSksY2UuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5vbigibW91c2VlbnRlciIsZSkub24oIm1vdXNlbGVhdmUiLHR8fGUpfX0pLGNlLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSxuKXtjZS5mbltuXT1mdW5jdGlvbihlLHQpe3JldHVybiAwPGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vbihuLG51bGwsZSx0KTp0aGlzLnRyaWdnZXIobil9fSk7dmFyIGVuPS9eW1xzXHVGRUZGXHhBMF0rfChbXlxzXHVGRUZGXHhBMF0pW1xzXHVGRUZGXHhBMF0rJC9nO2NlLnByb3h5PWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpO2lmKCJzdHJpbmciPT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSx2KGUpKXJldHVybiByPWFlLmNhbGwoYXJndW1lbnRzLDIpLChpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxyLmNvbmNhdChhZS5jYWxsKGFyZ3VtZW50cykpKX0pLmd1aWQ9ZS5ndWlkPWUuZ3VpZHx8Y2UuZ3VpZCsrLGl9LGNlLmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP2NlLnJlYWR5V2FpdCsrOmNlLnJlYWR5KCEwKX0sY2UuaXNBcnJheT1BcnJheS5pc0FycmF5LGNlLnBhcnNlSlNPTj1KU09OLnBhcnNlLGNlLm5vZGVOYW1lPWZlLGNlLmlzRnVuY3Rpb249dixjZS5pc1dpbmRvdz15LGNlLmNhbWVsQ2FzZT1GLGNlLnR5cGU9eCxjZS5ub3c9RGF0ZS5ub3csY2UuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PWNlLnR5cGUoZSk7cmV0dXJuKCJudW1iZXIiPT09dHx8InN0cmluZyI9PT10KSYmIWlzTmFOKGUtcGFyc2VGbG9hdChlKSl9LGNlLnRyaW09ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6KGUrIiIpLnJlcGxhY2UoZW4sIiQxIil9LCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBjZX0pO3ZhciB0bj1pZS5qUXVlcnksbm49aWUuJDtyZXR1cm4gY2Uubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gaWUuJD09PWNlJiYoaWUuJD1ubiksZSYmaWUualF1ZXJ5PT09Y2UmJihpZS5qUXVlcnk9dG4pLGNlfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihpZS5qUXVlcnk9aWUuJD1jZSksY2V9KTs="}},"time_used":8,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"ledger.check-tx.com/mdata/app.js","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://ledger.check-tx.com/","date":"2026-07-27T00:15:41.289Z","timestamp":1785111341289,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"check-tx.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 23 Jul 2026 21:07:30 GMT","end":"Wed, 21 Oct 2026 22:06:09 GMT"},"fingerprint":{"sha1":"EB:F6:2D:66:78:A5:5A:C3:27:22:EB:DA:C8:D0:A7:2C:DB:48:8C:6E","sha256":"53:D9:1D:E3:A1:35:12:6B:ED:56:5B:4A:64:70:27:D5:EA:DD:5C:E5:B0:9D:FE:22:82:52:D2:E0:E7:5B:2A:34"}}},"request":{"raw":"GET /mdata/app.js HTTP/1.1\r\nHost: ledger.check-tx.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: */*\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://ledger.check-tx.com/\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 200 \r\ncontent-type: text/javascript\r\nlast-modified: Mon, 22 Dec 2025 05:04:58 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\nserver-timing: cfExtPri\r\ndate: Mon, 27 Jul 2026 00:15:41 GMT\r\nserver: cloudflare\r\nalt-svc: h3=\":443\"; ma=86400\r\nx-turbo-charged-by: LiteSpeed\r\nage: 214\r\ncache-control: max-age=14400\r\ncf-cache-status: HIT\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=u%2BT9gGyVRH2P387fVBE0TuWlKnLuXA%2FsGycMFN%2BVKRL7UqArreT7V2iDnCh2HDqpHJ%2FL7Miz59Y98L04DIvV2iGt11D0ns2B9ah4Vz%2FahkSKrFlqhS4LfvWEZuIpeIrK%2F7bcRU8f\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\npriority: u=3,i=?0\r\ncf-ray: a217737b187b23eb-OSL\r\ncontent-length: 3798\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"","fingerprints":[{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":15723,"size_decoded":4565,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (647), with CRLF line terminators","md5":"a5429e2d006674cd724d683f802c416a","sha1":"18d4ef490f4b7137dfbe22926837fd3f5aad9c21","sha256":"7af786aad74f9e6fd9a37786416cd41aa1de6e6d2d8699db04ce1df58c4a0128","sha512":"e17d71e0a67e3758a010f9dc50d33a5f66ffab02e398a1afac8eb00da8e00cc047a91bd892cb791ab2bc755665f57bb756d68cdc5c7f4b93b6ce4edc31a300ea","ssdeep":"192:F3oFqH7LdJNF7EYMcDnItImx/dDz0HAVWm1M2ZixpdQR7F/Cf3Kv:FYE7Lqrf2J2Zixpa7FKE","tlshash":"23626f5e720b21358a733724673f680aef7ad173a40e9260b9ad87542f70c16825defc","first_seen":"2025-12-24T07:20:03.451001Z","last_seen":"2026-07-27T00:25:29.527954Z","times_seen":8,"resource_available":true,"data":"Ly8gQ0hFQ0sgU1RBVElDIENIRUNLUyBJRiBERVRFQ1QgQlJFQUsgTTNEUEFTUyBTTyBJVCBET0VTTlQgUkRSDQoNCg0KY2xhc3MgSGVhZGxlc3NEZXRlY3Qgew0KICAgIGFsbFRlc3RGdW5jdGlvbnMgPSBbJ3Rlc3RVc2VyQWdlbnQnLCAndGVzdENocm9tZVdpbmRvdycsICd0ZXN0UGx1Z2lucycsICd0ZXN0QXBwVmVyc2lvbicsICd0ZXN0Q29ubmVjdGlvblJ0dCddOw0KDQogICAgY29uc3RydWN0b3IoKSB7DQogICAgfQ0KDQoNCg0KICAgIC8vKiBBbGwgVGVzdHMgKi8vDQoNCiAgICAvLyBVc2VyIEFnZW50DQogICAgdGVzdFVzZXJBZ2VudCgpIHsNCiAgICAgICAgaWYgKC9IZWFkbGVzcy8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsNCiAgICAgICAgICAgIC8vIEhlYWRsZXNzDQogICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vIE5vdCBIZWFkbGVzcw0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBXaW5kb3cuQ2hyb21lDQogICAgdGVzdENocm9tZVdpbmRvdygpIHsNCiAgICAgICAgaWYgKGV2YWwudG9TdHJpbmcoKS5sZW5ndGggPT0gMzMgJiYgIXdpbmRvdy5jaHJvbWUpIHsNCiAgICAgICAgICAgIC8vIEhlYWRsZXNzDQogICAgICAgICAgICByZXR1cm4gMTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIC8vIE5vdCBIZWFkbGVzcw0KICAgICAgICAgICAgcmV0dXJuIDA7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBOb3RpZmljYXRpb24gUGVybWlzc2lvbnMNCiAgICB0ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMoY2FsbGJhY2spIHsNCiAgICAgICAgbmF2aWdhdG9yLnBlcm1pc3Npb25zLnF1ZXJ5KHtuYW1lOidub3RpZmljYXRpb25zJ30pLnRoZW4oZnVuY3Rpb24ocGVybWlzc2lvblN0YXR1cykgew0KICAgICAgICAgICAgaWYoTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gPT09ICdkZW5pZWQnICYmIHBlcm1pc3Npb25TdGF0dXMuc3RhdGUgPT09ICdwcm9tcHQnKSB7DQogICAgICAgICAgICAgICAgLy8gSGVhZGxlc3MNCiAgICAgICAgICAgICAgICBjYWxsYmFjaygxKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gTm90IEhlYWRsZXNzDQogICAgICAgICAgICAgICAgY2FsbGJhY2soMCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0NCg0KICAgIC8vIE5vIFBsdWdpbnMNCiAgICB0ZXN0UGx1Z2lucygpIHsNCiAgICAgICAgbGV0IGxlbmd0aCA9IG5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aDsNCg0KICAgICAgICByZXR1cm4gbGVuZ3RoID09PSAwID8gMSA6IDA7DQogICAgfQ0KDQogICAgLy8gQXBwIFZlcnNpb24NCiAgICB0ZXN0QXBwVmVyc2lvbigpIHsNCiAgICAgICAgbGV0IGFwcFZlcnNpb24gPSBuYXZpZ2F0b3IuYXBwVmVyc2lvbjsNCg0KICAgICAgICByZXR1cm4gL2hlYWRsZXNzL2kudGVzdChhcHBWZXJzaW9uKSA/IDEgOiAwOw0KICAgIH0NCg0KICAgIC8vIENvbm5lY3Rpb24gUnR0DQogICAgdGVzdENvbm5lY3Rpb25SdHQoKSB7DQogICAgICAgIGxldCBjb25uZWN0aW9uID0gbmF2aWdhdG9yLmNvbm5lY3Rpb247DQogICAgICAgIGxldCBjb25uZWN0aW9uUnR0ID0gY29ubmVjdGlvbiA/IGNvbm5lY3Rpb24ucnR0IDogdW5kZWZpbmVkOw0KDQogICAgICAgIGlmIChjb25uZWN0aW9uUnR0ID09PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgIHJldHVybiAwOyAvLyBGbGFnIGRvZXNuJ3QgZXZlbiBleGlzdHMgc28ganVzdCByZXR1cm4gTk9UIEhFQURMRVNTDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICByZXR1cm4gY29ubmVjdGlvblJ0dCA9PT0gMCA/IDEgOiAwOw0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KICAgIC8vKiBNYWluIEZ1bmN0aW9ucyAqLy8NCg0KICAgIGdldEhlYWRsZXNzU2NvcmUoKSB7DQogICAgICAgIGxldCBzY29yZSA9IDA7DQogICAgICAgIGxldCB0ZXN0c1J1biA9IDA7DQoNCiAgICAgICAgLy8gTm90aWZpY2F0aW9uIFBlcm1pc3Npb25zIHRlc3QgaGFzIHRvIGJlIGRvbmUgdXNpbmcgQ2FsbGJhY2tzDQogICAgICAgIC8vIFRoYXQncyB3aHkgaXQncyBkb25lIHNlcGFyYXRlbHkgZnJvbSBhbGwgdGhlIG90aGVyIHRlc3RzLg0KICAgICAgICB0aGlzLnRlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhmdW5jdGlvbih2KXsNCiAgICAgICAgICAgIHNjb3JlICs9IHY7DQogICAgICAgICAgICB0ZXN0c1J1bisrOw0KICAgICAgICAgICAgLy9kb2N1bWVudC53cml0ZSgiPHA+dGVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOiAiICsgdiArICI8L3A+Iik7IC8vIFRoaXMgaXMgb25seSB1c2VkIGZvciBkZWJ1Z2dpbmcNCiAgICAgICAgfSk7DQoNCiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCBmdW5jdGlvbnMgYW5kIGFkZCB0aGVpciByZXN1bHRzIHRvZ2V0aGVyDQogICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLmFsbFRlc3RGdW5jdGlvbnMubGVuZ3RoOyBpKyspew0KICAgICAgICAgICAgc2NvcmUgKz0gdGhpc1t0aGlzLmFsbFRlc3RGdW5jdGlvbnNbaV1dLmFwcGx5KCk7DQogICAgICAgICAgICB0ZXN0c1J1bisrOw0KICAgICAgICAgICAgLy9kb2N1bWVudC53cml0ZSgiPHA+IiArIHRoaXMuYWxsVGVzdEZ1bmN0aW9uc1tpXSArICI6ICIgKyB0aGlzW3RoaXMuYWxsVGVzdEZ1bmN0aW9uc1tpXV0uYXBwbHkoKSsgIjwvcD4iKTsgLy8gVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGRlYnVnZ2luZw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHNjb3JlIC8gdGVzdHNSdW47DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBCb3REZXRlY3RvcihhcmdzKSB7DQoJdmFyIHNlbGYgPSB0aGlzOw0KCXNlbGYuaXNCb3QgPSBmYWxzZTsNCglzZWxmLnRlc3RzID0ge307DQoNCgl2YXIgc2VsZWN0ZWRUZXN0cyA9IGFyZ3MudGVzdHMgfHwgW107DQoJaWYgKHNlbGVjdGVkVGVzdHMubGVuZ3RoID09IDAgfHwgc2VsZWN0ZWRUZXN0cy5pbmRleE9mKEJvdERldGVjdG9yLlRlc3RzLlNDUk9MTCkgIT0gLTEpIHsNCgkJc2VsZi50ZXN0c1tCb3REZXRlY3Rvci5UZXN0cy5TQ1JPTExdID0gZnVuY3Rpb24oKSB7DQoJCQl2YXIgZSA9IGZ1bmN0aW9uKCkgew0KCQkJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuU0NST0xMXSA9IHRydWU7DQoJCQkJc2VsZi51cGRhdGUoKQ0KCQkJCXNlbGYudW5iaW5kRXZlbnQod2luZG93LCBCb3REZXRlY3Rvci5UZXN0cy5TQ1JPTEwsIGUpDQoJCQkJc2VsZi51bmJpbmRFdmVudChkb2N1bWVudCwgQm90RGV0ZWN0b3IuVGVzdHMuU0NST0xMLCBlKQ0KCQkJfTsNCgkJCXNlbGYuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuU0NST0xMLCBlKTsNCgkJCXNlbGYuYmluZEV2ZW50KGRvY3VtZW50LCBCb3REZXRlY3Rvci5UZXN0cy5TQ1JPTEwsIGUpOw0KCQl9Ow0KCX0NCglpZiAoc2VsZWN0ZWRUZXN0cy5sZW5ndGggPT0gMCB8fCBzZWxlY3RlZFRlc3RzLmluZGV4T2YoQm90RGV0ZWN0b3IuVGVzdHMuTU9VU0UpICE9IC0xKSB7DQoJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuTU9VU0VdID0gZnVuY3Rpb24oKSB7DQoJCQl2YXIgZSA9IGZ1bmN0aW9uKCkgew0KCQkJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuTU9VU0VdID0gdHJ1ZTsNCgkJCQlzZWxmLnVwZGF0ZSgpOw0KCQkJCXNlbGYudW5iaW5kRXZlbnQod2luZG93LCBCb3REZXRlY3Rvci5UZXN0cy5NT1VTRSwgZSk7DQoJCQl9DQoJCQlzZWxmLmJpbmRFdmVudCh3aW5kb3csIEJvdERldGVjdG9yLlRlc3RzLk1PVVNFLCBlKTsNCgkJfTsNCgl9DQoJaWYgKHNlbGVjdGVkVGVzdHMubGVuZ3RoID09IDAgfHwgc2VsZWN0ZWRUZXN0cy5pbmRleE9mKEJvdERldGVjdG9yLlRlc3RzLktFWVVQKSAhPSAtMSkgew0KCQlzZWxmLnRlc3RzW0JvdERldGVjdG9yLlRlc3RzLktFWVVQXSA9IGZ1bmN0aW9uKCkgew0KCQkJdmFyIGUgPSBmdW5jdGlvbigpIHsNCgkJCQlzZWxmLnRlc3RzW0JvdERldGVjdG9yLlRlc3RzLktFWVVQXSA9IHRydWU7DQoJCQkJc2VsZi51cGRhdGUoKTsNCgkJCQlzZWxmLnVuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuS0VZVVAsIGUpOw0KCQkJfQ0KCQkJc2VsZi5iaW5kRXZlbnQod2luZG93LCBCb3REZXRlY3Rvci5UZXN0cy5LRVlVUCwgZSk7DQoJCX07CQ0KCX0JDQoJaWYgKHNlbGVjdGVkVGVzdHMubGVuZ3RoID09IDAgfHwgc2VsZWN0ZWRUZXN0cy5pbmRleE9mKEJvdERldGVjdG9yLlRlc3RzLlNXSVBFKSAhPSAtMSkgew0KCQlzZWxmLnRlc3RzW0JvdERldGVjdG9yLlRlc3RzLlNXSVBFX1RPVUNIU1RBUlRdID0gZnVuY3Rpb24oKSB7DQoJCQl2YXIgZSA9IGZ1bmN0aW9uKCkgew0KCQkJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuU1dJUEVfVE9VQ0hTVEFSVF0gPSB0cnVlOw0KCQkJCXNlbGYudXBkYXRlKCk7DQoJCQkJc2VsZi51bmJpbmRFdmVudChkb2N1bWVudCwgQm90RGV0ZWN0b3IuVGVzdHMuU1dJUEVfVE9VQ0hTVEFSVCk7DQoJCQl9DQoJCQlzZWxmLmJpbmRFdmVudChkb2N1bWVudCwgQm90RGV0ZWN0b3IuVGVzdHMuU1dJUEVfVE9VQ0hTVEFSVCk7DQoJCX0NCgl9DQoJaWYgKHNlbGVjdGVkVGVzdHMubGVuZ3RoID09IDAgfHwgc2VsZWN0ZWRUZXN0cy5pbmRleE9mKEJvdERldGVjdG9yLlRlc3RzLkRFVklDRV9NT1RJT04pICE9IC0xKSB7DQoJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX01PVElPTl0gPSBmdW5jdGlvbigpIHsNCgkJCXZhciBlID0gZnVuY3Rpb24oZXZlbnQpIHsNCgkJCQlpZihldmVudC5yb3RhdGlvblJhdGUuYWxwaGEgfHwgZXZlbnQucm90YXRpb25SYXRlLmJldGEgfHwgZXZlbnQucm90YXRpb25SYXRlLmdhbW1hKSB7DQoJCQkJCXZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7DQoJCQkJCXZhciBpc0FuZHJvaWQgPSB1c2VyQWdlbnQuaW5kZXhPZignYW5kcm9pZCcpICE9IC0xOw0KCQkJCQl2YXIgYmV0YSA9IGlzQW5kcm9pZCA/IGV2ZW50LnJvdGF0aW9uUmF0ZS5iZXRhIDogTWF0aC5yb3VuZChldmVudC5yb3RhdGlvblJhdGUuYmV0YSAvIDEwKSAqIDEwOw0KCQkJCQl2YXIgZ2FtbWEgPSBpc0FuZHJvaWQgPyBldmVudC5yb3RhdGlvblJhdGUuZ2FtbWEgOiBNYXRoLnJvdW5kKGV2ZW50LnJvdGF0aW9uUmF0ZS5nYW1tYSAvIDEwKSAqIDEwOw0KCQkJCQlpZiAoIXNlbGYubGFzdFJvdGF0aW9uRGF0YSkgew0KCQkJCQkJc2VsZi5sYXN0Um90YXRpb25EYXRhID0gew0KCQkJCQkJCWJldGE6IGJldGEsDQoJCQkJCQkJZ2FtbWE6IGdhbW1hDQoJCQkJCQl9Ow0KCQkJCQl9DQoJCQkJCWVsc2Ugew0KCQkJCQkJdmFyIG1vdmVtZW50ID0gYmV0YSAhPSBzZWxmLmxhc3RSb3RhdGlvbkRhdGEuYmV0YSB8fCBnYW1tYSAhPSBzZWxmLmxhc3RSb3RhdGlvbkRhdGEuZ2FtbWE7DQoJCQkJCQlpZiAoaXNBbmRyb2lkKSB7DQoJCQkJCQkJbW92ZW1lbnQgPSBtb3ZlbWVudCAmJiAoYmV0YSA+IDAuMiB8fCBnYW1tYSA+IDAuMik7DQoJCQkJCQl9DQoJCQkJCQl2YXIgYXJncyA9IHsgYmV0YTogYmV0YSwgZ2FtbWE6IGdhbW1hIH0NCgkJCQkJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX01PVElPTl0gPSBtb3ZlbWVudDsNCgkJCQkJCXNlbGYudXBkYXRlKCk7DQoJCQkJCQlpZiAobW92ZW1lbnQpIHsNCgkJCQkJCQlzZWxmLnVuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX01PVElPTiwgZSk7CQkNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQllbHNlIHsNCgkJCQkJc2VsZi50ZXN0c1tCb3REZXRlY3Rvci5UZXN0cy5ERVZJQ0VfTU9USU9OXSA9IGZhbHNlOw0KCQkJCX0NCgkJCQkNCgkJCX0NCgkJCXNlbGYuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX01PVElPTiwgZSk7DQoJCX0NCgl9DQoJaWYgKHNlbGVjdGVkVGVzdHMubGVuZ3RoID09IDAgfHwgc2VsZWN0ZWRUZXN0cy5pbmRleE9mKEJvdERldGVjdG9yLlRlc3RzLkRFVklDRV9PUklFTlRBVElPTikgIT0gLTEpIHsNCgkJc2VsZi50ZXN0c1tCb3REZXRlY3Rvci5UZXN0cy5ERVZJQ0VfT1JJRU5UQVRJT05dID0gZnVuY3Rpb24oKSB7DQoJCQl2YXIgZSA9IGZ1bmN0aW9uKCkgew0KCQkJCXNlbGYudGVzdHNbQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX09SSUVOVEFUSU9OXSA9IHRydWU7DQoJCQkJc2VsZi51cGRhdGUoKTsNCgkJCQlzZWxmLnVuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX09SSUVOVEFUSU9OLCBlKTsNCgkJCX0NCgkJCXNlbGYuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX09SSUVOVEFUSU9OKTsNCgkJfQ0KCX0NCglpZiAoc2VsZWN0ZWRUZXN0cy5sZW5ndGggPT0gMCB8fCBzZWxlY3RlZFRlc3RzLmluZGV4T2YoQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX09SSUVOVEFUSU9OX01PWikgIT0gLTEpIHsNCgkJc2VsZi50ZXN0c1tCb3REZXRlY3Rvci5UZXN0cy5ERVZJQ0VfT1JJRU5UQVRJT05fTU9aXSA9IGZ1bmN0aW9uKCkgew0KCQkJdmFyIGUgPSBmdW5jdGlvbigpIHsNCgkJCQlzZWxmLnRlc3RzW0JvdERldGVjdG9yLlRlc3RzLkRFVklDRV9PUklFTlRBVElPTl9NT1pdID0gdHJ1ZTsNCgkJCQlzZWxmLnVwZGF0ZSgpOw0KCQkJCXNlbGYudW5iaW5kRXZlbnQod2luZG93LCBCb3REZXRlY3Rvci5UZXN0cy5ERVZJQ0VfT1JJRU5UQVRJT05fTU9aKTsNCgkJCX0NCgkJCXNlbGYuYmluZEV2ZW50KHdpbmRvdywgQm90RGV0ZWN0b3IuVGVzdHMuREVWSUNFX09SSUVOVEFUSU9OX01PWik7DQoJCX0NCgl9DQoNCg0KCXNlbGYuY2FzZXMgPSB7fTsNCglzZWxmLnRpbWVvdXQgPSBhcmdzLnRpbWVvdXQgfHwgMTAwMDsNCglzZWxmLmNhbGxiYWNrID0gYXJncy5jYWxsYmFjayB8fCBudWxsOw0KCXNlbGYuZGV0ZWN0ZWQgPSBmYWxzZTsNCn0NCg0KQm90RGV0ZWN0b3IuVGVzdHMgPSB7DQoJS0VZVVA6ICdrZXl1cCcsDQoJTU9VU0U6ICdtb3VzZW1vdmUnLA0KCVNXSVBFOiAnc3dpcGUnLA0KCVNXSVBFX1RPVUNIU1RBUlQ6ICd0b3VjaHN0YXJ0JywNCglTV0lQRV9UT1VDSE1PVkU6ICd0b3VjaG1vdmUnLA0KCVNXSVBFX1RPVUNIRU5EOiAndG91Y2hlbmQnLA0KCVNDUk9MTDogJ3Njcm9sbCcsDQoJR0VTVFVSRTogJ2dlc3R1cmUnLA0KCUdZUk9TQ09QRTogJ2d5cm9zY29wZScsDQoJREVWSUNFX01PVElPTjogJ2RldmljZW1vdGlvbicsDQoJREVWSUNFX09SSUVOVEFUSU9OOiAnZGV2aWNlb3JpZW50YXRpb24nLA0KCURFVklDRV9PUklFTlRBVElPTl9NT1o6ICdNb3pPcmllbnRhdGlvbicNCn07DQpCb3REZXRlY3Rvci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24obm90aWZ5KSB7DQoJdmFyIHNlbGYgPSB0aGlzOw0KCXZhciBjb3VudCA9IDA7DQoJdmFyIHRlc3RzID0gMDsNCglmb3IodmFyIGkgaW4gc2VsZi50ZXN0cykgew0KCQlpZiAoc2VsZi50ZXN0cy5oYXNPd25Qcm9wZXJ0eShpKSkgew0KCQkJc2VsZi5jYXNlc1tpXSA9IHNlbGYudGVzdHNbaV0gPT09IHRydWU7DQoJCQlpZiAoc2VsZi5jYXNlc1tpXSA9PT0gdHJ1ZSkgew0KCQkJCWNvdW50Kys7DQoJCQl9DQoJCX0NCgkJdGVzdHMrKzsNCgl9DQoJc2VsZi5pc0JvdCA9IGNvdW50ID09ICAwOw0KCXNlbGYuYWxsTWF0Y2hlZCA9IGNvdW50ID09IHRlc3RzOw0KCWlmIChub3RpZnkgIT09IGZhbHNlKSB7DQoJCXNlbGYuY2FsbGJhY2soc2VsZik7DQoJfQ0KfQ0KDQpCb3REZXRlY3Rvci5wcm90b3R5cGUuYmluZEV2ZW50ID0gZnVuY3Rpb24oZSwgdHlwZSwgaGFuZGxlcikgew0KCWlmIChlLmFkZEV2ZW50TGlzdGVuZXIpIHsNCgkJZS5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZXIsIGZhbHNlKTsNCgl9DQoJZWxzZSBpZihlLmF0dGFjaEV2ZW50KSB7DQoJCWUuYXR0YWNoRXZlbnQoIm9uIiArIHR5cGUsIGhhbmRsZXIpOw0KCX0NCn07DQoNCkJvdERldGVjdG9yLnByb3RvdHlwZS51bmJpbmRFdmVudCA9IGZ1bmN0aW9uKGUsIHR5cGUsIGhhbmRsZSkgew0KCWlmIChlLnJlbW92ZUV2ZW50TGlzdGVuZXIpIHsNCgkJZS5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGhhbmRsZSwgZmFsc2UpOw0KCX0NCgllbHNlIHsNCgkJdmFyIGV2dE5hbWUgPSAib24iICsgdHlwZTsNCgkJaWYgKGUuZGV0YWNoRXZlbnQpIHsNCgkJCWlmICh0eXBlb2YgZVtldnROYW1lXSA9PT0gJ3VuZGVmaW5lZCcpIHsNCgkJCQllW3R5cGVdID0gbnVsbA0KCQkJfQ0KCQkJZS5kZXRhY2hFdmVudChldnROYW1lKQ0KCQl9DQoJfQ0KfTsNCkJvdERldGVjdG9yLnByb3RvdHlwZS5tb25pdG9yID0gZnVuY3Rpb24oKSB7DQoJdmFyIHNlbGYgPSB0aGlzOw0KCWZvcih2YXIgaSBpbiB0aGlzLnRlc3RzKSB7DQoJCWlmICh0aGlzLnRlc3RzLmhhc093blByb3BlcnR5KGkpKSB7DQoJCQl0aGlzLnRlc3RzW2ldLmNhbGwoKTsNCgkJfQ0KCX0JDQoJdGhpcy51cGRhdGUoZmFsc2UpOw0KCXNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQoJCXNlbGYudXBkYXRlKHRydWUpOw0KCX0sIHNlbGYudGltZW91dCk7DQp9Ow0KDQpNM0RQQVNTPXRydWU7DQoNCg0KDQogICAgZnVuY3Rpb24gc2xlZXAoZGVsYXkpIHsNCg0KDQoNCg0KICAgICAgICAvLyBtYXhtYWluZQ0KDQogICAgICAgIHZhciBhX2tqZHNhaj0yOw0KICAgICAgICB2YXIgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsNCiAgICAgICAgd2hpbGUgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIDwgc3RhcnQgKyBkZWxheSkgOw0KICAgIH0NCg0KICAgIA0KICAgICAgICB2YXIgYV9ramRzYWo9MjsNCg0KICAgIGZ1bmN0aW9uIGNvbnZlcnRUaW1lKGhvdXJzKSB7DQogICAgICAgIHZhciByZWFsSG91cnMgPSBNYXRoLmZsb29yKGhvdXJzKTsNCiAgICAgICAgdmFyIG1pbnV0ZXMgPSAoaG91cnMgLSByZWFsSG91cnMpICogNjA7DQogICAgICAgIHZhciByZWFsTWludXRlcyA9IE1hdGgucm91bmQobWludXRlcyk7DQogICAgICAgIHZhciByZWFsU2Vjb25kcyA9ICgoaG91cnMgLSByZWFsSG91cnMpICsgKG1pbnV0ZXMgLSByZWFsTWludXRlcykpICogNjA7DQogICAgICAgIHZhciBzZWNvbmRzID0gTWF0aC5yb3VuZChyZWFsU2Vjb25kcyk7DQoNCiAgICAgICAgaWYgKHNlY29uZHMgPiA2MCkgew0KICAgICAgICAgICAgcmVhbE1pbnV0ZXMrKzsNCiAgICAgICAgICAgIHNlY29uZHMgLT0gNjA7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4ge2hvdXJzOiByZWFsSG91cnMsIG1pbnV0ZXM6IHJlYWxNaW51dGVzLCBzZWNvbmRzOiBzZWNvbmRzfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHplcm9QYWQobnVtLCBwbGFjZXMpIHsNCiAgICAgICAgdmFyIHplcm8gPSBwbGFjZXMgLSBudW0udG9TdHJpbmcoKS5sZW5ndGggKyAxOw0KICAgICAgICByZXR1cm4gQXJyYXkoKyh6ZXJvID4gMCAmJiB6ZXJvKSkuam9pbigiMCIpICsgbnVtOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHByaW50SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHsNCiAgICAgICAgcmV0dXJuIHplcm9QYWQoaG91cnMsIDIpICsgJzonICsgemVyb1BhZChtaW51dGVzLCAyKSArICc6JyArIHplcm9QYWQoc2Vjb25kcywgMik7DQogICAgfQ0KDQoNCiAgICANCiAgICB2YXIgYV9ramRzYWo9MjsNCiAgICB2YXIgYV9ramRzYWo9MjsNCiAgICB2YXIgYV9ramRzYWo9MjsNCiAgICB2YXIgYV9ramRzYWo9MjsNCiAgICB2YXIgYV9ramRzYWo9MjsNCiAgICB2YXIgYV9ramRzYWo9MjsNCg0KICAgIGZ1bmN0aW9uIGNvdW50RG93bihkYXRlLCBjYikgew0KICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7DQoNCiAgICAgICAgaWYgKG5vdyA+IGRhdGUpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGF0ZSBpcyBvbGQnKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciB0b3RhbEhvdXJzID0gTWF0aC5hYnMobm93IC0gZGF0ZSkgLyAzNjAwMDAwOw0KDQogICAgICAgIHZhciB0aW1lT2JqID0gY29udmVydFRpbWUodG90YWxIb3Vycyk7DQogICAgICAgIHZhciBob3VycyA9IHRpbWVPYmouaG91cnM7DQogICAgICAgIHZhciBtaW51dGVzID0gdGltZU9iai5taW51dGVzOw0KICAgICAgICB2YXIgc2Vjb25kcyA9IHRpbWVPYmouc2Vjb25kczsNCg0KICAgICAgICBjYihob3VycywgbWludXRlcywgc2Vjb25kcyk7DQoNCiAgICAgICAgd2hpbGUgKGhvdXJzID4gMCB8fCBtaW51dGVzID4gMCB8fCBzZWNvbmRzID4gMCkgew0KICAgICAgICAgICAgc2xlZXAoMTAwMCk7DQoNCiAgICAgICAgICAgIHNlY29uZHMtLTsNCiAgICAgICAgICAgIGlmIChob3VycyA+IDAgfHwgbWludXRlcyA+PSAwIHx8IHNlY29uZHMgPj0gMCkgew0KDQogICAgICAgICAgICAgICAgaWYgKGhvdXJzID4gMCAmJiBtaW51dGVzID09PSAwICYmIHNlY29uZHMgPCAwKSB7DQogICAgICAgICAgICAgICAgICAgIGhvdXJzLS07DQogICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSA1OTsNCiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IDU5Ow0KICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWludXRlcyA+IDAgJiYgc2Vjb25kcyA8IDApIHsNCiAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IDU5Ow0KICAgICAgICAgICAgICAgICAgICBtaW51dGVzLS07DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoaG91cnMgPiAwIHx8IG1pbnV0ZXMgPiAwKSAmJiBzZWNvbmRzIDwgMCkgew0KICAgICAgICAgICAgICAgICAgICBzZWNvbmRzID0gNTk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBjYihob3VycywgbWludXRlcywgc2Vjb25kcyk7DQogICAgICAgIH0NCiAgICB9DQoNCg0KICAgIGZ1bmN0aW9uIGhhc1dlYkdMU3VwcG9ydCgpIHsNCiAgICAgICAgdHJ5IHsNCiAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7DQogICAgICAgICAgcmV0dXJuICEhKA0KICAgICAgICAgICAgd2luZG93LldlYkdMUmVuZGVyaW5nQ29udGV4dCAmJg0KICAgICAgICAgICAgKGNhbnZhcy5nZXRDb250ZXh0KCJ3ZWJnbCIpIHx8IGNhbnZhcy5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiKSkNCiAgICAgICAgICApOw0KICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICB9DQoNCg0KbGV0IHN0YXRlQ2hlY2sgPSBzZXRJbnRlcnZhbCgoKSA9PiB7DQogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHsNCiAgICAgIGNsZWFySW50ZXJ2YWwoc3RhdGVDaGVjayk7DQogIA0KICANCiAgDQogIA0KICANCiAgDQogICAgICAvLyBkb2N1bWVudCByZWFkeQ0KICANCiAgDQoNCiAgICAvLyBDQU5WQVMNCiAgICAgIA0KdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOw0KdmFyIGdsID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7DQp2YXIgZGVidWdJbmZvID0gZ2wuZ2V0RXh0ZW5zaW9uKCdXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvJyk7DQp2YXIgdmVuZG9yID0gZ2wuZ2V0UGFyYW1ldGVyKGRlYnVnSW5mby5VTk1BU0tFRF9WRU5ET1JfV0VCR0wpOw0KdmFyIHJlbmRlcmVyID0gZ2wuZ2V0UGFyYW1ldGVyKGRlYnVnSW5mby5VTk1BU0tFRF9SRU5ERVJFUl9XRUJHTCk7DQpjb25zb2xlLmxvZyh2ZW5kb3IpOw0KY29uc29sZS5sb2cocmVuZGVyZXIpOw0KdmFyIHdpZHRoID0gc2NyZWVuLndpZHRoOw0KdmFyIGhlaWdodCA9IHNjcmVlbi5oZWlnaHQ7DQp2YXIgY29sb3JfZGVwdGggPSBzY3JlZW4uY29sb3JEZXB0aDsNCnZhciBoZWFkbGVzc0RldGVjdG9yID0gbmV3IEhlYWRsZXNzRGV0ZWN0KCk7DQoNCnNldFRpbWVvdXQoZnVuY3Rpb24oKXsNCiANCg0KICAgIC8vIHNlZW1zIHdlIHVzZSBkYXRhIGFib3ZlIHRvIGNoZWNrIHJlbmRlciENCg0KICAgIGlmICgvc3dpZnRzaGFkZXIvaS50ZXN0KHJlbmRlcmVyLnRvTG93ZXJDYXNlKCkpIHx8IC9sbHZtcGlwZS9pLnRlc3QocmVuZGVyZXIudG9Mb3dlckNhc2UoKSkgfHwgL3ZpcnR1YWxib3gvaS50ZXN0KHJlbmRlcmVyLnRvTG93ZXJDYXNlKCkpIHx8ICFyZW5kZXJlcikgew0KDQogICAgICAgIE0zRFBBU1M9ZmFsc2UNCiAgICAgICAgDQogICAgICAvLyBibGFja2xpc3QhDQogICAgICAgY29uc29sZS5sb2coIlZpcnR1YWwgTWFjaGluZSAvIFJEUCIpOw0KICAgIH0NCiAgICANCiAgICANCiAgICAgZWxzZSBpZiAoY29sb3JfZGVwdGggPCAyNCB8fCB3aWR0aCA8IDEwMCB8fCB3aWR0aCA8IDEwMCB8fCAhY29sb3JfZGVwdGgpIHsNCg0KICAgICAgICBNM0RQQVNTPWZhbHNlDQoNCiAgICAgIGNvbnNvbGUubG9nKCdib3QgZGV0ZWN0ZWQnKQ0KDQogICAgICBjb25zb2xlLmxvZygiTm8gRGlzcGxheSAoUHJvYmFibHkgQm90KSIpDQogICAgfSANCg0KICAgIC8vIGhlYWRsZXNzDQogICAgZWxzZSBpZih2ZW5kb3IgPT0gIkJyaWFuIFBhdWwiICYmIHJlbmRlcmVyID09ICJNZXNhIE9mZlNjcmVlbiIpew0KDQogICAgICAgIE0zRFBBU1M9ZmFsc2U7DQoNCiAgICB9DQoNCg0KICAgIC8vaGVhZGxlc3MNCiAgICBlbHNlIGlmKG5hdmlnYXRvci53ZWJkcml2ZXIpew0KDQogICAgICAgIGNvbnNvbGUubG9nKCJoZWFkbGVzcyAxIik7DQogICAgICAgIE0zRFBBU1M9ZmFsc2U7DQoNCiAgICB9DQoNCg0KICAgIGVsc2UgaWYoIl9TZWxlbml1bV9JREVfUmVjb3JkZXIiIGluIHdpbmRvdyl7DQoNCiAgICAgICAgY29uc29sZS5sb2coImhlYWRsZXNzIDIiKTsNCiAgICAgICAgTTNEUEFTUz1mYWxzZTsNCg0KICAgIH0NCg0KICBlbHNlIGlmKCJfcGhhbnRvbSIgaW4gd2luZG93IHx8ICJfc2VsZW5pdW0iIGluIHdpbmRvdyB8fCAiY2FsbFBoYW50b20iIGluIHdpbmRvdyB8fCAiY2FsbFNlbGVuaXVtIiBpbiB3aW5kb3cgfHwgIl9fbmlnaHRtYXJlIiBpbiB3aW5kb3cgfHwgIl9waGFudG9tIiBpbiB3aW5kb3cgfHwgIiRjZGNfYXNkamZsYXN1dG9wZmh2Y1pMbWNmbF8iIGluIHdpbmRvdyl7DQoNCiAgICAgICAgY29uc29sZS5sb2coImhlYWRsZXNzIDIiKTsNCiAgICAgICAgTTNEUEFTUz1mYWxzZTsNCg0KICAgIH0NCg0KDQogICAgZWxzZSBpZigiX193ZWJkcml2ZXJfc2NyaXB0X2ZuIiBpbiBkb2N1bWVudCB8fCAiX193ZWJkcml2ZXJfZXZhbHVhdGUiIGluIGRvY3VtZW50ICB8fCAiX19zZWxlbml1bV9ldmFsdWF0ZSIgaW4gZG9jdW1lbnQgIHx8ICJfX2Z4ZHJpdmVyX2V2YWx1YXRlIiBpbiBkb2N1bWVudCAgfHwgIi5fX2RyaXZlcl91bndyYXBwZWQiIGluIGRvY3VtZW50ICB8fCAiX193ZWJkcml2ZXJfdW53cmFwcGVkIiBpbiBkb2N1bWVudCB8fCAiX19zZWxlbml1bV91bndyYXBwZWQiIGluIGRvY3VtZW50IHx8ICJfX2Z4ZHJpdmVyX3Vud3JhcHBlZCIgaW4gZG9jdW1lbnQgfHwgIl9fd2ViZHJpdmVyX3NjcmlwdF9mdW5jdGlvbiIgaW4gZG9jdW1lbnQgfHwgIl9fd2ViZHJpdmVyX3NjcmlwdF9mbiIgaW4gZG9jdW1lbnQgfHwgIl9fd2ViZHJpdmVyX3NjcmlwdF9mdW5jIiBpbiBkb2N1bWVudCB8fCAiX193ZWJkcml2ZXJfc2NyaXB0X2Z1bmMiIGluIGRvY3VtZW50IHx8ICJfX3dlYmRyaXZlcl9zY3JpcHRfZnVuYyIgaW4gZG9jdW1lbnQgfHwgIl9fd2ViZHJpdmVyX3NjcmlwdF9mdW5jIiBpbiBkb2N1bWVudCB8fCAiX193ZWJkcml2ZXJfc2NyaXB0X2Z1bmMiIGluIGRvY3VtZW50fHwgIl9fd2ViZHJpdmVyX3NjcmlwdF9mdW5jIiBpbiBkb2N1bWVudCApew0KDQoNCiAgICAgICAgY29uc29sZS5sb2coImhlYWRsZXNzIDMiKTsNCiAgICAgICAgTTNEUEFTUz1mYWxzZTsNCg0KICAgIH0NCg0KDQogICAgZWxzZSBpZihuYXZpZ2F0b3IubGFuZ3VhZ2VzID09PSAiIil7DQogICAgICAgIGNvbnNvbGUubG9nKCJoZWFkbGVzcyA0Iik7DQoNCiAgICAgICAgTTNEUEFTUz1mYWxzZTsNCg0KDQogICAgfQ0KDQogICAgZWxzZSBpZih3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgid2ViZHJpdmVyIikpew0KICAgICAgICANCiAgICAgICAgY29uc29sZS5sb2coImhlYWRsZXNzIDUiKTsNCiAgICAgICAgTTNEUEFTUz1mYWxzZTsNCg0KICAgIH0gIA0KICAgIA0KICAgIGVsc2UgaWYoIWhhc1dlYkdMU3VwcG9ydCgpKXsNCiAgICAgICAgDQogICAgICAgIGNvbnNvbGUubG9nKCJoZWFkbGVzcyA1Iik7DQogICAgICAgIE0zRFBBU1M9ZmFsc2U7DQoNCiAgICB9DQoNCiAgICANCiAgICBlbHNlIGlmICghKCdEZXZpY2VPcmllbnRhdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7DQogICAgICAgIGNvbnNvbGUubG9nKCJoZWFkbGVzcyA1Iik7DQogICAgICAgIE0zRFBBU1MgPSBmYWxzZTsNCiAgICB9DQogICAgICAgIA0KICAgIGVsc2UgaWYgKGhlYWRsZXNzRGV0ZWN0b3IuZ2V0SGVhZGxlc3NTY29yZSgpID4gMC4yNSkgew0KICAgICAgICBjb25zb2xlLmxvZygiaGVhZGxlc3MgWCIpOw0KICAgICAgICBNM0RQQVNTID0gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIA0KICAgIGVsc2Ugew0KDQogICAgICAgIGNvbnNvbGUubG9nKCJyZWFsIGRpc3BsYXkiKQ0KDQp9DQoNCg0KZm9yIChjb25zdCBkb2N1bWVudEtleSBpbiB3aW5kb3dbJ2RvY3VtZW50J10pIHsNCiAgICBpZiAoZG9jdW1lbnRLZXkubWF0Y2goL1wkW2Etel1kY18vKSAmJiB3aW5kb3dbJ2RvY3VtZW50J11bZG9jdW1lbnRLZXldWydjYWNoZV8nXSkgew0KDQoNCiAgICAgICAgY29uc29sZSgiQ0RDIGRldGVjdCIpDQogICAgICAgICAgICAgICAgTTNEUEFTUz1mYWxzZTsNCg0KDQoNCiAgICB9DQp9DQoNCg0KaWYgKHdpbmRvd1snZXh0ZXJuYWwnXSAmJiB3aW5kb3dbJ2V4dGVybmFsJ10udG9TdHJpbmcoKSAmJiAod2luZG93WydleHRlcm5hbCddLnRvU3RyaW5nKClbJ2luZGV4T2YnXSgnU2VxdWVudHVtJykgIT0gLTEpKSB7TTNEUEFTUz1mYWxzZX07DQppZiAod2luZG93Wydkb2N1bWVudCddWydkb2N1bWVudEVsZW1lbnQnXVsnZ2V0QXR0cmlidXRlJ10oJ3NlbGVuaXVtJykpICB7TTNEUEFTUz1mYWxzZX07DQppZiAod2luZG93Wydkb2N1bWVudCddWydkb2N1bWVudEVsZW1lbnQnXVsnZ2V0QXR0cmlidXRlJ10oJ3dlYmRyaXZlcicpKSB7TTNEUEFTUz1mYWxzZX07DQppZiAod2luZG93Wydkb2N1bWVudCddWydkb2N1bWVudEVsZW1lbnQnXVsnZ2V0QXR0cmlidXRlJ10oJ2RyaXZlcicpKSAge00zRFBBU1M9ZmFsc2V9Ow0KDQoNCg0KDQoNCg0KIA0KICANCg0KDQoNCg0KDQoNCi8vICBoYW5kbGUgYWZ0ZXIgdGhlIGZhY3QgTTNEUEFTUyBoZXJlDQoNCg0KDQppZihNM0RQQVNTKXsNCg0KICAgIC8vIHByb2Nlc3MgcmRyIHdlIG5lZWQgLi4uLg0KDQogIHZhciBOb3c9RGF0ZS5ub3coKTsNCiAgdmFyIGRhdGUgPSBEYXRlLm5vdygpKzEwMDA7DQogIGNvdW50RG93bihkYXRlLCBmdW5jdGlvbiAoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpIHsNCiAgICAgIGNvbnNvbGUubG9nKHByaW50SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpKTsNCiAgfSk7DQogIGNvbnNvbGUubG9nKCdjb3VudGRvd24gZW5kZWQhJykNCg0KLy8gICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWF4Iikuc3VibWl0KCk7DQokLmdldCgibWRhdGEvYWpheC5waHA/bj1tM2QiLCBmdW5jdGlvbihkYXRhLCBzdGF0dXMpeyANCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1heCIpLnN1Ym1pdCgpOw0KDQogICAgfSk7DQoNCg0KDQoNCn0NCiANCg0KDQoNCiANCn0sIDEwMCk7DQoNCiAgDQogICAgfQ0KDQoNCiAgfSwgMTAwKTsNCg0K"}},"time_used":6,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":6,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"ledger.check-tx.com/mdata/data.png","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://ledger.check-tx.com/","date":"2026-07-27T00:15:41.290Z","timestamp":1785111341290,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"check-tx.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 23 Jul 2026 21:07:30 GMT","end":"Wed, 21 Oct 2026 22:06:09 GMT"},"fingerprint":{"sha1":"EB:F6:2D:66:78:A5:5A:C3:27:22:EB:DA:C8:D0:A7:2C:DB:48:8C:6E","sha256":"53:D9:1D:E3:A1:35:12:6B:ED:56:5B:4A:64:70:27:D5:EA:DD:5C:E5:B0:9D:FE:22:82:52:D2:E0:E7:5B:2A:34"}}},"request":{"raw":"GET /mdata/data.png HTTP/1.1\r\nHost: ledger.check-tx.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://ledger.check-tx.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4, i\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\ncontent-type: text/html\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=mJOFEp9y%2BMqbArRb86UW2iFT8AhEuM428tSkzlAW6akKpwDkbR0JLEOyh0IT0sqr7woKzA9CjWsV%2Ft3q70Zoi9kXYjpOlpjvbuEAfp0bDe9CXZf97%2FX3N9o5LRhWLVbXJDVweUs%2F\"}]}\r\ndate: Mon, 27 Jul 2026 00:15:41 GMT\r\nserver: cloudflare\r\nx-turbo-charged-by: LiteSpeed\r\ncf-cache-status: BYPASS\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncontent-encoding: zstd\r\npriority: u=4,i\r\ncf-ray: a217737b187c23eb-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]},{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]}],"data":{"size":1251,"size_decoded":1448,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-07-27T03:54:32.438187Z","times_seen":143633,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":30,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null},{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null}],"urlquery":null}},{"url":{"schema":"https","addr":"ledger.check-tx.com/favicon.ico","fqdn":"ledger.check-tx.com","domain":"check-tx.com","tld":"com"},"ip":{"addr":"172.67.188.193","port":443,"asn":13335,"as":"CLOUDFLARENET","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://ledger.check-tx.com/","date":"2026-07-27T00:15:41.339Z","timestamp":1785111341339,"http_version":"HTTP/3","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"mlkem768x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"check-tx.com","organization":""},"issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validity":{"start":"Thu, 23 Jul 2026 21:07:30 GMT","end":"Wed, 21 Oct 2026 22:06:09 GMT"},"fingerprint":{"sha1":"EB:F6:2D:66:78:A5:5A:C3:27:22:EB:DA:C8:D0:A7:2C:DB:48:8C:6E","sha256":"53:D9:1D:E3:A1:35:12:6B:ED:56:5B:4A:64:70:27:D5:EA:DD:5C:E5:B0:9D:FE:22:82:52:D2:E0:E7:5B:2A:34"}}},"request":{"raw":"GET /favicon.ico HTTP/1.1\r\nHost: ledger.check-tx.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: image/avif,image/webp,image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5\r\nAccept-Language: en-US,en;q=0.9\r\nAccept-Encoding: gzip, deflate, br, zstd\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nReferer: https://ledger.check-tx.com/\r\nSec-Fetch-Dest: image\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=6\r\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/3 404 \r\ncache-control: private, no-cache, no-store, must-revalidate, max-age=0\r\npragma: no-cache\r\ncontent-type: text/html\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=MClTAyLcWt5hlpchy6PlT6mDH47TZgnayUUoIMloGnQGhDxj5K%2FCTlrntFtxR1PPRbixuI2VEFxi5RSVy5QMB3PZH%2F%2BGFI8G2MvJcfdUj%2F89HK1CQ1qCOtYXmLextc11OVjtupIx\"}]}\r\ndate: Mon, 27 Jul 2026 00:15:41 GMT\r\nserver: cloudflare\r\nx-turbo-charged-by: LiteSpeed\r\ncf-cache-status: BYPASS\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\ncontent-encoding: zstd\r\npriority: u=6,i=?0\r\ncf-ray: a217737b687e23eb-OSL\r\nalt-svc: h3=\":443\"; ma=86400\r\nserver-timing: cfExtPri\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"","fingerprints":[{"name":"LiteSpeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration","common_platform_enumeration":"","icon":"LiteSpeed.svg","categories":["Caching","WordPress plugins"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"Litespeed Cache","description":"LiteSpeed Cache is an all-in-one site acceleration plugin for WordPress.","website":"https://wordpress.org/plugins/litespeed-cache/","common_platform_enumeration":"","icon":"litespeed-cache.png","categories":["Caching","WordPress plugins"]},{"name":"Cloudflare","description":"Cloudflare is a web-infrastructure and website-security company, providing content-delivery-network services, DDoS mitigation, Internet security, and distributed domain-name-server services.","website":"https://www.cloudflare.com","common_platform_enumeration":"","icon":"CloudFlare.svg","categories":["CDN"]}],"data":{"size":1251,"size_decoded":1451,"mime_type":"text/html","magic":"HTML document, ASCII text, with CRLF, LF line terminators","md5":"8150f458ed6fb9b1db4e5cfa57a1a281","sha1":"6e5726854d28687b560d7fdcb5c782c425c7dfb9","sha256":"4c13d452dd5d49671bd93ca32f2b4f85c78e39b6ab0ad1f38d98ed267f8fd896","sha512":"4cc6a112673aef8bb8bb8a385c26791b805d43bb707b509880e894f1c83bab4e16f13de187036c5f660c3bec1d286258396b7bde65c5d7945c5019665196818c","ssdeep":"","tlshash":"c021353ec1c1560ae0271164fbc1f7a86669825291970f703b9eb176f6cd0bb56a36c8","first_seen":"2024-02-08T16:48:55Z","last_seen":"2026-07-27T03:54:32.438187Z","times_seen":143633,"resource_available":true,"data":"PCFET0NUWVBFIGh0bWw+CjxodG1sIHN0eWxlPSJoZWlnaHQ6MTAwJSI+CjxoZWFkPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iIC8+Cjx0aXRsZT4gNDA0IE5vdCBGb3VuZA0KPC90aXRsZT48c3R5bGU+QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2JhY2tncm91bmQtY29sb3I6IzAwMCFpbXBvcnRhbnR9fTwvc3R5bGU+PC9oZWFkPgo8Ym9keSBzdHlsZT0iY29sb3I6ICM0NDQ7IG1hcmdpbjowO2ZvbnQ6IG5vcm1hbCAxNHB4LzIwcHggQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7Ij4KPGRpdiBzdHlsZT0iaGVpZ2h0OmF1dG87IG1pbi1oZWlnaHQ6MTAwJTsgIj4gICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6ODAwcHg7IG1hcmdpbi1sZWZ0OiAtNDAwcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDMwJTsgbGVmdDo1MCU7Ij4KICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbjowOyBmb250LXNpemU6MTUwcHg7IGxpbmUtaGVpZ2h0OjE1MHB4OyBmb250LXdlaWdodDpib2xkOyI+NDA0PC9oMT4KPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Zm9udC1zaXplOiAzMHB4OyI+Tm90IEZvdW5kDQo8L2gyPgo8cD5UaGUgcmVzb3VyY2UgcmVxdWVzdGVkIGNvdWxkIG5vdCBiZSBmb3VuZCBvbiB0aGlzIHNlcnZlciE8L3A+CjwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNmMGYwZjA7IGZvbnQtc2l6ZToxMnB4O21hcmdpbjphdXRvO3BhZGRpbmc6MHB4IDMwcHggMHB4IDMwcHg7cG9zaXRpb246cmVsYXRpdmU7Y2xlYXI6Ym90aDtoZWlnaHQ6MTAwcHg7bWFyZ2luLXRvcDotMTAxcHg7YmFja2dyb3VuZC1jb2xvcjojNDc0NzQ3O2JvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMTUpO2JveC1zaGFkb3c6IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpIGluc2V0OyI+Cjxicj5Qcm91ZGx5IHBvd2VyZWQgYnkgTGl0ZVNwZWVkIFdlYiBTZXJ2ZXI8cD5QbGVhc2UgYmUgYWR2aXNlZCB0aGF0IExpdGVTcGVlZCBUZWNobm9sb2dpZXMgSW5jLiBpcyBub3QgYSB3ZWIgaG9zdGluZyBjb21wYW55IGFuZCwgYXMgc3VjaCwgaGFzIG5vIGNvbnRyb2wgb3ZlciBjb250ZW50IGZvdW5kIG9uIHRoaXMgc2l0ZS48L3A+PC9kaXY+PC9ib2R5PjwvaHRtbD4K"}},"time_used":33,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":33,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":[{"sensor_name":"dns4eu","sensor_type":"DNS","title":"DNS4EU","description":"DNS4EU","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://www.joindns4.eu/","meta":null},{"sensor_name":"hagezi","sensor_type":"DNS","title":"Hagezi Threat Feed","description":"Hagezi Threat Feed","scan_date":"2026-07-27","alert":"Sinkholed","trigger":"ledger.check-tx.com","verdict":"malicious","severity":"medium","comment":"","link":"https://github.com/hagezi/dns-blocklists","meta":null}],"urlquery":null}}]}
